I have posted the expression automatic type promotion rules. They are available at the Practical language wiki:
The idea here is to satisfy two (conflicting) conditions in the best way possible:
- Completely disallow implicit conversions that reduce the value range.
- This includes the signed/unsigned comparison problems in C, C++ and D.
- Reduce to a minimum the amount of explicit type casts needed in order to express yourself.
Your feedback on how well those goals are reached would be greatly appreciated.
The practicomp compiler already supports all of the rules discussed in the link, if you want to experiment.