001 /* 002 * Copyright 2010-2013 JetBrains s.r.o. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017 package org.jetbrains.jet.lang.cfg; 018 019 import org.jetbrains.annotations.NotNull; 020 import org.jetbrains.annotations.Nullable; 021 import org.jetbrains.jet.lang.cfg.pseudocode.Pseudocode; 022 import org.jetbrains.jet.lang.psi.*; 023 024 import java.util.Collection; 025 import java.util.List; 026 027 public class JetControlFlowBuilderAdapter implements JetControlFlowBuilder { 028 protected @Nullable JetControlFlowBuilder builder; 029 030 @Override 031 public void read(@NotNull JetElement element) { 032 assert builder != null; 033 builder.read(element); 034 } 035 036 @Override 037 public void readUnit(@NotNull JetExpression expression) { 038 assert builder != null; 039 builder.readUnit(expression); 040 } 041 042 @Override 043 @NotNull 044 public Label createUnboundLabel() { 045 assert builder != null; 046 return builder.createUnboundLabel(); 047 } 048 049 @NotNull 050 @Override 051 public Label createUnboundLabel(@NotNull String name) { 052 assert builder != null; 053 return builder.createUnboundLabel(name); 054 } 055 056 @Override 057 public void bindLabel(@NotNull Label label) { 058 assert builder != null; 059 builder.bindLabel(label); 060 } 061 062 @Override 063 public void jump(@NotNull Label label) { 064 assert builder != null; 065 builder.jump(label); 066 } 067 068 @Override 069 public void jumpOnFalse(@NotNull Label label) { 070 assert builder != null; 071 builder.jumpOnFalse(label); 072 } 073 074 @Override 075 public void jumpOnTrue(@NotNull Label label) { 076 assert builder != null; 077 builder.jumpOnTrue(label); 078 } 079 080 @Override 081 public void nondeterministicJump(Label label) { 082 assert builder != null; 083 builder.nondeterministicJump(label); 084 } 085 086 @Override 087 public void nondeterministicJump(List<Label> labels) { 088 assert builder != null; 089 builder.nondeterministicJump(labels); 090 } 091 092 @Override 093 public void jumpToError() { 094 assert builder != null; 095 builder.jumpToError(); 096 } 097 098 @Override 099 public void throwException(@NotNull JetThrowExpression throwExpression) { 100 assert builder != null; 101 builder.throwException(throwExpression); 102 } 103 104 public Label getEntryPoint(@NotNull JetElement labelElement) { 105 assert builder != null; 106 return builder.getEntryPoint(labelElement); 107 } 108 109 @Override 110 public Label getExitPoint(@NotNull JetElement labelElement) { 111 assert builder != null; 112 return builder.getExitPoint(labelElement); 113 } 114 115 @Override 116 public LoopInfo enterLoop(@NotNull JetExpression expression, @Nullable Label loopExitPoint, Label conditionEntryPoint) { 117 assert builder != null; 118 return builder.enterLoop(expression, loopExitPoint, conditionEntryPoint); 119 } 120 121 @Override 122 public void exitLoop(@NotNull JetExpression expression) { 123 assert builder != null; 124 builder.exitLoop(expression); 125 } 126 127 @Override 128 @Nullable 129 public JetElement getCurrentLoop() { 130 assert builder != null; 131 return builder.getCurrentLoop(); 132 } 133 134 @Override 135 public void enterTryFinally(@NotNull GenerationTrigger trigger) { 136 assert builder != null; 137 builder.enterTryFinally(trigger); 138 } 139 140 @Override 141 public void exitTryFinally() { 142 assert builder != null; 143 builder.exitTryFinally(); 144 } 145 146 @Override 147 public void enterSubroutine(@NotNull JetElement subroutine) { 148 assert builder != null; 149 builder.enterSubroutine(subroutine); 150 } 151 152 @Override 153 public Pseudocode exitSubroutine(@NotNull JetElement subroutine) { 154 assert builder != null; 155 return builder.exitSubroutine(subroutine); 156 } 157 158 @NotNull 159 @Override 160 public JetElement getCurrentSubroutine() { 161 assert builder != null; 162 return builder.getCurrentSubroutine(); 163 } 164 165 @Override 166 @Nullable 167 public JetElement getReturnSubroutine() { 168 assert builder != null; 169 return builder.getReturnSubroutine(); 170 } 171 172 @Override 173 public void returnValue(@NotNull JetExpression returnExpression, @NotNull JetElement subroutine) { 174 assert builder != null; 175 builder.returnValue(returnExpression, subroutine); 176 } 177 178 @Override 179 public void returnNoValue(@NotNull JetElement returnExpression, @NotNull JetElement subroutine) { 180 assert builder != null; 181 builder.returnNoValue(returnExpression, subroutine); 182 } 183 184 @Override 185 public void unsupported(JetElement element) { 186 assert builder != null; 187 builder.unsupported(element); 188 } 189 190 @Override 191 public void write(@NotNull JetElement assignment, @NotNull JetElement lValue) { 192 assert builder != null; 193 builder.write(assignment, lValue); 194 } 195 196 @Override 197 public void declare(@NotNull JetParameter parameter) { 198 assert builder != null; 199 builder.declare(parameter); 200 } 201 202 @Override 203 public void declare(@NotNull JetVariableDeclaration property) { 204 assert builder != null; 205 builder.declare(property); 206 } 207 208 @Override 209 public void repeatPseudocode(@NotNull Label startLabel, @NotNull Label finishLabel) { 210 assert builder != null; 211 builder.repeatPseudocode(startLabel, finishLabel); 212 } 213 }