More tests on casts on receiver of inline class type

This commit is contained in:
Dmitry Petrov
2018-09-24 10:46:10 +03:00
parent 88cc900dc7
commit c1bb3479df
10 changed files with 154 additions and 100 deletions
@@ -0,0 +1,29 @@
// !LANGUAGE: +InlineClasses
// IGNORE_BACKEND: JVM_IR
interface IBase {
fun testDefault1() = if (this is B) this.foo() else "fail"
}
interface IFoo : IBase {
fun foo(): String
fun testDefault2() = if (this is B) this.foo() else "fail"
}
inline class B(val x: String) : IFoo {
override fun foo() = x
}
fun IBase.test1() = if (this is IFoo) foo() else "fail"
fun IBase.test2() = if (this is B) foo() else "fail"
fun box(): String {
if (B("OK").test1() != "OK") throw AssertionError()
if (B("OK").test2() != "OK") throw AssertionError()
if (B("OK").testDefault1() != "OK") throw AssertionError()
if (B("OK").testDefault2() != "OK") throw AssertionError()
return "OK"
}
@@ -11674,6 +11674,16 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTest("compiler/testData/codegen/box/inlineClasses/equalityForBoxesOfNullableValuesOfInlineClass.kt");
}
@TestMetadata("extLambdaInInlineClassFun.kt")
public void testExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/extLambdaInInlineClassFun.kt");
}
@TestMetadata("extLambdaInInlineClassFun2.kt")
public void testExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/extLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineClassAsLastExpressionInInLambda.kt")
public void testInlineClassAsLastExpressionInInLambda() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineClassAsLastExpressionInInLambda.kt");
@@ -11744,6 +11754,16 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTest("compiler/testData/codegen/box/inlineClasses/inlineClassesRefTypesInInlineLambdaParameters.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun.kt")
public void testInlineExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineExtLambdaInInlineClassFun.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun2.kt")
public void testInlineExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineExtLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineFunctionInsideInlineClass.kt")
public void testInlineFunctionInsideInlineClass() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineFunctionInsideInlineClass.kt");
@@ -11849,6 +11869,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorsInsideInlineClassWithPrimitiveCarrierType.kt");
}
@TestMetadata("smartCastOnThisOfInlineClassType.kt")
public void testSmartCastOnThisOfInlineClassType() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/smartCastOnThisOfInlineClassType.kt");
}
@TestMetadata("toStringCallingPrivateFun.kt")
public void testToStringCallingPrivateFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/toStringCallingPrivateFun.kt");
@@ -11916,26 +11941,6 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JVM, true);
}
@TestMetadata("extLambdaInInlineClassFun.kt")
public void testExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/extLambdaInInlineClassFun.kt");
}
@TestMetadata("extLambdaInInlineClassFun2.kt")
public void testExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/extLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun.kt")
public void testInlineExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/inlineExtLambdaInInlineClassFun.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun2.kt")
public void testInlineExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/inlineExtLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineLambdaInInlineClassFun.kt")
public void testInlineLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/inlineLambdaInInlineClassFun.kt");
@@ -11674,6 +11674,16 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/inlineClasses/equalityForBoxesOfNullableValuesOfInlineClass.kt");
}
@TestMetadata("extLambdaInInlineClassFun.kt")
public void testExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/extLambdaInInlineClassFun.kt");
}
@TestMetadata("extLambdaInInlineClassFun2.kt")
public void testExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/extLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineClassAsLastExpressionInInLambda.kt")
public void testInlineClassAsLastExpressionInInLambda() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineClassAsLastExpressionInInLambda.kt");
@@ -11744,6 +11754,16 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/inlineClasses/inlineClassesRefTypesInInlineLambdaParameters.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun.kt")
public void testInlineExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineExtLambdaInInlineClassFun.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun2.kt")
public void testInlineExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineExtLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineFunctionInsideInlineClass.kt")
public void testInlineFunctionInsideInlineClass() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineFunctionInsideInlineClass.kt");
@@ -11849,6 +11869,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorsInsideInlineClassWithPrimitiveCarrierType.kt");
}
@TestMetadata("smartCastOnThisOfInlineClassType.kt")
public void testSmartCastOnThisOfInlineClassType() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/smartCastOnThisOfInlineClassType.kt");
}
@TestMetadata("toStringCallingPrivateFun.kt")
public void testToStringCallingPrivateFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/toStringCallingPrivateFun.kt");
@@ -11916,26 +11941,6 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JVM, true);
}
@TestMetadata("extLambdaInInlineClassFun.kt")
public void testExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/extLambdaInInlineClassFun.kt");
}
@TestMetadata("extLambdaInInlineClassFun2.kt")
public void testExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/extLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun.kt")
public void testInlineExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/inlineExtLambdaInInlineClassFun.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun2.kt")
public void testInlineExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/inlineExtLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineLambdaInInlineClassFun.kt")
public void testInlineLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/inlineLambdaInInlineClassFun.kt");
@@ -11679,6 +11679,16 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/inlineClasses/equalityForBoxesOfNullableValuesOfInlineClass.kt");
}
@TestMetadata("extLambdaInInlineClassFun.kt")
public void testExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/extLambdaInInlineClassFun.kt");
}
@TestMetadata("extLambdaInInlineClassFun2.kt")
public void testExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/extLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineClassAsLastExpressionInInLambda.kt")
public void testInlineClassAsLastExpressionInInLambda() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineClassAsLastExpressionInInLambda.kt");
@@ -11749,6 +11759,16 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/inlineClasses/inlineClassesRefTypesInInlineLambdaParameters.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun.kt")
public void testInlineExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineExtLambdaInInlineClassFun.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun2.kt")
public void testInlineExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineExtLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineFunctionInsideInlineClass.kt")
public void testInlineFunctionInsideInlineClass() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineFunctionInsideInlineClass.kt");
@@ -11854,6 +11874,11 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorsInsideInlineClassWithPrimitiveCarrierType.kt");
}
@TestMetadata("smartCastOnThisOfInlineClassType.kt")
public void testSmartCastOnThisOfInlineClassType() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/smartCastOnThisOfInlineClassType.kt");
}
@TestMetadata("toStringCallingPrivateFun.kt")
public void testToStringCallingPrivateFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/toStringCallingPrivateFun.kt");
@@ -11921,26 +11946,6 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JVM_IR, true);
}
@TestMetadata("extLambdaInInlineClassFun.kt")
public void testExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/extLambdaInInlineClassFun.kt");
}
@TestMetadata("extLambdaInInlineClassFun2.kt")
public void testExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/extLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun.kt")
public void testInlineExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/inlineExtLambdaInInlineClassFun.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun2.kt")
public void testInlineExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/inlineExtLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineLambdaInInlineClassFun.kt")
public void testInlineLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/inlineLambdaInInlineClassFun.kt");
@@ -10219,6 +10219,16 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
runTest("compiler/testData/codegen/box/inlineClasses/equalityForBoxesOfNullableValuesOfInlineClass.kt");
}
@TestMetadata("extLambdaInInlineClassFun.kt")
public void testExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/extLambdaInInlineClassFun.kt");
}
@TestMetadata("extLambdaInInlineClassFun2.kt")
public void testExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/extLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineClassAsLastExpressionInInLambda.kt")
public void testInlineClassAsLastExpressionInInLambda() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineClassAsLastExpressionInInLambda.kt");
@@ -10284,6 +10294,16 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
runTest("compiler/testData/codegen/box/inlineClasses/inlineClassesRefTypesInInlineLambdaParameters.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun.kt")
public void testInlineExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineExtLambdaInInlineClassFun.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun2.kt")
public void testInlineExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineExtLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineFunctionInsideInlineClass.kt")
public void testInlineFunctionInsideInlineClass() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineFunctionInsideInlineClass.kt");
@@ -10389,6 +10409,11 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorsInsideInlineClassWithPrimitiveCarrierType.kt");
}
@TestMetadata("smartCastOnThisOfInlineClassType.kt")
public void testSmartCastOnThisOfInlineClassType() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/smartCastOnThisOfInlineClassType.kt");
}
@TestMetadata("toStringCallingPrivateFun.kt")
public void testToStringCallingPrivateFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/toStringCallingPrivateFun.kt");
@@ -10456,26 +10481,6 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JS_IR, true);
}
@TestMetadata("extLambdaInInlineClassFun.kt")
public void testExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/extLambdaInInlineClassFun.kt");
}
@TestMetadata("extLambdaInInlineClassFun2.kt")
public void testExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/extLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun.kt")
public void testInlineExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/inlineExtLambdaInInlineClassFun.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun2.kt")
public void testInlineExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/inlineExtLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineLambdaInInlineClassFun.kt")
public void testInlineLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/inlineLambdaInInlineClassFun.kt");
@@ -11264,6 +11264,16 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
runTest("compiler/testData/codegen/box/inlineClasses/equalityForBoxesOfNullableValuesOfInlineClass.kt");
}
@TestMetadata("extLambdaInInlineClassFun.kt")
public void testExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/extLambdaInInlineClassFun.kt");
}
@TestMetadata("extLambdaInInlineClassFun2.kt")
public void testExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/extLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineClassAsLastExpressionInInLambda.kt")
public void testInlineClassAsLastExpressionInInLambda() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineClassAsLastExpressionInInLambda.kt");
@@ -11329,6 +11339,16 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
runTest("compiler/testData/codegen/box/inlineClasses/inlineClassesRefTypesInInlineLambdaParameters.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun.kt")
public void testInlineExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineExtLambdaInInlineClassFun.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun2.kt")
public void testInlineExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineExtLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineFunctionInsideInlineClass.kt")
public void testInlineFunctionInsideInlineClass() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/inlineFunctionInsideInlineClass.kt");
@@ -11434,6 +11454,11 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
runTest("compiler/testData/codegen/box/inlineClasses/secondaryConstructorsInsideInlineClassWithPrimitiveCarrierType.kt");
}
@TestMetadata("smartCastOnThisOfInlineClassType.kt")
public void testSmartCastOnThisOfInlineClassType() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/smartCastOnThisOfInlineClassType.kt");
}
@TestMetadata("toStringCallingPrivateFun.kt")
public void testToStringCallingPrivateFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/toStringCallingPrivateFun.kt");
@@ -11501,26 +11526,6 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JS, true);
}
@TestMetadata("extLambdaInInlineClassFun.kt")
public void testExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/extLambdaInInlineClassFun.kt");
}
@TestMetadata("extLambdaInInlineClassFun2.kt")
public void testExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/extLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun.kt")
public void testInlineExtLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/inlineExtLambdaInInlineClassFun.kt");
}
@TestMetadata("inlineExtLambdaInInlineClassFun2.kt")
public void testInlineExtLambdaInInlineClassFun2() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/inlineExtLambdaInInlineClassFun2.kt");
}
@TestMetadata("inlineLambdaInInlineClassFun.kt")
public void testInlineLambdaInInlineClassFun() throws Exception {
runTest("compiler/testData/codegen/box/inlineClasses/contextsAndAccessors/inlineLambdaInInlineClassFun.kt");