<table><tr><td style="">sirgienko added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D12074">View Revision</a></tr></table><br /><div><div><blockquote style="border-left: 3px solid #8C98B8;
color: #6B748C;
font-style: italic;
margin: 4px 0 12px 0;
padding: 8px 12px;
background-color: #F8F9FC;">
<div style="font-style: normal;
padding-bottom: 4px;">In <a href="https://phabricator.kde.org/D12074#253885" style="background-color: #e7e7e7;
border-color: #e7e7e7;
border-radius: 3px;
padding: 0 4px;
font-weight: bold;
color: black;text-decoration: none;">D12074#253885</a>, <a href="https://phabricator.kde.org/p/asemke/" style="
border-color: #f1f7ff;
color: #19558d;
background-color: #f1f7ff;
border: 1px solid transparent;
border-radius: 3px;
font-weight: bold;
padding: 0 4px;">@asemke</a> wrote:</div>
<div style="margin: 0;
padding: 0;
border: 0;
color: rgb(107, 116, 140);"><p>This all looks a bit strange...</p></div>
</blockquote>
<p>Well, in fact this is a problem of incorrect parse end condition, which produce false positive errors.<br />
I add printing of readed line from backend whatever make it clear.</p>
<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">final command to be executed "function fib(n)\n if n < 2 then return 1 end\n return fib(n - 2) + fib(n - 1)\nend\n\n-- Closures and anonymous functions are ok:\nfunction adder(x)\n -- The returned function is created when adder is\n -- called, and remembers the value of x:\n return function (y) return x + y end\nend\na1 = adder(9)\na2 = adder(36)\nprint(a1(16)) --> 25\nprint(a2(64)) --> 100\n"
QSizeF(937, 397) QSizeF(937, 297)
newLine: "function fib(n)\n"
newLine: ">> if n < 2 then return 1 end\n"
newLine: ">> return fib(n - 2) + fib(n - 1)\n"
newLine: ">> end\n"
newLine: "> \n"
newLine: "> -- Closures and anonymous functions are ok:\n"
newLine: "> function adder(x)\n"
newLine: ">> -- The returned function is created when adder is\n"
newLine: ">> -- called, and remembers the value of x:\n"
newLine: ">> return function (y) return x + y end\n"
newLine: ">> end\n"
newLine: "> a1 = adder(9)\n"
newLine: "> a2 = adder(36)\n"
newLine: "> "
parsing the output "function fib(n)\n>> if n < 2 then return 1 end\n>> return fib(n - 2) + fib(n - 1)\n>> end\n> \n> -- Closures and anonymous functions are ok:\n> function adder(x)\n>> -- The returned function is created when adder is\n>> -- called, and remembers the value of x:\n>> return function (y) return x + y end\n>> end\n> a1 = adder(9)\n> a2 = adder(36)\n> "
final output of the command "function fib(n)\n if n < 2 then return 1 end\n return fib(n - 2) + fib(n - 1)\nend\n\n-- Closures and anonymous functions are ok:\nfunction adder(x)\n -- The returned function is created when adder is\n -- called, and remembers the value of x:\n return function (y) return x + y end\nend\na1 = adder(9)\na2 = adder(36)\nprint(a1(16)) --> 25\nprint(a2(64)) --> 100" : ""</pre></div>
<p>Command <tt style="background: #ebebeb; font-size: 13px;">a2 = adder(36)</tt> not last, but after this command we read <tt style="background: #ebebeb; font-size: 13px;">> </tt> (lua printing lag) and it satisfy parse end condition. So, backend finish the first command and run next, and then:</p>
<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">QSizeF(937, 157) QSizeF(937, 126)
newLine: "print(a1(16)) --> 25\n"
newLine: "25\n"
newLine: "> print(a2(64)) --> 100\n"
newLine: "100\n"
newLine: "> "
parsing the output "print(a1(16)) --> 25\n25\n> print(a2(64)) --> 100\n100\n> "
final output of the command "function bar(a, b, c)\n print(a, b, c)\n return 4, 8, 15, 16, 23, 42\nend\n\nx, y = bar('zaphod') --> prints \"zaphod nil nil\"" : "print(a1(16)) --> 25\n25\nprint(a2(64)) --> 100\n100"</pre></div>
<p>We set tail of previous command as result for two command.<br />
And then:</p>
<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">newLine: "function bar(a, b, c)\n"
newLine: ">> print(a, b, c)\n"
newLine: ">> return 4, 8, 15, 16, 23, 42\n"
newLine: ">> end\n"
newLine: "> \n"
newLine: "> x, y = bar('zaphod') --> prints \"zaphod nil nil\"\n"
newLine: "zaphod\tnil\tnil\n"
newLine: "> "
parsing the output "function bar(a, b, c)\n>> print(a, b, c)\n>> return 4, 8, 15, 16, 23, 42\n>> end\n> \n> x, y = bar('zaphod') --> prints \"zaphod nil nil\"\nzaphod\tnil\tnil\n> "
final output of the command "function bar(a, b, c)\n print(a, b, c)\n return 4, 8, 15, 16, 23, 42\nend\n\nx, y = bar('zaphod') --> prints \"zaphod nil nil\"" : "zaphod\tnil\tnil"</pre></div>
<p>The backend set result again.</p>
<blockquote style="border-left: 3px solid #8C98B8;
color: #6B748C;
font-style: italic;
margin: 4px 0 12px 0;
padding: 8px 12px;
background-color: #F8F9FC;">
<div style="font-style: normal;
padding-bottom: 4px;">In <a href="https://phabricator.kde.org/D12074#253921" style="background-color: #e7e7e7;
border-color: #e7e7e7;
border-radius: 3px;
padding: 0 4px;
font-weight: bold;
color: black;text-decoration: none;">D12074#253921</a>, <a href="https://phabricator.kde.org/p/asemke/" style="
border-color: #f1f7ff;
color: #19558d;
background-color: #f1f7ff;
border: 1px solid transparent;
border-radius: 3px;
font-weight: bold;
padding: 0 4px;">@asemke</a> wrote:</div>
<div style="margin: 0;
padding: 0;
border: 0;
color: rgb(107, 116, 140);"><blockquote style="border-left: 3px solid #8C98B8;
color: #6B748C;
font-style: italic;
margin: 4px 0 12px 0;
padding: 8px 12px;
background-color: #F8F9FC;">
<div style="font-style: normal;
padding-bottom: 4px;">In <a href="https://phabricator.kde.org/D12074#253885" style="background-color: #e7e7e7;
border-color: #e7e7e7;
border-radius: 3px;
padding: 0 4px;
font-weight: bold;
color: black;text-decoration: none;">D12074#253885</a>, <a href="https://phabricator.kde.org/p/asemke/" style="
border-color: #f1f7ff;
color: #19558d;
background-color: #f1f7ff;
border: 1px solid transparent;
border-radius: 3px;
font-weight: bold;
padding: 0 4px;">@asemke</a> wrote:</div>
<div style="margin: 0;
padding: 0;
border: 0;
color: rgb(107, 116, 140);"><p>This all looks a bit strange...</p></div>
</blockquote>
<p>The problem was in LuaSession::readOutput(). The patch <a href="https://phabricator.kde.org/F5822387" style="background-color: #e7e7e7;
border-color: #e7e7e7;
border-radius: 3px;
padding: 0 4px;
font-weight: bold;
color: black;text-decoration: none;">F5822387: lua_multiline_output_3.patch</a></p>
<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">handles the outputs correctly. @sirgienko Does it also work for you?</pre></div></div>
</blockquote>
<p>No, output have changed, but still have problems:<br />
<a href="https://phabricator.kde.org/F5822390" style="background-color: #e7e7e7;
border-color: #e7e7e7;
border-radius: 3px;
padding: 0 4px;
font-weight: bold;
color: black;text-decoration: none;">F5822390: изображение.png</a></p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R55 Cantor</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D12074">https://phabricator.kde.org/D12074</a></div></div><br /><div><strong>To: </strong>sirgienko, Cantor, asemke<br /><strong>Cc: </strong>Cantor, KDE Edu, narvaez, apol<br /></div>