[FIR] Add initialization of calleeReference for FirAnnotationCall
This commit is contained in:
committed by
Mikhail Glukhikh
parent
614291b2cc
commit
644e9843f9
@@ -11,9 +11,7 @@ import org.jetbrains.kotlin.descriptors.Modality
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder
|
||||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
|
||||||
import org.jetbrains.kotlin.fir.diagnostics.*
|
import org.jetbrains.kotlin.fir.diagnostics.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.*
|
import org.jetbrains.kotlin.fir.expressions.builder.*
|
||||||
@@ -21,6 +19,7 @@ import org.jetbrains.kotlin.fir.java.declarations.buildJavaValueParameter
|
|||||||
import org.jetbrains.kotlin.fir.java.enhancement.readOnlyToMutable
|
import org.jetbrains.kotlin.fir.java.enhancement.readOnlyToMutable
|
||||||
import org.jetbrains.kotlin.fir.references.builder.buildErrorNamedReference
|
import org.jetbrains.kotlin.fir.references.builder.buildErrorNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
||||||
|
import org.jetbrains.kotlin.fir.references.impl.FirReferencePlaceholderForResolvedAnnotations
|
||||||
import org.jetbrains.kotlin.fir.resolve.defaultType
|
import org.jetbrains.kotlin.fir.resolve.defaultType
|
||||||
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.getClassDeclaredCallableSymbols
|
import org.jetbrains.kotlin.fir.resolve.providers.getClassDeclaredCallableSymbols
|
||||||
@@ -347,6 +346,7 @@ internal fun JavaAnnotation.toFirAnnotationCall(
|
|||||||
arguments += argument.toFirExpression(session, javaTypeParameterStack)
|
arguments += argument.toFirExpression(session, javaTypeParameterStack)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
calleeReference = FirReferencePlaceholderForResolvedAnnotations
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
@@ -77,6 +77,7 @@ class JvmBinaryAnnotationDeserializer(
|
|||||||
annotationTypeRef = it.annotationTypeRef
|
annotationTypeRef = it.annotationTypeRef
|
||||||
argumentList = it.argumentList
|
argumentList = it.argumentList
|
||||||
useSiteTarget = AnnotationUseSiteTarget.PROPERTY
|
useSiteTarget = AnnotationUseSiteTarget.PROPERTY
|
||||||
|
calleeReference = it.calleeReference
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -99,6 +100,7 @@ class JvmBinaryAnnotationDeserializer(
|
|||||||
annotationTypeRef = it.annotationTypeRef
|
annotationTypeRef = it.annotationTypeRef
|
||||||
argumentList = it.argumentList
|
argumentList = it.argumentList
|
||||||
useSiteTarget = AnnotationUseSiteTarget.FIELD
|
useSiteTarget = AnnotationUseSiteTarget.FIELD
|
||||||
|
calleeReference = it.calleeReference
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -118,6 +120,7 @@ class JvmBinaryAnnotationDeserializer(
|
|||||||
annotationTypeRef = it.annotationTypeRef
|
annotationTypeRef = it.annotationTypeRef
|
||||||
argumentList = it.argumentList
|
argumentList = it.argumentList
|
||||||
useSiteTarget = AnnotationUseSiteTarget.PROPERTY_DELEGATE_FIELD
|
useSiteTarget = AnnotationUseSiteTarget.PROPERTY_DELEGATE_FIELD
|
||||||
|
calleeReference = it.calleeReference
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.fir.java.createConstant
|
|||||||
import org.jetbrains.kotlin.fir.java.topLevelName
|
import org.jetbrains.kotlin.fir.java.topLevelName
|
||||||
import org.jetbrains.kotlin.fir.references.builder.buildErrorNamedReference
|
import org.jetbrains.kotlin.fir.references.builder.buildErrorNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
||||||
|
import org.jetbrains.kotlin.fir.references.impl.FirReferencePlaceholderForResolvedAnnotations
|
||||||
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.AbstractFirSymbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.AbstractFirSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.getClassDeclaredCallableSymbols
|
import org.jetbrains.kotlin.fir.resolve.providers.getClassDeclaredCallableSymbols
|
||||||
@@ -283,6 +284,7 @@ class KotlinDeserializedJvmSymbolsProvider(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
calleeReference = FirReferencePlaceholderForResolvedAnnotations
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-1
@@ -38,7 +38,8 @@ import org.jetbrains.kotlin.fir.lightTree.fir.modifier.TypeParameterModifier
|
|||||||
import org.jetbrains.kotlin.fir.lightTree.fir.modifier.TypeProjectionModifier
|
import org.jetbrains.kotlin.fir.lightTree.fir.modifier.TypeProjectionModifier
|
||||||
import org.jetbrains.kotlin.fir.references.builder.buildImplicitThisReference
|
import org.jetbrains.kotlin.fir.references.builder.buildImplicitThisReference
|
||||||
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.builder.buildSimpleNamedReference
|
import org.jetbrains.kotlin.fir.references.impl.FirReferenceForUnresolvedAnnotations
|
||||||
|
import org.jetbrains.kotlin.fir.references.impl.FirReferencePlaceholderForResolvedAnnotations
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
|
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
import org.jetbrains.kotlin.fir.symbols.CallableId
|
||||||
@@ -324,6 +325,7 @@ class DeclarationsConverter(
|
|||||||
source = unescapedAnnotation.toFirSourceElement()
|
source = unescapedAnnotation.toFirSourceElement()
|
||||||
useSiteTarget = annotationUseSiteTarget ?: defaultAnnotationUseSiteTarget
|
useSiteTarget = annotationUseSiteTarget ?: defaultAnnotationUseSiteTarget
|
||||||
annotationTypeRef = constructorCalleePair.first
|
annotationTypeRef = constructorCalleePair.first
|
||||||
|
calleeReference = FirReferenceForUnresolvedAnnotations
|
||||||
extractArgumentsFrom(constructorCalleePair.second, stubMode)
|
extractArgumentsFrom(constructorCalleePair.second, stubMode)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1744,5 +1746,6 @@ class DeclarationsConverter(
|
|||||||
false
|
false
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
calleeReference = FirReferencePlaceholderForResolvedAnnotations
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirModifiableQualifiedAccess
|
|||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirSingleExpressionBlock
|
import org.jetbrains.kotlin.fir.expressions.impl.FirSingleExpressionBlock
|
||||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.builder.*
|
import org.jetbrains.kotlin.fir.references.builder.*
|
||||||
|
import org.jetbrains.kotlin.fir.references.impl.FirReferenceForUnresolvedAnnotations
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
|
import org.jetbrains.kotlin.fir.scopes.FirScopeProvider
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.CallableId
|
import org.jetbrains.kotlin.fir.symbols.CallableId
|
||||||
@@ -1287,6 +1288,7 @@ class RawFirBuilder(
|
|||||||
useSiteTarget = annotationEntry.useSiteTarget?.getAnnotationUseSiteTarget()
|
useSiteTarget = annotationEntry.useSiteTarget?.getAnnotationUseSiteTarget()
|
||||||
annotationTypeRef = annotationEntry.typeReference.toFirOrErrorType()
|
annotationTypeRef = annotationEntry.typeReference.toFirOrErrorType()
|
||||||
annotationEntry.extractArgumentsTo(this)
|
annotationEntry.extractArgumentsTo(this)
|
||||||
|
calleeReference = FirReferenceForUnresolvedAnnotations
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1937,5 +1939,9 @@ class RawFirBuilder(
|
|||||||
isNullable = false
|
isNullable = false
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
// TODO: actually we know where to resolve, but we don't have any symbol providers at this point
|
||||||
|
calleeReference = buildSimpleNamedReference {
|
||||||
|
name = Name.identifier("ExtensionFunctionType")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.fir.expressions.*
|
|||||||
import org.jetbrains.kotlin.fir.expressions.builder.*
|
import org.jetbrains.kotlin.fir.expressions.builder.*
|
||||||
import org.jetbrains.kotlin.fir.references.builder.buildErrorNamedReference
|
import org.jetbrains.kotlin.fir.references.builder.buildErrorNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
|
||||||
|
import org.jetbrains.kotlin.fir.references.impl.FirReferencePlaceholderForResolvedAnnotations
|
||||||
import org.jetbrains.kotlin.fir.resolve.constructType
|
import org.jetbrains.kotlin.fir.resolve.constructType
|
||||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedSymbolError
|
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedSymbolError
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
@@ -201,6 +202,7 @@ abstract class AbstractAnnotationDeserializer(
|
|||||||
useSiteTarget?.let {
|
useSiteTarget?.let {
|
||||||
this.useSiteTarget = it
|
this.useSiteTarget = it
|
||||||
}
|
}
|
||||||
|
calleeReference = FirReferencePlaceholderForResolvedAnnotations
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+22
@@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.fir.references.impl
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
|
import org.jetbrains.kotlin.fir.references.FirReference
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
|
object FirReferenceForUnresolvedAnnotations : FirReference() {
|
||||||
|
override val source: FirSourceElement?
|
||||||
|
get() = null
|
||||||
|
|
||||||
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||||
|
|
||||||
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirReference {
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
}
|
||||||
+22
@@ -0,0 +1,22 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.fir.references.impl
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
|
import org.jetbrains.kotlin.fir.references.FirReference
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.FirTransformer
|
||||||
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
|
|
||||||
|
object FirReferencePlaceholderForResolvedAnnotations : FirReference() {
|
||||||
|
override val source: FirSourceElement?
|
||||||
|
get() = null
|
||||||
|
|
||||||
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||||
|
|
||||||
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirReference {
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
}
|
||||||
+2
@@ -18,6 +18,7 @@ import org.jetbrains.kotlin.fir.extensions.FirDeclarationGenerationExtension
|
|||||||
import org.jetbrains.kotlin.fir.extensions.predicate.DeclarationPredicate
|
import org.jetbrains.kotlin.fir.extensions.predicate.DeclarationPredicate
|
||||||
import org.jetbrains.kotlin.fir.extensions.predicate.has
|
import org.jetbrains.kotlin.fir.extensions.predicate.has
|
||||||
import org.jetbrains.kotlin.fir.plugin.fqn
|
import org.jetbrains.kotlin.fir.plugin.fqn
|
||||||
|
import org.jetbrains.kotlin.fir.references.impl.FirReferencePlaceholderForResolvedAnnotations
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.GeneratedClass
|
import org.jetbrains.kotlin.fir.resolve.transformers.plugin.GeneratedClass
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
|
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||||
@@ -53,6 +54,7 @@ class AllOpenRecursiveNestedClassGenerator(session: FirSession) : FirDeclaration
|
|||||||
isNullable = false
|
isNullable = false
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
calleeReference = FirReferencePlaceholderForResolvedAnnotations
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return listOf(GeneratedDeclaration(newClass, owner))
|
return listOf(GeneratedDeclaration(newClass, owner))
|
||||||
|
|||||||
Reference in New Issue
Block a user