From 1c564e1bd6ee21029382fd56dd53537359e4b8d1 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Mon, 22 Jun 2020 15:21:23 +0300 Subject: [PATCH] FIR: add ImplicitTypeRef to the control flow fir element sources --- .../builder/FirBreakExpressionBuilder.kt | 2 ++ .../builder/FirContinueExpressionBuilder.kt | 2 ++ .../builder/FirElseIfTrueConditionBuilder.kt | 2 ++ .../builder/FirReturnExpressionBuilder.kt | 2 ++ .../builder/FirStringConcatenationCallBuilder.kt | 2 ++ .../builder/FirThrowExpressionBuilder.kt | 2 ++ .../builder/FirUnitExpressionBuilder.kt | 2 ++ .../fir/expressions/impl/FirBreakExpressionImpl.kt | 4 +++- .../expressions/impl/FirContinueExpressionImpl.kt | 4 +++- .../fir/expressions/impl/FirElseIfTrueCondition.kt | 4 +++- .../expressions/impl/FirReturnExpressionImpl.kt | 4 +++- .../impl/FirStringConcatenationCallImpl.kt | 4 +++- .../fir/expressions/impl/FirThrowExpressionImpl.kt | 4 +++- .../fir/expressions/impl/FirUnitExpression.kt | 4 +++- .../tree/generator/ImplementationConfigurator.kt | 14 +++++++------- .../AbstractFirTreeImplementationConfigurator.kt | 8 +++++++- .../kotlin/fir/tree/generator/model/Element.kt | 6 ++++-- .../fir/tree/generator/model/Implementation.kt | 3 ++- .../kotlin/fir/tree/generator/printer/utils.kt | 4 +++- 19 files changed, 58 insertions(+), 19 deletions(-) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirBreakExpressionBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirBreakExpressionBuilder.kt index d3f0070be77..228e3f1276a 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirBreakExpressionBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirBreakExpressionBuilder.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions.builder import kotlin.contracts.* +import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirTarget import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder @@ -19,6 +20,7 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirBreakExpressionImpl import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitNothingTypeRef import org.jetbrains.kotlin.fir.visitors.* +import org.jetbrains.kotlin.fir.withKind /* * This file was generated automatically diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirContinueExpressionBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirContinueExpressionBuilder.kt index 9cb85f10ead..5bc005a3fab 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirContinueExpressionBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirContinueExpressionBuilder.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions.builder import kotlin.contracts.* +import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirTarget import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder @@ -19,6 +20,7 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirContinueExpressionImpl import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitNothingTypeRef import org.jetbrains.kotlin.fir.visitors.* +import org.jetbrains.kotlin.fir.withKind /* * This file was generated automatically diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirElseIfTrueConditionBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirElseIfTrueConditionBuilder.kt index d0067dc0070..dd53bbf27ad 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirElseIfTrueConditionBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirElseIfTrueConditionBuilder.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions.builder import kotlin.contracts.* +import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.FirImplementationDetail import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder @@ -16,6 +17,7 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitBooleanTypeRef import org.jetbrains.kotlin.fir.visitors.* +import org.jetbrains.kotlin.fir.withKind /* * This file was generated automatically diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirReturnExpressionBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirReturnExpressionBuilder.kt index eb335c3f3a8..1a9d58a6040 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirReturnExpressionBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirReturnExpressionBuilder.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions.builder import kotlin.contracts.* +import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirTarget import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder @@ -19,6 +20,7 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirReturnExpressionImpl import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitNothingTypeRef import org.jetbrains.kotlin.fir.visitors.* +import org.jetbrains.kotlin.fir.withKind /* * This file was generated automatically diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirStringConcatenationCallBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirStringConcatenationCallBuilder.kt index 07ec402adbf..3faa3eafca7 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirStringConcatenationCallBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirStringConcatenationCallBuilder.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions.builder import kotlin.contracts.* +import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl @@ -18,6 +19,7 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirStringConcatenationCallImpl import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitStringTypeRef import org.jetbrains.kotlin.fir.visitors.* +import org.jetbrains.kotlin.fir.withKind /* * This file was generated automatically diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirThrowExpressionBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirThrowExpressionBuilder.kt index 07c94822f79..462bc4c404c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirThrowExpressionBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirThrowExpressionBuilder.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions.builder import kotlin.contracts.* +import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder import org.jetbrains.kotlin.fir.builder.FirBuilderDsl @@ -17,6 +18,7 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirThrowExpressionImpl import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitNothingTypeRef import org.jetbrains.kotlin.fir.visitors.* +import org.jetbrains.kotlin.fir.withKind /* * This file was generated automatically diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirUnitExpressionBuilder.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirUnitExpressionBuilder.kt index 7258cb57366..bb8d9a82ad1 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirUnitExpressionBuilder.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/builder/FirUnitExpressionBuilder.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.fir.expressions.builder import kotlin.contracts.* +import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.FirImplementationDetail import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.builder.FirAnnotationContainerBuilder @@ -16,6 +17,7 @@ import org.jetbrains.kotlin.fir.expressions.impl.FirUnitExpression import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef import org.jetbrains.kotlin.fir.visitors.* +import org.jetbrains.kotlin.fir.withKind /* * This file was generated automatically diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirBreakExpressionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirBreakExpressionImpl.kt index 0e24bf59144..bb02b83a8fb 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirBreakExpressionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirBreakExpressionImpl.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.fir.expressions.impl +import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirTarget import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall @@ -12,6 +13,7 @@ import org.jetbrains.kotlin.fir.expressions.FirBreakExpression import org.jetbrains.kotlin.fir.expressions.FirLoop import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitNothingTypeRef +import org.jetbrains.kotlin.fir.withKind import org.jetbrains.kotlin.fir.visitors.* /* @@ -24,7 +26,7 @@ internal class FirBreakExpressionImpl( override val annotations: MutableList, override val target: FirTarget, ) : FirBreakExpression() { - override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(source) + override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(source?.withKind(FirFakeSourceElementKind.ImplicitTypeRef)) override fun acceptChildren(visitor: FirVisitor, data: D) { typeRef.accept(visitor, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirContinueExpressionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirContinueExpressionImpl.kt index 06ec4bf253b..3a0d9dc3aca 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirContinueExpressionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirContinueExpressionImpl.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.fir.expressions.impl +import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirTarget import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall @@ -12,6 +13,7 @@ import org.jetbrains.kotlin.fir.expressions.FirContinueExpression import org.jetbrains.kotlin.fir.expressions.FirLoop import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitNothingTypeRef +import org.jetbrains.kotlin.fir.withKind import org.jetbrains.kotlin.fir.visitors.* /* @@ -24,7 +26,7 @@ internal class FirContinueExpressionImpl( override val annotations: MutableList, override val target: FirTarget, ) : FirContinueExpression() { - override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(source) + override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(source?.withKind(FirFakeSourceElementKind.ImplicitTypeRef)) override fun acceptChildren(visitor: FirVisitor, data: D) { typeRef.accept(visitor, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirElseIfTrueCondition.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirElseIfTrueCondition.kt index 44018200e77..9e06c64d928 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirElseIfTrueCondition.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirElseIfTrueCondition.kt @@ -5,12 +5,14 @@ package org.jetbrains.kotlin.fir.expressions.impl +import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.FirImplementationDetail import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitBooleanTypeRef +import org.jetbrains.kotlin.fir.withKind import org.jetbrains.kotlin.fir.visitors.* /* @@ -22,7 +24,7 @@ class FirElseIfTrueCondition @FirImplementationDetail constructor( override val source: FirSourceElement?, override val annotations: MutableList, ) : FirExpression() { - override var typeRef: FirTypeRef = FirImplicitBooleanTypeRef(source) + override var typeRef: FirTypeRef = FirImplicitBooleanTypeRef(source?.withKind(FirFakeSourceElementKind.ImplicitTypeRef)) override fun acceptChildren(visitor: FirVisitor, data: D) { typeRef.accept(visitor, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirReturnExpressionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirReturnExpressionImpl.kt index 2934ae3bc6e..6b7c70fe388 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirReturnExpressionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirReturnExpressionImpl.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.fir.expressions.impl +import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.FirTarget import org.jetbrains.kotlin.fir.declarations.FirFunction @@ -13,6 +14,7 @@ import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirReturnExpression import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitNothingTypeRef +import org.jetbrains.kotlin.fir.withKind import org.jetbrains.kotlin.fir.visitors.* /* @@ -26,7 +28,7 @@ internal class FirReturnExpressionImpl( override val target: FirTarget>, override var result: FirExpression, ) : FirReturnExpression() { - override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(source) + override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(source?.withKind(FirFakeSourceElementKind.ImplicitTypeRef)) override fun acceptChildren(visitor: FirVisitor, data: D) { typeRef.accept(visitor, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirStringConcatenationCallImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirStringConcatenationCallImpl.kt index 9c2ea3ed99f..c71a7218331 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirStringConcatenationCallImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirStringConcatenationCallImpl.kt @@ -5,12 +5,14 @@ package org.jetbrains.kotlin.fir.expressions.impl +import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirArgumentList import org.jetbrains.kotlin.fir.expressions.FirStringConcatenationCall import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitStringTypeRef +import org.jetbrains.kotlin.fir.withKind import org.jetbrains.kotlin.fir.visitors.* /* @@ -23,7 +25,7 @@ internal class FirStringConcatenationCallImpl( override val annotations: MutableList, override var argumentList: FirArgumentList, ) : FirStringConcatenationCall() { - override var typeRef: FirTypeRef = FirImplicitStringTypeRef(source) + override var typeRef: FirTypeRef = FirImplicitStringTypeRef(source?.withKind(FirFakeSourceElementKind.ImplicitTypeRef)) override fun acceptChildren(visitor: FirVisitor, data: D) { annotations.forEach { it.accept(visitor, data) } diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirThrowExpressionImpl.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirThrowExpressionImpl.kt index 23e62232cfe..79e2cbbc51c 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirThrowExpressionImpl.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirThrowExpressionImpl.kt @@ -5,12 +5,14 @@ package org.jetbrains.kotlin.fir.expressions.impl +import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.expressions.FirThrowExpression import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitNothingTypeRef +import org.jetbrains.kotlin.fir.withKind import org.jetbrains.kotlin.fir.visitors.* /* @@ -23,7 +25,7 @@ internal class FirThrowExpressionImpl( override val annotations: MutableList, override var exception: FirExpression, ) : FirThrowExpression() { - override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(source) + override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(source?.withKind(FirFakeSourceElementKind.ImplicitTypeRef)) override fun acceptChildren(visitor: FirVisitor, data: D) { typeRef.accept(visitor, data) diff --git a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirUnitExpression.kt b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirUnitExpression.kt index b6198c75ff2..bcf307d1303 100644 --- a/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirUnitExpression.kt +++ b/compiler/fir/tree/gen/org/jetbrains/kotlin/fir/expressions/impl/FirUnitExpression.kt @@ -5,12 +5,14 @@ package org.jetbrains.kotlin.fir.expressions.impl +import org.jetbrains.kotlin.fir.FirFakeSourceElementKind import org.jetbrains.kotlin.fir.FirImplementationDetail import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.expressions.FirAnnotationCall import org.jetbrains.kotlin.fir.expressions.FirExpression import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef +import org.jetbrains.kotlin.fir.withKind import org.jetbrains.kotlin.fir.visitors.* /* @@ -22,7 +24,7 @@ class FirUnitExpression @FirImplementationDetail constructor( override val source: FirSourceElement?, override val annotations: MutableList, ) : FirExpression() { - override var typeRef: FirTypeRef = FirImplicitUnitTypeRef(source) + override var typeRef: FirTypeRef = FirImplicitUnitTypeRef(source?.withKind(FirFakeSourceElementKind.ImplicitTypeRef)) override fun acceptChildren(visitor: FirVisitor, data: D) { typeRef.accept(visitor, data) diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt index 395e3d39c96..12945acd2fe 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/ImplementationConfigurator.kt @@ -103,7 +103,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() } impl(expression, "FirElseIfTrueCondition") { - default("typeRef", "FirImplicitBooleanTypeRef(source)") + defaultTypeRefWithSource("FirImplicitBooleanTypeRef") useTypes(implicitBooleanTypeRefType) publicImplementation() } @@ -259,17 +259,17 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() impl(resolvedReifiedParameterReference) impl(returnExpression) { - default("typeRef", "FirImplicitNothingTypeRef(source)") + defaultTypeRefWithSource("FirImplicitNothingTypeRef") useTypes(implicitNothingTypeRefType) } impl(stringConcatenationCall) { - default("typeRef", "FirImplicitStringTypeRef(source)") + defaultTypeRefWithSource("FirImplicitStringTypeRef") useTypes(implicitStringTypeRefType) } impl(throwExpression) { - default("typeRef", "FirImplicitNothingTypeRef(source)") + defaultTypeRefWithSource("FirImplicitNothingTypeRef") useTypes(implicitNothingTypeRefType) } @@ -279,7 +279,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() } impl(expression, "FirUnitExpression") { - default("typeRef", "FirImplicitUnitTypeRef(source)") + defaultTypeRefWithSource("FirImplicitUnitTypeRef") useTypes(implicitUnitTypeRefType) publicImplementation() } @@ -427,12 +427,12 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator() } impl(breakExpression) { - default("typeRef", "FirImplicitNothingTypeRef(source)") + defaultTypeRefWithSource("FirImplicitNothingTypeRef") useTypes(implicitNothingTypeRefType) } impl(continueExpression) { - default("typeRef", "FirImplicitNothingTypeRef(source)") + defaultTypeRefWithSource("FirImplicitNothingTypeRef") useTypes(implicitNothingTypeRefType) } diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFirTreeImplementationConfigurator.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFirTreeImplementationConfigurator.kt index 198198dd872..073ba25c9da 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFirTreeImplementationConfigurator.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/context/AbstractFirTreeImplementationConfigurator.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -122,6 +122,12 @@ abstract class AbstractFirTreeImplementationConfigurator { } } + fun defaultTypeRefWithSource(typeRefClass: String) { + default("typeRef", "$typeRefClass(source?.withKind(FirFakeSourceElementKind.ImplicitTypeRef))") + implementation.arbitraryImportables += ArbitraryImportable("org.jetbrains.kotlin.fir", "FirFakeSourceElementKind") + implementation.arbitraryImportables += ArbitraryImportable("org.jetbrains.kotlin.fir", "withKind") + } + fun defaultTrue(field: String, withGetter: Boolean = false) { default(field) { value = "true" diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Element.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Element.kt index 9364334304b..d47707e56ef 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Element.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Element.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -172,4 +172,6 @@ class TypeArgumentWithMultipleUpperBounds(name: String, override val upperBounds override fun toString(): String { return name } -} \ No newline at end of file +} + +data class ArbitraryImportable(override val packageName: String, override val type: String) : Importable \ No newline at end of file diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt index ea865fe5466..e26fd051412 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/model/Implementation.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -41,6 +41,7 @@ class Implementation(val element: Element, val name: String?) : FieldContainer, override val packageName = element.packageName + ".impl" val usedTypes = mutableListOf() + val arbitraryImportables = mutableListOf() var isPublic = false var requiresOptIn = false diff --git a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/utils.kt b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/utils.kt index 12b471fa88a..636f9624a48 100644 --- a/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/utils.kt +++ b/compiler/fir/tree/tree-generator/src/org/jetbrains/kotlin/fir/tree/generator/printer/utils.kt @@ -35,7 +35,9 @@ fun Builder.collectImports(): List { fun Implementation.collectImports(base: List = emptyList(), kind: ImportKind = ImportKind.Implementation): List { return element.collectImportsInternal( base + listOf(element.fullQualifiedName) - + usedTypes.mapNotNull { it.fullQualifiedName } + parents.mapNotNull { it.fullQualifiedName } + + usedTypes.mapNotNull { it.fullQualifiedName } + + arbitraryImportables.mapNotNull { it.fullQualifiedName } + + parents.mapNotNull { it.fullQualifiedName } + listOfNotNull( pureAbstractElementType.fullQualifiedName?.takeIf { needPureAbstractElement }, firImplementationDetailType.fullQualifiedName?.takeIf { isPublic || requiresOptIn },