[Issue 2268] New: Compiler should generate function name conflict error with templated functions.

d-bugmail at puremagic.com d-bugmail at puremagic.com
Wed Aug 6 10:26:23 PDT 2008


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 at digitalmars.com
        ReportedBy: dsimcha at 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.


-- 



More information about the Digitalmars-d-bugs mailing list