Properly load Java classes as packages
This commit is contained in:
+2
-1
@@ -8,6 +8,7 @@ import org.jetbrains.jet.lang.resolve.java.structure.JavaClass
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor
|
||||
import org.jetbrains.jet.lang.resolve.java.lazy.descriptors.LazyPackageFragmentForJavaPackage
|
||||
import org.jetbrains.jet.lang.resolve.java.lazy.descriptors.LazyPackageFragmentForJavaClass
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver
|
||||
|
||||
public open class LazyJavaSubModule(
|
||||
private val outerContext: GlobalJavaResolverContext,
|
||||
@@ -29,7 +30,7 @@ public open class LazyJavaSubModule(
|
||||
}
|
||||
else {
|
||||
val jClass = c.finder.findClass(fqName)
|
||||
if (jClass != null && (jClass.getOuterClass() == null || jClass.isStatic())) {
|
||||
if (jClass != null && JavaNamespaceResolver.hasStaticMembers(jClass)) {
|
||||
LazyPackageFragmentForJavaClass(c, findParent(fqName), jClass)
|
||||
}
|
||||
else null
|
||||
|
||||
+6
-3
@@ -11,6 +11,7 @@ import org.jetbrains.jet.lang.resolve.java.structure.JavaPackage
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName
|
||||
import org.jetbrains.jet.utils.flatten
|
||||
import org.jetbrains.jet.lang.resolve.java.structure.JavaClass
|
||||
import org.jetbrains.jet.lang.resolve.java.resolver.JavaNamespaceResolver
|
||||
|
||||
public abstract class LazyJavaPackageFragmentScope(
|
||||
c: LazyJavaResolverContext,
|
||||
@@ -55,7 +56,7 @@ public class LazyPackageFragmentScopeForJavaPackage(
|
||||
|
||||
override fun getAllPackageNames(): Collection<Name> =
|
||||
listOf(
|
||||
jPackage.getClasses().map { c -> c.getName() },
|
||||
jPackage.getClasses().iterator().filter { c -> JavaNamespaceResolver.hasStaticMembers(c) }.map { c -> c.getName() }.toList(),
|
||||
jPackage.getSubPackages().map { sp -> sp.getFqName().shortName() }
|
||||
).flatten()
|
||||
|
||||
@@ -73,8 +74,10 @@ public class LazyPackageFragmentScopeForJavaClass(
|
||||
packageFragment: LazyJavaPackageFragment
|
||||
) : LazyJavaPackageFragmentScope(c, packageFragment) {
|
||||
|
||||
override fun getAllClassNames(): Collection<Name> = jClass.getInnerClasses().map { c -> c.getName() }
|
||||
override fun getAllPackageNames(): Collection<Name> = jClass.getInnerClasses().filter { c -> c.isStatic() }.map { c -> c.getName() }
|
||||
override fun getAllClassNames(): Collection<Name> = listOf() // nested classes are loaded as members of their outer classes, not packages
|
||||
override fun getAllPackageNames(): Collection<Name> = jClass.getInnerClasses().iterator()
|
||||
.filter { c -> c.isStatic() && JavaNamespaceResolver.hasStaticMembers(c) }
|
||||
.map { c -> c.getName() }.toList()
|
||||
|
||||
// TODO
|
||||
override fun getProperties(name: Name): Collection<VariableDescriptor> = Collections.emptyList()
|
||||
|
||||
Reference in New Issue
Block a user