[FIR] Fix the inability to retrieve an annotation argument
Fix an issue where an inherited @JsName from another module was not accessible in a child class. The issue can only be reproduced in the codegen box tests and cannot be reproduced in the FIR FE checker tests.
This commit is contained in:
committed by
Space Team
parent
ea9e2eb41a
commit
238344758b
@@ -777,7 +777,7 @@ fun FirDeclaration.hasAnnotationOrInsideAnnotatedClass(classId: ClassId, session
|
||||
symbol.hasAnnotationOrInsideAnnotatedClass(classId, session)
|
||||
|
||||
fun FirBasedSymbol<*>.getAnnotationFirstArgument(classId: ClassId, session: FirSession): FirExpression? {
|
||||
val annotation = getAnnotationByClassId(classId, session) as? FirAnnotationCall
|
||||
val annotation = getAnnotationByClassId(classId, session)
|
||||
return annotation?.argumentMapping?.mapping?.values?.firstOrNull()
|
||||
}
|
||||
|
||||
|
||||
+6
@@ -5142,6 +5142,12 @@ public class FirJsBoxTestGenerated extends AbstractFirJsBoxTest {
|
||||
runTest("js/js.translator/testData/box/inheritance/childPrototype.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("classInheritsJsNameFromOtherModule.kt")
|
||||
public void testClassInheritsJsNameFromOtherModule() throws Exception {
|
||||
runTest("js/js.translator/testData/box/inheritance/classInheritsJsNameFromOtherModule.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("complexInitializationOrder.kt")
|
||||
public void testComplexInitializationOrder() throws Exception {
|
||||
|
||||
+6
@@ -5248,6 +5248,12 @@ public class FirJsES6BoxTestGenerated extends AbstractFirJsES6BoxTest {
|
||||
runTest("js/js.translator/testData/box/inheritance/childPrototype.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("classInheritsJsNameFromOtherModule.kt")
|
||||
public void testClassInheritsJsNameFromOtherModule() throws Exception {
|
||||
runTest("js/js.translator/testData/box/inheritance/classInheritsJsNameFromOtherModule.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("complexInitializationOrder.kt")
|
||||
public void testComplexInitializationOrder() throws Exception {
|
||||
|
||||
+6
@@ -5248,6 +5248,12 @@ public class IrBoxJsES6TestGenerated extends AbstractIrBoxJsES6Test {
|
||||
runTest("js/js.translator/testData/box/inheritance/childPrototype.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("classInheritsJsNameFromOtherModule.kt")
|
||||
public void testClassInheritsJsNameFromOtherModule() throws Exception {
|
||||
runTest("js/js.translator/testData/box/inheritance/classInheritsJsNameFromOtherModule.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("complexInitializationOrder.kt")
|
||||
public void testComplexInitializationOrder() throws Exception {
|
||||
|
||||
+6
@@ -5142,6 +5142,12 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest {
|
||||
runTest("js/js.translator/testData/box/inheritance/childPrototype.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("classInheritsJsNameFromOtherModule.kt")
|
||||
public void testClassInheritsJsNameFromOtherModule() throws Exception {
|
||||
runTest("js/js.translator/testData/box/inheritance/classInheritsJsNameFromOtherModule.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("complexInitializationOrder.kt")
|
||||
public void testComplexInitializationOrder() throws Exception {
|
||||
|
||||
+20
@@ -0,0 +1,20 @@
|
||||
// MODULE: lib
|
||||
// FILE: TestDemo1.kt
|
||||
package TestDemo1
|
||||
|
||||
abstract class Class {
|
||||
open val ok = "OK"
|
||||
|
||||
@JsName("okFun")
|
||||
fun ok() = ok
|
||||
}
|
||||
|
||||
// FILE: TestDemo2.kt
|
||||
// MODULE: main(lib)
|
||||
package TestDemo2
|
||||
|
||||
import TestDemo1.Class
|
||||
|
||||
class MyClass : Class()
|
||||
|
||||
fun box() = MyClass().ok()
|
||||
Reference in New Issue
Block a user