Files
Nim/compiler
Zahary Karadjov 13701c0957 Restore the compilation of linalg by tweaking the complex disambiguation rules
This commit is a potentially breaking change, but the problem was that
linalg was relying on a previous bug in the compiler, which was fixed
in the concepts branch.

With the old disambiguation rules, generic procs like:

proc \`==\`[T](lhs, rhs: T)

and

proc \`==\`(lhs, rhs: Matrix32|Matrix64)

.. were considered equal, even though it's obvious that the second one
should be preferred. We never noticed this, because there was a bug in
sigmatch incorrectly counting one of the params of the second proc as
a non-generic match, thus giving it an edge.

This commit gives some preference to tyOr and tyAnd during the complex
disambiguation, which may affect overload resolution in other cases.

I see this only as a temporary solution. With my upcoming work on
concept refinement, I plan to provide an experimental implementation
of alaternative C++-like rules for determining which proc is more specific.
We can then discuss our strategy for dealing with such a breaking change.
2017-04-16 16:11:45 +03:00
..
2017-04-16 13:42:33 +03:00
2017-04-07 19:35:05 +03:00
2017-03-06 18:25:27 +01:00
2017-03-26 09:30:59 +02:00
2017-01-07 22:35:09 +01:00
2017-01-06 13:11:17 +01:00
2016-10-31 15:34:44 +01:00
2016-10-31 15:34:44 +01:00
2017-02-26 00:32:07 +01:00
2017-04-02 23:41:29 +02:00
2016-08-09 22:54:27 +08:00
2017-02-08 23:04:20 +01:00
2017-03-31 22:00:48 +02:00
2017-04-02 23:41:29 +02:00
2016-11-01 07:16:07 +01:00
2017-03-23 21:29:10 +01:00
2016-11-02 08:39:51 +01:00
2017-01-07 22:35:09 +01:00
2017-01-07 22:35:09 +01:00
2015-12-04 23:43:03 +01:00
2016-12-30 01:43:26 +01:00
2014-08-28 09:38:14 +02:00
2017-04-04 12:08:34 +02:00
wip
2017-04-11 00:48:52 +03:00
2017-04-07 19:28:52 +03:00
2017-03-24 17:03:55 +02:00
2017-04-05 11:32:23 +02:00
2017-03-06 18:38:15 +01:00
2017-04-15 02:53:28 +03:00
2017-04-14 23:54:09 +03:00
2016-10-31 15:34:44 +01:00
2015-11-03 14:52:36 +01:00
2017-03-28 20:57:34 +02:00
2017-04-08 23:42:42 +03:00
2016-10-20 21:40:04 +02:00
2017-04-10 23:58:05 +03: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.