diff --git a/lib/nodes.js b/lib/nodes.js index 76538254..12b51fc0 100644 --- a/lib/nodes.js +++ b/lib/nodes.js @@ -217,7 +217,7 @@ var code; o.indent = (this.tab = o.noWrap ? '' : TAB); o.scope = new Scope(null, this, null); - code = o.globals ? this.compileNode(o) : this.compileWithDeclarations(o); + code = this.compileWithDeclarations(o); code = code.replace(TRAILING_WHITESPACE, ''); code = code.replace(DOUBLE_PARENS, '($1)'); return o.noWrap ? code : ("(function(){\n" + code + "\n})();\n"); @@ -228,7 +228,7 @@ if (o.scope.hasAssignments(this)) { code = ("" + (this.tab) + "var " + (o.scope.compiledAssignments()) + ";\n" + code); } - if (o.scope.hasDeclarations(this)) { + if (!o.globals && o.scope.hasDeclarations(this)) { code = ("" + (this.tab) + "var " + (o.scope.compiledDeclarations()) + ";\n" + code); } return code; diff --git a/src/nodes.coffee b/src/nodes.coffee index c1c4f930..894526d0 100644 --- a/src/nodes.coffee +++ b/src/nodes.coffee @@ -199,7 +199,7 @@ exports.Expressions: class Expressions extends BaseNode compileRoot: (o) -> o.indent: @tab: if o.noWrap then '' else TAB o.scope: new Scope(null, this, null) - code: if o.globals then @compileNode(o) else @compileWithDeclarations(o) + code: @compileWithDeclarations(o) code: code.replace(TRAILING_WHITESPACE, '') code: code.replace(DOUBLE_PARENS, '($1)') if o.noWrap then code else "(function(){\n$code\n})();\n" @@ -209,7 +209,7 @@ exports.Expressions: class Expressions extends BaseNode compileWithDeclarations: (o) -> code: @compileNode(o) code: "${@tab}var ${o.scope.compiledAssignments()};\n$code" if o.scope.hasAssignments(this) - code: "${@tab}var ${o.scope.compiledDeclarations()};\n$code" if o.scope.hasDeclarations(this) + code: "${@tab}var ${o.scope.compiledDeclarations()};\n$code" if not o.globals and o.scope.hasDeclarations(this) code # Compiles a single expression within the expressions body. If we need to diff --git a/test/test_compilation.coffee b/test/test_compilation.coffee index c80bc8e2..3ff3b879 100644 --- a/test/test_compilation.coffee +++ b/test/test_compilation.coffee @@ -6,3 +6,9 @@ js: CoffeeScript.compile("one\r\ntwo", {noWrap: on}) ok js is "one;\ntwo;" + +global.resultArray: [] +CoffeeScript.run("resultArray.push i for i of global", {noWrap: on, globals: on, source: 'tests'}) + +ok 'setInterval' in global.resultArray +