5
5
import lombok .experimental .FieldDefaults ;
6
6
import org .jetbrains .annotations .NotNull ;
7
7
8
+ import java .util .Collections ;
8
9
import java .util .List ;
9
10
import java .util .Objects ;
10
11
import java .util .function .Consumer ;
@@ -116,11 +117,19 @@ public Node getChildByFieldName(@NotNull String name) {
116
117
return new OffsetNode (node .getChildByFieldName (name ));
117
118
}
118
119
120
+ @ Override
121
+ public int getChildCount () {
122
+ return node .getChildCount ();
123
+ }
124
+
119
125
@ Override
120
126
public List <Node > getChildren () {
121
127
return node .getChildren ().stream ()
122
128
.map (OffsetNode ::new )
123
- .collect (Collectors .toList ());
129
+ .collect (Collectors .collectingAndThen (
130
+ Collectors .toList (),
131
+ Collections ::unmodifiableList
132
+ ));
124
133
}
125
134
126
135
@ Override
@@ -151,6 +160,11 @@ public Point getEndPoint() {
151
160
return node .getEndPoint ().add (offset );
152
161
}
153
162
163
+ @ Override
164
+ public String getFieldNameForChild (int child ) {
165
+ return node .getFieldNameForChild (child );
166
+ }
167
+
154
168
@ Override
155
169
public Node getFirstChildForByte (int offset ) {
156
170
throw new UnsupportedOperationException (UOE_MESSAGE_2 );
@@ -214,6 +228,41 @@ public Point getStartPoint() {
214
228
return node .getStartPoint ().add (offset );
215
229
}
216
230
231
+ @ Override
232
+ public Symbol getSymbol () {
233
+ return node .getSymbol ();
234
+ }
235
+
236
+ @ Override
237
+ public String getType () {
238
+ return node .getType ();
239
+ }
240
+
241
+ @ Override
242
+ public boolean hasError () {
243
+ return node .hasError ();
244
+ }
245
+
246
+ @ Override
247
+ public boolean isExtra () {
248
+ return node .isExtra ();
249
+ }
250
+
251
+ @ Override
252
+ public boolean isMissing () {
253
+ return node .isMissing ();
254
+ }
255
+
256
+ @ Override
257
+ public boolean isNamed () {
258
+ return node .isNamed ();
259
+ }
260
+
261
+ @ Override
262
+ public boolean isNull () {
263
+ return node .isNull ();
264
+ }
265
+
217
266
@ Override
218
267
public TreeCursor walk () {
219
268
return new OffsetTreeCursor (node , offset );
@@ -223,6 +272,31 @@ public TreeCursor walk() {
223
272
public QueryCursor walk (@ NotNull Query query ) {
224
273
throw new UnsupportedOperationException (UOE_MESSAGE_3 );
225
274
}
275
+
276
+ @ Override
277
+ public boolean equals (Object obj ) {
278
+ if (obj == this ) return true ;
279
+ if (obj == null || getClass () != obj .getClass ()) return false ;
280
+ OffsetNode other = (OffsetNode ) obj ;
281
+ return node .equals (other .node );
282
+ }
283
+
284
+ @ Override
285
+ public int hashCode () {
286
+ return Objects .hash (node , offset );
287
+ }
288
+
289
+ @ Override
290
+ public String toString () {
291
+ String original = node .toString ();
292
+ int lower = Node .class .getSimpleName ().length () + 1 ;
293
+ int upper = original .length () - 1 ;
294
+ String data = original .substring (lower , upper );
295
+ return String .format (
296
+ "OffsetNode(%s, row: %d, column: %d)" ,
297
+ data , offset .getRow (), offset .getColumn ()
298
+ );
299
+ }
226
300
}
227
301
228
302
@ Override
0 commit comments