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    }