[Issue 5906] Just pre-conditions at compile-time when arguments are static
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Dec 25 03:42:03 PST 2012
http://d.puremagic.com/issues/show_bug.cgi?id=5906
--- Comment #4 from bearophile_hugs at eml.cc 2012-12-25 03:42:02 PST ---
If I write:
void main() {
byte x = 200;
}
The compiler refuses that code statically, it means it performs a run-time test
of the value:
test.d(2): Error: cannot implicitly convert expression (200) of type int to
byte
But if I write code like this:
void main(string[] args) {
byte x = args.length;
}
It does not perform that test at compile-time, because it can't, the value is
known only at run-time.
What I'm trying to archive here is a way to emulate that built-in behavour in
user-defined types. This means if I define a MyByte type (that is an integral
struct value with the same admissible values interval as a signed byte), I'd
like a way to define MyByte contracts so this code produces a compile-time
error in the first assignment and a run-time error in the second assignment:
void main(string[] args) {
MyByte x = 200; // compile-time error here
MyByte x = 200 + args.length; // run-time error here
}
That's why I have suggested a "static in". But according to your answer my
solution is not good enough.
Other better ideas are welcome.
--
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