Open codehz opened 3 years ago
Try compiling with --cursorInference:off
oh, I forgot to add --gc:arc again... new error:
/root/proj/nim-1.4.2/bin/nim_temp c --cursorInference:off --gc:arc test_complex.ni
m
Hint: used config file '/root/proj/nim-1.4.2/config/nim.cfg' [Conf]
Hint: used config file '/root/proj/nim-1.4.2/config/config.nims' [Conf]
Hint: used config file '/tmp/xmlio/tests/config.nims' [Conf]
...................................................
Error: internal error: cannot map the empty seq type to a C type
Traceback (most recent call last)
/root/proj/nim-1.4.2/compiler/nim.nim(118) nim
/root/proj/nim-1.4.2/compiler/nim.nim(83) handleCmdLine
/root/proj/nim-1.4.2/compiler/main.nim(245) mainCommand
/root/proj/nim-1.4.2/compiler/main.nim(210) compileToBackend
/root/proj/nim-1.4.2/compiler/main.nim(86) commandCompileToC
/root/proj/nim-1.4.2/compiler/modules.nim(160) compileProject
/root/proj/nim-1.4.2/compiler/modules.nim(96) compileModule
/root/proj/nim-1.4.2/compiler/passes.nim(208) processModule
/root/proj/nim-1.4.2/compiler/passes.nim(86) processTopLevelStmt
/root/proj/nim-1.4.2/compiler/cgen.nim(1947) myProcess
/root/proj/nim-1.4.2/compiler/cgen.nim(992) genProcBody
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2819) expr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1231) genTryGoto
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2545) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2736) expr
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(783) genCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(780) genAsgnCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(379) genPrefixCall
/root/proj/nim-1.4.2/compiler/cgen.nim(619) initLocExpr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2666) expr
/root/proj/nim-1.4.2/compiler/cgen.nim(1243) genProc
/root/proj/nim-1.4.2/compiler/cgen.nim(1185) genProcNoForward
/root/proj/nim-1.4.2/compiler/cgen.nim(1051) genProcAux
/root/proj/nim-1.4.2/compiler/cgen.nim(992) genProcBody
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
(6 calls omitted) ...
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(385) genPrefixCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(366) genParams
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(290) genArg
/root/proj/nim-1.4.2/compiler/cgen.nim(632) initLocExprSingleUse
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2784) expr
/root/proj/nim-1.4.2/compiler/cgen.nim(1243) genProc
/root/proj/nim-1.4.2/compiler/cgen.nim(1185) genProcNoForward
/root/proj/nim-1.4.2/compiler/cgen.nim(1051) genProcAux
/root/proj/nim-1.4.2/compiler/cgen.nim(992) genProcBody
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2819) expr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1231) genTryGoto
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2807) expr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1574) genAsgn
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(129) loadInto
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(780) genAsgnCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(385) genPrefixCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(366) genParams
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(290) genArg
/root/proj/nim-1.4.2/compiler/cgen.nim(632) initLocExprSingleUse
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2771) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2545) genStmtListExpr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2736) expr
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(783) genCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(780) genAsgnCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(385) genPrefixCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(366) genParams
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(290) genArg
/root/proj/nim-1.4.2/compiler/cgen.nim(632) initLocExprSingleUse
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2771) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2545) genStmtListExpr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2807) expr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1574) genAsgn
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(129) loadInto
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(780) genAsgnCall
/root/proj/nim-1.4.2/compiler/ccgcalls.nim(379) genPrefixCall
/root/proj/nim-1.4.2/compiler/cgen.nim(619) initLocExpr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2666) expr
/root/proj/nim-1.4.2/compiler/cgen.nim(1243) genProc
/root/proj/nim-1.4.2/compiler/cgen.nim(1185) genProcNoForward
/root/proj/nim-1.4.2/compiler/cgen.nim(1051) genProcAux
/root/proj/nim-1.4.2/compiler/cgen.nim(992) genProcBody
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2545) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2773) expr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(451) genIf
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2556) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2801) expr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1574) genAsgn
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(139) loadInto
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2784) expr
/root/proj/nim-1.4.2/compiler/cgen.nim(1243) genProc
/root/proj/nim-1.4.2/compiler/cgen.nim(1185) genProcNoForward
/root/proj/nim-1.4.2/compiler/cgen.nim(1051) genProcAux
/root/proj/nim-1.4.2/compiler/cgen.nim(992) genProcBody
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2772) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2545) genStmtList
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1581) genStmts
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2771) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2552) genStmtListExpr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2807) expr
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(1574) genAsgn
/root/proj/nim-1.4.2/compiler/ccgstmts.nim(139) loadInto
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(2752) expr
/root/proj/nim-1.4.2/compiler/ccgexprs.nim(1498) genSeqConstr
/root/proj/nim-1.4.2/compiler/ccgtypes.nim(428) getSeqPayloadType
/root/proj/nim-1.4.2/compiler/ccgtypes.nim(402) getTypeDescWeak
/root/proj/nim-1.4.2/compiler/msgs.nim(583) internalErrorImpl
/root/proj/nim-1.4.2/compiler/msgs.nim(539) liMessage
/root/proj/nim-1.4.2/compiler/msgs.nim(406) handleError
/root/proj/nim-1.4.2/compiler/msgs.nim(395) quit
Can you minimize it further, please?
I think it is related to https://github.com/nim-lang/Nim/issues/16847 Because when I try to expand the macro manually, the crash is also disappear...
So should this work in arc?
proc typeIdStorage[T](): var TypeId =
var storage {.global.}: TypeId
return storage
Why shouldn't it?
Example
Demo: try https://github.com/codehz/xmlio/blob/0d5633937f375b998276d552d0244f14f252755c/tests/test_complex.nim (download full project at first)
Current Output
Expected Output
no crash at compile time
Additional Information
also confirmed in devel version