[FIR] Extension point for function calls
This extension point allows changing the return type of call from a declared type to its subtype. With an idea that such a plugin needs the ability to control available (extension) properties for this type. A set of properties should be decided based on the resolved function, provided arguments, types, and resolved lambdas. It is not a goal to enable plugins to affect resolution in any way. Types are not intended to have any structured capabilities In other words. The goal was to come up with a way to enable a limited form of an "extensible records" mechanism through plugins. - It should give enough value for a practical use. (more info in the ticket). - It should have minimal effect on the compilation process This appears to be an extension point that solves this problem. ^KT-65859 Fixed
This commit is contained in:
committed by
Space Team
parent
4d04546652
commit
c49edfef04
@@ -200,6 +200,7 @@ object FirErrors {
|
||||
val INTERFACE_AS_FUNCTION: KtDiagnosticFactory1<FirRegularClassSymbol> by error1<PsiElement, FirRegularClassSymbol>()
|
||||
val EXPECT_CLASS_AS_FUNCTION: KtDiagnosticFactory1<FirRegularClassSymbol> by error1<PsiElement, FirRegularClassSymbol>()
|
||||
val INNER_CLASS_CONSTRUCTOR_NO_RECEIVER: KtDiagnosticFactory1<FirRegularClassSymbol> by error1<PsiElement, FirRegularClassSymbol>()
|
||||
val PLUGIN_AMBIGUOUS_INTERCEPTED_SYMBOL: KtDiagnosticFactory1<List<String>> by error1<PsiElement, List<String>>()
|
||||
val RESOLUTION_TO_CLASSIFIER: KtDiagnosticFactory1<FirRegularClassSymbol> by error1<PsiElement, FirRegularClassSymbol>()
|
||||
val AMBIGUOUS_ALTERED_ASSIGN: KtDiagnosticFactory1<List<String?>> by error1<PsiElement, List<String?>>()
|
||||
val FORBIDDEN_BINARY_MOD: KtDiagnosticFactory2<FirBasedSymbol<*>, String> by error2<PsiElement, FirBasedSymbol<*>, String>(SourceElementPositioningStrategies.OPERATOR_MODIFIER)
|
||||
|
||||
+1
@@ -64,6 +64,7 @@ val FIR_NON_SUPPRESSIBLE_ERROR_NAMES: Set<String> = setOf(
|
||||
"INTERFACE_AS_FUNCTION",
|
||||
"EXPECT_CLASS_AS_FUNCTION",
|
||||
"INNER_CLASS_CONSTRUCTOR_NO_RECEIVER",
|
||||
"PLUGIN_AMBIGUOUS_INTERCEPTED_SYMBOL",
|
||||
"RESOLUTION_TO_CLASSIFIER",
|
||||
"AMBIGUOUS_ALTERED_ASSIGN",
|
||||
"FORBIDDEN_BINARY_MOD",
|
||||
|
||||
Reference in New Issue
Block a user