Comments (8)
!nim c
proc y[N](): array[N, int] = default(array[N, int])
discard y[1]()
from nim.
π§ Linux bisect by @ringabout (member)
devel π FAIL
Output
Error: Command failed: nim c --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
assertions.nim(34) raiseAssert
Error: unhandled exception: int128.nim(71, 11) `arg.sdata(2) == 0` out of range [AssertionDefect]
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2024-01-12T13:33:53
- Finished
2024-01-12T13:33:54
- Duration
AST
nnkStmtList.newTree(
nnkProcDef.newTree(
newIdentNode("y"),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("N"),
newEmptyNode(),
newEmptyNode()
)
),
nnkFormalParams.newTree(
nnkBracketExpr.newTree(
newIdentNode("array"),
newIdentNode("N"),
newIdentNode("int")
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCall.newTree(
newIdentNode("default"),
nnkBracketExpr.newTree(
newIdentNode("array"),
newIdentNode("N"),
newIdentNode("int")
)
)
)
),
nnkDiscardStmt.newTree(
nnkCall.newTree(
nnkBracketExpr.newTree(
newIdentNode("y"),
newLit(1)
)
)
)
)
stable π FAIL
Output
Error: Command failed: nim c --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
assertions.nim(34) raiseAssert
Error: unhandled exception: int128.nim(70, 11) `arg.sdata(2) == 0` out of range [AssertionDefect]
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2024-01-12T13:33:54
- Finished
2024-01-12T13:33:54
- Duration
AST
nnkStmtList.newTree(
nnkProcDef.newTree(
newIdentNode("y"),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("N"),
newEmptyNode(),
newEmptyNode()
)
),
nnkFormalParams.newTree(
nnkBracketExpr.newTree(
newIdentNode("array"),
newIdentNode("N"),
newIdentNode("int")
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCall.newTree(
newIdentNode("default"),
nnkBracketExpr.newTree(
newIdentNode("array"),
newIdentNode("N"),
newIdentNode("int")
)
)
)
),
nnkDiscardStmt.newTree(
nnkCall.newTree(
nnkBracketExpr.newTree(
newIdentNode("y"),
newLit(1)
)
)
)
)
2.0.0 π FAIL
Output
Error: Command failed: nim c --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
assertions.nim(34) raiseAssert
Error: unhandled exception: int128.nim(70, 11) `arg.sdata(2) == 0` out of range [AssertionDefect]
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2024-01-12T13:33:57
- Finished
2024-01-12T13:33:57
- Duration
AST
nnkStmtList.newTree(
nnkProcDef.newTree(
newIdentNode("y"),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("N"),
newEmptyNode(),
newEmptyNode()
)
),
nnkFormalParams.newTree(
nnkBracketExpr.newTree(
newIdentNode("array"),
newIdentNode("N"),
newIdentNode("int")
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCall.newTree(
newIdentNode("default"),
nnkBracketExpr.newTree(
newIdentNode("array"),
newIdentNode("N"),
newIdentNode("int")
)
)
)
),
nnkDiscardStmt.newTree(
nnkCall.newTree(
nnkBracketExpr.newTree(
newIdentNode("y"),
newLit(1)
)
)
)
)
1.6.14 π FAIL
Output
Error: Command failed: nim c --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
fatal.nim(54) sysFatal
Error: unhandled exception: int128.nim(72, 11) `arg.sdata(2) == 0` out of range [AssertionDefect]
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2024-01-12T13:33:59
- Finished
2024-01-12T13:34:00
- Duration
AST
nnkStmtList.newTree(
nnkProcDef.newTree(
newIdentNode("y"),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("N"),
newEmptyNode(),
newEmptyNode()
)
),
nnkFormalParams.newTree(
nnkBracketExpr.newTree(
newIdentNode("array"),
newIdentNode("N"),
newIdentNode("int")
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCall.newTree(
newIdentNode("default"),
nnkBracketExpr.newTree(
newIdentNode("array"),
newIdentNode("N"),
newIdentNode("int")
)
)
)
),
nnkDiscardStmt.newTree(
nnkCall.newTree(
nnkBracketExpr.newTree(
newIdentNode("y"),
newLit(1)
)
)
)
)
1.4.8 π FAIL
Output
Error: Command failed: nim c --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
fatal.nim(49) sysFatal
Error: unhandled exception: int128.nim(72, 11) `arg.sdata(2) == 0` out of range [AssertionDefect]
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2024-01-12T13:34:02
- Finished
2024-01-12T13:34:02
- Duration
AST
nnkStmtList.newTree(
nnkProcDef.newTree(
newIdentNode("y"),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("N"),
newEmptyNode(),
newEmptyNode()
)
),
nnkFormalParams.newTree(
nnkBracketExpr.newTree(
newIdentNode("array"),
newIdentNode("N"),
newIdentNode("int")
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCall.newTree(
newIdentNode("default"),
nnkBracketExpr.newTree(
newIdentNode("array"),
newIdentNode("N"),
newIdentNode("int")
)
)
)
),
nnkDiscardStmt.newTree(
nnkCall.newTree(
nnkBracketExpr.newTree(
newIdentNode("y"),
newLit(1)
)
)
)
)
1.2.18 π FAIL
Output
Error: Command failed: nim c --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
fatal.nim(49) sysFatal
Error: unhandled exception: int128.nim(72, 11) `arg.sdata(2) == 0` out of range [AssertionError]
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2024-01-12T13:34:04
- Finished
2024-01-12T13:34:04
- Duration
AST
nnkStmtList.newTree(
nnkProcDef.newTree(
newIdentNode("y"),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("N"),
newEmptyNode(),
newEmptyNode()
)
),
nnkFormalParams.newTree(
nnkBracketExpr.newTree(
newIdentNode("array"),
newIdentNode("N"),
newIdentNode("int")
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCall.newTree(
newIdentNode("default"),
nnkBracketExpr.newTree(
newIdentNode("array"),
newIdentNode("N"),
newIdentNode("int")
)
)
)
),
nnkDiscardStmt.newTree(
nnkCall.newTree(
nnkBracketExpr.newTree(
newIdentNode("y"),
newLit(1)
)
)
)
)
1.0.10 π FAIL
Output
Error: Command failed: nim c --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
fatal.nim(39) sysFatal
Error: unhandled exception: int128.nim(72, 11) `arg.sdata(2) == 0` out of range [AssertionError]
IR
Compiled filesize0 bytes (0 bytes)
Stats
- Started
2024-01-12T13:34:06
- Finished
2024-01-12T13:34:06
- Duration
AST
nnkStmtList.newTree(
nnkProcDef.newTree(
newIdentNode("y"),
newEmptyNode(),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("N"),
newEmptyNode(),
newEmptyNode()
)
),
nnkFormalParams.newTree(
nnkBracketExpr.newTree(
newIdentNode("array"),
newIdentNode("N"),
newIdentNode("int")
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkCall.newTree(
newIdentNode("default"),
nnkBracketExpr.newTree(
newIdentNode("array"),
newIdentNode("N"),
newIdentNode("int")
)
)
)
),
nnkDiscardStmt.newTree(
nnkCall.newTree(
nnkBracketExpr.newTree(
newIdentNode("y"),
newLit(1)
)
)
)
)
Stats
- GCC
11.4.0
- Clang
14.0.0
- NodeJS
19.0
- Created
2024-01-12T13:33:25Z
- Comments
1
- Commands
nim c --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 16 minutes
bisecting 7
commits at 0
commits per second
from nim.
Workaround
proc y[N: static int](): array[N, int] = default(array[N, int])
discard y[1]()
from nim.
Further simplified:
proc y[N]() =
var x: array[N, int]
y[1]()
Setting N to range[0..1]
works
from nim.
Probably caused by:
proc y[N]() =
echo N
y[1]()
int
Somehow semgnrc
receives N
as skType
instead of skGenericParam
and calls newSymNodeTypeDesc
which converts it to typedesc[int]
(?)
It looks like skGenericParam
for tfWildcard
is just never triggered, it is deleted immediately here
from nim.
The question is do we want y[1]()
to work without N: static
, or are we fine with just making this not crash (which is why this code crashes):
var x: array[int, int]
Making y[1]()
work is significantly harder because the compiler doesn't know how to handle an skGenericParam
that can become a type in generic procs (same problem does not exist in generic type bodies like Foo[N] = object
).
from nim.
Sorry for yet another comment, but the issue causing the crash here (array[int, int]
) is the same as #17163.
Related issues for N
turning 1
to the type int
are #12664 (generic types) and #13906 (generic procs).
from nim.
Make it not crash please.
from nim.
Related Issues (20)
- Wrong stack trace when exception is raised in template HOT 1
- Error: cannot evaluate at compile time: foo HOT 4
- nim check crashes
- Any differnece between value types and reference types for `=sink` ? HOT 1
- Simple destructor code gives invalid C HOT 4
- Compiler crashes with infinite recursion for nested generic instantiation with static[int]
- The stdout.write doesn't print to terminal until new line symbol is sent HOT 3
- Gc_ref(x: string) and Gc_ref[T](x: seq[T]) doesn't exists anymore ? HOT 2
- tasks.toTask Doesn't Expect a Dot Expression
- [potential bug] SIGILL at `renderer.atom()`
- SIGSEGV due to freeing of uninitialized local string, during exception handling HOT 21
- Parameterless Conversions and Upcasting Are Broken HOT 3
- Thread var cannot be returned from a proc. Causing SIGSEV HOT 4
- C++ generation issue when wrapping constructors HOT 11
- C++ compilation fails with: 'T1_' was not declared in this scope HOT 2
- Overloaded template causes `untyped` param is resolved when called. HOT 6
- Add `hash()` for `Path`
- [C, C++ & ObjC codegen] Incompatible pointer types used in codegen (an error on GCC 14) HOT 1
- Why this code produces a compiler warningοΌ Warning: `=destroy`(t.c) can raise an unlisted exception: Exception HOT 1
- Consider migrating from pcre to pcre2 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from nim.