From a14cb075c3bfe51b62be10e1218c4769ebcbc62a Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Mon, 2 Mar 2020 16:25:20 +0300 Subject: [PATCH] FIR2IR: inline some conversion one-liners --- .../kotlin/fir/backend/ConversionUtils.kt | 45 ++++--------------- .../fir/backend/Fir2IrDeclarationStorage.kt | 2 +- .../kotlin/fir/backend/Fir2IrVisitor.kt | 2 +- 3 files changed, 11 insertions(+), 38 deletions(-) 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 16d76adf383..1d0c88dcbc3 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 @@ -69,7 +69,7 @@ fun FirClassifierSymbol<*>.toIrSymbol( ): IrClassifierSymbol { return when (this) { is FirTypeParameterSymbol -> { - toTypeParameterSymbol(declarationStorage, typeContext) + declarationStorage.getIrTypeParameterSymbol(this, typeContext) } is FirTypeAliasSymbol -> { val typeAlias = fir @@ -77,7 +77,7 @@ fun FirClassifierSymbol<*>.toIrSymbol( coneClassLikeType.lookupTag.toSymbol(session)!!.toIrSymbol(session, declarationStorage) } is FirClassSymbol -> { - toClassSymbol(declarationStorage) + declarationStorage.getIrClassSymbol(this) } else -> throw AssertionError("Should not be here: $this") } @@ -109,43 +109,16 @@ fun FirReference.toSymbol(declarationStorage: Fir2IrDeclarationStorage): IrSymbo } private fun AbstractFirBasedSymbol<*>.toSymbol(declarationStorage: Fir2IrDeclarationStorage): IrSymbol? = when (this) { - is FirClassSymbol -> toClassSymbol(declarationStorage) - is FirFunctionSymbol<*> -> toFunctionSymbol(declarationStorage) - is FirPropertySymbol -> if (fir.isLocal) toValueSymbol(declarationStorage) else toPropertyOrFieldSymbol(declarationStorage) - is FirFieldSymbol -> toPropertyOrFieldSymbol(declarationStorage) - is FirBackingFieldSymbol -> toBackingFieldSymbol(declarationStorage) - is FirDelegateFieldSymbol<*> -> toBackingFieldSymbol(declarationStorage) - is FirVariableSymbol<*> -> toValueSymbol(declarationStorage) + is FirClassSymbol -> declarationStorage.getIrClassSymbol(this) + is FirFunctionSymbol<*> -> declarationStorage.getIrFunctionSymbol(this) + is FirPropertySymbol -> if (fir.isLocal) declarationStorage.getIrValueSymbol(this) else declarationStorage.getIrPropertyOrFieldSymbol(this) + is FirFieldSymbol -> declarationStorage.getIrPropertyOrFieldSymbol(this) + is FirBackingFieldSymbol -> declarationStorage.getIrBackingFieldSymbol(this) + is FirDelegateFieldSymbol<*> -> declarationStorage.getIrBackingFieldSymbol(this) + is FirVariableSymbol<*> -> declarationStorage.getIrValueSymbol(this) else -> null } -fun FirClassSymbol<*>.toClassSymbol(declarationStorage: Fir2IrDeclarationStorage): IrClassSymbol { - return declarationStorage.getIrClassSymbol(this) -} - -fun FirTypeParameterSymbol.toTypeParameterSymbol( - declarationStorage: Fir2IrDeclarationStorage, - typeContext: ConversionTypeContext = ConversionTypeContext.DEFAULT -): IrTypeParameterSymbol { - return declarationStorage.getIrTypeParameterSymbol(this, typeContext) -} - -fun FirFunctionSymbol<*>.toFunctionSymbol(declarationStorage: Fir2IrDeclarationStorage): IrFunctionSymbol { - return declarationStorage.getIrFunctionSymbol(this) -} - -fun FirVariableSymbol<*>.toPropertyOrFieldSymbol(declarationStorage: Fir2IrDeclarationStorage): IrSymbol { - return declarationStorage.getIrPropertyOrFieldSymbol(this) -} - -fun FirVariableSymbol<*>.toBackingFieldSymbol(declarationStorage: Fir2IrDeclarationStorage): IrSymbol { - return declarationStorage.getIrBackingFieldSymbol(this) -} - -fun FirVariableSymbol<*>.toValueSymbol(declarationStorage: Fir2IrDeclarationStorage): IrSymbol { - return declarationStorage.getIrValueSymbol(this) -} - fun FirConstExpression<*>.getIrConstKind(): IrConstKind<*> = when (kind) { FirConstKind.IntegerLiteral -> { val type = typeRef.coneTypeUnsafe() 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 1b5180858f8..3314e9e37ee 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 @@ -568,7 +568,7 @@ class Fir2IrDeclarationStorage( val created = create() if (function.symbol.callableId.isKFunctionInvoke()) { (function.symbol.overriddenSymbol as? FirNamedFunctionSymbol)?.let { - created.overriddenSymbols += (it.toFunctionSymbol(this) as IrSimpleFunctionSymbol) + created.overriddenSymbols += getIrFunctionSymbol(it) as IrSimpleFunctionSymbol } } functionCache[function] = created diff --git a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt index 7bcac9452a5..6f3734ea814 100644 --- a/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt +++ b/compiler/fir/fir2ir/src/org/jetbrains/kotlin/fir/backend/Fir2IrVisitor.kt @@ -1452,7 +1452,7 @@ class Fir2IrVisitor( if (argument is FirResolvedReifiedParameterReference) { IrClassReferenceImpl( startOffset, endOffset, irType, - argument.symbol.toTypeParameterSymbol(declarationStorage), + declarationStorage.getIrTypeParameterSymbol(argument.symbol, ConversionTypeContext.DEFAULT), argument.typeRef.toIrType() ) } else {