enso/distribution/lib/Standard
Kaz Wesley e5b85bf16e
Space-precedence does not apply to value-level operators (#10597)
In a sequence of value-level operators, whitespace does not affect relative precedence. Functional operators still follow the space-precedence rules.

The "functional" operators are: `>> << |> |>> <| <<| : .`, application, and any operator containing `<-` or `->`. All other operators are considered value-level operators.

Asymmetric whitespace can still be used to form *operator sections* of value-level operators, e.g. `+2 * 3` is still equivalent to `x -> (x+2) * 3`.

Precedence of application is unchanged, so `f x+y` is still equivalent to `f (x + y)` and `f x+y * z` is still equivalent to `(f (x + y)) * z`.

Any attempt to use spacing to override value-level operator precedence will be caught by the new enso linter. Mixed spacing (for clarity) in value-operator expressions is allowed, as long as it is consistent with the precedences of the operators.

Closes #10366.

# Important Notes
Precedence warnings:
- The parser emits a warning if the whitespace in an expression is inconsistent with its effective precedence.
- A new enso linter can be run with `./run libraries lint`. It parses all `.enso` files in `distribution/lib` and `test`, and reports any errors or warnings. It can also be run on individual files: `cargo run --release --bin check_syntax -- file1 file2...` (the result may be easier to read than the `./run` output).
- The linter is also run as part of `./run lint`, so it is checked in CI.

Additional language change:
- The exponentiation operator (`^`) now has higher precedence than the multiplication class (`*`, `/`, `%`). This change did not affect any current enso files.

Library changes:
- The libraries have been updated. The new warnings were used to identify all affected code; the changes themselves have not been programmatically verified (in many cases their equivalence relies on the commutativity of string concatenation).
2024-07-24 10:55:44 +00:00
..
AWS/0.0.0-dev Fixing Database tests and Snowflake Dialect - part 3 out of ... (#10458) 2024-07-10 13:21:30 +00:00
Base/0.0.0-dev Space-precedence does not apply to value-level operators (#10597) 2024-07-24 10:55:44 +00:00
Database/0.0.0-dev Space-precedence does not apply to value-level operators (#10597) 2024-07-24 10:55:44 +00:00
Examples/0.0.0-dev Speed up EnsoInputStream again (#10515) 2024-07-11 10:08:26 +00:00
Geo/0.0.0-dev Replace all from ... export all with explicit exports (#10369) 2024-07-11 19:34:25 +02:00
Google_Api/0.0.0-dev Autoscoping for File_Format and minor tweaks. (#10348) 2024-06-24 08:28:54 +00:00
Image/0.0.0-dev Snowflake Dialect pt. 6 - Union, Distinct and other improvements (#10576) 2024-07-19 16:04:00 +00:00
Searcher/0.0.0-dev Rename order_by to sort for Table and DB_Table. (#10372) 2024-06-26 17:46:09 +00:00
Snowflake/0.0.0-dev Space-precedence does not apply to value-level operators (#10597) 2024-07-24 10:55:44 +00:00
Table/0.0.0-dev Space-precedence does not apply to value-level operators (#10597) 2024-07-24 10:55:44 +00:00
Test/0.0.0-dev Space-precedence does not apply to value-level operators (#10597) 2024-07-24 10:55:44 +00:00
Visualization/0.0.0-dev Space-precedence does not apply to value-level operators (#10597) 2024-07-24 10:55:44 +00:00