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
picks wrong branch with static int
#22474
Labels
Comments
!nim c type X[bits: static int] = object
when bits >= 256:
data32* {.align: 32.}: byte
else:
data16* {.align: 16.}: byte
proc f*(v: X[256]) {.exportc.} =
echo v.data32 |
@ringabout (member) devel 👎 FAILOutput
Stats
IRCompiled filesize0 bytes (0 bytes)
ASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("X"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("bits"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkRecWhen.newTree(
nnkElifBranch.newTree(
nnkInfix.newTree(
newIdentNode(">="),
newIdentNode("bits"),
newLit(256)
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPragmaExpr.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("data32")
),
nnkPragma.newTree(
nnkExprColonExpr.newTree(
newIdentNode("align"),
newLit(32)
)
)
),
newIdentNode("byte"),
newEmptyNode()
)
)
),
nnkElse.newTree(
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPragmaExpr.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("data16")
),
nnkPragma.newTree(
nnkExprColonExpr.newTree(
newIdentNode("align"),
newLit(16)
)
)
),
newIdentNode("byte"),
newEmptyNode()
)
)
)
)
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("f")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkBracketExpr.newTree(
newIdentNode("X"),
newLit(256)
),
newEmptyNode()
)
),
nnkPragma.newTree(
newIdentNode("exportc")
),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
nnkDotExpr.newTree(
newIdentNode("v"),
newIdentNode("data32")
)
)
)
)
) stable 👎 FAILOutput
Stats
IRCompiled filesize0 bytes (0 bytes)
ASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("X"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("bits"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkRecWhen.newTree(
nnkElifBranch.newTree(
nnkInfix.newTree(
newIdentNode(">="),
newIdentNode("bits"),
newLit(256)
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPragmaExpr.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("data32")
),
nnkPragma.newTree(
nnkExprColonExpr.newTree(
newIdentNode("align"),
newLit(32)
)
)
),
newIdentNode("byte"),
newEmptyNode()
)
)
),
nnkElse.newTree(
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPragmaExpr.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("data16")
),
nnkPragma.newTree(
nnkExprColonExpr.newTree(
newIdentNode("align"),
newLit(16)
)
)
),
newIdentNode("byte"),
newEmptyNode()
)
)
)
)
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("f")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkBracketExpr.newTree(
newIdentNode("X"),
newLit(256)
),
newEmptyNode()
)
),
nnkPragma.newTree(
newIdentNode("exportc")
),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
nnkDotExpr.newTree(
newIdentNode("v"),
newIdentNode("data32")
)
)
)
)
) 2.0.0 👎 FAILOutput
Stats
IRCompiled filesize0 bytes (0 bytes)
ASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("X"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("bits"),
nnkCommand.newTree(
newIdentNode("static"),
newIdentNode("int")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkRecWhen.newTree(
nnkElifBranch.newTree(
nnkInfix.newTree(
newIdentNode(">="),
newIdentNode("bits"),
newLit(256)
),
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPragmaExpr.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("data32")
),
nnkPragma.newTree(
nnkExprColonExpr.newTree(
newIdentNode("align"),
newLit(32)
)
)
),
newIdentNode("byte"),
newEmptyNode()
)
)
),
nnkElse.newTree(
nnkRecList.newTree(
nnkIdentDefs.newTree(
nnkPragmaExpr.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("data16")
),
nnkPragma.newTree(
nnkExprColonExpr.newTree(
newIdentNode("align"),
newLit(16)
)
)
),
newIdentNode("byte"),
newEmptyNode()
)
)
)
)
)
)
)
),
nnkProcDef.newTree(
nnkPostfix.newTree(
newIdentNode("*"),
newIdentNode("f")
),
newEmptyNode(),
newEmptyNode(),
nnkFormalParams.newTree(
newEmptyNode(),
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkBracketExpr.newTree(
newIdentNode("X"),
newLit(256)
),
newEmptyNode()
)
),
nnkPragma.newTree(
newIdentNode("exportc")
),
newEmptyNode(),
nnkStmtList.newTree(
nnkCommand.newTree(
newIdentNode("echo"),
nnkDotExpr.newTree(
newIdentNode("v"),
newIdentNode("data32")
)
)
)
)
) 1.6.0 👍 |
beef331
added a commit
to beef331/Nim
that referenced
this issue
Aug 15, 2023
the actual problem here is the template evaluation of |
narimiran
pushed a commit
that referenced
this issue
Aug 22, 2023
Ping @narimiran please backport to the 2.0 line. (cherry picked from commit 6c4e783)
narimiran
pushed a commit
that referenced
this issue
Sep 11, 2023
Ping @narimiran please backport to the 2.0 line. (cherry picked from commit 6c4e783)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Description
Nim Version
Current Output
Expected Output
No response
Possible Solution
No response
Additional Information
No response
The text was updated successfully, but these errors were encountered: