[Issue 1449] deprecated methods are counted as interface implementation

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Jun 16 06:49:14 PDT 2011


http://d.puremagic.com/issues/show_bug.cgi?id=1449



--- Comment #10 from Lars Ivar Igesund <larsivar at igesund.net> 2011-06-16 06:44:29 PDT ---
(In reply to comment #9)

> To quote the spec:
> > It is often necessary to deprecate a feature in a library, yet retain it for
> > backwards compatibility. Such declarations can be marked as deprecated, which > means that the compiler can be set to produce an error if any code refers to
> > deprecated declarations
> 
> Where is the code referring to a deprecated declaration?

It does so implicitly.

If you have

Bar b = new Foo;

and do 

b.foo();

the compiler will not be able to catch it, as it cannot know whether an
arbitrary Bar instance actually is an instance of Foo. So at runtime, a
deprecated function will be called, or attempted to be called.

The spec probably does not cover this particular usecase, but it seems to me
that it is worth a warning. It just doesn't make sense to have an
implementation be deprecated, when the same function in the interface is not.

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------


More information about the Digitalmars-d-bugs mailing list