diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaSubModule.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaSubModule.kt index 8c2c533ccc1..354e51be251 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaSubModule.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/LazyJavaSubModule.kt @@ -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 diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaPackageFragmentScope.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaPackageFragmentScope.kt index 3aaf67dfcb4..bf4b7e3a8c2 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaPackageFragmentScope.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaPackageFragmentScope.kt @@ -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 = 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 = jClass.getInnerClasses().map { c -> c.getName() } - override fun getAllPackageNames(): Collection = jClass.getInnerClasses().filter { c -> c.isStatic() }.map { c -> c.getName() } + override fun getAllClassNames(): Collection = listOf() // nested classes are loaded as members of their outer classes, not packages + override fun getAllPackageNames(): Collection = jClass.getInnerClasses().iterator() + .filter { c -> c.isStatic() && JavaNamespaceResolver.hasStaticMembers(c) } + .map { c -> c.getName() }.toList() // TODO override fun getProperties(name: Name): Collection = Collections.emptyList()