Replaced PrefixExpression with LabeledExpression

where labeled expression is used

Added 'visitLabeledExpression'
This commit is contained in:
Svetlana Isakova
2014-05-15 14:45:41 +04:00
parent 04729f5985
commit f109cfc303
22 changed files with 108 additions and 131 deletions
@@ -291,25 +291,23 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
return QualifiedExpressionTranslator.translateQualifiedExpression(expression, context);
}
@Override
public JsNode visitLabeledExpression(
@NotNull JetLabeledExpression expression, TranslationContext context
) {
JetExpression baseExpression = expression.getBaseExpression();
assert baseExpression != null;
return new JsLabel(context.scope().declareName(getReferencedName(expression.getTargetLabel())),
convertToStatement(baseExpression.accept(this, context))).source(expression);
}
@Override
@NotNull
public JsNode visitPrefixExpression(
@NotNull JetPrefixExpression expression,
@NotNull TranslationContext context
) {
JetSimpleNameExpression operationReference = expression.getOperationReference();
IElementType operationToken = operationReference.getReferencedNameElementType();
JsNode result;
if (operationToken == JetTokens.LABEL_IDENTIFIER) {
JetExpression baseExpression = expression.getBaseExpression();
assert baseExpression != null;
result = new JsLabel(context.scope().declareName(getReferencedName(operationReference)),
convertToStatement(baseExpression.accept(this, context)));
}
else {
result = UnaryOperationTranslator.translate(expression, context);
}
return result.source(expression);
return UnaryOperationTranslator.translate(expression, context).source(expression);
}
@Override