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
Type with generic static value can't be used before value type declaration #21482
Comments
github-actions
bot
added
the
stale
Staled PR/issues; remove the label after fixing them
label
Jun 1, 2023
!nim c type
X[o: static[auto]] = object
v: typeof(o)
Y = object
a: X[default(ref Z)]
Z = object
b: X[default(ref Y)] |
@juancarlospaco (contributor) devel :-1: FAILOutput
Stats
IRASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("X"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("o"),
nnkBracketExpr.newTree(
newIdentNode("static"),
newIdentNode("auto")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkCall.newTree(
newIdentNode("typeof"),
newIdentNode("o")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("Y"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("a"),
nnkBracketExpr.newTree(
newIdentNode("X"),
nnkCall.newTree(
newIdentNode("default"),
nnkRefTy.newTree(
newIdentNode("Z")
)
)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("Z"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("b"),
nnkBracketExpr.newTree(
newIdentNode("X"),
nnkCall.newTree(
newIdentNode("default"),
nnkRefTy.newTree(
newIdentNode("Y")
)
)
),
newEmptyNode()
)
)
)
)
)
) stable :-1: FAILOutput
Stats
IRASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("X"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("o"),
nnkBracketExpr.newTree(
newIdentNode("static"),
newIdentNode("auto")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkCall.newTree(
newIdentNode("typeof"),
newIdentNode("o")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("Y"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("a"),
nnkBracketExpr.newTree(
newIdentNode("X"),
nnkCall.newTree(
newIdentNode("default"),
nnkRefTy.newTree(
newIdentNode("Z")
)
)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("Z"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("b"),
nnkBracketExpr.newTree(
newIdentNode("X"),
nnkCall.newTree(
newIdentNode("default"),
nnkRefTy.newTree(
newIdentNode("Y")
)
)
),
newEmptyNode()
)
)
)
)
)
) 1.6.0 :-1: FAILOutput
Stats
IRASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("X"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("o"),
nnkBracketExpr.newTree(
newIdentNode("static"),
newIdentNode("auto")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkCall.newTree(
newIdentNode("typeof"),
newIdentNode("o")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("Y"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("a"),
nnkBracketExpr.newTree(
newIdentNode("X"),
nnkCall.newTree(
newIdentNode("default"),
nnkRefTy.newTree(
newIdentNode("Z")
)
)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("Z"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("b"),
nnkBracketExpr.newTree(
newIdentNode("X"),
nnkCall.newTree(
newIdentNode("default"),
nnkRefTy.newTree(
newIdentNode("Y")
)
)
),
newEmptyNode()
)
)
)
)
)
) 1.4.0 :-1: FAILOutput
Stats
IRASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("X"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("o"),
nnkBracketExpr.newTree(
newIdentNode("static"),
newIdentNode("auto")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkCall.newTree(
newIdentNode("typeof"),
newIdentNode("o")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("Y"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("a"),
nnkBracketExpr.newTree(
newIdentNode("X"),
nnkCall.newTree(
newIdentNode("default"),
nnkRefTy.newTree(
newIdentNode("Z")
)
)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("Z"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("b"),
nnkBracketExpr.newTree(
newIdentNode("X"),
nnkCall.newTree(
newIdentNode("default"),
nnkRefTy.newTree(
newIdentNode("Y")
)
)
),
newEmptyNode()
)
)
)
)
)
) 1.2.0 :-1: FAILOutput
Stats
IRASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("X"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("o"),
nnkBracketExpr.newTree(
newIdentNode("static"),
newIdentNode("auto")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkCall.newTree(
newIdentNode("typeof"),
newIdentNode("o")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("Y"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("a"),
nnkBracketExpr.newTree(
newIdentNode("X"),
nnkCall.newTree(
newIdentNode("default"),
nnkRefTy.newTree(
newIdentNode("Z")
)
)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("Z"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("b"),
nnkBracketExpr.newTree(
newIdentNode("X"),
nnkCall.newTree(
newIdentNode("default"),
nnkRefTy.newTree(
newIdentNode("Y")
)
)
),
newEmptyNode()
)
)
)
)
)
) 1.0.0 :-1: FAILOutput
Stats
IRASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("X"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("o"),
nnkBracketExpr.newTree(
newIdentNode("static"),
newIdentNode("auto")
),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("v"),
nnkCall.newTree(
newIdentNode("typeof"),
newIdentNode("o")
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("Y"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("a"),
nnkBracketExpr.newTree(
newIdentNode("X"),
nnkCall.newTree(
newIdentNode("default"),
nnkRefTy.newTree(
newIdentNode("Z")
)
)
),
newEmptyNode()
)
)
)
),
nnkTypeDef.newTree(
newIdentNode("Z"),
newEmptyNode(),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("b"),
nnkBracketExpr.newTree(
newIdentNode("X"),
nnkCall.newTree(
newIdentNode("default"),
nnkRefTy.newTree(
newIdentNode("Y")
)
)
),
newEmptyNode()
)
)
)
)
)
) 40 minutes bisecting 6 commits at 0 commits per second.
|
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Description
Nim Version
Nim Compiler Version 1.6.10 [Linux: amd64]
Compiled at 2022-11-21
Copyright (c) 2006-2021 by Andreas Rumpf
git hash: f151925
active boot switches: -d:release
Current Output
Expected Output
Possible Solution
No response
Additional Information
No response
The text was updated successfully, but these errors were encountered: