[Issue 15870] UFCS not recognized on array when passing as alias parameter

d-bugmail at puremagic.com d-bugmail at puremagic.com
Fri May 25 23:19:00 UTC 2018


https://issues.dlang.org/show_bug.cgi?id=15870

Ivan Kazmenko <gassa at mail.ru> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |gassa at mail.ru

--- Comment #1 from Ivan Kazmenko <gassa at mail.ru> ---
Still does not work in 2.080 release.
The error message however is interesting.
Here is a modified example with a line containing `(a)` instead of `a`.
Compile with `dmd -main`:

-----
import std.algorithm;
enum test(alias fun) = "it works";
immutable a = [1,2,3];

pragma(msg, typeof(a));               // immutable(int[])
pragma(msg, test!((a).map!(x => x))); // "it works"
pragma(msg, test!(a.map!(x => x)));   // template identifier `map` is not a
member of variable `a.a`
-----

Why is that `a.a` in the first place?
Does the compiler mistake `a` for an eponymous template somehow, instead of
seeing that `map` is a template here?

--


More information about the Digitalmars-d-bugs mailing list