···11-let
22- # parens around primitives
33- a = {
44- b = ("hello");
55- c = (d);
66- e = ({ f = 2; });
77- };
88-99- # parens around let-value
1010- g = (1 + 2);
1111- h = ({ inherit i; });
1212-1313- # LATER: binary exprs, function args etc.
1414-in
1515- # parens around let body
1616- (null)
1717-1818- # select in list (parens not necessary)
1919- [
2020- (a.b)
2121- (a.b or g)
2222- ]
···11----
22-source: bin/tests/main.rs
33-expression: "&stdout"
44----
55-[W08] Warning: These parentheses can be omitted
66- ╭─[tests/data/useless_parens.nix:4:9]
77- │
88- 4 │ b = ("hello");
99- · ────┬────
1010- · ╰────── Useless parentheses around value in binding
1111-───╯
1212-[W08] Warning: These parentheses can be omitted
1313- ╭─[tests/data/useless_parens.nix:5:9]
1414- │
1515- 5 │ c = (d);
1616- · ─┬─
1717- · ╰─── Useless parentheses around value in binding
1818-───╯
1919-[W08] Warning: These parentheses can be omitted
2020- ╭─[tests/data/useless_parens.nix:6:9]
2121- │
2222- 6 │ e = ({ f = 2; });
2323- · ──────┬─────
2424- · ╰─────── Useless parentheses around value in binding
2525-───╯
2626-[W08] Warning: These parentheses can be omitted
2727- ╭─[tests/data/useless_parens.nix:10:7]
2828- │
2929- 10 │ g = (1 + 2);
3030- · ───┬───
3131- · ╰───── Useless parentheses around value in binding
3232-────╯
3333-[W08] Warning: These parentheses can be omitted
3434- ╭─[tests/data/useless_parens.nix:11:7]
3535- │
3636- 11 │ h = ({ inherit i; });
3737- · ────────┬───────
3838- · ╰───────── Useless parentheses around value in binding
3939-────╯
4040-[W08] Warning: These parentheses can be omitted
4141- ╭─[tests/data/useless_parens.nix:16:3]
4242- │
4343- 16 │ (null)
4444- · ───┬──
4545- · ╰──── Useless parentheses around primitive expression
4646-────╯
4747-[W08] Warning: These parentheses can be omitted
4848- ╭─[tests/data/useless_parens.nix:20:5]
4949- │
5050- 20 │ (a.b)
5151- · ──┬──
5252- · ╰──── Useless parentheses around primitive expression
5353-────╯
···11+---
22+source: bin/tests/useless_parens.rs
33+expression: "\"let b = 0; in (b)\""
44+---
55+--- <temp_file_path>
66++++ <temp_file_path> [fixed]
77+@@ -1 +1 @@
88+-let b = 0; in (b)
99++let b = 0; in b
···11+---
22+source: bin/tests/useless_parens.rs
33+expression: "\"let a = (1 + 2); in null\""
44+---
55+[W08] Warning: These parentheses can be omitted
66+ ╭─[<temp_file_path>:1:9]
77+ │
88+ 1 │ let a = (1 + 2); in null
99+ · ───┬───
1010+ · ╰───── Useless parentheses around value in binding
1111+───╯
···11+---
22+source: bin/tests/useless_parens.rs
33+expression: "\"let h = ({ inherit (builtins) map; }); in null\""
44+---
55+[W08] Warning: These parentheses can be omitted
66+ ╭─[<temp_file_path>:1:9]
77+ │
88+ 1 │ let h = ({ inherit (builtins) map; }); in null
99+ · ──────────────┬──────────────
1010+ · ╰──────────────── Useless parentheses around value in binding
1111+───╯
···11+---
22+source: bin/tests/useless_parens.rs
33+expression: "\"let a = 0; in (null)\""
44+---
55+[W08] Warning: These parentheses can be omitted
66+ ╭─[<temp_file_path>:1:15]
77+ │
88+ 1 │ let a = 0; in (null)
99+ · ───┬──
1010+ · ╰──── Useless parentheses around body of let expression
1111+───╯
···11+---
22+source: bin/tests/useless_parens.rs
33+expression: "\"let b = 0; in (b)\""
44+---
55+[W08] Warning: These parentheses can be omitted
66+ ╭─[<temp_file_path>:1:15]
77+ │
88+ 1 │ let b = 0; in (b)
99+ · ─┬─
1010+ · ╰─── Useless parentheses around body of let expression
1111+───╯
+26
bin/tests/useless_parens.rs
···11+mod _utils;
22+33+use macros::generate_tests;
44+55+generate_tests! {
66+ rule: manual_inherit,
77+ expressions: [
88+ // parens around primitives
99+ r#"("hello")"#,
1010+ "let b = 0; in (b)",
1111+ "({ f = 2; })",
1212+1313+ // parens around let-value
1414+ "let a = (1 + 2); in null",
1515+ "let h = ({ inherit (builtins) map; }); in null",
1616+1717+ // LATER: binary exprs, function args etc.
1818+1919+ // parens around let body
2020+ "let a = 0; in (null)",
2121+2222+ // select in list (parens not necessary)
2323+ "[(builtins.map)]",
2424+ "[(builtins.pam or map)]",
2525+ ],
2626+}