diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 1c48ef2788c..09e29f49917 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -13,22 +13,15 @@
-
-
-
-
-
-
+
+
+
+
-
-
-
-
+
+
-
-
-
-
+
@@ -128,86 +121,72 @@
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
+
+
-
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
@@ -215,7 +194,25 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -225,10 +222,10 @@
-
+
-
+
@@ -279,10 +276,10 @@
-
+
-
+
@@ -340,22 +337,22 @@
@@ -598,82 +595,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -710,7 +631,7 @@
-
+
@@ -732,7 +653,11 @@
-
+
+
+
+
+
@@ -754,7 +679,11 @@
-
+
+
+
+
+
@@ -764,21 +693,27 @@
-
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
@@ -825,67 +760,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -980,6 +854,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1166,11 +1096,11 @@
-
-
-
-
-
+
+
+
+
+
localhost
@@ -1258,8 +1188,8 @@
-
-
+
+
@@ -1306,7 +1236,7 @@
-
+
@@ -1319,7 +1249,6 @@
-
@@ -1344,6 +1273,7 @@
+
@@ -1353,102 +1283,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1458,7 +1292,109 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/translator/src/org/jetbrains/k2js/translate/context/StaticContext.java b/translator/src/org/jetbrains/k2js/translate/context/StaticContext.java
index 79f7e98cb77..dd4ef7cb091 100644
--- a/translator/src/org/jetbrains/k2js/translate/context/StaticContext.java
+++ b/translator/src/org/jetbrains/k2js/translate/context/StaticContext.java
@@ -1,6 +1,7 @@
package org.jetbrains.k2js.translate.context;
import com.google.dart.compiler.backend.js.ast.JsName;
+import com.google.dart.compiler.backend.js.ast.JsNameRef;
import com.google.dart.compiler.backend.js.ast.JsProgram;
import com.google.dart.compiler.backend.js.ast.JsRootScope;
import org.jetbrains.annotations.NotNull;
@@ -8,6 +9,8 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.psi.JetElement;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.types.JetStandardLibrary;
+import org.jetbrains.k2js.translate.context.declaration.DeclarationFacade;
+import org.jetbrains.k2js.translate.context.declaration.Declarations;
import org.jetbrains.k2js.translate.intrinsic.Intrinsics;
import org.jetbrains.k2js.translate.utils.BindingUtils;
@@ -20,7 +23,7 @@ public class StaticContext {
Namer namer = Namer.newInstance(jsRootScope);
Aliaser aliaser = Aliaser.newInstance();
NamingScope scope = NamingScope.rootScope(jsRootScope);
- Declarations declarations = Declarations.newInstance(scope);
+ DeclarationFacade declarations = DeclarationFacade.createFacade(scope);
Intrinsics intrinsics = Intrinsics.standardLibraryIntrinsics(library);
StandardClasses standardClasses =
StandardClasses.bindImplementations(namer.getKotlinScope(), jsRootScope);
@@ -35,7 +38,7 @@ public class StaticContext {
private final BindingContext bindingContext;
@NotNull
- private final Declarations declarations;
+ private final DeclarationFacade declarationFacade;
@NotNull
private final Aliaser aliaser;
@@ -53,13 +56,14 @@ public class StaticContext {
private final NamingScope rootScope;
+ //TODO: too many parameters in constructor
private StaticContext(@NotNull JsProgram program, @NotNull BindingContext bindingContext,
- @NotNull Declarations declarations, @NotNull Aliaser aliaser,
+ @NotNull DeclarationFacade declarations, @NotNull Aliaser aliaser,
@NotNull Namer namer, @NotNull Intrinsics intrinsics,
@NotNull StandardClasses standardClasses, @NotNull NamingScope rootScope) {
this.program = program;
this.bindingContext = bindingContext;
- this.declarations = declarations;
+ this.declarationFacade = declarations;
this.aliaser = aliaser;
this.namer = namer;
this.intrinsics = intrinsics;
@@ -78,8 +82,8 @@ public class StaticContext {
}
@NotNull
- public Declarations getDeclarations() {
- return declarations;
+ public DeclarationFacade getDeclarationFacade() {
+ return declarationFacade;
}
@NotNull
@@ -107,9 +111,25 @@ public class StaticContext {
return standardClasses;
}
+ @NotNull
+ public Declarations getLibraryDeclarations() {
+ return declarationFacade.getLibraryDeclarations();
+ }
+
+ @NotNull
+ public Declarations getNativeDeclarations() {
+ return declarationFacade.getKotlinDeclarations();
+ }
+
+ @NotNull
+ public Declarations getKotlinDeclarations() {
+ return declarationFacade.getKotlinDeclarations();
+ }
+
+ //TODO: helper method outdated
@NotNull
public NamingScope getScopeForDescriptor(@NotNull DeclarationDescriptor descriptor) {
- return declarations.getScope(descriptor);
+ return declarationFacade.getKotlinDeclarations().getScope(descriptor);
}
@NotNull
@@ -118,12 +138,42 @@ public class StaticContext {
return getScopeForDescriptor(descriptor);
}
+ //TODO: consider using nullable return value instead
@NotNull
public JsName getGlobalName(@NotNull DeclarationDescriptor descriptor) {
- return declarations.getName(descriptor);
+ for (Declarations declarations : declarationFacade.getAllDeclarations()) {
+ if (declarations.hasDeclaredName(descriptor)) {
+ return declarations.getName(descriptor);
+ }
+ }
+ throw new AssertionError("Use is declared method to check.");
}
public boolean isDeclared(@NotNull DeclarationDescriptor descriptor) {
- return declarations.hasDeclaredName(descriptor);
+ for (Declarations declarations : declarationFacade.getAllDeclarations()) {
+ if (declarations.hasDeclaredName(descriptor)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ @NotNull
+ public JsNameRef getQualifier(@NotNull DeclarationDescriptor descriptor) {
+ for (Declarations declarations : declarationFacade.getAllDeclarations()) {
+ if (declarations.hasQualifier(descriptor)) {
+ return declarations.getQualifier(descriptor);
+ }
+ }
+ throw new AssertionError("Use hasQualifier method to check.");
+ }
+
+ public boolean hasQualifier(@NotNull DeclarationDescriptor descriptor) {
+ for (Declarations declarations : declarationFacade.getAllDeclarations()) {
+ if (declarations.hasQualifier(descriptor)) {
+ return true;
+ }
+ }
+ return false;
}
}
\ No newline at end of file
diff --git a/translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java b/translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java
index a1d18cdc196..03614652a90 100644
--- a/translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java
+++ b/translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java
@@ -10,6 +10,7 @@ import org.jetbrains.jet.lang.psi.JetElement;
import org.jetbrains.jet.lang.psi.JetNamedFunction;
import org.jetbrains.jet.lang.psi.JetPropertyAccessor;
import org.jetbrains.jet.lang.resolve.BindingContext;
+import org.jetbrains.k2js.translate.context.declaration.DeclarationFacade;
import org.jetbrains.k2js.translate.intrinsic.Intrinsics;
import org.jetbrains.k2js.translate.utils.BindingUtils;
@@ -61,7 +62,8 @@ public final class TranslationContext {
@NotNull
public TranslationContext newDeclaration(@NotNull DeclarationDescriptor descriptor) {
- NamingScope declarationScope = staticContext.getDeclarations().getScope(descriptor);
+ //TODO: chained call on static context suspicious
+ NamingScope declarationScope = staticContext.getDeclarationFacade().getKotlinDeclarations().getScope(descriptor);
return contextWithScope(declarationScope);
}
@@ -126,12 +128,12 @@ public final class TranslationContext {
if (standardClasses().isStandardObject(descriptor)) {
return namer().kotlinObject();
}
- return declarations().getQualifier(descriptor);
+ return staticContext.getQualifier(descriptor);
}
public boolean hasQualifierForDescriptor(@NotNull DeclarationDescriptor descriptor) {
- return (declarations().hasQualifier(descriptor) ||
+ return (staticContext.hasQualifier(descriptor) ||
standardClasses().isStandardObject(descriptor));
}
@@ -168,11 +170,6 @@ public final class TranslationContext {
return staticContext.getNamer();
}
- @NotNull
- public Declarations declarations() {
- return staticContext.getDeclarations();
- }
-
@NotNull
public Intrinsics intrinsics() {
return staticContext.getIntrinsics();
@@ -192,4 +189,9 @@ public final class TranslationContext {
public JsScope jsScope() {
return dynamicContext.jsScope();
}
+
+ @NotNull
+ private DeclarationFacade declarationFacade() {
+ return staticContext.getDeclarationFacade();
+ }
}
diff --git a/translator/src/org/jetbrains/k2js/translate/context/DeclarationContext.java b/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationContext.java
similarity index 91%
rename from translator/src/org/jetbrains/k2js/translate/context/DeclarationContext.java
rename to translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationContext.java
index ab4f8b25c4f..3e88072e978 100644
--- a/translator/src/org/jetbrains/k2js/translate/context/DeclarationContext.java
+++ b/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationContext.java
@@ -1,10 +1,11 @@
-package org.jetbrains.k2js.translate.context;
+package org.jetbrains.k2js.translate.context.declaration;
import com.google.dart.compiler.backend.js.ast.JsName;
import com.google.dart.compiler.backend.js.ast.JsNameRef;
import com.google.dart.compiler.util.AstUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
+import org.jetbrains.k2js.translate.context.NamingScope;
public final class DeclarationContext {
diff --git a/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationFacade.java b/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationFacade.java
new file mode 100644
index 00000000000..bfa20379b34
--- /dev/null
+++ b/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationFacade.java
@@ -0,0 +1,101 @@
+package org.jetbrains.k2js.translate.context.declaration;
+
+import com.google.common.collect.Sets;
+import com.google.dart.compiler.backend.js.ast.JsNameRef;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
+import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
+import org.jetbrains.jet.lang.psi.JetFile;
+import org.jetbrains.jet.lang.resolve.BindingContext;
+import org.jetbrains.jet.lang.types.JetStandardLibrary;
+import org.jetbrains.k2js.translate.context.NamingScope;
+import org.jetbrains.k2js.translate.utils.BindingUtils;
+
+import java.util.List;
+import java.util.Set;
+
+/**
+ * @author Pavel Talanov
+ */
+public final class DeclarationFacade {
+
+ @NotNull
+ public static DeclarationFacade createFacade(@NotNull NamingScope scope) {
+ return new DeclarationFacade(scope);
+ }
+
+ @NotNull
+ private final Declarations libraryDeclarations;
+
+ @NotNull
+ private final Declarations kotlinDeclarations;
+
+ @NotNull
+ private final Declarations nativeDeclarations;
+
+ @NotNull
+ private final NamingScope rootScope;
+
+ private DeclarationFacade(@NotNull NamingScope rootScope) {
+ this.rootScope = rootScope;
+ this.libraryDeclarations = Declarations.newInstance();
+ this.kotlinDeclarations = Declarations.newInstance();
+ this.nativeDeclarations = Declarations.newInstance();
+ }
+
+ @NotNull
+ public Declarations getLibraryDeclarations() {
+ return libraryDeclarations;
+ }
+
+ @NotNull
+ public Declarations getKotlinDeclarations() {
+ return kotlinDeclarations;
+ }
+
+ @NotNull
+ public Declarations getNativeDeclarations() {
+ return nativeDeclarations;
+ }
+
+ @NotNull
+ public Set getAllDeclarations() {
+ return Sets.newHashSet(libraryDeclarations, kotlinDeclarations, nativeDeclarations);
+ }
+
+ @NotNull
+ public DeclarationFacade extractStandardLibrary(@NotNull JetStandardLibrary standardLibrary,
+ @NotNull JsNameRef standardLibraryObjectName) {
+ DeclarationVisitor visitor = new DeclarationVisitor(libraryDeclarations, false);
+ for (DeclarationDescriptor descriptor :
+ standardLibrary.getLibraryScope().getAllDescriptors()) {
+ descriptor.accept(visitor, DeclarationContext.rootContext(rootScope, standardLibraryObjectName));
+ }
+ return this;
+ }
+
+ //TODO: decide if is public
+ public void extractDeclarationsFromNamespace(@NotNull NamespaceDescriptor descriptor,
+ @Nullable JsNameRef namespaceQualifier) {
+ DeclarationVisitor visitor = new DeclarationVisitor(kotlinDeclarations, true);
+ visitor.traverseNamespace(descriptor, DeclarationContext.rootContext(rootScope, namespaceQualifier));
+ }
+
+ public void extractDeclarationsFromFiles(@NotNull List files, @NotNull BindingContext context) {
+ for (NamespaceDescriptor namespace : getAllNamespaces(files, context)) {
+ extractDeclarationsFromNamespace(namespace, null);
+ }
+ }
+
+ //TODO: util method
+ @NotNull
+ private Set getAllNamespaces(@NotNull List files, @NotNull BindingContext context) {
+ Set namespaces = Sets.newHashSet();
+ for (JetFile file : files) {
+ namespaces.add(BindingUtils.getNamespaceDescriptor(context, file));
+ }
+ return namespaces;
+ }
+
+}
diff --git a/translator/src/org/jetbrains/k2js/translate/context/DeclarationVisitor.java b/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationVisitor.java
similarity index 97%
rename from translator/src/org/jetbrains/k2js/translate/context/DeclarationVisitor.java
rename to translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationVisitor.java
index c812fd30952..901b5b48680 100644
--- a/translator/src/org/jetbrains/k2js/translate/context/DeclarationVisitor.java
+++ b/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationVisitor.java
@@ -1,9 +1,11 @@
-package org.jetbrains.k2js.translate.context;
+package org.jetbrains.k2js.translate.context.declaration;
import com.google.dart.compiler.backend.js.ast.JsName;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.*;
+import org.jetbrains.k2js.translate.context.Namer;
+import org.jetbrains.k2js.translate.context.NamingScope;
import java.util.Set;
diff --git a/translator/src/org/jetbrains/k2js/translate/context/Declarations.java b/translator/src/org/jetbrains/k2js/translate/context/declaration/Declarations.java
similarity index 53%
rename from translator/src/org/jetbrains/k2js/translate/context/Declarations.java
rename to translator/src/org/jetbrains/k2js/translate/context/declaration/Declarations.java
index a0bf0fc5caf..a22d8531ee4 100644
--- a/translator/src/org/jetbrains/k2js/translate/context/Declarations.java
+++ b/translator/src/org/jetbrains/k2js/translate/context/declaration/Declarations.java
@@ -1,21 +1,15 @@
-package org.jetbrains.k2js.translate.context;
+package org.jetbrains.k2js.translate.context.declaration;
-import com.google.common.collect.Sets;
import com.google.dart.compiler.backend.js.ast.JsName;
import com.google.dart.compiler.backend.js.ast.JsNameRef;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
-import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
-import org.jetbrains.jet.lang.psi.JetFile;
-import org.jetbrains.jet.lang.resolve.BindingContext;
-import org.jetbrains.jet.lang.types.JetStandardLibrary;
-import org.jetbrains.k2js.translate.utils.BindingUtils;
+import org.jetbrains.jet.lang.resolve.DescriptorUtils;
+import org.jetbrains.k2js.translate.context.NamingScope;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
-import java.util.Set;
/**
* @author Pavel Talanov
@@ -23,8 +17,8 @@ import java.util.Set;
public final class Declarations {
@NotNull
- public static Declarations newInstance(@NotNull NamingScope rootScope) {
- return new Declarations(rootScope);
+ /*package*/ static Declarations newInstance() {
+ return new Declarations();
}
@NotNull
@@ -33,40 +27,12 @@ public final class Declarations {
private final Map descriptorToNameMap = new HashMap();
@NotNull
private final Map descriptorToQualifierMap = new HashMap();
- @NotNull
- private final NamingScope rootScope;
- private Declarations(@NotNull NamingScope scope) {
- this.rootScope = scope;
- }
-
- public void extractDeclarationsFromNamespace(@NotNull NamespaceDescriptor descriptor) {
- DeclarationVisitor visitor = new DeclarationVisitor(this, true);
- visitor.traverseNamespace(descriptor, DeclarationContext.rootContext(rootScope, null));
- }
-
- public void extractDeclarationsFromFiles(@NotNull List files, @NotNull BindingContext context) {
- Set namespaces = Sets.newHashSet();
- for (JetFile file : files) {
- namespaces.add(BindingUtils.getNamespaceDescriptor(context, file));
- }
- for (NamespaceDescriptor namespace : namespaces) {
- extractDeclarationsFromNamespace(namespace);
- }
- }
-
- public void extractStandardLibrary(@NotNull JetStandardLibrary standardLibrary,
- @NotNull JsNameRef standardLibraryObjectName) {
- DeclarationVisitor visitor = new DeclarationVisitor(this, false);
- for (DeclarationDescriptor descriptor :
- standardLibrary.getLibraryScope().getAllDescriptors()) {
- descriptor.accept(visitor, DeclarationContext.rootContext(rootScope,
- standardLibraryObjectName));
- }
+ private Declarations() {
}
@NotNull
- /*package*/ NamingScope getScope(@NotNull DeclarationDescriptor descriptor) {
+ public NamingScope getScope(@NotNull DeclarationDescriptor descriptor) {
NamingScope scope = descriptorToScopeMap.get(descriptor.getOriginal());
assert scope != null : "Unknown declaration";
return scope;
@@ -75,7 +41,7 @@ public final class Declarations {
@NotNull
public JsName getName(@NotNull DeclarationDescriptor descriptor) {
JsName name = descriptorToNameMap.get(descriptor.getOriginal());
- assert name != null : "Unknown declaration";
+ assert name != null : "Unknown declaration: " + DescriptorUtils.getFQName(descriptor);
return name;
}
@@ -83,12 +49,12 @@ public final class Declarations {
return descriptorToNameMap.containsKey(descriptor.getOriginal());
}
- /*package*/ boolean hasQualifier(@NotNull DeclarationDescriptor descriptor) {
+ public boolean hasQualifier(@NotNull DeclarationDescriptor descriptor) {
return (descriptorToQualifierMap.get(descriptor.getOriginal()) != null);
}
@NotNull
- /*package*/ JsNameRef getQualifier(@NotNull DeclarationDescriptor descriptor) {
+ public JsNameRef getQualifier(@NotNull DeclarationDescriptor descriptor) {
JsNameRef qualifier = descriptorToQualifierMap.get(descriptor.getOriginal());
assert qualifier != null : "Cannot be null. Use hasQualifier to check.";
return qualifier;
diff --git a/translator/src/org/jetbrains/k2js/translate/general/Translation.java b/translator/src/org/jetbrains/k2js/translate/general/Translation.java
index 1a05256e1c3..9f354f7ada7 100644
--- a/translator/src/org/jetbrains/k2js/translate/general/Translation.java
+++ b/translator/src/org/jetbrains/k2js/translate/general/Translation.java
@@ -97,9 +97,10 @@ public final class Translation {
//TODO: move some of the code somewhere
JetStandardLibrary standardLibrary = JetStandardLibrary.getJetStandardLibrary(project);
StaticContext staticContext = StaticContext.generateStaticContext(standardLibrary, bindingContext);
- staticContext.getDeclarations().
+ staticContext.getDeclarationFacade().
extractStandardLibrary(standardLibrary, staticContext.getNamer().kotlinObject());
- staticContext.getDeclarations().extractDeclarationsFromFiles(files, bindingContext);
+ staticContext.getDeclarationFacade().
+ extractDeclarationsFromFiles(files, bindingContext);
JsBlock block = staticContext.getProgram().getFragmentBlock(0);
TranslationContext context = TranslationContext.rootContext(staticContext);
block.addStatement(Translation.translateNamespace(namespaceToTranslate, context));
diff --git a/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java b/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java
index 1e76faf7219..40094f9eb38 100644
--- a/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java
+++ b/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java
@@ -98,7 +98,7 @@ public final class TranslationUtils {
@NotNull
public static JsNameRef getQualifiedReference(@NotNull TranslationContext context,
@NotNull DeclarationDescriptor descriptor) {
- JsName name = context.declarations().getName(descriptor);
+ JsName name = context.getNameForDescriptor(descriptor);
JsNameRef reference = name.makeRef();
if (context.hasQualifierForDescriptor(descriptor)) {
JsNameRef qualifier = context.getQualifierForDescriptor(descriptor);