[FIR] Squash AbstractFirBasedSymbol with FirBasedSymbol
This commit is contained in:
+9
-9
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.PrivateForInline
|
|||||||
import org.jetbrains.kotlin.fir.checkers.generator.diagnostics.model.*
|
import org.jetbrains.kotlin.fir.checkers.generator.diagnostics.model.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
import org.jetbrains.kotlin.lexer.KtKeywordToken
|
import org.jetbrains.kotlin.lexer.KtKeywordToken
|
||||||
@@ -405,13 +405,13 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
|
|||||||
parameter<Collection<Symbol>>("candidates")
|
parameter<Collection<Symbol>>("candidates")
|
||||||
}
|
}
|
||||||
val ITERATOR_AMBIGUITY by error<PsiElement>(PositioningStrategy.REFERENCE_BY_QUALIFIED) {
|
val ITERATOR_AMBIGUITY by error<PsiElement>(PositioningStrategy.REFERENCE_BY_QUALIFIED) {
|
||||||
parameter<Collection<AbstractFirBasedSymbol<*>>>("candidates")
|
parameter<Collection<FirBasedSymbol<*>>>("candidates")
|
||||||
}
|
}
|
||||||
val HAS_NEXT_FUNCTION_AMBIGUITY by error<PsiElement>(PositioningStrategy.REFERENCE_BY_QUALIFIED) {
|
val HAS_NEXT_FUNCTION_AMBIGUITY by error<PsiElement>(PositioningStrategy.REFERENCE_BY_QUALIFIED) {
|
||||||
parameter<Collection<AbstractFirBasedSymbol<*>>>("candidates")
|
parameter<Collection<FirBasedSymbol<*>>>("candidates")
|
||||||
}
|
}
|
||||||
val NEXT_AMBIGUITY by error<PsiElement>(PositioningStrategy.REFERENCE_BY_QUALIFIED) {
|
val NEXT_AMBIGUITY by error<PsiElement>(PositioningStrategy.REFERENCE_BY_QUALIFIED) {
|
||||||
parameter<Collection<AbstractFirBasedSymbol<*>>>("candidates")
|
parameter<Collection<FirBasedSymbol<*>>>("candidates")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -893,10 +893,10 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
|
|||||||
val HAS_NEXT_MISSING by error<KtExpression>()
|
val HAS_NEXT_MISSING by error<KtExpression>()
|
||||||
val NEXT_MISSING by error<KtExpression>()
|
val NEXT_MISSING by error<KtExpression>()
|
||||||
val HAS_NEXT_FUNCTION_NONE_APPLICABLE by error<KtExpression> {
|
val HAS_NEXT_FUNCTION_NONE_APPLICABLE by error<KtExpression> {
|
||||||
parameter<Collection<AbstractFirBasedSymbol<*>>>("candidates")
|
parameter<Collection<FirBasedSymbol<*>>>("candidates")
|
||||||
}
|
}
|
||||||
val NEXT_NONE_APPLICABLE by error<KtExpression> {
|
val NEXT_NONE_APPLICABLE by error<KtExpression> {
|
||||||
parameter<Collection<AbstractFirBasedSymbol<*>>>("candidates")
|
parameter<Collection<FirBasedSymbol<*>>>("candidates")
|
||||||
}
|
}
|
||||||
val DELEGATE_SPECIAL_FUNCTION_MISSING by error<KtExpression> {
|
val DELEGATE_SPECIAL_FUNCTION_MISSING by error<KtExpression> {
|
||||||
parameter<String>("expectedFunctionSignature")
|
parameter<String>("expectedFunctionSignature")
|
||||||
@@ -905,11 +905,11 @@ object DIAGNOSTICS_LIST : DiagnosticList("FirErrors") {
|
|||||||
}
|
}
|
||||||
val DELEGATE_SPECIAL_FUNCTION_AMBIGUITY by error<KtExpression> {
|
val DELEGATE_SPECIAL_FUNCTION_AMBIGUITY by error<KtExpression> {
|
||||||
parameter<String>("expectedFunctionSignature")
|
parameter<String>("expectedFunctionSignature")
|
||||||
parameter<Collection<AbstractFirBasedSymbol<*>>>("candidates")
|
parameter<Collection<FirBasedSymbol<*>>>("candidates")
|
||||||
}
|
}
|
||||||
val DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE by error<KtExpression> {
|
val DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE by error<KtExpression> {
|
||||||
parameter<String>("expectedFunctionSignature")
|
parameter<String>("expectedFunctionSignature")
|
||||||
parameter<Collection<AbstractFirBasedSymbol<*>>>("candidates")
|
parameter<Collection<FirBasedSymbol<*>>>("candidates")
|
||||||
}
|
}
|
||||||
val DELEGATE_SPECIAL_FUNCTION_RETURN_TYPE_MISMATCH by error<KtExpression> {
|
val DELEGATE_SPECIAL_FUNCTION_RETURN_TYPE_MISMATCH by error<KtExpression> {
|
||||||
parameter<String>("delegateFunction")
|
parameter<String>("delegateFunction")
|
||||||
@@ -1048,4 +1048,4 @@ private inline fun <reified P : PsiElement> AbstractDiagnosticGroup.exposedVisib
|
|||||||
return warning<P>(positioningStrategy, exposedVisibilityDiagnosticInit)
|
return warning<P>(positioningStrategy, exposedVisibilityDiagnosticInit)
|
||||||
}
|
}
|
||||||
|
|
||||||
typealias Symbol = AbstractFirBasedSymbol<*>
|
typealias Symbol = FirBasedSymbol<*>
|
||||||
|
|||||||
+27
-27
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
import org.jetbrains.kotlin.fir.declarations.FirSimpleFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||||
@@ -108,7 +108,7 @@ object FirErrors {
|
|||||||
val VAL_OR_VAR_ON_SECONDARY_CONSTRUCTOR_PARAMETER by warning1<KtParameter, KtKeywordToken>(SourceElementPositioningStrategies.VAL_OR_VAR_NODE)
|
val VAL_OR_VAR_ON_SECONDARY_CONSTRUCTOR_PARAMETER by warning1<KtParameter, KtKeywordToken>(SourceElementPositioningStrategies.VAL_OR_VAR_NODE)
|
||||||
|
|
||||||
// Unresolved
|
// Unresolved
|
||||||
val INVISIBLE_REFERENCE by error1<PsiElement, AbstractFirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
val INVISIBLE_REFERENCE by error1<PsiElement, FirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||||
val UNRESOLVED_REFERENCE by error1<PsiElement, String>(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED)
|
val UNRESOLVED_REFERENCE by error1<PsiElement, String>(SourceElementPositioningStrategies.REFERENCED_NAME_BY_QUALIFIED)
|
||||||
val UNRESOLVED_LABEL by error0<PsiElement>()
|
val UNRESOLVED_LABEL by error0<PsiElement>()
|
||||||
val DESERIALIZATION_ERROR by error0<PsiElement>()
|
val DESERIALIZATION_ERROR by error0<PsiElement>()
|
||||||
@@ -257,8 +257,8 @@ object FirErrors {
|
|||||||
val VALUE_CLASS_CANNOT_BE_CLONEABLE by error0<KtDeclaration>(SourceElementPositioningStrategies.INLINE_OR_VALUE_MODIFIER)
|
val VALUE_CLASS_CANNOT_BE_CLONEABLE by error0<KtDeclaration>(SourceElementPositioningStrategies.INLINE_OR_VALUE_MODIFIER)
|
||||||
|
|
||||||
// Applicability
|
// Applicability
|
||||||
val NONE_APPLICABLE by error1<PsiElement, Collection<AbstractFirBasedSymbol<*>>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
val NONE_APPLICABLE by error1<PsiElement, Collection<FirBasedSymbol<*>>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||||
val INAPPLICABLE_CANDIDATE by error1<PsiElement, AbstractFirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
val INAPPLICABLE_CANDIDATE by error1<PsiElement, FirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||||
val TYPE_MISMATCH by error2<PsiElement, ConeKotlinType, ConeKotlinType>()
|
val TYPE_MISMATCH by error2<PsiElement, ConeKotlinType, ConeKotlinType>()
|
||||||
val THROWABLE_TYPE_MISMATCH by error1<PsiElement, ConeKotlinType>()
|
val THROWABLE_TYPE_MISMATCH by error1<PsiElement, ConeKotlinType>()
|
||||||
val CONDITION_TYPE_MISMATCH by error1<PsiElement, ConeKotlinType>()
|
val CONDITION_TYPE_MISMATCH by error1<PsiElement, ConeKotlinType>()
|
||||||
@@ -278,11 +278,11 @@ object FirErrors {
|
|||||||
val NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER by error1<KtElement, String>()
|
val NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER by error1<KtElement, String>()
|
||||||
|
|
||||||
// Ambiguity
|
// Ambiguity
|
||||||
val OVERLOAD_RESOLUTION_AMBIGUITY by error1<PsiElement, Collection<AbstractFirBasedSymbol<*>>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
val OVERLOAD_RESOLUTION_AMBIGUITY by error1<PsiElement, Collection<FirBasedSymbol<*>>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||||
val ASSIGN_OPERATOR_AMBIGUITY by error1<PsiElement, Collection<AbstractFirBasedSymbol<*>>>()
|
val ASSIGN_OPERATOR_AMBIGUITY by error1<PsiElement, Collection<FirBasedSymbol<*>>>()
|
||||||
val ITERATOR_AMBIGUITY by error1<PsiElement, Collection<AbstractFirBasedSymbol<*>>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
val ITERATOR_AMBIGUITY by error1<PsiElement, Collection<FirBasedSymbol<*>>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||||
val HAS_NEXT_FUNCTION_AMBIGUITY by error1<PsiElement, Collection<AbstractFirBasedSymbol<*>>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
val HAS_NEXT_FUNCTION_AMBIGUITY by error1<PsiElement, Collection<FirBasedSymbol<*>>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||||
val NEXT_AMBIGUITY by error1<PsiElement, Collection<AbstractFirBasedSymbol<*>>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
val NEXT_AMBIGUITY by error1<PsiElement, Collection<FirBasedSymbol<*>>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||||
|
|
||||||
// Types & type parameters
|
// Types & type parameters
|
||||||
val RECURSION_IN_IMPLICIT_TYPES by error0<PsiElement>()
|
val RECURSION_IN_IMPLICIT_TYPES by error0<PsiElement>()
|
||||||
@@ -360,8 +360,8 @@ object FirErrors {
|
|||||||
|
|
||||||
// Redeclarations
|
// Redeclarations
|
||||||
val MANY_COMPANION_OBJECTS by error0<KtObjectDeclaration>(SourceElementPositioningStrategies.COMPANION_OBJECT)
|
val MANY_COMPANION_OBJECTS by error0<KtObjectDeclaration>(SourceElementPositioningStrategies.COMPANION_OBJECT)
|
||||||
val CONFLICTING_OVERLOADS by error1<PsiElement, Collection<AbstractFirBasedSymbol<*>>>(SourceElementPositioningStrategies.DECLARATION_SIGNATURE_OR_DEFAULT)
|
val CONFLICTING_OVERLOADS by error1<PsiElement, Collection<FirBasedSymbol<*>>>(SourceElementPositioningStrategies.DECLARATION_SIGNATURE_OR_DEFAULT)
|
||||||
val REDECLARATION by error1<PsiElement, Collection<AbstractFirBasedSymbol<*>>>()
|
val REDECLARATION by error1<PsiElement, Collection<FirBasedSymbol<*>>>()
|
||||||
val METHOD_OF_ANY_IMPLEMENTED_IN_INTERFACE by error0<PsiElement>()
|
val METHOD_OF_ANY_IMPLEMENTED_IN_INTERFACE by error0<PsiElement>()
|
||||||
|
|
||||||
// Invalid local declarations
|
// Invalid local declarations
|
||||||
@@ -435,7 +435,7 @@ object FirErrors {
|
|||||||
// Destructuring declaration
|
// Destructuring declaration
|
||||||
val INITIALIZER_REQUIRED_FOR_DESTRUCTURING_DECLARATION by error0<KtDestructuringDeclaration>()
|
val INITIALIZER_REQUIRED_FOR_DESTRUCTURING_DECLARATION by error0<KtDestructuringDeclaration>()
|
||||||
val COMPONENT_FUNCTION_MISSING by error2<PsiElement, Name, ConeKotlinType>()
|
val COMPONENT_FUNCTION_MISSING by error2<PsiElement, Name, ConeKotlinType>()
|
||||||
val COMPONENT_FUNCTION_AMBIGUITY by error2<PsiElement, Name, Collection<AbstractFirBasedSymbol<*>>>()
|
val COMPONENT_FUNCTION_AMBIGUITY by error2<PsiElement, Name, Collection<FirBasedSymbol<*>>>()
|
||||||
val COMPONENT_FUNCTION_ON_NULLABLE by error1<KtExpression, Name>()
|
val COMPONENT_FUNCTION_ON_NULLABLE by error1<KtExpression, Name>()
|
||||||
val COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH by error3<KtExpression, Name, ConeKotlinType, ConeKotlinType>()
|
val COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH by error3<KtExpression, Name, ConeKotlinType, ConeKotlinType>()
|
||||||
|
|
||||||
@@ -449,8 +449,8 @@ object FirErrors {
|
|||||||
val VAL_REASSIGNMENT_VIA_BACKING_FIELD_ERROR by error1<KtExpression, FirPropertySymbol>()
|
val VAL_REASSIGNMENT_VIA_BACKING_FIELD_ERROR by error1<KtExpression, FirPropertySymbol>()
|
||||||
val CAPTURED_VAL_INITIALIZATION by error1<KtExpression, FirPropertySymbol>()
|
val CAPTURED_VAL_INITIALIZATION by error1<KtExpression, FirPropertySymbol>()
|
||||||
val CAPTURED_MEMBER_VAL_INITIALIZATION by error1<KtExpression, FirPropertySymbol>()
|
val CAPTURED_MEMBER_VAL_INITIALIZATION by error1<KtExpression, FirPropertySymbol>()
|
||||||
val WRONG_INVOCATION_KIND by warning3<PsiElement, AbstractFirBasedSymbol<*>, EventOccurrencesRange, EventOccurrencesRange>()
|
val WRONG_INVOCATION_KIND by warning3<PsiElement, FirBasedSymbol<*>, EventOccurrencesRange, EventOccurrencesRange>()
|
||||||
val LEAKED_IN_PLACE_LAMBDA by error1<PsiElement, AbstractFirBasedSymbol<*>>()
|
val LEAKED_IN_PLACE_LAMBDA by error1<PsiElement, FirBasedSymbol<*>>()
|
||||||
val WRONG_IMPLIES_CONDITION by warning0<PsiElement>()
|
val WRONG_IMPLIES_CONDITION by warning0<PsiElement>()
|
||||||
|
|
||||||
// Nullability
|
// Nullability
|
||||||
@@ -491,11 +491,11 @@ object FirErrors {
|
|||||||
val ITERATOR_MISSING by error0<KtExpression>()
|
val ITERATOR_MISSING by error0<KtExpression>()
|
||||||
val HAS_NEXT_MISSING by error0<KtExpression>()
|
val HAS_NEXT_MISSING by error0<KtExpression>()
|
||||||
val NEXT_MISSING by error0<KtExpression>()
|
val NEXT_MISSING by error0<KtExpression>()
|
||||||
val HAS_NEXT_FUNCTION_NONE_APPLICABLE by error1<KtExpression, Collection<AbstractFirBasedSymbol<*>>>()
|
val HAS_NEXT_FUNCTION_NONE_APPLICABLE by error1<KtExpression, Collection<FirBasedSymbol<*>>>()
|
||||||
val NEXT_NONE_APPLICABLE by error1<KtExpression, Collection<AbstractFirBasedSymbol<*>>>()
|
val NEXT_NONE_APPLICABLE by error1<KtExpression, Collection<FirBasedSymbol<*>>>()
|
||||||
val DELEGATE_SPECIAL_FUNCTION_MISSING by error3<KtExpression, String, ConeKotlinType, String>()
|
val DELEGATE_SPECIAL_FUNCTION_MISSING by error3<KtExpression, String, ConeKotlinType, String>()
|
||||||
val DELEGATE_SPECIAL_FUNCTION_AMBIGUITY by error2<KtExpression, String, Collection<AbstractFirBasedSymbol<*>>>()
|
val DELEGATE_SPECIAL_FUNCTION_AMBIGUITY by error2<KtExpression, String, Collection<FirBasedSymbol<*>>>()
|
||||||
val DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE by error2<KtExpression, String, Collection<AbstractFirBasedSymbol<*>>>()
|
val DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE by error2<KtExpression, String, Collection<FirBasedSymbol<*>>>()
|
||||||
val DELEGATE_SPECIAL_FUNCTION_RETURN_TYPE_MISMATCH by error3<KtExpression, String, ConeKotlinType, ConeKotlinType>()
|
val DELEGATE_SPECIAL_FUNCTION_RETURN_TYPE_MISMATCH by error3<KtExpression, String, ConeKotlinType, ConeKotlinType>()
|
||||||
val UNDERSCORE_IS_RESERVED by error0<KtElement>(SourceElementPositioningStrategies.RESERVED_UNDERSCORE)
|
val UNDERSCORE_IS_RESERVED by error0<KtElement>(SourceElementPositioningStrategies.RESERVED_UNDERSCORE)
|
||||||
val UNDERSCORE_USAGE_WITHOUT_BACKTICKS by error0<KtElement>(SourceElementPositioningStrategies.RESERVED_UNDERSCORE)
|
val UNDERSCORE_USAGE_WITHOUT_BACKTICKS by error0<KtElement>(SourceElementPositioningStrategies.RESERVED_UNDERSCORE)
|
||||||
@@ -531,15 +531,15 @@ object FirErrors {
|
|||||||
val RETURN_IN_FUNCTION_WITH_EXPRESSION_BODY by error0<KtReturnExpression>(SourceElementPositioningStrategies.RETURN_WITH_LABEL)
|
val RETURN_IN_FUNCTION_WITH_EXPRESSION_BODY by error0<KtReturnExpression>(SourceElementPositioningStrategies.RETURN_WITH_LABEL)
|
||||||
|
|
||||||
// Inline
|
// Inline
|
||||||
val USAGE_IS_NOT_INLINABLE by error1<KtElement, AbstractFirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
val USAGE_IS_NOT_INLINABLE by error1<KtElement, FirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||||
val NON_LOCAL_RETURN_NOT_ALLOWED by error1<KtElement, AbstractFirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
val NON_LOCAL_RETURN_NOT_ALLOWED by error1<KtElement, FirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||||
val RECURSION_IN_INLINE by error1<KtElement, AbstractFirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
val RECURSION_IN_INLINE by error1<KtElement, FirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||||
val NON_PUBLIC_CALL_FROM_PUBLIC_INLINE by error2<KtElement, AbstractFirBasedSymbol<*>, AbstractFirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
val NON_PUBLIC_CALL_FROM_PUBLIC_INLINE by error2<KtElement, FirBasedSymbol<*>, FirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||||
val PROTECTED_CONSTRUCTOR_CALL_FROM_PUBLIC_INLINE by error2<KtElement, AbstractFirBasedSymbol<*>, AbstractFirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
val PROTECTED_CONSTRUCTOR_CALL_FROM_PUBLIC_INLINE by error2<KtElement, FirBasedSymbol<*>, FirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||||
val PROTECTED_CALL_FROM_PUBLIC_INLINE_ERROR by error2<KtElement, AbstractFirBasedSymbol<*>, AbstractFirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
val PROTECTED_CALL_FROM_PUBLIC_INLINE_ERROR by error2<KtElement, FirBasedSymbol<*>, FirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||||
val PROTECTED_CALL_FROM_PUBLIC_INLINE by warning2<KtElement, AbstractFirBasedSymbol<*>, AbstractFirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
val PROTECTED_CALL_FROM_PUBLIC_INLINE by warning2<KtElement, FirBasedSymbol<*>, FirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||||
val PRIVATE_CLASS_MEMBER_FROM_INLINE by error2<KtElement, AbstractFirBasedSymbol<*>, AbstractFirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
val PRIVATE_CLASS_MEMBER_FROM_INLINE by error2<KtElement, FirBasedSymbol<*>, FirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||||
val SUPER_CALL_FROM_PUBLIC_INLINE by warning1<KtElement, AbstractFirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
val SUPER_CALL_FROM_PUBLIC_INLINE by warning1<KtElement, FirBasedSymbol<*>>(SourceElementPositioningStrategies.REFERENCE_BY_QUALIFIED)
|
||||||
|
|
||||||
// Imports
|
// Imports
|
||||||
val CANNOT_ALL_UNDER_IMPORT_FROM_SINGLETON by error1<KtImportDirective, Name>(SourceElementPositioningStrategies.IMPORT_LAST_NAME)
|
val CANNOT_ALL_UNDER_IMPORT_FROM_SINGLETON by error1<KtImportDirective, Name>(SourceElementPositioningStrategies.IMPORT_LAST_NAME)
|
||||||
|
|||||||
+7
-8
@@ -32,7 +32,6 @@ import org.jetbrains.kotlin.fir.references.FirThisReference
|
|||||||
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.*
|
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.inference.isBuiltinFunctionalType
|
import org.jetbrains.kotlin.fir.resolve.inference.isBuiltinFunctionalType
|
||||||
import org.jetbrains.kotlin.fir.resolve.isInvoke
|
import org.jetbrains.kotlin.fir.resolve.isInvoke
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
@@ -50,7 +49,7 @@ object FirCallsEffectAnalyzer : FirControlFlowChecker() {
|
|||||||
if (function !is FirContractDescriptionOwner) return
|
if (function !is FirContractDescriptionOwner) return
|
||||||
if (function.contractDescription.coneEffects?.any { it is ConeCallsEffectDeclaration } != true) return
|
if (function.contractDescription.coneEffects?.any { it is ConeCallsEffectDeclaration } != true) return
|
||||||
|
|
||||||
val functionalTypeEffects = mutableMapOf<AbstractFirBasedSymbol<*>, ConeCallsEffectDeclaration>()
|
val functionalTypeEffects = mutableMapOf<FirBasedSymbol<*>, ConeCallsEffectDeclaration>()
|
||||||
|
|
||||||
function.valueParameters.forEachIndexed { index, parameter ->
|
function.valueParameters.forEachIndexed { index, parameter ->
|
||||||
if (parameter.returnTypeRef.isFunctionalTypeRef(session)) {
|
if (parameter.returnTypeRef.isFunctionalTypeRef(session)) {
|
||||||
@@ -66,7 +65,7 @@ object FirCallsEffectAnalyzer : FirControlFlowChecker() {
|
|||||||
|
|
||||||
if (functionalTypeEffects.isEmpty()) return
|
if (functionalTypeEffects.isEmpty()) return
|
||||||
|
|
||||||
val leakedSymbols = mutableMapOf<AbstractFirBasedSymbol<*>, MutableList<FirSourceElement>>()
|
val leakedSymbols = mutableMapOf<FirBasedSymbol<*>, MutableList<FirSourceElement>>()
|
||||||
graph.traverse(
|
graph.traverse(
|
||||||
TraverseDirection.Forward,
|
TraverseDirection.Forward,
|
||||||
CapturedLambdaFinder(function),
|
CapturedLambdaFinder(function),
|
||||||
@@ -102,7 +101,7 @@ object FirCallsEffectAnalyzer : FirControlFlowChecker() {
|
|||||||
|
|
||||||
private fun investigate(
|
private fun investigate(
|
||||||
info: LambdaInvocationInfo,
|
info: LambdaInvocationInfo,
|
||||||
symbol: AbstractFirBasedSymbol<*>,
|
symbol: FirBasedSymbol<*>,
|
||||||
requiredRange: EventOccurrencesRange,
|
requiredRange: EventOccurrencesRange,
|
||||||
function: FirContractDescriptionOwner,
|
function: FirContractDescriptionOwner,
|
||||||
reporter: DiagnosticReporter,
|
reporter: DiagnosticReporter,
|
||||||
@@ -124,8 +123,8 @@ object FirCallsEffectAnalyzer : FirControlFlowChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class IllegalScopeContext(
|
private class IllegalScopeContext(
|
||||||
private val functionalTypeSymbols: Set<AbstractFirBasedSymbol<*>>,
|
private val functionalTypeSymbols: Set<FirBasedSymbol<*>>,
|
||||||
private val leakedSymbols: MutableMap<AbstractFirBasedSymbol<*>, MutableList<FirSourceElement>>,
|
private val leakedSymbols: MutableMap<FirBasedSymbol<*>, MutableList<FirSourceElement>>,
|
||||||
) {
|
) {
|
||||||
private var scopeDepth: Int = 0
|
private var scopeDepth: Int = 0
|
||||||
private var illegalScopeDepth: Int? = null
|
private var illegalScopeDepth: Int? = null
|
||||||
@@ -237,7 +236,7 @@ object FirCallsEffectAnalyzer : FirControlFlowChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class InvocationDataCollector(
|
private class InvocationDataCollector(
|
||||||
val functionalTypeSymbols: Set<AbstractFirBasedSymbol<*>>
|
val functionalTypeSymbols: Set<FirBasedSymbol<*>>
|
||||||
) : ControlFlowGraphVisitor<PathAwareLambdaInvocationInfo, Collection<Pair<EdgeLabel, PathAwareLambdaInvocationInfo>>>() {
|
) : ControlFlowGraphVisitor<PathAwareLambdaInvocationInfo, Collection<Pair<EdgeLabel, PathAwareLambdaInvocationInfo>>>() {
|
||||||
|
|
||||||
override fun visitNode(
|
override fun visitNode(
|
||||||
@@ -334,7 +333,7 @@ object FirCallsEffectAnalyzer : FirControlFlowChecker() {
|
|||||||
|
|
||||||
private fun FirExpression?.toQualifiedReference(): FirReference? = (this as? FirQualifiedAccess)?.calleeReference
|
private fun FirExpression?.toQualifiedReference(): FirReference? = (this as? FirQualifiedAccess)?.calleeReference
|
||||||
|
|
||||||
private fun referenceToSymbol(reference: FirReference?): AbstractFirBasedSymbol<*>? = when (reference) {
|
private fun referenceToSymbol(reference: FirReference?): FirBasedSymbol<*>? = when (reference) {
|
||||||
is FirResolvedNamedReference -> reference.resolvedSymbol
|
is FirResolvedNamedReference -> reference.resolvedSymbol
|
||||||
is FirThisReference -> reference.boundSymbol
|
is FirThisReference -> reference.boundSymbol
|
||||||
else -> null
|
else -> null
|
||||||
|
|||||||
+3
-3
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.fir.resolve.dfa.cfg.BlockExitNode
|
|||||||
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.CFGNode
|
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.CFGNode
|
||||||
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.ControlFlowGraph
|
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.ControlFlowGraph
|
||||||
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.JumpNode
|
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.JumpNode
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyAccessorSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertyAccessorSymbol
|
||||||
import org.jetbrains.kotlin.fir.typeContext
|
import org.jetbrains.kotlin.fir.typeContext
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
@@ -216,7 +216,7 @@ object FirReturnsImpliesAnalyzer : FirControlFlowChecker() {
|
|||||||
private val CheckerContext.containingProperty: FirProperty?
|
private val CheckerContext.containingProperty: FirProperty?
|
||||||
get() = (containingDeclarations.asReversed().firstOrNull { it is FirProperty } as? FirProperty)
|
get() = (containingDeclarations.asReversed().firstOrNull { it is FirProperty } as? FirProperty)
|
||||||
|
|
||||||
private fun FirFunction<*>.getParameterType(symbol: AbstractFirBasedSymbol<*>, context: CheckerContext): ConeKotlinType? {
|
private fun FirFunction<*>.getParameterType(symbol: FirBasedSymbol<*>, context: CheckerContext): ConeKotlinType? {
|
||||||
val typeRef = if (this.symbol == symbol) {
|
val typeRef = if (this.symbol == symbol) {
|
||||||
if (symbol is FirPropertyAccessorSymbol) {
|
if (symbol is FirPropertyAccessorSymbol) {
|
||||||
context.containingProperty?.receiverTypeRef
|
context.containingProperty?.receiverTypeRef
|
||||||
@@ -229,7 +229,7 @@ object FirReturnsImpliesAnalyzer : FirControlFlowChecker() {
|
|||||||
return typeRef?.coneType
|
return typeRef?.coneType
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun FirFunction<*>.getParameterSymbol(index: Int, context: CheckerContext): AbstractFirBasedSymbol<*> {
|
private fun FirFunction<*>.getParameterSymbol(index: Int, context: CheckerContext): FirBasedSymbol<*> {
|
||||||
return if (index == -1) {
|
return if (index == -1) {
|
||||||
if (symbol !is FirPropertyAccessorSymbol) {
|
if (symbol !is FirPropertyAccessorSymbol) {
|
||||||
symbol
|
symbol
|
||||||
|
|||||||
+4
-4
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.declarations.*
|
|||||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||||
import org.jetbrains.kotlin.fir.scopes.PACKAGE_MEMBER
|
import org.jetbrains.kotlin.fir.scopes.PACKAGE_MEMBER
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.FirPackageMemberScope
|
import org.jetbrains.kotlin.fir.scopes.impl.FirPackageMemberScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
import org.jetbrains.kotlin.fir.visitors.FirVisitorVoid
|
||||||
@@ -28,7 +28,7 @@ object FirConflictsChecker : FirBasicDeclarationChecker() {
|
|||||||
|
|
||||||
private class DeclarationInspector : FirDeclarationInspector() {
|
private class DeclarationInspector : FirDeclarationInspector() {
|
||||||
|
|
||||||
val declarationConflictingSymbols: HashMap<FirDeclaration, SmartSet<AbstractFirBasedSymbol<*>>> = hashMapOf()
|
val declarationConflictingSymbols: HashMap<FirDeclaration, SmartSet<FirBasedSymbol<*>>> = hashMapOf()
|
||||||
|
|
||||||
override fun collectNonFunctionDeclaration(key: String, declaration: FirDeclaration): MutableList<FirDeclaration> =
|
override fun collectNonFunctionDeclaration(key: String, declaration: FirDeclaration): MutableList<FirDeclaration> =
|
||||||
super.collectNonFunctionDeclaration(key, declaration).also {
|
super.collectNonFunctionDeclaration(key, declaration).also {
|
||||||
@@ -41,7 +41,7 @@ object FirConflictsChecker : FirBasicDeclarationChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun collectLocalConflicts(declaration: FirDeclaration, conflicting: List<FirDeclaration>) {
|
private fun collectLocalConflicts(declaration: FirDeclaration, conflicting: List<FirDeclaration>) {
|
||||||
val localConflicts = SmartSet.create<AbstractFirBasedSymbol<*>>()
|
val localConflicts = SmartSet.create<FirBasedSymbol<*>>()
|
||||||
for (otherDeclaration in conflicting) {
|
for (otherDeclaration in conflicting) {
|
||||||
if (otherDeclaration is FirSymbolOwner<*>) {
|
if (otherDeclaration is FirSymbolOwner<*>) {
|
||||||
if (otherDeclaration != declaration && declaration is FirSymbolOwner<*> &&
|
if (otherDeclaration != declaration && declaration is FirSymbolOwner<*> &&
|
||||||
@@ -75,7 +75,7 @@ object FirConflictsChecker : FirBasicDeclarationChecker() {
|
|||||||
declaration: FirDeclaration,
|
declaration: FirDeclaration,
|
||||||
declarationPresentation: String,
|
declarationPresentation: String,
|
||||||
containingFile: FirFile,
|
containingFile: FirFile,
|
||||||
conflictingSymbol: AbstractFirBasedSymbol<*>,
|
conflictingSymbol: FirBasedSymbol<*>,
|
||||||
conflictingPresentation: String?,
|
conflictingPresentation: String?,
|
||||||
conflictingFile: FirFile?,
|
conflictingFile: FirFile?,
|
||||||
session: FirSession
|
session: FirSession
|
||||||
|
|||||||
+2
-2
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
|||||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeAmbiguityError
|
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeAmbiguityError
|
||||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeInapplicableCandidateError
|
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeInapplicableCandidateError
|
||||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedNameError
|
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedNameError
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.typeContext
|
import org.jetbrains.kotlin.fir.typeContext
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinErrorType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinErrorType
|
||||||
import org.jetbrains.kotlin.fir.types.coneType
|
import org.jetbrains.kotlin.fir.types.coneType
|
||||||
@@ -65,7 +65,7 @@ object FirDelegatedPropertyChecker : FirPropertyChecker() {
|
|||||||
|
|
||||||
fun reportInapplicableDiagnostics(
|
fun reportInapplicableDiagnostics(
|
||||||
candidateApplicability: CandidateApplicability,
|
candidateApplicability: CandidateApplicability,
|
||||||
candidates: Collection<AbstractFirBasedSymbol<*>>
|
candidates: Collection<FirBasedSymbol<*>>
|
||||||
) {
|
) {
|
||||||
if (candidateApplicability == CandidateApplicability.INAPPLICABLE_WRONG_RECEIVER) {
|
if (candidateApplicability == CandidateApplicability.INAPPLICABLE_WRONG_RECEIVER) {
|
||||||
reporter.reportOn(
|
reporter.reportOn(
|
||||||
|
|||||||
+8
-8
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.resolve.inference.isBuiltinFunctionalType
|
|||||||
import org.jetbrains.kotlin.fir.resolve.inference.isFunctionalType
|
import org.jetbrains.kotlin.fir.resolve.inference.isFunctionalType
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.publishedApiEffectiveVisibility
|
import org.jetbrains.kotlin.fir.resolve.transformers.publishedApiEffectiveVisibility
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||||
@@ -103,7 +103,7 @@ object FirInlineDeclarationChecker : FirMemberDeclarationChecker() {
|
|||||||
|
|
||||||
private fun checkReceiversOfQualifiedAccessExpression(
|
private fun checkReceiversOfQualifiedAccessExpression(
|
||||||
qualifiedAccessExpression: FirQualifiedAccessExpression,
|
qualifiedAccessExpression: FirQualifiedAccessExpression,
|
||||||
targetSymbol: AbstractFirBasedSymbol<*>?,
|
targetSymbol: FirBasedSymbol<*>?,
|
||||||
context: CheckerContext
|
context: CheckerContext
|
||||||
) {
|
) {
|
||||||
checkReceiver(qualifiedAccessExpression, qualifiedAccessExpression.dispatchReceiver, targetSymbol, context)
|
checkReceiver(qualifiedAccessExpression, qualifiedAccessExpression.dispatchReceiver, targetSymbol, context)
|
||||||
@@ -112,7 +112,7 @@ object FirInlineDeclarationChecker : FirMemberDeclarationChecker() {
|
|||||||
|
|
||||||
private fun checkArgumentsOfCall(
|
private fun checkArgumentsOfCall(
|
||||||
functionCall: FirFunctionCall,
|
functionCall: FirFunctionCall,
|
||||||
targetSymbol: AbstractFirBasedSymbol<*>?,
|
targetSymbol: FirBasedSymbol<*>?,
|
||||||
context: CheckerContext
|
context: CheckerContext
|
||||||
) {
|
) {
|
||||||
val calledFunction = (targetSymbol as? FirNamedFunctionSymbol)?.fir ?: return
|
val calledFunction = (targetSymbol as? FirNamedFunctionSymbol)?.fir ?: return
|
||||||
@@ -140,7 +140,7 @@ object FirInlineDeclarationChecker : FirMemberDeclarationChecker() {
|
|||||||
private fun checkReceiver(
|
private fun checkReceiver(
|
||||||
qualifiedAccessExpression: FirQualifiedAccessExpression,
|
qualifiedAccessExpression: FirQualifiedAccessExpression,
|
||||||
receiverExpression: FirExpression,
|
receiverExpression: FirExpression,
|
||||||
targetSymbol: AbstractFirBasedSymbol<*>?,
|
targetSymbol: FirBasedSymbol<*>?,
|
||||||
context: CheckerContext
|
context: CheckerContext
|
||||||
) {
|
) {
|
||||||
val receiverSymbol = receiverExpression.toResolvedCallableSymbol() ?: return
|
val receiverSymbol = receiverExpression.toResolvedCallableSymbol() ?: return
|
||||||
@@ -157,7 +157,7 @@ object FirInlineDeclarationChecker : FirMemberDeclarationChecker() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isInvokeOrInlineExtension(targetSymbol: AbstractFirBasedSymbol<*>?): Boolean {
|
private fun isInvokeOrInlineExtension(targetSymbol: FirBasedSymbol<*>?): Boolean {
|
||||||
if (targetSymbol !is FirNamedFunctionSymbol) return false
|
if (targetSymbol !is FirNamedFunctionSymbol) return false
|
||||||
val function = targetSymbol.fir
|
val function = targetSymbol.fir
|
||||||
if (function.isInline) return true
|
if (function.isInline) return true
|
||||||
@@ -167,7 +167,7 @@ object FirInlineDeclarationChecker : FirMemberDeclarationChecker() {
|
|||||||
|
|
||||||
private fun checkQualifiedAccess(
|
private fun checkQualifiedAccess(
|
||||||
qualifiedAccess: FirQualifiedAccess,
|
qualifiedAccess: FirQualifiedAccess,
|
||||||
targetSymbol: AbstractFirBasedSymbol<*>?,
|
targetSymbol: FirBasedSymbol<*>?,
|
||||||
context: CheckerContext
|
context: CheckerContext
|
||||||
) {
|
) {
|
||||||
val source = qualifiedAccess.source ?: return
|
val source = qualifiedAccess.source ?: return
|
||||||
@@ -280,7 +280,7 @@ object FirInlineDeclarationChecker : FirMemberDeclarationChecker() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun AbstractFirBasedSymbol<*>.isDefinedInInlineFunction(): Boolean {
|
private fun FirBasedSymbol<*>.isDefinedInInlineFunction(): Boolean {
|
||||||
return when (val fir = this.fir) {
|
return when (val fir = this.fir) {
|
||||||
is FirAnonymousFunction -> true
|
is FirAnonymousFunction -> true
|
||||||
is FirMemberDeclaration -> fir.isLocalMember
|
is FirMemberDeclaration -> fir.isLocalMember
|
||||||
@@ -291,7 +291,7 @@ object FirInlineDeclarationChecker : FirMemberDeclarationChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun checkRecursion(
|
private fun checkRecursion(
|
||||||
targetSymbol: AbstractFirBasedSymbol<*>,
|
targetSymbol: FirBasedSymbol<*>,
|
||||||
source: FirSourceElement,
|
source: FirSourceElement,
|
||||||
context: CheckerContext
|
context: CheckerContext
|
||||||
) {
|
) {
|
||||||
|
|||||||
+3
-3
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.withSuppressedDiagnostics
|
|||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.name.StandardClassIds
|
import org.jetbrains.kotlin.name.StandardClassIds
|
||||||
@@ -110,7 +110,7 @@ object FirSupertypesChecker : FirClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun checkClassCannotBeExtendedDirectly(
|
private fun checkClassCannotBeExtendedDirectly(
|
||||||
symbol: AbstractFirBasedSymbol<*>?,
|
symbol: FirBasedSymbol<*>?,
|
||||||
reporter: DiagnosticReporter,
|
reporter: DiagnosticReporter,
|
||||||
superTypeRef: FirTypeRef,
|
superTypeRef: FirTypeRef,
|
||||||
context: CheckerContext
|
context: CheckerContext
|
||||||
@@ -139,7 +139,7 @@ object FirSupertypesChecker : FirClassChecker() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun checkExpandedTypeCannotBeInherited(
|
private fun checkExpandedTypeCannotBeInherited(
|
||||||
symbol: AbstractFirBasedSymbol<*>?,
|
symbol: FirBasedSymbol<*>?,
|
||||||
fullyExpandedType: ConeKotlinType,
|
fullyExpandedType: ConeKotlinType,
|
||||||
reporter: DiagnosticReporter,
|
reporter: DiagnosticReporter,
|
||||||
superTypeRef: FirTypeRef,
|
superTypeRef: FirTypeRef,
|
||||||
|
|||||||
+3
-3
@@ -31,7 +31,7 @@ import org.jetbrains.kotlin.fir.resolve.calls.UnsafeCall
|
|||||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeAmbiguityError
|
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeAmbiguityError
|
||||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeInapplicableCandidateError
|
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeInapplicableCandidateError
|
||||||
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedNameError
|
import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeUnresolvedNameError
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||||
import org.jetbrains.kotlin.resolve.calls.tower.isSuccess
|
import org.jetbrains.kotlin.resolve.calls.tower.isSuccess
|
||||||
|
|
||||||
@@ -93,9 +93,9 @@ object FirForLoopChecker : FirBlockChecker() {
|
|||||||
reporter: DiagnosticReporter,
|
reporter: DiagnosticReporter,
|
||||||
reportSource: FirSourceElement?,
|
reportSource: FirSourceElement?,
|
||||||
context: CheckerContext,
|
context: CheckerContext,
|
||||||
ambiguityFactory: FirDiagnosticFactory1<Collection<AbstractFirBasedSymbol<*>>>,
|
ambiguityFactory: FirDiagnosticFactory1<Collection<FirBasedSymbol<*>>>,
|
||||||
missingFactory: FirDiagnosticFactory0,
|
missingFactory: FirDiagnosticFactory0,
|
||||||
noneApplicableFactory: FirDiagnosticFactory1<Collection<AbstractFirBasedSymbol<*>>>? = null,
|
noneApplicableFactory: FirDiagnosticFactory1<Collection<FirBasedSymbol<*>>>? = null,
|
||||||
unsafeCallFactory: FirDiagnosticFactory0? = null,
|
unsafeCallFactory: FirDiagnosticFactory0? = null,
|
||||||
): Boolean {
|
): Boolean {
|
||||||
when (val calleeReference = call.calleeReference) {
|
when (val calleeReference = call.calleeReference) {
|
||||||
|
|||||||
+4
-4
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.FirElement
|
|||||||
import org.jetbrains.kotlin.fir.FirRenderer
|
import org.jetbrains.kotlin.fir.FirRenderer
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||||
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.fir.types.render
|
|||||||
object FirDiagnosticRenderers {
|
object FirDiagnosticRenderers {
|
||||||
val NULLABLE_STRING = Renderer<String?> { it ?: "null" }
|
val NULLABLE_STRING = Renderer<String?> { it ?: "null" }
|
||||||
|
|
||||||
val SYMBOL = Renderer { symbol: AbstractFirBasedSymbol<*> ->
|
val SYMBOL = Renderer { symbol: FirBasedSymbol<*> ->
|
||||||
when (symbol) {
|
when (symbol) {
|
||||||
is FirClassLikeSymbol<*> -> symbol.classId.asString()
|
is FirClassLikeSymbol<*> -> symbol.classId.asString()
|
||||||
is FirCallableSymbol<*> -> symbol.callableId.toString()
|
is FirCallableSymbol<*> -> symbol.callableId.toString()
|
||||||
@@ -32,7 +32,7 @@ object FirDiagnosticRenderers {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val SYMBOLS = Renderer { symbols: Collection<AbstractFirBasedSymbol<*>> ->
|
val SYMBOLS = Renderer { symbols: Collection<FirBasedSymbol<*>> ->
|
||||||
symbols.joinToString(prefix = "[", postfix = "]", separator = ", ", limit = 3, truncated = "...") { symbol ->
|
symbols.joinToString(prefix = "[", postfix = "]", separator = ", ", limit = 3, truncated = "...") { symbol ->
|
||||||
SYMBOL.render(symbol)
|
SYMBOL.render(symbol)
|
||||||
}
|
}
|
||||||
@@ -97,7 +97,7 @@ object FirDiagnosticRenderers {
|
|||||||
element.render(mode = FirRenderer.RenderMode.WithFqNamesExceptAnnotationAndBody)
|
element.render(mode = FirRenderer.RenderMode.WithFqNamesExceptAnnotationAndBody)
|
||||||
}
|
}
|
||||||
|
|
||||||
val AMBIGUOUS_CALLS = Renderer { candidates: Collection<AbstractFirBasedSymbol<*>> ->
|
val AMBIGUOUS_CALLS = Renderer { candidates: Collection<FirBasedSymbol<*>> ->
|
||||||
candidates.joinToString(separator = "\n", prefix = "\n") { symbol ->
|
candidates.joinToString(separator = "\n", prefix = "\n") { symbol ->
|
||||||
SYMBOL.render(symbol)
|
SYMBOL.render(symbol)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ import org.jetbrains.kotlin.fir.resolve.diagnostics.ConeInapplicableCandidateErr
|
|||||||
import org.jetbrains.kotlin.fir.resolve.directExpansionType
|
import org.jetbrains.kotlin.fir.resolve.directExpansionType
|
||||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
@@ -1631,7 +1630,7 @@ class HtmlFirDump internal constructor(private var linkResolver: FirLinkResolver
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun FlowContent.symbolAnchor(symbol: AbstractFirBasedSymbol<*>, body: FlowContent.() -> Unit) {
|
private fun FlowContent.symbolAnchor(symbol: FirBasedSymbol<*>, body: FlowContent.() -> Unit) {
|
||||||
span(classes = "declaration") {
|
span(classes = "declaration") {
|
||||||
id = linkResolver.symbolSignature(symbol)
|
id = linkResolver.symbolSignature(symbol)
|
||||||
body()
|
body()
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ import org.jetbrains.kotlin.fir.resolve.calls.originalConstructorIfTypeAlias
|
|||||||
import org.jetbrains.kotlin.fir.resolve.providers.FirProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.FirProvider
|
||||||
import org.jetbrains.kotlin.fir.scopes.*
|
import org.jetbrains.kotlin.fir.scopes.*
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.delegatedWrapperData
|
import org.jetbrains.kotlin.fir.scopes.impl.delegatedWrapperData
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.AccessorSymbol
|
import org.jetbrains.kotlin.fir.symbols.AccessorSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
@@ -140,7 +140,7 @@ fun FirClassifierSymbol<*>.toSymbol(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun AbstractFirBasedSymbol<*>.toSymbolForCall(
|
private fun FirBasedSymbol<*>.toSymbolForCall(
|
||||||
session: FirSession,
|
session: FirSession,
|
||||||
classifierStorage: Fir2IrClassifierStorage,
|
classifierStorage: Fir2IrClassifierStorage,
|
||||||
declarationStorage: Fir2IrDeclarationStorage,
|
declarationStorage: Fir2IrDeclarationStorage,
|
||||||
|
|||||||
+3
-3
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.resolve.toSymbol
|
|||||||
import org.jetbrains.kotlin.fir.scopes.*
|
import org.jetbrains.kotlin.fir.scopes.*
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.FirFakeOverrideGenerator
|
import org.jetbrains.kotlin.fir.scopes.impl.FirFakeOverrideGenerator
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.delegatedWrapperData
|
import org.jetbrains.kotlin.fir.scopes.impl.delegatedWrapperData
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||||
@@ -98,7 +98,7 @@ class FakeOverrideGenerator(
|
|||||||
name: Name,
|
name: Name,
|
||||||
firClass: FirClass<*>,
|
firClass: FirClass<*>,
|
||||||
result: MutableList<IrDeclaration>,
|
result: MutableList<IrDeclaration>,
|
||||||
realDeclarationSymbols: Set<AbstractFirBasedSymbol<*>>
|
realDeclarationSymbols: Set<FirBasedSymbol<*>>
|
||||||
) {
|
) {
|
||||||
val isLocal = firClass !is FirRegularClass || firClass.isLocal
|
val isLocal = firClass !is FirRegularClass || firClass.isLocal
|
||||||
useSiteMemberScope.processFunctionsByName(name) { functionSymbol ->
|
useSiteMemberScope.processFunctionsByName(name) { functionSymbol ->
|
||||||
@@ -181,7 +181,7 @@ class FakeOverrideGenerator(
|
|||||||
baseSymbols: MutableMap<I, List<S>>,
|
baseSymbols: MutableMap<I, List<S>>,
|
||||||
result: MutableList<in I>,
|
result: MutableList<in I>,
|
||||||
containsErrorTypes: (I) -> Boolean,
|
containsErrorTypes: (I) -> Boolean,
|
||||||
realDeclarationSymbols: Set<AbstractFirBasedSymbol<*>>,
|
realDeclarationSymbols: Set<FirBasedSymbol<*>>,
|
||||||
computeDirectOverridden: FirTypeScope.(S) -> List<S>,
|
computeDirectOverridden: FirTypeScope.(S) -> List<S>,
|
||||||
scope: FirTypeScope,
|
scope: FirTypeScope,
|
||||||
) {
|
) {
|
||||||
|
|||||||
@@ -14,13 +14,13 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
import org.jetbrains.kotlin.fir.getOwnerId
|
import org.jetbrains.kotlin.fir.getOwnerId
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.ReceiverValue
|
import org.jetbrains.kotlin.fir.resolve.calls.ReceiverValue
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
|
|
||||||
@NoMutableState
|
@NoMutableState
|
||||||
object FirJavaVisibilityChecker : FirVisibilityChecker() {
|
object FirJavaVisibilityChecker : FirVisibilityChecker() {
|
||||||
override fun platformVisibilityCheck(
|
override fun platformVisibilityCheck(
|
||||||
declarationVisibility: Visibility,
|
declarationVisibility: Visibility,
|
||||||
symbol: AbstractFirBasedSymbol<*>,
|
symbol: FirBasedSymbol<*>,
|
||||||
useSiteFile: FirFile,
|
useSiteFile: FirFile,
|
||||||
containingDeclarations: List<FirDeclaration>,
|
containingDeclarations: List<FirDeclaration>,
|
||||||
dispatchReceiver: ReceiverValue?,
|
dispatchReceiver: ReceiverValue?,
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.resolve.firProvider
|
|||||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||||
import org.jetbrains.kotlin.fir.resolve.lookupSuperTypes
|
import org.jetbrains.kotlin.fir.resolve.lookupSuperTypes
|
||||||
import org.jetbrains.kotlin.fir.resolve.symbolProvider
|
import org.jetbrains.kotlin.fir.resolve.symbolProvider
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||||
@@ -32,7 +32,7 @@ abstract class FirVisibilityChecker : FirSessionComponent {
|
|||||||
object Default : FirVisibilityChecker() {
|
object Default : FirVisibilityChecker() {
|
||||||
override fun platformVisibilityCheck(
|
override fun platformVisibilityCheck(
|
||||||
declarationVisibility: Visibility,
|
declarationVisibility: Visibility,
|
||||||
symbol: AbstractFirBasedSymbol<*>,
|
symbol: FirBasedSymbol<*>,
|
||||||
useSiteFile: FirFile,
|
useSiteFile: FirFile,
|
||||||
containingDeclarations: List<FirDeclaration>,
|
containingDeclarations: List<FirDeclaration>,
|
||||||
dispatchReceiver: ReceiverValue?,
|
dispatchReceiver: ReceiverValue?,
|
||||||
@@ -122,7 +122,7 @@ abstract class FirVisibilityChecker : FirSessionComponent {
|
|||||||
|
|
||||||
protected abstract fun platformVisibilityCheck(
|
protected abstract fun platformVisibilityCheck(
|
||||||
declarationVisibility: Visibility,
|
declarationVisibility: Visibility,
|
||||||
symbol: AbstractFirBasedSymbol<*>,
|
symbol: FirBasedSymbol<*>,
|
||||||
useSiteFile: FirFile,
|
useSiteFile: FirFile,
|
||||||
containingDeclarations: List<FirDeclaration>,
|
containingDeclarations: List<FirDeclaration>,
|
||||||
dispatchReceiver: ReceiverValue?,
|
dispatchReceiver: ReceiverValue?,
|
||||||
@@ -210,7 +210,7 @@ abstract class FirVisibilityChecker : FirSessionComponent {
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
protected fun AbstractFirBasedSymbol<*>.packageFqName(): FqName {
|
protected fun FirBasedSymbol<*>.packageFqName(): FqName {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
is FirClassLikeSymbol<*> -> classId.packageFqName
|
is FirClassLikeSymbol<*> -> classId.packageFqName
|
||||||
is FirCallableSymbol<*> -> callableId.packageName
|
is FirCallableSymbol<*> -> callableId.packageName
|
||||||
@@ -222,7 +222,7 @@ abstract class FirVisibilityChecker : FirSessionComponent {
|
|||||||
val FirSession.moduleVisibilityChecker: FirModuleVisibilityChecker? by FirSession.nullableSessionComponentAccessor()
|
val FirSession.moduleVisibilityChecker: FirModuleVisibilityChecker? by FirSession.nullableSessionComponentAccessor()
|
||||||
val FirSession.visibilityChecker: FirVisibilityChecker by FirSession.sessionComponentAccessor()
|
val FirSession.visibilityChecker: FirVisibilityChecker by FirSession.sessionComponentAccessor()
|
||||||
|
|
||||||
fun AbstractFirBasedSymbol<*>.getOwnerId(): ClassId? {
|
fun FirBasedSymbol<*>.getOwnerId(): ClassId? {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
is FirClassLikeSymbol<*> -> {
|
is FirClassLikeSymbol<*> -> {
|
||||||
val ownerId = classId.outerClassId
|
val ownerId = classId.outerClassId
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ fun <T : FirResolvable> BodyResolveComponents.typeFromCallee(access: T): FirReso
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun BodyResolveComponents.typeFromSymbol(symbol: AbstractFirBasedSymbol<*>, makeNullable: Boolean): FirResolvedTypeRef {
|
private fun BodyResolveComponents.typeFromSymbol(symbol: FirBasedSymbol<*>, makeNullable: Boolean): FirResolvedTypeRef {
|
||||||
return when (symbol) {
|
return when (symbol) {
|
||||||
is FirCallableSymbol<*> -> {
|
is FirCallableSymbol<*> -> {
|
||||||
val returnTypeRef = returnTypeCalculator.tryCalculateReturnType(symbol.fir)
|
val returnTypeRef = returnTypeCalculator.tryCalculateReturnType(symbol.fir)
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.resolve.inference.InferenceComponents
|
|||||||
import org.jetbrains.kotlin.fir.resolve.inference.PostponedResolvedAtom
|
import org.jetbrains.kotlin.fir.resolve.inference.PostponedResolvedAtom
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
import org.jetbrains.kotlin.fir.types.ConeTypeVariable
|
import org.jetbrains.kotlin.fir.types.ConeTypeVariable
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||||
@@ -77,7 +77,7 @@ data class CallInfo(
|
|||||||
}
|
}
|
||||||
|
|
||||||
class Candidate(
|
class Candidate(
|
||||||
val symbol: AbstractFirBasedSymbol<*>,
|
val symbol: FirBasedSymbol<*>,
|
||||||
val dispatchReceiverValue: ReceiverValue?,
|
val dispatchReceiverValue: ReceiverValue?,
|
||||||
val extensionReceiverValue: ReceiverValue?,
|
val extensionReceiverValue: ReceiverValue?,
|
||||||
val explicitReceiverKind: ExplicitReceiverKind,
|
val explicitReceiverKind: ExplicitReceiverKind,
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.expressions.*
|
|||||||
import org.jetbrains.kotlin.fir.moduleData
|
import org.jetbrains.kotlin.fir.moduleData
|
||||||
import org.jetbrains.kotlin.fir.returnExpressions
|
import org.jetbrains.kotlin.fir.returnExpressions
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirErrorFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirErrorFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirErrorPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirErrorPropertySymbol
|
||||||
import org.jetbrains.kotlin.fir.types.classId
|
import org.jetbrains.kotlin.fir.types.classId
|
||||||
@@ -44,7 +44,7 @@ class CandidateFactory private constructor(
|
|||||||
|
|
||||||
fun createCandidate(
|
fun createCandidate(
|
||||||
callInfo: CallInfo,
|
callInfo: CallInfo,
|
||||||
symbol: AbstractFirBasedSymbol<*>,
|
symbol: FirBasedSymbol<*>,
|
||||||
explicitReceiverKind: ExplicitReceiverKind,
|
explicitReceiverKind: ExplicitReceiverKind,
|
||||||
scope: FirScope?,
|
scope: FirScope?,
|
||||||
dispatchReceiverValue: ReceiverValue? = null,
|
dispatchReceiverValue: ReceiverValue? = null,
|
||||||
@@ -75,7 +75,7 @@ class CandidateFactory private constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun createErrorCandidate(callInfo: CallInfo, diagnostic: ConeDiagnostic): Candidate {
|
fun createErrorCandidate(callInfo: CallInfo, diagnostic: ConeDiagnostic): Candidate {
|
||||||
val symbol: AbstractFirBasedSymbol<*> = when (callInfo.callKind) {
|
val symbol: FirBasedSymbol<*> = when (callInfo.callKind) {
|
||||||
is CallKind.VariableAccess -> createErrorPropertySymbol(diagnostic)
|
is CallKind.VariableAccess -> createErrorPropertySymbol(diagnostic)
|
||||||
is CallKind.Function,
|
is CallKind.Function,
|
||||||
is CallKind.DelegatingConstructorCall,
|
is CallKind.DelegatingConstructorCall,
|
||||||
|
|||||||
+2
-2
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.fir.FirImplementationDetail
|
|||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||||
import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference
|
import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
@OptIn(FirImplementationDetail::class)
|
@OptIn(FirImplementationDetail::class)
|
||||||
@@ -18,7 +18,7 @@ open class FirNamedReferenceWithCandidate(
|
|||||||
name: Name,
|
name: Name,
|
||||||
val candidate: Candidate
|
val candidate: Candidate
|
||||||
) : FirSimpleNamedReference(source, name, candidate.symbol) {
|
) : FirSimpleNamedReference(source, name, candidate.symbol) {
|
||||||
override val candidateSymbol: AbstractFirBasedSymbol<*>
|
override val candidateSymbol: FirBasedSymbol<*>
|
||||||
get() = candidate.symbol
|
get() = candidate.symbol
|
||||||
|
|
||||||
open val isError: Boolean get() = false
|
open val isError: Boolean get() = false
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.resolve.smartcastScope
|
|||||||
import org.jetbrains.kotlin.fir.resolvedTypeFromPrototype
|
import org.jetbrains.kotlin.fir.resolvedTypeFromPrototype
|
||||||
import org.jetbrains.kotlin.fir.scopes.FakeOverrideTypeCalculator
|
import org.jetbrains.kotlin.fir.scopes.FakeOverrideTypeCalculator
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinErrorType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinErrorType
|
||||||
@@ -65,7 +65,7 @@ class ExpressionReceiverValue(
|
|||||||
?: type.scope(useSiteSession, scopeSession, FakeOverrideTypeCalculator.DoNothing)
|
?: type.scope(useSiteSession, scopeSession, FakeOverrideTypeCalculator.DoNothing)
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class ImplicitReceiverValue<S : AbstractFirBasedSymbol<*>>(
|
sealed class ImplicitReceiverValue<S : FirBasedSymbol<*>>(
|
||||||
val boundSymbol: S,
|
val boundSymbol: S,
|
||||||
type: ConeKotlinType,
|
type: ConeKotlinType,
|
||||||
protected val useSiteSession: FirSession,
|
protected val useSiteSession: FirSession,
|
||||||
@@ -105,7 +105,7 @@ sealed class ImplicitReceiverValue<S : AbstractFirBasedSymbol<*>>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun receiverExpression(symbol: AbstractFirBasedSymbol<*>, type: ConeKotlinType): FirThisReceiverExpression =
|
private fun receiverExpression(symbol: FirBasedSymbol<*>, type: ConeKotlinType): FirThisReceiverExpression =
|
||||||
buildThisReceiverExpression {
|
buildThisReceiverExpression {
|
||||||
// NB: we can't use `symbol.fir.source` as the source of `this` receiver. For instance, if this is an implicit receiver for a class,
|
// NB: we can't use `symbol.fir.source` as the source of `this` receiver. For instance, if this is an implicit receiver for a class,
|
||||||
// the entire class itself will be set as a source. If combined with an implicit type operation, a certain assertion, like null
|
// the entire class itself will be set as a source. If combined with an implicit type operation, a certain assertion, like null
|
||||||
|
|||||||
+3
-4
@@ -7,8 +7,7 @@ package org.jetbrains.kotlin.fir.resolve.calls.tower
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.*
|
import org.jetbrains.kotlin.fir.resolve.calls.*
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.ProcessorAction
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.resolve.calls.tasks.ExplicitReceiverKind
|
import org.jetbrains.kotlin.resolve.calls.tasks.ExplicitReceiverKind
|
||||||
|
|
||||||
@@ -71,9 +70,9 @@ private class TowerScopeLevelProcessor(
|
|||||||
val resultCollector: CandidateCollector,
|
val resultCollector: CandidateCollector,
|
||||||
val candidateFactory: CandidateFactory,
|
val candidateFactory: CandidateFactory,
|
||||||
val group: TowerGroup
|
val group: TowerGroup
|
||||||
) : TowerScopeLevel.TowerScopeLevelProcessor<AbstractFirBasedSymbol<*>> {
|
) : TowerScopeLevel.TowerScopeLevelProcessor<FirBasedSymbol<*>> {
|
||||||
override fun consumeCandidate(
|
override fun consumeCandidate(
|
||||||
symbol: AbstractFirBasedSymbol<*>,
|
symbol: FirBasedSymbol<*>,
|
||||||
dispatchReceiverValue: ReceiverValue?,
|
dispatchReceiverValue: ReceiverValue?,
|
||||||
extensionReceiverValue: ReceiverValue?,
|
extensionReceiverValue: ReceiverValue?,
|
||||||
scope: FirScope,
|
scope: FirScope,
|
||||||
|
|||||||
+9
-9
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.scopes.FirScope
|
|||||||
import org.jetbrains.kotlin.fir.scopes.impl.FirDefaultStarImportingScope
|
import org.jetbrains.kotlin.fir.scopes.impl.FirDefaultStarImportingScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.importedFromObjectData
|
import org.jetbrains.kotlin.fir.scopes.impl.importedFromObjectData
|
||||||
import org.jetbrains.kotlin.fir.scopes.processClassifiersByName
|
import org.jetbrains.kotlin.fir.scopes.processClassifiersByName
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.types.AbstractTypeChecker
|
import org.jetbrains.kotlin.types.AbstractTypeChecker
|
||||||
@@ -34,19 +34,19 @@ enum class ProcessResult {
|
|||||||
|
|
||||||
abstract class TowerScopeLevel {
|
abstract class TowerScopeLevel {
|
||||||
|
|
||||||
sealed class Token<out T : AbstractFirBasedSymbol<*>> {
|
sealed class Token<out T : FirBasedSymbol<*>> {
|
||||||
object Properties : Token<FirVariableSymbol<*>>()
|
object Properties : Token<FirVariableSymbol<*>>()
|
||||||
object Functions : Token<FirFunctionSymbol<*>>()
|
object Functions : Token<FirFunctionSymbol<*>>()
|
||||||
object Objects : Token<AbstractFirBasedSymbol<*>>()
|
object Objects : Token<FirBasedSymbol<*>>()
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract fun processFunctionsByName(info: CallInfo, processor: TowerScopeLevelProcessor<FirFunctionSymbol<*>>): ProcessResult
|
abstract fun processFunctionsByName(info: CallInfo, processor: TowerScopeLevelProcessor<FirFunctionSymbol<*>>): ProcessResult
|
||||||
|
|
||||||
abstract fun processPropertiesByName(info: CallInfo, processor: TowerScopeLevelProcessor<FirVariableSymbol<*>>): ProcessResult
|
abstract fun processPropertiesByName(info: CallInfo, processor: TowerScopeLevelProcessor<FirVariableSymbol<*>>): ProcessResult
|
||||||
|
|
||||||
abstract fun processObjectsByName(info: CallInfo, processor: TowerScopeLevelProcessor<AbstractFirBasedSymbol<*>>): ProcessResult
|
abstract fun processObjectsByName(info: CallInfo, processor: TowerScopeLevelProcessor<FirBasedSymbol<*>>): ProcessResult
|
||||||
|
|
||||||
interface TowerScopeLevelProcessor<in T : AbstractFirBasedSymbol<*>> {
|
interface TowerScopeLevelProcessor<in T : FirBasedSymbol<*>> {
|
||||||
fun consumeCandidate(
|
fun consumeCandidate(
|
||||||
symbol: T,
|
symbol: T,
|
||||||
dispatchReceiverValue: ReceiverValue?,
|
dispatchReceiverValue: ReceiverValue?,
|
||||||
@@ -79,7 +79,7 @@ class MemberScopeTowerLevel(
|
|||||||
private val implicitExtensionInvokeMode: Boolean = false,
|
private val implicitExtensionInvokeMode: Boolean = false,
|
||||||
private val scopeSession: ScopeSession
|
private val scopeSession: ScopeSession
|
||||||
) : SessionBasedTowerLevel(session) {
|
) : SessionBasedTowerLevel(session) {
|
||||||
private fun <T : AbstractFirBasedSymbol<*>> processMembers(
|
private fun <T : FirBasedSymbol<*>> processMembers(
|
||||||
output: TowerScopeLevelProcessor<T>,
|
output: TowerScopeLevelProcessor<T>,
|
||||||
processScopeMembers: FirScope.(processor: (T) -> Unit) -> Unit
|
processScopeMembers: FirScope.(processor: (T) -> Unit) -> Unit
|
||||||
): ProcessResult {
|
): ProcessResult {
|
||||||
@@ -169,7 +169,7 @@ class MemberScopeTowerLevel(
|
|||||||
|
|
||||||
override fun processObjectsByName(
|
override fun processObjectsByName(
|
||||||
info: CallInfo,
|
info: CallInfo,
|
||||||
processor: TowerScopeLevelProcessor<AbstractFirBasedSymbol<*>>
|
processor: TowerScopeLevelProcessor<FirBasedSymbol<*>>
|
||||||
): ProcessResult {
|
): ProcessResult {
|
||||||
return ProcessResult.FOUND
|
return ProcessResult.FOUND
|
||||||
}
|
}
|
||||||
@@ -273,7 +273,7 @@ class ScopeTowerLevel(
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun <T : AbstractFirBasedSymbol<*>> consumeCallableCandidate(
|
private fun <T : FirBasedSymbol<*>> consumeCallableCandidate(
|
||||||
candidate: FirCallableSymbol<*>,
|
candidate: FirCallableSymbol<*>,
|
||||||
processor: TowerScopeLevelProcessor<T>
|
processor: TowerScopeLevelProcessor<T>
|
||||||
) {
|
) {
|
||||||
@@ -326,7 +326,7 @@ class ScopeTowerLevel(
|
|||||||
|
|
||||||
override fun processObjectsByName(
|
override fun processObjectsByName(
|
||||||
info: CallInfo,
|
info: CallInfo,
|
||||||
processor: TowerScopeLevelProcessor<AbstractFirBasedSymbol<*>>
|
processor: TowerScopeLevelProcessor<FirBasedSymbol<*>>
|
||||||
): ProcessResult {
|
): ProcessResult {
|
||||||
var empty = true
|
var empty = true
|
||||||
session.lookupTracker?.recordCallLookup(info, scope.scopeOwnerLookupNames)
|
session.lookupTracker?.recordCallLookup(info, scope.scopeOwnerLookupNames)
|
||||||
|
|||||||
+2
-2
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutorByMap
|
|||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformer
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.FirAbstractBodyResolveTransformer
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.resultType
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.resultType
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
@@ -175,7 +175,7 @@ abstract class FirDataFlowAnalyzer<FLOW : Flow>(
|
|||||||
* DataFlowAnalyzer holds variables only for declarations that have some smartcast (or can have)
|
* DataFlowAnalyzer holds variables only for declarations that have some smartcast (or can have)
|
||||||
* If there is no useful information there is no data flow variable also
|
* If there is no useful information there is no data flow variable also
|
||||||
*/
|
*/
|
||||||
val symbol: AbstractFirBasedSymbol<*> = qualifiedAccessExpression.symbol ?: return null
|
val symbol: FirBasedSymbol<*> = qualifiedAccessExpression.symbol ?: return null
|
||||||
val flow = graphBuilder.lastNode.flow
|
val flow = graphBuilder.lastNode.flow
|
||||||
var variable = variableStorage.getRealVariableWithoutUnwrappingAlias(symbol, qualifiedAccessExpression, flow) ?: return null
|
var variable = variableStorage.getRealVariableWithoutUnwrappingAlias(symbol, qualifiedAccessExpression, flow) ?: return null
|
||||||
val stability = variable.stability
|
val stability = variable.stability
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
|||||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||||
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
||||||
@@ -38,7 +38,7 @@ class VariableStorage(private val session: FirSession) {
|
|||||||
|
|
||||||
fun getOrCreateRealVariableWithoutUnwrappingAlias(
|
fun getOrCreateRealVariableWithoutUnwrappingAlias(
|
||||||
flow: Flow,
|
flow: Flow,
|
||||||
symbol: AbstractFirBasedSymbol<*>,
|
symbol: FirBasedSymbol<*>,
|
||||||
fir: FirElement,
|
fir: FirElement,
|
||||||
stability: PropertyStability
|
stability: PropertyStability
|
||||||
): RealVariable {
|
): RealVariable {
|
||||||
@@ -49,7 +49,7 @@ class VariableStorage(private val session: FirSession) {
|
|||||||
|
|
||||||
private fun getOrCreateRealVariable(
|
private fun getOrCreateRealVariable(
|
||||||
flow: Flow,
|
flow: Flow,
|
||||||
symbol: AbstractFirBasedSymbol<*>,
|
symbol: FirBasedSymbol<*>,
|
||||||
fir: FirElement,
|
fir: FirElement,
|
||||||
stability: PropertyStability
|
stability: PropertyStability
|
||||||
): RealVariable {
|
): RealVariable {
|
||||||
@@ -67,7 +67,7 @@ class VariableStorage(private val session: FirSession) {
|
|||||||
|
|
||||||
private fun getIdentifierBySymbol(
|
private fun getIdentifierBySymbol(
|
||||||
flow: Flow,
|
flow: Flow,
|
||||||
symbol: AbstractFirBasedSymbol<*>,
|
symbol: FirBasedSymbol<*>,
|
||||||
fir: FirElement,
|
fir: FirElement,
|
||||||
): Identifier {
|
): Identifier {
|
||||||
val expression = fir as? FirQualifiedAccess
|
val expression = fir as? FirQualifiedAccess
|
||||||
@@ -109,7 +109,7 @@ class VariableStorage(private val session: FirSession) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@JvmName("getOrCreateRealVariableOrNull")
|
@JvmName("getOrCreateRealVariableOrNull")
|
||||||
fun getOrCreateRealVariable(flow: Flow, symbol: AbstractFirBasedSymbol<*>?, fir: FirElement): RealVariable? =
|
fun getOrCreateRealVariable(flow: Flow, symbol: FirBasedSymbol<*>?, fir: FirElement): RealVariable? =
|
||||||
symbol.getStability(fir)?.let { getOrCreateRealVariable(flow, symbol!!, fir, it) }
|
symbol.getStability(fir)?.let { getOrCreateRealVariable(flow, symbol!!, fir, it) }
|
||||||
|
|
||||||
fun createSyntheticVariable(fir: FirElement): SyntheticVariable =
|
fun createSyntheticVariable(fir: FirElement): SyntheticVariable =
|
||||||
@@ -126,14 +126,14 @@ class VariableStorage(private val session: FirSession) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getRealVariableWithoutUnwrappingAlias(symbol: AbstractFirBasedSymbol<*>?, fir: FirElement, flow: Flow): RealVariable? {
|
fun getRealVariableWithoutUnwrappingAlias(symbol: FirBasedSymbol<*>?, fir: FirElement, flow: Flow): RealVariable? {
|
||||||
val realFir = fir.unwrapElement()
|
val realFir = fir.unwrapElement()
|
||||||
return symbol.takeIf { it.getStability(realFir) != null }?.let {
|
return symbol.takeIf { it.getStability(realFir) != null }?.let {
|
||||||
_realVariables[getIdentifierBySymbol(flow, it, realFir.unwrapElement())]
|
_realVariables[getIdentifierBySymbol(flow, it, realFir.unwrapElement())]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getRealVariable(symbol: AbstractFirBasedSymbol<*>?, fir: FirElement, flow: Flow): RealVariable? {
|
fun getRealVariable(symbol: FirBasedSymbol<*>?, fir: FirElement, flow: Flow): RealVariable? {
|
||||||
return getRealVariableWithoutUnwrappingAlias(symbol, fir, flow)?.let { flow.unwrapVariable(it) }
|
return getRealVariableWithoutUnwrappingAlias(symbol, fir, flow)?.let { flow.unwrapVariable(it) }
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -152,7 +152,7 @@ class VariableStorage(private val session: FirSession) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun removeRealVariable(symbol: AbstractFirBasedSymbol<*>) {
|
fun removeRealVariable(symbol: FirBasedSymbol<*>) {
|
||||||
_realVariables.remove(Identifier(symbol, null, null))
|
_realVariables.remove(Identifier(symbol, null, null))
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -162,7 +162,7 @@ class VariableStorage(private val session: FirSession) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@OptIn(ExperimentalContracts::class)
|
@OptIn(ExperimentalContracts::class)
|
||||||
fun AbstractFirBasedSymbol<*>?.getStability(originalFir: FirElement): PropertyStability? {
|
fun FirBasedSymbol<*>?.getStability(originalFir: FirElement): PropertyStability? {
|
||||||
contract {
|
contract {
|
||||||
returnsNotNull() implies (this@getStability != null)
|
returnsNotNull() implies (this@getStability != null)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.fir.references.FirControlFlowGraphReference
|
|||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
import org.jetbrains.kotlin.fir.resolve.dfa.*
|
import org.jetbrains.kotlin.fir.resolve.dfa.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.resultType
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.resultType
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.isNothing
|
import org.jetbrains.kotlin.fir.types.isNothing
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirDefaultVisitor
|
||||||
@@ -67,7 +67,7 @@ class ControlFlowGraphBuilder {
|
|||||||
private val exitTargetsForReturn: SymbolBasedNodeStorage<FirFunction<*>, FunctionExitNode> = SymbolBasedNodeStorage()
|
private val exitTargetsForReturn: SymbolBasedNodeStorage<FirFunction<*>, FunctionExitNode> = SymbolBasedNodeStorage()
|
||||||
private val exitTargetsForTry: Stack<CFGNode<*>> = stackOf()
|
private val exitTargetsForTry: Stack<CFGNode<*>> = stackOf()
|
||||||
private val exitsOfAnonymousFunctions: MutableMap<FirFunctionSymbol<*>, FunctionExitNode> = mutableMapOf()
|
private val exitsOfAnonymousFunctions: MutableMap<FirFunctionSymbol<*>, FunctionExitNode> = mutableMapOf()
|
||||||
private val enterToLocalClassesMembers: MutableMap<AbstractFirBasedSymbol<*>, CFGNode<*>?> = mutableMapOf()
|
private val enterToLocalClassesMembers: MutableMap<FirBasedSymbol<*>, CFGNode<*>?> = mutableMapOf()
|
||||||
|
|
||||||
private val postponedLambdas: MutableSet<FirFunctionSymbol<*>> = mutableSetOf()
|
private val postponedLambdas: MutableSet<FirFunctionSymbol<*>> = mutableSetOf()
|
||||||
private val entersToPostponedAnonymousFunctions: MutableMap<FirFunctionSymbol<*>, PostponedLambdaEnterNode> = mutableMapOf()
|
private val entersToPostponedAnonymousFunctions: MutableMap<FirFunctionSymbol<*>, PostponedLambdaEnterNode> = mutableMapOf()
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.resolve.dfa
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
import org.jetbrains.kotlin.fir.expressions.FirResolvedQualifier
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassErrorType
|
import org.jetbrains.kotlin.fir.types.ConeClassErrorType
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
@@ -18,7 +18,7 @@ import kotlin.contracts.contract
|
|||||||
// --------------------------------------- Variables ---------------------------------------
|
// --------------------------------------- Variables ---------------------------------------
|
||||||
|
|
||||||
data class Identifier(
|
data class Identifier(
|
||||||
val symbol: AbstractFirBasedSymbol<*>,
|
val symbol: FirBasedSymbol<*>,
|
||||||
val dispatchReceiver: DataFlowVariable?,
|
val dispatchReceiver: DataFlowVariable?,
|
||||||
val extensionReceiver: DataFlowVariable?
|
val extensionReceiver: DataFlowVariable?
|
||||||
) {
|
) {
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.fir.expressions.*
|
|||||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.FirNamedReferenceWithCandidate
|
import org.jetbrains.kotlin.fir.resolve.calls.FirNamedReferenceWithCandidate
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAccessorSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirAccessorSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||||
@@ -92,7 +92,7 @@ internal val FirExpression.coneType: ConeKotlinType
|
|||||||
get() = typeRef.coneType
|
get() = typeRef.coneType
|
||||||
|
|
||||||
@DfaInternals
|
@DfaInternals
|
||||||
internal val FirElement.symbol: AbstractFirBasedSymbol<*>?
|
internal val FirElement.symbol: FirBasedSymbol<*>?
|
||||||
get() = when (this) {
|
get() = when (this) {
|
||||||
is FirResolvable -> symbol
|
is FirResolvable -> symbol
|
||||||
is FirSymbolOwner<*> -> symbol
|
is FirSymbolOwner<*> -> symbol
|
||||||
@@ -105,7 +105,7 @@ internal val FirElement.symbol: AbstractFirBasedSymbol<*>?
|
|||||||
}
|
}
|
||||||
|
|
||||||
@DfaInternals
|
@DfaInternals
|
||||||
internal val FirResolvable.symbol: AbstractFirBasedSymbol<*>?
|
internal val FirResolvable.symbol: FirBasedSymbol<*>?
|
||||||
get() = when (val reference = calleeReference) {
|
get() = when (val reference = calleeReference) {
|
||||||
is FirThisReference -> reference.boundSymbol
|
is FirThisReference -> reference.boundSymbol
|
||||||
is FirResolvedNamedReference -> reference.resolvedSymbol
|
is FirResolvedNamedReference -> reference.resolvedSymbol
|
||||||
|
|||||||
+4
-4
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
|||||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.Candidate
|
import org.jetbrains.kotlin.fir.resolve.calls.Candidate
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||||
@@ -45,7 +45,7 @@ class ConeUnresolvedNameError(val name: Name) : ConeUnresolvedError() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class ConeHiddenCandidateError(
|
class ConeHiddenCandidateError(
|
||||||
val candidateSymbol: AbstractFirBasedSymbol<*>
|
val candidateSymbol: FirBasedSymbol<*>
|
||||||
) : ConeDiagnostic() {
|
) : ConeDiagnostic() {
|
||||||
override val reason: String get() = "HIDDEN: ${describeSymbol(candidateSymbol)} is invisible"
|
override val reason: String get() = "HIDDEN: ${describeSymbol(candidateSymbol)} is invisible"
|
||||||
}
|
}
|
||||||
@@ -75,7 +75,7 @@ class ConeAmbiguityError(val name: Name, val applicability: CandidateApplicabili
|
|||||||
override val reason: String get() = "Ambiguity: $name, ${candidates.map { describeSymbol(it.symbol) }}"
|
override val reason: String get() = "Ambiguity: $name, ${candidates.map { describeSymbol(it.symbol) }}"
|
||||||
}
|
}
|
||||||
|
|
||||||
class ConeOperatorAmbiguityError(val candidates: Collection<AbstractFirBasedSymbol<*>>) : ConeDiagnostic() {
|
class ConeOperatorAmbiguityError(val candidates: Collection<FirBasedSymbol<*>>) : ConeDiagnostic() {
|
||||||
override val reason: String get() = "Operator overload ambiguity. Compatible candidates: ${candidates.map { describeSymbol(it) }}"
|
override val reason: String get() = "Operator overload ambiguity. Compatible candidates: ${candidates.map { describeSymbol(it) }}"
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -137,7 +137,7 @@ class ConeUnsupportedDynamicType() : ConeDiagnostic() {
|
|||||||
override val reason: String get() = "Dynamic types are not supported in this context"
|
override val reason: String get() = "Dynamic types are not supported in this context"
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun describeSymbol(symbol: AbstractFirBasedSymbol<*>): String {
|
private fun describeSymbol(symbol: FirBasedSymbol<*>): String {
|
||||||
return when (symbol) {
|
return when (symbol) {
|
||||||
is FirClassLikeSymbol<*> -> symbol.classId.asString()
|
is FirClassLikeSymbol<*> -> symbol.classId.asString()
|
||||||
is FirCallableSymbol<*> -> symbol.callableId.toString()
|
is FirCallableSymbol<*> -> symbol.callableId.toString()
|
||||||
|
|||||||
+1
-1
@@ -75,7 +75,7 @@ fun FirSymbolProvider.getClassDeclaredPropertySymbols(classId: ClassId, name: Na
|
|||||||
return classMemberScope?.getProperties(name).orEmpty()
|
return classMemberScope?.getProperties(name).orEmpty()
|
||||||
}
|
}
|
||||||
|
|
||||||
inline fun <reified T : AbstractFirBasedSymbol<*>> FirSymbolProvider.getSymbolByTypeRef(typeRef: FirTypeRef): T? {
|
inline fun <reified T : FirBasedSymbol<*>> FirSymbolProvider.getSymbolByTypeRef(typeRef: FirTypeRef): T? {
|
||||||
val lookupTag = typeRef.coneTypeSafe<ConeLookupTagBasedType>()?.lookupTag ?: return null
|
val lookupTag = typeRef.coneTypeSafe<ConeLookupTagBasedType>()?.lookupTag ?: return null
|
||||||
return getSymbolByLookupTag(lookupTag) as? T
|
return getSymbolByLookupTag(lookupTag) as? T
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -28,7 +28,7 @@ import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.remapArguments
|
|||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.resultType
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.resultType
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.writeResultType
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.writeResultType
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.FirIntegerOperatorCall
|
import org.jetbrains.kotlin.fir.scopes.impl.FirIntegerOperatorCall
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
@@ -225,7 +225,7 @@ class FirCallCompletionResultsWriterTransformer(
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
private val AbstractFirBasedSymbol<*>.isArrayConstructorWithLambda: Boolean
|
private val FirBasedSymbol<*>.isArrayConstructorWithLambda: Boolean
|
||||||
get() {
|
get() {
|
||||||
val constructor = (this as? FirConstructorSymbol)?.fir ?: return false
|
val constructor = (this as? FirConstructorSymbol)?.fir ?: return false
|
||||||
if (constructor.valueParameters.size != 2) return false
|
if (constructor.valueParameters.size != 2) return false
|
||||||
|
|||||||
+2
-2
@@ -9,10 +9,10 @@ import org.jetbrains.kotlin.fir.FirRenderer
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
|
|
||||||
object FirPhaseCheckingPhaseManager : FirPhaseManager() {
|
object FirPhaseCheckingPhaseManager : FirPhaseManager() {
|
||||||
override fun ensureResolved(symbol: AbstractFirBasedSymbol<*>, requiredPhase: FirResolvePhase) {
|
override fun ensureResolved(symbol: FirBasedSymbol<*>, requiredPhase: FirResolvePhase) {
|
||||||
val fir = symbol.fir as FirDeclaration
|
val fir = symbol.fir as FirDeclaration
|
||||||
val availablePhase = fir.resolvePhase
|
val availablePhase = fir.resolvePhase
|
||||||
require(availablePhase >= requiredPhase) {
|
require(availablePhase >= requiredPhase) {
|
||||||
|
|||||||
+2
-2
@@ -8,11 +8,11 @@ package org.jetbrains.kotlin.fir.resolve.transformers
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.FirSessionComponent
|
import org.jetbrains.kotlin.fir.FirSessionComponent
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
|
|
||||||
abstract class FirPhaseManager : FirSessionComponent {
|
abstract class FirPhaseManager : FirSessionComponent {
|
||||||
abstract fun ensureResolved(
|
abstract fun ensureResolved(
|
||||||
symbol: AbstractFirBasedSymbol<*>,
|
symbol: FirBasedSymbol<*>,
|
||||||
requiredPhase: FirResolvePhase = FirResolvePhase.DECLARATIONS
|
requiredPhase: FirResolvePhase = FirResolvePhase.DECLARATIONS
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
+8
-8
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition
|
|||||||
import org.jetbrains.kotlin.fir.resolve.BodyResolveComponents
|
import org.jetbrains.kotlin.fir.resolve.BodyResolveComponents
|
||||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||||
import org.jetbrains.kotlin.fir.resolve.symbolProvider
|
import org.jetbrains.kotlin.fir.resolve.symbolProvider
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||||
@@ -306,7 +306,7 @@ private object WhenOnSealedClassExhaustivenessChecker : WhenExhaustivenessChecke
|
|||||||
destination: MutableCollection<WhenMissingCase>
|
destination: MutableCollection<WhenMissingCase>
|
||||||
) {
|
) {
|
||||||
val allSubclasses = subjectType.toSymbol(session)?.collectAllSubclasses(session) ?: return
|
val allSubclasses = subjectType.toSymbol(session)?.collectAllSubclasses(session) ?: return
|
||||||
val checkedSubclasses = mutableSetOf<AbstractFirBasedSymbol<*>>()
|
val checkedSubclasses = mutableSetOf<FirBasedSymbol<*>>()
|
||||||
whenExpression.accept(ConditionChecker, Flags(allSubclasses, checkedSubclasses, session))
|
whenExpression.accept(ConditionChecker, Flags(allSubclasses, checkedSubclasses, session))
|
||||||
(allSubclasses - checkedSubclasses).mapNotNullTo(destination) {
|
(allSubclasses - checkedSubclasses).mapNotNullTo(destination) {
|
||||||
when (it) {
|
when (it) {
|
||||||
@@ -318,8 +318,8 @@ private object WhenOnSealedClassExhaustivenessChecker : WhenExhaustivenessChecke
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class Flags(
|
private class Flags(
|
||||||
val allSubclasses: Set<AbstractFirBasedSymbol<*>>,
|
val allSubclasses: Set<FirBasedSymbol<*>>,
|
||||||
val checkedSubclasses: MutableSet<AbstractFirBasedSymbol<*>>,
|
val checkedSubclasses: MutableSet<FirBasedSymbol<*>>,
|
||||||
val session: FirSession
|
val session: FirSession
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -357,7 +357,7 @@ private object WhenOnSealedClassExhaustivenessChecker : WhenExhaustivenessChecke
|
|||||||
processBranch(symbol, isNegated, data)
|
processBranch(symbol, isNegated, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun processBranch(symbolToCheck: AbstractFirBasedSymbol<*>, isNegated: Boolean, flags: Flags) {
|
private fun processBranch(symbolToCheck: FirBasedSymbol<*>, isNegated: Boolean, flags: Flags) {
|
||||||
val subclassesOfType = symbolToCheck.collectAllSubclasses(flags.session)
|
val subclassesOfType = symbolToCheck.collectAllSubclasses(flags.session)
|
||||||
if (subclassesOfType.none { it in flags.allSubclasses }) {
|
if (subclassesOfType.none { it in flags.allSubclasses }) {
|
||||||
return
|
return
|
||||||
@@ -368,11 +368,11 @@ private object WhenOnSealedClassExhaustivenessChecker : WhenExhaustivenessChecke
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private fun AbstractFirBasedSymbol<*>.collectAllSubclasses(session: FirSession): Set<AbstractFirBasedSymbol<*>> {
|
private fun FirBasedSymbol<*>.collectAllSubclasses(session: FirSession): Set<FirBasedSymbol<*>> {
|
||||||
return mutableSetOf<AbstractFirBasedSymbol<*>>().apply { collectAllSubclassesTo(this, session) }
|
return mutableSetOf<FirBasedSymbol<*>>().apply { collectAllSubclassesTo(this, session) }
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun AbstractFirBasedSymbol<*>.collectAllSubclassesTo(destination: MutableSet<AbstractFirBasedSymbol<*>>, session: FirSession) {
|
private fun FirBasedSymbol<*>.collectAllSubclassesTo(destination: MutableSet<FirBasedSymbol<*>>, session: FirSession) {
|
||||||
if (this !is FirRegularClassSymbol) {
|
if (this !is FirRegularClassSymbol) {
|
||||||
destination.add(this)
|
destination.add(this)
|
||||||
return
|
return
|
||||||
|
|||||||
+3
-3
@@ -11,13 +11,13 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
||||||
|
|
||||||
fun AbstractFirBasedSymbol<*>.ensureResolved(
|
fun FirBasedSymbol<*>.ensureResolved(
|
||||||
requiredPhase: FirResolvePhase,
|
requiredPhase: FirResolvePhase,
|
||||||
// TODO: Currently, the parameter is unused but it's needed to guarantee that all call-sites are able to supply use-site session
|
// TODO: Currently, the parameter is unused but it's needed to guarantee that all call-sites are able to supply use-site session
|
||||||
// TODO: Decide which one session should be used and probably get rid of the parameter if use-site session is not needed
|
// TODO: Decide which one session should be used and probably get rid of the parameter if use-site session is not needed
|
||||||
@@ -35,7 +35,7 @@ fun FirSymbolOwner<*>.ensureResolved(
|
|||||||
symbol.ensureResolved(requiredPhase, useSiteSession)
|
symbol.ensureResolved(requiredPhase, useSiteSession)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun AbstractFirBasedSymbol<*>.ensureResolvedForCalls(
|
fun FirBasedSymbol<*>.ensureResolvedForCalls(
|
||||||
useSiteSession: FirSession,
|
useSiteSession: FirSession,
|
||||||
) {
|
) {
|
||||||
val fir = fir as FirDeclaration
|
val fir = fir as FirDeclaration
|
||||||
|
|||||||
+2
-2
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.fir.expressions.builder.buildArgumentList
|
|||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildArrayOfCall
|
import org.jetbrains.kotlin.fir.expressions.builder.buildArrayOfCall
|
||||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.FirNamedReferenceWithCandidate
|
import org.jetbrains.kotlin.fir.resolve.calls.FirNamedReferenceWithCandidate
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.isArrayType
|
import org.jetbrains.kotlin.fir.types.isArrayType
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -68,7 +68,7 @@ internal class FirArrayOfCallTransformer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun FirFunctionCall.getOriginalFunction(): FirCallableDeclaration<*>? {
|
private fun FirFunctionCall.getOriginalFunction(): FirCallableDeclaration<*>? {
|
||||||
val symbol: AbstractFirBasedSymbol<*>? = when (val reference = calleeReference) {
|
val symbol: FirBasedSymbol<*>? = when (val reference = calleeReference) {
|
||||||
is FirResolvedNamedReference -> reference.resolvedSymbol
|
is FirResolvedNamedReference -> reference.resolvedSymbol
|
||||||
is FirNamedReferenceWithCandidate -> reference.candidateSymbol
|
is FirNamedReferenceWithCandidate -> reference.candidateSymbol
|
||||||
else -> null
|
else -> null
|
||||||
|
|||||||
+2
-2
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclarationDataRegistry
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirTypedDeclaration
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||||
import org.jetbrains.kotlin.fir.resolvedTypeFromPrototype
|
import org.jetbrains.kotlin.fir.resolvedTypeFromPrototype
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
|
|
||||||
@@ -49,5 +49,5 @@ var FirDeclarationAttributes.fakeOverrideSubstitution: FakeOverrideSubstitution?
|
|||||||
|
|
||||||
data class FakeOverrideSubstitution(
|
data class FakeOverrideSubstitution(
|
||||||
val substitutor: ConeSubstitutor,
|
val substitutor: ConeSubstitutor,
|
||||||
val baseSymbol: AbstractFirBasedSymbol<*>
|
val baseSymbol: FirBasedSymbol<*>
|
||||||
)
|
)
|
||||||
|
|||||||
+3
-3
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirOverrideChecker
|
import org.jetbrains.kotlin.fir.scopes.FirOverrideChecker
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
import org.jetbrains.kotlin.fir.scopes.FirTypeScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
|
|
||||||
abstract class AbstractFirOverrideScope(
|
abstract class AbstractFirOverrideScope(
|
||||||
@@ -49,9 +49,9 @@ abstract class AbstractFirOverrideScope(
|
|||||||
protected open fun FirCallableSymbol<*>.getOverridden(overrideCandidates: Set<FirCallableSymbol<*>>): FirCallableSymbol<*>? {
|
protected open fun FirCallableSymbol<*>.getOverridden(overrideCandidates: Set<FirCallableSymbol<*>>): FirCallableSymbol<*>? {
|
||||||
if (overrideByBase.containsKey(this)) return overrideByBase[this]
|
if (overrideByBase.containsKey(this)) return overrideByBase[this]
|
||||||
|
|
||||||
val baseDeclaration = (this as AbstractFirBasedSymbol<*>).fir as FirCallableMemberDeclaration<*>
|
val baseDeclaration = (this as FirBasedSymbol<*>).fir as FirCallableMemberDeclaration<*>
|
||||||
val override = overrideCandidates.firstOrNull {
|
val override = overrideCandidates.firstOrNull {
|
||||||
val overrideCandidate = (it as AbstractFirBasedSymbol<*>).fir as FirCallableMemberDeclaration<*>
|
val overrideCandidate = (it as FirBasedSymbol<*>).fir as FirCallableMemberDeclaration<*>
|
||||||
baseDeclaration.modality != Modality.FINAL && similarFunctionsOrBothProperties(overrideCandidate, baseDeclaration)
|
baseDeclaration.modality != Modality.FINAL && similarFunctionsOrBothProperties(overrideCandidate, baseDeclaration)
|
||||||
} // TODO: two or more overrides for one fun?
|
} // TODO: two or more overrides for one fun?
|
||||||
overrideByBase[this] = override
|
overrideByBase[this] = override
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
|
|||||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
|
import org.jetbrains.kotlin.fir.resolve.substitution.substitutorByMap
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
|
import org.jetbrains.kotlin.fir.symbols.ConeTypeParameterLookupTag
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLookupTagWithFixedSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLookupTagWithFixedSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef
|
import org.jetbrains.kotlin.fir.types.builder.buildErrorTypeRef
|
||||||
@@ -188,7 +188,7 @@ fun ConeKotlinType.isUnsafeVarianceType(session: FirSession): Boolean {
|
|||||||
return type.attributes.unsafeVarianceType != null
|
return type.attributes.unsafeVarianceType != null
|
||||||
}
|
}
|
||||||
|
|
||||||
fun ConeKotlinType.toSymbol(session: FirSession): AbstractFirBasedSymbol<*>? {
|
fun ConeKotlinType.toSymbol(session: FirSession): FirBasedSymbol<*>? {
|
||||||
return (this as? ConeLookupTagBasedType)?.lookupTag?.toSymbol(session)
|
return (this as? ConeLookupTagBasedType)?.lookupTag?.toSymbol(session)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
package org.jetbrains.kotlin.fir
|
package org.jetbrains.kotlin.fir
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
|
|
||||||
interface FirSymbolOwner<E> : FirElement where E : FirSymbolOwner<E>, E : FirDeclaration {
|
interface FirSymbolOwner<E> : FirElement where E : FirSymbolOwner<E>, E : FirDeclaration {
|
||||||
override val source: FirSourceElement?
|
override val source: FirSourceElement?
|
||||||
val symbol: AbstractFirBasedSymbol<E>
|
val symbol: FirBasedSymbol<E>
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitSymbolOwner(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitSymbolOwner(this, data)
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.references
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
abstract class FirBackingFieldReference : FirResolvedNamedReference() {
|
abstract class FirBackingFieldReference : FirResolvedNamedReference() {
|
||||||
abstract override val source: FirSourceElement?
|
abstract override val source: FirSourceElement?
|
||||||
abstract override val name: Name
|
abstract override val name: Name
|
||||||
abstract override val candidateSymbol: AbstractFirBasedSymbol<*>?
|
abstract override val candidateSymbol: FirBasedSymbol<*>?
|
||||||
abstract override val resolvedSymbol: FirBackingFieldSymbol
|
abstract override val resolvedSymbol: FirBackingFieldSymbol
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitBackingFieldReference(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitBackingFieldReference(this, data)
|
||||||
|
|||||||
+2
-2
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.references
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
abstract class FirDelegateFieldReference : FirResolvedNamedReference() {
|
abstract class FirDelegateFieldReference : FirResolvedNamedReference() {
|
||||||
abstract override val source: FirSourceElement?
|
abstract override val source: FirSourceElement?
|
||||||
abstract override val name: Name
|
abstract override val name: Name
|
||||||
abstract override val candidateSymbol: AbstractFirBasedSymbol<*>?
|
abstract override val candidateSymbol: FirBasedSymbol<*>?
|
||||||
abstract override val resolvedSymbol: FirDelegateFieldSymbol<*>
|
abstract override val resolvedSymbol: FirDelegateFieldSymbol<*>
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitDelegateFieldReference(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitDelegateFieldReference(this, data)
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.fir.FirElement
|
|||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||||
import org.jetbrains.kotlin.fir.diagnostics.FirDiagnosticHolder
|
import org.jetbrains.kotlin.fir.diagnostics.FirDiagnosticHolder
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
abstract class FirErrorNamedReference : FirNamedReference(), FirDiagnosticHolder {
|
abstract class FirErrorNamedReference : FirNamedReference(), FirDiagnosticHolder {
|
||||||
abstract override val source: FirSourceElement?
|
abstract override val source: FirSourceElement?
|
||||||
abstract override val name: Name
|
abstract override val name: Name
|
||||||
abstract override val candidateSymbol: AbstractFirBasedSymbol<*>?
|
abstract override val candidateSymbol: FirBasedSymbol<*>?
|
||||||
abstract override val diagnostic: ConeDiagnostic
|
abstract override val diagnostic: ConeDiagnostic
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitErrorNamedReference(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitErrorNamedReference(this, data)
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.references
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
abstract class FirNamedReference : FirReference() {
|
abstract class FirNamedReference : FirReference() {
|
||||||
abstract override val source: FirSourceElement?
|
abstract override val source: FirSourceElement?
|
||||||
abstract val name: Name
|
abstract val name: Name
|
||||||
abstract val candidateSymbol: AbstractFirBasedSymbol<*>?
|
abstract val candidateSymbol: FirBasedSymbol<*>?
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitNamedReference(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitNamedReference(this, data)
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.references
|
|||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.CallableReferenceMappedArguments
|
import org.jetbrains.kotlin.fir.resolve.calls.CallableReferenceMappedArguments
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
@@ -21,8 +21,8 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
abstract class FirResolvedCallableReference : FirResolvedNamedReference() {
|
abstract class FirResolvedCallableReference : FirResolvedNamedReference() {
|
||||||
abstract override val source: FirSourceElement?
|
abstract override val source: FirSourceElement?
|
||||||
abstract override val name: Name
|
abstract override val name: Name
|
||||||
abstract override val candidateSymbol: AbstractFirBasedSymbol<*>?
|
abstract override val candidateSymbol: FirBasedSymbol<*>?
|
||||||
abstract override val resolvedSymbol: AbstractFirBasedSymbol<*>
|
abstract override val resolvedSymbol: FirBasedSymbol<*>
|
||||||
abstract val inferredTypeArguments: List<ConeKotlinType>
|
abstract val inferredTypeArguments: List<ConeKotlinType>
|
||||||
abstract val mappedArguments: CallableReferenceMappedArguments
|
abstract val mappedArguments: CallableReferenceMappedArguments
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.references
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
@@ -19,8 +19,8 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
abstract class FirResolvedNamedReference : FirNamedReference() {
|
abstract class FirResolvedNamedReference : FirNamedReference() {
|
||||||
abstract override val source: FirSourceElement?
|
abstract override val source: FirSourceElement?
|
||||||
abstract override val name: Name
|
abstract override val name: Name
|
||||||
abstract override val candidateSymbol: AbstractFirBasedSymbol<*>?
|
abstract override val candidateSymbol: FirBasedSymbol<*>?
|
||||||
abstract val resolvedSymbol: AbstractFirBasedSymbol<*>
|
abstract val resolvedSymbol: FirBasedSymbol<*>
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitResolvedNamedReference(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitResolvedNamedReference(this, data)
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.references
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
abstract class FirThisReference : FirReference() {
|
abstract class FirThisReference : FirReference() {
|
||||||
abstract override val source: FirSourceElement?
|
abstract override val source: FirSourceElement?
|
||||||
abstract val labelName: String?
|
abstract val labelName: String?
|
||||||
abstract val boundSymbol: AbstractFirBasedSymbol<*>?
|
abstract val boundSymbol: FirBasedSymbol<*>?
|
||||||
|
|
||||||
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitThisReference(this, data)
|
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R = visitor.visitThisReference(this, data)
|
||||||
|
|
||||||
@@ -26,5 +26,5 @@ abstract class FirThisReference : FirReference() {
|
|||||||
override fun <E: FirElement, D> transform(transformer: FirTransformer<D>, data: D): E =
|
override fun <E: FirElement, D> transform(transformer: FirTransformer<D>, data: D): E =
|
||||||
transformer.transformThisReference(this, data) as E
|
transformer.transformThisReference(this, data) as E
|
||||||
|
|
||||||
abstract fun replaceBoundSymbol(newBoundSymbol: AbstractFirBasedSymbol<*>?)
|
abstract fun replaceBoundSymbol(newBoundSymbol: FirBasedSymbol<*>?)
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement
|
|||||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||||
import org.jetbrains.kotlin.fir.references.FirBackingFieldReference
|
import org.jetbrains.kotlin.fir.references.FirBackingFieldReference
|
||||||
import org.jetbrains.kotlin.fir.references.impl.FirBackingFieldReferenceImpl
|
import org.jetbrains.kotlin.fir.references.impl.FirBackingFieldReferenceImpl
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
@FirBuilderDsl
|
@FirBuilderDsl
|
||||||
class FirBackingFieldReferenceBuilder {
|
class FirBackingFieldReferenceBuilder {
|
||||||
var source: FirSourceElement? = null
|
var source: FirSourceElement? = null
|
||||||
var candidateSymbol: AbstractFirBasedSymbol<*>? = null
|
var candidateSymbol: FirBasedSymbol<*>? = null
|
||||||
lateinit var resolvedSymbol: FirBackingFieldSymbol
|
lateinit var resolvedSymbol: FirBackingFieldSymbol
|
||||||
|
|
||||||
fun build(): FirBackingFieldReference {
|
fun build(): FirBackingFieldReference {
|
||||||
|
|||||||
+2
-2
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement
|
|||||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||||
import org.jetbrains.kotlin.fir.references.FirDelegateFieldReference
|
import org.jetbrains.kotlin.fir.references.FirDelegateFieldReference
|
||||||
import org.jetbrains.kotlin.fir.references.impl.FirDelegateFieldReferenceImpl
|
import org.jetbrains.kotlin.fir.references.impl.FirDelegateFieldReferenceImpl
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
@FirBuilderDsl
|
@FirBuilderDsl
|
||||||
class FirDelegateFieldReferenceBuilder {
|
class FirDelegateFieldReferenceBuilder {
|
||||||
var source: FirSourceElement? = null
|
var source: FirSourceElement? = null
|
||||||
var candidateSymbol: AbstractFirBasedSymbol<*>? = null
|
var candidateSymbol: FirBasedSymbol<*>? = null
|
||||||
lateinit var resolvedSymbol: FirDelegateFieldSymbol<*>
|
lateinit var resolvedSymbol: FirDelegateFieldSymbol<*>
|
||||||
|
|
||||||
fun build(): FirDelegateFieldReference {
|
fun build(): FirDelegateFieldReference {
|
||||||
|
|||||||
+2
-2
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
|||||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.impl.FirErrorNamedReferenceImpl
|
import org.jetbrains.kotlin.fir.references.impl.FirErrorNamedReferenceImpl
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
@FirBuilderDsl
|
@FirBuilderDsl
|
||||||
class FirErrorNamedReferenceBuilder {
|
class FirErrorNamedReferenceBuilder {
|
||||||
var source: FirSourceElement? = null
|
var source: FirSourceElement? = null
|
||||||
var candidateSymbol: AbstractFirBasedSymbol<*>? = null
|
var candidateSymbol: FirBasedSymbol<*>? = null
|
||||||
lateinit var diagnostic: ConeDiagnostic
|
lateinit var diagnostic: ConeDiagnostic
|
||||||
|
|
||||||
fun build(): FirErrorNamedReference {
|
fun build(): FirErrorNamedReference {
|
||||||
|
|||||||
+1
-1
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement
|
|||||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||||
import org.jetbrains.kotlin.fir.references.impl.FirExplicitThisReference
|
import org.jetbrains.kotlin.fir.references.impl.FirExplicitThisReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
+2
-2
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement
|
|||||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||||
import org.jetbrains.kotlin.fir.references.impl.FirImplicitThisReference
|
import org.jetbrains.kotlin.fir.references.impl.FirImplicitThisReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
|
|
||||||
@FirBuilderDsl
|
@FirBuilderDsl
|
||||||
class FirImplicitThisReferenceBuilder {
|
class FirImplicitThisReferenceBuilder {
|
||||||
var boundSymbol: AbstractFirBasedSymbol<*>? = null
|
var boundSymbol: FirBasedSymbol<*>? = null
|
||||||
|
|
||||||
fun build(): FirThisReference {
|
fun build(): FirThisReference {
|
||||||
return FirImplicitThisReference(
|
return FirImplicitThisReference(
|
||||||
|
|||||||
+2
-2
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement
|
|||||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.impl.FirPropertyFromParameterResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.impl.FirPropertyFromParameterResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
class FirPropertyFromParameterResolvedNamedReferenceBuilder {
|
class FirPropertyFromParameterResolvedNamedReferenceBuilder {
|
||||||
var source: FirSourceElement? = null
|
var source: FirSourceElement? = null
|
||||||
lateinit var name: Name
|
lateinit var name: Name
|
||||||
lateinit var resolvedSymbol: AbstractFirBasedSymbol<*>
|
lateinit var resolvedSymbol: FirBasedSymbol<*>
|
||||||
|
|
||||||
@OptIn(FirImplementationDetail::class)
|
@OptIn(FirImplementationDetail::class)
|
||||||
fun build(): FirResolvedNamedReference {
|
fun build(): FirResolvedNamedReference {
|
||||||
|
|||||||
+2
-2
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
|||||||
import org.jetbrains.kotlin.fir.references.FirResolvedCallableReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedCallableReference
|
||||||
import org.jetbrains.kotlin.fir.references.impl.FirResolvedCallableReferenceImpl
|
import org.jetbrains.kotlin.fir.references.impl.FirResolvedCallableReferenceImpl
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.CallableReferenceMappedArguments
|
import org.jetbrains.kotlin.fir.resolve.calls.CallableReferenceMappedArguments
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
class FirResolvedCallableReferenceBuilder {
|
class FirResolvedCallableReferenceBuilder {
|
||||||
var source: FirSourceElement? = null
|
var source: FirSourceElement? = null
|
||||||
lateinit var name: Name
|
lateinit var name: Name
|
||||||
lateinit var resolvedSymbol: AbstractFirBasedSymbol<*>
|
lateinit var resolvedSymbol: FirBasedSymbol<*>
|
||||||
val inferredTypeArguments: MutableList<ConeKotlinType> = mutableListOf()
|
val inferredTypeArguments: MutableList<ConeKotlinType> = mutableListOf()
|
||||||
lateinit var mappedArguments: CallableReferenceMappedArguments
|
lateinit var mappedArguments: CallableReferenceMappedArguments
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement
|
|||||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.impl.FirResolvedNamedReferenceImpl
|
import org.jetbrains.kotlin.fir.references.impl.FirResolvedNamedReferenceImpl
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
@@ -23,7 +23,7 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
class FirResolvedNamedReferenceBuilder {
|
class FirResolvedNamedReferenceBuilder {
|
||||||
var source: FirSourceElement? = null
|
var source: FirSourceElement? = null
|
||||||
lateinit var name: Name
|
lateinit var name: Name
|
||||||
lateinit var resolvedSymbol: AbstractFirBasedSymbol<*>
|
lateinit var resolvedSymbol: FirBasedSymbol<*>
|
||||||
|
|
||||||
fun build(): FirResolvedNamedReference {
|
fun build(): FirResolvedNamedReference {
|
||||||
return FirResolvedNamedReferenceImpl(
|
return FirResolvedNamedReferenceImpl(
|
||||||
|
|||||||
+2
-2
@@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.FirSourceElement
|
|||||||
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
import org.jetbrains.kotlin.fir.builder.FirBuilderDsl
|
||||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference
|
import org.jetbrains.kotlin.fir.references.impl.FirSimpleNamedReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
@@ -24,7 +24,7 @@ import org.jetbrains.kotlin.name.Name
|
|||||||
class FirSimpleNamedReferenceBuilder {
|
class FirSimpleNamedReferenceBuilder {
|
||||||
var source: FirSourceElement? = null
|
var source: FirSourceElement? = null
|
||||||
lateinit var name: Name
|
lateinit var name: Name
|
||||||
var candidateSymbol: AbstractFirBasedSymbol<*>? = null
|
var candidateSymbol: FirBasedSymbol<*>? = null
|
||||||
|
|
||||||
@OptIn(FirImplementationDetail::class)
|
@OptIn(FirImplementationDetail::class)
|
||||||
fun build(): FirNamedReference {
|
fun build(): FirNamedReference {
|
||||||
|
|||||||
+2
-2
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.references.impl
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.references.FirBackingFieldReference
|
import org.jetbrains.kotlin.fir.references.FirBackingFieldReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirBackingFieldSymbol
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
|
|
||||||
internal class FirBackingFieldReferenceImpl(
|
internal class FirBackingFieldReferenceImpl(
|
||||||
override val source: FirSourceElement?,
|
override val source: FirSourceElement?,
|
||||||
override val candidateSymbol: AbstractFirBasedSymbol<*>?,
|
override val candidateSymbol: FirBasedSymbol<*>?,
|
||||||
override val resolvedSymbol: FirBackingFieldSymbol,
|
override val resolvedSymbol: FirBackingFieldSymbol,
|
||||||
) : FirBackingFieldReference() {
|
) : FirBackingFieldReference() {
|
||||||
override val name: Name get() = Name.identifier("\$field")
|
override val name: Name get() = Name.identifier("\$field")
|
||||||
|
|||||||
+2
-2
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.references.impl
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.references.FirDelegateFieldReference
|
import org.jetbrains.kotlin.fir.references.FirDelegateFieldReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirDelegateFieldSymbol
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
|
|
||||||
internal class FirDelegateFieldReferenceImpl(
|
internal class FirDelegateFieldReferenceImpl(
|
||||||
override val source: FirSourceElement?,
|
override val source: FirSourceElement?,
|
||||||
override val candidateSymbol: AbstractFirBasedSymbol<*>?,
|
override val candidateSymbol: FirBasedSymbol<*>?,
|
||||||
override val resolvedSymbol: FirDelegateFieldSymbol<*>,
|
override val resolvedSymbol: FirDelegateFieldSymbol<*>,
|
||||||
) : FirDelegateFieldReference() {
|
) : FirDelegateFieldReference() {
|
||||||
override val name: Name get() = Name.identifier("\$delegate")
|
override val name: Name get() = Name.identifier("\$delegate")
|
||||||
|
|||||||
+2
-2
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.references.impl
|
|||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
||||||
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
import org.jetbrains.kotlin.fir.references.FirErrorNamedReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
|
|
||||||
internal class FirErrorNamedReferenceImpl(
|
internal class FirErrorNamedReferenceImpl(
|
||||||
override val source: FirSourceElement?,
|
override val source: FirSourceElement?,
|
||||||
override val candidateSymbol: AbstractFirBasedSymbol<*>?,
|
override val candidateSymbol: FirBasedSymbol<*>?,
|
||||||
override val diagnostic: ConeDiagnostic,
|
override val diagnostic: ConeDiagnostic,
|
||||||
) : FirErrorNamedReference() {
|
) : FirErrorNamedReference() {
|
||||||
override val name: Name = Name.special("<${diagnostic.reason}>")
|
override val name: Name = Name.special("<${diagnostic.reason}>")
|
||||||
|
|||||||
+3
-3
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.references.impl
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -19,7 +19,7 @@ internal class FirExplicitThisReference(
|
|||||||
override val source: FirSourceElement?,
|
override val source: FirSourceElement?,
|
||||||
override val labelName: String?,
|
override val labelName: String?,
|
||||||
) : FirThisReference() {
|
) : FirThisReference() {
|
||||||
override var boundSymbol: AbstractFirBasedSymbol<*>? = null
|
override var boundSymbol: FirBasedSymbol<*>? = null
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ internal class FirExplicitThisReference(
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun replaceBoundSymbol(newBoundSymbol: AbstractFirBasedSymbol<*>?) {
|
override fun replaceBoundSymbol(newBoundSymbol: FirBasedSymbol<*>?) {
|
||||||
boundSymbol = newBoundSymbol
|
boundSymbol = newBoundSymbol
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.references.impl
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.references.FirThisReference
|
import org.jetbrains.kotlin.fir.references.FirThisReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
internal class FirImplicitThisReference(
|
internal class FirImplicitThisReference(
|
||||||
override val boundSymbol: AbstractFirBasedSymbol<*>?,
|
override val boundSymbol: FirBasedSymbol<*>?,
|
||||||
) : FirThisReference() {
|
) : FirThisReference() {
|
||||||
override val source: FirSourceElement? get() = null
|
override val source: FirSourceElement? get() = null
|
||||||
override val labelName: String? get() = null
|
override val labelName: String? get() = null
|
||||||
@@ -27,5 +27,5 @@ internal class FirImplicitThisReference(
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun replaceBoundSymbol(newBoundSymbol: AbstractFirBasedSymbol<*>?) {}
|
override fun replaceBoundSymbol(newBoundSymbol: FirBasedSymbol<*>?) {}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.references.impl
|
|||||||
import org.jetbrains.kotlin.fir.FirImplementationDetail
|
import org.jetbrains.kotlin.fir.FirImplementationDetail
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
@@ -20,9 +20,9 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
class FirPropertyFromParameterResolvedNamedReference @FirImplementationDetail constructor(
|
class FirPropertyFromParameterResolvedNamedReference @FirImplementationDetail constructor(
|
||||||
override val source: FirSourceElement?,
|
override val source: FirSourceElement?,
|
||||||
override val name: Name,
|
override val name: Name,
|
||||||
override val resolvedSymbol: AbstractFirBasedSymbol<*>,
|
override val resolvedSymbol: FirBasedSymbol<*>,
|
||||||
) : FirResolvedNamedReference() {
|
) : FirResolvedNamedReference() {
|
||||||
override val candidateSymbol: AbstractFirBasedSymbol<*>? get() = null
|
override val candidateSymbol: FirBasedSymbol<*>? get() = null
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.references.impl
|
|||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.references.FirResolvedCallableReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedCallableReference
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.CallableReferenceMappedArguments
|
import org.jetbrains.kotlin.fir.resolve.calls.CallableReferenceMappedArguments
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
@@ -21,11 +21,11 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
internal class FirResolvedCallableReferenceImpl(
|
internal class FirResolvedCallableReferenceImpl(
|
||||||
override val source: FirSourceElement?,
|
override val source: FirSourceElement?,
|
||||||
override val name: Name,
|
override val name: Name,
|
||||||
override val resolvedSymbol: AbstractFirBasedSymbol<*>,
|
override val resolvedSymbol: FirBasedSymbol<*>,
|
||||||
override val inferredTypeArguments: MutableList<ConeKotlinType>,
|
override val inferredTypeArguments: MutableList<ConeKotlinType>,
|
||||||
override val mappedArguments: CallableReferenceMappedArguments,
|
override val mappedArguments: CallableReferenceMappedArguments,
|
||||||
) : FirResolvedCallableReference() {
|
) : FirResolvedCallableReference() {
|
||||||
override val candidateSymbol: AbstractFirBasedSymbol<*>? get() = null
|
override val candidateSymbol: FirBasedSymbol<*>? get() = null
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -7,7 +7,7 @@ package org.jetbrains.kotlin.fir.references.impl
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
@@ -19,9 +19,9 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
internal class FirResolvedNamedReferenceImpl(
|
internal class FirResolvedNamedReferenceImpl(
|
||||||
override val source: FirSourceElement?,
|
override val source: FirSourceElement?,
|
||||||
override val name: Name,
|
override val name: Name,
|
||||||
override val resolvedSymbol: AbstractFirBasedSymbol<*>,
|
override val resolvedSymbol: FirBasedSymbol<*>,
|
||||||
) : FirResolvedNamedReference() {
|
) : FirResolvedNamedReference() {
|
||||||
override val candidateSymbol: AbstractFirBasedSymbol<*>? get() = null
|
override val candidateSymbol: FirBasedSymbol<*>? get() = null
|
||||||
|
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.references.impl
|
|||||||
import org.jetbrains.kotlin.fir.FirImplementationDetail
|
import org.jetbrains.kotlin.fir.FirImplementationDetail
|
||||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.fir.visitors.*
|
import org.jetbrains.kotlin.fir.visitors.*
|
||||||
|
|
||||||
@@ -20,7 +20,7 @@ import org.jetbrains.kotlin.fir.visitors.*
|
|||||||
open class FirSimpleNamedReference @FirImplementationDetail constructor(
|
open class FirSimpleNamedReference @FirImplementationDetail constructor(
|
||||||
override val source: FirSourceElement?,
|
override val source: FirSourceElement?,
|
||||||
override val name: Name,
|
override val name: Name,
|
||||||
override val candidateSymbol: AbstractFirBasedSymbol<*>?,
|
override val candidateSymbol: FirBasedSymbol<*>?,
|
||||||
) : FirNamedReference() {
|
) : FirNamedReference() {
|
||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {}
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ import org.jetbrains.kotlin.fir.declarations.*
|
|||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.*
|
import org.jetbrains.kotlin.fir.expressions.impl.*
|
||||||
import org.jetbrains.kotlin.fir.references.*
|
import org.jetbrains.kotlin.fir.references.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
||||||
import org.jetbrains.kotlin.name.StandardClassIds
|
import org.jetbrains.kotlin.name.StandardClassIds
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
@@ -1051,7 +1051,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
|
|||||||
print("*")
|
print("*")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun AbstractFirBasedSymbol<*>.render(): String {
|
private fun FirBasedSymbol<*>.render(): String {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
is FirCallableSymbol<*> -> callableId.toString()
|
is FirCallableSymbol<*> -> callableId.toString()
|
||||||
is FirClassLikeSymbol<*> -> classId.toString()
|
is FirClassLikeSymbol<*> -> classId.toString()
|
||||||
@@ -1117,7 +1117,7 @@ class FirRenderer(builder: StringBuilder, private val mode: RenderMode = RenderM
|
|||||||
print("|")
|
print("|")
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun AbstractFirBasedSymbol<*>.unwrapIntersectionOverrides(): AbstractFirBasedSymbol<*> {
|
private fun FirBasedSymbol<*>.unwrapIntersectionOverrides(): FirBasedSymbol<*> {
|
||||||
(this as? FirCallableSymbol<*>)?.baseForIntersectionOverride?.let { return it.unwrapIntersectionOverrides() }
|
(this as? FirCallableSymbol<*>)?.baseForIntersectionOverride?.let { return it.unwrapIntersectionOverrides() }
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,21 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2018 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.symbols
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSymbolOwner
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
|
||||||
|
|
||||||
abstract class AbstractFirBasedSymbol<E> : FirBasedSymbol<E> where E : FirSymbolOwner<E>, E : FirDeclaration {
|
|
||||||
private var _fir: E? = null
|
|
||||||
|
|
||||||
override val fir: E
|
|
||||||
get() = _fir
|
|
||||||
?: error("Fir is not initialized for $this")
|
|
||||||
|
|
||||||
override fun bind(e: E) {
|
|
||||||
_fir = e
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -8,8 +8,14 @@ package org.jetbrains.kotlin.fir.symbols
|
|||||||
import org.jetbrains.kotlin.fir.FirSymbolOwner
|
import org.jetbrains.kotlin.fir.FirSymbolOwner
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
|
|
||||||
interface FirBasedSymbol<E> where E : FirSymbolOwner<E>, E : FirDeclaration {
|
abstract class FirBasedSymbol<E> where E : FirSymbolOwner<E>, E : FirDeclaration {
|
||||||
val fir: E
|
private var _fir: E? = null
|
||||||
|
|
||||||
fun bind(e: E)
|
val fir: E
|
||||||
|
get() = _fir
|
||||||
|
?: error("Fir is not initialized for $this")
|
||||||
|
|
||||||
|
fun bind(e: E) {
|
||||||
|
_fir = e
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -6,8 +6,8 @@
|
|||||||
package org.jetbrains.kotlin.fir.symbols.impl
|
package org.jetbrains.kotlin.fir.symbols.impl
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
|
import org.jetbrains.kotlin.fir.declarations.FirAnonymousInitializer
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
|
|
||||||
class FirAnonymousInitializerSymbol : AbstractFirBasedSymbol<FirAnonymousInitializer>() {
|
class FirAnonymousInitializerSymbol : FirBasedSymbol<FirAnonymousInitializer>() {
|
||||||
override fun toString(): String = "${this::class.simpleName} <init>"
|
override fun toString(): String = "${this::class.simpleName} <init>"
|
||||||
}
|
}
|
||||||
@@ -9,10 +9,10 @@ import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
import org.jetbrains.kotlin.fir.declarations.FirFunction
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirMemberDeclaration
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.name.CallableId
|
import org.jetbrains.kotlin.name.CallableId
|
||||||
|
|
||||||
abstract class FirCallableSymbol<D : FirCallableDeclaration<D>> : AbstractFirBasedSymbol<D>() {
|
abstract class FirCallableSymbol<D : FirCallableDeclaration<D>> : FirBasedSymbol<D>() {
|
||||||
abstract val callableId: CallableId
|
abstract val callableId: CallableId
|
||||||
|
|
||||||
override fun toString(): String = "${this::class.simpleName} $callableId"
|
override fun toString(): String = "${this::class.simpleName} $callableId"
|
||||||
|
|||||||
@@ -7,10 +7,10 @@ package org.jetbrains.kotlin.fir.symbols.impl
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSymbolOwner
|
import org.jetbrains.kotlin.fir.FirSymbolOwner
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassifierLookupTag
|
import org.jetbrains.kotlin.fir.symbols.ConeClassifierLookupTag
|
||||||
|
|
||||||
sealed class FirClassifierSymbol<E> : AbstractFirBasedSymbol<E>()
|
sealed class FirClassifierSymbol<E> : FirBasedSymbol<E>()
|
||||||
where E : FirSymbolOwner<E>, E : FirDeclaration {
|
where E : FirSymbolOwner<E>, E : FirDeclaration {
|
||||||
abstract fun toLookupTag(): ConeClassifierLookupTag
|
abstract fun toLookupTag(): ConeClassifierLookupTag
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -48,7 +48,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
|
|
||||||
symbolOwner.configure {
|
symbolOwner.configure {
|
||||||
withArg("E", symbolOwner, declaration)
|
withArg("E", symbolOwner, declaration)
|
||||||
+symbolWithPackage("fir.symbols", "AbstractFirBasedSymbol", "E")
|
+symbolWithPackage("fir.symbols", "FirBasedSymbol", "E")
|
||||||
}
|
}
|
||||||
|
|
||||||
typeParameterRef.configure {
|
typeParameterRef.configure {
|
||||||
@@ -560,11 +560,11 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
|
|
||||||
namedReference.configure {
|
namedReference.configure {
|
||||||
+name
|
+name
|
||||||
+field("candidateSymbol", abstractFirBasedSymbolType, "*", nullable = true)
|
+field("candidateSymbol", firBasedSymbolType, "*", nullable = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
resolvedNamedReference.configure {
|
resolvedNamedReference.configure {
|
||||||
+field("resolvedSymbol", abstractFirBasedSymbolType, "*")
|
+field("resolvedSymbol", firBasedSymbolType, "*")
|
||||||
}
|
}
|
||||||
|
|
||||||
resolvedCallableReference.configure {
|
resolvedCallableReference.configure {
|
||||||
@@ -587,7 +587,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
|
|
||||||
thisReference.configure {
|
thisReference.configure {
|
||||||
+stringField("labelName", nullable = true)
|
+stringField("labelName", nullable = true)
|
||||||
+field("boundSymbol", abstractFirBasedSymbolType, "*", nullable = true, withReplace = true)
|
+field("boundSymbol", firBasedSymbolType, "*", nullable = true, withReplace = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
typeRef.configure {
|
typeRef.configure {
|
||||||
|
|||||||
+1
-1
@@ -63,7 +63,7 @@ val implicitUnitTypeRefType = generatedType("types.impl", "FirImplicitUnitTypeRe
|
|||||||
val resolvePhaseType = type("fir.declarations", "FirResolvePhase")
|
val resolvePhaseType = type("fir.declarations", "FirResolvePhase")
|
||||||
val stubReferenceType = generatedType("references.impl", "FirStubReference")
|
val stubReferenceType = generatedType("references.impl", "FirStubReference")
|
||||||
|
|
||||||
val abstractFirBasedSymbolType = type("fir.symbols", "AbstractFirBasedSymbol")
|
val firBasedSymbolType = type("fir.symbols", "FirBasedSymbol")
|
||||||
val backingFieldSymbolType = type("fir.symbols.impl", "FirBackingFieldSymbol")
|
val backingFieldSymbolType = type("fir.symbols.impl", "FirBackingFieldSymbol")
|
||||||
val delegateFieldSymbolType = type("fir.symbols.impl", "FirDelegateFieldSymbol")
|
val delegateFieldSymbolType = type("fir.symbols.impl", "FirDelegateFieldSymbol")
|
||||||
val classSymbolType = type("fir.symbols.impl", "FirClassSymbol")
|
val classSymbolType = type("fir.symbols.impl", "FirClassSymbol")
|
||||||
|
|||||||
+3
-3
@@ -22,7 +22,7 @@ import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
|
|||||||
import org.jetbrains.kotlin.fir.expressions.FirSafeCallExpression
|
import org.jetbrains.kotlin.fir.expressions.FirSafeCallExpression
|
||||||
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
import org.jetbrains.kotlin.fir.references.FirNamedReference
|
||||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||||
@@ -280,7 +280,7 @@ class FirDiagnosticsHandler(testServices: TestServices) : FirAnalysisHandler(tes
|
|||||||
|
|
||||||
private fun getTypeOfCall(
|
private fun getTypeOfCall(
|
||||||
reference: FirNamedReference,
|
reference: FirNamedReference,
|
||||||
resolvedSymbol: AbstractFirBasedSymbol<*>?
|
resolvedSymbol: FirBasedSymbol<*>?
|
||||||
): String {
|
): String {
|
||||||
if (resolvedSymbol == null) return TypeOfCall.UNRESOLVED.nameToRender
|
if (resolvedSymbol == null) return TypeOfCall.UNRESOLVED.nameToRender
|
||||||
|
|
||||||
@@ -307,7 +307,7 @@ class FirDiagnosticsHandler(testServices: TestServices) : FirAnalysisHandler(tes
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun AbstractFirBasedSymbol<*>.fqNameUnsafe(): FqNameUnsafe? = when (this) {
|
private fun FirBasedSymbol<*>.fqNameUnsafe(): FqNameUnsafe? = when (this) {
|
||||||
is FirClassLikeSymbol<*> -> classId.asSingleFqName().toUnsafe()
|
is FirClassLikeSymbol<*> -> classId.asSingleFqName().toUnsafe()
|
||||||
is FirCallableSymbol<*> -> callableId.asFqNameForDebugInfo().toUnsafe()
|
is FirCallableSymbol<*> -> callableId.asFqNameForDebugInfo().toUnsafe()
|
||||||
else -> null
|
else -> null
|
||||||
|
|||||||
+3
-3
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.fir.render
|
|||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.symbolProvider
|
import org.jetbrains.kotlin.fir.resolve.symbolProvider
|
||||||
import org.jetbrains.kotlin.fir.scopes.*
|
import org.jetbrains.kotlin.fir.scopes.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||||
import org.jetbrains.kotlin.fir.types.render
|
import org.jetbrains.kotlin.fir.types.render
|
||||||
@@ -66,10 +66,10 @@ class FirScopeDumpHandler(testServices: TestServices) : FirAnalysisHandler(testS
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class SymbolCounter {
|
private class SymbolCounter {
|
||||||
private val map = mutableMapOf<AbstractFirBasedSymbol<*>, Int>()
|
private val map = mutableMapOf<FirBasedSymbol<*>, Int>()
|
||||||
private var counter = 0
|
private var counter = 0
|
||||||
|
|
||||||
fun getIndex(symbol: AbstractFirBasedSymbol<*>): Int {
|
fun getIndex(symbol: FirBasedSymbol<*>): Int {
|
||||||
return map.computeIfAbsent(symbol) { counter++ }
|
return map.computeIfAbsent(symbol) { counter++ }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
|||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.FirControlFlowGraphRenderVisitor
|
import org.jetbrains.kotlin.fir.resolve.dfa.cfg.FirControlFlowGraphRenderVisitor
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.createAllCompilerResolveProcessors
|
import org.jetbrains.kotlin.fir.resolve.transformers.createAllCompilerResolveProcessors
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||||
@@ -228,7 +228,7 @@ abstract class AbstractFirDiagnosticsTest : AbstractFirBaseDiagnosticsTest() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun AbstractFirBasedSymbol<*>.fqNameUnsafe(): FqNameUnsafe? = when (this) {
|
private fun FirBasedSymbol<*>.fqNameUnsafe(): FqNameUnsafe? = when (this) {
|
||||||
is FirClassLikeSymbol<*> -> classId.asSingleFqName().toUnsafe()
|
is FirClassLikeSymbol<*> -> classId.asSingleFqName().toUnsafe()
|
||||||
is FirCallableSymbol<*> -> callableId.asFqNameForDebugInfo().toUnsafe()
|
is FirCallableSymbol<*> -> callableId.asFqNameForDebugInfo().toUnsafe()
|
||||||
else -> null
|
else -> null
|
||||||
@@ -236,7 +236,7 @@ abstract class AbstractFirDiagnosticsTest : AbstractFirBaseDiagnosticsTest() {
|
|||||||
|
|
||||||
private fun getTypeOfCall(
|
private fun getTypeOfCall(
|
||||||
reference: FirNamedReference,
|
reference: FirNamedReference,
|
||||||
resolvedSymbol: AbstractFirBasedSymbol<*>?
|
resolvedSymbol: FirBasedSymbol<*>?
|
||||||
): String {
|
): String {
|
||||||
if (resolvedSymbol == null) return TypeOfCall.UNRESOLVED.nameToRender
|
if (resolvedSymbol == null) return TypeOfCall.UNRESOLVED.nameToRender
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -16,7 +16,7 @@ import org.jetbrains.kotlin.fir.references.*
|
|||||||
import org.jetbrains.kotlin.fir.resolve.*
|
import org.jetbrains.kotlin.fir.resolve.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.firUnsafe
|
import org.jetbrains.kotlin.fir.resolve.transformers.body.resolve.firUnsafe
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.delegatedWrapperData
|
import org.jetbrains.kotlin.fir.scopes.impl.delegatedWrapperData
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
import org.jetbrains.kotlin.fir.visitors.FirVisitor
|
||||||
@@ -465,7 +465,7 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() {
|
|||||||
return current
|
return current
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun renderImplicitReceiver(symbol: AbstractFirBasedSymbol<*>, psi: PsiElement?) {
|
private fun renderImplicitReceiver(symbol: FirBasedSymbol<*>, psi: PsiElement?) {
|
||||||
val receiverType = (symbol.fir as? FirCallableMemberDeclaration<*>)?.dispatchReceiverType ?: return
|
val receiverType = (symbol.fir as? FirCallableMemberDeclaration<*>)?.dispatchReceiverType ?: return
|
||||||
val implicitReceiverIndex = implicitReceivers.indexOf(receiverType)
|
val implicitReceiverIndex = implicitReceivers.indexOf(receiverType)
|
||||||
if (implicitReceiverIndex != -1) addAnnotation("this@$implicitReceiverIndex", psi)
|
if (implicitReceiverIndex != -1) addAnnotation("this@$implicitReceiverIndex", psi)
|
||||||
@@ -837,7 +837,7 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() {
|
|||||||
data.append("(vararg $valueParameter): $name${typeParameters.trim()}") // TODO change "T" to concrete type is array is primitive
|
data.append("(vararg $valueParameter): $name${typeParameters.trim()}") // TODO change "T" to concrete type is array is primitive
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun AbstractFirBasedSymbol<*>.isLocalDeclaration(): Boolean {
|
private fun FirBasedSymbol<*>.isLocalDeclaration(): Boolean {
|
||||||
return when (val fir = this.fir) {
|
return when (val fir = this.fir) {
|
||||||
is FirConstructor -> fir.returnTypeRef.coneType.isLocal()
|
is FirConstructor -> fir.returnTypeRef.coneType.isLocal()
|
||||||
is FirCallableDeclaration<*> -> {
|
is FirCallableDeclaration<*> -> {
|
||||||
@@ -853,7 +853,7 @@ class FirVisualizer(private val firFile: FirFile) : BaseRenderer() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// id == packageName + className
|
// id == packageName + className
|
||||||
private fun getSymbolId(symbol: AbstractFirBasedSymbol<*>?): String {
|
private fun getSymbolId(symbol: FirBasedSymbol<*>?): String {
|
||||||
return when (symbol) {
|
return when (symbol) {
|
||||||
is FirCallableSymbol<*> -> {
|
is FirCallableSymbol<*> -> {
|
||||||
if (symbol.isLocalDeclaration()) {
|
if (symbol.isLocalDeclaration()) {
|
||||||
|
|||||||
+2
-2
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirPhaseManager
|
import org.jetbrains.kotlin.fir.resolve.transformers.FirPhaseManager
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.idea.fir.low.level.api.file.builder.ModuleFileCache
|
import org.jetbrains.kotlin.idea.fir.low.level.api.file.builder.ModuleFileCache
|
||||||
import org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve.FirLazyDeclarationResolver
|
import org.jetbrains.kotlin.idea.fir.low.level.api.lazy.resolve.FirLazyDeclarationResolver
|
||||||
import org.jetbrains.kotlin.idea.fir.low.level.api.sessions.FirSessionInvalidator
|
import org.jetbrains.kotlin.idea.fir.low.level.api.sessions.FirSessionInvalidator
|
||||||
@@ -22,7 +22,7 @@ internal class IdeFirPhaseManager(
|
|||||||
private val sessionInvalidator: FirSessionInvalidator,
|
private val sessionInvalidator: FirSessionInvalidator,
|
||||||
) : FirPhaseManager() {
|
) : FirPhaseManager() {
|
||||||
override fun ensureResolved(
|
override fun ensureResolved(
|
||||||
symbol: AbstractFirBasedSymbol<*>,
|
symbol: FirBasedSymbol<*>,
|
||||||
requiredPhase: FirResolvePhase
|
requiredPhase: FirResolvePhase
|
||||||
) {
|
) {
|
||||||
val fir = symbol.fir as FirDeclaration
|
val fir = symbol.fir as FirDeclaration
|
||||||
|
|||||||
+2
-2
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.FirElement
|
|||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.psi
|
import org.jetbrains.kotlin.fir.psi
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||||
import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirModuleResolveState
|
import org.jetbrains.kotlin.idea.fir.low.level.api.api.FirModuleResolveState
|
||||||
@@ -71,7 +71,7 @@ internal class KtToFirMapping(firElement: FirElement, recorder: FirElementsRecor
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal sealed class ReanalyzableStructureElement<KT : KtDeclaration, S : AbstractFirBasedSymbol<*>>(
|
internal sealed class ReanalyzableStructureElement<KT : KtDeclaration, S : FirBasedSymbol<*>>(
|
||||||
firFile: FirFile,
|
firFile: FirFile,
|
||||||
val firSymbol: S,
|
val firSymbol: S,
|
||||||
lockProvider: LockProvider<FirFile>,
|
lockProvider: LockProvider<FirFile>,
|
||||||
|
|||||||
+2
-2
@@ -13,7 +13,7 @@ import org.jetbrains.kotlin.fir.FirSymbolOwner
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirFile
|
import org.jetbrains.kotlin.fir.declarations.FirFile
|
||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousInitializerSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassLikeSymbol
|
||||||
@@ -30,7 +30,7 @@ internal fun FirElement.renderWithClassName(renderMode: FirRenderer.RenderMode =
|
|||||||
"${this::class.simpleName} `${render(renderMode)}`"
|
"${this::class.simpleName} `${render(renderMode)}`"
|
||||||
|
|
||||||
|
|
||||||
internal fun AbstractFirBasedSymbol<*>.name(): String = when (this) {
|
internal fun FirBasedSymbol<*>.name(): String = when (this) {
|
||||||
is FirCallableSymbol<*> -> callableId.callableName.asString()
|
is FirCallableSymbol<*> -> callableId.callableName.asString()
|
||||||
is FirClassLikeSymbol<*> -> classId.shortClassName.asString()
|
is FirClassLikeSymbol<*> -> classId.shortClassName.asString()
|
||||||
is FirAnonymousInitializerSymbol -> "<init>"
|
is FirAnonymousInitializerSymbol -> "<init>"
|
||||||
|
|||||||
+2
-2
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.fir.checkers.generator.diagnostics.model.DiagnosticP
|
|||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
|
import org.jetbrains.kotlin.fir.expressions.FirQualifiedAccess
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
@@ -136,7 +136,7 @@ private object FirToKtConversionCreator {
|
|||||||
)
|
)
|
||||||
|
|
||||||
private val typeMapping: Map<KClass<*>, HLFunctionCallConversion> = mapOf(
|
private val typeMapping: Map<KClass<*>, HLFunctionCallConversion> = mapOf(
|
||||||
AbstractFirBasedSymbol::class to HLFunctionCallConversion(
|
FirBasedSymbol::class to HLFunctionCallConversion(
|
||||||
"firSymbolBuilder.buildSymbol({0}.fir as FirDeclaration)",
|
"firSymbolBuilder.buildSymbol({0}.fir as FirDeclaration)",
|
||||||
KtSymbol::class.createType(),
|
KtSymbol::class.createType(),
|
||||||
importsToAdd = listOf("org.jetbrains.kotlin.fir.declarations.FirDeclaration")
|
importsToAdd = listOf("org.jetbrains.kotlin.fir.declarations.FirDeclaration")
|
||||||
|
|||||||
+2
-2
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.fir.FirSymbolOwner
|
|||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
import org.jetbrains.kotlin.fir.scopes.*
|
import org.jetbrains.kotlin.fir.scopes.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirIntersectionOverrideFunctionSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirIntersectionOverrideFunctionSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirIntersectionOverridePropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirIntersectionOverridePropertySymbol
|
||||||
@@ -139,7 +139,7 @@ internal class KtFirSymbolDeclarationOverridesProvider(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun AbstractFirBasedSymbol<*>.getIntersectionOverriddenSymbols(): Collection<FirCallableSymbol<*>> {
|
private fun FirBasedSymbol<*>.getIntersectionOverriddenSymbols(): Collection<FirCallableSymbol<*>> {
|
||||||
require(this is FirCallableSymbol<*>) {
|
require(this is FirCallableSymbol<*>) {
|
||||||
"Required FirCallableSymbol but ${this::class} found"
|
"Required FirCallableSymbol but ${this::class} found"
|
||||||
}
|
}
|
||||||
|
|||||||
+26
-26
@@ -1079,8 +1079,8 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
|||||||
}
|
}
|
||||||
add(FirErrors.NONE_APPLICABLE) { firDiagnostic ->
|
add(FirErrors.NONE_APPLICABLE) { firDiagnostic ->
|
||||||
NoneApplicableImpl(
|
NoneApplicableImpl(
|
||||||
firDiagnostic.a.map { abstractFirBasedSymbol ->
|
firDiagnostic.a.map { firBasedSymbol ->
|
||||||
firSymbolBuilder.buildSymbol(abstractFirBasedSymbol.fir as FirDeclaration)
|
firSymbolBuilder.buildSymbol(firBasedSymbol.fir as FirDeclaration)
|
||||||
},
|
},
|
||||||
firDiagnostic as FirPsiDiagnostic,
|
firDiagnostic as FirPsiDiagnostic,
|
||||||
token,
|
token,
|
||||||
@@ -1214,8 +1214,8 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
|||||||
}
|
}
|
||||||
add(FirErrors.OVERLOAD_RESOLUTION_AMBIGUITY) { firDiagnostic ->
|
add(FirErrors.OVERLOAD_RESOLUTION_AMBIGUITY) { firDiagnostic ->
|
||||||
OverloadResolutionAmbiguityImpl(
|
OverloadResolutionAmbiguityImpl(
|
||||||
firDiagnostic.a.map { abstractFirBasedSymbol ->
|
firDiagnostic.a.map { firBasedSymbol ->
|
||||||
firSymbolBuilder.buildSymbol(abstractFirBasedSymbol.fir as FirDeclaration)
|
firSymbolBuilder.buildSymbol(firBasedSymbol.fir as FirDeclaration)
|
||||||
},
|
},
|
||||||
firDiagnostic as FirPsiDiagnostic,
|
firDiagnostic as FirPsiDiagnostic,
|
||||||
token,
|
token,
|
||||||
@@ -1223,8 +1223,8 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
|||||||
}
|
}
|
||||||
add(FirErrors.ASSIGN_OPERATOR_AMBIGUITY) { firDiagnostic ->
|
add(FirErrors.ASSIGN_OPERATOR_AMBIGUITY) { firDiagnostic ->
|
||||||
AssignOperatorAmbiguityImpl(
|
AssignOperatorAmbiguityImpl(
|
||||||
firDiagnostic.a.map { abstractFirBasedSymbol ->
|
firDiagnostic.a.map { firBasedSymbol ->
|
||||||
firSymbolBuilder.buildSymbol(abstractFirBasedSymbol.fir as FirDeclaration)
|
firSymbolBuilder.buildSymbol(firBasedSymbol.fir as FirDeclaration)
|
||||||
},
|
},
|
||||||
firDiagnostic as FirPsiDiagnostic,
|
firDiagnostic as FirPsiDiagnostic,
|
||||||
token,
|
token,
|
||||||
@@ -1232,8 +1232,8 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
|||||||
}
|
}
|
||||||
add(FirErrors.ITERATOR_AMBIGUITY) { firDiagnostic ->
|
add(FirErrors.ITERATOR_AMBIGUITY) { firDiagnostic ->
|
||||||
IteratorAmbiguityImpl(
|
IteratorAmbiguityImpl(
|
||||||
firDiagnostic.a.map { abstractFirBasedSymbol ->
|
firDiagnostic.a.map { firBasedSymbol ->
|
||||||
firSymbolBuilder.buildSymbol(abstractFirBasedSymbol.fir as FirDeclaration)
|
firSymbolBuilder.buildSymbol(firBasedSymbol.fir as FirDeclaration)
|
||||||
},
|
},
|
||||||
firDiagnostic as FirPsiDiagnostic,
|
firDiagnostic as FirPsiDiagnostic,
|
||||||
token,
|
token,
|
||||||
@@ -1241,8 +1241,8 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
|||||||
}
|
}
|
||||||
add(FirErrors.HAS_NEXT_FUNCTION_AMBIGUITY) { firDiagnostic ->
|
add(FirErrors.HAS_NEXT_FUNCTION_AMBIGUITY) { firDiagnostic ->
|
||||||
HasNextFunctionAmbiguityImpl(
|
HasNextFunctionAmbiguityImpl(
|
||||||
firDiagnostic.a.map { abstractFirBasedSymbol ->
|
firDiagnostic.a.map { firBasedSymbol ->
|
||||||
firSymbolBuilder.buildSymbol(abstractFirBasedSymbol.fir as FirDeclaration)
|
firSymbolBuilder.buildSymbol(firBasedSymbol.fir as FirDeclaration)
|
||||||
},
|
},
|
||||||
firDiagnostic as FirPsiDiagnostic,
|
firDiagnostic as FirPsiDiagnostic,
|
||||||
token,
|
token,
|
||||||
@@ -1250,8 +1250,8 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
|||||||
}
|
}
|
||||||
add(FirErrors.NEXT_AMBIGUITY) { firDiagnostic ->
|
add(FirErrors.NEXT_AMBIGUITY) { firDiagnostic ->
|
||||||
NextAmbiguityImpl(
|
NextAmbiguityImpl(
|
||||||
firDiagnostic.a.map { abstractFirBasedSymbol ->
|
firDiagnostic.a.map { firBasedSymbol ->
|
||||||
firSymbolBuilder.buildSymbol(abstractFirBasedSymbol.fir as FirDeclaration)
|
firSymbolBuilder.buildSymbol(firBasedSymbol.fir as FirDeclaration)
|
||||||
},
|
},
|
||||||
firDiagnostic as FirPsiDiagnostic,
|
firDiagnostic as FirPsiDiagnostic,
|
||||||
token,
|
token,
|
||||||
@@ -1745,8 +1745,8 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
|||||||
}
|
}
|
||||||
add(FirErrors.CONFLICTING_OVERLOADS) { firDiagnostic ->
|
add(FirErrors.CONFLICTING_OVERLOADS) { firDiagnostic ->
|
||||||
ConflictingOverloadsImpl(
|
ConflictingOverloadsImpl(
|
||||||
firDiagnostic.a.map { abstractFirBasedSymbol ->
|
firDiagnostic.a.map { firBasedSymbol ->
|
||||||
firSymbolBuilder.buildSymbol(abstractFirBasedSymbol.fir as FirDeclaration)
|
firSymbolBuilder.buildSymbol(firBasedSymbol.fir as FirDeclaration)
|
||||||
},
|
},
|
||||||
firDiagnostic as FirPsiDiagnostic,
|
firDiagnostic as FirPsiDiagnostic,
|
||||||
token,
|
token,
|
||||||
@@ -1754,8 +1754,8 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
|||||||
}
|
}
|
||||||
add(FirErrors.REDECLARATION) { firDiagnostic ->
|
add(FirErrors.REDECLARATION) { firDiagnostic ->
|
||||||
RedeclarationImpl(
|
RedeclarationImpl(
|
||||||
firDiagnostic.a.map { abstractFirBasedSymbol ->
|
firDiagnostic.a.map { firBasedSymbol ->
|
||||||
firSymbolBuilder.buildSymbol(abstractFirBasedSymbol.fir as FirDeclaration)
|
firSymbolBuilder.buildSymbol(firBasedSymbol.fir as FirDeclaration)
|
||||||
},
|
},
|
||||||
firDiagnostic as FirPsiDiagnostic,
|
firDiagnostic as FirPsiDiagnostic,
|
||||||
token,
|
token,
|
||||||
@@ -2150,8 +2150,8 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
|||||||
add(FirErrors.COMPONENT_FUNCTION_AMBIGUITY) { firDiagnostic ->
|
add(FirErrors.COMPONENT_FUNCTION_AMBIGUITY) { firDiagnostic ->
|
||||||
ComponentFunctionAmbiguityImpl(
|
ComponentFunctionAmbiguityImpl(
|
||||||
firDiagnostic.a,
|
firDiagnostic.a,
|
||||||
firDiagnostic.b.map { abstractFirBasedSymbol ->
|
firDiagnostic.b.map { firBasedSymbol ->
|
||||||
firSymbolBuilder.buildSymbol(abstractFirBasedSymbol.fir as FirDeclaration)
|
firSymbolBuilder.buildSymbol(firBasedSymbol.fir as FirDeclaration)
|
||||||
},
|
},
|
||||||
firDiagnostic as FirPsiDiagnostic,
|
firDiagnostic as FirPsiDiagnostic,
|
||||||
token,
|
token,
|
||||||
@@ -2442,8 +2442,8 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
|||||||
}
|
}
|
||||||
add(FirErrors.HAS_NEXT_FUNCTION_NONE_APPLICABLE) { firDiagnostic ->
|
add(FirErrors.HAS_NEXT_FUNCTION_NONE_APPLICABLE) { firDiagnostic ->
|
||||||
HasNextFunctionNoneApplicableImpl(
|
HasNextFunctionNoneApplicableImpl(
|
||||||
firDiagnostic.a.map { abstractFirBasedSymbol ->
|
firDiagnostic.a.map { firBasedSymbol ->
|
||||||
firSymbolBuilder.buildSymbol(abstractFirBasedSymbol.fir as FirDeclaration)
|
firSymbolBuilder.buildSymbol(firBasedSymbol.fir as FirDeclaration)
|
||||||
},
|
},
|
||||||
firDiagnostic as FirPsiDiagnostic,
|
firDiagnostic as FirPsiDiagnostic,
|
||||||
token,
|
token,
|
||||||
@@ -2451,8 +2451,8 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
|||||||
}
|
}
|
||||||
add(FirErrors.NEXT_NONE_APPLICABLE) { firDiagnostic ->
|
add(FirErrors.NEXT_NONE_APPLICABLE) { firDiagnostic ->
|
||||||
NextNoneApplicableImpl(
|
NextNoneApplicableImpl(
|
||||||
firDiagnostic.a.map { abstractFirBasedSymbol ->
|
firDiagnostic.a.map { firBasedSymbol ->
|
||||||
firSymbolBuilder.buildSymbol(abstractFirBasedSymbol.fir as FirDeclaration)
|
firSymbolBuilder.buildSymbol(firBasedSymbol.fir as FirDeclaration)
|
||||||
},
|
},
|
||||||
firDiagnostic as FirPsiDiagnostic,
|
firDiagnostic as FirPsiDiagnostic,
|
||||||
token,
|
token,
|
||||||
@@ -2470,8 +2470,8 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
|||||||
add(FirErrors.DELEGATE_SPECIAL_FUNCTION_AMBIGUITY) { firDiagnostic ->
|
add(FirErrors.DELEGATE_SPECIAL_FUNCTION_AMBIGUITY) { firDiagnostic ->
|
||||||
DelegateSpecialFunctionAmbiguityImpl(
|
DelegateSpecialFunctionAmbiguityImpl(
|
||||||
firDiagnostic.a,
|
firDiagnostic.a,
|
||||||
firDiagnostic.b.map { abstractFirBasedSymbol ->
|
firDiagnostic.b.map { firBasedSymbol ->
|
||||||
firSymbolBuilder.buildSymbol(abstractFirBasedSymbol.fir as FirDeclaration)
|
firSymbolBuilder.buildSymbol(firBasedSymbol.fir as FirDeclaration)
|
||||||
},
|
},
|
||||||
firDiagnostic as FirPsiDiagnostic,
|
firDiagnostic as FirPsiDiagnostic,
|
||||||
token,
|
token,
|
||||||
@@ -2480,8 +2480,8 @@ internal val KT_DIAGNOSTIC_CONVERTER = KtDiagnosticConverterBuilder.buildConvert
|
|||||||
add(FirErrors.DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE) { firDiagnostic ->
|
add(FirErrors.DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE) { firDiagnostic ->
|
||||||
DelegateSpecialFunctionNoneApplicableImpl(
|
DelegateSpecialFunctionNoneApplicableImpl(
|
||||||
firDiagnostic.a,
|
firDiagnostic.a,
|
||||||
firDiagnostic.b.map { abstractFirBasedSymbol ->
|
firDiagnostic.b.map { firBasedSymbol ->
|
||||||
firSymbolBuilder.buildSymbol(abstractFirBasedSymbol.fir as FirDeclaration)
|
firSymbolBuilder.buildSymbol(firBasedSymbol.fir as FirDeclaration)
|
||||||
},
|
},
|
||||||
firDiagnostic as FirPsiDiagnostic,
|
firDiagnostic as FirPsiDiagnostic,
|
||||||
token,
|
token,
|
||||||
|
|||||||
+2
-2
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.fir.FirSession
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.renderWithType
|
import org.jetbrains.kotlin.fir.renderWithType
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirScope
|
import org.jetbrains.kotlin.fir.scopes.FirScope
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.idea.fir.low.level.api.ideSessionComponents
|
import org.jetbrains.kotlin.idea.fir.low.level.api.ideSessionComponents
|
||||||
import org.jetbrains.kotlin.ir.util.IdSignature
|
import org.jetbrains.kotlin.ir.util.IdSignature
|
||||||
@@ -18,7 +18,7 @@ import org.jetbrains.kotlin.ir.util.IdSignature
|
|||||||
internal inline fun <reified D : FirDeclaration> FirScope.findDeclarationWithSignature(
|
internal inline fun <reified D : FirDeclaration> FirScope.findDeclarationWithSignature(
|
||||||
signature: IdSignature,
|
signature: IdSignature,
|
||||||
firSession: FirSession,
|
firSession: FirSession,
|
||||||
processor: FirScope.((AbstractFirBasedSymbol<*>) -> Unit) -> Unit
|
processor: FirScope.((FirBasedSymbol<*>) -> Unit) -> Unit
|
||||||
): D? {
|
): D? {
|
||||||
val signatureComposer = firSession.ideSessionComponents.signatureComposer
|
val signatureComposer = firSession.ideSessionComponents.signatureComposer
|
||||||
var foundSymbol: D? = null
|
var foundSymbol: D? = null
|
||||||
|
|||||||
+1
-2
@@ -25,7 +25,6 @@ import org.jetbrains.kotlin.fir.resolve.toSymbol
|
|||||||
import org.jetbrains.kotlin.fir.resolve.transformers.FirImportResolveTransformer
|
import org.jetbrains.kotlin.fir.resolve.transformers.FirImportResolveTransformer
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.FirExplicitSimpleImportingScope
|
import org.jetbrains.kotlin.fir.scopes.impl.FirExplicitSimpleImportingScope
|
||||||
import org.jetbrains.kotlin.fir.scopes.processClassifiersByName
|
import org.jetbrains.kotlin.fir.scopes.processClassifiersByName
|
||||||
import org.jetbrains.kotlin.fir.symbols.AbstractFirBasedSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
|
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
@@ -52,7 +51,7 @@ internal object FirReferenceResolveHelper {
|
|||||||
fun FirResolvedTypeRef.toTargetSymbol(session: FirSession, symbolBuilder: KtSymbolByFirBuilder): KtSymbol? {
|
fun FirResolvedTypeRef.toTargetSymbol(session: FirSession, symbolBuilder: KtSymbolByFirBuilder): KtSymbol? {
|
||||||
|
|
||||||
val type = getDeclaredType() as? ConeLookupTagBasedType
|
val type = getDeclaredType() as? ConeLookupTagBasedType
|
||||||
val resolvedSymbol = type?.lookupTag?.toSymbol(session) as? AbstractFirBasedSymbol<*>
|
val resolvedSymbol = type?.lookupTag?.toSymbol(session) as? FirBasedSymbol<*>
|
||||||
|
|
||||||
val symbol = resolvedSymbol ?: run {
|
val symbol = resolvedSymbol ?: run {
|
||||||
val diagnostic = (this as? FirErrorTypeRef)?.diagnostic
|
val diagnostic = (this as? FirErrorTypeRef)?.diagnostic
|
||||||
|
|||||||
Reference in New Issue
Block a user