[FIR] Move danglingConstraints attribute to other attributes
This commit is contained in:
+1
-1
@@ -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.analysis.diagnostics.reportOn
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRefsOwner
|
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() {
|
object FirTypeConstraintsChecker : FirBasicDeclarationChecker() {
|
||||||
|
|
||||||
|
|||||||
+1
-4
@@ -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.FirDefaultPropertyAccessor
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter
|
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertyGetter
|
||||||
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter
|
import org.jetbrains.kotlin.fir.declarations.impl.FirDefaultPropertySetter
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.addDeclarations
|
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||||
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.diagnostics.ConeSimpleDiagnostic
|
import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
|
||||||
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
|
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
|
||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
|
|||||||
@@ -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> T.danglingTypeConstraints: List<DanglingTypeConstraint>?
|
|
||||||
where T : FirDeclaration<T>, T : FirTypeParameterRefsOwner
|
|
||||||
by FirDeclarationDataRegistry.data(DanglingTypeConstraintsKey)
|
|
||||||
|
|
||||||
fun FirDeclaration<*>.getDanglingTypeConstraintsOrEmpty(): List<DanglingTypeConstraint> {
|
|
||||||
val res = when (this) {
|
|
||||||
is FirRegularClass -> danglingTypeConstraints
|
|
||||||
is FirSimpleFunction -> danglingTypeConstraints
|
|
||||||
is FirProperty -> danglingTypeConstraints
|
|
||||||
else -> null
|
|
||||||
}
|
|
||||||
return res ?: emptyList()
|
|
||||||
}
|
|
||||||
+21
@@ -6,13 +6,16 @@
|
|||||||
package org.jetbrains.kotlin.fir.declarations.utils
|
package org.jetbrains.kotlin.fir.declarations.utils
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.SourceElement
|
import org.jetbrains.kotlin.descriptors.SourceElement
|
||||||
|
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
private object IsFromVarargKey : FirDeclarationDataKey()
|
private object IsFromVarargKey : FirDeclarationDataKey()
|
||||||
private object IsReferredViaField : FirDeclarationDataKey()
|
private object IsReferredViaField : FirDeclarationDataKey()
|
||||||
private object IsFromPrimaryConstructor : FirDeclarationDataKey()
|
private object IsFromPrimaryConstructor : FirDeclarationDataKey()
|
||||||
private object SourceElementKey : FirDeclarationDataKey()
|
private object SourceElementKey : FirDeclarationDataKey()
|
||||||
private object ModuleNameKey : FirDeclarationDataKey()
|
private object ModuleNameKey : FirDeclarationDataKey()
|
||||||
|
private object DanglingTypeConstraintsKey : FirDeclarationDataKey()
|
||||||
|
|
||||||
var FirProperty.isFromVararg: Boolean? by FirDeclarationDataRegistry.data(IsFromVarargKey)
|
var FirProperty.isFromVararg: Boolean? by FirDeclarationDataRegistry.data(IsFromVarargKey)
|
||||||
var FirProperty.isReferredViaField: Boolean? by FirDeclarationDataRegistry.data(IsReferredViaField)
|
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.sourceElement: SourceElement? by FirDeclarationDataRegistry.data(SourceElementKey)
|
||||||
var FirRegularClass.moduleName: String? by FirDeclarationDataRegistry.data(ModuleNameKey)
|
var FirRegularClass.moduleName: String? by FirDeclarationDataRegistry.data(ModuleNameKey)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constraint without corresponding type argument
|
||||||
|
*/
|
||||||
|
data class DanglingTypeConstraint(val name: Name, val source: FirSourceElement)
|
||||||
|
|
||||||
|
var <T> T.danglingTypeConstraints: List<DanglingTypeConstraint>?
|
||||||
|
where T : FirDeclaration<T>, T : FirTypeParameterRefsOwner
|
||||||
|
by FirDeclarationDataRegistry.data(DanglingTypeConstraintsKey)
|
||||||
|
|
||||||
// ----------------------------------- Utils -----------------------------------
|
// ----------------------------------- Utils -----------------------------------
|
||||||
|
|
||||||
val FirStatusOwner.containerSource: SourceElement?
|
val FirStatusOwner.containerSource: SourceElement?
|
||||||
@@ -49,3 +61,12 @@ val FirProperty.hasBackingField: Boolean
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun FirDeclaration<*>.getDanglingTypeConstraintsOrEmpty(): List<DanglingTypeConstraint> {
|
||||||
|
return when (this) {
|
||||||
|
is FirRegularClass -> danglingTypeConstraints
|
||||||
|
is FirSimpleFunction -> danglingTypeConstraints
|
||||||
|
is FirProperty -> danglingTypeConstraints
|
||||||
|
else -> null
|
||||||
|
} ?: emptyList()
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user