Convert PackageViewDescriptor to Kotlin
This commit is contained in:
@@ -32,7 +32,7 @@ val KOTLIN_REFLECT_FQ_NAME = FqName("kotlin.reflect")
|
||||
|
||||
public class ReflectionTypes(private val module: ModuleDescriptor) {
|
||||
private val kotlinReflectScope: JetScope? by Delegates.lazy {
|
||||
module.getPackage(KOTLIN_REFLECT_FQ_NAME)?.getMemberScope()
|
||||
module.getPackage(KOTLIN_REFLECT_FQ_NAME)?.memberScope
|
||||
}
|
||||
|
||||
fun find(className: String): ClassDescriptor {
|
||||
|
||||
+1
-1
@@ -73,7 +73,7 @@ public class BuiltInFictitiousFunctionClassFactory(
|
||||
val kindWithArity = parseClassName(className, packageFqName) ?: return null
|
||||
val (kind, arity) = kindWithArity // KT-5100
|
||||
|
||||
val containingPackageFragment = module.getPackage(packageFqName)!!.getFragments().single()
|
||||
val containingPackageFragment = module.getPackage(packageFqName)!!.fragments.single()
|
||||
|
||||
return FunctionClassDescriptor(storageManager, containingPackageFragment, kind, arity)
|
||||
}
|
||||
|
||||
+1
-1
@@ -158,7 +158,7 @@ public class FunctionClassDescriptor(
|
||||
if (functionKind.hasExtensionReceiver) functionArity++
|
||||
|
||||
val module = containingDeclaration.getContainingDeclaration()
|
||||
val kotlinPackageFragment = module.getPackage(BUILT_INS_PACKAGE_FQ_NAME)!!.getFragments().single()
|
||||
val kotlinPackageFragment = module.getPackage(BUILT_INS_PACKAGE_FQ_NAME)!!.fragments.single()
|
||||
|
||||
// If this is a KMemberFunction{n} or KExtensionFunction{n}, it extends Function{n} with the annotation kotlin.extension,
|
||||
// so that the value of this type is callable as an extension function, with the receiver before the dot
|
||||
|
||||
+9
-19
@@ -14,29 +14,19 @@
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.descriptors;
|
||||
package org.jetbrains.kotlin.descriptors
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.kotlin.name.FqName;
|
||||
import org.jetbrains.kotlin.resolve.scopes.JetScope;
|
||||
import org.jetbrains.kotlin.name.FqName
|
||||
import org.jetbrains.kotlin.resolve.scopes.JetScope
|
||||
|
||||
import java.util.List;
|
||||
public interface PackageViewDescriptor : DeclarationDescriptor {
|
||||
override fun getContainingDeclaration(): PackageViewDescriptor?
|
||||
|
||||
public interface PackageViewDescriptor extends DeclarationDescriptor {
|
||||
@Override
|
||||
@Nullable
|
||||
PackageViewDescriptor getContainingDeclaration();
|
||||
public val fqName: FqName
|
||||
|
||||
@NotNull
|
||||
FqName getFqName();
|
||||
public val memberScope: JetScope
|
||||
|
||||
@NotNull
|
||||
JetScope getMemberScope();
|
||||
public val module: ModuleDescriptor
|
||||
|
||||
@NotNull
|
||||
ModuleDescriptor getModule();
|
||||
|
||||
@NotNull
|
||||
List<PackageFragmentDescriptor> getFragments();
|
||||
public val fragments: List<PackageFragmentDescriptor>
|
||||
}
|
||||
+4
-12
@@ -24,11 +24,11 @@ import org.jetbrains.kotlin.resolve.scopes.JetScope
|
||||
import org.jetbrains.kotlin.types.TypeSubstitutor
|
||||
|
||||
public class PackageViewDescriptorImpl(
|
||||
private val module: ModuleDescriptor,
|
||||
private val fqName: FqName,
|
||||
private val fragments: List<PackageFragmentDescriptor>
|
||||
override val module: ModuleDescriptor,
|
||||
override val fqName: FqName,
|
||||
override val fragments: List<PackageFragmentDescriptor>
|
||||
) : DeclarationDescriptorImpl(Annotations.EMPTY, fqName.shortNameOrSpecial()), PackageViewDescriptor {
|
||||
private val memberScope: JetScope = run {
|
||||
override val memberScope: JetScope = run {
|
||||
assert(fragments.isNotEmpty()) { "$fqName in module" }
|
||||
|
||||
val scopes = fragments.map { it.getMemberScope() } + SubpackagesScope(this)
|
||||
@@ -41,14 +41,6 @@ public class PackageViewDescriptorImpl(
|
||||
|
||||
override fun <R, D> accept(visitor: DeclarationDescriptorVisitor<R, D>, data: D): R = visitor.visitPackageViewDescriptor(this, data)
|
||||
|
||||
override fun getFqName(): FqName = fqName
|
||||
|
||||
override fun getMemberScope(): JetScope = memberScope
|
||||
|
||||
override fun getModule(): ModuleDescriptor = module
|
||||
|
||||
override fun getFragments() = fragments
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
if (javaClass != other?.javaClass) return false
|
||||
|
||||
|
||||
@@ -764,10 +764,10 @@ internal class DescriptorRendererImpl(
|
||||
|
||||
private fun renderPackageView(packageView: PackageViewDescriptor, builder: StringBuilder) {
|
||||
builder.append(renderKeyword("package")).append(" ")
|
||||
builder.append(renderFqName(packageView.getFqName()))
|
||||
builder.append(renderFqName(packageView.fqName))
|
||||
if (debugMode) {
|
||||
builder.append(" in context of ")
|
||||
renderName(packageView.getModule(), builder)
|
||||
renderName(packageView.module, builder)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ public val DeclarationDescriptor.module: ModuleDescriptor
|
||||
|
||||
public fun ModuleDescriptor.resolveTopLevelClass(topLevelClassFqName: FqName): ClassDescriptor? {
|
||||
assert(!topLevelClassFqName.isRoot())
|
||||
return getPackage(topLevelClassFqName.parent())?.getMemberScope()
|
||||
return getPackage(topLevelClassFqName.parent())?.memberScope
|
||||
?.getClassifier(topLevelClassFqName.shortName()) as? ClassDescriptor
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.name.ClassId
|
||||
public fun ModuleDescriptor.findClassAcrossModuleDependencies(classId: ClassId): ClassDescriptor? {
|
||||
val packageViewDescriptor = getPackage(classId.getPackageFqName()) ?: return null
|
||||
val segments = classId.getRelativeClassName().pathSegments()
|
||||
val topLevelClass = packageViewDescriptor.getMemberScope().getClassifier(segments.first()) as? ClassDescriptor ?: return null
|
||||
val topLevelClass = packageViewDescriptor.memberScope.getClassifier(segments.first()) as? ClassDescriptor ?: return null
|
||||
var result = topLevelClass
|
||||
for (name in segments.subList(1, segments.size())) {
|
||||
result = result.getUnsubstitutedInnerClassesScope().getClassifier(name) as? ClassDescriptor ?: return null
|
||||
|
||||
@@ -29,7 +29,7 @@ class KPackageImpl(override val jClass: Class<*>) : KCallableContainerImpl(), KP
|
||||
moduleData.module.getPackage(fqName) ?: throw KotlinReflectionInternalError("Package not resolved: $fqName")
|
||||
}
|
||||
|
||||
override val scope: JetScope get() = descriptor.getMemberScope()
|
||||
override val scope: JetScope get() = descriptor.memberScope
|
||||
|
||||
fun topLevelVariable(name: String): KTopLevelVariable<*> =
|
||||
KTopLevelVariableImpl<Any?>(this, name)
|
||||
|
||||
Reference in New Issue
Block a user