[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:
Nikita Klimenko
2024-02-09 21:10:56 +02:00
committed by Space Team
parent 4d04546652
commit c49edfef04
14 changed files with 225 additions and 6 deletions
@@ -165,4 +165,6 @@ class TypeVariableAsExplicitReceiver(
val typeParameter: FirTypeParameter,
) : ResolutionDiagnostic(RESOLVED_WITH_ERROR)
object CallToDeprecatedOverrideOfHidden : ResolutionDiagnostic(RESOLVED)
object CallToDeprecatedOverrideOfHidden : ResolutionDiagnostic(RESOLVED)
class AmbiguousInterceptedSymbol(val pluginNames: List<String>) : ResolutionDiagnostic(RESOLVED_WITH_ERROR)