From 18d2bc5ee13b33a423d98303178291713d8ba2d3 Mon Sep 17 00:00:00 2001 From: Claes65 Date: Thu, 7 Nov 2024 10:12:51 +0100 Subject: [PATCH] Enhance PlainPostion with spanning method for use in diagnostics --- .../natparse/lexing/PlainPosition.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/libs/natparse/src/main/java/org/amshove/natparse/lexing/PlainPosition.java b/libs/natparse/src/main/java/org/amshove/natparse/lexing/PlainPosition.java index 09dc05287..738aee049 100644 --- a/libs/natparse/src/main/java/org/amshove/natparse/lexing/PlainPosition.java +++ b/libs/natparse/src/main/java/org/amshove/natparse/lexing/PlainPosition.java @@ -1,8 +1,25 @@ package org.amshove.natparse.lexing; import org.amshove.natparse.IPosition; +import org.amshove.natparse.natural.ISyntaxNode; import java.nio.file.Path; public record PlainPosition(int offset, int offsetInLine, int line, int length, Path filePath) implements IPosition -{} +{ + public static PlainPosition spanning(IPosition startPosition, IPosition endPosition) + { + return new PlainPosition( + startPosition.offset(), + startPosition.offsetInLine(), + startPosition.line(), + endPosition.totalEndOffset() - startPosition.offset(), + startPosition.filePath() + ); + } + + public static PlainPosition spanning(ISyntaxNode start, ISyntaxNode end) + { + return spanning(start.position(), end.position()); + } +}