From 09642df623e304b0b1d7e2a7820933f821ed1eab Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Mon, 23 Dec 2013 21:25:25 +0400 Subject: [PATCH] JavaPackageFragmentDescriptor.getKind() introduced --- .../jet/codegen/state/JetTypeMapper.java | 15 +++++---------- .../descriptor/JavaPackageFragmentDescriptor.java | 8 ++++++++ .../JavaPackageFragmentDescriptorImpl.java | 6 ++++++ 3 files changed, 19 insertions(+), 10 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java b/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java index 21e50cd314f..3fdbd68a2b9 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/state/JetTypeMapper.java @@ -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.scope.JavaClassStaticMembersScope; 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.FqNameUnsafe; 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.FunctionTypesUtil.getFunctionTraitClassName; 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 { @@ -154,16 +154,11 @@ public class JetTypeMapper extends BindingTraceAware { } r.append(pathItem.shortName().asString()); - JetScope memberScope = javaFragmentProvider.getPackageFragment(pathItem).getMemberScope(); - if (memberScope instanceof JavaClassStaticMembersScope) { - r.append("$"); - } - else if (memberScope instanceof JavaPurePackageScope || memberScope instanceof JavaFullPackageScope) { - r.append("/"); - } - else { - throw new IllegalStateException("Unexpected scope: " + memberScope.getClass()); + JavaPackageFragmentDescriptor fragment = javaFragmentProvider.getPackageFragment(pathItem); + if (fragment == null) { + throw new IllegalStateException("Package fragment not found: " + pathItem); } + r.append(fragment.getKind() == CLASS_STATICS ? "$" : "/"); } r.append(packageFragment.getName().asString()); diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/descriptor/JavaPackageFragmentDescriptor.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/descriptor/JavaPackageFragmentDescriptor.java index d3cdb75f006..434871b7ab0 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/descriptor/JavaPackageFragmentDescriptor.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/descriptor/JavaPackageFragmentDescriptor.java @@ -23,4 +23,12 @@ import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; public interface JavaPackageFragmentDescriptor extends PackageFragmentDescriptor { @NotNull JavaDescriptorResolver getJavaDescriptorResolver(); + + enum Kind { + PROPER, + CLASS_STATICS, + } + + @NotNull + Kind getKind(); } diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/descriptor/JavaPackageFragmentDescriptorImpl.java b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/descriptor/JavaPackageFragmentDescriptorImpl.java index 2e86418df8a..181f2a07143 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/descriptor/JavaPackageFragmentDescriptorImpl.java +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/descriptor/JavaPackageFragmentDescriptorImpl.java @@ -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.resolve.java.JavaDescriptorResolver; 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.name.FqName; import org.jetbrains.jet.lang.types.TypeSubstitutor; @@ -59,6 +60,11 @@ public class JavaPackageFragmentDescriptorImpl extends DeclarationDescriptorImpl this.memberScope = scopeFactory.fun(this); } + @NotNull + @Override + public Kind getKind() { + return memberScope instanceof JavaClassStaticMembersScope ? Kind.CLASS_STATICS : Kind.PROPER; + } @NotNull @Override