fixes #1009: classes with reserved words as determined names

This commit is contained in:
Michael Ficarra
2011-08-07 01:48:27 -04:00
parent bf7d62affb
commit be4685589a
3 changed files with 7 additions and 0 deletions

View File

@@ -1114,6 +1114,9 @@
var decl, klass, lname, name;
decl = this.determineName();
name = decl || this.name || '_Class';
if (name.reserved) {
name = "_" + name;
}
lname = new Literal(name);
this.setContext(name);
this.walkBody(name, o);

View File

@@ -892,6 +892,7 @@ exports.Class = class Class extends Base
compileNode: (o) ->
decl = @determineName()
name = decl or @name or '_Class'
name = "_#{name}" if name.reserved
lname = new Literal name
@setContext name

View File

@@ -500,3 +500,6 @@ test "#1464: bound class methods should keep context", ->
@boundStaticEqual= => new this(nonce2)
eq nonce, C.boundStaticColon().id
eq nonce2, C.boundStaticEqual().id
test "#1009: classes with reserved words as determined names", ->
eq 'function', typeof (-> class @for).call {}