Changeset 259781 in webkit
- Timestamp:
- Apr 8, 2020 10:10:27 PM (4 years ago)
- Location:
- trunk
- Files:
-
- 25 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r259777 r259781 1 2020-04-08 Devin Rousso <drousso@apple.com> 2 3 Web Inspector: Debugger: treat comma sub-expressions as separate statements 4 https://bugs.webkit.org/show_bug.cgi?id=209998 5 6 Reviewed by Joseph Pecoraro. 7 8 * inspector/debugger/breakpoints/resources/dump-functions.js: 9 * inspector/debugger/breakpoints/resources/dump-general.js: 10 * inspector/debugger/breakpoints/resolved-dump-all-pause-locations-expected.txt: 11 * inspector/debugger/breakpoints/resolved-dump-each-line-expected.txt: 12 * inspector/debugger/stepping/stepOver.html: 13 * inspector/debugger/stepping/stepOver-expected.txt: 14 * inspector/debugger/stepping/stepping-function-calls.html: 15 * inspector/debugger/stepping/stepping-function-calls-expected.txt: 16 * inspector/debugger/stepping/stepping-loops.html: 17 * inspector/debugger/stepping/stepping-loops-expected.txt: 18 * inspector/debugger/stepping/stepping-misc.html: 19 * inspector/debugger/stepping/stepping-misc-expected.txt: 20 * inspector/formatting/resources/javascript-tests/for-statements.js: 21 * inspector/formatting/resources/javascript-tests/for-statements-expected.js: 22 * inspector/formatting/resources/javascript-tests/if-statements.js: 23 * inspector/formatting/resources/javascript-tests/if-statements-expected.js: 24 * inspector/formatting/resources/javascript-tests/sample-jquery-expected.js: 25 * inspector/formatting/resources/javascript-tests/sample-jquery-expected.js: 26 1 27 2020-04-08 Diego Pino Garcia <dpino@igalia.com> 2 28 -
trunk/LayoutTests/inspector/debugger/breakpoints/resolved-dump-all-pause-locations-expected.txt
r250655 r259781 1075 1075 1076 1076 INSERTING AT: 164:1 1077 PAUSES AT: 16 6:01077 PAUSES AT: 165:4 1078 1078 161 a(); 1079 1079 162 } 1080 1080 163 1081 1081 -> 164 v#ar v1 = 1, 1082 165 v2 = 1; 1082 => 165 |v2 = 1; 1083 166 let l1 = 2, 1084 167 l2 = 2; 1085 168 const c1 = 3, 1086 1087 INSERTING AT: 165:5 1088 PAUSES AT: 166:0 1089 162 } 1090 163 1091 164 var v1 = 1, 1092 -> 165 v#2 = 1; 1083 1093 => 166 |let l1 = 2, 1084 1094 167 l2 = 2; … … 1087 1097 1088 1098 INSERTING AT: 166:1 1089 PAUSES AT: 16 8:01099 PAUSES AT: 167:4 1090 1100 163 1091 1101 164 var v1 = 1, 1092 1102 165 v2 = 1; 1093 1103 -> 166 l#et l1 = 2, 1094 167 l2 = 2; 1104 => 167 |l2 = 2; 1105 168 const c1 = 3, 1106 169 c2 = 3; 1107 170 1108 1109 INSERTING AT: 167:5 1110 PAUSES AT: 168:0 1111 164 var v1 = 1, 1112 165 v2 = 1; 1113 166 let l1 = 2, 1114 -> 167 l#2 = 2; 1095 1115 => 168 |const c1 = 3, 1096 1116 169 c2 = 3; … … 1099 1119 1100 1120 INSERTING AT: 168:1 1101 PAUSES AT: 1 71:01121 PAUSES AT: 169:4 1102 1122 165 v2 = 1; 1103 1123 166 let l1 = 2, 1104 1124 167 l2 = 2; 1105 1125 -> 168 c#onst c1 = 3, 1106 169 c2 = 3; 1126 => 169 |c2 = 3; 1127 170 1128 171 v1 = v2 = v1; 1129 172 1130 1131 INSERTING AT: 169:5 1132 PAUSES AT: 171:0 1133 166 let l1 = 2, 1134 167 l2 = 2; 1135 168 const c1 = 3, 1136 -> 169 c#2 = 3; 1107 1137 170 1108 1138 => 171 |v1 = v2 = v1; … … 1316 1346 209 a(); 1317 1347 210 1348 211 a(), b(), c(); 1318 1349 1319 1350 INSERTING AT: 208:5 … … 1325 1356 => 209 |a(); 1326 1357 210 1358 211 a(), b(), c(); 1359 212 1360 1361 INSERTING AT: 209:5 1362 PAUSES AT: 211:0 1363 206 a(); 1364 207 1365 208 if (String.raw`test`) 1366 -> 209 a#(); 1367 210 1368 => 211 |a(), b(), c(); 1369 212 1370 213 a(), 1371 214 b(), 1372 1373 INSERTING AT: 211:1 1374 PAUSES AT: 211:5 1375 208 if (String.raw`test`) 1376 209 a(); 1377 210 1378 -=> 211 a#(), |b(), c(); 1379 212 1380 213 a(), 1381 214 b(), 1382 1383 INSERTING AT: 211:6 1384 PAUSES AT: 211:10 1385 208 if (String.raw`test`) 1386 209 a(); 1387 210 1388 -=> 211 a(), b#(), |c(); 1389 212 1390 213 a(), 1391 214 b(), 1392 1393 INSERTING AT: 211:11 1394 PAUSES AT: 213:0 1395 208 if (String.raw`test`) 1396 209 a(); 1397 210 1398 -> 211 a(), b(), c#(); 1399 212 1400 => 213 |a(), 1401 214 b(), 1402 215 c(); 1403 216 1404 1405 INSERTING AT: 213:1 1406 PAUSES AT: 214:0 1407 210 1408 211 a(), b(), c(); 1409 212 1410 -> 213 a#(), 1411 => 214 |b(), 1412 215 c(); 1413 216 1414 1415 INSERTING AT: 214:1 1416 PAUSES AT: 215:0 1417 211 a(), b(), c(); 1418 212 1419 213 a(), 1420 -> 214 b#(), 1421 => 215 |c(); 1422 216 1327 1423 1328 1424 … … 2367 2463 113 }; 2368 2464 114 2465 115 function commaOneLine() { 2466 2467 INSERTING AT: 115:0 2468 PAUSES AT: 116:4 2469 112 } 2470 113 }; 2471 114 2472 -> 115 #function commaOneLine() { 2473 => 116 |inline(), inline(), inline(); 2474 117 } 2475 118 2476 119 function commaMultiLine() { 2477 2478 INSERTING AT: 116:5 2479 PAUSES AT: 116:14 2480 113 }; 2481 114 2482 115 function commaOneLine() { 2483 -=> 116 i#nline(), |inline(), inline(); 2484 117 } 2485 118 2486 119 function commaMultiLine() { 2487 2488 INSERTING AT: 116:15 2489 PAUSES AT: 116:24 2490 113 }; 2491 114 2492 115 function commaOneLine() { 2493 -=> 116 inline(), i#nline(), |inline(); 2494 117 } 2495 118 2496 119 function commaMultiLine() { 2497 2498 INSERTING AT: 116:25 2499 PAUSES AT: 117:0 2500 113 }; 2501 114 2502 115 function commaOneLine() { 2503 -> 116 inline(), inline(), i#nline(); 2504 => 117 |} 2505 118 2506 119 function commaMultiLine() { 2507 120 inline(), 2508 2509 INSERTING AT: 119:0 2510 PAUSES AT: 120:4 2511 116 inline(), inline(), inline(); 2512 117 } 2513 118 2514 -> 119 #function commaMultiLine() { 2515 => 120 |inline(), 2516 121 inline(), 2517 122 inline(); 2518 123 } 2519 2520 INSERTING AT: 120:5 2521 PAUSES AT: 121:4 2522 117 } 2523 118 2524 119 function commaMultiLine() { 2525 -> 120 i#nline(), 2526 => 121 |inline(), 2527 122 inline(); 2528 123 } 2529 124 2530 2531 INSERTING AT: 121:5 2532 PAUSES AT: 122:4 2533 118 2534 119 function commaMultiLine() { 2535 120 inline(), 2536 -> 121 i#nline(), 2537 => 122 |inline(); 2538 123 } 2539 124 2540 2541 INSERTING AT: 122:5 2542 PAUSES AT: 123:0 2543 119 function commaMultiLine() { 2544 120 inline(), 2545 121 inline(), 2546 -> 122 i#nline(); 2547 => 123 |} 2548 124 2369 2549 2370 2550 -
trunk/LayoutTests/inspector/debugger/breakpoints/resolved-dump-each-line-expected.txt
r208097 r259781 2489 2489 2490 2490 INSERTING AT: 165:0 2491 PAUSES AT: 16 6:02491 PAUSES AT: 165:4 2492 2492 162 } 2493 2493 163 2494 2494 164 var v1 = 1, 2495 -> 165 #v2 = 1;2496 => 166 |let l1 = 2,2495 -=> 165 # |v2 = 1; 2496 166 let l1 = 2, 2497 2497 167 l2 = 2; 2498 2498 168 const c1 = 3, 2499 169 c2 = 3;2500 2499 2501 2500 … … 2512 2511 2513 2512 INSERTING AT: 167:0 2514 PAUSES AT: 16 8:02513 PAUSES AT: 167:4 2515 2514 164 var v1 = 1, 2516 2515 165 v2 = 1; 2517 2516 166 let l1 = 2, 2518 -> 167 #l2 = 2;2519 => 168 |const c1 = 3,2517 -=> 167 # |l2 = 2; 2518 168 const c1 = 3, 2520 2519 169 c2 = 3; 2521 2520 170 2522 171 v1 = v2 = v1;2523 2521 2524 2522 … … 2535 2533 2536 2534 INSERTING AT: 169:0 2537 PAUSES AT: 1 71:02535 PAUSES AT: 169:4 2538 2536 166 let l1 = 2, 2539 2537 167 l2 = 2; 2540 2538 168 const c1 = 3, 2541 -> 169 #c2 = 3;2539 -=> 169 # |c2 = 3; 2542 2540 170 2543 => 171 |v1 = v2 = v1;2541 171 v1 = v2 = v1; 2544 2542 172 2545 173 var {x, y} = obj;2546 174 var [w, z] = arr;2547 2543 2548 2544 … … 3019 3015 209 a(); 3020 3016 210 3017 211 a(), b(), c(); 3021 3018 3022 3019 … … 3029 3026 209 a(); 3030 3027 210 3028 211 a(), b(), c(); 3031 3029 3032 3030 … … 3038 3036 -=> 209 # |a(); 3039 3037 210 3038 211 a(), b(), c(); 3039 212 3040 3040 3041 3041 3042 3042 INSERTING AT: 210:0 3043 PAUSES AT: 211:0 3044 207 3045 208 if (String.raw`test`) 3046 209 a(); 3047 -> 210 # 3048 => 211 |a(), b(), c(); 3049 212 3050 213 a(), 3051 214 b(), 3052 3053 3054 INSERTING AT: 211:0 3055 PAUSES AT: 211:0 3056 208 if (String.raw`test`) 3057 209 a(); 3058 210 3059 -=> 211 |a(), b(), c(); 3060 212 3061 213 a(), 3062 214 b(), 3063 3064 3065 INSERTING AT: 212:0 3066 PAUSES AT: 213:0 3067 209 a(); 3068 210 3069 211 a(), b(), c(); 3070 -> 212 # 3071 => 213 |a(), 3072 214 b(), 3073 215 c(); 3074 216 3075 3076 3077 INSERTING AT: 213:0 3078 PAUSES AT: 213:0 3079 210 3080 211 a(), b(), c(); 3081 212 3082 -=> 213 |a(), 3083 214 b(), 3084 215 c(); 3085 216 3086 3087 3088 INSERTING AT: 214:0 3089 PAUSES AT: 214:0 3090 211 a(), b(), c(); 3091 212 3092 213 a(), 3093 -=> 214 |b(), 3094 215 c(); 3095 216 3096 3097 3098 INSERTING AT: 215:0 3099 PAUSES AT: 215:0 3100 212 3101 213 a(), 3102 214 b(), 3103 -=> 215 |c(); 3104 216 3105 3106 3107 INSERTING AT: 216:0 3043 3108 PRODUCES: Could not resolve breakpoint 3044 3109 … … 4441 4506 113 }; 4442 4507 114 4508 115 function commaOneLine() { 4443 4509 4444 4510 … … 4447 4513 4448 4514 INSERTING AT: 114:0 4515 PRODUCES: Could not resolve breakpoint 4516 4517 INSERTING AT: 115:0 4518 PAUSES AT: 116:4 4519 112 } 4520 113 }; 4521 114 4522 -> 115 #function commaOneLine() { 4523 => 116 |inline(), inline(), inline(); 4524 117 } 4525 118 4526 119 function commaMultiLine() { 4527 4528 4529 INSERTING AT: 116:0 4530 PAUSES AT: 116:4 4531 113 }; 4532 114 4533 115 function commaOneLine() { 4534 -=> 116 # |inline(), inline(), inline(); 4535 117 } 4536 118 4537 119 function commaMultiLine() { 4538 4539 4540 INSERTING AT: 117:0 4541 PAUSES AT: 117:0 4542 114 4543 115 function commaOneLine() { 4544 116 inline(), inline(), inline(); 4545 -=> 117 |} 4546 118 4547 119 function commaMultiLine() { 4548 120 inline(), 4549 4550 4551 INSERTING AT: 118:0 4552 PRODUCES: Could not resolve breakpoint 4553 4554 INSERTING AT: 119:0 4555 PAUSES AT: 120:4 4556 116 inline(), inline(), inline(); 4557 117 } 4558 118 4559 -> 119 #function commaMultiLine() { 4560 => 120 |inline(), 4561 121 inline(), 4562 122 inline(); 4563 123 } 4564 4565 4566 INSERTING AT: 120:0 4567 PAUSES AT: 120:4 4568 117 } 4569 118 4570 119 function commaMultiLine() { 4571 -=> 120 # |inline(), 4572 121 inline(), 4573 122 inline(); 4574 123 } 4575 4576 4577 INSERTING AT: 121:0 4578 PAUSES AT: 121:4 4579 118 4580 119 function commaMultiLine() { 4581 120 inline(), 4582 -=> 121 # |inline(), 4583 122 inline(); 4584 123 } 4585 124 4586 4587 4588 INSERTING AT: 122:0 4589 PAUSES AT: 122:4 4590 119 function commaMultiLine() { 4591 120 inline(), 4592 121 inline(), 4593 -=> 122 # |inline(); 4594 123 } 4595 124 4596 4597 4598 INSERTING AT: 123:0 4599 PAUSES AT: 123:0 4600 120 inline(), 4601 121 inline(), 4602 122 inline(); 4603 -=> 123 |} 4604 124 4605 4606 4607 INSERTING AT: 124:0 4449 4608 PRODUCES: Could not resolve breakpoint 4450 4609 -
trunk/LayoutTests/inspector/debugger/breakpoints/resources/dump-functions.js
r206653 r259781 113 113 } 114 114 }; 115 116 function commaOneLine() { 117 inline(), inline(), inline(); 118 } 119 120 function commaMultiLine() { 121 inline(), 122 inline(), 123 inline(); 124 } -
trunk/LayoutTests/inspector/debugger/breakpoints/resources/dump-general.js
r207312 r259781 209 209 if (String.raw`test`) 210 210 a(); 211 212 a(), b(), c(); 213 214 a(), 215 b(), 216 c(); -
trunk/LayoutTests/inspector/debugger/stepping/stepOver-expected.txt
r206652 r259781 1 ALERT: log 1 1 ALERT: function log 1 2 ALERT: comma log 1 3 ALERT: comma log 2 4 ALERT: comma log 3 2 5 Checking pause locations when stepping with "stepOver". 3 6 … … 6 9 -- Running test case: Debugger.stepOver.statements 7 10 PAUSED (debugger-statement) 8 PAUSE AT entry1:12:511 PAUSE AT testStatements:12:5 9 12 8 } 10 13 9 11 10 function entry1() {14 10 function testStatements() { 12 15 -> 11 |debugger; 13 16 12 let x = 1; … … 15 18 14 } 16 19 17 PAUSE AT entry1:13:520 PAUSE AT testStatements:13:5 18 21 9 19 10 function entry1() {22 10 function testStatements() { 20 23 11 debugger; 21 24 -> 12 |let x = 1; … … 24 27 15 25 28 26 PAUSE AT entry1:14:527 10 function entry1() {29 PAUSE AT testStatements:14:5 30 10 function testStatements() { 28 31 11 debugger; 29 32 12 let x = 1; … … 31 34 14 } 32 35 15 33 16 function entry2() {34 35 PAUSE AT entry1:15:236 16 function testFunctions() { 37 38 PAUSE AT testStatements:15:2 36 39 11 debugger; 37 40 12 let x = 1; … … 39 42 -> 14 }| 40 43 15 41 16 function entry2() {44 16 function testFunctions() { 42 45 17 debugger; 43 46 … … 46 49 -- Running test case: Debugger.stepOver.function 47 50 PAUSED (debugger-statement) 48 PAUSE AT entry2:18:549 14 } 50 15 51 16 function entry2() {51 PAUSE AT testFunctions:18:5 52 14 } 53 15 54 16 function testFunctions() { 52 55 -> 17 |debugger; 53 56 18 let before = 1; 54 19 testAlert(" log 1");55 20 let after = 2; 56 57 PAUSE AT entry2:19:558 15 59 16 function entry2() {57 19 testAlert("function log 1"); 58 20 let after = 2; 59 60 PAUSE AT testFunctions:19:5 61 15 62 16 function testFunctions() { 60 63 17 debugger; 61 64 -> 18 |let before = 1; 62 19 testAlert(" log 1");63 20 let after = 2; 64 21 } 65 66 PAUSE AT entry2:20:567 16 function entry2() {68 17 debugger; 69 18 let before = 1; 70 -> 19 |testAlert(" log 1");71 20 let after = 2; 72 21 } 73 22 74 75 PAUSE AT entry2:21:576 17 debugger; 77 18 let before = 1; 78 19 testAlert(" log 1");65 19 testAlert("function log 1"); 66 20 let after = 2; 67 21 } 68 69 PAUSE AT testFunctions:20:5 70 16 function testFunctions() { 71 17 debugger; 72 18 let before = 1; 73 -> 19 |testAlert("function log 1"); 74 20 let after = 2; 75 21 } 76 22 77 78 PAUSE AT testFunctions:21:5 79 17 debugger; 80 18 let before = 1; 81 19 testAlert("function log 1"); 79 82 -> 20 |let after = 2; 80 83 21 } 81 84 22 82 23 function entry3() {83 84 PAUSE AT entry2:22:285 18 let before = 1; 86 19 testAlert(" log 1");85 23 function testEval() { 86 87 PAUSE AT testFunctions:22:2 88 18 let before = 1; 89 19 testAlert("function log 1"); 87 90 20 let after = 2; 88 91 -> 21 }| 89 92 22 90 23 function entry3() {93 23 function testEval() { 91 94 24 debugger; 92 95 … … 95 98 -- Running test case: Debugger.stepOver.eval 96 99 PAUSED (debugger-statement) 97 PAUSE AT entry3:25:598 21 } 99 22 100 23 function entry3() {100 PAUSE AT testEval:25:5 101 21 } 102 22 103 23 function testEval() { 101 104 -> 24 |debugger; 102 105 25 let before = 1; … … 104 107 27 let after = 2; 105 108 106 PAUSE AT entry3:26:5107 22 108 23 function entry3() {109 PAUSE AT testEval:26:5 110 22 111 23 function testEval() { 109 112 24 debugger; 110 113 -> 25 |let before = 1; … … 113 116 28 } 114 117 115 PAUSE AT entry3:27:5116 23 function entry3() {118 PAUSE AT testEval:27:5 119 23 function testEval() { 117 120 24 debugger; 118 121 25 let before = 1; … … 122 125 29 123 126 124 PAUSE AT entry3:28:5127 PAUSE AT testEval:28:5 125 128 24 debugger; 126 129 25 let before = 1; … … 129 132 28 } 130 133 29 131 30 function entry4() {132 133 PAUSE AT entry3:29:2134 30 function testLocalFunction() { 135 136 PAUSE AT testEval:29:2 134 137 25 let before = 1; 135 138 26 eval("1 + 1"); … … 137 140 -> 28 }| 138 141 29 139 30 function entry4() {142 30 function testLocalFunction() { 140 143 31 (function() { 141 144 … … 146 149 PAUSE AT <anonymous>:33:9 147 150 29 148 30 function entry4() {151 30 function testLocalFunction() { 149 152 31 (function() { 150 153 -> 32 |debugger; … … 154 157 155 158 PAUSE AT <anonymous>:34:9 156 30 function entry4() {159 30 function testLocalFunction() { 157 160 31 (function() { 158 161 32 debugger; … … 171 174 37 172 175 173 PAUSE AT entry4:36:5176 PAUSE AT testLocalFunction:36:5 174 177 32 debugger; 175 178 33 let inner = 1; … … 178 181 36 } 179 182 37 180 38 // ---------181 182 PAUSE AT entry4:37:2183 38 function testCommas() { 184 185 PAUSE AT testLocalFunction:37:2 183 186 33 let inner = 1; 184 187 34 })(); … … 186 189 -> 36 }| 187 190 37 188 38 // --------- 189 39 190 191 RESUMED 192 191 38 function testCommas() { 192 39 debugger; 193 194 RESUMED 195 196 -- Running test case: Debugger.stepOver.commas 197 PAUSED (debugger-statement) 198 PAUSE AT testCommas:40:5 199 36 } 200 37 201 38 function testCommas() { 202 -> 39 |debugger; 203 40 let a = 1, 204 41 b = 2, 205 42 c = 3; 206 207 PAUSE AT testCommas:41:5 208 37 209 38 function testCommas() { 210 39 debugger; 211 -> 40 |let a = 1, 212 41 b = 2, 213 42 c = 3; 214 43 testAlert("comma log 1"), testAlert("comma log 2"), testAlert("comma log 3"); 215 216 PAUSE AT testCommas:42:9 217 38 function testCommas() { 218 39 debugger; 219 40 let a = 1, 220 -> 41 |b = 2, 221 42 c = 3; 222 43 testAlert("comma log 1"), testAlert("comma log 2"), testAlert("comma log 3"); 223 44 } 224 225 PAUSE AT testCommas:43:9 226 39 debugger; 227 40 let a = 1, 228 41 b = 2, 229 -> 42 |c = 3; 230 43 testAlert("comma log 1"), testAlert("comma log 2"), testAlert("comma log 3"); 231 44 } 232 45 233 234 PAUSE AT testCommas:44:5 235 40 let a = 1, 236 41 b = 2, 237 42 c = 3; 238 -> 43 |testAlert("comma log 1"), testAlert("comma log 2"), testAlert("comma log 3"); 239 44 } 240 45 241 46 // --------- 242 243 PAUSE AT testCommas:44:31 244 40 let a = 1, 245 41 b = 2, 246 42 c = 3; 247 -> 43 testAlert("comma log 1"), |testAlert("comma log 2"), testAlert("comma log 3"); 248 44 } 249 45 250 46 // --------- 251 252 PAUSE AT testCommas:44:57 253 40 let a = 1, 254 41 b = 2, 255 42 c = 3; 256 -> 43 testAlert("comma log 1"), testAlert("comma log 2"), |testAlert("comma log 3"); 257 44 } 258 45 259 46 // --------- 260 261 PAUSE AT testCommas:45:2 262 41 b = 2, 263 42 c = 3; 264 43 testAlert("comma log 1"), testAlert("comma log 2"), testAlert("comma log 3"); 265 -> 44 }| 266 45 267 46 // --------- 268 47 269 270 RESUMED 271 -
trunk/LayoutTests/inspector/debugger/stepping/stepOver.html
r220119 r259781 9 9 } 10 10 11 function entry1() {11 function testStatements() { 12 12 debugger; 13 13 let x = 1; … … 15 15 } 16 16 17 function entry2() {17 function testFunctions() { 18 18 debugger; 19 19 let before = 1; 20 testAlert(" log 1");20 testAlert("function log 1"); 21 21 let after = 2; 22 22 } 23 23 24 function entry3() {24 function testEval() { 25 25 debugger; 26 26 let before = 1; … … 29 29 } 30 30 31 function entry4() {31 function testLocalFunction() { 32 32 (function() { 33 33 debugger; … … 35 35 })(); 36 36 let outer = 2; 37 } 38 39 function testCommas() { 40 debugger; 41 let a = 1, 42 b = 2, 43 c = 3; 44 testAlert("comma log 1"), testAlert("comma log 2"), testAlert("comma log 3"); 37 45 } 38 46 … … 70 78 name: "Debugger.stepOver.statements", 71 79 description: "step-over should step over statements.", 72 expression: "setTimeout( entry1)",80 expression: "setTimeout(testStatements)", 73 81 }); 74 82 … … 76 84 name: "Debugger.stepOver.function", 77 85 description: "step-over should step over function calls.", 78 expression: "setTimeout( entry2)",86 expression: "setTimeout(testFunctions)", 79 87 }); 80 88 … … 82 90 name: "Debugger.stepOver.eval", 83 91 description: "step-over should step over an eval program.", 84 expression: "setTimeout( entry3)",92 expression: "setTimeout(testEval)", 85 93 }); 86 94 … … 88 96 name: "Debugger.stepOver.innerFunction", 89 97 description: "step-over should step out of a function to its caller.", 90 expression: "setTimeout(entry4)", 98 expression: "setTimeout(testLocalFunction)", 99 }); 100 101 addTestCase({ 102 name: "Debugger.stepOver.commas", 103 description: "step-over should step over comma expressions, treating them as statements.", 104 expression: "setTimeout(testCommas)", 91 105 }); 92 106 -
trunk/LayoutTests/inspector/debugger/stepping/stepping-control-flow-expected.txt
r207228 r259781 811 811 108 } 812 812 109 813 110 // ---------813 110 function entryIfWithCommas() { 814 814 815 815 ACTION: step-over … … 820 820 -> 108 }| 821 821 109 822 110 // --------- 823 111 824 825 ACTION: resume 826 RESUMED 827 PASS: Should have used all steps. 828 822 110 function entryIfWithCommas() { 823 111 debugger; 824 825 ACTION: resume 826 RESUMED 827 PASS: Should have used all steps. 828 829 -- Running test case: Debugger.stepping.IfWithCommas 830 EXPRESSION: setTimeout(entryIfWithCommas) 831 STEPS: over, over, over, over, over, resume 832 PAUSED (debugger-statement) 833 PAUSE AT entryIfWithCommas:112:5 834 108 } 835 109 836 110 function entryIfWithCommas() { 837 -> 111 |debugger; 838 112 if (a(), b(), a()) 839 113 b(); 840 114 } 841 842 ACTION: step-over 843 PAUSE AT entryIfWithCommas:113:9 844 109 845 110 function entryIfWithCommas() { 846 111 debugger; 847 -> 112 if (|a(), b(), a()) 848 113 b(); 849 114 } 850 115 851 852 ACTION: step-over 853 PAUSE AT entryIfWithCommas:113:14 854 109 855 110 function entryIfWithCommas() { 856 111 debugger; 857 -> 112 if (a(), |b(), a()) 858 113 b(); 859 114 } 860 115 861 862 ACTION: step-over 863 PAUSE AT entryIfWithCommas:113:19 864 109 865 110 function entryIfWithCommas() { 866 111 debugger; 867 -> 112 if (a(), b(), |a()) 868 113 b(); 869 114 } 870 115 871 872 ACTION: step-over 873 PAUSE AT entryIfWithCommas:114:9 874 110 function entryIfWithCommas() { 875 111 debugger; 876 112 if (a(), b(), a()) 877 -> 113 |b(); 878 114 } 879 115 880 116 // --------- 881 882 ACTION: step-over 883 PAUSE AT entryIfWithCommas:115:2 884 111 debugger; 885 112 if (a(), b(), a()) 886 113 b(); 887 -> 114 }| 888 115 889 116 // --------- 890 117 891 892 ACTION: resume 893 RESUMED 894 PASS: Should have used all steps. 895 -
trunk/LayoutTests/inspector/debugger/stepping/stepping-control-flow.html
r207228 r259781 109 109 } 110 110 111 function entryIfWithCommas() { 112 debugger; 113 if (a(), b(), a()) 114 b(); 115 } 116 111 117 // --------- 112 118 … … 287 293 }); 288 294 295 addSteppingTestCase({ 296 name: "Debugger.stepping.IfWithCommas", 297 description: "Should pause before each comma sub-expression.", 298 expression: "setTimeout(entryIfWithCommas)", 299 steps: [ 300 "over", 301 "over", // a() 302 "over", // b() 303 "over", // a() 304 "over", // a() - leaving entry 305 "resume", 306 ] 307 }); 308 289 309 loadMainPageContent().then(() => { 290 310 suite.runTestCasesAndFinish(); -
trunk/LayoutTests/inspector/debugger/stepping/stepping-function-calls-expected.txt
r206652 r259781 976 976 -- Running test case: Debugger.stepping.ComplexStatement4 977 977 EXPRESSION: setTimeout(entryCommaExpression) 978 STEPS: over, over, resume978 STEPS: over, over, over, over, resume 979 979 PAUSED (debugger-statement) 980 980 PAUSE AT entryCommaExpression:51:5 … … 993 993 50 debugger; 994 994 -> 51 |a(), b(), a(); 995 52 } 996 53 997 54 function entryDotPropertyAccessCall() { 998 999 ACTION: step-over 1000 PAUSE AT entryCommaExpression:52:10 1001 48 1002 49 function entryCommaExpression() { 1003 50 debugger; 1004 -> 51 a(), |b(), a(); 1005 52 } 1006 53 1007 54 function entryDotPropertyAccessCall() { 1008 1009 ACTION: step-over 1010 PAUSE AT entryCommaExpression:52:15 1011 48 1012 49 function entryCommaExpression() { 1013 50 debugger; 1014 -> 51 a(), b(), |a(); 995 1015 52 } 996 1016 53 -
trunk/LayoutTests/inspector/debugger/stepping/stepping-function-calls.html
r206652 r259781 328 328 steps: [ 329 329 "over", 330 "over", // complete: a(), b(), a() 330 "over", // a() 331 "over", // b() 332 "over", // a() 331 333 "resume" 332 334 ] -
trunk/LayoutTests/inspector/debugger/stepping/stepping-loops-expected.txt
r207228 r259781 839 839 -> 74 }| 840 840 75 841 76 // ---------842 77 841 76 function entryForWithCommas() { 842 77 debugger; 843 843 844 844 ACTION: resume … … 846 846 PASS: Should have used all steps. 847 847 848 -- Running test case: Debugger.stepping.ForWithCommasStepOver 849 EXPRESSION: setTimeout(entryForWithCommas) 850 STEPS: over, over, over, over, over, over, over, over, over, over, over, over, over, over, over, resume 851 PAUSED (debugger-statement) 852 PAUSE AT entryForWithCommas:78:5 853 74 } 854 75 855 76 function entryForWithCommas() { 856 -> 77 |debugger; 857 78 for (let i = 0, length = 0; length = 2, i < length; length = 1, ++i) 858 79 a(); 859 80 } 860 861 ACTION: step-over 862 PAUSE AT entryForWithCommas:79:10 863 75 864 76 function entryForWithCommas() { 865 77 debugger; 866 -> 78 for (|let i = 0, length = 0; length = 2, i < length; length = 1, ++i) 867 79 a(); 868 80 } 869 81 870 871 ACTION: step-over 872 PAUSE AT entryForWithCommas:79:21 873 75 874 76 function entryForWithCommas() { 875 77 debugger; 876 -> 78 for (let i = 0, |length = 0; length = 2, i < length; length = 1, ++i) 877 79 a(); 878 80 } 879 81 880 881 ACTION: step-over 882 PAUSE AT entryForWithCommas:79:33 883 75 884 76 function entryForWithCommas() { 885 77 debugger; 886 -> 78 for (let i = 0, length = 0; |length = 2, i < length; length = 1, ++i) 887 79 a(); 888 80 } 889 81 890 891 ACTION: step-over 892 PAUSE AT entryForWithCommas:79:45 893 75 894 76 function entryForWithCommas() { 895 77 debugger; 896 -> 78 for (let i = 0, length = 0; length = 2, |i < length; length = 1, ++i) 897 79 a(); 898 80 } 899 81 900 901 ACTION: step-over 902 PAUSE AT entryForWithCommas:80:9 903 76 function entryForWithCommas() { 904 77 debugger; 905 78 for (let i = 0, length = 0; length = 2, i < length; length = 1, ++i) 906 -> 79 |a(); 907 80 } 908 81 909 82 // --------- 910 911 ACTION: step-over 912 PAUSE AT entryForWithCommas:79:57 913 75 914 76 function entryForWithCommas() { 915 77 debugger; 916 -> 78 for (let i = 0, length = 0; length = 2, i < length; |length = 1, ++i) 917 79 a(); 918 80 } 919 81 920 921 ACTION: step-over 922 PAUSE AT entryForWithCommas:79:69 923 75 924 76 function entryForWithCommas() { 925 77 debugger; 926 -> 78 for (let i = 0, length = 0; length = 2, i < length; length = 1, |++i) 927 79 a(); 928 80 } 929 81 930 931 ACTION: step-over 932 PAUSE AT entryForWithCommas:79:33 933 75 934 76 function entryForWithCommas() { 935 77 debugger; 936 -> 78 for (let i = 0, length = 0; |length = 2, i < length; length = 1, ++i) 937 79 a(); 938 80 } 939 81 940 941 ACTION: step-over 942 PAUSE AT entryForWithCommas:79:45 943 75 944 76 function entryForWithCommas() { 945 77 debugger; 946 -> 78 for (let i = 0, length = 0; length = 2, |i < length; length = 1, ++i) 947 79 a(); 948 80 } 949 81 950 951 ACTION: step-over 952 PAUSE AT entryForWithCommas:80:9 953 76 function entryForWithCommas() { 954 77 debugger; 955 78 for (let i = 0, length = 0; length = 2, i < length; length = 1, ++i) 956 -> 79 |a(); 957 80 } 958 81 959 82 // --------- 960 961 ACTION: step-over 962 PAUSE AT entryForWithCommas:79:57 963 75 964 76 function entryForWithCommas() { 965 77 debugger; 966 -> 78 for (let i = 0, length = 0; length = 2, i < length; |length = 1, ++i) 967 79 a(); 968 80 } 969 81 970 971 ACTION: step-over 972 PAUSE AT entryForWithCommas:79:69 973 75 974 76 function entryForWithCommas() { 975 77 debugger; 976 -> 78 for (let i = 0, length = 0; length = 2, i < length; length = 1, |++i) 977 79 a(); 978 80 } 979 81 980 981 ACTION: step-over 982 PAUSE AT entryForWithCommas:79:33 983 75 984 76 function entryForWithCommas() { 985 77 debugger; 986 -> 78 for (let i = 0, length = 0; |length = 2, i < length; length = 1, ++i) 987 79 a(); 988 80 } 989 81 990 991 ACTION: step-over 992 PAUSE AT entryForWithCommas:79:45 993 75 994 76 function entryForWithCommas() { 995 77 debugger; 996 -> 78 for (let i = 0, length = 0; length = 2, |i < length; length = 1, ++i) 997 79 a(); 998 80 } 999 81 1000 1001 ACTION: step-over 1002 PAUSE AT entryForWithCommas:81:2 1003 77 debugger; 1004 78 for (let i = 0, length = 0; length = 2, i < length; length = 1, ++i) 1005 79 a(); 1006 -> 80 }| 1007 81 1008 82 // --------- 1009 83 1010 1011 ACTION: resume 1012 RESUMED 1013 PASS: Should have used all steps. 1014 -
trunk/LayoutTests/inspector/debugger/stepping/stepping-loops.html
r207228 r259781 75 75 } 76 76 77 function entryForWithCommas() { 78 debugger; 79 for (let i = 0, length = 0; length = 2, i < length; length = 1, ++i) 80 a(); 81 } 82 77 83 // --------- 78 84 … … 231 237 "over", // complete: (i === 2) [i=2] 232 238 "over", // complete: break - leaving entry 239 "resume", 240 ] 241 }); 242 243 addSteppingTestCase({ 244 name: "Debugger.stepping.ForWithCommasStepOver", 245 description: "Should be able to step over every comma separated init and condition in traditional for loops.", 246 expression: "setTimeout(entryForWithCommas)", 247 steps: [ 248 "over", 249 "over", // complete: let i = 0 250 "over", // complete: length = 0 251 "over", // complete: length = 2 252 "over", // complete: i < length 253 "over", // complete: a() 254 "over", // complete: length = 1 255 "over", // complete: ++i 256 "over", // complete: length = 2 257 "over", // complete: i < length [i=1] 258 "over", // complete: a() 259 "over", // complete: length = 1 260 "over", // complete: ++i 261 "over", // complete: length = 2 262 "over", // complete: i < length [i=2] - leaving entry 233 263 "resume", 234 264 ] -
trunk/LayoutTests/inspector/debugger/stepping/stepping-misc-expected.txt
r207312 r259781 390 390 -- Running test case: Debugger.stepping.VariableDeclaration 391 391 EXPRESSION: setTimeout(entryVariableDeclaration) 392 STEPS: over, in, in, in, resume392 STEPS: over, in, in, in, in, in, in, resume 393 393 PAUSED (debugger-statement) 394 394 PAUSE AT entryVariableDeclaration:58:5 … … 412 412 413 413 ACTION: step-in 414 PAUSE AT entryVariableDeclaration:60:9 415 56 function entryVariableDeclaration() { 416 57 debugger; 417 58 var a = 1, 418 -> 59 |x = 1; 419 60 let b = 2, 420 61 y = 2; 421 62 const c = 3, 422 423 ACTION: step-in 414 424 PAUSE AT entryVariableDeclaration:61:5 415 425 57 debugger; … … 422 432 423 433 ACTION: step-in 434 PAUSE AT entryVariableDeclaration:62:9 435 58 var a = 1, 436 59 x = 1; 437 60 let b = 2, 438 -> 61 |y = 2; 439 62 const c = 3, 440 63 z = 3; 441 64 } 442 443 ACTION: step-in 424 444 PAUSE AT entryVariableDeclaration:63:5 425 445 59 x = 1; … … 432 452 433 453 ACTION: step-in 454 PAUSE AT entryVariableDeclaration:64:9 455 60 let b = 2, 456 61 y = 2; 457 62 const c = 3, 458 -> 63 |z = 3; 459 64 } 460 65 461 66 function entryDestructuring() { 462 463 ACTION: step-in 434 464 PAUSE AT entryVariableDeclaration:65:2 435 465 61 y = 2; -
trunk/LayoutTests/inspector/debugger/stepping/stepping-misc.html
r207312 r259781 185 185 addSteppingTestCase({ 186 186 name: "Debugger.stepping.VariableDeclaration", 187 description: "Should be able to step t hrough variable declarations.",187 description: "Should be able to step to each individual variable declaration.", 188 188 expression: "setTimeout(entryVariableDeclaration)", 189 189 steps: [ 190 190 "over", 191 // FIXME: Opportunity to pause at assignment expressions. 192 "in", // a = 1, x = 1 193 "in", // b = 2, y = 2 194 "in", // c = 3, z = 3 191 "in", // a = 1 192 "in", // x = 1 193 "in", // b = 2 194 "in", // y = 2 195 "in", // c = 3 196 "in", // z = 3 195 197 "resume", 196 198 ] -
trunk/LayoutTests/inspector/formatting/resources/javascript-tests/for-statements-expected.js
r248760 r259781 67 67 } 68 68 69 for (var x = 1; x < 10; ++x) 70 1; 69 71 for (var x = 1; x < len; ++x) 70 72 1; 71 73 for (var x = 1, len = 10; x < len; ++x) 72 74 1; 75 for (var x = 1, len = 10; len = 20, x < len; ++x) 76 1; 77 for (var x = 1, len = 10; len = 20, x < len; len = 15, ++x) 78 1; 73 79 80 for (x = 1; x < 10; ++x) { 81 1 82 } 74 83 for (x = 1; x < len; ++x) { 75 84 1 … … 78 87 1 79 88 } 89 for (x = 1, len = 10; len = 20, x < len; ++x) { 90 1 91 } 92 for (x = 1, len = 10; len = 20, x < len; len = 15, ++x) { 93 1 94 } 80 95 96 for (var x = 1; x < 10; ++x) { 97 1 98 } 81 99 for (var x = 1; x < len; ++x) { 82 100 1 … … 85 103 1 86 104 } 105 for (var x = 1, len = 10; len = 20, x < len; len = 15, ++x) { 106 1 107 } 87 108 109 for (var x = 1; x < 10; ++x) { 110 1 111 } 88 112 for (var x = 1; x < len; ++x) { 89 113 1 90 114 } 91 115 for (var x = 1, len = 10; x < len; ++x) { 116 1 117 } 118 for (var x = 1, len = 10; len = 20, x < len; len = 15, ++x) { 92 119 1 93 120 } -
trunk/LayoutTests/inspector/formatting/resources/javascript-tests/for-statements.js
r248760 r259781 35 35 for ( 1 ; 2 ; 3 ) {1} 36 36 37 for(var x=1;x<10;++x)1; 37 38 for(var x=1;x<len;++x)1; 38 39 for(var x=1,len=10;x<len;++x)1; 40 for(var x=1,len=10;len=20,x<len;++x)1; 41 for(var x=1,len=10;len=20,x<len;len=15,++x)1; 39 42 43 for(x=1;x<10;++x){1} 40 44 for(x=1;x<len;++x){1} 41 45 for(x=1,len=10;x<len;++x){1} 46 for(x=1,len=10;len=20,x<len;++x){1} 47 for(x=1,len=10;len=20,x<len;len=15,++x){1} 42 48 49 for(var x=1;x<10;++x){1} 43 50 for(var x=1;x<len;++x){1} 44 51 for(var x=1,len=10;x<len;++x){1} 52 for(var x=1,len=10;len=20,x<len;len=15,++x){1} 45 53 46 for(var x=1;x<len;++x){1} 47 for(var x=1,len=10;x<len;++x){1} 54 for( var x = 1 ; x < 10 ; ++x ) { 1 } 55 for( var x = 1 ; x < len ; ++x ) { 1 } 56 for( var x = 1 , len = 10 ; x < len ; ++x ) { 1 } 57 for( var x = 1 , len = 10 ; len = 20 , x < len ; len = 15 , ++x ) { 1 } 48 58 49 59 for(1;2;3)for(4;5;6)for(7;8;9); -
trunk/LayoutTests/inspector/formatting/resources/javascript-tests/if-statement-expected.js
r199168 r259781 166 166 if (true) 167 167 1; 168 169 if (1, 2, 3) {} 170 if (1, 2, 3) {} -
trunk/LayoutTests/inspector/formatting/resources/javascript-tests/if-statement.js
r199168 r259781 48 48 if (true) 49 49 1; 50 51 if(1,2,3){} 52 if ( 1 , 2 , 3 ) { } -
trunk/LayoutTests/inspector/formatting/resources/javascript-tests/sample-jquery-expected.js
r199168 r259781 63 63 if (a.id !== i[2]) 64 64 return r.find(e); 65 this.length = 1, this[0] = a 65 this.length = 1, 66 this[0] = a 66 67 } 67 68 return this.context = o, this.selector = e, this … … 115 116 sort: [].sort, 116 117 splice: [].splice 117 }, b.fn.init.prototype = b.fn, b.extend = b.fn.extend = function() { 118 }, 119 b.fn.init.prototype = b.fn, 120 b.extend = b.fn.extend = function() { 118 121 var e, 119 122 n, … … 129 132 if (null != (o = arguments[u])) 130 133 for (i in o) 131 e = s[i], r = o[i], s !== r && (c && r && (b.isPlainObject(r) || (n = b.isArray(r))) ? (n ? (n = !1, a = e && b.isArray(e) ? e : []) : a = e && b.isPlainObject(e) ? e : {}, s[i] = b.extend(c, a, r)) : r !== t && (s[i] = r)); 134 e = s[i], 135 r = o[i], 136 s !== r && (c && r && (b.isPlainObject(r) || (n = b.isArray(r))) ? (n ? (n = !1, a = e && b.isArray(e) ? e : []) : a = e && b.isPlainObject(e) ? e : {}, s[i] = b.extend(c, a, r)) : r !== t && (s[i] = r)); 132 137 return s 133 }, b.extend({ 138 }, 139 b.extend({ 134 140 noConflict: function(t) { 135 141 return e.$ === b && (e.$ = u), t && e.jQuery === b && (e.jQuery = s), b … … 144 150 if (!o.body) 145 151 return setTimeout(b.ready); 146 b.isReady = !0, e !== !0 && --b.readyWait > 0 || (n.resolveWith(o, [b]), b.fn.trigger && b(o).trigger("ready").off("ready")) 152 b.isReady = !0, 153 e !== !0 && --b.readyWait > 0 || (n.resolveWith(o, [b]), b.fn.trigger && b(o).trigger("ready").off("ready")) 147 154 } 148 155 }, … … 188 195 if (!e || "string" != typeof e) 189 196 return null; 190 "boolean" == typeof t && (n = t, t = !1), t = t || o; 197 "boolean" == typeof t && (n = t, t = !1), 198 t = t || o; 191 199 var r = C.exec(e), 192 200 i = !n && []; … … 282 290 a = e.length; 283 291 for (n = !!n; a > o; o++) 284 r = !!t(e[o], o), n !== r && i.push(e[o]); 292 r = !!t(e[o], o), 293 n !== r && i.push(e[o]); 285 294 return i 286 295 }, … … 293 302 if (a) 294 303 for (; o > i; i++) 295 r = t(e[i], i, n), null != r && (s[s.length] = r); 304 r = t(e[i], i, n), 305 null != r && (s[s.length] = r); 296 306 else 297 307 for (i in e) 298 r = t(e[i], i, n), null != r && (s[s.length] = r); 308 r = t(e[i], i, n), 309 null != r && (s[s.length] = r); 299 310 return f.apply([], s) 300 311 }, … … 326 337 return (new Date).getTime() 327 338 } 328 }), b.ready.promise = function(t) { 339 }), 340 b.ready.promise = function(t) { 329 341 if (!n) 330 342 if (n = b.Deferred(), "complete" === o.readyState) 331 343 setTimeout(b.ready); 332 344 else if (o.addEventListener) 333 o.addEventListener("DOMContentLoaded", H, !1), e.addEventListener("load", H, !1); 345 o.addEventListener("DOMContentLoaded", H, !1), 346 e.addEventListener("load", H, !1); 334 347 else { 335 o.attachEvent("onreadystatechange", H), e.attachEvent("onload", H); 348 o.attachEvent("onreadystatechange", H), 349 e.attachEvent("onload", H); 336 350 var r = !1; 337 351 try { … … 345 359 return setTimeout(a, 50) 346 360 } 347 q(), b.ready() 361 q(), 362 b.ready() 348 363 } 349 364 }() 350 365 } 351 366 return n.promise(t) 352 }, b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(e, t) { 367 }, 368 b.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(e, t) { 353 369 l["[object " + t + "]"] = t.toLowerCase() 354 370 }); … … 382 398 break 383 399 } 384 n = !1, u && (l ? l.length && c(l.shift()) : r ? u = [] : p.disable()) 400 n = !1, 401 u && (l ? l.length && c(l.shift()) : r ? u = [] : p.disable()) 385 402 }, 386 403 p = { … … 393 410 "function" === r ? e.unique && p.has(n) || u.push(n) : n && n.length && "string" !== r && i(n) 394 411 }) 395 })(arguments), n ? o = u.length : r && (s = t, c(r)) 412 })(arguments), 413 n ? o = u.length : r && (s = t, c(r)) 396 414 } 397 415 return this … … 401 419 var r; 402 420 while ((r = b.inArray(t, u, r)) > -1) 403 u.splice(r, 1), n && (o >= r && o--, a >= r && a--) 421 u.splice(r, 1), 422 n && (o >= r && o--, a >= r && a--) 404 423 }), this 405 424 }, … … 433 452 }; 434 453 return p 435 }, b.extend({ 454 }, 455 b.extend({ 436 456 Deferred: function(e) { 437 457 var t = [["resolve", "done", b.Callbacks("once memory"), "resolved"], ["reject", "fail", b.Callbacks("once memory"), "rejected"], ["notify", "progress", b.Callbacks("memory")]], … … 454 474 e && b.isFunction(e.promise) ? e.promise().done(n.resolve).fail(n.reject).progress(n.notify) : n[a + "With"](this === r ? n.promise() : this, s ? [e] : arguments) 455 475 }) 456 }), e = null 476 }), 477 e = null 457 478 }).promise() 458 479 }, … … 465 486 var a = o[2], 466 487 s = o[3]; 467 r[o[1]] = a.add, s && a.add(function() { 488 r[o[1]] = a.add, 489 s && a.add(function() { 468 490 n = s 469 }, t[1 ^ e][2].disable, t[2][2].lock), i[o[0]] = function() { 491 }, t[1 ^ e][2].disable, t[2][2].lock), 492 i[o[0]] = function() { 470 493 return i[o[0] + "With"](this === i ? r : this, arguments), this 471 }, i[o[0] + "With"] = a.fireWith 494 }, 495 i[o[0] + "With"] = a.fireWith 472 496 }), r.promise(i), e && e.call(i, i), i 473 497 }, … … 480 504 a = function(e, t, n) { 481 505 return function(r) { 482 t[e] = this, n[e] = arguments.length > 1 ? h.call(arguments) : r, n === s ? o.notifyWith(t, n) : --i || o.resolveWith(t, n) 506 t[e] = this, 507 n[e] = arguments.length > 1 ? h.call(arguments) : r, 508 n === s ? o.notifyWith(t, n) : --i || o.resolveWith(t, n) 483 509 } 484 510 }, … … 491 517 return i || o.resolveWith(l, n), o.promise() 492 518 } 493 }), b.support = function() { 519 }), 520 b.support = function() { 494 521 var t, 495 522 n, … … 505 532 if (d.setAttribute("className", "t"), d.innerHTML = " <link/><table></table><a href='/a'>a</a><input type='checkbox'/>", n = d.getElementsByTagName("*"), r = d.getElementsByTagName("a")[0], !n || !r || !n.length) 506 533 return {}; 507 s = o.createElement("select"), l = s.appendChild(o.createElement("option")), a = d.getElementsByTagName("input")[0], r.style.cssText = "top:1px;float:left;opacity:.5", t = { 534 s = o.createElement("select"), 535 l = s.appendChild(o.createElement("option")), 536 a = d.getElementsByTagName("input")[0], 537 r.style.cssText = "top:1px;float:left;opacity:.5", 538 t = { 508 539 getSetAttribute: "t" !== d.className, 509 540 leadingWhitespace: 3 === d.firstChild.nodeType, … … 526 557 boxSizingReliable: !0, 527 558 pixelPosition: !1 528 }, a.checked = !0, t.noCloneChecked = a.cloneNode(!0).checked, s.disabled = !0, t.optDisabled = !l.disabled; 559 }, 560 a.checked = !0, 561 t.noCloneChecked = a.cloneNode(!0).checked, 562 s.disabled = !0, 563 t.optDisabled = !l.disabled; 529 564 try { 530 565 delete d.test … … 532 567 t.deleteExpando = !1 533 568 } 534 a = o.createElement("input"), a.setAttribute("value", ""), t.input = "" === a.getAttribute("value"), a.value = "t", a.setAttribute("type", "radio"), t.radioValue = "t" === a.value, a.setAttribute("checked", "t"), a.setAttribute("name", "t"), u = o.createDocumentFragment(), u.appendChild(a), t.appendChecked = a.checked, t.checkClone = u.cloneNode(!0).cloneNode(!0).lastChild.checked, d.attachEvent && (d.attachEvent("onclick", function() { 569 a = o.createElement("input"), 570 a.setAttribute("value", ""), 571 t.input = "" === a.getAttribute("value"), 572 a.value = "t", 573 a.setAttribute("type", "radio"), 574 t.radioValue = "t" === a.value, 575 a.setAttribute("checked", "t"), 576 a.setAttribute("name", "t"), 577 u = o.createDocumentFragment(), 578 u.appendChild(a), 579 t.appendChecked = a.checked, 580 t.checkClone = u.cloneNode(!0).cloneNode(!0).lastChild.checked, 581 d.attachEvent && (d.attachEvent("onclick", function() { 535 582 t.noCloneEvent = !1 536 583 }), d.cloneNode(!0).click()); … … 540 587 focusin: !0 541 588 }) 542 d.setAttribute(c = "on" + f, "t"), t[f + "Bubbles"] = c in e || d.attributes[c].expando === !1; 589 d.setAttribute(c = "on" + f, "t"), 590 t[f + "Bubbles"] = c in e || d.attributes[c].expando === !1; 543 591 return d.style.backgroundClip = "content-box", d.cloneNode(!0).style.backgroundClip = "", t.clearCloneStyle = "content-box" === d.style.backgroundClip, b(function() { 544 592 var n, … … 616 664 return !t || t !== !0 && e.getAttribute("classid") === t 617 665 } 618 }), b.fn.extend({ 666 }), 667 b.fn.extend({ 619 668 data: function(e, n) { 620 669 var r, … … 626 675 if (this.length && (s = b.data(o), 1 === o.nodeType && !b._data(o, "parsedAttrs"))) { 627 676 for (r = o.attributes; r.length > a; a++) 628 i = r[a].name, i.indexOf("data-") || (i = b.camelCase(i.slice(5)), W(o, i, s[i])); 677 i = r[a].name, 678 i.indexOf("data-") || (i = b.camelCase(i.slice(5)), W(o, i, s[i])); 629 679 b._data(o, "parsedAttrs", !0) 630 680 } … … 679 729 b.dequeue(e, t) 680 730 }; 681 "inprogress" === i && (i = n.shift(), r--), o.cur = i, i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, a, o)), !r && o && o.empty.fire() 731 "inprogress" === i && (i = n.shift(), r--), 732 o.cur = i, 733 i && ("fx" === t && n.unshift("inprogress"), delete o.stop, i.call(e, a, o)), 734 !r && o && o.empty.fire() 682 735 }, 683 736 _queueHooks: function(e, t) { … … 685 738 return b._data(e, n) || b._data(e, n, { 686 739 empty: b.Callbacks("once memory").add(function() { 687 b._removeData(e, t + "queue"), b._removeData(e, n) 740 b._removeData(e, t + "queue"), 741 b._removeData(e, n) 688 742 }) 689 743 }) 690 744 } 691 }), b.fn.extend({ 745 }), 746 b.fn.extend({ 692 747 queue: function(e, n) { 693 748 var r = 2; 694 749 return "string" != typeof e && (n = e, e = "fx", r--), r > arguments.length ? b.queue(this[0], e) : n === t ? this : this.each(function() { 695 750 var t = b.queue(this, e, n); 696 b._queueHooks(this, e), "fx" === e && "inprogress" !== t[0] && b.dequeue(this, e) 751 b._queueHooks(this, e), 752 "fx" === e && "inprogress" !== t[0] && b.dequeue(this, e) 697 753 }) 698 754 }, … … 722 778 --i || o.resolveWith(a, [a]) 723 779 }; 724 "string" != typeof e && (n = e, e = t), e = e || "fx"; 780 "string" != typeof e && (n = e, e = t), 781 e = e || "fx"; 725 782 while (s--) 726 r = b._data(a[s], e + "queueHooks"), r && r.empty && (i++, r.empty.add(u)); 783 r = b._data(a[s], e + "queueHooks"), 784 r && r.empty && (i++, r.empty.add(u)); 727 785 return u(), o.promise(n) 728 786 } … … 753 811 return e = b.propFix[e] || e, this.each(function() { 754 812 try { 755 this[e] = t, delete this[e] 813 this[e] = t, 814 delete this[e] 756 815 } catch (n) {} 757 816 }) … … 817 876 l = e.match(w) || []; 818 877 while (o = l[a++]) 819 u = r ? u : !s.hasClass(o), s[u ? "addClass" : "removeClass"](o) 878 u = r ? u : !s.hasClass(o), 879 s[u ? "addClass" : "removeClass"](o) 820 880 } else 821 881 (n === i || "boolean" === n) && (this.className && b._data(this, "__className__", this.className), this.className = this.className || e === !1 ? "" : b._data(this, "__className__") || "") … … 849 909 } 850 910 } 851 }), b.extend({ 911 }), 912 b.extend({ 852 913 valHooks: { 853 914 option: { … … 898 959 if (o && 1 === e.nodeType) 899 960 while (n = o[i++]) 900 r = b.propFix[n] || n, J.test(n) ? !Q && G.test(n) ? e[b.camelCase("default-" + n)] = e[r] = !1 : e[r] = !1 : b.attr(e, n, ""), e.removeAttribute(Q ? n : r) 961 r = b.propFix[n] || n, 962 J.test(n) ? !Q && G.test(n) ? e[b.camelCase("default-" + n)] = e[r] = !1 : e[r] = !1 : b.attr(e, n, ""), 963 e.removeAttribute(Q ? n : r) 901 964 }, 902 965 attrHooks: { … … 940 1003 } 941 1004 } 942 }), z = { 1005 }), 1006 z = { 943 1007 get: function(e, n) { 944 1008 var r = b.prop(e, n), … … 950 1014 return t === !1 ? b.removeAttr(e, n) : K && Q || !G.test(n) ? e.setAttribute(!Q && b.propFix[n] || n, n) : e[b.camelCase("default-" + n)] = e[n] = !0, n 951 1015 } 952 }, K && Q || (b.attrHooks.value = { 1016 }, 1017 K && Q || (b.attrHooks.value = { 953 1018 get: function(e, n) { 954 1019 var r = e.getAttributeNode(n); … … 958 1023 return b.nodeName(e, "input") ? (e.defaultValue = n, t) : I && I.set(e, n, r) 959 1024 } 960 }), Q || (I = b.valHooks.button = { 1025 }), 1026 Q || (I = b.valHooks.button = { 961 1027 get: function(e, n) { 962 1028 var r = e.getAttributeNode(n); … … 978 1044 } 979 1045 }) 980 })), b.support.hrefNormalized || (b.each(["href", "src", "width", "height"], function(e, n) { 1046 })), 1047 b.support.hrefNormalized || (b.each(["href", "src", "width", "height"], function(e, n) { 981 1048 b.attrHooks[n] = b.extend(b.attrHooks[n], { 982 1049 get: function(e) { … … 991 1058 } 992 1059 } 993 })), b.support.style || (b.attrHooks.style = { 1060 })), 1061 b.support.style || (b.attrHooks.style = { 994 1062 get: function(e) { 995 1063 return e.style.cssText || t … … 998 1066 return e.style.cssText = t + "" 999 1067 } 1000 }), b.support.optSelected || (b.propHooks.selected = b.extend(b.propHooks.selected, { 1068 }), 1069 b.support.optSelected || (b.propHooks.selected = b.extend(b.propHooks.selected, { 1001 1070 get: function(e) { 1002 1071 var t = e.parentNode; 1003 1072 return t && (t.selectedIndex, t.parentNode && t.parentNode.selectedIndex), null 1004 1073 } 1005 })), b.support.enctype || (b.propFix.enctype = "encoding"), b.support.checkOn || b.each(["radio", "checkbox"], function() { 1074 })), 1075 b.support.enctype || (b.propFix.enctype = "encoding"), 1076 b.support.checkOn || b.each(["radio", "checkbox"], function() { 1006 1077 b.valHooks[this] = { 1007 1078 get: function(e) { … … 1009 1080 } 1010 1081 } 1011 }), b.each(["radio", "checkbox"], function() { 1082 }), 1083 b.each(["radio", "checkbox"], function() { 1012 1084 b.valHooks[this] = b.extend(b.valHooks[this], { 1013 1085 set: function(e, n) { … … 1043 1115 v = b._data(e); 1044 1116 if (v) { 1045 r.handler && (c = r, r = c.handler, a = c.selector), r.guid || (r.guid = b.guid++), (u = v.events) || (u = v.events = {}), (f = v.handle) || (f = v.handle = function(e) { 1117 r.handler && (c = r, r = c.handler, a = c.selector), 1118 r.guid || (r.guid = b.guid++), 1119 (u = v.events) || (u = v.events = {}), 1120 (f = v.handle) || (f = v.handle = function(e) { 1046 1121 return typeof b === i || e && b.event.triggered === e.type ? t : b.event.dispatch.apply(f.elem, arguments) 1047 }, f.elem = e), n = (n || "").match(w) || [""], l = n.length; 1122 }, f.elem = e), 1123 n = (n || "").match(w) || [""], 1124 l = n.length; 1048 1125 while (l--) 1049 s = rt.exec(n[l]) || [], g = y = s[1], m = (s[2] || "").split(".").sort(), p = b.event.special[g] || {}, g = (a ? p.delegateType : p.bindType) || g, p = b.event.special[g] || {}, d = b.extend({ 1126 s = rt.exec(n[l]) || [], 1127 g = y = s[1], 1128 m = (s[2] || "").split(".").sort(), 1129 p = b.event.special[g] || {}, 1130 g = (a ? p.delegateType : p.bindType) || g, 1131 p = b.event.special[g] || {}, 1132 d = b.extend({ 1050 1133 type: g, 1051 1134 origType: y, … … 1056 1139 needsContext: a && b.expr.match.needsContext.test(a), 1057 1140 namespace: m.join(".") 1058 }, c), (h = u[g]) || (h = u[g] = [], h.delegateCount = 0, p.setup && p.setup.call(e, o, m, f) !== !1 || (e.addEventListener ? e.addEventListener(g, f, !1) : e.attachEvent && e.attachEvent("on" + g, f))), p.add && (p.add.call(e, d), d.handler.guid || (d.handler.guid = r.guid)), a ? h.splice(h.delegateCount++, 0, d) : h.push(d), b.event.global[g] = !0; 1141 }, c), 1142 (h = u[g]) || (h = u[g] = [], h.delegateCount = 0, p.setup && p.setup.call(e, o, m, f) !== !1 || (e.addEventListener ? e.addEventListener(g, f, !1) : e.attachEvent && e.attachEvent("on" + g, f))), 1143 p.add && (p.add.call(e, d), d.handler.guid || (d.handler.guid = r.guid)), 1144 a ? h.splice(h.delegateCount++, 0, d) : h.push(d), 1145 b.event.global[g] = !0; 1059 1146 e = null 1060 1147 } … … 1074 1161 m = b.hasData(e) && b._data(e); 1075 1162 if (m && (c = m.events)) { 1076 t = (t || "").match(w) || [""], l = t.length; 1163 t = (t || "").match(w) || [""], 1164 l = t.length; 1077 1165 while (l--) 1078 1166 if (s = rt.exec(t[l]) || [], d = g = s[1], h = (s[2] || "").split(".").sort(), d) { 1079 p = b.event.special[d] || {}, d = (r ? p.delegateType : p.bindType) || d, f = c[d] || [], s = s[2] && RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"), u = o = f.length; 1167 p = b.event.special[d] || {}, 1168 d = (r ? p.delegateType : p.bindType) || d, 1169 f = c[d] || [], 1170 s = s[2] && RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"), 1171 u = o = f.length; 1080 1172 while (o--) 1081 a = f[o], !i && g !== a.origType || n && n.guid !== a.guid || s && !s.test(a.namespace) || r && r !== a.selector && ("**" !== r || !a.selector) || (f.splice(o, 1), a.selector && f.delegateCount--, p.remove && p.remove.call(e, a)); 1173 a = f[o], 1174 !i && g !== a.origType || n && n.guid !== a.guid || s && !s.test(a.namespace) || r && r !== a.selector && ("**" !== r || !a.selector) || (f.splice(o, 1), a.selector && f.delegateCount--, p.remove && p.remove.call(e, a)); 1082 1175 u && !f.length && (p.teardown && p.teardown.call(e, h, m.handle) !== !1 || b.removeEvent(e, d, m.handle), delete c[d]) 1083 1176 } else … … 1101 1194 if (!a && !p.noBubble && !b.isWindow(i)) { 1102 1195 for (c = p.delegateType || g, nt.test(c + g) || (l = l.parentNode); l; l = l.parentNode) 1103 h.push(l), f = l; 1196 h.push(l), 1197 f = l; 1104 1198 f === (i.ownerDocument || o) && h.push(f.defaultView || f.parentWindow || e) 1105 1199 } 1106 1200 d = 0; 1107 1201 while ((l = h[d++]) && !n.isPropagationStopped()) 1108 n.type = d > 1 ? c : p.bindType || g, s = (b._data(l, "events") || {})[n.type] && b._data(l, "handle"), s && s.apply(l, r), s = u && l[u], s && b.acceptData(l) && s.apply && s.apply(l, r) === !1 && n.preventDefault(); 1202 n.type = d > 1 ? c : p.bindType || g, 1203 s = (b._data(l, "events") || {})[n.type] && b._data(l, "handle"), 1204 s && s.apply(l, r), 1205 s = u && l[u], 1206 s && b.acceptData(l) && s.apply && s.apply(l, r) === !1 && n.preventDefault(); 1109 1207 if (n.type = g, !(a || n.isDefaultPrevented() || p._default && p._default.apply(i.ownerDocument, r) !== !1 || "click" === g && b.nodeName(i, "a") || !b.acceptData(i) || !u || !i[g] || b.isWindow(i))) { 1110 f = i[u], f && (i[u] = null), b.event.triggered = g; 1208 f = i[u], 1209 f && (i[u] = null), 1210 b.event.triggered = g; 1111 1211 try { 1112 1212 i[g]() 1113 1213 } catch (v) {} 1114 b.event.triggered = t, f && (i[u] = f) 1214 b.event.triggered = t, 1215 f && (i[u] = f) 1115 1216 } 1116 1217 return n.result … … 1129 1230 c = b.event.special[e.type] || {}; 1130 1231 if (u[0] = e, e.delegateTarget = this, !c.preDispatch || c.preDispatch.call(this, e) !== !1) { 1131 s = b.event.handlers.call(this, e, l), n = 0; 1232 s = b.event.handlers.call(this, e, l), 1233 n = 0; 1132 1234 while ((o = s[n++]) && !e.isPropagationStopped()) { 1133 e.currentTarget = o.elem, a = 0; 1235 e.currentTarget = o.elem, 1236 a = 0; 1134 1237 while ((i = o.handlers[a++]) && !e.isImmediatePropagationStopped()) 1135 1238 (!e.namespace_re || e.namespace_re.test(i.namespace)) && (e.handleObj = i, e.data = i.data, r = ((b.event.special[i.origType] || {}).handle || i.handler).apply(o.elem, u), r !== t && (e.result = r) === !1 && (e.preventDefault(), e.stopPropagation())) … … 1150 1253 if (1 === l.nodeType && (l.disabled !== !0 || "click" !== e.type)) { 1151 1254 for (o = [], a = 0; u > a; a++) 1152 i = n[a], r = i.selector + " ", o[r] === t && (o[r] = i.needsContext ? b(r, this).index(l) >= 0 : b.find(r, this, null, [l]).length), o[r] && o.push(i); 1255 i = n[a], 1256 r = i.selector + " ", 1257 o[r] === t && (o[r] = i.needsContext ? b(r, this).index(l) >= 0 : b.find(r, this, null, [l]).length), 1258 o[r] && o.push(i); 1153 1259 o.length && s.push({ 1154 1260 elem: l, … … 1170 1276 a = e, 1171 1277 s = this.fixHooks[i]; 1172 s || (this.fixHooks[i] = s = tt.test(i) ? this.mouseHooks : et.test(i) ? this.keyHooks : {}), r = s.props ? this.props.concat(s.props) : this.props, e = new b.Event(a), t = r.length; 1278 s || (this.fixHooks[i] = s = tt.test(i) ? this.mouseHooks : et.test(i) ? this.keyHooks : {}), 1279 r = s.props ? this.props.concat(s.props) : this.props, 1280 e = new b.Event(a), 1281 t = r.length; 1173 1282 while (t--) 1174 n = r[t], e[n] = a[n]; 1283 n = r[t], 1284 e[n] = a[n]; 1175 1285 return e.target || (e.target = a.srcElement || o), 3 === e.target.nodeType && (e.target = e.target.parentNode), e.metaKey = !!e.metaKey, s.filter ? s.filter(e, a) : e 1176 1286 }, … … 1230 1340 originalEvent: {} 1231 1341 }); 1232 r ? b.event.trigger(i, null, t) : b.event.dispatch.call(t, i), i.isDefaultPrevented() && n.preventDefault() 1233 } 1234 }, b.removeEvent = o.removeEventListener ? function(e, t, n) { 1342 r ? b.event.trigger(i, null, t) : b.event.dispatch.call(t, i), 1343 i.isDefaultPrevented() && n.preventDefault() 1344 } 1345 }, 1346 b.removeEvent = o.removeEventListener ? function(e, t, n) { 1235 1347 e.removeEventListener && e.removeEventListener(t, n, !1) 1236 1348 } : function(e, t, n) { 1237 1349 var r = "on" + t; 1238 1350 e.detachEvent && (typeof e[r] === i && (e[r] = null), e.detachEvent(r, n)) 1239 }, b.Event = function(e, n) { 1351 }, 1352 b.Event = function(e, n) { 1240 1353 return this instanceof b.Event ? (e && e.type ? (this.originalEvent = e, this.type = e.type, this.isDefaultPrevented = e.defaultPrevented || e.returnValue === !1 || e.getPreventDefault && e.getPreventDefault() ? it : ot) : this.type = e, n && b.extend(this, n), this.timeStamp = e && e.timeStamp || b.now(), this[b.expando] = !0, t) : new b.Event(e, n) 1241 }, b.Event.prototype = { 1354 }, 1355 b.Event.prototype = { 1242 1356 isDefaultPrevented: ot, 1243 1357 isPropagationStopped: ot, … … 1245 1359 preventDefault: function() { 1246 1360 var e = this.originalEvent; 1247 this.isDefaultPrevented = it, e && (e.preventDefault ? e.preventDefault() : e.returnValue = !1) 1361 this.isDefaultPrevented = it, 1362 e && (e.preventDefault ? e.preventDefault() : e.returnValue = !1) 1248 1363 }, 1249 1364 stopPropagation: function() { 1250 1365 var e = this.originalEvent; 1251 this.isPropagationStopped = it, e && (e.stopPropagation && e.stopPropagation(), e.cancelBubble = !0) 1366 this.isPropagationStopped = it, 1367 e && (e.stopPropagation && e.stopPropagation(), e.cancelBubble = !0) 1252 1368 }, 1253 1369 stopImmediatePropagation: function() { 1254 this.isImmediatePropagationStopped = it, this.stopPropagation() 1255 } 1256 }, b.each({ 1370 this.isImmediatePropagationStopped = it, 1371 this.stopPropagation() 1372 } 1373 }, 1374 b.each({ 1257 1375 mouseenter: "mouseover", 1258 1376 mouseleave: "mouseout" … … 1269 1387 } 1270 1388 } 1271 }), b.support.submitBubbles || (b.event.special.submit = { 1389 }), 1390 b.support.submitBubbles || (b.event.special.submit = { 1272 1391 setup: function() { 1273 1392 return b.nodeName(this, "form") ? !1 : (b.event.add(this, "click._submit keypress._submit", function(e) { … … 1285 1404 return b.nodeName(this, "form") ? !1 : (b.event.remove(this, "._submit"), t) 1286 1405 } 1287 }), b.support.changeBubbles || (b.event.special.change = { 1406 }), 1407 b.support.changeBubbles || (b.event.special.change = { 1288 1408 setup: function() { 1289 1409 return Z.test(this.nodeName) ? (("checkbox" === this.type || "radio" === this.type) && (b.event.add(this, "propertychange._change", function(e) { 1290 1410 "checked" === e.originalEvent.propertyName && (this._just_changed = !0) 1291 1411 }), b.event.add(this, "click._change", function(e) { 1292 this._just_changed && !e.isTrigger && (this._just_changed = !1), b.event.simulate("change", this, e, !0) 1412 this._just_changed && !e.isTrigger && (this._just_changed = !1), 1413 b.event.simulate("change", this, e, !0) 1293 1414 })), !1) : (b.event.add(this, "beforeactivate._change", function(e) { 1294 1415 var t = e.target; … … 1305 1426 return b.event.remove(this, "._change"), !Z.test(this.nodeName) 1306 1427 } 1307 }), b.support.focusinBubbles || b.each({ 1428 }), 1429 b.support.focusinBubbles || b.each({ 1308 1430 focus: "focusin", 1309 1431 blur: "focusout" … … 1321 1443 } 1322 1444 } 1323 }), b.fn.extend({ 1445 }), 1446 b.fn.extend({ 1324 1447 on: function(e, n, r, i, o) { 1325 1448 var a, … … 1379 1502 return r ? b.event.trigger(e, n, r, !0) : t 1380 1503 } 1381 }), function(e, t) { 1504 }), 1505 function(e, t) { 1382 1506 var n, 1383 1507 r, … … 1519 1643 if (T.qsa && !h.test(e)) { 1520 1644 if (f = !0, g = x, m = t, v = 9 === s && e, 1 === s && "object" !== t.nodeName.toLowerCase()) { 1521 l = ft(e), (f = t.getAttribute("id")) ? g = f.replace(K, "\\$&") : t.setAttribute("id", g), g = "[id='" + g + "'] ", u = l.length; 1645 l = ft(e), 1646 (f = t.getAttribute("id")) ? g = f.replace(K, "\\$&") : t.setAttribute("id", g), 1647 g = "[id='" + g + "'] ", 1648 u = l.length; 1522 1649 while (u--) 1523 1650 l[u] = g + dt(l[u]); 1524 m = V.test(e) && t.parentNode || t, v = l.join(",") 1651 m = V.test(e) && t.parentNode || t, 1652 v = l.join(",") 1525 1653 } 1526 1654 if (v) … … 1537 1665 var t = e && (e.ownerDocument || e).documentElement; 1538 1666 return t ? "HTML" !== t.nodeName : !1 1539 }, c = st.setDocument = function(e) { 1667 }, 1668 c = st.setDocument = function(e) { 1540 1669 var n = e ? e.ownerDocument || e : w; 1541 1670 return n !== p && 9 === n.nodeType && n.documentElement ? (p = n, f = n.documentElement, d = a(n), T.tagNameNoComments = at(function(e) { … … 1548 1677 return e.innerHTML = "<div class='hidden e'></div><div class='hidden'></div>", e.getElementsByClassName && e.getElementsByClassName("e").length ? (e.lastChild.className = "e", 2 === e.getElementsByClassName("e").length) : !1 1549 1678 }), T.getByName = at(function(e) { 1550 e.id = x + 0, e.innerHTML = "<a name='" + x + "'></a><div name='" + x + "'></div>", f.insertBefore(e, f.firstChild); 1679 e.id = x + 0, 1680 e.innerHTML = "<a name='" + x + "'></a><div name='" + x + "'></div>", 1681 f.insertBefore(e, f.firstChild); 1551 1682 var t = n.getElementsByName && n.getElementsByName(x).length === 2 + n.getElementsByName(x + 0).length; 1552 1683 return T.getIdNotName = !n.getElementById(x), f.removeChild(e), t … … 1599 1730 return typeof n.getElementsByClassName === A || d ? t : n.getElementsByClassName(e) 1600 1731 }, g = [], h = [":focus"], (T.qsa = rt(n.querySelectorAll)) && (at(function(e) { 1601 e.innerHTML = "<select><option selected=''></option></select>", e.querySelectorAll("[selected]").length || h.push("\\[" + _ + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)"), e.querySelectorAll(":checked").length || h.push(":checked") 1732 e.innerHTML = "<select><option selected=''></option></select>", 1733 e.querySelectorAll("[selected]").length || h.push("\\[" + _ + "*(?:checked|disabled|ismap|multiple|readonly|selected|value)"), 1734 e.querySelectorAll(":checked").length || h.push(":checked") 1602 1735 }), at(function(e) { 1603 e.innerHTML = "<input type='hidden' i=''/>", e.querySelectorAll("[i^='']").length && h.push("[*^$]=" + _ + "*(?:\"\"|'')"), e.querySelectorAll(":enabled").length || h.push(":enabled", ":disabled"), e.querySelectorAll("*,:x"), h.push(",.*:") 1736 e.innerHTML = "<input type='hidden' i=''/>", 1737 e.querySelectorAll("[i^='']").length && h.push("[*^$]=" + _ + "*(?:\"\"|'')"), 1738 e.querySelectorAll(":enabled").length || h.push(":enabled", ":disabled"), 1739 e.querySelectorAll("*,:x"), 1740 h.push(",.*:") 1604 1741 })), (T.matchesSelector = rt(m = f.matchesSelector || f.mozMatchesSelector || f.webkitMatchesSelector || f.oMatchesSelector || f.msMatchesSelector)) && at(function(e) { 1605 T.disconnectedMatch = m.call(e, "div"), m.call(e, "[s!='']:x"), g.push("!=", R) 1742 T.disconnectedMatch = m.call(e, "div"), 1743 m.call(e, "[s!='']:x"), 1744 g.push("!=", R) 1606 1745 }), h = RegExp(h.join("|")), g = RegExp(g.join("|")), y = rt(f.contains) || f.compareDocumentPosition ? function(e, t) { 1607 1746 var n = 9 === e.nodeType ? e.documentElement : e, … … 1640 1779 return i ? ut(s[i], l[i]) : s[i] === w ? -1 : l[i] === w ? 1 : 0 1641 1780 }, u = !1, [0, 0].sort(v), T.detectDuplicates = u, p) : p 1642 }, st.matches = function(e, t) { 1781 }, 1782 st.matches = function(e, t) { 1643 1783 return st(e, null, null, t) 1644 }, st.matchesSelector = function(e, t) { 1784 }, 1785 st.matchesSelector = function(e, t) { 1645 1786 if ((e.ownerDocument || e) !== p && c(e), t = t.replace(Z, "='$1']"), !(!T.matchesSelector || d || g && g.test(t) || h.test(t))) 1646 1787 try { … … 1650 1791 } catch (r) {} 1651 1792 return st(t, p, null, [e]).length > 0 1652 }, st.contains = function(e, t) { 1793 }, 1794 st.contains = function(e, t) { 1653 1795 return (e.ownerDocument || e) !== p && c(e), y(e, t) 1654 }, st.attr = function(e, t) { 1796 }, 1797 st.attr = function(e, t) { 1655 1798 var n; 1656 1799 return (e.ownerDocument || e) !== p && c(e), d || (t = t.toLowerCase()), (n = i.attrHandle[t]) ? n(e) : d || T.attributes ? e.getAttribute(t) : ((n = e.getAttributeNode(t)) || e.getAttribute(t)) && e[t] === !0 ? t : n && n.specified ? n.value : null 1657 }, st.error = function(e) { 1800 }, 1801 st.error = function(e) { 1658 1802 throw Error("Syntax error, unrecognized expression: " + e) 1659 }, st.uniqueSort = function(e) { 1803 }, 1804 st.uniqueSort = function(e) { 1660 1805 var t, 1661 1806 n = [], … … 1721 1866 n += o(t); 1722 1867 return n 1723 }, i = st.selectors = { 1868 }, 1869 i = st.selectors = { 1724 1870 cacheLength: 50, 1725 1871 createPseudo: ot, … … 1804 1950 } 1805 1951 if (h = [a ? m.firstChild : m.lastChild], a && v) { 1806 c = m[x] || (m[x] = {}), l = c[e] || [], d = l[0] === N && l[1], f = l[0] === N && l[2], p = d && m.childNodes[d]; 1952 c = m[x] || (m[x] = {}), 1953 l = c[e] || [], 1954 d = l[0] === N && l[1], 1955 f = l[0] === N && l[2], 1956 p = d && m.childNodes[d]; 1807 1957 while (p = ++d && p && p[g] || (f = d = 0) || h.pop()) 1808 1958 if (1 === p.nodeType && ++f && p === t) { … … 1828 1978 a = o.length; 1829 1979 while (a--) 1830 i = M.call(e, o[a]), e[i] = !(n[i] = o[a]) 1980 i = M.call(e, o[a]), 1981 e[i] = !(n[i] = o[a]) 1831 1982 }) : function(e) { 1832 1983 return r(e, 0, n) … … 1973 2124 if (c) 1974 2125 return t ? 0 : c.slice(0); 1975 s = e, u = [], l = i.preFilter; 2126 s = e, 2127 u = [], 2128 l = i.preFilter; 1976 2129 while (s) { 1977 (!n || (r = $.exec(s))) && (r && (s = s.slice(r[0].length) || s), u.push(o = [])), n = !1, (r = I.exec(s)) && (n = r.shift(), o.push({ 2130 (!n || (r = $.exec(s))) && (r && (s = s.slice(r[0].length) || s), u.push(o = [])), 2131 n = !1, 2132 (r = I.exec(s)) && (n = r.shift(), o.push({ 1978 2133 value: n, 1979 2134 type: r[0].replace(W, " ") … … 2056 2211 y = n ? i || (o ? e : h || r) ? [] : a : m; 2057 2212 if (n && n(m, y, s, u), r) { 2058 l = mt(y, d), r(l, [], s, u), c = l.length; 2213 l = mt(y, d), 2214 r(l, [], s, u), 2215 c = l.length; 2059 2216 while (c--) 2060 2217 (p = l[c]) && (y[d[c]] = !(m[d[c]] = p)) … … 2063 2220 if (i || e) { 2064 2221 if (i) { 2065 l = [], c = y.length; 2222 l = [], 2223 c = y.length; 2066 2224 while (c--) 2067 2225 (p = y[c]) && l.push(m[c] = p); … … 2073 2231 } 2074 2232 } else 2075 y = mt(y === a ? y.splice(h, y.length) : y), i ? i(null, a, y, u) : H.apply(a, y) 2233 y = mt(y === a ? y.splice(h, y.length) : y), 2234 i ? i(null, a, y, u) : H.apply(a, y) 2076 2235 }) 2077 2236 } … … 2145 2304 y = mt(y) 2146 2305 } 2147 H.apply(f, y), w && !s && y.length > 0 && v + t.length > 1 && st.uniqueSort(f) 2306 H.apply(f, y), 2307 w && !s && y.length > 0 && v + t.length > 1 && st.uniqueSort(f) 2148 2308 } 2149 2309 return w && (N = k, l = T), x … … 2157 2317 o = S[e + " "]; 2158 2318 if (!o) { 2159 t || (t = ft(e)), n = t.length; 2319 t || (t = ft(e)), 2320 n = t.length; 2160 2321 while (n--) 2161 o = vt(t[n]), o[x] ? r.push(o) : i.push(o); 2322 o = vt(t[n]), 2323 o[x] ? r.push(o) : i.push(o); 2162 2324 o = S(e, bt(i, r)) 2163 2325 } … … 2199 2361 i.pseudos.nth = i.pseudos.eq; 2200 2362 function Tt() {} 2201 i.filters = Tt.prototype = i.pseudos, i.setFilters = new Tt, c(), st.attr = b.attr, b.find = st, b.expr = st.selectors, b.expr[":"] = b.expr.pseudos, b.unique = st.uniqueSort, b.text = st.getText, b.isXMLDoc = st.isXML, b.contains = st.contains 2363 i.filters = Tt.prototype = i.pseudos, 2364 i.setFilters = new Tt, 2365 c(), 2366 st.attr = b.attr, 2367 b.find = st, 2368 b.expr = st.selectors, 2369 b.expr[":"] = b.expr.pseudos, 2370 b.unique = st.uniqueSort, 2371 b.text = st.getText, 2372 b.isXMLDoc = st.isXML, 2373 b.contains = st.contains 2202 2374 }(e); 2203 2375 var at = /Until$/, … … 2275 2447 return this.add(null == e ? this.prevObject : this.prevObject.filter(e)) 2276 2448 } 2277 }), b.fn.andSelf = b.fn.addBack; 2449 }), 2450 b.fn.andSelf = b.fn.addBack; 2278 2451 function pt(e, t) { 2279 2452 do e = e[t]; … … 2324 2497 return at.test(e) || (r = n), r && "string" == typeof r && (i = b.filter(r, i)), i = this.length > 1 && !ct[e] ? b.unique(i) : i, this.length > 1 && st.test(e) && (i = i.reverse()), this.pushStack(i) 2325 2498 } 2326 }), b.extend({ 2499 }), 2500 b.extend({ 2327 2501 filter: function(e, t, n) { 2328 2502 return n && (e = ":not(" + e + ")"), 1 === t.length ? b.find.matchesSelector(t[0], e) ? [t[0]] : [] : b.find.matches(e, t) … … 2332 2506 o = e[n]; 2333 2507 while (o && 9 !== o.nodeType && (r === t || 1 !== o.nodeType || !b(o).is(r))) 2334 1 === o.nodeType && i.push(o), o = o[n]; 2508 1 === o.nodeType && i.push(o), 2509 o = o[n]; 2335 2510 return i 2336 2511 }, … … 2399 2574 jt = dt(o), 2400 2575 Dt = jt.appendChild(o.createElement("div")); 2401 At.optgroup = At.option, At.tbody = At.tfoot = At.colgroup = At.caption = At.thead, At.th = At.td, b.fn.extend({ 2576 At.optgroup = At.option, 2577 At.tbody = At.tfoot = At.colgroup = At.caption = At.thead, 2578 At.th = At.td, 2579 b.fn.extend({ 2402 2580 text: function(e) { 2403 2581 return b.access(this, function(e) { … … 2412 2590 if (this[0]) { 2413 2591 var t = b(e, this[0].ownerDocument).eq(0).clone(!0); 2414 this[0].parentNode && t.insertBefore(this[0]), t.map(function() { 2592 this[0].parentNode && t.insertBefore(this[0]), 2593 t.map(function() { 2415 2594 var e = this; 2416 2595 while (e.firstChild && 1 === e.firstChild.nodeType) … … 2495 2674 try { 2496 2675 for (; i > r; r++) 2497 n = this[r] || {}, 1 === n.nodeType && (b.cleanData(Ot(n, !1)), n.innerHTML = e); 2676 n = this[r] || {}, 2677 1 === n.nodeType && (b.cleanData(Ot(n, !1)), n.innerHTML = e); 2498 2678 n = 0 2499 2679 } catch (o) {} … … 2530 2710 return this.each(function(i) { 2531 2711 var o = d.eq(i); 2532 m && (e[0] = g.call(this, i, n ? o.html() : t)), o.domManip(e, n, r) 2712 m && (e[0] = g.call(this, i, n ? o.html() : t)), 2713 o.domManip(e, n, r) 2533 2714 }); 2534 2715 if (p && (l = b.buildFragment(e, this[0].ownerDocument, !1, this), i = l.firstChild, 1 === l.childNodes.length && (l = i), i)) { 2535 2716 for (n = n && b.nodeName(i, "tr"), s = b.map(Ot(l, "script"), Ht), a = s.length; p > c; c++) 2536 o = l, c !== h && (o = b.clone(o, !0, !0), a && b.merge(s, Ot(o, "script"))), r.call(n && b.nodeName(this[c], "table") ? Lt(this[c], "tbody") : this[c], o, c); 2717 o = l, 2718 c !== h && (o = b.clone(o, !0, !0), a && b.merge(s, Ot(o, "script"))), 2719 r.call(n && b.nodeName(this[c], "table") ? Lt(this[c], "tbody") : this[c], o, c); 2537 2720 if (a) 2538 2721 for (u = s[s.length - 1].ownerDocument, b.map(s, qt), c = 0; a > c; c++) 2539 o = s[c], kt.test(o.type || "") && !b._data(o, "globalEval") && b.contains(u, o) && (o.src ? b.ajax({ 2722 o = s[c], 2723 kt.test(o.type || "") && !b._data(o, "globalEval") && b.contains(u, o) && (o.src ? b.ajax({ 2540 2724 url: o.src, 2541 2725 type: "GET", … … 2576 2760 s = o.events; 2577 2761 if (s) { 2578 delete a.handle, a.events = {}; 2762 delete a.handle, 2763 a.events = {}; 2579 2764 for (n in s) 2580 2765 for (r = 0, i = s[n].length; i > r; r++) … … 2612 2797 a = o.length - 1; 2613 2798 for (; a >= r; r++) 2614 n = r === a ? this : this.clone(!0), b(o[r])[t](n), d.apply(i, n.get()); 2799 n = r === a ? this : this.clone(!0), 2800 b(o[r])[t](n), 2801 d.apply(i, n.get()); 2615 2802 return this.pushStack(i) 2616 2803 } … … 2665 2852 b.merge(d, o.nodeType ? [o] : o); 2666 2853 else if (wt.test(o)) { 2667 s = s || f.appendChild(t.createElement("div")), u = (bt.exec(o) || ["", ""])[1].toLowerCase(), c = At[u] || At._default, s.innerHTML = c[1] + o.replace(vt, "<$1></$2>") + c[2], i = c[0]; 2854 s = s || f.appendChild(t.createElement("div")), 2855 u = (bt.exec(o) || ["", ""])[1].toLowerCase(), 2856 c = At[u] || At._default, 2857 s.innerHTML = c[1] + o.replace(vt, "<$1></$2>") + c[2], 2858 i = c[0]; 2668 2859 while (i--) 2669 2860 s = s.lastChild; 2670 2861 if (!b.support.leadingWhitespace && yt.test(o) && d.push(t.createTextNode(yt.exec(o)[0])), !b.support.tbody) { 2671 o = "table" !== u || xt.test(o) ? "<table>" !== c[1] || xt.test(o) ? 0 : s : s.firstChild, i = o && o.childNodes.length; 2862 o = "table" !== u || xt.test(o) ? "<table>" !== c[1] || xt.test(o) ? 0 : s : s.firstChild, 2863 i = o && o.childNodes.length; 2672 2864 while (i--) 2673 2865 b.nodeName(l = o.childNodes[i], "tbody") && !l.childNodes.length && o.removeChild(l) 2674 2866 } 2675 b.merge(d, s.childNodes), s.textContent = ""; 2867 b.merge(d, s.childNodes), 2868 s.textContent = ""; 2676 2869 while (s.firstChild) 2677 2870 s.removeChild(s.firstChild); … … 2679 2872 } else 2680 2873 d.push(t.createTextNode(o)); 2681 s && f.removeChild(s), b.support.appendChecked || b.grep(Ot(d, "input"), Bt), h = 0; 2874 s && f.removeChild(s), 2875 b.support.appendChecked || b.grep(Ot(d, "input"), Bt), 2876 h = 0; 2682 2877 while (o = d[h++]) 2683 2878 if ((!r || -1 === b.inArray(o, r)) && (a = b.contains(o.ownerDocument, o), s = Ot(f.appendChild(o), "script"), a && Mt(s), n)) { … … 2754 2949 s = e.length; 2755 2950 for (; s > a; a++) 2756 r = e[a], r.style && (o[a] = b._data(r, "olddisplay"), n = r.style.display, t ? (o[a] || "none" !== n || (r.style.display = ""), "" === r.style.display && nn(r) && (o[a] = b._data(r, "olddisplay", un(r.nodeName)))) : o[a] || (i = nn(r), (n && "none" !== n || !i) && b._data(r, "olddisplay", i ? n : b.css(r, "display")))); 2951 r = e[a], 2952 r.style && (o[a] = b._data(r, "olddisplay"), n = r.style.display, t ? (o[a] || "none" !== n || (r.style.display = ""), "" === r.style.display && nn(r) && (o[a] = b._data(r, "olddisplay", un(r.nodeName)))) : o[a] || (i = nn(r), (n && "none" !== n || !i) && b._data(r, "olddisplay", i ? n : b.css(r, "display")))); 2757 2953 for (a = 0; s > a; a++) 2758 r = e[a], r.style && (t && "none" !== r.style.display && "" !== r.style.display || (r.style.display = t ? o[a] || "" : "none")); 2954 r = e[a], 2955 r.style && (t && "none" !== r.style.display && "" !== r.style.display || (r.style.display = t ? o[a] || "" : "none")); 2759 2956 return e 2760 2957 } … … 2786 2983 }) 2787 2984 } 2788 }), b.extend({ 2985 }), 2986 b.extend({ 2789 2987 cssHooks: { 2790 2988 opacity: { … … 2838 3036 a = {}; 2839 3037 for (o in t) 2840 a[o] = e.style[o], e.style[o] = t[o]; 3038 a[o] = e.style[o], 3039 e.style[o] = t[o]; 2841 3040 i = n.apply(e, r || []); 2842 3041 for (o in t) … … 2844 3043 return i 2845 3044 } 2846 }), e.getComputedStyle ? (Rt = function(t) { 3045 }), 3046 e.getComputedStyle ? (Rt = function(t) { 2847 3047 return e.getComputedStyle(t, null) 2848 3048 }, Wt = function(e, n, r) { … … 2873 3073 a = 0; 2874 3074 for (; 4 > o; o += 2) 2875 "margin" === n && (a += b.css(e, n + Zt[o], !0, i)), r ? ("content" === n && (a -= b.css(e, "padding" + Zt[o], !0, i)), "margin" !== n && (a -= b.css(e, "border" + Zt[o] + "Width", !0, i))) : (a += b.css(e, "padding" + Zt[o], !0, i), "padding" !== n && (a += b.css(e, "border" + Zt[o] + "Width", !0, i))); 3075 "margin" === n && (a += b.css(e, n + Zt[o], !0, i)), 3076 r ? ("content" === n && (a -= b.css(e, "padding" + Zt[o], !0, i)), "margin" !== n && (a -= b.css(e, "border" + Zt[o] + "Width", !0, i))) : (a += b.css(e, "padding" + Zt[o], !0, i), "padding" !== n && (a += b.css(e, "border" + Zt[o] + "Width", !0, i))); 2876 3077 return a 2877 3078 } … … 2884 3085 if (i = Wt(e, t, o), (0 > i || null == i) && (i = e.style[t]), Yt.test(i)) 2885 3086 return i; 2886 r = a && (b.support.boxSizingReliable || i === e.style[t]), i = parseFloat(i) || 0 3087 r = a && (b.support.boxSizingReliable || i === e.style[t]), 3088 i = parseFloat(i) || 0 2887 3089 } 2888 3090 return i + an(e, t, n || (a ? "border" : "content"), r, o) + "px" … … 2910 3112 } 2911 3113 } 2912 }), b.support.opacity || (b.cssHooks.opacity = { 3114 }), 3115 b.support.opacity || (b.cssHooks.opacity = { 2913 3116 get: function(e, t) { 2914 3117 return It.test((t && e.currentStyle ? e.currentStyle.filter : e.style.filter) || "") ? .01 * parseFloat(RegExp.$1) + "" : t ? "1" : "" … … 2919 3122 i = b.isNumeric(t) ? "alpha(opacity=" + 100 * t + ")" : "", 2920 3123 o = r && r.filter || n.filter || ""; 2921 n.zoom = 1, (t >= 1 || "" === t) && "" === b.trim(o.replace($t, "")) && n.removeAttribute && (n.removeAttribute("filter"), "" === t || r && !r.filter) || (n.filter = $t.test(o) ? o.replace($t, i) : o + " " + i) 2922 } 2923 }), b(function() { 3124 n.zoom = 1, 3125 (t >= 1 || "" === t) && "" === b.trim(o.replace($t, "")) && n.removeAttribute && (n.removeAttribute("filter"), "" === t || r && !r.filter) || (n.filter = $t.test(o) ? o.replace($t, i) : o + " " + i) 3126 } 3127 }), 3128 b(function() { 2924 3129 b.support.reliableMarginRight || (b.cssHooks.marginRight = { 2925 3130 get: function(e, n) { … … 2928 3133 }, Wt, [e, "marginRight"]) : t 2929 3134 } 2930 }), !b.support.pixelPosition && b.fn.position && b.each(["top", "left"], function(e, n) { 3135 }), 3136 !b.support.pixelPosition && b.fn.position && b.each(["top", "left"], function(e, n) { 2931 3137 b.cssHooks[n] = { 2932 3138 get: function(e, r) { … … 2935 3141 } 2936 3142 }) 2937 }), b.expr && b.expr.filters && (b.expr.filters.hidden = function(e) { 3143 }), 3144 b.expr && b.expr.filters && (b.expr.filters.hidden = function(e) { 2938 3145 return 0 >= e.offsetWidth && 0 >= e.offsetHeight || !b.support.reliableHiddenOffsets && "none" === (e.style && e.style.display || b.css(e, "display")) 2939 3146 }, b.expr.filters.visible = function(e) { 2940 3147 return !b.expr.filters.hidden(e) 2941 }), b.each({ 3148 }), 3149 b.each({ 2942 3150 margin: "", 2943 3151 padding: "", … … 2953 3161 return i 2954 3162 } 2955 }, Ut.test(e) || (b.cssHooks[e + t].set = on) 3163 }, 3164 Ut.test(e) || (b.cssHooks[e + t].set = on) 2956 3165 }); 2957 3166 var cn = /%20/g, … … 2984 3193 }).get() 2985 3194 } 2986 }), b.param = function(e, n) { 3195 }), 3196 b.param = function(e, n) { 2987 3197 var r, 2988 3198 i = [], 2989 3199 o = function(e, t) { 2990 t = b.isFunction(t) ? t() : null == t ? "" : t, i[i.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t) 3200 t = b.isFunction(t) ? t() : null == t ? "" : t, 3201 i[i.length] = encodeURIComponent(e) + "=" + encodeURIComponent(t) 2991 3202 }; 2992 3203 if (n === t && (n = b.ajaxSettings && b.ajaxSettings.traditional), b.isArray(e) || e.jquery && !b.isPlainObject(e)) … … 3015 3226 return arguments.length > 0 ? this.on(t, null, e, n) : this.trigger(t) 3016 3227 } 3017 }), b.fn.hover = function(e, t) { 3228 }), 3229 b.fn.hover = function(e, t) { 3018 3230 return this.mouseenter(e).mouseleave(t || e) 3019 3231 }; … … 3036 3248 yn = a.href 3037 3249 } catch (Ln) { 3038 yn = o.createElement("a"), yn.href = "", yn = yn.href 3250 yn = o.createElement("a"), 3251 yn.href = "", 3252 yn = yn.href 3039 3253 } 3040 3254 mn = En.exec(yn.toLowerCase()) || []; … … 3084 3298 data: n 3085 3299 }).done(function(e) { 3086 o = arguments, s.html(i ? b("<div>").append(b.parseHTML(e)).find(i) : e) 3300 o = arguments, 3301 s.html(i ? b("<div>").append(b.parseHTML(e)).find(i) : e) 3087 3302 }).complete(r && function(e, t) { 3088 3303 s.each(r, o || [e.responseText, t, e]) 3089 3304 }), this 3090 }, b.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) { 3305 }, 3306 b.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function(e, t) { 3091 3307 b.fn[t] = function(e) { 3092 3308 return this.on(t, e) 3093 3309 } 3094 }), b.each(["get", "post"], function(e, n) { 3310 }), 3311 b.each(["get", "post"], function(e, n) { 3095 3312 b[n] = function(e, r, i, o) { 3096 3313 return b.isFunction(r) && (o = o || i, i = r, r = t), b.ajax({ … … 3102 3319 }) 3103 3320 } 3104 }), b.extend({ 3321 }), 3322 b.extend({ 3105 3323 active: 0, 3106 3324 lastModified: {}, … … 3147 3365 ajaxTransport: Hn(jn), 3148 3366 ajax: function(e, n) { 3149 "object" == typeof e && (n = e, e = t), n = n || {}; 3367 "object" == typeof e && (n = e, e = t), 3368 n = n || {}; 3150 3369 var r, 3151 3370 i, … … 3207 3426 if (h.promise(N).complete = g.add, N.success = N.done, N.error = N.fail, p.url = ((e || p.url || yn) + "").replace(xn, "").replace(kn, mn[1] + "//"), p.type = n.method || n.type || p.method || p.type, p.dataTypes = b.trim(p.dataType || "*").toLowerCase().match(w) || [""], null == p.crossDomain && (r = En.exec(p.url.toLowerCase()), p.crossDomain = !(!r || r[1] === mn[1] && r[2] === mn[2] && (r[3] || ("http:" === r[1] ? 80 : 443)) == (mn[3] || ("http:" === mn[1] ? 80 : 443)))), p.data && p.processData && "string" != typeof p.data && (p.data = b.param(p.data, p.traditional)), qn(An, p, n, N), 2 === x) 3208 3427 return N; 3209 u = p.global, u && 0 === b.active++ && b.event.trigger("ajaxStart"), p.type = p.type.toUpperCase(), p.hasContent = !Cn.test(p.type), o = p.url, p.hasContent || (p.data && (o = p.url += (bn.test(o) ? "&" : "?") + p.data, delete p.data), p.cache === !1 && (p.url = wn.test(o) ? o.replace(wn, "$1_=" + vn++) : o + (bn.test(o) ? "&" : "?") + "_=" + vn++)), p.ifModified && (b.lastModified[o] && N.setRequestHeader("If-Modified-Since", b.lastModified[o]), b.etag[o] && N.setRequestHeader("If-None-Match", b.etag[o])), (p.data && p.hasContent && p.contentType !== !1 || n.contentType) && N.setRequestHeader("Content-Type", p.contentType), N.setRequestHeader("Accept", p.dataTypes[0] && p.accepts[p.dataTypes[0]] ? p.accepts[p.dataTypes[0]] + ("*" !== p.dataTypes[0] ? ", " + Dn + "; q=0.01" : "") : p.accepts["*"]); 3428 u = p.global, 3429 u && 0 === b.active++ && b.event.trigger("ajaxStart"), 3430 p.type = p.type.toUpperCase(), 3431 p.hasContent = !Cn.test(p.type), 3432 o = p.url, 3433 p.hasContent || (p.data && (o = p.url += (bn.test(o) ? "&" : "?") + p.data, delete p.data), p.cache === !1 && (p.url = wn.test(o) ? o.replace(wn, "$1_=" + vn++) : o + (bn.test(o) ? "&" : "?") + "_=" + vn++)), 3434 p.ifModified && (b.lastModified[o] && N.setRequestHeader("If-Modified-Since", b.lastModified[o]), b.etag[o] && N.setRequestHeader("If-None-Match", b.etag[o])), 3435 (p.data && p.hasContent && p.contentType !== !1 || n.contentType) && N.setRequestHeader("Content-Type", p.contentType), 3436 N.setRequestHeader("Accept", p.dataTypes[0] && p.accepts[p.dataTypes[0]] ? p.accepts[p.dataTypes[0]] + ("*" !== p.dataTypes[0] ? ", " + Dn + "; q=0.01" : "") : p.accepts["*"]); 3210 3437 for (i in p.headers) 3211 3438 N.setRequestHeader(i, p.headers[i]); … … 3220 3447 N[i](p[i]); 3221 3448 if (l = qn(jn, p, n, N)) { 3222 N.readyState = 1, u && d.trigger("ajaxSend", [N, p]), p.async && p.timeout > 0 && (s = setTimeout(function() { 3449 N.readyState = 1, 3450 u && d.trigger("ajaxSend", [N, p]), 3451 p.async && p.timeout > 0 && (s = setTimeout(function() { 3223 3452 N.abort("timeout") 3224 3453 }, p.timeout)); 3225 3454 try { 3226 x = 1, l.send(y, k) 3455 x = 1, 3456 l.send(y, k) 3227 3457 } catch (C) { 3228 3458 if (!(2 > x)) … … 3261 3491 s in r && (n[c[s]] = r[s]); 3262 3492 while ("*" === l[0]) 3263 l.shift(), o === t && (o = e.mimeType || n.getResponseHeader("Content-Type")); 3493 l.shift(), 3494 o === t && (o = e.mimeType || n.getResponseHeader("Content-Type")); 3264 3495 if (o) 3265 3496 for (s in u) … … 3335 3566 } 3336 3567 } 3337 }), b.ajaxPrefilter("script", function(e) { 3338 e.cache === t && (e.cache = !1), e.crossDomain && (e.type = "GET", e.global = !1) 3339 }), b.ajaxTransport("script", function(e) { 3568 }), 3569 b.ajaxPrefilter("script", function(e) { 3570 e.cache === t && (e.cache = !1), 3571 e.crossDomain && (e.type = "GET", e.global = !1) 3572 }), 3573 b.ajaxTransport("script", function(e) { 3340 3574 if (e.crossDomain) { 3341 3575 var n, … … 3343 3577 return { 3344 3578 send: function(t, i) { 3345 n = o.createElement("script"), n.async = !0, e.scriptCharset && (n.charset = e.scriptCharset), n.src = e.url, n.onload = n.onreadystatechange = function(e, t) { 3579 n = o.createElement("script"), 3580 n.async = !0, 3581 e.scriptCharset && (n.charset = e.scriptCharset), 3582 n.src = e.url, 3583 n.onload = n.onreadystatechange = function(e, t) { 3346 3584 (t || !n.readyState || /loaded|complete/.test(n.readyState)) && (n.onload = n.onreadystatechange = null, n.parentNode && n.parentNode.removeChild(n), n = null, t || i(200, "success")) 3347 }, r.insertBefore(n, r.firstChild) 3585 }, 3586 r.insertBefore(n, r.firstChild) 3348 3587 }, 3349 3588 abort: function() { … … 3361 3600 return this[e] = !0, e 3362 3601 } 3363 }), b.ajaxPrefilter("json jsonp", function(n, r, i) { 3602 }), 3603 b.ajaxPrefilter("json jsonp", function(n, r, i) { 3364 3604 var o, 3365 3605 a, … … 3371 3611 s = arguments 3372 3612 }, i.always(function() { 3373 e[o] = a, n[o] && (n.jsonpCallback = r.jsonpCallback, On.push(o)), s && b.isFunction(a) && a(s[0]), s = a = t 3613 e[o] = a, 3614 n[o] && (n.jsonpCallback = r.jsonpCallback, On.push(o)), 3615 s && b.isFunction(a) && a(s[0]), 3616 s = a = t 3374 3617 }), "script") : t 3375 3618 }); … … 3394 3637 b.ajaxSettings.xhr = e.ActiveXObject ? function() { 3395 3638 return !this.isLocal && In() || zn() 3396 } : In, Rn = b.ajaxSettings.xhr(), b.support.cors = !!Rn && "withCredentials" in Rn, Rn = b.support.ajax = !!Rn, Rn && b.ajaxTransport(function(n) { 3639 } : In, 3640 Rn = b.ajaxSettings.xhr(), 3641 b.support.cors = !!Rn && "withCredentials" in Rn, 3642 Rn = b.support.ajax = !!Rn, 3643 Rn && b.ajaxTransport(function(n) { 3397 3644 if (!n.crossDomain || b.support.cors) { 3398 3645 var r; … … 3405 3652 for (s in n.xhrFields) 3406 3653 u[s] = n.xhrFields[s]; 3407 n.mimeType && u.overrideMimeType && u.overrideMimeType(n.mimeType), n.crossDomain || i["X-Requested-With"] || (i["X-Requested-With"] = "XMLHttpRequest"); 3654 n.mimeType && u.overrideMimeType && u.overrideMimeType(n.mimeType), 3655 n.crossDomain || i["X-Requested-With"] || (i["X-Requested-With"] = "XMLHttpRequest"); 3408 3656 try { 3409 3657 for (s in i) 3410 3658 u.setRequestHeader(s, i[s]) 3411 3659 } catch (l) {} 3412 u.send(n.hasContent && n.data || null), r = function(e, i) { 3660 u.send(n.hasContent && n.data || null), 3661 r = function(e, i) { 3413 3662 var s, 3414 3663 l, … … 3420 3669 4 !== u.readyState && u.abort(); 3421 3670 else { 3422 p = {}, s = u.status, l = u.getAllResponseHeaders(), "string" == typeof u.responseText && (p.text = u.responseText); 3671 p = {}, 3672 s = u.status, 3673 l = u.getAllResponseHeaders(), 3674 "string" == typeof u.responseText && (p.text = u.responseText); 3423 3675 try { 3424 3676 c = u.statusText … … 3432 3684 } 3433 3685 p && o(s, c, p, l) 3434 }, n.async ? 4 === u.readyState ? setTimeout(r) : (a = ++Wn, $n && (Pn || (Pn = {}, b(e).unload($n)), Pn[a] = r), u.onreadystatechange = r) : r() 3686 }, 3687 n.async ? 4 === u.readyState ? setTimeout(r) : (a = ++Wn, $n && (Pn || (Pn = {}, b(e).unload($n)), Pn[a] = r), u.onreadystatechange = r) : r() 3435 3688 }, 3436 3689 abort: function() { … … 3459 3712 if (n = +o[2], r = o[3] || (b.cssNumber[e] ? "" : "px"), "px" !== r && s) { 3460 3713 s = b.css(i.elem, e, !0) || n || 1; 3461 do u = u || ".5", s /= u, b.style(i.elem, e, s + r); 3714 do u = u || ".5", 3715 s /= u, 3716 b.style(i.elem, e, s + r); 3462 3717 while (u !== (u = i.cur() / a) && 1 !== u && --l) 3463 3718 } 3464 i.unit = r, i.start = s, i.end = o[1] ? s + (o[1] + 1) * n : n 3719 i.unit = r, 3720 i.start = s, 3721 i.end = o[1] ? s + (o[1] + 1) * n : n 3465 3722 } 3466 3723 return i … … 3546 3803 for (i in e) 3547 3804 if (r = b.camelCase(i), o = t[r], n = e[i], b.isArray(n) && (o = n[1], n = e[i] = n[0]), i !== r && (e[r] = n, delete e[i]), a = b.cssHooks[r], a && "expand" in a) { 3548 n = a.expand(n), delete e[r]; 3805 n = a.expand(n), 3806 delete e[r]; 3549 3807 for (i in n) 3550 3808 i in e || (e[i] = n[i], t[i] = o) … … 3559 3817 i = e.length; 3560 3818 for (; i > r; r++) 3561 n = e[r], Qn[n] = Qn[n] || [], Qn[n].unshift(t) 3819 n = e[r], 3820 Qn[n] = Qn[n] || [], 3821 Qn[n].unshift(t) 3562 3822 }, 3563 3823 prefilter: function(e, t) { … … 3584 3844 }), c.unqueued++, f.always(function() { 3585 3845 f.always(function() { 3586 c.unqueued--, b.queue(e, "fx").length || c.empty.fire() 3846 c.unqueued--, 3847 b.queue(e, "fx").length || c.empty.fire() 3587 3848 }) 3588 })), 1 === e.nodeType && ("height" in t || "width" in t) && (n.overflow = [d.overflow, d.overflowX, d.overflowY], "inline" === b.css(e, "display") && "none" === b.css(e, "float") && (b.support.inlineBlockNeedsLayout && "inline" !== un(e.nodeName) ? d.zoom = 1 : d.display = "inline-block")), n.overflow && (d.overflow = "hidden", b.support.shrinkWrapBlocks || f.always(function() { 3589 d.overflow = n.overflow[0], d.overflowX = n.overflow[1], d.overflowY = n.overflow[2] 3849 })), 3850 1 === e.nodeType && ("height" in t || "width" in t) && (n.overflow = [d.overflow, d.overflowX, d.overflowY], "inline" === b.css(e, "display") && "none" === b.css(e, "float") && (b.support.inlineBlockNeedsLayout && "inline" !== un(e.nodeName) ? d.zoom = 1 : d.display = "inline-block")), 3851 n.overflow && (d.overflow = "hidden", b.support.shrinkWrapBlocks || f.always(function() { 3852 d.overflow = n.overflow[0], 3853 d.overflowX = n.overflow[1], 3854 d.overflowY = n.overflow[2] 3590 3855 })); 3591 3856 for (i in t) … … 3596 3861 } 3597 3862 if (o = g.length) { 3598 s = b._data(e, "fxshow") || b._data(e, "fxshow", {}), "hidden" in s && (m = s.hidden), u && (s.hidden = !m), m ? b(e).show() : f.done(function() { 3863 s = b._data(e, "fxshow") || b._data(e, "fxshow", {}), 3864 "hidden" in s && (m = s.hidden), 3865 u && (s.hidden = !m), 3866 m ? b(e).show() : f.done(function() { 3599 3867 b(e).hide() 3600 }), f.done(function() { 3868 }), 3869 f.done(function() { 3601 3870 var t; 3602 3871 b._removeData(e, "fxshow"); … … 3605 3874 }); 3606 3875 for (i = 0; o > i; i++) 3607 r = g[i], l = f.createTween(r, m ? s[r] : 0), h[r] = s[r] || b.style(e, r), r in s || (s[r] = l.start, m && (l.end = l.start, l.start = "width" === r || "height" === r ? 1 : 0)) 3876 r = g[i], 3877 l = f.createTween(r, m ? s[r] : 0), 3878 h[r] = s[r] || b.style(e, r), 3879 r in s || (s[r] = l.start, m && (l.end = l.start, l.start = "width" === r || "height" === r ? 1 : 0)) 3608 3880 } 3609 3881 } … … 3611 3883 return new rr.prototype.init(e, t, n, r, i) 3612 3884 } 3613 b.Tween = rr, rr.prototype = { 3885 b.Tween = rr, 3886 rr.prototype = { 3614 3887 constructor: rr, 3615 3888 init: function(e, t, n, r, i, o) { 3616 this.elem = e, this.prop = n, this.easing = i || "swing", this.options = t, this.start = this.now = this.cur(), this.end = r, this.unit = o || (b.cssNumber[n] ? "" : "px") 3889 this.elem = e, 3890 this.prop = n, 3891 this.easing = i || "swing", 3892 this.options = t, 3893 this.start = this.now = this.cur(), 3894 this.end = r, 3895 this.unit = o || (b.cssNumber[n] ? "" : "px") 3617 3896 }, 3618 3897 cur: function() { … … 3625 3904 return this.pos = t = this.options.duration ? b.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : e, this.now = (this.end - this.start) * t + this.start, this.options.step && this.options.step.call(this.elem, this.now, this), n && n.set ? n.set(this) : rr.propHooks._default.set(this), this 3626 3905 } 3627 }, rr.prototype.init.prototype = rr.prototype, rr.propHooks = { 3906 }, 3907 rr.prototype.init.prototype = rr.prototype, 3908 rr.propHooks = { 3628 3909 _default: { 3629 3910 get: function(e) { … … 3635 3916 } 3636 3917 } 3637 }, rr.propHooks.scrollTop = rr.propHooks.scrollLeft = { 3918 }, 3919 rr.propHooks.scrollTop = rr.propHooks.scrollLeft = { 3638 3920 set: function(e) { 3639 3921 e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now) 3640 3922 } 3641 }, b.each(["toggle", "show", "hide"], function(e, t) { 3923 }, 3924 b.each(["toggle", "show", "hide"], function(e, t) { 3642 3925 var n = b.fn[t]; 3643 3926 b.fn[t] = function(e, r, i) { 3644 3927 return null == e || "boolean" == typeof e ? n.apply(this, arguments) : this.animate(ir(t, !0), e, r, i) 3645 3928 } 3646 }), b.fn.extend({ 3929 }), 3930 b.fn.extend({ 3647 3931 fadeTo: function(e, t, n, r) { 3648 3932 return this.filter(nn).css("opacity", 0).show().end().animate({ … … 3657 3941 a.finish = function() { 3658 3942 t.stop(!0) 3659 }, (i || b._data(this, "finish")) && t.stop(!0) 3943 }, 3944 (i || b._data(this, "finish")) && t.stop(!0) 3660 3945 }; 3661 3946 return a.finish = a, i || o.queue === !1 ? this.each(a) : this.queue(o.queue, a) … … 3664 3949 var i = function(e) { 3665 3950 var t = e.stop; 3666 delete e.stop, t(r) 3951 delete e.stop, 3952 t(r) 3667 3953 }; 3668 3954 return "string" != typeof e && (r = n, n = e, e = t), n && e !== !1 && this.queue(e || "fx", []), this.each(function() { … … 3704 3990 i = 0; 3705 3991 for (t = t ? 1 : 0; 4 > i; i += 2 - t) 3706 n = Zt[i], r["margin" + n] = r["padding" + n] = e; 3992 n = Zt[i], 3993 r["margin" + n] = r["padding" + n] = e; 3707 3994 return t && (r.opacity = r.width = e), r 3708 3995 } … … 3724 4011 return this.animate(t, e, n, r) 3725 4012 } 3726 }), b.speed = function(e, t, n) { 4013 }), 4014 b.speed = function(e, t, n) { 3727 4015 var r = e && "object" == typeof e ? b.extend({}, e) : { 3728 4016 complete: n || !n && t || b.isFunction(e) && e, … … 3731 4019 }; 3732 4020 return r.duration = b.fx.off ? 0 : "number" == typeof r.duration ? r.duration : r.duration in b.fx.speeds ? b.fx.speeds[r.duration] : b.fx.speeds._default, (null == r.queue || r.queue === !0) && (r.queue = "fx"), r.old = r.complete, r.complete = function() { 3733 b.isFunction(r.old) && r.old.call(this), r.queue && b.dequeue(this, r.queue) 4021 b.isFunction(r.old) && r.old.call(this), 4022 r.queue && b.dequeue(this, r.queue) 3734 4023 }, r 3735 }, b.easing = { 4024 }, 4025 b.easing = { 3736 4026 linear: function(e) { 3737 4027 return e … … 3740 4030 return .5 - Math.cos(e * Math.PI) / 2 3741 4031 } 3742 }, b.timers = [], b.fx = rr.prototype.init, b.fx.tick = function() { 4032 }, 4033 b.timers = [], 4034 b.fx = rr.prototype.init, 4035 b.fx.tick = function() { 3743 4036 var e, 3744 4037 n = b.timers, 3745 4038 r = 0; 3746 4039 for (Xn = b.now(); n.length > r; r++) 3747 e = n[r], e() || n[r] !== e || n.splice(r--, 1); 3748 n.length || b.fx.stop(), Xn = t 3749 }, b.fx.timer = function(e) { 4040 e = n[r], 4041 e() || n[r] !== e || n.splice(r--, 1); 4042 n.length || b.fx.stop(), 4043 Xn = t 4044 }, 4045 b.fx.timer = function(e) { 3750 4046 e() && b.timers.push(e) && b.fx.start() 3751 }, b.fx.interval = 13, b.fx.start = function() { 4047 }, 4048 b.fx.interval = 13, 4049 b.fx.start = function() { 3752 4050 Un || (Un = setInterval(b.fx.tick, b.fx.interval)) 3753 }, b.fx.stop = function() { 3754 clearInterval(Un), Un = null 3755 }, b.fx.speeds = { 4051 }, 4052 b.fx.stop = function() { 4053 clearInterval(Un), 4054 Un = null 4055 }, 4056 b.fx.speeds = { 3756 4057 slow: 600, 3757 4058 fast: 200, 3758 4059 _default: 400 3759 }, b.fx.step = {}, b.expr && b.expr.filters && (b.expr.filters.animated = function(e) { 4060 }, 4061 b.fx.step = {}, 4062 b.expr && b.expr.filters && (b.expr.filters.animated = function(e) { 3760 4063 return b.grep(b.timers, function(t) { 3761 4064 return e === t.elem 3762 4065 }).length 3763 }), b.fn.offset = function(e) { 4066 }), 4067 b.fn.offset = function(e) { 3764 4068 if (arguments.length) 3765 4069 return e === t ? this : this.each(function(t) { … … 3779 4083 left: o.left + (r.pageXOffset || n.scrollLeft) - (n.clientLeft || 0) 3780 4084 }) : o 3781 }, b.offset = { 4085 }, 4086 b.offset = { 3782 4087 setOffset: function(e, t, n) { 3783 4088 var r = b.css(e, "position"); … … 3792 4097 p, 3793 4098 f; 3794 u ? (c = i.position(), p = c.top, f = c.left) : (p = parseFloat(a) || 0, f = parseFloat(s) || 0), b.isFunction(t) && (t = t.call(e, n, o)), null != t.top && (l.top = t.top - o.top + p), null != t.left && (l.left = t.left - o.left + f), "using" in t ? t.using.call(e, l) : i.css(l) 3795 } 3796 }, b.fn.extend({ 4099 u ? (c = i.position(), p = c.top, f = c.left) : (p = parseFloat(a) || 0, f = parseFloat(s) || 0), 4100 b.isFunction(t) && (t = t.call(e, n, o)), 4101 null != t.top && (l.top = t.top - o.top + p), 4102 null != t.left && (l.left = t.left - o.left + f), 4103 "using" in t ? t.using.call(e, l) : i.css(l) 4104 } 4105 }, 4106 b.fn.extend({ 3797 4107 position: function() { 3798 4108 if (this[0]) { … … 3818 4128 }) 3819 4129 } 3820 }), b.each({ 4130 }), 4131 b.each({ 3821 4132 scrollLeft: "pageXOffset", 3822 4133 scrollTop: "pageYOffset" … … 3851 4162 } 3852 4163 }) 3853 }), e.jQuery = e.$ = b, "function" == typeof define && define.amd && define.amd.jQuery && define("jquery", [], function() { 4164 }), 4165 e.jQuery = e.$ = b, 4166 "function" == typeof define && define.amd && define.amd.jQuery && define("jquery", [], function() { 3854 4167 return b 3855 4168 }) -
trunk/Source/JavaScriptCore/ChangeLog
r259767 r259781 1 2020-04-08 Devin Rousso <drousso@apple.com> 2 3 Web Inspector: Debugger: treat comma sub-expressions as separate statements 4 https://bugs.webkit.org/show_bug.cgi?id=209998 5 6 Reviewed by Joseph Pecoraro. 7 8 Minifiers sometimes use `,` instead of `;` as a way of compressing multiple statements into 9 a single statement (e.g. inside an `if` conditional). This makes stepping through minified 10 code much less useful, as our current stepping logic is based on expressions (not including 11 step in or step out). In most cases, we do actually want to treat each sub-expression in a 12 comma expression as a statement so as to emulate the behaviour as if there were `;` instead. 13 14 * bytecompiler/NodesCodegen.cpp: 15 (JSC::CommaNode::emitBytecode): 16 17 * parser/Parser.cpp: 18 (JSC::Parser<LexerType>::parseVariableDeclarationList): 19 (Parser<LexerType>::parseExpression): 20 Shift the location of subsequent sub-expressions to be after the comma. Add breakpoint pause 21 locations for each subsequent sub-expression. 22 1 23 2020-04-08 Ross Kirsling <ross.kirsling@sony.com> 2 24 -
trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp
r259676 r259781 3043 3043 { 3044 3044 CommaNode* node = this; 3045 for (; node && node->next(); node = node->next())3045 for (; node->next(); node = node->next()) { 3046 3046 generator.emitNode(generator.ignoredResult(), node->m_expr); 3047 3048 // Don't emit a debug hook for the first expression, as that should've already happened in 3049 // the containing statement. 3050 generator.emitDebugHook(node->next()->m_expr); 3051 } 3047 3052 return generator.emitNodeInTailPosition(dst, node->m_expr); 3048 3053 } -
trunk/Source/JavaScriptCore/parser/Parser.cpp
r259216 r259781 810 810 ASSERT(declarationType == DeclarationType::LetDeclaration || declarationType == DeclarationType::VarDeclaration || declarationType == DeclarationType::ConstDeclaration); 811 811 TreeExpression head = 0; 812 JSTokenLocation headLocation; 812 813 TreeExpression tail = 0; 813 814 const Identifier* lastIdent; … … 819 820 JSTokenLocation location(tokenLocation()); 820 821 next(); 822 if (head) { 823 // Move the location of subsequent declarations after the comma. 824 location = tokenLocation(); 825 } 821 826 TreeExpression node = 0; 822 827 declarations++; … … 889 894 890 895 if (node) { 891 if (!head) 896 if (!head) { 892 897 head = node; 893 else if (!tail) {894 head = context.createCommaExpr(location, head);895 tail = context.appendToCommaExpr(location, head, head, node);896 } else898 headLocation = location; 899 } else { 900 if (!tail) 901 head = tail = context.createCommaExpr(headLocation, head); 897 902 tail = context.appendToCommaExpr(location, head, tail, node); 903 recordPauseLocation(context.breakpointLocation(tail)); 904 } 898 905 } 899 906 } while (match(COMMA)); … … 3698 3705 { 3699 3706 failIfStackOverflow(); 3700 JSTokenLocation location(tokenLocation());3707 JSTokenLocation headLocation(tokenLocation()); 3701 3708 TreeExpression node = parseAssignmentExpression(context); 3702 3709 failIfFalse(node, "Cannot parse expression"); … … 3707 3714 m_parserState.nonTrivialExpressionCount++; 3708 3715 m_parserState.nonLHSCount++; 3716 JSTokenLocation tailLocation(tokenLocation()); 3709 3717 TreeExpression right = parseAssignmentExpression(context); 3710 3718 failIfFalse(right, "Cannot parse expression in a comma expression"); 3711 3719 context.setEndOffset(right, m_lastTokenEndPosition.offset); 3712 typename TreeBuilder::Comma head = context.createCommaExpr(location, node); 3713 typename TreeBuilder::Comma tail = context.appendToCommaExpr(location, head, head, right); 3720 typename TreeBuilder::Comma head = context.createCommaExpr(headLocation, node); 3721 typename TreeBuilder::Comma tail = context.appendToCommaExpr(tailLocation, head, head, right); 3722 recordPauseLocation(context.breakpointLocation(tail)); 3714 3723 while (match(COMMA)) { 3715 3724 next(TreeBuilder::DontBuildStrings); 3725 tailLocation = tokenLocation(); 3716 3726 right = parseAssignmentExpression(context); 3717 3727 failIfFalse(right, "Cannot parse expression in a comma expression"); 3718 3728 context.setEndOffset(right, m_lastTokenEndPosition.offset); 3719 tail = context.appendToCommaExpr(location, head, tail, right); 3729 tail = context.appendToCommaExpr(tailLocation, head, tail, right); 3730 recordPauseLocation(context.breakpointLocation(tail)); 3720 3731 } 3721 3732 context.setEndOffset(head, m_lastTokenEndPosition.offset); -
trunk/Source/WebInspectorUI/ChangeLog
r259748 r259781 1 2020-04-08 Devin Rousso <drousso@apple.com> 2 3 Web Inspector: Debugger: treat comma sub-expressions as separate statements 4 https://bugs.webkit.org/show_bug.cgi?id=209998 5 6 Reviewed by Joseph Pecoraro. 7 8 Minifiers sometimes use `,` instead of `;` as a way of compressing multiple statements into 9 a single statement (e.g. inside an `if` conditional). This makes stepping through minified 10 code much less useful, as our current stepping logic is based on expressions (not including 11 step in or step out). In most cases, we do actually want to treat each sub-expression in a 12 comma expression as a statement so as to emulate the behaviour as if there were `;` instead. 13 14 * UserInterface/Workers/Formatter/JSFormatter.js: 15 (JSFormatter.prototype._isLikelyToHaveNewline): 16 (JSFormatter.prototype._handleTokenAtNode): 17 Put each sub-expression in a comma expression on it's own line. 18 1 19 2020-04-08 Devin Rousso <drousso@apple.com> 2 20 -
trunk/Source/WebInspectorUI/UserInterface/Workers/Formatter/JSFormatter.js
r250544 r259781 202 202 _isLikelyToHaveNewline(node) 203 203 { 204 let nodeType = node.type; 205 return nodeType === "IfStatement" 206 || nodeType === "ForStatement" 207 || nodeType === "ForOfStatement" 208 || nodeType === "ForInStatement" 209 || nodeType === "WhileStatement" 210 || nodeType === "DoWhileStatement" 211 || nodeType === "SwitchStatement" 212 || nodeType === "TryStatement" 213 || nodeType === "FunctionDeclaration" 214 || nodeType === "ClassDeclaration" 215 || nodeType === "BlockStatement" 216 || nodeType === "WithStatement"; 204 switch (node.type) { 205 case "BlockStatement": 206 case "ClassDeclaration": 207 case "DoWhileStatement": 208 case "ForInStatement": 209 case "ForOfStatement": 210 case "ForStatement": 211 case "FunctionDeclaration": 212 case "IfStatement": 213 case "SwitchStatement": 214 case "TryStatement": 215 case "WhileStatement": 216 case "WithStatement": 217 return true; 218 219 case "ExpressionStatement": 220 return node.expression.type === "SequenceExpression"; 221 } 222 223 return false; 217 224 } 218 225 … … 286 293 } 287 294 288 if (nodeType === "CallExpression" || nodeType === "ArrayExpression" || nodeType === "ArrayPattern" || nodeType === "ObjectPattern" || nodeType === "SequenceExpression") {295 if (nodeType === "CallExpression" || nodeType === "ArrayExpression" || nodeType === "ArrayPattern" || nodeType === "ObjectPattern") { 289 296 if (tokenValue === ",") { 290 297 builder.appendToken(tokenValue, tokenOffset); … … 293 300 } 294 301 builder.appendToken(tokenValue, tokenOffset); 302 return; 303 } 304 305 if (nodeType === "SequenceExpression") { 306 builder.appendToken(tokenValue, tokenOffset); 307 if (tokenValue === ",") { 308 if (node.parent.type === "ExpressionStatement") 309 this._appendNewline(node); 310 else 311 builder.appendSpace(); 312 } 295 313 return; 296 314 }
Note: See TracChangeset
for help on using the changeset viewer.