[Issue 16444] New: Less noisy error messages if built-in method is @disable (e.g. opAssign)
via Digitalmars-d-bugs
digitalmars-d-bugs at puremagic.com
Mon Aug 29 08:50:05 PDT 2016
https://issues.dlang.org/show_bug.cgi?id=16444
Issue ID: 16444
Summary: Less noisy error messages if built-in method is
@disable (e.g. opAssign)
Product: D
Version: D2
Hardware: x86_64
OS: Linux
Status: NEW
Severity: enhancement
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: greensunny12 at gmail.com
When a builtin-in method like opAssign is disabled, the error messages are
quite noisy:
struct A
{
@disable void opAssign(Other)(Other other);
}
pure nothrow @safe @nogc unittest
{
A a;
a = A();
}
foo.d(16): Error: function foo.A.opAssign!(A).opAssign is not callable because
it is annotated with @disable
foo.d(16): Error: pure function 'foo.__unittestL13_1' cannot call impure
function 'foo.A.opAssign!(A).opAssign'
foo.d(16): Error: safe function 'foo.__unittestL13_1' cannot call system
function 'foo.A.opAssign!(A).opAssign'
foo.d(16): Error: @nogc function 'foo.__unittestL13_1' cannot call non- at nogc
function 'foo.A.opAssign!(A).opAssign'
foo.d(16): Error: function 'foo.A.opAssign!(A).opAssign' is not nothrow
foo.d(13): Error: function 'foo.__unittestL13_1' is nothrow yet may throw
There is a trick that is used in https://github.com/dlang/phobos/pull/4755, one
can simply annotate the disabled function with all attributes:
struct B
{
pure nothrow @safe @nogc @disable void opAssign(Other)(Other other);
}
pure nothrow @safe @nogc unittest
{
B b;
b = B();
}
foo.d(16): Error: function foo.B.opAssign!(B).opAssign is not callable because
it is annotated with @disable
--
More information about the Digitalmars-d-bugs
mailing list