In src/backend/parser/parse_expr.c the following snippet of code is found
(lines 3238-3242, rev 765525c8c2c6e55abe):
if (strcmp(*nodename, "+") == 0 ||
strcmp(*nodename, "-")) // <-- notice the lack of comparisson
here
group = 0;
else
group = PREC_GROUP_PREFIX_OP;
Should the second part of the || be strcmp(*nodename, "-") == 0?