Merge branch '1840' into 1840_invocation_prototype_prop_access

This commit is contained in:
Gerald Lewis 2011-11-14 11:43:30 -05:00
commit 8762e37e58
4 changed files with 15 additions and 3 deletions

View File

@ -141,7 +141,7 @@
}), o('Value Accessor', function() {
return $1.add($2);
}), o('Invocation Accessor', function() {
return new Value($1, [$2]);
return new Value($1, [].concat($2));
}), o('ThisProperty')
],
Assignable: [

View File

@ -140,7 +140,7 @@ case 62:this.$ = new yy.Value($$[$0]);
break;
case 63:this.$ = $$[$0-1].add($$[$0]);
break;
case 64:this.$ = new yy.Value($$[$0-1], [$$[$0]]);
case 64:this.$ = new yy.Value($$[$0-1], [].concat($$[$0]));
break;
case 65:this.$ = $$[$0];
break;

View File

@ -218,7 +218,7 @@ grammar =
SimpleAssignable: [
o 'Identifier', -> new Value $1
o 'Value Accessor', -> $1.add $2
o 'Invocation Accessor', -> new Value $1, [$2]
o 'Invocation Accessor', -> new Value $1, [].concat $2
o 'ThisProperty'
]

View File

@ -506,3 +506,15 @@ test "#1416: don't omit one 'new' when compiling 'new new fn()()'", ->
eq obj.prop, nonce
eq obj.a, argNonceA
eq obj.b, argNonceB
test "#1840: accessing the `prototype` after function invocation should compile", ->
doesNotThrow -> CoffeeScript.compile 'fn()::prop'
nonce = {}
class Test then id: nonce
dotAccess = -> Test::
protoAccess = -> Test
eq dotAccess().id, nonce
eq protoAccess()::id, nonce