Skip to content

Commit 943a475

Browse files
authored
Angular: Support expression for exhaustive typechecking (#19571)
1 parent 7056526 commit 943a475

6 files changed

Lines changed: 78 additions & 15 deletions

File tree

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
#### Support expression for exhaustive typechecking (#19571 by @fisker)
2+
3+
<!-- prettier-ignore -->
4+
```html
5+
<!-- Input -->
6+
@switch (state.mode) {
7+
@default never(state);
8+
}
9+
10+
<!-- Prettier stable -->
11+
@switch (state.mode) {
12+
@default never;
13+
}
14+
15+
<!-- Prettier main -->
16+
@switch (state.mode) {
17+
@default never(state);
18+
}
19+
```

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
"acorn": "8.17.0",
5959
"acorn-jsx": "5.3.2",
6060
"angular-estree-parser": "15.5.0",
61-
"angular-html-parser": "10.10.0",
61+
"angular-html-parser": "10.11.0",
6262
"camelcase": "9.0.0",
6363
"ci-info": "4.4.0",
6464
"cjk-regex": "3.4.0",

src/language-html/print/angular-control-flow-block.js

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,21 @@ function printAngularControlFlowBlock(path, options, print) {
2020

2121
docs.push("@", node.name);
2222

23-
if (isSwitchExhaustiveCheck(node)) {
24-
docs.push(";");
25-
return docs;
26-
}
23+
const isDefaultNever = isSwitchExhaustiveCheck(node);
2724

2825
if (node.parameters) {
29-
docs.push(" ", "(", group(print("parameters")), ")");
26+
// No space in `@default never(state)`
27+
// https://github.com/prettier/prettier/issues/19570#issuecomment-4916194365
28+
if (!isDefaultNever) {
29+
docs.push(" ");
30+
}
31+
32+
docs.push("(", group(print("parameters")), ")");
33+
}
34+
35+
if (isDefaultNever) {
36+
docs.push(";");
37+
return docs;
3038
}
3139

3240
if (!isSwitchFallthroughCase(node)) {

tests/format/angular/control-flow/__snapshots__/format.test.js.snap

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -161,8 +161,20 @@ parsers: ["angular"]
161161
@default never;
162162
}
163163
164-
@switch ( cond.kind) {
165-
@default never ;
164+
@switch ( cond.kind ) {
165+
@default never ;
166+
}
167+
168+
@switch ( state.mode) {
169+
@default never(state);
170+
}
171+
172+
@switch ( state.mode ) {
173+
@default never ( state ) ;
174+
}
175+
176+
@switch ( expr) {
177+
@default never(expr.prop);
166178
}
167179
168180
=====================================output=====================================
@@ -174,6 +186,18 @@ parsers: ["angular"]
174186
@default never;
175187
}
176188
189+
@switch (state.mode) {
190+
@default never(state);
191+
}
192+
193+
@switch (state.mode) {
194+
@default never(state);
195+
}
196+
197+
@switch (expr) {
198+
@default never(expr.prop);
199+
}
200+
177201
================================================================================
178202
`;
179203

tests/format/angular/control-flow/default-never.html

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
22
@default never;
33
}
44

5-
@switch ( cond.kind) {
6-
@default never ;
5+
@switch ( cond.kind ) {
6+
@default never ;
7+
}
8+
9+
@switch ( state.mode) {
10+
@default never(state);
11+
}
12+
13+
@switch ( state.mode ) {
14+
@default never ( state ) ;
15+
}
16+
17+
@switch ( expr) {
18+
@default never(expr.prop);
719
}

yarn.lock

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3088,10 +3088,10 @@ __metadata:
30883088
languageName: node
30893089
linkType: hard
30903090

3091-
"angular-html-parser@npm:10.10.0":
3092-
version: 10.10.0
3093-
resolution: "angular-html-parser@npm:10.10.0"
3094-
checksum: 10/820a1e96439d1ab02d4fb3524ac6a09a2b9a8622879692732508ee96c6f9847fdd899a3750714e6e39aff06ec864c405c5555167ed8068fd1e613b0f151c633f
3091+
"angular-html-parser@npm:10.11.0":
3092+
version: 10.11.0
3093+
resolution: "angular-html-parser@npm:10.11.0"
3094+
checksum: 10/b311b3e984eaba422d41ecff8ea1255c1e5d5cd86ffd88f8651b12323b33104a0099711e1f4104dfe4f4383ff926ac43df4f072bf616f5dbbc5e86ef76e33383
30953095
languageName: node
30963096
linkType: hard
30973097

@@ -8212,7 +8212,7 @@ __metadata:
82128212
acorn: "npm:8.17.0"
82138213
acorn-jsx: "npm:5.3.2"
82148214
angular-estree-parser: "npm:15.5.0"
8215-
angular-html-parser: "npm:10.10.0"
8215+
angular-html-parser: "npm:10.11.0"
82168216
base64-arraybuffer-es6: "npm:3.1.0"
82178217
browserslist: "npm:4.28.5"
82188218
browserslist-to-esbuild: "npm:2.1.1"

0 commit comments

Comments
 (0)