[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.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() {
|
||||
|
||||
|
||||
+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.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.*
|
||||
|
||||
@@ -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
|
||||
|
||||
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> T.danglingTypeConstraints: List<DanglingTypeConstraint>?
|
||||
where T : FirDeclaration<T>, T : FirTypeParameterRefsOwner
|
||||
by FirDeclarationDataRegistry.data(DanglingTypeConstraintsKey)
|
||||
|
||||
// ----------------------------------- Utils -----------------------------------
|
||||
|
||||
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