FIR: Update fir hierarchy, decouple member declaration from callable

This commit is contained in:
Simon Ogorodnik
2019-03-06 17:47:01 +03:00
parent 7b6f4d8ba4
commit 02079bbeb5
31 changed files with 243 additions and 94 deletions
@@ -8,7 +8,7 @@ package org.jetbrains.kotlin.fir.java
import com.intellij.openapi.project.Project
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.declarations.FirCallableMember
import org.jetbrains.kotlin.fir.declarations.FirCallableMemberDeclaration
import org.jetbrains.kotlin.fir.declarations.FirConstructor
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
import org.jetbrains.kotlin.fir.java.declarations.*
@@ -49,13 +49,13 @@ class JavaSymbolProvider(
is FirConstructor -> {
CallableId(callableId.packageName, callableId.className, firClass.name)
}
is FirCallableMember -> {
is FirCallableMemberDeclaration -> {
CallableId(callableId.packageName, callableId.className, declaration.name)
}
else -> null
}
if (declarationId == callableId) {
val symbol = (declaration as FirCallableMember).symbol as ConeCallableSymbol
val symbol = (declaration as FirCallableMemberDeclaration).symbol as ConeCallableSymbol
callableSymbols += symbol
}
}
@@ -19,13 +19,26 @@ import org.jetbrains.kotlin.fir.types.FirTypeRef
class FirJavaConstructor(
session: FirSession,
symbol: FirFunctionSymbol,
override val symbol: FirFunctionSymbol,
visibility: Visibility,
delegatedSelfTypeRef: FirTypeRef
) : FirAbstractCallableMember(
session, psi = null, symbol = symbol, name = NAME, visibility = visibility, modality = Modality.FINAL,
isExpect = false, isActual = false, isOverride = false, receiverTypeRef = null, returnTypeRef = delegatedSelfTypeRef
session,
psi = null,
name = NAME,
visibility = visibility,
modality = Modality.FINAL,
isExpect = false,
isActual = false,
isOverride = false,
receiverTypeRef = null,
returnTypeRef = delegatedSelfTypeRef
), FirConstructor {
init {
symbol.bind(this)
}
override val delegatedConstructor: FirDelegatedConstructorCall?
get() = null
@@ -12,12 +12,12 @@ import org.jetbrains.kotlin.fir.declarations.FirField
import org.jetbrains.kotlin.fir.declarations.impl.FirAbstractCallableMember
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.java.types.FirJavaTypeRef
import org.jetbrains.kotlin.fir.symbols.impl.FirFieldSymbol
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
import org.jetbrains.kotlin.name.Name
class FirJavaField(
session: FirSession,
symbol: FirFieldSymbol,
override val symbol: FirPropertySymbol,
name: Name,
visibility: Visibility,
modality: Modality?,
@@ -25,11 +25,15 @@ class FirJavaField(
override val isVar: Boolean,
isStatic: Boolean
) : FirAbstractCallableMember(
session, psi = null, symbol = symbol, name = name,
session, psi = null, name = name,
visibility = visibility, modality = modality,
isExpect = false, isActual = false, isOverride = false,
receiverTypeRef = null, returnTypeRef = returnTypeRef
), FirField {
init {
symbol.bind(this)
}
override val delegate: FirExpression?
get() = null
@@ -163,7 +163,7 @@ private fun JavaClassifierType.enhanceInflexibleType(
globalArgIndex++
arg.toConeProjection(
session,
((originalSymbol as? FirBasedSymbol<*>)?.fir as? FirCallableMember)?.typeParameters?.getOrNull(localArgIndex)
((originalSymbol as? FirBasedSymbol<*>)?.fir as? FirCallableMemberDeclaration)?.typeParameters?.getOrNull(localArgIndex)
)
} else {
val argEnhancedTypeRef = arg.enhancePossiblyFlexible(session, annotations, qualifiers, globalArgIndex)