Commit Graph

101 Commits

Author SHA1 Message Date
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
Adam Strzelecki
47e45dee7e fixes #3496
The problem comes from the fact that macroOrTmpl[...] is transformed by
semSubscript which is trying to evaluate macroOrTmpl identifier in place. This
is okay for non-generic macros or templates, but wrong for generic ones, that
do not have a chance to receive their generic arguments explicitly specified in
brackets.

Solution:

1. macroOrTmpl[...] where macroOrTmpl is non-generic macro or template, then
   macroOrTmpl is evaluated before applying brackets. (as before)

2. macroOrTmpl[...] where macroOrTmpl is generic macro or template, then if:

   a. It comes from macroOrTmpl[...](...) call expr (efInCall), then macroOrTmpl
      is turned into a symbol (efNoEvaluate) rather than evaluating it in place,
      then whole bracket expr is returned to semIndirectOp which transforms it
      to proper generic macro or template call with explicit generic arguments.

   b. macroOrTmpl[...] does not come from call expr, as above macroOrTmpl is
      transformed to symbol, then it is transformed into proper generic macro or
      template call with explicit generic arguments and no normal arguments.
2015-10-29 23:10:45 +01:00
Araq
86e2d6ee90 fixes #3476 2015-10-27 08:37:56 +01:00
Peter Mora
75097e2981 sequtils related changes 2015-10-05 22:42:22 +02:00
Peter Mora
925e7b0ca1 fixing TypelessParam warning in x=>x+1, added test 2015-09-22 18:34:43 +02:00
Araq
14354b436f fixes #2599 2015-09-13 23:26:44 +02:00
Adam Strzelecki
e80465dacf tests: Trim .nim files trailing whitespace
via OSX: find . -name '*.nim' -exec sed -i '' -E 's/[[:space:]]+$//' {} +
2015-09-04 23:04:32 +02:00