dg icon indicating copy to clipboard operation
dg copied to clipboard

`break!` example leads to `dg.SyntaxError`

Open Marrin opened this issue 4 years ago • 0 comments

break! seems to be broken. Executing the example in the REPL leads to this:

>>> ok = for x in range 10 =>
...   if x == 5 => break!
...   print x # 0..4
... print ok  # False
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/dg/repl.dg", line 99, in runrepl
    iterate (x -> x + '\n' + rdl.input sys.ps2) $ rdl.input sys.ps1
  File "/usr/local/lib/python3.6/dist-packages/dg/repl.dg", line 98, in ((x,assignment))
    map (x -> compilerepl x module.__dict__) $
  File "/usr/local/lib/python3.6/dist-packages/dg/repl.dg", line 71, in compilerepl
    if done      => compileast tree globals, (tree :: Expression and tree.op == '=')
  File "<core:5.compiler.dg>", line 36, in compileast
  File "<core:5.compiler.dg>", line 308, in pushast
  File "<core:5.compiler.dg>", line 412, in pushcall
  File "<core:5.compiler.dg>", line 914, in prefix
  File "<core:5.compiler.dg>", line 326, in pushlast
  File "<core:5.compiler.dg>", line 335, in pushnone
  File "<core:5.compiler.dg>", line 308, in pushast
  File "<core:5.compiler.dg>", line 412, in pushcall
  File "<core:5.compiler.dg>", line 59, in <lambda>
  File "<core:5.compiler.dg>", line 915, in prefix
  File "<core:5.compiler.dg>", line 794, in pushpop
  File "<core:5.compiler.dg>", line 308, in pushast
  File "<core:5.compiler.dg>", line 412, in pushcall
  File "<core:5.compiler.dg>", line 59, in <lambda>
  File "<core:5.compiler.dg>", line 1192, in prefix
  File "<core:5.compiler.dg>", line 812, in loop
  File "<core:5.compiler.dg>", line 1207, in <lambda>
  File "<core:5.compiler.dg>", line 335, in pushnone
  File "<core:5.compiler.dg>", line 308, in pushast
  File "<core:5.compiler.dg>", line 412, in pushcall
  File "<core:5.compiler.dg>", line 914, in prefix
  File "<core:5.compiler.dg>", line 326, in pushlast
  File "<core:5.compiler.dg>", line 335, in pushnone
  File "<core:5.compiler.dg>", line 308, in pushast
  File "<core:5.compiler.dg>", line 412, in pushcall
  File "<core:5.compiler.dg>", line 913, in prefix
  File "<core:5.compiler.dg>", line 412, in pushcall
  File "<core:5.compiler.dg>", line 125, in <lambda>
  File "<core:5.compiler.dg>", line 1259, in prefix
  File "<core:5.compiler.dg>", line 1262, in jumps
  File "<core:5.compiler.dg>", line 311, in pushast
  File "<input>", line 2
    if x == 5 => break!
                 ^
dg.SyntaxError: pushed 0 items onto the stack

Python version is Python 3.6.9 and I've used the -b option to create a bundle for that to get rid of the warning I got at startup.

Marrin avatar Nov 17 '20 19:11 Marrin