aboutsummaryrefslogtreecommitdiff
path: root/src/jdk/nashorn/internal/parser/Token.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/jdk/nashorn/internal/parser/Token.java')
-rw-r--r--src/jdk/nashorn/internal/parser/Token.java22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/jdk/nashorn/internal/parser/Token.java b/src/jdk/nashorn/internal/parser/Token.java
index 0012daa6..43df83b0 100644
--- a/src/jdk/nashorn/internal/parser/Token.java
+++ b/src/jdk/nashorn/internal/parser/Token.java
@@ -61,6 +61,28 @@ public class Token {
}
/**
+ * Normally returns the token itself, except in case of string tokens
+ * which report their position past their opening delimiter and thus
+ * need to have position and length adjusted.
+ *
+ * @param token Token descriptor.
+ * @return same or adjusted token.
+ */
+ public static long withDelimiter(final long token) {
+ final TokenType tokenType = Token.descType(token);
+ switch(tokenType) {
+ case STRING: case ESCSTRING: case EXECSTRING: {
+ final int start = Token.descPosition(token) - 1;
+ final int len = Token.descLength(token) + 2;
+ return toDesc(tokenType, start, len);
+ }
+ default: {
+ return token;
+ }
+ }
+ }
+
+ /**
* Extract token length from a token descriptor.
* @param token Token descriptor.
* @return Length of the token.