From 9bcd118d8f00bf18fdf22cfc8f00a2969f4a3b13 Mon Sep 17 00:00:00 2001 From: guybedford Date: Tue, 23 Feb 2016 18:01:22 +0200 Subject: [PATCH] ensure we still throw on multiple anonymous defines (#1116) --- lib/amd-helpers.js | 6 ++++-- test/test.js | 10 ++++++++++ test/tests/multiple-anonymous.js | 14 ++++++++++++++ 3 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 test/tests/multiple-anonymous.js diff --git a/lib/amd-helpers.js b/lib/amd-helpers.js index 2ba796a9..9b8483e4 100644 --- a/lib/amd-helpers.js +++ b/lib/amd-helpers.js @@ -193,9 +193,11 @@ hookConstructor(function(constructor) { if (!entry.name) { if (!curMeta) throw new TypeError('Unexpected anonymous AMD define.'); + + if (curMeta.entry && !curMeta.entry.name) + throw new Error('Multiple anonymous defines in module ' + load.name); - if (!curMeta.entry || curMeta.entry.name) - curMeta.entry = entry; + curMeta.entry = entry; } // named define else { diff --git a/test/test.js b/test/test.js index 462080c8..370fd3fd 100644 --- a/test/test.js +++ b/test/test.js @@ -301,6 +301,16 @@ asyncTest('Loading an AMD bundle with an anonymous define', function() { }, err); }); +asyncTest('Loading an AMD bundle with multiple anonymous defines', function() { + System['import']('tests/multiple-anonymous.js').then(function(m) { + ok(false); + start(); + }, function(e) { + ok(e.toString().indexOf('Multiple anonymous') != -1) + start(); + }); +}) + asyncTest('Loading AMD CommonJS form', function() { System['import']('tests/amd-cjs-module.js').then(function(m) { ok(m.test == 'hi', 'Not defined'); diff --git a/test/tests/multiple-anonymous.js b/test/tests/multiple-anonymous.js new file mode 100644 index 00000000..5e4b93f9 --- /dev/null +++ b/test/tests/multiple-anonymous.js @@ -0,0 +1,14 @@ +define('named-in-anon', function() { + return 'named'; +}); + +define(['named-in-anon'], function(named) { + return { + anon: true, + named: named + }; +}); + +define([], function() { + +}); \ No newline at end of file