angular/tools/transpiler/src/codegeneration/ParseTreeTransformer.js
Victor Berchet 089a2f1b62 feat(transpiler): constructor and typed field semantics
fixes #11 (constructor and typed field semantics)
fixes #42 (Should we infer class property types from ctor args ?)
fixes #17 (number (js) should map to num (dart))

Closes #45
2014-10-02 21:02:47 -07:00

31 lines
1.1 KiB
JavaScript

import {
ParseTreeTransformer as TraceurParseTreeTransformer
} from 'traceur/src/codegeneration/ParseTreeTransformer';
import {
ClassFieldDeclaration,
PropertyConstructorAssignment
} from '../syntax/trees/ParseTrees'
export class ParseTreeTransformer extends TraceurParseTreeTransformer {
transformClassFieldDeclaration(tree) {
var lvalue = this.transformAny(tree.lvalue);
var typeAnnotation = this.transformAny(tree.typeAnnotation);
if (lvalue === tree.lvalue && typeAnnotation === tree.typeAnnotation) {
return tree;
}
return new ClassFieldDeclaration(tree.location, lvalue, typeAnnotation, initializer);
}
transformPropertyConstructorAssignment(tree) {
tree = super.transformPropertyMethodAssignment(tree);
var initializerList = this.transformList(tree.initializerList);
if (initializerList === tree.initializerList) {
return tree;
}
return new PropertyConstructorAssignment(tree.location, tree.isStatic, tree.functionKind,
tree.name, tree.parameterList, tree.typeAnnotation, tree.annotations, tree.body, tree.isConst,
initializerList);
}
}