[Issue 12954] New: deprecated doesn't work with concatenated strings or anything else but a string literal

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Thu Jun 19 23:15:42 PDT 2014


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

          Issue ID: 12954
           Summary: deprecated doesn't work with concatenated strings or
                    anything else but a string literal
           Product: D
           Version: unspecified
          Hardware: All
                OS: All
            Status: NEW
          Severity: enhancement
          Priority: P1
         Component: DMD
          Assignee: nobody at puremagic.com
          Reporter: jmdavisProg at gmx.com

This code:

deprecated("my " ~ "message")
void foo()
{
}

void main()
{
}

gives this error

q.d(1): Error: string expected, not '"my " ~ "message"'

This code gives a similar error:

string bar()
{
    return "my message";
}

deprecated(bar())
void foo()
{
}

void main()
{
}

I would have expected that deprecated would take any arbitrary expression which
evaluated to a string at compile time. I'm not sure that it really matters that
you can pass it a function (save for consistency with other language features),
but the lack of ~ makes it hard to break up lines if you end up with a long
deprecation message (and yes, it's generally better to have shorter deprecation
messages, but sometimes longer ones are required, and it would be better if
they didn't have to be on one, overly long line).

--


More information about the Digitalmars-d-bugs mailing list