]> git.proxmox.com Git - pve-eslint.git/blob - eslint/tests/fixtures/code-path-analysis/switch--precedence.js
first commit
[pve-eslint.git] / eslint / tests / fixtures / code-path-analysis / switch--precedence.js
1 /*expected
2 initial->s2_1->s2_2->s2_3->s2_9->s2_10->s2_12->s2_13->s2_15->s2_16->s2_17->s2_19->s2_20->s2_21->s2_23->s2_24->s2_25->s2_27->s2_28->s2_30->s2_31->s2_39->s2_40->s2_52->s2_53->s2_59->s2_60->s2_64->s2_65->s2_71->s2_72->s2_73->s2_75->s2_76->s2_78->s2_79->s2_81->s2_82->s2_83->s2_84->s2_85->s2_87->s2_88->s2_89->s2_90;
3 s2_1->s2_4->s2_6->s2_8->s2_9;
4 s2_15->s2_18->s2_19;
5 s2_23->s2_26->s2_27;
6 s2_81->s2_84;
7 s2_4->s2_9;
8 s2_6->s2_9;
9 s2_8->s2_11->s2_12;
10 s2_18->s2_21;
11 s2_26->s2_29->s2_30;
12 s2_11->s2_14->s2_15;
13 s2_29->s2_32->s2_34->s2_36->s2_38->s2_39;
14 s2_14->s2_22->s2_23;
15 s2_32->s2_39;
16 s2_34->s2_39;
17 s2_36->s2_39;
18 s2_38->s2_41->s2_43->s2_45->s2_47->s2_49->s2_51->s2_52;
19 s2_22->s2_74->s2_75;
20 s2_41->s2_52;
21 s2_43->s2_52;
22 s2_45->s2_52;
23 s2_47->s2_52;
24 s2_49->s2_52;
25 s2_51->s2_54->s2_56->s2_58->s2_59;
26 s2_74->s2_77->s2_78;
27 s2_54->s2_59;
28 s2_56->s2_59;
29 s2_58->s2_61->s2_63->s2_64;
30 s2_77->s2_80->s2_81;
31 s2_61->s2_64;
32 s2_63->s2_66->s2_68->s2_70->s2_71;
33 s2_80->s2_86->s2_87;
34 s2_66->s2_71;
35 s2_68->s2_71;
36 s2_70->s2_73;
37 s2_86->s2_89;
38 s2_2->final;
39 s2_9->final;
40 s2_12->final;
41 s2_16->final;
42 s2_19->final;
43 s2_24->final;
44 s2_27->final;
45 s2_30->final;
46 s2_39->final;
47 s2_52->final;
48 s2_59->final;
49 s2_64->final;
50 s2_71->final;
51 s2_75->final;
52 s2_78->final;
53 s2_82->final;
54 s2_84->final;
55 s2_87->final;
56 s2_89->final;
57 */
58 /*expected
59 initial->s1_1->final;
60 */
61
62 function precedence(node) {
63 switch (node.type) {
64 case "SequenceExpression":
65 return 0;
66
67 case "AssignmentExpression":
68 case "ArrowFunctionExpression":
69 case "YieldExpression":
70 return 1;
71
72 case "ConditionalExpression":
73 return 3;
74
75 case "LogicalExpression":
76 switch (node.operator) {
77 case "||":
78 return 4;
79 case "&&":
80 return 5;
81 // no default
82 }
83
84 /* falls through */
85 case "BinaryExpression":
86 switch (node.operator) {
87 case "|":
88 return 6;
89 case "^":
90 return 7;
91 case "&":
92 return 8;
93 case "==":
94 case "!=":
95 case "===":
96 case "!==":
97 return 9;
98 case "<":
99 case "<=":
100 case ">":
101 case ">=":
102 case "in":
103 case "instanceof":
104 return 10;
105 case "<<":
106 case ">>":
107 case ">>>":
108 return 11;
109 case "+":
110 case "-":
111 return 12;
112 case "*":
113 case "/":
114 case "%":
115 return 13;
116 // no default
117 }
118 /* falls through */
119 case "UnaryExpression":
120 return 14;
121 case "UpdateExpression":
122 return 15;
123 case "CallExpression":
124 // IIFE is allowed to have parens in any position (#655)
125 if (node.callee.type === "FunctionExpression") {
126 return -1;
127 }
128 return 16;
129 case "NewExpression":
130 return 17;
131 // no default
132 }
133 return 18;
134 }
135
136 /*DOT
137 digraph {
138 node[shape=box,style="rounded,filled",fillcolor=white];
139 initial[label="",shape=circle,style=filled,fillcolor=black,width=0.25,height=0.25];
140 final[label="",shape=doublecircle,style=filled,fillcolor=black,width=0.25,height=0.25];
141 s2_1[label="FunctionDeclaration\nIdentifier (precedence)\nIdentifier (node)\nBlockStatement\nSwitchStatement\nMemberExpression\nIdentifier (node)\nIdentifier (type)\nSwitchCase\nLiteral (SequenceExpression)"];
142 s2_2[label="ReturnStatement\nLiteral (0)"];
143 s2_3[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nSwitchCase:exit"];
144 s2_9[label="ReturnStatement\nLiteral (1)"];
145 s2_10[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nSwitchCase:exit"];
146 s2_12[label="ReturnStatement\nLiteral (3)"];
147 s2_13[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nSwitchCase:exit"];
148 s2_15[label="SwitchStatement\nMemberExpression\nIdentifier (node)\nIdentifier (operator)\nSwitchCase\nLiteral (||)"];
149 s2_16[label="ReturnStatement\nLiteral (4)"];
150 s2_17[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nSwitchCase:exit"];
151 s2_19[label="ReturnStatement\nLiteral (5)"];
152 s2_20[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nSwitchCase:exit"];
153 s2_21[label="SwitchStatement:exit\nSwitchCase:exit"];
154 s2_23[label="SwitchStatement\nMemberExpression\nIdentifier (node)\nIdentifier (operator)\nSwitchCase\nLiteral (|)"];
155 s2_24[label="ReturnStatement\nLiteral (6)"];
156 s2_25[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nSwitchCase:exit"];
157 s2_27[label="ReturnStatement\nLiteral (7)"];
158 s2_28[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nSwitchCase:exit"];
159 s2_30[label="ReturnStatement\nLiteral (8)"];
160 s2_31[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nSwitchCase:exit"];
161 s2_39[label="ReturnStatement\nLiteral (9)"];
162 s2_40[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nSwitchCase:exit"];
163 s2_52[label="ReturnStatement\nLiteral (10)"];
164 s2_53[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nSwitchCase:exit"];
165 s2_59[label="ReturnStatement\nLiteral (11)"];
166 s2_60[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nSwitchCase:exit"];
167 s2_64[label="ReturnStatement\nLiteral (12)"];
168 s2_65[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nSwitchCase:exit"];
169 s2_71[label="ReturnStatement\nLiteral (13)"];
170 s2_72[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nSwitchCase:exit"];
171 s2_73[label="SwitchStatement:exit\nSwitchCase:exit"];
172 s2_75[label="ReturnStatement\nLiteral (14)"];
173 s2_76[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nSwitchCase:exit"];
174 s2_78[label="ReturnStatement\nLiteral (15)"];
175 s2_79[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nSwitchCase:exit"];
176 s2_81[label="IfStatement\nBinaryExpression\nMemberExpression\nMemberExpression\nIdentifier (node)\nIdentifier (callee)\nIdentifier (type)\nLiteral (FunctionExpression)"];
177 s2_82[label="BlockStatement\nReturnStatement\nUnaryExpression\nLiteral (1)"];
178 s2_83[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nBlockStatement:exit"];
179 s2_84[label="ReturnStatement\nLiteral (16)"];
180 s2_85[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nSwitchCase:exit"];
181 s2_87[label="ReturnStatement\nLiteral (17)"];
182 s2_88[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nSwitchCase:exit"];
183 s2_89[label="ReturnStatement\nLiteral (18)"];
184 s2_90[style="rounded,dashed,filled",fillcolor="#FF9800",label="<<unreachable>>\nBlockStatement:exit\nFunctionDeclaration:exit"];
185 s2_4[label="SwitchCase\nLiteral (AssignmentExpression)"];
186 s2_6[label="SwitchCase\nLiteral (ArrowFunctionExpression)"];
187 s2_8[label="SwitchCase\nLiteral (YieldExpression)"];
188 s2_18[label="SwitchCase\nLiteral (&&)"];
189 s2_26[label="SwitchCase\nLiteral (^)"];
190 s2_11[label="SwitchCase\nLiteral (ConditionalExpression)"];
191 s2_29[label="SwitchCase\nLiteral (&)"];
192 s2_14[label="SwitchCase\nLiteral (LogicalExpression)"];
193 s2_32[label="SwitchCase\nLiteral (==)"];
194 s2_34[label="SwitchCase\nLiteral (!=)"];
195 s2_36[label="SwitchCase\nLiteral (===)"];
196 s2_38[label="SwitchCase\nLiteral (!==)"];
197 s2_22[label="SwitchCase\nLiteral (BinaryExpression)"];
198 s2_41[label="SwitchCase\nLiteral (<)"];
199 s2_43[label="SwitchCase\nLiteral (<=)"];
200 s2_45[label="SwitchCase\nLiteral (>)"];
201 s2_47[label="SwitchCase\nLiteral (>=)"];
202 s2_49[label="SwitchCase\nLiteral (in)"];
203 s2_51[label="SwitchCase\nLiteral (instanceof)"];
204 s2_74[label="SwitchCase\nLiteral (UnaryExpression)"];
205 s2_54[label="SwitchCase\nLiteral (<<)"];
206 s2_56[label="SwitchCase\nLiteral (>>)"];
207 s2_58[label="SwitchCase\nLiteral (>>>)"];
208 s2_77[label="SwitchCase\nLiteral (UpdateExpression)"];
209 s2_61[label="SwitchCase\nLiteral (+)"];
210 s2_63[label="SwitchCase\nLiteral (-)"];
211 s2_80[label="SwitchCase\nLiteral (CallExpression)"];
212 s2_66[label="SwitchCase\nLiteral (*)"];
213 s2_68[label="SwitchCase\nLiteral (/)"];
214 s2_70[label="SwitchCase\nLiteral (%)"];
215 s2_86[label="SwitchCase\nLiteral (NewExpression)"];
216 initial->s2_1->s2_2->s2_3->s2_9->s2_10->s2_12->s2_13->s2_15->s2_16->s2_17->s2_19->s2_20->s2_21->s2_23->s2_24->s2_25->s2_27->s2_28->s2_30->s2_31->s2_39->s2_40->s2_52->s2_53->s2_59->s2_60->s2_64->s2_65->s2_71->s2_72->s2_73->s2_75->s2_76->s2_78->s2_79->s2_81->s2_82->s2_83->s2_84->s2_85->s2_87->s2_88->s2_89->s2_90;
217 s2_1->s2_4->s2_6->s2_8->s2_9;
218 s2_15->s2_18->s2_19;
219 s2_23->s2_26->s2_27;
220 s2_81->s2_84;
221 s2_4->s2_9;
222 s2_6->s2_9;
223 s2_8->s2_11->s2_12;
224 s2_18->s2_21;
225 s2_26->s2_29->s2_30;
226 s2_11->s2_14->s2_15;
227 s2_29->s2_32->s2_34->s2_36->s2_38->s2_39;
228 s2_14->s2_22->s2_23;
229 s2_32->s2_39;
230 s2_34->s2_39;
231 s2_36->s2_39;
232 s2_38->s2_41->s2_43->s2_45->s2_47->s2_49->s2_51->s2_52;
233 s2_22->s2_74->s2_75;
234 s2_41->s2_52;
235 s2_43->s2_52;
236 s2_45->s2_52;
237 s2_47->s2_52;
238 s2_49->s2_52;
239 s2_51->s2_54->s2_56->s2_58->s2_59;
240 s2_74->s2_77->s2_78;
241 s2_54->s2_59;
242 s2_56->s2_59;
243 s2_58->s2_61->s2_63->s2_64;
244 s2_77->s2_80->s2_81;
245 s2_61->s2_64;
246 s2_63->s2_66->s2_68->s2_70->s2_71;
247 s2_80->s2_86->s2_87;
248 s2_66->s2_71;
249 s2_68->s2_71;
250 s2_70->s2_73;
251 s2_86->s2_89;
252 s2_2->final;
253 s2_9->final;
254 s2_12->final;
255 s2_16->final;
256 s2_19->final;
257 s2_24->final;
258 s2_27->final;
259 s2_30->final;
260 s2_39->final;
261 s2_52->final;
262 s2_59->final;
263 s2_64->final;
264 s2_71->final;
265 s2_75->final;
266 s2_78->final;
267 s2_82->final;
268 s2_84->final;
269 s2_87->final;
270 s2_89->final;
271 }
272 */