From 584facc95fb6e49bc3b461a0c00789bd1f45db99 Mon Sep 17 00:00:00 2001 From: Victor Petukhov Date: Wed, 7 Jul 2021 15:24:31 +0300 Subject: [PATCH] Fix fir-related problems and tests for inferring self types --- .../jetbrains/kotlin/fir/types/ConeTypeContext.kt | 2 +- .../basicInferenceForImplicitSelfType.fir.kt | 12 ++++++------ .../recursiveTypeWithTwoTypeParams.fir.kt | 2 +- .../writerAppenderExampleRecursive.fir.kt | 8 ++++---- .../basicInferenceForImplicitSelfType.fir.kt | 14 +++++++------- .../recursiveTypeWithTwoTypeParams.fir.kt | 8 ++++---- .../writerAppenderExampleRecursive.fir.kt | 10 +++++----- 7 files changed, 28 insertions(+), 28 deletions(-) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt index ae16b1c6c8b..6aa63db3da4 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/types/ConeTypeContext.kt @@ -249,7 +249,7 @@ interface ConeTypeContext : TypeSystemContext, TypeSystemOptimizationContext, Ty is FirAnonymousObjectSymbol -> symbol.fir.typeParameters.map { it.symbol.toLookupTag() } is FirRegularClassSymbol -> symbol.fir.typeParameters.map { it.symbol.toLookupTag() } is FirTypeAliasSymbol -> symbol.fir.typeParameters.map { it.symbol.toLookupTag() } - else -> error("Unexpected FirClassLikeSymbol $symbol for ${this::class}, with classId ${(this as? ConeClassLikeLookupTag)?.classId}") + else -> emptyList() } } diff --git a/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/disabledInferenceOnSelfTypes/basicInferenceForImplicitSelfType.fir.kt b/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/disabledInferenceOnSelfTypes/basicInferenceForImplicitSelfType.fir.kt index 25789449fad..14f26e72e5d 100644 --- a/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/disabledInferenceOnSelfTypes/basicInferenceForImplicitSelfType.fir.kt +++ b/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/disabledInferenceOnSelfTypes/basicInferenceForImplicitSelfType.fir.kt @@ -6,17 +6,17 @@ class Builder> { } fun testStar(builder: Builder<*>) { - builder.test() + builder.test() builder - .test() - .foo() + .test() + .foo() } fun > testTypeParam(builder: Builder) { - builder.test() + builder.test() builder - .test() - .foo() + .test() + .foo() } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/disabledInferenceOnSelfTypes/recursiveTypeWithTwoTypeParams.fir.kt b/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/disabledInferenceOnSelfTypes/recursiveTypeWithTwoTypeParams.fir.kt index 2ef5983977d..604be26ad36 100644 --- a/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/disabledInferenceOnSelfTypes/recursiveTypeWithTwoTypeParams.fir.kt +++ b/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/disabledInferenceOnSelfTypes/recursiveTypeWithTwoTypeParams.fir.kt @@ -5,6 +5,6 @@ interface BodySpec> { } fun test(b: BodySpec) { - val x = b.isEqualTo("") + val x = b.isEqualTo("") x } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/disabledInferenceOnSelfTypes/writerAppenderExampleRecursive.fir.kt b/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/disabledInferenceOnSelfTypes/writerAppenderExampleRecursive.fir.kt index 0ed02c5f343..e0e9c69196d 100644 --- a/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/disabledInferenceOnSelfTypes/writerAppenderExampleRecursive.fir.kt +++ b/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/disabledInferenceOnSelfTypes/writerAppenderExampleRecursive.fir.kt @@ -1,10 +1,10 @@ // !LANGUAGE: -TypeInferenceOnCallsWithSelfTypes fun test() { - ")!>WriterAppender.newBuilder() - >")!>WriterAppender.Builder1() + WriterAppender.newBuilder() + ")!>WriterAppender.Builder1() - & Builder2<*>}")!>WriterAppender.intersectTwoSelfTypes() + WriterAppender.intersectTwoSelfTypes() } object WriterAppender { @@ -12,7 +12,7 @@ object WriterAppender { class Builder1> { fun asBuilder(): B { - return this as B + return this as B } } diff --git a/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/enabledInferenceOnSelfTypes/basicInferenceForImplicitSelfType.fir.kt b/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/enabledInferenceOnSelfTypes/basicInferenceForImplicitSelfType.fir.kt index ae1910abaa0..9d97f632031 100644 --- a/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/enabledInferenceOnSelfTypes/basicInferenceForImplicitSelfType.fir.kt +++ b/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/enabledInferenceOnSelfTypes/basicInferenceForImplicitSelfType.fir.kt @@ -16,11 +16,11 @@ class Builder> { } fun testStar(builder: Builder<*>) { - ")!>builder.test() + builder.test() builder - .test() - .foo() + .test() + .foo() } fun > testTypeParam(builder: Builder) { @@ -32,15 +32,15 @@ fun > testTypeParam(builder: Builder) { } fun testStarJava(builder: JavaBuilder<*>) { - ")!>builder.test() + builder.test() builder - .test() - .foo() + .test() + .foo() } fun > testTypeParamJava(builder: JavaBuilder) { - builder.test() + builder.test() builder .test() diff --git a/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/enabledInferenceOnSelfTypes/recursiveTypeWithTwoTypeParams.fir.kt b/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/enabledInferenceOnSelfTypes/recursiveTypeWithTwoTypeParams.fir.kt index a816d2089fd..f55fa6eb146 100644 --- a/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/enabledInferenceOnSelfTypes/recursiveTypeWithTwoTypeParams.fir.kt +++ b/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/enabledInferenceOnSelfTypes/recursiveTypeWithTwoTypeParams.fir.kt @@ -13,11 +13,11 @@ interface BodySpec> { } fun test(b: BodySpec) { - val x = b.isEqualTo("") - ")!>x + val x = b.isEqualTo("") + x } fun testJava(b: JavaBodySpec) { - val x = b.isEqualTo("") - ")!>x + val x = b.isEqualTo("") + x } diff --git a/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/enabledInferenceOnSelfTypes/writerAppenderExampleRecursive.fir.kt b/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/enabledInferenceOnSelfTypes/writerAppenderExampleRecursive.fir.kt index 3722e2e66b7..d8712fbcf23 100644 --- a/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/enabledInferenceOnSelfTypes/writerAppenderExampleRecursive.fir.kt +++ b/compiler/testData/diagnostics/tests/inference/recursiveTypes/selfTypes/enabledInferenceOnSelfTypes/writerAppenderExampleRecursive.fir.kt @@ -22,14 +22,14 @@ fun test() { ")!>WriterAppender.newBuilder() >")!>WriterAppender.Builder1() - & Builder2<*>}")!>WriterAppender.intersectTwoSelfTypes() + & WriterAppender.Builder2<*>")!>WriterAppender.intersectTwoSelfTypes() } fun testJava(appender: JavaWriterAppender) { - ")!>appender.newBuilder() - >")!>appender.Builder1() + ..JavaWriterAppender.Builder1<*>?!")!>appender.newBuilder() + ..JavaWriterAppender.Builder1<*>?!>")!>appender.Builder1() - & Builder2<*>}")!>appender.intersectTwoSelfTypes() + ..JavaWriterAppender.Builder1<*>?! & JavaWriterAppender.Builder2<*>..JavaWriterAppender.Builder2<*>?!..JavaWriterAppender.Builder1<*>? & JavaWriterAppender.Builder2<*>?")!>appender.intersectTwoSelfTypes() } object WriterAppender { @@ -37,7 +37,7 @@ object WriterAppender { class Builder1> { fun asBuilder(): B { - return this as B + return this as B } }