summaryrefslogtreecommitdiff
path: root/sources/scalac/ast/TreeCopyFactory.java
blob: 69f82aa6cadf0d70fb85d88eb8d024a4932a2ab8 (plain) (blame)
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
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
/*     ____ ____  ____ ____  ______                                     *\
**    / __// __ \/ __// __ \/ ____/    SOcos COmpiles Scala             **
**  __\_ \/ /_/ / /__/ /_/ /\_ \       (c) 2002, LAMP/EPFL              **
** /_____/\____/\___/\____/____/                                        **
**                                                                      **
** $Id$
\*                                                                      */

package scalac.ast;

import scalac.util.Name;
import Tree.*;

/**
 * Interface for a kind of factory which, for each node constructor,
 * takes an original node from which some data will be copied or shared.
 *
 * @author Michel Schinz
 * @version 1.1
 */
public interface TreeCopyFactory {

    public void attribute(Tree newTree, Tree oldTree);

    public Tree Bad(Tree tree);

    public Tree ClassDef(Tree tree,
                         int mods,
                         Name name,
                         TypeDef[] tparams,
                         ValDef[][] vparams,
			 Tree tpe,
                         Template impl);

    public Tree PackageDef(Tree tree,
                           Tree packaged,
                           Template impl);

    public Tree ModuleDef(Tree tree,
                          int mods,
                          Name name,
                          Tree tpe,
                          Template impl);

    public Tree ValDef(Tree tree,
                       int mods,
                       Name name,
                       Tree tpe,
                       Tree rhs);

    public Tree PatDef(Tree tree,
                       int mods,
                       Tree pat,
                       Tree rhs);

    public Tree DefDef(Tree tree,
                       int mods,
                       Name name,
                       TypeDef[] tparams,
                       ValDef[][] vparams,
                       Tree tpe,
                       Tree rhs);

    public Tree TypeDef(Tree tree,
                        int mods,
                        Name name,
                        Tree rhs);

    public Tree Import(Tree tree,
                       Tree expr,
		       Name[] selectors);

    public Tree CaseDef(Tree tree,
                        Tree pat,
                        Tree guard,
                        Tree body);

    public Template Template(Tree tree,
                             Tree[] baseClasses,
                             Tree[] body);

    public Tree LabelDef(Tree tree,
			 Tree[] params,
			 Tree rhs);

    public Tree Block(Tree tree,
                      Tree[] stats);

    public Tree Tuple(Tree tree,
                      Tree[] trees);

    public Tree Visitor(Tree tree,
                        CaseDef[] cases);

    public Tree Function(Tree tree,
                         ValDef[] vparams,
                         Tree body);

    public Tree Assign(Tree tree,
                       Tree lhs,
                       Tree rhs);

    public Tree If(Tree tree,
                   Tree cond,
                   Tree thenp,
                   Tree elsep);

    public Tree New(Tree tree,
                    Template templ);

    public Tree Typed(Tree tree,
                      Tree expr,
                      Tree tpe);

    public Tree TypeApply(Tree tree,
                          Tree fun,
                          Tree[] args);

    public Tree Apply(Tree tree,
                      Tree fun,
                      Tree[] args);

    public Tree Super(Tree tree,
                      Tree tpe);

    public Tree This(Tree tree,
		     Tree qualifier);

    public Tree Select(Tree tree,
                       Tree qualifier,
                       Name selector);

    public Tree Ident(Tree tree,
                      Name name);

    public Tree Literal(Tree tree,
                        Object value);

    public Tree TypeTerm(Tree tree);

    public Tree SingletonType(Tree tree,
			      Tree ref);

    public Tree SelectFromType(Tree tree,
			       Tree qualifier,
			       Name selector);

    public Tree FunType(Tree tree,
                        Tree[] argtpes,
                        Tree restpe);

    public Tree CompoundType(Tree tree,
                             Tree[] baseTypes,
                             Tree[] refinements);

    public Tree AppliedType(Tree tree,
                            Tree tpe,
                            Tree[] args);

    public Tree CovariantType(Tree tree,
			      Tree tpe);

}