Files
Nim/tests/generics
metagn 0a058a6b8f better errors for standalone explicit generic instantiations (#24276)
refs #8064, refs #24010

Error messages for standalone explicit generic instantiations are
revamped. Failing standalone explicit generic instantiations now only
error after overloading has finished and resolved to the default `[]`
magic (this means `[]` can now be overloaded for procs but this isn't
necessarily intentional, in #24010 it was documented that it isn't
possible). The error messages for failed instantiations are also no
longer a simple `cannot instantiate: foo` message, instead they now give
the same type mismatch error message as overloads with mismatching
explicit generic parameters.

This is now possible due to the changes in #24010 that delegate all
explicit generic proc instantiations to overload resolution. Old code
that worked around this is now removed. `maybeInstantiateGeneric` could
maybe also be removed in favor of just `explicitGenericSym`, the `result
== n` case is due to `explicitGenericInstError` which is only for niche
cases.

Also, to cause "ambiguous identifier" error messages when the explicit
instantiation is a symchoice and the expression context doesn't allow
symchoices, we semcheck the sym/symchoice created by
`explicitGenericSym` with the given expression flags.

#8064 isn't entirely fixed because the error message is still misleading
for the original case which does `values[1]`, as a consequence of
#12664.
2024-10-18 19:06:42 +02:00
..
2015-09-13 23:26:44 +02:00
2015-08-10 01:31:42 +02:00
2015-07-02 16:29:22 +02:00
2022-10-26 19:45:51 +08:00
2020-07-14 11:24:17 +02:00
2020-07-11 17:09:41 +02:00
2020-09-21 13:37:14 +02:00
2023-06-05 16:30:08 +08:00
2022-12-04 20:37:23 +01:00
2023-08-10 07:56:09 +02:00
2020-03-11 09:26:57 +01:00
2017-04-15 02:53:28 +03:00
2016-03-28 02:26:38 +02:00
2020-07-14 19:50:42 +02:00
2022-10-02 06:42:41 +02:00
2018-11-08 22:28:29 +01:00
2022-09-23 13:05:05 +02:00
2015-10-27 08:37:56 +01:00
2018-12-11 21:23:22 +01:00