···4455### Compiler
6677-- The compiler now reports an error when integer and float binary operators are used
88- incorrectly in case expression guards. ([Adi Salimgereyev](https://github.com/abs0luty))
77+- The compiler now reports an error when integer and float binary operators are
88+ used incorrectly in case expression guards.
99+ ([Adi Salimgereyev](https://github.com/abs0luty))
9101011- The compiler now supports string concatenation in clause guards:
11121213 ```gleam
1314 case message {
1414- #(version, action) if version <> ":" <> action == "v1:delete" -> handle_delete()
1515+ #(version, action) if version <> ":" <> action == "v1:delete" ->
1616+ handle_delete()
1517 _ -> ignore()
1618 }
1719 ```
···34363537### Bug fixes
36383939+- Fixed a bug where some bit array patterns would erroneously be marked as
4040+ unreachable.
4141+ ([Giacomo Cavalieri](https://github.com/giacomocavalieri))
4242+3743- The compiler now correctly tracks the minimum required version for constant
3844 record updates to be `>= 1.14.0`.
3945 ([Giacomo Cavalieri](https://github.com/giacomocavalieri))
···5662- Fixed a bug that would result in not being able to rename an aliased pattern.
5763 ([Giacomo Cavalieri](https://github.com/giacomocavalieri))
58645959-- Added an error message when attempting to update packages that are not dependencies
6060- of the project, instead of failing silently.
6565+- Added an error message when attempting to update packages that are not
6666+ dependencies of the project, instead of failing silently.
6167 ([Etienne Boutet](https://github.com/EtienneBoutet),
6268 [Vladislav Shakitskiy](https://github.com/vshakitskiy))
6369
···843843}
844844845845#[test]
846846-fn interfering_string_pattern_fails_if_succeeding() {
847847- assert_js!(
848848- r#"
849849-pub fn wibble(bits) {
850850- case bits {
851851- <<"aaa", 0, _:bits>> -> 1
852852- // If the first one fails, we know this one won't match, so it won't appear
853853- // in the final else branch!
854854- <<_, "aa", 1, _:bits>> -> 2
855855- _ -> 3
856856- }
857857-}"#
858858- );
859859-}
860860-861861-#[test]
862846fn interfering_string_pattern_succeeds_if_succeeding() {
863847 assert_js!(
864848 r#"
···868852 // If the first one succeeds, so will the second check, so it won't be
869853 // performed twice inside the first if branch!
870854 <<"aaa", 1, _:bits>> -> 2
871871- _ -> 3
872872- }
873873-}"#
874874- );
875875-}
876876-877877-#[test]
878878-fn interfering_string_pattern_fails_if_failing() {
879879- assert_js!(
880880- r#"
881881-pub fn wibble(bits) {
882882- case bits {
883883- <<"aaaa", 0, _:bits>> -> 1
884884- // If the first one fails we know this one will fail as well, so it won't
885885- // appear in the final else branch.
886886- <<_, "aaabbb", 1, _:bits>> -> 2
887855 _ -> 3
888856 }
889857}"#