FIR tree: implement trivial expressions typing

This commit is contained in:
Simon Ogorodnik
2019-04-10 21:25:48 +03:00
committed by Mikhail Glukhikh
parent c3632487d0
commit 9abf4062b1
8 changed files with 39 additions and 25 deletions
@@ -6,12 +6,15 @@
package org.jetbrains.kotlin.fir.expressions.impl
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.fir.FirAbstractElement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef
// Representation of "dummy" condition at else branch
class FirElseIfTrueCondition(
session: FirSession,
psi: PsiElement?
): FirAbstractExpression(session, psi)
) : FirAbstractExpression(session, psi) {
override var typeRef: FirTypeRef = FirImplicitUnitTypeRef(session, psi)
}
@@ -10,6 +10,9 @@ import org.jetbrains.kotlin.fir.*
import org.jetbrains.kotlin.fir.declarations.FirFunction
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.FirReturnExpression
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.types.impl.FirImplicitNothingTypeRef
import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef
import org.jetbrains.kotlin.fir.visitors.FirTransformer
class FirReturnExpressionImpl(
@@ -23,4 +26,6 @@ class FirReturnExpressionImpl(
result = result.transformSingle(transformer, data)
return super<FirAbstractExpression>.transformChildren(transformer, data)
}
override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(session, psi)
}
@@ -12,6 +12,8 @@ import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.expressions.FirThrowExpression
import org.jetbrains.kotlin.fir.transformSingle
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.types.impl.FirImplicitNothingTypeRef
import org.jetbrains.kotlin.fir.visitors.FirTransformer
class FirThrowExpressionImpl(
@@ -23,4 +25,6 @@ class FirThrowExpressionImpl(
exception = exception.transformSingle(transformer, data)
return super<FirAbstractExpression>.transformChildren(transformer, data)
}
override var typeRef: FirTypeRef = FirImplicitNothingTypeRef(session, psi)
}
@@ -6,11 +6,13 @@
package org.jetbrains.kotlin.fir.expressions.impl
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.fir.FirAbstractElement
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.expressions.FirExpression
import org.jetbrains.kotlin.fir.types.FirTypeRef
import org.jetbrains.kotlin.fir.types.impl.FirImplicitUnitTypeRef
class FirUnitExpression(
session: FirSession,
psi: PsiElement?
): FirAbstractExpression(session, psi)
) : FirAbstractExpression(session, psi) {
override var typeRef: FirTypeRef = FirImplicitUnitTypeRef(session, psi)
}