Skip to content
This repository has been archived by the owner on May 14, 2018. It is now read-only.

Commit

Permalink
Allow local variables named define to be called
Browse files Browse the repository at this point in the history
- Calling a nested local variable named `define` no longer triggers the `A
  module must not have more than one anonymous 'define' calls.` as long
  as there are no arguments.
  • Loading branch information
c0 committed Feb 5, 2015
1 parent 21f73a7 commit 9e53692
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 8 deletions.
1 change: 1 addition & 0 deletions lib/parse.js
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,7 @@
method: "define",
moduleName: moduleName,
deps: deps != null ? deps : [],
argumentsLength: node["arguments"].length,
node: node
});
isInsideDefine = true;
Expand Down
10 changes: 5 additions & 5 deletions lib/trace.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions lib/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,9 @@
depPrefix = prefix.replace("├", "|").replace("└", " ").replace(//g, " ");
return currentModule.deps.forEach(function(depModule, i) {
if (i + 1 < currentModule.deps.length) {
return printTree(depModule, "" + depPrefix + " ├──");
return printTree(depModule, depPrefix + " ├──");
} else {
return printTree(depModule, "" + depPrefix + " └──");
return printTree(depModule, depPrefix + " └──");
}
});
};
Expand Down
1 change: 1 addition & 0 deletions src/parse.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ module.exports = parseRequireDefinitions = (config, file, callback) ->
method : "define"
moduleName : moduleName
deps : deps ? []
argumentsLength: node.arguments.length
node : node
)

Expand Down
2 changes: 1 addition & 1 deletion src/trace.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ module.exports = traceModule = (startModuleName, config, allModules = [], fileLo

(file, definitions, callback) ->

if _.filter(definitions, (def) -> return def.method == "define" and def.moduleName == undefined).length > 1
if _.filter(definitions, (def) -> return def.method == "define" and def.moduleName == undefined and def.argumentsLength > 0).length > 1
callback(new Error("A module must not have more than one anonymous 'define' calls."))
return

Expand Down
6 changes: 6 additions & 0 deletions test/fixtures/errors/multiple_anonymous_defines.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
(function () {
define(function (test) {
define(function () {
});
});
})();
10 changes: 10 additions & 0 deletions test/index_test.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -669,6 +669,16 @@ describe "errors", ->
)


it "should throw an error on multiple anonymous define calls", (done) ->

amdOptimize.src(
"multiple_anonymous_defines"
baseUrl : "test/fixtures/errors"
).on("error", (err) ->
assert.ok(util.isError(err))
done()
)

it "should work with circular dependencies when exports is used"
# , (done) ->
# # http://requirejs.org/docs/api.html#circular
Expand Down

0 comments on commit 9e53692

Please sign in to comment.