-
Notifications
You must be signed in to change notification settings - Fork 5.9k
/
Copy pathIrElementVisitor.kt
122 lines (101 loc) · 8.53 KB
/
IrElementVisitor.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
/*
* Copyright 2010-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.ir.visitors
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.*
interface IrElementVisitor<out R, in D> {
fun visitElement(element: IrElement, data: D): R
fun visitModuleFragment(declaration: IrModuleFragment, data: D) = visitElement(declaration, data)
fun visitPackageFragment(declaration: IrPackageFragment, data: D) = visitElement(declaration, data)
fun visitFile(declaration: IrFile, data: D) = visitPackageFragment(declaration, data)
fun visitExternalPackageFragment(declaration: IrExternalPackageFragment, data: D) = visitPackageFragment(declaration, data)
fun visitScript(declaration: IrScript, data: D) = visitDeclaration(declaration, data)
fun visitDeclaration(declaration: IrDeclarationBase, data: D) = visitElement(declaration, data)
fun visitClass(declaration: IrClass, data: D) = visitDeclaration(declaration, data)
fun visitFunction(declaration: IrFunction, data: D) = visitDeclaration(declaration, data)
fun visitSimpleFunction(declaration: IrSimpleFunction, data: D) = visitFunction(declaration, data)
fun visitConstructor(declaration: IrConstructor, data: D) = visitFunction(declaration, data)
fun visitProperty(declaration: IrProperty, data: D) = visitDeclaration(declaration, data)
fun visitField(declaration: IrField, data: D) = visitDeclaration(declaration, data)
fun visitLocalDelegatedProperty(declaration: IrLocalDelegatedProperty, data: D) = visitDeclaration(declaration, data)
fun visitVariable(declaration: IrVariable, data: D) = visitDeclaration(declaration, data)
fun visitEnumEntry(declaration: IrEnumEntry, data: D) = visitDeclaration(declaration, data)
fun visitAnonymousInitializer(declaration: IrAnonymousInitializer, data: D) = visitDeclaration(declaration, data)
fun visitTypeParameter(declaration: IrTypeParameter, data: D) = visitDeclaration(declaration, data)
fun visitValueParameter(declaration: IrValueParameter, data: D) = visitDeclaration(declaration, data)
fun visitTypeAlias(declaration: IrTypeAlias, data: D) = visitDeclaration(declaration, data)
fun visitBody(body: IrBody, data: D) = visitElement(body, data)
fun visitExpressionBody(body: IrExpressionBody, data: D) = visitBody(body, data)
fun visitBlockBody(body: IrBlockBody, data: D) = visitBody(body, data)
fun visitSyntheticBody(body: IrSyntheticBody, data: D) = visitBody(body, data)
fun visitSuspendableExpression(expression: IrSuspendableExpression, data: D) = visitExpression(expression, data)
fun visitSuspensionPoint(expression: IrSuspensionPoint, data: D) = visitExpression(expression, data)
fun visitExpression(expression: IrExpression, data: D) = visitElement(expression, data)
fun <T> visitConst(expression: IrConst<T>, data: D) = visitExpression(expression, data)
fun visitVararg(expression: IrVararg, data: D) = visitExpression(expression, data)
fun visitSpreadElement(spread: IrSpreadElement, data: D) = visitElement(spread, data)
fun visitContainerExpression(expression: IrContainerExpression, data: D) = visitExpression(expression, data)
fun visitBlock(expression: IrBlock, data: D) = visitContainerExpression(expression, data)
fun visitComposite(expression: IrComposite, data: D) = visitContainerExpression(expression, data)
fun visitStringConcatenation(expression: IrStringConcatenation, data: D) = visitExpression(expression, data)
fun visitDeclarationReference(expression: IrDeclarationReference, data: D) = visitExpression(expression, data)
fun visitSingletonReference(expression: IrGetSingletonValue, data: D) = visitDeclarationReference(expression, data)
fun visitGetObjectValue(expression: IrGetObjectValue, data: D) = visitSingletonReference(expression, data)
fun visitGetEnumValue(expression: IrGetEnumValue, data: D) = visitSingletonReference(expression, data)
fun visitValueAccess(expression: IrValueAccessExpression, data: D) = visitDeclarationReference(expression, data)
fun visitGetValue(expression: IrGetValue, data: D) = visitValueAccess(expression, data)
fun visitSetValue(expression: IrSetValue, data: D) = visitValueAccess(expression, data)
fun visitFieldAccess(expression: IrFieldAccessExpression, data: D) = visitDeclarationReference(expression, data)
fun visitGetField(expression: IrGetField, data: D) = visitFieldAccess(expression, data)
fun visitSetField(expression: IrSetField, data: D) = visitFieldAccess(expression, data)
fun visitMemberAccess(expression: IrMemberAccessExpression<*>, data: D) = visitExpression(expression, data)
fun visitFunctionAccess(expression: IrFunctionAccessExpression, data: D) = visitMemberAccess(expression, data)
fun visitCall(expression: IrCall, data: D) = visitFunctionAccess(expression, data)
fun visitConstructorCall(expression: IrConstructorCall, data: D) = visitFunctionAccess(expression, data)
fun visitDelegatingConstructorCall(expression: IrDelegatingConstructorCall, data: D) = visitFunctionAccess(expression, data)
fun visitEnumConstructorCall(expression: IrEnumConstructorCall, data: D) = visitFunctionAccess(expression, data)
fun visitGetClass(expression: IrGetClass, data: D) = visitExpression(expression, data)
fun visitCallableReference(expression: IrCallableReference<*>, data: D) = visitMemberAccess(expression, data)
fun visitFunctionReference(expression: IrFunctionReference, data: D) = visitCallableReference(expression, data)
fun visitPropertyReference(expression: IrPropertyReference, data: D) = visitCallableReference(expression, data)
fun visitLocalDelegatedPropertyReference(expression: IrLocalDelegatedPropertyReference, data: D) =
visitCallableReference(expression, data)
fun visitRawFunctionReference(expression: IrRawFunctionReference, data: D) = visitDeclarationReference(expression, data)
fun visitFunctionExpression(expression: IrFunctionExpression, data: D) = visitExpression(expression, data)
fun visitClassReference(expression: IrClassReference, data: D) = visitDeclarationReference(expression, data)
fun visitInstanceInitializerCall(expression: IrInstanceInitializerCall, data: D) = visitExpression(expression, data)
fun visitTypeOperator(expression: IrTypeOperatorCall, data: D) = visitExpression(expression, data)
fun visitWhen(expression: IrWhen, data: D) = visitExpression(expression, data)
fun visitBranch(branch: IrBranch, data: D) = visitElement(branch, data)
fun visitElseBranch(branch: IrElseBranch, data: D) = visitBranch(branch, data)
fun visitLoop(loop: IrLoop, data: D) = visitExpression(loop, data)
fun visitWhileLoop(loop: IrWhileLoop, data: D) = visitLoop(loop, data)
fun visitDoWhileLoop(loop: IrDoWhileLoop, data: D) = visitLoop(loop, data)
fun visitTry(aTry: IrTry, data: D) = visitExpression(aTry, data)
fun visitCatch(aCatch: IrCatch, data: D) = visitElement(aCatch, data)
fun visitBreakContinue(jump: IrBreakContinue, data: D) = visitExpression(jump, data)
fun visitBreak(jump: IrBreak, data: D) = visitBreakContinue(jump, data)
fun visitContinue(jump: IrContinue, data: D) = visitBreakContinue(jump, data)
fun visitReturn(expression: IrReturn, data: D) = visitExpression(expression, data)
fun visitThrow(expression: IrThrow, data: D) = visitExpression(expression, data)
fun visitDynamicExpression(expression: IrDynamicExpression, data: D) = visitExpression(expression, data)
fun visitDynamicOperatorExpression(expression: IrDynamicOperatorExpression, data: D) = visitDynamicExpression(expression, data)
fun visitDynamicMemberExpression(expression: IrDynamicMemberExpression, data: D) = visitDynamicExpression(expression, data)
fun visitErrorDeclaration(declaration: IrErrorDeclaration, data: D) = visitDeclaration(declaration, data)
fun visitErrorExpression(expression: IrErrorExpression, data: D) = visitExpression(expression, data)
fun visitErrorCallExpression(expression: IrErrorCallExpression, data: D) = visitErrorExpression(expression, data)
}