digitalmars.D.learn - Clearer error messages - how?
- Simen Kjaeraas (32/32) Mar 21 2008 I'm playing around with templates and mixins of different types, in an ...
- BCS (4/38) Mar 21 2008 I wish they were better (I once has a compile that managed to flush my 2...
I'm playing around with templates and mixins of different types, in an =
effort to
make a property struct with all manners of overloaded operators (as per
Alternative solutions to returning ref types. in digitalmars.D).
Now, when I use this thing and do something wrong, I get error messages =
=
with
very user-unfriendly texts. For instance:
/////////////////
int _a;
property!(int, properties.read) a =3D &_a; // properties.read means only=
=
operators
// that do not change the data are =
overloaded.
a +=3D 4; // this lines leads to the errors below
/////////////////
test.d(8): Error: 'a' is not a scalar, it is a
_property!(int,void,"+,-,*,/,%,&,|,^,<<,>>,>>>,~,in","+,-","")
test.d(8): Error: incompatible types for ((a) +=3D (4)):
'_property!(int,void,"+,-,*,/,%,&,|,^,<<,>>,>>>,~,in","+,-","")' and =
=
'int'
test.d(8): Error: 'a' is not of arithmetic type, it is a
_property!(int,void,"+,-,*,/,%,&,|,^,<<,>>,>>>,~,in","+,-","")
As you can see, hardly user-friendly. Now, how can I make them more =
readable? Do
I need to overload all the other operators with templated functions with=
=
static
asserts?
-- Simen
Mar 21 2008
Reply to Simen,I'm playing around with templates and mixins of different types, in an effort to make a property struct with all manners of overloaded operators (as per Alternative solutions to returning ref types. in digitalmars.D). Now, when I use this thing and do something wrong, I get error messages with very user-unfriendly texts. For instance: ///////////////// int _a; property!(int, properties.read) a = &_a; // properties.read means only operators // that do not change the data are overloaded. a += 4; // this lines leads to the errors below ///////////////// test.d(8): Error: 'a' is not a scalar, it is a _property!(int,void,"+,-,*,/,%,&,|,^,<<,>>,>>>,~,in","+,-","") test.d(8): Error: incompatible types for ((a) += (4)): '_property!(int,void,"+,-,*,/,%,&,|,^,<<,>>,>>>,~,in","+,-","")' and 'int' test.d(8): Error: 'a' is not of arithmetic type, it is a _property!(int,void,"+,-,*,/,%,&,|,^,<<,>>,>>>,~,in","+,-","") As you can see, hardly user-friendly. Now, how can I make them more readable? Do I need to overload all the other operators with templated functions with static asserts?I wish they were better (I once has a compile that managed to flush my 2000+ line scroll back buffer x-). But I'm not sure how you could do it without loosing information that the user needs to see.
Mar 21 2008








BCS <ao pathlink.com>