org.jetbrains.jet.lang.cfg
Interface JetControlFlowBuilder

All Known Implementing Classes:
JetControlFlowBuilderAdapter, JetControlFlowInstructionsGenerator

public interface JetControlFlowBuilder


Nested Class Summary
static class JetControlFlowBuilder.PredefinedOperation
           
 
Method Summary
 void bindLabel(Label label)
           
 void call(JetExpression expression, ResolvedCall<?> resolvedCall)
           
 void compilationError(JetElement element, java.lang.String message)
           
 void createAnonymousObject(JetObjectLiteralExpression expression)
           
 void createFunctionLiteral(JetFunctionLiteralExpression expression)
           
 Label createUnboundLabel()
           
 Label createUnboundLabel(java.lang.String name)
           
 void declareFunction(JetElement subroutine, Pseudocode pseudocode)
           
 void declareParameter(JetParameter parameter)
           
 void declareVariable(JetVariableDeclaration property)
           
 void enterLexicalScope(JetElement element)
           
 LoopInfo enterLoop(JetExpression expression, Label loopExitPoint, Label conditionEntryPoint)
           
 void enterSubroutine(JetElement subroutine)
           
 void enterTryFinally(GenerationTrigger trigger)
           
 void exitLexicalScope(JetElement element)
           
 void exitLoop(JetExpression expression)
           
 Pseudocode exitSubroutine(JetElement subroutine)
           
 void exitTryFinally()
           
 JetElement getCurrentLoop()
           
 JetElement getCurrentSubroutine()
           
 Label getEntryPoint(JetElement labelElement)
           
 Label getExitPoint(JetElement labelElement)
           
 JetElement getReturnSubroutine()
           
 void jump(Label label, JetElement element)
           
 void jumpOnFalse(Label label, JetElement element)
           
 void jumpOnTrue(Label label, JetElement element)
           
 void jumpToError(JetElement element)
           
 void loadConstant(JetExpression expression, CompileTimeConstant<?> constant)
           
 void loadStringTemplate(JetStringTemplateExpression expression)
           
 void loadUnit(JetExpression expression)
           
 void mark(JetElement element)
           
 void nondeterministicJump(Label label, JetElement element)
           
 void nondeterministicJump(java.util.List<Label> label, JetElement element)
           
 void predefinedOperation(JetExpression expression, JetControlFlowBuilder.PredefinedOperation operation)
           
 void readThis(JetExpression expression, ReceiverParameterDescriptor parameterDescriptor)
           
 void readVariable(JetExpression expression, VariableDescriptor variableDescriptor)
           
 void repeatPseudocode(Label startLabel, Label finishLabel)
           
 void returnNoValue(JetElement returnExpression, JetElement subroutine)
           
 void returnValue(JetExpression returnExpression, JetElement subroutine)
           
 void throwException(JetThrowExpression throwExpression)
           
 void unsupported(JetElement element)
           
 void write(JetElement assignment, JetElement lValue)
           
 

Method Detail

enterSubroutine

void enterSubroutine(@NotNull
                     JetElement subroutine)

exitSubroutine

@NotNull
Pseudocode exitSubroutine(@NotNull
                                  JetElement subroutine)

getCurrentSubroutine

@NotNull
JetElement getCurrentSubroutine()

getReturnSubroutine

@Nullable
JetElement getReturnSubroutine()

enterLexicalScope

void enterLexicalScope(@NotNull
                       JetElement element)

exitLexicalScope

void exitLexicalScope(@NotNull
                      JetElement element)

getEntryPoint

@NotNull
Label getEntryPoint(@NotNull
                            JetElement labelElement)

getExitPoint

@NotNull
Label getExitPoint(@NotNull
                           JetElement labelElement)

declareParameter

void declareParameter(@NotNull
                      JetParameter parameter)

declareVariable

void declareVariable(@NotNull
                     JetVariableDeclaration property)

declareFunction

void declareFunction(@NotNull
                     JetElement subroutine,
                     @NotNull
                     Pseudocode pseudocode)

createUnboundLabel

@NotNull
Label createUnboundLabel()

createUnboundLabel

@NotNull
Label createUnboundLabel(@NotNull
                                 java.lang.String name)

bindLabel

void bindLabel(@NotNull
               Label label)

jump

void jump(@NotNull
          Label label,
          @NotNull
          JetElement element)

jumpOnFalse

void jumpOnFalse(@NotNull
                 Label label,
                 @NotNull
                 JetElement element)

jumpOnTrue

void jumpOnTrue(@NotNull
                Label label,
                @NotNull
                JetElement element)

nondeterministicJump

void nondeterministicJump(@NotNull
                          Label label,
                          @NotNull
                          JetElement element)

nondeterministicJump

void nondeterministicJump(@NotNull
                          java.util.List<Label> label,
                          @NotNull
                          JetElement element)

jumpToError

void jumpToError(@NotNull
                 JetElement element)

returnValue

void returnValue(@NotNull
                 JetExpression returnExpression,
                 @NotNull
                 JetElement subroutine)

returnNoValue

void returnNoValue(@NotNull
                   JetElement returnExpression,
                   @NotNull
                   JetElement subroutine)

throwException

void throwException(@NotNull
                    JetThrowExpression throwExpression)

enterLoop

LoopInfo enterLoop(@NotNull
                   JetExpression expression,
                   @Nullable
                   Label loopExitPoint,
                   @Nullable
                   Label conditionEntryPoint)

exitLoop

void exitLoop(@NotNull
              JetExpression expression)

getCurrentLoop

@Nullable
JetElement getCurrentLoop()

enterTryFinally

void enterTryFinally(@NotNull
                     GenerationTrigger trigger)

exitTryFinally

void exitTryFinally()

repeatPseudocode

void repeatPseudocode(@NotNull
                      Label startLabel,
                      @NotNull
                      Label finishLabel)

mark

void mark(@NotNull
          JetElement element)

loadUnit

void loadUnit(@NotNull
              JetExpression expression)

loadConstant

void loadConstant(@NotNull
                  JetExpression expression,
                  @Nullable
                  CompileTimeConstant<?> constant)

createAnonymousObject

void createAnonymousObject(@NotNull
                           JetObjectLiteralExpression expression)

createFunctionLiteral

void createFunctionLiteral(@NotNull
                           JetFunctionLiteralExpression expression)

loadStringTemplate

void loadStringTemplate(@NotNull
                        JetStringTemplateExpression expression)

readThis

void readThis(@NotNull
              JetExpression expression,
              @Nullable
              ReceiverParameterDescriptor parameterDescriptor)

readVariable

void readVariable(@NotNull
                  JetExpression expression,
                  @Nullable
                  VariableDescriptor variableDescriptor)

call

void call(@NotNull
          JetExpression expression,
          @NotNull
          ResolvedCall<?> resolvedCall)

predefinedOperation

void predefinedOperation(@NotNull
                         JetExpression expression,
                         @Nullable
                         JetControlFlowBuilder.PredefinedOperation operation)

compilationError

void compilationError(@NotNull
                      JetElement element,
                      @NotNull
                      java.lang.String message)

write

void write(@NotNull
           JetElement assignment,
           @NotNull
           JetElement lValue)

unsupported

void unsupported(JetElement element)