diff --git a/js/js.dart-ast/src/com/google/dart/compiler/backend/js/ast/JsName.java b/js/js.dart-ast/src/com/google/dart/compiler/backend/js/ast/JsName.java index fb881814f9a..57672d49927 100644 --- a/js/js.dart-ast/src/com/google/dart/compiler/backend/js/ast/JsName.java +++ b/js/js.dart-ast/src/com/google/dart/compiler/backend/js/ast/JsName.java @@ -13,6 +13,7 @@ import org.jetbrains.annotations.NotNull; public class JsName implements Symbol { private final JsScope enclosing; private final String ident; + private JsNode staticRef = null; /** * @param ident the unmangled ident to use for this name @@ -26,6 +27,14 @@ public class JsName implements Symbol { return ident; } + public JsNode getStaticRef() { + return staticRef; + } + + public void setStaticRef(JsNode staticRef) { + this.staticRef = staticRef; + } + @NotNull public JsNameRef makeRef() { return new JsNameRef(this); diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/context/DefinitionPlace.kt b/js/js.translator/src/org/jetbrains/k2js/translate/context/DefinitionPlace.kt index 3e0a16e99ce..969e81060ef 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/context/DefinitionPlace.kt +++ b/js/js.translator/src/org/jetbrains/k2js/translate/context/DefinitionPlace.kt @@ -20,6 +20,7 @@ import com.google.dart.compiler.backend.js.ast.JsExpression import com.google.dart.compiler.backend.js.ast.JsPropertyInitializer import com.google.dart.compiler.backend.js.ast.JsNameRef import com.google.dart.compiler.backend.js.ast.JsObjectScope +import com.google.dart.compiler.backend.js.ast.JsFunction class DefinitionPlace( private val scope: JsObjectScope, @@ -28,6 +29,13 @@ class DefinitionPlace( ) { fun define(suggestedName: String, expression : JsExpression): JsNameRef { val name = scope.declareFreshName(suggestedName) + + if (expression is JsFunction) { + /** JsInliner should be able + * to find function by name */ + name.setStaticRef(expression) + } + properties.add(JsPropertyInitializer(name.makeRef(), expression)) return JsNameRef(name, fqName) }