fix(core): properly evaluate expressions with conditional and boolean operators

Fixes #8235
Fixes #8244

Closes #8282
This commit is contained in:
Pawel Kozlowski
2016-04-27 15:30:07 +02:00
parent 1e8864c4a5
commit 1ad2a02b11
5 changed files with 34 additions and 4 deletions

View File

@ -264,11 +264,13 @@ export abstract class AbstractEmitterVisitor implements o.StatementVisitor, o.Ex
abstract visitExternalExpr(ast: o.ExternalExpr, ctx: EmitterVisitorContext): any;
visitConditionalExpr(ast: o.ConditionalExpr, ctx: EmitterVisitorContext): any {
ctx.print(`(`);
ast.condition.visitExpression(this, ctx);
ctx.print('? ');
ast.trueCase.visitExpression(this, ctx);
ctx.print(': ');
ast.falseCase.visitExpression(this, ctx);
ctx.print(`)`);
return null;
}
visitNotExpr(ast: o.NotExpr, ctx: EmitterVisitorContext): any {
@ -421,4 +423,4 @@ function _createIndent(count: number): string {
res += ' ';
}
return res;
}
}