K2: Remove a bunch of unused declarations
This commit is contained in:
committed by
Space Team
parent
1705d5f704
commit
e98890cece
-6
@@ -1592,12 +1592,6 @@ private inline fun <reified P : PsiElement> AbstractDiagnosticGroup.exposedVisib
|
|||||||
return error<P>(positioningStrategy, exposedVisibilityDiagnosticInit)
|
return error<P>(positioningStrategy, exposedVisibilityDiagnosticInit)
|
||||||
}
|
}
|
||||||
|
|
||||||
private inline fun <reified P : PsiElement> AbstractDiagnosticGroup.exposedVisibilityWarning(
|
|
||||||
positioningStrategy: PositioningStrategy = PositioningStrategy.DEFAULT
|
|
||||||
): PropertyDelegateProvider<Any?, ReadOnlyProperty<AbstractDiagnosticGroup, RegularDiagnosticData>> {
|
|
||||||
return warning<P>(positioningStrategy, exposedVisibilityDiagnosticInit)
|
|
||||||
}
|
|
||||||
|
|
||||||
private inline fun <reified P : PsiElement> AbstractDiagnosticGroup.exposedVisibilityDeprecationError(
|
private inline fun <reified P : PsiElement> AbstractDiagnosticGroup.exposedVisibilityDeprecationError(
|
||||||
languageFeature: LanguageFeature,
|
languageFeature: LanguageFeature,
|
||||||
positioningStrategy: PositioningStrategy = PositioningStrategy.DEFAULT
|
positioningStrategy: PositioningStrategy = PositioningStrategy.DEFAULT
|
||||||
|
|||||||
-3
@@ -81,13 +81,10 @@ enum class PositioningStrategy(private val strategy: String? = null) {
|
|||||||
RETURN_WITH_LABEL,
|
RETURN_WITH_LABEL,
|
||||||
PROPERTY_INITIALIZER,
|
PROPERTY_INITIALIZER,
|
||||||
WHOLE_ELEMENT,
|
WHOLE_ELEMENT,
|
||||||
INT_LITERAL_OUT_OF_RANGE,
|
|
||||||
FLOAT_LITERAL_OUT_OF_RANGE,
|
|
||||||
LONG_LITERAL_SUFFIX,
|
LONG_LITERAL_SUFFIX,
|
||||||
REIFIED_MODIFIER,
|
REIFIED_MODIFIER,
|
||||||
TYPE_PARAMETERS_LIST,
|
TYPE_PARAMETERS_LIST,
|
||||||
FUN_MODIFIER,
|
FUN_MODIFIER,
|
||||||
SUSPEND_MODIFIER,
|
|
||||||
FUN_INTERFACE,
|
FUN_INTERFACE,
|
||||||
NAME_IDENTIFIER,
|
NAME_IDENTIFIER,
|
||||||
QUESTION_MARK_BY_TYPE,
|
QUESTION_MARK_BY_TYPE,
|
||||||
|
|||||||
-4
@@ -34,10 +34,6 @@ class DeclaredVariableCollector {
|
|||||||
declaredVariablesPerElement.removeKey(statement)
|
declaredVariablesPerElement.removeKey(statement)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun resetState() {
|
|
||||||
declaredVariablesPerElement.clear()
|
|
||||||
}
|
|
||||||
|
|
||||||
// FirStatement -- closest statement (loop/lambda/local declaration) which may contain reassignments
|
// FirStatement -- closest statement (loop/lambda/local declaration) which may contain reassignments
|
||||||
private val visitor = object : FirVisitor<Unit, FirStatement?>() {
|
private val visitor = object : FirVisitor<Unit, FirStatement?>() {
|
||||||
override fun visitElement(element: FirElement, data: FirStatement?) {
|
override fun visitElement(element: FirElement, data: FirStatement?) {
|
||||||
|
|||||||
@@ -190,16 +190,6 @@ fun CheckerContext.findClosestClassOrObject(): FirClass? {
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the list of functions that overridden by given
|
|
||||||
*/
|
|
||||||
fun FirSimpleFunction.overriddenFunctions(
|
|
||||||
containingClass: FirClassSymbol<*>,
|
|
||||||
context: CheckerContext,
|
|
||||||
): List<FirFunctionSymbol<*>> {
|
|
||||||
return symbol.overriddenFunctions(containingClass, context)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun FirNamedFunctionSymbol.overriddenFunctions(
|
fun FirNamedFunctionSymbol.overriddenFunctions(
|
||||||
containingClass: FirClassSymbol<*>,
|
containingClass: FirClassSymbol<*>,
|
||||||
context: CheckerContext,
|
context: CheckerContext,
|
||||||
|
|||||||
@@ -5,20 +5,11 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.analysis.checkers
|
package org.jetbrains.kotlin.fir.analysis.checkers
|
||||||
|
|
||||||
import com.intellij.lang.LighterASTNode
|
|
||||||
import com.intellij.openapi.util.Ref
|
|
||||||
import com.intellij.util.diff.FlyweightCapableTreeStructure
|
|
||||||
import org.jetbrains.kotlin.descriptors.Visibilities
|
import org.jetbrains.kotlin.descriptors.Visibilities
|
||||||
import org.jetbrains.kotlin.descriptors.Visibility
|
import org.jetbrains.kotlin.descriptors.Visibility
|
||||||
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
|
import org.jetbrains.kotlin.lexer.KtModifierKeywordToken
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.psi.KtModifierList
|
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.visibilityModifierType
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the visibility by given KtModifierList
|
|
||||||
*/
|
|
||||||
fun KtModifierList?.getVisibility() = this?.visibilityModifierType()?.toVisibilityOrNull()
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns Visibility by token or null
|
* Returns Visibility by token or null
|
||||||
|
|||||||
+1
-3
@@ -11,9 +11,9 @@ import com.intellij.psi.PsiElement
|
|||||||
import com.intellij.psi.PsiNameIdentifierOwner
|
import com.intellij.psi.PsiNameIdentifierOwner
|
||||||
import com.intellij.psi.impl.source.tree.LeafPsiElement
|
import com.intellij.psi.impl.source.tree.LeafPsiElement
|
||||||
import org.jetbrains.kotlin.*
|
import org.jetbrains.kotlin.*
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
|
||||||
import org.jetbrains.kotlin.diagnostics.getAncestors
|
import org.jetbrains.kotlin.diagnostics.getAncestors
|
||||||
import org.jetbrains.kotlin.diagnostics.nameIdentifier
|
import org.jetbrains.kotlin.diagnostics.nameIdentifier
|
||||||
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
@@ -54,8 +54,6 @@ interface SourceNavigator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline fun <R> FirElement.withNavigator(block: SourceNavigator.() -> R): R = with(forSource(this.source), block)
|
inline fun <R> FirElement.withNavigator(block: SourceNavigator.() -> R): R = with(forSource(this.source), block)
|
||||||
|
|
||||||
inline fun <R> KtSourceElement.withNavigator(block: SourceNavigator.() -> R): R = with(forSource(this), block)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
-4
@@ -14,8 +14,11 @@ import org.jetbrains.kotlin.fir.declarations.*
|
|||||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
import org.jetbrains.kotlin.fir.declarations.utils.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
|
import org.jetbrains.kotlin.fir.types.coneType
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef
|
import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef
|
||||||
|
import org.jetbrains.kotlin.fir.types.isNullable
|
||||||
|
import org.jetbrains.kotlin.fir.types.typeContext
|
||||||
|
|
||||||
internal fun isInsideExpectClass(containingClass: FirClass, context: CheckerContext): Boolean {
|
internal fun isInsideExpectClass(containingClass: FirClass, context: CheckerContext): Boolean {
|
||||||
return isInsideSpecificClass(containingClass, context) { klass -> klass is FirRegularClass && klass.isExpect }
|
return isInsideSpecificClass(containingClass, context) { klass -> klass is FirRegularClass && klass.isExpect }
|
||||||
@@ -90,9 +93,6 @@ internal val FirBasedSymbol<*>.isLocalMember: Boolean
|
|||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
|
|
||||||
internal val FirCallableDeclaration.isExtensionMember: Boolean
|
|
||||||
get() = symbol.isExtensionMember
|
|
||||||
|
|
||||||
internal val FirCallableSymbol<*>.isExtensionMember: Boolean
|
internal val FirCallableSymbol<*>.isExtensionMember: Boolean
|
||||||
get() = resolvedReceiverTypeRef != null && dispatchReceiverType != null
|
get() = resolvedReceiverTypeRef != null && dispatchReceiverType != null
|
||||||
|
|
||||||
|
|||||||
-4
@@ -121,8 +121,4 @@ object FirBreakOrContinueJumpsAcrossFunctionBoundaryChecker : FirLoopJumpChecker
|
|||||||
findPathAndCheck(expression.target.labeledElement.block)
|
findPathAndCheck(expression.target.labeledElement.block)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun FirExpression.tryInline(): FirExpression {
|
|
||||||
val anonymousFunctionExpression = (((this as? FirLambdaArgumentExpression)?.expression) ?: this) as? FirAnonymousFunctionExpression
|
|
||||||
return anonymousFunctionExpression?.anonymousFunction?.body ?: this
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
-9
@@ -174,13 +174,4 @@ object FirDiagnosticRenderers {
|
|||||||
}
|
}
|
||||||
|
|
||||||
val FUNCTIONAL_TYPE_KINDS = KtDiagnosticRenderers.COLLECTION(FUNCTIONAL_TYPE_KIND)
|
val FUNCTIONAL_TYPE_KINDS = KtDiagnosticRenderers.COLLECTION(FUNCTIONAL_TYPE_KIND)
|
||||||
|
|
||||||
@Suppress("FunctionName")
|
|
||||||
fun <T> COLLECTION(renderer: ContextIndependentParameterRenderer<T>): ContextIndependentParameterRenderer<Collection<T>> {
|
|
||||||
return Renderer { list ->
|
|
||||||
list.joinToString(prefix = "[", postfix = "]", separator = ", ", limit = 3, truncated = "...") {
|
|
||||||
renderer.render(it)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -131,13 +131,6 @@ val ConeAttributes.enhancedNullability: CompilerConeAttributes.EnhancedNullabili
|
|||||||
val ConeAttributes.extensionFunctionType: CompilerConeAttributes.ExtensionFunctionType? by ConeAttributes.attributeAccessor<CompilerConeAttributes.ExtensionFunctionType>()
|
val ConeAttributes.extensionFunctionType: CompilerConeAttributes.ExtensionFunctionType? by ConeAttributes.attributeAccessor<CompilerConeAttributes.ExtensionFunctionType>()
|
||||||
private val ConeAttributes.contextFunctionTypeParams: CompilerConeAttributes.ContextFunctionTypeParams? by ConeAttributes.attributeAccessor<CompilerConeAttributes.ContextFunctionTypeParams>()
|
private val ConeAttributes.contextFunctionTypeParams: CompilerConeAttributes.ContextFunctionTypeParams? by ConeAttributes.attributeAccessor<CompilerConeAttributes.ContextFunctionTypeParams>()
|
||||||
|
|
||||||
val ConeAttributes.unsafeVarianceType: CompilerConeAttributes.UnsafeVariance? by ConeAttributes.attributeAccessor<CompilerConeAttributes.UnsafeVariance>()
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
|
||||||
|
|
||||||
val ConeAttributes.hasEnhancedNullability: Boolean
|
|
||||||
get() = enhancedNullability != null
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------
|
// ------------------------------------------------------------------
|
||||||
|
|
||||||
val ConeKotlinType.hasEnhancedNullability: Boolean
|
val ConeKotlinType.hasEnhancedNullability: Boolean
|
||||||
|
|||||||
@@ -58,10 +58,6 @@ val ConeKotlinType.isPrimitiveArray: Boolean
|
|||||||
val ConeKotlinType.isUnsignedTypeOrNullableUnsignedType: Boolean get() = isAnyOfBuiltinType(StandardClassIds.unsignedTypes)
|
val ConeKotlinType.isUnsignedTypeOrNullableUnsignedType: Boolean get() = isAnyOfBuiltinType(StandardClassIds.unsignedTypes)
|
||||||
val ConeKotlinType.isUnsignedType: Boolean get() = isUnsignedTypeOrNullableUnsignedType && nullability == ConeNullability.NOT_NULL
|
val ConeKotlinType.isUnsignedType: Boolean get() = isUnsignedTypeOrNullableUnsignedType && nullability == ConeNullability.NOT_NULL
|
||||||
|
|
||||||
val ConeKotlinType.isIntegerTypeOrNullableIntegerTypeOfAnySize: Boolean get() = isAnyOfBuiltinType(builtinIntegerTypes)
|
|
||||||
|
|
||||||
private val builtinIntegerTypes = setOf(StandardClassIds.Int, StandardClassIds.Byte, StandardClassIds.Long, StandardClassIds.Short)
|
|
||||||
|
|
||||||
private fun ConeKotlinType.isBuiltinType(classId: ClassId, isNullable: Boolean?): Boolean {
|
private fun ConeKotlinType.isBuiltinType(classId: ClassId, isNullable: Boolean?): Boolean {
|
||||||
if (this !is ConeClassLikeType) return false
|
if (this !is ConeClassLikeType) return false
|
||||||
return lookupTag.classId == classId && (isNullable == null || type.isNullable == isNullable)
|
return lookupTag.classId == classId && (isNullable == null || type.isNullable == isNullable)
|
||||||
|
|||||||
-45
@@ -1,45 +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.session
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
|
||||||
import org.jetbrains.kotlin.fir.FirModuleData
|
|
||||||
import org.jetbrains.kotlin.name.Name
|
|
||||||
import org.jetbrains.kotlin.platform.TargetPlatform
|
|
||||||
import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices
|
|
||||||
|
|
||||||
class FirModuleInfoBasedModuleData(val moduleInfo: ModuleInfo) : FirModuleData() {
|
|
||||||
override val name: Name
|
|
||||||
get() = moduleInfo.name
|
|
||||||
|
|
||||||
override val dependencies: List<FirModuleData> by lazy {
|
|
||||||
moduleInfo.dependencies()
|
|
||||||
.filterNot { it == moduleInfo }
|
|
||||||
.map { FirModuleInfoBasedModuleData(it) }
|
|
||||||
}
|
|
||||||
|
|
||||||
override val dependsOnDependencies: List<FirModuleData> = moduleInfo.expectedBy
|
|
||||||
.filterNot { it == moduleInfo }
|
|
||||||
.map { FirModuleInfoBasedModuleData(it) }
|
|
||||||
|
|
||||||
override val friendDependencies: List<FirModuleData> = moduleInfo.modulesWhoseInternalsAreVisible()
|
|
||||||
.filterNot { it == moduleInfo }
|
|
||||||
.map { FirModuleInfoBasedModuleData(it) }
|
|
||||||
override val platform: TargetPlatform
|
|
||||||
get() = moduleInfo.platform
|
|
||||||
|
|
||||||
override val analyzerServices: PlatformDependentAnalyzerServices
|
|
||||||
get() = moduleInfo.analyzerServices
|
|
||||||
|
|
||||||
override fun equals(other: Any?): Boolean {
|
|
||||||
if (other !is FirModuleInfoBasedModuleData) return false
|
|
||||||
return moduleInfo == other.moduleInfo
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun hashCode(): Int {
|
|
||||||
return moduleInfo.hashCode()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-8
@@ -60,11 +60,3 @@ class MultipleModuleDataProvider(private val moduleDataWithFilters: Map<FirModul
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class EmptyModuleDataProvider(
|
|
||||||
override val platform: TargetPlatform,
|
|
||||||
override val analyzerServices: PlatformDependentAnalyzerServices
|
|
||||||
) : ModuleDataProvider() {
|
|
||||||
override val allModuleData: Collection<FirModuleData> get() = emptyList()
|
|
||||||
|
|
||||||
override fun getModuleData(path: Path?): FirModuleData? = null
|
|
||||||
}
|
|
||||||
|
|||||||
+5
-16
@@ -32,11 +32,14 @@ import org.jetbrains.kotlin.fir.expressions.builder.buildConstExpression
|
|||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirEmptyAnnotationArgumentMapping
|
import org.jetbrains.kotlin.fir.expressions.impl.FirEmptyAnnotationArgumentMapping
|
||||||
import org.jetbrains.kotlin.fir.extensions.extensionService
|
import org.jetbrains.kotlin.fir.extensions.extensionService
|
||||||
import org.jetbrains.kotlin.fir.extensions.typeAttributeExtensions
|
import org.jetbrains.kotlin.fir.extensions.typeAttributeExtensions
|
||||||
import org.jetbrains.kotlin.fir.resolve.*
|
import org.jetbrains.kotlin.fir.resolve.ScopeSession
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
||||||
|
import org.jetbrains.kotlin.fir.resolve.toSymbol
|
||||||
import org.jetbrains.kotlin.fir.scopes.*
|
import org.jetbrains.kotlin.fir.scopes.*
|
||||||
import org.jetbrains.kotlin.fir.scopes.impl.nestedClassifierScope
|
import org.jetbrains.kotlin.fir.scopes.impl.nestedClassifierScope
|
||||||
import org.jetbrains.kotlin.fir.serialization.constant.*
|
import org.jetbrains.kotlin.fir.serialization.constant.hasConstantValue
|
||||||
|
import org.jetbrains.kotlin.fir.serialization.constant.toConstantValue
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.*
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
|
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
|
||||||
@@ -1100,9 +1103,6 @@ class FirElementSerializer private constructor(
|
|||||||
return writeLanguageVersionRequirement(languageFeature, this)
|
return writeLanguageVersionRequirement(languageFeature, this)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun MutableVersionRequirementTable.writeCompilerVersionRequirement(major: Int, minor: Int, patch: Int): Int =
|
|
||||||
writeCompilerVersionRequirement(major, minor, patch, this)
|
|
||||||
|
|
||||||
private fun MutableVersionRequirementTable.writeVersionRequirementDependingOnCoroutinesVersion(): Int =
|
private fun MutableVersionRequirementTable.writeVersionRequirementDependingOnCoroutinesVersion(): Int =
|
||||||
writeVersionRequirement(LanguageFeature.ReleaseCoroutines)
|
writeVersionRequirement(LanguageFeature.ReleaseCoroutines)
|
||||||
|
|
||||||
@@ -1273,17 +1273,6 @@ class FirElementSerializer private constructor(
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun writeCompilerVersionRequirement(
|
|
||||||
major: Int,
|
|
||||||
minor: Int,
|
|
||||||
patch: Int,
|
|
||||||
versionRequirementTable: MutableVersionRequirementTable
|
|
||||||
): Int = writeVersionRequirement(
|
|
||||||
major, minor, patch,
|
|
||||||
ProtoBuf.VersionRequirement.VersionKind.COMPILER_VERSION,
|
|
||||||
versionRequirementTable
|
|
||||||
)
|
|
||||||
|
|
||||||
fun writeVersionRequirement(
|
fun writeVersionRequirement(
|
||||||
major: Int,
|
major: Int,
|
||||||
minor: Int,
|
minor: Int,
|
||||||
|
|||||||
-18
@@ -11,13 +11,10 @@ import org.jetbrains.kotlin.constant.ConstantValue
|
|||||||
import org.jetbrains.kotlin.constant.ErrorValue
|
import org.jetbrains.kotlin.constant.ErrorValue
|
||||||
import org.jetbrains.kotlin.constant.KClassValue
|
import org.jetbrains.kotlin.constant.KClassValue
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.languageVersionSettings
|
import org.jetbrains.kotlin.fir.languageVersionSettings
|
||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
import org.jetbrains.kotlin.fir.resolve.defaultType
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.providers.symbolProvider
|
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.runIf
|
import org.jetbrains.kotlin.utils.addToStdlib.runIf
|
||||||
@@ -53,21 +50,6 @@ inline fun <reified T : ConeKotlinType> KClassValue.Value.LocalClass.coneType():
|
|||||||
return this.type as T
|
return this.type as T
|
||||||
}
|
}
|
||||||
|
|
||||||
internal fun KClassValue.getArgumentType(session: FirSession): ConeKotlinType? {
|
|
||||||
when (val castedValue = value) {
|
|
||||||
is KClassValue.Value.LocalClass -> return castedValue.type as ConeKotlinType
|
|
||||||
is KClassValue.Value.NormalClass -> {
|
|
||||||
val (classId, arrayDimensions) = castedValue.value
|
|
||||||
val klass = session.symbolProvider.getClassLikeSymbolByClassId(classId)?.fir as? FirRegularClass ?: return null
|
|
||||||
var type: ConeClassLikeType = klass.defaultType().replaceArgumentsWithStarProjections()
|
|
||||||
repeat(arrayDimensions) {
|
|
||||||
type = type.createArrayType()
|
|
||||||
}
|
|
||||||
return type
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun create(argumentType: ConeKotlinType): ConstantValue<*>? {
|
internal fun create(argumentType: ConeKotlinType): ConstantValue<*>? {
|
||||||
if (argumentType is ConeErrorType) return null
|
if (argumentType is ConeErrorType) return null
|
||||||
if (argumentType !is ConeClassLikeType) return null
|
if (argumentType !is ConeClassLikeType) return null
|
||||||
|
|||||||
+3
-7
@@ -14,9 +14,7 @@ import org.jetbrains.kotlin.codegen.state.KotlinTypeMapper
|
|||||||
import org.jetbrains.kotlin.descriptors.ClassKind
|
import org.jetbrains.kotlin.descriptors.ClassKind
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.FirSessionComponent
|
import org.jetbrains.kotlin.fir.FirSessionComponent
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
|
import org.jetbrains.kotlin.fir.declarations.FirTypeParameter
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.classId
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.isInner
|
import org.jetbrains.kotlin.fir.declarations.utils.isInner
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.isLocal
|
import org.jetbrains.kotlin.fir.declarations.utils.isLocal
|
||||||
import org.jetbrains.kotlin.fir.resolve.defaultType
|
import org.jetbrains.kotlin.fir.resolve.defaultType
|
||||||
@@ -34,7 +32,9 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
|||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.types.*
|
||||||
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
|
import org.jetbrains.kotlin.fir.types.impl.ConeTypeParameterTypeImpl
|
||||||
import org.jetbrains.kotlin.load.kotlin.TypeMappingMode
|
import org.jetbrains.kotlin.load.kotlin.TypeMappingMode
|
||||||
import org.jetbrains.kotlin.name.*
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
|
import org.jetbrains.kotlin.name.SpecialNames
|
||||||
|
import org.jetbrains.kotlin.name.StandardClassIds
|
||||||
import org.jetbrains.kotlin.types.AbstractTypeMapper
|
import org.jetbrains.kotlin.types.AbstractTypeMapper
|
||||||
import org.jetbrains.kotlin.types.TypeMappingContext
|
import org.jetbrains.kotlin.types.TypeMappingContext
|
||||||
import org.jetbrains.kotlin.types.TypeSystemCommonBackendContext
|
import org.jetbrains.kotlin.types.TypeSystemCommonBackendContext
|
||||||
@@ -224,10 +224,6 @@ class FirJvmTypeMapper(val session: FirSession) : FirSessionComponent {
|
|||||||
fun segments(): List<PossiblyInnerConeType> = outerType?.segments().orEmpty() + this
|
fun segments(): List<PossiblyInnerConeType> = outerType?.segments().orEmpty() + this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getJvmShortName(klass: FirRegularClass): String {
|
|
||||||
return getJvmShortName(klass.classId)
|
|
||||||
}
|
|
||||||
|
|
||||||
internal fun getJvmShortName(classId: ClassId): String {
|
internal fun getJvmShortName(classId: ClassId): String {
|
||||||
val result = runUnless(classId.isLocal) {
|
val result = runUnless(classId.isLocal) {
|
||||||
classId.asSingleFqName().toUnsafe().let { JavaToKotlinClassMap.mapKotlinToJava(it)?.shortClassName?.asString() }
|
classId.asSingleFqName().toUnsafe().let { JavaToKotlinClassMap.mapKotlinToJava(it)?.shortClassName?.asString() }
|
||||||
|
|||||||
+6
-14
@@ -11,12 +11,14 @@ import org.jetbrains.kotlin.fir.backend.*
|
|||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.modality
|
import org.jetbrains.kotlin.fir.declarations.utils.modality
|
||||||
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
|
||||||
import org.jetbrains.kotlin.fir.scopes.*
|
|
||||||
import org.jetbrains.kotlin.fir.delegatedWrapperData
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.scope
|
import org.jetbrains.kotlin.fir.resolve.scope
|
||||||
|
import org.jetbrains.kotlin.fir.scopes.*
|
||||||
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
import org.jetbrains.kotlin.fir.symbols.ConeClassLikeLookupTag
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.*
|
import org.jetbrains.kotlin.fir.symbols.impl.FirCallableSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.*
|
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
|
||||||
|
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||||
|
import org.jetbrains.kotlin.fir.types.coneType
|
||||||
|
import org.jetbrains.kotlin.fir.types.lowerBoundIfFlexible
|
||||||
import org.jetbrains.kotlin.ir.declarations.*
|
import org.jetbrains.kotlin.ir.declarations.*
|
||||||
import org.jetbrains.kotlin.ir.expressions.IrBlockBody
|
import org.jetbrains.kotlin.ir.expressions.IrBlockBody
|
||||||
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
|
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
|
||||||
@@ -78,16 +80,6 @@ class DelegatedMemberGenerator(private val components: Fir2IrComponents) : Fir2I
|
|||||||
bodiesInfo.clear()
|
bodiesInfo.clear()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun FirClassifierSymbol<*>?.boundClass(): FirClass {
|
|
||||||
return when (this) {
|
|
||||||
is FirRegularClassSymbol -> fir
|
|
||||||
is FirAnonymousObjectSymbol -> fir
|
|
||||||
is FirTypeParameterSymbol ->
|
|
||||||
fir.bounds.first().coneType.fullyExpandedType(session).lowerBoundIfFlexible().toSymbol(session).boundClass()
|
|
||||||
is FirTypeAliasSymbol, null -> throw AssertionError(this?.fir?.render())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Generate delegated members for [subClass]. The synthetic field [irField] has the super interface type.
|
// Generate delegated members for [subClass]. The synthetic field [irField] has the super interface type.
|
||||||
fun generate(irField: IrField, firField: FirField, firSubClass: FirClass, subClass: IrClass) {
|
fun generate(irField: IrField, firField: FirField, firSubClass: FirClass, subClass: IrClass) {
|
||||||
val subClassScope = firSubClass.unsubstitutedScope(
|
val subClassScope = firSubClass.unsubstitutedScope(
|
||||||
|
|||||||
@@ -154,7 +154,6 @@ class FirJavaClassBuilder : FirRegularClassBuilder(), FirAnnotationContainerBuil
|
|||||||
var isFromSource: Boolean by Delegates.notNull()
|
var isFromSource: Boolean by Delegates.notNull()
|
||||||
var isTopLevel: Boolean by Delegates.notNull()
|
var isTopLevel: Boolean by Delegates.notNull()
|
||||||
var isStatic: Boolean by Delegates.notNull()
|
var isStatic: Boolean by Delegates.notNull()
|
||||||
var isNotSam: Boolean by Delegates.notNull()
|
|
||||||
var javaPackage: JavaPackage? = null
|
var javaPackage: JavaPackage? = null
|
||||||
lateinit var javaTypeParameterStack: JavaTypeParameterStack
|
lateinit var javaTypeParameterStack: JavaTypeParameterStack
|
||||||
val existingNestedClassifierNames: MutableList<Name> = mutableListOf()
|
val existingNestedClassifierNames: MutableList<Name> = mutableListOf()
|
||||||
|
|||||||
@@ -27,19 +27,6 @@ import org.jetbrains.kotlin.fir.visitors.transformInplace
|
|||||||
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
import org.jetbrains.kotlin.fir.visitors.transformSingle
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
|
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.ASSIGNMENT_OPERATIONS
|
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.BINARY_OPERATION_NAMES
|
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.COMPARE_TO
|
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.CONTAINS
|
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.DELEGATED_PROPERTY_OPERATORS
|
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.EQUALS
|
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.GET
|
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.HAS_NEXT
|
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.INVOKE
|
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.ITERATOR
|
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.NEXT
|
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.SET
|
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions.UNARY_OPERATION_NAMES
|
|
||||||
import kotlin.contracts.ExperimentalContracts
|
import kotlin.contracts.ExperimentalContracts
|
||||||
import kotlin.contracts.InvocationKind
|
import kotlin.contracts.InvocationKind
|
||||||
import kotlin.contracts.contract
|
import kotlin.contracts.contract
|
||||||
@@ -188,10 +175,6 @@ class FirJavaMethod @FirImplementationDetail constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
val ALL_JAVA_OPERATION_NAMES =
|
|
||||||
UNARY_OPERATION_NAMES + BINARY_OPERATION_NAMES + ASSIGNMENT_OPERATIONS + DELEGATED_PROPERTY_OPERATORS +
|
|
||||||
EQUALS + COMPARE_TO + CONTAINS + INVOKE + ITERATOR + GET + SET + NEXT + HAS_NEXT
|
|
||||||
|
|
||||||
@FirBuilderDsl
|
@FirBuilderDsl
|
||||||
class FirJavaMethodBuilder : FirFunctionBuilder, FirTypeParametersOwnerBuilder, FirAnnotationContainerBuilder {
|
class FirJavaMethodBuilder : FirFunctionBuilder, FirTypeParametersOwnerBuilder, FirAnnotationContainerBuilder {
|
||||||
override var source: KtSourceElement? = null
|
override var source: KtSourceElement? = null
|
||||||
|
|||||||
@@ -78,23 +78,6 @@ object BuiltinMethodsWithSpecialGenericSignature {
|
|||||||
|
|
||||||
val Name.sameAsBuiltinMethodWithErasedValueParameters: Boolean
|
val Name.sameAsBuiltinMethodWithErasedValueParameters: Boolean
|
||||||
get() = this in ERASED_VALUE_PARAMETERS_SHORT_NAMES
|
get() = this in ERASED_VALUE_PARAMETERS_SHORT_NAMES
|
||||||
|
|
||||||
fun FirNamedFunctionSymbol.isBuiltinWithSpecialDescriptorInJvm(containingScope: FirTypeScope, session: FirSession): Boolean {
|
|
||||||
if (!isFromBuiltinClass(session)) return false
|
|
||||||
return getSpecialSignatureInfo(containingScope)?.isObjectReplacedWithTypeParameter ?: false ||
|
|
||||||
doesOverrideBuiltinWithDifferentJvmName(containingScope, session)
|
|
||||||
}
|
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
fun FirNamedFunctionSymbol.getSpecialSignatureInfo(containingScope: FirTypeScope): SpecialGenericSignatures.SpecialSignatureInfo? {
|
|
||||||
if (name !in ERASED_VALUE_PARAMETERS_SHORT_NAMES) return null
|
|
||||||
|
|
||||||
val builtinSignature = firstOverriddenFunction(containingScope) { it.hasErasedValueParametersInJava }
|
|
||||||
?.fir
|
|
||||||
?.computeJvmSignature()
|
|
||||||
?: return null
|
|
||||||
return SpecialGenericSignatures.getSpecialSignatureInfo(builtinSignature)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
object BuiltinMethodsWithDifferentJvmName {
|
object BuiltinMethodsWithDifferentJvmName {
|
||||||
|
|||||||
-1
@@ -34,7 +34,6 @@ data class ModuleData(
|
|||||||
) {
|
) {
|
||||||
val qualifiedName get() = if (name in qualifier) qualifier else "$name.$qualifier"
|
val qualifiedName get() = if (name in qualifier) qualifier else "$name.$qualifier"
|
||||||
|
|
||||||
val outputDir = rawOutputDir.fixPath()
|
|
||||||
val classpath = rawClasspath.map { it.fixPath() }
|
val classpath = rawClasspath.map { it.fixPath() }
|
||||||
val sources = rawSources.map { it.fixPath() }
|
val sources = rawSources.map { it.fixPath() }
|
||||||
val javaSourceRoots = rawJavaSourceRoots.map { JavaSourceRootData(it.path.fixPath(), it.packagePrefix) }
|
val javaSourceRoots = rawJavaSourceRoots.map { JavaSourceRootData(it.path.fixPath(), it.packagePrefix) }
|
||||||
|
|||||||
@@ -7,9 +7,7 @@ package org.jetbrains.kotlin.fir
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.builtins.StandardNames
|
import org.jetbrains.kotlin.builtins.StandardNames
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
import org.jetbrains.kotlin.fir.declarations.FirDeclaration
|
||||||
import org.jetbrains.kotlin.fir.declarations.toAnnotationClassId
|
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.expandedConeType
|
import org.jetbrains.kotlin.fir.declarations.utils.expandedConeType
|
||||||
import org.jetbrains.kotlin.fir.diagnostics.ConeDiagnostic
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.*
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.FirImplicitInvokeCallBuilder
|
import org.jetbrains.kotlin.fir.expressions.builder.FirImplicitInvokeCallBuilder
|
||||||
import org.jetbrains.kotlin.fir.expressions.builder.buildImplicitInvokeCall
|
import org.jetbrains.kotlin.fir.expressions.builder.buildImplicitInvokeCall
|
||||||
@@ -64,15 +62,6 @@ fun FirTypeRef.resolvedTypeFromPrototype(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun FirTypeRef.errorTypeFromPrototype(
|
|
||||||
diagnostic: ConeDiagnostic
|
|
||||||
): FirErrorTypeRef {
|
|
||||||
return buildErrorTypeRef {
|
|
||||||
source = this@errorTypeFromPrototype.source
|
|
||||||
this.diagnostic = diagnostic
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* [shouldExpandTypeAliases] should be set to `false` if this function is called during deserialization of some binary declaration
|
* [shouldExpandTypeAliases] should be set to `false` if this function is called during deserialization of some binary declaration
|
||||||
* For details see KT-57876
|
* For details see KT-57876
|
||||||
|
|||||||
@@ -223,7 +223,6 @@ fun FirAnnotation.findArgumentByName(name: Name): FirExpression? {
|
|||||||
|
|
||||||
fun FirAnnotation.getBooleanArgument(name: Name): Boolean? = getPrimitiveArgumentValue(name)
|
fun FirAnnotation.getBooleanArgument(name: Name): Boolean? = getPrimitiveArgumentValue(name)
|
||||||
fun FirAnnotation.getStringArgument(name: Name): String? = getPrimitiveArgumentValue(name)
|
fun FirAnnotation.getStringArgument(name: Name): String? = getPrimitiveArgumentValue(name)
|
||||||
fun FirAnnotation.getIntArgument(name: Name): Int? = getPrimitiveArgumentValue(name)
|
|
||||||
fun FirAnnotation.getStringArrayArgument(name: Name): List<String>? {
|
fun FirAnnotation.getStringArrayArgument(name: Name): List<String>? {
|
||||||
val argument = findArgumentByName(name) as? FirArrayOfCall ?: return null
|
val argument = findArgumentByName(name) as? FirArrayOfCall ?: return null
|
||||||
return argument.arguments.mapNotNull { (it as? FirConstExpression<*>)?.value as? String }
|
return argument.arguments.mapNotNull { (it as? FirConstExpression<*>)?.value as? String }
|
||||||
|
|||||||
-29
@@ -6,10 +6,6 @@
|
|||||||
package org.jetbrains.kotlin.fir.declarations
|
package org.jetbrains.kotlin.fir.declarations
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
import org.jetbrains.kotlin.fir.contracts.FirContractDescription
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirEffectDeclaration
|
|
||||||
import org.jetbrains.kotlin.fir.contracts.FirResolvedContractDescription
|
|
||||||
import org.jetbrains.kotlin.fir.contracts.builder.buildEffectDeclaration
|
|
||||||
import org.jetbrains.kotlin.fir.contracts.builder.buildResolvedContractDescription
|
|
||||||
import org.jetbrains.kotlin.fir.contracts.description.*
|
import org.jetbrains.kotlin.fir.contracts.description.*
|
||||||
import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription
|
import org.jetbrains.kotlin.fir.contracts.impl.FirEmptyContractDescription
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||||
@@ -17,31 +13,6 @@ import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
|||||||
val FirContractDescription?.isNullOrEmpty: Boolean
|
val FirContractDescription?.isNullOrEmpty: Boolean
|
||||||
get() = (this == null) || (this is FirEmptyContractDescription)
|
get() = (this == null) || (this is FirEmptyContractDescription)
|
||||||
|
|
||||||
fun FirContractDescription.createContractDescriptionForSubstitutionOverride(substitutor: ConeSubstitutor?): FirContractDescription {
|
|
||||||
if (this !is FirResolvedContractDescription) return this
|
|
||||||
if (substitutor == null || substitutor == ConeSubstitutor.Empty) return this
|
|
||||||
return createContractDescriptionForSubstitutionOverride(substitutor)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun FirResolvedContractDescription.createContractDescriptionForSubstitutionOverride(
|
|
||||||
substitutor: ConeSubstitutor
|
|
||||||
): FirResolvedContractDescription {
|
|
||||||
val original = this
|
|
||||||
return buildResolvedContractDescription {
|
|
||||||
source = original.source
|
|
||||||
original.effects.mapTo(effects) { it.substitute(substitutor) }
|
|
||||||
unresolvedEffects.addAll(original.unresolvedEffects)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun FirEffectDeclaration.substitute(substitutor: ConeSubstitutor): FirEffectDeclaration {
|
|
||||||
val original = this
|
|
||||||
return buildEffectDeclaration {
|
|
||||||
source = original.source
|
|
||||||
effect = original.effect.substitute(substitutor)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun ConeEffectDeclaration.substitute(substitutor: ConeSubstitutor): ConeEffectDeclaration {
|
private fun ConeEffectDeclaration.substitute(substitutor: ConeSubstitutor): ConeEffectDeclaration {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
is ConeConditionalEffectDeclaration -> ConeConditionalEffectDeclaration(
|
is ConeConditionalEffectDeclaration -> ConeConditionalEffectDeclaration(
|
||||||
|
|||||||
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
|||||||
import org.jetbrains.kotlin.fir.types.coneType
|
import org.jetbrains.kotlin.fir.types.coneType
|
||||||
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
import org.jetbrains.kotlin.fir.types.coneTypeSafe
|
||||||
import org.jetbrains.kotlin.fir.types.toSymbol
|
import org.jetbrains.kotlin.fir.types.toSymbol
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.runIf
|
|
||||||
|
|
||||||
fun FirClass.constructors(session: FirSession): List<FirConstructorSymbol> {
|
fun FirClass.constructors(session: FirSession): List<FirConstructorSymbol> {
|
||||||
val result = mutableListOf<FirConstructorSymbol>()
|
val result = mutableListOf<FirConstructorSymbol>()
|
||||||
@@ -26,10 +25,6 @@ fun FirClass.constructors(session: FirSession): List<FirConstructorSymbol> {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
fun FirClass.constructorsSortedByDelegation(session: FirSession): List<FirConstructorSymbol> {
|
|
||||||
return constructors(session).sortedWith(ConstructorDelegationComparator)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun FirClass.primaryConstructorIfAny(session: FirSession): FirConstructorSymbol? {
|
fun FirClass.primaryConstructorIfAny(session: FirSession): FirConstructorSymbol? {
|
||||||
return constructors(session).find(FirConstructorSymbol::isPrimary)
|
return constructors(session).find(FirConstructorSymbol::isPrimary)
|
||||||
}
|
}
|
||||||
@@ -44,23 +39,6 @@ fun FirClassSymbol<*>.collectEnumEntries(): Collection<FirEnumEntrySymbol> {
|
|||||||
return fir.collectEnumEntries().map { it.symbol }
|
return fir.collectEnumEntries().map { it.symbol }
|
||||||
}
|
}
|
||||||
|
|
||||||
val FirConstructorSymbol.delegatedThisConstructor: FirConstructorSymbol?
|
|
||||||
get() = runIf(delegatedConstructorCallIsThis) { this.resolvedDelegatedConstructor }
|
|
||||||
|
|
||||||
|
|
||||||
private object ConstructorDelegationComparator : Comparator<FirConstructorSymbol> {
|
|
||||||
override fun compare(p0: FirConstructorSymbol?, p1: FirConstructorSymbol?): Int {
|
|
||||||
if (p0 == null && p1 == null) return 0
|
|
||||||
if (p0 == null) return -1
|
|
||||||
if (p1 == null) return 1
|
|
||||||
if (p0.delegatedThisConstructor == p1) return 1
|
|
||||||
if (p1.delegatedThisConstructor == p0) return -1
|
|
||||||
// If neither is a delegation to each other, the order doesn't matter.
|
|
||||||
// Here we return 0 to preserve the original order.
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the FirClassLikeDeclaration that the
|
* Returns the FirClassLikeDeclaration that the
|
||||||
* sequence of FirTypeAlias'es points to starting
|
* sequence of FirTypeAlias'es points to starting
|
||||||
@@ -80,11 +58,6 @@ fun FirBasedSymbol<*>.isAnnotationConstructor(session: FirSession): Boolean {
|
|||||||
return getConstructedClass(session)?.classKind == ClassKind.ANNOTATION_CLASS
|
return getConstructedClass(session)?.classKind == ClassKind.ANNOTATION_CLASS
|
||||||
}
|
}
|
||||||
|
|
||||||
fun FirBasedSymbol<*>.isEnumConstructor(session: FirSession): Boolean {
|
|
||||||
if (this !is FirConstructorSymbol) return false
|
|
||||||
return getConstructedClass(session)?.classKind == ClassKind.ENUM_CLASS
|
|
||||||
}
|
|
||||||
|
|
||||||
fun FirBasedSymbol<*>.isPrimaryConstructorOfInlineOrValueClass(session: FirSession): Boolean {
|
fun FirBasedSymbol<*>.isPrimaryConstructorOfInlineOrValueClass(session: FirSession): Boolean {
|
||||||
if (this !is FirConstructorSymbol) return false
|
if (this !is FirConstructorSymbol) return false
|
||||||
return getConstructedClass(session)?.isInlineOrValueClass() == true && this.isPrimary
|
return getConstructedClass(session)?.isInlineOrValueClass() == true && this.isPrimary
|
||||||
|
|||||||
-7
@@ -6,7 +6,6 @@
|
|||||||
package org.jetbrains.kotlin.fir.extensions
|
package org.jetbrains.kotlin.fir.extensions
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.caches.FirCache
|
|
||||||
import org.jetbrains.kotlin.fir.caches.FirLazyValue
|
import org.jetbrains.kotlin.fir.caches.FirLazyValue
|
||||||
import org.jetbrains.kotlin.fir.caches.firCachesFactory
|
import org.jetbrains.kotlin.fir.caches.firCachesFactory
|
||||||
import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope
|
import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope
|
||||||
@@ -78,12 +77,6 @@ abstract class FirDeclarationGenerationExtension(session: FirSession) : FirExten
|
|||||||
|
|
||||||
// ----------------------------------- internal utils -----------------------------------
|
// ----------------------------------- internal utils -----------------------------------
|
||||||
|
|
||||||
@FirExtensionApiInternals
|
|
||||||
val nestedClassifierNamesCache: FirCache<FirClassSymbol<*>, Set<Name>, NestedClassGenerationContext> =
|
|
||||||
session.firCachesFactory.createCache { symbol, context ->
|
|
||||||
getNestedClassifiersNames(symbol, context)
|
|
||||||
}
|
|
||||||
|
|
||||||
@FirExtensionApiInternals
|
@FirExtensionApiInternals
|
||||||
val topLevelClassIdsCache: FirLazyValue<Set<ClassId>> =
|
val topLevelClassIdsCache: FirLazyValue<Set<ClassId>> =
|
||||||
session.firCachesFactory.createLazyValue { getTopLevelClassIds() }
|
session.firCachesFactory.createLazyValue { getTopLevelClassIds() }
|
||||||
|
|||||||
@@ -47,9 +47,6 @@ fun ConeClassLikeLookupTag.toSymbol(useSiteSession: FirSession): FirClassLikeSym
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun ConeClassLikeLookupTag.toSymbolOrError(useSiteSession: FirSession): FirClassLikeSymbol<*> =
|
|
||||||
toSymbol(useSiteSession) ?: error("Class symbol with classId $classId was not found")
|
|
||||||
|
|
||||||
fun ConeClassLikeLookupTag.toFirRegularClassSymbol(session: FirSession): FirRegularClassSymbol? =
|
fun ConeClassLikeLookupTag.toFirRegularClassSymbol(session: FirSession): FirRegularClassSymbol? =
|
||||||
toSymbol(session) as? FirRegularClassSymbol
|
toSymbol(session) as? FirRegularClassSymbol
|
||||||
|
|
||||||
|
|||||||
+4
-5
@@ -12,7 +12,10 @@ import org.jetbrains.kotlin.fir.declarations.FirClass
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
|
||||||
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
import org.jetbrains.kotlin.fir.declarations.FirResolvePhase
|
||||||
import org.jetbrains.kotlin.fir.declarations.utils.*
|
import org.jetbrains.kotlin.fir.declarations.utils.delegateFields
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.utils.isData
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.utils.isExpect
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.utils.isInline
|
||||||
import org.jetbrains.kotlin.fir.resolve.*
|
import org.jetbrains.kotlin.fir.resolve.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeRawScopeSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.ConeRawScopeSubstitutor
|
||||||
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor
|
||||||
@@ -115,10 +118,6 @@ data class ConeSubstitutionScopeKey(
|
|||||||
val derivedClassLookupTag: ConeClassLikeLookupTag?
|
val derivedClassLookupTag: ConeClassLikeLookupTag?
|
||||||
) : ScopeSessionKey<FirClass, FirClassSubstitutionScope>()
|
) : ScopeSessionKey<FirClass, FirClassSubstitutionScope>()
|
||||||
|
|
||||||
data class AnySynthesizedScopeKey(
|
|
||||||
val lookupTag: ConeClassLikeLookupTag
|
|
||||||
) : ScopeSessionKey<ConeClassLikeLookupTag, FirClassAnySynthesizedMemberScope>()
|
|
||||||
|
|
||||||
fun FirClass.unsubstitutedScope(
|
fun FirClass.unsubstitutedScope(
|
||||||
useSiteSession: FirSession,
|
useSiteSession: FirSession,
|
||||||
scopeSession: ScopeSession,
|
scopeSession: ScopeSession,
|
||||||
|
|||||||
@@ -19,23 +19,8 @@ import org.jetbrains.kotlin.fir.types.ConeFlexibleType
|
|||||||
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
import org.jetbrains.kotlin.fir.types.ConeKotlinType
|
||||||
import org.jetbrains.kotlin.fir.types.typeContext
|
import org.jetbrains.kotlin.fir.types.typeContext
|
||||||
import org.jetbrains.kotlin.types.AbstractTypeChecker
|
import org.jetbrains.kotlin.types.AbstractTypeChecker
|
||||||
import java.util.*
|
|
||||||
|
|
||||||
class FirOverrideService(val session: FirSession) : FirSessionComponent {
|
class FirOverrideService(val session: FirSession) : FirSessionComponent {
|
||||||
fun <D : FirCallableSymbol<*>> createOverridableGroups(
|
|
||||||
members: Collection<MemberWithBaseScope<D>>,
|
|
||||||
overrideChecker: FirOverrideChecker
|
|
||||||
): List<List<MemberWithBaseScope<D>>> {
|
|
||||||
if (members.size <= 1) return listOf(members.toList())
|
|
||||||
val queue = LinkedList(members)
|
|
||||||
val result = mutableListOf<List<MemberWithBaseScope<D>>>()
|
|
||||||
while (queue.isNotEmpty()) {
|
|
||||||
val nextHandle = queue.first()
|
|
||||||
val overridableGroup = extractBothWaysOverridable(nextHandle, queue, overrideChecker)
|
|
||||||
result += overridableGroup
|
|
||||||
}
|
|
||||||
return result
|
|
||||||
}
|
|
||||||
|
|
||||||
fun <D : FirCallableSymbol<*>> extractBothWaysOverridable(
|
fun <D : FirCallableSymbol<*>> extractBothWaysOverridable(
|
||||||
overrider: MemberWithBaseScope<D>,
|
overrider: MemberWithBaseScope<D>,
|
||||||
|
|||||||
@@ -1,19 +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.types
|
|
||||||
|
|
||||||
import org.jetbrains.kotlin.types.AbstractNullabilityChecker
|
|
||||||
import org.jetbrains.kotlin.types.TypeCheckerState
|
|
||||||
|
|
||||||
object ConeNullabilityChecker {
|
|
||||||
fun isSubtypeOfAny(context: ConeTypeContext, type: ConeKotlinType): Boolean {
|
|
||||||
val actualType = with(context) { type.lowerBoundIfFlexible() }
|
|
||||||
return with(AbstractNullabilityChecker) {
|
|
||||||
context.newTypeCheckerState(errorTypesEqualToAnything = false, stubTypesEqualToAnything = true)
|
|
||||||
.hasNotNullSupertype(actualType, TypeCheckerState.SupertypesPolicy.LowerIfFlexible)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -104,17 +104,6 @@ fun ConeKotlinType.customFunctionTypeToSimpleFunctionType(session: FirSession):
|
|||||||
return createFunctionTypeWithNewKind(session, newKind)
|
return createFunctionTypeWithNewKind(session, newKind)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
* KFunction -> Function
|
|
||||||
* KSuspendFunction -> SuspendFunction
|
|
||||||
* K[Custom]Function -> [Custom]Function
|
|
||||||
*/
|
|
||||||
fun ConeKotlinType.reflectFunctionTypeToNonReflectFunctionType(session: FirSession): ConeClassLikeType {
|
|
||||||
val kind = functionTypeKind(session)
|
|
||||||
require(kind != null && kind.isReflectType)
|
|
||||||
return createFunctionTypeWithNewKind(session, kind.nonReflectKind())
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun ConeKotlinType.createFunctionTypeWithNewKind(session: FirSession, kind: FunctionTypeKind): ConeClassLikeType {
|
private fun ConeKotlinType.createFunctionTypeWithNewKind(session: FirSession, kind: FunctionTypeKind): ConeClassLikeType {
|
||||||
val expandedType = fullyExpandedType(session)
|
val expandedType = fullyExpandedType(session)
|
||||||
val functionTypeId = ClassId(kind.packageFqName, kind.numberedClassName(expandedType.typeArguments.size - 1))
|
val functionTypeId = ClassId(kind.packageFqName, kind.numberedClassName(expandedType.typeArguments.size - 1))
|
||||||
|
|||||||
-10
@@ -139,16 +139,6 @@ abstract class AbstractLightTreeRawFirBuilder(
|
|||||||
return tree.getParent(this)
|
return tree.getParent(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun LighterASTNode.getParents(): Sequence<LighterASTNode> {
|
|
||||||
var node = this
|
|
||||||
return sequence {
|
|
||||||
while (true) {
|
|
||||||
yield(node)
|
|
||||||
node = node.getParent() ?: break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun LighterASTNode?.getChildNodesByType(type: IElementType): List<LighterASTNode> {
|
fun LighterASTNode?.getChildNodesByType(type: IElementType): List<LighterASTNode> {
|
||||||
return this?.forEachChildrenReturnList { node, container ->
|
return this?.forEachChildrenReturnList { node, container ->
|
||||||
when (node.tokenType) {
|
when (node.tokenType) {
|
||||||
|
|||||||
-3
@@ -25,9 +25,6 @@ class ClassWrapper(
|
|||||||
val delegatedSuperTypeRef: FirTypeRef,
|
val delegatedSuperTypeRef: FirTypeRef,
|
||||||
val delegatedSuperCalls: List<DelegatedConstructorWrapper>,
|
val delegatedSuperCalls: List<DelegatedConstructorWrapper>,
|
||||||
) {
|
) {
|
||||||
fun isObjectLiteral(): Boolean {
|
|
||||||
return className == SpecialNames.NO_NAME_PROVIDED && isObject()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun isEnumEntry(): Boolean {
|
fun isEnumEntry(): Boolean {
|
||||||
return classKind == ClassKind.ENUM_ENTRY
|
return classKind == ClassKind.ENUM_ENTRY
|
||||||
|
|||||||
@@ -82,10 +82,6 @@ open class PsiRawFirBuilder(
|
|||||||
return Visitor().visitAnnotationEntry(annotation, null) as FirAnnotationCall
|
return Visitor().visitAnnotationEntry(annotation, null) as FirAnnotationCall
|
||||||
}
|
}
|
||||||
|
|
||||||
fun buildTypeReference(reference: KtTypeReference): FirTypeRef {
|
|
||||||
return reference.accept(Visitor(), null) as FirTypeRef
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun PsiElement.toFirSourceElement(kind: KtFakeSourceElementKind?): KtPsiSourceElement {
|
override fun PsiElement.toFirSourceElement(kind: KtFakeSourceElementKind?): KtPsiSourceElement {
|
||||||
val actualKind = kind ?: this@PsiRawFirBuilder.context.forcedElementSourceKind ?: KtRealSourceElementKind
|
val actualKind = kind ?: this@PsiRawFirBuilder.context.forcedElementSourceKind ?: KtRealSourceElementKind
|
||||||
return this.toKtPsiSourceElement(actualKind)
|
return this.toKtPsiSourceElement(actualKind)
|
||||||
|
|||||||
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.fir.PrivateForInline
|
|||||||
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
|
import org.jetbrains.kotlin.fir.declarations.FirTypeParameterRef
|
||||||
import org.jetbrains.kotlin.fir.declarations.builder.buildOuterClassTypeParameterRef
|
import org.jetbrains.kotlin.fir.declarations.builder.buildOuterClassTypeParameterRef
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirFileSymbol
|
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
|
||||||
import org.jetbrains.kotlin.name.ClassId
|
import org.jetbrains.kotlin.name.ClassId
|
||||||
@@ -49,7 +48,6 @@ class Context<T> {
|
|||||||
var forcedElementSourceKind: KtSourceElementKind? = null
|
var forcedElementSourceKind: KtSourceElementKind? = null
|
||||||
val dispatchReceiverTypesStack = mutableListOf<ConeClassLikeType>()
|
val dispatchReceiverTypesStack = mutableListOf<ConeClassLikeType>()
|
||||||
var containerIsExpect: Boolean = false
|
var containerIsExpect: Boolean = false
|
||||||
var containingFileSymbol: FirFileSymbol? = null
|
|
||||||
|
|
||||||
fun pushFirTypeParameters(isInnerOrLocal: Boolean, parameters: List<FirTypeParameterRef>) {
|
fun pushFirTypeParameters(isInnerOrLocal: Boolean, parameters: List<FirTypeParameterRef>) {
|
||||||
capturedTypeParameters.add(StatusFirTypeParameterSymbolList(isInnerOrLocal, parameters.map { it.symbol }))
|
capturedTypeParameters.add(StatusFirTypeParameterSymbolList(isInnerOrLocal, parameters.map { it.symbol }))
|
||||||
|
|||||||
-6
@@ -160,12 +160,6 @@ fun ControlFlowGraphBuilder.createConstExpressionNode(fir: FirConstExpression<*>
|
|||||||
fun ControlFlowGraphBuilder.createThrowExceptionNode(fir: FirThrowExpression): ThrowExceptionNode =
|
fun ControlFlowGraphBuilder.createThrowExceptionNode(fir: FirThrowExpression): ThrowExceptionNode =
|
||||||
ThrowExceptionNode(currentGraph, fir, levelCounter)
|
ThrowExceptionNode(currentGraph, fir, levelCounter)
|
||||||
|
|
||||||
fun ControlFlowGraphBuilder.createFinallyProxyExitNode(fir: FirTryExpression): FinallyProxyExitNode =
|
|
||||||
FinallyProxyExitNode(currentGraph, fir, levelCounter)
|
|
||||||
|
|
||||||
fun ControlFlowGraphBuilder.createFinallyProxyEnterNode(fir: FirTryExpression): FinallyProxyEnterNode =
|
|
||||||
FinallyProxyEnterNode(currentGraph, fir, levelCounter)
|
|
||||||
|
|
||||||
fun ControlFlowGraphBuilder.createFinallyBlockExitNode(fir: FirTryExpression): FinallyBlockExitNode =
|
fun ControlFlowGraphBuilder.createFinallyBlockExitNode(fir: FirTryExpression): FinallyBlockExitNode =
|
||||||
FinallyBlockExitNode(currentGraph, fir, levelCounter)
|
FinallyBlockExitNode(currentGraph, fir, levelCounter)
|
||||||
|
|
||||||
|
|||||||
-3
@@ -90,9 +90,6 @@ class BodyResolveContext(
|
|||||||
|
|
||||||
var containingClassDeclarations: ArrayDeque<FirRegularClass> = ArrayDeque()
|
var containingClassDeclarations: ArrayDeque<FirRegularClass> = ArrayDeque()
|
||||||
|
|
||||||
val topClassDeclaration: FirRegularClass?
|
|
||||||
get() = containingClassDeclarations.lastOrNull()
|
|
||||||
|
|
||||||
@OptIn(PrivateForInline::class)
|
@OptIn(PrivateForInline::class)
|
||||||
inline fun <T> withTowerDataContexts(newContexts: FirRegularTowerDataContexts, f: () -> T): T {
|
inline fun <T> withTowerDataContexts(newContexts: FirRegularTowerDataContexts, f: () -> T): T {
|
||||||
val old = regularTowerDataContexts
|
val old = regularTowerDataContexts
|
||||||
|
|||||||
@@ -522,18 +522,7 @@ class FinallyBlockExitNode(owner: ControlFlowGraph, override val fir: FirTryExpr
|
|||||||
return visitor.visitFinallyBlockExitNode(this, data)
|
return visitor.visitFinallyBlockExitNode(this, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
class FinallyProxyEnterNode(owner: ControlFlowGraph, override val fir: FirTryExpression, level: Int) : CFGNode<FirTryExpression>(owner, level),
|
|
||||||
EnterNodeMarker {
|
|
||||||
override fun <R, D> accept(visitor: ControlFlowGraphVisitor<R, D>, data: D): R {
|
|
||||||
return visitor.visitFinallyProxyEnterNode(this, data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
class FinallyProxyExitNode(owner: ControlFlowGraph, override val fir: FirTryExpression, level: Int) : CFGNode<FirTryExpression>(owner, level),
|
|
||||||
ExitNodeMarker {
|
|
||||||
override fun <R, D> accept(visitor: ControlFlowGraphVisitor<R, D>, data: D): R {
|
|
||||||
return visitor.visitFinallyProxyExitNode(this, data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
class TryExpressionExitNode(owner: ControlFlowGraph, override val fir: FirTryExpression, level: Int) : CFGNode<FirTryExpression>(owner, level),
|
class TryExpressionExitNode(owner: ControlFlowGraph, override val fir: FirTryExpression, level: Int) : CFGNode<FirTryExpression>(owner, level),
|
||||||
ExitNodeMarker {
|
ExitNodeMarker {
|
||||||
override fun <R, D> accept(visitor: ControlFlowGraphVisitor<R, D>, data: D): R {
|
override fun <R, D> accept(visitor: ControlFlowGraphVisitor<R, D>, data: D): R {
|
||||||
|
|||||||
+4
-3
@@ -5,7 +5,10 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.resolve.dfa.cfg
|
package org.jetbrains.kotlin.fir.resolve.dfa.cfg
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.*
|
import org.jetbrains.kotlin.fir.expressions.FirDoWhileLoop
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirLoop
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirWhileLoop
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.calleeReference
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition
|
import org.jetbrains.kotlin.fir.expressions.impl.FirElseIfTrueCondition
|
||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
import org.jetbrains.kotlin.fir.renderer.FirCallNoArgumentsRenderer
|
import org.jetbrains.kotlin.fir.renderer.FirCallNoArgumentsRenderer
|
||||||
@@ -66,8 +69,6 @@ fun CFGNode<*>.render(): String =
|
|||||||
is CatchClauseExitNode -> "Catch exit"
|
is CatchClauseExitNode -> "Catch exit"
|
||||||
is FinallyBlockEnterNode -> "Enter finally"
|
is FinallyBlockEnterNode -> "Enter finally"
|
||||||
is FinallyBlockExitNode -> "Exit finally"
|
is FinallyBlockExitNode -> "Exit finally"
|
||||||
is FinallyProxyEnterNode -> TODO()
|
|
||||||
is FinallyProxyExitNode -> TODO()
|
|
||||||
is TryExpressionExitNode -> "Try expression exit"
|
is TryExpressionExitNode -> "Try expression exit"
|
||||||
|
|
||||||
is BinaryAndEnterNode -> "Enter &&"
|
is BinaryAndEnterNode -> "Enter &&"
|
||||||
|
|||||||
-8
@@ -231,14 +231,6 @@ abstract class ControlFlowGraphVisitor<out R, in D> {
|
|||||||
return visitNode(node, data)
|
return visitNode(node, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitFinallyProxyEnterNode(node: FinallyProxyEnterNode, data: D): R {
|
|
||||||
return visitNode(node, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitFinallyProxyExitNode(node: FinallyProxyExitNode, data: D): R {
|
|
||||||
return visitNode(node, data)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitTryExpressionExitNode(node: TryExpressionExitNode, data: D): R {
|
open fun visitTryExpressionExitNode(node: TryExpressionExitNode, data: D): R {
|
||||||
return visitNode(node, data)
|
return visitNode(node, data)
|
||||||
}
|
}
|
||||||
|
|||||||
-16
@@ -161,14 +161,6 @@ abstract class ControlFlowGraphVisitorVoid : ControlFlowGraphVisitor<Unit, Nothi
|
|||||||
visitNode(node)
|
visitNode(node)
|
||||||
}
|
}
|
||||||
|
|
||||||
open fun visitFinallyProxyEnterNode(node: FinallyProxyEnterNode) {
|
|
||||||
visitNode(node)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitFinallyProxyExitNode(node: FinallyProxyExitNode) {
|
|
||||||
visitNode(node)
|
|
||||||
}
|
|
||||||
|
|
||||||
open fun visitTryExpressionExitNode(node: TryExpressionExitNode) {
|
open fun visitTryExpressionExitNode(node: TryExpressionExitNode) {
|
||||||
visitNode(node)
|
visitNode(node)
|
||||||
}
|
}
|
||||||
@@ -442,14 +434,6 @@ abstract class ControlFlowGraphVisitorVoid : ControlFlowGraphVisitor<Unit, Nothi
|
|||||||
visitFinallyBlockExitNode(node)
|
visitFinallyBlockExitNode(node)
|
||||||
}
|
}
|
||||||
|
|
||||||
final override fun visitFinallyProxyEnterNode(node: FinallyProxyEnterNode, data: Nothing?) {
|
|
||||||
visitFinallyProxyEnterNode(node)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun visitFinallyProxyExitNode(node: FinallyProxyExitNode, data: Nothing?) {
|
|
||||||
visitFinallyProxyExitNode(node)
|
|
||||||
}
|
|
||||||
|
|
||||||
final override fun visitTryExpressionExitNode(node: TryExpressionExitNode, data: Nothing?) {
|
final override fun visitTryExpressionExitNode(node: TryExpressionExitNode, data: Nothing?) {
|
||||||
visitTryExpressionExitNode(node)
|
visitTryExpressionExitNode(node)
|
||||||
}
|
}
|
||||||
|
|||||||
-7
@@ -24,9 +24,6 @@ inline val FirCallableSymbol<*>.isFinal: Boolean
|
|||||||
inline val FirCallableSymbol<*>.visibility: Visibility get() = resolvedStatus.visibility
|
inline val FirCallableSymbol<*>.visibility: Visibility get() = resolvedStatus.visibility
|
||||||
inline val FirCallableSymbol<*>.effectiveVisibility: EffectiveVisibility get() = resolvedStatus.effectiveVisibility
|
inline val FirCallableSymbol<*>.effectiveVisibility: EffectiveVisibility get() = resolvedStatus.effectiveVisibility
|
||||||
|
|
||||||
inline val FirCallableSymbol<*>.allowsToHaveFakeOverride: Boolean
|
|
||||||
get() = !Visibilities.isPrivate(visibility) && visibility != Visibilities.InvisibleFake
|
|
||||||
|
|
||||||
inline val FirCallableSymbol<*>.isActual: Boolean get() = rawStatus.isActual
|
inline val FirCallableSymbol<*>.isActual: Boolean get() = rawStatus.isActual
|
||||||
inline val FirCallableSymbol<*>.isExpect: Boolean get() = rawStatus.isExpect
|
inline val FirCallableSymbol<*>.isExpect: Boolean get() = rawStatus.isExpect
|
||||||
inline val FirCallableSymbol<*>.isInner: Boolean get() = rawStatus.isInner
|
inline val FirCallableSymbol<*>.isInner: Boolean get() = rawStatus.isInner
|
||||||
@@ -48,7 +45,6 @@ inline val FirCallableSymbol<*>.isFun: Boolean get() = rawStatus.isFun
|
|||||||
|
|
||||||
inline val FirClassLikeSymbol<*>.modality: Modality? get() = resolvedStatus.modality
|
inline val FirClassLikeSymbol<*>.modality: Modality? get() = resolvedStatus.modality
|
||||||
inline val FirClassLikeSymbol<*>.isAbstract: Boolean get() = resolvedStatus.modality == Modality.ABSTRACT
|
inline val FirClassLikeSymbol<*>.isAbstract: Boolean get() = resolvedStatus.modality == Modality.ABSTRACT
|
||||||
inline val FirClassLikeSymbol<*>.isOpen: Boolean get() = resolvedStatus.modality == Modality.OPEN
|
|
||||||
inline val FirClassLikeSymbol<*>.isFinal: Boolean
|
inline val FirClassLikeSymbol<*>.isFinal: Boolean
|
||||||
get() {
|
get() {
|
||||||
// member with unspecified modality is final
|
// member with unspecified modality is final
|
||||||
@@ -72,9 +68,6 @@ inline val FirClassLikeSymbol<*>.isCompanion: Boolean get() = rawStatus.isCompan
|
|||||||
inline val FirClassLikeSymbol<*>.isData: Boolean get() = rawStatus.isData
|
inline val FirClassLikeSymbol<*>.isData: Boolean get() = rawStatus.isData
|
||||||
inline val FirClassLikeSymbol<*>.isSealed: Boolean get() = resolvedStatus.modality == Modality.SEALED
|
inline val FirClassLikeSymbol<*>.isSealed: Boolean get() = resolvedStatus.modality == Modality.SEALED
|
||||||
|
|
||||||
inline val FirRegularClassSymbol.canHaveAbstractDeclaration: Boolean
|
|
||||||
get() = isAbstract || isSealed || isEnumClass
|
|
||||||
|
|
||||||
// ---------------------- common classes ----------------------
|
// ---------------------- common classes ----------------------
|
||||||
|
|
||||||
inline val FirClassLikeSymbol<*>.isLocal: Boolean get() = classId.isLocal
|
inline val FirClassLikeSymbol<*>.isLocal: Boolean get() = classId.isLocal
|
||||||
|
|||||||
-4
@@ -69,10 +69,6 @@ fun FirProperty.getExplicitBackingField(): FirBackingField? {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun FirPropertySymbol.getExplicitBackingField(): FirBackingField? {
|
|
||||||
return fir.getExplicitBackingField()
|
|
||||||
}
|
|
||||||
|
|
||||||
val FirProperty.canNarrowDownGetterType: Boolean
|
val FirProperty.canNarrowDownGetterType: Boolean
|
||||||
get() {
|
get() {
|
||||||
val backingFieldHasDifferentType = backingField != null && backingField?.returnTypeRef?.coneType != returnTypeRef.coneType
|
val backingFieldHasDifferentType = backingField != null && backingField?.returnTypeRef?.coneType != returnTypeRef.coneType
|
||||||
|
|||||||
@@ -47,12 +47,4 @@ inline fun <T : FirElement, D> MutableList<T>.transformInplace(transformer: FirT
|
|||||||
iterator.set(result)
|
iterator.set(result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun <R, D> List<FirElement>.acceptAllElements(visitor: FirVisitor<R, D>, data: D) {
|
|
||||||
forEach { it.accept(visitor, data) }
|
|
||||||
}
|
|
||||||
|
|
||||||
fun List<FirElement>.acceptAllElements(visitor: FirVisitorVoid) {
|
|
||||||
forEach { it.accept(visitor) }
|
|
||||||
}
|
|
||||||
+4
-15
@@ -6,7 +6,10 @@
|
|||||||
package org.jetbrains.kotlin.fir.tree.generator
|
package org.jetbrains.kotlin.fir.tree.generator
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.tree.generator.context.AbstractBuilderConfigurator
|
import org.jetbrains.kotlin.fir.tree.generator.context.AbstractBuilderConfigurator
|
||||||
import org.jetbrains.kotlin.fir.tree.generator.model.*
|
import org.jetbrains.kotlin.fir.tree.generator.model.Element
|
||||||
|
import org.jetbrains.kotlin.fir.tree.generator.model.Field
|
||||||
|
import org.jetbrains.kotlin.fir.tree.generator.model.Implementation
|
||||||
|
import org.jetbrains.kotlin.fir.tree.generator.model.LeafBuilder
|
||||||
import org.jetbrains.kotlin.fir.tree.generator.printer.invisibleField
|
import org.jetbrains.kotlin.fir.tree.generator.printer.invisibleField
|
||||||
import org.jetbrains.kotlin.fir.tree.generator.util.traverseParents
|
import org.jetbrains.kotlin.fir.tree.generator.util.traverseParents
|
||||||
|
|
||||||
@@ -509,18 +512,4 @@ object BuilderConfigurator : AbstractBuilderConfigurator<FirTreeBuilder>(FirTree
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun configureFieldInAllIntermediateBuilders(
|
|
||||||
field: String,
|
|
||||||
builderPredicate: ((IntermediateBuilder) -> Boolean)? = null,
|
|
||||||
fieldPredicate: ((Field) -> Boolean)? = null,
|
|
||||||
init: IntermediateBuilderConfigurationContext.(field: String) -> Unit
|
|
||||||
) {
|
|
||||||
for (builder in FirTreeBuilder.intermediateBuilders) {
|
|
||||||
if (builderPredicate != null && !builderPredicate(builder)) continue
|
|
||||||
if (!builder.allFields.any { it.name == field }) continue
|
|
||||||
if (fieldPredicate != null && !fieldPredicate(builder[field])) continue
|
|
||||||
IntermediateBuilderConfigurationContext(builder).init(field)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user