[FIR] make use of FirFromMissingDependenciesNamedReference
during java annotations mapping in IDE, kotlin classes are not available, thus FirFromMissingDependenciesNamedReference is created Corresponding test in IJ repo: K2HighlightingMetaInfoTestGenerated.Uncategorized#testJavaTypes
This commit is contained in:
+9
-1
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors
|
|||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirPrimaryConstructor
|
import org.jetbrains.kotlin.fir.declarations.impl.FirPrimaryConstructor
|
||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
|
import org.jetbrains.kotlin.fir.references.FirFromMissingDependenciesNamedReference
|
||||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
@@ -76,7 +77,14 @@ fun FirClassLikeSymbol<*>.getAllowedAnnotationTargets(session: FirSession): Set<
|
|||||||
|
|
||||||
return arguments.mapNotNullTo(mutableSetOf()) { argument ->
|
return arguments.mapNotNullTo(mutableSetOf()) { argument ->
|
||||||
val targetExpression = argument as? FirQualifiedAccessExpression
|
val targetExpression = argument as? FirQualifiedAccessExpression
|
||||||
val targetName = targetExpression?.calleeReference?.resolved?.name?.asString() ?: return@mapNotNullTo null
|
val calleeReference = targetExpression?.calleeReference
|
||||||
|
val targetName =
|
||||||
|
calleeReference?.resolved?.name?.asString()
|
||||||
|
//for java annotations mappings: if java annotation is found in sdk and no kotlin dependency there is provided
|
||||||
|
//works fine with `FirBuiltinSymbolProvider`, because it also returns classes from stdlib even if library is not accessible
|
||||||
|
//but `JvmStubBasedFirDeserializedSymbolProvider` which works in IDE over stubs, misses classes
|
||||||
|
?: (calleeReference as? FirFromMissingDependenciesNamedReference)?.name?.asString()
|
||||||
|
?: return@mapNotNullTo null
|
||||||
KotlinTarget.values().firstOrNull { target -> target.name == targetName }
|
KotlinTarget.values().firstOrNull { target -> target.name == targetName }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user