Add problematic enum test

This commit is contained in:
Mikhail Glukhikh
2019-12-30 17:41:26 +03:00
parent 7e946c6f5b
commit 05ee6fdd77
4 changed files with 82 additions and 0 deletions
@@ -0,0 +1,22 @@
enum class TestEnum {
FIRST,
SECOND,
THIRD {
fun foo() {}
}
}
fun use(some: Any?) {}
fun useEnum(some: TestEnum) {}
fun useVararg(vararg some: TestEnum) {}
fun test() {
use(TestEnum.FIRST)
useEnum(TestEnum.SECOND)
useEnum(TestEnum.THIRD)
<!INAPPLICABLE_CANDIDATE!>useVararg<!>(TestEnum.FIRST, TestEnum.SECOND)
<!INAPPLICABLE_CANDIDATE!>useVararg<!>(1, 2, 3, 4, 5)
}
@@ -0,0 +1,50 @@
FILE: enumEntryUse.kt
public final enum class TestEnum : R|kotlin/Enum<TestEnum>| {
private constructor(): R|TestEnum| {
super<R|kotlin/Any|>()
}
public final static enum entry FIRST: R|TestEnum| = object : R|TestEnum| {
private constructor(): R|anonymous| {
super<R|TestEnum|>()
}
}
public final static enum entry SECOND: R|TestEnum| = object : R|TestEnum| {
private constructor(): R|anonymous| {
super<R|TestEnum|>()
}
}
public final static enum entry THIRD: R|TestEnum| = object : R|TestEnum| {
private constructor(): R|anonymous| {
super<R|TestEnum|>()
}
public final fun foo(): R|kotlin/Unit| {
}
}
public final static fun values(): R|kotlin/Array<TestEnum>| {
}
public final static fun valueOf(value: R|kotlin/String|): R|TestEnum| {
}
}
public final fun use(some: R|kotlin/Any?|): R|kotlin/Unit| {
}
public final fun useEnum(some: R|TestEnum|): R|kotlin/Unit| {
}
public final fun useVararg(vararg some: R|kotlin/Array<kotlin/Array<kotlin/Array<kotlin/Array<kotlin/Array<kotlin/Array<TestEnum>>>>>>|): R|kotlin/Unit| {
}
public final fun test(): R|kotlin/Unit| {
R|/use|(Q|TestEnum|.R|/TestEnum.FIRST|)
R|/useEnum|(Q|TestEnum|.R|/TestEnum.SECOND|)
R|/useEnum|(Q|TestEnum|.R|/TestEnum.THIRD|)
<Inapplicable(INAPPLICABLE): [/useVararg]>#(Q|TestEnum|.R|/TestEnum.FIRST|, Q|TestEnum|.R|/TestEnum.SECOND|)
<Inapplicable(INAPPLICABLE): [/useVararg]>#(Int(1), Int(2), Int(3), Int(4), Int(5))
}
@@ -439,6 +439,11 @@ public class FirDiagnosticsTestGenerated extends AbstractFirDiagnosticsTest {
runTest("compiler/fir/resolve/testData/resolve/expresssions/dispatchReceiver.kt"); runTest("compiler/fir/resolve/testData/resolve/expresssions/dispatchReceiver.kt");
} }
@TestMetadata("enumEntryUse.kt")
public void testEnumEntryUse() throws Exception {
runTest("compiler/fir/resolve/testData/resolve/expresssions/enumEntryUse.kt");
}
@TestMetadata("enumValues.kt") @TestMetadata("enumValues.kt")
public void testEnumValues() throws Exception { public void testEnumValues() throws Exception {
runTest("compiler/fir/resolve/testData/resolve/expresssions/enumValues.kt"); runTest("compiler/fir/resolve/testData/resolve/expresssions/enumValues.kt");
@@ -439,6 +439,11 @@ public class FirDiagnosticsWithLightTreeTestGenerated extends AbstractFirDiagnos
runTest("compiler/fir/resolve/testData/resolve/expresssions/dispatchReceiver.kt"); runTest("compiler/fir/resolve/testData/resolve/expresssions/dispatchReceiver.kt");
} }
@TestMetadata("enumEntryUse.kt")
public void testEnumEntryUse() throws Exception {
runTest("compiler/fir/resolve/testData/resolve/expresssions/enumEntryUse.kt");
}
@TestMetadata("enumValues.kt") @TestMetadata("enumValues.kt")
public void testEnumValues() throws Exception { public void testEnumValues() throws Exception {
runTest("compiler/fir/resolve/testData/resolve/expresssions/enumValues.kt"); runTest("compiler/fir/resolve/testData/resolve/expresssions/enumValues.kt");