Andrew Kelley
2a00df9c09
Sema: fix generic instantiation false negatives
...
The problem was that types of non-anytype parameters were being included
as part of the check to see if generic function instantiations were
equal. Now, Module.Fn additionally stores the information for whether each
parameter is anytype or not. `generic_poison` cannot be used to signal
this because the type is still needed for comptime arguments; in such
case the type will not be present in the newly generated function
prototype.
This presented one additional challenge: we need to compare equality of
two values where one of them is post-coercion and the other is not. So
we make some minor adjustments to `Type.eql` to support this. I think
this small complexity tradeoff is worth it because it means the compiler
does much less work on the hot path that a generic function is called
and there is already an existing matching instantiation.
closes #11146
2022-04-14 06:08:28 -07:00
..
2022-03-26 21:20:29 +01:00
2021-04-29 15:54:04 -07:00
2021-04-29 15:54:04 -07:00
2021-04-29 15:54:04 -07:00
2021-04-29 15:54:04 -07:00
2021-09-01 17:54:07 -07:00
2022-03-19 19:41:23 -04:00
2022-02-28 23:20:05 +01:00
2022-03-24 17:04:50 +01:00
2022-03-30 12:10:02 +03:00
2022-03-23 14:06:07 -07:00
2022-03-30 23:19:10 -07:00
2022-03-23 14:06:07 -07:00
2022-03-28 18:28:08 -07:00
2022-02-14 22:33:01 +01:00
2022-03-26 21:20:29 +01:00
2022-03-18 16:28:38 +01:00
2021-10-28 17:33:05 -07:00
2022-03-17 18:00:48 -07:00
2022-03-08 21:10:04 +01:00
2022-04-12 11:22:12 -07:00
2022-03-18 15:02:52 -07:00
2022-04-06 02:39:55 -07:00
2022-03-21 15:05:21 +02:00
2022-03-15 15:09:48 -07:00
2022-02-13 14:42:20 +02:00
2022-03-08 21:10:04 +01:00
2022-03-09 13:53:20 -07:00
2022-04-02 19:31:32 -04:00
2022-04-02 19:02:29 -07:00
2022-03-08 11:23:38 +02:00
2022-03-10 20:00:07 +02:00
2022-03-09 13:53:20 -07:00
2022-04-02 21:54:01 +02:00
2022-02-14 22:33:01 +01:00
2021-05-08 14:45:21 -07:00
2022-03-29 02:28:20 -04:00
2022-03-29 02:28:20 -04:00
2022-04-14 06:08:28 -07:00
2021-05-08 14:45:21 -07:00
2022-03-11 12:59:20 -07:00
2022-03-05 11:31:51 +01:00
2022-01-07 00:06:06 -05:00
2022-03-08 21:10:04 +01:00
2022-03-29 02:28:20 -04:00
2022-03-19 21:01:36 -04:00
2022-03-05 11:31:51 +01:00
2022-02-28 23:20:05 +01:00
2022-04-12 10:25:29 -07:00
2022-04-02 21:54:01 +02:00
2022-02-22 21:57:42 +01:00
2022-03-17 11:39:56 -07:00
2022-04-02 21:54:01 +02:00
2022-03-17 11:39:56 -07:00
2022-03-17 11:39:56 -07:00
2022-03-25 19:21:34 +01:00
2022-03-23 19:58:13 -07:00
2022-03-21 22:01:34 -04:00
2021-12-11 00:29:31 +01:00
2022-03-26 21:20:29 +01:00
2021-05-08 14:45:21 -07:00
2022-02-22 21:57:42 +01:00
2022-03-01 18:24:00 -07:00
2022-03-18 15:02:52 -07:00
2022-03-25 19:14:11 +01:00
2022-03-18 15:02:52 -07:00
2022-03-16 20:19:58 +01:00
2021-06-21 17:03:03 -07:00
2022-03-29 02:28:20 -04:00
2022-03-01 23:46:57 -07:00
2022-03-16 20:19:58 +01:00
2022-03-22 15:45:59 -07:00
2022-03-27 14:40:24 -07:00
2022-03-09 13:53:20 -07:00
2022-03-09 13:53:20 -07:00
2022-04-04 22:46:05 -07:00
2022-03-05 11:31:51 +01:00
2022-03-08 20:38:51 +02:00
2022-03-18 15:02:52 -07:00
2022-03-15 15:09:48 -07:00
2022-03-05 11:31:51 +01:00
2022-03-24 17:04:50 +01:00
2022-03-30 14:12:14 -04:00
2022-03-30 14:12:14 -04:00
2022-03-23 21:40:33 +01:00
2022-03-18 00:12:22 -07:00
2022-02-28 23:20:05 +01:00
2022-03-18 15:02:52 -07:00
2022-04-12 11:36:26 -07:00
2022-03-30 17:24:01 -07:00
2022-03-17 11:39:56 -07:00
2022-04-07 05:04:38 -06:00
2022-03-16 20:20:07 +01:00
2022-03-03 18:31:55 -07:00
2022-03-24 22:45:10 -07:00
2022-03-27 11:49:54 +03:00
2022-01-29 18:12:28 +02:00