From 6c8096643c8cbbfefbc665a0fa967b04c1538625 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Mon, 21 Jun 2021 11:16:59 +0300 Subject: [PATCH] [FIR] Move danglingConstraints attribute to other attributes --- .../declaration/FirTypeConstraintsChecker.kt | 2 +- .../converter/DeclarationsConverter.kt | 5 +--- .../fir/declarations/danglingConstraints.kt | 30 ------------------- .../utils/declarationAttributes.kt | 21 +++++++++++++ 4 files changed, 23 insertions(+), 35 deletions(-) delete mode 100644 compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/danglingConstraints.kt diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTypeConstraintsChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTypeConstraintsChecker.kt index 928e95c20e8..b80fc954fca 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTypeConstraintsChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirTypeConstraintsChecker.kt @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.fir.analysis.diagnostics.FirErrors import org.jetbrains.kotlin.fir.analysis.diagnostics.reportOn import org.jetbrains.kotlin.fir.declarations.FirDeclaration import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner -import org.jetbrains.kotlin.fir.declarations.getDanglingTypeConstraintsOrEmpty +import org.jetbrains.kotlin.fir.declarations.utils.getDanglingTypeConstraintsOrEmpty object FirTypeConstraintsChecker : FirBasicDeclarationChecker() { diff --git a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt index 42594d58f0e..1e63965bd2d 100644 --- a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt +++ b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/DeclarationsConverter.kt @@ -24,10 +24,7 @@ import org.jetbrains.kotlin.fir.declarations.impl.FirDeclarationStatusImpl import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyAccessor import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter -import org.jetbrains.kotlin.fir.declarations.utils.addDeclarations -import org.jetbrains.kotlin.fir.declarations.utils.addDefaultBoundIfNecessary -import org.jetbrains.kotlin.fir.declarations.utils.isExternal -import org.jetbrains.kotlin.fir.declarations.utils.isInline +import org.jetbrains.kotlin.fir.declarations.utils.* import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind import org.jetbrains.kotlin.fir.expressions.* diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/danglingConstraints.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/danglingConstraints.kt deleted file mode 100644 index faad295805a..00000000000 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/danglingConstraints.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright 2010-2021 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. - */ - -package org.jetbrains.kotlin.fir.declarations - -import org.jetbrains.kotlin.fir.FirSourceElement -import org.jetbrains.kotlin.name.Name - -/** - * Constraint without corresponding type argiment - */ -data class DanglingTypeConstraint(val name: Name, val source: FirSourceElement) - -private object DanglingTypeConstraintsKey : FirDeclarationDataKey() - -var T.danglingTypeConstraints: List? - where T : FirDeclaration, T : FirTypeParameterRefsOwner - by FirDeclarationDataRegistry.data(DanglingTypeConstraintsKey) - -fun FirDeclaration<*>.getDanglingTypeConstraintsOrEmpty(): List { - val res = when (this) { - is FirRegularClass -> danglingTypeConstraints - is FirSimpleFunction -> danglingTypeConstraints - is FirProperty -> danglingTypeConstraints - else -> null - } - return res ?: emptyList() -} diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/declarationAttributes.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/declarationAttributes.kt index 1d386272996..2f749937dcf 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/declarationAttributes.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/declarations/utils/declarationAttributes.kt @@ -6,13 +6,16 @@ package org.jetbrains.kotlin.fir.declarations.utils import org.jetbrains.kotlin.descriptors.SourceElement +import org.jetbrains.kotlin.fir.FirSourceElement import org.jetbrains.kotlin.fir.declarations.* +import org.jetbrains.kotlin.name.Name private object IsFromVarargKey : FirDeclarationDataKey() private object IsReferredViaField : FirDeclarationDataKey() private object IsFromPrimaryConstructor : FirDeclarationDataKey() private object SourceElementKey : FirDeclarationDataKey() private object ModuleNameKey : FirDeclarationDataKey() +private object DanglingTypeConstraintsKey : FirDeclarationDataKey() var FirProperty.isFromVararg: Boolean? by FirDeclarationDataRegistry.data(IsFromVarargKey) var FirProperty.isReferredViaField: Boolean? by FirDeclarationDataRegistry.data(IsReferredViaField) @@ -21,6 +24,15 @@ var FirTypeAlias.sourceElement: SourceElement? by FirDeclarationDataRegistry.dat var FirRegularClass.sourceElement: SourceElement? by FirDeclarationDataRegistry.data(SourceElementKey) var FirRegularClass.moduleName: String? by FirDeclarationDataRegistry.data(ModuleNameKey) +/** + * Constraint without corresponding type argument + */ +data class DanglingTypeConstraint(val name: Name, val source: FirSourceElement) + +var T.danglingTypeConstraints: List? + where T : FirDeclaration, T : FirTypeParameterRefsOwner + by FirDeclarationDataRegistry.data(DanglingTypeConstraintsKey) + // ----------------------------------- Utils ----------------------------------- val FirStatusOwner.containerSource: SourceElement? @@ -49,3 +61,12 @@ val FirProperty.hasBackingField: Boolean } } } + +fun FirDeclaration<*>.getDanglingTypeConstraintsOrEmpty(): List { + return when (this) { + is FirRegularClass -> danglingTypeConstraints + is FirSimpleFunction -> danglingTypeConstraints + is FirProperty -> danglingTypeConstraints + else -> null + } ?: emptyList() +}