codegen: fix calls to global functions when loaded from java descriptors

This commit is contained in:
Stepan Koltsov
2012-01-19 18:05:00 +04:00
parent 021fb14c77
commit b6590a3814
9 changed files with 41 additions and 19 deletions
@@ -633,7 +633,8 @@ public class JavaDescriptorResolver {
resolveParentDescriptor(psiPackage),
Collections.<AnnotationDescriptor>emptyList(), // TODO
name == null ? JAVA_ROOT : name,
name == null ? JAVA_ROOT : psiPackage.getQualifiedName()
name == null ? JAVA_ROOT : psiPackage.getQualifiedName(),
true
);
namespaceData.namespaceDescriptor.setMemberScope(new JavaPackageScope(psiPackage.getQualifiedName(), namespaceData.namespaceDescriptor, semanticServices));
@@ -657,7 +658,8 @@ public class JavaDescriptorResolver {
resolveParentDescriptor(psiClass),
Collections.<AnnotationDescriptor>emptyList(), // TODO
psiClass.getName(),
psiClass.getQualifiedName()
psiClass.getQualifiedName(),
false
);
namespaceData.namespaceDescriptor.setMemberScope(new JavaClassMembersScope(namespaceData.namespaceDescriptor, psiClass, semanticServices, true));
semanticServices.getTrace().record(BindingContext.NAMESPACE, psiClass, namespaceData.namespaceDescriptor);
@@ -14,11 +14,14 @@ import java.util.List;
public class JavaNamespaceDescriptor extends AbstractNamespaceDescriptorImpl {
private JetScope memberScope;
private final String qualifiedName;
/** Namespace of class with static methods */
private final boolean namespace;
public JavaNamespaceDescriptor(DeclarationDescriptor containingDeclaration, List<AnnotationDescriptor> annotations,
@NotNull String name, @NotNull String qualifiedName) {
@NotNull String name, @NotNull String qualifiedName, boolean namespace) {
super(containingDeclaration, annotations, name);
this.qualifiedName = qualifiedName;
this.namespace = namespace;
}
public void setMemberScope(@NotNull JetScope memberScope) {
@@ -34,4 +37,8 @@ public class JavaNamespaceDescriptor extends AbstractNamespaceDescriptorImpl {
public String getQualifiedName() {
return qualifiedName;
}
public boolean isNamespace() {
return namespace;
}
}