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) {