quit using __temp__ as placeholder name for anon class
This commit is contained in:
parent
ebdcfb5227
commit
0c3093f331
|
@ -214,22 +214,25 @@
|
|||
})
|
||||
],
|
||||
Class: [
|
||||
o("CLASS SimpleAssignable", function() {
|
||||
o('CLASS SimpleAssignable', function() {
|
||||
return new Class($2);
|
||||
}), o("CLASS SimpleAssignable EXTENDS Value", function() {
|
||||
}), o('CLASS SimpleAssignable EXTENDS Value', function() {
|
||||
return new Class($2, $4);
|
||||
}), o("CLASS SimpleAssignable INDENT ClassBody OUTDENT", function() {
|
||||
}), o('CLASS SimpleAssignable\
|
||||
INDENT ClassBody OUTDENT', function() {
|
||||
return new Class($2, null, $4);
|
||||
}), o("CLASS SimpleAssignable EXTENDS Value INDENT ClassBody OUTDENT", function() {
|
||||
}), o('CLASS SimpleAssignable EXTENDS Value\
|
||||
INDENT ClassBody OUTDENT', function() {
|
||||
return new Class($2, $4, $6);
|
||||
}), o("CLASS INDENT ClassBody OUTDENT", function() {
|
||||
return new Class('__temp__', null, $3);
|
||||
}), o("CLASS", function() {
|
||||
return new Class('__temp__', null, new Expressions);
|
||||
}), o("CLASS EXTENDS Value", function() {
|
||||
return new Class('__temp__', $3, new Expressions);
|
||||
}), o("CLASS EXTENDS Value INDENT ClassBody OUTDENT", function() {
|
||||
return new Class('__temp__', $3, $5);
|
||||
}), o('CLASS INDENT ClassBody OUTDENT', function() {
|
||||
return new Class(null, null, $3);
|
||||
}), o('CLASS', function() {
|
||||
return new Class(null, null, new Expressions);
|
||||
}), o('CLASS EXTENDS Value', function() {
|
||||
return new Class(null, $3, new Expressions);
|
||||
}), o('CLASS EXTENDS Value\
|
||||
INDENT ClassBody OUTDENT', function() {
|
||||
return new Class(null, $3, $5);
|
||||
})
|
||||
],
|
||||
ClassAssign: [
|
||||
|
|
11
lib/nodes.js
11
lib/nodes.js
|
@ -750,10 +750,10 @@
|
|||
})();
|
||||
exports.Class = (function() {
|
||||
Class = (function() {
|
||||
function Class(variable, _arg, props) {
|
||||
this.parent = _arg;
|
||||
function Class(_arg, _arg2, props) {
|
||||
this.parent = _arg2;
|
||||
this.variable = _arg;
|
||||
Class.__super__.constructor.call(this);
|
||||
this.variable = variable === '__temp__' ? new Literal(variable) : variable;
|
||||
this.properties = props || [];
|
||||
this.returns = false;
|
||||
return this;
|
||||
|
@ -769,10 +769,7 @@
|
|||
};
|
||||
Class.prototype.compileNode = function(o) {
|
||||
var _i, _len, _ref2, _ref3, access, applied, apply, className, constScope, construct, constructor, extension, func, me, pname, prop, props, pvar, ref, val, variable;
|
||||
variable = this.variable;
|
||||
if (variable.value === '__temp__') {
|
||||
variable = new Literal(o.scope.freeVariable('ctor'));
|
||||
}
|
||||
variable = this.variable || new Literal(o.scope.freeVariable('ctor'));
|
||||
extension = this.parent && new Extends(variable, this.parent);
|
||||
props = new Expressions;
|
||||
me = null;
|
||||
|
|
|
@ -205,13 +205,13 @@ case 95:this.$ = new yy.Class($$[$0-5+2-1], null, $$[$0-5+4-1]);
|
|||
break;
|
||||
case 96:this.$ = new yy.Class($$[$0-7+2-1], $$[$0-7+4-1], $$[$0-7+6-1]);
|
||||
break;
|
||||
case 97:this.$ = new yy.Class('__temp__', null, $$[$0-4+3-1]);
|
||||
case 97:this.$ = new yy.Class(null, null, $$[$0-4+3-1]);
|
||||
break;
|
||||
case 98:this.$ = new yy.Class('__temp__', null, new yy.Expressions);
|
||||
case 98:this.$ = new yy.Class(null, null, new yy.Expressions);
|
||||
break;
|
||||
case 99:this.$ = new yy.Class('__temp__', $$[$0-3+3-1], new yy.Expressions);
|
||||
case 99:this.$ = new yy.Class(null, $$[$0-3+3-1], new yy.Expressions);
|
||||
break;
|
||||
case 100:this.$ = new yy.Class('__temp__', $$[$0-6+3-1], $$[$0-6+5-1]);
|
||||
case 100:this.$ = new yy.Class(null, $$[$0-6+3-1], $$[$0-6+5-1]);
|
||||
break;
|
||||
case 101:this.$ = $$[$0-1+1-1];
|
||||
break;
|
||||
|
|
|
@ -272,14 +272,17 @@ grammar =
|
|||
# Class definitions have optional bodies of prototype property assignments,
|
||||
# and optional references to the superclass.
|
||||
Class: [
|
||||
o "CLASS SimpleAssignable", -> new Class $2
|
||||
o "CLASS SimpleAssignable EXTENDS Value", -> new Class $2, $4
|
||||
o "CLASS SimpleAssignable INDENT ClassBody OUTDENT", -> new Class $2, null, $4
|
||||
o "CLASS SimpleAssignable EXTENDS Value INDENT ClassBody OUTDENT", -> new Class $2, $4, $6
|
||||
o "CLASS INDENT ClassBody OUTDENT", -> new Class '__temp__', null, $3
|
||||
o "CLASS", -> new Class '__temp__', null, new Expressions
|
||||
o "CLASS EXTENDS Value", -> new Class '__temp__', $3, new Expressions
|
||||
o "CLASS EXTENDS Value INDENT ClassBody OUTDENT", -> new Class '__temp__', $3, $5
|
||||
o 'CLASS SimpleAssignable', -> new Class $2
|
||||
o 'CLASS SimpleAssignable EXTENDS Value', -> new Class $2, $4
|
||||
o 'CLASS SimpleAssignable
|
||||
INDENT ClassBody OUTDENT', -> new Class $2, null, $4
|
||||
o 'CLASS SimpleAssignable EXTENDS Value
|
||||
INDENT ClassBody OUTDENT', -> new Class $2, $4, $6
|
||||
o 'CLASS INDENT ClassBody OUTDENT', -> new Class null, null, $3
|
||||
o 'CLASS', -> new Class null, null, new Expressions
|
||||
o 'CLASS EXTENDS Value', -> new Class null, $3 , new Expressions
|
||||
o 'CLASS EXTENDS Value
|
||||
INDENT ClassBody OUTDENT', -> new Class null, $3, $5
|
||||
]
|
||||
|
||||
# Assignments that can happen directly inside a class declaration.
|
||||
|
|
|
@ -645,9 +645,8 @@ exports.Class = class Class extends Base
|
|||
|
||||
# Initialize a **Class** with its name, an optional superclass, and a
|
||||
# list of prototype property assignments.
|
||||
constructor: (variable, @parent, props) ->
|
||||
constructor: (@variable, @parent, props) ->
|
||||
super()
|
||||
@variable = if variable is '__temp__' then new Literal variable else variable
|
||||
@properties = props or []
|
||||
@returns = false
|
||||
|
||||
|
@ -659,9 +658,8 @@ exports.Class = class Class extends Base
|
|||
# equivalent syntax tree and compile that, in pieces. You can see the
|
||||
# constructor, property assignments, and inheritance getting built out below.
|
||||
compileNode: (o) ->
|
||||
{variable} = this
|
||||
variable = new Literal o.scope.freeVariable 'ctor' if variable.value is '__temp__'
|
||||
extension = @parent and new Extends variable, @parent
|
||||
variable = @variable or new Literal o.scope.freeVariable 'ctor'
|
||||
extension = @parent and new Extends variable, @parent
|
||||
props = new Expressions
|
||||
me = null
|
||||
className = variable.compile o
|
||||
|
|
Loading…
Reference in New Issue