org.jetbrains.kotlin.types.expressions
Class ExpressionTypingVisitorDispatcher

java.lang.Object
  extended by com.intellij.psi.PsiElementVisitor
      extended by org.jetbrains.kotlin.psi.KtVisitor<KotlinTypeInfo,ExpressionTypingContext>
          extended by org.jetbrains.kotlin.types.expressions.ExpressionTypingVisitorDispatcher
Direct Known Subclasses:
ExpressionTypingVisitorDispatcher.ForBlock, ExpressionTypingVisitorDispatcher.ForDeclarations

public abstract class ExpressionTypingVisitorDispatcher
extends KtVisitor<KotlinTypeInfo,ExpressionTypingContext>


Nested Class Summary
static class ExpressionTypingVisitorDispatcher.ForBlock
           
static class ExpressionTypingVisitorDispatcher.ForDeclarations
           
 
Field Summary
protected  BasicExpressionTypingVisitor basic
           
protected  ControlStructureTypingVisitor controlStructures
           
protected  DeclarationsCheckerBuilder declarationsCheckerBuilder
           
protected  FunctionsTypingVisitor functions
           
protected  PatternMatchingTypingVisitor patterns
           
static PerformanceCounter typeInfoPerfCounter
           
 
Fields inherited from class com.intellij.psi.PsiElementVisitor
EMPTY_VISITOR
 
Method Summary
 KotlinTypeInfo checkInExpression(KtElement callElement, KtSimpleNameExpression operationSign, ValueArgument leftArgument, KtExpression right, ExpressionTypingContext context)
           
 void checkStatementType(KtExpression expression, ExpressionTypingContext context)
           
protected  ExpressionTypingVisitorForStatements createStatementVisitor(ExpressionTypingContext context)
           
 ExpressionTypingComponents getComponents()
           
protected abstract  ExpressionTypingVisitorForStatements getStatementVisitor(ExpressionTypingContext context)
           
 KotlinTypeInfo getTypeInfo(KtExpression expression, ExpressionTypingContext context)
           
 KotlinTypeInfo getTypeInfo(KtExpression expression, ExpressionTypingContext context, boolean isStatement)
           
 KotlinTypeInfo safeGetTypeInfo(KtExpression expression, ExpressionTypingContext context)
           
 KotlinTypeInfo visitAnnotatedExpression(KtAnnotatedExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitArrayAccessExpression(KtArrayAccessExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitBinaryExpression(KtBinaryExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitBinaryWithTypeRHSExpression(KtBinaryExpressionWithTypeRHS expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitBlockExpression(KtBlockExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitBreakExpression(KtBreakExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitCallableReferenceExpression(KtCallableReferenceExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitCallExpression(KtCallExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitClass(KtClass klass, ExpressionTypingContext data)
           
 KotlinTypeInfo visitClassLiteralExpression(KtClassLiteralExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitConstantExpression(KtConstantExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitContinueExpression(KtContinueExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitDeclaration(KtDeclaration dcl, ExpressionTypingContext data)
           
 KotlinTypeInfo visitDoWhileExpression(KtDoWhileExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitForExpression(KtForExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitIfExpression(KtIfExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitIsExpression(KtIsExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitKtElement(KtElement element, ExpressionTypingContext data)
           
 KotlinTypeInfo visitLabeledExpression(KtLabeledExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitLambdaExpression(KtLambdaExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitNamedFunction(KtNamedFunction function, ExpressionTypingContext data)
           
 KotlinTypeInfo visitObjectLiteralExpression(KtObjectLiteralExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitParenthesizedExpression(KtParenthesizedExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitProperty(KtProperty property, ExpressionTypingContext data)
           
 KotlinTypeInfo visitQualifiedExpression(KtQualifiedExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitReturnExpression(KtReturnExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitSimpleNameExpression(KtSimpleNameExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitStringTemplateExpression(KtStringTemplateExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitSuperExpression(KtSuperExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitThisExpression(KtThisExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitThrowExpression(KtThrowExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitTryExpression(KtTryExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitUnaryExpression(KtUnaryExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitWhenExpression(KtWhenExpression expression, ExpressionTypingContext data)
           
 KotlinTypeInfo visitWhileExpression(KtWhileExpression expression, ExpressionTypingContext data)
           
 
Methods inherited from class org.jetbrains.kotlin.psi.KtVisitor
visitAnnotation, visitAnnotationEntry, visitAnnotationUseSiteTarget, visitAnonymousInitializer, visitArgument, visitBlockStringTemplateEntry, visitCatchSection, visitClassBody, visitClassInitializer, visitClassOrObject, visitConstructorCalleeExpression, visitConstructorDelegationCall, visitDelegatedSuperTypeEntry, visitDestructuringDeclaration, visitDestructuringDeclarationEntry, visitDotQualifiedExpression, visitDoubleColonExpression, visitDynamicType, visitEnumEntry, visitEscapeStringTemplateEntry, visitExpression, visitExpressionWithLabel, visitFileAnnotationList, visitFinallySection, visitFunctionType, visitImportDirective, visitImportList, visitInitializerList, visitKtFile, visitLiteralStringTemplateEntry, visitLoopExpression, visitModifierList, visitNamedDeclaration, visitNullableType, visitObjectDeclaration, visitPackageDirective, visitParameter, visitParameterList, visitPostfixExpression, visitPrefixExpression, visitPrimaryConstructor, visitPropertyAccessor, visitPropertyDelegate, visitReferenceExpression, visitSafeQualifiedExpression, visitScript, visitScriptInitializer, visitSecondaryConstructor, visitSelfType, visitSimpleNameStringTemplateEntry, visitStringTemplateEntry, visitStringTemplateEntryWithExpression, visitSuperTypeCallEntry, visitSuperTypeEntry, visitSuperTypeList, visitSuperTypeListEntry, visitTypeArgumentList, visitTypeConstraint, visitTypeConstraintList, visitTypeParameter, visitTypeParameterList, visitTypeProjection, visitTypeReference, visitUserType, visitValueArgumentList, visitWhenConditionInRange, visitWhenConditionIsPattern, visitWhenConditionWithExpression, visitWhenEntry
 
Methods inherited from class com.intellij.psi.PsiElementVisitor
visitBinaryFile, visitComment, visitDirectory, visitElement, visitErrorElement, visitFile, visitOuterLanguageElement, visitPlainText, visitPlainTextFile, visitWhiteSpace
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

typeInfoPerfCounter

public static final PerformanceCounter typeInfoPerfCounter

basic

protected final BasicExpressionTypingVisitor basic

functions

protected final FunctionsTypingVisitor functions

controlStructures

protected final ControlStructureTypingVisitor controlStructures

patterns

protected final PatternMatchingTypingVisitor patterns

declarationsCheckerBuilder

protected final DeclarationsCheckerBuilder declarationsCheckerBuilder
Method Detail

getStatementVisitor

protected abstract ExpressionTypingVisitorForStatements getStatementVisitor(@NotNull
                                                                            ExpressionTypingContext context)

getComponents

@NotNull
public ExpressionTypingComponents getComponents()

checkInExpression

@NotNull
public KotlinTypeInfo checkInExpression(@NotNull
                                                KtElement callElement,
                                                @NotNull
                                                KtSimpleNameExpression operationSign,
                                                @NotNull
                                                ValueArgument leftArgument,
                                                @Nullable
                                                KtExpression right,
                                                @NotNull
                                                ExpressionTypingContext context)

safeGetTypeInfo

@NotNull
public final KotlinTypeInfo safeGetTypeInfo(@NotNull
                                                    KtExpression expression,
                                                    ExpressionTypingContext context)

getTypeInfo

@NotNull
public final KotlinTypeInfo getTypeInfo(@NotNull
                                                KtExpression expression,
                                                ExpressionTypingContext context)

getTypeInfo

@NotNull
public final KotlinTypeInfo getTypeInfo(@NotNull
                                                KtExpression expression,
                                                ExpressionTypingContext context,
                                                boolean isStatement)

createStatementVisitor

protected ExpressionTypingVisitorForStatements createStatementVisitor(ExpressionTypingContext context)

checkStatementType

public void checkStatementType(@NotNull
                               KtExpression expression,
                               ExpressionTypingContext context)

visitLambdaExpression

public KotlinTypeInfo visitLambdaExpression(@NotNull
                                            KtLambdaExpression expression,
                                            ExpressionTypingContext data)
Overrides:
visitLambdaExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitNamedFunction

public KotlinTypeInfo visitNamedFunction(@NotNull
                                         KtNamedFunction function,
                                         ExpressionTypingContext data)
Overrides:
visitNamedFunction in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitThrowExpression

public KotlinTypeInfo visitThrowExpression(@NotNull
                                           KtThrowExpression expression,
                                           ExpressionTypingContext data)
Overrides:
visitThrowExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitReturnExpression

public KotlinTypeInfo visitReturnExpression(@NotNull
                                            KtReturnExpression expression,
                                            ExpressionTypingContext data)
Overrides:
visitReturnExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitContinueExpression

public KotlinTypeInfo visitContinueExpression(@NotNull
                                              KtContinueExpression expression,
                                              ExpressionTypingContext data)
Overrides:
visitContinueExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitIfExpression

public KotlinTypeInfo visitIfExpression(@NotNull
                                        KtIfExpression expression,
                                        ExpressionTypingContext data)
Overrides:
visitIfExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitTryExpression

public KotlinTypeInfo visitTryExpression(@NotNull
                                         KtTryExpression expression,
                                         ExpressionTypingContext data)
Overrides:
visitTryExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitForExpression

public KotlinTypeInfo visitForExpression(@NotNull
                                         KtForExpression expression,
                                         ExpressionTypingContext data)
Overrides:
visitForExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitWhileExpression

public KotlinTypeInfo visitWhileExpression(@NotNull
                                           KtWhileExpression expression,
                                           ExpressionTypingContext data)
Overrides:
visitWhileExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitDoWhileExpression

public KotlinTypeInfo visitDoWhileExpression(@NotNull
                                             KtDoWhileExpression expression,
                                             ExpressionTypingContext data)
Overrides:
visitDoWhileExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitBreakExpression

public KotlinTypeInfo visitBreakExpression(@NotNull
                                           KtBreakExpression expression,
                                           ExpressionTypingContext data)
Overrides:
visitBreakExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitIsExpression

public KotlinTypeInfo visitIsExpression(@NotNull
                                        KtIsExpression expression,
                                        ExpressionTypingContext data)
Overrides:
visitIsExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitWhenExpression

public KotlinTypeInfo visitWhenExpression(@NotNull
                                          KtWhenExpression expression,
                                          ExpressionTypingContext data)
Overrides:
visitWhenExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitSimpleNameExpression

public KotlinTypeInfo visitSimpleNameExpression(@NotNull
                                                KtSimpleNameExpression expression,
                                                ExpressionTypingContext data)
Overrides:
visitSimpleNameExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitParenthesizedExpression

public KotlinTypeInfo visitParenthesizedExpression(@NotNull
                                                   KtParenthesizedExpression expression,
                                                   ExpressionTypingContext data)
Overrides:
visitParenthesizedExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitConstantExpression

public KotlinTypeInfo visitConstantExpression(@NotNull
                                              KtConstantExpression expression,
                                              ExpressionTypingContext data)
Overrides:
visitConstantExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitBinaryWithTypeRHSExpression

public KotlinTypeInfo visitBinaryWithTypeRHSExpression(@NotNull
                                                       KtBinaryExpressionWithTypeRHS expression,
                                                       ExpressionTypingContext data)
Overrides:
visitBinaryWithTypeRHSExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitThisExpression

public KotlinTypeInfo visitThisExpression(@NotNull
                                          KtThisExpression expression,
                                          ExpressionTypingContext data)
Overrides:
visitThisExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitSuperExpression

public KotlinTypeInfo visitSuperExpression(@NotNull
                                           KtSuperExpression expression,
                                           ExpressionTypingContext data)
Overrides:
visitSuperExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitBlockExpression

public KotlinTypeInfo visitBlockExpression(@NotNull
                                           KtBlockExpression expression,
                                           ExpressionTypingContext data)
Overrides:
visitBlockExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitClassLiteralExpression

public KotlinTypeInfo visitClassLiteralExpression(@NotNull
                                                  KtClassLiteralExpression expression,
                                                  ExpressionTypingContext data)
Overrides:
visitClassLiteralExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitCallableReferenceExpression

public KotlinTypeInfo visitCallableReferenceExpression(@NotNull
                                                       KtCallableReferenceExpression expression,
                                                       ExpressionTypingContext data)
Overrides:
visitCallableReferenceExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitObjectLiteralExpression

public KotlinTypeInfo visitObjectLiteralExpression(@NotNull
                                                   KtObjectLiteralExpression expression,
                                                   ExpressionTypingContext data)
Overrides:
visitObjectLiteralExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitQualifiedExpression

public KotlinTypeInfo visitQualifiedExpression(@NotNull
                                               KtQualifiedExpression expression,
                                               ExpressionTypingContext data)
Overrides:
visitQualifiedExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitCallExpression

public KotlinTypeInfo visitCallExpression(@NotNull
                                          KtCallExpression expression,
                                          ExpressionTypingContext data)
Overrides:
visitCallExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitUnaryExpression

public KotlinTypeInfo visitUnaryExpression(@NotNull
                                           KtUnaryExpression expression,
                                           ExpressionTypingContext data)
Overrides:
visitUnaryExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitLabeledExpression

public KotlinTypeInfo visitLabeledExpression(@NotNull
                                             KtLabeledExpression expression,
                                             ExpressionTypingContext data)
Overrides:
visitLabeledExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitBinaryExpression

public KotlinTypeInfo visitBinaryExpression(@NotNull
                                            KtBinaryExpression expression,
                                            ExpressionTypingContext data)
Overrides:
visitBinaryExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitArrayAccessExpression

public KotlinTypeInfo visitArrayAccessExpression(@NotNull
                                                 KtArrayAccessExpression expression,
                                                 ExpressionTypingContext data)
Overrides:
visitArrayAccessExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitDeclaration

public KotlinTypeInfo visitDeclaration(@NotNull
                                       KtDeclaration dcl,
                                       ExpressionTypingContext data)
Overrides:
visitDeclaration in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitClass

public KotlinTypeInfo visitClass(@NotNull
                                 KtClass klass,
                                 ExpressionTypingContext data)
Overrides:
visitClass in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitProperty

public KotlinTypeInfo visitProperty(@NotNull
                                    KtProperty property,
                                    ExpressionTypingContext data)
Overrides:
visitProperty in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitStringTemplateExpression

public KotlinTypeInfo visitStringTemplateExpression(@NotNull
                                                    KtStringTemplateExpression expression,
                                                    ExpressionTypingContext data)
Overrides:
visitStringTemplateExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitAnnotatedExpression

public KotlinTypeInfo visitAnnotatedExpression(@NotNull
                                               KtAnnotatedExpression expression,
                                               ExpressionTypingContext data)
Overrides:
visitAnnotatedExpression in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>

visitKtElement

public KotlinTypeInfo visitKtElement(@NotNull
                                     KtElement element,
                                     ExpressionTypingContext data)
Overrides:
visitKtElement in class KtVisitor<KotlinTypeInfo,ExpressionTypingContext>