digitalmars.D.bugs - [Issue 7702] New: opDispatch & opCall errors
- d-bugmail puremagic.com (42/42) Mar 13 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7702
- d-bugmail puremagic.com (38/38) Mar 13 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7702
- d-bugmail puremagic.com (11/11) Mar 13 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7702
- d-bugmail puremagic.com (10/10) Mar 13 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7702
- d-bugmail puremagic.com (9/9) Mar 15 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7702
- d-bugmail puremagic.com (10/10) Mar 15 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7702
http://d.puremagic.com/issues/show_bug.cgi?id=7702
Summary: opDispatch & opCall errors
Product: D
Version: unspecified
Platform: All
OS/Version: All
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody puremagic.com
ReportedBy: michal.minich gmail.com
PDT ---
struct S {
template opDispatch (string name) {
void opCall (T) () property {}
}
}
struct S3 {
auto opCall (T) () property {
struct S4 {
void opDispatch (string name) () property {}
}
S4 s4;
return s4;
}
}
void main () {
S s;
s.opDispatch!"x".opCall!int; // OK
s.x.opCall!int; // OK
s.opDispatch!("x")!(int); // parse error
s.x!int; // infinite loop in dmd
S3 s3;
s3.opCall!int.opDispatch!("x"); // OK
s3.opCall!int.x; // OK
s3!int.x; // Error: template instance s3!(int) s3 is not a template
declaration, it is a variable
}
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Mar 13 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7702
Kenji Hara <k.hara.pg gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |ice
The infinite loop in dmd is the real issue.
struct S {
template opDispatch (string name) {
//void opCall (T) () property {} // not need
}
}
void main () {
S s;
s.x!int; // infinite loop in dmd
}
And others are not errors, because their error messages are valid.
Then I replace the subject.
----
opCall works only for call syntax, e.g. rewriting foo(args) to
foo.opCall(args).
If you want to implement s.x!int with opDispatch, *nested opDispatch idiom*
like follows would work.
struct S {
template opDispatch(string name) {
T opDispatch(T)() property {
return T.init;
}
}
}
void main() {
S s;
assert(s.x!int == 0);
// same as s.opDispatch!("x").opDispatch!(int)()
}
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Mar 13 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7702
Kenji Hara <k.hara.pg gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Version|unspecified |D2
Summary|opDispatch & opCall errors |opDispatch goes into
| |infinite loop
Severity|normal |critical
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Mar 13 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7702
Kenji Hara <k.hara.pg gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |pull
https://github.com/D-Programming-Language/dmd/pull/808
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Mar 13 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7702 Commit pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/380b2f8a26da0cb5c6a263608efb2c7020f25c7e Issue 7702 & 5733 - opDispatch goes into infinite loop -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Mar 15 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7702
Walter Bright <bugzilla digitalmars.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |bugzilla digitalmars.com
Resolution| |FIXED
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Mar 15 2012









d-bugmail puremagic.com 