digitalmars.D.bugs - [Issue 2268] New: Compiler should generate function name conflict error with templated functions.
- d-bugmail puremagic.com (32/32) Aug 06 2008 http://d.puremagic.com/issues/show_bug.cgi?id=2268
- d-bugmail puremagic.com (12/12) Sep 04 2008 http://d.puremagic.com/issues/show_bug.cgi?id=2268
- d-bugmail puremagic.com (27/27) Jan 25 2009 http://d.puremagic.com/issues/show_bug.cgi?id=2268
- d-bugmail puremagic.com (11/11) Jan 30 2009 http://d.puremagic.com/issues/show_bug.cgi?id=2268
- d-bugmail puremagic.com (11/11) May 13 2009 http://d.puremagic.com/issues/show_bug.cgi?id=2268
http://d.puremagic.com/issues/show_bug.cgi?id=2268 Summary: Compiler should generate function name conflict error with templated functions. Product: D Version: 2.017 Platform: PC OS/Version: Windows Status: NEW Severity: major Priority: P2 Component: DMD AssignedTo: bugzilla digitalmars.com ReportedBy: dsimcha yahoo.com It appears that the compiler does not properly handle collisions between function names in different modules when one of the functions is a template. Case 1: Find is not templated in either std.string or std.regexp, compilation fails with a conflicts error message. import std.string, std.regexp; void main() { int i = find("foobar", "foo"); } Case 2: Find is templated in std.algorithm, compiler silently tries to instantiate std.algorithm.find, instantiation fails with error specific to std.algorithm.find implementation. import std.string, std.algorithm; void main() { int i = find("foobar", "foo"); } I've marked this bug as major because, if a user runs into it and is not aware of it, it can be extremely difficult to figure out why the program doesn't compile. --
Aug 06 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2268 dsimcha yahoo.com changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|Compiler should generate |Hijacking of non-templated |function name conflict error|functions by templated |with templated functions. |functions should not be | |allowed. Added much more descriptive title, now that I'm more familiar with the general issue here. --
Sep 04 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2268 dsimcha yahoo.com changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|major |critical Keywords| |diagnostic Version|2.017 |2.023 Upgrading to critical and incrementing version because this bug still exists, I've been bitten by this several times now, and each time it's quite confusing. Also, the following example actually does give a proper error message, because instantiation of std.algorithm.find succeeds, and then DMD realizes that it conflicts with std.string.find: import std.algorithm, std.string; void main() { auto i = find("foobar", 'f'); } The root of the problem, then, is that DMD tries to instantiate any template functions that match the name of the function being called before outputting a name conflict error message. If the instantiation of these templates fails, then DMD fails with error messages related to its attempt at instantiating the template, rather than either silently using the non-template function (probably a bad idea) or failing with a name conflict error message (the right thing). Instead, DMD should fail *before* trying to instantiate the template function whose name conflicts with the non-template function, if they are not in the same overload set. --
Jan 25 2009
http://d.puremagic.com/issues/show_bug.cgi?id=2268 smjg iname.com changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |smjg iname.com Version|2.023 |2.017 The rule around here is that the version field should be set to the _oldest_ version in which the bug has been observed. http://tinyurl.com/avzytb --
Jan 30 2009
http://d.puremagic.com/issues/show_bug.cgi?id=2268 David Simcha <dsimcha yahoo.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED --- Works in 2.030, but see bug 2972. I think the fix caused this bug. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
May 13 2009