Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

when compile lambda iterator for JS, internal error: symbol has no generated name: true #23382

Closed
litlighilit opened this issue Mar 9, 2024 · 3 comments · Fixed by #23398
Closed
Assignees

Comments

@litlighilit
Copy link
Contributor

litlighilit commented Mar 9, 2024

Description

The smallest demo:

let i{.used.} = iterator(): char =
  yield 'c'

can compile for c/cpp other than js.

If compiled via nim js, then Nim compiler terminates with an error:
error: <nim path>\lib\system\basic_types.nim(46, 16) Error: internal error: symbol has no generated name: true

Nim Version

Nim Compiler Version 2.1.1 [Windows: amd64]
Compiled at 2024-03-07
Copyright (c) 2006-2024 by Andreas Rumpf

active boot switches: -d:release

And

Nim Compiler Version 2.0.0 [Windows: amd64]
Compiled at 2023-08-01
Copyright (c) 2006-2023 by Andreas Rumpf

active boot switches: -d:release

And

Nim Compiler Version 1.6.14 [Windows: amd64]
Compiled at 2023-06-27
Copyright (c) 2006-2023 by Andreas Rumpf

active boot switches: -d:release

Current Output

<compiler inner error: ... > (describled above)

Expected Output

No response

Possible Solution

No response

Additional Information

@juancarlospaco
Copy link
Collaborator

!nim js

let i{.used.} = iterator(): char =
  yield 'c'

Copy link
Contributor

github-actions bot commented Mar 9, 2024

🐧 Linux bisect by @juancarlospaco (collaborator)
devel 👎 FAIL

Output

Error: Command failed: nim js -d:nodejs -d:nimExperimentalAsyncjsThen -d:nimExperimentalJsfetch  --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/.choosenim/toolchains/nim-#devel/lib/system/basic_types.nim(46, 16) Error: internal error: symbol has no generated name: true
assertions.nim(34)       raiseAssert
Error: unhandled exception: errInternal [AssertionDefect]

IR

Compiled filesize 0 bytes (0 bytes)

Stats

  • Started 2024-03-09T21:02:48
  • Finished 2024-03-09T21:02:48
  • Duration

AST

nnkStmtList.newTree(
  nnkLetSection.newTree(
    nnkIdentDefs.newTree(
      nnkPragmaExpr.newTree(
        newIdentNode("i"),
        nnkPragma.newTree(
          newIdentNode("used")
        )
      ),
      newEmptyNode(),
      nnkIteratorDef.newTree(
        newEmptyNode(),
        newEmptyNode(),
        newEmptyNode(),
        nnkFormalParams.newTree(
          newIdentNode("char")
        ),
        newEmptyNode(),
        newEmptyNode(),
        nnkStmtList.newTree(
          nnkYieldStmt.newTree(
            newLit('c')
          )
        )
      )
    )
  )
)
stable 👎 FAIL

Output

Error: Command failed: nim js -d:nodejs -d:nimExperimentalAsyncjsThen -d:nimExperimentalJsfetch  --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system/basic_types.nim(46, 16) Error: internal error: symbol has no generated name: true
assertions.nim(34)       raiseAssert
Error: unhandled exception: options.nim(681, 5) `false` errInternal [AssertionDefect]

IR

Compiled filesize 0 bytes (0 bytes)

Stats

  • Started 2024-03-09T21:02:50
  • Finished 2024-03-09T21:02:50
  • Duration

AST

nnkStmtList.newTree(
  nnkLetSection.newTree(
    nnkIdentDefs.newTree(
      nnkPragmaExpr.newTree(
        newIdentNode("i"),
        nnkPragma.newTree(
          newIdentNode("used")
        )
      ),
      newEmptyNode(),
      nnkIteratorDef.newTree(
        newEmptyNode(),
        newEmptyNode(),
        newEmptyNode(),
        nnkFormalParams.newTree(
          newIdentNode("char")
        ),
        newEmptyNode(),
        newEmptyNode(),
        nnkStmtList.newTree(
          nnkYieldStmt.newTree(
            newLit('c')
          )
        )
      )
    )
  )
)
2.0.2 👎 FAIL

Output

Error: Command failed: nim js -d:nodejs -d:nimExperimentalAsyncjsThen -d:nimExperimentalJsfetch  --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/.choosenim/toolchains/nim-2.0.2/lib/system/basic_types.nim(46, 16) Error: internal error: symbol has no generated name: true
assertions.nim(34)       raiseAssert
Error: unhandled exception: options.nim(681, 5) `false` errInternal [AssertionDefect]

IR

Compiled filesize 0 bytes (0 bytes)

Stats

  • Started 2024-03-09T21:02:50
  • Finished 2024-03-09T21:02:50
  • Duration

AST

nnkStmtList.newTree(
  nnkLetSection.newTree(
    nnkIdentDefs.newTree(
      nnkPragmaExpr.newTree(
        newIdentNode("i"),
        nnkPragma.newTree(
          newIdentNode("used")
        )
      ),
      newEmptyNode(),
      nnkIteratorDef.newTree(
        newEmptyNode(),
        newEmptyNode(),
        newEmptyNode(),
        nnkFormalParams.newTree(
          newIdentNode("char")
        ),
        newEmptyNode(),
        newEmptyNode(),
        nnkStmtList.newTree(
          nnkYieldStmt.newTree(
            newLit('c')
          )
        )
      )
    )
  )
)
1.6.14 👎 FAIL

Output

Error: Command failed: nim js -d:nodejs -d:nimExperimentalAsyncjsThen -d:nimExperimentalJsfetch  --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/.choosenim/toolchains/nim-1.6.14/lib/system/basic_types.nim(16, 16) Error: internal error: symbol has no generated name: true
fatal.nim(54)            sysFatal
Error: unhandled exception: options.nim(645, 14) `false` errInternal [AssertionDefect]

IR

Compiled filesize 0 bytes (0 bytes)

Stats

  • Started 2024-03-09T21:02:53
  • Finished 2024-03-09T21:02:53
  • Duration

AST

nnkStmtList.newTree(
  nnkLetSection.newTree(
    nnkIdentDefs.newTree(
      nnkPragmaExpr.newTree(
        newIdentNode("i"),
        nnkPragma.newTree(
          newIdentNode("used")
        )
      ),
      newEmptyNode(),
      nnkIteratorDef.newTree(
        newEmptyNode(),
        newEmptyNode(),
        newEmptyNode(),
        nnkFormalParams.newTree(
          newIdentNode("char")
        ),
        newEmptyNode(),
        newEmptyNode(),
        nnkStmtList.newTree(
          nnkYieldStmt.newTree(
            newLit('c')
          )
        )
      )
    )
  )
)
1.4.8 👎 FAIL

Output

Error: Command failed: nim js -d:nodejs -d:nimExperimentalAsyncjsThen -d:nimExperimentalJsfetch  --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/.choosenim/toolchains/nim-1.4.8/lib/system/basic_types.nim(16, 16) Error: internal error: symbol has no generated name: true
No stack traceback available
To create a stacktrace, rerun compilation with './koch temp js <file>', see https://nim-lang.github.io/Nim/intern.html#debugging-the-compiler for details

IR

Compiled filesize 0 bytes (0 bytes)

Stats

  • Started 2024-03-09T21:02:55
  • Finished 2024-03-09T21:02:55
  • Duration

AST

nnkStmtList.newTree(
  nnkLetSection.newTree(
    nnkIdentDefs.newTree(
      nnkPragmaExpr.newTree(
        newIdentNode("i"),
        nnkPragma.newTree(
          newIdentNode("used")
        )
      ),
      newEmptyNode(),
      nnkIteratorDef.newTree(
        newEmptyNode(),
        newEmptyNode(),
        newEmptyNode(),
        nnkFormalParams.newTree(
          newIdentNode("char")
        ),
        newEmptyNode(),
        newEmptyNode(),
        nnkStmtList.newTree(
          nnkYieldStmt.newTree(
            newLit('c')
          )
        )
      )
    )
  )
)
1.2.18 👎 FAIL

Output

Error: Command failed: nim js -d:nodejs -d:nimExperimentalAsyncjsThen -d:nimExperimentalJsfetch  --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/.choosenim/toolchains/nim-1.2.18/lib/system/basic_types.nim(16, 16) Error: internal error: symbol has no generated name: true
No stack traceback available
To create a stacktrace, rerun compilation with ./koch temp js <file>

IR

Compiled filesize 0 bytes (0 bytes)

Stats

  • Started 2024-03-09T21:02:57
  • Finished 2024-03-09T21:02:57
  • Duration

AST

nnkStmtList.newTree(
  nnkLetSection.newTree(
    nnkIdentDefs.newTree(
      nnkPragmaExpr.newTree(
        newIdentNode("i"),
        nnkPragma.newTree(
          newIdentNode("used")
        )
      ),
      newEmptyNode(),
      nnkIteratorDef.newTree(
        newEmptyNode(),
        newEmptyNode(),
        newEmptyNode(),
        nnkFormalParams.newTree(
          newIdentNode("char")
        ),
        newEmptyNode(),
        newEmptyNode(),
        nnkStmtList.newTree(
          nnkYieldStmt.newTree(
            newLit('c')
          )
        )
      )
    )
  )
)
1.0.10 👎 FAIL

Output

Error: Command failed: nim js -d:nodejs -d:nimExperimentalAsyncjsThen -d:nimExperimentalJsfetch  --run  -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
/home/runner/.choosenim/toolchains/nim-1.0.10/lib/system.nim(45, 16) Error: internal error: symbol has no generated name: true
No stack traceback available
To create a stacktrace, rerun compilation with ./koch temp js <file>

IR

Compiled filesize 0 bytes (0 bytes)

Stats

  • Started 2024-03-09T21:02:59
  • Finished 2024-03-09T21:02:59
  • Duration

AST

nnkStmtList.newTree(
  nnkLetSection.newTree(
    nnkIdentDefs.newTree(
      nnkPragmaExpr.newTree(
        newIdentNode("i"),
        nnkPragma.newTree(
          newIdentNode("used")
        )
      ),
      newEmptyNode(),
      nnkIteratorDef.newTree(
        newEmptyNode(),
        newEmptyNode(),
        newEmptyNode(),
        nnkFormalParams.newTree(
          newIdentNode("char")
        ),
        newEmptyNode(),
        newEmptyNode(),
        nnkStmtList.newTree(
          nnkYieldStmt.newTree(
            newLit('c')
          )
        )
      )
    )
  )
)
Stats
  • GCC 11.4.0
  • Clang 14.0.0
  • NodeJS 19.1
  • Created 2024-03-09T21:02:09Z
  • Comments 1
  • Commands nim js -d:nodejs -d:nimExperimentalAsyncjsThen -d:nimExperimentalJsfetch --run -d:nimDebug -d:nimDebugDlOpen -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --verbosity:0 --hints:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim

🤖 Bug found in 14 minutes bisecting 7 commits at 0 commits per second

@metagn
Copy link
Collaborator

metagn commented Mar 11, 2024

JS backend doesn't support closure iterators, this is supposed to give a legible error since #7109 was fixed but doesn't seem to in this case.

Would also be fixed by implementing closure iterators in JS.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants