From c01705f542e15275f683d145a3c3995d94f2d2c5 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Tue, 24 Dec 2013 13:36:16 +0400 Subject: [PATCH] Unneeded subclasses replaced by factory methods --- .../descriptors/LazyJavaPackageFragment.kt | 63 ++++++++----------- 1 file changed, 27 insertions(+), 36 deletions(-) diff --git a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaPackageFragment.kt b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaPackageFragment.kt index e4359f9452c..78feb760294 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaPackageFragment.kt +++ b/core/descriptor.loader.java/src/org/jetbrains/jet/lang/resolve/java/lazy/descriptors/LazyJavaPackageFragment.kt @@ -16,50 +16,41 @@ import org.jetbrains.jet.lang.resolve.java.descriptor.JavaPackageFragmentDescrip import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver import org.jetbrains.jet.lang.descriptors.PackageFragmentProvider -abstract class LazyJavaPackageFragment( +fun LazyPackageFragmentForJavaPackage( + c: LazyJavaResolverContext, + containingDeclaration: ModuleDescriptor, + jPackage: JavaPackage +) = LazyJavaPackageFragment(c, containingDeclaration, JavaPackageFragmentDescriptor.Kind.PROPER, jPackage.getFqName(), + { LazyPackageFragmentScopeForJavaPackage(c, jPackage, this) }) + +fun LazyPackageFragmentForJavaClass( + c: LazyJavaResolverContext, + containingDeclaration: ModuleDescriptor, + jClass: JavaClass +) = LazyJavaPackageFragment(c, containingDeclaration, JavaPackageFragmentDescriptor.Kind.CLASS_STATICS, + jClass.getFqName().sure("Attempt to build a package of an anonymous/local class: $jClass"), + { LazyPackageFragmentScopeForJavaClass(c, jClass, this) }) + +class LazyJavaPackageFragment( private val c: LazyJavaResolverContext, containingDeclaration: ModuleDescriptor, - name: Name -) : DeclarationDescriptorNonRootImpl(containingDeclaration, listOf(), name), JavaPackageFragmentDescriptor, LazyJavaDescriptor { - - protected abstract val _memberScope: JetScope - + val _kind: JavaPackageFragmentDescriptor.Kind, + val _fqName: FqName, + createMemberScope: LazyJavaPackageFragment.() -> JetScope +) : DeclarationDescriptorNonRootImpl(containingDeclaration, listOf(), _fqName.shortNameOrSpecial()), + JavaPackageFragmentDescriptor, LazyJavaDescriptor +{ + private val _memberScope = createMemberScope() override fun getMemberScope() = _memberScope - override fun getJavaDescriptorResolver(): JavaDescriptorResolver = c.javaDescriptorResolver - - override fun getProvider(): PackageFragmentProvider = c.packageFragmentProvider + override fun getKind() = _kind + override fun getFqName() = _fqName + override fun getJavaDescriptorResolver() = c.javaDescriptorResolver + override fun getProvider() = c.packageFragmentProvider override fun accept(visitor: DeclarationDescriptorVisitor, data: D) = visitor.visitPackageFragmentDescriptor(this, data) as R override fun substitute(substitutor: TypeSubstitutor) = this override fun toString() = "lazy java package fragment: " + getFqName() -} - -public class LazyPackageFragmentForJavaPackage( - c: LazyJavaResolverContext, - containingDeclaration: ModuleDescriptor, - val jPackage: JavaPackage -) : LazyJavaPackageFragment(c, containingDeclaration, jPackage.getFqName().shortNameOrSpecial()) { - override fun getFqName(): FqName = jPackage.getFqName() - - override val _memberScope = LazyPackageFragmentScopeForJavaPackage(c, jPackage, this) - - override fun getKind() = JavaPackageFragmentDescriptor.Kind.PROPER -} - -public class LazyPackageFragmentForJavaClass( - c: LazyJavaResolverContext, - containingDeclaration: ModuleDescriptor, - val jClass: JavaClass -) : LazyJavaPackageFragment(c, containingDeclaration, - jClass.getFqName().sure("Attempt to build a package of an anonymous/local class: $jClass") - .shortNameOrRoot() -) { - override fun getFqName(): FqName = jClass.getFqName()!! - - override val _memberScope = LazyPackageFragmentScopeForJavaClass(c, jClass, this) - - override fun getKind() = JavaPackageFragmentDescriptor.Kind.CLASS_STATICS } \ No newline at end of file