[FIR] Add two kinds of Java origin to distinguish source and library declarations
This commit is contained in:
committed by
teamcity
parent
26df9d74e8
commit
fb57e1ecd5
+2
-2
@@ -39,7 +39,7 @@ object FirInterfaceDefaultMethodCallChecker : FirQualifiedAccessExpressionChecke
|
||||
var typeSymbol: FirRegularClassSymbol? = null
|
||||
if (!supportsDefaults && symbol.isStatic) {
|
||||
typeSymbol = getTypeSymbol() ?: return
|
||||
if (typeSymbol.isInterface && typeSymbol.origin == FirDeclarationOrigin.Java) {
|
||||
if (typeSymbol.isInterface && typeSymbol.origin is FirDeclarationOrigin.Java) {
|
||||
reporter.reportOn(expression.source, FirJvmErrors.INTERFACE_STATIC_METHOD_CALL_FROM_JAVA6_TARGET, context)
|
||||
}
|
||||
}
|
||||
@@ -55,7 +55,7 @@ object FirInterfaceDefaultMethodCallChecker : FirQualifiedAccessExpressionChecke
|
||||
if (typeSymbol == null) typeSymbol = getTypeSymbol() ?: return
|
||||
|
||||
val jvmDefaultMode = context.session.jvmDefaultModeState
|
||||
if (typeSymbol.isInterface && (typeSymbol.origin == FirDeclarationOrigin.Java || symbol.isCompiledToJvmDefault(jvmDefaultMode))) {
|
||||
if (typeSymbol.isInterface && (typeSymbol.origin is FirDeclarationOrigin.Java || symbol.isCompiledToJvmDefault(jvmDefaultMode))) {
|
||||
if (containingDeclaration.isInterface) {
|
||||
val containingMember = context.findContainingMember()?.symbol
|
||||
if (containingMember?.isCompiledToJvmDefault(jvmDefaultMode) == false) {
|
||||
|
||||
+1
-1
@@ -35,7 +35,7 @@ object FirJavaAnnotationsChecker : FirAnnotationChecker() {
|
||||
override fun check(expression: FirAnnotation, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||
if (context.containingDeclarations.lastOrNull()?.source?.kind != KtRealSourceElementKind) return
|
||||
val callableSymbol = expression.annotationTypeRef.toRegularClassSymbol(context.session)
|
||||
if (callableSymbol?.origin != FirDeclarationOrigin.Java) return
|
||||
if (callableSymbol?.origin !is FirDeclarationOrigin.Java) return
|
||||
|
||||
val lookupTag = expression.annotationTypeRef.coneTypeSafe<ConeClassLikeType>()?.lookupTag ?: return
|
||||
javaToKotlinNameMap[lookupTag.classId]?.let { betterName ->
|
||||
|
||||
+1
-1
@@ -127,7 +127,7 @@ fun FirClassLikeSymbol<*>.containsRepeatableAnnotation(session: FirSession): Boo
|
||||
getAnnotationByClassId(StandardClassIds.Annotations.JvmRepeatable) != null
|
||||
) {
|
||||
return session.languageVersionSettings.supportsFeature(LanguageFeature.RepeatableAnnotations) ||
|
||||
getAnnotationRetention() == AnnotationRetention.SOURCE && origin == FirDeclarationOrigin.Java
|
||||
getAnnotationRetention() == AnnotationRetention.SOURCE && origin is FirDeclarationOrigin.Java
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ object FirSealedSupertypeChecker : FirClassChecker() {
|
||||
val superClass = context.session.symbolProvider.getClassLikeSymbolByClassId(superClassId) as? FirRegularClassSymbol ?: continue
|
||||
|
||||
if (!superClass.isSealed) continue
|
||||
if (superClass.origin == FirDeclarationOrigin.Java) {
|
||||
if (superClass.origin is FirDeclarationOrigin.Java) {
|
||||
reporter.reportOn(superTypeRef.source, FirErrors.CLASS_INHERITS_JAVA_SEALED_CLASS, context)
|
||||
continue
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user