[FE] Add flag to java model to distinguish source java classes from binaries
This commit is contained in:
committed by
teamcity
parent
09ff6303cc
commit
26df9d74e8
+4
@@ -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? =
|
||||
|
||||
+3
@@ -28,6 +28,9 @@ abstract class SymbolBasedClassifier<out T : Element>(
|
||||
javac: JavacWrapper
|
||||
) : SymbolBasedElement<T>(element, javac), JavaClassifier, JavaAnnotationOwner {
|
||||
|
||||
override val isFromSource: Boolean
|
||||
get() = true
|
||||
|
||||
override val annotations: Collection<JavaAnnotation>
|
||||
get() = element.annotationMirrors.map { SymbolBasedAnnotation(it, javac) }
|
||||
|
||||
|
||||
+3
@@ -31,6 +31,9 @@ abstract class SymbolBasedMember<out T : Element>(
|
||||
javac: JavacWrapper
|
||||
) : SymbolBasedElement<T>(element, javac), JavaMember {
|
||||
|
||||
override val isFromSource: Boolean
|
||||
get() = true
|
||||
|
||||
override val annotations: Collection<JavaAnnotation>
|
||||
get() = element.annotationMirrors.map { SymbolBasedAnnotation(it, javac) }
|
||||
|
||||
|
||||
+4
-1
@@ -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)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,6 +40,9 @@ class TreeBasedClass(
|
||||
override val outerClass: JavaClass?
|
||||
) : TreeBasedElement<JCTree.JCClassDecl>(tree, compilationUnit, javac), JavaClassWithClassId {
|
||||
|
||||
override val isFromSource: Boolean
|
||||
get() = true
|
||||
|
||||
override val name: Name
|
||||
get() = Name.identifier(tree.simpleName.toString())
|
||||
|
||||
|
||||
+5
-2
@@ -30,6 +30,9 @@ abstract class TreeBasedMember<out T : JCTree>(
|
||||
javac: JavacWrapper
|
||||
) : TreeBasedElement<T>(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<out T : JCTree>(
|
||||
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 }
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+4
-1
@@ -33,6 +33,9 @@ class TreeBasedTypeParameter(
|
||||
private val containingElement: JavaElement
|
||||
) : TreeBasedElement<JCTree.JCTypeParameter>(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
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+5
-2
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
+5
@@ -41,6 +41,11 @@ public abstract class JavaClassifierImpl<Psi extends PsiClass> extends JavaEleme
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public final boolean isFromSource() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Collection<JavaAnnotation> getAnnotations() {
|
||||
|
||||
+5
@@ -51,6 +51,11 @@ public abstract class JavaMemberImpl<Psi extends PsiMember> extends JavaElementI
|
||||
return Name.identifier(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
public final boolean isFromSource() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public JavaClass getContainingClass() {
|
||||
|
||||
+5
@@ -58,6 +58,11 @@ public class JavaValueParameterImpl extends JavaElementImpl<PsiParameter>
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFromSource() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Visibility getVisibility() {
|
||||
|
||||
+2
@@ -45,6 +45,8 @@ class BinaryJavaClass(
|
||||
override lateinit var typeParameters: List<JavaTypeParameter>
|
||||
override lateinit var supertypes: List<JavaClassifierType>
|
||||
|
||||
override val isFromSource: Boolean get() = false
|
||||
|
||||
override val methods = arrayListOf<JavaMethod>()
|
||||
override val fields = arrayListOf<JavaField>()
|
||||
override val constructors = arrayListOf<JavaConstructor>()
|
||||
|
||||
+1
@@ -37,6 +37,7 @@ abstract class BinaryJavaMethodBase(
|
||||
) : JavaMember, BinaryJavaModifierListOwner, MutableJavaAnnotationOwner {
|
||||
override val annotations: MutableCollection<JavaAnnotation> = SmartList()
|
||||
override val annotationsByFqName by buildLazyValueForMap()
|
||||
override val isFromSource: Boolean get() = false
|
||||
|
||||
companion object {
|
||||
private class MethodInfo(
|
||||
|
||||
+8
@@ -33,6 +33,7 @@ class BinaryJavaField(
|
||||
) : JavaField, BinaryJavaModifierListOwner, MutableJavaAnnotationOwner {
|
||||
override val annotations: MutableCollection<JavaAnnotation> = 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<JavaAnnotation> = 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<JavaAnnotation>
|
||||
get() = emptyList()
|
||||
|
||||
|
||||
@@ -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 {
|
||||
|
||||
+2
@@ -33,6 +33,8 @@ class ReflectJavaClass(
|
||||
|
||||
override val modifiers: Int get() = klass.modifiers
|
||||
|
||||
override val isFromSource: Boolean get() = false
|
||||
|
||||
override val innerClassNames: List<Name>
|
||||
get() = klass.declaredClasses
|
||||
.asSequence()
|
||||
|
||||
+2
@@ -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
|
||||
|
||||
+2
@@ -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
|
||||
|
||||
+3
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user