diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/resolve/KotlinClassifiersCache.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/resolve/KotlinClassifiersCache.kt index d9e23b02dd3..3326f3a68ba 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/resolve/KotlinClassifiersCache.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/resolve/KotlinClassifiersCache.kt @@ -125,6 +125,9 @@ class MockKotlinClassifier(override val classId: ClassId, cache.createMockKotlinClassifier(nestedClassOrObject, ktFile, classId.createNestedClassId(nestedClassOrObject.nameAsSafeName)) } ?: emptyList() + override val isFromSource: Boolean + get() = true + override val lightClassOriginKind get() = LightClassOriginKind.SOURCE @@ -198,6 +201,7 @@ class MockKotlinField(private val psiField: PsiField) : JavaField { override val type get() = shouldNotBeCalled() override val hasConstantNotNullInitializer get() = shouldNotBeCalled() override fun findAnnotation(fqName: FqName) = shouldNotBeCalled() + override val isFromSource: Boolean get() = shouldNotBeCalled() } private fun KtClassOrObject.computeClassId(): ClassId? = diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedClassifier.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedClassifier.kt index 2fe03699070..822ca731c82 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedClassifier.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedClassifier.kt @@ -28,6 +28,9 @@ abstract class SymbolBasedClassifier( javac: JavacWrapper ) : SymbolBasedElement(element, javac), JavaClassifier, JavaAnnotationOwner { + override val isFromSource: Boolean + get() = true + override val annotations: Collection get() = element.annotationMirrors.map { SymbolBasedAnnotation(it, javac) } diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedMember.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedMember.kt index 4cd1c742d27..c59751a4a74 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedMember.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedMember.kt @@ -31,6 +31,9 @@ abstract class SymbolBasedMember( javac: JavacWrapper ) : SymbolBasedElement(element, javac), JavaMember { + override val isFromSource: Boolean + get() = true + override val annotations: Collection get() = element.annotationMirrors.map { SymbolBasedAnnotation(it, javac) } diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedValueParameter.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedValueParameter.kt index 58acf2af8bd..54001590d0a 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedValueParameter.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/symbols/SymbolBasedValueParameter.kt @@ -43,7 +43,10 @@ class SymbolBasedValueParameter( override val name: Name get() = Name.identifier(elementName) + override val isFromSource: Boolean + get() = true + override val type: JavaType get() = SymbolBasedType.create(element.asType(), javac) -} \ No newline at end of file +} diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedClass.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedClass.kt index cfb50104589..de034c743aa 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedClass.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedClass.kt @@ -40,6 +40,9 @@ class TreeBasedClass( override val outerClass: JavaClass? ) : TreeBasedElement(tree, compilationUnit, javac), JavaClassWithClassId { + override val isFromSource: Boolean + get() = true + override val name: Name get() = Name.identifier(tree.simpleName.toString()) diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedMember.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedMember.kt index 871fb23e13b..168b5df6a80 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedMember.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedMember.kt @@ -30,6 +30,9 @@ abstract class TreeBasedMember( javac: JavacWrapper ) : TreeBasedElement(tree, compilationUnit, javac), JavaMember { + override val isFromSource: Boolean + get() = true + override val isDeprecatedInJavaDoc: Boolean get() = javac.isDeprecatedInJavaDoc(tree, compilationUnit) @@ -39,6 +42,6 @@ abstract class TreeBasedMember( override fun findAnnotation(fqName: FqName) = annotations .filter { it.annotation.annotationType.toString().endsWith(fqName.shortName().asString()) } - .find { it.classId?.asSingleFqName() == fqName } + .find { it.classId.asSingleFqName() == fqName } -} \ No newline at end of file +} diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedTypeParameter.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedTypeParameter.kt index 354771fb09e..cda03da0374 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedTypeParameter.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedTypeParameter.kt @@ -33,6 +33,9 @@ class TreeBasedTypeParameter( private val containingElement: JavaElement ) : TreeBasedElement(tree, compilationUnit, javac), JavaTypeParameter { + override val isFromSource: Boolean + get() = true + override val name: Name get() = Name.identifier(tree.name.toString()) @@ -62,4 +65,4 @@ class TreeBasedTypeParameter( return result } -} \ No newline at end of file +} diff --git a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedValueParameter.kt b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedValueParameter.kt index d68c7bc1a65..c0f44e28085 100644 --- a/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedValueParameter.kt +++ b/compiler/javac-wrapper/src/org/jetbrains/kotlin/javac/wrappers/trees/TreeBasedValueParameter.kt @@ -40,7 +40,7 @@ class TreeBasedValueParameter( override fun findAnnotation(fqName: FqName) = annotations .filter { it.annotation.annotationType.toString().endsWith(fqName.shortName().asString()) } - .find { it.classId?.asSingleFqName() == fqName } + .find { it.classId.asSingleFqName() == fqName } override val isDeprecatedInJavaDoc: Boolean get() = javac.isDeprecatedInJavaDoc(tree, compilationUnit) @@ -48,9 +48,12 @@ class TreeBasedValueParameter( override val name: Name get() = Name.identifier(tree.name.toString()) + override val isFromSource: Boolean + get() = true + override val type: JavaType get() = TreeBasedType.create(tree.getType(), compilationUnit, javac, annotations, containingElement) override val isVararg: Boolean get() = tree.modifiers.flags and Flags.VARARGS != 0L -} \ No newline at end of file +} diff --git a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassifierImpl.java b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassifierImpl.java index fca259a6bec..53a13c06626 100644 --- a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassifierImpl.java +++ b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaClassifierImpl.java @@ -41,6 +41,11 @@ public abstract class JavaClassifierImpl extends JavaEleme } } + @Override + public final boolean isFromSource() { + return true; + } + @NotNull @Override public Collection getAnnotations() { diff --git a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaMemberImpl.java b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaMemberImpl.java index 250485886a1..5b1f96e6f48 100644 --- a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaMemberImpl.java +++ b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaMemberImpl.java @@ -51,6 +51,11 @@ public abstract class JavaMemberImpl extends JavaElementI return Name.identifier(name); } + @Override + public final boolean isFromSource() { + return true; + } + @NotNull @Override public JavaClass getContainingClass() { diff --git a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaValueParameterImpl.java b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaValueParameterImpl.java index cca18130e04..c34f469899d 100644 --- a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaValueParameterImpl.java +++ b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/JavaValueParameterImpl.java @@ -58,6 +58,11 @@ public class JavaValueParameterImpl extends JavaElementImpl return false; } + @Override + public boolean isFromSource() { + return true; + } + @NotNull @Override public Visibility getVisibility() { diff --git a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/BinaryJavaClass.kt b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/BinaryJavaClass.kt index af5f21e3a23..285c9f67335 100644 --- a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/BinaryJavaClass.kt +++ b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/BinaryJavaClass.kt @@ -45,6 +45,8 @@ class BinaryJavaClass( override lateinit var typeParameters: List override lateinit var supertypes: List + override val isFromSource: Boolean get() = false + override val methods = arrayListOf() override val fields = arrayListOf() override val constructors = arrayListOf() diff --git a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/Methods.kt b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/Methods.kt index e3c5264d896..d69f1e6b91a 100644 --- a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/Methods.kt +++ b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/Methods.kt @@ -37,6 +37,7 @@ abstract class BinaryJavaMethodBase( ) : JavaMember, BinaryJavaModifierListOwner, MutableJavaAnnotationOwner { override val annotations: MutableCollection = SmartList() override val annotationsByFqName by buildLazyValueForMap() + override val isFromSource: Boolean get() = false companion object { private class MethodInfo( diff --git a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/Other.kt b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/Other.kt index 111ac9ac6b2..23f23727bd8 100644 --- a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/Other.kt +++ b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/classFiles/Other.kt @@ -33,6 +33,7 @@ class BinaryJavaField( ) : JavaField, BinaryJavaModifierListOwner, MutableJavaAnnotationOwner { override val annotations: MutableCollection = SmartList() override val annotationsByFqName by buildLazyValueForMap() + override val isFromSource: Boolean get() = false override val hasConstantNotNullInitializer: Boolean get() = initializerValue != null @@ -46,6 +47,8 @@ class BinaryJavaTypeParameter( ) : JavaTypeParameter, ListBasedJavaAnnotationOwner, MutableJavaAnnotationOwner { override val annotations: MutableCollection = SmartList() override val isDeprecatedInJavaDoc = false + override val isFromSource: Boolean + get() = false } class BinaryJavaValueParameter( @@ -57,6 +60,9 @@ class BinaryJavaValueParameter( override var name: Name? = null + override val isFromSource: Boolean + get() = false + internal fun updateName(newName: Name) { assert(name == null) { "Parameter can't have two names: $name and $newName" } name = newName @@ -69,6 +75,8 @@ class BinaryJavaRecordComponent( override val type: JavaType, override val isVararg: Boolean, ) : JavaRecordComponent, BinaryJavaModifierListOwner { + override val isFromSource: Boolean get() = false + override val annotations: Collection get() = emptyList() diff --git a/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/structure/javaElements.kt b/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/structure/javaElements.kt index c32b9e35062..5b308973a26 100644 --- a/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/structure/javaElements.kt +++ b/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/structure/javaElements.kt @@ -25,6 +25,7 @@ interface JavaElement interface JavaNamedElement : JavaElement { val name: Name + val isFromSource: Boolean } interface JavaAnnotationOwner : JavaElement { @@ -145,6 +146,7 @@ interface JavaValueParameter : JavaAnnotationOwner { val name: Name? val type: JavaType val isVararg: Boolean + val isFromSource: Boolean } interface JavaRecordComponent : JavaMember { diff --git a/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaClass.kt b/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaClass.kt index ebd606a89c6..4cf9eaa6326 100644 --- a/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaClass.kt +++ b/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaClass.kt @@ -33,6 +33,8 @@ class ReflectJavaClass( override val modifiers: Int get() = klass.modifiers + override val isFromSource: Boolean get() = false + override val innerClassNames: List get() = klass.declaredClasses .asSequence() diff --git a/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaMember.kt b/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaMember.kt index 2322239c704..12bf818bec3 100644 --- a/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaMember.kt +++ b/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaMember.kt @@ -28,6 +28,8 @@ import java.lang.reflect.Type abstract class ReflectJavaMember : ReflectJavaElement(), ReflectJavaAnnotationOwner, ReflectJavaModifierListOwner, JavaMember { abstract val member: Member + final override val isFromSource: Boolean get() = false + override val element: AnnotatedElement get() = member as AnnotatedElement override val modifiers: Int get() = member.modifiers diff --git a/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaTypeParameter.kt b/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaTypeParameter.kt index 56a9b9cb4d7..b2839c811c6 100644 --- a/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaTypeParameter.kt +++ b/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaTypeParameter.kt @@ -31,6 +31,8 @@ class ReflectJavaTypeParameter( return bounds } + override val isFromSource: Boolean get() = false + @Suppress("USELESS_CAST") override val element: AnnotatedElement? // TypeVariable is AnnotatedElement only in JDK8 diff --git a/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaValueParameter.kt b/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaValueParameter.kt index ab86031e83e..96d9ebac7ae 100644 --- a/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaValueParameter.kt +++ b/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/structure/ReflectJavaValueParameter.kt @@ -38,5 +38,8 @@ class ReflectJavaValueParameter( override val name: Name? get() = reflectName?.let(Name::guessByFirstCharacter) + override val isFromSource: Boolean + get() = false + override fun toString() = this::class.java.name + ": " + (if (isVararg) "vararg " else "") + name + ": " + type }