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