FIR2IR: use lookupTag or class to getLocalClass, not classId
Before this commit, we sometimes tried to fetch anonymous object by id, getting sometimes a wrong result because it's singleton. Now we use lookupTag or FIR class itself instead. #KT-44050 Fixed
This commit is contained in:
committed by
Mikhail Glukhikh
parent
94315bc4dc
commit
34dbbdce07
+6
-11
@@ -12,11 +12,9 @@ import org.jetbrains.kotlin.descriptors.Visibility
|
|||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.lazy.Fir2IrLazyClass
|
import org.jetbrains.kotlin.fir.lazy.Fir2IrLazyClass
|
||||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.Fir2IrClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.Fir2IrEnumEntrySymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.Fir2IrTypeAliasSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.StandardClassIds
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
|
import org.jetbrains.kotlin.fir.symbols.impl.ConeClassLikeLookupTagImpl
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||||
@@ -36,7 +34,6 @@ import org.jetbrains.kotlin.ir.types.IrType
|
|||||||
import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl
|
import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl
|
||||||
import org.jetbrains.kotlin.ir.util.IdSignature
|
import org.jetbrains.kotlin.ir.util.IdSignature
|
||||||
import org.jetbrains.kotlin.ir.util.constructors
|
import org.jetbrains.kotlin.ir.util.constructors
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
class Fir2IrClassifierStorage(
|
class Fir2IrClassifierStorage(
|
||||||
@@ -143,11 +140,8 @@ class Fir2IrClassifierStorage(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun getCachedLocalClass(classId: ClassId): IrClass? {
|
internal fun getCachedLocalClass(lookupTag: ConeClassLikeLookupTag): IrClass? {
|
||||||
require(classId.isLocal) {
|
return localStorage.getLocalClass(lookupTag.toSymbol(session)!!.fir as FirClass<*>)
|
||||||
"As the function name implies, it ought to be used to look up _local_ classes."
|
|
||||||
}
|
|
||||||
return localStorage.getLocalClass(classId)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun FirRegularClass.enumClassModality(): Modality {
|
private fun FirRegularClass.enumClassModality(): Modality {
|
||||||
@@ -452,7 +446,8 @@ class Fir2IrClassifierStorage(
|
|||||||
firClass as FirRegularClass
|
firClass as FirRegularClass
|
||||||
val classId = firClassSymbol.classId
|
val classId = firClassSymbol.classId
|
||||||
val parentId = classId.outerClassId
|
val parentId = classId.outerClassId
|
||||||
val irParent = declarationStorage.findIrParent(classId.packageFqName, parentId, firClassSymbol)!!
|
val parentClass = parentId?.let { session.firSymbolProvider.getClassLikeSymbolByFqName(it) }
|
||||||
|
val irParent = declarationStorage.findIrParent(classId.packageFqName, parentClass?.toLookupTag(), firClassSymbol)!!
|
||||||
val symbol = Fir2IrClassSymbol(signature)
|
val symbol = Fir2IrClassSymbol(signature)
|
||||||
val irClass = firClass.convertWithOffsets { startOffset, endOffset ->
|
val irClass = firClass.convertWithOffsets { startOffset, endOffset ->
|
||||||
symbolTable.declareClass(signature, { symbol }) {
|
symbolTable.declareClass(signature, { symbol }) {
|
||||||
|
|||||||
+17
-20
@@ -27,9 +27,9 @@ import org.jetbrains.kotlin.fir.lazy.Fir2IrLazyProperty
|
|||||||
import org.jetbrains.kotlin.fir.lazy.Fir2IrLazySimpleFunction
|
import org.jetbrains.kotlin.fir.lazy.Fir2IrLazySimpleFunction
|
||||||
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
import org.jetbrains.kotlin.fir.references.FirResolvedNamedReference
|
||||||
import org.jetbrains.kotlin.fir.resolve.firProvider
|
import org.jetbrains.kotlin.fir.resolve.firProvider
|
||||||
import org.jetbrains.kotlin.fir.resolve.firSymbolProvider
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.inference.isSuspendFunctionType
|
import org.jetbrains.kotlin.fir.resolve.inference.isSuspendFunctionType
|
||||||
import org.jetbrains.kotlin.fir.resolve.isKFunctionInvoke
|
import org.jetbrains.kotlin.fir.resolve.isKFunctionInvoke
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.*
|
import org.jetbrains.kotlin.fir.symbols.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
@@ -48,7 +48,6 @@ import org.jetbrains.kotlin.ir.types.IrErrorType
|
|||||||
import org.jetbrains.kotlin.ir.types.IrSimpleType
|
import org.jetbrains.kotlin.ir.types.IrSimpleType
|
||||||
import org.jetbrains.kotlin.ir.types.IrType
|
import org.jetbrains.kotlin.ir.types.IrType
|
||||||
import org.jetbrains.kotlin.ir.util.*
|
import org.jetbrains.kotlin.ir.util.*
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
|
||||||
@@ -60,8 +59,6 @@ class Fir2IrDeclarationStorage(
|
|||||||
private val moduleDescriptor: FirModuleDescriptor
|
private val moduleDescriptor: FirModuleDescriptor
|
||||||
) : Fir2IrComponents by components {
|
) : Fir2IrComponents by components {
|
||||||
|
|
||||||
private val firSymbolProvider = session.firSymbolProvider
|
|
||||||
|
|
||||||
private val firProvider = session.firProvider
|
private val firProvider = session.firProvider
|
||||||
|
|
||||||
private val fragmentCache = mutableMapOf<FqName, IrExternalPackageFragment>()
|
private val fragmentCache = mutableMapOf<FqName, IrExternalPackageFragment>()
|
||||||
@@ -200,11 +197,11 @@ class Fir2IrDeclarationStorage(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun findIrClass(classId: ClassId): IrClass? =
|
private fun findIrClass(lookupTag: ConeClassLikeLookupTag): IrClass? =
|
||||||
if (classId.isLocal) {
|
if (lookupTag.classId.isLocal) {
|
||||||
classifierStorage.getCachedLocalClass(classId)
|
classifierStorage.getCachedLocalClass(lookupTag)
|
||||||
} else {
|
} else {
|
||||||
val firSymbol = firSymbolProvider.getClassLikeSymbolByFqName(classId)
|
val firSymbol = lookupTag.toSymbol(session)
|
||||||
if (firSymbol is FirClassSymbol) {
|
if (firSymbol is FirClassSymbol) {
|
||||||
classifierStorage.getIrClassSymbol(firSymbol).owner
|
classifierStorage.getIrClassSymbol(firSymbol).owner
|
||||||
} else {
|
} else {
|
||||||
@@ -212,9 +209,13 @@ class Fir2IrDeclarationStorage(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun findIrParent(packageFqName: FqName, parentClassId: ClassId?, firBasedSymbol: FirBasedSymbol<*>): IrDeclarationParent? {
|
internal fun findIrParent(
|
||||||
return if (parentClassId != null) {
|
packageFqName: FqName,
|
||||||
findIrClass(parentClassId)
|
parentLookupTag: ConeClassLikeLookupTag?,
|
||||||
|
firBasedSymbol: FirBasedSymbol<*>
|
||||||
|
): IrDeclarationParent? {
|
||||||
|
return if (parentLookupTag != null) {
|
||||||
|
findIrClass(parentLookupTag)
|
||||||
} else {
|
} else {
|
||||||
val containerFile = when (firBasedSymbol) {
|
val containerFile = when (firBasedSymbol) {
|
||||||
is FirCallableSymbol -> firProvider.getFirCallableContainerFile(firBasedSymbol)
|
is FirCallableSymbol -> firProvider.getFirCallableContainerFile(firBasedSymbol)
|
||||||
@@ -235,7 +236,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
internal fun findIrParent(callableDeclaration: FirCallableDeclaration<*>): IrDeclarationParent? {
|
internal fun findIrParent(callableDeclaration: FirCallableDeclaration<*>): IrDeclarationParent? {
|
||||||
val firBasedSymbol = callableDeclaration.symbol
|
val firBasedSymbol = callableDeclaration.symbol
|
||||||
val callableId = firBasedSymbol.callableId
|
val callableId = firBasedSymbol.callableId
|
||||||
return findIrParent(callableId.packageName, callableDeclaration.containingClass()?.classId, firBasedSymbol)
|
return findIrParent(callableId.packageName, callableDeclaration.containingClass(), firBasedSymbol)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun IrDeclaration.setAndModifyParent(irParent: IrDeclarationParent?) {
|
private fun IrDeclaration.setAndModifyParent(irParent: IrDeclarationParent?) {
|
||||||
@@ -359,9 +360,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
isStatic: Boolean,
|
isStatic: Boolean,
|
||||||
parentPropertyReceiverType: FirTypeRef? = null
|
parentPropertyReceiverType: FirTypeRef? = null
|
||||||
): T {
|
): T {
|
||||||
if (irParent != null) {
|
setAndModifyParent(irParent)
|
||||||
parent = irParent
|
|
||||||
}
|
|
||||||
declareParameters(function, thisReceiverOwner, isStatic, parentPropertyReceiverType)
|
declareParameters(function, thisReceiverOwner, isStatic, parentPropertyReceiverType)
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
@@ -1049,9 +1048,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
val irParent = findIrParent(fir)
|
val irParent = findIrParent(fir)
|
||||||
val parentOrigin = (irParent as? IrDeclaration)?.origin ?: IrDeclarationOrigin.DEFINED
|
val parentOrigin = (irParent as? IrDeclaration)?.origin ?: IrDeclarationOrigin.DEFINED
|
||||||
val declarationOrigin = computeDeclarationOrigin(firFunctionSymbol, parentOrigin, irParent)
|
val declarationOrigin = computeDeclarationOrigin(firFunctionSymbol, parentOrigin, irParent)
|
||||||
createIrFunction(fir, irParent, origin = declarationOrigin).apply {
|
createIrFunction(fir, irParent, origin = declarationOrigin).symbol
|
||||||
setAndModifyParent(irParent)
|
|
||||||
}.symbol
|
|
||||||
}
|
}
|
||||||
is FirSimpleFunction -> {
|
is FirSimpleFunction -> {
|
||||||
return getIrCallableSymbol(
|
return getIrCallableSymbol(
|
||||||
@@ -1207,7 +1204,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
is FirEnumEntry -> {
|
is FirEnumEntry -> {
|
||||||
classifierStorage.getCachedIrEnumEntry(firDeclaration)?.let { return it.symbol }
|
classifierStorage.getCachedIrEnumEntry(firDeclaration)?.let { return it.symbol }
|
||||||
val containingFile = firProvider.getFirCallableContainerFile(firVariableSymbol)
|
val containingFile = firProvider.getFirCallableContainerFile(firVariableSymbol)
|
||||||
val irParentClass = firDeclaration.containingClass()?.classId?.let { findIrClass(it) }
|
val irParentClass = firDeclaration.containingClass()?.let { findIrClass(it) }
|
||||||
classifierStorage.createIrEnumEntry(
|
classifierStorage.createIrEnumEntry(
|
||||||
firDeclaration,
|
firDeclaration,
|
||||||
irParent = irParentClass,
|
irParent = irParentClass,
|
||||||
@@ -1228,7 +1225,7 @@ class Fir2IrDeclarationStorage(
|
|||||||
|
|
||||||
private fun IrMutableAnnotationContainer.convertAnnotationsFromLibrary(firAnnotationContainer: FirAnnotationContainer) {
|
private fun IrMutableAnnotationContainer.convertAnnotationsFromLibrary(firAnnotationContainer: FirAnnotationContainer) {
|
||||||
if ((firAnnotationContainer as? FirDeclaration)?.isFromLibrary == true) {
|
if ((firAnnotationContainer as? FirDeclaration)?.isFromLibrary == true) {
|
||||||
annotationGenerator?.generate(this, firAnnotationContainer)
|
annotationGenerator.generate(this, firAnnotationContainer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -39,10 +39,6 @@ class Fir2IrLocalStorage {
|
|||||||
return localClassCache[localClass]
|
return localClassCache[localClass]
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getLocalClass(classId: ClassId): IrClass? {
|
|
||||||
return localClassCache.entries.find { (firClass, _) -> firClass.classId == classId }?.value
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getLocalFunction(localFunction: FirFunction<*>): IrSimpleFunction? =
|
fun getLocalFunction(localFunction: FirFunction<*>): IrSimpleFunction? =
|
||||||
last { getLocalFunction(localFunction) }
|
last { getLocalFunction(localFunction) }
|
||||||
|
|
||||||
|
|||||||
Generated
+5
@@ -19884,6 +19884,11 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
|||||||
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectAsIterator.kt");
|
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectAsIterator.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("useAnonymousObjectFunction.kt")
|
||||||
|
public void testUseAnonymousObjectFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectFunction.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("useImportedMember.kt")
|
@TestMetadata("useImportedMember.kt")
|
||||||
public void testUseImportedMember() throws Exception {
|
public void testUseImportedMember() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/objects/useImportedMember.kt");
|
runTest("compiler/testData/codegen/box/objects/useImportedMember.kt");
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
// KT-44050
|
||||||
|
|
||||||
|
enum class Enum {
|
||||||
|
Entry1() {
|
||||||
|
fun bogus() = 42
|
||||||
|
},
|
||||||
|
Entry2() {
|
||||||
|
fun bogus() = 42
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class Outer {
|
||||||
|
fun barCaller(): Enum = obj1.bar()
|
||||||
|
fun bazCaller(): Enum = obj2.baz()
|
||||||
|
|
||||||
|
private abstract inner class Inner<T>(val default: T) {
|
||||||
|
abstract fun foo()
|
||||||
|
}
|
||||||
|
|
||||||
|
private val obj1 = object : Inner<Enum>(Enum.Entry1) {
|
||||||
|
override fun foo() {
|
||||||
|
TODO("not related")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun bar(): Enum {
|
||||||
|
return default
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private val obj2 = object : Inner<Enum>(Enum.Entry2) {
|
||||||
|
override fun foo() {
|
||||||
|
TODO("not related")
|
||||||
|
}
|
||||||
|
|
||||||
|
fun baz(): Enum {
|
||||||
|
return default
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
val o = Outer()
|
||||||
|
if (o.barCaller() != Enum.Entry1) return "Fail1"
|
||||||
|
if (o.bazCaller() != Enum.Entry2) return "Fail2"
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
+5
@@ -19884,6 +19884,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectAsIterator.kt");
|
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectAsIterator.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("useAnonymousObjectFunction.kt")
|
||||||
|
public void testUseAnonymousObjectFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectFunction.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("useImportedMember.kt")
|
@TestMetadata("useImportedMember.kt")
|
||||||
public void testUseImportedMember() throws Exception {
|
public void testUseImportedMember() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/objects/useImportedMember.kt");
|
runTest("compiler/testData/codegen/box/objects/useImportedMember.kt");
|
||||||
|
|||||||
+5
@@ -19884,6 +19884,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectAsIterator.kt");
|
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectAsIterator.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("useAnonymousObjectFunction.kt")
|
||||||
|
public void testUseAnonymousObjectFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectFunction.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("useImportedMember.kt")
|
@TestMetadata("useImportedMember.kt")
|
||||||
public void testUseImportedMember() throws Exception {
|
public void testUseImportedMember() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/objects/useImportedMember.kt");
|
runTest("compiler/testData/codegen/box/objects/useImportedMember.kt");
|
||||||
|
|||||||
+5
@@ -19884,6 +19884,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectAsIterator.kt");
|
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectAsIterator.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("useAnonymousObjectFunction.kt")
|
||||||
|
public void testUseAnonymousObjectFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectFunction.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("useImportedMember.kt")
|
@TestMetadata("useImportedMember.kt")
|
||||||
public void testUseImportedMember() throws Exception {
|
public void testUseImportedMember() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/objects/useImportedMember.kt");
|
runTest("compiler/testData/codegen/box/objects/useImportedMember.kt");
|
||||||
|
|||||||
js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/es6/semantics/IrJsCodegenBoxES6TestGenerated.java
Generated
+5
@@ -15939,6 +15939,11 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes
|
|||||||
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectAsIterator.kt");
|
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectAsIterator.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("useAnonymousObjectFunction.kt")
|
||||||
|
public void testUseAnonymousObjectFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectFunction.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("useImportedMember.kt")
|
@TestMetadata("useImportedMember.kt")
|
||||||
public void testUseImportedMember() throws Exception {
|
public void testUseImportedMember() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/objects/useImportedMember.kt");
|
runTest("compiler/testData/codegen/box/objects/useImportedMember.kt");
|
||||||
|
|||||||
Generated
+5
@@ -15939,6 +15939,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
|||||||
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectAsIterator.kt");
|
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectAsIterator.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("useAnonymousObjectFunction.kt")
|
||||||
|
public void testUseAnonymousObjectFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectFunction.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("useImportedMember.kt")
|
@TestMetadata("useImportedMember.kt")
|
||||||
public void testUseImportedMember() throws Exception {
|
public void testUseImportedMember() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/objects/useImportedMember.kt");
|
runTest("compiler/testData/codegen/box/objects/useImportedMember.kt");
|
||||||
|
|||||||
Generated
+5
@@ -16004,6 +16004,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
|
|||||||
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectAsIterator.kt");
|
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectAsIterator.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("useAnonymousObjectFunction.kt")
|
||||||
|
public void testUseAnonymousObjectFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectFunction.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("useImportedMember.kt")
|
@TestMetadata("useImportedMember.kt")
|
||||||
public void testUseImportedMember() throws Exception {
|
public void testUseImportedMember() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/objects/useImportedMember.kt");
|
runTest("compiler/testData/codegen/box/objects/useImportedMember.kt");
|
||||||
|
|||||||
js/js.tests/tests-gen/org/jetbrains/kotlin/js/test/wasm/semantics/IrCodegenBoxWasmTestGenerated.java
Generated
+5
@@ -9980,6 +9980,11 @@ public class IrCodegenBoxWasmTestGenerated extends AbstractIrCodegenBoxWasmTest
|
|||||||
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectAsIterator.kt");
|
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectAsIterator.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("useAnonymousObjectFunction.kt")
|
||||||
|
public void testUseAnonymousObjectFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/objects/useAnonymousObjectFunction.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("useImportedMember.kt")
|
@TestMetadata("useImportedMember.kt")
|
||||||
public void testUseImportedMember() throws Exception {
|
public void testUseImportedMember() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/objects/useImportedMember.kt");
|
runTest("compiler/testData/codegen/box/objects/useImportedMember.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user