diff --git a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassImpl.kt b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassImpl.kt index d2b909f385b..78d4183546e 100644 --- a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassImpl.kt +++ b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassImpl.kt @@ -26,11 +26,16 @@ import org.jetbrains.kotlin.asJava.isSyntheticValuesOrValueOfMethod import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.load.java.structure.* import org.jetbrains.kotlin.load.java.structure.impl.source.JavaElementPsiSource +import org.jetbrains.kotlin.load.java.structure.impl.source.JavaElementSourceFactory import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.KtPsiUtil class JavaClassImpl(psiClassSource: JavaElementPsiSource) : JavaClassifierImpl(psiClassSource), VirtualFileBoundJavaClass, JavaAnnotationOwnerImpl, JavaModifierListOwnerImpl { + + @SuppressWarnings("unused") // used in KSP + constructor(psiClass: PsiClass) : this(JavaElementSourceFactory.getInstance(psiClass.project).createPsiSource(psiClass)) + init { assert(psiClassSource.psi !is PsiTypeParameter) { "PsiTypeParameter should be wrapped in JavaTypeParameter, not JavaClass: use JavaClassifier.create()" } } diff --git a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaConstructorImpl.java b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaConstructorImpl.java index 9a0120e5643..87c27fa01ca 100644 --- a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaConstructorImpl.java +++ b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaConstructorImpl.java @@ -16,12 +16,14 @@ package org.jetbrains.kotlin.load.java.structure.impl; +import com.intellij.psi.PsiClass; import com.intellij.psi.PsiMethod; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.load.java.structure.JavaConstructor; import org.jetbrains.kotlin.load.java.structure.JavaTypeParameter; import org.jetbrains.kotlin.load.java.structure.JavaValueParameter; import org.jetbrains.kotlin.load.java.structure.impl.source.JavaElementPsiSource; +import org.jetbrains.kotlin.load.java.structure.impl.source.JavaElementSourceFactory; import java.util.List; @@ -37,6 +39,12 @@ public class JavaConstructorImpl extends JavaMemberImpl implements Ja psiMethod.getName() + " " + psiMethod.getClass().getName(); } + @SuppressWarnings("unused") // used in KSP + public JavaConstructorImpl(PsiMethod psiMethod) { + this(JavaElementSourceFactory.getInstance(psiMethod.getProject()).createPsiSource(psiMethod)); + } + + @NotNull @Override public List getValueParameters() { diff --git a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaFieldImpl.java b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaFieldImpl.java index f6b3a6b5eb0..9f7b9589a83 100644 --- a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaFieldImpl.java +++ b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaFieldImpl.java @@ -18,6 +18,7 @@ package org.jetbrains.kotlin.load.java.structure.impl; import com.intellij.psi.PsiEnumConstant; import com.intellij.psi.PsiField; +import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiVariable; import com.intellij.psi.util.PsiUtil; import org.jetbrains.annotations.NotNull; @@ -25,12 +26,19 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.load.java.structure.JavaField; import org.jetbrains.kotlin.load.java.structure.JavaType; import org.jetbrains.kotlin.load.java.structure.impl.source.JavaElementPsiSource; +import org.jetbrains.kotlin.load.java.structure.impl.source.JavaElementSourceFactory; public class JavaFieldImpl extends JavaMemberImpl implements JavaField { public JavaFieldImpl(@NotNull JavaElementPsiSource psiFieldSource) { super(psiFieldSource); } + + @SuppressWarnings("unused") // used in KSP + public JavaFieldImpl(PsiField psiField) { + this(JavaElementSourceFactory.getInstance(psiField.getProject()).createPsiSource(psiField)); + } + @Override public boolean isEnumEntry() { return getPsi() instanceof PsiEnumConstant; diff --git a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaMethodImpl.java b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaMethodImpl.java index 2b6dd2618b8..e48125faa92 100644 --- a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaMethodImpl.java +++ b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaMethodImpl.java @@ -18,11 +18,13 @@ package org.jetbrains.kotlin.load.java.structure.impl; import com.intellij.psi.PsiAnnotationMemberValue; import com.intellij.psi.PsiAnnotationMethod; +import com.intellij.psi.PsiField; import com.intellij.psi.PsiMethod; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.load.java.structure.*; import org.jetbrains.kotlin.load.java.structure.impl.source.JavaElementPsiSource; +import org.jetbrains.kotlin.load.java.structure.impl.source.JavaElementSourceFactory; import org.jetbrains.kotlin.name.Name; import java.util.List; @@ -39,6 +41,11 @@ public class JavaMethodImpl extends JavaMemberImpl implements JavaMet "PsiMethod which is a constructor should be wrapped in JavaConstructorImpl: " + method.getName(); } + @SuppressWarnings("unused") // used in KSP + public JavaMethodImpl(PsiMethod psiMethod) { + this(JavaElementSourceFactory.getInstance(psiMethod.getProject()).createPsiSource(psiMethod)); + } + @NotNull @Override public Name getName() { diff --git a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaTypeImpl.java b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaTypeImpl.java index c737efce38c..934de281bc9 100644 --- a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaTypeImpl.java +++ b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaTypeImpl.java @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.load.java.structure.JavaAnnotation; import org.jetbrains.kotlin.load.java.structure.JavaType; import org.jetbrains.kotlin.load.java.structure.impl.source.JavaElementSourceFactory; import org.jetbrains.kotlin.load.java.structure.impl.source.JavaElementTypeSource; +import org.jetbrains.kotlin.load.java.structure.impl.source.JavaFixedElementSourceFactory; import org.jetbrains.kotlin.load.java.structure.impl.source.JavaSourceFactoryOwner; import org.jetbrains.kotlin.name.FqName; @@ -59,6 +60,18 @@ public abstract class JavaTypeImpl implements JavaType, Jav return create(psiTypeSource.getType(), psiTypeSource); } + /** + * @deprecated used only for a source/binary compatibility with existing 3rd party tools. Should not be used from Analysis API, Kotlin compiler, or from any other place in the Kotlin repository. + */ + @NotNull + @Deprecated + public static JavaTypeImpl create(PsiType psiType) { + // The JavaFixedElementSourceFactory is directly created here. + // Instead, the `JavaElementSourceFactory.getInstance(project)` should be called, but in order to do this we need a `com.intellij.openapi.project.Project` instance + return create(new JavaFixedElementSourceFactory().createTypeSource(psiType)); + } + + @NotNull public static JavaTypeImpl create(@NotNull PsiType psiType, JavaElementTypeSource psiTypeSource) { return psiType.accept(new PsiTypeVisitor>() { diff --git a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaTypeParameterImpl.java b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaTypeParameterImpl.java index 5046583bfc0..d71cd5411ce 100644 --- a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaTypeParameterImpl.java +++ b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaTypeParameterImpl.java @@ -17,12 +17,14 @@ package org.jetbrains.kotlin.load.java.structure.impl; import com.intellij.psi.PsiAnnotationOwner; +import com.intellij.psi.PsiField; import com.intellij.psi.PsiTypeParameter; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.load.java.structure.JavaClassifierType; import org.jetbrains.kotlin.load.java.structure.JavaTypeParameter; import org.jetbrains.kotlin.load.java.structure.impl.source.JavaElementPsiSource; +import org.jetbrains.kotlin.load.java.structure.impl.source.JavaElementSourceFactory; import org.jetbrains.kotlin.name.Name; import org.jetbrains.kotlin.name.SpecialNames; @@ -35,6 +37,11 @@ public class JavaTypeParameterImpl extends JavaClassifierImpl super(psiTypeParameterSource); } + @SuppressWarnings("unused") // used in KSP + public JavaTypeParameterImpl(PsiTypeParameter psiTypeParameter) { + this(JavaElementSourceFactory.getInstance(psiTypeParameter.getProject()).createPsiSource(psiTypeParameter)); + } + @NotNull @Override public Name getName() {