[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)
|
symbol.hasAnnotationOrInsideAnnotatedClass(classId, session)
|
||||||
|
|
||||||
fun FirBasedSymbol<*>.getAnnotationFirstArgument(classId: ClassId, session: FirSession): FirExpression? {
|
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()
|
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");
|
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
|
@Test
|
||||||
@TestMetadata("complexInitializationOrder.kt")
|
@TestMetadata("complexInitializationOrder.kt")
|
||||||
public void testComplexInitializationOrder() throws Exception {
|
public void testComplexInitializationOrder() throws Exception {
|
||||||
|
|||||||
+6
@@ -5248,6 +5248,12 @@ public class FirJsES6BoxTestGenerated extends AbstractFirJsES6BoxTest {
|
|||||||
runTest("js/js.translator/testData/box/inheritance/childPrototype.kt");
|
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
|
@Test
|
||||||
@TestMetadata("complexInitializationOrder.kt")
|
@TestMetadata("complexInitializationOrder.kt")
|
||||||
public void testComplexInitializationOrder() throws Exception {
|
public void testComplexInitializationOrder() throws Exception {
|
||||||
|
|||||||
+6
@@ -5248,6 +5248,12 @@ public class IrBoxJsES6TestGenerated extends AbstractIrBoxJsES6Test {
|
|||||||
runTest("js/js.translator/testData/box/inheritance/childPrototype.kt");
|
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
|
@Test
|
||||||
@TestMetadata("complexInitializationOrder.kt")
|
@TestMetadata("complexInitializationOrder.kt")
|
||||||
public void testComplexInitializationOrder() throws Exception {
|
public void testComplexInitializationOrder() throws Exception {
|
||||||
|
|||||||
+6
@@ -5142,6 +5142,12 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest {
|
|||||||
runTest("js/js.translator/testData/box/inheritance/childPrototype.kt");
|
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
|
@Test
|
||||||
@TestMetadata("complexInitializationOrder.kt")
|
@TestMetadata("complexInitializationOrder.kt")
|
||||||
public void testComplexInitializationOrder() throws Exception {
|
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