FIR: add 'isInner' parameter to constructors

This is helpful because inner class constructors are resolved in a bit
different way (like non-static vs static)
This commit is contained in:
Mikhail Glukhikh
2019-10-04 15:39:51 +03:00
parent aad9cbbf01
commit 26e8202771
10 changed files with 27 additions and 3 deletions
@@ -17,6 +17,8 @@ interface FirConstructor : @VisitedSupertype FirMemberFunction<FirConstructor> {
override val isOverride: Boolean get() = status.isOverride
val isInner: Boolean
val delegatedConstructor: FirDelegatedConstructorCall?
override fun <R, D> accept(visitor: FirVisitor<R, D>, data: D): R =
@@ -30,6 +30,12 @@ open class FirConstructorImpl : FirAbstractCallableMember<FirConstructor>, FirCo
final override var delegatedConstructor: FirDelegatedConstructorCall? = null
final override var isInner: Boolean
get() = status.isInner
set(isInner) {
status.isInner = isInner
}
constructor(
session: FirSession,
psi: PsiElement?,
@@ -37,6 +43,7 @@ open class FirConstructorImpl : FirAbstractCallableMember<FirConstructor>, FirCo
visibility: Visibility,
isExpect: Boolean,
isActual: Boolean,
isInner: Boolean,
delegatedSelfTypeRef: FirTypeRef,
delegatedConstructor: FirDelegatedConstructorCall?
) : super(
@@ -44,6 +51,7 @@ open class FirConstructorImpl : FirAbstractCallableMember<FirConstructor>, FirCo
isExpect, isActual, isOverride = false, receiverTypeRef = null, returnTypeRef = delegatedSelfTypeRef
) {
this.symbol = symbol
this.isInner = isInner
this.delegatedConstructor = delegatedConstructor
symbol.bind(this)
}
@@ -19,9 +19,10 @@ class FirPrimaryConstructorImpl(
visibility: Visibility,
isExpect: Boolean,
isActual: Boolean,
isInner: Boolean,
delegatedSelfTypeRef: FirTypeRef,
delegatedConstructor: FirDelegatedConstructorCall?
) : FirConstructorImpl(session, psi, symbol, visibility, isExpect, isActual, delegatedSelfTypeRef, delegatedConstructor) {
) : FirConstructorImpl(session, psi, symbol, visibility, isExpect, isActual, isInner, delegatedSelfTypeRef, delegatedConstructor) {
override val isPrimary: Boolean
get() = true
}