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.psi;
018
019 import com.intellij.psi.PsiElementVisitor;
020
021 public class JetVisitor<R, D> extends PsiElementVisitor {
022 public R visitJetElement(JetElement element, D data) {
023 visitElement(element);
024 return null;
025 }
026
027 public R visitDeclaration(JetDeclaration dcl, D data) {
028 return visitExpression(dcl, data);
029 }
030
031 public R visitClass(JetClass klass, D data) {
032 return visitNamedDeclaration(klass, data);
033 }
034
035 public R visitClassObject(JetClassObject classObject, D data) {
036 return visitDeclaration(classObject, data);
037 }
038
039 public R visitNamedFunction(JetNamedFunction function, D data) {
040 return visitNamedDeclaration(function, data);
041 }
042
043 public R visitProperty(JetProperty property, D data) {
044 return visitNamedDeclaration(property, data);
045 }
046
047 public R visitMultiDeclaration(JetMultiDeclaration multiDeclaration, D data) {
048 return visitDeclaration(multiDeclaration, data);
049 }
050
051 public R visitMultiDeclarationEntry(JetMultiDeclarationEntry multiDeclarationEntry, D data) {
052 return visitNamedDeclaration(multiDeclarationEntry, data);
053 }
054
055 public R visitTypedef(JetTypedef typedef, D data) {
056 return visitNamedDeclaration(typedef, data);
057 }
058
059 public R visitJetFile(JetFile file, D data) {
060 visitFile(file);
061 return null;
062 }
063
064 public R visitScript(JetScript script, D data) {
065 return visitDeclaration(script, data);
066 }
067
068 public R visitImportDirective(JetImportDirective importDirective, D data) {
069 return visitJetElement(importDirective, data);
070 }
071
072 public R visitClassBody(JetClassBody classBody, D data) {
073 return visitJetElement(classBody, data);
074 }
075
076 public R visitModifierList(JetModifierList list, D data) {
077 return visitJetElement(list, data);
078 }
079
080 public R visitAnnotation(JetAnnotation annotation, D data) {
081 return visitJetElement(annotation, data);
082 }
083
084 public R visitAnnotationEntry(JetAnnotationEntry annotationEntry, D data) {
085 return visitJetElement(annotationEntry, data);
086 }
087
088 public R visitTypeParameterList(JetTypeParameterList list, D data) {
089 return visitJetElement(list, data);
090 }
091
092 public R visitTypeParameter(JetTypeParameter parameter, D data) {
093 return visitNamedDeclaration(parameter, data);
094 }
095
096 public R visitEnumEntry(JetEnumEntry enumEntry, D data) {
097 return visitClass(enumEntry, data);
098 }
099
100 public R visitParameterList(JetParameterList list, D data) {
101 return visitJetElement(list, data);
102 }
103
104 public R visitParameter(JetParameter parameter, D data) {
105 return visitNamedDeclaration(parameter, data);
106 }
107
108 public R visitDelegationSpecifierList(JetDelegationSpecifierList list, D data) {
109 return visitJetElement(list, data);
110 }
111
112 public R visitDelegationSpecifier(JetDelegationSpecifier specifier, D data) {
113 return visitJetElement(specifier, data);
114 }
115
116 public R visitDelegationByExpressionSpecifier(JetDelegatorByExpressionSpecifier specifier, D data) {
117 return visitDelegationSpecifier(specifier, data);
118 }
119
120 public R visitDelegationToSuperCallSpecifier(JetDelegatorToSuperCall call, D data) {
121 return visitDelegationSpecifier(call, data);
122 }
123
124 public R visitDelegationToSuperClassSpecifier(JetDelegatorToSuperClass specifier, D data) {
125 return visitDelegationSpecifier(specifier, data);
126 }
127
128 public R visitDelegationToThisCall(JetDelegatorToThisCall thisCall, D data) {
129 return visitDelegationSpecifier(thisCall, data);
130 }
131
132 public R visitPropertyDelegate(JetPropertyDelegate delegate, D data) {
133 return visitJetElement(delegate, data);
134 }
135
136 public R visitTypeReference(JetTypeReference typeReference, D data) {
137 return visitJetElement(typeReference, data);
138 }
139
140 public R visitValueArgumentList(JetValueArgumentList list, D data) {
141 return visitJetElement(list, data);
142 }
143
144 public R visitArgument(JetValueArgument argument, D data) {
145 return visitJetElement(argument, data);
146 }
147
148 public R visitExpression(JetExpression expression, D data) {
149 return visitJetElement(expression, data);
150 }
151
152 public R visitLoopExpression(JetLoopExpression loopExpression, D data) {
153 return visitExpression(loopExpression, data);
154 }
155
156 public R visitConstantExpression(JetConstantExpression expression, D data) {
157 return visitExpression(expression, data);
158 }
159
160 public R visitSimpleNameExpression(JetSimpleNameExpression expression, D data) {
161 return visitReferenceExpression(expression, data);
162 }
163
164 public R visitReferenceExpression(JetReferenceExpression expression, D data) {
165 return visitExpression(expression, data);
166 }
167
168 public R visitPrefixExpression(JetPrefixExpression expression, D data) {
169 return visitUnaryExpression(expression, data);
170 }
171
172 public R visitPostfixExpression(JetPostfixExpression expression, D data) {
173 return visitUnaryExpression(expression, data);
174 }
175
176 public R visitUnaryExpression(JetUnaryExpression expression, D data) {
177 return visitExpression(expression, data);
178 }
179
180 public R visitBinaryExpression(JetBinaryExpression expression, D data) {
181 return visitExpression(expression, data);
182 }
183
184 // public R visitNewExpression(JetNewExpression expression, D data) {
185 // return visitExpression(expression, data);
186 // }
187 //
188 public R visitReturnExpression(JetReturnExpression expression, D data) {
189 return visitLabelQualifiedExpression(expression, data);
190 }
191
192 public R visitLabelQualifiedExpression(JetLabelQualifiedExpression expression, D data) {
193 return visitExpression(expression, data);
194 }
195
196 public R visitThrowExpression(JetThrowExpression expression, D data) {
197 return visitExpression(expression, data);
198 }
199
200 public R visitBreakExpression(JetBreakExpression expression, D data) {
201 return visitLabelQualifiedExpression(expression, data);
202 }
203
204 public R visitContinueExpression(JetContinueExpression expression, D data) {
205 return visitLabelQualifiedExpression(expression, data);
206 }
207
208 public R visitIfExpression(JetIfExpression expression, D data) {
209 return visitExpression(expression, data);
210 }
211
212 public R visitWhenExpression(JetWhenExpression expression, D data) {
213 return visitExpression(expression, data);
214 }
215
216 public R visitTryExpression(JetTryExpression expression, D data) {
217 return visitExpression(expression, data);
218 }
219
220 public R visitForExpression(JetForExpression expression, D data) {
221 return visitLoopExpression(expression, data);
222 }
223
224 public R visitWhileExpression(JetWhileExpression expression, D data) {
225 return visitLoopExpression(expression, data);
226 }
227
228 public R visitDoWhileExpression(JetDoWhileExpression expression, D data) {
229 return visitLoopExpression(expression, data);
230 }
231
232 public R visitFunctionLiteralExpression(JetFunctionLiteralExpression expression, D data) {
233 return visitExpression(expression, data);
234 }
235
236 public R visitAnnotatedExpression(JetAnnotatedExpression expression, D data) {
237 return visitExpression(expression, data);
238 }
239
240 public R visitCallExpression(JetCallExpression expression, D data) {
241 return visitExpression(expression, data);
242 }
243
244 public R visitArrayAccessExpression(JetArrayAccessExpression expression, D data) {
245 return visitReferenceExpression(expression, data);
246 }
247
248 public R visitQualifiedExpression(JetQualifiedExpression expression, D data) {
249 return visitExpression(expression, data);
250 }
251
252 public R visitCallableReferenceExpression(JetCallableReferenceExpression expression, D data) {
253 return visitExpression(expression, data);
254 }
255
256 public R visitDotQualifiedExpression(JetDotQualifiedExpression expression, D data) {
257 return visitQualifiedExpression(expression, data);
258 }
259
260 public R visitSafeQualifiedExpression(JetSafeQualifiedExpression expression, D data) {
261 return visitQualifiedExpression(expression, data);
262 }
263
264 public R visitObjectLiteralExpression(JetObjectLiteralExpression expression, D data) {
265 return visitExpression(expression, data);
266 }
267
268 public R visitRootNamespaceExpression(JetRootNamespaceExpression expression, D data) {
269 return visitExpression(expression, data);
270 }
271
272 public R visitBlockExpression(JetBlockExpression expression, D data) {
273 return visitExpression(expression, data);
274 }
275
276 public R visitIdeTemplate(JetIdeTemplate expression, D data) {
277 return null;
278 }
279
280 public R visitCatchSection(JetCatchClause catchClause, D data) {
281 return visitJetElement(catchClause, data);
282 }
283
284 public R visitFinallySection(JetFinallySection finallySection, D data) {
285 return visitJetElement(finallySection, data);
286 }
287
288 public R visitTypeArgumentList(JetTypeArgumentList typeArgumentList, D data) {
289 return visitJetElement(typeArgumentList, data);
290 }
291
292 public R visitThisExpression(JetThisExpression expression, D data) {
293 return visitLabelQualifiedExpression(expression, data);
294 }
295
296 public R visitSuperExpression(JetSuperExpression expression, D data) {
297 return visitLabelQualifiedExpression(expression, data);
298 }
299
300 public R visitParenthesizedExpression(JetParenthesizedExpression expression, D data) {
301 return visitExpression(expression, data);
302 }
303
304 public R visitInitializerList(JetInitializerList list, D data) {
305 return visitJetElement(list, data);
306 }
307
308 public R visitAnonymousInitializer(JetClassInitializer initializer, D data) {
309 return visitDeclaration(initializer, data);
310 }
311
312 public R visitPropertyAccessor(JetPropertyAccessor accessor, D data) {
313 return visitDeclaration(accessor, data);
314 }
315
316 public R visitTypeConstraintList(JetTypeConstraintList list, D data) {
317 return visitJetElement(list, data);
318 }
319
320 public R visitTypeConstraint(JetTypeConstraint constraint, D data) {
321 return visitJetElement(constraint, data);
322 }
323
324 private R visitTypeElement(JetTypeElement type, D data) {
325 return visitJetElement(type, data);
326 }
327
328 public R visitUserType(JetUserType type, D data) {
329 return visitTypeElement(type, data);
330 }
331
332 public R visitFunctionType(JetFunctionType type, D data) {
333 return visitTypeElement(type, data);
334 }
335
336 public R visitSelfType(JetSelfType type, D data) {
337 return visitTypeElement(type, data);
338 }
339
340 public R visitBinaryWithTypeRHSExpression(JetBinaryExpressionWithTypeRHS expression, D data) {
341 return visitExpression(expression, data);
342 }
343
344 public R visitStringTemplateExpression(JetStringTemplateExpression expression, D data) {
345 return visitExpression(expression, data);
346 }
347
348 public R visitNamedDeclaration(JetNamedDeclaration declaration, D data) {
349 return visitDeclaration(declaration, data);
350 }
351
352 public R visitNullableType(JetNullableType nullableType, D data) {
353 return visitTypeElement(nullableType, data);
354 }
355
356 public R visitTypeProjection(JetTypeProjection typeProjection, D data) {
357 return visitJetElement(typeProjection, data);
358 }
359
360 public R visitWhenEntry(JetWhenEntry jetWhenEntry, D data) {
361 return visitJetElement(jetWhenEntry, data);
362 }
363
364 public R visitIsExpression(JetIsExpression expression, D data) {
365 return visitExpression(expression, data);
366 }
367
368 public R visitWhenConditionIsPattern(JetWhenConditionIsPattern condition, D data) {
369 return visitJetElement(condition, data);
370 }
371
372 public R visitWhenConditionInRange(JetWhenConditionInRange condition, D data) {
373 return visitJetElement(condition, data);
374 }
375
376 public R visitWhenConditionExpression(JetWhenConditionWithExpression condition, D data) {
377 return visitJetElement(condition, data);
378 }
379
380 public R visitObjectDeclaration(JetObjectDeclaration declaration, D data) {
381 return visitNamedDeclaration(declaration, data);
382 }
383
384 public R visitObjectDeclarationName(JetObjectDeclarationName declarationName, D data) {
385 return visitNamedDeclaration(declarationName, data);
386 }
387
388 public R visitStringTemplateEntry(JetStringTemplateEntry entry, D data) {
389 return visitJetElement(entry, data);
390 }
391
392 public R visitStringTemplateEntryWithExpression(JetStringTemplateEntryWithExpression entry, D data) {
393 return visitStringTemplateEntry(entry, data);
394 }
395
396 public R visitBlockStringTemplateEntry(JetBlockStringTemplateEntry entry, D data) {
397 return visitStringTemplateEntryWithExpression(entry, data);
398 }
399
400 public R visitSimpleNameStringTemplateEntry(JetSimpleNameStringTemplateEntry entry, D data) {
401 return visitStringTemplateEntryWithExpression(entry, data);
402 }
403
404 public R visitLiteralStringTemplateEntry(JetLiteralStringTemplateEntry entry, D data) {
405 return visitStringTemplateEntry(entry, data);
406 }
407
408 public R visitEscapeStringTemplateEntry(JetEscapeStringTemplateEntry entry, D data) {
409 return visitStringTemplateEntry(entry, data);
410 }
411 }