Nim/tests/compile
Zahary Karadjov fee2a7ecfa Experimental support for delayed instantiation of generics
This postpones the semantic pass over the generic's body until
the generic is instantiated. There are several pros and cons for
this method and the capabilities that it enables may still be possible
in the old framework if we teach it a few new trick. Such an attempt
will follow in the next commits.

pros:
1) It allows macros to be expanded during generic instantiation that
will provide the body of the generic. See ``tmacrogenerics``.
2) The instantiation code is dramatically simplified. Dealing with unknown
types in the generic's body pre-pass requires a lot of hacky code and error
silencing in semTypeNode. See ``tgenericshardcases``.

cons:
1) There is a performance penalty of roughly 5% when bootstrapping.
2) Certain errors that used to be detected in the previous pre-pass won't
be detected with the new scheme until instantiation.
2013-08-23 01:10:20 +03:00
..
mdefaultprocparam.nim attempt to fix #183 2012-10-06 22:46:41 +02:00
mexporta.nim implements 'export' feature 2012-12-01 19:10:47 +01:00
mexportb.nim implements 'export' feature 2012-12-01 19:10:47 +01:00
mrecmod.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
mrecmod2.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
mtempl5.nim got rid of 'accept' dir in the tests 2011-11-19 15:45:51 +01:00
mvarious.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
sunset.tmpl Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
talias.nim made some tests green 2012-09-12 08:43:24 +02:00
tambsym2.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tarrindx.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tassign.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tbindoverload.nim fixes binding of overloaded procs 2012-05-04 01:58:54 +02:00
tcan_alias_generic.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tcan_alias_specialised_generic.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tcan_inherit_generic.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tcan_specialise_generic.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tccgen1.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tclosure4.nim Renames each proc to map, each is left deprecated. 2013-01-22 21:41:26 +01:00
tclosurebug2.nim fixed some closure related bugs 2013-01-22 00:29:54 +01:00
tcmdline.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tcodegenbug1.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tcolonisproc.nim bugfix: implicit items/pairs work better 2012-11-28 08:03:25 +01:00
tcolors.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tcommontype.nim fixes #117 2013-05-04 13:21:36 +02:00
tcompiles.nim better test for 'system.compiles' 2012-07-20 16:53:01 +02:00
tcomputedgoto.nim fixed and documented computedGoto pragma 2013-08-22 08:38:47 +02:00
tconsteval.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tconstraints.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tconvcolors.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tconvert.nim added manyloc test suite; --path now relative to project dir if not absolute 2013-04-13 21:55:02 +02:00
tcputime.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tdatabind.nim made some tests green 2012-07-17 08:44:04 +02:00
tdefaultprocparam.nim attempt to fix #183 2012-10-06 22:46:41 +02:00
tdialogs.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tdictdestruct.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tdiscardable.nim got rid of 'accept' dir in the tests 2011-11-19 15:45:51 +01:00
tdllvar.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tdumpast.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tdumpast2.nim made some tests green 2012-09-12 08:43:24 +02:00
techo.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
teffects1.nim better effects handling for callbacks 2013-05-09 03:20:55 +02:00
temptyecho.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tendian.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tenum.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tenum2.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tenum3.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
teval1.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
texport.nim implements 'export' feature 2012-12-01 19:10:47 +01:00
tfib.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tforwardgeneric.nim Revert "Revert "fix tforwardgeneric"" 2013-08-19 01:29:47 +03:00
tforwty.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tforwty2.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tgeneric.nim bugfix: type alias to generic; generic type not stripped away from for loop variable 2012-01-07 20:03:41 +01:00
tgeneric2.nim cleanup of tests; use 'koch install' instead of 'install.sh' for a bootstrapping build 2013-04-11 17:28:17 +02:00
tgeneric3.nim made more tests green; fixes #201 2012-09-12 21:48:37 +02:00
tgeneric4.nim some steps to improve the type mismatches with the new 2013-08-19 01:45:16 +03:00
tgenericdefaults.nim Revert "Revert "test cases for the new features"" 2013-08-19 01:17:07 +03:00
tgenericmatcher.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tgenericmatcher2.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tgenericprocvar.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tgenericprop.nim made some tests green 2012-07-17 08:44:04 +02:00
tgenericrefs.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tgenericshardcases.nim Experimental support for delayed instantiation of generics 2013-08-23 01:10:20 +03:00
tgenerictmpl.nim made more tests green; fixes #201 2012-09-12 21:48:37 +02:00
tgenericvariant.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tgensymgeneric.nim fixes #194 2012-09-20 23:44:52 +02:00
tgetstartmilsecs.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tglobalforvar.nim attempt to fix DLL generation 2012-07-18 00:02:53 +02:00
tgtk.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
thallo.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
theaproots.nim track the "owner" heap object in the ref write barrier 2012-12-01 15:37:13 +02:00
thexrange.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
thygienictempl.nim fixes #304 2013-03-18 00:22:21 +01:00
tident.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
timplicititems.nim implicit invokation of items/pairs iterators 2012-01-08 01:29:10 +01:00
timplictderef.nim fixes #147 2012-07-10 22:17:47 +02:00
tindent1.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tio.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tircbot.nim Fixed many deprecation warnings. asyncio.recvLine now throws an 2012-12-23 14:05:16 +00:00
tisop.nim the is operator now works with type classes and type variables 2012-10-03 01:59:49 +03:00
titer.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
titer2.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
titer_no_tuple_unpack.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
titerovl.nim bugfix: better implict 'items' support 2012-11-28 19:57:41 +01:00
tlastmod.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tlexer.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tlibs.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tlinearscanend.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tloops.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tmacro1.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tmacro2.nim fixes #368 2013-04-08 19:58:16 +02:00
tmacroaspragma.nim bugfix: tcan_inherit_generic works again 2012-10-19 21:43:18 +02:00
tmacrostmt.nim fixes #488 2013-06-27 08:19:03 +02:00
tmacrotypes.nim experimental support for querying the type of expressions within macros 2012-10-03 01:59:50 +03:00
tmandelbrot.nim fixes #31 2011-11-27 16:32:05 +01:00
tmarshal.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tmath.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tmatrix1.nim fixes #287; bugfix: subrange checking is performed again 2013-04-12 16:24:58 +02:00
tmatrix2.nim fixes #310 2013-04-13 01:09:15 +02:00
tmodulealias.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tmongo.nim documentation improvements; higher level Mongodb wrapper 2012-04-09 11:18:10 +02:00
tnamedparamanonproc.nim bootstrapping works again 2013-01-22 00:37:33 +01:00
tnamedparams.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tnestedproc.nim got rid of 'accept' dir in the tests 2011-11-19 15:45:51 +01:00
tnew.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tnewlibs.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tnewsets.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tnewuns.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tnimrodnode_for_runtime.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tnoargopenarray.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tnoforward.nim documented the `noforward` pragma 2013-05-12 16:14:28 +03:00
tobjconstr2.nim fixes #366 2013-03-17 20:11:16 +01:00
tobjcov.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tobject2.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tobject3.nim fixes #270 2013-01-08 17:23:52 +01:00
tobjects.nim Revert "Revert "made some tests green"" 2013-08-19 01:35:33 +03:00
toop.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
toptions.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tos.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
toverprc.nim Revert "Revert "made some tests green"" 2013-08-19 01:35:33 +03:00
tparedef.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tparscfg.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tparsefloat.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tparsopt.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tposix.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tprep.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tprocvars.nim fixes #217 2012-10-13 01:59:20 +02:00
tpush.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tquicksort.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tquit.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tradix.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
treadln.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
treadx.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
trecmod.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
trecmod2.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
trectuple.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
trectuples.nim got rid of 'accept' dir in the tests 2011-11-19 15:45:51 +01:00
tredef.nim fix for template redefinition. test cases added. 2012-03-15 14:15:37 +02:00
trepr.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tsecondarrayproperty.nim implemented generic converters 2012-12-05 22:03:36 +01:00
tseq2.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tseqcon2.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tshadow_magic_type.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tsizeof.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tslurp.nim fixed some recently introduced compilation errors in the standard library 2011-12-13 22:52:13 +02:00
tsockets.nim Fixed OSError + recvLine deprecation warnings. 2013-06-27 15:06:30 +01:00
tsortcall.nim fixes #89 2012-01-29 02:13:53 +01:00
tspecialised_is_equivalent.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tstrace.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tstrdesc.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tstrdist.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tstreams.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tstrset.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tstrtabs.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
ttableconstr.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
ttempl.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
ttempl3.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
ttempl4.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
ttempl5.nim got rid of 'accept' dir in the tests 2011-11-19 15:45:51 +01:00
ttemplreturntype.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tthread_generic.nim got rid of 'accept' dir in the tests 2011-11-19 15:45:51 +01:00
ttime.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
ttuple1.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
ttypeclasses.nim Revert "Revert "test cases for the new features"" 2013-08-19 01:17:07 +03:00
ttypeconverter1.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
ttypeselectors.nim fixes ttypeselectors 2012-09-28 14:30:48 +03:00
tuserpragma.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
tvarious.nim fixes #544 2013-07-24 22:32:09 +02:00
tvoid.nim make tests green again 2012-07-17 01:27:25 +02:00
twalker.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00
typalias.nim Removes executable bit for text files. 2013-03-16 23:53:07 +01:00