http://d.puremagic.com/issues/show_bug.cgi?id=10846
--- Comment #2 from Andrej Mitrovic <[email protected]> 2013-08-18 15:15:55 PDT --- (In reply to comment #1) > Another alternative is to relax the function hijacking protection a little > bit. > > If function "foo" in module "a" takes a user-defined type, and function "foo" > in module "b" takes another user-defined type, where the types are structures > and have no subtyping relation to one another, then I think it's safe to allow > these two functions to overload against one another without requiring the user > to manually merge the overload set. > > Wouldn't this be safe? Here's what I don't quite understand. This test-case fails: ----- module a; import b; struct A { } void test(A a) { } void main() { B b; b.test(); } ----- ----- module b; struct B { } void test(B b) { } ----- $ dmd -c a.d > a.d(10): Error: function a.test (A a) is not callable using argument types (B) But this test-case works: ----- module a; struct A { } void test(A a) { } ----- ----- module b; struct B { } void test(B b) { } ----- ----- module main; import a; import b; void main() { B b; b.test(); } ----- $ dmd -c main.d > Shouldn't then both test-cases either fail or succeed? -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
