@@ -57,8 +57,7 @@ class SyntaxCollection : public Syntax {
57
57
friend class Syntax ;
58
58
59
59
private:
60
- static RC<SyntaxData>
61
- makeData (std::initializer_list<Element> &Elements) {
60
+ static SyntaxData makeData (std::initializer_list<Element> &Elements) {
62
61
std::vector<RC<RawSyntax>> List;
63
62
List.reserve (Elements.size ());
64
63
for (auto &Elt : Elements)
@@ -67,12 +66,9 @@ class SyntaxCollection : public Syntax {
67
66
SourcePresence::Present);
68
67
return SyntaxData::make (AbsoluteRawSyntax::forRoot (Raw));
69
68
}
70
- SyntaxCollection (const RC<SyntaxData> Root): Syntax(Root, Root.get()) {}
71
69
72
70
public:
73
-
74
- SyntaxCollection (const RC<SyntaxData> Root, const SyntaxData *Data)
75
- : Syntax(Root, Data) {}
71
+ SyntaxCollection (const SyntaxData Data) : Syntax(Data) {}
76
72
77
73
SyntaxCollection (std::initializer_list<Element> list):
78
74
SyntaxCollection (SyntaxCollection::makeData(list)) {}
@@ -108,7 +104,7 @@ class SyntaxCollection : public Syntax {
108
104
Element operator [](const size_t Index) const {
109
105
assert (Index < size ());
110
106
assert (!empty ());
111
- return { Root, Data-> getChild (Index). get () } ;
107
+ return Element (* Data. getChild (Index)) ;
112
108
}
113
109
114
110
// / Return a new collection with the given element added to the end.
@@ -120,7 +116,7 @@ class SyntaxCollection : public Syntax {
120
116
std::copy (OldLayout.begin (), OldLayout.end (), back_inserter (NewLayout));
121
117
NewLayout.push_back (E.getRaw ());
122
118
auto Raw = RawSyntax::make (CollectionKind, NewLayout, getRaw ()->getPresence ());
123
- return Data-> replacingSelf < SyntaxCollection<CollectionKind, Element>>( Raw);
119
+ return SyntaxCollection<CollectionKind, Element>(Data. replacingSelf ( Raw) );
124
120
}
125
121
126
122
// / Return a new collection with an element removed from the end.
@@ -130,7 +126,7 @@ class SyntaxCollection : public Syntax {
130
126
assert (!empty ());
131
127
auto NewLayout = getRaw ()->getLayout ().drop_back ();
132
128
auto Raw = RawSyntax::make (CollectionKind, NewLayout, getRaw ()->getPresence ());
133
- return Data-> replacingSelf < SyntaxCollection<CollectionKind, Element>>( Raw);
129
+ return SyntaxCollection<CollectionKind, Element>(Data. replacingSelf ( Raw) );
134
130
}
135
131
136
132
// / Return a new collection with the given element appended to the front.
@@ -141,7 +137,7 @@ class SyntaxCollection : public Syntax {
141
137
std::copy (OldLayout.begin (), OldLayout.end (),
142
138
std::back_inserter (NewLayout));
143
139
auto Raw = RawSyntax::make (CollectionKind, NewLayout, getRaw ()->getPresence ());
144
- return Data-> replacingSelf < SyntaxCollection<CollectionKind, Element>>( Raw);
140
+ return SyntaxCollection<CollectionKind, Element>(Data. replacingSelf ( Raw) );
145
141
}
146
142
147
143
// / Return a new collection with an element removed from the end.
@@ -151,7 +147,7 @@ class SyntaxCollection : public Syntax {
151
147
assert (!empty ());
152
148
auto NewLayout = getRaw ()->getLayout ().drop_front ();
153
149
auto Raw = RawSyntax::make (CollectionKind, NewLayout, getRaw ()->getPresence ());
154
- return Data-> replacingSelf < SyntaxCollection<CollectionKind, Element>>( Raw);
150
+ return SyntaxCollection<CollectionKind, Element>(Data. replacingSelf ( Raw) );
155
151
}
156
152
157
153
// / Return a new collection with the Element inserted at index i.
@@ -170,7 +166,7 @@ class SyntaxCollection : public Syntax {
170
166
std::copy (OldLayout.begin () + i, OldLayout.end (),
171
167
std::back_inserter (NewLayout));
172
168
auto Raw = RawSyntax::make (CollectionKind, NewLayout, getRaw ()->getPresence ());
173
- return Data-> replacingSelf < SyntaxCollection<CollectionKind, Element>>( Raw);
169
+ return SyntaxCollection<CollectionKind, Element>(Data. replacingSelf ( Raw) );
174
170
}
175
171
176
172
// / Return a new collection with the element removed at index i.
@@ -181,13 +177,13 @@ class SyntaxCollection : public Syntax {
181
177
std::advance (iterator, i);
182
178
NewLayout.erase (iterator);
183
179
auto Raw = RawSyntax::make (CollectionKind, NewLayout, getRaw ()->getPresence ());
184
- return Data-> replacingSelf < SyntaxCollection<CollectionKind, Element>>( Raw);
180
+ return SyntaxCollection<CollectionKind, Element>(Data. replacingSelf ( Raw) );
185
181
}
186
182
187
183
// / Return an empty syntax collection of this type.
188
184
SyntaxCollection<CollectionKind, Element> cleared () const {
189
185
auto Raw = RawSyntax::make (CollectionKind, {}, getRaw ()->getPresence ());
190
- return Data-> replacingSelf < SyntaxCollection<CollectionKind, Element>>( Raw);
186
+ return SyntaxCollection<CollectionKind, Element>(Data. replacingSelf ( Raw) );
191
187
}
192
188
193
189
static bool kindof (SyntaxKind Kind) {
0 commit comments