Skip to content

infinite recursion while processing tuple definition containing proc type refering to itself #1526

Open
@alaviss

Description

@alaviss

Example

type VT = tuple
  prc: proc(): ref VT

Actual Output

........................................................Traceback (most recent call last)
nim.nim(156)             nim
nim.nim(91)              handleCmdLine
main.nim(542)            mainCommand
main.nim(494)            compileToBackend
main.nim(217)            commandCompileToC
modules.nim(218)         compileProject
modules.nim(133)         compileModule
passes.nim(275)          processModule
passes.nim(102)          processTopLevelStmt
sem.nim(988)             myProcess
sem.nim(905)             semStmtAndGenerateGenerics nkStmtList 383171 test.nim(1, 5)
semstmts.nim(3385)       semStmt
semexprs.nim(1443)       semExprNoType
semexprs.nim(3860)       semExpr nkStmtList 383171 test.nim(1, 5)
semstmts.nim(3281)       semStmtList nkStmtList 383171 test.nim(1, 5)
semexprs.nim(3867)       semExpr nkTypeSection 383158 test.nim(1, 5)
semstmts.nim(2107)       semTypeSection
semstmts.nim(2083)       typeSectionFinalPass
semtypes.nim(2336)       semTypeNode nkTupleTy 383162 test.nim(1, 10)
semtypes.nim(643)        semTuple nkTupleTy 383162 test.nim(1, 10)
semtypes.nim(2362)       semTypeNode nkProcTy 383165 test.nim(2, 7)
semtypes.nim(1936)       semProcTypeWithScope
semtypes.nim(1656)       semProcTypeNode
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
(1874 calls omitted) ...
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1342)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1357)       liftParamType
semtypes.nim(1300)       liftParamType
arc.nim(63)              nimIncRef
arithmetics.nim          -%
Error: call depth limit reached in a debug build (2000 function calls). You can change it with -d:nimCallDepthLimit=<int> but really try to avoid deep recursions instead.

Expected Output

Should compile normally

Additional Information

  • Turn tuple -> object and the problem disappears

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcompiler/semRelated to semantic-analysis system of the compiler

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions