1
0
Fork 0
mirror of https://github.com/jashkenas/coffeescript.git synced 2022-11-09 12:23:24 -05:00

Fixing issue #924 ... static methods of nested classes.

This commit is contained in:
Jeremy Ashkenas 2010-12-22 19:01:32 -08:00
parent 9f01040d46
commit 482626b9b8
3 changed files with 14 additions and 0 deletions

View file

@ -923,6 +923,7 @@
this.parent = parent;
this.body = body != null ? body : new Expressions;
this.boundFuncs = [];
this.body.classBody = true;
}
Class.prototype.children = ['variable', 'parent', 'body'];
Class.prototype.determineName = function() {
@ -935,6 +936,9 @@
};
Class.prototype.setContext = function(name) {
return this.body.traverseChildren(false, function(node) {
if (node.classBody) {
return false;
}
if (node instanceof Literal && node.value === 'this') {
return node.value = name;
} else if (node instanceof Code) {

View file

@ -743,6 +743,7 @@ exports.Arr = class Arr extends Base
exports.Class = class Class extends Base
constructor: (@variable, @parent, @body = new Expressions) ->
@boundFuncs = []
@body.classBody = yes
children: ['variable', 'parent', 'body']
@ -759,6 +760,7 @@ exports.Class = class Class extends Base
# `this` is the Class being constructed.
setContext: (name) ->
@body.traverseChildren false, (node) ->
return false if node.classBody
if node instanceof Literal and node.value is 'this'
node.value = name
else if node instanceof Code

View file

@ -346,3 +346,11 @@ class A
a = new A
eq a.captured().x, 10
eq a.captured().y, 2
# Issue #924: Static methods in nested classes.
class A
@B: class
@c = -> 5
eq A.B.c(), 5