Browse Source

Fix: Lexer (short string literal)

AnnulusGames 1 year ago
parent
commit
bf4758e22d
1 changed files with 15 additions and 13 deletions
  1. 15 13
      src/Lua/CodeAnalysis/Syntax/Lexer.cs

+ 15 - 13
src/Lua/CodeAnalysis/Syntax/Lexer.cs

@@ -310,28 +310,30 @@ public ref struct Lexer
         {
             var quote = c1;
             var stringStartOffset = offset;
-
             var isTerminated = false;
-            var prevC = char.MinValue;
+
             while (span.Length > offset)
             {
                 var c = span[offset];
 
-                if (prevC is not '\\')
+                if (c is '\n' or '\r')
                 {
-                    if (c == quote)
-                    {
-                        isTerminated = true;
-                        break;
-                    }
+                    break;
+                }
+               
+                if (c is '\\')
+                {
+                    Advance(1);
+                    if (span.Length <= offset) break;
+                    c = span[offset];
+                }
 
-                    if (c is '\n' or '\r')
-                    {
-                        break;
-                    }
+                if (c == quote)
+                {
+                    isTerminated = true;
+                    break;
                 }
 
-                prevC = c;
                 Advance(1);
             }