summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorSoniEx2 <endermoneymod@gmail.com>2019-04-08 14:54:07 -0300
committerSoniEx2 <endermoneymod@gmail.com>2019-04-08 14:54:07 -0300
commit893ca6ca0d379c0fbf6a6b4d70b551a3005b9de8 (patch)
treef1d71c9d71f2d291a4e6409665d91844cc754952
parent772e7a9755d1e7b83cfcd3d979e3dcafbbce0078 (diff)
Fix issues with newline handling in long strings
-rw-r--r--luatokens.lua3
-rw-r--r--test.lua8
2 files changed, 8 insertions, 3 deletions
diff --git a/luatokens.lua b/luatokens.lua
index d50f6c1..af53d45 100644
--- a/luatokens.lua
+++ b/luatokens.lua
@@ -386,7 +386,8 @@ end
 do local tlongstring = {}
     defs.longstring = tlongstring
     do local tllongstring_proper = selfify({[""] = "self", ["]"] = function(state, token) state.longstring_close = 0 return "maybe_end" end})
-        tllongstring_proper[1] = collect_fallback
+        tllongstring_proper[1] = false -- placeholder for newline handling
+        tllongstring_proper[2] = collect_fallback
 
         do local tllmaybe_end = selfify({defs = defs}, "maybe_end")
             tllongstring_proper.maybe_end = tllmaybe_end
diff --git a/test.lua b/test.lua
index 4e9b132..b0b7082 100644
--- a/test.lua
+++ b/test.lua
@@ -260,7 +260,7 @@ end -- long string
 do -- long string edge cases
     local luatokens = require "luatokens"
     local tokens = luatokens.defs
-    local state, err, etoken, estate = parser.parse(tokens, "[==[]=]==][==[]]==][=[] ]=]")
+    local state, err, etoken, estate = parser.parse(tokens, "[==[]=]==][==[]]==][=[] ]=][[\n]][[\n ]]")
     local case = case()
     if not state then
         print(case, "---- IN  TOKENS ----")
@@ -276,8 +276,12 @@ do -- long string edge cases
         assert(table.remove(state, 1) == "]")
         assert(table.remove(state, 1) == luatokens.tokens.TK_STRING)
         assert(table.remove(state, 1) == "] ")
+        assert(table.remove(state, 1) == luatokens.tokens.TK_STRING)
+        assert(table.remove(state, 1) == "")
+        assert(table.remove(state, 1) == luatokens.tokens.TK_STRING)
+        assert(table.remove(state, 1) == " ")
         assert(table.remove(state, 1) == nil)
-        assert(state.line == 1 or not state.line)
+        assert(state.line == 3 or not state.line)
     end
 end -- long string