nim-lang / Nim

Nim is a statically typed compiled systems programming language. It combines successful concepts from mature languages like Python, Ada and Modula. Its design focuses on efficiency, expressiveness, and elegance (in that order of priority).
https://nim-lang.org
Other
16.54k stars 1.47k forks source link

Nim unhandled exception: index out of bounds, the container is empty #14657

Open yglukhov opened 4 years ago

yglukhov commented 4 years ago

Steps to reproduce

git clone https://github.com/yglukhov/iface-nim-crash
cd iface-nim-crash
nim c test1
/Users/yglukhov/proj/nim-devel/compiler/nim.nim(117) nim
/Users/yglukhov/proj/nim-devel/compiler/nim.nim(82) handleCmdLine
/Users/yglukhov/proj/nim-devel/compiler/cmdlinehelper.nim(84) loadConfigsAndRunMainCommand
/Users/yglukhov/proj/nim-devel/compiler/main.nim(254) mainCommand
/Users/yglukhov/proj/nim-devel/compiler/main.nim(219) compileToBackend
/Users/yglukhov/proj/nim-devel/compiler/main.nim(95) commandCompileToC
/Users/yglukhov/proj/nim-devel/compiler/modules.nim(160) compileProject
/Users/yglukhov/proj/nim-devel/compiler/modules.nim(96) compileModule
/Users/yglukhov/proj/nim-devel/compiler/passes.nim(208) processModule
/Users/yglukhov/proj/nim-devel/compiler/passes.nim(86) processTopLevelStmt
/Users/yglukhov/proj/nim-devel/compiler/sem.nim(604) myProcess
/Users/yglukhov/proj/nim-devel/compiler/sem.nim(572) semStmtAndGenerateGenerics
/Users/yglukhov/proj/nim-devel/compiler/semstmts.nim(2306) semStmt
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(1014) semExprNoType
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2783) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semstmts.nim(2246) semStmtList
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2782) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2494) semBlock
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2783) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semstmts.nim(2246) semStmtList
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2680) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(996) semDirectOp
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(889) afterCallActions
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(37) semTemplateExpr
/Users/yglukhov/proj/nim-devel/compiler/sem.nim(410) semAfterMacroCall
/Users/yglukhov/proj/nim-devel/compiler/semstmts.nim(2306) semStmt
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(1014) semExprNoType
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2783) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semstmts.nim(2246) semStmtList
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2680) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(995) semDirectOp
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(844) semOverloadedCallAnalyseEffects
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(557) semOverloadedCall
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(357) resolveOverloads
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(95) pickBestCandidate
/Users/yglukhov/proj/nim-devel/compiler/sigmatch.nim(2533) matches
/Users/yglukhov/proj/nim-devel/compiler/sigmatch.nim(2470) matchesAux
/Users/yglukhov/proj/nim-devel/compiler/sigmatch.nim(2272) prepareOperand
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(52) semOperand
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2694) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2286) semMagic
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(995) semDirectOp
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(844) semOverloadedCallAnalyseEffects
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(557) semOverloadedCall
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(357) resolveOverloads
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(95) pickBestCandidate
/Users/yglukhov/proj/nim-devel/compiler/sigmatch.nim(2533) matches
/Users/yglukhov/proj/nim-devel/compiler/sigmatch.nim(2470) matchesAux
/Users/yglukhov/proj/nim-devel/compiler/sigmatch.nim(2272) prepareOperand
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(52) semOperand
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2693) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(995) semDirectOp
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(844) semOverloadedCallAnalyseEffects
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(565) semOverloadedCall
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(540) semResolvedCall
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(454) instGenericConvertersSons
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(445) instGenericConvertersArg
/Users/yglukhov/proj/nim-devel/compiler/seminst.nim(388) generateInstance
/Users/yglukhov/proj/nim-devel/compiler/seminst.nim(148) instantiateBody
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(1773) semProcBody
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2783) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semstmts.nim(2246) semStmtList
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2717) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2783) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semstmts.nim(2246) semStmtList
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2749) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semobjconstr.nim(394) semObjConstr
/Users/yglukhov/proj/nim-devel/compiler/semobjconstr.nim(332) semConstructTypeAux
/Users/yglukhov/proj/nim-devel/compiler/semobjconstr.nim(165) semConstructFields
/Users/yglukhov/proj/nim-devel/compiler/semobjconstr.nim(320) semConstructFields
/Users/yglukhov/proj/nim-devel/compiler/semobjconstr.nim(78) semConstrField
/Users/yglukhov/proj/nim-devel/compiler/sem.nim(375) semExprFlagDispatched
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(76) semExprWithType
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(67) semExprCheck
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2693) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(995) semDirectOp
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(844) semOverloadedCallAnalyseEffects
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(565) semOverloadedCall
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(523) semResolvedCall
/Users/yglukhov/proj/nim-devel/compiler/seminst.nim(388) generateInstance
/Users/yglukhov/proj/nim-devel/compiler/seminst.nim(148) instantiateBody
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(1773) semProcBody
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2783) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semstmts.nim(2246) semStmtList
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2785) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semstmts.nim(496) semVarOrLet
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(76) semExprWithType
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(67) semExprCheck
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2693) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(995) semDirectOp
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(844) semOverloadedCallAnalyseEffects
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(565) semOverloadedCall
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(523) semResolvedCall
/Users/yglukhov/proj/nim-devel/compiler/seminst.nim(388) generateInstance
/Users/yglukhov/proj/nim-devel/compiler/seminst.nim(148) instantiateBody
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(1773) semProcBody
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2783) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semstmts.nim(2246) semStmtList
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2749) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semobjconstr.nim(394) semObjConstr
/Users/yglukhov/proj/nim-devel/compiler/semobjconstr.nim(332) semConstructTypeAux
/Users/yglukhov/proj/nim-devel/compiler/semobjconstr.nim(165) semConstructFields
/Users/yglukhov/proj/nim-devel/compiler/semobjconstr.nim(320) semConstructFields
/Users/yglukhov/proj/nim-devel/compiler/semobjconstr.nim(78) semConstrField
/Users/yglukhov/proj/nim-devel/compiler/sem.nim(375) semExprFlagDispatched
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(76) semExprWithType
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(67) semExprCheck
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2750) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semstmts.nim(1581) semLambda
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(1773) semProcBody
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2783) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semstmts.nim(2246) semStmtList
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2680) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(995) semDirectOp
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(844) semOverloadedCallAnalyseEffects
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(557) semOverloadedCall
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(357) resolveOverloads
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(95) pickBestCandidate
/Users/yglukhov/proj/nim-devel/compiler/sigmatch.nim(2533) matches
/Users/yglukhov/proj/nim-devel/compiler/sigmatch.nim(2470) matchesAux
/Users/yglukhov/proj/nim-devel/compiler/sigmatch.nim(2272) prepareOperand
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(52) semOperand
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2680) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(995) semDirectOp
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(844) semOverloadedCallAnalyseEffects
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(557) semOverloadedCall
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(357) resolveOverloads
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(95) pickBestCandidate
/Users/yglukhov/proj/nim-devel/compiler/sigmatch.nim(2533) matches
/Users/yglukhov/proj/nim-devel/compiler/sigmatch.nim(2470) matchesAux
/Users/yglukhov/proj/nim-devel/compiler/sigmatch.nim(2272) prepareOperand
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(52) semOperand
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(2705) semExpr
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(995) semDirectOp
/Users/yglukhov/proj/nim-devel/compiler/semexprs.nim(844) semOverloadedCallAnalyseEffects
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(557) semOverloadedCall
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(357) resolveOverloads
/Users/yglukhov/proj/nim-devel/compiler/semcall.nim(67) pickBestCandidate
/Users/yglukhov/proj/nim-devel/compiler/lookups.nim(394) initOverloadIter
/Users/yglukhov/proj/nim-devel/lib/system/fatal.nim(49) sysFatal
Error: unhandled exception: index out of bounds, the container is empty [IndexDefect]
FAILURE
yglukhov commented 4 years ago

Apparently the problem is related to the fact that a function with the same name as module's is defined: https://github.com/yglukhov/iface-nim-crash/blob/master/test1.nim#L4. Changing function solves the issue.

timotheecour commented 4 years ago

a function with the same name as module's is defined

I've seen a few other bugs caused by this