www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - duplicate symbols

reply "Dmitri Makarov" <dmakarv gmail.com> writes:
Should the compiler issue an error for this code?

struct S
{
}

string generate(S t)
{
   return "";
}

string generate(S t)
{
   return "huh?";
}

It compiles and breaks with multiple definition of 
'_D1b8generateFS1b1SZAya' at link time. dmd v2.067
Apr 10 2015
next sibling parent reply Daniel =?UTF-8?B?S296w6Fr?= via Digitalmars-d-learn writes:
It will when you try to use this function
test.d(18): Error: test.generate called with argument types (S) matches
both: test.d(7):     test.generate(S t)
and:
test.d(12):     test.generate(S t)



On Fri, 10 Apr 2015 09:54:31 +0000
Dmitri Makarov via Digitalmars-d-learn
<digitalmars-d-learn puremagic.com> wrote:

 Should the compiler issue an error for this code?
 
 struct S
 {
 }
 
 string generate(S t)
 {
    return "";
 }
 
 string generate(S t)
 {
    return "huh?";
 }
 
 It compiles and breaks with multiple definition of 
 '_D1b8generateFS1b1SZAya' at link time. dmd v2.067
Apr 10 2015
parent "Dmitri Makarov" <dmakarv gmail.com> writes:
Fine. Then I expect it not to break the linking when the function 
is not called. Now it does, albeit only when -cov is used.

On Friday, 10 April 2015 at 10:01:00 UTC, Daniel Kozák wrote:
 It will when you try to use this function
 test.d(18): Error: test.generate called with argument types (S) 
 matches
 both: test.d(7):     test.generate(S t)
 and:
 test.d(12):     test.generate(S t)



 On Fri, 10 Apr 2015 09:54:31 +0000
 Dmitri Makarov via Digitalmars-d-learn
 <digitalmars-d-learn puremagic.com> wrote:

 Should the compiler issue an error for this code?
 
 struct S
 {
 }
 
 string generate(S t)
 {
    return "";
 }
 
 string generate(S t)
 {
    return "huh?";
 }
 
 It compiles and breaks with multiple definition of 
 '_D1b8generateFS1b1SZAya' at link time. dmd v2.067
Apr 10 2015
prev sibling next sibling parent reply "Kagamin" <spam here.lot> writes:
The compiler postpones some checks to codegen and link time.
Apr 10 2015
parent reply "Dmitri Makarov" <dmakarv gmail.com> writes:
How does this help me to get a working program?

On Friday, 10 April 2015 at 10:08:56 UTC, Kagamin wrote:
 The compiler postpones some checks to codegen and link time.
Apr 10 2015
parent "Kagamin" <spam here.lot> writes:
On Friday, 10 April 2015 at 10:14:51 UTC, Dmitri Makarov wrote:
 How does this help me to get a working program?

 On Friday, 10 April 2015 at 10:08:56 UTC, Kagamin wrote:
 The compiler postpones some checks to codegen and link time.
To see all errors you should link the code. Then you can fix them.
Apr 10 2015
prev sibling parent Steven Schveighoffer <schveiguy yahoo.com> writes:
On 4/10/15 5:54 AM, Dmitri Makarov wrote:
 Should the compiler issue an error for this code?

 struct S
 {
 }

 string generate(S t)
 {
    return "";
 }

 string generate(S t)
 {
    return "huh?";
 }

 It compiles and breaks with multiple definition of
 '_D1b8generateFS1b1SZAya' at link time. dmd v2.067
There's a bug on this: https://issues.dlang.org/show_bug.cgi?id=2789 -Steve
Apr 10 2015