Commit Graph

107 Commits

Author SHA1 Message Date
Zahary Karadjov
7297613900 Bugfix: The compiler were not inserting proper downcasts for generic types
This resulted in a codegen error in C++ mode, because the generic
types were not defined in modules where calls requiring downcasts
were used (generating a downcast forces the inclusion of the full
definition of the involved types).
2018-05-07 09:37:49 +02:00
Andreas Rumpf
3dab0877da fixes #7247 2018-02-23 11:42:19 +01:00
Araq
b57d14b1ae make more tests green 2018-02-10 20:55:22 +01:00
Andreas Rumpf
bd1dfa4b38 better type inference for numerical types; prerequisitive for version 1 2018-02-02 09:29:05 +01:00
Fabian Keller
6df6ec27ec Improved collection-to-string behavior (#6825) 2017-12-14 14:02:13 +01:00
Andreas Rumpf
1548743856 make tests green again 2017-11-18 23:03:16 +01:00
Arne Döring
000b8afd26 Remove expr/stmt (#5857) 2017-07-25 09:28:23 +02:00
Zahary Karadjov
491162d3c8 close #5106 2017-06-20 11:29:42 +02:00
Zahary Karadjov
9edf66df85 close #5756 2017-06-20 11:29:42 +02:00
Zahary Karadjov
f713e730c8 fix #5864 2017-06-20 11:29:42 +02:00
Zahary Karadjov
f0999de9dc Fix #5962
During the instantiation of a generic type A, some other generic
type B may be instantiated multiple times with different parameters.
We can think about each instantiation as a function call that should
temporary bind the parameter names to concrete types. The problem
with the existing implementation in semtypinst was that it was
performing this binding within a shared global table. In this sense,
it was executing the code as a programming language featuring only
global variables. In such a language, re-entrant functions cannot be
defined properly and hence this was leading to problems with similar
types. The solution is simple - just like we need to introduce stack
frames to handle re-entrant functions, we introduce a stack of type
bindings that are pushed and popped during the generic instantiations.
2017-06-20 11:29:42 +02:00
Araq
4033929127 fixes tproctypecache_falsepositive.nim test case 2017-06-08 18:35:37 +02:00
Zahary Karadjov
2a34552596 fix 5756 2017-04-30 22:28:20 +03:00
Zahary Karadjov
5c678e2848 alternative fake covariance based on converters 2017-04-28 18:26:41 +03:00
Zahary Karadjov
72f42ff95f more advanced fake covariance 2017-04-28 18:01:04 +03:00
Zahary Karadjov
c981284ddc a simple way to simulate covariance in generic types 2017-04-28 17:40:57 +03:00
Zahary Karadjov
3e52bb6535 fix a regrsesion in signature matching of derived ptr types 2017-04-18 23:55:59 +03:00
Zahary Karadjov
dfbafff2e7 fix a compilation error in linalg 2017-04-16 02:44:58 +03:00
Zahary Karadjov
bf4ce87e5b fix #5689 2017-04-15 02:53:28 +03:00
Zahary Karadjov
d578815963 fix #5683 2017-04-14 23:54:09 +03:00
Zahary Karadjov
03172bef6f fix #5643; fix #5644 2017-04-08 23:42:42 +03:00
Zahary Karadjov
e9a3ffbc3d Restore the Nim's 0.14 proper handling of generic aliases
A more efficient implementation is possible by restoring the old
lifting ot tyGenericInvocation to tyGenericInst in liftTypeParam,
but this fix will suffice for now.

fixes #5087
fixes #5602
fixes #5641
fixes #5570
2017-04-08 17:28:19 +03:00
andri lim
2f9a698e87 attempt to fix #5632 typedesc typeRel regression (#5634) 2017-03-31 21:58:26 +02:00
andri lim
fce4b7cd62 attempt to fix #5621 #5615 generic ref object typeRel (#5633) 2017-03-31 21:58:09 +02:00
Zahary Karadjov
cbf66e99a8 Working test cases for the sophisticated matrix library example from the manual
Fixed the dot operator when used within return types (see tgenericdotrettype)
Fixed the matching of generic concepts aliases used with the implicit generics style
2017-03-24 16:59:47 +02:00
Andreas Rumpf
0d8a503e45 fixes #5597; wrong eager template instantiation in generic context (#5601) 2017-03-24 07:35:12 +01:00
andri lim
568c954062 fixes #5241, fixes #5411 inherit from specialized generic typeRel problem (#5573) 2017-03-23 23:39:29 +01:00
zah
be174fc3c7 Fix generic forward declarations; fixes #4104; fixes #4908 (#5566) 2017-03-23 12:40:57 +01:00
mfxmfx
8699372109 Correct the spelling of the word 'overridden'. (#5212) 2017-01-11 13:40:10 +01:00
Zahary Karadjov
bf612a7f19 fix #4884 2017-01-08 23:24:27 +02:00
Araq
49667798eb further progress; more tests are green 2016-11-28 21:45:29 +01:00
Andreas Rumpf
d0ec83eaa8 fixes #4863 2016-10-19 19:28:27 +02:00
Andreas Rumpf
f6a2ff731b fixes #4672 2016-09-01 13:02:53 +02:00
Andreas Rumpf
89f3e21fc8 fixes #4658 2016-08-26 13:02:52 +02:00
Andreas Rumpf
55e86184a5 fixes #4600 2016-08-23 01:29:30 +02:00
Andreas Rumpf
57b8664a0c fixes #4589 2016-08-10 11:14:02 +02:00
Andreas Rumpf
09f122f68c fixes #4528 2016-08-08 18:03:52 +02:00
Andreas Rumpf
24b72cebe7 make tests green again 2016-08-01 12:02:05 +02:00
Andreas Rumpf
089c31765f fixes #3055 2016-07-08 20:11:59 +02:00
Anatoly Galiulin
764668d099 Fix generics inheritance issues 2016-06-23 18:37:14 +06:00
Andreas Rumpf
e52044660d Merge branch 'patch/fix-3496-generic-tmpl-args' of https://github.com/nanoant/Nim into nanoant-patch/fix-3496-generic-tmpl-args 2016-05-29 23:58:25 +02:00
Andreas Rumpf
e04f319540 fixes #4084 2016-04-29 22:30:00 +02:00
Andreas Rumpf
e97d640ce8 fixes #3998 2016-03-28 02:26:38 +02:00
Andreas Rumpf
06d4131ce1 fixes #3669 2016-03-01 23:25:46 +01:00
Andreas Rumpf
c9966a3e17 use 'using' instead of 'sig' keyword; cleans up new features a bit 2016-02-29 12:19:54 +01:00
def
c50b5b62ef Fix a few deprecation warnings 2016-01-25 19:10:37 +01:00
Andreas Rumpf
0d4e52c648 makes tests green 2016-01-15 14:44:54 +01:00
Andreas Rumpf
35b65e6f4e Merge branch 'devel' into new-ll 2016-01-14 15:05:48 +01:00
Andreas Rumpf
6fbde1f4fb fixes another regression 2016-01-13 11:36:34 +01:00
Adam Strzelecki
f838c1baa4 fixes #3498
Previously it was not possible to use template arguments in template body as
the symbols were not resolved correctly leading to Error: undeclared
identifier: 'XX', eg.:

   template defaultOf[T](t: T): expr = (var d: T; d)
   echo defaultOf(1) #<- invalid identifier, but should output 0
2015-10-30 12:05:02 +01:00