Merge pull request #870 from fabiosantoscode/feature/harmony-class

Harmony: classes
This commit is contained in:
Richard van Velzen
2015-12-07 18:59:07 +01:00
6 changed files with 300 additions and 34 deletions

View File

@@ -769,9 +769,11 @@ function OutputStream(options) {
var self = this;
if (!nokeyword) {
output.print("function");
if (self.name) {
output.space();
}
}
if (self.name) {
output.space();
self.name.print(output);
}
output.with_parens(function(){
@@ -833,6 +835,10 @@ function OutputStream(options) {
if (needs_parens) { output.print(")") }
});
DEFPRINT(AST_ConciseMethod, function(self, output){
if (self.static) {
output.print("static");
output.space();
}
self._do_print(output, true /* do not print "function" */);
});
@@ -1188,6 +1194,34 @@ function OutputStream(options) {
});
else output.print("{}");
});
DEFPRINT(AST_Class, function(self, output){
output.print("class");
output.space();
if (self.name) {
self.name.print(output);
output.space();
}
if (self.extends) {
output.print("extends");
output.space();
self.extends.print(output);
output.space();
}
if (self.properties.length > 0) output.with_block(function(){
self.properties.forEach(function(prop, i){
if (i) {
output.newline();
}
output.indent();
prop.print(output);
});
output.newline();
});
else output.print("{}");
});
DEFPRINT(AST_NewTarget, function(self, output) {
output.print("new.target");
});
DEFPRINT(AST_ObjectKeyVal, function(self, output){
var key = self.key;
var quote = self.quote;
@@ -1207,12 +1241,20 @@ function OutputStream(options) {
self.value.print(output);
});
DEFPRINT(AST_ObjectSetter, function(self, output){
if (self.static) {
output.print("static");
output.space();
}
output.print("set");
output.space();
self.key.print(output);
self.value._do_print(output, true);
});
DEFPRINT(AST_ObjectGetter, function(self, output){
if (self.static) {
output.print("static");
output.space();
}
output.print("get");
output.space();
self.key.print(output);