[FIR2IR] Properly calculate the type of delegated function call
```
interface A {
fun <T> foo(): T
}
class B(val a: A) : A by A {
generated fun <T'> foo(): T' {
return a.foo() // <------
}
}
```
There was a problem that type of generated delegated call used
an unsubstituted type of the original delegated declaration, which led
to a situation when (see example) type of call `a.foo()` was not `T'`
but `T`, which led to incorrect IR and further exceptions on backend
^KT-64257 Fixed
^KT-64284 Obsolete
This commit is contained in:
committed by
Space Team
parent
c48753900c
commit
94c46d384a
+5
@@ -13794,6 +13794,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
||||
runTest("compiler/testData/codegen/box/delegation/differentModules.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("genericFunctionInGenericInterface.kt")
|
||||
public void testGenericFunctionInGenericInterface() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/delegation/genericFunctionInGenericInterface.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("genericProperty.kt")
|
||||
public void testGenericProperty() throws Exception {
|
||||
runTest("compiler/testData/codegen/box/delegation/genericProperty.kt");
|
||||
|
||||
Reference in New Issue
Block a user