On 08/01/2012 07:03 PM, Glenn Willen wrote:
I for one liked the clear and unambiguous rule: semicolon discards
value, no-semicolon returns value.

The idea of allowing uniform semicolon use is appealing, but it does
seem to add complexity and mysteriousness.

Actually, the only parser change was to throw away semicolons before the end of the block.

To be more concrete, the rules are:

1. The last expression is the value of the block, regardless of whether there's a semicolon after it. (This seems like a simplification to me.)

2. "Statement positions" are defined as the position of any expression immediately before a ";" (if that ";" has anything after it) and the last value of a function declared to return unit. Given that:

3. The type of an expression in a statement position is ignored.

4. The types of the arms of a pattern match and the bodies of if/else statements in statement position are ignored.

I think the rules are pretty simple, but I'm biased :)

Also, the pretty printer will never write a semicolon after an expression in trailing position, so if you like the visual consistency the pretty printer will preserve it for you.

(Somewhat surprised at the response here, actually; this thread from 8 months ago [1] had near-unanimity the other way!)

Patrick

[1]: https://mail.mozilla.org/pipermail/rust-dev/2012-January/001263.html

_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to