Comments (4)
!nim c
type Query = ref object
iterator pairs(query: Query): (int, (string, float32)) =
var output: (int, (string, float32)) = (0, ("foo", 3.14))
for id in @[ 0, 1, 2 ]:
output[0] = id
yield output
for id, (str, num) in Query():
discard
from nim.
🐧 Linux bisect by @juancarlospaco (collaborator)
devel 👎 FAIL
Output
IR
Compiled filesize0 (0 bytes)
Stats
- Started
2024-08-30T02:02:48
- Finished
2024-08-30T02:02:48
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Query"),
newEmptyNode(),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
newEmptyNode()
)
)
)
),
nnkIteratorDef.newTree(
newIdentNode("pairs"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
nnkTupleConstr.newTree(
newIdentNode("int"),
nnkTupleConstr.newTree(
newIdentNode("string"),
newIdentNode("float32")
)
),
nnkIdentDefs.newTree(
newIdentNode("query"),
newIdentNode("Query"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("output"),
nnkTupleConstr.newTree(
newIdentNode("int"),
nnkTupleConstr.newTree(
newIdentNode("string"),
newIdentNode("float32")
)
),
nnkTupleConstr.newTree(
newLit(0),
nnkTupleConstr.newTree(
newLit("foo"),
newLit(3.14)
)
)
)
),
nnkForStmt.newTree(
newIdentNode("id"),
nnkPrefix.newTree(
newIdentNode("@"),
nnkBracket.newTree(
newLit(0),
newLit(1),
newLit(2)
)
),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkBracketExpr.newTree(
newIdentNode("output"),
newLit(0)
),
newIdentNode("id")
),
nnkYieldStmt.newTree(
newIdentNode("output")
)
)
)
)
),
nnkForStmt.newTree(
newIdentNode("id"),
nnkVarTuple.newTree(
newIdentNode("str"),
newIdentNode("num"),
newEmptyNode()
),
nnkCall.newTree(
newIdentNode("Query")
),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
)
)
stable 👎 FAIL
Output
IR
Compiled filesize0 (0 bytes)
Stats
- Started
2024-08-30T02:02:52
- Finished
2024-08-30T02:02:52
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Query"),
newEmptyNode(),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
newEmptyNode()
)
)
)
),
nnkIteratorDef.newTree(
newIdentNode("pairs"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
nnkTupleConstr.newTree(
newIdentNode("int"),
nnkTupleConstr.newTree(
newIdentNode("string"),
newIdentNode("float32")
)
),
nnkIdentDefs.newTree(
newIdentNode("query"),
newIdentNode("Query"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("output"),
nnkTupleConstr.newTree(
newIdentNode("int"),
nnkTupleConstr.newTree(
newIdentNode("string"),
newIdentNode("float32")
)
),
nnkTupleConstr.newTree(
newLit(0),
nnkTupleConstr.newTree(
newLit("foo"),
newLit(3.14)
)
)
)
),
nnkForStmt.newTree(
newIdentNode("id"),
nnkPrefix.newTree(
newIdentNode("@"),
nnkBracket.newTree(
newLit(0),
newLit(1),
newLit(2)
)
),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkBracketExpr.newTree(
newIdentNode("output"),
newLit(0)
),
newIdentNode("id")
),
nnkYieldStmt.newTree(
newIdentNode("output")
)
)
)
)
),
nnkForStmt.newTree(
newIdentNode("id"),
nnkVarTuple.newTree(
newIdentNode("str"),
newIdentNode("num"),
newEmptyNode()
),
nnkCall.newTree(
newIdentNode("Query")
),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
)
)
2.0.8 👎 FAIL
Output
IR
Compiled filesize0 (0 bytes)
Stats
- Started
2024-08-30T02:02:52
- Finished
2024-08-30T02:02:53
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Query"),
newEmptyNode(),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
newEmptyNode()
)
)
)
),
nnkIteratorDef.newTree(
newIdentNode("pairs"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
nnkTupleConstr.newTree(
newIdentNode("int"),
nnkTupleConstr.newTree(
newIdentNode("string"),
newIdentNode("float32")
)
),
nnkIdentDefs.newTree(
newIdentNode("query"),
newIdentNode("Query"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("output"),
nnkTupleConstr.newTree(
newIdentNode("int"),
nnkTupleConstr.newTree(
newIdentNode("string"),
newIdentNode("float32")
)
),
nnkTupleConstr.newTree(
newLit(0),
nnkTupleConstr.newTree(
newLit("foo"),
newLit(3.14)
)
)
)
),
nnkForStmt.newTree(
newIdentNode("id"),
nnkPrefix.newTree(
newIdentNode("@"),
nnkBracket.newTree(
newLit(0),
newLit(1),
newLit(2)
)
),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkBracketExpr.newTree(
newIdentNode("output"),
newLit(0)
),
newIdentNode("id")
),
nnkYieldStmt.newTree(
newIdentNode("output")
)
)
)
)
),
nnkForStmt.newTree(
newIdentNode("id"),
nnkVarTuple.newTree(
newIdentNode("str"),
newIdentNode("num"),
newEmptyNode()
),
nnkCall.newTree(
newIdentNode("Query")
),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
)
)
2.0.0 👎 FAIL
Output
IR
Compiled filesize0 (0 bytes)
Stats
- Started
2024-08-30T02:02:56
- Finished
2024-08-30T02:02:56
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Query"),
newEmptyNode(),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
newEmptyNode()
)
)
)
),
nnkIteratorDef.newTree(
newIdentNode("pairs"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
nnkTupleConstr.newTree(
newIdentNode("int"),
nnkTupleConstr.newTree(
newIdentNode("string"),
newIdentNode("float32")
)
),
nnkIdentDefs.newTree(
newIdentNode("query"),
newIdentNode("Query"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("output"),
nnkTupleConstr.newTree(
newIdentNode("int"),
nnkTupleConstr.newTree(
newIdentNode("string"),
newIdentNode("float32")
)
),
nnkTupleConstr.newTree(
newLit(0),
nnkTupleConstr.newTree(
newLit("foo"),
newLit(3.14)
)
)
)
),
nnkForStmt.newTree(
newIdentNode("id"),
nnkPrefix.newTree(
newIdentNode("@"),
nnkBracket.newTree(
newLit(0),
newLit(1),
newLit(2)
)
),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkBracketExpr.newTree(
newIdentNode("output"),
newLit(0)
),
newIdentNode("id")
),
nnkYieldStmt.newTree(
newIdentNode("output")
)
)
)
)
),
nnkForStmt.newTree(
newIdentNode("id"),
nnkVarTuple.newTree(
newIdentNode("str"),
newIdentNode("num"),
newEmptyNode()
),
nnkCall.newTree(
newIdentNode("Query")
),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
)
)
1.6.20 👎 FAIL
Output
IR
Compiled filesize0 (0 bytes)
Stats
- Started
2024-08-30T02:03:00
- Finished
2024-08-30T02:03:00
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Query"),
newEmptyNode(),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
newEmptyNode()
)
)
)
),
nnkIteratorDef.newTree(
newIdentNode("pairs"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
nnkTupleConstr.newTree(
newIdentNode("int"),
nnkTupleConstr.newTree(
newIdentNode("string"),
newIdentNode("float32")
)
),
nnkIdentDefs.newTree(
newIdentNode("query"),
newIdentNode("Query"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("output"),
nnkTupleConstr.newTree(
newIdentNode("int"),
nnkTupleConstr.newTree(
newIdentNode("string"),
newIdentNode("float32")
)
),
nnkTupleConstr.newTree(
newLit(0),
nnkTupleConstr.newTree(
newLit("foo"),
newLit(3.14)
)
)
)
),
nnkForStmt.newTree(
newIdentNode("id"),
nnkPrefix.newTree(
newIdentNode("@"),
nnkBracket.newTree(
newLit(0),
newLit(1),
newLit(2)
)
),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkBracketExpr.newTree(
newIdentNode("output"),
newLit(0)
),
newIdentNode("id")
),
nnkYieldStmt.newTree(
newIdentNode("output")
)
)
)
)
),
nnkForStmt.newTree(
newIdentNode("id"),
nnkVarTuple.newTree(
newIdentNode("str"),
newIdentNode("num"),
newEmptyNode()
),
nnkCall.newTree(
newIdentNode("Query")
),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
)
)
1.4.8 👎 FAIL
Output
IR
Compiled filesize0 (0 bytes)
Stats
- Started
2024-08-30T02:03:02
- Finished
2024-08-30T02:03:02
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Query"),
newEmptyNode(),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
newEmptyNode()
)
)
)
),
nnkIteratorDef.newTree(
newIdentNode("pairs"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
nnkPar.newTree(
newIdentNode("int"),
nnkPar.newTree(
newIdentNode("string"),
newIdentNode("float32")
)
),
nnkIdentDefs.newTree(
newIdentNode("query"),
newIdentNode("Query"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("output"),
nnkPar.newTree(
newIdentNode("int"),
nnkPar.newTree(
newIdentNode("string"),
newIdentNode("float32")
)
),
nnkPar.newTree(
newLit(0),
nnkPar.newTree(
newLit("foo"),
newLit(3.14)
)
)
)
),
nnkForStmt.newTree(
newIdentNode("id"),
nnkPrefix.newTree(
newIdentNode("@"),
nnkBracket.newTree(
newLit(0),
newLit(1),
newLit(2)
)
),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkBracketExpr.newTree(
newIdentNode("output"),
newLit(0)
),
newIdentNode("id")
),
nnkYieldStmt.newTree(
newIdentNode("output")
)
)
)
)
),
nnkForStmt.newTree(
newIdentNode("id"),
nnkVarTuple.newTree(
newIdentNode("str"),
newIdentNode("num"),
newEmptyNode()
),
nnkCall.newTree(
newIdentNode("Query")
),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
)
)
1.2.18 👎 FAIL
Output
IR
Compiled filesize0 (0 bytes)
Stats
- Started
2024-08-30T02:03:04
- Finished
2024-08-30T02:03:04
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Query"),
newEmptyNode(),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
newEmptyNode()
)
)
)
),
nnkIteratorDef.newTree(
newIdentNode("pairs"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
nnkPar.newTree(
newIdentNode("int"),
nnkPar.newTree(
newIdentNode("string"),
newIdentNode("float32")
)
),
nnkIdentDefs.newTree(
newIdentNode("query"),
newIdentNode("Query"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("output"),
nnkPar.newTree(
newIdentNode("int"),
nnkPar.newTree(
newIdentNode("string"),
newIdentNode("float32")
)
),
nnkPar.newTree(
newLit(0),
nnkPar.newTree(
newLit("foo"),
newLit(3.14)
)
)
)
),
nnkForStmt.newTree(
newIdentNode("id"),
nnkPrefix.newTree(
newIdentNode("@"),
nnkBracket.newTree(
newLit(0),
newLit(1),
newLit(2)
)
),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkBracketExpr.newTree(
newIdentNode("output"),
newLit(0)
),
newIdentNode("id")
),
nnkYieldStmt.newTree(
newIdentNode("output")
)
)
)
)
),
nnkForStmt.newTree(
newIdentNode("id"),
nnkVarTuple.newTree(
newIdentNode("str"),
newIdentNode("num"),
newEmptyNode()
),
nnkCall.newTree(
newIdentNode("Query")
),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
)
)
1.0.10 👎 FAIL
Output
IR
Compiled filesize0 (0 bytes)
Stats
- Started
2024-08-30T02:03:07
- Finished
2024-08-30T02:03:07
- Duration
AST
nnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Query"),
newEmptyNode(),
nnkRefTy.newTree(
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
newEmptyNode()
)
)
)
),
nnkIteratorDef.newTree(
newIdentNode("pairs"),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
nnkPar.newTree(
newIdentNode("int"),
nnkPar.newTree(
newIdentNode("string"),
newIdentNode("float32")
)
),
nnkIdentDefs.newTree(
newIdentNode("query"),
newIdentNode("Query"),
newEmptyNode()
)
),
newEmptyNode(),
newEmptyNode(),
nnkStmtList.newTree(
nnkVarSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("output"),
nnkPar.newTree(
newIdentNode("int"),
nnkPar.newTree(
newIdentNode("string"),
newIdentNode("float32")
)
),
nnkPar.newTree(
newLit(0),
nnkPar.newTree(
newLit("foo"),
newLit(3.14)
)
)
)
),
nnkForStmt.newTree(
newIdentNode("id"),
nnkPrefix.newTree(
newIdentNode("@"),
nnkBracket.newTree(
newLit(0),
newLit(1),
newLit(2)
)
),
nnkStmtList.newTree(
nnkAsgn.newTree(
nnkBracketExpr.newTree(
newIdentNode("output"),
newLit(0)
),
newIdentNode("id")
),
nnkYieldStmt.newTree(
newIdentNode("output")
)
)
)
)
),
nnkForStmt.newTree(
newIdentNode("id"),
nnkVarTuple.newTree(
newIdentNode("str"),
newIdentNode("num"),
newEmptyNode()
),
nnkCall.newTree(
newIdentNode("Query")
),
nnkStmtList.newTree(
nnkDiscardStmt.newTree(
newEmptyNode()
)
)
)
)
Stats
- GCC
11.4.0
- Clang
14.0.0
- NodeJS
20.4
- Created
2024-08-30T02:02:20Z
- 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 21 mins
bisecting 8
commits at 0
commits per second
from nim.
Might be worth mentioning a similar bug I reported here: #23454
from nim.
Unpacking the tuple with let
also works
for a in Query().pairs:
let (id, (str, num)) = a
from nim.
Related Issues (20)
- Suboptimal for-loop transformation in regards to closure iters
- SIGSEGV: Object with pure enum in proc HOT 3
- Parameter not matched in template following symchoice changes HOT 13
- Output executable is not updated after changing build mode HOT 2
- Cast seq to string, heap buffer overflow with stdlib assuming terminating '\0' HOT 5
- Objects casting and custom destructor HOT 3
- `IndexDefect` on `--verbosity:3` when compiling nimbus HOT 1
- GeneriC $ proc fails to resolve HOT 4
- Double template invocation causes bad codegen (duplicate gensym) HOT 4
- SIGSEGV from OpenSSL when used in async context
- js codegen bug for `case` statement with just `else` branch HOT 4
- Unexpected behavior with range types and custom operators HOT 8
- Invalid C code generated for `lent array` in `tuple`
- Recursive concept that has a function with the same name as an existing one causes compiler to read from `nil` HOT 2
- Compiler error when passing a generic parameter restricted by some concept as a generic parameter to some type which restricts that parameter by the same concept. HOT 2
- compile-time int conversion fails in `when false` section
- Cannot instantiate `static int` with computed value
- Compiler crash on template evaluation for generic `static int` HOT 1
- Cannot compute `sizeof` generic type in alias
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.