diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/AccessorForConstructorDescriptor.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/AccessorForConstructorDescriptor.kt index c59781e6ddd..081abf013b0 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/AccessorForConstructorDescriptor.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/AccessorForConstructorDescriptor.kt @@ -17,7 +17,7 @@ package org.jetbrains.kotlin.codegen import org.jetbrains.kotlin.descriptors.* -import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.types.KotlinType import org.jetbrains.kotlin.types.TypeSubstitutor @@ -26,7 +26,7 @@ class AccessorForConstructorDescriptor( containingDeclaration: DeclarationDescriptor, override val superCallTarget: ClassDescriptor?, override val accessorKind: AccessorKind -) : AbstractAccessorForFunctionDescriptor(containingDeclaration, Name.special("")), +) : AbstractAccessorForFunctionDescriptor(containingDeclaration, SpecialNames.INIT), ClassConstructorDescriptor, AccessorForCallableDescriptor { diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/binding/CodegenAnnotatingVisitor.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/binding/CodegenAnnotatingVisitor.java index bc3d476dc45..286cc387234 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/binding/CodegenAnnotatingVisitor.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/binding/CodegenAnnotatingVisitor.java @@ -38,6 +38,7 @@ import org.jetbrains.kotlin.load.java.JvmAbi; import org.jetbrains.kotlin.load.java.sam.JavaSingleAbstractMethodUtils; import org.jetbrains.kotlin.name.ClassId; import org.jetbrains.kotlin.name.Name; +import org.jetbrains.kotlin.name.SpecialNames; import org.jetbrains.kotlin.psi.*; import org.jetbrains.kotlin.psi.stubs.KotlinFileStub; import org.jetbrains.kotlin.resolve.BindingContext; @@ -298,7 +299,7 @@ class CodegenAnnotatingVisitor extends KtVisitorVoid { private String getName(ClassDescriptor classDescriptor) { String base = peekFromStack(nameStack); - Name descriptorName = safeIdentifier(classDescriptor.getName()); + Name descriptorName = SpecialNames.safeIdentifier(classDescriptor.getName()); if (DescriptorUtils.isTopLevelDeclaration(classDescriptor)) { return base.isEmpty() ? descriptorName.asString() : base + '/' + descriptorName; } diff --git a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt index 2ca986a8a3b..10f3786fa6b 100644 --- a/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt +++ b/compiler/fir/fir-serialization/src/org/jetbrains/kotlin/fir/serialization/FirElementSerializer.kt @@ -46,10 +46,7 @@ import org.jetbrains.kotlin.metadata.deserialization.isKotlin1Dot4OrLater import org.jetbrains.kotlin.metadata.serialization.Interner import org.jetbrains.kotlin.metadata.serialization.MutableTypeTable import org.jetbrains.kotlin.metadata.serialization.MutableVersionRequirementTable -import org.jetbrains.kotlin.name.ClassId -import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.name.StandardClassIds +import org.jetbrains.kotlin.name.* import org.jetbrains.kotlin.resolve.RequireKotlinConstants import org.jetbrains.kotlin.serialization.deserialization.ProtoEnumFlags import org.jetbrains.kotlin.types.AbstractTypeApproximator @@ -384,7 +381,7 @@ class FirElementSerializer private constructor( function.name } is FirAnonymousFunction -> { - if (function.isLambda) Name.special("") else Name.special("") + if (function.isLambda) SpecialNames.ANONYMOUS else Name.special("") } else -> throw AssertionError("Unsupported function: ${function.render()}") } diff --git a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt index 69e5e64fa13..94fdf99bdc3 100644 --- a/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt +++ b/compiler/fir/fir2ir/jvm-backend/src/org/jetbrains/kotlin/fir/backend/jvm/FirJvmMangleComputer.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirTypeParameterSymbol import org.jetbrains.kotlin.fir.types.* import org.jetbrains.kotlin.fir.visitors.FirVisitor import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.util.capitalizeDecapitalize.toLowerCaseAsciiOnly import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty @@ -127,7 +128,7 @@ open class FirJvmMangleComputer( return } - val name = (this as? FirSimpleFunction)?.name ?: Name.special("") + val name = (this as? FirSimpleFunction)?.name ?: SpecialNames.ANONYMOUS builder.append(name.asString()) platformSpecificSuffix()?.let { diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt index 7a51698cd11..b39f1a73b18 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/ConversionUtils.kt @@ -52,7 +52,7 @@ import org.jetbrains.kotlin.ir.types.* import org.jetbrains.kotlin.ir.types.impl.IrErrorTypeImpl import org.jetbrains.kotlin.ir.util.SymbolTable import org.jetbrains.kotlin.ir.util.functions -import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.psi.KtQualifiedExpression import org.jetbrains.kotlin.psi.psiUtil.endOffset import org.jetbrains.kotlin.psi.psiUtil.startOffsetSkippingComments @@ -476,7 +476,7 @@ internal fun IrDeclarationParent.declareThisReceiverParameter( ): IrValueParameter = symbolTable.irFactory.createValueParameter( startOffset, endOffset, thisOrigin, IrValueParameterSymbolImpl(), - Name.special(""), UNDEFINED_PARAMETER_INDEX, thisType, + SpecialNames.THIS, UNDEFINED_PARAMETER_INDEX, thisType, varargElementType = null, isCrossinline = false, isNoinline = false, isHidden = false, isAssignable = false ).apply { diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt index 30bf891e43e..87ca57a7cf4 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrDeclarationStorage.kt @@ -7,7 +7,10 @@ package org.jetbrains.kotlin.fir.backend import org.jetbrains.kotlin.KtNodeTypes import org.jetbrains.kotlin.builtins.StandardNames.BUILT_INS_PACKAGE_FQ_NAMES -import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.descriptors.DescriptorVisibility +import org.jetbrains.kotlin.descriptors.Modality +import org.jetbrains.kotlin.descriptors.Visibilities +import org.jetbrains.kotlin.descriptors.Visibility import org.jetbrains.kotlin.fir.* import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.builder.buildProperty @@ -50,6 +53,7 @@ import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource import org.jetbrains.kotlin.utils.KotlinExceptionWithAttachments import org.jetbrains.kotlin.utils.threadLocal @@ -456,7 +460,7 @@ class Fir2IrDeclarationStorage( } classifierStorage.preCacheTypeParameters(function) val name = simpleFunction?.name - ?: if (isLambda) Name.special("") else Name.special("") + ?: if (isLambda) SpecialNames.ANONYMOUS else Name.special("") val visibility = simpleFunction?.visibility ?: Visibilities.Local val isSuspend = if (isLambda) ((function as FirAnonymousFunction).typeRef as? FirResolvedTypeRef)?.type?.isSuspendFunctionType(session) == true @@ -553,7 +557,7 @@ class Fir2IrDeclarationStorage( declareIrConstructor(signature) { symbol -> irFactory.createConstructor( startOffset, endOffset, origin, symbol, - Name.special(""), components.visibilityConverter.convertToDescriptorVisibility(constructor.visibility), + SpecialNames.INIT, components.visibilityConverter.convertToDescriptorVisibility(constructor.visibility), constructor.returnTypeRef.toIrType(), isInline = false, isExternal = false, isPrimary = isPrimary, isExpect = constructor.isExpect ).apply { @@ -977,7 +981,7 @@ class Fir2IrDeclarationStorage( // Some temporary variables are produced in RawFirBuilder, but we consistently use special names for them. val origin = when { givenOrigin != null -> givenOrigin - variable.name == Name.special("") -> IrDeclarationOrigin.FOR_LOOP_ITERATOR + variable.name == SpecialNames.ITERATOR -> IrDeclarationOrigin.FOR_LOOP_ITERATOR variable.name.isSpecial -> IrDeclarationOrigin.IR_TEMPORARY_VARIABLE else -> IrDeclarationOrigin.DEFINED } diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/FirMetadataSource.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/FirMetadataSource.kt index 347f4343c3d..6a45d5b962c 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/FirMetadataSource.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/FirMetadataSource.kt @@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.utils.isConst import org.jetbrains.kotlin.ir.declarations.MetadataSource import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames sealed class FirMetadataSource : MetadataSource { abstract val fir: FirDeclaration @@ -19,7 +20,7 @@ sealed class FirMetadataSource : MetadataSource { override val name: Name? get() = when (val fir = fir) { - is FirConstructor -> Name.special("") + is FirConstructor -> SpecialNames.INIT is FirSimpleFunction -> fir.name is FirRegularClass -> fir.name is FirProperty -> fir.name diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/IrBuiltInsOverFir.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/IrBuiltInsOverFir.kt index 98b62637b94..a69bc209fdf 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/IrBuiltInsOverFir.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/IrBuiltInsOverFir.kt @@ -41,6 +41,7 @@ import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.types.Variance import org.jetbrains.kotlin.util.OperatorNameConventions import kotlin.reflect.KProperty @@ -744,7 +745,7 @@ class IrBuiltInsOverFir( visibility: DescriptorVisibility = DescriptorVisibilities.PUBLIC, build: IrConstructor.() -> Unit = {} ): IrConstructorSymbol { - val name = Name.special("") + val name = SpecialNames.INIT val signature = IdSignature.CommonSignature(this.packageFqName!!.asString(), classId!!.relativeClassName.child(name).asString(), null, 0) val ctor = irFactory.createConstructor( diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyConstructor.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyConstructor.kt index aef76173bee..046614d9d3c 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyConstructor.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/lazy/Fir2IrLazyConstructor.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.fir.declarations.utils.isExpect import org.jetbrains.kotlin.fir.declarations.utils.isExternal import org.jetbrains.kotlin.fir.declarations.utils.isInline import org.jetbrains.kotlin.fir.declarations.utils.visibility +import org.jetbrains.kotlin.name.SpecialNames class Fir2IrLazyConstructor( components: Fir2IrComponents, @@ -63,7 +64,7 @@ class Fir2IrLazyConstructor( override var body: IrBody? = null override val name: Name - get() = Name.special("") + get() = SpecialNames.INIT @Suppress("SetterBackingFieldAssignment") override var visibility: DescriptorVisibility = components.visibilityConverter.convertToDescriptorVisibility(fir.visibility) 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 ccf11b71e18..d3ae5d0b710 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 @@ -572,7 +572,7 @@ class DeclarationsConverter( * @see org.jetbrains.kotlin.fir.builder.RawFirBuilder.Visitor.visitObjectLiteralExpression */ fun convertObjectLiteral(objectLiteral: LighterASTNode): FirElement { - return withChildClassName(ANONYMOUS_OBJECT_NAME, isExpect = false) { + return withChildClassName(SpecialNames.ANONYMOUS, isExpect = false) { buildAnonymousObjectExpression { val objectDeclaration = objectLiteral.getChildNodesByType(OBJECT_DECLARATION).first() val sourceElement = objectDeclaration.toFirSourceElement() @@ -729,7 +729,7 @@ class DeclarationsConverter( )?.let { declarations += it.firConstructor } classBodyNode?.also { // Use ANONYMOUS_OBJECT_NAME for the owner class id of enum entry declarations - withChildClassName(ANONYMOUS_OBJECT_NAME, forceLocalContext = true, isExpect = false) { + withChildClassName(SpecialNames.ANONYMOUS, forceLocalContext = true, isExpect = false) { declarations += convertClassBody(it, enumClassWrapper) } } diff --git a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/ExpressionsConverter.kt b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/ExpressionsConverter.kt index 311803b0b9c..bc676d5aadc 100644 --- a/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/ExpressionsConverter.kt +++ b/compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/ExpressionsConverter.kt @@ -38,6 +38,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirValueParameterSymbol import org.jetbrains.kotlin.fir.types.FirTypeProjection import org.jetbrains.kotlin.fir.types.FirTypeRef import org.jetbrains.kotlin.lexer.KtTokens.* +import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.psi.stubs.elements.KtConstantExpressionElementType import org.jetbrains.kotlin.psi.stubs.elements.KtNameReferenceExpressionElementType import org.jetbrains.kotlin.types.ConstantValueKind @@ -152,7 +153,7 @@ class ExpressionsConverter( for (valueParameter in valueParameterList) { val multiDeclaration = valueParameter.destructuringDeclaration valueParameters += if (multiDeclaration != null) { - val name = DESTRUCTURING_NAME + val name = SpecialNames.DESTRUCT val multiParameter = buildValueParameter { source = valueParameter.firValueParameter.source moduleData = baseModuleData @@ -1055,7 +1056,7 @@ class ExpressionsConverter( val iteratorVal = generateTemporaryVariable( baseModuleData, calculatedRangeExpression.source?.fakeElement(FirFakeSourceElementKind.DesugaredForLoop), - ITERATOR_NAME, + SpecialNames.ITERATOR, buildFunctionCall { source = fakeSource calleeReference = buildSimpleNamedReference { @@ -1089,7 +1090,7 @@ class ExpressionsConverter( val firLoopParameter = generateTemporaryVariable( baseModuleData, valueParameter.firValueParameter.source, - if (multiDeclaration != null) DESTRUCTURING_NAME else valueParameter.firValueParameter.name, + if (multiDeclaration != null) SpecialNames.DESTRUCT else valueParameter.firValueParameter.name, buildFunctionCall { source = fakeSource calleeReference = buildSimpleNamedReference { diff --git a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt index 1e8d1d9b5d6..6c186f1fd98 100644 --- a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt +++ b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt @@ -39,6 +39,7 @@ import org.jetbrains.kotlin.fir.types.impl.FirTypePlaceholderProjection import org.jetbrains.kotlin.lexer.KtTokens.* import org.jetbrains.kotlin.name.CallableId import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.* import org.jetbrains.kotlin.psi.stubs.elements.KtStubElementTypes @@ -882,7 +883,7 @@ open class RawFirBuilder( typeParameters ) // Use ANONYMOUS_OBJECT_NAME for the owner class id for enum entry declarations (see KT-42351) - withChildClassName(ANONYMOUS_OBJECT_NAME, forceLocalContext = true, isExpect = false) { + withChildClassName(SpecialNames.ANONYMOUS, forceLocalContext = true, isExpect = false) { for (declaration in ktEnumEntry.declarations) { declarations += declaration.toFirDeclaration( correctedEnumSelfTypeRef, @@ -1042,7 +1043,7 @@ open class RawFirBuilder( override fun visitObjectLiteralExpression(expression: KtObjectLiteralExpression, data: Unit): FirElement { val objectDeclaration = expression.objectDeclaration - return withChildClassName(ANONYMOUS_OBJECT_NAME, forceLocalContext = true, isExpect = false) { + return withChildClassName(SpecialNames.ANONYMOUS, forceLocalContext = true, isExpect = false) { buildAnonymousObjectExpression { val sourceElement = objectDeclaration.toFirSourceElement() source = sourceElement @@ -1233,7 +1234,7 @@ open class RawFirBuilder( for (valueParameter in literal.valueParameters) { val multiDeclaration = valueParameter.destructuringDeclaration valueParameters += if (multiDeclaration != null) { - val name = DESTRUCTURING_NAME + val name = SpecialNames.DESTRUCT val multiParameter = buildValueParameter { source = valueParameter.toFirSourceElement() moduleData = baseModuleData @@ -1890,7 +1891,7 @@ open class RawFirBuilder( source = fakeSource val rangeSource = expression.loopRange?.toFirSourceElement(FirFakeSourceElementKind.DesugaredForLoop) val iteratorVal = generateTemporaryVariable( - baseModuleData, rangeSource, ITERATOR_NAME, + baseModuleData, rangeSource, SpecialNames.ITERATOR, buildFunctionCall { source = fakeSource calleeReference = buildSimpleNamedReference { @@ -1928,7 +1929,7 @@ open class RawFirBuilder( val multiDeclaration = ktParameter.destructuringDeclaration val firLoopParameter = generateTemporaryVariable( moduleData = baseModuleData, source = expression.loopParameter?.toFirSourceElement(), - name = if (multiDeclaration != null) DESTRUCTURING_NAME else ktParameter.nameAsSafeName, + name = if (multiDeclaration != null) SpecialNames.DESTRUCT else ktParameter.nameAsSafeName, initializer = buildFunctionCall { source = fakeSource calleeReference = buildSimpleNamedReference { diff --git a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt index 269494a039c..092bc5e0ee9 100644 --- a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt +++ b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt @@ -112,7 +112,7 @@ abstract class BaseFirBuilder(val baseSession: FirSession, val context: Conte fun callableIdForName(name: Name) = when { - context.className.shortNameOrSpecial() == ANONYMOUS_OBJECT_NAME -> CallableId(ANONYMOUS_CLASS_ID, name) + context.className.shortNameOrSpecial() == SpecialNames.ANONYMOUS -> CallableId(ANONYMOUS_CLASS_ID, name) context.className.isRoot && !context.inLocalContext -> CallableId(context.packageFqName, name) context.inLocalContext -> { val pathFqName = @@ -491,7 +491,7 @@ abstract class BaseFirBuilder(val baseSession: FirSession, val context: Conte val initialValueVar = generateTemporaryVariable( baseModuleData, desugaredSource, - Name.special(""), + SpecialNames.UNARY, unwrappedArgument.convert() ) @@ -629,7 +629,7 @@ abstract class BaseFirBuilder(val baseSession: FirSession, val context: Conte val initialValueVar = generateTemporaryVariable( baseModuleData, desugaredSource, - Name.special(""), + SpecialNames.UNARY, firArgument ) @@ -769,7 +769,7 @@ abstract class BaseFirBuilder(val baseSession: FirSession, val context: Conte val initialValueVar = generateTemporaryVariable( baseModuleData, desugaredSource, - Name.special(""), + SpecialNames.UNARY, firArgument ) @@ -1245,15 +1245,6 @@ abstract class BaseFirBuilder(val baseSession: FirSession, val context: Conte } } - /**** Common utils ****/ - companion object { - val ANONYMOUS_OBJECT_NAME = Name.special("") - - val DESTRUCTURING_NAME = Name.special("") - - val ITERATOR_NAME = Name.special("") - } - enum class ValueParameterDeclaration { OTHER, LAMBDA, diff --git a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt index ce7ac86bbab..4bd35d24280 100644 --- a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt +++ b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/ConversionUtils.kt @@ -555,4 +555,4 @@ data class CalleeAndReceiver( val reference: FirNamedReference, val receiverExpression: FirExpression? = null, val isImplicitInvoke: Boolean = false -) +) \ No newline at end of file diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt index b69aeeaf127..2e6075803eb 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/FirCallResolver.kt @@ -38,6 +38,7 @@ import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef import org.jetbrains.kotlin.fir.types.builder.buildStarProjection import org.jetbrains.kotlin.fir.types.builder.buildTypeProjectionWithVariance import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.resolve.calls.inference.ConstraintSystemBuilder import org.jetbrains.kotlin.resolve.calls.results.TypeSpecificityComparator import org.jetbrains.kotlin.resolve.calls.tasks.ExplicitReceiverKind @@ -423,7 +424,7 @@ class FirCallResolver( delegatedConstructorCall: FirDelegatedConstructorCall, constructedType: ConeClassLikeType ): FirDelegatedConstructorCall { - val name = Name.special("") + val name = SpecialNames.INIT val symbol = constructedType.lookupTag.toSymbol(components.session) val typeArguments = constructedType.typeArguments.take((symbol?.fir as? FirRegularClass)?.typeParameters?.count { it is FirTypeParameter } ?: 0) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt index 1480b48bb40..c3eb11e7b4c 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/resolve/transformers/body/resolve/FirDeclarationsResolveTransformer.kt @@ -47,6 +47,7 @@ import org.jetbrains.kotlin.fir.visitors.FirDefaultTransformer import org.jetbrains.kotlin.fir.visitors.FirTransformer import org.jetbrains.kotlin.fir.visitors.transformSingle import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames open class FirDeclarationsResolveTransformer(transformer: FirBodyResolveTransformer) : FirPartialBodyResolveTransformer(transformer) { private val statusResolver: FirStatusResolver = FirStatusResolver(session, scopeSession) diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt index e155c77cddd..741b5c0fe25 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirClassDeclaredMemberScope.kt @@ -10,12 +10,12 @@ import org.jetbrains.kotlin.fir.declarations.* import org.jetbrains.kotlin.fir.declarations.utils.isSynthetic import org.jetbrains.kotlin.fir.resolve.providers.FirSymbolProvider import org.jetbrains.kotlin.fir.resolve.substitution.ConeSubstitutor -import org.jetbrains.kotlin.fir.resolve.transformers.ensureResolvedForCalls import org.jetbrains.kotlin.fir.scopes.FirContainingNamesAwareScope import org.jetbrains.kotlin.fir.scopes.FirScope import org.jetbrains.kotlin.fir.scopes.getContainingClassifierNamesIfPresent import org.jetbrains.kotlin.fir.symbols.impl.* import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames class FirClassDeclaredMemberScope( val useSiteSession: FirSession, @@ -35,7 +35,7 @@ class FirClassDeclaredMemberScope( loop@ for (declaration in klass.declarations) { if (declaration is FirCallableDeclaration) { val name = when (declaration) { - is FirConstructor -> CONSTRUCTOR_NAME + is FirConstructor -> SpecialNames.INIT is FirVariable -> if (declaration.isSynthetic) continue@loop else declaration.name is FirSimpleFunction -> declaration.name else -> continue@loop @@ -47,12 +47,12 @@ class FirClassDeclaredMemberScope( } override fun processFunctionsByName(name: Name, processor: (FirNamedFunctionSymbol) -> Unit) { - if (name == CONSTRUCTOR_NAME) return + if (name == SpecialNames.INIT) return processCallables(name, processor) } override fun processDeclaredConstructors(processor: (FirConstructorSymbol) -> Unit) { - processCallables(CONSTRUCTOR_NAME, processor) + processCallables(SpecialNames.INIT, processor) } override fun processPropertiesByName(name: Name, processor: (FirVariableSymbol<*>) -> Unit) { @@ -86,6 +86,3 @@ class FirClassDeclaredMemberScope( return nestedClassifierScope?.getContainingClassifierNamesIfPresent().orEmpty() } } - - -private val CONSTRUCTOR_NAME = Name.special("") diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/DefaultNames.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/DefaultNames.kt index 0789bbf6ac6..12da01caebd 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/DefaultNames.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/DefaultNames.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlin.name.Name val NAME_FOR_BACKING_FIELD = Name.identifier("field") val NAME_FOR_DEFAULT_VALUE_PARAMETER = Name.identifier("value") -val CONSTRUCTOR_NAME = Name.special("") // Data class synthetic members val COPY_NAME = Name.identifier("copy") diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirClassLikeSymbol.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirClassLikeSymbol.kt index 4b77e22a6d1..e2fb4d4ecf6 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirClassLikeSymbol.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/impl/FirClassLikeSymbol.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames sealed class FirClassLikeSymbol( val classId: ClassId @@ -68,7 +69,7 @@ class FirRegularClassSymbol(classId: ClassId) : FirClassSymbol( get() = fir.companionObject?.symbol } -val ANONYMOUS_CLASS_ID = ClassId(FqName.ROOT, FqName.topLevel(Name.special("")), true) +val ANONYMOUS_CLASS_ID = ClassId(FqName.ROOT, FqName.topLevel(SpecialNames.ANONYMOUS), true) class FirAnonymousObjectSymbol : FirClassSymbol(ANONYMOUS_CLASS_ID) diff --git a/compiler/frontend/src/org/jetbrains/kotlin/descriptors/impl/AnonymousFunctionDescriptor.java b/compiler/frontend/src/org/jetbrains/kotlin/descriptors/impl/AnonymousFunctionDescriptor.java index a3a47348a5a..3f1e0892c97 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/descriptors/impl/AnonymousFunctionDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/descriptors/impl/AnonymousFunctionDescriptor.java @@ -25,7 +25,7 @@ public class AnonymousFunctionDescriptor extends SimpleFunctionDescriptorImpl { @NotNull SourceElement source, boolean isSuspend ) { - this(containingDeclaration, null, annotations, SpecialNames.ANONYMOUS_FUNCTION, kind, source, isSuspend); + this(containingDeclaration, null, annotations, SpecialNames.ANONYMOUS, kind, source, isSuspend); } private AnonymousFunctionDescriptor( diff --git a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/DoubleColonExpressionResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/DoubleColonExpressionResolver.kt index 2d54d0be8ee..46f4af5c605 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/DoubleColonExpressionResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/types/expressions/DoubleColonExpressionResolver.kt @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.diagnostics.Errors.* import org.jetbrains.kotlin.diagnostics.reportDiagnosticOnce import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.codeFragmentUtil.suppressDiagnosticsInDebugMode import org.jetbrains.kotlin.psi.psiUtil.checkReservedYield @@ -668,7 +669,7 @@ class DoubleColonExpressionResolver( mutable: Boolean = true ) { val localVariable = LocalVariableDescriptor( - context.scope.ownerDescriptor, Annotations.EMPTY, Name.special(""), referenceType, + context.scope.ownerDescriptor, Annotations.EMPTY, SpecialNames.ANONYMOUS, referenceType, mutable, false, expression.toSourceElement() ) diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt index a329c5fb476..9b3ea6279dd 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/backend/common/ir/IrUtils.kt @@ -34,6 +34,7 @@ import org.jetbrains.kotlin.ir.types.impl.makeTypeProjection import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.ir.visitors.IrElementVisitor import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames import java.io.StringWriter fun ir2string(ir: IrElement?): String = ir?.render() ?: "" @@ -424,7 +425,7 @@ fun IrFunction.createDispatchReceiverParameter(origin: IrDeclarationOrigin? = nu startOffset, endOffset, origin ?: parentAsClass.origin, IrValueParameterSymbolImpl(), - Name.special(""), + SpecialNames.THIS, -1, parentAsClass.defaultType, null, diff --git a/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt b/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt index a51582cecf0..fcd4eb4f708 100644 --- a/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt +++ b/compiler/ir/backend.common/src/org/jetbrains/kotlin/ir/builders/declarations/declarationBuilders.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.ir.types.IrType import org.jetbrains.kotlin.ir.util.defaultType import org.jetbrains.kotlin.ir.util.parentAsClass import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.types.Variance @PublishedApi @@ -156,7 +157,7 @@ internal fun IrFactory.buildConstructor(builder: IrFunctionBuilder): IrConstruct return createConstructor( startOffset, endOffset, origin, IrConstructorSymbolImpl(), - Name.special(""), + SpecialNames.INIT, visibility, returnType, isInline = isInline, isExternal = isExternal, isPrimary = isPrimary, isExpect = isExpect, containerSource = containerSource @@ -222,8 +223,6 @@ inline fun IrClass.addConstructor(builder: IrFunctionBuilder.() -> Unit = {}): I constructor.parent = this@addConstructor } -private val RECEIVER_PARAMETER_NAME = Name.special("") - fun buildReceiverParameter( parent: D, origin: IrDeclarationOrigin, @@ -235,7 +234,7 @@ fun buildReceiverParameter( parent.factory.createValueParameter( startOffset, endOffset, origin, IrValueParameterSymbolImpl(), - RECEIVER_PARAMETER_NAME, -1, type, null, isCrossinline = false, isNoinline = false, + SpecialNames.THIS, -1, type, null, isCrossinline = false, isNoinline = false, isHidden = false, isAssignable = false ).also { it.parent = parent diff --git a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CallableReferenceLowering.kt b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CallableReferenceLowering.kt index 2feac29f5fe..da28a095c24 100644 --- a/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CallableReferenceLowering.kt +++ b/compiler/ir/backend.js/src/org/jetbrains/kotlin/ir/backend/js/lower/CallableReferenceLowering.kt @@ -367,7 +367,7 @@ class CallableReferenceLowering(private val context: CommonBackendContext) : Bod } getter.overriddenSymbols += supperGetter.symbol getter.dispatchReceiverParameter = buildValueParameter(getter) { - name = THIS_NAME + name = SpecialNames.THIS type = clazz.defaultType } @@ -401,10 +401,6 @@ class CallableReferenceLowering(private val context: CommonBackendContext) : Bod object FUNCTION_REFERENCE_IMPL : IrDeclarationOriginImpl("FUNCTION_REFERENCE_IMPL") object GENERATED_MEMBER_IN_CALLABLE_REFERENCE : IrDeclarationOriginImpl("GENERATED_MEMBER_IN_CALLABLE_REFERENCE") - - - val THIS_NAME = Name.special("") val BOUND_RECEIVER_NAME = Name.identifier("\$boundThis") } - } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/ScriptLowering.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/ScriptLowering.kt index f5670010651..8b9e928aa56 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/ScriptLowering.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/lower/ScriptLowering.kt @@ -33,6 +33,7 @@ import org.jetbrains.kotlin.ir.visitors.IrElementTransformer import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.util.OperatorNameConventions import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull @@ -454,7 +455,7 @@ private class ScriptToClassTransformer( override fun visitGetField(expression: IrGetField): IrExpression { if (irScript.earlierScripts != null) { val receiver = expression.receiver - if (receiver is IrGetValue && receiver.symbol.owner.name == Name.special("")) { + if (receiver is IrGetValue && receiver.symbol.owner.name == SpecialNames.THIS) { val newReceiver = getAccessCallForEarlierScript(expression, receiver.type) if (newReceiver != null) { val newGetField = @@ -470,7 +471,7 @@ private class ScriptToClassTransformer( if (irScript.earlierScripts != null) { val target = expression.symbol.owner val receiver: IrValueParameter? = target.dispatchReceiverParameter - if (receiver?.name == Name.special("")) { + if (receiver?.name == SpecialNames.THIS) { val newReceiver = getAccessCallForEarlierScript(expression, receiver.type) if (newReceiver != null) { expression.dispatchReceiver = newReceiver diff --git a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/WasmSharedVariablesManager.kt b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/WasmSharedVariablesManager.kt index 3f7496b53ea..0c6772b3476 100644 --- a/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/WasmSharedVariablesManager.kt +++ b/compiler/ir/backend.wasm/src/org/jetbrains/kotlin/backend/wasm/lower/WasmSharedVariablesManager.kt @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.ir.types.impl.IrSimpleTypeImpl import org.jetbrains.kotlin.ir.util.defaultType import org.jetbrains.kotlin.ir.util.parentAsClass import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames /** * This is a copy of an old version of JS lowering, because JS did platform-specific optimization incompatible with Wasm. @@ -192,7 +193,7 @@ class WasmSharedVariablesManager(val context: JsCommonBackendContext, val builtI val declaration = context.irFactory.createConstructor( UNDEFINED_OFFSET, UNDEFINED_OFFSET, JsLoweredDeclarationOrigin.JS_CLOSURE_BOX_CLASS_DECLARATION, symbol, - Name.special(""), DescriptorVisibilities.PUBLIC, closureBoxClassDeclaration.defaultType, + SpecialNames.INIT, DescriptorVisibilities.PUBLIC, closureBoxClassDeclaration.defaultType, isInline = false, isExternal = false, isPrimary = true, isExpect = false ) diff --git a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/state/reflection/KFunctionState.kt b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/state/reflection/KFunctionState.kt index 4d2aaa8700c..18463ef459e 100644 --- a/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/state/reflection/KFunctionState.kt +++ b/compiler/ir/ir.interpreter/src/org/jetbrains/kotlin/ir/interpreter/state/reflection/KFunctionState.kt @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.ir.util.deepCopyWithSymbols import org.jetbrains.kotlin.ir.util.defaultType import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.util.OperatorNameConventions +import org.jetbrains.kotlin.name.SpecialNames import kotlin.reflect.KParameter import kotlin.reflect.KType import kotlin.reflect.KTypeParameter @@ -148,9 +149,9 @@ internal class KFunctionState( .toIntOrNull() } - private fun isLambda(): Boolean = irFunction.name.let { it == Name.special("") || it == Name.special("") } + private fun isLambda(): Boolean = irFunction.name.let { it == SpecialNames.ANONYMOUS || it == Name.special("") } override fun toString(): String { return if (isLambda()) renderLambda(irFunction) else renderFunction(irFunction) } -} \ No newline at end of file +} diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrDescriptorBasedFunctionFactory.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrDescriptorBasedFunctionFactory.kt index 025ff5d20fa..72d93c1f8ab 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrDescriptorBasedFunctionFactory.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/descriptors/IrDescriptorBasedFunctionFactory.kt @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.ir.types.impl.* import org.jetbrains.kotlin.ir.util.* import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.resolve.descriptorUtil.isEffectivelyExternal import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter import org.jetbrains.kotlin.types.KotlinType @@ -259,7 +260,7 @@ class IrDescriptorBasedFunctionFactory( buildSimpleType() } val vDeclaration = irFactory.createValueParameter( - offset, offset, classOrigin, vSymbol, Name.special(""), -1, type, null, + offset, offset, classOrigin, vSymbol, SpecialNames.THIS, -1, type, null, isCrossinline = false, isNoinline = false, isHidden = false, diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/AdditionalIrUtils.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/AdditionalIrUtils.kt index bdafafca8c1..8707d2a24ce 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/AdditionalIrUtils.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/AdditionalIrUtils.kt @@ -58,12 +58,10 @@ val IrClass.classId: ClassId? val IrDeclaration.nameForIrSerialization: Name get() = when (this) { is IrDeclarationWithName -> this.name - is IrConstructor -> SPECIAL_INIT_NAME + is IrConstructor -> SpecialNames.INIT else -> error(this) } -private val SPECIAL_INIT_NAME = Name.special("") - val IrValueParameter.isVararg get() = this.varargElementType != null val IrFunction.isSuspend get() = this is IrSimpleFunction && this.isSuspend diff --git a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrExportCheckerVisitor.kt b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrExportCheckerVisitor.kt index ae2cc2cc716..8e871a87fa6 100644 --- a/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrExportCheckerVisitor.kt +++ b/compiler/ir/serialization.common/src/org/jetbrains/kotlin/backend/common/serialization/mangle/ir/IrExportCheckerVisitor.kt @@ -137,4 +137,4 @@ abstract class IrExportCheckerVisitor(private val compatibleMode: Boolean) : Kot } val Name.isAnonymous: Boolean - get() = isSpecial && (this == SpecialNames.ANONYMOUS_FUNCTION || this == SpecialNames.NO_NAME_PROVIDED) \ No newline at end of file + get() = isSpecial && (this == SpecialNames.ANONYMOUS || this == SpecialNames.NO_NAME_PROVIDED) \ No newline at end of file diff --git a/compiler/psi/src/org/jetbrains/kotlin/psi/KtFunctionLiteral.java b/compiler/psi/src/org/jetbrains/kotlin/psi/KtFunctionLiteral.java index 33de318abd6..87f87f69e0e 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/psi/KtFunctionLiteral.java +++ b/compiler/psi/src/org/jetbrains/kotlin/psi/KtFunctionLiteral.java @@ -38,7 +38,7 @@ public class KtFunctionLiteral extends KtFunctionNotStubbed { @Override public String getName() { - return SpecialNames.ANONYMOUS; + return SpecialNames.ANONYMOUS_STRING; } @Override diff --git a/core/compiler.common/src/org/jetbrains/kotlin/name/CallableId.kt b/core/compiler.common/src/org/jetbrains/kotlin/name/CallableId.kt index 871509d7307..cede40ec843 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/name/CallableId.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/name/CallableId.kt @@ -14,7 +14,7 @@ data class CallableId( private val pathToLocal: FqName? = null ) { private companion object { - val LOCAL_NAME = Name.special("") + val LOCAL_NAME = SpecialNames.LOCAL val PACKAGE_FQ_NAME_FOR_LOCAL = FqName.topLevel(LOCAL_NAME) } diff --git a/core/compiler.common/src/org/jetbrains/kotlin/name/NameUtils.kt b/core/compiler.common/src/org/jetbrains/kotlin/name/NameUtils.kt index eb904e69553..0e58d556ee9 100644 --- a/core/compiler.common/src/org/jetbrains/kotlin/name/NameUtils.kt +++ b/core/compiler.common/src/org/jetbrains/kotlin/name/NameUtils.kt @@ -16,8 +16,6 @@ package org.jetbrains.kotlin.name -import java.util.* - object NameUtils { private val SANITIZE_AS_JAVA_INVALID_CHARACTERS = "[^\\p{L}\\p{Digit}]".toRegex() @@ -52,5 +50,5 @@ object NameUtils { Name.identifier(NameUtils.getPackagePartClassNamePrefix(filePath.substringAfterLast('/').substringBeforeLast('.'))) @JvmStatic - fun hasName(name: Name) = name != SpecialNames.NO_NAME_PROVIDED && name != SpecialNames.ANONYMOUS_FUNCTION + fun hasName(name: Name) = name != SpecialNames.NO_NAME_PROVIDED && name != SpecialNames.ANONYMOUS } diff --git a/core/compiler.common/src/org/jetbrains/kotlin/name/SpecialNames.java b/core/compiler.common/src/org/jetbrains/kotlin/name/SpecialNames.java deleted file mode 100644 index 31f7a3060bd..00000000000 --- a/core/compiler.common/src/org/jetbrains/kotlin/name/SpecialNames.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.name; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -public class SpecialNames { - public static final Name NO_NAME_PROVIDED = Name.special(""); - public static final Name ROOT_PACKAGE = Name.special(""); - public static final Name UNDERSCORE_FOR_UNUSED_VAR = Name.special(""); - - public static final Name DEFAULT_NAME_FOR_COMPANION_OBJECT = Name.identifier("Companion"); - - // This name is used as a key for the case when something has no name _due to a syntactic error_ - // Example: fun (x: Int) = 5 - // There's no name for this function in the PSI - // The name contains a GUID to avoid clashes, if a clash happens, it's not a big deal: the code does not compile anyway - public static final Name SAFE_IDENTIFIER_FOR_NO_NAME = Name.identifier("no_name_in_PSI_3d19d79d_1ba9_4cd0_b7f5_b46aa3cd5d40"); - - public static final String ANONYMOUS = ""; - public static final Name ANONYMOUS_FUNCTION = Name.special(ANONYMOUS); - - @NotNull - public static Name safeIdentifier(@Nullable Name name) { - return name != null && !name.isSpecial() ? name : SAFE_IDENTIFIER_FOR_NO_NAME; - } - - @NotNull - public static Name safeIdentifier(@Nullable String name) { - return safeIdentifier(name == null ? null : Name.identifier(name)); - } - - public static boolean isSafeIdentifier(@NotNull Name name) { - return !name.asString().isEmpty() && !name.isSpecial(); - } - - private SpecialNames() {} -} diff --git a/core/compiler.common/src/org/jetbrains/kotlin/name/SpecialNames.kt b/core/compiler.common/src/org/jetbrains/kotlin/name/SpecialNames.kt new file mode 100644 index 00000000000..34f0903fb42 --- /dev/null +++ b/core/compiler.common/src/org/jetbrains/kotlin/name/SpecialNames.kt @@ -0,0 +1,74 @@ +/* + * Copyright 2010-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.kotlin.name + +object SpecialNames { + @JvmField + val NO_NAME_PROVIDED = Name.special("") + + @JvmField + val ROOT_PACKAGE = Name.special("") + + @JvmField + val DEFAULT_NAME_FOR_COMPANION_OBJECT = Name.identifier("Companion") + + // This name is used as a key for the case when something has no name _due to a syntactic error_ + // Example: fun (x: Int) = 5 + // There's no name for this function in the PSI + // The name contains a GUID to avoid clashes, if a clash happens, it's not a big deal: the code does not compile anyway + @JvmField + val SAFE_IDENTIFIER_FOR_NO_NAME = Name.identifier("no_name_in_PSI_3d19d79d_1ba9_4cd0_b7f5_b46aa3cd5d40") + + const val ANONYMOUS_STRING = "" + + @JvmField + val ANONYMOUS = Name.special(ANONYMOUS_STRING) + + @JvmField + val UNARY = Name.special("") + + @JvmField + val THIS = Name.special("") + + @JvmField + val INIT = Name.special("") + + @JvmField + val ITERATOR = Name.special("") + + @JvmField + val DESTRUCT = Name.special("") + + @JvmField + val LOCAL = Name.special("") + + @JvmField + val UNDERSCORE_FOR_UNUSED_VAR = Name.special("") + + @JvmStatic + fun safeIdentifier(name: Name?): Name { + return if (name != null && !name.isSpecial) name else SAFE_IDENTIFIER_FOR_NO_NAME + } + + @JvmStatic + fun safeIdentifier(name: String?): Name { + return safeIdentifier(if (name == null) null else Name.identifier(name)) + } + + fun isSafeIdentifier(name: Name): Boolean { + return name.asString().isNotEmpty() && !name.isSpecial + } +} \ No newline at end of file diff --git a/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/components/ReflectKotlinClass.kt b/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/components/ReflectKotlinClass.kt index f6a44df0424..41e246c4318 100644 --- a/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/components/ReflectKotlinClass.kt +++ b/core/descriptors.runtime/src/org/jetbrains/kotlin/descriptors/runtime/components/ReflectKotlinClass.kt @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.load.kotlin.header.KotlinClassHeader import org.jetbrains.kotlin.load.kotlin.header.ReadKotlinClassHeaderAnnotationVisitor import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.resolve.constants.ClassLiteralValue import org.jetbrains.kotlin.resolve.jvm.JvmPrimitiveType import java.lang.reflect.Constructor @@ -115,7 +116,7 @@ private object ReflectClassStructure { private fun loadConstructorAnnotations(klass: Class<*>, memberVisitor: KotlinJvmBinaryClass.MemberVisitor) { for (constructor in klass.declaredConstructors) { - val visitor = memberVisitor.visitMethod(Name.special(""), SignatureSerializer.constructorDesc(constructor)) ?: continue + val visitor = memberVisitor.visitMethod(SpecialNames.INIT, SignatureSerializer.constructorDesc(constructor)) ?: continue for (annotation in constructor.declaredAnnotations) { processAnnotation(visitor, annotation) diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractReceiverParameterDescriptor.java b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractReceiverParameterDescriptor.java index ee3b247d129..6a920212cd1 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractReceiverParameterDescriptor.java +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/AbstractReceiverParameterDescriptor.java @@ -20,7 +20,7 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.descriptors.annotations.Annotations; -import org.jetbrains.kotlin.name.Name; +import org.jetbrains.kotlin.name.SpecialNames; import org.jetbrains.kotlin.resolve.scopes.receivers.TransientReceiver; import org.jetbrains.kotlin.types.KotlinType; import org.jetbrains.kotlin.types.TypeSubstitutor; @@ -31,10 +31,9 @@ import java.util.Collections; import java.util.List; public abstract class AbstractReceiverParameterDescriptor extends DeclarationDescriptorImpl implements ReceiverParameterDescriptor { - private static final Name RECEIVER_PARAMETER_NAME = Name.special(""); public AbstractReceiverParameterDescriptor(@NotNull Annotations annotations) { - super(annotations, RECEIVER_PARAMETER_NAME); + super(annotations, SpecialNames.THIS); } @Nullable diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ClassConstructorDescriptorImpl.java b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ClassConstructorDescriptorImpl.java index 7529f2bcef0..133084df24f 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ClassConstructorDescriptorImpl.java +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/ClassConstructorDescriptorImpl.java @@ -21,6 +21,7 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.descriptors.*; import org.jetbrains.kotlin.descriptors.annotations.Annotations; import org.jetbrains.kotlin.name.Name; +import org.jetbrains.kotlin.name.SpecialNames; import org.jetbrains.kotlin.types.TypeSubstitutor; import java.util.Collection; @@ -31,8 +32,6 @@ public class ClassConstructorDescriptorImpl extends FunctionDescriptorImpl imple protected final boolean isPrimary; - private static final Name NAME = Name.special(""); - protected ClassConstructorDescriptorImpl( @NotNull ClassDescriptor containingDeclaration, @Nullable ConstructorDescriptor original, @@ -41,7 +40,7 @@ public class ClassConstructorDescriptorImpl extends FunctionDescriptorImpl imple @NotNull Kind kind, @NotNull SourceElement source ) { - super(containingDeclaration, original, annotations, NAME, kind, source); + super(containingDeclaration, original, annotations, SpecialNames.INIT, kind, source); this.isPrimary = isPrimary; } diff --git a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/TypeAliasConstructorDescriptor.kt b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/TypeAliasConstructorDescriptor.kt index e4b214f2550..1d8a16cd61e 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/TypeAliasConstructorDescriptor.kt +++ b/core/descriptors/src/org/jetbrains/kotlin/descriptors/impl/TypeAliasConstructorDescriptor.kt @@ -20,6 +20,7 @@ import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor.Kind import org.jetbrains.kotlin.descriptors.annotations.Annotations import org.jetbrains.kotlin.name.Name +import org.jetbrains.kotlin.name.SpecialNames import org.jetbrains.kotlin.resolve.DescriptorFactory import org.jetbrains.kotlin.storage.StorageManager import org.jetbrains.kotlin.storage.getValue @@ -56,7 +57,7 @@ class TypeAliasConstructorDescriptorImpl private constructor( kind: Kind, source: SourceElement ) : TypeAliasConstructorDescriptor, - FunctionDescriptorImpl(typeAliasDescriptor, original, annotations, Name.special(""), kind, source) { + FunctionDescriptorImpl(typeAliasDescriptor, original, annotations, SpecialNames.INIT, kind, source) { init { isActual = typeAliasDescriptor.isActual diff --git a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java index 6cbd382637f..379227e0a53 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java +++ b/core/descriptors/src/org/jetbrains/kotlin/resolve/DescriptorUtils.java @@ -292,7 +292,7 @@ public class DescriptorUtils { @SuppressWarnings("unused") public static boolean isAnonymousFunction(@NotNull DeclarationDescriptor descriptor) { return descriptor instanceof SimpleFunctionDescriptor && - descriptor.getName().equals(SpecialNames.ANONYMOUS_FUNCTION); + descriptor.getName().equals(SpecialNames.ANONYMOUS); } public static boolean isNonCompanionObject(@Nullable DeclarationDescriptor descriptor) { diff --git a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtClassLikeSymbol.kt b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtClassLikeSymbol.kt index f08c7ef820d..438fadcd32d 100644 --- a/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtClassLikeSymbol.kt +++ b/idea/idea-frontend-api/src/org/jetbrains/kotlin/idea/frontend/api/symbols/KtClassLikeSymbol.kt @@ -16,7 +16,7 @@ import org.jetbrains.kotlin.types.Variance public sealed class KtClassifierSymbol : KtSymbol, KtPossiblyNamedSymbol public val KtClassifierSymbol.nameOrAnonymous: Name - get() = name ?: SpecialNames.ANONYMOUS_FUNCTION + get() = name ?: SpecialNames.ANONYMOUS public abstract class KtTypeParameterSymbol : KtClassifierSymbol(), KtNamedSymbol { abstract override fun createPointer(): KtSymbolPointer diff --git a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt index 3d0f45cbd41..c6665952eb1 100644 --- a/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt +++ b/idea/idea-frontend-fir/src/org/jetbrains/kotlin/idea/asJava/firLightUtils.kt @@ -90,7 +90,7 @@ private class AnonymousTypesSubstitutor( if (type !is ConeClassLikeType) return null - val isAnonymous = type.classId.let { it?.shortClassName?.asString() == SpecialNames.ANONYMOUS } + val isAnonymous = type.classId.let { it?.shortClassName?.asString() == SpecialNames.ANONYMOUS_STRING } if (!isAnonymous) return null fun ConeClassLikeType.isNotInterface(): Boolean { @@ -134,7 +134,7 @@ internal fun ConeKotlinType.asPsiType( val canonicalSignature = signatureWriter.toString() if (canonicalSignature.contains("L")) return psiContext.nonExistentType() - require(!canonicalSignature.contains(SpecialNames.ANONYMOUS)) + require(!canonicalSignature.contains(SpecialNames.ANONYMOUS_STRING)) val signature = StringCharacterIterator(canonicalSignature) val javaType = SignatureParsing.parseTypeString(signature, StubBuildingVisitor.GUESSING_MAPPER) @@ -301,7 +301,7 @@ internal fun KtType.getTypeNullability(context: KtSymbol, phase: FirResolvePhase if (coneType is ConeClassErrorType) return NullabilityType.NotNull if (coneType.typeArguments.any { it is ConeClassErrorType }) return NullabilityType.NotNull - if (coneType.classId?.shortClassName?.asString() == SpecialNames.ANONYMOUS) return NullabilityType.NotNull + if (coneType.classId?.shortClassName?.asString() == SpecialNames.ANONYMOUS_STRING) return NullabilityType.NotNull val canonicalSignature = context.firRef.withFir(phase) { it.moduleData.session.jvmTypeMapper.mapType(coneType, TypeMappingMode.DEFAULT).descriptor