[Fir2IR] Don't use FIR f/o builder when IR f/o builder is enabled

Before this commit, fir f/o builder was inconsistently
disabled in some places, while it should work only for lazy declarations

Attempt to use it for non-lazy declarations, without maintaining
invariant, that it would also be used for super classes
led to unpredictable results.

This commit introduces opt-in, and marks all related API to three types
* Propagate error to user
* Fine to use, as it's checked if ir f/o builder is enabled
* Fine to use, as it is definitely a lazy class.

Several cases of missing checks was fixed.

^KT-65707
This commit is contained in:
Pavel Kunyavskiy
2024-02-09 16:07:45 +01:00
committed by Space Team
parent 74193aefb4
commit 9532172a22
23 changed files with 126 additions and 8 deletions
@@ -16144,6 +16144,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/fakeOverride/kt65695.kt");
}
@TestMetadata("kt65707.kt")
public void testKt65707() throws Exception {
runTest("compiler/testData/codegen/box/fakeOverride/kt65707.kt");
}
@TestMetadata("methodOfAnyFromInterface.kt")
public void testMethodOfAnyFromInterface() throws Exception {
runTest("compiler/testData/codegen/box/fakeOverride/methodOfAnyFromInterface.kt");