[FE] Add flag to java model to distinguish source java classes from binaries

This commit is contained in:
Dmitriy Novozhilov
2022-05-26 12:17:20 +03:00
committed by teamcity
parent 09ff6303cc
commit 26df9d74e8
19 changed files with 68 additions and 6 deletions
@@ -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? =
@@ -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) }
@@ -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) }
@@ -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())
@@ -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 }
}
}
@@ -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
}
}
}
@@ -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
}
}