Generified subpackages obtaining, fixed it for mixed packages.
This commit is contained in:
@@ -44,7 +44,8 @@ import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescrip
|
||||
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.JavaPackageScope;
|
||||
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;
|
||||
@@ -126,7 +127,10 @@ public class JetTypeMapper extends BindingTraceAware {
|
||||
@NotNull DeclarationDescriptor descriptor,
|
||||
boolean insideModule
|
||||
) {
|
||||
if (!(packageFragment instanceof JavaPackageFragmentDescriptor) || packageFragment.getMemberScope() instanceof DeserializedPackageMemberScope) {
|
||||
JetScope packageScope = packageFragment.getMemberScope();
|
||||
if (!(packageFragment instanceof JavaPackageFragmentDescriptor)
|
||||
|| packageScope instanceof DeserializedPackageMemberScope
|
||||
|| packageScope instanceof JavaFullPackageScope) {
|
||||
JetFile file = BindingContextUtils.getContainingFile(bindingContext, descriptor);
|
||||
if (insideModule && file != null) {
|
||||
return NamespaceCodegen.getNamespacePartInternalName(file);
|
||||
@@ -136,8 +140,8 @@ public class JetTypeMapper extends BindingTraceAware {
|
||||
}
|
||||
}
|
||||
|
||||
if (!(packageFragment.getMemberScope() instanceof JavaClassStaticMembersScope)) {
|
||||
throw new IllegalStateException("Unexpected scope: " + packageFragment.getMemberScope().getClass());
|
||||
if (!(packageScope instanceof JavaClassStaticMembersScope)) {
|
||||
throw new IllegalStateException("Unexpected scope: " + packageScope.getClass());
|
||||
}
|
||||
|
||||
JavaPackageFragmentProvider javaFragmentProvider = ((JavaPackageFragmentDescriptor) packageFragment).getProvider();
|
||||
@@ -153,7 +157,7 @@ public class JetTypeMapper extends BindingTraceAware {
|
||||
if (memberScope instanceof JavaClassStaticMembersScope) {
|
||||
r.append("$");
|
||||
}
|
||||
else if (memberScope instanceof JavaPackageScope) {
|
||||
else if (memberScope instanceof JavaPurePackageScope || memberScope instanceof JavaFullPackageScope) {
|
||||
r.append("/");
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package test
|
||||
|
||||
public /*synthesized*/ fun SamInterface(/*0*/ function: () -> jet.Unit): test.SamInterface
|
||||
public fun topLevelFunction(): jet.Unit
|
||||
|
||||
public open class JavaClass : java.lang.Object {
|
||||
@@ -11,6 +12,10 @@ public final class KotlinClass {
|
||||
public constructor KotlinClass()
|
||||
}
|
||||
|
||||
public trait SamInterface : java.lang.Object {
|
||||
public abstract fun instanceMethod(): jet.Unit
|
||||
}
|
||||
|
||||
package JavaClass {
|
||||
public open fun staticMethod(): jet.Unit
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package test;
|
||||
|
||||
public interface SamInterface {
|
||||
void instanceMethod();
|
||||
}
|
||||
@@ -21,9 +21,9 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.ConfigurationKind;
|
||||
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
||||
import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedClassDescriptor;
|
||||
import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedPackageMemberScope;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||
import org.jetbrains.jet.lang.resolve.java.scope.JavaFullPackageScope;
|
||||
import org.jetbrains.jet.lang.resolve.scopes.JetScope;
|
||||
import org.jetbrains.jet.test.TestCaseWithTmpdir;
|
||||
import org.jetbrains.jet.test.util.RecursiveDescriptorComparator;
|
||||
@@ -78,11 +78,11 @@ public abstract class AbstractLoadCompiledKotlinTest extends TestCaseWithTmpdir
|
||||
}
|
||||
}
|
||||
if (hasOwnMembers) {
|
||||
assert scope instanceof DeserializedPackageMemberScope : "If namespace has members, members should be inside deserialized scope.";
|
||||
assert scope instanceof JavaFullPackageScope : "If namespace has members, members should be inside deserialized scope.";
|
||||
}
|
||||
else {
|
||||
//NOTE: should probably change
|
||||
assert !(scope instanceof DeserializedPackageMemberScope) : "We don't use deserialized scopes for namespaces without members.";
|
||||
assert !(scope instanceof JavaFullPackageScope) : "We don't use deserialized scopes for namespaces without members.";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user