Skip to content

Commit 1254efa

Browse files
committed
Issue jashkenas#878. Namespaced classes should not leak their function name.
1 parent adeace8 commit 1254efa

File tree

4 files changed

+16
-7
lines changed

4 files changed

+16
-7
lines changed

lib/nodes.js

Lines changed: 1 addition & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/rewriter.js

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/nodes.coffee

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -819,7 +819,6 @@ exports.Class = class Class extends Base
819819
@addBoundFunctions o
820820

821821
klass = new Parens new Call(new Code [], @body), true
822-
klass = new Assign new Value(lname), klass if decl and @variable?.isComplex()
823822
klass = new Assign @variable, klass if @variable
824823
klass.compile o
825824

test/test_classes.coffee

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -305,3 +305,16 @@ eq robby.power(), 11
305305
eq robby.speed(), Infinity
306306

307307

308+
# Namespaced classes do not reserve their function name in outside scope.
309+
one = {}
310+
two = {}
311+
312+
class one.Klass
313+
@label = "one"
314+
315+
class two.Klass
316+
@label = "two"
317+
318+
eq typeof Klass, 'undefined'
319+
eq one.Klass.label, 'one'
320+
eq two.Klass.label, 'two'

0 commit comments

Comments
 (0)