| Index: lib/statement.ts
|
| diff --git a/lib/statement.ts b/lib/statement.ts
|
| deleted file mode 100644
|
| index 7de10da7756a6331e9d383c9857110b30c64f3e9..0000000000000000000000000000000000000000
|
| --- a/lib/statement.ts
|
| +++ /dev/null
|
| @@ -1,173 +0,0 @@
|
| -import * as ts from 'typescript';
|
| -import * as base from './base';
|
| -import {Transpiler} from './main';
|
| -
|
| -type ClassLike = ts.ClassDeclaration | ts.InterfaceDeclaration;
|
| -
|
| -export default class StatementTranspiler extends base.TranspilerBase {
|
| - constructor(tr: Transpiler) { super(tr); }
|
| -
|
| - visitNode(node: ts.Node): boolean {
|
| - switch (node.kind) {
|
| - case ts.SyntaxKind.EmptyStatement:
|
| - this.emit(';');
|
| - break;
|
| - case ts.SyntaxKind.ReturnStatement:
|
| - let retStmt = <ts.ReturnStatement>node;
|
| - this.emit('return');
|
| - if (retStmt.expression) this.visit(retStmt.expression);
|
| - this.emit(';');
|
| - break;
|
| - case ts.SyntaxKind.BreakStatement:
|
| - case ts.SyntaxKind.ContinueStatement:
|
| - let breakContinue = <ts.BreakOrContinueStatement>node;
|
| - this.emit(breakContinue.kind === ts.SyntaxKind.BreakStatement ? 'break' : 'continue');
|
| - if (breakContinue.label) this.visit(breakContinue.label);
|
| - this.emit(';');
|
| - break;
|
| - case ts.SyntaxKind.VariableStatement:
|
| - let variableStmt = <ts.VariableStatement>node;
|
| - this.visit(variableStmt.declarationList);
|
| - this.emit(';');
|
| - break;
|
| - case ts.SyntaxKind.ExpressionStatement:
|
| - let expr = <ts.ExpressionStatement>node;
|
| - this.visit(expr.expression);
|
| - this.emit(';');
|
| - break;
|
| - case ts.SyntaxKind.SwitchStatement:
|
| - let switchStmt = <ts.SwitchStatement>node;
|
| - this.emit('switch (');
|
| - this.visit(switchStmt.expression);
|
| - this.emit(')');
|
| - this.visit(switchStmt.caseBlock);
|
| - break;
|
| - case ts.SyntaxKind.CaseBlock:
|
| - this.emit('{');
|
| - this.visitEach((<ts.CaseBlock>node).clauses);
|
| - this.emit('}');
|
| - break;
|
| - case ts.SyntaxKind.CaseClause:
|
| - let caseClause = <ts.CaseClause>node;
|
| - this.emit('case');
|
| - this.visit(caseClause.expression);
|
| - this.emit(':');
|
| - this.visitEach(caseClause.statements);
|
| - break;
|
| - case ts.SyntaxKind.DefaultClause:
|
| - this.emit('default :');
|
| - this.visitEach((<ts.DefaultClause>node).statements);
|
| - break;
|
| - case ts.SyntaxKind.IfStatement:
|
| - let ifStmt = <ts.IfStatement>node;
|
| - this.emit('if (');
|
| - this.visit(ifStmt.expression);
|
| - this.emit(')');
|
| - this.visit(ifStmt.thenStatement);
|
| - if (ifStmt.elseStatement) {
|
| - this.emit('else');
|
| - this.visit(ifStmt.elseStatement);
|
| - }
|
| - break;
|
| - case ts.SyntaxKind.ForStatement:
|
| - let forStmt = <ts.ForStatement>node;
|
| - this.emit('for (');
|
| - if (forStmt.initializer) this.visit(forStmt.initializer);
|
| - this.emit(';');
|
| - if (forStmt.condition) this.visit(forStmt.condition);
|
| - this.emit(';');
|
| - if (forStmt.incrementor) this.visit(forStmt.incrementor);
|
| - this.emit(')');
|
| - this.visit(forStmt.statement);
|
| - break;
|
| - case ts.SyntaxKind.ForInStatement:
|
| - // TODO(martinprobst): Dart's for-in loops actually have different semantics, they are more
|
| - // like for-of loops, iterating over collections.
|
| - let forInStmt = <ts.ForInStatement>node;
|
| - this.emit('for (');
|
| - if (forInStmt.initializer) this.visit(forInStmt.initializer);
|
| - this.emit('in');
|
| - this.visit(forInStmt.expression);
|
| - this.emit(')');
|
| - this.visit(forInStmt.statement);
|
| - break;
|
| - case ts.SyntaxKind.ForOfStatement:
|
| - let forOfStmt = <ts.ForOfStatement>node;
|
| - this.emit('for (');
|
| - if (forOfStmt.initializer) this.visit(forOfStmt.initializer);
|
| - this.emit('in');
|
| - this.visit(forOfStmt.expression);
|
| - this.emit(')');
|
| - this.visit(forOfStmt.statement);
|
| - break;
|
| - case ts.SyntaxKind.WhileStatement:
|
| - let whileStmt = <ts.WhileStatement>node;
|
| - this.emit('while (');
|
| - this.visit(whileStmt.expression);
|
| - this.emit(')');
|
| - this.visit(whileStmt.statement);
|
| - break;
|
| - case ts.SyntaxKind.DoStatement:
|
| - let doStmt = <ts.DoStatement>node;
|
| - this.emit('do');
|
| - this.visit(doStmt.statement);
|
| - this.emit('while (');
|
| - this.visit(doStmt.expression);
|
| - this.emit(') ;');
|
| - break;
|
| -
|
| - case ts.SyntaxKind.ThrowStatement:
|
| - let throwStmt = <ts.ThrowStatement>node;
|
| - let surroundingCatchClause = this.getAncestor(throwStmt, ts.SyntaxKind.CatchClause);
|
| - if (surroundingCatchClause) {
|
| - let ref = (<ts.CatchClause>surroundingCatchClause).variableDeclaration;
|
| - if (ref.getText() === throwStmt.expression.getText()) {
|
| - this.emit('rethrow');
|
| - this.emit(';');
|
| - break;
|
| - }
|
| - }
|
| -
|
| - this.emit('throw');
|
| - this.visit(throwStmt.expression);
|
| - this.emit(';');
|
| - break;
|
| - case ts.SyntaxKind.TryStatement:
|
| - let tryStmt = <ts.TryStatement>node;
|
| - this.emit('try');
|
| - this.visit(tryStmt.tryBlock);
|
| - if (tryStmt.catchClause) {
|
| - this.visit(tryStmt.catchClause);
|
| - }
|
| - if (tryStmt.finallyBlock) {
|
| - this.emit('finally');
|
| - this.visit(tryStmt.finallyBlock);
|
| - }
|
| - break;
|
| - case ts.SyntaxKind.CatchClause:
|
| - let ctch = <ts.CatchClause>node;
|
| - if (ctch.variableDeclaration.type) {
|
| - this.emit('on');
|
| - this.visit(ctch.variableDeclaration.type);
|
| - }
|
| - this.emit('catch');
|
| - this.emit('(');
|
| - this.visit(ctch.variableDeclaration.name);
|
| - this.emit(',');
|
| - this.visit(ctch.variableDeclaration.name);
|
| - this.emitNoSpace('_stack');
|
| - this.emit(')');
|
| - this.visit(ctch.block);
|
| - break;
|
| -
|
| - case ts.SyntaxKind.Block:
|
| - this.emit('{');
|
| - this.visitEach((<ts.Block>node).statements);
|
| - this.emit('}');
|
| - break;
|
| - default:
|
| - return false;
|
| - }
|
| - return true;
|
| - }
|
| -}
|
|
|