Nim/compiler
Zahary Karadjov 7d5e387a48 mostly fixes #1339
The compiler hangs were caused by the interaction of tyError and the instantiation caches.
For procs, the cache wasn't able to find previously compiled proc featuring tyError in the signature.
For types, the unresolved type parameters leading to tyError were not replaced everywhere leading
to endless replaceTypeVarsT recursion for cyclic types.

The fix is still not perfect, because the handling of tyError in other places in the compiler doesn't seem
to be complete and the first test case now results in internal error (still, much better than a hang blocking
your IDE).
2014-09-05 01:02:46 +03:00
..
aliases.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
ast.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
astalgo.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
bitsets.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
canonicalizer.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
ccgcalls.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
ccgexprs.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
ccgmerge.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
ccgstmts.nim fixes #1067 2014-08-30 22:44:33 +02:00
ccgthreadvars.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
ccgtrav.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
ccgtypes.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
ccgutils.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
cgen.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
cgendata.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
cgmeth.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
commands.nim fixes #903, fixes #1513 2014-09-03 19:45:04 +02:00
condsyms.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
crc.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
depends.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
docgen.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
docgen2.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
evalffi.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
evaltempl.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
extccomp.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
filter_tmpl.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
filters.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
guards.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
hlo.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
idents.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
idgen.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
importer.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
jsgen.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
jstypes.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
lambdalifting.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
lexer.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
lists.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
llstream.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
lookups.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
lowerings.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
magicsys.nim the big renamefest: first steps 2014-08-22 23:54:26 +02:00
main.nim fixes #903, fixes #1513 2014-09-03 19:45:04 +02:00
modules.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
msgs.nim minor improvement for nim pretty 2014-08-31 02:46:13 +02:00
nim.ini koch now uses nim.exe 2014-08-29 02:23:40 +02:00
nim.nim fixes #903, fixes #1513 2014-09-03 19:45:04 +02:00
nim.nimrod.cfg koch now uses nim.exe 2014-08-29 02:23:40 +02:00
nimblecmd.nim VM supports math and a few os procs 2014-08-30 16:37:27 +02:00
nimconf.nim renamed babelcmd to nimblecmd; config files are now nim.cfg; other renamings 2014-08-29 09:03:00 +02:00
nimeval.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
nimlexbase.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
nimsets.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
nversion.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
options.nim babel is now nimble 2014-08-30 16:36:57 +02:00
parampatterns.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
parser.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
passaux.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
passes.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
patterns.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
pbraces.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
platform.nim case consistency part 4 2013-12-27 23:10:36 +01:00
pragmas.nim the big renamefest: first steps 2014-08-22 23:54:26 +02:00
pretty.nim fixes #903, fixes #1513 2014-09-03 19:45:04 +02:00
prettybase.nim renamefest 2014-08-23 01:43:49 +02:00
procfind.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
readme.txt Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
renderer.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
rodread.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
rodutils.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
rodwrite.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
ropes.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
saturate.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
sem.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
semasgn.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
semcall.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
semdata.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
semdestruct.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
semexprs.nim minor bugfix for void .compileTime procs 2014-08-31 02:45:32 +02:00
semfold.nim Nimrod renamed to Nim 2014-08-28 10:01:20 +02:00
semgnrc.nim fixes #1444 2014-08-31 01:07:58 +02:00
seminst.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
semmacrosanity.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
semmagic.nim fixes #1366 2014-08-30 20:16:35 +02:00
semparallel.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
sempass2.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
semstmts.nim fix #959 2014-09-04 23:50:00 +03:00
semtempl.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
semtypes.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
semtypinst.nim mostly fixes #1339 2014-09-05 01:02:46 +03:00
service.nim fixes #903, fixes #1513 2014-09-03 19:45:04 +02:00
sigmatch.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
suggest.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
syntaxes.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
tccgen.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
testability.nim distinguish between 'defined' and 'declared' 2014-08-11 20:38:28 +02:00
transf.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
trees.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
treetab.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00
types.nim mostly fixes #1339 2014-09-05 01:02:46 +03:00
typesrenderer.nim Renamed 'considerAcc' to 'considerAccents' for clarity 2014-05-24 08:10:40 -04:00
vm.nim updated iup.nim; made tests green 2014-08-31 22:55:51 +02:00
vmdef.nim VM supports math and a few os procs 2014-08-30 16:37:27 +02:00
vmdeps.nim updated the compiler to use the new symbol names 2014-08-28 23:48:42 +02:00
vmgen.nim fixes #903, fixes #1513 2014-09-03 19:45:04 +02:00
vmhooks.nim VM supports math and a few os procs 2014-08-30 16:37:27 +02:00
vmops.nim VM supports math and a few os procs 2014-08-30 16:37:27 +02:00
wordrecg.nim Nimrod renamed to Nim 2014-08-28 09:38:14 +02:00

This directory contains the Nim compiler written in Nim. Note that this
code has been translated from a bootstrapping version written in Pascal, so
the code is **not** a poster child of good Nim code.