[Issue 14875] New: A template instance with deprecated symbol/type needlessly repeats "Deprecation:" messages

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Thu Aug 6 02:47:32 PDT 2015


https://issues.dlang.org/show_bug.cgi?id=14875

          Issue ID: 14875
           Summary: A template instance with deprecated symbol/type
                    needlessly repeats "Deprecation:" messages
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Keywords: diagnostic
          Severity: minor
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: k.hara.pg at gmail.com

Example code:

deprecated class Dep { }

alias X = Foo!Dep;      // Line 3

template Foo(T)
{
    pragma(msg, T);     // Line 7
    enum Foo = cast(void*)Bar!T;
}
template Bar(T)
{
    pragma(msg, T);     // Line 12
    enum Bar = &Baz!T;
}

template Baz(T)
{
    pragma(msg, T);     // Line 18
    immutable Baz = 1234;
}

Output:

test.d(3): Deprecation: class test.Dep is deprecated
test.d(7): Deprecation: class test.Dep is deprecated
Dep
test.d(12): Deprecation: class test.Dep is deprecated
Dep
test.d(18): Deprecation: class test.Dep is deprecated
Dep
Dep

Current compiler reports the message at the every use of deprecated symbols.
However, if a deprecated symbol/type comes from template parameter, the report
for that is already done at the instantiation point.
The rest is just redundant.

So, I think output of the example code should be changed to:

test.d(3): Deprecation: class test.Dep is deprecated
Dep
Dep
Dep
Dep

--


More information about the Digitalmars-d-bugs mailing list