diff --git a/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/processing/impl/ResolverImpl.kt b/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/processing/impl/ResolverImpl.kt index ee82680b90..3114b839fc 100644 --- a/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/processing/impl/ResolverImpl.kt +++ b/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/processing/impl/ResolverImpl.kt @@ -65,8 +65,6 @@ import org.jetbrains.kotlin.load.java.lazy.descriptors.LazyJavaTypeParameterDesc import org.jetbrains.kotlin.load.java.lazy.types.JavaTypeResolver import org.jetbrains.kotlin.load.java.lazy.types.toAttributes import org.jetbrains.kotlin.load.java.sources.JavaSourceElement -import org.jetbrains.kotlin.load.java.structure.JavaClass -import org.jetbrains.kotlin.load.java.structure.classId import org.jetbrains.kotlin.load.java.structure.impl.JavaArrayTypeImpl import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl import org.jetbrains.kotlin.load.java.structure.impl.JavaConstructorImpl @@ -514,9 +512,7 @@ class ResolverImpl( // TODO: Resolve Java variables is not supported by this function. Not needed currently. fun resolveJavaDeclaration(psi: PsiElement): DeclarationDescriptor? { return when (psi) { - is PsiClass -> moduleClassResolver.resolveClass( - JavaClassImpl(psi).apply { workaroundForNested(lazyJavaResolverContext) } - ) + is PsiClass -> moduleClassResolver.resolveClass(JavaClassImpl(psi)) is PsiMethod -> { // TODO: get rid of hardcoded check if possible. val property = if (psi.name.startsWith("set") || psi.name.startsWith("get")) { @@ -544,9 +540,7 @@ class ResolverImpl( } is PsiField -> { moduleClassResolver - .resolveClass( - JavaFieldImpl(psi).containingClass.apply { workaroundForNested(lazyJavaResolverContext) } - ) + .resolveClass(JavaFieldImpl(psi).containingClass) ?.findEnclosedDescriptor( kindFilter = DescriptorKindFilter.VARIABLES, filter = { it.findPsi() == psi } @@ -735,9 +729,7 @@ class ResolverImpl( } } val containingDeclaration = if (psi.owner is PsiClass) { - moduleClassResolver.resolveClass( - JavaClassImpl(psi.owner as PsiClass).apply { workaroundForNested(lazyJavaResolverContext) } - ) + moduleClassResolver.resolveClass(JavaClassImpl(psi.owner as PsiClass)) } else { val owner = psi.owner check(owner is PsiMethod) { @@ -1553,16 +1545,3 @@ internal fun KSTypeReference.resolveToUnderlying(): KSType { } return candidate } - -// TODO: Remove this after upgrading to Kotlin 1.8.20. -// Temporary work around for https://github.com/google/ksp/issues/1034 -// Force resolve outer most class for Java nested classes. -internal fun JavaClass.workaroundForNested( - lazyJavaResolverContext: LazyJavaResolverContext = ResolverImpl.instance!!.lazyJavaResolverContext -) { - var outerMost = outerClass - while (outerMost?.outerClass != null) { - outerMost = outerMost.outerClass - } - outerMost?.classId?.let { lazyJavaResolverContext.components.finder.findClass(it) } -} diff --git a/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/java/KSClassDeclarationJavaImpl.kt b/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/java/KSClassDeclarationJavaImpl.kt index f12933f870..bc6c01c6af 100644 --- a/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/java/KSClassDeclarationJavaImpl.kt +++ b/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/java/KSClassDeclarationJavaImpl.kt @@ -22,7 +22,6 @@ import com.google.devtools.ksp.isConstructor import com.google.devtools.ksp.memoized import com.google.devtools.ksp.processing.impl.KSNameImpl import com.google.devtools.ksp.processing.impl.ResolverImpl -import com.google.devtools.ksp.processing.impl.workaroundForNested import com.google.devtools.ksp.symbol.* import com.google.devtools.ksp.symbol.impl.* import com.google.devtools.ksp.symbol.impl.binary.getAllFunctions @@ -75,7 +74,7 @@ class KSClassDeclarationJavaImpl private constructor(val psi: PsiClass) : // Could the resolution ever fail? private val descriptor: ClassDescriptor? by lazy { - ResolverImpl.instance!!.moduleClassResolver.resolveClass(JavaClassImpl(psi).apply { workaroundForNested() }) + ResolverImpl.instance!!.moduleClassResolver.resolveClass(JavaClassImpl(psi)) } // TODO in 1.5 + jvmTarget 15, will we return Java permitted types? diff --git a/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/utils.kt b/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/utils.kt index fc6de3c8af..f233798751 100644 --- a/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/utils.kt +++ b/compiler-plugin/src/main/kotlin/com/google/devtools/ksp/symbol/impl/utils.kt @@ -20,7 +20,6 @@ import com.google.devtools.ksp.BinaryClassInfoCache import com.google.devtools.ksp.ExceptionMessage import com.google.devtools.ksp.KspExperimental import com.google.devtools.ksp.processing.impl.ResolverImpl -import com.google.devtools.ksp.processing.impl.workaroundForNested import com.google.devtools.ksp.symbol.* import com.google.devtools.ksp.symbol.Variance import com.google.devtools.ksp.symbol.impl.binary.KSClassDeclarationDescriptorImpl @@ -231,9 +230,9 @@ internal inline fun T.findClosestOverride internal fun ModuleClassResolver.resolveContainingClass(psiMethod: PsiMethod): ClassDescriptor? { return if (psiMethod.isConstructor) { - resolveClass(JavaConstructorImpl(psiMethod).containingClass.apply { workaroundForNested() }) + resolveClass(JavaConstructorImpl(psiMethod).containingClass) } else { - resolveClass(JavaMethodImpl(psiMethod).containingClass.apply { workaroundForNested() }) + resolveClass(JavaMethodImpl(psiMethod).containingClass) } }