JavaPackageFragmentDescriptor.getKind() introduced

This commit is contained in:
Andrey Breslav
2013-12-23 21:25:25 +04:00
parent 37a79e8299
commit 09642df623
3 changed files with 19 additions and 10 deletions
@@ -46,7 +46,6 @@ import org.jetbrains.jet.lang.resolve.java.mapping.KotlinToJavaTypesMap;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider; import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider;
import org.jetbrains.jet.lang.resolve.java.scope.JavaClassStaticMembersScope; import org.jetbrains.jet.lang.resolve.java.scope.JavaClassStaticMembersScope;
import org.jetbrains.jet.lang.resolve.java.scope.JavaFullPackageScope; import org.jetbrains.jet.lang.resolve.java.scope.JavaFullPackageScope;
import org.jetbrains.jet.lang.resolve.java.scope.JavaPurePackageScope;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe; import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.name.Name;
@@ -65,6 +64,7 @@ import static org.jetbrains.jet.codegen.AsmUtil.getTraitImplThisParameterType;
import static org.jetbrains.jet.codegen.CodegenUtil.*; import static org.jetbrains.jet.codegen.CodegenUtil.*;
import static org.jetbrains.jet.codegen.FunctionTypesUtil.getFunctionTraitClassName; import static org.jetbrains.jet.codegen.FunctionTypesUtil.getFunctionTraitClassName;
import static org.jetbrains.jet.codegen.binding.CodegenBinding.*; import static org.jetbrains.jet.codegen.binding.CodegenBinding.*;
import static org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescriptor.Kind.CLASS_STATICS;
public class JetTypeMapper extends BindingTraceAware { public class JetTypeMapper extends BindingTraceAware {
@@ -154,16 +154,11 @@ public class JetTypeMapper extends BindingTraceAware {
} }
r.append(pathItem.shortName().asString()); r.append(pathItem.shortName().asString());
JetScope memberScope = javaFragmentProvider.getPackageFragment(pathItem).getMemberScope(); JavaPackageFragmentDescriptor fragment = javaFragmentProvider.getPackageFragment(pathItem);
if (memberScope instanceof JavaClassStaticMembersScope) { if (fragment == null) {
r.append("$"); throw new IllegalStateException("Package fragment not found: " + pathItem);
}
else if (memberScope instanceof JavaPurePackageScope || memberScope instanceof JavaFullPackageScope) {
r.append("/");
}
else {
throw new IllegalStateException("Unexpected scope: " + memberScope.getClass());
} }
r.append(fragment.getKind() == CLASS_STATICS ? "$" : "/");
} }
r.append(packageFragment.getName().asString()); r.append(packageFragment.getName().asString());
@@ -23,4 +23,12 @@ import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
public interface JavaPackageFragmentDescriptor extends PackageFragmentDescriptor { public interface JavaPackageFragmentDescriptor extends PackageFragmentDescriptor {
@NotNull @NotNull
JavaDescriptorResolver getJavaDescriptorResolver(); JavaDescriptorResolver getJavaDescriptorResolver();
enum Kind {
PROPER,
CLASS_STATICS,
}
@NotNull
Kind getKind();
} }
@@ -26,6 +26,7 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.descriptors.impl.DeclarationDescriptorImpl; import org.jetbrains.jet.lang.descriptors.impl.DeclarationDescriptorImpl;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider; import org.jetbrains.jet.lang.resolve.java.resolver.JavaPackageFragmentProvider;
import org.jetbrains.jet.lang.resolve.java.scope.JavaClassStaticMembersScope;
import org.jetbrains.jet.lang.resolve.java.scope.JavaPackageFragmentScope; import org.jetbrains.jet.lang.resolve.java.scope.JavaPackageFragmentScope;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.types.TypeSubstitutor; import org.jetbrains.jet.lang.types.TypeSubstitutor;
@@ -59,6 +60,11 @@ public class JavaPackageFragmentDescriptorImpl extends DeclarationDescriptorImpl
this.memberScope = scopeFactory.fun(this); this.memberScope = scopeFactory.fun(this);
} }
@NotNull
@Override
public Kind getKind() {
return memberScope instanceof JavaClassStaticMembersScope ? Kind.CLASS_STATICS : Kind.PROPER;
}
@NotNull @NotNull
@Override @Override