-
Notifications
You must be signed in to change notification settings - Fork 7
Closed
Labels
bugSomething isn't workingSomething isn't working
Description
It's me again, lol.
If a nested table does not have a key (array-like member), then it is not delimited from the last token.
LTable outer = new LTable();
LTable inner1 = new LTable();
LTable inner2 = new LTable();
outer.Add(1);
outer.Add(inner1);
outer.Add("A");
inner2["test1"] = 1;
inner2["test2"] = 2;
inner1.Add(4);
inner1.Add(5);
inner1.Add(inner2);
Console.WriteLine(outer.ToString());
However if it has a key (dict-like member), then it seems fine.
LTable outer = new LTable();
LTable inner1 = new LTable();
LTable inner2 = new LTable();
outer.Add(1);
outer.Add(inner1);
outer.Add("A");
inner2["test1"] = 1;
inner2["test2"] = 2;
inner1.Add(4);
inner1.Add(5);
inner1.Add("testkey", inner2); // <- Add a key
Console.WriteLine(outer.ToString());
Again after some trial-and-error debugging, seems like WriteStartTable() in LuaTableTextWriter.cs is not designed to delimit the last value as it simply goes to TableStart state.
Luaon.NET/Luaon.NET/LuaTableTextWriter.cs
Lines 208 to 216 in 0ce291b
| /// Writes the beginning of a Lua table. | |
| /// </summary> | |
| public virtual void WriteStartTable() | |
| { | |
| GotoNextState(Token.TableStart); | |
| Push(LuaContainerType.Table); | |
| Writer.Write('{'); | |
| } | |
If I change line 212 to DelimitLastValue(Token.TableStart);, the problem seems to be solved.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working


