[FIR] Add symbol to FirFunction and all it's inheritors

This commit is contained in:
Dmitriy Novozhilov
2019-08-21 15:45:55 +03:00
parent e3e1f3c2aa
commit 5846db4eab
35 changed files with 194 additions and 154 deletions
@@ -16,6 +16,8 @@ import org.jetbrains.kotlin.fir.FirElement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.builder.Context
import org.jetbrains.kotlin.fir.builder.generateAccessorsByDelegate
import org.jetbrains.kotlin.fir.builder.generateComponentFunctions
import org.jetbrains.kotlin.fir.builder.generateCopyFunction
import org.jetbrains.kotlin.fir.declarations.*
import org.jetbrains.kotlin.fir.declarations.impl.*
import org.jetbrains.kotlin.fir.expressions.*
@@ -37,8 +39,6 @@ import org.jetbrains.kotlin.lexer.KtTokens.*
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.name.SpecialNames
import org.jetbrains.kotlin.fir.builder.generateCopyFunction
import org.jetbrains.kotlin.fir.builder.generateComponentFunctions
class DeclarationsConverter(
session: FirSession,
@@ -888,7 +888,8 @@ class DeclarationsConverter(
null,
isGetter,
modifiers.getVisibility(),
returnType ?: if (isGetter) propertyTypeRef else implicitUnitType
returnType ?: if (isGetter) propertyTypeRef else implicitUnitType,
FirPropertyAccessorSymbol()
)
context.firFunctions += firAccessor
firAccessor.annotations += modifiers.annotations
@@ -971,7 +972,7 @@ class DeclarationsConverter(
val parentNode = functionDeclaration.getParent()
val isLocal = !(parentNode?.tokenType == KT_FILE || parentNode?.tokenType == CLASS_BODY)
val firFunction = if (identifier == null) {
FirAnonymousFunctionImpl(session, null, returnType!!, receiverType)
FirAnonymousFunctionImpl(session, null, returnType!!, receiverType, FirAnonymousFunctionSymbol())
} else {
val functionName = identifier.nameAsSafeName()
FirMemberFunctionImpl(
@@ -27,6 +27,7 @@ import org.jetbrains.kotlin.fir.references.FirExplicitSuperReference
import org.jetbrains.kotlin.fir.references.FirExplicitThisReference
import org.jetbrains.kotlin.fir.references.FirSimpleNamedReference
import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.fir.symbols.impl.FirAnonymousFunctionSymbol
import org.jetbrains.kotlin.fir.types.FirTypeProjection
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl
@@ -115,7 +116,7 @@ class ExpressionsConverter(
}
}
return FirAnonymousFunctionImpl(session, null, implicitType, implicitType).apply {
return FirAnonymousFunctionImpl(session, null, implicitType, implicitType, FirAnonymousFunctionSymbol()).apply {
context.firFunctions += this
var destructuringBlock: FirExpression? = null
for (valueParameter in valueParameterList) {