From 82d8b4c47bc325bd9d43fd0577b10a9a227c5b36 Mon Sep 17 00:00:00 2001 From: Cottand Date: Sat, 6 Jul 2024 23:40:45 +0100 Subject: [PATCH] fix not covering happy path that has no escaping --- .../nixos/idea/psi/NixStringLiteralEscaper.kt | 34 ++++++++++++------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/src/main/java/org/nixos/idea/psi/NixStringLiteralEscaper.kt b/src/main/java/org/nixos/idea/psi/NixStringLiteralEscaper.kt index 63ddd4a4..2e7ea0cf 100644 --- a/src/main/java/org/nixos/idea/psi/NixStringLiteralEscaper.kt +++ b/src/main/java/org/nixos/idea/psi/NixStringLiteralEscaper.kt @@ -94,17 +94,28 @@ class NixStringLiteralEscaper(host: AbstractNixString) : LiteralTextEscaper outChars.append(c) - // Linefeed, carriage-return and tab characters can - // be written as ''\n, ''\r, ''\t, and ''\ escapes any other character. - 'a' -> outChars.append(0x07.toChar()) - 'b' -> outChars.append('\b') - 'f' -> outChars.append(0x0c.toChar()) - 'n' -> outChars.append('\n') - 't' -> outChars.append('\t') - 'r' -> outChars.append('\r') - 'v' -> outChars.append(0x0b.toChar()) + '\\' -> { + if (index == chars.length) return false + c = chars[index++] + when(c) { + // Linefeed, carriage-return and tab characters can + // be written as ''\n, ''\r, ''\t, and ''\ escapes any other character. + 'a' -> outChars.append(0x07.toChar()) + 'b' -> outChars.append('\b') + 'f' -> outChars.append(0x0c.toChar()) + 'n' -> outChars.append('\n') + 't' -> outChars.append('\t') + 'r' -> outChars.append('\r') + 'v' -> outChars.append(0x0b.toChar()) + else -> return false + } + } else -> return false } + if (sourceOffsets != null) { + sourceOffsets[outChars.length - outOffset] = index + } + continue } // // $ removes any special meaning from the following $. @@ -122,10 +133,7 @@ class NixStringLiteralEscaper(host: AbstractNixString) : LiteralTextEscaper