[Issue 18743] ConditionalExpression and AssignExpression should require parentheses
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat Apr 7 21:49:59 UTC 2018
https://issues.dlang.org/show_bug.cgi?id=18743
David Nadlinger <code at klickverbot.at> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |code at klickverbot.at
Hardware|x86_64 |All
Summary|Conditional expression |ConditionalExpression and
|(ternary operator) can |AssignExpression should
|evaluate the third |require parentheses
|expression even "If it is |
|true" |
OS|Linux |All
Severity|normal |enhancement
--- Comment #1 from David Nadlinger <code at klickverbot.at> ---
This isn't a bug.
In D, ?: has higher precedence than =, so
true ? stt = "AA" : stt = "BB"
means
(true ? (stt = "AA") : stt) = "BB",
in line with C and other languages, but notably not C++.
The operator precedence should be documented somewhere, though; while there is
a table in TDPL (p. 61 ff.) and on the Wiki
(https://wiki.dlang.org/Operator_precedence), I can't seem to find it on
dlang.org/spec.
---
Changing this to an enhancement request, as we should really consider requiring
explicit parenthesization for this sort of error-prone code, similar to how we
disallow assignment expressions in if statements.
--
More information about the Digitalmars-d-bugs
mailing list