digitalmars.D.bugs - [Issue 7196] New: Unfair function address overload resolution
- d-bugmail puremagic.com (25/25) Jan 01 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7196
- d-bugmail puremagic.com (14/14) Jan 02 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7196
- d-bugmail puremagic.com (13/13) Jan 02 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7196
- d-bugmail puremagic.com (12/16) Jan 02 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7196
- d-bugmail puremagic.com (8/22) Jan 02 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7196
- d-bugmail puremagic.com (9/11) Jan 02 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7196
- d-bugmail puremagic.com (12/12) Jan 06 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7196
http://d.puremagic.com/issues/show_bug.cgi?id=7196
Summary: Unfair function address overload resolution
Product: D
Version: unspecified
Platform: Other
OS/Version: Linux
Status: NEW
Severity: normal
Priority: P2
Component: DMD
AssignedTo: nobody puremagic.com
ReportedBy: timon.gehr gmx.ch
Tested with DMD 2.057
auto foo(int x){return x;}
auto foo(double x){return x;}
void main() {
auto x = (&foo)(1); // ok
auto y = (&foo)(1.0); // fail
}
Error: cannot implicitly convert expression (1) of type double to int
The code should either compile, or both lines should fail.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 01 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7196
Kenji Hara <k.hara.pg gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |patch, rejects-valid
Platform|Other |All
https://github.com/D-Programming-Language/dmd/pull/600
AddrExp that is yet not bounded into an variable should keep unresolved
overload information.
So the both lines should compile.
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 02 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7196
Stewart Gordon <smjg iname.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |smjg iname.com
This is strange - issue 52 is marked as fixed, so why does it still EVER pick
the wrong instance?
Where does the spec address the meaning of &foo if there's more than one
function called foo in scope?
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 02 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7196This is strange - issue 52 is marked as fixed, so why does it still EVER pick the wrong instance?This problem is only when the caller of CallExp is AddrExp (== &foo). bug 51 is the problems on initializer and rhs of AssignExp.Where does the spec address the meaning of &foo if there's more than one function called foo in scope?In this case, CallExp can pick the original overload of foo in static. Therefore compiler should translate from (&foo)(arguments...) to foo(arguments...). Finally, the overload should be resolved. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 02 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7196If the compiler rewrites (&foo)(arguments...) to foo(arguments...), is it now able to inline delegates that are called directly like for example {x++;}() ? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------This is strange - issue 52 is marked as fixed, so why does it still EVER pick the wrong instance?This problem is only when the caller of CallExp is AddrExp (== &foo). bug 51 is the problems on initializer and rhs of AssignExp.Where does the spec address the meaning of &foo if there's more than one function called foo in scope?In this case, CallExp can pick the original overload of foo in static. Therefore compiler should translate from (&foo)(arguments...) to foo(arguments...). Finally, the overload should be resolved.
Jan 02 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7196
If the compiler rewrites (&foo)(arguments...) to foo(arguments...), is it now
able to inline delegates that are called directly like for example {x++;}() ?
Sorry, I'm not sure the meaning of 'inline'.
If you means 'optimizing', I don't know direct called delegate would be inlined
or not...
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 02 2012
http://d.puremagic.com/issues/show_bug.cgi?id=7196
Walter Bright <bugzilla digitalmars.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |bugzilla digitalmars.com
Resolution| |FIXED
00:45:18 PST ---
https://github.com/D-Programming-Language/dmd/commit/092ae010d75417a5436fd6502a024af5d21a7922
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
Jan 06 2012









d-bugmail puremagic.com 