Nim
Nim copied to clipboard
Internal error when using function with static parameter as default argument
Description
The code below results in an internal error, the static parameter messes with instantiation
proc test2(value: static[int]): int =
result = value
proc test1(fn=test2): int =
fn(1)
discard test1()
Passing test1(test2) is also kinda strange, but at least no internal error
Nim Version
git hash: 897dff69dd3a284adb94392b085577068f792a1c
Current Output
Error: internal error: proc has no result symbol
Expected Output
It should either work or give a better error
Possible Solution
No response
Additional Information
No response
Likely should error due to not having a specified generic parameter(remember static parameters are really generics). The following should also error of course.
proc doThing[T] = echo T
proc doOtherThing(fn = doThing) = fn()
doOtherThing()
!nim c
func a(v: static[int]): int = v
func b(f=a): int = f(1)
discard b()
@juancarlospaco (contributor)devel :-1: FAIL
Output
Error: Command failed: nim c --run -d:strip -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --threads:off --verbosity:0 --hints:off --warnings: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/work/Nim/Nim/temp.nim(1, 6) Error: internal error: proc has no result symbol
No stack traceback available
To create a stacktrace, rerun compilation with './koch temp c <file>', see https://nim-lang.github.io/Nim/intern.html#debugging-the-compiler for details
Stats
- Created
2023-07-05T12:35:59Z - Started
2023-07-05T12:36:31 - Finished
2023-07-05T12:36:31 - Duration
now - Commands
nim c --run -d:strip -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --threads:off --verbosity:0 --hints:off --warnings:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
IR
AST
nnkStmtList.newTree(
nnkFuncDef.newTree(
newIdentNode("a"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkBracketExpr.newTree(
newIdentNode("static"),
newIdentNode("int")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
newIdentNode("v")
)
),
nnkFuncDef.newTree(
newIdentNode("b"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("f"),
newEmptyNode(),
newIdentNode("a")
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCall.newTree(
newIdentNode("f"),
newLit(1)
)
)
),
nnkDiscardStmt.newTree(
nnkCall.newTree(
newIdentNode("b")
)
)
)
stable :-1: FAIL
Output
Error: Command failed: nim c --run -d:strip -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --threads:off --verbosity:0 --hints:off --warnings: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/work/Nim/Nim/temp.nim(1, 6) Error: internal error: proc has no result symbol
No stack traceback available
To create a stacktrace, rerun compilation with './koch temp c <file>', see https://nim-lang.github.io/Nim/intern.html#debugging-the-compiler for details
Stats
- Created
2023-07-05T12:35:59Z - Started
2023-07-05T12:36:32 - Finished
2023-07-05T12:36:32 - Duration
now - Commands
nim c --run -d:strip -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --threads:off --verbosity:0 --hints:off --warnings:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
IR
AST
nnkStmtList.newTree(
nnkFuncDef.newTree(
newIdentNode("a"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkBracketExpr.newTree(
newIdentNode("static"),
newIdentNode("int")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
newIdentNode("v")
)
),
nnkFuncDef.newTree(
newIdentNode("b"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("f"),
newEmptyNode(),
newIdentNode("a")
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCall.newTree(
newIdentNode("f"),
newLit(1)
)
)
),
nnkDiscardStmt.newTree(
nnkCall.newTree(
newIdentNode("b")
)
)
)
1.6.0 :-1: FAIL
Output
Error: Command failed: nim c --run -d:strip -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --threads:off --verbosity:0 --hints:off --warnings: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/work/Nim/Nim/temp.nim(1, 6) Error: internal error: proc has no result symbol
No stack traceback available
To create a stacktrace, rerun compilation with './koch temp c <file>', see https://nim-lang.github.io/Nim/intern.html#debugging-the-compiler for details
Stats
- Created
2023-07-05T12:35:59Z - Started
2023-07-05T12:36:35 - Finished
2023-07-05T12:36:35 - Duration
now - Commands
nim c --run -d:strip -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --threads:off --verbosity:0 --hints:off --warnings:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
IR
AST
nnkStmtList.newTree(
nnkFuncDef.newTree(
newIdentNode("a"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkBracketExpr.newTree(
newIdentNode("static"),
newIdentNode("int")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
newIdentNode("v")
)
),
nnkFuncDef.newTree(
newIdentNode("b"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("f"),
newEmptyNode(),
newIdentNode("a")
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCall.newTree(
newIdentNode("f"),
newLit(1)
)
)
),
nnkDiscardStmt.newTree(
nnkCall.newTree(
newIdentNode("b")
)
)
)
1.4.0 :-1: FAIL
Output
Error: Command failed: nim c --run -d:strip -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --threads:off --verbosity:0 --hints:off --warnings: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/work/Nim/Nim/temp.nim(1, 6) Error: internal error: proc has no result symbol
No stack traceback available
To create a stacktrace, rerun compilation with './koch temp c <file>', see https://nim-lang.github.io/Nim/intern.html#debugging-the-compiler for details
Stats
- Created
2023-07-05T12:35:59Z - Started
2023-07-05T12:36:38 - Finished
2023-07-05T12:36:39 - Duration
now - Commands
nim c --run -d:strip -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --threads:off --verbosity:0 --hints:off --warnings:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
IR
AST
nnkStmtList.newTree(
nnkFuncDef.newTree(
newIdentNode("a"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkBracketExpr.newTree(
newIdentNode("static"),
newIdentNode("int")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
newIdentNode("v")
)
),
nnkFuncDef.newTree(
newIdentNode("b"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("f"),
newEmptyNode(),
newIdentNode("a")
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCall.newTree(
newIdentNode("f"),
newLit(1)
)
)
),
nnkDiscardStmt.newTree(
nnkCall.newTree(
newIdentNode("b")
)
)
)
1.2.0 :-1: FAIL
Output
Error: Command failed: nim c --run -d:strip -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --threads:off --verbosity:0 --hints:off --warnings: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/work/Nim/Nim/temp.nim(1, 6) Error: internal error: proc has no result symbol
No stack traceback available
To create a stacktrace, rerun compilation with ./koch temp c <file>
Stats
- Created
2023-07-05T12:35:59Z - Started
2023-07-05T12:36:54 - Finished
2023-07-05T12:36:54 - Duration
now - Commands
nim c --run -d:strip -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --threads:off --verbosity:0 --hints:off --warnings:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
IR
AST
nnkStmtList.newTree(
nnkFuncDef.newTree(
newIdentNode("a"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkBracketExpr.newTree(
newIdentNode("static"),
newIdentNode("int")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
newIdentNode("v")
)
),
nnkFuncDef.newTree(
newIdentNode("b"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("f"),
newEmptyNode(),
newIdentNode("a")
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCall.newTree(
newIdentNode("f"),
newLit(1)
)
)
),
nnkDiscardStmt.newTree(
nnkCall.newTree(
newIdentNode("b")
)
)
)
1.0.0 :-1: FAIL
Output
Error: Command failed: nim c --run -d:strip -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --threads:off --verbosity:0 --hints:off --warnings: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/work/Nim/Nim/temp.nim(1, 6) Error: internal error: proc has no result symbol
No stack traceback available
To create a stacktrace, rerun compilation with ./koch temp c <file>
Stats
- Created
2023-07-05T12:35:59Z - Started
2023-07-05T12:37:05 - Finished
2023-07-05T12:37:06 - Duration
now - Commands
nim c --run -d:strip -d:ssl -d:nimDisableCertificateValidation --forceBuild:on --colors:off --threads:off --verbosity:0 --hints:off --warnings:off --lineTrace:off --nimcache:/home/runner/work/Nim/Nim --out:/home/runner/work/Nim/Nim/temp /home/runner/work/Nim/Nim/temp.nim
IR
AST
nnkStmtList.newTree(
nnkFuncDef.newTree(
newIdentNode("a"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkBracketExpr.newTree(
newIdentNode("static"),
newIdentNode("int")
),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
newIdentNode("v")
)
),
nnkFuncDef.newTree(
newIdentNode("b"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newIdentNode("int"),
nnkIdentDefs.newTree(
newIdentNode("f"),
newEmptyNode(),
newIdentNode("a")
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCall.newTree(
newIdentNode("f"),
newLit(1)
)
)
),
nnkDiscardStmt.newTree(
nnkCall.newTree(
newIdentNode("b")
)
)
)
38 minutes bisecting 6 commits at 0 commits per second.
Probably related #16906
Passing test1(test2) is also kinda strange
Should error