Skip to content

Commit

Permalink
Merge pull request #51 from seart-group/bug/sigsegv
Browse files Browse the repository at this point in the history
  • Loading branch information
dabico committed Oct 31, 2023
2 parents f363267 + 8fe7c81 commit acb518f
Showing 1 changed file with 75 additions and 1 deletion.
76 changes: 75 additions & 1 deletion src/main/java/ch/usi/si/seart/treesitter/OffsetTreeCursor.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import lombok.experimental.FieldDefaults;
import org.jetbrains.annotations.NotNull;

import java.util.Collections;
import java.util.List;
import java.util.Objects;
import java.util.function.Consumer;
Expand Down Expand Up @@ -116,11 +117,19 @@ public Node getChildByFieldName(@NotNull String name) {
return new OffsetNode(node.getChildByFieldName(name));
}

@Override
public int getChildCount() {
return node.getChildCount();
}

@Override
public List<Node> getChildren() {
return node.getChildren().stream()
.map(OffsetNode::new)
.collect(Collectors.toList());
.collect(Collectors.collectingAndThen(
Collectors.toList(),
Collections::unmodifiableList
));
}

@Override
Expand Down Expand Up @@ -151,6 +160,11 @@ public Point getEndPoint() {
return node.getEndPoint().add(offset);
}

@Override
public String getFieldNameForChild(int child) {
return node.getFieldNameForChild(child);
}

@Override
public Node getFirstChildForByte(int offset) {
throw new UnsupportedOperationException(UOE_MESSAGE_2);
Expand Down Expand Up @@ -214,6 +228,41 @@ public Point getStartPoint() {
return node.getStartPoint().add(offset);
}

@Override
public Symbol getSymbol() {
return node.getSymbol();
}

@Override
public String getType() {
return node.getType();
}

@Override
public boolean hasError() {
return node.hasError();
}

@Override
public boolean isExtra() {
return node.isExtra();
}

@Override
public boolean isMissing() {
return node.isMissing();
}

@Override
public boolean isNamed() {
return node.isNamed();
}

@Override
public boolean isNull() {
return node.isNull();
}

@Override
public TreeCursor walk() {
return new OffsetTreeCursor(node, offset);
Expand All @@ -223,6 +272,31 @@ public TreeCursor walk() {
public QueryCursor walk(@NotNull Query query) {
throw new UnsupportedOperationException(UOE_MESSAGE_3);
}

@Override
public boolean equals(Object obj) {
if (obj == this) return true;
if (obj == null || getClass() != obj.getClass()) return false;
OffsetNode other = (OffsetNode) obj;
return node.equals(other.node);
}

@Override
public int hashCode() {
return Objects.hash(node, offset);
}

@Override
public String toString() {
String original = node.toString();
int lower = Node.class.getSimpleName().length() + 1;
int upper = original.length() - 1;
String data = original.substring(lower, upper);
return String.format(
"OffsetNode(%s, row: %d, column: %d)",
data, offset.getRow(), offset.getColumn()
);
}
}

@Override
Expand Down

0 comments on commit acb518f

Please sign in to comment.