From f022cd62817d1ae650011e6bf656198f40d20e57 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Tue, 30 Sep 2014 14:10:00 +0400 Subject: [PATCH] JS backend: restored old label naming strategy --- .../k2js/translate/expression/ExpressionVisitor.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java b/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java index 02c2eeeb95f..be76ca3f5d1 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java @@ -291,7 +291,9 @@ public final class ExpressionVisitor extends TranslatorVisitor { ) { JetExpression baseExpression = expression.getBaseExpression(); assert baseExpression != null; - JsName name = context.scope().declareName(getReferencedName(expression.getTargetLabel())); + JsScope scope = context.scope(); + assert scope instanceof JsFunctionScope: "Labeled statement is unexpected outside of function scope"; + JsName name = ((JsFunctionScope) scope).declareNameUnsafe(getReferencedName(expression.getTargetLabel())); JsStatement baseStatement = Translation.translateAsStatement(baseExpression, context); return new JsLabel(name, baseStatement).source(expression); } @@ -359,7 +361,7 @@ public final class ExpressionVisitor extends TranslatorVisitor { private static String getReferencedName(JetSimpleNameExpression expression) { return expression.getReferencedName() .replaceAll("^@", "") - .replaceAll("(?:^`(.*)`$)", "$1"); + .replaceAll("(?:^`(.*)`$)", "$1") + "$"; } private static JsNameRef getTargetLabel(JetExpressionWithLabel expression, TranslationContext context) {