Re: How to deprecate member function from outside?

2018-12-22 Thread Dru via Digitalmars-d-learn

You're right it did define two functions
same signature and no compile error, heh





Re: How to deprecate member function from outside?

2018-12-22 Thread Neia Neutuladh via Digitalmars-d-learn
On Sat, 22 Dec 2018 21:33:14 +, Dru wrote:
> The first example shows that it is possible to deprecate a function
> separately from it's definition.

No, it doesn't. You declared two *different* functions. One was 
deprecated; the other wasn't.

> I want to know if it is possible to "fix" the second example? (deprecate
> a member function separately from it's definition)

No. All functions must be deprecated where you declare them.


Re: How to deprecate member function from outside?

2018-12-22 Thread Dru via Digitalmars-d-learn

Thanks for the reply
I will try to explain what I mean:

The first example shows that it is possible to deprecate a 
function separately from it's definition.


The second example tries the same for a member function but it 
fails with a compile error.



I want to know if it is possible to "fix" the second example?
(deprecate a member function separately from it's definition)



Re: How to deprecate member function from outside?

2018-12-22 Thread Neia Neutuladh via Digitalmars-d-learn
On Sat, 22 Dec 2018 18:55:47 +, Dru wrote:
> I would like to use "deprecated" on a member function, but do it from a
> separate file
> 
> this works:
> ///
> void func() {}
> 
> deprecated {
>void func();
> }

You're defining two functions, presumably in two different modules and 
with two different fully qualified names. One function is deprecated but 
has no body, so you will get a deprecation warning and a linker error if 
you try using it. One function is not deprecated and has a body, so you'll 
get no errors if you try using it.

If, on the other hand, you define both the non-deprecated and deprecated 
functions in the same file, and you try using them, you'll get an error 
saying that the function call matches multiple functions.


How to deprecate member function from outside?

2018-12-22 Thread Dru via Digitalmars-d-learn

Hi,
I would like to use "deprecated" on a member function, but do it 
from a separate file


this works:
///
void func() {}

deprecated {
  void func();
}


this doesn't work:

class C{
  void func() {}
}

deprecated {
  void C.func();
}


I get: Error: semicolon expected, not .

Thanks