[Issue 8275] DMD assumes that Object.toHash() overrides are @safe, even though base is @trusted
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Wed Jun 20 21:00:15 PDT 2012
http://d.puremagic.com/issues/show_bug.cgi?id=8275
Kenji Hara <k.hara.pg at gmail.com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |INVALID
--- Comment #1 from Kenji Hara <k.hara.pg at gmail.com> 2012-06-20 21:02:37 PDT ---
This is an expected behavior of attribute inference with inheritance.
class A {
void foo() @trusted {}
}
class B : A {
override void foo() {
int n;
//auto p = cast(int*)n; // not allowed in safe code
}
}
void main() {
pragma(msg, typeof(A.foo)); // prints "@trusted void()"
pragma(msg, typeof(B.foo)); // prints "@safe void()" !
}
When you inherit a @trusted method, the derived method that you write is
inferred as @safe.
In other words, if you want to write @trusted code, you should qualify the
method with @trueted attribute.
class B : A {
override void foo() @trusted {
int n;
auto p = cast(int*)n; // allowed in trusted code
}
}
It seems to me that is necessary to avoid accidentally breaking of @safe
system.
--
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