-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
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
Segfault with illegal recursion in generic type #22707
Labels
Comments
!nim c type Data[T] = object
data: Data[T]
let data = Data[int]() |
@juancarlospaco (collaborator) devel 👎 FAILOutput
Stats
IRCompiled filesize0 bytes (0 bytes)
ASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Data"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("data"),
nnkBracketExpr.newTree(
newIdentNode("Data"),
newIdentNode("T")
),
newEmptyNode()
)
)
)
)
),
nnkLetSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("data"),
newEmptyNode(),
nnkCall.newTree(
nnkBracketExpr.newTree(
newIdentNode("Data"),
newIdentNode("int")
)
)
)
)
) stable 👎 FAILOutput
Stats
IRCompiled filesize0 bytes (0 bytes)
ASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Data"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("data"),
nnkBracketExpr.newTree(
newIdentNode("Data"),
newIdentNode("T")
),
newEmptyNode()
)
)
)
)
),
nnkLetSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("data"),
newEmptyNode(),
nnkCall.newTree(
nnkBracketExpr.newTree(
newIdentNode("Data"),
newIdentNode("int")
)
)
)
)
) 2.0.0 👎 FAILOutput
Stats
IRCompiled filesize0 bytes (0 bytes)
ASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Data"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("data"),
nnkBracketExpr.newTree(
newIdentNode("Data"),
newIdentNode("T")
),
newEmptyNode()
)
)
)
)
),
nnkLetSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("data"),
newEmptyNode(),
nnkCall.newTree(
nnkBracketExpr.newTree(
newIdentNode("Data"),
newIdentNode("int")
)
)
)
)
) 1.6.14 👎 FAILOutput
Stats
IRCompiled filesize0 bytes (0 bytes)
ASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Data"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("data"),
nnkBracketExpr.newTree(
newIdentNode("Data"),
newIdentNode("T")
),
newEmptyNode()
)
)
)
)
),
nnkLetSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("data"),
newEmptyNode(),
nnkCall.newTree(
nnkBracketExpr.newTree(
newIdentNode("Data"),
newIdentNode("int")
)
)
)
)
) 1.4.8 👎 FAILOutput
Stats
IRCompiled filesize0 bytes (0 bytes)
ASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Data"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("data"),
nnkBracketExpr.newTree(
newIdentNode("Data"),
newIdentNode("T")
),
newEmptyNode()
)
)
)
)
),
nnkLetSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("data"),
newEmptyNode(),
nnkCall.newTree(
nnkBracketExpr.newTree(
newIdentNode("Data"),
newIdentNode("int")
)
)
)
)
) 1.2.18 👎 FAILOutput
Stats
IRCompiled filesize0 bytes (0 bytes)
ASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Data"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("data"),
nnkBracketExpr.newTree(
newIdentNode("Data"),
newIdentNode("T")
),
newEmptyNode()
)
)
)
)
),
nnkLetSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("data"),
newEmptyNode(),
nnkCall.newTree(
nnkBracketExpr.newTree(
newIdentNode("Data"),
newIdentNode("int")
)
)
)
)
) 1.0.10 👎 FAILOutput
Stats
IRCompiled filesize0 bytes (0 bytes)
ASTnnkStmtList.newTree(
nnkTypeSection.newTree(
nnkTypeDef.newTree(
newIdentNode("Data"),
nnkGenericParams.newTree(
nnkIdentDefs.newTree(
newIdentNode("T"),
newEmptyNode(),
newEmptyNode()
)
),
nnkObjectTy.newTree(
newEmptyNode(),
newEmptyNode(),
nnkRecList.newTree(
nnkIdentDefs.newTree(
newIdentNode("data"),
nnkBracketExpr.newTree(
newIdentNode("Data"),
newIdentNode("T")
),
newEmptyNode()
)
)
)
)
),
nnkLetSection.newTree(
nnkIdentDefs.newTree(
newIdentNode("data"),
newEmptyNode(),
nnkCall.newTree(
nnkBracketExpr.newTree(
newIdentNode("Data"),
newIdentNode("int")
)
)
)
)
) Stats
🤖 Bug found in |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Description
Attempting to instantiate the type shown below causes a segmentation fault instead of showing an error about infinite recursion.
Nim Version
38b5823
and various versions on the nim playground
Current Output
Expected Output
Possible Solution
No response
Additional Information
Potentially related but separate issue: #19271
The text was updated successfully, but these errors were encountered: