slightly improved fix for #1182 and #1313

This commit is contained in:
Michael Ficarra 2011-05-06 09:47:40 -04:00
parent 73731ba155
commit 7a4fd2ec01
3 changed files with 6 additions and 16 deletions

View File

@ -15,7 +15,7 @@
return process.binding('stdio').writeError(line + '\n');
};
BANNER = 'Usage: coffee [options] path/to/script.coffee';
SWITCHES = [['-c', '--compile', 'compile to JavaScript and save as .js files'], ['-i', '--interactive', 'run an interactive CoffeeScript REPL'], ['-o', '--output [DIR]', 'set the directory for compiled JavaScript'], ['-j', '--join [FILE]', 'concatenate the scripts before compiling'], ['-w', '--watch', 'watch scripts for changes, and recompile'], ['-p', '--print', 'print the compiled JavaScript to stdout'], ['-l', '--lint', 'pipe the compiled JavaScript through JSLint'], ['-s', '--stdio', 'listen for and compile scripts over stdio'], ['-e', '--eval', 'compile a string from the command line'], ['-r', '--require [FILE*]', 'require a library before executing your script'], ['-b', '--bare', 'compile without the top-level function wrapper'], ['-t', '--tokens', 'print the tokens that the lexer produces'], ['-n', '--nodes', 'print the parse tree that Jison produces'], ['--nodejs [ARGS]', 'pass options through to the "node" binary'], ['-v', '--version', 'display CoffeeScript version'], ['-h', '--help', 'display this help message']];
SWITCHES = [['-c', '--compile', 'compile to JavaScript and save as .js files'], ['-i', '--interactive', 'run an interactive CoffeeScript REPL'], ['-o', '--output [DIR]', 'set the directory for compiled JavaScript'], ['-j', '--join [FILE]', 'concatenate the scripts before compiling'], ['-w', '--watch', 'watch scripts for changes, and recompile'], ['-p', '--print', 'print the compiled JavaScript to stdout'], ['-l', '--lint', 'pipe the compiled JavaScript through JavaScript Lint'], ['-s', '--stdio', 'listen for and compile scripts over stdio'], ['-e', '--eval', 'compile a string from the command line'], ['-r', '--require [FILE*]', 'require a library before executing your script'], ['-b', '--bare', 'compile without the top-level function wrapper'], ['-t', '--tokens', 'print the tokens that the lexer produces'], ['-n', '--nodes', 'print the parse tree that Jison produces'], ['--nodejs [ARGS]', 'pass options through to the "node" binary'], ['-v', '--version', 'display CoffeeScript version'], ['-h', '--help', 'display this help message']];
opts = {};
sources = [];
contents = [];

View File

@ -1096,24 +1096,19 @@
return this.ctor.noReturn = true;
};
Class.prototype.compileNode = function(o) {
var decl, extension, klass, lname, name;
var decl, klass, lname, name;
decl = this.determineName();
name = decl || this.name || '_Class';
lname = new Literal(name);
this.setContext(name);
this.walkBody(name);
this.ensureConstructor(name);
if (this.parent) {
this.body.expressions.unshift(new Extends(lname, this.parent));
}
if (!(this.ctor instanceof Code)) {
this.body.expressions.unshift(this.ctor);
}
if (this.parent) {
extension = new Extends(lname, this.parent);
if (this.ctor instanceof Code) {
this.body.expressions.unshift(extension);
} else {
this.body.expressions.splice(1, 0, extension);
}
}
this.body.expressions.push(lname);
this.addBoundFunctions(o);
klass = new Parens(Closure.wrap(this.body), true);

View File

@ -875,13 +875,8 @@ exports.Class = class Class extends Base
@setContext name
@walkBody name
@ensureConstructor name
@body.expressions.unshift new Extends lname, @parent if @parent
@body.expressions.unshift @ctor unless @ctor instanceof Code
if @parent
extension = new Extends lname, @parent
if @ctor instanceof Code
@body.expressions.unshift extension
else
@body.expressions.splice 1, 0, extension
@body.expressions.push lname
@addBoundFunctions o