Re: DMD v2.066.0-b2
On 7/10/14, 2:35 AM, Bob wrote: On Wednesday, 9 July 2014 at 15:39:50 UTC, David Nadlinger wrote: On Wednesday, 9 July 2014 at 14:57:01 UTC, Andrew Edwards wrote: My concern is that this shouldn't compile in the first place. What is xyz?, Is it a free function? Is it a member variable or function? In my mind it is neither of the two so why does it compile? Oh, but that's precisely the point of opDispatch. ;) It offers a mechanism to respond to any members that are not found. See the spec for an example: http://dlang.org/operatoroverloading.html#Dispatch David Exactly. opDispatch catches calls to missing methods and acts based on method name which it gets as a string at compile time. In this case, the idea is this: auto v1 = Vec!4(4, 5, 6, 7); auto v2 = v1.xyz; // => Vec!3(4, 5, 6); auto v3 = v1.wx;// => Vec!2(7, 4); auto v4 = v1.wxx1; // => Vec!4(7, 4, 4, 1); Okay, got it. Thanks to both you and David for the clarification. A bug report was filed: https://issues.dlang.org/show_bug.cgi?id=13087
Re: DMD v2.066.0-b2
On Wednesday, 9 July 2014 at 15:39:50 UTC, David Nadlinger wrote: On Wednesday, 9 July 2014 at 14:57:01 UTC, Andrew Edwards wrote: My concern is that this shouldn't compile in the first place. What is xyz?, Is it a free function? Is it a member variable or function? In my mind it is neither of the two so why does it compile? Oh, but that's precisely the point of opDispatch. ;) It offers a mechanism to respond to any members that are not found. See the spec for an example: http://dlang.org/operatoroverloading.html#Dispatch David Exactly. opDispatch catches calls to missing methods and acts based on method name which it gets as a string at compile time. In this case, the idea is this: auto v1 = Vec!4(4, 5, 6, 7); auto v2 = v1.xyz; // => Vec!3(4, 5, 6); auto v3 = v1.wx;// => Vec!2(7, 4); auto v4 = v1.wxx1; // => Vec!4(7, 4, 4, 1);
Re: DMD v2.066.0-b2
On Wednesday, 9 July 2014 at 14:57:01 UTC, Andrew Edwards wrote: My concern is that this shouldn't compile in the first place. What is xyz?, Is it a free function? Is it a member variable or function? In my mind it is neither of the two so why does it compile? Oh, but that's precisely the point of opDispatch. ;) It offers a mechanism to respond to any members that are not found. See the spec for an example: http://dlang.org/operatoroverloading.html#Dispatch David
Re: DMD v2.066.0-b2
On Wed, Jul 09, 2014 at 14:56:59 +, Andrew Edwards via Digitalmars-d-announce wrote: > My concern is that this shouldn't compile in the first place. What is > xyz?, Is it a free function? Is it a member variable or function? In > my mind it is neither of the two so why does it compile? Removing the > string changes the signature of opDispatch but as shown in my prior > example, there are orther ways to cause this error. It's swizzling. gl3n[1] implements it as well. --Ben [1]https://github.com/Dav1dde/gl3n/blob/master/gl3n/linalg.d#L375
Re: DMD v2.066.0-b2
On Wednesday, 9 July 2014 at 12:21:20 UTC, David Nadlinger wrote: On Wednesday, 9 July 2014 at 12:11:13 UTC, Andrew Edwards wrote: remove the "string components" parameter form opDispatch to reveal the same error. Hm, could you elaborate a bit further on this? As per the spec, opDispatch requires a string parameter (http://dlang.org/operatoroverloading.html#Dispatch). Removing it means that the compiler no longer considers the template to match the opDispatch signature, and thus of course .xyz fails. David My concern is that this shouldn't compile in the first place. What is xyz?, Is it a free function? Is it a member variable or function? In my mind it is neither of the two so why does it compile? Removing the string changes the signature of opDispatch but as shown in my prior example, there are orther ways to cause this error.
Re: DMD v2.066.0-b2
On Wednesday, 9 July 2014 at 12:11:13 UTC, Andrew Edwards wrote: remove the "string components" parameter form opDispatch to reveal the same error. Hm, could you elaborate a bit further on this? As per the spec, opDispatch requires a string parameter (http://dlang.org/operatoroverloading.html#Dispatch). Removing it means that the compiler no longer considers the template to match the opDispatch signature, and thus of course .xyz fails. David
Re: DMD v2.066.0-b2
On 7/9/14, 5:58 PM, Andrew Edwards wrote: On 7/9/14, 4:18 PM, Bob wrote: Hi, I hit problem with templates/opDispatch. http://pastebin.com/rc09yWNt % uname -a Linux machine 3.11.0-20-generic #35-Ubuntu SMP Fri May 2 21:32:49 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux What does this event mean? Where does xyz come from? The code below also compiles in 2.065.0 on osx, but comment out opDispach() and it fails with the same error message as above. Seems to be a bug that got fixed. This works in 2.065.0 also: void main() { auto e = Vec4(5); // This worked with dmd_2.065.0-0_amd64 // but does not work with dmd_2.066.0~b2-0_amd64 auto x = e.xyz; // Error: no property 'xyz' for type 'Vec!4' } alias Vec4 = Vec!4; struct Vec(int dim) { this(float h) {} auto opDispatch(string components)() { Vec!(1) result = void; return result; } } remove the "string components" parameter form opDispatch to reveal the same error.
Re: DMD v2.066.0-b2
On 7/9/14, 4:18 PM, Bob wrote: Hi, I hit problem with templates/opDispatch. http://pastebin.com/rc09yWNt % uname -a Linux machine 3.11.0-20-generic #35-Ubuntu SMP Fri May 2 21:32:49 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux What does this event mean? Where does xyz come from? The code below also compiles in 2.065.0 on osx, but comment out opDispach() and it fails with the same error message as above. Seems to be a bug that got fixed. void main() { auto e = Vec4(5, 3, 3, 1); // This worked with dmd_2.065.0-0_amd64 // but does not work with dmd_2.066.0~b2-0_amd64 auto x = e.xyz; // Error: no property 'xyz' for type 'Vec!4' } alias Vec4 = Vec!4; struct Vec(int dim) { union { struct { float h; float i; float j; static if (4 <= dim) float w; } } this(float h, float i, float j, float w) {} auto opDispatch(string components)() const { Vec!(1) result = void; return result; } }
Re: DMD v2.066.0-b2
Hi, I hit problem with templates/opDispatch. http://pastebin.com/rc09yWNt % uname -a Linux machine 3.11.0-20-generic #35-Ubuntu SMP Fri May 2 21:32:49 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
Re: DMD v2.066.0-b2
On 7/8/14, 11:39 PM, John wrote: On Tuesday, 8 July 2014 at 10:38:52 UTC, Andrew Edwards wrote: If nothing is identified, I will abandon the idea of providing point releases. Managing multiple Alpha or Beta builds with a1, a2 .. or b1, b2 etc look good. Adding another point-number to the 2.066 like 2.066.1 is a needless confusion, unless you have already released 2.066 and coming up with an intermediate release before 2.067 Note that the maintenance/point release refers specifically to 2.065.1. 2.065 was released in February and there is nothing that says you cannot continue maintaining it after we've released 2.066.
Re: DMD v2.066.0-b2
On 7/8/14, 11:47 PM, NCrashed wrote: On Tuesday, 8 July 2014 at 10:38:52 UTC, Andrew Edwards wrote: The v2.066.0-b2 binaries are now available. The review period will run until 0700 UTC ( PDT) 14 July 2014. Your assistance in identifying and reporting bugs are greatly appreciated. Link to this post on dlang.org main page is broken. https://issues.dlang.org/show_bug.cgi?id=13080
Re: DMD v2.066.0-b2
On 7/8/14, 11:16 PM, NCrashed . via Digitalmars-d-announce wrote: Also the link on main page is broken. https://issues.dlang.org/show_bug.cgi?id=13080
Re: DMD v2.066.0-b2
Also the link on main page is broken. 2014-07-08 18:10 GMT+04:00 via Digitalmars-d-announce < digitalmars-d-announce@puremagic.com>: > On Tuesday, 8 July 2014 at 13:48:45 UTC, kdmult wrote: > >> The download links are broken. They should have prefix http:// instead >> of ftp://. >> > > Hmm... they work for me. >
Re: DMD v2.066.0-b2
On Tuesday, 8 July 2014 at 10:38:52 UTC, Andrew Edwards wrote: The v2.066.0-b2 binaries are now available. The review period will run until 0700 UTC ( PDT) 14 July 2014. Your assistance in identifying and reporting bugs are greatly appreciated. Link to this post on dlang.org main page is broken.
Re: DMD v2.066.0-b2
On Tuesday, 8 July 2014 at 10:38:52 UTC, Andrew Edwards wrote: If nothing is identified, I will abandon the idea of providing point releases. Managing multiple Alpha or Beta builds with a1, a2 .. or b1, b2 etc look good. Adding another point-number to the 2.066 like 2.066.1 is a needless confusion, unless you have already released 2.066 and coming up with an intermediate release before 2.067
Re: DMD v2.066.0-b2
On Tuesday, 8 July 2014 at 13:48:45 UTC, kdmult wrote: The download links are broken. They should have prefix http:// instead of ftp://. Hmm... they work for me.
Re: DMD v2.066.0-b2
The download links are broken. They should have prefix http:// instead of ftp://.