Search
Search

Transaction: FsoNDVK...tdVZ

Signed by
Receiver
Status
Failed
Transaction Fee
0.00024 
Deposit Value
0 
Gas Used
2 Tgas
Attached Gas
30 Tgas
Created
July 09, 2024 at 11:29:29am
Hash
FsoNDVKNX78ih2PaJa5GyszxirN3onwcLNtaRahbtdVZ

Actions

Called method: 'fs_store' in contract: crans.near
Arguments:
00000000: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 72 /* SyntaxKind.Pr 00000010: 69 76 61 74 65 49 64 65 6e 74 69 66 69 65 72 20 ivateIdentifier 00000020: 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 */) {. 00000030: 20 20 20 20 20 20 70 6f 73 20 3d 20 74 6f 6b 65 pos = toke 00000040: 6e 50 6f 73 20 2b 20 31 3b 0a 20 20 20 20 20 20 nPos + 1;. 00000050: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00000060: 20 74 6f 6b 65 6e 20 3d 20 36 32 20 2f 2a 20 53 token = 62 /* S 00000070: 79 6e 74 61 78 4b 69 6e 64 2e 48 61 73 68 54 6f yntaxKind.HashTo 00000080: 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 ken */;. 00000090: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }. 000000a0: 20 20 72 65 74 75 72 6e 20 74 6f 6b 65 6e 3b 0a return token;. 000000b0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 000000c0: 20 20 66 75 6e 63 74 69 6f 6e 20 72 65 53 63 61 function reSca 000000d0: 6e 51 75 65 73 74 69 6f 6e 54 6f 6b 65 6e 28 29 nQuestionToken() 000000e0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 {. t 000000f0: 73 2e 44 65 62 75 67 2e 61 73 73 65 72 74 28 74 s.Debug.assert(t 00000100: 6f 6b 65 6e 20 3d 3d 3d 20 36 30 20 2f 2a 20 53 oken === 60 /* S 00000110: 79 6e 74 61 78 4b 69 6e 64 2e 51 75 65 73 74 69 yntaxKind.Questi 00000120: 6f 6e 51 75 65 73 74 69 6f 6e 54 6f 6b 65 6e 20 onQuestionToken 00000130: 2a 2f 2c 20 22 27 72 65 53 63 61 6e 51 75 65 73 */, "'reScanQues 00000140: 74 69 6f 6e 54 6f 6b 65 6e 27 20 73 68 6f 75 6c tionToken' shoul 00000150: 64 20 6f 6e 6c 79 20 62 65 20 63 61 6c 6c 65 64 d only be called 00000160: 20 6f 6e 20 61 20 27 3f 3f 27 22 29 3b 0a 20 20 on a '??'");. 00000170: 20 20 20 20 20 20 20 20 20 20 70 6f 73 20 3d 20 pos = 00000180: 74 6f 6b 65 6e 50 6f 73 20 2b 20 31 3b 0a 20 20 tokenPos + 1;. 00000190: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 000001a0: 20 74 6f 6b 65 6e 20 3d 20 35 37 20 2f 2a 20 53 token = 57 /* S 000001b0: 79 6e 74 61 78 4b 69 6e 64 2e 51 75 65 73 74 69 yntaxKind.Questi 000001c0: 6f 6e 54 6f 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 onToken */;. 000001d0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 66 75 }. fu 000001e0: 6e 63 74 69 6f 6e 20 73 63 61 6e 4a 73 78 54 6f nction scanJsxTo 000001f0: 6b 65 6e 28 61 6c 6c 6f 77 4d 75 6c 74 69 6c 69 ken(allowMultili 00000200: 6e 65 4a 73 78 54 65 78 74 29 20 7b 0a 20 20 20 neJsxText) {. 00000210: 20 20 20 20 20 20 20 20 20 69 66 20 28 61 6c 6c if (all 00000220: 6f 77 4d 75 6c 74 69 6c 69 6e 65 4a 73 78 54 65 owMultilineJsxTe 00000230: 78 74 20 3d 3d 3d 20 76 6f 69 64 20 30 29 20 7b xt === void 0) { 00000240: 20 61 6c 6c 6f 77 4d 75 6c 74 69 6c 69 6e 65 4a allowMultilineJ 00000250: 73 78 54 65 78 74 20 3d 20 74 72 75 65 3b 20 7d sxText = true; } 00000260: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 . sta 00000270: 72 74 50 6f 73 20 3d 20 74 6f 6b 65 6e 50 6f 73 rtPos = tokenPos 00000280: 20 3d 20 70 6f 73 3b 0a 20 20 20 20 20 20 20 20 = pos;. 00000290: 20 20 20 20 69 66 20 28 70 6f 73 20 3e 3d 20 65 if (pos >= e 000002a0: 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 nd) {. 000002b0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 6f 6b return tok 000002c0: 65 6e 20 3d 20 31 20 2f 2a 20 53 79 6e 74 61 78 en = 1 /* Syntax 000002d0: 4b 69 6e 64 2e 45 6e 64 4f 66 46 69 6c 65 54 6f Kind.EndOfFileTo 000002e0: 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 ken */;. 000002f0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }. 00000300: 20 20 76 61 72 20 63 68 61 72 20 3d 20 74 65 78 var char = tex 00000310: 74 2e 63 68 61 72 43 6f 64 65 41 74 28 70 6f 73 t.charCodeAt(pos 00000320: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 );. i 00000330: 66 20 28 63 68 61 72 20 3d 3d 3d 20 36 30 20 2f f (char === 60 / 00000340: 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 65 73 * CharacterCodes 00000350: 2e 6c 65 73 73 54 68 61 6e 20 2a 2f 29 20 7b 0a .lessThan */) {. 00000360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00000370: 69 66 20 28 74 65 78 74 2e 63 68 61 72 43 6f 64 if (text.charCod 00000380: 65 41 74 28 70 6f 73 20 2b 20 31 29 20 3d 3d 3d eAt(pos + 1) === 00000390: 20 34 37 20 2f 2a 20 43 68 61 72 61 63 74 65 72 47 /* Character 000003a0: 43 6f 64 65 73 2e 73 6c 61 73 68 20 2a 2f 29 20 Codes.slash */) 000003b0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 000003c0: 20 20 20 20 20 20 70 6f 73 20 2b 3d 20 32 3b 0a pos += 2;. 000003d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000003e0: 20 20 20 20 72 65 74 75 72 6e 20 74 6f 6b 65 6e return token 000003f0: 20 3d 20 33 30 20 2f 2a 20 53 79 6e 74 61 78 4b = 30 /* SyntaxK 00000400: 69 6e 64 2e 4c 65 73 73 54 68 61 6e 53 6c 61 73 ind.LessThanSlas 00000410: 68 54 6f 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 20 hToken */;. 00000420: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 00000430: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 73 pos 00000440: 2b 2b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ++;. 00000450: 20 20 20 20 72 65 74 75 72 6e 20 74 6f 6b 65 6e return token 00000460: 20 3d 20 32 39 20 2f 2a 20 53 79 6e 74 61 78 4b = 29 /* SyntaxK 00000470: 69 6e 64 2e 4c 65 73 73 54 68 61 6e 54 6f 6b 65 ind.LessThanToke 00000480: 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 20 20 n */;. 00000490: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }. 000004a0: 69 66 20 28 63 68 61 72 20 3d 3d 3d 20 31 32 33 if (char === 123 000004b0: 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 /* CharacterCod 000004c0: 65 73 2e 6f 70 65 6e 42 72 61 63 65 20 2a 2f 29 es.openBrace */) 000004d0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 000004e0: 20 20 20 70 6f 73 2b 2b 3b 0a 20 20 20 20 20 20 pos++;. 000004f0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00000500: 20 74 6f 6b 65 6e 20 3d 20 31 38 20 2f 2a 20 53 token = 18 /* S 00000510: 79 6e 74 61 78 4b 69 6e 64 2e 4f 70 65 6e 42 72 yntaxKind.OpenBr 00000520: 61 63 65 54 6f 6b 65 6e 20 2a 2f 3b 0a 20 20 20 aceToken */;. 00000530: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 00000540: 20 20 20 20 20 20 20 2f 2f 20 46 69 72 73 74 20 // First 00000550: 6e 6f 6e 2d 77 68 69 74 65 73 70 61 63 65 20 63 non-whitespace c 00000560: 68 61 72 61 63 74 65 72 20 6f 6e 20 74 68 69 73 haracter on this 00000570: 20 6c 69 6e 65 2e 0a 20 20 20 20 20 20 20 20 20 line.. 00000580: 20 20 20 76 61 72 20 66 69 72 73 74 4e 6f 6e 57 var firstNonW 00000590: 68 69 74 65 73 70 61 63 65 20 3d 20 30 3b 0a 20 hitespace = 0;. 000005a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 68 // Th 000005b0: 65 73 65 20 69 6e 69 74 69 61 6c 20 76 61 6c 75 ese initial valu 000005c0: 65 73 20 61 72 65 20 73 70 65 63 69 61 6c 20 62 es are special b 000005d0: 65 63 61 75 73 65 20 74 68 65 20 66 69 72 73 74 ecause the first 000005e0: 20 6c 69 6e 65 20 69 73 3a 0a 20 20 20 20 20 20 line is:. 000005f0: 20 20 20 20 20 20 2f 2f 20 66 69 72 73 74 4e 6f // firstNo 00000600: 6e 57 68 69 74 65 73 70 61 63 65 20 3d 20 30 20 nWhitespace = 0 00000610: 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61 74 to indicate that 00000620: 20 77 65 20 77 61 6e 74 20 6c 65 61 64 69 6e 67 we want leading 00000630: 20 77 68 69 74 65 73 70 61 63 65 2c 0a 20 20 20 whitespace,. 00000640: 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 while ( 00000650: 70 6f 73 20 3c 20 65 6e 64 29 20 7b 0a 20 20 20 pos < end) {. 00000660: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 cha 00000670: 72 20 3d 20 74 65 78 74 2e 63 68 61 72 43 6f 64 r = text.charCod 00000680: 65 41 74 28 70 6f 73 29 3b 0a 20 20 20 20 20 20 eAt(pos);. 00000690: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 68 if (ch 000006a0: 61 72 20 3d 3d 3d 20 31 32 33 20 2f 2a 20 43 68 ar === 123 /* Ch 000006b0: 61 72 61 63 74 65 72 43 6f 64 65 73 2e 6f 70 65 aracterCodes.ope 000006c0: 6e 42 72 61 63 65 20 2a 2f 29 20 7b 0a 20 20 20 nBrace */) {. 000006d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000006e0: 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 break;. 000006f0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 00000700: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 68 if (ch 00000710: 61 72 20 3d 3d 3d 20 36 30 20 2f 2a 20 43 68 61 ar === 60 /* Cha 00000720: 72 61 63 74 65 72 43 6f 64 65 73 2e 6c 65 73 73 racterCodes.less 00000730: 54 68 61 6e 20 2a 2f 29 20 7b 0a 20 20 20 20 20 Than */) {. 00000740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i 00000750: 66 20 28 69 73 43 6f 6e 66 6c 69 63 74 4d 61 72 f (isConflictMar 00000760: 6b 65 72 54 72 69 76 69 61 28 74 65 78 74 2c 20 kerTrivia(text, 00000770: 70 6f 73 29 29 20 7b 0a 20 20 20 20 20 20 20 20 pos)) {. 00000780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00000790: 70 6f 73 20 3d 20 73 63 61 6e 43 6f 6e 66 6c 69 pos = scanConfli 000007a0: 63 74 4d 61 72 6b 65 72 54 72 69 76 69 61 28 74 ctMarkerTrivia(t 000007b0: 65 78 74 2c 20 70 6f 73 2c 20 65 72 72 6f 72 29 ext, pos, error) 000007c0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 000007d0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 000007e0: 20 74 6f 6b 65 6e 20 3d 20 37 20 2f 2a 20 53 79 token = 7 /* Sy 000007f0: 6e 74 61 78 4b 69 6e 64 2e 43 6f 6e 66 6c 69 63 ntaxKind.Conflic 00000800: 74 4d 61 72 6b 65 72 54 72 69 76 69 61 20 2a 2f tMarkerTrivia */ 00000810: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 00000820: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 00000830: 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 brea 00000840: 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 k;. 00000850: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 00000860: 20 20 20 20 20 69 66 20 28 63 68 61 72 20 3d 3d if (char == 00000870: 3d 20 36 32 20 2f 2a 20 43 68 61 72 61 63 74 65 = 62 /* Characte 00000880: 72 43 6f 64 65 73 2e 67 72 65 61 74 65 72 54 68 rCodes.greaterTh 00000890: 61 6e 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 an */) {. 000008a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 err 000008b0: 6f 72 28 74 73 2e 44 69 61 67 6e 6f 73 74 69 63 or(ts.Diagnostic 000008c0: 73 2e 55 6e 65 78 70 65 63 74 65 64 5f 74 6f 6b s.Unexpected_tok 000008d0: 65 6e 5f 44 69 64 5f 79 6f 75 5f 6d 65 61 6e 5f en_Did_you_mean_ 000008e0: 6f 72 5f 67 74 2c 20 70 6f 73 2c 20 31 29 3b 0a or_gt, pos, 1);. 000008f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00000900: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 }. 00000910: 20 20 69 66 20 28 63 68 61 72 20 3d 3d 3d 20 31 if (char === 1 00000920: 32 35 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 25 /* CharacterC 00000930: 6f 64 65 73 2e 63 6c 6f 73 65 42 72 61 63 65 20 odes.closeBrace 00000940: 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 */) {. 00000950: 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 error( 00000960: 74 73 2e 44 69 61 67 6e 6f 73 74 69 63 73 2e 55 ts.Diagnostics.U 00000970: 6e 65 78 70 65 63 74 65 64 5f 74 6f 6b 65 6e 5f nexpected_token_ 00000980: 44 69 64 5f 79 6f 75 5f 6d 65 61 6e 5f 6f 72 5f Did_you_mean_or_ 00000990: 72 62 72 61 63 65 2c 20 70 6f 73 2c 20 31 29 3b rbrace, pos, 1); 000009a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 000009b0: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }. 000009c0: 20 20 20 2f 2f 20 46 69 72 73 74 4e 6f 6e 57 68 // FirstNonWh 000009d0: 69 74 65 73 70 61 63 65 20 69 73 20 30 2c 20 74 itespace is 0, t 000009e0: 68 65 6e 20 77 65 20 6f 6e 6c 79 20 73 65 65 20 hen we only see 000009f0: 77 68 69 74 65 73 70 61 63 65 73 20 73 6f 20 66 whitespaces so f 00000a00: 61 72 2e 20 49 66 20 77 65 20 73 65 65 20 61 20 ar. If we see a 00000a10: 6c 69 6e 65 62 72 65 61 6b 2c 20 77 65 20 77 61 linebreak, we wa 00000a20: 6e 74 20 74 6f 20 69 67 6e 6f 72 65 20 74 68 61 nt to ignore tha 00000a30: 74 20 77 68 69 74 65 73 70 61 63 65 73 2e 0a 20 t whitespaces.. 00000a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f / 00000a50: 2f 20 69 2e 65 20 28 2d 20 3a 20 77 68 69 74 65 / i.e (- : white 00000a60: 73 70 61 63 65 29 0a 20 20 20 20 20 20 20 20 20 space). 00000a70: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 3c // < 00000a80: 64 69 76 3e 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 div>----. 00000a90: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 // 00000aa0: 20 3c 2f 64 69 76 3e 20 62 65 63 6f 6d 65 73 20 </div> becomes 00000ab0: 3c 64 69 76 3e 3c 2f 64 69 76 3e 0a 20 20 20 20 <div></div>. 00000ac0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0a 20 //. 00000ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f / 00000ae0: 2f 20 20 20 20 20 20 3c 64 69 76 3e 2d 2d 2d 2d / <div>---- 00000af0: 3c 2f 64 69 76 3e 20 62 65 63 6f 6d 65 73 20 3c </div> becomes < 00000b00: 64 69 76 3e 2d 2d 2d 2d 3c 2f 64 69 76 3e 0a 20 div>----</div>. 00000b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i 00000b20: 66 20 28 69 73 4c 69 6e 65 42 72 65 61 6b 28 63 f (isLineBreak(c 00000b30: 68 61 72 29 20 26 26 20 66 69 72 73 74 4e 6f 6e har) && firstNon 00000b40: 57 68 69 74 65 73 70 61 63 65 20 3d 3d 3d 20 30 Whitespace === 0 00000b50: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 00000b60: 20 20 20 20 20 20 20 20 66 69 72 73 74 4e 6f 6e firstNon 00000b70: 57 68 69 74 65 73 70 61 63 65 20 3d 20 2d 31 3b Whitespace = -1; 00000b80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00000b90: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }. 00000ba0: 20 20 20 65 6c 73 65 20 69 66 20 28 21 61 6c 6c else if (!all 00000bb0: 6f 77 4d 75 6c 74 69 6c 69 6e 65 4a 73 78 54 65 owMultilineJsxTe 00000bc0: 78 74 20 26 26 20 69 73 4c 69 6e 65 42 72 65 61 xt && isLineBrea 00000bd0: 6b 28 63 68 61 72 29 20 26 26 20 66 69 72 73 74 k(char) && first 00000be0: 4e 6f 6e 57 68 69 74 65 73 70 61 63 65 20 3e 20 NonWhitespace > 00000bf0: 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 0) {. 00000c00: 20 20 20 20 20 20 20 20 20 2f 2f 20 53 74 6f 70 // Stop 00000c10: 20 4a 73 78 54 65 78 74 20 6f 6e 20 65 61 63 68 JsxText on each 00000c20: 20 6c 69 6e 65 20 64 75 72 69 6e 67 20 66 6f 72 line during for 00000c30: 6d 61 74 74 69 6e 67 2e 20 54 68 69 73 20 61 6c matting. This al 00000c40: 6c 6f 77 73 20 74 68 65 20 66 6f 72 6d 61 74 74 lows the formatt 00000c50: 65 72 20 74 6f 0a 20 20 20 20 20 20 20 20 20 20 er to. 00000c60: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 6e 64 // ind 00000c70: 65 6e 74 20 65 61 63 68 20 6c 69 6e 65 20 63 6f ent each line co 00000c80: 72 72 65 63 74 6c 79 2e 0a 20 20 20 20 20 20 20 rrectly.. 00000c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 bre 00000ca0: 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ak;. 00000cb0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }. 00000cc0: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 else if (! 00000cd0: 69 73 57 68 69 74 65 53 70 61 63 65 4c 69 6b 65 isWhiteSpaceLike 00000ce0: 28 63 68 61 72 29 29 20 7b 0a 20 20 20 20 20 20 (char)) {. 00000cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 fi 00000d00: 72 73 74 4e 6f 6e 57 68 69 74 65 73 70 61 63 65 rstNonWhitespace 00000d10: 20 3d 20 70 6f 73 3b 0a 20 20 20 20 20 20 20 20 = pos;. 00000d20: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 00000d30: 20 20 20 20 20 20 20 20 20 20 70 6f 73 2b 2b 3b pos++; 00000d40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 . }. 00000d50: 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e token 00000d60: 56 61 6c 75 65 20 3d 20 74 65 78 74 2e 73 75 62 Value = text.sub 00000d70: 73 74 72 69 6e 67 28 73 74 61 72 74 50 6f 73 2c string(startPos, 00000d80: 20 70 6f 73 29 3b 0a 20 20 20 20 20 20 20 20 20 pos);. 00000d90: 20 20 20 72 65 74 75 72 6e 20 66 69 72 73 74 4e return firstN 00000da0: 6f 6e 57 68 69 74 65 73 70 61 63 65 20 3d 3d 3d onWhitespace === 00000db0: 20 2d 31 20 3f 20 31 32 20 2f 2a 20 53 79 6e 74 -1 ? 12 /* Synt 00000dc0: 61 78 4b 69 6e 64 2e 4a 73 78 54 65 78 74 41 6c axKind.JsxTextAl 00000dd0: 6c 57 68 69 74 65 53 70 61 63 65 73 20 2a 2f 20 lWhiteSpaces */ 00000de0: 3a 20 31 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 : 11 /* SyntaxKi 00000df0: 6e 64 2e 4a 73 78 54 65 78 74 20 2a 2f 3b 0a 20 nd.JsxText */;. 00000e00: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00000e10: 20 2f 2f 20 53 63 61 6e 73 20 61 20 4a 53 58 20 // Scans a JSX 00000e20: 69 64 65 6e 74 69 66 69 65 72 3b 20 74 68 65 73 identifier; thes 00000e30: 65 20 64 69 66 66 65 72 20 66 72 6f 6d 20 6e 6f e differ from no 00000e40: 72 6d 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73 rmal identifiers 00000e50: 20 69 6e 20 74 68 61 74 0a 20 20 20 20 20 20 20 in that. 00000e60: 20 2f 2f 20 74 68 65 79 20 61 6c 6c 6f 77 20 64 // they allow d 00000e70: 61 73 68 65 73 0a 20 20 20 20 20 20 20 20 66 75 ashes. fu 00000e80: 6e 63 74 69 6f 6e 20 73 63 61 6e 4a 73 78 49 64 nction scanJsxId 00000e90: 65 6e 74 69 66 69 65 72 28 29 20 7b 0a 20 20 20 entifier() {. 00000ea0: 20 20 20 20 20 20 20 20 20 69 66 20 28 74 6f 6b if (tok 00000eb0: 65 6e 49 73 49 64 65 6e 74 69 66 69 65 72 4f 72 enIsIdentifierOr 00000ec0: 4b 65 79 77 6f 72 64 28 74 6f 6b 65 6e 29 29 20 Keyword(token)) 00000ed0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 00000ee0: 20 20 2f 2f 20 41 6e 20 69 64 65 6e 74 69 66 69 // An identifi 00000ef0: 65 72 20 6f 72 20 6b 65 79 77 6f 72 64 20 68 61 er or keyword ha 00000f00: 73 20 61 6c 72 65 61 64 79 20 62 65 65 6e 20 70 s already been p 00000f10: 61 72 73 65 64 20 2d 20 63 68 65 63 6b 20 66 6f arsed - check fo 00000f20: 72 20 61 20 60 2d 60 20 6f 72 20 61 20 73 69 6e r a `-` or a sin 00000f30: 67 6c 65 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 gle instance of 00000f40: 60 3a 60 20 61 6e 64 20 74 68 65 6e 20 61 70 70 `:` and then app 00000f50: 65 6e 64 20 69 74 20 61 6e 64 0a 20 20 20 20 20 end it and. 00000f60: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 65 76 // ev 00000f70: 65 72 79 74 68 69 6e 67 20 61 66 74 65 72 20 69 erything after i 00000f80: 74 20 74 6f 20 74 68 65 20 74 6f 6b 65 6e 0a 20 t to the token. 00000f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f / 00000fa0: 2f 20 44 6f 20 6e 6f 74 65 20 74 68 61 74 20 74 / Do note that t 00000fb0: 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20 60 his means that ` 00000fc0: 73 63 61 6e 4a 73 78 49 64 65 6e 74 69 66 69 65 scanJsxIdentifie 00000fd0: 72 60 20 65 66 66 65 63 74 69 76 65 6c 79 20 5f r` effectively _ 00000fe0: 6d 75 74 61 74 65 73 5f 20 74 68 65 20 76 69 73 mutates_ the vis 00000ff0: 69 62 6c 65 20 74 6f 6b 65 6e 20 77 69 74 68 6f ible token witho 00001000: 75 74 20 61 64 76 61 6e 63 69 6e 67 20 74 6f 20 ut advancing to 00001010: 61 20 6e 65 77 20 74 6f 6b 65 6e 0a 20 20 20 20 a new token. 00001020: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 41 // A 00001030: 6e 79 20 63 61 6c 6c 65 72 20 73 68 6f 75 6c 64 ny caller should 00001040: 20 62 65 20 65 78 70 65 63 74 69 6e 67 20 74 68 be expecting th 00001050: 69 73 20 62 65 68 61 76 69 6f 72 20 61 6e 64 20 is behavior and 00001060: 73 68 6f 75 6c 64 20 6f 6e 6c 79 20 72 65 61 64 should only read 00001070: 20 74 68 65 20 70 6f 73 20 6f 72 20 74 6f 6b 65 the pos or toke 00001080: 6e 20 76 61 6c 75 65 20 61 66 74 65 72 20 63 61 n value after ca 00001090: 6c 6c 69 6e 67 20 69 74 2e 0a 20 20 20 20 20 20 lling it.. 000010a0: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e 61 var na 000010b0: 6d 65 73 70 61 63 65 53 65 70 61 72 61 74 6f 72 mespaceSeparator 000010c0: 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 = false;. 000010d0: 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 while 000010e0: 28 70 6f 73 20 3c 20 65 6e 64 29 20 7b 0a 20 20 (pos < end) {. 000010f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001100: 20 20 76 61 72 20 63 68 20 3d 20 74 65 78 74 2e var ch = text. 00001110: 63 68 61 72 43 6f 64 65 41 74 28 70 6f 73 29 3b charCodeAt(pos); 00001120: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00001130: 20 20 20 20 20 69 66 20 28 63 68 20 3d 3d 3d 20 if (ch === 00001140: 34 35 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 45 /* CharacterC 00001150: 6f 64 65 73 2e 6d 69 6e 75 73 20 2a 2f 29 20 7b odes.minus */) { 00001160: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00001170: 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 56 61 tokenVa 00001180: 6c 75 65 20 2b 3d 20 22 2d 22 3b 0a 20 20 20 20 lue += "-";. 00001190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000011a0: 20 20 20 20 70 6f 73 2b 2b 3b 0a 20 20 20 20 20 pos++;. 000011b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000011c0: 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0a 20 20 20 continue;. 000011d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000011e0: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }. 000011f0: 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 else if ( 00001200: 63 68 20 3d 3d 3d 20 35 38 20 2f 2a 20 43 68 61 ch === 58 /* Cha 00001210: 72 61 63 74 65 72 43 6f 64 65 73 2e 63 6f 6c 6f racterCodes.colo 00001220: 6e 20 2a 2f 20 26 26 20 21 6e 61 6d 65 73 70 61 n */ && !namespa 00001230: 63 65 53 65 70 61 72 61 74 6f 72 29 20 7b 0a 20 ceSeparator) {. 00001240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001250: 20 20 20 20 20 20 20 74 6f 6b 65 6e 56 61 6c 75 tokenValu 00001260: 65 20 2b 3d 20 22 3a 22 3b 0a 20 20 20 20 20 20 e += ":";. 00001270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001280: 20 20 70 6f 73 2b 2b 3b 0a 20 20 20 20 20 20 20 pos++;. 00001290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000012a0: 20 6e 61 6d 65 73 70 61 63 65 53 65 70 61 72 61 namespaceSepara 000012b0: 74 6f 72 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 tor = true;. 000012c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000012d0: 20 20 20 20 74 6f 6b 65 6e 20 3d 20 37 39 20 2f token = 79 / 000012e0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 64 65 * SyntaxKind.Ide 000012f0: 6e 74 69 66 69 65 72 20 2a 2f 3b 20 2f 2f 20 73 ntifier */; // s 00001300: 77 61 70 20 66 72 6f 6d 20 6b 65 79 77 6f 72 64 wap from keyword 00001310: 20 6b 69 6e 64 20 74 6f 20 69 64 65 6e 74 69 66 kind to identif 00001320: 69 65 72 20 6b 69 6e 64 0a 20 20 20 20 20 20 20 ier kind. 00001330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001340: 20 63 6f 6e 74 69 6e 75 65 3b 0a 20 20 20 20 20 continue;. 00001350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d } 00001360: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00001370: 20 20 20 20 20 76 61 72 20 6f 6c 64 50 6f 73 20 var oldPos 00001380: 3d 20 70 6f 73 3b 0a 20 20 20 20 20 20 20 20 20 = pos;. 00001390: 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e token 000013a0: 56 61 6c 75 65 20 2b 3d 20 73 63 61 6e 49 64 65 Value += scanIde 000013b0: 6e 74 69 66 69 65 72 50 61 72 74 73 28 29 3b 20 ntifierParts(); 000013c0: 2f 2f 20 72 65 75 73 65 20 60 73 63 61 6e 49 64 // reuse `scanId 000013d0: 65 6e 74 69 66 69 65 72 50 61 72 74 73 60 20 73 entifierParts` s 000013e0: 6f 20 75 6e 69 63 6f 64 65 20 65 73 63 61 70 65 o unicode escape 000013f0: 73 20 61 72 65 20 68 61 6e 64 6c 65 64 0a 20 20 s are handled. 00001400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001410: 20 20 69 66 20 28 70 6f 73 20 3d 3d 3d 20 6f 6c if (pos === ol 00001420: 64 50 6f 73 29 20 7b 0a 20 20 20 20 20 20 20 20 dPos) {. 00001430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001440: 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 break;. 00001450: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 00001460: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 }. 00001470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f / 00001480: 2f 20 44 6f 20 6e 6f 74 20 69 6e 63 6c 75 64 65 / Do not include 00001490: 20 61 20 74 72 61 69 6c 69 6e 67 20 6e 61 6d 65 a trailing name 000014a0: 73 70 61 63 65 20 73 65 70 61 72 61 74 6f 72 20 space separator 000014b0: 69 6e 20 74 68 65 20 74 6f 6b 65 6e 2c 20 73 69 in the token, si 000014c0: 6e 63 65 20 74 68 69 73 20 69 73 20 61 67 61 69 nce this is agai 000014d0: 6e 73 74 20 74 68 65 20 73 70 65 63 2e 0a 20 20 nst the spec.. 000014e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if 000014f0: 20 28 74 6f 6b 65 6e 56 61 6c 75 65 2e 73 6c 69 (tokenValue.sli 00001500: 63 65 28 2d 31 29 20 3d 3d 3d 20 22 3a 22 29 20 ce(-1) === ":") 00001510: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 00001520: 20 20 20 20 20 20 74 6f 6b 65 6e 56 61 6c 75 65 tokenValue 00001530: 20 3d 20 74 6f 6b 65 6e 56 61 6c 75 65 2e 73 6c = tokenValue.sl 00001540: 69 63 65 28 30 2c 20 2d 31 29 3b 0a 20 20 20 20 ice(0, -1);. 00001550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001560: 70 6f 73 2d 2d 3b 0a 20 20 20 20 20 20 20 20 20 pos--;. 00001570: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00001580: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 00001590: 67 65 74 49 64 65 6e 74 69 66 69 65 72 54 6f 6b getIdentifierTok 000015a0: 65 6e 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 en();. 000015b0: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }. 000015c0: 72 65 74 75 72 6e 20 74 6f 6b 65 6e 3b 0a 20 20 return token;. 000015d0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 000015e0: 66 75 6e 63 74 69 6f 6e 20 73 63 61 6e 4a 73 78 function scanJsx 000015f0: 41 74 74 72 69 62 75 74 65 56 61 6c 75 65 28 29 AttributeValue() 00001600: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 {. s 00001610: 74 61 72 74 50 6f 73 20 3d 20 70 6f 73 3b 0a 20 tartPos = pos;. 00001620: 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74 63 switc 00001630: 68 20 28 74 65 78 74 2e 63 68 61 72 43 6f 64 65 h (text.charCode 00001640: 41 74 28 70 6f 73 29 29 20 7b 0a 20 20 20 20 20 At(pos)) {. 00001650: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00001660: 33 34 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 34 /* CharacterC 00001670: 6f 64 65 73 2e 64 6f 75 62 6c 65 51 75 6f 74 65 odes.doubleQuote 00001680: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00001690: 20 20 20 20 20 63 61 73 65 20 33 39 20 2f 2a 20 case 39 /* 000016a0: 43 68 61 72 61 63 74 65 72 43 6f 64 65 73 2e 73 CharacterCodes.s 000016b0: 69 6e 67 6c 65 51 75 6f 74 65 20 2a 2f 3a 0a 20 ingleQuote */:. 000016c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000016d0: 20 20 20 74 6f 6b 65 6e 56 61 6c 75 65 20 3d 20 tokenValue = 000016e0: 73 63 61 6e 53 74 72 69 6e 67 28 2f 2a 6a 73 78 scanString(/*jsx 000016f0: 41 74 74 72 69 62 75 74 65 53 74 72 69 6e 67 2a AttributeString* 00001700: 2f 20 74 72 75 65 29 3b 0a 20 20 20 20 20 20 20 / true);. 00001710: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00001720: 75 72 6e 20 74 6f 6b 65 6e 20 3d 20 31 30 20 2f urn token = 10 / 00001730: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 74 72 * SyntaxKind.Str 00001740: 69 6e 67 4c 69 74 65 72 61 6c 20 2a 2f 3b 0a 20 ingLiteral */;. 00001750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 d 00001760: 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 efault:. 00001770: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 // I 00001780: 66 20 74 68 69 73 20 73 63 61 6e 73 20 61 6e 79 f this scans any 00001790: 74 68 69 6e 67 20 6f 74 68 65 72 20 74 68 61 6e thing other than 000017a0: 20 60 7b 60 2c 20 69 74 27 73 20 61 20 70 61 72 `{`, it's a par 000017b0: 73 65 20 65 72 72 6f 72 2e 0a 20 20 20 20 20 20 se error.. 000017c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 000017d0: 74 75 72 6e 20 73 63 61 6e 28 29 3b 0a 20 20 20 turn scan();. 000017e0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 000017f0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 66 75 6e }. fun 00001800: 63 74 69 6f 6e 20 72 65 53 63 61 6e 4a 73 78 41 ction reScanJsxA 00001810: 74 74 72 69 62 75 74 65 56 61 6c 75 65 28 29 20 ttributeValue() 00001820: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 6f {. po 00001830: 73 20 3d 20 74 6f 6b 65 6e 50 6f 73 20 3d 20 73 s = tokenPos = s 00001840: 74 61 72 74 50 6f 73 3b 0a 20 20 20 20 20 20 20 tartPos;. 00001850: 20 20 20 20 20 72 65 74 75 72 6e 20 73 63 61 6e return scan 00001860: 4a 73 78 41 74 74 72 69 62 75 74 65 56 61 6c 75 JsxAttributeValu 00001870: 65 28 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 e();. }. 00001880: 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 function 00001890: 73 63 61 6e 4a 73 44 6f 63 54 6f 6b 65 6e 28 29 scanJsDocToken() 000018a0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 {. s 000018b0: 74 61 72 74 50 6f 73 20 3d 20 74 6f 6b 65 6e 50 tartPos = tokenP 000018c0: 6f 73 20 3d 20 70 6f 73 3b 0a 20 20 20 20 20 20 os = pos;. 000018d0: 20 20 20 20 20 20 74 6f 6b 65 6e 46 6c 61 67 73 tokenFlags 000018e0: 20 3d 20 30 20 2f 2a 20 54 6f 6b 65 6e 46 6c 61 = 0 /* TokenFla 000018f0: 67 73 2e 4e 6f 6e 65 20 2a 2f 3b 0a 20 20 20 20 gs.None */;. 00001900: 20 20 20 20 20 20 20 20 69 66 20 28 70 6f 73 20 if (pos 00001910: 3e 3d 20 65 6e 64 29 20 7b 0a 20 20 20 20 20 20 >= end) {. 00001920: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00001930: 20 74 6f 6b 65 6e 20 3d 20 31 20 2f 2a 20 53 79 token = 1 /* Sy 00001940: 6e 74 61 78 4b 69 6e 64 2e 45 6e 64 4f 66 46 69 ntaxKind.EndOfFi 00001950: 6c 65 54 6f 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 leToken */;. 00001960: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 00001970: 20 20 20 20 20 20 76 61 72 20 63 68 20 3d 20 63 var ch = c 00001980: 6f 64 65 50 6f 69 6e 74 41 74 28 74 65 78 74 2c odePointAt(text, 00001990: 20 70 6f 73 29 3b 0a 20 20 20 20 20 20 20 20 20 pos);. 000019a0: 20 20 20 70 6f 73 20 2b 3d 20 63 68 61 72 53 69 pos += charSi 000019b0: 7a 65 28 63 68 29 3b 0a 20 20 20 20 20 20 20 20 ze(ch);. 000019c0: 20 20 20 20 73 77 69 74 63 68 20 28 63 68 29 20 switch (ch) 000019d0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 000019e0: 20 20 63 61 73 65 20 39 20 2f 2a 20 43 68 61 72 case 9 /* Char 000019f0: 61 63 74 65 72 43 6f 64 65 73 2e 74 61 62 20 2a acterCodes.tab * 00001a00: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 00001a10: 20 20 20 63 61 73 65 20 31 31 20 2f 2a 20 43 68 case 11 /* Ch 00001a20: 61 72 61 63 74 65 72 43 6f 64 65 73 2e 76 65 72 aracterCodes.ver 00001a30: 74 69 63 61 6c 54 61 62 20 2a 2f 3a 0a 20 20 20 ticalTab */:. 00001a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 cas 00001a50: 65 20 31 32 20 2f 2a 20 43 68 61 72 61 63 74 65 e 12 /* Characte 00001a60: 72 43 6f 64 65 73 2e 66 6f 72 6d 46 65 65 64 20 rCodes.formFeed 00001a70: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00001a80: 20 20 20 20 63 61 73 65 20 33 32 20 2f 2a 20 43 case 32 /* C 00001a90: 68 61 72 61 63 74 65 72 43 6f 64 65 73 2e 73 70 haracterCodes.sp 00001aa0: 61 63 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ace */:. 00001ab0: 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c whil 00001ac0: 65 20 28 70 6f 73 20 3c 20 65 6e 64 20 26 26 20 e (pos < end && 00001ad0: 69 73 57 68 69 74 65 53 70 61 63 65 53 69 6e 67 isWhiteSpaceSing 00001ae0: 6c 65 4c 69 6e 65 28 74 65 78 74 2e 63 68 61 72 leLine(text.char 00001af0: 43 6f 64 65 41 74 28 70 6f 73 29 29 29 20 7b 0a CodeAt(pos))) {. 00001b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001b10: 20 20 20 20 20 20 20 20 70 6f 73 2b 2b 3b 0a 20 pos++;. 00001b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001b30: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 00001b40: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 00001b50: 74 6f 6b 65 6e 20 3d 20 35 20 2f 2a 20 53 79 6e token = 5 /* Syn 00001b60: 74 61 78 4b 69 6e 64 2e 57 68 69 74 65 73 70 61 taxKind.Whitespa 00001b70: 63 65 54 72 69 76 69 61 20 2a 2f 3b 0a 20 20 20 ceTrivia */;. 00001b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 cas 00001b90: 65 20 36 34 20 2f 2a 20 43 68 61 72 61 63 74 65 e 64 /* Characte 00001ba0: 72 43 6f 64 65 73 2e 61 74 20 2a 2f 3a 0a 20 20 rCodes.at */:. 00001bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001bc0: 20 20 72 65 74 75 72 6e 20 74 6f 6b 65 6e 20 3d return token = 00001bd0: 20 35 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 59 /* SyntaxKin 00001be0: 64 2e 41 74 54 6f 6b 65 6e 20 2a 2f 3b 0a 20 20 d.AtToken */;. 00001bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 00001c00: 73 65 20 31 33 20 2f 2a 20 43 68 61 72 61 63 74 se 13 /* Charact 00001c10: 65 72 43 6f 64 65 73 2e 63 61 72 72 69 61 67 65 erCodes.carriage 00001c20: 52 65 74 75 72 6e 20 2a 2f 3a 0a 20 20 20 20 20 Return */:. 00001c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i 00001c40: 66 20 28 74 65 78 74 2e 63 68 61 72 43 6f 64 65 f (text.charCode 00001c50: 41 74 28 70 6f 73 29 20 3d 3d 3d 20 31 30 20 2f At(pos) === 10 / 00001c60: 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 65 73 * CharacterCodes 00001c70: 2e 6c 69 6e 65 46 65 65 64 20 2a 2f 29 20 7b 0a .lineFeed */) {. 00001c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001c90: 20 20 20 20 20 20 20 20 70 6f 73 2b 2b 3b 0a 20 pos++;. 00001ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001cb0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 00001cc0: 20 20 20 20 20 2f 2f 20 66 61 6c 6c 73 20 74 68 // falls th 00001cd0: 72 6f 75 67 68 0a 20 20 20 20 20 20 20 20 20 20 rough. 00001ce0: 20 20 20 20 20 20 63 61 73 65 20 31 30 20 2f 2a case 10 /* 00001cf0: 20 43 68 61 72 61 63 74 65 72 43 6f 64 65 73 2e CharacterCodes. 00001d00: 6c 69 6e 65 46 65 65 64 20 2a 2f 3a 0a 20 20 20 lineFeed */:. 00001d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001d20: 20 74 6f 6b 65 6e 46 6c 61 67 73 20 7c 3d 20 31 tokenFlags |= 1 00001d30: 20 2f 2a 20 54 6f 6b 65 6e 46 6c 61 67 73 2e 50 /* TokenFlags.P 00001d40: 72 65 63 65 64 69 6e 67 4c 69 6e 65 42 72 65 61 recedingLineBrea 00001d50: 6b 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 20 20 k */;. 00001d60: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00001d70: 20 74 6f 6b 65 6e 20 3d 20 34 20 2f 2a 20 53 79 token = 4 /* Sy 00001d80: 6e 74 61 78 4b 69 6e 64 2e 4e 65 77 4c 69 6e 65 ntaxKind.NewLine 00001d90: 54 72 69 76 69 61 20 2a 2f 3b 0a 20 20 20 20 20 Trivia */;. 00001da0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00001db0: 34 32 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 42 /* CharacterC 00001dc0: 6f 64 65 73 2e 61 73 74 65 72 69 73 6b 20 2a 2f odes.asterisk */ 00001dd0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 00001de0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 6f 6b return tok 00001df0: 65 6e 20 3d 20 34 31 20 2f 2a 20 53 79 6e 74 61 en = 41 /* Synta 00001e00: 78 4b 69 6e 64 2e 41 73 74 65 72 69 73 6b 54 6f xKind.AsteriskTo 00001e10: 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 ken */;. 00001e20: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 32 33 case 123 00001e30: 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 /* CharacterCod 00001e40: 65 73 2e 6f 70 65 6e 42 72 61 63 65 20 2a 2f 3a es.openBrace */: 00001e50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00001e60: 20 20 20 20 20 72 65 74 75 72 6e 20 74 6f 6b 65 return toke 00001e70: 6e 20 3d 20 31 38 20 2f 2a 20 53 79 6e 74 61 78 n = 18 /* Syntax 00001e80: 4b 69 6e 64 2e 4f 70 65 6e 42 72 61 63 65 54 6f Kind.OpenBraceTo 00001e90: 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 ken */;. 00001ea0: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 32 35 case 125 00001eb0: 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 /* CharacterCod 00001ec0: 65 73 2e 63 6c 6f 73 65 42 72 61 63 65 20 2a 2f es.closeBrace */ 00001ed0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 00001ee0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 6f 6b return tok 00001ef0: 65 6e 20 3d 20 31 39 20 2f 2a 20 53 79 6e 74 61 en = 19 /* Synta 00001f00: 78 4b 69 6e 64 2e 43 6c 6f 73 65 42 72 61 63 65 xKind.CloseBrace 00001f10: 54 6f 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 Token */;. 00001f20: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 39 case 9 00001f30: 31 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 1 /* CharacterCo 00001f40: 64 65 73 2e 6f 70 65 6e 42 72 61 63 6b 65 74 20 des.openBracket 00001f50: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00001f60: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 00001f70: 6f 6b 65 6e 20 3d 20 32 32 20 2f 2a 20 53 79 6e oken = 22 /* Syn 00001f80: 74 61 78 4b 69 6e 64 2e 4f 70 65 6e 42 72 61 63 taxKind.OpenBrac 00001f90: 6b 65 74 54 6f 6b 65 6e 20 2a 2f 3b 0a 20 20 20 ketToken */;. 00001fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 cas 00001fb0: 65 20 39 33 20 2f 2a 20 43 68 61 72 61 63 74 65 e 93 /* Characte 00001fc0: 72 43 6f 64 65 73 2e 63 6c 6f 73 65 42 72 61 63 rCodes.closeBrac 00001fd0: 6b 65 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ket */:. 00001fe0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00001ff0: 72 6e 20 74 6f 6b 65 6e 20 3d 20 32 33 20 2f 2a rn token = 23 /* 00002000: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6c 6f 73 SyntaxKind.Clos 00002010: 65 42 72 61 63 6b 65 74 54 6f 6b 65 6e 20 2a 2f eBracketToken */ 00002020: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 00002030: 20 20 63 61 73 65 20 36 30 20 2f 2a 20 43 68 61 case 60 /* Cha 00002040: 72 61 63 74 65 72 43 6f 64 65 73 2e 6c 65 73 73 racterCodes.less 00002050: 54 68 61 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 Than */:. 00002060: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00002070: 75 72 6e 20 74 6f 6b 65 6e 20 3d 20 32 39 20 2f urn token = 29 / 00002080: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4c 65 73 * SyntaxKind.Les 00002090: 73 54 68 61 6e 54 6f 6b 65 6e 20 2a 2f 3b 0a 20 sThanToken */;. 000020a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 000020b0: 61 73 65 20 36 32 20 2f 2a 20 43 68 61 72 61 63 ase 62 /* Charac 000020c0: 74 65 72 43 6f 64 65 73 2e 67 72 65 61 74 65 72 terCodes.greater 000020d0: 54 68 61 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 Than */:. 000020e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 000020f0: 75 72 6e 20 74 6f 6b 65 6e 20 3d 20 33 31 20 2f urn token = 31 / 00002100: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 47 72 65 * SyntaxKind.Gre 00002110: 61 74 65 72 54 68 61 6e 54 6f 6b 65 6e 20 2a 2f aterThanToken */ 00002120: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 00002130: 20 20 63 61 73 65 20 36 31 20 2f 2a 20 43 68 61 case 61 /* Cha 00002140: 72 61 63 74 65 72 43 6f 64 65 73 2e 65 71 75 61 racterCodes.equa 00002150: 6c 73 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 ls */:. 00002160: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00002170: 6e 20 74 6f 6b 65 6e 20 3d 20 36 33 20 2f 2a 20 n token = 63 /* 00002180: 53 79 6e 74 61 78 4b 69 6e 64 2e 45 71 75 61 6c SyntaxKind.Equal 00002190: 73 54 6f 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 20 sToken */;. 000021a0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 000021b0: 34 34 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 44 /* CharacterC 000021c0: 6f 64 65 73 2e 63 6f 6d 6d 61 20 2a 2f 3a 0a 20 odes.comma */:. 000021d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000021e0: 20 20 20 72 65 74 75 72 6e 20 74 6f 6b 65 6e 20 return token 000021f0: 3d 20 32 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 = 27 /* SyntaxKi 00002200: 6e 64 2e 43 6f 6d 6d 61 54 6f 6b 65 6e 20 2a 2f nd.CommaToken */ 00002210: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 00002220: 20 20 63 61 73 65 20 34 36 20 2f 2a 20 43 68 61 case 46 /* Cha 00002230: 72 61 63 74 65 72 43 6f 64 65 73 2e 64 6f 74 20 racterCodes.dot 00002240: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00002250: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 00002260: 6f 6b 65 6e 20 3d 20 32 34 20 2f 2a 20 53 79 6e oken = 24 /* Syn 00002270: 74 61 78 4b 69 6e 64 2e 44 6f 74 54 6f 6b 65 6e taxKind.DotToken 00002280: 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 20 20 20 */;. 00002290: 20 20 20 20 20 63 61 73 65 20 39 36 20 2f 2a 20 case 96 /* 000022a0: 43 68 61 72 61 63 74 65 72 43 6f 64 65 73 2e 62 CharacterCodes.b 000022b0: 61 63 6b 74 69 63 6b 20 2a 2f 3a 0a 20 20 20 20 acktick */:. 000022c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000022d0: 72 65 74 75 72 6e 20 74 6f 6b 65 6e 20 3d 20 36 return token = 6 000022e0: 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 1 /* SyntaxKind. 000022f0: 42 61 63 6b 74 69 63 6b 54 6f 6b 65 6e 20 2a 2f BacktickToken */ 00002300: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 00002310: 20 20 63 61 73 65 20 33 35 20 2f 2a 20 43 68 61 case 35 /* Cha 00002320: 72 61 63 74 65 72 43 6f 64 65 73 2e 68 61 73 68 racterCodes.hash 00002330: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00002340: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 00002350: 74 6f 6b 65 6e 20 3d 20 36 32 20 2f 2a 20 53 79 token = 62 /* Sy 00002360: 6e 74 61 78 4b 69 6e 64 2e 48 61 73 68 54 6f 6b ntaxKind.HashTok 00002370: 65 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 20 en */;. 00002380: 20 20 20 20 20 20 20 63 61 73 65 20 39 32 20 2f case 92 / 00002390: 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 65 73 * CharacterCodes 000023a0: 2e 62 61 63 6b 73 6c 61 73 68 20 2a 2f 3a 0a 20 .backslash */:. 000023b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000023c0: 20 20 20 70 6f 73 2d 2d 3b 0a 20 20 20 20 20 20 pos--;. 000023d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 va 000023e0: 72 20 65 78 74 65 6e 64 65 64 43 6f 6f 6b 65 64 r extendedCooked 000023f0: 43 68 61 72 20 3d 20 70 65 65 6b 45 78 74 65 6e Char = peekExten 00002400: 64 65 64 55 6e 69 63 6f 64 65 45 73 63 61 70 65 dedUnicodeEscape 00002410: 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ();. 00002420: 20 20 20 20 20 20 20 20 69 66 20 28 65 78 74 65 if (exte 00002430: 6e 64 65 64 43 6f 6f 6b 65 64 43 68 61 72 20 3e ndedCookedChar > 00002440: 3d 20 30 20 26 26 20 69 73 49 64 65 6e 74 69 66 = 0 && isIdentif 00002450: 69 65 72 53 74 61 72 74 28 65 78 74 65 6e 64 65 ierStart(extende 00002460: 64 43 6f 6f 6b 65 64 43 68 61 72 2c 20 6c 61 6e dCookedChar, lan 00002470: 67 75 61 67 65 56 65 72 73 69 6f 6e 29 29 20 7b guageVersion)) { 00002480: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00002490: 20 20 20 20 20 20 20 20 20 70 6f 73 20 2b 3d 20 pos += 000024a0: 33 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3;. 000024b0: 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e token 000024c0: 46 6c 61 67 73 20 7c 3d 20 38 20 2f 2a 20 54 6f Flags |= 8 /* To 000024d0: 6b 65 6e 46 6c 61 67 73 2e 45 78 74 65 6e 64 65 kenFlags.Extende 000024e0: 64 55 6e 69 63 6f 64 65 45 73 63 61 70 65 20 2a dUnicodeEscape * 000024f0: 2f 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /;. 00002500: 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e token 00002510: 56 61 6c 75 65 20 3d 20 73 63 61 6e 45 78 74 65 Value = scanExte 00002520: 6e 64 65 64 55 6e 69 63 6f 64 65 45 73 63 61 70 ndedUnicodeEscap 00002530: 65 28 29 20 2b 20 73 63 61 6e 49 64 65 6e 74 69 e() + scanIdenti 00002540: 66 69 65 72 50 61 72 74 73 28 29 3b 0a 20 20 20 fierParts();. 00002550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00002560: 20 20 20 20 20 72 65 74 75 72 6e 20 74 6f 6b 65 return toke 00002570: 6e 20 3d 20 67 65 74 49 64 65 6e 74 69 66 69 65 n = getIdentifie 00002580: 72 54 6f 6b 65 6e 28 29 3b 0a 20 20 20 20 20 20 rToken();. 00002590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }. 000025a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000025b0: 20 20 20 20 76 61 72 20 63 6f 6f 6b 65 64 43 68 var cookedCh 000025c0: 61 72 20 3d 20 70 65 65 6b 55 6e 69 63 6f 64 65 ar = peekUnicode 000025d0: 45 73 63 61 70 65 28 29 3b 0a 20 20 20 20 20 20 Escape();. 000025e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if 000025f0: 20 28 63 6f 6f 6b 65 64 43 68 61 72 20 3e 3d 20 (cookedChar >= 00002600: 30 20 26 26 20 69 73 49 64 65 6e 74 69 66 69 65 0 && isIdentifie 00002610: 72 53 74 61 72 74 28 63 6f 6f 6b 65 64 43 68 61 rStart(cookedCha 00002620: 72 2c 20 6c 61 6e 67 75 61 67 65 56 65 72 73 69 r, languageVersi 00002630: 6f 6e 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 on)) {. 00002640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 p 00002650: 6f 73 20 2b 3d 20 36 3b 0a 20 20 20 20 20 20 20 os += 6;. 00002660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00002670: 20 74 6f 6b 65 6e 46 6c 61 67 73 20 7c 3d 20 31 tokenFlags |= 1 00002680: 30 32 34 20 2f 2a 20 54 6f 6b 65 6e 46 6c 61 67 024 /* TokenFlag 00002690: 73 2e 55 6e 69 63 6f 64 65 45 73 63 61 70 65 20 s.UnicodeEscape 000026a0: 2a 2f 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 */;. 000026b0: 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 toke 000026c0: 6e 56 61 6c 75 65 20 3d 20 53 74 72 69 6e 67 2e nValue = String. 000026d0: 66 72 6f 6d 43 68 61 72 43 6f 64 65 28 63 6f 6f fromCharCode(coo 000026e0: 6b 65 64 43 68 61 72 29 20 2b 20 73 63 61 6e 49 kedChar) + scanI 000026f0: 64 65 6e 74 69 66 69 65 72 50 61 72 74 73 28 29 dentifierParts() 00002700: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 00002710: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00002720: 20 74 6f 6b 65 6e 20 3d 20 67 65 74 49 64 65 6e token = getIden 00002730: 74 69 66 69 65 72 54 6f 6b 65 6e 28 29 3b 0a 20 tifierToken();. 00002740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00002750: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 00002760: 20 20 20 20 20 20 20 20 20 70 6f 73 2b 2b 3b 0a pos++;. 00002770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00002780: 20 20 20 20 72 65 74 75 72 6e 20 74 6f 6b 65 6e return token 00002790: 20 3d 20 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 = 0 /* SyntaxKi 000027a0: 6e 64 2e 55 6e 6b 6e 6f 77 6e 20 2a 2f 3b 0a 20 nd.Unknown */;. 000027b0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 000027c0: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73 49 if (isI 000027d0: 64 65 6e 74 69 66 69 65 72 53 74 61 72 74 28 63 dentifierStart(c 000027e0: 68 2c 20 6c 61 6e 67 75 61 67 65 56 65 72 73 69 h, languageVersi 000027f0: 6f 6e 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 on)) {. 00002800: 20 20 20 20 20 20 20 76 61 72 20 63 68 61 72 20 var char 00002810: 3d 20 63 68 3b 0a 20 20 20 20 20 20 20 20 20 20 = ch;. 00002820: 20 20 20 20 20 20 77 68 69 6c 65 20 28 70 6f 73 while (pos 00002830: 20 3c 20 65 6e 64 20 26 26 20 69 73 49 64 65 6e < end && isIden 00002840: 74 69 66 69 65 72 50 61 72 74 28 63 68 61 72 20 tifierPart(char 00002850: 3d 20 63 6f 64 65 50 6f 69 6e 74 41 74 28 74 65 = codePointAt(te 00002860: 78 74 2c 20 70 6f 73 29 2c 20 6c 61 6e 67 75 61 xt, pos), langua 00002870: 67 65 56 65 72 73 69 6f 6e 29 20 7c 7c 20 74 65 geVersion) || te 00002880: 78 74 2e 63 68 61 72 43 6f 64 65 41 74 28 70 6f xt.charCodeAt(po 00002890: 73 29 20 3d 3d 3d 20 34 35 20 2f 2a 20 43 68 61 s) === 45 /* Cha 000028a0: 72 61 63 74 65 72 43 6f 64 65 73 2e 6d 69 6e 75 racterCodes.minu 000028b0: 73 20 2a 2f 29 0a 20 20 20 20 20 20 20 20 20 20 s */). 000028c0: 20 20 20 20 20 20 20 20 20 20 70 6f 73 20 2b 3d pos += 000028d0: 20 63 68 61 72 53 69 7a 65 28 63 68 61 72 29 3b charSize(char); 000028e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 000028f0: 20 74 6f 6b 65 6e 56 61 6c 75 65 20 3d 20 74 65 tokenValue = te 00002900: 78 74 2e 73 75 62 73 74 72 69 6e 67 28 74 6f 6b xt.substring(tok 00002910: 65 6e 50 6f 73 2c 20 70 6f 73 29 3b 0a 20 20 20 enPos, pos);. 00002920: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if 00002930: 28 63 68 61 72 20 3d 3d 3d 20 39 32 20 2f 2a 20 (char === 92 /* 00002940: 43 68 61 72 61 63 74 65 72 43 6f 64 65 73 2e 62 CharacterCodes.b 00002950: 61 63 6b 73 6c 61 73 68 20 2a 2f 29 20 7b 0a 20 ackslash */) {. 00002960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00002970: 20 20 20 74 6f 6b 65 6e 56 61 6c 75 65 20 2b 3d tokenValue += 00002980: 20 73 63 61 6e 49 64 65 6e 74 69 66 69 65 72 50 scanIdentifierP 00002990: 61 72 74 73 28 29 3b 0a 20 20 20 20 20 20 20 20 arts();. 000029a0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 000029b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 000029c0: 20 74 6f 6b 65 6e 20 3d 20 67 65 74 49 64 65 6e token = getIden 000029d0: 74 69 66 69 65 72 54 6f 6b 65 6e 28 29 3b 0a 20 tifierToken();. 000029e0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 000029f0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a else {. 00002a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00002a10: 72 65 74 75 72 6e 20 74 6f 6b 65 6e 20 3d 20 30 return token = 0 00002a20: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 55 /* SyntaxKind.U 00002a30: 6e 6b 6e 6f 77 6e 20 2a 2f 3b 0a 20 20 20 20 20 nknown */;. 00002a40: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00002a50: 20 7d 0a 20 20 20 20 20 20 20 20 66 75 6e 63 74 }. funct 00002a60: 69 6f 6e 20 73 70 65 63 75 6c 61 74 69 6f 6e 48 ion speculationH 00002a70: 65 6c 70 65 72 28 63 61 6c 6c 62 61 63 6b 2c 20 elper(callback, 00002a80: 69 73 4c 6f 6f 6b 61 68 65 61 64 29 20 7b 0a 20 isLookahead) {. 00002a90: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 73 var s 00002aa0: 61 76 65 50 6f 73 20 3d 20 70 6f 73 3b 0a 20 20 avePos = pos;. 00002ab0: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 73 61 var sa 00002ac0: 76 65 53 74 61 72 74 50 6f 73 20 3d 20 73 74 61 veStartPos = sta 00002ad0: 72 74 50 6f 73 3b 0a 20 20 20 20 20 20 20 20 20 rtPos;. 00002ae0: 20 20 20 76 61 72 20 73 61 76 65 54 6f 6b 65 6e var saveToken 00002af0: 50 6f 73 20 3d 20 74 6f 6b 65 6e 50 6f 73 3b 0a Pos = tokenPos;. 00002b00: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var 00002b10: 73 61 76 65 54 6f 6b 65 6e 20 3d 20 74 6f 6b 65 saveToken = toke 00002b20: 6e 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 n;. v 00002b30: 61 72 20 73 61 76 65 54 6f 6b 65 6e 56 61 6c 75 ar saveTokenValu 00002b40: 65 20 3d 20 74 6f 6b 65 6e 56 61 6c 75 65 3b 0a e = tokenValue;. 00002b50: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var 00002b60: 73 61 76 65 54 6f 6b 65 6e 46 6c 61 67 73 20 3d saveTokenFlags = 00002b70: 20 74 6f 6b 65 6e 46 6c 61 67 73 3b 0a 20 20 20 tokenFlags;. 00002b80: 20 20 20 20 20 20 20 20 20 76 61 72 20 72 65 73 var res 00002b90: 75 6c 74 20 3d 20 63 61 6c 6c 62 61 63 6b 28 29 ult = callback() 00002ba0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f ;. // 00002bb0: 20 49 66 20 6f 75 72 20 63 61 6c 6c 62 61 63 6b If our callback 00002bc0: 20 72 65 74 75 72 6e 65 64 20 73 6f 6d 65 74 68 returned someth 00002bd0: 69 6e 67 20 27 66 61 6c 73 79 27 20 6f 72 20 77 ing 'falsy' or w 00002be0: 65 27 72 65 20 6a 75 73 74 20 6c 6f 6f 6b 69 6e e're just lookin 00002bf0: 67 20 61 68 65 61 64 2c 0a 20 20 20 20 20 20 20 g ahead,. 00002c00: 20 20 20 20 20 2f 2f 20 74 68 65 6e 20 75 6e 63 // then unc 00002c10: 6f 6e 64 69 74 69 6f 6e 61 6c 6c 79 20 72 65 73 onditionally res 00002c20: 74 6f 72 65 20 75 73 20 74 6f 20 77 68 65 72 65 tore us to where 00002c30: 20 77 65 20 77 65 72 65 2e 0a 20 20 20 20 20 20 we were.. 00002c40: 20 20 20 20 20 20 69 66 20 28 21 72 65 73 75 6c if (!resul 00002c50: 74 20 7c 7c 20 69 73 4c 6f 6f 6b 61 68 65 61 64 t || isLookahead 00002c60: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 00002c70: 20 20 20 20 70 6f 73 20 3d 20 73 61 76 65 50 6f pos = savePo 00002c80: 73 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 s;. 00002c90: 20 20 20 73 74 61 72 74 50 6f 73 20 3d 20 73 61 startPos = sa 00002ca0: 76 65 53 74 61 72 74 50 6f 73 3b 0a 20 20 20 20 veStartPos;. 00002cb0: 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 toke 00002cc0: 6e 50 6f 73 20 3d 20 73 61 76 65 54 6f 6b 65 6e nPos = saveToken 00002cd0: 50 6f 73 3b 0a 20 20 20 20 20 20 20 20 20 20 20 Pos;. 00002ce0: 20 20 20 20 20 74 6f 6b 65 6e 20 3d 20 73 61 76 token = sav 00002cf0: 65 54 6f 6b 65 6e 3b 0a 20 20 20 20 20 20 20 20 eToken;. 00002d00: 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 56 61 6c tokenVal 00002d10: 75 65 20 3d 20 73 61 76 65 54 6f 6b 65 6e 56 61 ue = saveTokenVa 00002d20: 6c 75 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 lue;. 00002d30: 20 20 20 20 20 74 6f 6b 65 6e 46 6c 61 67 73 20 tokenFlags 00002d40: 3d 20 73 61 76 65 54 6f 6b 65 6e 46 6c 61 67 73 = saveTokenFlags 00002d50: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a ;. }. 00002d60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00002d70: 72 6e 20 72 65 73 75 6c 74 3b 0a 20 20 20 20 20 rn result;. 00002d80: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 66 75 6e }. fun 00002d90: 63 74 69 6f 6e 20 73 63 61 6e 52 61 6e 67 65 28 ction scanRange( 00002da0: 73 74 61 72 74 2c 20 6c 65 6e 67 74 68 2c 20 63 start, length, c 00002db0: 61 6c 6c 62 61 63 6b 29 20 7b 0a 20 20 20 20 20 allback) {. 00002dc0: 20 20 20 20 20 20 20 76 61 72 20 73 61 76 65 45 var saveE 00002dd0: 6e 64 20 3d 20 65 6e 64 3b 0a 20 20 20 20 20 20 nd = end;. 00002de0: 20 20 20 20 20 20 76 61 72 20 73 61 76 65 50 6f var savePo 00002df0: 73 20 3d 20 70 6f 73 3b 0a 20 20 20 20 20 20 20 s = pos;. 00002e00: 20 20 20 20 20 76 61 72 20 73 61 76 65 53 74 61 var saveSta 00002e10: 72 74 50 6f 73 20 3d 20 73 74 61 72 74 50 6f 73 rtPos = startPos 00002e20: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 ;. va 00002e30: 72 20 73 61 76 65 54 6f 6b 65 6e 50 6f 73 20 3d r saveTokenPos = 00002e40: 20 74 6f 6b 65 6e 50 6f 73 3b 0a 20 20 20 20 20 tokenPos;. 00002e50: 20 20 20 20 20 20 20 76 61 72 20 73 61 76 65 54 var saveT 00002e60: 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e 3b 0a 20 20 oken = token;. 00002e70: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 73 61 var sa 00002e80: 76 65 54 6f 6b 65 6e 56 61 6c 75 65 20 3d 20 74 veTokenValue = t 00002e90: 6f 6b 65 6e 56 61 6c 75 65 3b 0a 20 20 20 20 20 okenValue;. 00002ea0: 20 20 20 20 20 20 20 76 61 72 20 73 61 76 65 54 var saveT 00002eb0: 6f 6b 65 6e 46 6c 61 67 73 20 3d 20 74 6f 6b 65 okenFlags = toke 00002ec0: 6e 46 6c 61 67 73 3b 0a 20 20 20 20 20 20 20 20 nFlags;. 00002ed0: 20 20 20 20 76 61 72 20 73 61 76 65 45 72 72 6f var saveErro 00002ee0: 72 45 78 70 65 63 74 61 74 69 6f 6e 73 20 3d 20 rExpectations = 00002ef0: 63 6f 6d 6d 65 6e 74 44 69 72 65 63 74 69 76 65 commentDirective 00002f00: 73 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 s;. s 00002f10: 65 74 54 65 78 74 28 74 65 78 74 2c 20 73 74 61 etText(text, sta 00002f20: 72 74 2c 20 6c 65 6e 67 74 68 29 3b 0a 20 20 20 rt, length);. 00002f30: 20 20 20 20 20 20 20 20 20 76 61 72 20 72 65 73 var res 00002f40: 75 6c 74 20 3d 20 63 61 6c 6c 62 61 63 6b 28 29 ult = callback() 00002f50: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e ;. en 00002f60: 64 20 3d 20 73 61 76 65 45 6e 64 3b 0a 20 20 20 d = saveEnd;. 00002f70: 20 20 20 20 20 20 20 20 20 70 6f 73 20 3d 20 73 pos = s 00002f80: 61 76 65 50 6f 73 3b 0a 20 20 20 20 20 20 20 20 avePos;. 00002f90: 20 20 20 20 73 74 61 72 74 50 6f 73 20 3d 20 73 startPos = s 00002fa0: 61 76 65 53 74 61 72 74 50 6f 73 3b 0a 20 20 20 aveStartPos;. 00002fb0: 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 50 6f tokenPo 00002fc0: 73 20 3d 20 73 61 76 65 54 6f 6b 65 6e 50 6f 73 s = saveTokenPos 00002fd0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f ;. to 00002fe0: 6b 65 6e 20 3d 20 73 61 76 65 54 6f 6b 65 6e 3b ken = saveToken; 00002ff0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b . tok 00003000: 65 6e 56 61 6c 75 65 20 3d 20 73 61 76 65 54 6f enValue = saveTo 00003010: 6b 65 6e 56 61 6c 75 65 3b 0a 20 20 20 20 20 20 kenValue;. 00003020: 20 20 20 20 20 20 74 6f 6b 65 6e 46 6c 61 67 73 tokenFlags 00003030: 20 3d 20 73 61 76 65 54 6f 6b 65 6e 46 6c 61 67 = saveTokenFlag 00003040: 73 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 s;. c 00003050: 6f 6d 6d 65 6e 74 44 69 72 65 63 74 69 76 65 73 ommentDirectives 00003060: 20 3d 20 73 61 76 65 45 72 72 6f 72 45 78 70 65 = saveErrorExpe 00003070: 63 74 61 74 69 6f 6e 73 3b 0a 20 20 20 20 20 20 ctations;. 00003080: 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 return res 00003090: 75 6c 74 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 ult;. }. 000030a0: 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 function 000030b0: 6c 6f 6f 6b 41 68 65 61 64 28 63 61 6c 6c 62 61 lookAhead(callba 000030c0: 63 6b 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 ck) {. 000030d0: 20 20 72 65 74 75 72 6e 20 73 70 65 63 75 6c 61 return specula 000030e0: 74 69 6f 6e 48 65 6c 70 65 72 28 63 61 6c 6c 62 tionHelper(callb 000030f0: 61 63 6b 2c 20 2f 2a 69 73 4c 6f 6f 6b 61 68 65 ack, /*isLookahe 00003100: 61 64 2a 2f 20 74 72 75 65 29 3b 0a 20 20 20 20 ad*/ true);. 00003110: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 66 75 }. fu 00003120: 6e 63 74 69 6f 6e 20 74 72 79 53 63 61 6e 28 63 nction tryScan(c 00003130: 61 6c 6c 62 61 63 6b 29 20 7b 0a 20 20 20 20 20 allback) {. 00003140: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 70 return sp 00003150: 65 63 75 6c 61 74 69 6f 6e 48 65 6c 70 65 72 28 eculationHelper( 00003160: 63 61 6c 6c 62 61 63 6b 2c 20 2f 2a 69 73 4c 6f callback, /*isLo 00003170: 6f 6b 61 68 65 61 64 2a 2f 20 66 61 6c 73 65 29 okahead*/ false) 00003180: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 00003190: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 function get 000031a0: 54 65 78 74 28 29 20 7b 0a 20 20 20 20 20 20 20 Text() {. 000031b0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 65 78 74 return text 000031c0: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 000031d0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 6c 65 function cle 000031e0: 61 72 43 6f 6d 6d 65 6e 74 44 69 72 65 63 74 69 arCommentDirecti 000031f0: 76 65 73 28 29 20 7b 0a 20 20 20 20 20 20 20 20 ves() {. 00003200: 20 20 20 20 63 6f 6d 6d 65 6e 74 44 69 72 65 63 commentDirec 00003210: 74 69 76 65 73 20 3d 20 75 6e 64 65 66 69 6e 65 tives = undefine 00003220: 64 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 d;. }. 00003230: 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 73 65 function se 00003240: 74 54 65 78 74 28 6e 65 77 54 65 78 74 2c 20 73 tText(newText, s 00003250: 74 61 72 74 2c 20 6c 65 6e 67 74 68 29 20 7b 0a tart, length) {. 00003260: 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 text 00003270: 20 3d 20 6e 65 77 54 65 78 74 20 7c 7c 20 22 22 = newText || "" 00003280: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e ;. en 00003290: 64 20 3d 20 6c 65 6e 67 74 68 20 3d 3d 3d 20 75 d = length === u 000032a0: 6e 64 65 66 69 6e 65 64 20 3f 20 74 65 78 74 2e ndefined ? text. 000032b0: 6c 65 6e 67 74 68 20 3a 20 73 74 61 72 74 20 2b length : start + 000032c0: 20 6c 65 6e 67 74 68 3b 0a 20 20 20 20 20 20 20 length;. 000032d0: 20 20 20 20 20 73 65 74 54 65 78 74 50 6f 73 28 setTextPos( 000032e0: 73 74 61 72 74 20 7c 7c 20 30 29 3b 0a 20 20 20 start || 0);. 000032f0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 66 }. f 00003300: 75 6e 63 74 69 6f 6e 20 73 65 74 4f 6e 45 72 72 unction setOnErr 00003310: 6f 72 28 65 72 72 6f 72 43 61 6c 6c 62 61 63 6b or(errorCallback 00003320: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 00003330: 6f 6e 45 72 72 6f 72 20 3d 20 65 72 72 6f 72 43 onError = errorC 00003340: 61 6c 6c 62 61 63 6b 3b 0a 20 20 20 20 20 20 20 allback;. 00003350: 20 7d 0a 20 20 20 20 20 20 20 20 66 75 6e 63 74 }. funct 00003360: 69 6f 6e 20 73 65 74 53 63 72 69 70 74 54 61 72 ion setScriptTar 00003370: 67 65 74 28 73 63 72 69 70 74 54 61 72 67 65 74 get(scriptTarget 00003380: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 00003390: 6c 61 6e 67 75 61 67 65 56 65 72 73 69 6f 6e 20 languageVersion 000033a0: 3d 20 73 63 72 69 70 74 54 61 72 67 65 74 3b 0a = scriptTarget;. 000033b0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 000033c0: 20 20 66 75 6e 63 74 69 6f 6e 20 73 65 74 4c 61 function setLa 000033d0: 6e 67 75 61 67 65 56 61 72 69 61 6e 74 28 76 61 nguageVariant(va 000033e0: 72 69 61 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 riant) {. 000033f0: 20 20 20 20 20 6c 61 6e 67 75 61 67 65 56 61 72 languageVar 00003400: 69 61 6e 74 20 3d 20 76 61 72 69 61 6e 74 3b 0a iant = variant;. 00003410: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 00003420: 20 20 66 75 6e 63 74 69 6f 6e 20 73 65 74 54 65 function setTe 00003430: 78 74 50 6f 73 28 74 65 78 74 50 6f 73 29 20 7b xtPos(textPos) { 00003440: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 73 2e . ts. 00003450: 44 65 62 75 67 2e 61 73 73 65 72 74 28 74 65 78 Debug.assert(tex 00003460: 74 50 6f 73 20 3e 3d 20 30 29 3b 0a 20 20 20 20 tPos >= 0);. 00003470: 20 20 20 20 20 20 20 20 70 6f 73 20 3d 20 74 65 pos = te 00003480: 78 74 50 6f 73 3b 0a 20 20 20 20 20 20 20 20 20 xtPos;. 00003490: 20 20 20 73 74 61 72 74 50 6f 73 20 3d 20 74 65 startPos = te 000034a0: 78 74 50 6f 73 3b 0a 20 20 20 20 20 20 20 20 20 xtPos;. 000034b0: 20 20 20 74 6f 6b 65 6e 50 6f 73 20 3d 20 74 65 tokenPos = te 000034c0: 78 74 50 6f 73 3b 0a 20 20 20 20 20 20 20 20 20 xtPos;. 000034d0: 20 20 20 74 6f 6b 65 6e 20 3d 20 30 20 2f 2a 20 token = 0 /* 000034e0: 53 79 6e 74 61 78 4b 69 6e 64 2e 55 6e 6b 6e 6f SyntaxKind.Unkno 000034f0: 77 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 20 wn */;. 00003500: 20 20 20 74 6f 6b 65 6e 56 61 6c 75 65 20 3d 20 tokenValue = 00003510: 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 undefined;. 00003520: 20 20 20 20 20 20 20 74 6f 6b 65 6e 46 6c 61 67 tokenFlag 00003530: 73 20 3d 20 30 20 2f 2a 20 54 6f 6b 65 6e 46 6c s = 0 /* TokenFl 00003540: 61 67 73 2e 4e 6f 6e 65 20 2a 2f 3b 0a 20 20 20 ags.None */;. 00003550: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 66 }. f 00003560: 75 6e 63 74 69 6f 6e 20 73 65 74 49 6e 4a 53 44 unction setInJSD 00003570: 6f 63 54 79 70 65 28 69 6e 54 79 70 65 29 20 7b ocType(inType) { 00003580: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 4a . inJ 00003590: 53 44 6f 63 54 79 70 65 20 2b 3d 20 69 6e 54 79 SDocType += inTy 000035a0: 70 65 20 3f 20 31 20 3a 20 2d 31 3b 0a 20 20 20 pe ? 1 : -1;. 000035b0: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 }. }. 000035c0: 20 74 73 2e 63 72 65 61 74 65 53 63 61 6e 6e 65 ts.createScanne 000035d0: 72 20 3d 20 63 72 65 61 74 65 53 63 61 6e 6e 65 r = createScanne 000035e0: 72 3b 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 r;. /* @inter 000035f0: 6e 61 6c 20 2a 2f 0a 20 20 20 20 76 61 72 20 63 nal */. var c 00003600: 6f 64 65 50 6f 69 6e 74 41 74 20 3d 20 53 74 72 odePointAt = Str 00003610: 69 6e 67 2e 70 72 6f 74 6f 74 79 70 65 2e 63 6f ing.prototype.co 00003620: 64 65 50 6f 69 6e 74 41 74 20 3f 20 66 75 6e 63 dePointAt ? func 00003630: 74 69 6f 6e 20 28 73 2c 20 69 29 20 7b 20 72 65 tion (s, i) { re 00003640: 74 75 72 6e 20 73 2e 63 6f 64 65 50 6f 69 6e 74 turn s.codePoint 00003650: 41 74 28 69 29 3b 20 7d 20 3a 20 66 75 6e 63 74 At(i); } : funct 00003660: 69 6f 6e 20 63 6f 64 65 50 6f 69 6e 74 41 74 28 ion codePointAt( 00003670: 73 74 72 2c 20 69 29 20 7b 0a 20 20 20 20 20 20 str, i) {. 00003680: 20 20 2f 2f 20 66 72 6f 6d 20 68 74 74 70 73 3a // from https: 00003690: 2f 2f 64 65 76 65 6c 6f 70 65 72 2e 6d 6f 7a 69 //developer.mozi 000036a0: 6c 6c 61 2e 6f 72 67 2f 65 6e 2d 55 53 2f 64 6f lla.org/en-US/do 000036b0: 63 73 2f 57 65 62 2f 4a 61 76 61 53 63 72 69 70 cs/Web/JavaScrip 000036c0: 74 2f 52 65 66 65 72 65 6e 63 65 2f 47 6c 6f 62 t/Reference/Glob 000036d0: 61 6c 5f 4f 62 6a 65 63 74 73 2f 53 74 72 69 6e al_Objects/Strin 000036e0: 67 2f 63 6f 64 65 50 6f 69 6e 74 41 74 0a 20 20 g/codePointAt. 000036f0: 20 20 20 20 20 20 76 61 72 20 73 69 7a 65 20 3d var size = 00003700: 20 73 74 72 2e 6c 65 6e 67 74 68 3b 0a 20 20 20 str.length;. 00003710: 20 20 20 20 20 2f 2f 20 41 63 63 6f 75 6e 74 20 // Account 00003720: 66 6f 72 20 6f 75 74 2d 6f 66 2d 62 6f 75 6e 64 for out-of-bound 00003730: 73 20 69 6e 64 69 63 65 73 3a 0a 20 20 20 20 20 s indices:. 00003740: 20 20 20 69 66 20 28 69 20 3c 20 30 20 7c 7c 20 if (i < 0 || 00003750: 69 20 3e 3d 20 73 69 7a 65 29 20 7b 0a 20 20 20 i >= size) {. 00003760: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 00003770: 75 6e 64 65 66 69 6e 65 64 3b 20 2f 2f 20 53 74 undefined; // St 00003780: 72 69 6e 67 2e 63 6f 64 65 50 6f 69 6e 74 41 74 ring.codePointAt 00003790: 20 72 65 74 75 72 6e 73 20 60 75 6e 64 65 66 69 returns `undefi 000037a0: 6e 65 64 60 20 66 6f 72 20 4f 4f 42 20 69 6e 64 ned` for OOB ind 000037b0: 65 78 65 73 0a 20 20 20 20 20 20 20 20 7d 0a 20 exes. }. 000037c0: 20 20 20 20 20 20 20 2f 2f 20 47 65 74 20 74 68 // Get th 000037d0: 65 20 66 69 72 73 74 20 63 6f 64 65 20 75 6e 69 e first code uni 000037e0: 74 0a 20 20 20 20 20 20 20 20 76 61 72 20 66 69 t. var fi 000037f0: 72 73 74 20 3d 20 73 74 72 2e 63 68 61 72 43 6f rst = str.charCo 00003800: 64 65 41 74 28 69 29 3b 0a 20 20 20 20 20 20 20 deAt(i);. 00003810: 20 2f 2f 20 63 68 65 63 6b 20 69 66 20 69 74 e2 // check if it. 00003820: 80 99 73 20 74 68 65 20 73 74 61 72 74 20 6f 66 ..s the start of 00003830: 20 61 20 73 75 72 72 6f 67 61 74 65 20 70 61 69 a surrogate pai 00003840: 72 0a 20 20 20 20 20 20 20 20 69 66 20 28 66 69 r. if (fi 00003850: 72 73 74 20 3e 3d 20 30 78 44 38 30 30 20 26 26 rst >= 0xD800 && 00003860: 20 66 69 72 73 74 20 3c 3d 20 30 78 44 42 46 46 first <= 0xDBFF 00003870: 20 26 26 20 73 69 7a 65 20 3e 20 69 20 2b 20 31 && size > i + 1 00003880: 29 20 7b 20 2f 2f 20 68 69 67 68 20 73 75 72 72 ) { // high surr 00003890: 6f 67 61 74 65 20 61 6e 64 20 74 68 65 72 65 20 ogate and there 000038a0: 69 73 20 61 20 6e 65 78 74 20 63 6f 64 65 20 75 is a next code u 000038b0: 6e 69 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 nit. 000038c0: 76 61 72 20 73 65 63 6f 6e 64 20 3d 20 73 74 72 var second = str 000038d0: 2e 63 68 61 72 43 6f 64 65 41 74 28 69 20 2b 20 .charCodeAt(i + 000038e0: 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 1);. 000038f0: 69 66 20 28 73 65 63 6f 6e 64 20 3e 3d 20 30 78 if (second >= 0x 00003900: 44 43 30 30 20 26 26 20 73 65 63 6f 6e 64 20 3c DC00 && second < 00003910: 3d 20 30 78 44 46 46 46 29 20 7b 20 2f 2f 20 6c = 0xDFFF) { // l 00003920: 6f 77 20 73 75 72 72 6f 67 61 74 65 0a 20 20 20 ow surrogate. 00003930: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 // 00003940: 68 74 74 70 73 3a 2f 2f 6d 61 74 68 69 61 73 62 https://mathiasb 00003950: 79 6e 65 6e 73 2e 62 65 2f 6e 6f 74 65 73 2f 6a ynens.be/notes/j 00003960: 61 76 61 73 63 72 69 70 74 2d 65 6e 63 6f 64 69 avascript-encodi 00003970: 6e 67 23 73 75 72 72 6f 67 61 74 65 2d 66 6f 72 ng#surrogate-for 00003980: 6d 75 6c 61 65 0a 20 20 20 20 20 20 20 20 20 20 mulae. 00003990: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 66 69 return (fi 000039a0: 72 73 74 20 2d 20 30 78 44 38 30 30 29 20 2a 20 rst - 0xD800) * 000039b0: 30 78 34 30 30 20 2b 20 73 65 63 6f 6e 64 20 2d 0x400 + second - 000039c0: 20 30 78 44 43 30 30 20 2b 20 30 78 31 30 30 30 0xDC00 + 0x1000 000039d0: 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0;. } 000039e0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }. 000039f0: 20 20 20 72 65 74 75 72 6e 20 66 69 72 73 74 3b return first; 00003a00: 0a 20 20 20 20 7d 3b 0a 20 20 20 20 2f 2a 20 40 . };. /* @ 00003a10: 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 internal */. 00003a20: 66 75 6e 63 74 69 6f 6e 20 63 68 61 72 53 69 7a function charSiz 00003a30: 65 28 63 68 29 20 7b 0a 20 20 20 20 20 20 20 20 e(ch) {. 00003a40: 69 66 20 28 63 68 20 3e 3d 20 30 78 31 30 30 30 if (ch >= 0x1000 00003a50: 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 0) {. 00003a60: 20 72 65 74 75 72 6e 20 32 3b 0a 20 20 20 20 20 return 2;. 00003a70: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 }. ret 00003a80: 75 72 6e 20 31 3b 0a 20 20 20 20 7d 0a 20 20 20 urn 1;. }. 00003a90: 20 2f 2f 20 44 65 72 69 76 65 64 20 66 72 6f 6d // Derived from 00003aa0: 20 74 68 65 20 31 30 2e 31 2e 31 20 55 54 46 31 the 10.1.1 UTF1 00003ab0: 36 45 6e 63 6f 64 69 6e 67 20 6f 66 20 74 68 65 6Encoding of the 00003ac0: 20 45 53 36 20 53 70 65 63 2e 0a 20 20 20 20 66 ES6 Spec.. f 00003ad0: 75 6e 63 74 69 6f 6e 20 75 74 66 31 36 45 6e 63 unction utf16Enc 00003ae0: 6f 64 65 41 73 53 74 72 69 6e 67 46 61 6c 6c 62 odeAsStringFallb 00003af0: 61 63 6b 28 63 6f 64 65 50 6f 69 6e 74 29 20 7b ack(codePoint) { 00003b00: 0a 20 20 20 20 20 20 20 20 74 73 2e 44 65 62 75 . ts.Debu 00003b10: 67 2e 61 73 73 65 72 74 28 30 78 30 20 3c 3d 20 g.assert(0x0 <= 00003b20: 63 6f 64 65 50 6f 69 6e 74 20 26 26 20 63 6f 64 codePoint && cod 00003b30: 65 50 6f 69 6e 74 20 3c 3d 20 30 78 31 30 46 46 ePoint <= 0x10FF 00003b40: 46 46 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 FF);. if 00003b50: 28 63 6f 64 65 50 6f 69 6e 74 20 3c 3d 20 36 35 (codePoint <= 65 00003b60: 35 33 35 29 20 7b 0a 20 20 20 20 20 20 20 20 20 535) {. 00003b70: 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 return String 00003b80: 2e 66 72 6f 6d 43 68 61 72 43 6f 64 65 28 63 6f .fromCharCode(co 00003b90: 64 65 50 6f 69 6e 74 29 3b 0a 20 20 20 20 20 20 dePoint);. 00003ba0: 20 20 7d 0a 20 20 20 20 20 20 20 20 76 61 72 20 }. var 00003bb0: 63 6f 64 65 55 6e 69 74 31 20 3d 20 4d 61 74 68 codeUnit1 = Math 00003bc0: 2e 66 6c 6f 6f 72 28 28 63 6f 64 65 50 6f 69 6e .floor((codePoin 00003bd0: 74 20 2d 20 36 35 35 33 36 29 20 2f 20 31 30 32 t - 65536) / 102 00003be0: 34 29 20 2b 20 30 78 44 38 30 30 3b 0a 20 20 20 4) + 0xD800;. 00003bf0: 20 20 20 20 20 76 61 72 20 63 6f 64 65 55 6e 69 var codeUni 00003c00: 74 32 20 3d 20 28 28 63 6f 64 65 50 6f 69 6e 74 t2 = ((codePoint 00003c10: 20 2d 20 36 35 35 33 36 29 20 25 20 31 30 32 34 - 65536) % 1024 00003c20: 29 20 2b 20 30 78 44 43 30 30 3b 0a 20 20 20 20 ) + 0xDC00;. 00003c30: 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e return Strin 00003c40: 67 2e 66 72 6f 6d 43 68 61 72 43 6f 64 65 28 63 g.fromCharCode(c 00003c50: 6f 64 65 55 6e 69 74 31 2c 20 63 6f 64 65 55 6e odeUnit1, codeUn 00003c60: 69 74 32 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 it2);. }. 00003c70: 76 61 72 20 75 74 66 31 36 45 6e 63 6f 64 65 41 var utf16EncodeA 00003c80: 73 53 74 72 69 6e 67 57 6f 72 6b 65 72 20 3d 20 sStringWorker = 00003c90: 53 74 72 69 6e 67 2e 66 72 6f 6d 43 6f 64 65 50 String.fromCodeP 00003ca0: 6f 69 6e 74 20 3f 20 66 75 6e 63 74 69 6f 6e 20 oint ? function 00003cb0: 28 63 6f 64 65 50 6f 69 6e 74 29 20 7b 20 72 65 (codePoint) { re 00003cc0: 74 75 72 6e 20 53 74 72 69 6e 67 2e 66 72 6f 6d turn String.from 00003cd0: 43 6f 64 65 50 6f 69 6e 74 28 63 6f 64 65 50 6f CodePoint(codePo 00003ce0: 69 6e 74 29 3b 20 7d 20 3a 20 75 74 66 31 36 45 int); } : utf16E 00003cf0: 6e 63 6f 64 65 41 73 53 74 72 69 6e 67 46 61 6c ncodeAsStringFal 00003d00: 6c 62 61 63 6b 3b 0a 20 20 20 20 2f 2a 20 40 69 lback;. /* @i 00003d10: 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 nternal */. f 00003d20: 75 6e 63 74 69 6f 6e 20 75 74 66 31 36 45 6e 63 unction utf16Enc 00003d30: 6f 64 65 41 73 53 74 72 69 6e 67 28 63 6f 64 65 odeAsString(code 00003d40: 50 6f 69 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 Point) {. 00003d50: 20 72 65 74 75 72 6e 20 75 74 66 31 36 45 6e 63 return utf16Enc 00003d60: 6f 64 65 41 73 53 74 72 69 6e 67 57 6f 72 6b 65 odeAsStringWorke 00003d70: 72 28 63 6f 64 65 50 6f 69 6e 74 29 3b 0a 20 20 r(codePoint);. 00003d80: 20 20 7d 0a 20 20 20 20 74 73 2e 75 74 66 31 36 }. ts.utf16 00003d90: 45 6e 63 6f 64 65 41 73 53 74 72 69 6e 67 20 3d EncodeAsString = 00003da0: 20 75 74 66 31 36 45 6e 63 6f 64 65 41 73 53 74 utf16EncodeAsSt 00003db0: 72 69 6e 67 3b 0a 7d 29 28 74 73 20 7c 7c 20 28 ring;.})(ts || ( 00003dc0: 74 73 20 3d 20 7b 7d 29 29 3b 0a 76 61 72 20 74 ts = {}));.var t 00003dd0: 73 3b 0a 28 66 75 6e 63 74 69 6f 6e 20 28 74 73 s;.(function (ts 00003de0: 29 20 7b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ) {. function 00003df0: 20 69 73 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c isExternalModul 00003e00: 65 4e 61 6d 65 52 65 6c 61 74 69 76 65 28 6d 6f eNameRelative(mo 00003e10: 64 75 6c 65 4e 61 6d 65 29 20 7b 0a 20 20 20 20 duleName) {. 00003e20: 20 20 20 20 2f 2f 20 54 79 70 65 53 63 72 69 70 // TypeScrip 00003e30: 74 20 31 2e 30 20 73 70 65 63 20 28 41 70 72 69 t 1.0 spec (Apri 00003e40: 6c 20 32 30 31 34 29 3a 20 31 31 2e 32 2e 31 0a l 2014): 11.2.1. 00003e50: 20 20 20 20 20 20 20 20 2f 2f 20 41 6e 20 65 78 // An ex 00003e60: 74 65 72 6e 61 6c 20 6d 6f 64 75 6c 65 20 6e 61 ternal module na 00003e70: 6d 65 20 69 73 20 22 72 65 6c 61 74 69 76 65 22 me is "relative" 00003e80: 20 69 66 20 74 68 65 20 66 69 72 73 74 20 74 65 if the first te 00003e90: 72 6d 20 69 73 20 22 2e 22 20 6f 72 20 22 2e 2e rm is "." or ".. 00003ea0: 22 2e 0a 20 20 20 20 20 20 20 20 2f 2f 20 55 70 ".. // Up 00003eb0: 64 61 74 65 3a 20 57 65 20 61 6c 73 6f 20 63 6f date: We also co 00003ec0: 6e 73 69 64 65 72 20 61 20 70 61 74 68 20 6c 69 nsider a path li 00003ed0: 6b 65 20 60 43 3a 5c 66 6f 6f 2e 74 73 60 20 22 ke `C:\foo.ts` " 00003ee0: 72 65 6c 61 74 69 76 65 22 20 62 65 63 61 75 73 relative" becaus 00003ef0: 65 20 77 65 20 64 6f 20 6e 6f 74 20 73 65 61 72 e we do not sear 00003f00: 63 68 20 66 6f 72 20 69 74 20 69 6e 20 60 6e 6f ch for it in `no 00003f10: 64 65 5f 6d 6f 64 75 6c 65 73 60 20 6f 72 20 74 de_modules` or t 00003f20: 72 65 61 74 20 69 74 20 61 73 20 61 6e 20 61 6d reat it as an am 00003f30: 62 69 65 6e 74 20 6d 6f 64 75 6c 65 2e 0a 20 20 bient module.. 00003f40: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 00003f50: 70 61 74 68 49 73 52 65 6c 61 74 69 76 65 28 6d pathIsRelative(m 00003f60: 6f 64 75 6c 65 4e 61 6d 65 29 20 7c 7c 20 74 73 oduleName) || ts 00003f70: 2e 69 73 52 6f 6f 74 65 64 44 69 73 6b 50 61 74 .isRootedDiskPat 00003f80: 68 28 6d 6f 64 75 6c 65 4e 61 6d 65 29 3b 0a 20 h(moduleName);. 00003f90: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 45 78 }. ts.isEx 00003fa0: 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 4e 61 6d 65 ternalModuleName 00003fb0: 52 65 6c 61 74 69 76 65 20 3d 20 69 73 45 78 74 Relative = isExt 00003fc0: 65 72 6e 61 6c 4d 6f 64 75 6c 65 4e 61 6d 65 52 ernalModuleNameR 00003fd0: 65 6c 61 74 69 76 65 3b 0a 20 20 20 20 66 75 6e elative;. fun 00003fe0: 63 74 69 6f 6e 20 73 6f 72 74 41 6e 64 44 65 64 ction sortAndDed 00003ff0: 75 70 6c 69 63 61 74 65 44 69 61 67 6e 6f 73 74 uplicateDiagnost 00004000: 69 63 73 28 64 69 61 67 6e 6f 73 74 69 63 73 29 ics(diagnostics) 00004010: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00004020: 6e 20 74 73 2e 73 6f 72 74 41 6e 64 44 65 64 75 n ts.sortAndDedu 00004030: 70 6c 69 63 61 74 65 28 64 69 61 67 6e 6f 73 74 plicate(diagnost 00004040: 69 63 73 2c 20 74 73 2e 63 6f 6d 70 61 72 65 44 ics, ts.compareD 00004050: 69 61 67 6e 6f 73 74 69 63 73 29 3b 0a 20 20 20 iagnostics);. 00004060: 20 7d 0a 20 20 20 20 74 73 2e 73 6f 72 74 41 6e }. ts.sortAn 00004070: 64 44 65 64 75 70 6c 69 63 61 74 65 44 69 61 67 dDeduplicateDiag 00004080: 6e 6f 73 74 69 63 73 20 3d 20 73 6f 72 74 41 6e nostics = sortAn 00004090: 64 44 65 64 75 70 6c 69 63 61 74 65 44 69 61 67 dDeduplicateDiag 000040a0: 6e 6f 73 74 69 63 73 3b 0a 20 20 20 20 66 75 6e nostics;. fun 000040b0: 63 74 69 6f 6e 20 67 65 74 44 65 66 61 75 6c 74 ction getDefault 000040c0: 4c 69 62 46 69 6c 65 4e 61 6d 65 28 6f 70 74 69 LibFileName(opti 000040d0: 6f 6e 73 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ons) {. s 000040e0: 77 69 74 63 68 20 28 74 73 2e 67 65 74 45 6d 69 witch (ts.getEmi 000040f0: 74 53 63 72 69 70 74 54 61 72 67 65 74 28 6f 70 tScriptTarget(op 00004100: 74 69 6f 6e 73 29 29 20 7b 0a 20 20 20 20 20 20 tions)) {. 00004110: 20 20 20 20 20 20 63 61 73 65 20 39 39 20 2f 2a case 99 /* 00004120: 20 53 63 72 69 70 74 54 61 72 67 65 74 2e 45 53 ScriptTarget.ES 00004130: 4e 65 78 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 Next */:. 00004140: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 00004150: 22 6c 69 62 2e 65 73 6e 65 78 74 2e 66 75 6c 6c "lib.esnext.full 00004160: 2e 64 2e 74 73 22 3b 0a 20 20 20 20 20 20 20 20 .d.ts";. 00004170: 20 20 20 20 63 61 73 65 20 39 20 2f 2a 20 53 63 case 9 /* Sc 00004180: 72 69 70 74 54 61 72 67 65 74 2e 45 53 32 30 32 riptTarget.ES202 00004190: 32 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 2 */:. 000041a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 6c 69 return "li 000041b0: 62 2e 65 73 32 30 32 32 2e 66 75 6c 6c 2e 64 2e b.es2022.full.d. 000041c0: 74 73 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ts";. 000041d0: 20 63 61 73 65 20 38 20 2f 2a 20 53 63 72 69 70 case 8 /* Scrip 000041e0: 74 54 61 72 67 65 74 2e 45 53 32 30 32 31 20 2a tTarget.ES2021 * 000041f0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 00004200: 20 20 20 72 65 74 75 72 6e 20 22 6c 69 62 2e 65 return "lib.e 00004210: 73 32 30 32 31 2e 66 75 6c 6c 2e 64 2e 74 73 22 s2021.full.d.ts" 00004220: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ;. ca 00004230: 73 65 20 37 20 2f 2a 20 53 63 72 69 70 74 54 61 se 7 /* ScriptTa 00004240: 72 67 65 74 2e 45 53 32 30 32 30 20 2a 2f 3a 0a rget.ES2020 */:. 00004250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00004260: 72 65 74 75 72 6e 20 22 6c 69 62 2e 65 73 32 30 return "lib.es20 00004270: 32 30 2e 66 75 6c 6c 2e 64 2e 74 73 22 3b 0a 20 20.full.d.ts";. 00004280: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00004290: 36 20 2f 2a 20 53 63 72 69 70 74 54 61 72 67 65 6 /* ScriptTarge 000042a0: 74 2e 45 53 32 30 31 39 20 2a 2f 3a 0a 20 20 20 t.ES2019 */:. 000042b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 000042c0: 75 72 6e 20 22 6c 69 62 2e 65 73 32 30 31 39 2e urn "lib.es2019. 000042d0: 66 75 6c 6c 2e 64 2e 74 73 22 3b 0a 20 20 20 20 full.d.ts";. 000042e0: 20 20 20 20 20 20 20 20 63 61 73 65 20 35 20 2f case 5 / 000042f0: 2a 20 53 63 72 69 70 74 54 61 72 67 65 74 2e 45 * ScriptTarget.E 00004300: 53 32 30 31 38 20 2a 2f 3a 0a 20 20 20 20 20 20 S2018 */:. 00004310: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00004320: 20 22 6c 69 62 2e 65 73 32 30 31 38 2e 66 75 6c "lib.es2018.ful 00004330: 6c 2e 64 2e 74 73 22 3b 0a 20 20 20 20 20 20 20 l.d.ts";. 00004340: 20 20 20 20 20 63 61 73 65 20 34 20 2f 2a 20 53 case 4 /* S 00004350: 63 72 69 70 74 54 61 72 67 65 74 2e 45 53 32 30 criptTarget.ES20 00004360: 31 37 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 17 */:. 00004370: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 6c return "l 00004380: 69 62 2e 65 73 32 30 31 37 2e 66 75 6c 6c 2e 64 ib.es2017.full.d 00004390: 2e 74 73 22 3b 0a 20 20 20 20 20 20 20 20 20 20 .ts";. 000043a0: 20 20 63 61 73 65 20 33 20 2f 2a 20 53 63 72 69 case 3 /* Scri 000043b0: 70 74 54 61 72 67 65 74 2e 45 53 32 30 31 36 20 ptTarget.ES2016 000043c0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 000043d0: 20 20 20 20 72 65 74 75 72 6e 20 22 6c 69 62 2e return "lib. 000043e0: 65 73 32 30 31 36 2e 66 75 6c 6c 2e 64 2e 74 73 es2016.full.d.ts 000043f0: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 ";. c 00004400: 61 73 65 20 32 20 2f 2a 20 53 63 72 69 70 74 54 ase 2 /* ScriptT 00004410: 61 72 67 65 74 2e 45 53 32 30 31 35 20 2a 2f 3a arget.ES2015 */: 00004420: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00004430: 20 72 65 74 75 72 6e 20 22 6c 69 62 2e 65 73 36 return "lib.es6 00004440: 2e 64 2e 74 73 22 3b 20 2f 2f 20 57 65 20 64 6f .d.ts"; // We do 00004450: 6e 27 74 20 75 73 65 20 6c 69 62 2e 65 73 32 30 n't use lib.es20 00004460: 31 35 2e 66 75 6c 6c 2e 64 2e 74 73 20 64 75 65 15.full.d.ts due 00004470: 20 74 6f 20 62 72 65 61 6b 69 6e 67 20 63 68 61 to breaking cha 00004480: 6e 67 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 nge.. 00004490: 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 default:. 000044a0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 000044b0: 20 22 6c 69 62 2e 64 2e 74 73 22 3b 0a 20 20 20 "lib.d.ts";. 000044c0: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 }. }. 000044d0: 20 74 73 2e 67 65 74 44 65 66 61 75 6c 74 4c 69 ts.getDefaultLi 000044e0: 62 46 69 6c 65 4e 61 6d 65 20 3d 20 67 65 74 44 bFileName = getD 000044f0: 65 66 61 75 6c 74 4c 69 62 46 69 6c 65 4e 61 6d efaultLibFileNam 00004500: 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 e;. function 00004510: 74 65 78 74 53 70 61 6e 45 6e 64 28 73 70 61 6e textSpanEnd(span 00004520: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 00004530: 72 6e 20 73 70 61 6e 2e 73 74 61 72 74 20 2b 20 rn span.start + 00004540: 73 70 61 6e 2e 6c 65 6e 67 74 68 3b 0a 20 20 20 span.length;. 00004550: 20 7d 0a 20 20 20 20 74 73 2e 74 65 78 74 53 70 }. ts.textSp 00004560: 61 6e 45 6e 64 20 3d 20 74 65 78 74 53 70 61 6e anEnd = textSpan 00004570: 45 6e 64 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f End;. functio 00004580: 6e 20 74 65 78 74 53 70 61 6e 49 73 45 6d 70 74 n textSpanIsEmpt 00004590: 79 28 73 70 61 6e 29 20 7b 0a 20 20 20 20 20 20 y(span) {. 000045a0: 20 20 72 65 74 75 72 6e 20 73 70 61 6e 2e 6c 65 return span.le 000045b0: 6e 67 74 68 20 3d 3d 3d 20 30 3b 0a 20 20 20 20 ngth === 0;. 000045c0: 7d 0a 20 20 20 20 74 73 2e 74 65 78 74 53 70 61 }. ts.textSpa 000045d0: 6e 49 73 45 6d 70 74 79 20 3d 20 74 65 78 74 53 nIsEmpty = textS 000045e0: 70 61 6e 49 73 45 6d 70 74 79 3b 0a 20 20 20 20 panIsEmpty;. 000045f0: 66 75 6e 63 74 69 6f 6e 20 74 65 78 74 53 70 61 function textSpa 00004600: 6e 43 6f 6e 74 61 69 6e 73 50 6f 73 69 74 69 6f nContainsPositio 00004610: 6e 28 73 70 61 6e 2c 20 70 6f 73 69 74 69 6f 6e n(span, position 00004620: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 00004630: 72 6e 20 70 6f 73 69 74 69 6f 6e 20 3e 3d 20 73 rn position >= s 00004640: 70 61 6e 2e 73 74 61 72 74 20 26 26 20 70 6f 73 pan.start && pos 00004650: 69 74 69 6f 6e 20 3c 20 74 65 78 74 53 70 61 6e ition < textSpan 00004660: 45 6e 64 28 73 70 61 6e 29 3b 0a 20 20 20 20 7d End(span);. } 00004670: 0a 20 20 20 20 74 73 2e 74 65 78 74 53 70 61 6e . ts.textSpan 00004680: 43 6f 6e 74 61 69 6e 73 50 6f 73 69 74 69 6f 6e ContainsPosition 00004690: 20 3d 20 74 65 78 74 53 70 61 6e 43 6f 6e 74 61 = textSpanConta 000046a0: 69 6e 73 50 6f 73 69 74 69 6f 6e 3b 0a 20 20 20 insPosition;. 000046b0: 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f /* @internal */ 000046c0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 74 65 . function te 000046d0: 78 74 52 61 6e 67 65 43 6f 6e 74 61 69 6e 73 50 xtRangeContainsP 000046e0: 6f 73 69 74 69 6f 6e 49 6e 63 6c 75 73 69 76 65 ositionInclusive 000046f0: 28 73 70 61 6e 2c 20 70 6f 73 69 74 69 6f 6e 29 (span, position) 00004700: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00004710: 6e 20 70 6f 73 69 74 69 6f 6e 20 3e 3d 20 73 70 n position >= sp 00004720: 61 6e 2e 70 6f 73 20 26 26 20 70 6f 73 69 74 69 an.pos && positi 00004730: 6f 6e 20 3c 3d 20 73 70 61 6e 2e 65 6e 64 3b 0a on <= span.end;. 00004740: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 74 65 78 }. ts.tex 00004750: 74 52 61 6e 67 65 43 6f 6e 74 61 69 6e 73 50 6f tRangeContainsPo 00004760: 73 69 74 69 6f 6e 49 6e 63 6c 75 73 69 76 65 20 sitionInclusive 00004770: 3d 20 74 65 78 74 52 61 6e 67 65 43 6f 6e 74 61 = textRangeConta 00004780: 69 6e 73 50 6f 73 69 74 69 6f 6e 49 6e 63 6c 75 insPositionInclu 00004790: 73 69 76 65 3b 0a 20 20 20 20 2f 2f 20 52 65 74 sive;. // Ret 000047a0: 75 72 6e 73 20 74 72 75 65 20 69 66 20 27 73 70 urns true if 'sp 000047b0: 61 6e 27 20 63 6f 6e 74 61 69 6e 73 20 27 6f 74 an' contains 'ot 000047c0: 68 65 72 27 2e 0a 20 20 20 20 66 75 6e 63 74 69 her'.. functi 000047d0: 6f 6e 20 74 65 78 74 53 70 61 6e 43 6f 6e 74 61 on textSpanConta 000047e0: 69 6e 73 54 65 78 74 53 70 61 6e 28 73 70 61 6e insTextSpan(span 000047f0: 2c 20 6f 74 68 65 72 29 20 7b 0a 20 20 20 20 20 , other) {. 00004800: 20 20 20 72 65 74 75 72 6e 20 6f 74 68 65 72 2e return other. 00004810: 73 74 61 72 74 20 3e 3d 20 73 70 61 6e 2e 73 74 start >= span.st 00004820: 61 72 74 20 26 26 20 74 65 78 74 53 70 61 6e 45 art && textSpanE 00004830: 6e 64 28 6f 74 68 65 72 29 20 3c 3d 20 74 65 78 nd(other) <= tex 00004840: 74 53 70 61 6e 45 6e 64 28 73 70 61 6e 29 3b 0a tSpanEnd(span);. 00004850: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 74 65 78 }. ts.tex 00004860: 74 53 70 61 6e 43 6f 6e 74 61 69 6e 73 54 65 78 tSpanContainsTex 00004870: 74 53 70 61 6e 20 3d 20 74 65 78 74 53 70 61 6e tSpan = textSpan 00004880: 43 6f 6e 74 61 69 6e 73 54 65 78 74 53 70 61 6e ContainsTextSpan 00004890: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 74 ;. function t 000048a0: 65 78 74 53 70 61 6e 4f 76 65 72 6c 61 70 73 57 extSpanOverlapsW 000048b0: 69 74 68 28 73 70 61 6e 2c 20 6f 74 68 65 72 29 ith(span, other) 000048c0: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 000048d0: 6e 20 74 65 78 74 53 70 61 6e 4f 76 65 72 6c 61 n textSpanOverla 000048e0: 70 28 73 70 61 6e 2c 20 6f 74 68 65 72 29 20 21 p(span, other) ! 000048f0: 3d 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 == undefined;. 00004900: 20 20 7d 0a 20 20 20 20 74 73 2e 74 65 78 74 53 }. ts.textS 00004910: 70 61 6e 4f 76 65 72 6c 61 70 73 57 69 74 68 20 panOverlapsWith 00004920: 3d 20 74 65 78 74 53 70 61 6e 4f 76 65 72 6c 61 = textSpanOverla 00004930: 70 73 57 69 74 68 3b 0a 20 20 20 20 66 75 6e 63 psWith;. func 00004940: 74 69 6f 6e 20 74 65 78 74 53 70 61 6e 4f 76 65 tion textSpanOve 00004950: 72 6c 61 70 28 73 70 61 6e 31 2c 20 73 70 61 6e rlap(span1, span 00004960: 32 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 2) {. var 00004970: 20 6f 76 65 72 6c 61 70 20 3d 20 74 65 78 74 53 overlap = textS 00004980: 70 61 6e 49 6e 74 65 72 73 65 63 74 69 6f 6e 28 panIntersection( 00004990: 73 70 61 6e 31 2c 20 73 70 61 6e 32 29 3b 0a 20 span1, span2);. 000049a0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 76 return ov 000049b0: 65 72 6c 61 70 20 26 26 20 6f 76 65 72 6c 61 70 erlap && overlap 000049c0: 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 30 20 3f 20 .length === 0 ? 000049d0: 75 6e 64 65 66 69 6e 65 64 20 3a 20 6f 76 65 72 undefined : over 000049e0: 6c 61 70 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 lap;. }. t 000049f0: 73 2e 74 65 78 74 53 70 61 6e 4f 76 65 72 6c 61 s.textSpanOverla 00004a00: 70 20 3d 20 74 65 78 74 53 70 61 6e 4f 76 65 72 p = textSpanOver 00004a10: 6c 61 70 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f lap;. functio 00004a20: 6e 20 74 65 78 74 53 70 61 6e 49 6e 74 65 72 73 n textSpanInters 00004a30: 65 63 74 73 57 69 74 68 54 65 78 74 53 70 61 6e ectsWithTextSpan 00004a40: 28 73 70 61 6e 2c 20 6f 74 68 65 72 29 20 7b 0a (span, other) {. 00004a50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 return d 00004a60: 65 63 6f 64 65 64 54 65 78 74 53 70 61 6e 49 6e ecodedTextSpanIn 00004a70: 74 65 72 73 65 63 74 73 57 69 74 68 28 73 70 61 tersectsWith(spa 00004a80: 6e 2e 73 74 61 72 74 2c 20 73 70 61 6e 2e 6c 65 n.start, span.le 00004a90: 6e 67 74 68 2c 20 6f 74 68 65 72 2e 73 74 61 72 ngth, other.star 00004aa0: 74 2c 20 6f 74 68 65 72 2e 6c 65 6e 67 74 68 29 t, other.length) 00004ab0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 74 ;. }. ts.t 00004ac0: 65 78 74 53 70 61 6e 49 6e 74 65 72 73 65 63 74 extSpanIntersect 00004ad0: 73 57 69 74 68 54 65 78 74 53 70 61 6e 20 3d 20 sWithTextSpan = 00004ae0: 74 65 78 74 53 70 61 6e 49 6e 74 65 72 73 65 63 textSpanIntersec 00004af0: 74 73 57 69 74 68 54 65 78 74 53 70 61 6e 3b 0a tsWithTextSpan;. 00004b00: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 74 65 78 function tex 00004b10: 74 53 70 61 6e 49 6e 74 65 72 73 65 63 74 73 57 tSpanIntersectsW 00004b20: 69 74 68 28 73 70 61 6e 2c 20 73 74 61 72 74 2c ith(span, start, 00004b30: 20 6c 65 6e 67 74 68 29 20 7b 0a 20 20 20 20 20 length) {. 00004b40: 20 20 20 72 65 74 75 72 6e 20 64 65 63 6f 64 65 return decode 00004b50: 64 54 65 78 74 53 70 61 6e 49 6e 74 65 72 73 65 dTextSpanInterse 00004b60: 63 74 73 57 69 74 68 28 73 70 61 6e 2e 73 74 61 ctsWith(span.sta 00004b70: 72 74 2c 20 73 70 61 6e 2e 6c 65 6e 67 74 68 2c rt, span.length, 00004b80: 20 73 74 61 72 74 2c 20 6c 65 6e 67 74 68 29 3b start, length); 00004b90: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 74 65 . }. ts.te 00004ba0: 78 74 53 70 61 6e 49 6e 74 65 72 73 65 63 74 73 xtSpanIntersects 00004bb0: 57 69 74 68 20 3d 20 74 65 78 74 53 70 61 6e 49 With = textSpanI 00004bc0: 6e 74 65 72 73 65 63 74 73 57 69 74 68 3b 0a 20 ntersectsWith;. 00004bd0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 64 65 63 6f function deco 00004be0: 64 65 64 54 65 78 74 53 70 61 6e 49 6e 74 65 72 dedTextSpanInter 00004bf0: 73 65 63 74 73 57 69 74 68 28 73 74 61 72 74 31 sectsWith(start1 00004c00: 2c 20 6c 65 6e 67 74 68 31 2c 20 73 74 61 72 74 , length1, start 00004c10: 32 2c 20 6c 65 6e 67 74 68 32 29 20 7b 0a 20 20 2, length2) {. 00004c20: 20 20 20 20 20 20 76 61 72 20 65 6e 64 31 20 3d var end1 = 00004c30: 20 73 74 61 72 74 31 20 2b 20 6c 65 6e 67 74 68 start1 + length 00004c40: 31 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 65 1;. var e 00004c50: 6e 64 32 20 3d 20 73 74 61 72 74 32 20 2b 20 6c nd2 = start2 + l 00004c60: 65 6e 67 74 68 32 3b 0a 20 20 20 20 20 20 20 20 ength2;. 00004c70: 72 65 74 75 72 6e 20 73 74 61 72 74 32 20 3c 3d return start2 <= 00004c80: 20 65 6e 64 31 20 26 26 20 65 6e 64 32 20 3e 3d end1 && end2 >= 00004c90: 20 73 74 61 72 74 31 3b 0a 20 20 20 20 7d 0a 20 start1;. }. 00004ca0: 20 20 20 74 73 2e 64 65 63 6f 64 65 64 54 65 78 ts.decodedTex 00004cb0: 74 53 70 61 6e 49 6e 74 65 72 73 65 63 74 73 57 tSpanIntersectsW 00004cc0: 69 74 68 20 3d 20 64 65 63 6f 64 65 64 54 65 78 ith = decodedTex 00004cd0: 74 53 70 61 6e 49 6e 74 65 72 73 65 63 74 73 57 tSpanIntersectsW 00004ce0: 69 74 68 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ith;. functio 00004cf0: 6e 20 74 65 78 74 53 70 61 6e 49 6e 74 65 72 73 n textSpanInters 00004d00: 65 63 74 73 57 69 74 68 50 6f 73 69 74 69 6f 6e ectsWithPosition 00004d10: 28 73 70 61 6e 2c 20 70 6f 73 69 74 69 6f 6e 29 (span, position) 00004d20: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00004d30: 6e 20 70 6f 73 69 74 69 6f 6e 20 3c 3d 20 74 65 n position <= te 00004d40: 78 74 53 70 61 6e 45 6e 64 28 73 70 61 6e 29 20 xtSpanEnd(span) 00004d50: 26 26 20 70 6f 73 69 74 69 6f 6e 20 3e 3d 20 73 && position >= s 00004d60: 70 61 6e 2e 73 74 61 72 74 3b 0a 20 20 20 20 7d pan.start;. } 00004d70: 0a 20 20 20 20 74 73 2e 74 65 78 74 53 70 61 6e . ts.textSpan 00004d80: 49 6e 74 65 72 73 65 63 74 73 57 69 74 68 50 6f IntersectsWithPo 00004d90: 73 69 74 69 6f 6e 20 3d 20 74 65 78 74 53 70 61 sition = textSpa 00004da0: 6e 49 6e 74 65 72 73 65 63 74 73 57 69 74 68 50 nIntersectsWithP 00004db0: 6f 73 69 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e osition;. fun 00004dc0: 63 74 69 6f 6e 20 74 65 78 74 53 70 61 6e 49 6e ction textSpanIn 00004dd0: 74 65 72 73 65 63 74 69 6f 6e 28 73 70 61 6e 31 tersection(span1 00004de0: 2c 20 73 70 61 6e 32 29 20 7b 0a 20 20 20 20 20 , span2) {. 00004df0: 20 20 20 76 61 72 20 73 74 61 72 74 20 3d 20 4d var start = M 00004e00: 61 74 68 2e 6d 61 78 28 73 70 61 6e 31 2e 73 74 ath.max(span1.st 00004e10: 61 72 74 2c 20 73 70 61 6e 32 2e 73 74 61 72 74 art, span2.start 00004e20: 29 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 65 );. var e 00004e30: 6e 64 20 3d 20 4d 61 74 68 2e 6d 69 6e 28 74 65 nd = Math.min(te 00004e40: 78 74 53 70 61 6e 45 6e 64 28 73 70 61 6e 31 29 xtSpanEnd(span1) 00004e50: 2c 20 74 65 78 74 53 70 61 6e 45 6e 64 28 73 70 , textSpanEnd(sp 00004e60: 61 6e 32 29 29 3b 0a 20 20 20 20 20 20 20 20 72 an2));. r 00004e70: 65 74 75 72 6e 20 73 74 61 72 74 20 3c 3d 20 65 eturn start <= e 00004e80: 6e 64 20 3f 20 63 72 65 61 74 65 54 65 78 74 53 nd ? createTextS 00004e90: 70 61 6e 46 72 6f 6d 42 6f 75 6e 64 73 28 73 74 panFromBounds(st 00004ea0: 61 72 74 2c 20 65 6e 64 29 20 3a 20 75 6e 64 65 art, end) : unde 00004eb0: 66 69 6e 65 64 3b 0a 20 20 20 20 7d 0a 20 20 20 fined;. }. 00004ec0: 20 74 73 2e 74 65 78 74 53 70 61 6e 49 6e 74 65 ts.textSpanInte 00004ed0: 72 73 65 63 74 69 6f 6e 20 3d 20 74 65 78 74 53 rsection = textS 00004ee0: 70 61 6e 49 6e 74 65 72 73 65 63 74 69 6f 6e 3b panIntersection; 00004ef0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 . function cr 00004f00: 65 61 74 65 54 65 78 74 53 70 61 6e 28 73 74 61 eateTextSpan(sta 00004f10: 72 74 2c 20 6c 65 6e 67 74 68 29 20 7b 0a 20 20 rt, length) {. 00004f20: 20 20 20 20 20 20 69 66 20 28 73 74 61 72 74 20 if (start 00004f30: 3c 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 < 0) {. 00004f40: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 45 72 72 throw new Err 00004f50: 6f 72 28 22 73 74 61 72 74 20 3c 20 30 22 29 3b or("start < 0"); 00004f60: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }. 00004f70: 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3c 20 if (length < 00004f80: 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 0) {. 00004f90: 20 74 68 72 6f 77 20 6e 65 77 20 45 72 72 6f 72 throw new Error 00004fa0: 28 22 6c 65 6e 67 74 68 20 3c 20 30 22 29 3b 0a ("length < 0");. 00004fb0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 00004fc0: 20 20 72 65 74 75 72 6e 20 7b 20 73 74 61 72 74 return { start 00004fd0: 3a 20 73 74 61 72 74 2c 20 6c 65 6e 67 74 68 3a : start, length: 00004fe0: 20 6c 65 6e 67 74 68 20 7d 3b 0a 20 20 20 20 7d length };. } 00004ff0: 0a 20 20 20 20 74 73 2e 63 72 65 61 74 65 54 65 . ts.createTe 00005000: 78 74 53 70 61 6e 20 3d 20 63 72 65 61 74 65 54 xtSpan = createT 00005010: 65 78 74 53 70 61 6e 3b 0a 20 20 20 20 66 75 6e extSpan;. fun 00005020: 63 74 69 6f 6e 20 63 72 65 61 74 65 54 65 78 74 ction createText 00005030: 53 70 61 6e 46 72 6f 6d 42 6f 75 6e 64 73 28 73 SpanFromBounds(s 00005040: 74 61 72 74 2c 20 65 6e 64 29 20 7b 0a 20 20 20 tart, end) {. 00005050: 20 20 20 20 20 72 65 74 75 72 6e 20 63 72 65 61 return crea 00005060: 74 65 54 65 78 74 53 70 61 6e 28 73 74 61 72 74 teTextSpan(start 00005070: 2c 20 65 6e 64 20 2d 20 73 74 61 72 74 29 3b 0a , end - start);. 00005080: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 63 72 65 }. ts.cre 00005090: 61 74 65 54 65 78 74 53 70 61 6e 46 72 6f 6d 42 ateTextSpanFromB 000050a0: 6f 75 6e 64 73 20 3d 20 63 72 65 61 74 65 54 65 ounds = createTe 000050b0: 78 74 53 70 61 6e 46 72 6f 6d 42 6f 75 6e 64 73 xtSpanFromBounds 000050c0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 74 ;. function t 000050d0: 65 78 74 43 68 61 6e 67 65 52 61 6e 67 65 4e 65 extChangeRangeNe 000050e0: 77 53 70 61 6e 28 72 61 6e 67 65 29 20 7b 0a 20 wSpan(range) {. 000050f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 72 return cr 00005100: 65 61 74 65 54 65 78 74 53 70 61 6e 28 72 61 6e eateTextSpan(ran 00005110: 67 65 2e 73 70 61 6e 2e 73 74 61 72 74 2c 20 72 ge.span.start, r 00005120: 61 6e 67 65 2e 6e 65 77 4c 65 6e 67 74 68 29 3b ange.newLength); 00005130: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 74 65 . }. ts.te 00005140: 78 74 43 68 61 6e 67 65 52 61 6e 67 65 4e 65 77 xtChangeRangeNew 00005150: 53 70 61 6e 20 3d 20 74 65 78 74 43 68 61 6e 67 Span = textChang 00005160: 65 52 61 6e 67 65 4e 65 77 53 70 61 6e 3b 0a 20 eRangeNewSpan;. 00005170: 20 20 20 66 75 6e 63 74 69 6f 6e 20 74 65 78 74 function text 00005180: 43 68 61 6e 67 65 52 61 6e 67 65 49 73 55 6e 63 ChangeRangeIsUnc 00005190: 68 61 6e 67 65 64 28 72 61 6e 67 65 29 20 7b 0a hanged(range) {. 000051a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 000051b0: 65 78 74 53 70 61 6e 49 73 45 6d 70 74 79 28 72 extSpanIsEmpty(r 000051c0: 61 6e 67 65 2e 73 70 61 6e 29 20 26 26 20 72 61 ange.span) && ra 000051d0: 6e 67 65 2e 6e 65 77 4c 65 6e 67 74 68 20 3d 3d nge.newLength == 000051e0: 3d 20 30 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 = 0;. }. t 000051f0: 73 2e 74 65 78 74 43 68 61 6e 67 65 52 61 6e 67 s.textChangeRang 00005200: 65 49 73 55 6e 63 68 61 6e 67 65 64 20 3d 20 74 eIsUnchanged = t 00005210: 65 78 74 43 68 61 6e 67 65 52 61 6e 67 65 49 73 extChangeRangeIs 00005220: 55 6e 63 68 61 6e 67 65 64 3b 0a 20 20 20 20 66 Unchanged;. f 00005230: 75 6e 63 74 69 6f 6e 20 63 72 65 61 74 65 54 65 unction createTe 00005240: 78 74 43 68 61 6e 67 65 52 61 6e 67 65 28 73 70 xtChangeRange(sp 00005250: 61 6e 2c 20 6e 65 77 4c 65 6e 67 74 68 29 20 7b an, newLength) { 00005260: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 77 . if (new 00005270: 4c 65 6e 67 74 68 20 3c 20 30 29 20 7b 0a 20 20 Length < 0) {. 00005280: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 throw 00005290: 6e 65 77 20 45 72 72 6f 72 28 22 6e 65 77 4c 65 new Error("newLe 000052a0: 6e 67 74 68 20 3c 20 30 22 29 3b 0a 20 20 20 20 ngth < 0");. 000052b0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 }. re 000052c0: 74 75 72 6e 20 7b 20 73 70 61 6e 3a 20 73 70 61 turn { span: spa 000052d0: 6e 2c 20 6e 65 77 4c 65 6e 67 74 68 3a 20 6e 65 n, newLength: ne 000052e0: 77 4c 65 6e 67 74 68 20 7d 3b 0a 20 20 20 20 7d wLength };. } 000052f0: 0a 20 20 20 20 74 73 2e 63 72 65 61 74 65 54 65 . ts.createTe 00005300: 78 74 43 68 61 6e 67 65 52 61 6e 67 65 20 3d 20 xtChangeRange = 00005310: 63 72 65 61 74 65 54 65 78 74 43 68 61 6e 67 65 createTextChange 00005320: 52 61 6e 67 65 3b 0a 20 20 20 20 74 73 2e 75 6e Range;. ts.un 00005330: 63 68 61 6e 67 65 64 54 65 78 74 43 68 61 6e 67 changedTextChang 00005340: 65 52 61 6e 67 65 20 3d 20 63 72 65 61 74 65 54 eRange = createT 00005350: 65 78 74 43 68 61 6e 67 65 52 61 6e 67 65 28 63 extChangeRange(c 00005360: 72 65 61 74 65 54 65 78 74 53 70 61 6e 28 30 2c reateTextSpan(0, 00005370: 20 30 29 2c 20 30 29 3b 20 2f 2f 20 65 73 6c 69 0), 0); // esli 00005380: 6e 74 2d 64 69 73 61 62 6c 65 2d 6c 69 6e 65 20 nt-disable-line 00005390: 70 72 65 66 65 72 2d 63 6f 6e 73 74 0a 20 20 20 prefer-const. 000053a0: 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 43 61 6c 6c /**. * Call 000053b0: 65 64 20 74 6f 20 6d 65 72 67 65 20 61 6c 6c 20 ed to merge all 000053c0: 74 68 65 20 63 68 61 6e 67 65 73 20 74 68 61 74 the changes that 000053d0: 20 6f 63 63 75 72 72 65 64 20 61 63 72 6f 73 73 occurred across 000053e0: 20 73 65 76 65 72 61 6c 20 76 65 72 73 69 6f 6e several version 000053f0: 73 20 6f 66 20 61 20 73 63 72 69 70 74 20 73 6e s of a script sn 00005400: 61 70 73 68 6f 74 0a 20 20 20 20 20 2a 20 69 6e apshot. * in 00005410: 74 6f 20 61 20 73 69 6e 67 6c 65 20 63 68 61 6e to a single chan 00005420: 67 65 2e 20 20 69 2e 65 2e 20 69 66 20 61 20 75 ge. i.e. if a u 00005430: 73 65 72 20 6b 65 65 70 73 20 6d 61 6b 69 6e 67 ser keeps making 00005440: 20 73 75 63 63 65 73 73 69 76 65 20 65 64 69 74 successive edit 00005450: 73 20 74 6f 20 61 20 73 63 72 69 70 74 20 77 65 s to a script we 00005460: 20 77 69 6c 6c 0a 20 20 20 20 20 2a 20 68 61 76 will. * hav 00005470: 65 20 61 20 74 65 78 74 20 63 68 61 6e 67 65 20 e a text change 00005480: 66 72 6f 6d 20 56 31 20 74 6f 20 56 32 2c 20 56 from V1 to V2, V 00005490: 32 20 74 6f 20 56 33 2c 20 2e 2e 2e 2c 20 56 6e 2 to V3, ..., Vn 000054a0: 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 .. *. * 000054b0: 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 77 69 This function wi 000054c0: 6c 6c 20 74 68 65 6e 20 6d 65 72 67 65 20 74 68 ll then merge th 000054d0: 6f 73 65 20 63 68 61 6e 67 65 73 20 69 6e 74 6f ose changes into 000054e0: 20 61 20 73 69 6e 67 6c 65 20 63 68 61 6e 67 65 a single change 000054f0: 20 72 61 6e 67 65 20 76 61 6c 69 64 20 62 65 74 range valid bet 00005500: 77 65 65 6e 20 56 31 20 61 6e 64 0a 20 20 20 20 ween V1 and. 00005510: 20 2a 20 56 6e 2e 0a 20 20 20 20 20 2a 2f 0a 20 * Vn.. */. 00005520: 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 6f 6c 6c function coll 00005530: 61 70 73 65 54 65 78 74 43 68 61 6e 67 65 52 61 apseTextChangeRa 00005540: 6e 67 65 73 41 63 72 6f 73 73 4d 75 6c 74 69 70 ngesAcrossMultip 00005550: 6c 65 56 65 72 73 69 6f 6e 73 28 63 68 61 6e 67 leVersions(chang 00005560: 65 73 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 es) {. if 00005570: 20 28 63 68 61 6e 67 65 73 2e 6c 65 6e 67 74 68 (changes.length 00005580: 20 3d 3d 3d 20 30 29 20 7b 0a 20 20 20 20 20 20 === 0) {. 00005590: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 000055a0: 75 6e 63 68 61 6e 67 65 64 54 65 78 74 43 68 61 unchangedTextCha 000055b0: 6e 67 65 52 61 6e 67 65 3b 0a 20 20 20 20 20 20 ngeRange;. 000055c0: 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 }. if ( 000055d0: 63 68 61 6e 67 65 73 2e 6c 65 6e 67 74 68 20 3d changes.length = 000055e0: 3d 3d 20 31 29 20 7b 0a 20 20 20 20 20 20 20 20 == 1) {. 000055f0: 20 20 20 20 72 65 74 75 72 6e 20 63 68 61 6e 67 return chang 00005600: 65 73 5b 30 5d 3b 0a 20 20 20 20 20 20 20 20 7d es[0];. } 00005610: 0a 20 20 20 20 20 20 20 20 2f 2f 20 57 65 20 63 . // We c 00005620: 68 61 6e 67 65 20 66 72 6f 6d 20 74 61 6c 6b 69 hange from talki 00005630: 6e 67 20 61 62 6f 75 74 20 7b 20 7b 20 6f 6c 64 ng about { { old 00005640: 53 74 61 72 74 2c 20 6f 6c 64 4c 65 6e 67 74 68 Start, oldLength 00005650: 20 7d 2c 20 6e 65 77 4c 65 6e 67 74 68 20 7d 20 }, newLength } 00005660: 74 6f 20 7b 20 6f 6c 64 53 74 61 72 74 2c 20 6f to { oldStart, o 00005670: 6c 64 45 6e 64 2c 20 6e 65 77 45 6e 64 20 7d 0a ldEnd, newEnd }. 00005680: 20 20 20 20 20 20 20 20 2f 2f 20 61 73 20 69 74 // as it 00005690: 20 6d 61 6b 65 73 20 74 68 69 6e 67 73 20 6d 75 makes things mu 000056a0: 63 68 20 65 61 73 69 65 72 20 74 6f 20 72 65 61 ch easier to rea 000056b0: 73 6f 6e 20 61 62 6f 75 74 2e 0a 20 20 20 20 20 son about.. 000056c0: 20 20 20 76 61 72 20 63 68 61 6e 67 65 30 20 3d var change0 = 000056d0: 20 63 68 61 6e 67 65 73 5b 30 5d 3b 0a 20 20 20 changes[0];. 000056e0: 20 20 20 20 20 76 61 72 20 6f 6c 64 53 74 61 72 var oldStar 000056f0: 74 4e 20 3d 20 63 68 61 6e 67 65 30 2e 73 70 61 tN = change0.spa 00005700: 6e 2e 73 74 61 72 74 3b 0a 20 20 20 20 20 20 20 n.start;. 00005710: 20 76 61 72 20 6f 6c 64 45 6e 64 4e 20 3d 20 74 var oldEndN = t 00005720: 65 78 74 53 70 61 6e 45 6e 64 28 63 68 61 6e 67 extSpanEnd(chang 00005730: 65 30 2e 73 70 61 6e 29 3b 0a 20 20 20 20 20 20 e0.span);. 00005740: 20 20 76 61 72 20 6e 65 77 45 6e 64 4e 20 3d 20 var newEndN = 00005750: 6f 6c 64 53 74 61 72 74 4e 20 2b 20 63 68 61 6e oldStartN + chan 00005760: 67 65 30 2e 6e 65 77 4c 65 6e 67 74 68 3b 0a 20 ge0.newLength;. 00005770: 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 for (var 00005780: 69 20 3d 20 31 3b 20 69 20 3c 20 63 68 61 6e 67 i = 1; i < chang 00005790: 65 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 es.length; i++) 000057a0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 {. va 000057b0: 72 20 6e 65 78 74 43 68 61 6e 67 65 20 3d 20 63 r nextChange = c 000057c0: 68 61 6e 67 65 73 5b 69 5d 3b 0a 20 20 20 20 20 hanges[i];. 000057d0: 20 20 20 20 20 20 20 2f 2f 20 43 6f 6e 73 69 64 // Consid 000057e0: 65 72 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 er the following 000057f0: 20 63 61 73 65 3a 0a 20 20 20 20 20 20 20 20 20 case:. 00005800: 20 20 20 2f 2f 20 69 2e 65 2e 20 74 77 6f 20 65 // i.e. two e 00005810: 64 69 74 73 2e 20 20 54 68 65 20 66 69 72 73 74 dits. The first 00005820: 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 represents the 00005830: 74 65 78 74 20 63 68 61 6e 67 65 20 72 61 6e 67 text change rang 00005840: 65 20 7b 20 7b 20 31 30 2c 20 35 30 20 7d 2c 20 e { { 10, 50 }, 00005850: 33 30 20 7d 2e 20 20 69 2e 65 2e 20 54 68 65 20 30 }. i.e. The 00005860: 73 70 61 6e 20 73 74 61 72 74 69 6e 67 0a 20 20 span starting. 00005870: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 61 74 20 // at 00005880: 31 30 2c 20 77 69 74 68 20 6c 65 6e 67 74 68 20 10, with length 00005890: 35 30 20 69 73 20 72 65 64 75 63 65 64 20 74 6f 50 is reduced to 000058a0: 20 6c 65 6e 67 74 68 20 33 30 2e 20 20 54 68 65 length 30. The 000058b0: 20 73 65 63 6f 6e 64 20 72 65 70 72 65 73 65 6e second represen 000058c0: 74 73 20 74 68 65 20 74 65 78 74 20 63 68 61 6e ts the text chan 000058d0: 67 65 20 72 61 6e 67 65 20 7b 20 7b 20 33 30 2c ge range { { 30, 000058e0: 20 33 30 20 7d 2c 20 34 30 20 7d 2e 0a 20 20 20 30 }, 40 }.. 000058f0: 20 20 20 20 20 20 20 20 20 2f 2f 20 69 2e 65 2e // i.e. 00005900: 20 74 68 65 20 73 70 61 6e 20 73 74 61 72 74 69 the span starti 00005910: 6e 67 20 61 74 20 33 30 20 77 69 74 68 20 6c 65 ng at 30 with le 00005920: 6e 67 74 68 20 33 30 20 69 73 20 69 6e 63 72 65 ngth 30 is incre 00005930: 61 73 65 64 20 74 6f 20 6c 65 6e 67 74 68 20 34 ased to length 4 00005940: 30 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 0.. / 00005950: 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f /. // 00005960: 20 20 20 20 20 20 30 20 20 20 20 20 20 20 20 20 0 00005970: 31 30 20 20 20 20 20 20 20 20 32 30 20 20 20 20 10 20 00005980: 20 20 20 20 33 30 20 20 20 20 20 20 20 20 34 30 30 40 00005990: 20 20 20 20 20 20 20 20 35 30 20 20 20 20 20 20 50 000059a0: 20 20 36 30 20 20 20 20 20 20 20 20 37 30 20 20 60 70 000059b0: 20 20 20 20 20 20 38 30 20 20 20 20 20 20 20 20 80 000059c0: 39 30 20 20 20 20 20 20 20 20 31 30 30 0a 20 20 90 100. 000059d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 // 000059e0: 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -------------- 000059f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005a00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005a10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005a20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005a30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005a40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 20 ---------. 00005a50: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 // 00005a60: 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 | 00005a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005a90: 20 20 20 20 20 20 20 20 20 20 2f 0a 20 20 20 20 /. 00005aa0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 // 00005ab0: 20 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 | 00005ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005ae0: 20 20 20 20 20 20 20 2f 2d 2d 2d 2d 0a 20 20 20 /----. 00005af0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 54 31 20 // T1 00005b00: 20 20 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 | 00005b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005b30: 20 20 20 2f 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 /----. 00005b40: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20 // 00005b50: 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 20 | 00005b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005b70: 20 20 20 20 20 20 20 20 20 20 2f 2d 2d 2d 2d 0a /----. 00005b80: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 // 00005b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 | 00005ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005bb0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2d 2d 2d /--- 00005bc0: 2d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f -. // 00005bd0: 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------- 00005be0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005bf0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005c00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005c10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005c20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005c30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 -------------. 00005c40: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 // 00005c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005c70: 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | 00005c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a \. 00005c90: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 // 00005ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005cc0: 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 | 00005cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005ce0: 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 \. 00005cf0: 20 2f 2f 20 20 20 54 32 20 20 20 20 20 20 20 20 // T2 00005d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005d10: 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 | 00005d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005d30: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 \. 00005d40: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 // 00005d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c | 00005d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005d90: 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 \. 00005da0: 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 // 00005db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005dc0: 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 | 00005dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c \ 00005df0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 . // 00005e00: 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------- 00005e10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005e20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005e30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005e40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005e50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005e60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 ------------. 00005e70: 20 20 20 20 20 20 20 20 20 2f 2f 0a 20 20 20 20 //. 00005e80: 20 20 20 20 20 20 20 20 2f 2f 20 4d 65 72 67 69 // Mergi 00005e90: 6e 67 20 74 68 65 73 65 20 74 75 72 6e 73 20 6f ng these turns o 00005ea0: 75 74 20 74 6f 20 6e 6f 74 20 62 65 20 74 6f 6f ut to not be too 00005eb0: 20 64 69 66 66 69 63 75 6c 74 2e 20 20 46 69 72 difficult. Fir 00005ec0: 73 74 2c 20 64 65 74 65 72 6d 69 6e 69 6e 67 20 st, determining 00005ed0: 74 68 65 20 6e 65 77 20 73 74 61 72 74 20 6f 66 the new start of 00005ee0: 20 74 68 65 20 63 68 61 6e 67 65 20 69 73 20 74 the change is t 00005ef0: 72 69 76 69 61 6c 0a 20 20 20 20 20 20 20 20 20 rivial. 00005f00: 20 20 20 2f 2f 20 69 74 27 73 20 6a 75 73 74 20 // it's just 00005f10: 74 68 65 20 6d 69 6e 20 6f 66 20 74 68 65 20 6f the min of the o 00005f20: 6c 64 20 61 6e 64 20 6e 65 77 20 73 74 61 72 74 ld and new start 00005f30: 73 2e 20 20 69 2e 65 2e 3a 0a 20 20 20 20 20 20 s. i.e.:. 00005f40: 20 20 20 20 20 20 2f 2f 0a 20 20 20 20 20 20 20 //. 00005f50: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 30 20 20 // 0 00005f60: 20 20 20 20 20 20 20 31 30 20 20 20 20 20 20 20 10 00005f70: 20 32 30 20 20 20 20 20 20 20 20 33 30 20 20 20 20 30 00005f80: 20 20 20 20 20 34 30 20 20 20 20 20 20 20 20 35 40 5 00005f90: 30 20 20 20 20 20 20 20 20 36 30 20 20 20 20 20 0 60 00005fa0: 20 20 20 37 30 20 20 20 20 20 20 20 20 38 30 20 70 80 00005fb0: 20 20 20 20 20 20 20 39 30 20 20 20 20 20 20 20 90 00005fc0: 20 31 30 30 0a 20 20 20 20 20 20 20 20 20 20 20 100. 00005fd0: 20 2f 2f 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d // ------- 00005fe0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005ff0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006000: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006010: 2d 2d 2d 2d 2d 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -----*---------- 00006020: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006030: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006040: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 . // 00006050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c | 00006060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006090: 20 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f /. / 000060a0: 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 / 000060b0: 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | 000060c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000060d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2d /- 000060e0: 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ---. 000060f0: 2f 2f 20 20 54 31 20 20 20 20 20 20 20 20 20 20 // T1 00006100: 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 | 00006110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006120: 20 20 20 20 20 20 20 20 20 20 2f 2d 2d 2d 2d 0a /----. 00006130: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 // 00006140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 | 00006150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006170: 20 2f 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 /----. 00006180: 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 // 00006190: 20 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 | 000061a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000061b0: 20 20 20 2f 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 /----. 000061c0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 2d 2d 2d // --- 000061d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 000061e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 000061f0: 2d 2d 2d 2d 2d 24 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -----$---------- 00006200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 24 2d 2d 2d 2d 2d 2d ---------$------ 00006210: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006220: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006230: 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 20 20 ----. 00006240: 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 // 00006250: 20 20 20 2e 20 20 20 20 20 20 20 20 20 20 20 20 . 00006260: 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 | 00006270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006280: 20 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20 \. 00006290: 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 // 000062a0: 20 20 20 20 20 2e 20 20 20 20 20 20 20 20 20 20 . 000062b0: 20 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 | 000062c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000062d0: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 \. 000062e0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 54 32 20 // T2 000062f0: 20 20 20 20 20 20 20 20 20 20 2e 20 20 20 20 20 . 00006300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c | 00006310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006330: 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f \. / 00006340: 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 / 00006350: 20 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00006360: 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 | 00006370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006380: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 \. 00006390: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 // 000063a0: 20 20 20 20 20 20 20 20 20 20 2e 20 20 20 20 20 . 000063b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c | 000063c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000063d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000063e0: 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20 \. 000063f0: 20 20 20 20 2f 2f 20 20 20 20 20 20 2d 2d 2d 2d // ---- 00006400: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006410: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006420: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006430: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006440: 2d 2d 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --*------------- 00006450: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006460: 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ---. 00006470: 2f 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f //. / 00006480: 2f 20 28 4e 6f 74 65 20 74 68 65 20 64 6f 74 73 / (Note the dots 00006490: 20 72 65 70 72 65 73 65 6e 74 20 74 68 65 20 6e represent the n 000064a0: 65 77 6c 79 20 69 6e 66 65 72 72 65 64 20 73 74 ewly inferred st 000064b0: 61 72 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 art.. 000064c0: 20 2f 2f 20 44 65 74 65 72 6d 69 6e 69 6e 67 20 // Determining 000064d0: 74 68 65 20 6e 65 77 20 61 6e 64 20 6f 6c 64 20 the new and old 000064e0: 65 6e 64 20 69 73 20 61 6c 73 6f 20 70 72 65 74 end is also pret 000064f0: 74 79 20 73 69 6d 70 6c 65 2e 20 20 42 61 73 69 ty simple. Basi 00006500: 63 61 6c 6c 79 20 69 74 20 62 6f 69 6c 73 20 64 cally it boils d 00006510: 6f 77 6e 20 74 6f 20 70 61 79 69 6e 67 20 61 74 own to paying at 00006520: 74 65 6e 74 69 6f 6e 20 74 6f 20 74 68 65 0a 20 tention to the. 00006530: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 61 62 // ab 00006540: 73 6f 6c 75 74 65 20 70 6f 73 69 74 69 6f 6e 73 solute positions 00006550: 20 61 74 20 74 68 65 20 61 73 74 65 72 69 73 6b at the asterisk 00006560: 73 2c 20 61 6e 64 20 74 68 65 20 72 65 6c 61 74 s, and the relat 00006570: 69 76 65 20 63 68 61 6e 67 65 20 62 65 74 77 65 ive change betwe 00006580: 65 6e 20 74 68 65 20 64 6f 6c 6c 61 72 20 73 69 en the dollar si 00006590: 67 6e 73 2e 20 42 61 73 69 63 61 6c 6c 79 2c 20 gns. Basically, 000065a0: 77 65 20 73 65 65 0a 20 20 20 20 20 20 20 20 20 we see. 000065b0: 20 20 20 2f 2f 20 77 68 69 63 68 20 69 66 20 74 // which if t 000065c0: 68 65 20 74 77 6f 20 24 27 73 20 70 72 65 63 65 he two $'s prece 000065d0: 64 65 73 20 74 68 65 20 6f 74 68 65 72 2c 20 61 des the other, a 000065e0: 6e 64 20 77 65 20 6d 6f 76 65 20 74 68 61 74 20 nd we move that 000065f0: 6f 6e 65 20 66 6f 72 77 61 72 64 20 75 6e 74 69 one forward unti 00006600: 6c 20 74 68 65 79 20 6c 69 6e 65 20 75 70 2e 20 l they line up. 00006610: 20 69 6e 20 74 68 69 73 20 63 61 73 65 20 74 68 in this case th 00006620: 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f at. / 00006630: 2f 20 6d 65 61 6e 73 3a 0a 20 20 20 20 20 20 20 / means:. 00006640: 20 20 20 20 20 2f 2f 0a 20 20 20 20 20 20 20 20 //. 00006650: 20 20 20 20 2f 2f 20 20 20 20 20 20 30 20 20 20 // 0 00006660: 20 20 20 20 20 20 31 30 20 20 20 20 20 20 20 20 10 00006670: 32 30 20 20 20 20 20 20 20 20 33 30 20 20 20 20 20 30 00006680: 20 20 20 20 34 30 20 20 20 20 20 20 20 20 35 30 40 50 00006690: 20 20 20 20 20 20 20 20 36 30 20 20 20 20 20 20 60 000066a0: 20 20 37 30 20 20 20 20 20 20 20 20 38 30 20 20 70 80 000066b0: 20 20 20 20 20 20 39 30 20 20 20 20 20 20 20 20 90 000066c0: 31 30 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 100. 000066d0: 2f 2f 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d // -------- 000066e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 000066f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006700: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006710: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006720: 2d 2d 2d 2d 2d 2d 2d 2d 2a 2d 2d 2d 2d 2d 2d 2d --------*------- 00006730: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------. 00006740: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 // 00006750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 | 00006760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000067a0: 20 20 20 20 2f 0a 20 20 20 20 20 20 20 20 20 20 /. 000067b0: 20 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 // 000067c0: 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 | 000067d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000067e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000067f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006800: 20 20 20 20 20 2f 2d 2d 2d 2d 0a 20 20 20 20 20 /----. 00006810: 20 20 20 20 20 20 20 2f 2f 20 20 54 31 20 20 20 // T1 00006820: 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 | 00006830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006860: 20 20 20 20 20 2f 2d 2d 2d 2d 0a 20 20 20 20 20 /----. 00006870: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 // 00006880: 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 | 00006890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000068a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000068b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000068c0: 2f 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 20 /----. 000068d0: 20 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 // 000068e0: 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 | 000068f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006910: 20 20 20 20 20 20 2f 2d 2d 2d 2d 0a 20 20 20 20 /----. 00006920: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 // 00006930: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006940: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006950: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006960: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 24 2d 2d 2d ------------$--- 00006970: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006980: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006990: 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 -------. 000069a0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20 20 // 000069b0: 20 20 20 20 20 20 2e 20 20 20 20 20 20 20 20 20 . 000069c0: 20 20 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 | 000069d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000069e0: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20 \. 000069f0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 // 00006a00: 20 20 20 20 20 20 20 20 2e 20 20 20 20 20 20 20 . 00006a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 20 | 00006a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 \. 00006a40: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 // 00006a50: 54 32 20 20 20 20 20 20 20 20 20 20 20 2e 20 20 T2 . 00006a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006a70: 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 | 00006a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006a90: 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20 20 \. 00006aa0: 20 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 // 00006ab0: 20 20 20 20 2e 20 20 20 20 20 20 20 20 20 20 20 . 00006ac0: 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 | 00006ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 \. 00006af0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 // 00006b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 20 . 00006b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006b20: 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 | 00006b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006b40: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20 \. 00006b50: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 2d // - 00006b60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006b70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006b80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006b90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006ba0: 2d 2d 2d 2d 2d 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -----*---------- 00006bb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006bc0: 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 ------. 00006bd0: 20 20 20 2f 2f 0a 20 20 20 20 20 20 20 20 20 20 //. 00006be0: 20 20 2f 2f 20 49 6e 20 6f 74 68 65 72 20 77 6f // In other wo 00006bf0: 72 64 73 20 28 69 6e 20 74 68 69 73 20 63 61 73 rds (in this cas 00006c00: 65 29 2c 20 77 65 27 72 65 20 72 65 63 6f 67 6e e), we're recogn 00006c10: 69 7a 69 6e 67 20 74 68 61 74 20 74 68 65 20 73 izing that the s 00006c20: 65 63 6f 6e 64 20 65 64 69 74 20 68 61 70 70 65 econd edit happe 00006c30: 6e 65 64 20 61 66 74 65 72 20 77 68 65 72 65 20 ned after where 00006c40: 74 68 65 20 66 69 72 73 74 20 65 64 69 74 0a 20 the first edit. 00006c50: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 65 6e // en 00006c60: 64 65 64 20 77 69 74 68 20 61 20 64 65 6c 74 61 ded with a delta 00006c70: 20 6f 66 20 32 30 20 63 68 61 72 61 63 74 65 72 of 20 character 00006c80: 73 20 28 36 30 20 2d 20 34 30 29 2e 20 20 54 68 s (60 - 40). Th 00006c90: 75 73 2c 20 69 66 20 77 65 20 67 6f 20 62 61 63 us, if we go bac 00006ca0: 6b 20 69 6e 20 74 69 6d 65 20 74 6f 20 77 68 65 k in time to whe 00006cb0: 72 65 20 74 68 65 20 66 69 72 73 74 20 65 64 69 re the first edi 00006cc0: 74 20 73 74 61 72 74 65 64 0a 20 20 20 20 20 20 t started. 00006cd0: 20 20 20 20 20 20 2f 2f 20 74 68 61 74 27 73 20 // that's 00006ce0: 74 68 65 20 73 61 6d 65 20 61 73 20 69 66 20 77 the same as if w 00006cf0: 65 20 73 74 61 72 74 65 64 20 61 74 20 63 68 61 e started at cha 00006d00: 72 20 38 30 20 69 6e 73 74 65 61 64 20 6f 66 20 r 80 instead of 00006d10: 36 30 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 60.. 00006d20: 2f 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f //. / 00006d30: 2f 20 41 73 20 69 74 20 73 6f 20 68 61 70 70 65 / As it so happe 00006d40: 6e 73 2c 20 74 68 65 20 73 61 6d 65 20 6c 6f 67 ns, the same log 00006d50: 69 63 20 61 70 70 6c 69 65 73 20 69 66 20 74 68 ic applies if th 00006d60: 65 20 73 65 63 6f 6e 64 20 65 64 69 74 20 70 72 e second edit pr 00006d70: 65 63 65 64 65 73 20 74 68 65 20 66 69 72 73 74 ecedes the first 00006d80: 20 65 64 69 74 2e 20 20 49 6e 20 74 68 61 74 20 edit. In that 00006d90: 63 61 73 65 20 72 61 74 68 65 72 0a 20 20 20 20 case rather. 00006da0: 20 20 20 20 20 20 20 20 2f 2f 20 74 68 61 6e 20 // than 00006db0: 70 75 73 68 69 6e 67 20 74 68 65 20 66 69 72 73 pushing the firs 00006dc0: 74 20 65 64 69 74 20 66 6f 72 77 61 72 64 20 74 t edit forward t 00006dd0: 6f 20 6d 61 74 63 68 20 74 68 65 20 73 65 63 6f o match the seco 00006de0: 6e 64 2c 20 77 65 27 6c 6c 20 70 75 73 68 20 74 nd, we'll push t 00006df0: 68 65 20 73 65 63 6f 6e 64 20 65 64 69 74 20 66 he second edit f 00006e00: 6f 72 77 61 72 64 20 74 6f 20 6d 61 74 63 68 20 orward to match 00006e10: 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 the. 00006e20: 2f 2f 20 66 69 72 73 74 2e 0a 20 20 20 20 20 20 // first.. 00006e30: 20 20 20 20 20 20 2f 2f 0a 20 20 20 20 20 20 20 //. 00006e40: 20 20 20 20 20 2f 2f 20 49 6e 20 74 68 69 73 20 // In this 00006e50: 63 61 73 65 20 74 68 61 74 20 6d 65 61 6e 73 20 case that means 00006e60: 77 65 20 68 61 76 65 20 7b 20 6f 6c 64 53 74 61 we have { oldSta 00006e70: 72 74 3a 20 31 30 2c 20 6f 6c 64 45 6e 64 3a 20 rt: 10, oldEnd: 00006e80: 38 30 2c 20 6e 65 77 45 6e 64 3a 20 37 30 20 7d 80, newEnd: 70 } 00006e90: 20 6f 72 2c 20 69 6e 20 54 65 78 74 43 68 61 6e or, in TextChan 00006ea0: 67 65 52 61 6e 67 65 0a 20 20 20 20 20 20 20 20 geRange. 00006eb0: 20 20 20 20 2f 2f 20 73 65 6d 61 6e 74 69 63 73 // semantics 00006ec0: 3a 20 7b 20 7b 20 73 74 61 72 74 3a 20 31 30 2c : { { start: 10, 00006ed0: 20 6c 65 6e 67 74 68 3a 20 37 30 20 7d 2c 20 6e length: 70 }, n 00006ee0: 65 77 4c 65 6e 67 74 68 3a 20 36 30 20 7d 0a 20 ewLength: 60 }. 00006ef0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0a 20 20 //. 00006f00: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 68 65 // The 00006f10: 20 6d 61 74 68 20 74 68 65 6e 20 77 6f 72 6b 73 math then works 00006f20: 20 6f 75 74 20 61 73 20 66 6f 6c 6c 6f 77 73 2e out as follows. 00006f30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 . // 00006f40: 49 66 20 77 65 20 68 61 76 65 20 7b 20 6f 6c 64 If we have { old 00006f50: 53 74 61 72 74 31 2c 20 6f 6c 64 45 6e 64 31 2c Start1, oldEnd1, 00006f60: 20 6e 65 77 45 6e 64 31 20 7d 20 61 6e 64 20 7b newEnd1 } and { 00006f70: 20 6f 6c 64 53 74 61 72 74 32 2c 20 6f 6c 64 45 oldStart2, oldE 00006f80: 6e 64 32 2c 20 6e 65 77 45 6e 64 32 20 7d 20 74 nd2, newEnd2 } t 00006f90: 68 65 6e 20 77 65 20 63 61 6e 20 63 6f 6d 70 75 hen we can compu 00006fa0: 74 65 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 te the. 00006fb0: 20 20 20 2f 2f 20 66 69 6e 61 6c 20 72 65 73 75 // final resu 00006fc0: 6c 74 20 6c 69 6b 65 20 73 6f 3a 0a 20 20 20 20 lt like so:. 00006fd0: 20 20 20 20 20 20 20 20 2f 2f 0a 20 20 20 20 20 //. 00006fe0: 20 20 20 20 20 20 20 2f 2f 20 7b 0a 20 20 20 20 // {. 00006ff0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 // 00007000: 6f 6c 64 53 74 61 72 74 33 3a 20 4d 69 6e 28 6f oldStart3: Min(o 00007010: 6c 64 53 74 61 72 74 31 2c 20 6f 6c 64 53 74 61 ldStart1, oldSta 00007020: 72 74 32 29 2c 0a 20 20 20 20 20 20 20 20 20 20 rt2),. 00007030: 20 20 2f 2f 20 20 20 20 20 20 6f 6c 64 45 6e 64 // oldEnd 00007040: 33 3a 20 4d 61 78 28 6f 6c 64 45 6e 64 31 2c 20 3: Max(oldEnd1, 00007050: 6f 6c 64 45 6e 64 31 20 2b 20 28 6f 6c 64 45 6e oldEnd1 + (oldEn 00007060: 64 32 20 2d 20 6e 65 77 45 6e 64 31 29 29 2c 0a d2 - newEnd1)),. 00007070: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 // 00007080: 20 20 20 20 6e 65 77 45 6e 64 33 3a 20 4d 61 78 newEnd3: Max 00007090: 28 6e 65 77 45 6e 64 32 2c 20 6e 65 77 45 6e 64 (newEnd2, newEnd 000070a0: 32 20 2b 20 28 6e 65 77 45 6e 64 31 20 2d 20 6f 2 + (newEnd1 - o 000070b0: 6c 64 45 6e 64 32 29 29 0a 20 20 20 20 20 20 20 ldEnd2)). 000070c0: 20 20 20 20 20 2f 2f 20 7d 0a 20 20 20 20 20 20 // }. 000070d0: 20 20 20 20 20 20 76 61 72 20 6f 6c 64 53 74 61 var oldSta 000070e0: 72 74 31 20 3d 20 6f 6c 64 53 74 61 72 74 4e 3b rt1 = oldStartN; 000070f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var 00007100: 20 6f 6c 64 45 6e 64 31 20 3d 20 6f 6c 64 45 6e oldEnd1 = oldEn 00007110: 64 4e 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 dN;. 00007120: 76 61 72 20 6e 65 77 45 6e 64 31 20 3d 20 6e 65 var newEnd1 = ne 00007130: 77 45 6e 64 4e 3b 0a 20 20 20 20 20 20 20 20 20 wEndN;. 00007140: 20 20 20 76 61 72 20 6f 6c 64 53 74 61 72 74 32 var oldStart2 00007150: 20 3d 20 6e 65 78 74 43 68 61 6e 67 65 2e 73 70 = nextChange.sp 00007160: 61 6e 2e 73 74 61 72 74 3b 0a 20 20 20 20 20 20 an.start;. 00007170: 20 20 20 20 20 20 76 61 72 20 6f 6c 64 45 6e 64 var oldEnd 00007180: 32 20 3d 20 74 65 78 74 53 70 61 6e 45 6e 64 28 2 = textSpanEnd( 00007190: 6e 65 78 74 43 68 61 6e 67 65 2e 73 70 61 6e 29 nextChange.span) 000071a0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 ;. va 000071b0: 72 20 6e 65 77 45 6e 64 32 20 3d 20 6f 6c 64 53 r newEnd2 = oldS 000071c0: 74 61 72 74 32 20 2b 20 6e 65 78 74 43 68 61 6e tart2 + nextChan 000071d0: 67 65 2e 6e 65 77 4c 65 6e 67 74 68 3b 0a 20 20 ge.newLength;. 000071e0: 20 20 20 20 20 20 20 20 20 20 6f 6c 64 53 74 61 oldSta 000071f0: 72 74 4e 20 3d 20 4d 61 74 68 2e 6d 69 6e 28 6f rtN = Math.min(o 00007200: 6c 64 53 74 61 72 74 31 2c 20 6f 6c 64 53 74 61 ldStart1, oldSta 00007210: 72 74 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 rt2);. 00007220: 20 20 6f 6c 64 45 6e 64 4e 20 3d 20 4d 61 74 68 oldEndN = Math 00007230: 2e 6d 61 78 28 6f 6c 64 45 6e 64 31 2c 20 6f 6c .max(oldEnd1, ol 00007240: 64 45 6e 64 31 20 2b 20 28 6f 6c 64 45 6e 64 32 dEnd1 + (oldEnd2 00007250: 20 2d 20 6e 65 77 45 6e 64 31 29 29 3b 0a 20 20 - newEnd1));. 00007260: 20 20 20 20 20 20 20 20 20 20 6e 65 77 45 6e 64 newEnd 00007270: 4e 20 3d 20 4d 61 74 68 2e 6d 61 78 28 6e 65 77 N = Math.max(new 00007280: 45 6e 64 32 2c 20 6e 65 77 45 6e 64 32 20 2b 20 End2, newEnd2 + 00007290: 28 6e 65 77 45 6e 64 31 20 2d 20 6f 6c 64 45 6e (newEnd1 - oldEn 000072a0: 64 32 29 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a d2));. }. 000072b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 return c 000072c0: 72 65 61 74 65 54 65 78 74 43 68 61 6e 67 65 52 reateTextChangeR 000072d0: 61 6e 67 65 28 63 72 65 61 74 65 54 65 78 74 53 ange(createTextS 000072e0: 70 61 6e 46 72 6f 6d 42 6f 75 6e 64 73 28 6f 6c panFromBounds(ol 000072f0: 64 53 74 61 72 74 4e 2c 20 6f 6c 64 45 6e 64 4e dStartN, oldEndN 00007300: 29 2c 20 2f 2a 6e 65 77 4c 65 6e 67 74 68 2a 2f ), /*newLength*/ 00007310: 20 6e 65 77 45 6e 64 4e 20 2d 20 6f 6c 64 53 74 newEndN - oldSt 00007320: 61 72 74 4e 29 3b 0a 20 20 20 20 7d 0a 20 20 20 artN);. }. 00007330: 20 74 73 2e 63 6f 6c 6c 61 70 73 65 54 65 78 74 ts.collapseText 00007340: 43 68 61 6e 67 65 52 61 6e 67 65 73 41 63 72 6f ChangeRangesAcro 00007350: 73 73 4d 75 6c 74 69 70 6c 65 56 65 72 73 69 6f ssMultipleVersio 00007360: 6e 73 20 3d 20 63 6f 6c 6c 61 70 73 65 54 65 78 ns = collapseTex 00007370: 74 43 68 61 6e 67 65 52 61 6e 67 65 73 41 63 72 tChangeRangesAcr 00007380: 6f 73 73 4d 75 6c 74 69 70 6c 65 56 65 72 73 69 ossMultipleVersi 00007390: 6f 6e 73 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ons;. functio 000073a0: 6e 20 67 65 74 54 79 70 65 50 61 72 61 6d 65 74 n getTypeParamet 000073b0: 65 72 4f 77 6e 65 72 28 64 29 20 7b 0a 20 20 20 erOwner(d) {. 000073c0: 20 20 20 20 20 69 66 20 28 64 20 26 26 20 64 2e if (d && d. 000073d0: 6b 69 6e 64 20 3d 3d 3d 20 31 36 33 20 2f 2a 20 kind === 163 /* 000073e0: 53 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 50 SyntaxKind.TypeP 000073f0: 61 72 61 6d 65 74 65 72 20 2a 2f 29 20 7b 0a 20 arameter */) {. 00007400: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 for ( 00007410: 76 61 72 20 63 75 72 72 65 6e 74 20 3d 20 64 3b var current = d; 00007420: 20 63 75 72 72 65 6e 74 3b 20 63 75 72 72 65 6e current; curren 00007430: 74 20 3d 20 63 75 72 72 65 6e 74 2e 70 61 72 65 t = current.pare 00007440: 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 nt) {. 00007450: 20 20 20 20 20 20 69 66 20 28 69 73 46 75 6e 63 if (isFunc 00007460: 74 69 6f 6e 4c 69 6b 65 28 63 75 72 72 65 6e 74 tionLike(current 00007470: 29 20 7c 7c 20 69 73 43 6c 61 73 73 4c 69 6b 65 ) || isClassLike 00007480: 28 63 75 72 72 65 6e 74 29 20 7c 7c 20 63 75 72 (current) || cur 00007490: 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 32 35 rent.kind === 25 000074a0: 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 8 /* SyntaxKind. 000074b0: 49 6e 74 65 72 66 61 63 65 44 65 63 6c 61 72 61 InterfaceDeclara 000074c0: 74 69 6f 6e 20 2a 2f 29 20 7b 0a 20 20 20 20 20 tion */) {. 000074d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 000074e0: 65 74 75 72 6e 20 63 75 72 72 65 6e 74 3b 0a 20 eturn current;. 000074f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d } 00007500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 . }. 00007510: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 }. }. 00007520: 20 20 20 74 73 2e 67 65 74 54 79 70 65 50 61 72 ts.getTypePar 00007530: 61 6d 65 74 65 72 4f 77 6e 65 72 20 3d 20 67 65 ameterOwner = ge 00007540: 74 54 79 70 65 50 61 72 61 6d 65 74 65 72 4f 77 tTypeParameterOw 00007550: 6e 65 72 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ner;. functio 00007560: 6e 20 69 73 50 61 72 61 6d 65 74 65 72 50 72 6f n isParameterPro 00007570: 70 65 72 74 79 44 65 63 6c 61 72 61 74 69 6f 6e pertyDeclaration 00007580: 28 6e 6f 64 65 2c 20 70 61 72 65 6e 74 29 20 7b (node, parent) { 00007590: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 000075a0: 74 73 2e 68 61 73 53 79 6e 74 61 63 74 69 63 4d ts.hasSyntacticM 000075b0: 6f 64 69 66 69 65 72 28 6e 6f 64 65 2c 20 31 36 odifier(node, 16 000075c0: 34 37 36 20 2f 2a 20 4d 6f 64 69 66 69 65 72 46 476 /* ModifierF 000075d0: 6c 61 67 73 2e 50 61 72 61 6d 65 74 65 72 50 72 lags.ParameterPr 000075e0: 6f 70 65 72 74 79 4d 6f 64 69 66 69 65 72 20 2a opertyModifier * 000075f0: 2f 29 20 26 26 20 70 61 72 65 6e 74 2e 6b 69 6e /) && parent.kin 00007600: 64 20 3d 3d 3d 20 31 37 31 20 2f 2a 20 53 79 6e d === 171 /* Syn 00007610: 74 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 72 75 63 taxKind.Construc 00007620: 74 6f 72 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 tor */;. }. 00007630: 20 20 74 73 2e 69 73 50 61 72 61 6d 65 74 65 72 ts.isParameter 00007640: 50 72 6f 70 65 72 74 79 44 65 63 6c 61 72 61 74 PropertyDeclarat 00007650: 69 6f 6e 20 3d 20 69 73 50 61 72 61 6d 65 74 65 ion = isParamete 00007660: 72 50 72 6f 70 65 72 74 79 44 65 63 6c 61 72 61 rPropertyDeclara 00007670: 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 tion;. functi 00007680: 6f 6e 20 69 73 45 6d 70 74 79 42 69 6e 64 69 6e on isEmptyBindin 00007690: 67 50 61 74 74 65 72 6e 28 6e 6f 64 65 29 20 7b gPattern(node) { 000076a0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 42 . if (isB 000076b0: 69 6e 64 69 6e 67 50 61 74 74 65 72 6e 28 6e 6f indingPattern(no 000076c0: 64 65 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 de)) {. 000076d0: 20 20 20 72 65 74 75 72 6e 20 74 73 2e 65 76 65 return ts.eve 000076e0: 72 79 28 6e 6f 64 65 2e 65 6c 65 6d 65 6e 74 73 ry(node.elements 000076f0: 2c 20 69 73 45 6d 70 74 79 42 69 6e 64 69 6e 67 , isEmptyBinding 00007700: 45 6c 65 6d 65 6e 74 29 3b 0a 20 20 20 20 20 20 Element);. 00007710: 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 }. retu 00007720: 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a rn false;. }. 00007730: 20 20 20 20 74 73 2e 69 73 45 6d 70 74 79 42 69 ts.isEmptyBi 00007740: 6e 64 69 6e 67 50 61 74 74 65 72 6e 20 3d 20 69 ndingPattern = i 00007750: 73 45 6d 70 74 79 42 69 6e 64 69 6e 67 50 61 74 sEmptyBindingPat 00007760: 74 65 72 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 tern;. functi 00007770: 6f 6e 20 69 73 45 6d 70 74 79 42 69 6e 64 69 6e on isEmptyBindin 00007780: 67 45 6c 65 6d 65 6e 74 28 6e 6f 64 65 29 20 7b gElement(node) { 00007790: 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 73 2e . if (ts. 000077a0: 69 73 4f 6d 69 74 74 65 64 45 78 70 72 65 73 73 isOmittedExpress 000077b0: 69 6f 6e 28 6e 6f 64 65 29 29 20 7b 0a 20 20 20 ion(node)) {. 000077c0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 000077d0: 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a true;. }. 000077e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 return i 000077f0: 73 45 6d 70 74 79 42 69 6e 64 69 6e 67 50 61 74 sEmptyBindingPat 00007800: 74 65 72 6e 28 6e 6f 64 65 2e 6e 61 6d 65 29 3b tern(node.name); 00007810: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00007820: 45 6d 70 74 79 42 69 6e 64 69 6e 67 45 6c 65 6d EmptyBindingElem 00007830: 65 6e 74 20 3d 20 69 73 45 6d 70 74 79 42 69 6e ent = isEmptyBin 00007840: 64 69 6e 67 45 6c 65 6d 65 6e 74 3b 0a 20 20 20 dingElement;. 00007850: 20 66 75 6e 63 74 69 6f 6e 20 77 61 6c 6b 55 70 function walkUp 00007860: 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 73 41 BindingElementsA 00007870: 6e 64 50 61 74 74 65 72 6e 73 28 62 69 6e 64 69 ndPatterns(bindi 00007880: 6e 67 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 ng) {. va 00007890: 72 20 6e 6f 64 65 20 3d 20 62 69 6e 64 69 6e 67 r node = binding 000078a0: 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 .parent;. 000078b0: 20 77 68 69 6c 65 20 28 74 73 2e 69 73 42 69 6e while (ts.isBin 000078c0: 64 69 6e 67 45 6c 65 6d 65 6e 74 28 6e 6f 64 65 dingElement(node 000078d0: 2e 70 61 72 65 6e 74 29 29 20 7b 0a 20 20 20 20 .parent)) {. 000078e0: 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 6e node = n 000078f0: 6f 64 65 2e 70 61 72 65 6e 74 2e 70 61 72 65 6e ode.parent.paren 00007900: 74 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 t;. }. 00007910: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 return node 00007920: 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 7d 0a 20 .parent;. }. 00007930: 20 20 20 74 73 2e 77 61 6c 6b 55 70 42 69 6e 64 ts.walkUpBind 00007940: 69 6e 67 45 6c 65 6d 65 6e 74 73 41 6e 64 50 61 ingElementsAndPa 00007950: 74 74 65 72 6e 73 20 3d 20 77 61 6c 6b 55 70 42 tterns = walkUpB 00007960: 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 73 41 6e indingElementsAn 00007970: 64 50 61 74 74 65 72 6e 73 3b 0a 20 20 20 20 66 dPatterns;. f 00007980: 75 6e 63 74 69 6f 6e 20 67 65 74 43 6f 6d 62 69 unction getCombi 00007990: 6e 65 64 46 6c 61 67 73 28 6e 6f 64 65 2c 20 67 nedFlags(node, g 000079a0: 65 74 46 6c 61 67 73 29 20 7b 0a 20 20 20 20 20 etFlags) {. 000079b0: 20 20 20 69 66 20 28 74 73 2e 69 73 42 69 6e 64 if (ts.isBind 000079c0: 69 6e 67 45 6c 65 6d 65 6e 74 28 6e 6f 64 65 29 ingElement(node) 000079d0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 000079e0: 6e 6f 64 65 20 3d 20 77 61 6c 6b 55 70 42 69 6e node = walkUpBin 000079f0: 64 69 6e 67 45 6c 65 6d 65 6e 74 73 41 6e 64 50 dingElementsAndP 00007a00: 61 74 74 65 72 6e 73 28 6e 6f 64 65 29 3b 0a 20 atterns(node);. 00007a10: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00007a20: 20 76 61 72 20 66 6c 61 67 73 20 3d 20 67 65 74 var flags = get 00007a30: 46 6c 61 67 73 28 6e 6f 64 65 29 3b 0a 20 20 20 Flags(node);. 00007a40: 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e 6b 69 if (node.ki 00007a50: 6e 64 20 3d 3d 3d 20 32 35 34 20 2f 2a 20 53 79 nd === 254 /* Sy 00007a60: 6e 74 61 78 4b 69 6e 64 2e 56 61 72 69 61 62 6c ntaxKind.Variabl 00007a70: 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 29 eDeclaration */) 00007a80: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e {. n 00007a90: 6f 64 65 20 3d 20 6e 6f 64 65 2e 70 61 72 65 6e ode = node.paren 00007aa0: 74 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 t;. }. 00007ab0: 20 20 20 20 20 69 66 20 28 6e 6f 64 65 20 26 26 if (node && 00007ac0: 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 node.kind === 2 00007ad0: 35 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 55 /* SyntaxKind 00007ae0: 2e 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 .VariableDeclara 00007af0: 74 69 6f 6e 4c 69 73 74 20 2a 2f 29 20 7b 0a 20 tionList */) {. 00007b00: 20 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 flags 00007b10: 20 7c 3d 20 67 65 74 46 6c 61 67 73 28 6e 6f 64 |= getFlags(nod 00007b20: 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 e);. 00007b30: 6e 6f 64 65 20 3d 20 6e 6f 64 65 2e 70 61 72 65 node = node.pare 00007b40: 6e 74 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 nt;. }. 00007b50: 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 20 26 if (node & 00007b60: 26 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 & node.kind === 00007b70: 32 33 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 237 /* SyntaxKin 00007b80: 64 2e 56 61 72 69 61 62 6c 65 53 74 61 74 65 6d d.VariableStatem 00007b90: 65 6e 74 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 ent */) {. 00007ba0: 20 20 20 20 20 20 66 6c 61 67 73 20 7c 3d 20 67 flags |= g 00007bb0: 65 74 46 6c 61 67 73 28 6e 6f 64 65 29 3b 0a 20 etFlags(node);. 00007bc0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00007bd0: 20 72 65 74 75 72 6e 20 66 6c 61 67 73 3b 0a 20 return flags;. 00007be0: 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 74 69 6f }. functio 00007bf0: 6e 20 67 65 74 43 6f 6d 62 69 6e 65 64 4d 6f 64 n getCombinedMod 00007c00: 69 66 69 65 72 46 6c 61 67 73 28 6e 6f 64 65 29 ifierFlags(node) 00007c10: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00007c20: 6e 20 67 65 74 43 6f 6d 62 69 6e 65 64 46 6c 61 n getCombinedFla 00007c30: 67 73 28 6e 6f 64 65 2c 20 74 73 2e 67 65 74 45 gs(node, ts.getE 00007c40: 66 66 65 63 74 69 76 65 4d 6f 64 69 66 69 65 72 ffectiveModifier 00007c50: 46 6c 61 67 73 29 3b 0a 20 20 20 20 7d 0a 20 20 Flags);. }. 00007c60: 20 20 74 73 2e 67 65 74 43 6f 6d 62 69 6e 65 64 ts.getCombined 00007c70: 4d 6f 64 69 66 69 65 72 46 6c 61 67 73 20 3d 20 ModifierFlags = 00007c80: 67 65 74 43 6f 6d 62 69 6e 65 64 4d 6f 64 69 66 getCombinedModif 00007c90: 69 65 72 46 6c 61 67 73 3b 0a 20 20 20 20 2f 2a ierFlags;. /* 00007ca0: 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 @internal */. 00007cb0: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 43 6f function getCo 00007cc0: 6d 62 69 6e 65 64 4e 6f 64 65 46 6c 61 67 73 41 mbinedNodeFlagsA 00007cd0: 6c 77 61 79 73 49 6e 63 6c 75 64 65 4a 53 44 6f lwaysIncludeJSDo 00007ce0: 63 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 c(node) {. 00007cf0: 20 20 72 65 74 75 72 6e 20 67 65 74 43 6f 6d 62 return getComb 00007d00: 69 6e 65 64 46 6c 61 67 73 28 6e 6f 64 65 2c 20 inedFlags(node, 00007d10: 74 73 2e 67 65 74 45 66 66 65 63 74 69 76 65 4d ts.getEffectiveM 00007d20: 6f 64 69 66 69 65 72 46 6c 61 67 73 41 6c 77 61 odifierFlagsAlwa 00007d30: 79 73 49 6e 63 6c 75 64 65 4a 53 44 6f 63 29 3b ysIncludeJSDoc); 00007d40: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 . }. ts.ge 00007d50: 74 43 6f 6d 62 69 6e 65 64 4e 6f 64 65 46 6c 61 tCombinedNodeFla 00007d60: 67 73 41 6c 77 61 79 73 49 6e 63 6c 75 64 65 4a gsAlwaysIncludeJ 00007d70: 53 44 6f 63 20 3d 20 67 65 74 43 6f 6d 62 69 6e SDoc = getCombin 00007d80: 65 64 4e 6f 64 65 46 6c 61 67 73 41 6c 77 61 79 edNodeFlagsAlway 00007d90: 73 49 6e 63 6c 75 64 65 4a 53 44 6f 63 3b 0a 20 sIncludeJSDoc;. 00007da0: 20 20 20 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 // Returns th 00007db0: 65 20 6e 6f 64 65 20 66 6c 61 67 73 20 66 6f 72 e node flags for 00007dc0: 20 74 68 69 73 20 6e 6f 64 65 20 61 6e 64 20 61 this node and a 00007dd0: 6c 6c 20 72 65 6c 65 76 61 6e 74 20 70 61 72 65 ll relevant pare 00007de0: 6e 74 20 6e 6f 64 65 73 2e 20 20 54 68 69 73 20 nt nodes. This 00007df0: 69 73 20 64 6f 6e 65 20 73 6f 20 74 68 61 74 0a is done so that. 00007e00: 20 20 20 20 2f 2f 20 6e 6f 64 65 73 20 6c 69 6b // nodes lik 00007e10: 65 20 76 61 72 69 61 62 6c 65 20 64 65 63 6c 61 e variable decla 00007e20: 72 61 74 69 6f 6e 73 20 61 6e 64 20 62 69 6e 64 rations and bind 00007e30: 69 6e 67 20 65 6c 65 6d 65 6e 74 73 20 63 61 6e ing elements can 00007e40: 20 72 65 74 75 72 6e 65 64 20 61 20 76 69 65 77 returned a view 00007e50: 20 6f 66 20 74 68 65 69 72 20 66 6c 61 67 73 0a of their flags. 00007e60: 20 20 20 20 2f 2f 20 74 68 61 74 20 69 6e 63 6c // that incl 00007e70: 75 64 65 73 20 74 68 65 20 6d 6f 64 69 66 69 65 udes the modifie 00007e80: 72 73 20 66 72 6f 6d 20 74 68 65 69 72 20 63 6f rs from their co 00007e90: 6e 74 61 69 6e 65 72 2e 20 20 69 2e 65 2e 20 66 ntainer. i.e. f 00007ea0: 6c 61 67 73 20 6c 69 6b 65 20 65 78 70 6f 72 74 lags like export 00007eb0: 2f 64 65 63 6c 61 72 65 20 61 72 65 6e 27 74 0a /declare aren't. 00007ec0: 20 20 20 20 2f 2f 20 73 74 6f 72 65 64 20 6f 6e // stored on 00007ed0: 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 64 65 the variable de 00007ee0: 63 6c 61 72 61 74 69 6f 6e 20 64 69 72 65 63 74 claration direct 00007ef0: 6c 79 2c 20 62 75 74 20 6f 6e 20 74 68 65 20 63 ly, but on the c 00007f00: 6f 6e 74 61 69 6e 69 6e 67 20 76 61 72 69 61 62 ontaining variab 00007f10: 6c 65 20 73 74 61 74 65 6d 65 6e 74 0a 20 20 20 le statement. 00007f20: 20 2f 2f 20 28 69 66 20 69 74 20 68 61 73 20 6f // (if it has o 00007f30: 6e 65 29 2e 20 20 53 69 6d 69 6c 61 72 6c 79 2c ne). Similarly, 00007f40: 20 66 6c 61 67 73 20 66 6f 72 20 6c 65 74 2f 63 flags for let/c 00007f50: 6f 6e 73 74 20 61 72 65 20 73 74 6f 72 65 64 20 onst are stored 00007f60: 6f 6e 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 on the variable 00007f70: 64 65 63 6c 61 72 61 74 69 6f 6e 0a 20 20 20 20 declaration. 00007f80: 2f 2f 20 6c 69 73 74 2e 20 20 42 79 20 63 61 6c // list. By cal 00007f90: 6c 69 6e 67 20 74 68 69 73 20 66 75 6e 63 74 69 ling this functi 00007fa0: 6f 6e 2c 20 61 6c 6c 20 74 68 6f 73 65 20 66 6c on, all those fl 00007fb0: 61 67 73 20 61 72 65 20 63 6f 6d 62 69 6e 65 64 ags are combined 00007fc0: 20 73 6f 20 74 68 61 74 20 74 68 65 20 63 6c 69 so that the cli 00007fd0: 65 6e 74 20 63 61 6e 20 74 72 65 61 74 0a 20 20 ent can treat. 00007fe0: 20 20 2f 2f 20 74 68 65 20 6e 6f 64 65 20 61 73 // the node as 00007ff0: 20 69 66 20 69 74 20 61 63 74 75 61 6c 6c 79 20 if it actually 00008000: 68 61 64 20 74 68 6f 73 65 20 66 6c 61 67 73 2e had those flags. 00008010: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 00008020: 74 43 6f 6d 62 69 6e 65 64 4e 6f 64 65 46 6c 61 tCombinedNodeFla 00008030: 67 73 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 gs(node) {. 00008040: 20 20 20 72 65 74 75 72 6e 20 67 65 74 43 6f 6d return getCom 00008050: 62 69 6e 65 64 46 6c 61 67 73 28 6e 6f 64 65 2c binedFlags(node, 00008060: 20 66 75 6e 63 74 69 6f 6e 20 28 6e 29 20 7b 20 function (n) { 00008070: 72 65 74 75 72 6e 20 6e 2e 66 6c 61 67 73 3b 20 return n.flags; 00008080: 7d 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 });. }. ts 00008090: 2e 67 65 74 43 6f 6d 62 69 6e 65 64 4e 6f 64 65 .getCombinedNode 000080a0: 46 6c 61 67 73 20 3d 20 67 65 74 43 6f 6d 62 69 Flags = getCombi 000080b0: 6e 65 64 4e 6f 64 65 46 6c 61 67 73 3b 0a 20 20 nedNodeFlags;. 000080c0: 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a /* @internal * 000080d0: 2f 0a 20 20 20 20 74 73 2e 73 75 70 70 6f 72 74 /. ts.support 000080e0: 65 64 4c 6f 63 61 6c 65 44 69 72 65 63 74 6f 72 edLocaleDirector 000080f0: 69 65 73 20 3d 20 5b 22 63 73 22 2c 20 22 64 65 ies = ["cs", "de 00008100: 22 2c 20 22 65 73 22 2c 20 22 66 72 22 2c 20 22 ", "es", "fr", " 00008110: 69 74 22 2c 20 22 6a 61 22 2c 20 22 6b 6f 22 2c it", "ja", "ko", 00008120: 20 22 70 6c 22 2c 20 22 70 74 2d 62 72 22 2c 20 "pl", "pt-br", 00008130: 22 72 75 22 2c 20 22 74 72 22 2c 20 22 7a 68 2d "ru", "tr", "zh- 00008140: 63 6e 22 2c 20 22 7a 68 2d 74 77 22 5d 3b 0a 20 cn", "zh-tw"];. 00008150: 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 43 68 /**. * Ch 00008160: 65 63 6b 73 20 74 6f 20 73 65 65 20 69 66 20 74 ecks to see if t 00008170: 68 65 20 6c 6f 63 61 6c 65 20 69 73 20 69 6e 20 he locale is in 00008180: 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 20 the appropriate 00008190: 66 6f 72 6d 61 74 2c 0a 20 20 20 20 20 2a 20 61 format,. * a 000081a0: 6e 64 20 69 66 20 69 74 20 69 73 2c 20 61 74 74 nd if it is, att 000081b0: 65 6d 70 74 73 20 74 6f 20 73 65 74 20 74 68 65 empts to set the 000081c0: 20 61 70 70 72 6f 70 72 69 61 74 65 20 6c 61 6e appropriate lan 000081d0: 67 75 61 67 65 2e 0a 20 20 20 20 20 2a 2f 0a 20 guage.. */. 000081e0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 76 61 6c 69 function vali 000081f0: 64 61 74 65 4c 6f 63 61 6c 65 41 6e 64 53 65 74 dateLocaleAndSet 00008200: 4c 61 6e 67 75 61 67 65 28 6c 6f 63 61 6c 65 2c Language(locale, 00008210: 20 73 79 73 2c 20 65 72 72 6f 72 73 29 20 7b 0a sys, errors) {. 00008220: 20 20 20 20 20 20 20 20 76 61 72 20 6c 6f 77 65 var lowe 00008230: 72 43 61 73 65 4c 6f 63 61 6c 65 20 3d 20 6c 6f rCaseLocale = lo 00008240: 63 61 6c 65 2e 74 6f 4c 6f 77 65 72 43 61 73 65 cale.toLowerCase 00008250: 28 29 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ();. var 00008260: 6d 61 74 63 68 52 65 73 75 6c 74 20 3d 20 2f 5e matchResult = /^ 00008270: 28 5b 61 2d 7a 5d 2b 29 28 5b 5f 5c 2d 5d 28 5b ([a-z]+)([_\-]([ 00008280: 61 2d 7a 5d 2b 29 29 3f 24 2f 2e 65 78 65 63 28 a-z]+))?$/.exec( 00008290: 6c 6f 77 65 72 43 61 73 65 4c 6f 63 61 6c 65 29 lowerCaseLocale) 000082a0: 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 6d ;. if (!m 000082b0: 61 74 63 68 52 65 73 75 6c 74 29 20 7b 0a 20 20 atchResult) {. 000082c0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 72 if (er 000082d0: 72 6f 72 73 29 20 7b 0a 20 20 20 20 20 20 20 20 rors) {. 000082e0: 20 20 20 20 20 20 20 20 65 72 72 6f 72 73 2e 70 errors.p 000082f0: 75 73 68 28 74 73 2e 63 72 65 61 74 65 43 6f 6d ush(ts.createCom 00008300: 70 69 6c 65 72 44 69 61 67 6e 6f 73 74 69 63 28 pilerDiagnostic( 00008310: 74 73 2e 44 69 61 67 6e 6f 73 74 69 63 73 2e 4c ts.Diagnostics.L 00008320: 6f 63 61 6c 65 5f 6d 75 73 74 5f 62 65 5f 6f 66 ocale_must_be_of 00008330: 5f 74 68 65 5f 66 6f 72 6d 5f 6c 61 6e 67 75 61 _the_form_langua 00008340: 67 65 5f 6f 72 5f 6c 61 6e 67 75 61 67 65 5f 74 ge_or_language_t 00008350: 65 72 72 69 74 6f 72 79 5f 46 6f 72 5f 65 78 61 erritory_For_exa 00008360: 6d 70 6c 65 5f 30 5f 6f 72 5f 31 2c 20 22 65 6e mple_0_or_1, "en 00008370: 22 2c 20 22 6a 61 2d 6a 70 22 29 29 3b 0a 20 20 ", "ja-jp"));. 00008380: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 00008390: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a return;. 000083a0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 000083b0: 20 20 76 61 72 20 6c 61 6e 67 75 61 67 65 20 3d var language = 000083c0: 20 6d 61 74 63 68 52 65 73 75 6c 74 5b 31 5d 3b matchResult[1]; 000083d0: 0a 20 20 20 20 20 20 20 20 76 61 72 20 74 65 72 . var ter 000083e0: 72 69 74 6f 72 79 20 3d 20 6d 61 74 63 68 52 65 ritory = matchRe 000083f0: 73 75 6c 74 5b 33 5d 3b 0a 20 20 20 20 20 20 20 sult[3];. 00008400: 20 2f 2f 20 46 69 72 73 74 20 74 72 79 20 74 68 // First try th 00008410: 65 20 65 6e 74 69 72 65 20 6c 6f 63 61 6c 65 2c e entire locale, 00008420: 20 74 68 65 6e 20 66 61 6c 6c 20 62 61 63 6b 20 then fall back 00008430: 74 6f 20 6a 75 73 74 20 6c 61 6e 67 75 61 67 65 to just language 00008440: 20 69 66 20 74 68 61 74 27 73 20 61 6c 6c 20 77 if that's all w 00008450: 65 20 68 61 76 65 2e 0a 20 20 20 20 20 20 20 20 e have.. 00008460: 2f 2f 20 45 69 74 68 65 72 20 77 61 79 73 20 64 // Either ways d 00008470: 6f 20 6e 6f 74 20 66 61 69 6c 2c 20 61 6e 64 20 o not fail, and 00008480: 66 61 6c 6c 62 61 63 6b 20 74 6f 20 74 68 65 20 fallback to the 00008490: 45 6e 67 6c 69 73 68 20 64 69 61 67 6e 6f 73 74 English diagnost 000084a0: 69 63 20 73 74 72 69 6e 67 73 2e 0a 20 20 20 20 ic strings.. 000084b0: 20 20 20 20 69 66 20 28 74 73 2e 63 6f 6e 74 61 if (ts.conta 000084c0: 69 6e 73 28 74 73 2e 73 75 70 70 6f 72 74 65 64 ins(ts.supported 000084d0: 4c 6f 63 61 6c 65 44 69 72 65 63 74 6f 72 69 65 LocaleDirectorie 000084e0: 73 2c 20 6c 6f 77 65 72 43 61 73 65 4c 6f 63 61 s, lowerCaseLoca 000084f0: 6c 65 29 20 26 26 20 21 74 72 79 53 65 74 4c 61 le) && !trySetLa 00008500: 6e 67 75 61 67 65 41 6e 64 54 65 72 72 69 74 6f nguageAndTerrito 00008510: 72 79 28 6c 61 6e 67 75 61 67 65 2c 20 74 65 72 ry(language, ter 00008520: 72 69 74 6f 72 79 2c 20 65 72 72 6f 72 73 29 29 ritory, errors)) 00008530: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 {. t 00008540: 72 79 53 65 74 4c 61 6e 67 75 61 67 65 41 6e 64 rySetLanguageAnd 00008550: 54 65 72 72 69 74 6f 72 79 28 6c 61 6e 67 75 61 Territory(langua 00008560: 67 65 2c 20 2f 2a 74 65 72 72 69 74 6f 72 79 2a ge, /*territory* 00008570: 2f 20 75 6e 64 65 66 69 6e 65 64 2c 20 65 72 72 / undefined, err 00008580: 6f 72 73 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a ors);. }. 00008590: 20 20 20 20 20 20 20 20 2f 2f 20 53 65 74 20 74 // Set t 000085a0: 68 65 20 55 49 20 6c 6f 63 61 6c 65 20 66 6f 72 he UI locale for 000085b0: 20 73 74 72 69 6e 67 20 63 6f 6c 6c 61 74 69 6f string collatio 000085c0: 6e 0a 20 20 20 20 20 20 20 20 74 73 2e 73 65 74 n. ts.set 000085d0: 55 49 4c 6f 63 61 6c 65 28 6c 6f 63 61 6c 65 29 UILocale(locale) 000085e0: 3b 0a 20 20 20 20 20 20 20 20 66 75 6e 63 74 69 ;. functi 000085f0: 6f 6e 20 74 72 79 53 65 74 4c 61 6e 67 75 61 67 on trySetLanguag 00008600: 65 41 6e 64 54 65 72 72 69 74 6f 72 79 28 6c 61 eAndTerritory(la 00008610: 6e 67 75 61 67 65 2c 20 74 65 72 72 69 74 6f 72 nguage, territor 00008620: 79 2c 20 65 72 72 6f 72 73 29 20 7b 0a 20 20 20 y, errors) {. 00008630: 20 20 20 20 20 20 20 20 20 76 61 72 20 63 6f 6d var com 00008640: 70 69 6c 65 72 46 69 6c 65 50 61 74 68 20 3d 20 pilerFilePath = 00008650: 74 73 2e 6e 6f 72 6d 61 6c 69 7a 65 50 61 74 68 ts.normalizePath 00008660: 28 73 79 73 2e 67 65 74 45 78 65 63 75 74 69 6e (sys.getExecutin 00008670: 67 46 69 6c 65 50 61 74 68 28 29 29 3b 0a 20 20 gFilePath());. 00008680: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 63 6f var co 00008690: 6e 74 61 69 6e 69 6e 67 44 69 72 65 63 74 6f 72 ntainingDirector 000086a0: 79 50 61 74 68 20 3d 20 74 73 2e 67 65 74 44 69 yPath = ts.getDi 000086b0: 72 65 63 74 6f 72 79 50 61 74 68 28 63 6f 6d 70 rectoryPath(comp 000086c0: 69 6c 65 72 46 69 6c 65 50 61 74 68 29 3b 0a 20 ilerFilePath);. 000086d0: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 66 var f 000086e0: 69 6c 65 50 61 74 68 20 3d 20 74 73 2e 63 6f 6d ilePath = ts.com 000086f0: 62 69 6e 65 50 61 74 68 73 28 63 6f 6e 74 61 69 binePaths(contai 00008700: 6e 69 6e 67 44 69 72 65 63 74 6f 72 79 50 61 74 ningDirectoryPat 00008710: 68 2c 20 6c 61 6e 67 75 61 67 65 29 3b 0a 20 20 h, language);. 00008720: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 65 if (te 00008730: 72 72 69 74 6f 72 79 29 20 7b 0a 20 20 20 20 20 rritory) {. 00008740: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 50 fileP 00008750: 61 74 68 20 3d 20 66 69 6c 65 50 61 74 68 20 2b ath = filePath + 00008760: 20 22 2d 22 20 2b 20 74 65 72 72 69 74 6f 72 79 "-" + territory 00008770: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a ;. }. 00008780: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 file 00008790: 50 61 74 68 20 3d 20 73 79 73 2e 72 65 73 6f 6c Path = sys.resol 000087a0: 76 65 50 61 74 68 28 74 73 2e 63 6f 6d 62 69 6e vePath(ts.combin 000087b0: 65 50 61 74 68 73 28 66 69 6c 65 50 61 74 68 2c ePaths(filePath, 000087c0: 20 22 64 69 61 67 6e 6f 73 74 69 63 4d 65 73 73 "diagnosticMess 000087d0: 61 67 65 73 2e 67 65 6e 65 72 61 74 65 64 2e 6a ages.generated.j 000087e0: 73 6f 6e 22 29 29 3b 0a 20 20 20 20 20 20 20 20 son"));. 000087f0: 20 20 20 20 69 66 20 28 21 73 79 73 2e 66 69 6c if (!sys.fil 00008800: 65 45 78 69 73 74 73 28 66 69 6c 65 50 61 74 68 eExists(filePath 00008810: 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 )) {. 00008820: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 return fals 00008830: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d e;. } 00008840: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 . // 00008850: 54 4f 44 4f 3a 20 41 64 64 20 63 6f 64 65 50 61 TODO: Add codePa 00008860: 67 65 20 73 75 70 70 6f 72 74 20 66 6f 72 20 72 ge support for r 00008870: 65 61 64 46 69 6c 65 3f 0a 20 20 20 20 20 20 20 eadFile?. 00008880: 20 20 20 20 20 76 61 72 20 66 69 6c 65 43 6f 6e var fileCon 00008890: 74 65 6e 74 73 20 3d 20 22 22 3b 0a 20 20 20 20 tents = "";. 000088a0: 20 20 20 20 20 20 20 20 74 72 79 20 7b 0a 20 20 try {. 000088b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 fi 000088c0: 6c 65 43 6f 6e 74 65 6e 74 73 20 3d 20 73 79 73 leContents = sys 000088d0: 2e 72 65 61 64 46 69 6c 65 28 66 69 6c 65 50 61 .readFile(filePa 000088e0: 74 68 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 th);. 000088f0: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 }. c 00008900: 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20 20 20 atch (e) {. 00008910: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 if (e 00008920: 72 72 6f 72 73 29 20 7b 0a 20 20 20 20 20 20 20 rrors) {. 00008930: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 err 00008940: 6f 72 73 2e 70 75 73 68 28 74 73 2e 63 72 65 61 ors.push(ts.crea 00008950: 74 65 43 6f 6d 70 69 6c 65 72 44 69 61 67 6e 6f teCompilerDiagno 00008960: 73 74 69 63 28 74 73 2e 44 69 61 67 6e 6f 73 74 stic(ts.Diagnost 00008970: 69 63 73 2e 55 6e 61 62 6c 65 5f 74 6f 5f 6f 70 ics.Unable_to_op 00008980: 65 6e 5f 66 69 6c 65 5f 30 2c 20 66 69 6c 65 50 en_file_0, fileP 00008990: 61 74 68 29 29 3b 0a 20 20 20 20 20 20 20 20 20 ath));. 000089a0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 000089b0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 000089c0: 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20 false;. 000089d0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 000089e0: 20 74 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20 try {. 000089f0: 20 20 20 20 20 20 20 2f 2f 20 74 68 69 73 20 69 // this i 00008a00: 73 20 61 20 67 6c 6f 62 61 6c 20 6d 75 74 61 74 s a global mutat 00008a10: 69 6f 6e 20 28 6f 72 20 6c 69 76 65 20 62 69 6e ion (or live bin 00008a20: 64 69 6e 67 20 75 70 64 61 74 65 29 21 0a 20 20 ding update)!. 00008a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 73 ts 00008a40: 2e 73 65 74 4c 6f 63 61 6c 69 7a 65 64 44 69 61 .setLocalizedDia 00008a50: 67 6e 6f 73 74 69 63 4d 65 73 73 61 67 65 73 28 gnosticMessages( 00008a60: 4a 53 4f 4e 2e 70 61 72 73 65 28 66 69 6c 65 43 JSON.parse(fileC 00008a70: 6f 6e 74 65 6e 74 73 29 29 3b 0a 20 20 20 20 20 ontents));. 00008a80: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00008a90: 20 20 20 20 20 63 61 74 63 68 20 28 5f 61 29 20 catch (_a) 00008aa0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 00008ab0: 20 20 69 66 20 28 65 72 72 6f 72 73 29 20 7b 0a if (errors) {. 00008ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00008ad0: 20 20 20 20 65 72 72 6f 72 73 2e 70 75 73 68 28 errors.push( 00008ae0: 74 73 2e 63 72 65 61 74 65 43 6f 6d 70 69 6c 65 ts.createCompile 00008af0: 72 44 69 61 67 6e 6f 73 74 69 63 28 74 73 2e 44 rDiagnostic(ts.D 00008b00: 69 61 67 6e 6f 73 74 69 63 73 2e 43 6f 72 72 75 iagnostics.Corru 00008b10: 70 74 65 64 5f 6c 6f 63 61 6c 65 5f 66 69 6c 65 pted_locale_file 00008b20: 5f 30 2c 20 66 69 6c 65 50 61 74 68 29 29 3b 0a _0, filePath));. 00008b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00008b40: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 }. 00008b50: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a return false;. 00008b60: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. 00008b70: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00008b80: 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d true;. } 00008b90: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 76 61 . }. ts.va 00008ba0: 6c 69 64 61 74 65 4c 6f 63 61 6c 65 41 6e 64 53 lidateLocaleAndS 00008bb0: 65 74 4c 61 6e 67 75 61 67 65 20 3d 20 76 61 6c etLanguage = val 00008bc0: 69 64 61 74 65 4c 6f 63 61 6c 65 41 6e 64 53 65 idateLocaleAndSe 00008bd0: 74 4c 61 6e 67 75 61 67 65 3b 0a 20 20 20 20 66 tLanguage;. f 00008be0: 75 6e 63 74 69 6f 6e 20 67 65 74 4f 72 69 67 69 unction getOrigi 00008bf0: 6e 61 6c 4e 6f 64 65 28 6e 6f 64 65 2c 20 6e 6f nalNode(node, no 00008c00: 64 65 54 65 73 74 29 20 7b 0a 20 20 20 20 20 20 deTest) {. 00008c10: 20 20 69 66 20 28 6e 6f 64 65 29 20 7b 0a 20 20 if (node) {. 00008c20: 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 while 00008c30: 28 6e 6f 64 65 2e 6f 72 69 67 69 6e 61 6c 20 21 (node.original ! 00008c40: 3d 3d 20 75 6e 64 65 66 69 6e 65 64 29 20 7b 0a == undefined) {. 00008c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00008c60: 6e 6f 64 65 20 3d 20 6e 6f 64 65 2e 6f 72 69 67 node = node.orig 00008c70: 69 6e 61 6c 3b 0a 20 20 20 20 20 20 20 20 20 20 inal;. 00008c80: 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 }. }. 00008c90: 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 6e 6f return !no 00008ca0: 64 65 54 65 73 74 20 7c 7c 20 6e 6f 64 65 54 65 deTest || nodeTe 00008cb0: 73 74 28 6e 6f 64 65 29 20 3f 20 6e 6f 64 65 20 st(node) ? node 00008cc0: 3a 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 : undefined;. 00008cd0: 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4f 72 69 }. ts.getOri 00008ce0: 67 69 6e 61 6c 4e 6f 64 65 20 3d 20 67 65 74 4f ginalNode = getO 00008cf0: 72 69 67 69 6e 61 6c 4e 6f 64 65 3b 0a 20 20 20 riginalNode;. 00008d00: 20 66 75 6e 63 74 69 6f 6e 20 66 69 6e 64 41 6e function findAn 00008d10: 63 65 73 74 6f 72 28 6e 6f 64 65 2c 20 63 61 6c cestor(node, cal 00008d20: 6c 62 61 63 6b 29 20 7b 0a 20 20 20 20 20 20 20 lback) {. 00008d30: 20 77 68 69 6c 65 20 28 6e 6f 64 65 29 20 7b 0a while (node) {. 00008d40: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var 00008d50: 72 65 73 75 6c 74 20 3d 20 63 61 6c 6c 62 61 63 result = callbac 00008d60: 6b 28 6e 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 k(node);. 00008d70: 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 20 if (result 00008d80: 3d 3d 3d 20 22 71 75 69 74 22 29 20 7b 0a 20 20 === "quit") {. 00008d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00008da0: 74 75 72 6e 20 75 6e 64 65 66 69 6e 65 64 3b 0a turn undefined;. 00008db0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. 00008dc0: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 else i 00008dd0: 66 20 28 72 65 73 75 6c 74 29 20 7b 0a 20 20 20 f (result) {. 00008de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00008df0: 75 72 6e 20 6e 6f 64 65 3b 0a 20 20 20 20 20 20 urn node;. 00008e00: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 00008e10: 20 20 20 20 6e 6f 64 65 20 3d 20 6e 6f 64 65 2e node = node. 00008e20: 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 parent;. 00008e30: 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e }. return 00008e40: 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 undefined;. 00008e50: 7d 0a 20 20 20 20 74 73 2e 66 69 6e 64 41 6e 63 }. ts.findAnc 00008e60: 65 73 74 6f 72 20 3d 20 66 69 6e 64 41 6e 63 65 estor = findAnce 00008e70: 73 74 6f 72 3b 0a 20 20 20 20 2f 2a 2a 0a 20 20 stor;. /**. 00008e80: 20 20 20 2a 20 47 65 74 73 20 61 20 76 61 6c 75 * Gets a valu 00008e90: 65 20 69 6e 64 69 63 61 74 69 6e 67 20 77 68 65 e indicating whe 00008ea0: 74 68 65 72 20 61 20 6e 6f 64 65 20 6f 72 69 67 ther a node orig 00008eb0: 69 6e 61 74 65 64 20 69 6e 20 74 68 65 20 70 61 inated in the pa 00008ec0: 72 73 65 20 74 72 65 65 2e 0a 20 20 20 20 20 2a rse tree.. * 00008ed0: 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 6e . * @param n 00008ee0: 6f 64 65 20 54 68 65 20 6e 6f 64 65 20 74 6f 20 ode The node to 00008ef0: 74 65 73 74 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 test.. */. 00008f00: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 50 61 72 function isPar 00008f10: 73 65 54 72 65 65 4e 6f 64 65 28 6e 6f 64 65 29 seTreeNode(node) 00008f20: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00008f30: 6e 20 28 6e 6f 64 65 2e 66 6c 61 67 73 20 26 20 n (node.flags & 00008f40: 38 20 2f 2a 20 4e 6f 64 65 46 6c 61 67 73 2e 53 8 /* NodeFlags.S 00008f50: 79 6e 74 68 65 73 69 7a 65 64 20 2a 2f 29 20 3d ynthesized */) = 00008f60: 3d 3d 20 30 3b 0a 20 20 20 20 7d 0a 20 20 20 20 == 0;. }. 00008f70: 74 73 2e 69 73 50 61 72 73 65 54 72 65 65 4e 6f ts.isParseTreeNo 00008f80: 64 65 20 3d 20 69 73 50 61 72 73 65 54 72 65 65 de = isParseTree 00008f90: 4e 6f 64 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 Node;. functi 00008fa0: 6f 6e 20 67 65 74 50 61 72 73 65 54 72 65 65 4e on getParseTreeN 00008fb0: 6f 64 65 28 6e 6f 64 65 2c 20 6e 6f 64 65 54 65 ode(node, nodeTe 00008fc0: 73 74 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 st) {. if 00008fd0: 20 28 6e 6f 64 65 20 3d 3d 3d 20 75 6e 64 65 66 (node === undef 00008fe0: 69 6e 65 64 20 7c 7c 20 69 73 50 61 72 73 65 54 ined || isParseT 00008ff0: 72 65 65 4e 6f 64 65 28 6e 6f 64 65 29 29 20 7b reeNode(node)) { 00009000: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret 00009010: 75 72 6e 20 6e 6f 64 65 3b 0a 20 20 20 20 20 20 urn node;. 00009020: 20 20 7d 0a 20 20 20 20 20 20 20 20 6e 6f 64 65 }. node 00009030: 20 3d 20 6e 6f 64 65 2e 6f 72 69 67 69 6e 61 6c = node.original 00009040: 3b 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 ;. while 00009050: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 00009060: 20 20 20 20 20 69 66 20 28 69 73 50 61 72 73 65 if (isParse 00009070: 54 72 65 65 4e 6f 64 65 28 6e 6f 64 65 29 29 20 TreeNode(node)) 00009080: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 00009090: 20 20 72 65 74 75 72 6e 20 21 6e 6f 64 65 54 65 return !nodeTe 000090a0: 73 74 20 7c 7c 20 6e 6f 64 65 54 65 73 74 28 6e st || nodeTest(n 000090b0: 6f 64 65 29 20 3f 20 6e 6f 64 65 20 3a 20 75 6e ode) ? node : un 000090c0: 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 defined;. 000090d0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 }. 000090e0: 20 20 20 6e 6f 64 65 20 3d 20 6e 6f 64 65 2e 6f node = node.o 000090f0: 72 69 67 69 6e 61 6c 3b 0a 20 20 20 20 20 20 20 riginal;. 00009100: 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e }. }. ts. 00009110: 67 65 74 50 61 72 73 65 54 72 65 65 4e 6f 64 65 getParseTreeNode 00009120: 20 3d 20 67 65 74 50 61 72 73 65 54 72 65 65 4e = getParseTreeN 00009130: 6f 64 65 3b 0a 20 20 20 20 2f 2a 2a 20 41 64 64 ode;. /** Add 00009140: 20 61 6e 20 65 78 74 72 61 20 75 6e 64 65 72 73 an extra unders 00009150: 63 6f 72 65 20 74 6f 20 69 64 65 6e 74 69 66 69 core to identifi 00009160: 65 72 73 20 74 68 61 74 20 73 74 61 72 74 20 77 ers that start w 00009170: 69 74 68 20 74 77 6f 20 75 6e 64 65 72 73 63 6f ith two undersco 00009180: 72 65 73 20 74 6f 20 61 76 6f 69 64 20 69 73 73 res to avoid iss 00009190: 75 65 73 20 77 69 74 68 20 6d 61 67 69 63 20 6e ues with magic n 000091a0: 61 6d 65 73 20 6c 69 6b 65 20 27 5f 5f 70 72 6f ames like '__pro 000091b0: 74 6f 5f 5f 27 20 2a 2f 0a 20 20 20 20 66 75 6e to__' */. fun 000091c0: 63 74 69 6f 6e 20 65 73 63 61 70 65 4c 65 61 64 ction escapeLead 000091d0: 69 6e 67 55 6e 64 65 72 73 63 6f 72 65 73 28 69 ingUnderscores(i 000091e0: 64 65 6e 74 69 66 69 65 72 29 20 7b 0a 20 20 20 dentifier) {. 000091f0: 20 20 20 20 20 72 65 74 75 72 6e 20 28 69 64 65 return (ide 00009200: 6e 74 69 66 69 65 72 2e 6c 65 6e 67 74 68 20 3e ntifier.length > 00009210: 3d 20 32 20 26 26 20 69 64 65 6e 74 69 66 69 65 = 2 && identifie 00009220: 72 2e 63 68 61 72 43 6f 64 65 41 74 28 30 29 20 r.charCodeAt(0) 00009230: 3d 3d 3d 20 39 35 20 2f 2a 20 43 68 61 72 61 63 === 95 /* Charac 00009240: 74 65 72 43 6f 64 65 73 2e 5f 20 2a 2f 20 26 26 terCodes._ */ && 00009250: 20 69 64 65 6e 74 69 66 69 65 72 2e 63 68 61 72 identifier.char 00009260: 43 6f 64 65 41 74 28 31 29 20 3d 3d 3d 20 39 35 CodeAt(1) === 95 00009270: 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 /* CharacterCod 00009280: 65 73 2e 5f 20 2a 2f 20 3f 20 22 5f 22 20 2b 20 es._ */ ? "_" + 00009290: 69 64 65 6e 74 69 66 69 65 72 20 3a 20 69 64 65 identifier : ide 000092a0: 6e 74 69 66 69 65 72 29 3b 0a 20 20 20 20 7d 0a ntifier);. }. 000092b0: 20 20 20 20 74 73 2e 65 73 63 61 70 65 4c 65 61 ts.escapeLea 000092c0: 64 69 6e 67 55 6e 64 65 72 73 63 6f 72 65 73 20 dingUnderscores 000092d0: 3d 20 65 73 63 61 70 65 4c 65 61 64 69 6e 67 55 = escapeLeadingU 000092e0: 6e 64 65 72 73 63 6f 72 65 73 3b 0a 20 20 20 20 nderscores;. 000092f0: 2f 2a 2a 0a 20 20 20 20 20 2a 20 52 65 6d 6f 76 /**. * Remov 00009300: 65 20 65 78 74 72 61 20 75 6e 64 65 72 73 63 6f e extra undersco 00009310: 72 65 20 66 72 6f 6d 20 65 73 63 61 70 65 64 20 re from escaped 00009320: 69 64 65 6e 74 69 66 69 65 72 20 74 65 78 74 20 identifier text 00009330: 63 6f 6e 74 65 6e 74 2e 0a 20 20 20 20 20 2a 0a content.. *. 00009340: 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 69 64 * @param id 00009350: 65 6e 74 69 66 69 65 72 20 54 68 65 20 65 73 63 entifier The esc 00009360: 61 70 65 64 20 69 64 65 6e 74 69 66 69 65 72 20 aped identifier 00009370: 74 65 78 74 2e 0a 20 20 20 20 20 2a 20 40 72 65 text.. * @re 00009380: 74 75 72 6e 73 20 54 68 65 20 75 6e 65 73 63 61 turns The unesca 00009390: 70 65 64 20 69 64 65 6e 74 69 66 69 65 72 20 74 ped identifier t 000093a0: 65 78 74 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 ext.. */. 000093b0: 20 66 75 6e 63 74 69 6f 6e 20 75 6e 65 73 63 61 function unesca 000093c0: 70 65 4c 65 61 64 69 6e 67 55 6e 64 65 72 73 63 peLeadingUndersc 000093d0: 6f 72 65 73 28 69 64 65 6e 74 69 66 69 65 72 29 ores(identifier) 000093e0: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 {. var i 000093f0: 64 20 3d 20 69 64 65 6e 74 69 66 69 65 72 3b 0a d = identifier;. 00009400: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 return i 00009410: 64 2e 6c 65 6e 67 74 68 20 3e 3d 20 33 20 26 26 d.length >= 3 && 00009420: 20 69 64 2e 63 68 61 72 43 6f 64 65 41 74 28 30 id.charCodeAt(0 00009430: 29 20 3d 3d 3d 20 39 35 20 2f 2a 20 43 68 61 72 ) === 95 /* Char 00009440: 61 63 74 65 72 43 6f 64 65 73 2e 5f 20 2a 2f 20 acterCodes._ */ 00009450: 26 26 20 69 64 2e 63 68 61 72 43 6f 64 65 41 74 && id.charCodeAt 00009460: 28 31 29 20 3d 3d 3d 20 39 35 20 2f 2a 20 43 68 (1) === 95 /* Ch 00009470: 61 72 61 63 74 65 72 43 6f 64 65 73 2e 5f 20 2a aracterCodes._ * 00009480: 2f 20 26 26 20 69 64 2e 63 68 61 72 43 6f 64 65 / && id.charCode 00009490: 41 74 28 32 29 20 3d 3d 3d 20 39 35 20 2f 2a 20 At(2) === 95 /* 000094a0: 43 68 61 72 61 63 74 65 72 43 6f 64 65 73 2e 5f CharacterCodes._ 000094b0: 20 2a 2f 20 3f 20 69 64 2e 73 75 62 73 74 72 28 */ ? id.substr( 000094c0: 31 29 20 3a 20 69 64 3b 0a 20 20 20 20 7d 0a 20 1) : id;. }. 000094d0: 20 20 20 74 73 2e 75 6e 65 73 63 61 70 65 4c 65 ts.unescapeLe 000094e0: 61 64 69 6e 67 55 6e 64 65 72 73 63 6f 72 65 73 adingUnderscores 000094f0: 20 3d 20 75 6e 65 73 63 61 70 65 4c 65 61 64 69 = unescapeLeadi 00009500: 6e 67 55 6e 64 65 72 73 63 6f 72 65 73 3b 0a 20 ngUnderscores;. 00009510: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 64 54 65 function idTe 00009520: 78 74 28 69 64 65 6e 74 69 66 69 65 72 4f 72 50 xt(identifierOrP 00009530: 72 69 76 61 74 65 4e 61 6d 65 29 20 7b 0a 20 20 rivateName) {. 00009540: 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 6e 65 return une 00009550: 73 63 61 70 65 4c 65 61 64 69 6e 67 55 6e 64 65 scapeLeadingUnde 00009560: 72 73 63 6f 72 65 73 28 69 64 65 6e 74 69 66 69 rscores(identifi 00009570: 65 72 4f 72 50 72 69 76 61 74 65 4e 61 6d 65 2e erOrPrivateName. 00009580: 65 73 63 61 70 65 64 54 65 78 74 29 3b 0a 20 20 escapedText);. 00009590: 20 20 7d 0a 20 20 20 20 74 73 2e 69 64 54 65 78 }. ts.idTex 000095a0: 74 20 3d 20 69 64 54 65 78 74 3b 0a 20 20 20 20 t = idText;. 000095b0: 66 75 6e 63 74 69 6f 6e 20 73 79 6d 62 6f 6c 4e function symbolN 000095c0: 61 6d 65 28 73 79 6d 62 6f 6c 29 20 7b 0a 20 20 ame(symbol) {. 000095d0: 20 20 20 20 20 20 69 66 20 28 73 79 6d 62 6f 6c if (symbol 000095e0: 2e 76 61 6c 75 65 44 65 63 6c 61 72 61 74 69 6f .valueDeclaratio 000095f0: 6e 20 26 26 20 69 73 50 72 69 76 61 74 65 49 64 n && isPrivateId 00009600: 65 6e 74 69 66 69 65 72 43 6c 61 73 73 45 6c 65 entifierClassEle 00009610: 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e 28 mentDeclaration( 00009620: 73 79 6d 62 6f 6c 2e 76 61 6c 75 65 44 65 63 6c symbol.valueDecl 00009630: 61 72 61 74 69 6f 6e 29 29 20 7b 0a 20 20 20 20 aration)) {. 00009640: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 return i 00009650: 64 54 65 78 74 28 73 79 6d 62 6f 6c 2e 76 61 6c dText(symbol.val 00009660: 75 65 44 65 63 6c 61 72 61 74 69 6f 6e 2e 6e 61 ueDeclaration.na 00009670: 6d 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 me);. }. 00009680: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 6e return un 00009690: 65 73 63 61 70 65 4c 65 61 64 69 6e 67 55 6e 64 escapeLeadingUnd 000096a0: 65 72 73 63 6f 72 65 73 28 73 79 6d 62 6f 6c 2e erscores(symbol. 000096b0: 65 73 63 61 70 65 64 4e 61 6d 65 29 3b 0a 20 20 escapedName);. 000096c0: 20 20 7d 0a 20 20 20 20 74 73 2e 73 79 6d 62 6f }. ts.symbo 000096d0: 6c 4e 61 6d 65 20 3d 20 73 79 6d 62 6f 6c 4e 61 lName = symbolNa 000096e0: 6d 65 3b 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 me;. /**. 000096f0: 20 2a 20 41 20 4a 53 44 6f 63 54 79 70 65 64 65 * A JSDocTypede 00009700: 66 20 74 61 67 20 68 61 73 20 61 6e 20 5f 6f 70 f tag has an _op 00009710: 74 69 6f 6e 61 6c 5f 20 6e 61 6d 65 20 66 69 65 tional_ name fie 00009720: 6c 64 20 2d 20 69 66 20 61 20 6e 61 6d 65 20 69 ld - if a name i 00009730: 73 20 6e 6f 74 20 64 69 72 65 63 74 6c 79 20 70 s not directly p 00009740: 72 65 73 65 6e 74 2c 20 77 65 20 73 68 6f 75 6c resent, we shoul 00009750: 64 0a 20 20 20 20 20 2a 20 61 74 74 65 6d 70 74 d. * attempt 00009760: 20 74 6f 20 64 72 61 77 20 74 68 65 20 6e 61 6d to draw the nam 00009770: 65 20 66 72 6f 6d 20 74 68 65 20 6e 6f 64 65 20 e from the node 00009780: 74 68 65 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 the declaration 00009790: 69 73 20 6f 6e 20 28 61 73 20 74 68 61 74 20 64 is on (as that d 000097a0: 65 63 6c 61 72 61 74 69 6f 6e 20 69 73 20 77 68 eclaration is wh 000097b0: 61 74 20 69 74 73 27 20 73 79 6d 62 6f 6c 0a 20 at its' symbol. 000097c0: 20 20 20 20 2a 20 77 69 6c 6c 20 62 65 20 6d 65 * will be me 000097d0: 72 67 65 64 20 77 69 74 68 29 0a 20 20 20 20 20 rged with). 000097e0: 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 */. function 000097f0: 6e 61 6d 65 46 6f 72 4e 61 6d 65 6c 65 73 73 4a nameForNamelessJ 00009800: 53 44 6f 63 54 79 70 65 64 65 66 28 64 65 63 6c SDocTypedef(decl 00009810: 61 72 61 74 69 6f 6e 29 20 7b 0a 20 20 20 20 20 aration) {. 00009820: 20 20 20 76 61 72 20 68 6f 73 74 4e 6f 64 65 20 var hostNode 00009830: 3d 20 64 65 63 6c 61 72 61 74 69 6f 6e 2e 70 61 = declaration.pa 00009840: 72 65 6e 74 2e 70 61 72 65 6e 74 3b 0a 20 20 20 rent.parent;. 00009850: 20 20 20 20 20 69 66 20 28 21 68 6f 73 74 4e 6f if (!hostNo 00009860: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 de) {. 00009870: 20 20 72 65 74 75 72 6e 20 75 6e 64 65 66 69 6e return undefin 00009880: 65 64 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 ed;. }. 00009890: 20 20 20 20 20 20 2f 2f 20 43 6f 76 65 72 73 20 // Covers 000098a0: 63 6c 61 73 73 65 73 2c 20 66 75 6e 63 74 69 6f classes, functio 000098b0: 6e 73 20 2d 20 61 6e 79 20 6e 61 6d 65 64 20 64 ns - any named d 000098c0: 65 63 6c 61 72 61 74 69 6f 6e 20 68 6f 73 74 20 eclaration host 000098d0: 6e 6f 64 65 0a 20 20 20 20 20 20 20 20 69 66 20 node. if 000098e0: 28 69 73 44 65 63 6c 61 72 61 74 69 6f 6e 28 68 (isDeclaration(h 000098f0: 6f 73 74 4e 6f 64 65 29 29 20 7b 0a 20 20 20 20 ostNode)) {. 00009900: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 return g 00009910: 65 74 44 65 63 6c 61 72 61 74 69 6f 6e 49 64 65 etDeclarationIde 00009920: 6e 74 69 66 69 65 72 28 68 6f 73 74 4e 6f 64 65 ntifier(hostNode 00009930: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 );. }. 00009940: 20 20 20 20 20 2f 2f 20 43 6f 76 65 72 73 20 72 // Covers r 00009950: 65 6d 61 69 6e 69 6e 67 20 63 61 73 65 73 20 28 emaining cases ( 00009960: 72 65 74 75 72 6e 69 6e 67 20 75 6e 64 65 66 69 returning undefi 00009970: 6e 65 64 20 69 66 20 6e 6f 6e 65 20 6d 61 74 63 ned if none matc 00009980: 68 29 2e 0a 20 20 20 20 20 20 20 20 73 77 69 74 h).. swit 00009990: 63 68 20 28 68 6f 73 74 4e 6f 64 65 2e 6b 69 6e ch (hostNode.kin 000099a0: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 d) {. 000099b0: 20 63 61 73 65 20 32 33 37 20 2f 2a 20 53 79 6e case 237 /* Syn 000099c0: 74 61 78 4b 69 6e 64 2e 56 61 72 69 61 62 6c 65 taxKind.Variable 000099d0: 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 Statement */:. 000099e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if 000099f0: 20 28 68 6f 73 74 4e 6f 64 65 2e 64 65 63 6c 61 (hostNode.decla 00009a00: 72 61 74 69 6f 6e 4c 69 73 74 20 26 26 20 68 6f rationList && ho 00009a10: 73 74 4e 6f 64 65 2e 64 65 63 6c 61 72 61 74 69 stNode.declarati 00009a20: 6f 6e 4c 69 73 74 2e 64 65 63 6c 61 72 61 74 69 onList.declarati 00009a30: 6f 6e 73 5b 30 5d 29 20 7b 0a 20 20 20 20 20 20 ons[0]) {. 00009a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00009a50: 74 75 72 6e 20 67 65 74 44 65 63 6c 61 72 61 74 turn getDeclarat 00009a60: 69 6f 6e 49 64 65 6e 74 69 66 69 65 72 28 68 6f ionIdentifier(ho 00009a70: 73 74 4e 6f 64 65 2e 64 65 63 6c 61 72 61 74 69 stNode.declarati 00009a80: 6f 6e 4c 69 73 74 2e 64 65 63 6c 61 72 61 74 69 onList.declarati 00009a90: 6f 6e 73 5b 30 5d 29 3b 0a 20 20 20 20 20 20 20 ons[0]);. 00009aa0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 00009ab0: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b break 00009ac0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ;. ca 00009ad0: 73 65 20 32 33 38 20 2f 2a 20 53 79 6e 74 61 78 se 238 /* Syntax 00009ae0: 4b 69 6e 64 2e 45 78 70 72 65 73 73 69 6f 6e 53 Kind.ExpressionS 00009af0: 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 tatement */:. 00009b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 var 00009b10: 20 65 78 70 72 20 3d 20 68 6f 73 74 4e 6f 64 65 expr = hostNode 00009b20: 2e 65 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 .expression;. 00009b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if 00009b40: 28 65 78 70 72 2e 6b 69 6e 64 20 3d 3d 3d 20 32 (expr.kind === 2 00009b50: 32 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 21 /* SyntaxKind 00009b60: 2e 42 69 6e 61 72 79 45 78 70 72 65 73 73 69 6f .BinaryExpressio 00009b70: 6e 20 2a 2f 20 26 26 20 65 78 70 72 2e 6f 70 65 n */ && expr.ope 00009b80: 72 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 6e 64 20 ratorToken.kind 00009b90: 3d 3d 3d 20 36 33 20 2f 2a 20 53 79 6e 74 61 78 === 63 /* Syntax 00009ba0: 4b 69 6e 64 2e 45 71 75 61 6c 73 54 6f 6b 65 6e Kind.EqualsToken 00009bb0: 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 20 20 */) {. 00009bc0: 20 20 20 20 20 20 20 20 20 20 20 65 78 70 72 20 expr 00009bd0: 3d 20 65 78 70 72 2e 6c 65 66 74 3b 0a 20 20 20 = expr.left;. 00009be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 }. 00009bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 s 00009c00: 77 69 74 63 68 20 28 65 78 70 72 2e 6b 69 6e 64 witch (expr.kind 00009c10: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 00009c20: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 36 case 206 00009c30: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 /* SyntaxKind.P 00009c40: 72 6f 70 65 72 74 79 41 63 63 65 73 73 45 78 70 ropertyAccessExp 00009c50: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 00009c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00009c70: 20 20 20 20 72 65 74 75 72 6e 20 65 78 70 72 2e return expr. 00009c80: 6e 61 6d 65 3b 0a 20 20 20 20 20 20 20 20 20 20 name;. 00009c90: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 00009ca0: 30 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 07 /* SyntaxKind 00009cb0: 2e 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 45 78 .ElementAccessEx 00009cc0: 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 pression */:. 00009cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00009ce0: 20 20 20 20 20 76 61 72 20 61 72 67 20 3d 20 65 var arg = e 00009cf0: 78 70 72 2e 61 72 67 75 6d 65 6e 74 45 78 70 72 xpr.argumentExpr 00009d00: 65 73 73 69 6f 6e 3b 0a 20 20 20 20 20 20 20 20 ession;. 00009d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00009d20: 69 66 20 28 74 73 2e 69 73 49 64 65 6e 74 69 66 if (ts.isIdentif 00009d30: 69 65 72 28 61 72 67 29 29 20 7b 0a 20 20 20 20 ier(arg)) {. 00009d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00009d50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 return a 00009d60: 72 67 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 rg;. 00009d70: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. 00009d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }. 00009d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00009da0: 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 break;. 00009db0: 20 20 20 63 61 73 65 20 32 31 32 20 2f 2a 20 53 case 212 /* S 00009dc0: 79 6e 74 61 78 4b 69 6e 64 2e 50 61 72 65 6e 74 yntaxKind.Parent 00009dd0: 68 65 73 69 7a 65 64 45 78 70 72 65 73 73 69 6f hesizedExpressio 00009de0: 6e 20 2a 2f 3a 20 7b 0a 20 20 20 20 20 20 20 20 n */: {. 00009df0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 return g 00009e00: 65 74 44 65 63 6c 61 72 61 74 69 6f 6e 49 64 65 etDeclarationIde 00009e10: 6e 74 69 66 69 65 72 28 68 6f 73 74 4e 6f 64 65 ntifier(hostNode 00009e20: 2e 65 78 70 72 65 73 73 69 6f 6e 29 3b 0a 20 20 .expression);. 00009e30: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 00009e40: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 35 30 case 250 00009e50: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4c /* SyntaxKind.L 00009e60: 61 62 65 6c 65 64 53 74 61 74 65 6d 65 6e 74 20 abeledStatement 00009e70: 2a 2f 3a 20 7b 0a 20 20 20 20 20 20 20 20 20 20 */: {. 00009e80: 20 20 20 20 20 20 69 66 20 28 69 73 44 65 63 6c if (isDecl 00009e90: 61 72 61 74 69 6f 6e 28 68 6f 73 74 4e 6f 64 65 aration(hostNode 00009ea0: 2e 73 74 61 74 65 6d 65 6e 74 29 20 7c 7c 20 69 .statement) || i 00009eb0: 73 45 78 70 72 65 73 73 69 6f 6e 28 68 6f 73 74 sExpression(host 00009ec0: 4e 6f 64 65 2e 73 74 61 74 65 6d 65 6e 74 29 29 Node.statement)) 00009ed0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 00009ee0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 return ge 00009ef0: 74 44 65 63 6c 61 72 61 74 69 6f 6e 49 64 65 6e tDeclarationIden 00009f00: 74 69 66 69 65 72 28 68 6f 73 74 4e 6f 64 65 2e tifier(hostNode. 00009f10: 73 74 61 74 65 6d 65 6e 74 29 3b 0a 20 20 20 20 statement);. 00009f20: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. 00009f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br 00009f40: 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 eak;. 00009f50: 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. }. 00009f60: 20 7d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 }. function 00009f70: 67 65 74 44 65 63 6c 61 72 61 74 69 6f 6e 49 64 getDeclarationId 00009f80: 65 6e 74 69 66 69 65 72 28 6e 6f 64 65 29 20 7b entifier(node) { 00009f90: 0a 20 20 20 20 20 20 20 20 76 61 72 20 6e 61 6d . var nam 00009fa0: 65 20 3d 20 67 65 74 4e 61 6d 65 4f 66 44 65 63 e = getNameOfDec 00009fb0: 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 3b 0a laration(node);. 00009fc0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e return n 00009fd0: 61 6d 65 20 26 26 20 74 73 2e 69 73 49 64 65 6e ame && ts.isIden 00009fe0: 74 69 66 69 65 72 28 6e 61 6d 65 29 20 3f 20 6e tifier(name) ? n 00009ff0: 61 6d 65 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b ame : undefined; 0000a000: 0a 20 20 20 20 7d 0a 20 20 20 20 2f 2a 2a 20 40 . }. /** @ 0000a010: 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 internal */. 0000a020: 66 75 6e 63 74 69 6f 6e 20 6e 6f 64 65 48 61 73 function nodeHas 0000a030: 4e 61 6d 65 28 73 74 61 74 65 6d 65 6e 74 2c 20 Name(statement, 0000a040: 6e 61 6d 65 29 20 7b 0a 20 20 20 20 20 20 20 20 name) {. 0000a050: 69 66 20 28 69 73 4e 61 6d 65 64 44 65 63 6c 61 if (isNamedDecla 0000a060: 72 61 74 69 6f 6e 28 73 74 61 74 65 6d 65 6e 74 ration(statement 0000a070: 29 20 26 26 20 74 73 2e 69 73 49 64 65 6e 74 69 ) && ts.isIdenti 0000a080: 66 69 65 72 28 73 74 61 74 65 6d 65 6e 74 2e 6e fier(statement.n 0000a090: 61 6d 65 29 20 26 26 20 69 64 54 65 78 74 28 73 ame) && idText(s 0000a0a0: 74 61 74 65 6d 65 6e 74 2e 6e 61 6d 65 29 20 3d tatement.name) = 0000a0b0: 3d 3d 20 69 64 54 65 78 74 28 6e 61 6d 65 29 29 == idText(name)) 0000a0c0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 {. r 0000a0d0: 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 eturn true;. 0000a0e0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 }. if 0000a0f0: 20 28 74 73 2e 69 73 56 61 72 69 61 62 6c 65 53 (ts.isVariableS 0000a100: 74 61 74 65 6d 65 6e 74 28 73 74 61 74 65 6d 65 tatement(stateme 0000a110: 6e 74 29 20 26 26 20 74 73 2e 73 6f 6d 65 28 73 nt) && ts.some(s 0000a120: 74 61 74 65 6d 65 6e 74 2e 64 65 63 6c 61 72 61 tatement.declara 0000a130: 74 69 6f 6e 4c 69 73 74 2e 64 65 63 6c 61 72 61 tionList.declara 0000a140: 74 69 6f 6e 73 2c 20 66 75 6e 63 74 69 6f 6e 20 tions, function 0000a150: 28 64 29 20 7b 20 72 65 74 75 72 6e 20 6e 6f 64 (d) { return nod 0000a160: 65 48 61 73 4e 61 6d 65 28 64 2c 20 6e 61 6d 65 eHasName(d, name 0000a170: 29 3b 20 7d 29 29 20 7b 0a 20 20 20 20 20 20 20 ); })) {. 0000a180: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 return true 0000a190: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 0000a1a0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 return false 0000a1b0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 6e ;. }. ts.n 0000a1c0: 6f 64 65 48 61 73 4e 61 6d 65 20 3d 20 6e 6f 64 odeHasName = nod 0000a1d0: 65 48 61 73 4e 61 6d 65 3b 0a 20 20 20 20 66 75 eHasName;. fu 0000a1e0: 6e 63 74 69 6f 6e 20 67 65 74 4e 61 6d 65 4f 66 nction getNameOf 0000a1f0: 4a 53 44 6f 63 54 79 70 65 64 65 66 28 64 65 63 JSDocTypedef(dec 0000a200: 6c 61 72 61 74 69 6f 6e 29 20 7b 0a 20 20 20 20 laration) {. 0000a210: 20 20 20 20 72 65 74 75 72 6e 20 64 65 63 6c 61 return decla 0000a220: 72 61 74 69 6f 6e 2e 6e 61 6d 65 20 7c 7c 20 6e ration.name || n 0000a230: 61 6d 65 46 6f 72 4e 61 6d 65 6c 65 73 73 4a 53 ameForNamelessJS 0000a240: 44 6f 63 54 79 70 65 64 65 66 28 64 65 63 6c 61 DocTypedef(decla 0000a250: 72 61 74 69 6f 6e 29 3b 0a 20 20 20 20 7d 0a 20 ration);. }. 0000a260: 20 20 20 74 73 2e 67 65 74 4e 61 6d 65 4f 66 4a ts.getNameOfJ 0000a270: 53 44 6f 63 54 79 70 65 64 65 66 20 3d 20 67 65 SDocTypedef = ge 0000a280: 74 4e 61 6d 65 4f 66 4a 53 44 6f 63 54 79 70 65 tNameOfJSDocType 0000a290: 64 65 66 3b 0a 20 20 20 20 2f 2a 2a 20 40 69 6e def;. /** @in 0000a2a0: 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 ternal */. fu 0000a2b0: 6e 63 74 69 6f 6e 20 69 73 4e 61 6d 65 64 44 65 nction isNamedDe 0000a2c0: 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 20 claration(node) 0000a2d0: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 0000a2e0: 20 21 21 6e 6f 64 65 2e 6e 61 6d 65 3b 20 2f 2f !!node.name; // 0000a2f0: 20 41 20 27 6e 61 6d 65 27 20 70 72 6f 70 65 72 A 'name' proper 0000a300: 74 79 20 73 68 6f 75 6c 64 20 61 6c 77 61 79 73 ty should always 0000a310: 20 62 65 20 61 20 44 65 63 6c 61 72 61 74 69 6f be a Declaratio 0000a320: 6e 4e 61 6d 65 2e 0a 20 20 20 20 7d 0a 20 20 20 nName.. }. 0000a330: 20 74 73 2e 69 73 4e 61 6d 65 64 44 65 63 6c 61 ts.isNamedDecla 0000a340: 72 61 74 69 6f 6e 20 3d 20 69 73 4e 61 6d 65 64 ration = isNamed 0000a350: 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 Declaration;. 0000a360: 20 2f 2a 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a /** @internal * 0000a370: 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 /. function g 0000a380: 65 74 4e 6f 6e 41 73 73 69 67 6e 65 64 4e 61 6d etNonAssignedNam 0000a390: 65 4f 66 44 65 63 6c 61 72 61 74 69 6f 6e 28 64 eOfDeclaration(d 0000a3a0: 65 63 6c 61 72 61 74 69 6f 6e 29 20 7b 0a 20 20 eclaration) {. 0000a3b0: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 64 65 switch (de 0000a3c0: 63 6c 61 72 61 74 69 6f 6e 2e 6b 69 6e 64 29 20 claration.kind) 0000a3d0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 {. ca 0000a3e0: 73 65 20 37 39 20 2f 2a 20 53 79 6e 74 61 78 4b se 79 /* SyntaxK 0000a3f0: 69 6e 64 2e 49 64 65 6e 74 69 66 69 65 72 20 2a ind.Identifier * 0000a400: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0000a410: 20 20 20 72 65 74 75 72 6e 20 64 65 63 6c 61 72 return declar 0000a420: 61 74 69 6f 6e 3b 0a 20 20 20 20 20 20 20 20 20 ation;. 0000a430: 20 20 20 63 61 73 65 20 33 34 37 20 2f 2a 20 53 case 347 /* S 0000a440: 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 50 yntaxKind.JSDocP 0000a450: 72 6f 70 65 72 74 79 54 61 67 20 2a 2f 3a 0a 20 ropertyTag */:. 0000a460: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0000a470: 33 34 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 340 /* SyntaxKin 0000a480: 64 2e 4a 53 44 6f 63 50 61 72 61 6d 65 74 65 72 d.JSDocParameter 0000a490: 54 61 67 20 2a 2f 3a 20 7b 0a 20 20 20 20 20 20 Tag */: {. 0000a4a0: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e 61 var na 0000a4b0: 6d 65 20 3d 20 64 65 63 6c 61 72 61 74 69 6f 6e me = declaration 0000a4c0: 2e 6e 61 6d 65 3b 0a 20 20 20 20 20 20 20 20 20 .name;. 0000a4d0: 20 20 20 20 20 20 20 69 66 20 28 6e 61 6d 65 2e if (name. 0000a4e0: 6b 69 6e 64 20 3d 3d 3d 20 31 36 31 20 2f 2a 20 kind === 161 /* 0000a4f0: 53 79 6e 74 61 78 4b 69 6e 64 2e 51 75 61 6c 69 SyntaxKind.Quali 0000a500: 66 69 65 64 4e 61 6d 65 20 2a 2f 29 20 7b 0a 20 fiedName */) {. 0000a510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0000a520: 20 20 20 72 65 74 75 72 6e 20 6e 61 6d 65 2e 72 return name.r 0000a530: 69 67 68 74 3b 0a 20 20 20 20 20 20 20 20 20 20 ight;. 0000a540: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 0000a550: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 break;. 0000a560: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 0000a570: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 case 20 0000a580: 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 8 /* SyntaxKind. 0000a590: 43 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a CallExpression * 0000a5a0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 0000a5b0: 61 73 65 20 32 32 31 20 2f 2a 20 53 79 6e 74 61 ase 221 /* Synta 0000a5c0: 78 4b 69 6e 64 2e 42 69 6e 61 72 79 45 78 70 72 xKind.BinaryExpr 0000a5d0: 65 73 73 69 6f 6e 20 2a 2f 3a 20 7b 0a 20 20 20 ession */: {. 0000a5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 var 0000a5f0: 20 65 78 70 72 5f 31 20 3d 20 64 65 63 6c 61 72 expr_1 = declar 0000a600: 61 74 69 6f 6e 3b 0a 20 20 20 20 20 20 20 20 20 ation;. 0000a610: 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 74 switch (t 0000a620: 73 2e 67 65 74 41 73 73 69 67 6e 6d 65 6e 74 44 s.getAssignmentD 0000a630: 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 28 65 eclarationKind(e 0000a640: 78 70 72 5f 31 29 29 20 7b 0a 20 20 20 20 20 20 xpr_1)) {. 0000a650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 0000a660: 73 65 20 31 20 2f 2a 20 41 73 73 69 67 6e 6d 65 se 1 /* Assignme 0000a670: 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e ntDeclarationKin 0000a680: 64 2e 45 78 70 6f 72 74 73 50 72 6f 70 65 72 74 d.ExportsPropert 0000a690: 79 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 y */:. 0000a6a0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 34 case 4 0000a6b0: 20 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 /* AssignmentDe 0000a6c0: 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 54 68 clarationKind.Th 0000a6d0: 69 73 50 72 6f 70 65 72 74 79 20 2a 2f 3a 0a 20 isProperty */:. 0000a6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0000a6f0: 20 20 20 63 61 73 65 20 35 20 2f 2a 20 41 73 73 case 5 /* Ass 0000a700: 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 ignmentDeclarati 0000a710: 6f 6e 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 20 onKind.Property 0000a720: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0000a730: 20 20 20 20 20 20 20 20 63 61 73 65 20 33 20 2f case 3 / 0000a740: 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c * AssignmentDecl 0000a750: 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 50 72 6f 74 arationKind.Prot 0000a760: 6f 74 79 70 65 50 72 6f 70 65 72 74 79 20 2a 2f otypeProperty */ 0000a770: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0000a780: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 0000a790: 20 74 73 2e 67 65 74 45 6c 65 6d 65 6e 74 4f 72 ts.getElementOr 0000a7a0: 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 41 72 PropertyAccessAr 0000a7b0: 67 75 6d 65 6e 74 45 78 70 72 65 73 73 69 6f 6e gumentExpression 0000a7c0: 4f 72 4e 61 6d 65 28 65 78 70 72 5f 31 2e 6c 65 OrName(expr_1.le 0000a7d0: 66 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ft);. 0000a7e0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 37 20 case 7 0000a7f0: 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 /* AssignmentDec 0000a800: 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 4f 62 6a larationKind.Obj 0000a810: 65 63 74 44 65 66 69 6e 65 50 72 6f 70 65 72 74 ectDefinePropert 0000a820: 79 56 61 6c 75 65 20 2a 2f 3a 0a 20 20 20 20 20 yValue */:. 0000a830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0000a840: 61 73 65 20 38 20 2f 2a 20 41 73 73 69 67 6e 6d ase 8 /* Assignm 0000a850: 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b 69 entDeclarationKi 0000a860: 6e 64 2e 4f 62 6a 65 63 74 44 65 66 69 6e 65 50 nd.ObjectDefineP 0000a870: 72 6f 70 65 72 74 79 45 78 70 6f 72 74 73 20 2a ropertyExports * 0000a880: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0000a890: 20 20 20 20 20 20 20 63 61 73 65 20 39 20 2f 2a case 9 /* 0000a8a0: 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 AssignmentDecla 0000a8b0: 72 61 74 69 6f 6e 4b 69 6e 64 2e 4f 62 6a 65 63 rationKind.Objec 0000a8c0: 74 44 65 66 69 6e 65 50 72 6f 74 6f 74 79 70 65 tDefinePrototype 0000a8d0: 50 72 6f 70 65 72 74 79 20 2a 2f 3a 0a 20 20 20 Property */:. 0000a8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0000a8f0: 20 20 20 20 20 72 65 74 75 72 6e 20 65 78 70 72 return expr 0000a900: 5f 31 2e 61 72 67 75 6d 65 6e 74 73 5b 31 5d 3b _1.arguments[1]; 0000a910: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0000a920: 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 default:. 0000a930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0000a940: 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 6e 64 return und 0000a950: 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 efined;. 0000a960: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0000a970: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 0000a980: 20 20 20 20 63 61 73 65 20 33 34 35 20 2f 2a 20 case 345 /* 0000a990: 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 SyntaxKind.JSDoc 0000a9a0: 54 79 70 65 64 65 66 54 61 67 20 2a 2f 3a 0a 20 TypedefTag */:. 0000a9b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 0000a9c0: 65 74 75 72 6e 20 67 65 74 4e 61 6d 65 4f 66 4a eturn getNameOfJ 0000a9d0: 53 44 6f 63 54 79 70 65 64 65 66 28 64 65 63 6c SDocTypedef(decl 0000a9e0: 61 72 61 74 69 6f 6e 29 3b 0a 20 20 20 20 20 20 aration);. 0000a9f0: 20 20 20 20 20 20 63 61 73 65 20 33 33 39 20 2f case 339 / 0000aa00: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 * SyntaxKind.JSD 0000aa10: 6f 63 45 6e 75 6d 54 61 67 20 2a 2f 3a 0a 20 20 ocEnumTag */:. 0000aa20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 0000aa30: 74 75 72 6e 20 6e 61 6d 65 46 6f 72 4e 61 6d 65 turn nameForName 0000aa40: 6c 65 73 73 4a 53 44 6f 63 54 79 70 65 64 65 66 lessJSDocTypedef 0000aa50: 28 64 65 63 6c 61 72 61 74 69 6f 6e 29 3b 0a 20 (declaration);. 0000aa60: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0000aa70: 32 37 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 271 /* SyntaxKin 0000aa80: 64 2e 45 78 70 6f 72 74 41 73 73 69 67 6e 6d 65 d.ExportAssignme 0000aa90: 6e 74 20 2a 2f 3a 20 7b 0a 20 20 20 20 20 20 20 nt */: {. 0000aaa0: 20 20 20 20 20 20 20 20 20 76 61 72 20 65 78 70 var exp 0000aab0: 72 65 73 73 69 6f 6e 20 3d 20 64 65 63 6c 61 72 ression = declar 0000aac0: 61 74 69 6f 6e 2e 65 78 70 72 65 73 73 69 6f 6e ation.expression 0000aad0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 0000aae0: 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 49 64 return ts.isId 0000aaf0: 65 6e 74 69 66 69 65 72 28 65 78 70 72 65 73 73 entifier(express 0000ab00: 69 6f 6e 29 20 3f 20 65 78 70 72 65 73 73 69 6f ion) ? expressio 0000ab10: 6e 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 n : undefined;. 0000ab20: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 0000ab30: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 case 20 0000ab40: 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 7 /* SyntaxKind. 0000ab50: 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 45 78 70 ElementAccessExp 0000ab60: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 0000ab70: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var 0000ab80: 65 78 70 72 20 3d 20 64 65 63 6c 61 72 61 74 69 expr = declarati 0000ab90: 6f 6e 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 on;. 0000aba0: 20 20 20 20 69 66 20 28 74 73 2e 69 73 42 69 6e if (ts.isBin 0000abb0: 64 61 62 6c 65 53 74 61 74 69 63 45 6c 65 6d 65 dableStaticEleme 0000abc0: 6e 74 41 63 63 65 73 73 45 78 70 72 65 73 73 69 ntAccessExpressi 0000abd0: 6f 6e 28 65 78 70 72 29 29 20 7b 0a 20 20 20 20 on(expr)) {. 0000abe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0000abf0: 72 65 74 75 72 6e 20 65 78 70 72 2e 61 72 67 75 return expr.argu 0000ac00: 6d 65 6e 74 45 78 70 72 65 73 73 69 6f 6e 3b 0a mentExpression;. 0000ac10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0000ac20: 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. }. 0000ac30: 20 20 20 20 72 65 74 75 72 6e 20 64 65 63 6c 61 return decla 0000ac40: 72 61 74 69 6f 6e 2e 6e 61 6d 65 3b 0a 20 20 20 ration.name;. 0000ac50: 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4e 6f 6e }. ts.getNon 0000ac60: 41 73 73 69 67 6e 65 64 4e 61 6d 65 4f 66 44 65 AssignedNameOfDe 0000ac70: 63 6c 61 72 61 74 69 6f 6e 20 3d 20 67 65 74 4e claration = getN 0000ac80: 6f 6e 41 73 73 69 67 6e 65 64 4e 61 6d 65 4f 66 onAssignedNameOf 0000ac90: 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 Declaration;. 0000aca0: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4e 61 6d function getNam 0000acb0: 65 4f 66 44 65 63 6c 61 72 61 74 69 6f 6e 28 64 eOfDeclaration(d 0000acc0: 65 63 6c 61 72 61 74 69 6f 6e 29 20 7b 0a 20 20 eclaration) {. 0000acd0: 20 20 20 20 20 20 69 66 20 28 64 65 63 6c 61 72 if (declar 0000ace0: 61 74 69 6f 6e 20 3d 3d 3d 20 75 6e 64 65 66 69 ation === undefi 0000acf0: 6e 65 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 ned). 0000ad00: 20 72 65 74 75 72 6e 20 75 6e 64 65 66 69 6e 65 return undefine 0000ad10: 64 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 d;. retur 0000ad20: 6e 20 67 65 74 4e 6f 6e 41 73 73 69 67 6e 65 64 n getNonAssigned 0000ad30: 4e 61 6d 65 4f 66 44 65 63 6c 61 72 61 74 69 6f NameOfDeclaratio 0000ad40: 6e 28 64 65 63 6c 61 72 61 74 69 6f 6e 29 20 7c n(declaration) | 0000ad50: 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 74 |. (t 0000ad60: 73 2e 69 73 46 75 6e 63 74 69 6f 6e 45 78 70 72 s.isFunctionExpr 0000ad70: 65 73 73 69 6f 6e 28 64 65 63 6c 61 72 61 74 69 ession(declarati 0000ad80: 6f 6e 29 20 7c 7c 20 74 73 2e 69 73 41 72 72 6f on) || ts.isArro 0000ad90: 77 46 75 6e 63 74 69 6f 6e 28 64 65 63 6c 61 72 wFunction(declar 0000ada0: 61 74 69 6f 6e 29 20 7c 7c 20 74 73 2e 69 73 43 ation) || ts.isC 0000adb0: 6c 61 73 73 45 78 70 72 65 73 73 69 6f 6e 28 64 lassExpression(d 0000adc0: 65 63 6c 61 72 61 74 69 6f 6e 29 20 3f 20 67 65 eclaration) ? ge 0000add0: 74 41 73 73 69 67 6e 65 64 4e 61 6d 65 28 64 65 tAssignedName(de 0000ade0: 63 6c 61 72 61 74 69 6f 6e 29 20 3a 20 75 6e 64 claration) : und 0000adf0: 65 66 69 6e 65 64 29 3b 0a 20 20 20 20 7d 0a 20 efined);. }. 0000ae00: 20 20 20 74 73 2e 67 65 74 4e 61 6d 65 4f 66 44 ts.getNameOfD 0000ae10: 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 67 65 74 eclaration = get 0000ae20: 4e 61 6d 65 4f 66 44 65 63 6c 61 72 61 74 69 6f NameOfDeclaratio 0000ae30: 6e 3b 0a 20 20 20 20 2f 2a 40 69 6e 74 65 72 6e n;. /*@intern 0000ae40: 61 6c 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f al*/. functio 0000ae50: 6e 20 67 65 74 41 73 73 69 67 6e 65 64 4e 61 6d n getAssignedNam 0000ae60: 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 e(node) {. 0000ae70: 20 20 69 66 20 28 21 6e 6f 64 65 2e 70 61 72 65 if (!node.pare 0000ae80: 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 nt) {. 0000ae90: 20 20 72 65 74 75 72 6e 20 75 6e 64 65 66 69 6e return undefin 0000aea0: 65 64 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 ed;. }. 0000aeb0: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 74 else if (t 0000aec0: 73 2e 69 73 50 72 6f 70 65 72 74 79 41 73 73 69 s.isPropertyAssi 0000aed0: 67 6e 6d 65 6e 74 28 6e 6f 64 65 2e 70 61 72 65 gnment(node.pare 0000aee0: 6e 74 29 20 7c 7c 20 74 73 2e 69 73 42 69 6e 64 nt) || ts.isBind 0000aef0: 69 6e 67 45 6c 65 6d 65 6e 74 28 6e 6f 64 65 2e ingElement(node. 0000af00: 70 61 72 65 6e 74 29 29 20 7b 0a 20 20 20 20 20 parent)) {. 0000af10: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 0000af20: 64 65 2e 70 61 72 65 6e 74 2e 6e 61 6d 65 3b 0a de.parent.name;. 0000af30: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0000af40: 20 20 65 6c 73 65 20 69 66 20 28 74 73 2e 69 73 else if (ts.is 0000af50: 42 69 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e BinaryExpression 0000af60: 28 6e 6f 64 65 2e 70 61 72 65 6e 74 29 20 26 26 (node.parent) && 0000af70: 20 6e 6f 64 65 20 3d 3d 3d 20 6e 6f 64 65 2e 70 node === node.p 0000af80: 61 72 65 6e 74 2e 72 69 67 68 74 29 20 7b 0a 20 arent.right) {. 0000af90: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 if (t 0000afa0: 73 2e 69 73 49 64 65 6e 74 69 66 69 65 72 28 6e s.isIdentifier(n 0000afb0: 6f 64 65 2e 70 61 72 65 6e 74 2e 6c 65 66 74 29 ode.parent.left) 0000afc0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 0000afd0: 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e return node. 0000afe0: 70 61 72 65 6e 74 2e 6c 65 66 74 3b 0a 20 20 20 parent.left;. 0000aff0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 0000b000: 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 else if ( 0000b010: 74 73 2e 69 73 41 63 63 65 73 73 45 78 70 72 65 ts.isAccessExpre 0000b020: 73 73 69 6f 6e 28 6e 6f 64 65 2e 70 61 72 65 6e ssion(node.paren 0000b030: 74 2e 6c 65 66 74 29 29 20 7b 0a 20 20 20 20 20 t.left)) {. 0000b040: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0000b050: 6e 20 74 73 2e 67 65 74 45 6c 65 6d 65 6e 74 4f n ts.getElementO 0000b060: 72 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 41 rPropertyAccessA 0000b070: 72 67 75 6d 65 6e 74 45 78 70 72 65 73 73 69 6f rgumentExpressio 0000b080: 6e 4f 72 4e 61 6d 65 28 6e 6f 64 65 2e 70 61 72 nOrName(node.par 0000b090: 65 6e 74 2e 6c 65 66 74 29 3b 0a 20 20 20 20 20 ent.left);. 0000b0a0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 0000b0b0: 20 7d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 20 }. else 0000b0c0: 69 66 20 28 74 73 2e 69 73 56 61 72 69 61 62 6c if (ts.isVariabl 0000b0d0: 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 eDeclaration(nod 0000b0e0: 65 2e 70 61 72 65 6e 74 29 20 26 26 20 74 73 2e e.parent) && ts. 0000b0f0: 69 73 49 64 65 6e 74 69 66 69 65 72 28 6e 6f 64 isIdentifier(nod 0000b100: 65 2e 70 61 72 65 6e 74 2e 6e 61 6d 65 29 29 20 e.parent.name)) 0000b110: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 {. re 0000b120: 74 75 72 6e 20 6e 6f 64 65 2e 70 61 72 65 6e 74 turn node.parent 0000b130: 2e 6e 61 6d 65 3b 0a 20 20 20 20 20 20 20 20 7d .name;. } 0000b140: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 . }. ts.ge 0000b150: 74 41 73 73 69 67 6e 65 64 4e 61 6d 65 20 3d 20 tAssignedName = 0000b160: 67 65 74 41 73 73 69 67 6e 65 64 4e 61 6d 65 3b getAssignedName; 0000b170: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 0000b180: 74 44 65 63 6f 72 61 74 6f 72 73 28 6e 6f 64 65 tDecorators(node 0000b190: 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 ) {. if ( 0000b1a0: 74 73 2e 68 61 73 44 65 63 6f 72 61 74 6f 72 73 ts.hasDecorators 0000b1b0: 28 6e 6f 64 65 29 29 20 7b 0a 20 20 20 20 20 20 (node)) {. 0000b1c0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 0000b1d0: 66 69 6c 74 65 72 28 6e 6f 64 65 2e 6d 6f 64 69 filter(node.modi 0000b1e0: 66 69 65 72 73 2c 20 74 73 2e 69 73 44 65 63 6f fiers, ts.isDeco 0000b1f0: 72 61 74 6f 72 29 3b 0a 20 20 20 20 20 20 20 20 rator);. 0000b200: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 }. }. ts.g 0000b210: 65 74 44 65 63 6f 72 61 74 6f 72 73 20 3d 20 67 etDecorators = g 0000b220: 65 74 44 65 63 6f 72 61 74 6f 72 73 3b 0a 20 20 etDecorators;. 0000b230: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4d 6f function getMo 0000b240: 64 69 66 69 65 72 73 28 6e 6f 64 65 29 20 7b 0a difiers(node) {. 0000b250: 20 20 20 20 20 20 20 20 69 66 20 28 74 73 2e 68 if (ts.h 0000b260: 61 73 53 79 6e 74 61 63 74 69 63 4d 6f 64 69 66 asSyntacticModif 0000b270: 69 65 72 28 6e 6f 64 65 2c 20 31 32 35 39 35 31 ier(node, 125951 0000b280: 20 2f 2a 20 4d 6f 64 69 66 69 65 72 46 6c 61 67 /* ModifierFlag 0000b290: 73 2e 4d 6f 64 69 66 69 65 72 20 2a 2f 29 29 20 s.Modifier */)) 0000b2a0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 {. re 0000b2b0: 74 75 72 6e 20 74 73 2e 66 69 6c 74 65 72 28 6e turn ts.filter(n 0000b2c0: 6f 64 65 2e 6d 6f 64 69 66 69 65 72 73 2c 20 69 ode.modifiers, i 0000b2d0: 73 4d 6f 64 69 66 69 65 72 29 3b 0a 20 20 20 20 sModifier);. 0000b2e0: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 }. }. 0000b2f0: 74 73 2e 67 65 74 4d 6f 64 69 66 69 65 72 73 20 ts.getModifiers 0000b300: 3d 20 67 65 74 4d 6f 64 69 66 69 65 72 73 3b 0a = getModifiers;. 0000b310: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 function get 0000b320: 4a 53 44 6f 63 50 61 72 61 6d 65 74 65 72 54 61 JSDocParameterTa 0000b330: 67 73 57 6f 72 6b 65 72 28 70 61 72 61 6d 2c 20 gsWorker(param, 0000b340: 6e 6f 43 61 63 68 65 29 20 7b 0a 20 20 20 20 20 noCache) {. 0000b350: 20 20 20 69 66 20 28 70 61 72 61 6d 2e 6e 61 6d if (param.nam 0000b360: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 e) {. 0000b370: 20 69 66 20 28 74 73 2e 69 73 49 64 65 6e 74 69 if (ts.isIdenti 0000b380: 66 69 65 72 28 70 61 72 61 6d 2e 6e 61 6d 65 29 fier(param.name) 0000b390: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 0000b3a0: 20 20 20 20 76 61 72 20 6e 61 6d 65 5f 31 20 3d var name_1 = 0000b3b0: 20 70 61 72 61 6d 2e 6e 61 6d 65 2e 65 73 63 61 param.name.esca 0000b3c0: 70 65 64 54 65 78 74 3b 0a 20 20 20 20 20 20 20 pedText;. 0000b3d0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 0000b3e0: 67 65 74 4a 53 44 6f 63 54 61 67 73 57 6f 72 6b getJSDocTagsWork 0000b3f0: 65 72 28 70 61 72 61 6d 2e 70 61 72 65 6e 74 2c er(param.parent, 0000b400: 20 6e 6f 43 61 63 68 65 29 2e 66 69 6c 74 65 72 noCache).filter 0000b410: 28 66 75 6e 63 74 69 6f 6e 20 28 74 61 67 29 20 (function (tag) 0000b420: 7b 20 72 65 74 75 72 6e 20 74 73 2e 69 73 4a 53 { return ts.isJS 0000b430: 44 6f 63 50 61 72 61 6d 65 74 65 72 54 61 67 28 DocParameterTag( 0000b440: 74 61 67 29 20 26 26 20 74 73 2e 69 73 49 64 65 tag) && ts.isIde 0000b450: 6e 74 69 66 69 65 72 28 74 61 67 2e 6e 61 6d 65 ntifier(tag.name 0000b460: 29 20 26 26 20 74 61 67 2e 6e 61 6d 65 2e 65 73 ) && tag.name.es 0000b470: 63 61 70 65 64 54 65 78 74 20 3d 3d 3d 20 6e 61 capedText === na 0000b480: 6d 65 5f 31 3b 20 7d 29 3b 0a 20 20 20 20 20 20 me_1; });. 0000b490: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 0000b4a0: 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 else {. 0000b4b0: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 69 var i 0000b4c0: 20 3d 20 70 61 72 61 6d 2e 70 61 72 65 6e 74 2e = param.parent. 0000b4d0: 70 61 72 61 6d 65 74 65 72 73 2e 69 6e 64 65 78 parameters.index 0000b4e0: 4f 66 28 70 61 72 61 6d 29 3b 0a 20 20 20 20 20 Of(param);. 0000b4f0: 20 20 20 20 20 20 20 20 20 20 20 74 73 2e 44 65 ts.De 0000b500: 62 75 67 2e 61 73 73 65 72 74 28 69 20 3e 20 2d bug.assert(i > - 0000b510: 31 2c 20 22 50 61 72 61 6d 65 74 65 72 73 20 73 1, "Parameters s 0000b520: 68 6f 75 6c 64 20 61 6c 77 61 79 73 20 62 65 20 hould always be 0000b530: 69 6e 20 74 68 65 69 72 20 70 61 72 65 6e 74 73 in their parents 0000b540: 27 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 ' parameter list 0000b550: 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ");. 0000b560: 20 20 20 20 76 61 72 20 70 61 72 61 6d 54 61 67 var paramTag 0000b570: 73 20 3d 20 67 65 74 4a 53 44 6f 63 54 61 67 73 s = getJSDocTags 0000b580: 57 6f 72 6b 65 72 28 70 61 72 61 6d 2e 70 61 72 Worker(param.par 0000b590: 65 6e 74 2c 20 6e 6f 43 61 63 68 65 29 2e 66 69 ent, noCache).fi 0000b5a0: 6c 74 65 72 28 74 73 2e 69 73 4a 53 44 6f 63 50 lter(ts.isJSDocP 0000b5b0: 61 72 61 6d 65 74 65 72 54 61 67 29 3b 0a 20 20 arameterTag);. 0000b5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if 0000b5d0: 20 28 69 20 3c 20 70 61 72 61 6d 54 61 67 73 2e (i < paramTags. 0000b5e0: 6c 65 6e 67 74 68 29 20 7b 0a 20 20 20 20 20 20 length) {. 0000b5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 0000b600: 74 75 72 6e 20 5b 70 61 72 61 6d 54 61 67 73 5b turn [paramTags[ 0000b610: 69 5d 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 i]];. 0000b620: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 }. 0000b630: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 }. }. 0000b640: 20 20 20 20 20 20 20 2f 2f 20 72 65 74 75 72 6e // return 0000b650: 20 65 6d 70 74 79 20 61 72 72 61 79 20 66 6f 72 empty array for 0000b660: 3a 20 6f 75 74 2d 6f 66 2d 6f 72 64 65 72 20 62 : out-of-order b 0000b670: 69 6e 64 69 6e 67 20 70 61 74 74 65 72 6e 73 20 inding patterns 0000b680: 61 6e 64 20 4a 53 44 6f 63 20 66 75 6e 63 74 69 and JSDoc functi 0000b690: 6f 6e 20 73 79 6e 74 61 78 2c 20 77 68 69 63 68 on syntax, which 0000b6a0: 20 68 61 73 20 75 6e 2d 6e 61 6d 65 64 20 70 61 has un-named pa 0000b6b0: 72 61 6d 65 74 65 72 73 0a 20 20 20 20 20 20 20 rameters. 0000b6c0: 20 72 65 74 75 72 6e 20 74 73 2e 65 6d 70 74 79 return ts.empty 0000b6d0: 41 72 72 61 79 3b 0a 20 20 20 20 7d 0a 20 20 20 Array;. }. 0000b6e0: 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 47 65 74 73 /**. * Gets 0000b6f0: 20 74 68 65 20 4a 53 44 6f 63 20 70 61 72 61 6d the JSDoc param 0000b700: 65 74 65 72 20 74 61 67 73 20 66 6f 72 20 74 68 eter tags for th 0000b710: 65 20 6e 6f 64 65 20 69 66 20 70 72 65 73 65 6e e node if presen 0000b720: 74 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a t.. *. * 0000b730: 20 40 72 65 6d 61 72 6b 73 20 52 65 74 75 72 6e @remarks Return 0000b740: 73 20 61 6e 79 20 4a 53 44 6f 63 20 70 61 72 61 s any JSDoc para 0000b750: 6d 20 74 61 67 20 77 68 6f 73 65 20 6e 61 6d 65 m tag whose name 0000b760: 20 6d 61 74 63 68 65 73 20 74 68 65 20 70 72 6f matches the pro 0000b770: 76 69 64 65 64 0a 20 20 20 20 20 2a 20 70 61 72 vided. * par 0000b780: 61 6d 65 74 65 72 2c 20 77 68 65 74 68 65 72 20 ameter, whether 0000b790: 61 20 70 61 72 61 6d 20 74 61 67 20 6f 6e 20 61 a param tag on a 0000b7a0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 66 75 6e 63 containing func 0000b7b0: 74 69 6f 6e 0a 20 20 20 20 20 2a 20 65 78 70 72 tion. * expr 0000b7c0: 65 73 73 69 6f 6e 2c 20 6f 72 20 61 20 70 61 72 ession, or a par 0000b7d0: 61 6d 20 74 61 67 20 6f 6e 20 61 20 76 61 72 69 am tag on a vari 0000b7e0: 61 62 6c 65 20 64 65 63 6c 61 72 61 74 69 6f 6e able declaration 0000b7f0: 20 77 68 6f 73 65 0a 20 20 20 20 20 2a 20 69 6e whose. * in 0000b800: 69 74 69 61 6c 69 7a 65 72 20 69 73 20 74 68 65 itializer is the 0000b810: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 66 75 6e 63 containing func 0000b820: 74 69 6f 6e 2e 20 54 68 65 20 74 61 67 73 20 63 tion. The tags c 0000b830: 6c 6f 73 65 73 74 20 74 6f 20 74 68 65 0a 20 20 losest to the. 0000b840: 20 20 20 2a 20 6e 6f 64 65 20 61 72 65 20 72 65 * node are re 0000b850: 74 75 72 6e 65 64 20 66 69 72 73 74 2c 20 73 6f turned first, so 0000b860: 20 69 6e 20 74 68 65 20 70 72 65 76 69 6f 75 73 in the previous 0000b870: 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 70 61 example, the pa 0000b880: 72 61 6d 0a 20 20 20 20 20 2a 20 74 61 67 20 6f ram. * tag o 0000b890: 6e 20 74 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67 n the containing 0000b8a0: 20 66 75 6e 63 74 69 6f 6e 20 65 78 70 72 65 73 function expres 0000b8b0: 73 69 6f 6e 20 77 6f 75 6c 64 20 62 65 20 66 69 sion would be fi 0000b8c0: 72 73 74 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 rst.. *. 0000b8d0: 20 2a 20 46 6f 72 20 62 69 6e 64 69 6e 67 20 70 * For binding p 0000b8e0: 61 74 74 65 72 6e 73 2c 20 70 61 72 61 6d 65 74 atterns, paramet 0000b8f0: 65 72 20 74 61 67 73 20 61 72 65 20 6d 61 74 63 er tags are matc 0000b900: 68 65 64 20 62 79 20 70 6f 73 69 74 69 6f 6e 2e hed by position. 0000b910: 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e . */. fun 0000b920: 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 50 61 ction getJSDocPa 0000b930: 72 61 6d 65 74 65 72 54 61 67 73 28 70 61 72 61 rameterTags(para 0000b940: 6d 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 m) {. ret 0000b950: 75 72 6e 20 67 65 74 4a 53 44 6f 63 50 61 72 61 urn getJSDocPara 0000b960: 6d 65 74 65 72 54 61 67 73 57 6f 72 6b 65 72 28 meterTagsWorker( 0000b970: 70 61 72 61 6d 2c 20 2f 2a 6e 6f 43 61 63 68 65 param, /*noCache 0000b980: 2a 2f 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 7d */ false);. } 0000b990: 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 44 6f 63 . ts.getJSDoc 0000b9a0: 50 61 72 61 6d 65 74 65 72 54 61 67 73 20 3d 20 ParameterTags = 0000b9b0: 67 65 74 4a 53 44 6f 63 50 61 72 61 6d 65 74 65 getJSDocParamete 0000b9c0: 72 54 61 67 73 3b 0a 20 20 20 20 2f 2a 20 40 69 rTags;. /* @i 0000b9d0: 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 nternal */. f 0000b9e0: 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 unction getJSDoc 0000b9f0: 50 61 72 61 6d 65 74 65 72 54 61 67 73 4e 6f 43 ParameterTagsNoC 0000ba00: 61 63 68 65 28 70 61 72 61 6d 29 20 7b 0a 20 20 ache(param) {. 0000ba10: 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 return get 0000ba20: 4a 53 44 6f 63 50 61 72 61 6d 65 74 65 72 54 61 JSDocParameterTa 0000ba30: 67 73 57 6f 72 6b 65 72 28 70 61 72 61 6d 2c 20 gsWorker(param, 0000ba40: 2f 2a 6e 6f 43 61 63 68 65 2a 2f 20 74 72 75 65 /*noCache*/ true 0000ba50: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 0000ba60: 67 65 74 4a 53 44 6f 63 50 61 72 61 6d 65 74 65 getJSDocParamete 0000ba70: 72 54 61 67 73 4e 6f 43 61 63 68 65 20 3d 20 67 rTagsNoCache = g 0000ba80: 65 74 4a 53 44 6f 63 50 61 72 61 6d 65 74 65 72 etJSDocParameter 0000ba90: 54 61 67 73 4e 6f 43 61 63 68 65 3b 0a 20 20 20 TagsNoCache;. 0000baa0: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 function getJSD 0000bab0: 6f 63 54 79 70 65 50 61 72 61 6d 65 74 65 72 54 ocTypeParameterT 0000bac0: 61 67 73 57 6f 72 6b 65 72 28 70 61 72 61 6d 2c agsWorker(param, 0000bad0: 20 6e 6f 43 61 63 68 65 29 20 7b 0a 20 20 20 20 noCache) {. 0000bae0: 20 20 20 20 76 61 72 20 6e 61 6d 65 20 3d 20 70 var name = p 0000baf0: 61 72 61 6d 2e 6e 61 6d 65 2e 65 73 63 61 70 65 aram.name.escape 0000bb00: 64 54 65 78 74 3b 0a 20 20 20 20 20 20 20 20 72 dText;. r 0000bb10: 65 74 75 72 6e 20 67 65 74 4a 53 44 6f 63 54 61 eturn getJSDocTa 0000bb20: 67 73 57 6f 72 6b 65 72 28 70 61 72 61 6d 2e 70 gsWorker(param.p 0000bb30: 61 72 65 6e 74 2c 20 6e 6f 43 61 63 68 65 29 2e arent, noCache). 0000bb40: 66 69 6c 74 65 72 28 66 75 6e 63 74 69 6f 6e 20 filter(function 0000bb50: 28 74 61 67 29 20 7b 0a 20 20 20 20 20 20 20 20 (tag) {. 0000bb60: 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 return ts.is 0000bb70: 4a 53 44 6f 63 54 65 6d 70 6c 61 74 65 54 61 67 JSDocTemplateTag 0000bb80: 28 74 61 67 29 20 26 26 20 74 61 67 2e 74 79 70 (tag) && tag.typ 0000bb90: 65 50 61 72 61 6d 65 74 65 72 73 2e 73 6f 6d 65 eParameters.some 0000bba0: 28 66 75 6e 63 74 69 6f 6e 20 28 74 70 29 20 7b (function (tp) { 0000bbb0: 20 72 65 74 75 72 6e 20 74 70 2e 6e 61 6d 65 2e return tp.name. 0000bbc0: 65 73 63 61 70 65 64 54 65 78 74 20 3d 3d 3d 20 escapedText === 0000bbd0: 6e 61 6d 65 3b 20 7d 29 3b 0a 20 20 20 20 20 20 name; });. 0000bbe0: 20 20 7d 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 });. }. 0000bbf0: 2f 2a 2a 0a 20 20 20 20 20 2a 20 47 65 74 73 20 /**. * Gets 0000bc00: 74 68 65 20 4a 53 44 6f 63 20 74 79 70 65 20 70 the JSDoc type p 0000bc10: 61 72 61 6d 65 74 65 72 20 74 61 67 73 20 66 6f arameter tags fo 0000bc20: 72 20 74 68 65 20 6e 6f 64 65 20 69 66 20 70 72 r the node if pr 0000bc30: 65 73 65 6e 74 2e 0a 20 20 20 20 20 2a 0a 20 20 esent.. *. 0000bc40: 20 20 20 2a 20 40 72 65 6d 61 72 6b 73 20 52 65 * @remarks Re 0000bc50: 74 75 72 6e 73 20 61 6e 79 20 4a 53 44 6f 63 20 turns any JSDoc 0000bc60: 74 65 6d 70 6c 61 74 65 20 74 61 67 20 77 68 6f template tag who 0000bc70: 73 65 20 6e 61 6d 65 73 20 6d 61 74 63 68 20 74 se names match t 0000bc80: 68 65 20 70 72 6f 76 69 64 65 64 0a 20 20 20 20 he provided. 0000bc90: 20 2a 20 70 61 72 61 6d 65 74 65 72 2c 20 77 68 * parameter, wh 0000bca0: 65 74 68 65 72 20 61 20 74 65 6d 70 6c 61 74 65 ether a template 0000bcb0: 20 74 61 67 20 6f 6e 20 61 20 63 6f 6e 74 61 69 tag on a contai 0000bcc0: 6e 69 6e 67 20 66 75 6e 63 74 69 6f 6e 0a 20 20 ning function. 0000bcd0: 20 20 20 2a 20 65 78 70 72 65 73 73 69 6f 6e 2c * expression, 0000bce0: 20 6f 72 20 61 20 74 65 6d 70 6c 61 74 65 20 74 or a template t 0000bcf0: 61 67 20 6f 6e 20 61 20 76 61 72 69 61 62 6c 65 ag on a variable 0000bd00: 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 77 68 6f declaration who 0000bd10: 73 65 0a 20 20 20 20 20 2a 20 69 6e 69 74 69 61 se. * initia 0000bd20: 6c 69 7a 65 72 20 69 73 20 74 68 65 20 63 6f 6e lizer is the con 0000bd30: 74 61 69 6e 69 6e 67 20 66 75 6e 63 74 69 6f 6e taining function 0000bd40: 2e 20 54 68 65 20 74 61 67 73 20 63 6c 6f 73 65 . The tags close 0000bd50: 73 74 20 74 6f 20 74 68 65 0a 20 20 20 20 20 2a st to the. * 0000bd60: 20 6e 6f 64 65 20 61 72 65 20 72 65 74 75 72 6e node are return 0000bd70: 65 64 20 66 69 72 73 74 2c 20 73 6f 20 69 6e 20 ed first, so in 0000bd80: 74 68 65 20 70 72 65 76 69 6f 75 73 20 65 78 61 the previous exa 0000bd90: 6d 70 6c 65 2c 20 74 68 65 20 74 65 6d 70 6c 61 mple, the templa 0000bda0: 74 65 0a 20 20 20 20 20 2a 20 74 61 67 20 6f 6e te. * tag on 0000bdb0: 20 74 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 the containing 0000bdc0: 66 75 6e 63 74 69 6f 6e 20 65 78 70 72 65 73 73 function express 0000bdd0: 69 6f 6e 20 77 6f 75 6c 64 20 62 65 20 66 69 72 ion would be fir 0000bde0: 73 74 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 st.. */. 0000bdf0: 66 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f function getJSDo 0000be00: 63 54 79 70 65 50 61 72 61 6d 65 74 65 72 54 61 cTypeParameterTa 0000be10: 67 73 28 70 61 72 61 6d 29 20 7b 0a 20 20 20 20 gs(param) {. 0000be20: 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 4a 53 return getJS 0000be30: 44 6f 63 54 79 70 65 50 61 72 61 6d 65 74 65 72 DocTypeParameter 0000be40: 54 61 67 73 57 6f 72 6b 65 72 28 70 61 72 61 6d TagsWorker(param 0000be50: 2c 20 2f 2a 6e 6f 43 61 63 68 65 2a 2f 20 66 61 , /*noCache*/ fa 0000be60: 6c 73 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 lse);. }. 0000be70: 74 73 2e 67 65 74 4a 53 44 6f 63 54 79 70 65 50 ts.getJSDocTypeP 0000be80: 61 72 61 6d 65 74 65 72 54 61 67 73 20 3d 20 67 arameterTags = g 0000be90: 65 74 4a 53 44 6f 63 54 79 70 65 50 61 72 61 6d etJSDocTypeParam 0000bea0: 65 74 65 72 54 61 67 73 3b 0a 20 20 20 20 2f 2a eterTags;. /* 0000beb0: 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 @internal */. 0000bec0: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 function getJS 0000bed0: 44 6f 63 54 79 70 65 50 61 72 61 6d 65 74 65 72 DocTypeParameter 0000bee0: 54 61 67 73 4e 6f 43 61 63 68 65 28 70 61 72 61 TagsNoCache(para 0000bef0: 6d 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 m) {. ret 0000bf00: 75 72 6e 20 67 65 74 4a 53 44 6f 63 54 79 70 65 urn getJSDocType 0000bf10: 50 61 72 61 6d 65 74 65 72 54 61 67 73 57 6f 72 ParameterTagsWor 0000bf20: 6b 65 72 28 70 61 72 61 6d 2c 20 2f 2a 6e 6f 43 ker(param, /*noC 0000bf30: 61 63 68 65 2a 2f 20 74 72 75 65 29 3b 0a 20 20 ache*/ true);. 0000bf40: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 }. ts.getJS 0000bf50: 44 6f 63 54 79 70 65 50 61 72 61 6d 65 74 65 72 DocTypeParameter 0000bf60: 54 61 67 73 4e 6f 43 61 63 68 65 20 3d 20 67 65 TagsNoCache = ge 0000bf70: 74 4a 53 44 6f 63 54 79 70 65 50 61 72 61 6d 65 tJSDocTypeParame 0000bf80: 74 65 72 54 61 67 73 4e 6f 43 61 63 68 65 3b 0a terTagsNoCache;. 0000bf90: 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 52 /**. * R 0000bfa0: 65 74 75 72 6e 20 74 72 75 65 20 69 66 20 74 68 eturn true if th 0000bfb0: 65 20 6e 6f 64 65 20 68 61 73 20 4a 53 44 6f 63 e node has JSDoc 0000bfc0: 20 70 61 72 61 6d 65 74 65 72 20 74 61 67 73 2e parameter tags. 0000bfd0: 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 . *. * @ 0000bfe0: 72 65 6d 61 72 6b 73 20 49 6e 63 6c 75 64 65 73 remarks Includes 0000bff0: 20 70 61 72 61 6d 65 74 65 72 20 74 61 67 73 20 parameter tags 0000c000: 74 68 61 74 20 61 72 65 20 6e 6f 74 20 64 69 72 that are not dir 0000c010: 65 63 74 6c 79 20 6f 6e 20 74 68 65 20 6e 6f 64 ectly on the nod 0000c020: 65 2c 0a 20 20 20 20 20 2a 20 66 6f 72 20 65 78 e,. * for ex 0000c030: 61 6d 70 6c 65 20 6f 6e 20 61 20 76 61 72 69 61 ample on a varia 0000c040: 62 6c 65 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 ble declaration 0000c050: 77 68 6f 73 65 20 69 6e 69 74 69 61 6c 69 7a 65 whose initialize 0000c060: 72 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 r is a function 0000c070: 65 78 70 72 65 73 73 69 6f 6e 2e 0a 20 20 20 20 expression.. 0000c080: 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e */. function 0000c090: 20 68 61 73 4a 53 44 6f 63 50 61 72 61 6d 65 74 hasJSDocParamet 0000c0a0: 65 72 54 61 67 73 28 6e 6f 64 65 29 20 7b 0a 20 erTags(node) {. 0000c0b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 21 return !! 0000c0c0: 67 65 74 46 69 72 73 74 4a 53 44 6f 63 54 61 67 getFirstJSDocTag 0000c0d0: 28 6e 6f 64 65 2c 20 74 73 2e 69 73 4a 53 44 6f (node, ts.isJSDo 0000c0e0: 63 50 61 72 61 6d 65 74 65 72 54 61 67 29 3b 0a cParameterTag);. 0000c0f0: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 68 61 73 }. ts.has 0000c100: 4a 53 44 6f 63 50 61 72 61 6d 65 74 65 72 54 61 JSDocParameterTa 0000c110: 67 73 20 3d 20 68 61 73 4a 53 44 6f 63 50 61 72 gs = hasJSDocPar 0000c120: 61 6d 65 74 65 72 54 61 67 73 3b 0a 20 20 20 20 ameterTags;. 0000c130: 2f 2a 2a 20 47 65 74 73 20 74 68 65 20 4a 53 44 /** Gets the JSD 0000c140: 6f 63 20 61 75 67 6d 65 6e 74 73 20 74 61 67 20 oc augments tag 0000c150: 66 6f 72 20 74 68 65 20 6e 6f 64 65 20 69 66 20 for the node if 0000c160: 70 72 65 73 65 6e 74 20 2a 2f 0a 20 20 20 20 66 present */. f 0000c170: 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 unction getJSDoc 0000c180: 41 75 67 6d 65 6e 74 73 54 61 67 28 6e 6f 64 65 AugmentsTag(node 0000c190: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0000c1a0: 72 6e 20 67 65 74 46 69 72 73 74 4a 53 44 6f 63 rn getFirstJSDoc 0000c1b0: 54 61 67 28 6e 6f 64 65 2c 20 74 73 2e 69 73 4a Tag(node, ts.isJ 0000c1c0: 53 44 6f 63 41 75 67 6d 65 6e 74 73 54 61 67 29 SDocAugmentsTag) 0000c1d0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 ;. }. ts.g 0000c1e0: 65 74 4a 53 44 6f 63 41 75 67 6d 65 6e 74 73 54 etJSDocAugmentsT 0000c1f0: 61 67 20 3d 20 67 65 74 4a 53 44 6f 63 41 75 67 ag = getJSDocAug 0000c200: 6d 65 6e 74 73 54 61 67 3b 0a 20 20 20 20 2f 2a mentsTag;. /* 0000c210: 2a 20 47 65 74 73 20 74 68 65 20 4a 53 44 6f 63 * Gets the JSDoc 0000c220: 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 61 67 73 implements tags 0000c230: 20 66 6f 72 20 74 68 65 20 6e 6f 64 65 20 69 66 for the node if 0000c240: 20 70 72 65 73 65 6e 74 20 2a 2f 0a 20 20 20 20 present */. 0000c250: 66 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f function getJSDo 0000c260: 63 49 6d 70 6c 65 6d 65 6e 74 73 54 61 67 73 28 cImplementsTags( 0000c270: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 0000c280: 72 65 74 75 72 6e 20 67 65 74 41 6c 6c 4a 53 44 return getAllJSD 0000c290: 6f 63 54 61 67 73 28 6e 6f 64 65 2c 20 74 73 2e ocTags(node, ts. 0000c2a0: 69 73 4a 53 44 6f 63 49 6d 70 6c 65 6d 65 6e 74 isJSDocImplement 0000c2b0: 73 54 61 67 29 3b 0a 20 20 20 20 7d 0a 20 20 20 sTag);. }. 0000c2c0: 20 74 73 2e 67 65 74 4a 53 44 6f 63 49 6d 70 6c ts.getJSDocImpl 0000c2d0: 65 6d 65 6e 74 73 54 61 67 73 20 3d 20 67 65 74 ementsTags = get 0000c2e0: 4a 53 44 6f 63 49 6d 70 6c 65 6d 65 6e 74 73 54 JSDocImplementsT 0000c2f0: 61 67 73 3b 0a 20 20 20 20 2f 2a 2a 20 47 65 74 ags;. /** Get 0000c300: 73 20 74 68 65 20 4a 53 44 6f 63 20 63 6c 61 73 s the JSDoc clas 0000c310: 73 20 74 61 67 20 66 6f 72 20 74 68 65 20 6e 6f s tag for the no 0000c320: 64 65 20 69 66 20 70 72 65 73 65 6e 74 20 2a 2f de if present */ 0000c330: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 0000c340: 74 4a 53 44 6f 63 43 6c 61 73 73 54 61 67 28 6e tJSDocClassTag(n 0000c350: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 0000c360: 65 74 75 72 6e 20 67 65 74 46 69 72 73 74 4a 53 eturn getFirstJS 0000c370: 44 6f 63 54 61 67 28 6e 6f 64 65 2c 20 74 73 2e DocTag(node, ts. 0000c380: 69 73 4a 53 44 6f 63 43 6c 61 73 73 54 61 67 29 isJSDocClassTag) 0000c390: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 ;. }. ts.g 0000c3a0: 65 74 4a 53 44 6f 63 43 6c 61 73 73 54 61 67 20 etJSDocClassTag 0000c3b0: 3d 20 67 65 74 4a 53 44 6f 63 43 6c 61 73 73 54 = getJSDocClassT 0000c3c0: 61 67 3b 0a 20 20 20 20 2f 2a 2a 20 47 65 74 73 ag;. /** Gets 0000c3d0: 20 74 68 65 20 4a 53 44 6f 63 20 70 75 62 6c 69 the JSDoc publi 0000c3e0: 63 20 74 61 67 20 66 6f 72 20 74 68 65 20 6e 6f c tag for the no 0000c3f0: 64 65 20 69 66 20 70 72 65 73 65 6e 74 20 2a 2f de if present */ 0000c400: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 0000c410: 74 4a 53 44 6f 63 50 75 62 6c 69 63 54 61 67 28 tJSDocPublicTag( 0000c420: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 0000c430: 72 65 74 75 72 6e 20 67 65 74 46 69 72 73 74 4a return getFirstJ 0000c440: 53 44 6f 63 54 61 67 28 6e 6f 64 65 2c 20 74 73 SDocTag(node, ts 0000c450: 2e 69 73 4a 53 44 6f 63 50 75 62 6c 69 63 54 61 .isJSDocPublicTa 0000c460: 67 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 g);. }. ts 0000c470: 2e 67 65 74 4a 53 44 6f 63 50 75 62 6c 69 63 54 .getJSDocPublicT 0000c480: 61 67 20 3d 20 67 65 74 4a 53 44 6f 63 50 75 62 ag = getJSDocPub 0000c490: 6c 69 63 54 61 67 3b 0a 20 20 20 20 2f 2a 40 69 licTag;. /*@i 0000c4a0: 6e 74 65 72 6e 61 6c 2a 2f 0a 20 20 20 20 66 75 nternal*/. fu 0000c4b0: 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 50 nction getJSDocP 0000c4c0: 75 62 6c 69 63 54 61 67 4e 6f 43 61 63 68 65 28 ublicTagNoCache( 0000c4d0: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 0000c4e0: 72 65 74 75 72 6e 20 67 65 74 46 69 72 73 74 4a return getFirstJ 0000c4f0: 53 44 6f 63 54 61 67 28 6e 6f 64 65 2c 20 74 73 SDocTag(node, ts 0000c500: 2e 69 73 4a 53 44 6f 63 50 75 62 6c 69 63 54 61 .isJSDocPublicTa 0000c510: 67 2c 20 2f 2a 6e 6f 43 61 63 68 65 2a 2f 20 74 g, /*noCache*/ t 0000c520: 72 75 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 rue);. }. 0000c530: 74 73 2e 67 65 74 4a 53 44 6f 63 50 75 62 6c 69 ts.getJSDocPubli 0000c540: 63 54 61 67 4e 6f 43 61 63 68 65 20 3d 20 67 65 cTagNoCache = ge 0000c550: 74 4a 53 44 6f 63 50 75 62 6c 69 63 54 61 67 4e tJSDocPublicTagN 0000c560: 6f 43 61 63 68 65 3b 0a 20 20 20 20 2f 2a 2a 20 oCache;. /** 0000c570: 47 65 74 73 20 74 68 65 20 4a 53 44 6f 63 20 70 Gets the JSDoc p 0000c580: 72 69 76 61 74 65 20 74 61 67 20 66 6f 72 20 74 rivate tag for t 0000c590: 68 65 20 6e 6f 64 65 20 69 66 20 70 72 65 73 65 he node if prese 0000c5a0: 6e 74 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 nt */. functi 0000c5b0: 6f 6e 20 67 65 74 4a 53 44 6f 63 50 72 69 76 61 on getJSDocPriva 0000c5c0: 74 65 54 61 67 28 6e 6f 64 65 29 20 7b 0a 20 20 teTag(node) {. 0000c5d0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 return get 0000c5e0: 46 69 72 73 74 4a 53 44 6f 63 54 61 67 28 6e 6f FirstJSDocTag(no 0000c5f0: 64 65 2c 20 74 73 2e 69 73 4a 53 44 6f 63 50 72 de, ts.isJSDocPr 0000c600: 69 76 61 74 65 54 61 67 29 3b 0a 20 20 20 20 7d ivateTag);. } 0000c610: 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 44 6f 63 . ts.getJSDoc 0000c620: 50 72 69 76 61 74 65 54 61 67 20 3d 20 67 65 74 PrivateTag = get 0000c630: 4a 53 44 6f 63 50 72 69 76 61 74 65 54 61 67 3b JSDocPrivateTag; 0000c640: 0a 20 20 20 20 2f 2a 40 69 6e 74 65 72 6e 61 6c . /*@internal 0000c650: 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 */. function 0000c660: 67 65 74 4a 53 44 6f 63 50 72 69 76 61 74 65 54 getJSDocPrivateT 0000c670: 61 67 4e 6f 43 61 63 68 65 28 6e 6f 64 65 29 20 agNoCache(node) 0000c680: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 0000c690: 20 67 65 74 46 69 72 73 74 4a 53 44 6f 63 54 61 getFirstJSDocTa 0000c6a0: 67 28 6e 6f 64 65 2c 20 74 73 2e 69 73 4a 53 44 g(node, ts.isJSD 0000c6b0: 6f 63 50 72 69 76 61 74 65 54 61 67 2c 20 2f 2a ocPrivateTag, /* 0000c6c0: 6e 6f 43 61 63 68 65 2a 2f 20 74 72 75 65 29 3b noCache*/ true); 0000c6d0: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 . }. ts.ge 0000c6e0: 74 4a 53 44 6f 63 50 72 69 76 61 74 65 54 61 67 tJSDocPrivateTag 0000c6f0: 4e 6f 43 61 63 68 65 20 3d 20 67 65 74 4a 53 44 NoCache = getJSD 0000c700: 6f 63 50 72 69 76 61 74 65 54 61 67 4e 6f 43 61 ocPrivateTagNoCa 0000c710: 63 68 65 3b 0a 20 20 20 20 2f 2a 2a 20 47 65 74 che;. /** Get 0000c720: 73 20 74 68 65 20 4a 53 44 6f 63 20 70 72 6f 74 s the JSDoc prot 0000c730: 65 63 74 65 64 20 74 61 67 20 66 6f 72 20 74 68 ected tag for th 0000c740: 65 20 6e 6f 64 65 20 69 66 20 70 72 65 73 65 6e e node if presen 0000c750: 74 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f t */. functio 0000c760: 6e 20 67 65 74 4a 53 44 6f 63 50 72 6f 74 65 63 n getJSDocProtec 0000c770: 74 65 64 54 61 67 28 6e 6f 64 65 29 20 7b 0a 20 tedTag(node) {. 0000c780: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 return ge 0000c790: 74 46 69 72 73 74 4a 53 44 6f 63 54 61 67 28 6e tFirstJSDocTag(n 0000c7a0: 6f 64 65 2c 20 74 73 2e 69 73 4a 53 44 6f 63 50 ode, ts.isJSDocP 0000c7b0: 72 6f 74 65 63 74 65 64 54 61 67 29 3b 0a 20 20 rotectedTag);. 0000c7c0: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 }. ts.getJS 0000c7d0: 44 6f 63 50 72 6f 74 65 63 74 65 64 54 61 67 20 DocProtectedTag 0000c7e0: 3d 20 67 65 74 4a 53 44 6f 63 50 72 6f 74 65 63 = getJSDocProtec 0000c7f0: 74 65 64 54 61 67 3b 0a 20 20 20 20 2f 2a 40 69 tedTag;. /*@i 0000c800: 6e 74 65 72 6e 61 6c 2a 2f 0a 20 20 20 20 66 75 nternal*/. fu 0000c810: 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 50 nction getJSDocP 0000c820: 72 6f 74 65 63 74 65 64 54 61 67 4e 6f 43 61 63 rotectedTagNoCac 0000c830: 68 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 he(node) {. 0000c840: 20 20 20 72 65 74 75 72 6e 20 67 65 74 46 69 72 return getFir 0000c850: 73 74 4a 53 44 6f 63 54 61 67 28 6e 6f 64 65 2c stJSDocTag(node, 0000c860: 20 74 73 2e 69 73 4a 53 44 6f 63 50 72 6f 74 65 ts.isJSDocProte 0000c870: 63 74 65 64 54 61 67 2c 20 2f 2a 6e 6f 43 61 63 ctedTag, /*noCac 0000c880: 68 65 2a 2f 20 74 72 75 65 29 3b 0a 20 20 20 20 he*/ true);. 0000c890: 7d 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 44 6f }. ts.getJSDo 0000c8a0: 63 50 72 6f 74 65 63 74 65 64 54 61 67 4e 6f 43 cProtectedTagNoC 0000c8b0: 61 63 68 65 20 3d 20 67 65 74 4a 53 44 6f 63 50 ache = getJSDocP 0000c8c0: 72 6f 74 65 63 74 65 64 54 61 67 4e 6f 43 61 63 rotectedTagNoCac 0000c8d0: 68 65 3b 0a 20 20 20 20 2f 2a 2a 20 47 65 74 73 he;. /** Gets 0000c8e0: 20 74 68 65 20 4a 53 44 6f 63 20 70 72 6f 74 65 the JSDoc prote 0000c8f0: 63 74 65 64 20 74 61 67 20 66 6f 72 20 74 68 65 cted tag for the 0000c900: 20 6e 6f 64 65 20 69 66 20 70 72 65 73 65 6e 74 node if present 0000c910: 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e */. function 0000c920: 20 67 65 74 4a 53 44 6f 63 52 65 61 64 6f 6e 6c getJSDocReadonl 0000c930: 79 54 61 67 28 6e 6f 64 65 29 20 7b 0a 20 20 20 yTag(node) {. 0000c940: 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 46 return getF 0000c950: 69 72 73 74 4a 53 44 6f 63 54 61 67 28 6e 6f 64 irstJSDocTag(nod 0000c960: 65 2c 20 74 73 2e 69 73 4a 53 44 6f 63 52 65 61 e, ts.isJSDocRea 0000c970: 64 6f 6e 6c 79 54 61 67 29 3b 0a 20 20 20 20 7d donlyTag);. } 0000c980: 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 44 6f 63 . ts.getJSDoc 0000c990: 52 65 61 64 6f 6e 6c 79 54 61 67 20 3d 20 67 65 ReadonlyTag = ge 0000c9a0: 74 4a 53 44 6f 63 52 65 61 64 6f 6e 6c 79 54 61 tJSDocReadonlyTa 0000c9b0: 67 3b 0a 20 20 20 20 2f 2a 40 69 6e 74 65 72 6e g;. /*@intern 0000c9c0: 61 6c 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f al*/. functio 0000c9d0: 6e 20 67 65 74 4a 53 44 6f 63 52 65 61 64 6f 6e n getJSDocReadon 0000c9e0: 6c 79 54 61 67 4e 6f 43 61 63 68 65 28 6e 6f 64 lyTagNoCache(nod 0000c9f0: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 e) {. ret 0000ca00: 75 72 6e 20 67 65 74 46 69 72 73 74 4a 53 44 6f urn getFirstJSDo 0000ca10: 63 54 61 67 28 6e 6f 64 65 2c 20 74 73 2e 69 73 cTag(node, ts.is 0000ca20: 4a 53 44 6f 63 52 65 61 64 6f 6e 6c 79 54 61 67 JSDocReadonlyTag 0000ca30: 2c 20 2f 2a 6e 6f 43 61 63 68 65 2a 2f 20 74 72 , /*noCache*/ tr 0000ca40: 75 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 ue);. }. t 0000ca50: 73 2e 67 65 74 4a 53 44 6f 63 52 65 61 64 6f 6e s.getJSDocReadon 0000ca60: 6c 79 54 61 67 4e 6f 43 61 63 68 65 20 3d 20 67 lyTagNoCache = g 0000ca70: 65 74 4a 53 44 6f 63 52 65 61 64 6f 6e 6c 79 54 etJSDocReadonlyT 0000ca80: 61 67 4e 6f 43 61 63 68 65 3b 0a 20 20 20 20 66 agNoCache;. f 0000ca90: 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 unction getJSDoc 0000caa0: 4f 76 65 72 72 69 64 65 54 61 67 4e 6f 43 61 63 OverrideTagNoCac 0000cab0: 68 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 he(node) {. 0000cac0: 20 20 20 72 65 74 75 72 6e 20 67 65 74 46 69 72 return getFir 0000cad0: 73 74 4a 53 44 6f 63 54 61 67 28 6e 6f 64 65 2c stJSDocTag(node, 0000cae0: 20 74 73 2e 69 73 4a 53 44 6f 63 4f 76 65 72 72 ts.isJSDocOverr 0000caf0: 69 64 65 54 61 67 2c 20 2f 2a 6e 6f 43 61 63 68 ideTag, /*noCach 0000cb00: 65 2a 2f 20 74 72 75 65 29 3b 0a 20 20 20 20 7d e*/ true);. } 0000cb10: 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 44 6f 63 . ts.getJSDoc 0000cb20: 4f 76 65 72 72 69 64 65 54 61 67 4e 6f 43 61 63 OverrideTagNoCac 0000cb30: 68 65 20 3d 20 67 65 74 4a 53 44 6f 63 4f 76 65 he = getJSDocOve 0000cb40: 72 72 69 64 65 54 61 67 4e 6f 43 61 63 68 65 3b rrideTagNoCache; 0000cb50: 0a 20 20 20 20 2f 2a 2a 20 47 65 74 73 20 74 68 . /** Gets th 0000cb60: 65 20 4a 53 44 6f 63 20 64 65 70 72 65 63 61 74 e JSDoc deprecat 0000cb70: 65 64 20 74 61 67 20 66 6f 72 20 74 68 65 20 6e ed tag for the n 0000cb80: 6f 64 65 20 69 66 20 70 72 65 73 65 6e 74 20 2a ode if present * 0000cb90: 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 /. function g 0000cba0: 65 74 4a 53 44 6f 63 44 65 70 72 65 63 61 74 65 etJSDocDeprecate 0000cbb0: 64 54 61 67 28 6e 6f 64 65 29 20 7b 0a 20 20 20 dTag(node) {. 0000cbc0: 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 46 return getF 0000cbd0: 69 72 73 74 4a 53 44 6f 63 54 61 67 28 6e 6f 64 irstJSDocTag(nod 0000cbe0: 65 2c 20 74 73 2e 69 73 4a 53 44 6f 63 44 65 70 e, ts.isJSDocDep 0000cbf0: 72 65 63 61 74 65 64 54 61 67 29 3b 0a 20 20 20 recatedTag);. 0000cc00: 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 44 }. ts.getJSD 0000cc10: 6f 63 44 65 70 72 65 63 61 74 65 64 54 61 67 20 ocDeprecatedTag 0000cc20: 3d 20 67 65 74 4a 53 44 6f 63 44 65 70 72 65 63 = getJSDocDeprec 0000cc30: 61 74 65 64 54 61 67 3b 0a 20 20 20 20 2f 2a 40 atedTag;. /*@ 0000cc40: 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 internal */. 0000cc50: 66 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f function getJSDo 0000cc60: 63 44 65 70 72 65 63 61 74 65 64 54 61 67 4e 6f cDeprecatedTagNo 0000cc70: 43 61 63 68 65 28 6e 6f 64 65 29 20 7b 0a 20 20 Cache(node) {. 0000cc80: 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 return get 0000cc90: 46 69 72 73 74 4a 53 44 6f 63 54 61 67 28 6e 6f FirstJSDocTag(no 0000cca0: 64 65 2c 20 74 73 2e 69 73 4a 53 44 6f 63 44 65 de, ts.isJSDocDe 0000ccb0: 70 72 65 63 61 74 65 64 54 61 67 2c 20 2f 2a 6e precatedTag, /*n 0000ccc0: 6f 43 61 63 68 65 2a 2f 20 74 72 75 65 29 3b 0a oCache*/ true);. 0000ccd0: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 }. ts.get 0000cce0: 4a 53 44 6f 63 44 65 70 72 65 63 61 74 65 64 54 JSDocDeprecatedT 0000ccf0: 61 67 4e 6f 43 61 63 68 65 20 3d 20 67 65 74 4a agNoCache = getJ 0000cd00: 53 44 6f 63 44 65 70 72 65 63 61 74 65 64 54 61 SDocDeprecatedTa 0000cd10: 67 4e 6f 43 61 63 68 65 3b 0a 20 20 20 20 2f 2a gNoCache;. /* 0000cd20: 2a 20 47 65 74 73 20 74 68 65 20 4a 53 44 6f 63 * Gets the JSDoc 0000cd30: 20 65 6e 75 6d 20 74 61 67 20 66 6f 72 20 74 68 enum tag for th 0000cd40: 65 20 6e 6f 64 65 20 69 66 20 70 72 65 73 65 6e e node if presen 0000cd50: 74 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f t */. functio 0000cd60: 6e 20 67 65 74 4a 53 44 6f 63 45 6e 75 6d 54 61 n getJSDocEnumTa 0000cd70: 67 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 g(node) {. 0000cd80: 20 20 72 65 74 75 72 6e 20 67 65 74 46 69 72 73 return getFirs 0000cd90: 74 4a 53 44 6f 63 54 61 67 28 6e 6f 64 65 2c 20 tJSDocTag(node, 0000cda0: 74 73 2e 69 73 4a 53 44 6f 63 45 6e 75 6d 54 61 ts.isJSDocEnumTa 0000cdb0: 67 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 g);. }. ts 0000cdc0: 2e 67 65 74 4a 53 44 6f 63 45 6e 75 6d 54 61 67 .getJSDocEnumTag 0000cdd0: 20 3d 20 67 65 74 4a 53 44 6f 63 45 6e 75 6d 54 = getJSDocEnumT 0000cde0: 61 67 3b 0a 20 20 20 20 2f 2a 2a 20 47 65 74 73 ag;. /** Gets 0000cdf0: 20 74 68 65 20 4a 53 44 6f 63 20 74 68 69 73 20 the JSDoc this 0000ce00: 74 61 67 20 66 6f 72 20 74 68 65 20 6e 6f 64 65 tag for the node 0000ce10: 20 69 66 20 70 72 65 73 65 6e 74 20 2a 2f 0a 20 if present */. 0000ce20: 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4a function getJ 0000ce30: 53 44 6f 63 54 68 69 73 54 61 67 28 6e 6f 64 65 SDocThisTag(node 0000ce40: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0000ce50: 72 6e 20 67 65 74 46 69 72 73 74 4a 53 44 6f 63 rn getFirstJSDoc 0000ce60: 54 61 67 28 6e 6f 64 65 2c 20 74 73 2e 69 73 4a Tag(node, ts.isJ 0000ce70: 53 44 6f 63 54 68 69 73 54 61 67 29 3b 0a 20 20 SDocThisTag);. 0000ce80: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 }. ts.getJS 0000ce90: 44 6f 63 54 68 69 73 54 61 67 20 3d 20 67 65 74 DocThisTag = get 0000cea0: 4a 53 44 6f 63 54 68 69 73 54 61 67 3b 0a 20 20 JSDocThisTag;. 0000ceb0: 20 20 2f 2a 2a 20 47 65 74 73 20 74 68 65 20 4a /** Gets the J 0000cec0: 53 44 6f 63 20 72 65 74 75 72 6e 20 74 61 67 20 SDoc return tag 0000ced0: 66 6f 72 20 74 68 65 20 6e 6f 64 65 20 69 66 20 for the node if 0000cee0: 70 72 65 73 65 6e 74 20 2a 2f 0a 20 20 20 20 66 present */. f 0000cef0: 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 unction getJSDoc 0000cf00: 52 65 74 75 72 6e 54 61 67 28 6e 6f 64 65 29 20 ReturnTag(node) 0000cf10: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 0000cf20: 20 67 65 74 46 69 72 73 74 4a 53 44 6f 63 54 61 getFirstJSDocTa 0000cf30: 67 28 6e 6f 64 65 2c 20 74 73 2e 69 73 4a 53 44 g(node, ts.isJSD 0000cf40: 6f 63 52 65 74 75 72 6e 54 61 67 29 3b 0a 20 20 ocReturnTag);. 0000cf50: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 }. ts.getJS 0000cf60: 44 6f 63 52 65 74 75 72 6e 54 61 67 20 3d 20 67 DocReturnTag = g 0000cf70: 65 74 4a 53 44 6f 63 52 65 74 75 72 6e 54 61 67 etJSDocReturnTag 0000cf80: 3b 0a 20 20 20 20 2f 2a 2a 20 47 65 74 73 20 74 ;. /** Gets t 0000cf90: 68 65 20 4a 53 44 6f 63 20 74 65 6d 70 6c 61 74 he JSDoc templat 0000cfa0: 65 20 74 61 67 20 66 6f 72 20 74 68 65 20 6e 6f e tag for the no 0000cfb0: 64 65 20 69 66 20 70 72 65 73 65 6e 74 20 2a 2f de if present */ 0000cfc0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 0000cfd0: 74 4a 53 44 6f 63 54 65 6d 70 6c 61 74 65 54 61 tJSDocTemplateTa 0000cfe0: 67 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 g(node) {. 0000cff0: 20 20 72 65 74 75 72 6e 20 67 65 74 46 69 72 73 return getFirs 0000d000: 74 4a 53 44 6f 63 54 61 67 28 6e 6f 64 65 2c 20 tJSDocTag(node, 0000d010: 74 73 2e 69 73 4a 53 44 6f 63 54 65 6d 70 6c 61 ts.isJSDocTempla 0000d020: 74 65 54 61 67 29 3b 0a 20 20 20 20 7d 0a 20 20 teTag);. }. 0000d030: 20 20 74 73 2e 67 65 74 4a 53 44 6f 63 54 65 6d ts.getJSDocTem 0000d040: 70 6c 61 74 65 54 61 67 20 3d 20 67 65 74 4a 53 plateTag = getJS 0000d050: 44 6f 63 54 65 6d 70 6c 61 74 65 54 61 67 3b 0a DocTemplateTag;. 0000d060: 20 20 20 20 2f 2a 2a 20 47 65 74 73 20 74 68 65 /** Gets the 0000d070: 20 4a 53 44 6f 63 20 74 79 70 65 20 74 61 67 20 JSDoc type tag 0000d080: 66 6f 72 20 74 68 65 20 6e 6f 64 65 20 69 66 20 for the node if 0000d090: 70 72 65 73 65 6e 74 20 61 6e 64 20 76 61 6c 69 present and vali 0000d0a0: 64 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f d */. functio 0000d0b0: 6e 20 67 65 74 4a 53 44 6f 63 54 79 70 65 54 61 n getJSDocTypeTa 0000d0c0: 67 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 g(node) {. 0000d0d0: 20 20 2f 2f 20 57 65 20 73 68 6f 75 6c 64 20 68 // We should h 0000d0e0: 61 76 65 20 61 6c 72 65 61 64 79 20 69 73 73 75 ave already issu 0000d0f0: 65 64 20 61 6e 20 65 72 72 6f 72 20 69 66 20 74 ed an error if t 0000d100: 68 65 72 65 20 77 65 72 65 20 6d 75 6c 74 69 70 here were multip 0000d110: 6c 65 20 74 79 70 65 20 6a 73 64 6f 63 73 2c 20 le type jsdocs, 0000d120: 73 6f 20 6a 75 73 74 20 75 73 65 20 74 68 65 20 so just use the 0000d130: 66 69 72 73 74 20 6f 6e 65 2e 0a 20 20 20 20 20 first one.. 0000d140: 20 20 20 76 61 72 20 74 61 67 20 3d 20 67 65 74 var tag = get 0000d150: 46 69 72 73 74 4a 53 44 6f 63 54 61 67 28 6e 6f FirstJSDocTag(no 0000d160: 64 65 2c 20 74 73 2e 69 73 4a 53 44 6f 63 54 79 de, ts.isJSDocTy 0000d170: 70 65 54 61 67 29 3b 0a 20 20 20 20 20 20 20 20 peTag);. 0000d180: 69 66 20 28 74 61 67 20 26 26 20 74 61 67 2e 74 if (tag && tag.t 0000d190: 79 70 65 45 78 70 72 65 73 73 69 6f 6e 20 26 26 ypeExpression && 0000d1a0: 20 74 61 67 2e 74 79 70 65 45 78 70 72 65 73 73 tag.typeExpress 0000d1b0: 69 6f 6e 2e 74 79 70 65 29 20 7b 0a 20 20 20 20 ion.type) {. 0000d1c0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 0000d1d0: 61 67 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 ag;. }. 0000d1e0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 6e 64 return und 0000d1f0: 65 66 69 6e 65 64 3b 0a 20 20 20 20 7d 0a 20 20 efined;. }. 0000d200: 20 20 74 73 2e 67 65 74 4a 53 44 6f 63 54 79 70 ts.getJSDocTyp 0000d210: 65 54 61 67 20 3d 20 67 65 74 4a 53 44 6f 63 54 eTag = getJSDocT 0000d220: 79 70 65 54 61 67 3b 0a 20 20 20 20 2f 2a 2a 0a ypeTag;. /**. 0000d230: 20 20 20 20 20 2a 20 47 65 74 73 20 74 68 65 20 * Gets the 0000d240: 74 79 70 65 20 6e 6f 64 65 20 66 6f 72 20 74 68 type node for th 0000d250: 65 20 6e 6f 64 65 20 69 66 20 70 72 6f 76 69 64 e node if provid 0000d260: 65 64 20 76 69 61 20 4a 53 44 6f 63 2e 0a 20 20 ed via JSDoc.. 0000d270: 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 72 65 6d *. * @rem 0000d280: 61 72 6b 73 20 54 68 65 20 73 65 61 72 63 68 20 arks The search 0000d290: 69 6e 63 6c 75 64 65 73 20 61 6e 79 20 4a 53 44 includes any JSD 0000d2a0: 6f 63 20 70 61 72 61 6d 20 74 61 67 20 74 68 61 oc param tag tha 0000d2b0: 74 20 72 65 6c 61 74 65 73 0a 20 20 20 20 20 2a t relates. * 0000d2c0: 20 74 6f 20 74 68 65 20 70 72 6f 76 69 64 65 64 to the provided 0000d2d0: 20 70 61 72 61 6d 65 74 65 72 2c 20 66 6f 72 20 parameter, for 0000d2e0: 65 78 61 6d 70 6c 65 20 61 20 74 79 70 65 20 74 example a type t 0000d2f0: 61 67 20 6f 6e 20 74 68 65 0a 20 20 20 20 20 2a ag on the. * 0000d300: 20 70 61 72 61 6d 65 74 65 72 20 69 74 73 65 6c parameter itsel 0000d310: 66 2c 20 6f 72 20 61 20 70 61 72 61 6d 20 74 61 f, or a param ta 0000d320: 67 20 6f 6e 20 61 20 63 6f 6e 74 61 69 6e 69 6e g on a containin 0000d330: 67 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 g function. 0000d340: 2a 20 65 78 70 72 65 73 73 69 6f 6e 2c 20 6f 72 * expression, or 0000d350: 20 61 20 70 61 72 61 6d 20 74 61 67 20 6f 6e 20 a param tag on 0000d360: 61 20 76 61 72 69 61 62 6c 65 20 64 65 63 6c 61 a variable decla 0000d370: 72 61 74 69 6f 6e 20 77 68 6f 73 65 0a 20 20 20 ration whose. 0000d380: 20 20 2a 20 69 6e 69 74 69 61 6c 69 7a 65 72 20 * initializer 0000d390: 69 73 20 74 68 65 20 63 6f 6e 74 61 69 6e 69 6e is the containin 0000d3a0: 67 20 66 75 6e 63 74 69 6f 6e 2e 20 54 68 65 20 g function. The 0000d3b0: 74 61 67 73 20 63 6c 6f 73 65 73 74 20 74 6f 20 tags closest to 0000d3c0: 74 68 65 0a 20 20 20 20 20 2a 20 6e 6f 64 65 20 the. * node 0000d3d0: 61 72 65 20 65 78 61 6d 69 6e 65 64 20 66 69 72 are examined fir 0000d3e0: 73 74 2c 20 73 6f 20 69 6e 20 74 68 65 20 70 72 st, so in the pr 0000d3f0: 65 76 69 6f 75 73 20 65 78 61 6d 70 6c 65 2c 20 evious example, 0000d400: 74 68 65 20 74 79 70 65 0a 20 20 20 20 20 2a 20 the type. * 0000d410: 74 61 67 20 64 69 72 65 63 74 6c 79 20 6f 6e 20 tag directly on 0000d420: 74 68 65 20 6e 6f 64 65 20 77 6f 75 6c 64 20 62 the node would b 0000d430: 65 20 72 65 74 75 72 6e 65 64 2e 0a 20 20 20 20 e returned.. 0000d440: 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e */. function 0000d450: 20 67 65 74 4a 53 44 6f 63 54 79 70 65 28 6e 6f getJSDocType(no 0000d460: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 de) {. va 0000d470: 72 20 74 61 67 20 3d 20 67 65 74 46 69 72 73 74 r tag = getFirst 0000d480: 4a 53 44 6f 63 54 61 67 28 6e 6f 64 65 2c 20 74 JSDocTag(node, t 0000d490: 73 2e 69 73 4a 53 44 6f 63 54 79 70 65 54 61 67 s.isJSDocTypeTag 0000d4a0: 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 );. if (! 0000d4b0: 74 61 67 20 26 26 20 74 73 2e 69 73 50 61 72 61 tag && ts.isPara 0000d4c0: 6d 65 74 65 72 28 6e 6f 64 65 29 29 20 7b 0a 20 meter(node)) {. 0000d4d0: 20 20 20 20 20 20 20 20 20 20 20 74 61 67 20 3d tag = 0000d4e0: 20 74 73 2e 66 69 6e 64 28 67 65 74 4a 53 44 6f ts.find(getJSDo 0000d4f0: 63 50 61 72 61 6d 65 74 65 72 54 61 67 73 28 6e cParameterTags(n 0000d500: 6f 64 65 29 2c 20 66 75 6e 63 74 69 6f 6e 20 28 ode), function ( 0000d510: 74 61 67 29 20 7b 20 72 65 74 75 72 6e 20 21 21 tag) { return !! 0000d520: 74 61 67 2e 74 79 70 65 45 78 70 72 65 73 73 69 tag.typeExpressi 0000d530: 6f 6e 3b 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 on; });. 0000d540: 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e }. return 0000d550: 20 74 61 67 20 26 26 20 74 61 67 2e 74 79 70 65 tag && tag.type 0000d560: 45 78 70 72 65 73 73 69 6f 6e 20 26 26 20 74 61 Expression && ta 0000d570: 67 2e 74 79 70 65 45 78 70 72 65 73 73 69 6f 6e g.typeExpression 0000d580: 2e 74 79 70 65 3b 0a 20 20 20 20 7d 0a 20 20 20 .type;. }. 0000d590: 20 74 73 2e 67 65 74 4a 53 44 6f 63 54 79 70 65 ts.getJSDocType 0000d5a0: 20 3d 20 67 65 74 4a 53 44 6f 63 54 79 70 65 3b = getJSDocType; 0000d5b0: 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 . /**. * 0000d5c0: 47 65 74 73 20 74 68 65 20 72 65 74 75 72 6e 20 Gets the return 0000d5d0: 74 79 70 65 20 6e 6f 64 65 20 66 6f 72 20 74 68 type node for th 0000d5e0: 65 20 6e 6f 64 65 20 69 66 20 70 72 6f 76 69 64 e node if provid 0000d5f0: 65 64 20 76 69 61 20 4a 53 44 6f 63 20 72 65 74 ed via JSDoc ret 0000d600: 75 72 6e 20 74 61 67 20 6f 72 20 74 79 70 65 20 urn tag or type 0000d610: 74 61 67 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 tag.. *. 0000d620: 20 2a 20 40 72 65 6d 61 72 6b 73 20 60 67 65 74 * @remarks `get 0000d630: 4a 53 44 6f 63 52 65 74 75 72 6e 54 61 67 60 20 JSDocReturnTag` 0000d640: 6a 75 73 74 20 67 65 74 73 20 74 68 65 20 77 68 just gets the wh 0000d650: 6f 6c 65 20 4a 53 44 6f 63 20 74 61 67 2e 20 54 ole JSDoc tag. T 0000d660: 68 69 73 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 his function. 0000d670: 20 20 2a 20 67 65 74 73 20 74 68 65 20 74 79 70 * gets the typ 0000d680: 65 20 66 72 6f 6d 20 69 6e 73 69 64 65 20 74 68 e from inside th 0000d690: 65 20 62 72 61 63 65 73 2c 20 61 66 74 65 72 20 e braces, after 0000d6a0: 74 68 65 20 66 61 74 20 61 72 72 6f 77 2c 20 65 the fat arrow, e 0000d6b0: 74 63 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 tc.. */. 0000d6c0: 66 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f function getJSDo 0000d6d0: 63 52 65 74 75 72 6e 54 79 70 65 28 6e 6f 64 65 cReturnType(node 0000d6e0: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 0000d6f0: 72 65 74 75 72 6e 54 61 67 20 3d 20 67 65 74 4a returnTag = getJ 0000d700: 53 44 6f 63 52 65 74 75 72 6e 54 61 67 28 6e 6f SDocReturnTag(no 0000d710: 64 65 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 de);. if 0000d720: 28 72 65 74 75 72 6e 54 61 67 20 26 26 20 72 65 (returnTag && re 0000d730: 74 75 72 6e 54 61 67 2e 74 79 70 65 45 78 70 72 turnTag.typeExpr 0000d740: 65 73 73 69 6f 6e 29 20 7b 0a 20 20 20 20 20 20 ession) {. 0000d750: 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 return ret 0000d760: 75 72 6e 54 61 67 2e 74 79 70 65 45 78 70 72 65 urnTag.typeExpre 0000d770: 73 73 69 6f 6e 2e 74 79 70 65 3b 0a 20 20 20 20 ssion.type;. 0000d780: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 76 61 }. va 0000d790: 72 20 74 79 70 65 54 61 67 20 3d 20 67 65 74 4a r typeTag = getJ 0000d7a0: 53 44 6f 63 54 79 70 65 54 61 67 28 6e 6f 64 65 SDocTypeTag(node 0000d7b0: 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 );. if (t 0000d7c0: 79 70 65 54 61 67 20 26 26 20 74 79 70 65 54 61 ypeTag && typeTa 0000d7d0: 67 2e 74 79 70 65 45 78 70 72 65 73 73 69 6f 6e g.typeExpression 0000d7e0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 0000d7f0: 76 61 72 20 74 79 70 65 20 3d 20 74 79 70 65 54 var type = typeT 0000d800: 61 67 2e 74 79 70 65 45 78 70 72 65 73 73 69 6f ag.typeExpressio 0000d810: 6e 2e 74 79 70 65 3b 0a 20 20 20 20 20 20 20 20 n.type;. 0000d820: 20 20 20 20 69 66 20 28 74 73 2e 69 73 54 79 70 if (ts.isTyp 0000d830: 65 4c 69 74 65 72 61 6c 4e 6f 64 65 28 74 79 70 eLiteralNode(typ 0000d840: 65 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 e)) {. 0000d850: 20 20 20 20 20 20 76 61 72 20 73 69 67 20 3d 20 var sig = 0000d860: 74 73 2e 66 69 6e 64 28 74 79 70 65 2e 6d 65 6d ts.find(type.mem 0000d870: 62 65 72 73 2c 20 74 73 2e 69 73 43 61 6c 6c 53 bers, ts.isCallS 0000d880: 69 67 6e 61 74 75 72 65 44 65 63 6c 61 72 61 74 ignatureDeclarat 0000d890: 69 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20 20 20 ion);. 0000d8a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 69 67 return sig 0000d8b0: 20 26 26 20 73 69 67 2e 74 79 70 65 3b 0a 20 20 && sig.type;. 0000d8c0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 0000d8d0: 20 20 20 20 20 20 20 20 69 66 20 28 74 73 2e 69 if (ts.i 0000d8e0: 73 46 75 6e 63 74 69 6f 6e 54 79 70 65 4e 6f 64 sFunctionTypeNod 0000d8f0: 65 28 74 79 70 65 29 20 7c 7c 20 74 73 2e 69 73 e(type) || ts.is 0000d900: 4a 53 44 6f 63 46 75 6e 63 74 69 6f 6e 54 79 70 JSDocFunctionTyp 0000d910: 65 28 74 79 70 65 29 29 20 7b 0a 20 20 20 20 20 e(type)) {. 0000d920: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0000d930: 6e 20 74 79 70 65 2e 74 79 70 65 3b 0a 20 20 20 n type.type;. 0000d940: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 0000d950: 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 }. }. t 0000d960: 73 2e 67 65 74 4a 53 44 6f 63 52 65 74 75 72 6e s.getJSDocReturn 0000d970: 54 79 70 65 20 3d 20 67 65 74 4a 53 44 6f 63 52 Type = getJSDocR 0000d980: 65 74 75 72 6e 54 79 70 65 3b 0a 20 20 20 20 66 eturnType;. f 0000d990: 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 unction getJSDoc 0000d9a0: 54 61 67 73 57 6f 72 6b 65 72 28 6e 6f 64 65 2c TagsWorker(node, 0000d9b0: 20 6e 6f 43 61 63 68 65 29 20 7b 0a 20 20 20 20 noCache) {. 0000d9c0: 20 20 20 20 76 61 72 20 74 61 67 73 20 3d 20 6e var tags = n 0000d9d0: 6f 64 65 2e 6a 73 44 6f 63 43 61 63 68 65 3b 0a ode.jsDocCache;. 0000d9e0: 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 63 61 // If ca 0000d9f0: 63 68 65 20 69 73 20 27 6e 75 6c 6c 27 2c 20 74 che is 'null', t 0000da00: 68 61 74 20 6d 65 61 6e 73 20 77 65 20 64 69 64 hat means we did 0000da10: 20 74 68 65 20 77 6f 72 6b 20 6f 66 20 73 65 61 the work of sea 0000da20: 72 63 68 69 6e 67 20 66 6f 72 20 4a 53 44 6f 63 rching for JSDoc 0000da30: 20 74 61 67 73 20 61 6e 64 20 63 61 6d 65 20 75 tags and came u 0000da40: 70 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 2e 0a p with nothing.. 0000da50: 20 20 20 20 20 20 20 20 69 66 20 28 74 61 67 73 if (tags 0000da60: 20 3d 3d 3d 20 75 6e 64 65 66 69 6e 65 64 20 7c === undefined | 0000da70: 7c 20 6e 6f 43 61 63 68 65 29 20 7b 0a 20 20 20 | noCache) {. 0000da80: 20 20 20 20 20 20 20 20 20 76 61 72 20 63 6f 6d var com 0000da90: 6d 65 6e 74 73 20 3d 20 74 73 2e 67 65 74 4a 53 ments = ts.getJS 0000daa0: 44 6f 63 43 6f 6d 6d 65 6e 74 73 41 6e 64 54 61 DocCommentsAndTa 0000dab0: 67 73 28 6e 6f 64 65 2c 20 6e 6f 43 61 63 68 65 gs(node, noCache 0000dac0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 );. t 0000dad0: 73 2e 44 65 62 75 67 2e 61 73 73 65 72 74 28 63 s.Debug.assert(c 0000dae0: 6f 6d 6d 65 6e 74 73 2e 6c 65 6e 67 74 68 20 3c omments.length < 0000daf0: 20 32 20 7c 7c 20 63 6f 6d 6d 65 6e 74 73 5b 30 2 || comments[0 0000db00: 5d 20 21 3d 3d 20 63 6f 6d 6d 65 6e 74 73 5b 31 ] !== comments[1 0000db10: 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ]);. 0000db20: 74 61 67 73 20 3d 20 74 73 2e 66 6c 61 74 4d 61 tags = ts.flatMa 0000db30: 70 28 63 6f 6d 6d 65 6e 74 73 2c 20 66 75 6e 63 p(comments, func 0000db40: 74 69 6f 6e 20 28 6a 29 20 7b 20 72 65 74 75 72 tion (j) { retur 0000db50: 6e 20 74 73 2e 69 73 4a 53 44 6f 63 28 6a 29 20 n ts.isJSDoc(j) 0000db60: 3f 20 6a 2e 74 61 67 73 20 3a 20 6a 3b 20 7d 29 ? j.tags : j; }) 0000db70: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 ;. if 0000db80: 20 28 21 6e 6f 43 61 63 68 65 29 20 7b 0a 20 20 (!noCache) {. 0000db90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f no 0000dba0: 64 65 2e 6a 73 44 6f 63 43 61 63 68 65 20 3d 20 de.jsDocCache = 0000dbb0: 74 61 67 73 3b 0a 20 20 20 20 20 20 20 20 20 20 tags;. 0000dbc0: 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 }. }. 0000dbd0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 61 67 return tag 0000dbe0: 73 3b 0a 20 20 20 20 7d 0a 20 20 20 20 2f 2a 2a s;. }. /** 0000dbf0: 20 47 65 74 20 61 6c 6c 20 4a 53 44 6f 63 20 74 Get all JSDoc t 0000dc00: 61 67 73 20 72 65 6c 61 74 65 64 20 74 6f 20 61 ags related to a 0000dc10: 20 6e 6f 64 65 2c 20 69 6e 63 6c 75 64 69 6e 67 node, including 0000dc20: 20 74 68 6f 73 65 20 6f 6e 20 70 61 72 65 6e 74 those on parent 0000dc30: 20 6e 6f 64 65 73 2e 20 2a 2f 0a 20 20 20 20 66 nodes. */. f 0000dc40: 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 unction getJSDoc 0000dc50: 54 61 67 73 28 6e 6f 64 65 29 20 7b 0a 20 20 20 Tags(node) {. 0000dc60: 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 4a return getJ 0000dc70: 53 44 6f 63 54 61 67 73 57 6f 72 6b 65 72 28 6e SDocTagsWorker(n 0000dc80: 6f 64 65 2c 20 2f 2a 6e 6f 43 61 63 68 65 2a 2f ode, /*noCache*/ 0000dc90: 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 7d 0a 20 false);. }. 0000dca0: 20 20 20 74 73 2e 67 65 74 4a 53 44 6f 63 54 61 ts.getJSDocTa 0000dcb0: 67 73 20 3d 20 67 65 74 4a 53 44 6f 63 54 61 67 gs = getJSDocTag 0000dcc0: 73 3b 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 s;. /* @inter 0000dcd0: 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 nal */. funct 0000dce0: 69 6f 6e 20 67 65 74 4a 53 44 6f 63 54 61 67 73 ion getJSDocTags 0000dcf0: 4e 6f 43 61 63 68 65 28 6e 6f 64 65 29 20 7b 0a NoCache(node) {. 0000dd00: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 return g 0000dd10: 65 74 4a 53 44 6f 63 54 61 67 73 57 6f 72 6b 65 etJSDocTagsWorke 0000dd20: 72 28 6e 6f 64 65 2c 20 2f 2a 6e 6f 43 61 63 68 r(node, /*noCach 0000dd30: 65 2a 2f 20 74 72 75 65 29 3b 0a 20 20 20 20 7d e*/ true);. } 0000dd40: 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 44 6f 63 . ts.getJSDoc 0000dd50: 54 61 67 73 4e 6f 43 61 63 68 65 20 3d 20 67 65 TagsNoCache = ge 0000dd60: 74 4a 53 44 6f 63 54 61 67 73 4e 6f 43 61 63 68 tJSDocTagsNoCach 0000dd70: 65 3b 0a 20 20 20 20 2f 2a 2a 20 47 65 74 20 74 e;. /** Get t 0000dd80: 68 65 20 66 69 72 73 74 20 4a 53 44 6f 63 20 74 he first JSDoc t 0000dd90: 61 67 20 6f 66 20 61 20 73 70 65 63 69 66 69 65 ag of a specifie 0000dda0: 64 20 6b 69 6e 64 2c 20 6f 72 20 75 6e 64 65 66 d kind, or undef 0000ddb0: 69 6e 65 64 20 69 66 20 6e 6f 74 20 70 72 65 73 ined if not pres 0000ddc0: 65 6e 74 2e 20 2a 2f 0a 20 20 20 20 66 75 6e 63 ent. */. func 0000ddd0: 74 69 6f 6e 20 67 65 74 46 69 72 73 74 4a 53 44 tion getFirstJSD 0000dde0: 6f 63 54 61 67 28 6e 6f 64 65 2c 20 70 72 65 64 ocTag(node, pred 0000ddf0: 69 63 61 74 65 2c 20 6e 6f 43 61 63 68 65 29 20 icate, noCache) 0000de00: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 0000de10: 20 74 73 2e 66 69 6e 64 28 67 65 74 4a 53 44 6f ts.find(getJSDo 0000de20: 63 54 61 67 73 57 6f 72 6b 65 72 28 6e 6f 64 65 cTagsWorker(node 0000de30: 2c 20 6e 6f 43 61 63 68 65 29 2c 20 70 72 65 64 , noCache), pred 0000de40: 69 63 61 74 65 29 3b 0a 20 20 20 20 7d 0a 20 20 icate);. }. 0000de50: 20 20 2f 2a 2a 20 47 65 74 73 20 61 6c 6c 20 4a /** Gets all J 0000de60: 53 44 6f 63 20 74 61 67 73 20 74 68 61 74 20 6d SDoc tags that m 0000de70: 61 74 63 68 20 61 20 73 70 65 63 69 66 69 65 64 atch a specified 0000de80: 20 70 72 65 64 69 63 61 74 65 20 2a 2f 0a 20 20 predicate */. 0000de90: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 41 6c function getAl 0000dea0: 6c 4a 53 44 6f 63 54 61 67 73 28 6e 6f 64 65 2c lJSDocTags(node, 0000deb0: 20 70 72 65 64 69 63 61 74 65 29 20 7b 0a 20 20 predicate) {. 0000dec0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 return get 0000ded0: 4a 53 44 6f 63 54 61 67 73 28 6e 6f 64 65 29 2e JSDocTags(node). 0000dee0: 66 69 6c 74 65 72 28 70 72 65 64 69 63 61 74 65 filter(predicate 0000def0: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 0000df00: 67 65 74 41 6c 6c 4a 53 44 6f 63 54 61 67 73 20 getAllJSDocTags 0000df10: 3d 20 67 65 74 41 6c 6c 4a 53 44 6f 63 54 61 67 = getAllJSDocTag 0000df20: 73 3b 0a 20 20 20 20 2f 2a 2a 20 47 65 74 73 20 s;. /** Gets 0000df30: 61 6c 6c 20 4a 53 44 6f 63 20 74 61 67 73 20 6f all JSDoc tags o 0000df40: 66 20 61 20 73 70 65 63 69 66 69 65 64 20 6b 69 f a specified ki 0000df50: 6e 64 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 nd */. functi 0000df60: 6f 6e 20 67 65 74 41 6c 6c 4a 53 44 6f 63 54 61 on getAllJSDocTa 0000df70: 67 73 4f 66 4b 69 6e 64 28 6e 6f 64 65 2c 20 6b gsOfKind(node, k 0000df80: 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ind) {. r 0000df90: 65 74 75 72 6e 20 67 65 74 4a 53 44 6f 63 54 61 eturn getJSDocTa 0000dfa0: 67 73 28 6e 6f 64 65 29 2e 66 69 6c 74 65 72 28 gs(node).filter( 0000dfb0: 66 75 6e 63 74 69 6f 6e 20 28 64 6f 63 29 20 7b function (doc) { 0000dfc0: 20 72 65 74 75 72 6e 20 64 6f 63 2e 6b 69 6e 64 return doc.kind 0000dfd0: 20 3d 3d 3d 20 6b 69 6e 64 3b 20 7d 29 3b 0a 20 === kind; });. 0000dfe0: 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 41 }. ts.getA 0000dff0: 6c 6c 4a 53 44 6f 63 54 61 67 73 4f 66 4b 69 6e llJSDocTagsOfKin 0000e000: 64 20 3d 20 67 65 74 41 6c 6c 4a 53 44 6f 63 54 d = getAllJSDocT 0000e010: 61 67 73 4f 66 4b 69 6e 64 3b 0a 20 20 20 20 2f agsOfKind;. / 0000e020: 2a 2a 20 47 65 74 73 20 74 68 65 20 74 65 78 74 ** Gets the text 0000e030: 20 6f 66 20 61 20 6a 73 64 6f 63 20 63 6f 6d 6d of a jsdoc comm 0000e040: 65 6e 74 2c 20 66 6c 61 74 74 65 6e 69 6e 67 20 ent, flattening 0000e050: 6c 69 6e 6b 73 20 74 6f 20 74 68 65 69 72 20 74 links to their t 0000e060: 65 78 74 2e 20 2a 2f 0a 20 20 20 20 66 75 6e 63 ext. */. func 0000e070: 74 69 6f 6e 20 67 65 74 54 65 78 74 4f 66 4a 53 tion getTextOfJS 0000e080: 44 6f 63 43 6f 6d 6d 65 6e 74 28 63 6f 6d 6d 65 DocComment(comme 0000e090: 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 nt) {. re 0000e0a0: 74 75 72 6e 20 74 79 70 65 6f 66 20 63 6f 6d 6d turn typeof comm 0000e0b0: 65 6e 74 20 3d 3d 3d 20 22 73 74 72 69 6e 67 22 ent === "string" 0000e0c0: 20 3f 20 63 6f 6d 6d 65 6e 74 0a 20 20 20 20 20 ? comment. 0000e0d0: 20 20 20 20 20 20 20 3a 20 63 6f 6d 6d 65 6e 74 : comment 0000e0e0: 20 3d 3d 3d 20 6e 75 6c 6c 20 7c 7c 20 63 6f 6d === null || com 0000e0f0: 6d 65 6e 74 20 3d 3d 3d 20 76 6f 69 64 20 30 20 ment === void 0 0000e100: 3f 20 76 6f 69 64 20 30 20 3a 20 63 6f 6d 6d 65 ? void 0 : comme 0000e110: 6e 74 2e 6d 61 70 28 66 75 6e 63 74 69 6f 6e 20 nt.map(function 0000e120: 28 63 29 20 7b 20 72 65 74 75 72 6e 20 63 2e 6b (c) { return c.k 0000e130: 69 6e 64 20 3d 3d 3d 20 33 32 31 20 2f 2a 20 53 ind === 321 /* S 0000e140: 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 54 yntaxKind.JSDocT 0000e150: 65 78 74 20 2a 2f 20 3f 20 63 2e 74 65 78 74 20 ext */ ? c.text 0000e160: 3a 20 66 6f 72 6d 61 74 4a 53 44 6f 63 4c 69 6e : formatJSDocLin 0000e170: 6b 28 63 29 3b 20 7d 29 2e 6a 6f 69 6e 28 22 22 k(c); }).join("" 0000e180: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 0000e190: 67 65 74 54 65 78 74 4f 66 4a 53 44 6f 63 43 6f getTextOfJSDocCo 0000e1a0: 6d 6d 65 6e 74 20 3d 20 67 65 74 54 65 78 74 4f mment = getTextO 0000e1b0: 66 4a 53 44 6f 63 43 6f 6d 6d 65 6e 74 3b 0a 20 fJSDocComment;. 0000e1c0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 6d function form 0000e1d0: 61 74 4a 53 44 6f 63 4c 69 6e 6b 28 6c 69 6e 6b atJSDocLink(link 0000e1e0: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 0000e1f0: 6b 69 6e 64 20 3d 20 6c 69 6e 6b 2e 6b 69 6e 64 kind = link.kind 0000e200: 20 3d 3d 3d 20 33 32 34 20 2f 2a 20 53 79 6e 74 === 324 /* Synt 0000e210: 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 4c 69 6e 6b axKind.JSDocLink 0000e220: 20 2a 2f 20 3f 20 22 6c 69 6e 6b 22 0a 20 20 20 */ ? "link". 0000e230: 20 20 20 20 20 20 20 20 20 3a 20 6c 69 6e 6b 2e : link. 0000e240: 6b 69 6e 64 20 3d 3d 3d 20 33 32 35 20 2f 2a 20 kind === 325 /* 0000e250: 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 SyntaxKind.JSDoc 0000e260: 4c 69 6e 6b 43 6f 64 65 20 2a 2f 20 3f 20 22 6c LinkCode */ ? "l 0000e270: 69 6e 6b 63 6f 64 65 22 0a 20 20 20 20 20 20 20 inkcode". 0000e280: 20 20 20 20 20 20 20 20 20 3a 20 22 6c 69 6e 6b : "link 0000e290: 70 6c 61 69 6e 22 3b 0a 20 20 20 20 20 20 20 20 plain";. 0000e2a0: 76 61 72 20 6e 61 6d 65 20 3d 20 6c 69 6e 6b 2e var name = link. 0000e2b0: 6e 61 6d 65 20 3f 20 74 73 2e 65 6e 74 69 74 79 name ? ts.entity 0000e2c0: 4e 61 6d 65 54 6f 53 74 72 69 6e 67 28 6c 69 6e NameToString(lin 0000e2d0: 6b 2e 6e 61 6d 65 29 20 3a 20 22 22 3b 0a 20 20 k.name) : "";. 0000e2e0: 20 20 20 20 20 20 76 61 72 20 73 70 61 63 65 20 var space 0000e2f0: 3d 20 6c 69 6e 6b 2e 6e 61 6d 65 20 26 26 20 6c = link.name && l 0000e300: 69 6e 6b 2e 74 65 78 74 2e 73 74 61 72 74 73 57 ink.text.startsW 0000e310: 69 74 68 28 22 3a 2f 2f 22 29 20 3f 20 22 22 20 ith("://") ? "" 0000e320: 3a 20 22 20 22 3b 0a 20 20 20 20 20 20 20 20 72 : " ";. r 0000e330: 65 74 75 72 6e 20 22 7b 40 22 2e 63 6f 6e 63 61 eturn "{@".conca 0000e340: 74 28 6b 69 6e 64 2c 20 22 20 22 29 2e 63 6f 6e t(kind, " ").con 0000e350: 63 61 74 28 6e 61 6d 65 29 2e 63 6f 6e 63 61 74 cat(name).concat 0000e360: 28 73 70 61 63 65 29 2e 63 6f 6e 63 61 74 28 6c (space).concat(l 0000e370: 69 6e 6b 2e 74 65 78 74 2c 20 22 7d 22 29 3b 0a ink.text, "}");. 0000e380: 20 20 20 20 7d 0a 20 20 20 20 2f 2a 2a 0a 20 20 }. /**. 0000e390: 20 20 20 2a 20 47 65 74 73 20 74 68 65 20 65 66 * Gets the ef 0000e3a0: 66 65 63 74 69 76 65 20 74 79 70 65 20 70 61 72 fective type par 0000e3b0: 61 6d 65 74 65 72 73 2e 20 49 66 20 74 68 65 20 ameters. If the 0000e3c0: 6e 6f 64 65 20 77 61 73 20 70 61 72 73 65 64 20 node was parsed 0000e3d0: 69 6e 20 61 0a 20 20 20 20 20 2a 20 4a 61 76 61 in a. * Java 0000e3e0: 53 63 72 69 70 74 20 66 69 6c 65 2c 20 67 65 74 Script file, get 0000e3f0: 73 20 74 68 65 20 74 79 70 65 20 70 61 72 61 6d s the type param 0000e400: 65 74 65 72 73 20 66 72 6f 6d 20 74 68 65 20 60 eters from the ` 0000e410: 40 74 65 6d 70 6c 61 74 65 60 20 74 61 67 20 66 @template` tag f 0000e420: 72 6f 6d 20 4a 53 44 6f 63 2e 0a 20 20 20 20 20 rom JSDoc.. 0000e430: 2a 0a 20 20 20 20 20 2a 20 54 68 69 73 20 64 6f *. * This do 0000e440: 65 73 20 2a 6e 6f 74 2a 20 72 65 74 75 72 6e 20 es *not* return 0000e450: 74 79 70 65 20 70 61 72 61 6d 65 74 65 72 73 20 type parameters 0000e460: 66 72 6f 6d 20 61 20 6a 73 64 6f 63 20 72 65 66 from a jsdoc ref 0000e470: 65 72 65 6e 63 65 20 74 6f 20 61 20 67 65 6e 65 erence to a gene 0000e480: 72 69 63 20 74 79 70 65 2c 20 65 67 0a 20 20 20 ric type, eg. 0000e490: 20 20 2a 0a 20 20 20 20 20 2a 20 74 79 70 65 20 *. * type 0000e4a0: 49 64 20 3d 20 3c 54 3e 28 78 3a 20 54 29 20 3d Id = <T>(x: T) = 0000e4b0: 3e 20 54 0a 20 20 20 20 20 2a 20 2f 2a 2a 20 40 > T. * /** @ 0000e4c0: 74 79 70 65 20 7b 49 64 7d 20 2f 0a 20 20 20 20 type {Id} /. 0000e4d0: 20 2a 20 66 75 6e 63 74 69 6f 6e 20 69 64 28 78 * function id(x 0000e4e0: 29 20 7b 20 72 65 74 75 72 6e 20 78 20 7d 0a 20 ) { return x }. 0000e4f0: 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 */. funct 0000e500: 69 6f 6e 20 67 65 74 45 66 66 65 63 74 69 76 65 ion getEffective 0000e510: 54 79 70 65 50 61 72 61 6d 65 74 65 72 44 65 63 TypeParameterDec 0000e520: 6c 61 72 61 74 69 6f 6e 73 28 6e 6f 64 65 29 20 larations(node) 0000e530: 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 73 {. if (ts 0000e540: 2e 69 73 4a 53 44 6f 63 53 69 67 6e 61 74 75 72 .isJSDocSignatur 0000e550: 65 28 6e 6f 64 65 29 29 20 7b 0a 20 20 20 20 20 e(node)) {. 0000e560: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 return ts 0000e570: 2e 65 6d 70 74 79 41 72 72 61 79 3b 0a 20 20 20 .emptyArray;. 0000e580: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 }. i 0000e590: 66 20 28 74 73 2e 69 73 4a 53 44 6f 63 54 79 70 f (ts.isJSDocTyp 0000e5a0: 65 41 6c 69 61 73 28 6e 6f 64 65 29 29 20 7b 0a eAlias(node)) {. 0000e5b0: 20 20 20 20 20 20 20 20 20 20 20 20 74 73 2e 44 ts.D 0000e5c0: 65 62 75 67 2e 61 73 73 65 72 74 28 6e 6f 64 65 ebug.assert(node 0000e5d0: 2e 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d .parent.kind === 0000e5e0: 20 33 32 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 320 /* SyntaxKi 0000e5f0: 6e 64 2e 4a 53 44 6f 63 20 2a 2f 29 3b 0a 20 20 nd.JSDoc */);. 0000e600: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 0000e610: 20 74 73 2e 66 6c 61 74 4d 61 70 28 6e 6f 64 65 ts.flatMap(node 0000e620: 2e 70 61 72 65 6e 74 2e 74 61 67 73 2c 20 66 75 .parent.tags, fu 0000e630: 6e 63 74 69 6f 6e 20 28 74 61 67 29 20 7b 20 72 nction (tag) { r 0000e640: 65 74 75 72 6e 20 74 73 2e 69 73 4a 53 44 6f 63 eturn ts.isJSDoc 0000e650: 54 65 6d 70 6c 61 74 65 54 61 67 28 74 61 67 29 TemplateTag(tag) 0000e660: 20 3f 20 74 61 67 2e 74 79 70 65 50 61 72 61 6d ? tag.typeParam 0000e670: 65 74 65 72 73 20 3a 20 75 6e 64 65 66 69 6e 65 eters : undefine 0000e680: 64 3b 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 7d d; });. } 0000e690: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 . if (nod 0000e6a0: 65 2e 74 79 70 65 50 61 72 61 6d 65 74 65 72 73 e.typeParameters 0000e6b0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 0000e6c0: 72 65 74 75 72 6e 20 6e 6f 64 65 2e 74 79 70 65 return node.type 0000e6d0: 50 61 72 61 6d 65 74 65 72 73 3b 0a 20 20 20 20 Parameters;. 0000e6e0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 }. if 0000e6f0: 20 28 74 73 2e 63 61 6e 48 61 76 65 49 6c 6c 65 (ts.canHaveIlle 0000e700: 67 61 6c 54 79 70 65 50 61 72 61 6d 65 74 65 72 galTypeParameter 0000e710: 73 28 6e 6f 64 65 29 20 26 26 20 6e 6f 64 65 2e s(node) && node. 0000e720: 74 79 70 65 50 61 72 61 6d 65 74 65 72 73 29 20 typeParameters) 0000e730: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 {. re 0000e740: 74 75 72 6e 20 6e 6f 64 65 2e 74 79 70 65 50 61 turn node.typePa 0000e750: 72 61 6d 65 74 65 72 73 3b 0a 20 20 20 20 20 20 rameters;. 0000e760: 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 }. if ( 0000e770: 74 73 2e 69 73 49 6e 4a 53 46 69 6c 65 28 6e 6f ts.isInJSFile(no 0000e780: 64 65 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 de)) {. 0000e790: 20 20 20 76 61 72 20 64 65 63 6c 73 20 3d 20 74 var decls = t 0000e7a0: 73 2e 67 65 74 4a 53 44 6f 63 54 79 70 65 50 61 s.getJSDocTypePa 0000e7b0: 72 61 6d 65 74 65 72 44 65 63 6c 61 72 61 74 69 rameterDeclarati 0000e7c0: 6f 6e 73 28 6e 6f 64 65 29 3b 0a 20 20 20 20 20 ons(node);. 0000e7d0: 20 20 20 20 20 20 20 69 66 20 28 64 65 63 6c 73 if (decls 0000e7e0: 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 20 20 20 20 .length) {. 0000e7f0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0000e800: 6e 20 64 65 63 6c 73 3b 0a 20 20 20 20 20 20 20 n decls;. 0000e810: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 }. 0000e820: 20 20 20 76 61 72 20 74 79 70 65 54 61 67 20 3d var typeTag = 0000e830: 20 67 65 74 4a 53 44 6f 63 54 79 70 65 28 6e 6f getJSDocType(no 0000e840: 64 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 de);. 0000e850: 20 69 66 20 28 74 79 70 65 54 61 67 20 26 26 20 if (typeTag && 0000e860: 74 73 2e 69 73 46 75 6e 63 74 69 6f 6e 54 79 70 ts.isFunctionTyp 0000e870: 65 4e 6f 64 65 28 74 79 70 65 54 61 67 29 20 26 eNode(typeTag) & 0000e880: 26 20 74 79 70 65 54 61 67 2e 74 79 70 65 50 61 & typeTag.typePa 0000e890: 72 61 6d 65 74 65 72 73 29 20 7b 0a 20 20 20 20 rameters) {. 0000e8a0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 0000e8b0: 72 6e 20 74 79 70 65 54 61 67 2e 74 79 70 65 50 rn typeTag.typeP 0000e8c0: 61 72 61 6d 65 74 65 72 73 3b 0a 20 20 20 20 20 arameters;. 0000e8d0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 0000e8e0: 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 }. retur 0000e8f0: 6e 20 74 73 2e 65 6d 70 74 79 41 72 72 61 79 3b n ts.emptyArray; 0000e900: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 . }. ts.ge 0000e910: 74 45 66 66 65 63 74 69 76 65 54 79 70 65 50 61 tEffectiveTypePa 0000e920: 72 61 6d 65 74 65 72 44 65 63 6c 61 72 61 74 69 rameterDeclarati 0000e930: 6f 6e 73 20 3d 20 67 65 74 45 66 66 65 63 74 69 ons = getEffecti 0000e940: 76 65 54 79 70 65 50 61 72 61 6d 65 74 65 72 44 veTypeParameterD 0000e950: 65 63 6c 61 72 61 74 69 6f 6e 73 3b 0a 20 20 20 eclarations;. 0000e960: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 45 66 66 function getEff 0000e970: 65 63 74 69 76 65 43 6f 6e 73 74 72 61 69 6e 74 ectiveConstraint 0000e980: 4f 66 54 79 70 65 50 61 72 61 6d 65 74 65 72 28 OfTypeParameter( 0000e990: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 0000e9a0: 72 65 74 75 72 6e 20 6e 6f 64 65 2e 63 6f 6e 73 return node.cons 0000e9b0: 74 72 61 69 6e 74 20 3f 20 6e 6f 64 65 2e 63 6f traint ? node.co 0000e9c0: 6e 73 74 72 61 69 6e 74 20 3a 0a 20 20 20 20 20 nstraint :. 0000e9d0: 20 20 20 20 20 20 20 74 73 2e 69 73 4a 53 44 6f ts.isJSDo 0000e9e0: 63 54 65 6d 70 6c 61 74 65 54 61 67 28 6e 6f 64 cTemplateTag(nod 0000e9f0: 65 2e 70 61 72 65 6e 74 29 20 26 26 20 6e 6f 64 e.parent) && nod 0000ea00: 65 20 3d 3d 3d 20 6e 6f 64 65 2e 70 61 72 65 6e e === node.paren 0000ea10: 74 2e 74 79 70 65 50 61 72 61 6d 65 74 65 72 73 t.typeParameters 0000ea20: 5b 30 5d 20 3f 20 6e 6f 64 65 2e 70 61 72 65 6e [0] ? node.paren 0000ea30: 74 2e 63 6f 6e 73 74 72 61 69 6e 74 20 3a 0a 20 t.constraint :. 0000ea40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 u 0000ea50: 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 7d 0a ndefined;. }. 0000ea60: 20 20 20 20 74 73 2e 67 65 74 45 66 66 65 63 74 ts.getEffect 0000ea70: 69 76 65 43 6f 6e 73 74 72 61 69 6e 74 4f 66 54 iveConstraintOfT 0000ea80: 79 70 65 50 61 72 61 6d 65 74 65 72 20 3d 20 67 ypeParameter = g 0000ea90: 65 74 45 66 66 65 63 74 69 76 65 43 6f 6e 73 74 etEffectiveConst 0000eaa0: 72 61 69 6e 74 4f 66 54 79 70 65 50 61 72 61 6d raintOfTypeParam 0000eab0: 65 74 65 72 3b 0a 20 20 20 20 2f 2f 20 23 72 65 eter;. // #re 0000eac0: 67 69 6f 6e 0a 20 20 20 20 66 75 6e 63 74 69 6f gion. functio 0000ead0: 6e 20 69 73 4d 65 6d 62 65 72 4e 61 6d 65 28 6e n isMemberName(n 0000eae0: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 0000eaf0: 65 74 75 72 6e 20 6e 6f 64 65 2e 6b 69 6e 64 20 eturn node.kind 0000eb00: 3d 3d 3d 20 37 39 20 2f 2a 20 53 79 6e 74 61 78 === 79 /* Syntax 0000eb10: 4b 69 6e 64 2e 49 64 65 6e 74 69 66 69 65 72 20 Kind.Identifier 0000eb20: 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 6b 69 6e 64 20 */ || node.kind 0000eb30: 3d 3d 3d 20 38 30 20 2f 2a 20 53 79 6e 74 61 78 === 80 /* Syntax 0000eb40: 4b 69 6e 64 2e 50 72 69 76 61 74 65 49 64 65 6e Kind.PrivateIden 0000eb50: 74 69 66 69 65 72 20 2a 2f 3b 0a 20 20 20 20 7d tifier */;. } 0000eb60: 0a 20 20 20 20 74 73 2e 69 73 4d 65 6d 62 65 72 . ts.isMember 0000eb70: 4e 61 6d 65 20 3d 20 69 73 4d 65 6d 62 65 72 4e Name = isMemberN 0000eb80: 61 6d 65 3b 0a 20 20 20 20 2f 2a 20 40 69 6e 74 ame;. /* @int 0000eb90: 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e ernal */. fun 0000eba0: 63 74 69 6f 6e 20 69 73 47 65 74 4f 72 53 65 74 ction isGetOrSet 0000ebb0: 41 63 63 65 73 73 6f 72 44 65 63 6c 61 72 61 74 AccessorDeclarat 0000ebc0: 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ion(node) {. 0000ebd0: 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e return node. 0000ebe0: 6b 69 6e 64 20 3d 3d 3d 20 31 37 33 20 2f 2a 20 kind === 173 /* 0000ebf0: 53 79 6e 74 61 78 4b 69 6e 64 2e 53 65 74 41 63 SyntaxKind.SetAc 0000ec00: 63 65 73 73 6f 72 20 2a 2f 20 7c 7c 20 6e 6f 64 cessor */ || nod 0000ec10: 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 37 32 20 2f e.kind === 172 / 0000ec20: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 47 65 74 * SyntaxKind.Get 0000ec30: 41 63 63 65 73 73 6f 72 20 2a 2f 3b 0a 20 20 20 Accessor */;. 0000ec40: 20 7d 0a 20 20 20 20 74 73 2e 69 73 47 65 74 4f }. ts.isGetO 0000ec50: 72 53 65 74 41 63 63 65 73 73 6f 72 44 65 63 6c rSetAccessorDecl 0000ec60: 61 72 61 74 69 6f 6e 20 3d 20 69 73 47 65 74 4f aration = isGetO 0000ec70: 72 53 65 74 41 63 63 65 73 73 6f 72 44 65 63 6c rSetAccessorDecl 0000ec80: 61 72 61 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e aration;. fun 0000ec90: 63 74 69 6f 6e 20 69 73 50 72 6f 70 65 72 74 79 ction isProperty 0000eca0: 41 63 63 65 73 73 43 68 61 69 6e 28 6e 6f 64 65 AccessChain(node 0000ecb0: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0000ecc0: 72 6e 20 74 73 2e 69 73 50 72 6f 70 65 72 74 79 rn ts.isProperty 0000ecd0: 41 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e AccessExpression 0000ece0: 28 6e 6f 64 65 29 20 26 26 20 21 21 28 6e 6f 64 (node) && !!(nod 0000ecf0: 65 2e 66 6c 61 67 73 20 26 20 33 32 20 2f 2a 20 e.flags & 32 /* 0000ed00: 4e 6f 64 65 46 6c 61 67 73 2e 4f 70 74 69 6f 6e NodeFlags.Option 0000ed10: 61 6c 43 68 61 69 6e 20 2a 2f 29 3b 0a 20 20 20 alChain */);. 0000ed20: 20 7d 0a 20 20 20 20 74 73 2e 69 73 50 72 6f 70 }. ts.isProp 0000ed30: 65 72 74 79 41 63 63 65 73 73 43 68 61 69 6e 20 ertyAccessChain 0000ed40: 3d 20 69 73 50 72 6f 70 65 72 74 79 41 63 63 65 = isPropertyAcce 0000ed50: 73 73 43 68 61 69 6e 3b 0a 20 20 20 20 66 75 6e ssChain;. fun 0000ed60: 63 74 69 6f 6e 20 69 73 45 6c 65 6d 65 6e 74 41 ction isElementA 0000ed70: 63 63 65 73 73 43 68 61 69 6e 28 6e 6f 64 65 29 ccessChain(node) 0000ed80: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 0000ed90: 6e 20 74 73 2e 69 73 45 6c 65 6d 65 6e 74 41 63 n ts.isElementAc 0000eda0: 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 28 6e cessExpression(n 0000edb0: 6f 64 65 29 20 26 26 20 21 21 28 6e 6f 64 65 2e ode) && !!(node. 0000edc0: 66 6c 61 67 73 20 26 20 33 32 20 2f 2a 20 4e 6f flags & 32 /* No 0000edd0: 64 65 46 6c 61 67 73 2e 4f 70 74 69 6f 6e 61 6c deFlags.Optional 0000ede0: 43 68 61 69 6e 20 2a 2f 29 3b 0a 20 20 20 20 7d Chain */);. } 0000edf0: 0a 20 20 20 20 74 73 2e 69 73 45 6c 65 6d 65 6e . ts.isElemen 0000ee00: 74 41 63 63 65 73 73 43 68 61 69 6e 20 3d 20 69 tAccessChain = i 0000ee10: 73 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 43 68 sElementAccessCh 0000ee20: 61 69 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ain;. functio 0000ee30: 6e 20 69 73 43 61 6c 6c 43 68 61 69 6e 28 6e 6f n isCallChain(no 0000ee40: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 de) {. re 0000ee50: 74 75 72 6e 20 74 73 2e 69 73 43 61 6c 6c 45 78 turn ts.isCallEx 0000ee60: 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 26 pression(node) & 0000ee70: 26 20 21 21 28 6e 6f 64 65 2e 66 6c 61 67 73 20 & !!(node.flags 0000ee80: 26 20 33 32 20 2f 2a 20 4e 6f 64 65 46 6c 61 67 & 32 /* NodeFlag 0000ee90: 73 2e 4f 70 74 69 6f 6e 61 6c 43 68 61 69 6e 20 s.OptionalChain 0000eea0: 2a 2f 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 */);. }. t 0000eeb0: 73 2e 69 73 43 61 6c 6c 43 68 61 69 6e 20 3d 20 s.isCallChain = 0000eec0: 69 73 43 61 6c 6c 43 68 61 69 6e 3b 0a 20 20 20 isCallChain;. 0000eed0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 4f 70 74 69 function isOpti 0000eee0: 6f 6e 61 6c 43 68 61 69 6e 28 6e 6f 64 65 29 20 onalChain(node) 0000eef0: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6b 69 {. var ki 0000ef00: 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 3b 0a nd = node.kind;. 0000ef10: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 return ! 0000ef20: 21 28 6e 6f 64 65 2e 66 6c 61 67 73 20 26 20 33 !(node.flags & 3 0000ef30: 32 20 2f 2a 20 4e 6f 64 65 46 6c 61 67 73 2e 4f 2 /* NodeFlags.O 0000ef40: 70 74 69 6f 6e 61 6c 43 68 61 69 6e 20 2a 2f 29 ptionalChain */) 0000ef50: 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 &&. 0000ef60: 28 6b 69 6e 64 20 3d 3d 3d 20 32 30 36 20 2f 2a (kind === 206 /* 0000ef70: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 SyntaxKind.Prop 0000ef80: 65 72 74 79 41 63 63 65 73 73 45 78 70 72 65 73 ertyAccessExpres 0000ef90: 73 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 sion */. 0000efa0: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 0000efb0: 3d 3d 3d 20 32 30 37 20 2f 2a 20 53 79 6e 74 61 === 207 /* Synta 0000efc0: 78 4b 69 6e 64 2e 45 6c 65 6d 65 6e 74 41 63 63 xKind.ElementAcc 0000efd0: 65 73 73 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f essExpression */ 0000efe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0000eff0: 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 30 38 || kind === 208 0000f000: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 /* SyntaxKind.C 0000f010: 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f allExpression */ 0000f020: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0000f030: 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 33 30 || kind === 230 0000f040: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e /* SyntaxKind.N 0000f050: 6f 6e 4e 75 6c 6c 45 78 70 72 65 73 73 69 6f 6e onNullExpression 0000f060: 20 2a 2f 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 */);. }. 0000f070: 74 73 2e 69 73 4f 70 74 69 6f 6e 61 6c 43 68 61 ts.isOptionalCha 0000f080: 69 6e 20 3d 20 69 73 4f 70 74 69 6f 6e 61 6c 43 in = isOptionalC 0000f090: 68 61 69 6e 3b 0a 20 20 20 20 2f 2a 20 40 69 6e hain;. /* @in 0000f0a0: 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 ternal */. fu 0000f0b0: 6e 63 74 69 6f 6e 20 69 73 4f 70 74 69 6f 6e 61 nction isOptiona 0000f0c0: 6c 43 68 61 69 6e 52 6f 6f 74 28 6e 6f 64 65 29 lChainRoot(node) 0000f0d0: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 0000f0e0: 6e 20 69 73 4f 70 74 69 6f 6e 61 6c 43 68 61 69 n isOptionalChai 0000f0f0: 6e 28 6e 6f 64 65 29 20 26 26 20 21 74 73 2e 69 n(node) && !ts.i 0000f100: 73 4e 6f 6e 4e 75 6c 6c 45 78 70 72 65 73 73 69 sNonNullExpressi 0000f110: 6f 6e 28 6e 6f 64 65 29 20 26 26 20 21 21 6e 6f on(node) && !!no 0000f120: 64 65 2e 71 75 65 73 74 69 6f 6e 44 6f 74 54 6f de.questionDotTo 0000f130: 6b 65 6e 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 ken;. }. t 0000f140: 73 2e 69 73 4f 70 74 69 6f 6e 61 6c 43 68 61 69 s.isOptionalChai 0000f150: 6e 52 6f 6f 74 20 3d 20 69 73 4f 70 74 69 6f 6e nRoot = isOption 0000f160: 61 6c 43 68 61 69 6e 52 6f 6f 74 3b 0a 20 20 20 alChainRoot;. 0000f170: 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 44 65 74 65 /**. * Dete 0000f180: 72 6d 69 6e 65 73 20 77 68 65 74 68 65 72 20 61 rmines whether a 0000f190: 20 6e 6f 64 65 20 69 73 20 74 68 65 20 65 78 70 node is the exp 0000f1a0: 72 65 73 73 69 6f 6e 20 70 72 65 63 65 64 69 6e ression precedin 0000f1b0: 67 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 63 68 g an optional ch 0000f1c0: 61 69 6e 20 28 69 2e 65 2e 20 60 61 60 20 69 6e ain (i.e. `a` in 0000f1d0: 20 60 61 3f 2e 62 60 29 2e 0a 20 20 20 20 20 2a `a?.b`).. * 0000f1e0: 2f 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e /. /* @intern 0000f1f0: 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 al */. functi 0000f200: 6f 6e 20 69 73 45 78 70 72 65 73 73 69 6f 6e 4f on isExpressionO 0000f210: 66 4f 70 74 69 6f 6e 61 6c 43 68 61 69 6e 52 6f fOptionalChainRo 0000f220: 6f 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 ot(node) {. 0000f230: 20 20 20 72 65 74 75 72 6e 20 69 73 4f 70 74 69 return isOpti 0000f240: 6f 6e 61 6c 43 68 61 69 6e 52 6f 6f 74 28 6e 6f onalChainRoot(no 0000f250: 64 65 2e 70 61 72 65 6e 74 29 20 26 26 20 6e 6f de.parent) && no 0000f260: 64 65 2e 70 61 72 65 6e 74 2e 65 78 70 72 65 73 de.parent.expres 0000f270: 73 69 6f 6e 20 3d 3d 3d 20 6e 6f 64 65 3b 0a 20 sion === node;. 0000f280: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 45 78 }. ts.isEx 0000f290: 70 72 65 73 73 69 6f 6e 4f 66 4f 70 74 69 6f 6e pressionOfOption 0000f2a0: 61 6c 43 68 61 69 6e 52 6f 6f 74 20 3d 20 69 73 alChainRoot = is 0000f2b0: 45 78 70 72 65 73 73 69 6f 6e 4f 66 4f 70 74 69 ExpressionOfOpti 0000f2c0: 6f 6e 61 6c 43 68 61 69 6e 52 6f 6f 74 3b 0a 20 onalChainRoot;. 0000f2d0: 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 44 65 /**. * De 0000f2e0: 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65 72 termines whether 0000f2f0: 20 61 20 6e 6f 64 65 20 69 73 20 74 68 65 20 6f a node is the o 0000f300: 75 74 65 72 6d 6f 73 74 20 60 4f 70 74 69 6f 6e utermost `Option 0000f310: 61 6c 43 68 61 69 6e 60 20 69 6e 20 61 6e 20 45 alChain` in an E 0000f320: 43 4d 41 53 63 72 69 70 74 20 60 4f 70 74 69 6f CMAScript `Optio 0000f330: 6e 61 6c 45 78 70 72 65 73 73 69 6f 6e 60 3a 0a nalExpression`:. 0000f340: 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 31 2e *. * 1. 0000f350: 20 46 6f 72 20 60 61 3f 2e 62 2e 63 60 2c 20 74 For `a?.b.c`, t 0000f360: 68 65 20 6f 75 74 65 72 6d 6f 73 74 20 63 68 61 he outermost cha 0000f370: 69 6e 20 69 73 20 60 61 3f 2e 62 2e 63 60 20 28 in is `a?.b.c` ( 0000f380: 60 63 60 20 69 73 20 74 68 65 20 65 6e 64 20 6f `c` is the end o 0000f390: 66 20 74 68 65 20 63 68 61 69 6e 20 73 74 61 72 f the chain star 0000f3a0: 74 69 6e 67 20 61 74 20 60 61 3f 2e 60 29 0a 20 ting at `a?.`). 0000f3b0: 20 20 20 20 2a 20 32 2e 20 46 6f 72 20 60 61 3f * 2. For `a? 0000f3c0: 2e 62 21 60 2c 20 74 68 65 20 6f 75 74 65 72 6d .b!`, the outerm 0000f3d0: 6f 73 74 20 63 68 61 69 6e 20 69 73 20 60 61 3f ost chain is `a? 0000f3e0: 2e 62 60 20 28 60 62 60 20 69 73 20 74 68 65 20 .b` (`b` is the 0000f3f0: 65 6e 64 20 6f 66 20 74 68 65 20 63 68 61 69 6e end of the chain 0000f400: 20 73 74 61 72 74 69 6e 67 20 61 74 20 60 61 3f starting at `a? 0000f410: 2e 60 29 0a 20 20 20 20 20 2a 20 33 2e 20 46 6f .`). * 3. Fo 0000f420: 72 20 60 28 61 3f 2e 62 2e 63 29 2e 64 60 2c 20 r `(a?.b.c).d`, 0000f430: 74 68 65 20 6f 75 74 65 72 6d 6f 73 74 20 63 68 the outermost ch 0000f440: 61 69 6e 20 69 73 20 60 61 3f 2e 62 2e 63 60 20 ain is `a?.b.c` 0000f450: 28 60 63 60 20 69 73 20 74 68 65 20 65 6e 64 20 (`c` is the end 0000f460: 6f 66 20 74 68 65 20 63 68 61 69 6e 20 73 74 61 of the chain sta 0000f470: 72 74 69 6e 67 20 61 74 20 60 61 3f 2e 60 20 73 rting at `a?.` s 0000f480: 69 6e 63 65 20 70 61 72 65 6e 73 20 65 6e 64 20 ince parens end 0000f490: 74 68 65 20 63 68 61 69 6e 29 0a 20 20 20 20 20 the chain). 0000f4a0: 2a 20 34 2e 20 46 6f 72 20 60 61 3f 2e 62 2e 63 * 4. For `a?.b.c 0000f4b0: 3f 2e 64 60 2c 20 62 6f 74 68 20 60 61 3f 2e 62 ?.d`, both `a?.b 0000f4c0: 2e 63 60 20 61 6e 64 20 60 61 3f 2e 62 2e 63 3f .c` and `a?.b.c? 0000f4d0: 2e 64 60 20 61 72 65 20 6f 75 74 65 72 6d 6f 73 .d` are outermos 0000f4e0: 74 20 28 60 63 60 20 69 73 20 74 68 65 20 65 6e t (`c` is the en 0000f4f0: 64 20 6f 66 20 74 68 65 20 63 68 61 69 6e 20 73 d of the chain s 0000f500: 74 61 72 74 69 6e 67 20 61 74 20 60 61 3f 2e 60 tarting at `a?.` 0000f510: 2c 20 61 6e 64 20 60 64 60 20 69 73 0a 20 20 20 , and `d` is. 0000f520: 20 20 2a 20 20 20 74 68 65 20 65 6e 64 20 6f 66 * the end of 0000f530: 20 74 68 65 20 63 68 61 69 6e 20 73 74 61 72 74 the chain start 0000f540: 69 6e 67 20 61 74 20 60 63 3f 2e 60 29 0a 20 20 ing at `c?.`). 0000f550: 20 20 20 2a 20 35 2e 20 46 6f 72 20 60 61 3f 2e * 5. For `a?. 0000f560: 28 62 3f 2e 63 29 2e 64 60 2c 20 62 6f 74 68 20 (b?.c).d`, both 0000f570: 60 62 3f 2e 63 60 20 61 6e 64 20 60 61 3f 2e 28 `b?.c` and `a?.( 0000f580: 62 3f 2e 63 29 64 60 20 61 72 65 20 6f 75 74 65 b?.c)d` are oute 0000f590: 72 6d 6f 73 74 20 28 60 63 60 20 69 73 20 74 68 rmost (`c` is th 0000f5a0: 65 20 65 6e 64 20 6f 66 20 74 68 65 20 63 68 61 e end of the cha 0000f5b0: 69 6e 20 73 74 61 72 74 69 6e 67 20 61 74 20 60 in starting at ` 0000f5c0: 62 60 2c 20 61 6e 64 20 60 64 60 20 69 73 0a 20 b`, and `d` is. 0000f5d0: 20 20 20 20 2a 20 20 20 74 68 65 20 65 6e 64 20 * the end 0000f5e0: 6f 66 20 74 68 65 20 63 68 61 69 6e 20 73 74 61 of the chain sta 0000f5f0: 72 74 69 6e 67 20 61 74 20 60 61 3f 2e 60 29 0a rting at `a?.`). 0000f600: 20 20 20 20 20 2a 2f 0a 20 20 20 20 2f 2a 20 40 */. /* @ 0000f610: 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 internal */. 0000f620: 66 75 6e 63 74 69 6f 6e 20 69 73 4f 75 74 65 72 function isOuter 0000f630: 6d 6f 73 74 4f 70 74 69 6f 6e 61 6c 43 68 61 69 mostOptionalChai 0000f640: 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 n(node) {. 0000f650: 20 20 72 65 74 75 72 6e 20 21 69 73 4f 70 74 69 return !isOpti 0000f660: 6f 6e 61 6c 43 68 61 69 6e 28 6e 6f 64 65 2e 70 onalChain(node.p 0000f670: 61 72 65 6e 74 29 20 2f 2f 20 63 61 73 65 73 20 arent) // cases 0000f680: 31 2c 20 32 2c 20 61 6e 64 20 33 0a 20 20 20 20 1, 2, and 3. 0000f690: 20 20 20 20 20 20 20 20 7c 7c 20 69 73 4f 70 74 || isOpt 0000f6a0: 69 6f 6e 61 6c 43 68 61 69 6e 52 6f 6f 74 28 6e ionalChainRoot(n 0000f6b0: 6f 64 65 2e 70 61 72 65 6e 74 29 20 2f 2f 20 63 ode.parent) // c 0000f6c0: 61 73 65 20 34 0a 20 20 20 20 20 20 20 20 20 20 ase 4. 0000f6d0: 20 20 7c 7c 20 6e 6f 64 65 20 21 3d 3d 20 6e 6f || node !== no 0000f6e0: 64 65 2e 70 61 72 65 6e 74 2e 65 78 70 72 65 73 de.parent.expres 0000f6f0: 73 69 6f 6e 3b 20 2f 2f 20 63 61 73 65 20 35 0a sion; // case 5. 0000f700: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4f }. ts.isO 0000f710: 75 74 65 72 6d 6f 73 74 4f 70 74 69 6f 6e 61 6c utermostOptional 0000f720: 43 68 61 69 6e 20 3d 20 69 73 4f 75 74 65 72 6d Chain = isOuterm 0000f730: 6f 73 74 4f 70 74 69 6f 6e 61 6c 43 68 61 69 6e ostOptionalChain 0000f740: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 0000f750: 73 4e 75 6c 6c 69 73 68 43 6f 61 6c 65 73 63 65 sNullishCoalesce 0000f760: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 0000f770: 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 6b 69 6e return node.kin 0000f780: 64 20 3d 3d 3d 20 32 32 31 20 2f 2a 20 53 79 6e d === 221 /* Syn 0000f790: 74 61 78 4b 69 6e 64 2e 42 69 6e 61 72 79 45 78 taxKind.BinaryEx 0000f7a0: 70 72 65 73 73 69 6f 6e 20 2a 2f 20 26 26 20 6e pression */ && n 0000f7b0: 6f 64 65 2e 6f 70 65 72 61 74 6f 72 54 6f 6b 65 ode.operatorToke 0000f7c0: 6e 2e 6b 69 6e 64 20 3d 3d 3d 20 36 30 20 2f 2a n.kind === 60 /* 0000f7d0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 51 75 65 73 SyntaxKind.Ques 0000f7e0: 74 69 6f 6e 51 75 65 73 74 69 6f 6e 54 6f 6b 65 tionQuestionToke 0000f7f0: 6e 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 n */;. }. 0000f800: 74 73 2e 69 73 4e 75 6c 6c 69 73 68 43 6f 61 6c ts.isNullishCoal 0000f810: 65 73 63 65 20 3d 20 69 73 4e 75 6c 6c 69 73 68 esce = isNullish 0000f820: 43 6f 61 6c 65 73 63 65 3b 0a 20 20 20 20 66 75 Coalesce;. fu 0000f830: 6e 63 74 69 6f 6e 20 69 73 43 6f 6e 73 74 54 79 nction isConstTy 0000f840: 70 65 52 65 66 65 72 65 6e 63 65 28 6e 6f 64 65 peReference(node 0000f850: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0000f860: 72 6e 20 74 73 2e 69 73 54 79 70 65 52 65 66 65 rn ts.isTypeRefe 0000f870: 72 65 6e 63 65 4e 6f 64 65 28 6e 6f 64 65 29 20 renceNode(node) 0000f880: 26 26 20 74 73 2e 69 73 49 64 65 6e 74 69 66 69 && ts.isIdentifi 0000f890: 65 72 28 6e 6f 64 65 2e 74 79 70 65 4e 61 6d 65 er(node.typeName 0000f8a0: 29 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 ) &&. 0000f8b0: 20 6e 6f 64 65 2e 74 79 70 65 4e 61 6d 65 2e 65 node.typeName.e 0000f8c0: 73 63 61 70 65 64 54 65 78 74 20 3d 3d 3d 20 22 scapedText === " 0000f8d0: 63 6f 6e 73 74 22 20 26 26 20 21 6e 6f 64 65 2e const" && !node. 0000f8e0: 74 79 70 65 41 72 67 75 6d 65 6e 74 73 3b 0a 20 typeArguments;. 0000f8f0: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 43 6f }. ts.isCo 0000f900: 6e 73 74 54 79 70 65 52 65 66 65 72 65 6e 63 65 nstTypeReference 0000f910: 20 3d 20 69 73 43 6f 6e 73 74 54 79 70 65 52 65 = isConstTypeRe 0000f920: 66 65 72 65 6e 63 65 3b 0a 20 20 20 20 66 75 6e ference;. fun 0000f930: 63 74 69 6f 6e 20 73 6b 69 70 50 61 72 74 69 61 ction skipPartia 0000f940: 6c 6c 79 45 6d 69 74 74 65 64 45 78 70 72 65 73 llyEmittedExpres 0000f950: 73 69 6f 6e 73 28 6e 6f 64 65 29 20 7b 0a 20 20 sions(node) {. 0000f960: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 0000f970: 73 6b 69 70 4f 75 74 65 72 45 78 70 72 65 73 73 skipOuterExpress 0000f980: 69 6f 6e 73 28 6e 6f 64 65 2c 20 38 20 2f 2a 20 ions(node, 8 /* 0000f990: 4f 75 74 65 72 45 78 70 72 65 73 73 69 6f 6e 4b OuterExpressionK 0000f9a0: 69 6e 64 73 2e 50 61 72 74 69 61 6c 6c 79 45 6d inds.PartiallyEm 0000f9b0: 69 74 74 65 64 45 78 70 72 65 73 73 69 6f 6e 73 ittedExpressions 0000f9c0: 20 2a 2f 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 */);. }. 0000f9d0: 74 73 2e 73 6b 69 70 50 61 72 74 69 61 6c 6c 79 ts.skipPartially 0000f9e0: 45 6d 69 74 74 65 64 45 78 70 72 65 73 73 69 6f EmittedExpressio 0000f9f0: 6e 73 20 3d 20 73 6b 69 70 50 61 72 74 69 61 6c ns = skipPartial 0000fa00: 6c 79 45 6d 69 74 74 65 64 45 78 70 72 65 73 73 lyEmittedExpress 0000fa10: 69 6f 6e 73 3b 0a 20 20 20 20 66 75 6e 63 74 69 ions;. functi 0000fa20: 6f 6e 20 69 73 4e 6f 6e 4e 75 6c 6c 43 68 61 69 on isNonNullChai 0000fa30: 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 n(node) {. 0000fa40: 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 4e 6f return ts.isNo 0000fa50: 6e 4e 75 6c 6c 45 78 70 72 65 73 73 69 6f 6e 28 nNullExpression( 0000fa60: 6e 6f 64 65 29 20 26 26 20 21 21 28 6e 6f 64 65 node) && !!(node 0000fa70: 2e 66 6c 61 67 73 20 26 20 33 32 20 2f 2a 20 4e .flags & 32 /* N 0000fa80: 6f 64 65 46 6c 61 67 73 2e 4f 70 74 69 6f 6e 61 odeFlags.Optiona 0000fa90: 6c 43 68 61 69 6e 20 2a 2f 29 3b 0a 20 20 20 20 lChain */);. 0000faa0: 7d 0a 20 20 20 20 74 73 2e 69 73 4e 6f 6e 4e 75 }. ts.isNonNu 0000fab0: 6c 6c 43 68 61 69 6e 20 3d 20 69 73 4e 6f 6e 4e llChain = isNonN 0000fac0: 75 6c 6c 43 68 61 69 6e 3b 0a 20 20 20 20 66 75 ullChain;. fu 0000fad0: 6e 63 74 69 6f 6e 20 69 73 42 72 65 61 6b 4f 72 nction isBreakOr 0000fae0: 43 6f 6e 74 69 6e 75 65 53 74 61 74 65 6d 65 6e ContinueStatemen 0000faf0: 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 t(node) {. 0000fb00: 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 6b 69 return node.ki 0000fb10: 6e 64 20 3d 3d 3d 20 32 34 36 20 2f 2a 20 53 79 nd === 246 /* Sy 0000fb20: 6e 74 61 78 4b 69 6e 64 2e 42 72 65 61 6b 53 74 ntaxKind.BreakSt 0000fb30: 61 74 65 6d 65 6e 74 20 2a 2f 20 7c 7c 20 6e 6f atement */ || no 0000fb40: 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 34 35 20 de.kind === 245 0000fb50: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f /* SyntaxKind.Co 0000fb60: 6e 74 69 6e 75 65 53 74 61 74 65 6d 65 6e 74 20 ntinueStatement 0000fb70: 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 */;. }. ts 0000fb80: 2e 69 73 42 72 65 61 6b 4f 72 43 6f 6e 74 69 6e .isBreakOrContin 0000fb90: 75 65 53 74 61 74 65 6d 65 6e 74 20 3d 20 69 73 ueStatement = is 0000fba0: 42 72 65 61 6b 4f 72 43 6f 6e 74 69 6e 75 65 53 BreakOrContinueS 0000fbb0: 74 61 74 65 6d 65 6e 74 3b 0a 20 20 20 20 66 75 tatement;. fu 0000fbc0: 6e 63 74 69 6f 6e 20 69 73 4e 61 6d 65 64 45 78 nction isNamedEx 0000fbd0: 70 6f 72 74 42 69 6e 64 69 6e 67 73 28 6e 6f 64 portBindings(nod 0000fbe0: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 e) {. ret 0000fbf0: 75 72 6e 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d urn node.kind == 0000fc00: 3d 20 32 37 34 20 2f 2a 20 53 79 6e 74 61 78 4b = 274 /* SyntaxK 0000fc10: 69 6e 64 2e 4e 61 6d 65 73 70 61 63 65 45 78 70 ind.NamespaceExp 0000fc20: 6f 72 74 20 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 6b ort */ || node.k 0000fc30: 69 6e 64 20 3d 3d 3d 20 32 37 33 20 2f 2a 20 53 ind === 273 /* S 0000fc40: 79 6e 74 61 78 4b 69 6e 64 2e 4e 61 6d 65 64 45 yntaxKind.NamedE 0000fc50: 78 70 6f 72 74 73 20 2a 2f 3b 0a 20 20 20 20 7d xports */;. } 0000fc60: 0a 20 20 20 20 74 73 2e 69 73 4e 61 6d 65 64 45 . ts.isNamedE 0000fc70: 78 70 6f 72 74 42 69 6e 64 69 6e 67 73 20 3d 20 xportBindings = 0000fc80: 69 73 4e 61 6d 65 64 45 78 70 6f 72 74 42 69 6e isNamedExportBin 0000fc90: 64 69 6e 67 73 3b 0a 20 20 20 20 66 75 6e 63 74 dings;. funct 0000fca0: 69 6f 6e 20 69 73 55 6e 70 61 72 73 65 64 54 65 ion isUnparsedTe 0000fcb0: 78 74 4c 69 6b 65 28 6e 6f 64 65 29 20 7b 0a 20 xtLike(node) {. 0000fcc0: 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 6e switch (n 0000fcd0: 6f 64 65 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 ode.kind) {. 0000fce0: 20 20 20 20 20 20 20 20 63 61 73 65 20 33 30 32 case 302 0000fcf0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 55 /* SyntaxKind.U 0000fd00: 6e 70 61 72 73 65 64 54 65 78 74 20 2a 2f 3a 0a nparsedText */:. 0000fd10: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0000fd20: 20 33 30 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 303 /* SyntaxKi 0000fd30: 6e 64 2e 55 6e 70 61 72 73 65 64 49 6e 74 65 72 nd.UnparsedInter 0000fd40: 6e 61 6c 54 65 78 74 20 2a 2f 3a 0a 20 20 20 20 nalText */:. 0000fd50: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 0000fd60: 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 rn true;. 0000fd70: 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 default:. 0000fd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 0000fd90: 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 turn false;. 0000fda0: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 }. }. 0000fdb0: 74 73 2e 69 73 55 6e 70 61 72 73 65 64 54 65 78 ts.isUnparsedTex 0000fdc0: 74 4c 69 6b 65 20 3d 20 69 73 55 6e 70 61 72 73 tLike = isUnpars 0000fdd0: 65 64 54 65 78 74 4c 69 6b 65 3b 0a 20 20 20 20 edTextLike;. 0000fde0: 66 75 6e 63 74 69 6f 6e 20 69 73 55 6e 70 61 72 function isUnpar 0000fdf0: 73 65 64 4e 6f 64 65 28 6e 6f 64 65 29 20 7b 0a sedNode(node) {. 0000fe00: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 return i 0000fe10: 73 55 6e 70 61 72 73 65 64 54 65 78 74 4c 69 6b sUnparsedTextLik 0000fe20: 65 28 6e 6f 64 65 29 20 7c 7c 0a 20 20 20 20 20 e(node) ||. 0000fe30: 20 20 20 20 20 20 20 6e 6f 64 65 2e 6b 69 6e 64 node.kind 0000fe40: 20 3d 3d 3d 20 33 30 30 20 2f 2a 20 53 79 6e 74 === 300 /* Synt 0000fe50: 61 78 4b 69 6e 64 2e 55 6e 70 61 72 73 65 64 50 axKind.UnparsedP 0000fe60: 72 6f 6c 6f 67 75 65 20 2a 2f 20 7c 7c 0a 20 20 rologue */ ||. 0000fe70: 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 2e 6b node.k 0000fe80: 69 6e 64 20 3d 3d 3d 20 33 30 34 20 2f 2a 20 53 ind === 304 /* S 0000fe90: 79 6e 74 61 78 4b 69 6e 64 2e 55 6e 70 61 72 73 yntaxKind.Unpars 0000fea0: 65 64 53 79 6e 74 68 65 74 69 63 52 65 66 65 72 edSyntheticRefer 0000feb0: 65 6e 63 65 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 ence */;. }. 0000fec0: 20 20 20 74 73 2e 69 73 55 6e 70 61 72 73 65 64 ts.isUnparsed 0000fed0: 4e 6f 64 65 20 3d 20 69 73 55 6e 70 61 72 73 65 Node = isUnparse 0000fee0: 64 4e 6f 64 65 3b 0a 20 20 20 20 66 75 6e 63 74 dNode;. funct 0000fef0: 69 6f 6e 20 69 73 4a 53 44 6f 63 50 72 6f 70 65 ion isJSDocPrope 0000ff00: 72 74 79 4c 69 6b 65 54 61 67 28 6e 6f 64 65 29 rtyLikeTag(node) 0000ff10: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 0000ff20: 6e 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 n node.kind === 0000ff30: 33 34 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 347 /* SyntaxKin 0000ff40: 64 2e 4a 53 44 6f 63 50 72 6f 70 65 72 74 79 54 d.JSDocPropertyT 0000ff50: 61 67 20 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 6b 69 ag */ || node.ki 0000ff60: 6e 64 20 3d 3d 3d 20 33 34 30 20 2f 2a 20 53 79 nd === 340 /* Sy 0000ff70: 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 50 61 ntaxKind.JSDocPa 0000ff80: 72 61 6d 65 74 65 72 54 61 67 20 2a 2f 3b 0a 20 rameterTag */;. 0000ff90: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4a 53 }. ts.isJS 0000ffa0: 44 6f 63 50 72 6f 70 65 72 74 79 4c 69 6b 65 54 DocPropertyLikeT 0000ffb0: 61 67 20 3d 20 69 73 4a 53 44 6f 63 50 72 6f 70 ag = isJSDocProp 0000ffc0: 65 72 74 79 4c 69 6b 65 54 61 67 3b 0a 20 20 20 ertyLikeTag;. 0000ffd0: 20 2f 2f 20 23 65 6e 64 72 65 67 69 6f 6e 0a 20 // #endregion. 0000ffe0: 20 20 20 2f 2f 20 23 72 65 67 69 6f 6e 0a 20 20 // #region. 0000fff0: 20 20 2f 2f 20 4e 6f 64 65 20 74 65 73 74 73 0a // Node tests. 00010000: 20 20 20 20 2f 2f 0a 20 20 20 20 2f 2f 20 41 6c //. // Al 00010010: 6c 20 6e 6f 64 65 20 74 65 73 74 73 20 69 6e 20 l node tests in 00010020: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6c 69 the following li 00010030: 73 74 20 73 68 6f 75 6c 64 20 2a 6e 6f 74 2a 20 st should *not* 00010040: 72 65 66 65 72 65 6e 63 65 20 70 61 72 65 6e 74 reference parent 00010050: 20 70 6f 69 6e 74 65 72 73 20 73 6f 20 74 68 61 pointers so tha 00010060: 74 0a 20 20 20 20 2f 2f 20 74 68 65 79 20 6d 61 t. // they ma 00010070: 79 20 62 65 20 75 73 65 64 20 77 69 74 68 20 74 y be used with t 00010080: 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 73 2e 0a ransformations.. 00010090: 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c /* @internal 000100a0: 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e */. function 000100b0: 20 69 73 4e 6f 64 65 28 6e 6f 64 65 29 20 7b 0a isNode(node) {. 000100c0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 return i 000100d0: 73 4e 6f 64 65 4b 69 6e 64 28 6e 6f 64 65 2e 6b sNodeKind(node.k 000100e0: 69 6e 64 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 ind);. }. 000100f0: 74 73 2e 69 73 4e 6f 64 65 20 3d 20 69 73 4e 6f ts.isNode = isNo 00010100: 64 65 3b 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 de;. /* @inte 00010110: 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 rnal */. func 00010120: 74 69 6f 6e 20 69 73 4e 6f 64 65 4b 69 6e 64 28 tion isNodeKind( 00010130: 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 kind) {. 00010140: 72 65 74 75 72 6e 20 6b 69 6e 64 20 3e 3d 20 31 return kind >= 1 00010150: 36 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 61 /* SyntaxKind 00010160: 2e 46 69 72 73 74 4e 6f 64 65 20 2a 2f 3b 0a 20 .FirstNode */;. 00010170: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4e 6f }. ts.isNo 00010180: 64 65 4b 69 6e 64 20 3d 20 69 73 4e 6f 64 65 4b deKind = isNodeK 00010190: 69 6e 64 3b 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 ind;. /**. 000101a0: 20 20 2a 20 54 72 75 65 20 69 66 20 6b 69 6e 64 * True if kind 000101b0: 20 69 73 20 6f 66 20 73 6f 6d 65 20 74 6f 6b 65 is of some toke 000101c0: 6e 20 73 79 6e 74 61 78 20 6b 69 6e 64 2e 0a 20 n syntax kind.. 000101d0: 20 20 20 20 2a 20 46 6f 72 20 65 78 61 6d 70 6c * For exampl 000101e0: 65 2c 20 74 68 69 73 20 69 73 20 74 72 75 65 20 e, this is true 000101f0: 66 6f 72 20 61 6e 20 49 66 4b 65 79 77 6f 72 64 for an IfKeyword 00010200: 20 62 75 74 20 6e 6f 74 20 66 6f 72 20 61 6e 20 but not for an 00010210: 49 66 53 74 61 74 65 6d 65 6e 74 2e 0a 20 20 20 IfStatement.. 00010220: 20 20 2a 20 4c 69 74 65 72 61 6c 73 20 61 72 65 * Literals are 00010230: 20 63 6f 6e 73 69 64 65 72 65 64 20 74 6f 6b 65 considered toke 00010240: 6e 73 2c 20 65 78 63 65 70 74 20 54 65 6d 70 6c ns, except Templ 00010250: 61 74 65 4c 69 74 65 72 61 6c 2c 20 62 75 74 20 ateLiteral, but 00010260: 64 6f 65 73 20 69 6e 63 6c 75 64 65 20 54 65 6d does include Tem 00010270: 70 6c 61 74 65 48 65 61 64 2f 4d 69 64 64 6c 65 plateHead/Middle 00010280: 2f 54 61 69 6c 2e 0a 20 20 20 20 20 2a 2f 0a 20 /Tail.. */. 00010290: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 54 6f function isTo 000102a0: 6b 65 6e 4b 69 6e 64 28 6b 69 6e 64 29 20 7b 0a kenKind(kind) {. 000102b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b return k 000102c0: 69 6e 64 20 3e 3d 20 30 20 2f 2a 20 53 79 6e 74 ind >= 0 /* Synt 000102d0: 61 78 4b 69 6e 64 2e 46 69 72 73 74 54 6f 6b 65 axKind.FirstToke 000102e0: 6e 20 2a 2f 20 26 26 20 6b 69 6e 64 20 3c 3d 20 n */ && kind <= 000102f0: 31 36 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 160 /* SyntaxKin 00010300: 64 2e 4c 61 73 74 54 6f 6b 65 6e 20 2a 2f 3b 0a d.LastToken */;. 00010310: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 54 }. ts.isT 00010320: 6f 6b 65 6e 4b 69 6e 64 20 3d 20 69 73 54 6f 6b okenKind = isTok 00010330: 65 6e 4b 69 6e 64 3b 0a 20 20 20 20 2f 2a 2a 0a enKind;. /**. 00010340: 20 20 20 20 20 2a 20 54 72 75 65 20 69 66 20 6e * True if n 00010350: 6f 64 65 20 69 73 20 6f 66 20 73 6f 6d 65 20 74 ode is of some t 00010360: 6f 6b 65 6e 20 73 79 6e 74 61 78 20 6b 69 6e 64 oken syntax kind 00010370: 2e 0a 20 20 20 20 20 2a 20 46 6f 72 20 65 78 61 .. * For exa 00010380: 6d 70 6c 65 2c 20 74 68 69 73 20 69 73 20 74 72 mple, this is tr 00010390: 75 65 20 66 6f 72 20 61 6e 20 49 66 4b 65 79 77 ue for an IfKeyw 000103a0: 6f 72 64 20 62 75 74 20 6e 6f 74 20 66 6f 72 20 ord but not for 000103b0: 61 6e 20 49 66 53 74 61 74 65 6d 65 6e 74 2e 0a an IfStatement.. 000103c0: 20 20 20 20 20 2a 20 4c 69 74 65 72 61 6c 73 20 * Literals 000103d0: 61 72 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 are considered t 000103e0: 6f 6b 65 6e 73 2c 20 65 78 63 65 70 74 20 54 65 okens, except Te 000103f0: 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c 2c 20 62 mplateLiteral, b 00010400: 75 74 20 64 6f 65 73 20 69 6e 63 6c 75 64 65 20 ut does include 00010410: 54 65 6d 70 6c 61 74 65 48 65 61 64 2f 4d 69 64 TemplateHead/Mid 00010420: 64 6c 65 2f 54 61 69 6c 2e 0a 20 20 20 20 20 2a dle/Tail.. * 00010430: 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 /. function i 00010440: 73 54 6f 6b 65 6e 28 6e 29 20 7b 0a 20 20 20 20 sToken(n) {. 00010450: 20 20 20 20 72 65 74 75 72 6e 20 69 73 54 6f 6b return isTok 00010460: 65 6e 4b 69 6e 64 28 6e 2e 6b 69 6e 64 29 3b 0a enKind(n.kind);. 00010470: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 54 }. ts.isT 00010480: 6f 6b 65 6e 20 3d 20 69 73 54 6f 6b 65 6e 3b 0a oken = isToken;. 00010490: 20 20 20 20 2f 2f 20 4e 6f 64 65 20 41 72 72 61 // Node Arra 000104a0: 79 73 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 ys. /* @inter 000104b0: 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 nal */. funct 000104c0: 69 6f 6e 20 69 73 4e 6f 64 65 41 72 72 61 79 28 ion isNodeArray( 000104d0: 61 72 72 61 79 29 20 7b 0a 20 20 20 20 20 20 20 array) {. 000104e0: 20 72 65 74 75 72 6e 20 61 72 72 61 79 2e 68 61 return array.ha 000104f0: 73 4f 77 6e 50 72 6f 70 65 72 74 79 28 22 70 6f sOwnProperty("po 00010500: 73 22 29 20 26 26 20 61 72 72 61 79 2e 68 61 73 s") && array.has 00010510: 4f 77 6e 50 72 6f 70 65 72 74 79 28 22 65 6e 64 OwnProperty("end 00010520: 22 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 ");. }. ts 00010530: 2e 69 73 4e 6f 64 65 41 72 72 61 79 20 3d 20 69 .isNodeArray = i 00010540: 73 4e 6f 64 65 41 72 72 61 79 3b 0a 20 20 20 20 sNodeArray;. 00010550: 2f 2f 20 4c 69 74 65 72 61 6c 73 0a 20 20 20 20 // Literals. 00010560: 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a /* @internal */. 00010570: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4c function isL 00010580: 69 74 65 72 61 6c 4b 69 6e 64 28 6b 69 6e 64 29 iteralKind(kind) 00010590: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 000105a0: 6e 20 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e n 8 /* SyntaxKin 000105b0: 64 2e 46 69 72 73 74 4c 69 74 65 72 61 6c 54 6f d.FirstLiteralTo 000105c0: 6b 65 6e 20 2a 2f 20 3c 3d 20 6b 69 6e 64 20 26 ken */ <= kind & 000105d0: 26 20 6b 69 6e 64 20 3c 3d 20 31 34 20 2f 2a 20 & kind <= 14 /* 000105e0: 53 79 6e 74 61 78 4b 69 6e 64 2e 4c 61 73 74 4c SyntaxKind.LastL 000105f0: 69 74 65 72 61 6c 54 6f 6b 65 6e 20 2a 2f 3b 0a iteralToken */;. 00010600: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4c }. ts.isL 00010610: 69 74 65 72 61 6c 4b 69 6e 64 20 3d 20 69 73 4c iteralKind = isL 00010620: 69 74 65 72 61 6c 4b 69 6e 64 3b 0a 20 20 20 20 iteralKind;. 00010630: 66 75 6e 63 74 69 6f 6e 20 69 73 4c 69 74 65 72 function isLiter 00010640: 61 6c 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 alExpression(nod 00010650: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 e) {. ret 00010660: 75 72 6e 20 69 73 4c 69 74 65 72 61 6c 4b 69 6e urn isLiteralKin 00010670: 64 28 6e 6f 64 65 2e 6b 69 6e 64 29 3b 0a 20 20 d(node.kind);. 00010680: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4c 69 74 }. ts.isLit 00010690: 65 72 61 6c 45 78 70 72 65 73 73 69 6f 6e 20 3d eralExpression = 000106a0: 20 69 73 4c 69 74 65 72 61 6c 45 78 70 72 65 73 isLiteralExpres 000106b0: 73 69 6f 6e 3b 0a 20 20 20 20 2f 2a 2a 20 40 69 sion;. /** @i 000106c0: 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 nternal */. f 000106d0: 75 6e 63 74 69 6f 6e 20 69 73 4c 69 74 65 72 61 unction isLitera 000106e0: 6c 45 78 70 72 65 73 73 69 6f 6e 4f 66 4f 62 6a lExpressionOfObj 000106f0: 65 63 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ect(node) {. 00010700: 20 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 65 switch (node 00010710: 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 .kind) {. 00010720: 20 20 20 20 20 63 61 73 65 20 32 30 35 20 2f 2a case 205 /* 00010730: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4f 62 6a 65 SyntaxKind.Obje 00010740: 63 74 4c 69 74 65 72 61 6c 45 78 70 72 65 73 73 ctLiteralExpress 00010750: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 00010760: 20 20 20 20 63 61 73 65 20 32 30 34 20 2f 2a 20 case 204 /* 00010770: 53 79 6e 74 61 78 4b 69 6e 64 2e 41 72 72 61 79 SyntaxKind.Array 00010780: 4c 69 74 65 72 61 6c 45 78 70 72 65 73 73 69 6f LiteralExpressio 00010790: 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 n */:. 000107a0: 20 20 63 61 73 65 20 31 33 20 2f 2a 20 53 79 6e case 13 /* Syn 000107b0: 74 61 78 4b 69 6e 64 2e 52 65 67 75 6c 61 72 45 taxKind.RegularE 000107c0: 78 70 72 65 73 73 69 6f 6e 4c 69 74 65 72 61 6c xpressionLiteral 000107d0: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 000107e0: 20 63 61 73 65 20 32 31 33 20 2f 2a 20 53 79 6e case 213 /* Syn 000107f0: 74 61 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e taxKind.Function 00010800: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 00010810: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00010820: 32 32 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 226 /* SyntaxKin 00010830: 64 2e 43 6c 61 73 73 45 78 70 72 65 73 73 69 6f d.ClassExpressio 00010840: 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 n */:. 00010850: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 return tru 00010860: 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 e;. }. 00010870: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 return fals 00010880: 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e e;. }. ts. 00010890: 69 73 4c 69 74 65 72 61 6c 45 78 70 72 65 73 73 isLiteralExpress 000108a0: 69 6f 6e 4f 66 4f 62 6a 65 63 74 20 3d 20 69 73 ionOfObject = is 000108b0: 4c 69 74 65 72 61 6c 45 78 70 72 65 73 73 69 6f LiteralExpressio 000108c0: 6e 4f 66 4f 62 6a 65 63 74 3b 0a 20 20 20 20 2f nOfObject;. / 000108d0: 2f 20 50 73 65 75 64 6f 2d 6c 69 74 65 72 61 6c / Pseudo-literal 000108e0: 73 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e s. /* @intern 000108f0: 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 al */. functi 00010900: 6f 6e 20 69 73 54 65 6d 70 6c 61 74 65 4c 69 74 on isTemplateLit 00010910: 65 72 61 6c 4b 69 6e 64 28 6b 69 6e 64 29 20 7b eralKind(kind) { 00010920: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 00010930: 31 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 14 /* SyntaxKind 00010940: 2e 46 69 72 73 74 54 65 6d 70 6c 61 74 65 54 6f .FirstTemplateTo 00010950: 6b 65 6e 20 2a 2f 20 3c 3d 20 6b 69 6e 64 20 26 ken */ <= kind & 00010960: 26 20 6b 69 6e 64 20 3c 3d 20 31 37 20 2f 2a 20 & kind <= 17 /* 00010970: 53 79 6e 74 61 78 4b 69 6e 64 2e 4c 61 73 74 54 SyntaxKind.LastT 00010980: 65 6d 70 6c 61 74 65 54 6f 6b 65 6e 20 2a 2f 3b emplateToken */; 00010990: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 000109a0: 54 65 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c 4b TemplateLiteralK 000109b0: 69 6e 64 20 3d 20 69 73 54 65 6d 70 6c 61 74 65 ind = isTemplate 000109c0: 4c 69 74 65 72 61 6c 4b 69 6e 64 3b 0a 20 20 20 LiteralKind;. 000109d0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 54 65 6d 70 function isTemp 000109e0: 6c 61 74 65 4c 69 74 65 72 61 6c 54 6f 6b 65 6e lateLiteralToken 000109f0: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 00010a00: 20 72 65 74 75 72 6e 20 69 73 54 65 6d 70 6c 61 return isTempla 00010a10: 74 65 4c 69 74 65 72 61 6c 4b 69 6e 64 28 6e 6f teLiteralKind(no 00010a20: 64 65 2e 6b 69 6e 64 29 3b 0a 20 20 20 20 7d 0a de.kind);. }. 00010a30: 20 20 20 20 74 73 2e 69 73 54 65 6d 70 6c 61 74 ts.isTemplat 00010a40: 65 4c 69 74 65 72 61 6c 54 6f 6b 65 6e 20 3d 20 eLiteralToken = 00010a50: 69 73 54 65 6d 70 6c 61 74 65 4c 69 74 65 72 61 isTemplateLitera 00010a60: 6c 54 6f 6b 65 6e 3b 0a 20 20 20 20 66 75 6e 63 lToken;. func 00010a70: 74 69 6f 6e 20 69 73 54 65 6d 70 6c 61 74 65 4d tion isTemplateM 00010a80: 69 64 64 6c 65 4f 72 54 65 6d 70 6c 61 74 65 54 iddleOrTemplateT 00010a90: 61 69 6c 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ail(node) {. 00010aa0: 20 20 20 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e var kind = n 00010ab0: 6f 64 65 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 ode.kind;. 00010ac0: 20 20 72 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d return kind == 00010ad0: 3d 20 31 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 = 16 /* SyntaxKi 00010ae0: 6e 64 2e 54 65 6d 70 6c 61 74 65 4d 69 64 64 6c nd.TemplateMiddl 00010af0: 65 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 e */. 00010b00: 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 37 20 || kind === 17 00010b10: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 65 /* SyntaxKind.Te 00010b20: 6d 70 6c 61 74 65 54 61 69 6c 20 2a 2f 3b 0a 20 mplateTail */;. 00010b30: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 54 65 }. ts.isTe 00010b40: 6d 70 6c 61 74 65 4d 69 64 64 6c 65 4f 72 54 65 mplateMiddleOrTe 00010b50: 6d 70 6c 61 74 65 54 61 69 6c 20 3d 20 69 73 54 mplateTail = isT 00010b60: 65 6d 70 6c 61 74 65 4d 69 64 64 6c 65 4f 72 54 emplateMiddleOrT 00010b70: 65 6d 70 6c 61 74 65 54 61 69 6c 3b 0a 20 20 20 emplateTail;. 00010b80: 20 66 75 6e 63 74 69 6f 6e 20 69 73 49 6d 70 6f function isImpo 00010b90: 72 74 4f 72 45 78 70 6f 72 74 53 70 65 63 69 66 rtOrExportSpecif 00010ba0: 69 65 72 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ier(node) {. 00010bb0: 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 return ts.is 00010bc0: 49 6d 70 6f 72 74 53 70 65 63 69 66 69 65 72 28 ImportSpecifier( 00010bd0: 6e 6f 64 65 29 20 7c 7c 20 74 73 2e 69 73 45 78 node) || ts.isEx 00010be0: 70 6f 72 74 53 70 65 63 69 66 69 65 72 28 6e 6f portSpecifier(no 00010bf0: 64 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 de);. }. t 00010c00: 73 2e 69 73 49 6d 70 6f 72 74 4f 72 45 78 70 6f s.isImportOrExpo 00010c10: 72 74 53 70 65 63 69 66 69 65 72 20 3d 20 69 73 rtSpecifier = is 00010c20: 49 6d 70 6f 72 74 4f 72 45 78 70 6f 72 74 53 70 ImportOrExportSp 00010c30: 65 63 69 66 69 65 72 3b 0a 20 20 20 20 66 75 6e ecifier;. fun 00010c40: 63 74 69 6f 6e 20 69 73 54 79 70 65 4f 6e 6c 79 ction isTypeOnly 00010c50: 49 6d 70 6f 72 74 4f 72 45 78 70 6f 72 74 44 65 ImportOrExportDe 00010c60: 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 20 claration(node) 00010c70: 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 {. switch 00010c80: 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 7b 0a 20 (node.kind) {. 00010c90: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00010ca0: 32 37 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 270 /* SyntaxKin 00010cb0: 64 2e 49 6d 70 6f 72 74 53 70 65 63 69 66 69 65 d.ImportSpecifie 00010cc0: 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 r */:. 00010cd0: 20 20 63 61 73 65 20 32 37 35 20 2f 2a 20 53 79 case 275 /* Sy 00010ce0: 6e 74 61 78 4b 69 6e 64 2e 45 78 70 6f 72 74 53 ntaxKind.ExportS 00010cf0: 70 65 63 69 66 69 65 72 20 2a 2f 3a 0a 20 20 20 pecifier */:. 00010d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00010d10: 75 72 6e 20 6e 6f 64 65 2e 69 73 54 79 70 65 4f urn node.isTypeO 00010d20: 6e 6c 79 20 7c 7c 20 6e 6f 64 65 2e 70 61 72 65 nly || node.pare 00010d30: 6e 74 2e 70 61 72 65 6e 74 2e 69 73 54 79 70 65 nt.parent.isType 00010d40: 4f 6e 6c 79 3b 0a 20 20 20 20 20 20 20 20 20 20 Only;. 00010d50: 20 20 63 61 73 65 20 32 36 38 20 2f 2a 20 53 79 case 268 /* Sy 00010d60: 6e 74 61 78 4b 69 6e 64 2e 4e 61 6d 65 73 70 61 ntaxKind.Namespa 00010d70: 63 65 49 6d 70 6f 72 74 20 2a 2f 3a 0a 20 20 20 ceImport */:. 00010d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00010d90: 75 72 6e 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e urn node.parent. 00010da0: 69 73 54 79 70 65 4f 6e 6c 79 3b 0a 20 20 20 20 isTypeOnly;. 00010db0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 36 37 case 267 00010dc0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 /* SyntaxKind.I 00010dd0: 6d 70 6f 72 74 43 6c 61 75 73 65 20 2a 2f 3a 0a mportClause */:. 00010de0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00010df0: 20 32 36 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 265 /* SyntaxKi 00010e00: 6e 64 2e 49 6d 70 6f 72 74 45 71 75 61 6c 73 44 nd.ImportEqualsD 00010e10: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 00010e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 00010e30: 65 74 75 72 6e 20 6e 6f 64 65 2e 69 73 54 79 70 eturn node.isTyp 00010e40: 65 4f 6e 6c 79 3b 0a 20 20 20 20 20 20 20 20 20 eOnly;. 00010e50: 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 default:. 00010e60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00010e70: 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 rn false;. 00010e80: 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 }. }. ts 00010e90: 2e 69 73 54 79 70 65 4f 6e 6c 79 49 6d 70 6f 72 .isTypeOnlyImpor 00010ea0: 74 4f 72 45 78 70 6f 72 74 44 65 63 6c 61 72 61 tOrExportDeclara 00010eb0: 74 69 6f 6e 20 3d 20 69 73 54 79 70 65 4f 6e 6c tion = isTypeOnl 00010ec0: 79 49 6d 70 6f 72 74 4f 72 45 78 70 6f 72 74 44 yImportOrExportD 00010ed0: 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 20 eclaration;. 00010ee0: 66 75 6e 63 74 69 6f 6e 20 69 73 41 73 73 65 72 function isAsser 00010ef0: 74 69 6f 6e 4b 65 79 28 6e 6f 64 65 29 20 7b 0a tionKey(node) {. 00010f00: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 00010f10: 73 2e 69 73 53 74 72 69 6e 67 4c 69 74 65 72 61 s.isStringLitera 00010f20: 6c 28 6e 6f 64 65 29 20 7c 7c 20 74 73 2e 69 73 l(node) || ts.is 00010f30: 49 64 65 6e 74 69 66 69 65 72 28 6e 6f 64 65 29 Identifier(node) 00010f40: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 00010f50: 73 41 73 73 65 72 74 69 6f 6e 4b 65 79 20 3d 20 sAssertionKey = 00010f60: 69 73 41 73 73 65 72 74 69 6f 6e 4b 65 79 3b 0a isAssertionKey;. 00010f70: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 function isS 00010f80: 74 72 69 6e 67 54 65 78 74 43 6f 6e 74 61 69 6e tringTextContain 00010f90: 69 6e 67 4e 6f 64 65 28 6e 6f 64 65 29 20 7b 0a ingNode(node) {. 00010fa0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e return n 00010fb0: 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 30 20 ode.kind === 10 00010fc0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 74 /* SyntaxKind.St 00010fd0: 72 69 6e 67 4c 69 74 65 72 61 6c 20 2a 2f 20 7c ringLiteral */ | 00010fe0: 7c 20 69 73 54 65 6d 70 6c 61 74 65 4c 69 74 65 | isTemplateLite 00010ff0: 72 61 6c 4b 69 6e 64 28 6e 6f 64 65 2e 6b 69 6e ralKind(node.kin 00011000: 64 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 d);. }. ts 00011010: 2e 69 73 53 74 72 69 6e 67 54 65 78 74 43 6f 6e .isStringTextCon 00011020: 74 61 69 6e 69 6e 67 4e 6f 64 65 20 3d 20 69 73 tainingNode = is 00011030: 53 74 72 69 6e 67 54 65 78 74 43 6f 6e 74 61 69 StringTextContai 00011040: 6e 69 6e 67 4e 6f 64 65 3b 0a 20 20 20 20 2f 2f ningNode;. // 00011050: 20 49 64 65 6e 74 69 66 69 65 72 73 0a 20 20 20 Identifiers. 00011060: 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f /* @internal */ 00011070: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 . function is 00011080: 47 65 6e 65 72 61 74 65 64 49 64 65 6e 74 69 66 GeneratedIdentif 00011090: 69 65 72 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ier(node) {. 000110a0: 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 return ts.is 000110b0: 49 64 65 6e 74 69 66 69 65 72 28 6e 6f 64 65 29 Identifier(node) 000110c0: 20 26 26 20 28 6e 6f 64 65 2e 61 75 74 6f 47 65 && (node.autoGe 000110d0: 6e 65 72 61 74 65 46 6c 61 67 73 20 26 20 37 20 nerateFlags & 7 000110e0: 2f 2a 20 47 65 6e 65 72 61 74 65 64 49 64 65 6e /* GeneratedIden 000110f0: 74 69 66 69 65 72 46 6c 61 67 73 2e 4b 69 6e 64 tifierFlags.Kind 00011100: 4d 61 73 6b 20 2a 2f 29 20 3e 20 30 20 2f 2a 20 Mask */) > 0 /* 00011110: 47 65 6e 65 72 61 74 65 64 49 64 65 6e 74 69 66 GeneratedIdentif 00011120: 69 65 72 46 6c 61 67 73 2e 4e 6f 6e 65 20 2a 2f ierFlags.None */ 00011130: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 00011140: 73 47 65 6e 65 72 61 74 65 64 49 64 65 6e 74 69 sGeneratedIdenti 00011150: 66 69 65 72 20 3d 20 69 73 47 65 6e 65 72 61 74 fier = isGenerat 00011160: 65 64 49 64 65 6e 74 69 66 69 65 72 3b 0a 20 20 edIdentifier;. 00011170: 20 20 2f 2f 20 50 72 69 76 61 74 65 20 49 64 65 // Private Ide 00011180: 6e 74 69 66 69 65 72 73 0a 20 20 20 20 2f 2a 40 ntifiers. /*@ 00011190: 69 6e 74 65 72 6e 61 6c 2a 2f 0a 20 20 20 20 66 internal*/. f 000111a0: 75 6e 63 74 69 6f 6e 20 69 73 50 72 69 76 61 74 unction isPrivat 000111b0: 65 49 64 65 6e 74 69 66 69 65 72 43 6c 61 73 73 eIdentifierClass 000111c0: 45 6c 65 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 ElementDeclarati 000111d0: 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 on(node) {. 000111e0: 20 20 20 72 65 74 75 72 6e 20 28 74 73 2e 69 73 return (ts.is 000111f0: 50 72 6f 70 65 72 74 79 44 65 63 6c 61 72 61 74 PropertyDeclarat 00011200: 69 6f 6e 28 6e 6f 64 65 29 20 7c 7c 20 69 73 4d ion(node) || isM 00011210: 65 74 68 6f 64 4f 72 41 63 63 65 73 73 6f 72 28 ethodOrAccessor( 00011220: 6e 6f 64 65 29 29 20 26 26 20 74 73 2e 69 73 50 node)) && ts.isP 00011230: 72 69 76 61 74 65 49 64 65 6e 74 69 66 69 65 72 rivateIdentifier 00011240: 28 6e 6f 64 65 2e 6e 61 6d 65 29 3b 0a 20 20 20 (node.name);. 00011250: 20 7d 0a 20 20 20 20 74 73 2e 69 73 50 72 69 76 }. ts.isPriv 00011260: 61 74 65 49 64 65 6e 74 69 66 69 65 72 43 6c 61 ateIdentifierCla 00011270: 73 73 45 6c 65 6d 65 6e 74 44 65 63 6c 61 72 61 ssElementDeclara 00011280: 74 69 6f 6e 20 3d 20 69 73 50 72 69 76 61 74 65 tion = isPrivate 00011290: 49 64 65 6e 74 69 66 69 65 72 43 6c 61 73 73 45 IdentifierClassE 000112a0: 6c 65 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 6f lementDeclaratio 000112b0: 6e 3b 0a 20 20 20 20 2f 2a 40 69 6e 74 65 72 6e n;. /*@intern 000112c0: 61 6c 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f al*/. functio 000112d0: 6e 20 69 73 50 72 69 76 61 74 65 49 64 65 6e 74 n isPrivateIdent 000112e0: 69 66 69 65 72 50 72 6f 70 65 72 74 79 41 63 63 ifierPropertyAcc 000112f0: 65 73 73 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f essExpression(no 00011300: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 de) {. re 00011310: 74 75 72 6e 20 74 73 2e 69 73 50 72 6f 70 65 72 turn ts.isProper 00011320: 74 79 41 63 63 65 73 73 45 78 70 72 65 73 73 69 tyAccessExpressi 00011330: 6f 6e 28 6e 6f 64 65 29 20 26 26 20 74 73 2e 69 on(node) && ts.i 00011340: 73 50 72 69 76 61 74 65 49 64 65 6e 74 69 66 69 sPrivateIdentifi 00011350: 65 72 28 6e 6f 64 65 2e 6e 61 6d 65 29 3b 0a 20 er(node.name);. 00011360: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 50 72 }. ts.isPr 00011370: 69 76 61 74 65 49 64 65 6e 74 69 66 69 65 72 50 ivateIdentifierP 00011380: 72 6f 70 65 72 74 79 41 63 63 65 73 73 45 78 70 ropertyAccessExp 00011390: 72 65 73 73 69 6f 6e 20 3d 20 69 73 50 72 69 76 ression = isPriv 000113a0: 61 74 65 49 64 65 6e 74 69 66 69 65 72 50 72 6f ateIdentifierPro 000113b0: 70 65 72 74 79 41 63 63 65 73 73 45 78 70 72 65 pertyAccessExpre 000113c0: 73 73 69 6f 6e 3b 0a 20 20 20 20 2f 2f 20 4b 65 ssion;. // Ke 000113d0: 79 77 6f 72 64 73 0a 20 20 20 20 2f 2a 20 40 69 ywords. /* @i 000113e0: 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 nternal */. f 000113f0: 75 6e 63 74 69 6f 6e 20 69 73 4d 6f 64 69 66 69 unction isModifi 00011400: 65 72 4b 69 6e 64 28 74 6f 6b 65 6e 29 20 7b 0a erKind(token) {. 00011410: 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 switch ( 00011420: 74 6f 6b 65 6e 29 20 7b 0a 20 20 20 20 20 20 20 token) {. 00011430: 20 20 20 20 20 63 61 73 65 20 31 32 36 20 2f 2a case 126 /* 00011440: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 62 73 74 SyntaxKind.Abst 00011450: 72 61 63 74 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a ractKeyword */:. 00011460: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00011470: 20 31 33 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 131 /* SyntaxKi 00011480: 6e 64 2e 41 73 79 6e 63 4b 65 79 77 6f 72 64 20 nd.AsyncKeyword 00011490: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 000114a0: 63 61 73 65 20 38 35 20 2f 2a 20 53 79 6e 74 61 case 85 /* Synta 000114b0: 78 4b 69 6e 64 2e 43 6f 6e 73 74 4b 65 79 77 6f xKind.ConstKeywo 000114c0: 72 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 rd */:. 000114d0: 20 20 20 63 61 73 65 20 31 33 35 20 2f 2a 20 53 case 135 /* S 000114e0: 79 6e 74 61 78 4b 69 6e 64 2e 44 65 63 6c 61 72 yntaxKind.Declar 000114f0: 65 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 eKeyword */:. 00011500: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 38 38 case 88 00011510: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 44 /* SyntaxKind.D 00011520: 65 66 61 75 6c 74 4b 65 79 77 6f 72 64 20 2a 2f efaultKeyword */ 00011530: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 00011540: 73 65 20 39 33 20 2f 2a 20 53 79 6e 74 61 78 4b se 93 /* SyntaxK 00011550: 69 6e 64 2e 45 78 70 6f 72 74 4b 65 79 77 6f 72 ind.ExportKeywor 00011560: 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 d */:. 00011570: 20 20 63 61 73 65 20 31 30 31 20 2f 2a 20 53 79 case 101 /* Sy 00011580: 6e 74 61 78 4b 69 6e 64 2e 49 6e 4b 65 79 77 6f ntaxKind.InKeywo 00011590: 72 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 rd */:. 000115a0: 20 20 20 63 61 73 65 20 31 32 33 20 2f 2a 20 53 case 123 /* S 000115b0: 79 6e 74 61 78 4b 69 6e 64 2e 50 75 62 6c 69 63 yntaxKind.Public 000115c0: 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 Keyword */:. 000115d0: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 32 31 case 121 000115e0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 /* SyntaxKind.P 000115f0: 72 69 76 61 74 65 4b 65 79 77 6f 72 64 20 2a 2f rivateKeyword */ 00011600: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 00011610: 73 65 20 31 32 32 20 2f 2a 20 53 79 6e 74 61 78 se 122 /* Syntax 00011620: 4b 69 6e 64 2e 50 72 6f 74 65 63 74 65 64 4b 65 Kind.ProtectedKe 00011630: 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 20 20 yword */:. 00011640: 20 20 20 20 20 20 63 61 73 65 20 31 34 35 20 2f case 145 / 00011650: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 52 65 61 * SyntaxKind.Rea 00011660: 64 6f 6e 6c 79 4b 65 79 77 6f 72 64 20 2a 2f 3a donlyKeyword */: 00011670: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00011680: 65 20 31 32 34 20 2f 2a 20 53 79 6e 74 61 78 4b e 124 /* SyntaxK 00011690: 69 6e 64 2e 53 74 61 74 69 63 4b 65 79 77 6f 72 ind.StaticKeywor 000116a0: 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 d */:. 000116b0: 20 20 63 61 73 65 20 31 34 34 20 2f 2a 20 53 79 case 144 /* Sy 000116c0: 6e 74 61 78 4b 69 6e 64 2e 4f 75 74 4b 65 79 77 ntaxKind.OutKeyw 000116d0: 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ord */:. 000116e0: 20 20 20 20 63 61 73 65 20 31 35 39 20 2f 2a 20 case 159 /* 000116f0: 53 79 6e 74 61 78 4b 69 6e 64 2e 4f 76 65 72 72 SyntaxKind.Overr 00011700: 69 64 65 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 ideKeyword */:. 00011710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 00011720: 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 eturn true;. 00011730: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 }. re 00011740: 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 turn false;. 00011750: 7d 0a 20 20 20 20 74 73 2e 69 73 4d 6f 64 69 66 }. ts.isModif 00011760: 69 65 72 4b 69 6e 64 20 3d 20 69 73 4d 6f 64 69 ierKind = isModi 00011770: 66 69 65 72 4b 69 6e 64 3b 0a 20 20 20 20 2f 2a fierKind;. /* 00011780: 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 @internal */. 00011790: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 50 61 72 function isPar 000117a0: 61 6d 65 74 65 72 50 72 6f 70 65 72 74 79 4d 6f ameterPropertyMo 000117b0: 64 69 66 69 65 72 28 6b 69 6e 64 29 20 7b 0a 20 difier(kind) {. 000117c0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 21 return !! 000117d0: 28 74 73 2e 6d 6f 64 69 66 69 65 72 54 6f 46 6c (ts.modifierToFl 000117e0: 61 67 28 6b 69 6e 64 29 20 26 20 31 36 34 37 36 ag(kind) & 16476 000117f0: 20 2f 2a 20 4d 6f 64 69 66 69 65 72 46 6c 61 67 /* ModifierFlag 00011800: 73 2e 50 61 72 61 6d 65 74 65 72 50 72 6f 70 65 s.ParameterPrope 00011810: 72 74 79 4d 6f 64 69 66 69 65 72 20 2a 2f 29 3b rtyModifier */); 00011820: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00011830: 50 61 72 61 6d 65 74 65 72 50 72 6f 70 65 72 74 ParameterPropert 00011840: 79 4d 6f 64 69 66 69 65 72 20 3d 20 69 73 50 61 yModifier = isPa 00011850: 72 61 6d 65 74 65 72 50 72 6f 70 65 72 74 79 4d rameterPropertyM 00011860: 6f 64 69 66 69 65 72 3b 0a 20 20 20 20 2f 2a 20 odifier;. /* 00011870: 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 @internal */. 00011880: 20 66 75 6e 63 74 69 6f 6e 20 69 73 43 6c 61 73 function isClas 00011890: 73 4d 65 6d 62 65 72 4d 6f 64 69 66 69 65 72 28 sMemberModifier( 000118a0: 69 64 54 6f 6b 65 6e 29 20 7b 0a 20 20 20 20 20 idToken) {. 000118b0: 20 20 20 72 65 74 75 72 6e 20 69 73 50 61 72 61 return isPara 000118c0: 6d 65 74 65 72 50 72 6f 70 65 72 74 79 4d 6f 64 meterPropertyMod 000118d0: 69 66 69 65 72 28 69 64 54 6f 6b 65 6e 29 20 7c ifier(idToken) | 000118e0: 7c 20 69 64 54 6f 6b 65 6e 20 3d 3d 3d 20 31 32 | idToken === 12 000118f0: 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4 /* SyntaxKind. 00011900: 53 74 61 74 69 63 4b 65 79 77 6f 72 64 20 2a 2f StaticKeyword */ 00011910: 20 7c 7c 20 69 64 54 6f 6b 65 6e 20 3d 3d 3d 20 || idToken === 00011920: 31 35 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 159 /* SyntaxKin 00011930: 64 2e 4f 76 65 72 72 69 64 65 4b 65 79 77 6f 72 d.OverrideKeywor 00011940: 64 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 d */;. }. 00011950: 74 73 2e 69 73 43 6c 61 73 73 4d 65 6d 62 65 72 ts.isClassMember 00011960: 4d 6f 64 69 66 69 65 72 20 3d 20 69 73 43 6c 61 Modifier = isCla 00011970: 73 73 4d 65 6d 62 65 72 4d 6f 64 69 66 69 65 72 ssMemberModifier 00011980: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 00011990: 73 4d 6f 64 69 66 69 65 72 28 6e 6f 64 65 29 20 sModifier(node) 000119a0: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 000119b0: 20 69 73 4d 6f 64 69 66 69 65 72 4b 69 6e 64 28 isModifierKind( 000119c0: 6e 6f 64 65 2e 6b 69 6e 64 29 3b 0a 20 20 20 20 node.kind);. 000119d0: 7d 0a 20 20 20 20 74 73 2e 69 73 4d 6f 64 69 66 }. ts.isModif 000119e0: 69 65 72 20 3d 20 69 73 4d 6f 64 69 66 69 65 72 ier = isModifier 000119f0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 00011a00: 73 45 6e 74 69 74 79 4e 61 6d 65 28 6e 6f 64 65 sEntityName(node 00011a10: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 00011a20: 6b 69 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 kind = node.kind 00011a30: 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e ;. return 00011a40: 20 6b 69 6e 64 20 3d 3d 3d 20 31 36 31 20 2f 2a kind === 161 /* 00011a50: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 51 75 61 6c SyntaxKind.Qual 00011a60: 69 66 69 65 64 4e 61 6d 65 20 2a 2f 0a 20 20 20 ifiedName */. 00011a70: 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 || kind 00011a80: 20 3d 3d 3d 20 37 39 20 2f 2a 20 53 79 6e 74 61 === 79 /* Synta 00011a90: 78 4b 69 6e 64 2e 49 64 65 6e 74 69 66 69 65 72 xKind.Identifier 00011aa0: 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 */;. }. t 00011ab0: 73 2e 69 73 45 6e 74 69 74 79 4e 61 6d 65 20 3d s.isEntityName = 00011ac0: 20 69 73 45 6e 74 69 74 79 4e 61 6d 65 3b 0a 20 isEntityName;. 00011ad0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 50 72 function isPr 00011ae0: 6f 70 65 72 74 79 4e 61 6d 65 28 6e 6f 64 65 29 opertyName(node) 00011af0: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6b {. var k 00011b00: 69 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 3b ind = node.kind; 00011b10: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 00011b20: 6b 69 6e 64 20 3d 3d 3d 20 37 39 20 2f 2a 20 53 kind === 79 /* S 00011b30: 79 6e 74 61 78 4b 69 6e 64 2e 49 64 65 6e 74 69 yntaxKind.Identi 00011b40: 66 69 65 72 20 2a 2f 0a 20 20 20 20 20 20 20 20 fier */. 00011b50: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 00011b60: 38 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 80 /* SyntaxKind 00011b70: 2e 50 72 69 76 61 74 65 49 64 65 6e 74 69 66 69 .PrivateIdentifi 00011b80: 65 72 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 er */. 00011b90: 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 30 || kind === 10 00011ba0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 /* SyntaxKind.S 00011bb0: 74 72 69 6e 67 4c 69 74 65 72 61 6c 20 2a 2f 0a tringLiteral */. 00011bc0: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 00011bd0: 69 6e 64 20 3d 3d 3d 20 38 20 2f 2a 20 53 79 6e ind === 8 /* Syn 00011be0: 74 61 78 4b 69 6e 64 2e 4e 75 6d 65 72 69 63 4c taxKind.NumericL 00011bf0: 69 74 65 72 61 6c 20 2a 2f 0a 20 20 20 20 20 20 iteral */. 00011c00: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 00011c10: 3d 20 31 36 32 20 2f 2a 20 53 79 6e 74 61 78 4b = 162 /* SyntaxK 00011c20: 69 6e 64 2e 43 6f 6d 70 75 74 65 64 50 72 6f 70 ind.ComputedProp 00011c30: 65 72 74 79 4e 61 6d 65 20 2a 2f 3b 0a 20 20 20 ertyName */;. 00011c40: 20 7d 0a 20 20 20 20 74 73 2e 69 73 50 72 6f 70 }. ts.isProp 00011c50: 65 72 74 79 4e 61 6d 65 20 3d 20 69 73 50 72 6f ertyName = isPro 00011c60: 70 65 72 74 79 4e 61 6d 65 3b 0a 20 20 20 20 66 pertyName;. f 00011c70: 75 6e 63 74 69 6f 6e 20 69 73 42 69 6e 64 69 6e unction isBindin 00011c80: 67 4e 61 6d 65 28 6e 6f 64 65 29 20 7b 0a 20 20 gName(node) {. 00011c90: 20 20 20 20 20 20 76 61 72 20 6b 69 6e 64 20 3d var kind = 00011ca0: 20 6e 6f 64 65 2e 6b 69 6e 64 3b 0a 20 20 20 20 node.kind;. 00011cb0: 20 20 20 20 72 65 74 75 72 6e 20 6b 69 6e 64 20 return kind 00011cc0: 3d 3d 3d 20 37 39 20 2f 2a 20 53 79 6e 74 61 78 === 79 /* Syntax 00011cd0: 4b 69 6e 64 2e 49 64 65 6e 74 69 66 69 65 72 20 Kind.Identifier 00011ce0: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 00011cf0: 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 30 31 20 2f | kind === 201 / 00011d00: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4f 62 6a * SyntaxKind.Obj 00011d10: 65 63 74 42 69 6e 64 69 6e 67 50 61 74 74 65 72 ectBindingPatter 00011d20: 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 n */. 00011d30: 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 30 32 || kind === 202 00011d40: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 /* SyntaxKind.A 00011d50: 72 72 61 79 42 69 6e 64 69 6e 67 50 61 74 74 65 rrayBindingPatte 00011d60: 72 6e 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 rn */;. }. 00011d70: 20 74 73 2e 69 73 42 69 6e 64 69 6e 67 4e 61 6d ts.isBindingNam 00011d80: 65 20 3d 20 69 73 42 69 6e 64 69 6e 67 4e 61 6d e = isBindingNam 00011d90: 65 3b 0a 20 20 20 20 2f 2f 20 46 75 6e 63 74 69 e;. // Functi 00011da0: 6f 6e 73 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ons. function 00011db0: 20 69 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 28 isFunctionLike( 00011dc0: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 00011dd0: 72 65 74 75 72 6e 20 21 21 6e 6f 64 65 20 26 26 return !!node && 00011de0: 20 69 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 4b isFunctionLikeK 00011df0: 69 6e 64 28 6e 6f 64 65 2e 6b 69 6e 64 29 3b 0a ind(node.kind);. 00011e00: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 46 }. ts.isF 00011e10: 75 6e 63 74 69 6f 6e 4c 69 6b 65 20 3d 20 69 73 unctionLike = is 00011e20: 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 3b 0a 20 20 FunctionLike;. 00011e30: 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a /* @internal * 00011e40: 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 /. function i 00011e50: 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 4f 72 43 sFunctionLikeOrC 00011e60: 6c 61 73 73 53 74 61 74 69 63 42 6c 6f 63 6b 44 lassStaticBlockD 00011e70: 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 eclaration(node) 00011e80: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00011e90: 6e 20 21 21 6e 6f 64 65 20 26 26 20 28 69 73 46 n !!node && (isF 00011ea0: 75 6e 63 74 69 6f 6e 4c 69 6b 65 4b 69 6e 64 28 unctionLikeKind( 00011eb0: 6e 6f 64 65 2e 6b 69 6e 64 29 20 7c 7c 20 74 73 node.kind) || ts 00011ec0: 2e 69 73 43 6c 61 73 73 53 74 61 74 69 63 42 6c .isClassStaticBl 00011ed0: 6f 63 6b 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e ockDeclaration(n 00011ee0: 6f 64 65 29 29 3b 0a 20 20 20 20 7d 0a 20 20 20 ode));. }. 00011ef0: 20 74 73 2e 69 73 46 75 6e 63 74 69 6f 6e 4c 69 ts.isFunctionLi 00011f00: 6b 65 4f 72 43 6c 61 73 73 53 74 61 74 69 63 42 keOrClassStaticB 00011f10: 6c 6f 63 6b 44 65 63 6c 61 72 61 74 69 6f 6e 20 lockDeclaration 00011f20: 3d 20 69 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 = isFunctionLike 00011f30: 4f 72 43 6c 61 73 73 53 74 61 74 69 63 42 6c 6f OrClassStaticBlo 00011f40: 63 6b 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 ckDeclaration;. 00011f50: 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 /* @internal 00011f60: 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 */. function 00011f70: 69 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 44 65 isFunctionLikeDe 00011f80: 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 20 claration(node) 00011f90: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 00011fa0: 20 6e 6f 64 65 20 26 26 20 69 73 46 75 6e 63 74 node && isFunct 00011fb0: 69 6f 6e 4c 69 6b 65 44 65 63 6c 61 72 61 74 69 ionLikeDeclarati 00011fc0: 6f 6e 4b 69 6e 64 28 6e 6f 64 65 2e 6b 69 6e 64 onKind(node.kind 00011fd0: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 00011fe0: 69 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 44 65 isFunctionLikeDe 00011ff0: 63 6c 61 72 61 74 69 6f 6e 20 3d 20 69 73 46 75 claration = isFu 00012000: 6e 63 74 69 6f 6e 4c 69 6b 65 44 65 63 6c 61 72 nctionLikeDeclar 00012010: 61 74 69 6f 6e 3b 0a 20 20 20 20 2f 2a 20 40 69 ation;. /* @i 00012020: 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 nternal */. f 00012030: 75 6e 63 74 69 6f 6e 20 69 73 42 6f 6f 6c 65 61 unction isBoolea 00012040: 6e 4c 69 74 65 72 61 6c 28 6e 6f 64 65 29 20 7b nLiteral(node) { 00012050: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 00012060: 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 31 node.kind === 11 00012070: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 00012080: 54 72 75 65 4b 65 79 77 6f 72 64 20 2a 2f 20 7c TrueKeyword */ | 00012090: 7c 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 | node.kind === 000120a0: 39 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 95 /* SyntaxKind 000120b0: 2e 46 61 6c 73 65 4b 65 79 77 6f 72 64 20 2a 2f .FalseKeyword */ 000120c0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 000120d0: 73 42 6f 6f 6c 65 61 6e 4c 69 74 65 72 61 6c 20 sBooleanLiteral 000120e0: 3d 20 69 73 42 6f 6f 6c 65 61 6e 4c 69 74 65 72 = isBooleanLiter 000120f0: 61 6c 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e al;. function 00012100: 20 69 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 44 isFunctionLikeD 00012110: 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 28 6b eclarationKind(k 00012120: 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ind) {. s 00012130: 77 69 74 63 68 20 28 6b 69 6e 64 29 20 7b 0a 20 witch (kind) {. 00012140: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00012150: 32 35 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 256 /* SyntaxKin 00012160: 64 2e 46 75 6e 63 74 69 6f 6e 44 65 63 6c 61 72 d.FunctionDeclar 00012170: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 00012180: 20 20 20 20 20 20 63 61 73 65 20 31 36 39 20 2f case 169 / 00012190: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 74 * SyntaxKind.Met 000121a0: 68 6f 64 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a hodDeclaration * 000121b0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 000121c0: 61 73 65 20 31 37 31 20 2f 2a 20 53 79 6e 74 61 ase 171 /* Synta 000121d0: 78 4b 69 6e 64 2e 43 6f 6e 73 74 72 75 63 74 6f xKind.Constructo 000121e0: 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 r */:. 000121f0: 20 20 63 61 73 65 20 31 37 32 20 2f 2a 20 53 79 case 172 /* Sy 00012200: 6e 74 61 78 4b 69 6e 64 2e 47 65 74 41 63 63 65 ntaxKind.GetAcce 00012210: 73 73 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ssor */:. 00012220: 20 20 20 20 20 63 61 73 65 20 31 37 33 20 2f 2a case 173 /* 00012230: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 65 74 41 SyntaxKind.SetA 00012240: 63 63 65 73 73 6f 72 20 2a 2f 3a 0a 20 20 20 20 ccessor */:. 00012250: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 31 33 case 213 00012260: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 /* SyntaxKind.F 00012270: 75 6e 63 74 69 6f 6e 45 78 70 72 65 73 73 69 6f unctionExpressio 00012280: 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 n */:. 00012290: 20 20 63 61 73 65 20 32 31 34 20 2f 2a 20 53 79 case 214 /* Sy 000122a0: 6e 74 61 78 4b 69 6e 64 2e 41 72 72 6f 77 46 75 ntaxKind.ArrowFu 000122b0: 6e 63 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 nction */:. 000122c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 000122d0: 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 n true;. 000122e0: 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 default:. 000122f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00012300: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 urn false;. 00012310: 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 2f }. }. / 00012320: 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 * @internal */. 00012330: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 46 75 function isFu 00012340: 6e 63 74 69 6f 6e 4c 69 6b 65 4b 69 6e 64 28 6b nctionLikeKind(k 00012350: 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ind) {. s 00012360: 77 69 74 63 68 20 28 6b 69 6e 64 29 20 7b 0a 20 witch (kind) {. 00012370: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00012380: 31 36 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 168 /* SyntaxKin 00012390: 64 2e 4d 65 74 68 6f 64 53 69 67 6e 61 74 75 72 d.MethodSignatur 000123a0: 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 e */:. 000123b0: 20 20 63 61 73 65 20 31 37 34 20 2f 2a 20 53 79 case 174 /* Sy 000123c0: 6e 74 61 78 4b 69 6e 64 2e 43 61 6c 6c 53 69 67 ntaxKind.CallSig 000123d0: 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 20 nature */:. 000123e0: 20 20 20 20 20 20 20 63 61 73 65 20 33 32 33 20 case 323 000123f0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 /* SyntaxKind.JS 00012400: 44 6f 63 53 69 67 6e 61 74 75 72 65 20 2a 2f 3a DocSignature */: 00012410: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00012420: 65 20 31 37 35 20 2f 2a 20 53 79 6e 74 61 78 4b e 175 /* SyntaxK 00012430: 69 6e 64 2e 43 6f 6e 73 74 72 75 63 74 53 69 67 ind.ConstructSig 00012440: 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 20 nature */:. 00012450: 20 20 20 20 20 20 20 63 61 73 65 20 31 37 36 20 case 176 00012460: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6e /* SyntaxKind.In 00012470: 64 65 78 53 69 67 6e 61 74 75 72 65 20 2a 2f 3a dexSignature */: 00012480: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00012490: 65 20 31 37 39 20 2f 2a 20 53 79 6e 74 61 78 4b e 179 /* SyntaxK 000124a0: 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 54 79 70 65 ind.FunctionType 000124b0: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 000124c0: 20 63 61 73 65 20 33 31 37 20 2f 2a 20 53 79 6e case 317 /* Syn 000124d0: 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 46 75 6e taxKind.JSDocFun 000124e0: 63 74 69 6f 6e 54 79 70 65 20 2a 2f 3a 0a 20 20 ctionType */:. 000124f0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 00012500: 38 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 80 /* SyntaxKind 00012510: 2e 43 6f 6e 73 74 72 75 63 74 6f 72 54 79 70 65 .ConstructorType 00012520: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00012530: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 return true 00012540: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 ;. de 00012550: 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 fault:. 00012560: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 73 return is 00012570: 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 44 65 63 6c FunctionLikeDecl 00012580: 61 72 61 74 69 6f 6e 4b 69 6e 64 28 6b 69 6e 64 arationKind(kind 00012590: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 );. }. 000125a0: 20 7d 0a 20 20 20 20 74 73 2e 69 73 46 75 6e 63 }. ts.isFunc 000125b0: 74 69 6f 6e 4c 69 6b 65 4b 69 6e 64 20 3d 20 69 tionLikeKind = i 000125c0: 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 4b 69 6e sFunctionLikeKin 000125d0: 64 3b 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 d;. /* @inter 000125e0: 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 nal */. funct 000125f0: 69 6f 6e 20 69 73 46 75 6e 63 74 69 6f 6e 4f 72 ion isFunctionOr 00012600: 4d 6f 64 75 6c 65 42 6c 6f 63 6b 28 6e 6f 64 65 ModuleBlock(node 00012610: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 00012620: 72 6e 20 74 73 2e 69 73 53 6f 75 72 63 65 46 69 rn ts.isSourceFi 00012630: 6c 65 28 6e 6f 64 65 29 20 7c 7c 20 74 73 2e 69 le(node) || ts.i 00012640: 73 4d 6f 64 75 6c 65 42 6c 6f 63 6b 28 6e 6f 64 sModuleBlock(nod 00012650: 65 29 20 7c 7c 20 74 73 2e 69 73 42 6c 6f 63 6b e) || ts.isBlock 00012660: 28 6e 6f 64 65 29 20 26 26 20 69 73 46 75 6e 63 (node) && isFunc 00012670: 74 69 6f 6e 4c 69 6b 65 28 6e 6f 64 65 2e 70 61 tionLike(node.pa 00012680: 72 65 6e 74 29 3b 0a 20 20 20 20 7d 0a 20 20 20 rent);. }. 00012690: 20 74 73 2e 69 73 46 75 6e 63 74 69 6f 6e 4f 72 ts.isFunctionOr 000126a0: 4d 6f 64 75 6c 65 42 6c 6f 63 6b 20 3d 20 69 73 ModuleBlock = is 000126b0: 46 75 6e 63 74 69 6f 6e 4f 72 4d 6f 64 75 6c 65 FunctionOrModule 000126c0: 42 6c 6f 63 6b 3b 0a 20 20 20 20 2f 2f 20 43 6c Block;. // Cl 000126d0: 61 73 73 65 73 0a 20 20 20 20 66 75 6e 63 74 69 asses. functi 000126e0: 6f 6e 20 69 73 43 6c 61 73 73 45 6c 65 6d 65 6e on isClassElemen 000126f0: 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 t(node) {. 00012700: 20 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 var kind = nod 00012710: 65 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 20 e.kind;. 00012720: 72 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 return kind === 00012730: 31 37 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 171 /* SyntaxKin 00012740: 64 2e 43 6f 6e 73 74 72 75 63 74 6f 72 20 2a 2f d.Constructor */ 00012750: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 . || 00012760: 6b 69 6e 64 20 3d 3d 3d 20 31 36 37 20 2f 2a 20 kind === 167 /* 00012770: 53 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 SyntaxKind.Prope 00012780: 72 74 79 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a rtyDeclaration * 00012790: 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c /. || 000127a0: 20 6b 69 6e 64 20 3d 3d 3d 20 31 36 39 20 2f 2a kind === 169 /* 000127b0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 74 68 SyntaxKind.Meth 000127c0: 6f 64 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f odDeclaration */ 000127d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 . || 000127e0: 6b 69 6e 64 20 3d 3d 3d 20 31 37 32 20 2f 2a 20 kind === 172 /* 000127f0: 53 79 6e 74 61 78 4b 69 6e 64 2e 47 65 74 41 63 SyntaxKind.GetAc 00012800: 63 65 73 73 6f 72 20 2a 2f 0a 20 20 20 20 20 20 cessor */. 00012810: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 00012820: 3d 20 31 37 33 20 2f 2a 20 53 79 6e 74 61 78 4b = 173 /* SyntaxK 00012830: 69 6e 64 2e 53 65 74 41 63 63 65 73 73 6f 72 20 ind.SetAccessor 00012840: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 00012850: 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 37 36 20 2f | kind === 176 / 00012860: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6e 64 * SyntaxKind.Ind 00012870: 65 78 53 69 67 6e 61 74 75 72 65 20 2a 2f 0a 20 exSignature */. 00012880: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 00012890: 6e 64 20 3d 3d 3d 20 31 37 30 20 2f 2a 20 53 79 nd === 170 /* Sy 000128a0: 6e 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 53 74 ntaxKind.ClassSt 000128b0: 61 74 69 63 42 6c 6f 63 6b 44 65 63 6c 61 72 61 aticBlockDeclara 000128c0: 74 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 tion */. 000128d0: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 000128e0: 32 33 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 234 /* SyntaxKin 000128f0: 64 2e 53 65 6d 69 63 6f 6c 6f 6e 43 6c 61 73 73 d.SemicolonClass 00012900: 45 6c 65 6d 65 6e 74 20 2a 2f 3b 0a 20 20 20 20 Element */;. 00012910: 7d 0a 20 20 20 20 74 73 2e 69 73 43 6c 61 73 73 }. ts.isClass 00012920: 45 6c 65 6d 65 6e 74 20 3d 20 69 73 43 6c 61 73 Element = isClas 00012930: 73 45 6c 65 6d 65 6e 74 3b 0a 20 20 20 20 66 75 sElement;. fu 00012940: 6e 63 74 69 6f 6e 20 69 73 43 6c 61 73 73 4c 69 nction isClassLi 00012950: 6b 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 ke(node) {. 00012960: 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 20 26 return node & 00012970: 26 20 28 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d & (node.kind === 00012980: 20 32 35 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 257 /* SyntaxKi 00012990: 6e 64 2e 43 6c 61 73 73 44 65 63 6c 61 72 61 74 nd.ClassDeclarat 000129a0: 69 6f 6e 20 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 6b ion */ || node.k 000129b0: 69 6e 64 20 3d 3d 3d 20 32 32 36 20 2f 2a 20 53 ind === 226 /* S 000129c0: 79 6e 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 45 yntaxKind.ClassE 000129d0: 78 70 72 65 73 73 69 6f 6e 20 2a 2f 29 3b 0a 20 xpression */);. 000129e0: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 43 6c }. ts.isCl 000129f0: 61 73 73 4c 69 6b 65 20 3d 20 69 73 43 6c 61 73 assLike = isClas 00012a00: 73 4c 69 6b 65 3b 0a 20 20 20 20 66 75 6e 63 74 sLike;. funct 00012a10: 69 6f 6e 20 69 73 41 63 63 65 73 73 6f 72 28 6e ion isAccessor(n 00012a20: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 00012a30: 65 74 75 72 6e 20 6e 6f 64 65 20 26 26 20 28 6e eturn node && (n 00012a40: 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 37 32 ode.kind === 172 00012a50: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 47 /* SyntaxKind.G 00012a60: 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 20 7c 7c etAccessor */ || 00012a70: 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 node.kind === 1 00012a80: 37 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 73 /* SyntaxKind 00012a90: 2e 53 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 29 .SetAccessor */) 00012aa0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 00012ab0: 73 41 63 63 65 73 73 6f 72 20 3d 20 69 73 41 63 sAccessor = isAc 00012ac0: 63 65 73 73 6f 72 3b 0a 20 20 20 20 2f 2a 20 40 cessor;. /* @ 00012ad0: 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 internal */. 00012ae0: 66 75 6e 63 74 69 6f 6e 20 69 73 4d 65 74 68 6f function isMetho 00012af0: 64 4f 72 41 63 63 65 73 73 6f 72 28 6e 6f 64 65 dOrAccessor(node 00012b00: 29 20 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 ) {. swit 00012b10: 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 7b ch (node.kind) { 00012b20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00012b30: 65 20 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 4b e 169 /* SyntaxK 00012b40: 69 6e 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 72 ind.MethodDeclar 00012b50: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 00012b60: 20 20 20 20 20 20 63 61 73 65 20 31 37 32 20 2f case 172 / 00012b70: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 47 65 74 * SyntaxKind.Get 00012b80: 41 63 63 65 73 73 6f 72 20 2a 2f 3a 0a 20 20 20 Accessor */:. 00012b90: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 case 17 00012ba0: 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 3 /* SyntaxKind. 00012bb0: 53 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 3a 0a SetAccessor */:. 00012bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00012bd0: 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 return true;. 00012be0: 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 default 00012bf0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 00012c00: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a return false;. 00012c10: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a }. }. 00012c20: 20 20 20 20 74 73 2e 69 73 4d 65 74 68 6f 64 4f ts.isMethodO 00012c30: 72 41 63 63 65 73 73 6f 72 20 3d 20 69 73 4d 65 rAccessor = isMe 00012c40: 74 68 6f 64 4f 72 41 63 63 65 73 73 6f 72 3b 0a thodOrAccessor;. 00012c50: 20 20 20 20 2f 2f 20 54 79 70 65 20 6d 65 6d 62 // Type memb 00012c60: 65 72 73 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ers. function 00012c70: 20 69 73 4d 6f 64 69 66 69 65 72 4c 69 6b 65 28 isModifierLike( 00012c80: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 00012c90: 72 65 74 75 72 6e 20 69 73 4d 6f 64 69 66 69 65 return isModifie 00012ca0: 72 28 6e 6f 64 65 29 20 7c 7c 20 74 73 2e 69 73 r(node) || ts.is 00012cb0: 44 65 63 6f 72 61 74 6f 72 28 6e 6f 64 65 29 3b Decorator(node); 00012cc0: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00012cd0: 4d 6f 64 69 66 69 65 72 4c 69 6b 65 20 3d 20 69 ModifierLike = i 00012ce0: 73 4d 6f 64 69 66 69 65 72 4c 69 6b 65 3b 0a 20 sModifierLike;. 00012cf0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 54 79 function isTy 00012d00: 70 65 45 6c 65 6d 65 6e 74 28 6e 6f 64 65 29 20 peElement(node) 00012d10: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6b 69 {. var ki 00012d20: 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 3b 0a nd = node.kind;. 00012d30: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b return k 00012d40: 69 6e 64 20 3d 3d 3d 20 31 37 35 20 2f 2a 20 53 ind === 175 /* S 00012d50: 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 72 yntaxKind.Constr 00012d60: 75 63 74 53 69 67 6e 61 74 75 72 65 20 2a 2f 0a uctSignature */. 00012d70: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 00012d80: 69 6e 64 20 3d 3d 3d 20 31 37 34 20 2f 2a 20 53 ind === 174 /* S 00012d90: 79 6e 74 61 78 4b 69 6e 64 2e 43 61 6c 6c 53 69 yntaxKind.CallSi 00012da0: 67 6e 61 74 75 72 65 20 2a 2f 0a 20 20 20 20 20 gnature */. 00012db0: 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d || kind = 00012dc0: 3d 3d 20 31 36 36 20 2f 2a 20 53 79 6e 74 61 78 == 166 /* Syntax 00012dd0: 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 53 69 67 Kind.PropertySig 00012de0: 6e 61 74 75 72 65 20 2a 2f 0a 20 20 20 20 20 20 nature */. 00012df0: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 00012e00: 3d 20 31 36 38 20 2f 2a 20 53 79 6e 74 61 78 4b = 168 /* SyntaxK 00012e10: 69 6e 64 2e 4d 65 74 68 6f 64 53 69 67 6e 61 74 ind.MethodSignat 00012e20: 75 72 65 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 ure */. 00012e30: 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 || kind === 1 00012e40: 37 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 76 /* SyntaxKind 00012e50: 2e 49 6e 64 65 78 53 69 67 6e 61 74 75 72 65 20 .IndexSignature 00012e60: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 00012e70: 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 37 32 20 2f | kind === 172 / 00012e80: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 47 65 74 * SyntaxKind.Get 00012e90: 41 63 63 65 73 73 6f 72 20 2a 2f 0a 20 20 20 20 Accessor */. 00012ea0: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 00012eb0: 3d 3d 3d 20 31 37 33 20 2f 2a 20 53 79 6e 74 61 === 173 /* Synta 00012ec0: 78 4b 69 6e 64 2e 53 65 74 41 63 63 65 73 73 6f xKind.SetAccesso 00012ed0: 72 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 r */;. }. 00012ee0: 74 73 2e 69 73 54 79 70 65 45 6c 65 6d 65 6e 74 ts.isTypeElement 00012ef0: 20 3d 20 69 73 54 79 70 65 45 6c 65 6d 65 6e 74 = isTypeElement 00012f00: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 00012f10: 73 43 6c 61 73 73 4f 72 54 79 70 65 45 6c 65 6d sClassOrTypeElem 00012f20: 65 6e 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ent(node) {. 00012f30: 20 20 20 20 72 65 74 75 72 6e 20 69 73 54 79 70 return isTyp 00012f40: 65 45 6c 65 6d 65 6e 74 28 6e 6f 64 65 29 20 7c eElement(node) | 00012f50: 7c 20 69 73 43 6c 61 73 73 45 6c 65 6d 65 6e 74 | isClassElement 00012f60: 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d 0a 20 20 (node);. }. 00012f70: 20 20 74 73 2e 69 73 43 6c 61 73 73 4f 72 54 79 ts.isClassOrTy 00012f80: 70 65 45 6c 65 6d 65 6e 74 20 3d 20 69 73 43 6c peElement = isCl 00012f90: 61 73 73 4f 72 54 79 70 65 45 6c 65 6d 65 6e 74 assOrTypeElement 00012fa0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 00012fb0: 73 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 45 6c sObjectLiteralEl 00012fc0: 65 6d 65 6e 74 4c 69 6b 65 28 6e 6f 64 65 29 20 ementLike(node) 00012fd0: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6b 69 {. var ki 00012fe0: 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 3b 0a nd = node.kind;. 00012ff0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b return k 00013000: 69 6e 64 20 3d 3d 3d 20 32 39 36 20 2f 2a 20 53 ind === 296 /* S 00013010: 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 yntaxKind.Proper 00013020: 74 79 41 73 73 69 67 6e 6d 65 6e 74 20 2a 2f 0a tyAssignment */. 00013030: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 00013040: 69 6e 64 20 3d 3d 3d 20 32 39 37 20 2f 2a 20 53 ind === 297 /* S 00013050: 79 6e 74 61 78 4b 69 6e 64 2e 53 68 6f 72 74 68 yntaxKind.Shorth 00013060: 61 6e 64 50 72 6f 70 65 72 74 79 41 73 73 69 67 andPropertyAssig 00013070: 6e 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 20 nment */. 00013080: 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d || kind === 00013090: 20 32 39 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 298 /* SyntaxKi 000130a0: 6e 64 2e 53 70 72 65 61 64 41 73 73 69 67 6e 6d nd.SpreadAssignm 000130b0: 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 ent */. 000130c0: 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 || kind === 1 000130d0: 36 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 69 /* SyntaxKind 000130e0: 2e 4d 65 74 68 6f 64 44 65 63 6c 61 72 61 74 69 .MethodDeclarati 000130f0: 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 on */. 00013100: 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 37 || kind === 17 00013110: 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 2 /* SyntaxKind. 00013120: 47 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 0a 20 GetAccessor */. 00013130: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 00013140: 6e 64 20 3d 3d 3d 20 31 37 33 20 2f 2a 20 53 79 nd === 173 /* Sy 00013150: 6e 74 61 78 4b 69 6e 64 2e 53 65 74 41 63 63 65 ntaxKind.SetAcce 00013160: 73 73 6f 72 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 ssor */;. }. 00013170: 20 20 20 74 73 2e 69 73 4f 62 6a 65 63 74 4c 69 ts.isObjectLi 00013180: 74 65 72 61 6c 45 6c 65 6d 65 6e 74 4c 69 6b 65 teralElementLike 00013190: 20 3d 20 69 73 4f 62 6a 65 63 74 4c 69 74 65 72 = isObjectLiter 000131a0: 61 6c 45 6c 65 6d 65 6e 74 4c 69 6b 65 3b 0a 20 alElementLike;. 000131b0: 20 20 20 2f 2f 20 54 79 70 65 0a 20 20 20 20 2f // Type. / 000131c0: 2a 2a 0a 20 20 20 20 20 2a 20 4e 6f 64 65 20 74 **. * Node t 000131d0: 65 73 74 20 74 68 61 74 20 64 65 74 65 72 6d 69 est that determi 000131e0: 6e 65 73 20 77 68 65 74 68 65 72 20 61 20 6e 6f nes whether a no 000131f0: 64 65 20 69 73 20 61 20 76 61 6c 69 64 20 74 79 de is a valid ty 00013200: 70 65 20 6e 6f 64 65 2e 0a 20 20 20 20 20 2a 20 pe node.. * 00013210: 54 68 69 73 20 64 69 66 66 65 72 73 20 66 72 6f This differs fro 00013220: 6d 20 74 68 65 20 60 69 73 50 61 72 74 4f 66 54 m the `isPartOfT 00013230: 79 70 65 4e 6f 64 65 60 20 66 75 6e 63 74 69 6f ypeNode` functio 00013240: 6e 20 77 68 69 63 68 20 64 65 74 65 72 6d 69 6e n which determin 00013250: 65 73 20 77 68 65 74 68 65 72 20 61 20 6e 6f 64 es whether a nod 00013260: 65 20 69 73 20 2a 70 61 72 74 2a 0a 20 20 20 20 e is *part*. 00013270: 20 2a 20 6f 66 20 61 20 54 79 70 65 4e 6f 64 65 * of a TypeNode 00013280: 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 .. */. fu 00013290: 6e 63 74 69 6f 6e 20 69 73 54 79 70 65 4e 6f 64 nction isTypeNod 000132a0: 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 e(node) {. 000132b0: 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 54 79 return ts.isTy 000132c0: 70 65 4e 6f 64 65 4b 69 6e 64 28 6e 6f 64 65 2e peNodeKind(node. 000132d0: 6b 69 6e 64 29 3b 0a 20 20 20 20 7d 0a 20 20 20 kind);. }. 000132e0: 20 74 73 2e 69 73 54 79 70 65 4e 6f 64 65 20 3d ts.isTypeNode = 000132f0: 20 69 73 54 79 70 65 4e 6f 64 65 3b 0a 20 20 20 isTypeNode;. 00013300: 20 66 75 6e 63 74 69 6f 6e 20 69 73 46 75 6e 63 function isFunc 00013310: 74 69 6f 6e 4f 72 43 6f 6e 73 74 72 75 63 74 6f tionOrConstructo 00013320: 72 54 79 70 65 4e 6f 64 65 28 6e 6f 64 65 29 20 rTypeNode(node) 00013330: 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 {. switch 00013340: 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 7b 0a 20 (node.kind) {. 00013350: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00013360: 31 37 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 179 /* SyntaxKin 00013370: 64 2e 46 75 6e 63 74 69 6f 6e 54 79 70 65 20 2a d.FunctionType * 00013380: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00013390: 61 73 65 20 31 38 30 20 2f 2a 20 53 79 6e 74 61 ase 180 /* Synta 000133a0: 78 4b 69 6e 64 2e 43 6f 6e 73 74 72 75 63 74 6f xKind.Constructo 000133b0: 72 54 79 70 65 20 2a 2f 3a 0a 20 20 20 20 20 20 rType */:. 000133c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 000133d0: 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d true;. } 000133e0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 000133f0: 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 20 20 false;. }. 00013400: 20 74 73 2e 69 73 46 75 6e 63 74 69 6f 6e 4f 72 ts.isFunctionOr 00013410: 43 6f 6e 73 74 72 75 63 74 6f 72 54 79 70 65 4e ConstructorTypeN 00013420: 6f 64 65 20 3d 20 69 73 46 75 6e 63 74 69 6f 6e ode = isFunction 00013430: 4f 72 43 6f 6e 73 74 72 75 63 74 6f 72 54 79 70 OrConstructorTyp 00013440: 65 4e 6f 64 65 3b 0a 20 20 20 20 2f 2f 20 42 69 eNode;. // Bi 00013450: 6e 64 69 6e 67 20 70 61 74 74 65 72 6e 73 0a 20 nding patterns. 00013460: 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 /* @internal 00013470: 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 */. function 00013480: 69 73 42 69 6e 64 69 6e 67 50 61 74 74 65 72 6e isBindingPattern 00013490: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 000134a0: 20 69 66 20 28 6e 6f 64 65 29 20 7b 0a 20 20 20 if (node) {. 000134b0: 20 20 20 20 20 20 20 20 20 76 61 72 20 6b 69 6e var kin 000134c0: 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 3b 0a 20 d = node.kind;. 000134d0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 000134e0: 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 30 32 20 2f n kind === 202 / 000134f0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 72 72 * SyntaxKind.Arr 00013500: 61 79 42 69 6e 64 69 6e 67 50 61 74 74 65 72 6e ayBindingPattern 00013510: 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 */. 00013520: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 00013530: 32 30 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 201 /* SyntaxKin 00013540: 64 2e 4f 62 6a 65 63 74 42 69 6e 64 69 6e 67 50 d.ObjectBindingP 00013550: 61 74 74 65 72 6e 20 2a 2f 3b 0a 20 20 20 20 20 attern */;. 00013560: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 }. ret 00013570: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d urn false;. } 00013580: 0a 20 20 20 20 74 73 2e 69 73 42 69 6e 64 69 6e . ts.isBindin 00013590: 67 50 61 74 74 65 72 6e 20 3d 20 69 73 42 69 6e gPattern = isBin 000135a0: 64 69 6e 67 50 61 74 74 65 72 6e 3b 0a 20 20 20 dingPattern;. 000135b0: 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f /* @internal */ 000135c0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 . function is 000135d0: 41 73 73 69 67 6e 6d 65 6e 74 50 61 74 74 65 72 AssignmentPatter 000135e0: 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 n(node) {. 000135f0: 20 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 var kind = nod 00013600: 65 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 20 e.kind;. 00013610: 72 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 return kind === 00013620: 32 30 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 204 /* SyntaxKin 00013630: 64 2e 41 72 72 61 79 4c 69 74 65 72 61 6c 45 78 d.ArrayLiteralEx 00013640: 70 72 65 73 73 69 6f 6e 20 2a 2f 0a 20 20 20 20 pression */. 00013650: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 00013660: 3d 3d 3d 20 32 30 35 20 2f 2a 20 53 79 6e 74 61 === 205 /* Synta 00013670: 78 4b 69 6e 64 2e 4f 62 6a 65 63 74 4c 69 74 65 xKind.ObjectLite 00013680: 72 61 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f ralExpression */ 00013690: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 000136a0: 73 41 73 73 69 67 6e 6d 65 6e 74 50 61 74 74 65 sAssignmentPatte 000136b0: 72 6e 20 3d 20 69 73 41 73 73 69 67 6e 6d 65 6e rn = isAssignmen 000136c0: 74 50 61 74 74 65 72 6e 3b 0a 20 20 20 20 2f 2a tPattern;. /* 000136d0: 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 @internal */. 000136e0: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 41 72 72 function isArr 000136f0: 61 79 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 ayBindingElement 00013700: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 00013710: 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 var kind = node 00013720: 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 20 72 .kind;. r 00013730: 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 eturn kind === 2 00013740: 30 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 03 /* SyntaxKind 00013750: 2e 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 20 .BindingElement 00013760: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 00013770: 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 32 37 20 2f | kind === 227 / 00013780: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4f 6d 69 * SyntaxKind.Omi 00013790: 74 74 65 64 45 78 70 72 65 73 73 69 6f 6e 20 2a ttedExpression * 000137a0: 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e /;. }. ts. 000137b0: 69 73 41 72 72 61 79 42 69 6e 64 69 6e 67 45 6c isArrayBindingEl 000137c0: 65 6d 65 6e 74 20 3d 20 69 73 41 72 72 61 79 42 ement = isArrayB 000137d0: 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 3b 0a 20 indingElement;. 000137e0: 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 44 65 /**. * De 000137f0: 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65 72 termines whether 00013800: 20 74 68 65 20 42 69 6e 64 69 6e 67 4f 72 41 73 the BindingOrAs 00013810: 73 69 67 6e 6d 65 6e 74 45 6c 65 6d 65 6e 74 20 signmentElement 00013820: 69 73 20 61 20 42 69 6e 64 69 6e 67 45 6c 65 6d is a BindingElem 00013830: 65 6e 74 2d 6c 69 6b 65 20 64 65 63 6c 61 72 61 ent-like declara 00013840: 74 69 6f 6e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 tion. */. 00013850: 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f /* @internal */ 00013860: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 . function is 00013870: 44 65 63 6c 61 72 61 74 69 6f 6e 42 69 6e 64 69 DeclarationBindi 00013880: 6e 67 45 6c 65 6d 65 6e 74 28 62 69 6e 64 69 6e ngElement(bindin 00013890: 67 45 6c 65 6d 65 6e 74 29 20 7b 0a 20 20 20 20 gElement) {. 000138a0: 20 20 20 20 73 77 69 74 63 68 20 28 62 69 6e 64 switch (bind 000138b0: 69 6e 67 45 6c 65 6d 65 6e 74 2e 6b 69 6e 64 29 ingElement.kind) 000138c0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 {. c 000138d0: 61 73 65 20 32 35 34 20 2f 2a 20 53 79 6e 74 61 ase 254 /* Synta 000138e0: 78 4b 69 6e 64 2e 56 61 72 69 61 62 6c 65 44 65 xKind.VariableDe 000138f0: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 00013900: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 00013910: 36 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 64 /* SyntaxKind 00013920: 2e 50 61 72 61 6d 65 74 65 72 20 2a 2f 3a 0a 20 .Parameter */:. 00013930: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00013940: 32 30 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 203 /* SyntaxKin 00013950: 64 2e 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 d.BindingElement 00013960: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00013970: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 return true 00013980: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 00013990: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 return false 000139a0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 000139b0: 73 44 65 63 6c 61 72 61 74 69 6f 6e 42 69 6e 64 sDeclarationBind 000139c0: 69 6e 67 45 6c 65 6d 65 6e 74 20 3d 20 69 73 44 ingElement = isD 000139d0: 65 63 6c 61 72 61 74 69 6f 6e 42 69 6e 64 69 6e eclarationBindin 000139e0: 67 45 6c 65 6d 65 6e 74 3b 0a 20 20 20 20 2f 2a gElement;. /* 000139f0: 2a 0a 20 20 20 20 20 2a 20 44 65 74 65 72 6d 69 *. * Determi 00013a00: 6e 65 73 20 77 68 65 74 68 65 72 20 61 20 6e 6f nes whether a no 00013a10: 64 65 20 69 73 20 61 20 42 69 6e 64 69 6e 67 4f de is a BindingO 00013a20: 72 41 73 73 69 67 6e 6d 65 6e 74 50 61 74 74 65 rAssignmentPatte 00013a30: 72 6e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 2f rn. */. / 00013a40: 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 * @internal */. 00013a50: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 42 69 function isBi 00013a60: 6e 64 69 6e 67 4f 72 41 73 73 69 67 6e 6d 65 6e ndingOrAssignmen 00013a70: 74 50 61 74 74 65 72 6e 28 6e 6f 64 65 29 20 7b tPattern(node) { 00013a80: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 00013a90: 69 73 4f 62 6a 65 63 74 42 69 6e 64 69 6e 67 4f isObjectBindingO 00013aa0: 72 41 73 73 69 67 6e 6d 65 6e 74 50 61 74 74 65 rAssignmentPatte 00013ab0: 72 6e 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 rn(node). 00013ac0: 20 20 20 20 20 7c 7c 20 69 73 41 72 72 61 79 42 || isArrayB 00013ad0: 69 6e 64 69 6e 67 4f 72 41 73 73 69 67 6e 6d 65 indingOrAssignme 00013ae0: 6e 74 50 61 74 74 65 72 6e 28 6e 6f 64 65 29 3b ntPattern(node); 00013af0: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00013b00: 42 69 6e 64 69 6e 67 4f 72 41 73 73 69 67 6e 6d BindingOrAssignm 00013b10: 65 6e 74 50 61 74 74 65 72 6e 20 3d 20 69 73 42 entPattern = isB 00013b20: 69 6e 64 69 6e 67 4f 72 41 73 73 69 67 6e 6d 65 indingOrAssignme 00013b30: 6e 74 50 61 74 74 65 72 6e 3b 0a 20 20 20 20 2f ntPattern;. / 00013b40: 2a 2a 0a 20 20 20 20 20 2a 20 44 65 74 65 72 6d **. * Determ 00013b50: 69 6e 65 73 20 77 68 65 74 68 65 72 20 61 20 6e ines whether a n 00013b60: 6f 64 65 20 69 73 20 61 6e 20 4f 62 6a 65 63 74 ode is an Object 00013b70: 42 69 6e 64 69 6e 67 4f 72 41 73 73 69 67 6e 6d BindingOrAssignm 00013b80: 65 6e 74 50 61 74 74 65 72 6e 0a 20 20 20 20 20 entPattern. 00013b90: 2a 2f 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 */. /* @inter 00013ba0: 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 nal */. funct 00013bb0: 69 6f 6e 20 69 73 4f 62 6a 65 63 74 42 69 6e 64 ion isObjectBind 00013bc0: 69 6e 67 4f 72 41 73 73 69 67 6e 6d 65 6e 74 50 ingOrAssignmentP 00013bd0: 61 74 74 65 72 6e 28 6e 6f 64 65 29 20 7b 0a 20 attern(node) {. 00013be0: 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 6e switch (n 00013bf0: 6f 64 65 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 ode.kind) {. 00013c00: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 31 case 201 00013c10: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4f /* SyntaxKind.O 00013c20: 62 6a 65 63 74 42 69 6e 64 69 6e 67 50 61 74 74 bjectBindingPatt 00013c30: 65 72 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ern */:. 00013c40: 20 20 20 20 63 61 73 65 20 32 30 35 20 2f 2a 20 case 205 /* 00013c50: 53 79 6e 74 61 78 4b 69 6e 64 2e 4f 62 6a 65 63 SyntaxKind.Objec 00013c60: 74 4c 69 74 65 72 61 6c 45 78 70 72 65 73 73 69 tLiteralExpressi 00013c70: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 00013c80: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 return tr 00013c90: 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 ue;. }. 00013ca0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c return fal 00013cb0: 73 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 se;. }. ts 00013cc0: 2e 69 73 4f 62 6a 65 63 74 42 69 6e 64 69 6e 67 .isObjectBinding 00013cd0: 4f 72 41 73 73 69 67 6e 6d 65 6e 74 50 61 74 74 OrAssignmentPatt 00013ce0: 65 72 6e 20 3d 20 69 73 4f 62 6a 65 63 74 42 69 ern = isObjectBi 00013cf0: 6e 64 69 6e 67 4f 72 41 73 73 69 67 6e 6d 65 6e ndingOrAssignmen 00013d00: 74 50 61 74 74 65 72 6e 3b 0a 20 20 20 20 2f 2a tPattern;. /* 00013d10: 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 @internal */. 00013d20: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4f 62 6a function isObj 00013d30: 65 63 74 42 69 6e 64 69 6e 67 4f 72 41 73 73 69 ectBindingOrAssi 00013d40: 67 6e 6d 65 6e 74 45 6c 65 6d 65 6e 74 28 6e 6f gnmentElement(no 00013d50: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 73 77 de) {. sw 00013d60: 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 itch (node.kind) 00013d70: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 {. c 00013d80: 61 73 65 20 32 30 33 20 2f 2a 20 53 79 6e 74 61 ase 203 /* Synta 00013d90: 78 4b 69 6e 64 2e 42 69 6e 64 69 6e 67 45 6c 65 xKind.BindingEle 00013da0: 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ment */:. 00013db0: 20 20 20 20 20 63 61 73 65 20 32 39 36 20 2f 2a case 296 /* 00013dc0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 SyntaxKind.Prop 00013dd0: 65 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 20 2a ertyAssignment * 00013de0: 2f 3a 20 2f 2f 20 41 73 73 69 67 6e 6d 65 6e 74 /: // Assignment 00013df0: 50 72 6f 70 65 72 74 79 0a 20 20 20 20 20 20 20 Property. 00013e00: 20 20 20 20 20 63 61 73 65 20 32 39 37 20 2f 2a case 297 /* 00013e10: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 68 6f 72 SyntaxKind.Shor 00013e20: 74 68 61 6e 64 50 72 6f 70 65 72 74 79 41 73 73 thandPropertyAss 00013e30: 69 67 6e 6d 65 6e 74 20 2a 2f 3a 20 2f 2f 20 41 ignment */: // A 00013e40: 73 73 69 67 6e 6d 65 6e 74 50 72 6f 70 65 72 74 ssignmentPropert 00013e50: 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 y. ca 00013e60: 73 65 20 32 39 38 20 2f 2a 20 53 79 6e 74 61 78 se 298 /* Syntax 00013e70: 4b 69 6e 64 2e 53 70 72 65 61 64 41 73 73 69 67 Kind.SpreadAssig 00013e80: 6e 6d 65 6e 74 20 2a 2f 3a 20 2f 2f 20 41 73 73 nment */: // Ass 00013e90: 69 67 6e 6d 65 6e 74 52 65 73 74 50 72 6f 70 65 ignmentRestPrope 00013ea0: 72 74 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 rty. 00013eb0: 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b return true; 00013ec0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }. 00013ed0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b return false; 00013ee0: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00013ef0: 4f 62 6a 65 63 74 42 69 6e 64 69 6e 67 4f 72 41 ObjectBindingOrA 00013f00: 73 73 69 67 6e 6d 65 6e 74 45 6c 65 6d 65 6e 74 ssignmentElement 00013f10: 20 3d 20 69 73 4f 62 6a 65 63 74 42 69 6e 64 69 = isObjectBindi 00013f20: 6e 67 4f 72 41 73 73 69 67 6e 6d 65 6e 74 45 6c ngOrAssignmentEl 00013f30: 65 6d 65 6e 74 3b 0a 20 20 20 20 2f 2a 2a 0a 20 ement;. /**. 00013f40: 20 20 20 20 2a 20 44 65 74 65 72 6d 69 6e 65 73 * Determines 00013f50: 20 77 68 65 74 68 65 72 20 61 20 6e 6f 64 65 20 whether a node 00013f60: 69 73 20 61 6e 20 41 72 72 61 79 42 69 6e 64 69 is an ArrayBindi 00013f70: 6e 67 4f 72 41 73 73 69 67 6e 6d 65 6e 74 50 61 ngOrAssignmentPa 00013f80: 74 74 65 72 6e 0a 20 20 20 20 20 2a 2f 0a 20 20 ttern. */. 00013f90: 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a /* @internal * 00013fa0: 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 /. function i 00013fb0: 73 41 72 72 61 79 42 69 6e 64 69 6e 67 4f 72 41 sArrayBindingOrA 00013fc0: 73 73 69 67 6e 6d 65 6e 74 50 61 74 74 65 72 6e ssignmentPattern 00013fd0: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 00013fe0: 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 switch (node.ki 00013ff0: 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 nd) {. 00014000: 20 20 63 61 73 65 20 32 30 32 20 2f 2a 20 53 79 case 202 /* Sy 00014010: 6e 74 61 78 4b 69 6e 64 2e 41 72 72 61 79 42 69 ntaxKind.ArrayBi 00014020: 6e 64 69 6e 67 50 61 74 74 65 72 6e 20 2a 2f 3a ndingPattern */: 00014030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00014040: 65 20 32 30 34 20 2f 2a 20 53 79 6e 74 61 78 4b e 204 /* SyntaxK 00014050: 69 6e 64 2e 41 72 72 61 79 4c 69 74 65 72 61 6c ind.ArrayLiteral 00014060: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 00014070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 00014080: 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 eturn true;. 00014090: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 }. re 000140a0: 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 turn false;. 000140b0: 7d 0a 20 20 20 20 74 73 2e 69 73 41 72 72 61 79 }. ts.isArray 000140c0: 42 69 6e 64 69 6e 67 4f 72 41 73 73 69 67 6e 6d BindingOrAssignm 000140d0: 65 6e 74 50 61 74 74 65 72 6e 20 3d 20 69 73 41 entPattern = isA 000140e0: 72 72 61 79 42 69 6e 64 69 6e 67 4f 72 41 73 73 rrayBindingOrAss 000140f0: 69 67 6e 6d 65 6e 74 50 61 74 74 65 72 6e 3b 0a ignmentPattern;. 00014100: 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c /* @internal 00014110: 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e */. function 00014120: 20 69 73 50 72 6f 70 65 72 74 79 41 63 63 65 73 isPropertyAcces 00014130: 73 4f 72 51 75 61 6c 69 66 69 65 64 4e 61 6d 65 sOrQualifiedName 00014140: 4f 72 49 6d 70 6f 72 74 54 79 70 65 4e 6f 64 65 OrImportTypeNode 00014150: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 00014160: 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 var kind = node 00014170: 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 20 72 .kind;. r 00014180: 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 eturn kind === 2 00014190: 30 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 06 /* SyntaxKind 000141a0: 2e 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 45 .PropertyAccessE 000141b0: 78 70 72 65 73 73 69 6f 6e 20 2a 2f 0a 20 20 20 xpression */. 000141c0: 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 || kind 000141d0: 20 3d 3d 3d 20 31 36 31 20 2f 2a 20 53 79 6e 74 === 161 /* Synt 000141e0: 61 78 4b 69 6e 64 2e 51 75 61 6c 69 66 69 65 64 axKind.Qualified 000141f0: 4e 61 6d 65 20 2a 2f 0a 20 20 20 20 20 20 20 20 Name */. 00014200: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 00014210: 32 30 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 200 /* SyntaxKin 00014220: 64 2e 49 6d 70 6f 72 74 54 79 70 65 20 2a 2f 3b d.ImportType */; 00014230: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00014240: 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 4f 72 PropertyAccessOr 00014250: 51 75 61 6c 69 66 69 65 64 4e 61 6d 65 4f 72 49 QualifiedNameOrI 00014260: 6d 70 6f 72 74 54 79 70 65 4e 6f 64 65 20 3d 20 mportTypeNode = 00014270: 69 73 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 isPropertyAccess 00014280: 4f 72 51 75 61 6c 69 66 69 65 64 4e 61 6d 65 4f OrQualifiedNameO 00014290: 72 49 6d 70 6f 72 74 54 79 70 65 4e 6f 64 65 3b rImportTypeNode; 000142a0: 0a 20 20 20 20 2f 2f 20 45 78 70 72 65 73 73 69 . // Expressi 000142b0: 6f 6e 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 on. function 000142c0: 69 73 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 isPropertyAccess 000142d0: 4f 72 51 75 61 6c 69 66 69 65 64 4e 61 6d 65 28 OrQualifiedName( 000142e0: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 000142f0: 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 2e var kind = node. 00014300: 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 20 72 65 kind;. re 00014310: 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 30 turn kind === 20 00014320: 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 6 /* SyntaxKind. 00014330: 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 45 78 PropertyAccessEx 00014340: 70 72 65 73 73 69 6f 6e 20 2a 2f 0a 20 20 20 20 pression */. 00014350: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 00014360: 3d 3d 3d 20 31 36 31 20 2f 2a 20 53 79 6e 74 61 === 161 /* Synta 00014370: 78 4b 69 6e 64 2e 51 75 61 6c 69 66 69 65 64 4e xKind.QualifiedN 00014380: 61 6d 65 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ame */;. }. 00014390: 20 20 74 73 2e 69 73 50 72 6f 70 65 72 74 79 41 ts.isPropertyA 000143a0: 63 63 65 73 73 4f 72 51 75 61 6c 69 66 69 65 64 ccessOrQualified 000143b0: 4e 61 6d 65 20 3d 20 69 73 50 72 6f 70 65 72 74 Name = isPropert 000143c0: 79 41 63 63 65 73 73 4f 72 51 75 61 6c 69 66 69 yAccessOrQualifi 000143d0: 65 64 4e 61 6d 65 3b 0a 20 20 20 20 66 75 6e 63 edName;. func 000143e0: 74 69 6f 6e 20 69 73 43 61 6c 6c 4c 69 6b 65 45 tion isCallLikeE 000143f0: 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 xpression(node) 00014400: 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 {. switch 00014410: 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 7b 0a 20 (node.kind) {. 00014420: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00014430: 32 38 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 280 /* SyntaxKin 00014440: 64 2e 4a 73 78 4f 70 65 6e 69 6e 67 45 6c 65 6d d.JsxOpeningElem 00014450: 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ent */:. 00014460: 20 20 20 20 63 61 73 65 20 32 37 39 20 2f 2a 20 case 279 /* 00014470: 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 53 65 SyntaxKind.JsxSe 00014480: 6c 66 43 6c 6f 73 69 6e 67 45 6c 65 6d 65 6e 74 lfClosingElement 00014490: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 000144a0: 20 63 61 73 65 20 32 30 38 20 2f 2a 20 53 79 6e case 208 /* Syn 000144b0: 74 61 78 4b 69 6e 64 2e 43 61 6c 6c 45 78 70 72 taxKind.CallExpr 000144c0: 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ession */:. 000144d0: 20 20 20 20 20 20 20 63 61 73 65 20 32 30 39 20 case 209 000144e0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e 65 /* SyntaxKind.Ne 000144f0: 77 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a wExpression */:. 00014500: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00014510: 20 32 31 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 210 /* SyntaxKi 00014520: 6e 64 2e 54 61 67 67 65 64 54 65 6d 70 6c 61 74 nd.TaggedTemplat 00014530: 65 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a eExpression */:. 00014540: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00014550: 20 31 36 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 165 /* SyntaxKi 00014560: 6e 64 2e 44 65 63 6f 72 61 74 6f 72 20 2a 2f 3a nd.Decorator */: 00014570: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00014580: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 return true;. 00014590: 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c defaul 000145a0: 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t:. 000145b0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b return false; 000145c0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d . }. } 000145d0: 0a 20 20 20 20 74 73 2e 69 73 43 61 6c 6c 4c 69 . ts.isCallLi 000145e0: 6b 65 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 69 keExpression = i 000145f0: 73 43 61 6c 6c 4c 69 6b 65 45 78 70 72 65 73 73 sCallLikeExpress 00014600: 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ion;. functio 00014610: 6e 20 69 73 43 61 6c 6c 4f 72 4e 65 77 45 78 70 n isCallOrNewExp 00014620: 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a ression(node) {. 00014630: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e return n 00014640: 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 30 38 ode.kind === 208 00014650: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 /* SyntaxKind.C 00014660: 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f allExpression */ 00014670: 20 7c 7c 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d || node.kind == 00014680: 3d 20 32 30 39 20 2f 2a 20 53 79 6e 74 61 78 4b = 209 /* SyntaxK 00014690: 69 6e 64 2e 4e 65 77 45 78 70 72 65 73 73 69 6f ind.NewExpressio 000146a0: 6e 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 n */;. }. 000146b0: 74 73 2e 69 73 43 61 6c 6c 4f 72 4e 65 77 45 78 ts.isCallOrNewEx 000146c0: 70 72 65 73 73 69 6f 6e 20 3d 20 69 73 43 61 6c pression = isCal 000146d0: 6c 4f 72 4e 65 77 45 78 70 72 65 73 73 69 6f 6e lOrNewExpression 000146e0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 000146f0: 73 54 65 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c sTemplateLiteral 00014700: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 00014710: 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 var kind = node 00014720: 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 20 72 .kind;. r 00014730: 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 eturn kind === 2 00014740: 32 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 23 /* SyntaxKind 00014750: 2e 54 65 6d 70 6c 61 74 65 45 78 70 72 65 73 73 .TemplateExpress 00014760: 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 ion */. 00014770: 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 || kind === 1 00014780: 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4 /* SyntaxKind. 00014790: 4e 6f 53 75 62 73 74 69 74 75 74 69 6f 6e 54 65 NoSubstitutionTe 000147a0: 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c 20 2a 2f mplateLiteral */ 000147b0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 000147c0: 73 54 65 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c sTemplateLiteral 000147d0: 20 3d 20 69 73 54 65 6d 70 6c 61 74 65 4c 69 74 = isTemplateLit 000147e0: 65 72 61 6c 3b 0a 20 20 20 20 2f 2a 20 40 69 6e eral;. /* @in 000147f0: 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 ternal */. fu 00014800: 6e 63 74 69 6f 6e 20 69 73 4c 65 66 74 48 61 6e nction isLeftHan 00014810: 64 53 69 64 65 45 78 70 72 65 73 73 69 6f 6e 28 dSideExpression( 00014820: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 00014830: 72 65 74 75 72 6e 20 69 73 4c 65 66 74 48 61 6e return isLeftHan 00014840: 64 53 69 64 65 45 78 70 72 65 73 73 69 6f 6e 4b dSideExpressionK 00014850: 69 6e 64 28 73 6b 69 70 50 61 72 74 69 61 6c 6c ind(skipPartiall 00014860: 79 45 6d 69 74 74 65 64 45 78 70 72 65 73 73 69 yEmittedExpressi 00014870: 6f 6e 73 28 6e 6f 64 65 29 2e 6b 69 6e 64 29 3b ons(node).kind); 00014880: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00014890: 4c 65 66 74 48 61 6e 64 53 69 64 65 45 78 70 72 LeftHandSideExpr 000148a0: 65 73 73 69 6f 6e 20 3d 20 69 73 4c 65 66 74 48 ession = isLeftH 000148b0: 61 6e 64 53 69 64 65 45 78 70 72 65 73 73 69 6f andSideExpressio 000148c0: 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 n;. function 000148d0: 69 73 4c 65 66 74 48 61 6e 64 53 69 64 65 45 78 isLeftHandSideEx 000148e0: 70 72 65 73 73 69 6f 6e 4b 69 6e 64 28 6b 69 6e pressionKind(kin 000148f0: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 73 77 69 d) {. swi 00014900: 74 63 68 20 28 6b 69 6e 64 29 20 7b 0a 20 20 20 tch (kind) {. 00014910: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 case 20 00014920: 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 6 /* SyntaxKind. 00014930: 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 45 78 PropertyAccessEx 00014940: 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 pression */:. 00014950: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 case 20 00014960: 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 7 /* SyntaxKind. 00014970: 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 45 78 70 ElementAccessExp 00014980: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 00014990: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 39 case 209 000149a0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e /* SyntaxKind.N 000149b0: 65 77 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a ewExpression */: 000149c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 000149d0: 65 20 32 30 38 20 2f 2a 20 53 79 6e 74 61 78 4b e 208 /* SyntaxK 000149e0: 69 6e 64 2e 43 61 6c 6c 45 78 70 72 65 73 73 69 ind.CallExpressi 000149f0: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 00014a00: 20 20 20 63 61 73 65 20 32 37 38 20 2f 2a 20 53 case 278 /* S 00014a10: 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 45 6c 65 yntaxKind.JsxEle 00014a20: 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ment */:. 00014a30: 20 20 20 20 20 63 61 73 65 20 32 37 39 20 2f 2a case 279 /* 00014a40: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 53 SyntaxKind.JsxS 00014a50: 65 6c 66 43 6c 6f 73 69 6e 67 45 6c 65 6d 65 6e elfClosingElemen 00014a60: 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 t */:. 00014a70: 20 20 63 61 73 65 20 32 38 32 20 2f 2a 20 53 79 case 282 /* Sy 00014a80: 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 46 72 61 67 ntaxKind.JsxFrag 00014a90: 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ment */:. 00014aa0: 20 20 20 20 20 63 61 73 65 20 32 31 30 20 2f 2a case 210 /* 00014ab0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 61 67 67 SyntaxKind.Tagg 00014ac0: 65 64 54 65 6d 70 6c 61 74 65 45 78 70 72 65 73 edTemplateExpres 00014ad0: 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 sion */:. 00014ae0: 20 20 20 20 20 63 61 73 65 20 32 30 34 20 2f 2a case 204 /* 00014af0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 72 72 61 SyntaxKind.Arra 00014b00: 79 4c 69 74 65 72 61 6c 45 78 70 72 65 73 73 69 yLiteralExpressi 00014b10: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 00014b20: 20 20 20 63 61 73 65 20 32 31 32 20 2f 2a 20 53 case 212 /* S 00014b30: 79 6e 74 61 78 4b 69 6e 64 2e 50 61 72 65 6e 74 yntaxKind.Parent 00014b40: 68 65 73 69 7a 65 64 45 78 70 72 65 73 73 69 6f hesizedExpressio 00014b50: 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 n */:. 00014b60: 20 20 63 61 73 65 20 32 30 35 20 2f 2a 20 53 79 case 205 /* Sy 00014b70: 6e 74 61 78 4b 69 6e 64 2e 4f 62 6a 65 63 74 4c ntaxKind.ObjectL 00014b80: 69 74 65 72 61 6c 45 78 70 72 65 73 73 69 6f 6e iteralExpression 00014b90: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00014ba0: 20 63 61 73 65 20 32 32 36 20 2f 2a 20 53 79 6e case 226 /* Syn 00014bb0: 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 45 78 70 taxKind.ClassExp 00014bc0: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 00014bd0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 31 33 case 213 00014be0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 /* SyntaxKind.F 00014bf0: 75 6e 63 74 69 6f 6e 45 78 70 72 65 73 73 69 6f unctionExpressio 00014c00: 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 n */:. 00014c10: 20 20 63 61 73 65 20 37 39 20 2f 2a 20 53 79 6e case 79 /* Syn 00014c20: 74 61 78 4b 69 6e 64 2e 49 64 65 6e 74 69 66 69 taxKind.Identifi 00014c30: 65 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 er */:. 00014c40: 20 20 20 63 61 73 65 20 38 30 20 2f 2a 20 53 79 case 80 /* Sy 00014c50: 6e 74 61 78 4b 69 6e 64 2e 50 72 69 76 61 74 65 ntaxKind.Private 00014c60: 49 64 65 6e 74 69 66 69 65 72 20 2a 2f 3a 20 2f Identifier */: / 00014c70: 2f 20 74 65 63 68 6e 69 63 61 6c 6c 79 20 74 68 / technically th 00014c80: 69 73 20 69 73 20 6f 6e 6c 79 20 61 6e 20 45 78 is is only an Ex 00014c90: 70 72 65 73 73 69 6f 6e 20 69 66 20 69 74 27 73 pression if it's 00014ca0: 20 69 6e 20 61 20 60 23 66 69 65 6c 64 20 69 6e in a `#field in 00014cb0: 20 65 78 70 72 60 20 42 69 6e 61 72 79 45 78 70 expr` BinaryExp 00014cc0: 72 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 ression. 00014cd0: 20 20 20 20 63 61 73 65 20 31 33 20 2f 2a 20 53 case 13 /* S 00014ce0: 79 6e 74 61 78 4b 69 6e 64 2e 52 65 67 75 6c 61 yntaxKind.Regula 00014cf0: 72 45 78 70 72 65 73 73 69 6f 6e 4c 69 74 65 72 rExpressionLiter 00014d00: 61 6c 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 al */:. 00014d10: 20 20 20 63 61 73 65 20 38 20 2f 2a 20 53 79 6e case 8 /* Syn 00014d20: 74 61 78 4b 69 6e 64 2e 4e 75 6d 65 72 69 63 4c taxKind.NumericL 00014d30: 69 74 65 72 61 6c 20 2a 2f 3a 0a 20 20 20 20 20 iteral */:. 00014d40: 20 20 20 20 20 20 20 63 61 73 65 20 39 20 2f 2a case 9 /* 00014d50: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 69 67 49 SyntaxKind.BigI 00014d60: 6e 74 4c 69 74 65 72 61 6c 20 2a 2f 3a 0a 20 20 ntLiteral */:. 00014d70: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 00014d80: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 00014d90: 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 20 2a 2f StringLiteral */ 00014da0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 00014db0: 73 65 20 31 34 20 2f 2a 20 53 79 6e 74 61 78 4b se 14 /* SyntaxK 00014dc0: 69 6e 64 2e 4e 6f 53 75 62 73 74 69 74 75 74 69 ind.NoSubstituti 00014dd0: 6f 6e 54 65 6d 70 6c 61 74 65 4c 69 74 65 72 61 onTemplateLitera 00014de0: 6c 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 l */:. 00014df0: 20 20 63 61 73 65 20 32 32 33 20 2f 2a 20 53 79 case 223 /* Sy 00014e00: 6e 74 61 78 4b 69 6e 64 2e 54 65 6d 70 6c 61 74 ntaxKind.Templat 00014e10: 65 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a eExpression */:. 00014e20: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00014e30: 20 39 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 95 /* SyntaxKin 00014e40: 64 2e 46 61 6c 73 65 4b 65 79 77 6f 72 64 20 2a d.FalseKeyword * 00014e50: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00014e60: 61 73 65 20 31 30 34 20 2f 2a 20 53 79 6e 74 61 ase 104 /* Synta 00014e70: 78 4b 69 6e 64 2e 4e 75 6c 6c 4b 65 79 77 6f 72 xKind.NullKeywor 00014e80: 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 d */:. 00014e90: 20 20 63 61 73 65 20 31 30 38 20 2f 2a 20 53 79 case 108 /* Sy 00014ea0: 6e 74 61 78 4b 69 6e 64 2e 54 68 69 73 4b 65 79 ntaxKind.ThisKey 00014eb0: 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 word */:. 00014ec0: 20 20 20 20 20 63 61 73 65 20 31 31 30 20 2f 2a case 110 /* 00014ed0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 72 75 65 SyntaxKind.True 00014ee0: 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 Keyword */:. 00014ef0: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 30 36 case 106 00014f00: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 /* SyntaxKind.S 00014f10: 75 70 65 72 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a uperKeyword */:. 00014f20: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00014f30: 20 32 33 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 230 /* SyntaxKi 00014f40: 6e 64 2e 4e 6f 6e 4e 75 6c 6c 45 78 70 72 65 73 nd.NonNullExpres 00014f50: 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 sion */:. 00014f60: 20 20 20 20 20 63 61 73 65 20 32 32 38 20 2f 2a case 228 /* 00014f70: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 78 70 72 SyntaxKind.Expr 00014f80: 65 73 73 69 6f 6e 57 69 74 68 54 79 70 65 41 72 essionWithTypeAr 00014f90: 67 75 6d 65 6e 74 73 20 2a 2f 3a 0a 20 20 20 20 guments */:. 00014fa0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 33 31 case 231 00014fb0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d /* SyntaxKind.M 00014fc0: 65 74 61 50 72 6f 70 65 72 74 79 20 2a 2f 3a 0a etaProperty */:. 00014fd0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00014fe0: 20 31 30 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 100 /* SyntaxKi 00014ff0: 6e 64 2e 49 6d 70 6f 72 74 4b 65 79 77 6f 72 64 nd.ImportKeyword 00015000: 20 2a 2f 3a 20 2f 2f 20 74 65 63 68 6e 69 63 61 */: // technica 00015010: 6c 6c 79 20 74 68 69 73 20 69 73 20 6f 6e 6c 79 lly this is only 00015020: 20 61 6e 20 45 78 70 72 65 73 73 69 6f 6e 20 69 an Expression i 00015030: 66 20 69 74 27 73 20 69 6e 20 61 20 43 61 6c 6c f it's in a Call 00015040: 45 78 70 72 65 73 73 69 6f 6e 0a 20 20 20 20 20 Expression. 00015050: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00015060: 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 n true;. 00015070: 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 default:. 00015080: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00015090: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 urn false;. 000150a0: 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 2f }. }. / 000150b0: 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 * @internal */. 000150c0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 55 6e function isUn 000150d0: 61 72 79 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f aryExpression(no 000150e0: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 de) {. re 000150f0: 74 75 72 6e 20 69 73 55 6e 61 72 79 45 78 70 72 turn isUnaryExpr 00015100: 65 73 73 69 6f 6e 4b 69 6e 64 28 73 6b 69 70 50 essionKind(skipP 00015110: 61 72 74 69 61 6c 6c 79 45 6d 69 74 74 65 64 45 artiallyEmittedE 00015120: 78 70 72 65 73 73 69 6f 6e 73 28 6e 6f 64 65 29 xpressions(node) 00015130: 2e 6b 69 6e 64 29 3b 0a 20 20 20 20 7d 0a 20 20 .kind);. }. 00015140: 20 20 74 73 2e 69 73 55 6e 61 72 79 45 78 70 72 ts.isUnaryExpr 00015150: 65 73 73 69 6f 6e 20 3d 20 69 73 55 6e 61 72 79 ession = isUnary 00015160: 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 20 Expression;. 00015170: 66 75 6e 63 74 69 6f 6e 20 69 73 55 6e 61 72 79 function isUnary 00015180: 45 78 70 72 65 73 73 69 6f 6e 4b 69 6e 64 28 6b ExpressionKind(k 00015190: 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ind) {. s 000151a0: 77 69 74 63 68 20 28 6b 69 6e 64 29 20 7b 0a 20 witch (kind) {. 000151b0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 000151c0: 32 31 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 219 /* SyntaxKin 000151d0: 64 2e 50 72 65 66 69 78 55 6e 61 72 79 45 78 70 d.PrefixUnaryExp 000151e0: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 000151f0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 32 30 case 220 00015200: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 /* SyntaxKind.P 00015210: 6f 73 74 66 69 78 55 6e 61 72 79 45 78 70 72 65 ostfixUnaryExpre 00015220: 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ssion */:. 00015230: 20 20 20 20 20 20 63 61 73 65 20 32 31 35 20 2f case 215 / 00015240: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 44 65 6c * SyntaxKind.Del 00015250: 65 74 65 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f eteExpression */ 00015260: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 00015270: 73 65 20 32 31 36 20 2f 2a 20 53 79 6e 74 61 78 se 216 /* Syntax 00015280: 4b 69 6e 64 2e 54 79 70 65 4f 66 45 78 70 72 65 Kind.TypeOfExpre 00015290: 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ssion */:. 000152a0: 20 20 20 20 20 20 63 61 73 65 20 32 31 37 20 2f case 217 / 000152b0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 56 6f 69 * SyntaxKind.Voi 000152c0: 64 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a dExpression */:. 000152d0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 000152e0: 20 32 31 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 218 /* SyntaxKi 000152f0: 6e 64 2e 41 77 61 69 74 45 78 70 72 65 73 73 69 nd.AwaitExpressi 00015300: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 00015310: 20 20 20 63 61 73 65 20 32 31 31 20 2f 2a 20 53 case 211 /* S 00015320: 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 41 73 yntaxKind.TypeAs 00015330: 73 65 72 74 69 6f 6e 45 78 70 72 65 73 73 69 6f sertionExpressio 00015340: 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 n */:. 00015350: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 return tru 00015360: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 e;. d 00015370: 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 efault:. 00015380: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 return i 00015390: 73 4c 65 66 74 48 61 6e 64 53 69 64 65 45 78 70 sLeftHandSideExp 000153a0: 72 65 73 73 69 6f 6e 4b 69 6e 64 28 6b 69 6e 64 ressionKind(kind 000153b0: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 );. }. 000153c0: 20 7d 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 }. /* @inter 000153d0: 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 nal */. funct 000153e0: 69 6f 6e 20 69 73 55 6e 61 72 79 45 78 70 72 65 ion isUnaryExpre 000153f0: 73 73 69 6f 6e 57 69 74 68 57 72 69 74 65 28 65 ssionWithWrite(e 00015400: 78 70 72 29 20 7b 0a 20 20 20 20 20 20 20 20 73 xpr) {. s 00015410: 77 69 74 63 68 20 28 65 78 70 72 2e 6b 69 6e 64 witch (expr.kind 00015420: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 00015430: 63 61 73 65 20 32 32 30 20 2f 2a 20 53 79 6e 74 case 220 /* Synt 00015440: 61 78 4b 69 6e 64 2e 50 6f 73 74 66 69 78 55 6e axKind.PostfixUn 00015450: 61 72 79 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f aryExpression */ 00015460: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 00015470: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 return true;. 00015480: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00015490: 32 31 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 219 /* SyntaxKin 000154a0: 64 2e 50 72 65 66 69 78 55 6e 61 72 79 45 78 70 d.PrefixUnaryExp 000154b0: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 000154c0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 000154d0: 72 6e 20 65 78 70 72 2e 6f 70 65 72 61 74 6f 72 rn expr.operator 000154e0: 20 3d 3d 3d 20 34 35 20 2f 2a 20 53 79 6e 74 61 === 45 /* Synta 000154f0: 78 4b 69 6e 64 2e 50 6c 75 73 50 6c 75 73 54 6f xKind.PlusPlusTo 00015500: 6b 65 6e 20 2a 2f 20 7c 7c 0a 20 20 20 20 20 20 ken */ ||. 00015510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 ex 00015520: 70 72 2e 6f 70 65 72 61 74 6f 72 20 3d 3d 3d 20 pr.operator === 00015530: 34 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 46 /* SyntaxKind 00015540: 2e 4d 69 6e 75 73 4d 69 6e 75 73 54 6f 6b 65 6e .MinusMinusToken 00015550: 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 20 20 20 */;. 00015560: 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 default:. 00015570: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00015580: 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 false;. 00015590: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 }. }. ts.i 000155a0: 73 55 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e sUnaryExpression 000155b0: 57 69 74 68 57 72 69 74 65 20 3d 20 69 73 55 6e WithWrite = isUn 000155c0: 61 72 79 45 78 70 72 65 73 73 69 6f 6e 57 69 74 aryExpressionWit 000155d0: 68 57 72 69 74 65 3b 0a 20 20 20 20 2f 2a 20 40 hWrite;. /* @ 000155e0: 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 internal */. 000155f0: 2f 2a 2a 0a 20 20 20 20 20 2a 20 44 65 74 65 72 /**. * Deter 00015600: 6d 69 6e 65 73 20 77 68 65 74 68 65 72 20 61 20 mines whether a 00015610: 6e 6f 64 65 20 69 73 20 61 6e 20 65 78 70 72 65 node is an expre 00015620: 73 73 69 6f 6e 20 62 61 73 65 64 20 6f 6e 6c 79 ssion based only 00015630: 20 6f 6e 20 69 74 73 20 6b 69 6e 64 2e 0a 20 20 on its kind.. 00015640: 20 20 20 2a 20 55 73 65 20 60 69 73 45 78 70 72 * Use `isExpr 00015650: 65 73 73 69 6f 6e 4e 6f 64 65 60 20 69 66 20 6e essionNode` if n 00015660: 6f 74 20 69 6e 20 74 72 61 6e 73 66 6f 72 6d 73 ot in transforms 00015670: 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 .. */. fu 00015680: 6e 63 74 69 6f 6e 20 69 73 45 78 70 72 65 73 73 nction isExpress 00015690: 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ion(node) {. 000156a0: 20 20 20 20 72 65 74 75 72 6e 20 69 73 45 78 70 return isExp 000156b0: 72 65 73 73 69 6f 6e 4b 69 6e 64 28 73 6b 69 70 ressionKind(skip 000156c0: 50 61 72 74 69 61 6c 6c 79 45 6d 69 74 74 65 64 PartiallyEmitted 000156d0: 45 78 70 72 65 73 73 69 6f 6e 73 28 6e 6f 64 65 Expressions(node 000156e0: 29 2e 6b 69 6e 64 29 3b 0a 20 20 20 20 7d 0a 20 ).kind);. }. 000156f0: 20 20 20 74 73 2e 69 73 45 78 70 72 65 73 73 69 ts.isExpressi 00015700: 6f 6e 20 3d 20 69 73 45 78 70 72 65 73 73 69 6f on = isExpressio 00015710: 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 n;. function 00015720: 69 73 45 78 70 72 65 73 73 69 6f 6e 4b 69 6e 64 isExpressionKind 00015730: 28 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 (kind) {. 00015740: 20 73 77 69 74 63 68 20 28 6b 69 6e 64 29 20 7b switch (kind) { 00015750: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00015760: 65 20 32 32 32 20 2f 2a 20 53 79 6e 74 61 78 4b e 222 /* SyntaxK 00015770: 69 6e 64 2e 43 6f 6e 64 69 74 69 6f 6e 61 6c 45 ind.ConditionalE 00015780: 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 xpression */:. 00015790: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 000157a0: 32 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 24 /* SyntaxKind 000157b0: 2e 59 69 65 6c 64 45 78 70 72 65 73 73 69 6f 6e .YieldExpression 000157c0: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 000157d0: 20 63 61 73 65 20 32 31 34 20 2f 2a 20 53 79 6e case 214 /* Syn 000157e0: 74 61 78 4b 69 6e 64 2e 41 72 72 6f 77 46 75 6e taxKind.ArrowFun 000157f0: 63 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ction */:. 00015800: 20 20 20 20 20 20 63 61 73 65 20 32 32 31 20 2f case 221 / 00015810: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 69 6e * SyntaxKind.Bin 00015820: 61 72 79 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f aryExpression */ 00015830: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 00015840: 73 65 20 32 32 35 20 2f 2a 20 53 79 6e 74 61 78 se 225 /* Syntax 00015850: 4b 69 6e 64 2e 53 70 72 65 61 64 45 6c 65 6d 65 Kind.SpreadEleme 00015860: 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 nt */:. 00015870: 20 20 20 63 61 73 65 20 32 32 39 20 2f 2a 20 53 case 229 /* S 00015880: 79 6e 74 61 78 4b 69 6e 64 2e 41 73 45 78 70 72 yntaxKind.AsExpr 00015890: 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ession */:. 000158a0: 20 20 20 20 20 20 20 63 61 73 65 20 32 32 37 20 case 227 000158b0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4f 6d /* SyntaxKind.Om 000158c0: 69 74 74 65 64 45 78 70 72 65 73 73 69 6f 6e 20 ittedExpression 000158d0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 000158e0: 63 61 73 65 20 33 35 31 20 2f 2a 20 53 79 6e 74 case 351 /* Synt 000158f0: 61 78 4b 69 6e 64 2e 43 6f 6d 6d 61 4c 69 73 74 axKind.CommaList 00015900: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 00015910: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00015920: 33 35 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 350 /* SyntaxKin 00015930: 64 2e 50 61 72 74 69 61 6c 6c 79 45 6d 69 74 74 d.PartiallyEmitt 00015940: 65 64 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a edExpression */: 00015950: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00015960: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 return true;. 00015970: 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c defaul 00015980: 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t:. 00015990: 20 20 20 72 65 74 75 72 6e 20 69 73 55 6e 61 72 return isUnar 000159a0: 79 45 78 70 72 65 73 73 69 6f 6e 4b 69 6e 64 28 yExpressionKind( 000159b0: 6b 69 6e 64 29 3b 0a 20 20 20 20 20 20 20 20 7d kind);. } 000159c0: 0a 20 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 74 . }. funct 000159d0: 69 6f 6e 20 69 73 41 73 73 65 72 74 69 6f 6e 45 ion isAssertionE 000159e0: 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 xpression(node) 000159f0: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6b 69 {. var ki 00015a00: 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 3b 0a nd = node.kind;. 00015a10: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b return k 00015a20: 69 6e 64 20 3d 3d 3d 20 32 31 31 20 2f 2a 20 53 ind === 211 /* S 00015a30: 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 41 73 yntaxKind.TypeAs 00015a40: 73 65 72 74 69 6f 6e 45 78 70 72 65 73 73 69 6f sertionExpressio 00015a50: 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 n */. 00015a60: 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 32 39 || kind === 229 00015a70: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 /* SyntaxKind.A 00015a80: 73 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3b 0a sExpression */;. 00015a90: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 41 }. ts.isA 00015aa0: 73 73 65 72 74 69 6f 6e 45 78 70 72 65 73 73 69 ssertionExpressi 00015ab0: 6f 6e 20 3d 20 69 73 41 73 73 65 72 74 69 6f 6e on = isAssertion 00015ac0: 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 20 Expression;. 00015ad0: 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a /* @internal */. 00015ae0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4e function isN 00015af0: 6f 74 45 6d 69 74 74 65 64 4f 72 50 61 72 74 69 otEmittedOrParti 00015b00: 61 6c 6c 79 45 6d 69 74 74 65 64 4e 6f 64 65 28 allyEmittedNode( 00015b10: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 00015b20: 72 65 74 75 72 6e 20 74 73 2e 69 73 4e 6f 74 45 return ts.isNotE 00015b30: 6d 69 74 74 65 64 53 74 61 74 65 6d 65 6e 74 28 mittedStatement( 00015b40: 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 node). 00015b50: 20 20 7c 7c 20 74 73 2e 69 73 50 61 72 74 69 61 || ts.isPartia 00015b60: 6c 6c 79 45 6d 69 74 74 65 64 45 78 70 72 65 73 llyEmittedExpres 00015b70: 73 69 6f 6e 28 6e 6f 64 65 29 3b 0a 20 20 20 20 sion(node);. 00015b80: 7d 0a 20 20 20 20 74 73 2e 69 73 4e 6f 74 45 6d }. ts.isNotEm 00015b90: 69 74 74 65 64 4f 72 50 61 72 74 69 61 6c 6c 79 ittedOrPartially 00015ba0: 45 6d 69 74 74 65 64 4e 6f 64 65 20 3d 20 69 73 EmittedNode = is 00015bb0: 4e 6f 74 45 6d 69 74 74 65 64 4f 72 50 61 72 74 NotEmittedOrPart 00015bc0: 69 61 6c 6c 79 45 6d 69 74 74 65 64 4e 6f 64 65 iallyEmittedNode 00015bd0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 00015be0: 73 49 74 65 72 61 74 69 6f 6e 53 74 61 74 65 6d sIterationStatem 00015bf0: 65 6e 74 28 6e 6f 64 65 2c 20 6c 6f 6f 6b 49 6e ent(node, lookIn 00015c00: 4c 61 62 65 6c 65 64 53 74 61 74 65 6d 65 6e 74 LabeledStatement 00015c10: 73 29 20 7b 0a 20 20 20 20 20 20 20 20 73 77 69 s) {. swi 00015c20: 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 tch (node.kind) 00015c30: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 {. ca 00015c40: 73 65 20 32 34 32 20 2f 2a 20 53 79 6e 74 61 78 se 242 /* Syntax 00015c50: 4b 69 6e 64 2e 46 6f 72 53 74 61 74 65 6d 65 6e Kind.ForStatemen 00015c60: 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 t */:. 00015c70: 20 20 63 61 73 65 20 32 34 33 20 2f 2a 20 53 79 case 243 /* Sy 00015c80: 6e 74 61 78 4b 69 6e 64 2e 46 6f 72 49 6e 53 74 ntaxKind.ForInSt 00015c90: 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 atement */:. 00015ca0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 34 34 case 244 00015cb0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 /* SyntaxKind.F 00015cc0: 6f 72 4f 66 53 74 61 74 65 6d 65 6e 74 20 2a 2f orOfStatement */ 00015cd0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 00015ce0: 73 65 20 32 34 30 20 2f 2a 20 53 79 6e 74 61 78 se 240 /* Syntax 00015cf0: 4b 69 6e 64 2e 44 6f 53 74 61 74 65 6d 65 6e 74 Kind.DoStatement 00015d00: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00015d10: 20 63 61 73 65 20 32 34 31 20 2f 2a 20 53 79 6e case 241 /* Syn 00015d20: 74 61 78 4b 69 6e 64 2e 57 68 69 6c 65 53 74 61 taxKind.WhileSta 00015d30: 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 tement */:. 00015d40: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00015d50: 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 n true;. 00015d60: 20 20 20 20 63 61 73 65 20 32 35 30 20 2f 2a 20 case 250 /* 00015d70: 53 79 6e 74 61 78 4b 69 6e 64 2e 4c 61 62 65 6c SyntaxKind.Label 00015d80: 65 64 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a edStatement */:. 00015d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00015da0: 72 65 74 75 72 6e 20 6c 6f 6f 6b 49 6e 4c 61 62 return lookInLab 00015db0: 65 6c 65 64 53 74 61 74 65 6d 65 6e 74 73 20 26 eledStatements & 00015dc0: 26 20 69 73 49 74 65 72 61 74 69 6f 6e 53 74 61 & isIterationSta 00015dd0: 74 65 6d 65 6e 74 28 6e 6f 64 65 2e 73 74 61 74 tement(node.stat 00015de0: 65 6d 65 6e 74 2c 20 6c 6f 6f 6b 49 6e 4c 61 62 ement, lookInLab 00015df0: 65 6c 65 64 53 74 61 74 65 6d 65 6e 74 73 29 3b eledStatements); 00015e00: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }. 00015e10: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b return false; 00015e20: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00015e30: 49 74 65 72 61 74 69 6f 6e 53 74 61 74 65 6d 65 IterationStateme 00015e40: 6e 74 20 3d 20 69 73 49 74 65 72 61 74 69 6f 6e nt = isIteration 00015e50: 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 20 20 2f Statement;. / 00015e60: 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 * @internal */. 00015e70: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 63 function isSc 00015e80: 6f 70 65 4d 61 72 6b 65 72 28 6e 6f 64 65 29 20 opeMarker(node) 00015e90: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 00015ea0: 20 74 73 2e 69 73 45 78 70 6f 72 74 41 73 73 69 ts.isExportAssi 00015eb0: 67 6e 6d 65 6e 74 28 6e 6f 64 65 29 20 7c 7c 20 gnment(node) || 00015ec0: 74 73 2e 69 73 45 78 70 6f 72 74 44 65 63 6c 61 ts.isExportDecla 00015ed0: 72 61 74 69 6f 6e 28 6e 6f 64 65 29 3b 0a 20 20 ration(node);. 00015ee0: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 53 63 6f }. ts.isSco 00015ef0: 70 65 4d 61 72 6b 65 72 20 3d 20 69 73 53 63 6f peMarker = isSco 00015f00: 70 65 4d 61 72 6b 65 72 3b 0a 20 20 20 20 2f 2a peMarker;. /* 00015f10: 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 @internal */. 00015f20: 20 20 66 75 6e 63 74 69 6f 6e 20 68 61 73 53 63 function hasSc 00015f30: 6f 70 65 4d 61 72 6b 65 72 28 73 74 61 74 65 6d opeMarker(statem 00015f40: 65 6e 74 73 29 20 7b 0a 20 20 20 20 20 20 20 20 ents) {. 00015f50: 72 65 74 75 72 6e 20 74 73 2e 73 6f 6d 65 28 73 return ts.some(s 00015f60: 74 61 74 65 6d 65 6e 74 73 2c 20 69 73 53 63 6f tatements, isSco 00015f70: 70 65 4d 61 72 6b 65 72 29 3b 0a 20 20 20 20 7d peMarker);. } 00015f80: 0a 20 20 20 20 74 73 2e 68 61 73 53 63 6f 70 65 . ts.hasScope 00015f90: 4d 61 72 6b 65 72 20 3d 20 68 61 73 53 63 6f 70 Marker = hasScop 00015fa0: 65 4d 61 72 6b 65 72 3b 0a 20 20 20 20 2f 2a 20 eMarker;. /* 00015fb0: 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 @internal */. 00015fc0: 20 66 75 6e 63 74 69 6f 6e 20 6e 65 65 64 73 53 function needsS 00015fd0: 63 6f 70 65 4d 61 72 6b 65 72 28 72 65 73 75 6c copeMarker(resul 00015fe0: 74 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 t) {. ret 00015ff0: 75 72 6e 20 21 74 73 2e 69 73 41 6e 79 49 6d 70 urn !ts.isAnyImp 00016000: 6f 72 74 4f 72 52 65 45 78 70 6f 72 74 28 72 65 ortOrReExport(re 00016010: 73 75 6c 74 29 20 26 26 20 21 74 73 2e 69 73 45 sult) && !ts.isE 00016020: 78 70 6f 72 74 41 73 73 69 67 6e 6d 65 6e 74 28 xportAssignment( 00016030: 72 65 73 75 6c 74 29 20 26 26 20 21 74 73 2e 68 result) && !ts.h 00016040: 61 73 53 79 6e 74 61 63 74 69 63 4d 6f 64 69 66 asSyntacticModif 00016050: 69 65 72 28 72 65 73 75 6c 74 2c 20 31 20 2f 2a ier(result, 1 /* 00016060: 20 4d 6f 64 69 66 69 65 72 46 6c 61 67 73 2e 45 ModifierFlags.E 00016070: 78 70 6f 72 74 20 2a 2f 29 20 26 26 20 21 74 73 xport */) && !ts 00016080: 2e 69 73 41 6d 62 69 65 6e 74 4d 6f 64 75 6c 65 .isAmbientModule 00016090: 28 72 65 73 75 6c 74 29 3b 0a 20 20 20 20 7d 0a (result);. }. 000160a0: 20 20 20 20 74 73 2e 6e 65 65 64 73 53 63 6f 70 ts.needsScop 000160b0: 65 4d 61 72 6b 65 72 20 3d 20 6e 65 65 64 73 53 eMarker = needsS 000160c0: 63 6f 70 65 4d 61 72 6b 65 72 3b 0a 20 20 20 20 copeMarker;. 000160d0: 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a /* @internal */. 000160e0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 45 function isE 000160f0: 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 49 6e 64 xternalModuleInd 00016100: 69 63 61 74 6f 72 28 72 65 73 75 6c 74 29 20 7b icator(result) { 00016110: 0a 20 20 20 20 20 20 20 20 2f 2f 20 45 78 70 6f . // Expo 00016120: 72 74 65 64 20 74 6f 70 2d 6c 65 76 65 6c 20 6d rted top-level m 00016130: 65 6d 62 65 72 20 69 6e 64 69 63 61 74 65 73 20 ember indicates 00016140: 6d 6f 64 75 6c 65 6e 65 73 73 0a 20 20 20 20 20 moduleness. 00016150: 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 41 return ts.isA 00016160: 6e 79 49 6d 70 6f 72 74 4f 72 52 65 45 78 70 6f nyImportOrReExpo 00016170: 72 74 28 72 65 73 75 6c 74 29 20 7c 7c 20 74 73 rt(result) || ts 00016180: 2e 69 73 45 78 70 6f 72 74 41 73 73 69 67 6e 6d .isExportAssignm 00016190: 65 6e 74 28 72 65 73 75 6c 74 29 20 7c 7c 20 74 ent(result) || t 000161a0: 73 2e 68 61 73 53 79 6e 74 61 63 74 69 63 4d 6f s.hasSyntacticMo 000161b0: 64 69 66 69 65 72 28 72 65 73 75 6c 74 2c 20 31 difier(result, 1 000161c0: 20 2f 2a 20 4d 6f 64 69 66 69 65 72 46 6c 61 67 /* ModifierFlag 000161d0: 73 2e 45 78 70 6f 72 74 20 2a 2f 29 3b 0a 20 20 s.Export */);. 000161e0: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 45 78 74 }. ts.isExt 000161f0: 65 72 6e 61 6c 4d 6f 64 75 6c 65 49 6e 64 69 63 ernalModuleIndic 00016200: 61 74 6f 72 20 3d 20 69 73 45 78 74 65 72 6e 61 ator = isExterna 00016210: 6c 4d 6f 64 75 6c 65 49 6e 64 69 63 61 74 6f 72 lModuleIndicator 00016220: 3b 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e ;. /* @intern 00016230: 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 al */. functi 00016240: 6f 6e 20 69 73 46 6f 72 49 6e 4f 72 4f 66 53 74 on isForInOrOfSt 00016250: 61 74 65 6d 65 6e 74 28 6e 6f 64 65 29 20 7b 0a atement(node) {. 00016260: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e return n 00016270: 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 34 33 ode.kind === 243 00016280: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 /* SyntaxKind.F 00016290: 6f 72 49 6e 53 74 61 74 65 6d 65 6e 74 20 2a 2f orInStatement */ 000162a0: 20 7c 7c 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d || node.kind == 000162b0: 3d 20 32 34 34 20 2f 2a 20 53 79 6e 74 61 78 4b = 244 /* SyntaxK 000162c0: 69 6e 64 2e 46 6f 72 4f 66 53 74 61 74 65 6d 65 ind.ForOfStateme 000162d0: 6e 74 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 nt */;. }. 000162e0: 20 74 73 2e 69 73 46 6f 72 49 6e 4f 72 4f 66 53 ts.isForInOrOfS 000162f0: 74 61 74 65 6d 65 6e 74 20 3d 20 69 73 46 6f 72 tatement = isFor 00016300: 49 6e 4f 72 4f 66 53 74 61 74 65 6d 65 6e 74 3b InOrOfStatement; 00016310: 0a 20 20 20 20 2f 2f 20 45 6c 65 6d 65 6e 74 0a . // Element. 00016320: 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c /* @internal 00016330: 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e */. function 00016340: 20 69 73 43 6f 6e 63 69 73 65 42 6f 64 79 28 6e isConciseBody(n 00016350: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 00016360: 65 74 75 72 6e 20 74 73 2e 69 73 42 6c 6f 63 6b eturn ts.isBlock 00016370: 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 (node). 00016380: 20 20 20 7c 7c 20 69 73 45 78 70 72 65 73 73 69 || isExpressi 00016390: 6f 6e 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d 0a on(node);. }. 000163a0: 20 20 20 20 74 73 2e 69 73 43 6f 6e 63 69 73 65 ts.isConcise 000163b0: 42 6f 64 79 20 3d 20 69 73 43 6f 6e 63 69 73 65 Body = isConcise 000163c0: 42 6f 64 79 3b 0a 20 20 20 20 2f 2a 20 40 69 6e Body;. /* @in 000163d0: 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 ternal */. fu 000163e0: 6e 63 74 69 6f 6e 20 69 73 46 75 6e 63 74 69 6f nction isFunctio 000163f0: 6e 42 6f 64 79 28 6e 6f 64 65 29 20 7b 0a 20 20 nBody(node) {. 00016400: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 00016410: 69 73 42 6c 6f 63 6b 28 6e 6f 64 65 29 3b 0a 20 isBlock(node);. 00016420: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 46 75 }. ts.isFu 00016430: 6e 63 74 69 6f 6e 42 6f 64 79 20 3d 20 69 73 46 nctionBody = isF 00016440: 75 6e 63 74 69 6f 6e 42 6f 64 79 3b 0a 20 20 20 unctionBody;. 00016450: 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f /* @internal */ 00016460: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 . function is 00016470: 46 6f 72 49 6e 69 74 69 61 6c 69 7a 65 72 28 6e ForInitializer(n 00016480: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 00016490: 65 74 75 72 6e 20 74 73 2e 69 73 56 61 72 69 61 eturn ts.isVaria 000164a0: 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 4c 69 bleDeclarationLi 000164b0: 73 74 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 st(node). 000164c0: 20 20 20 20 20 7c 7c 20 69 73 45 78 70 72 65 73 || isExpres 000164d0: 73 69 6f 6e 28 6e 6f 64 65 29 3b 0a 20 20 20 20 sion(node);. 000164e0: 7d 0a 20 20 20 20 74 73 2e 69 73 46 6f 72 49 6e }. ts.isForIn 000164f0: 69 74 69 61 6c 69 7a 65 72 20 3d 20 69 73 46 6f itializer = isFo 00016500: 72 49 6e 69 74 69 61 6c 69 7a 65 72 3b 0a 20 20 rInitializer;. 00016510: 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a /* @internal * 00016520: 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 /. function i 00016530: 73 4d 6f 64 75 6c 65 42 6f 64 79 28 6e 6f 64 65 sModuleBody(node 00016540: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 00016550: 6b 69 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 kind = node.kind 00016560: 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e ;. return 00016570: 20 6b 69 6e 64 20 3d 3d 3d 20 32 36 32 20 2f 2a kind === 262 /* 00016580: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 75 SyntaxKind.Modu 00016590: 6c 65 42 6c 6f 63 6b 20 2a 2f 0a 20 20 20 20 20 leBlock */. 000165a0: 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d || kind = 000165b0: 3d 3d 20 32 36 31 20 2f 2a 20 53 79 6e 74 61 78 == 261 /* Syntax 000165c0: 4b 69 6e 64 2e 4d 6f 64 75 6c 65 44 65 63 6c 61 Kind.ModuleDecla 000165d0: 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 ration */. 000165e0: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 000165f0: 3d 20 37 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 = 79 /* SyntaxKi 00016600: 6e 64 2e 49 64 65 6e 74 69 66 69 65 72 20 2a 2f nd.Identifier */ 00016610: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 00016620: 73 4d 6f 64 75 6c 65 42 6f 64 79 20 3d 20 69 73 sModuleBody = is 00016630: 4d 6f 64 75 6c 65 42 6f 64 79 3b 0a 20 20 20 20 ModuleBody;. 00016640: 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a /* @internal */. 00016650: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4e function isN 00016660: 61 6d 65 73 70 61 63 65 42 6f 64 79 28 6e 6f 64 amespaceBody(nod 00016670: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 e) {. var 00016680: 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e kind = node.kin 00016690: 64 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 d;. retur 000166a0: 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 36 32 20 2f n kind === 262 / 000166b0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 * SyntaxKind.Mod 000166c0: 75 6c 65 42 6c 6f 63 6b 20 2a 2f 0a 20 20 20 20 uleBlock */. 000166d0: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 000166e0: 3d 3d 3d 20 32 36 31 20 2f 2a 20 53 79 6e 74 61 === 261 /* Synta 000166f0: 78 4b 69 6e 64 2e 4d 6f 64 75 6c 65 44 65 63 6c xKind.ModuleDecl 00016700: 61 72 61 74 69 6f 6e 20 2a 2f 3b 0a 20 20 20 20 aration */;. 00016710: 7d 0a 20 20 20 20 74 73 2e 69 73 4e 61 6d 65 73 }. ts.isNames 00016720: 70 61 63 65 42 6f 64 79 20 3d 20 69 73 4e 61 6d paceBody = isNam 00016730: 65 73 70 61 63 65 42 6f 64 79 3b 0a 20 20 20 20 espaceBody;. 00016740: 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a /* @internal */. 00016750: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4a function isJ 00016760: 53 44 6f 63 4e 61 6d 65 73 70 61 63 65 42 6f 64 SDocNamespaceBod 00016770: 79 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 y(node) {. 00016780: 20 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 var kind = nod 00016790: 65 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 20 e.kind;. 000167a0: 72 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 return kind === 000167b0: 37 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 79 /* SyntaxKind 000167c0: 2e 49 64 65 6e 74 69 66 69 65 72 20 2a 2f 0a 20 .Identifier */. 000167d0: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 000167e0: 6e 64 20 3d 3d 3d 20 32 36 31 20 2f 2a 20 53 79 nd === 261 /* Sy 000167f0: 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 75 6c 65 44 ntaxKind.ModuleD 00016800: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3b 0a 20 eclaration */;. 00016810: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4a 53 }. ts.isJS 00016820: 44 6f 63 4e 61 6d 65 73 70 61 63 65 42 6f 64 79 DocNamespaceBody 00016830: 20 3d 20 69 73 4a 53 44 6f 63 4e 61 6d 65 73 70 = isJSDocNamesp 00016840: 61 63 65 42 6f 64 79 3b 0a 20 20 20 20 2f 2a 20 aceBody;. /* 00016850: 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 @internal */. 00016860: 20 66 75 6e 63 74 69 6f 6e 20 69 73 4e 61 6d 65 function isName 00016870: 64 49 6d 70 6f 72 74 42 69 6e 64 69 6e 67 73 28 dImportBindings( 00016880: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 00016890: 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 2e var kind = node. 000168a0: 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 20 72 65 kind;. re 000168b0: 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 36 turn kind === 26 000168c0: 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 9 /* SyntaxKind. 000168d0: 4e 61 6d 65 64 49 6d 70 6f 72 74 73 20 2a 2f 0a NamedImports */. 000168e0: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 000168f0: 69 6e 64 20 3d 3d 3d 20 32 36 38 20 2f 2a 20 53 ind === 268 /* S 00016900: 79 6e 74 61 78 4b 69 6e 64 2e 4e 61 6d 65 73 70 yntaxKind.Namesp 00016910: 61 63 65 49 6d 70 6f 72 74 20 2a 2f 3b 0a 20 20 aceImport */;. 00016920: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4e 61 6d }. ts.isNam 00016930: 65 64 49 6d 70 6f 72 74 42 69 6e 64 69 6e 67 73 edImportBindings 00016940: 20 3d 20 69 73 4e 61 6d 65 64 49 6d 70 6f 72 74 = isNamedImport 00016950: 42 69 6e 64 69 6e 67 73 3b 0a 20 20 20 20 2f 2a Bindings;. /* 00016960: 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 @internal */. 00016970: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4d 6f 64 function isMod 00016980: 75 6c 65 4f 72 45 6e 75 6d 44 65 63 6c 61 72 61 uleOrEnumDeclara 00016990: 74 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 tion(node) {. 000169a0: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 return node 000169b0: 2e 6b 69 6e 64 20 3d 3d 3d 20 32 36 31 20 2f 2a .kind === 261 /* 000169c0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 75 SyntaxKind.Modu 000169d0: 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f leDeclaration */ 000169e0: 20 7c 7c 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d || node.kind == 000169f0: 3d 20 32 36 30 20 2f 2a 20 53 79 6e 74 61 78 4b = 260 /* SyntaxK 00016a00: 69 6e 64 2e 45 6e 75 6d 44 65 63 6c 61 72 61 74 ind.EnumDeclarat 00016a10: 69 6f 6e 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ion */;. }. 00016a20: 20 20 74 73 2e 69 73 4d 6f 64 75 6c 65 4f 72 45 ts.isModuleOrE 00016a30: 6e 75 6d 44 65 63 6c 61 72 61 74 69 6f 6e 20 3d numDeclaration = 00016a40: 20 69 73 4d 6f 64 75 6c 65 4f 72 45 6e 75 6d 44 isModuleOrEnumD 00016a50: 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 20 eclaration;. 00016a60: 66 75 6e 63 74 69 6f 6e 20 69 73 44 65 63 6c 61 function isDecla 00016a70: 72 61 74 69 6f 6e 4b 69 6e 64 28 6b 69 6e 64 29 rationKind(kind) 00016a80: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00016a90: 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 31 34 20 2f n kind === 214 / 00016aa0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 72 72 * SyntaxKind.Arr 00016ab0: 6f 77 46 75 6e 63 74 69 6f 6e 20 2a 2f 0a 20 20 owFunction */. 00016ac0: 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e || kin 00016ad0: 64 20 3d 3d 3d 20 32 30 33 20 2f 2a 20 53 79 6e d === 203 /* Syn 00016ae0: 74 61 78 4b 69 6e 64 2e 42 69 6e 64 69 6e 67 45 taxKind.BindingE 00016af0: 6c 65 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 lement */. 00016b00: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 00016b10: 3d 20 32 35 37 20 2f 2a 20 53 79 6e 74 61 78 4b = 257 /* SyntaxK 00016b20: 69 6e 64 2e 43 6c 61 73 73 44 65 63 6c 61 72 61 ind.ClassDeclara 00016b30: 74 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 tion */. 00016b40: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 00016b50: 32 32 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 226 /* SyntaxKin 00016b60: 64 2e 43 6c 61 73 73 45 78 70 72 65 73 73 69 6f d.ClassExpressio 00016b70: 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 n */. 00016b80: 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 37 30 || kind === 170 00016b90: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 /* SyntaxKind.C 00016ba0: 6c 61 73 73 53 74 61 74 69 63 42 6c 6f 63 6b 44 lassStaticBlockD 00016bb0: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 eclaration */. 00016bc0: 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e || kin 00016bd0: 64 20 3d 3d 3d 20 31 37 31 20 2f 2a 20 53 79 6e d === 171 /* Syn 00016be0: 74 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 72 75 63 taxKind.Construc 00016bf0: 74 6f 72 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 tor */. 00016c00: 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 || kind === 2 00016c10: 36 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 60 /* SyntaxKind 00016c20: 2e 45 6e 75 6d 44 65 63 6c 61 72 61 74 69 6f 6e .EnumDeclaration 00016c30: 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 */. 00016c40: 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 39 39 20 || kind === 299 00016c50: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 6e /* SyntaxKind.En 00016c60: 75 6d 4d 65 6d 62 65 72 20 2a 2f 0a 20 20 20 20 umMember */. 00016c70: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 00016c80: 3d 3d 3d 20 32 37 35 20 2f 2a 20 53 79 6e 74 61 === 275 /* Synta 00016c90: 78 4b 69 6e 64 2e 45 78 70 6f 72 74 53 70 65 63 xKind.ExportSpec 00016ca0: 69 66 69 65 72 20 2a 2f 0a 20 20 20 20 20 20 20 ifier */. 00016cb0: 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d || kind === 00016cc0: 20 32 35 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 256 /* SyntaxKi 00016cd0: 6e 64 2e 46 75 6e 63 74 69 6f 6e 44 65 63 6c 61 nd.FunctionDecla 00016ce0: 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 ration */. 00016cf0: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 00016d00: 3d 20 32 31 33 20 2f 2a 20 53 79 6e 74 61 78 4b = 213 /* SyntaxK 00016d10: 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 45 78 70 72 ind.FunctionExpr 00016d20: 65 73 73 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 ession */. 00016d30: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 00016d40: 3d 20 31 37 32 20 2f 2a 20 53 79 6e 74 61 78 4b = 172 /* SyntaxK 00016d50: 69 6e 64 2e 47 65 74 41 63 63 65 73 73 6f 72 20 ind.GetAccessor 00016d60: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 00016d70: 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 36 37 20 2f | kind === 267 / 00016d80: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d 70 * SyntaxKind.Imp 00016d90: 6f 72 74 43 6c 61 75 73 65 20 2a 2f 0a 20 20 20 ortClause */. 00016da0: 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 || kind 00016db0: 20 3d 3d 3d 20 32 36 35 20 2f 2a 20 53 79 6e 74 === 265 /* Synt 00016dc0: 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 45 71 75 axKind.ImportEqu 00016dd0: 61 6c 73 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a alsDeclaration * 00016de0: 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c /. || 00016df0: 20 6b 69 6e 64 20 3d 3d 3d 20 32 37 30 20 2f 2a kind === 270 /* 00016e00: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d 70 6f SyntaxKind.Impo 00016e10: 72 74 53 70 65 63 69 66 69 65 72 20 2a 2f 0a 20 rtSpecifier */. 00016e20: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 00016e30: 6e 64 20 3d 3d 3d 20 32 35 38 20 2f 2a 20 53 79 nd === 258 /* Sy 00016e40: 6e 74 61 78 4b 69 6e 64 2e 49 6e 74 65 72 66 61 ntaxKind.Interfa 00016e50: 63 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f ceDeclaration */ 00016e60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 . || 00016e70: 6b 69 6e 64 20 3d 3d 3d 20 32 38 35 20 2f 2a 20 kind === 285 /* 00016e80: 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 41 74 SyntaxKind.JsxAt 00016e90: 74 72 69 62 75 74 65 20 2a 2f 0a 20 20 20 20 20 tribute */. 00016ea0: 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d || kind = 00016eb0: 3d 3d 20 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 == 169 /* Syntax 00016ec0: 4b 69 6e 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 Kind.MethodDecla 00016ed0: 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 ration */. 00016ee0: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 00016ef0: 3d 20 31 36 38 20 2f 2a 20 53 79 6e 74 61 78 4b = 168 /* SyntaxK 00016f00: 69 6e 64 2e 4d 65 74 68 6f 64 53 69 67 6e 61 74 ind.MethodSignat 00016f10: 75 72 65 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 ure */. 00016f20: 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 || kind === 2 00016f30: 36 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 61 /* SyntaxKind 00016f40: 2e 4d 6f 64 75 6c 65 44 65 63 6c 61 72 61 74 69 .ModuleDeclarati 00016f50: 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 on */. 00016f60: 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 36 || kind === 26 00016f70: 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4 /* SyntaxKind. 00016f80: 4e 61 6d 65 73 70 61 63 65 45 78 70 6f 72 74 44 NamespaceExportD 00016f90: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 eclaration */. 00016fa0: 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e || kin 00016fb0: 64 20 3d 3d 3d 20 32 36 38 20 2f 2a 20 53 79 6e d === 268 /* Syn 00016fc0: 74 61 78 4b 69 6e 64 2e 4e 61 6d 65 73 70 61 63 taxKind.Namespac 00016fd0: 65 49 6d 70 6f 72 74 20 2a 2f 0a 20 20 20 20 20 eImport */. 00016fe0: 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d || kind = 00016ff0: 3d 3d 20 32 37 34 20 2f 2a 20 53 79 6e 74 61 78 == 274 /* Syntax 00017000: 4b 69 6e 64 2e 4e 61 6d 65 73 70 61 63 65 45 78 Kind.NamespaceEx 00017010: 70 6f 72 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 port */. 00017020: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 00017030: 31 36 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 164 /* SyntaxKin 00017040: 64 2e 50 61 72 61 6d 65 74 65 72 20 2a 2f 0a 20 d.Parameter */. 00017050: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 00017060: 6e 64 20 3d 3d 3d 20 32 39 36 20 2f 2a 20 53 79 nd === 296 /* Sy 00017070: 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 ntaxKind.Propert 00017080: 79 41 73 73 69 67 6e 6d 65 6e 74 20 2a 2f 0a 20 yAssignment */. 00017090: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 000170a0: 6e 64 20 3d 3d 3d 20 31 36 37 20 2f 2a 20 53 79 nd === 167 /* Sy 000170b0: 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 ntaxKind.Propert 000170c0: 79 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a yDeclaration */. 000170d0: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 000170e0: 69 6e 64 20 3d 3d 3d 20 31 36 36 20 2f 2a 20 53 ind === 166 /* S 000170f0: 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 yntaxKind.Proper 00017100: 74 79 53 69 67 6e 61 74 75 72 65 20 2a 2f 0a 20 tySignature */. 00017110: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 00017120: 6e 64 20 3d 3d 3d 20 31 37 33 20 2f 2a 20 53 79 nd === 173 /* Sy 00017130: 6e 74 61 78 4b 69 6e 64 2e 53 65 74 41 63 63 65 ntaxKind.SetAcce 00017140: 73 73 6f 72 20 2a 2f 0a 20 20 20 20 20 20 20 20 ssor */. 00017150: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 00017160: 32 39 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 297 /* SyntaxKin 00017170: 64 2e 53 68 6f 72 74 68 61 6e 64 50 72 6f 70 65 d.ShorthandPrope 00017180: 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 20 2a 2f rtyAssignment */ 00017190: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 . || 000171a0: 6b 69 6e 64 20 3d 3d 3d 20 32 35 39 20 2f 2a 20 kind === 259 /* 000171b0: 53 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 41 SyntaxKind.TypeA 000171c0: 6c 69 61 73 44 65 63 6c 61 72 61 74 69 6f 6e 20 liasDeclaration 000171d0: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 000171e0: 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 36 33 20 2f | kind === 163 / 000171f0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 * SyntaxKind.Typ 00017200: 65 50 61 72 61 6d 65 74 65 72 20 2a 2f 0a 20 20 eParameter */. 00017210: 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e || kin 00017220: 64 20 3d 3d 3d 20 32 35 34 20 2f 2a 20 53 79 6e d === 254 /* Syn 00017230: 74 61 78 4b 69 6e 64 2e 56 61 72 69 61 62 6c 65 taxKind.Variable 00017240: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a 20 Declaration */. 00017250: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 00017260: 6e 64 20 3d 3d 3d 20 33 34 35 20 2f 2a 20 53 79 nd === 345 /* Sy 00017270: 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 54 79 ntaxKind.JSDocTy 00017280: 70 65 64 65 66 54 61 67 20 2a 2f 0a 20 20 20 20 pedefTag */. 00017290: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 000172a0: 3d 3d 3d 20 33 33 38 20 2f 2a 20 53 79 6e 74 61 === 338 /* Synta 000172b0: 78 4b 69 6e 64 2e 4a 53 44 6f 63 43 61 6c 6c 62 xKind.JSDocCallb 000172c0: 61 63 6b 54 61 67 20 2a 2f 0a 20 20 20 20 20 20 ackTag */. 000172d0: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 000172e0: 3d 20 33 34 37 20 2f 2a 20 53 79 6e 74 61 78 4b = 347 /* SyntaxK 000172f0: 69 6e 64 2e 4a 53 44 6f 63 50 72 6f 70 65 72 74 ind.JSDocPropert 00017300: 79 54 61 67 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 yTag */;. }. 00017310: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 44 65 function isDe 00017320: 63 6c 61 72 61 74 69 6f 6e 53 74 61 74 65 6d 65 clarationStateme 00017330: 6e 74 4b 69 6e 64 28 6b 69 6e 64 29 20 7b 0a 20 ntKind(kind) {. 00017340: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b 69 return ki 00017350: 6e 64 20 3d 3d 3d 20 32 35 36 20 2f 2a 20 53 79 nd === 256 /* Sy 00017360: 6e 74 61 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f ntaxKind.Functio 00017370: 6e 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a nDeclaration */. 00017380: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 00017390: 69 6e 64 20 3d 3d 3d 20 32 37 36 20 2f 2a 20 53 ind === 276 /* S 000173a0: 79 6e 74 61 78 4b 69 6e 64 2e 4d 69 73 73 69 6e yntaxKind.Missin 000173b0: 67 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a gDeclaration */. 000173c0: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 000173d0: 69 6e 64 20 3d 3d 3d 20 32 35 37 20 2f 2a 20 53 ind === 257 /* S 000173e0: 79 6e 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 44 yntaxKind.ClassD 000173f0: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 eclaration */. 00017400: 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e || kin 00017410: 64 20 3d 3d 3d 20 32 35 38 20 2f 2a 20 53 79 6e d === 258 /* Syn 00017420: 74 61 78 4b 69 6e 64 2e 49 6e 74 65 72 66 61 63 taxKind.Interfac 00017430: 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a eDeclaration */. 00017440: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 00017450: 69 6e 64 20 3d 3d 3d 20 32 35 39 20 2f 2a 20 53 ind === 259 /* S 00017460: 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 41 6c yntaxKind.TypeAl 00017470: 69 61 73 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a iasDeclaration * 00017480: 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c /. || 00017490: 20 6b 69 6e 64 20 3d 3d 3d 20 32 36 30 20 2f 2a kind === 260 /* 000174a0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 6e 75 6d SyntaxKind.Enum 000174b0: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a 20 Declaration */. 000174c0: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 000174d0: 6e 64 20 3d 3d 3d 20 32 36 31 20 2f 2a 20 53 79 nd === 261 /* Sy 000174e0: 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 75 6c 65 44 ntaxKind.ModuleD 000174f0: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 eclaration */. 00017500: 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e || kin 00017510: 64 20 3d 3d 3d 20 32 36 36 20 2f 2a 20 53 79 6e d === 266 /* Syn 00017520: 74 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 44 65 taxKind.ImportDe 00017530: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 20 claration */. 00017540: 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 || kind 00017550: 20 3d 3d 3d 20 32 36 35 20 2f 2a 20 53 79 6e 74 === 265 /* Synt 00017560: 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 45 71 75 axKind.ImportEqu 00017570: 61 6c 73 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a alsDeclaration * 00017580: 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c /. || 00017590: 20 6b 69 6e 64 20 3d 3d 3d 20 32 37 32 20 2f 2a kind === 272 /* 000175a0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 78 70 6f SyntaxKind.Expo 000175b0: 72 74 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f rtDeclaration */ 000175c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 . || 000175d0: 6b 69 6e 64 20 3d 3d 3d 20 32 37 31 20 2f 2a 20 kind === 271 /* 000175e0: 53 79 6e 74 61 78 4b 69 6e 64 2e 45 78 70 6f 72 SyntaxKind.Expor 000175f0: 74 41 73 73 69 67 6e 6d 65 6e 74 20 2a 2f 0a 20 tAssignment */. 00017600: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 00017610: 6e 64 20 3d 3d 3d 20 32 36 34 20 2f 2a 20 53 79 nd === 264 /* Sy 00017620: 6e 74 61 78 4b 69 6e 64 2e 4e 61 6d 65 73 70 61 ntaxKind.Namespa 00017630: 63 65 45 78 70 6f 72 74 44 65 63 6c 61 72 61 74 ceExportDeclarat 00017640: 69 6f 6e 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ion */;. }. 00017650: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 74 61 function isSta 00017660: 74 65 6d 65 6e 74 4b 69 6e 64 42 75 74 4e 6f 74 tementKindButNot 00017670: 44 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 28 DeclarationKind( 00017680: 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 kind) {. 00017690: 72 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 return kind === 000176a0: 32 34 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 246 /* SyntaxKin 000176b0: 64 2e 42 72 65 61 6b 53 74 61 74 65 6d 65 6e 74 d.BreakStatement 000176c0: 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 */. 000176d0: 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 34 35 20 || kind === 245 000176e0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f /* SyntaxKind.Co 000176f0: 6e 74 69 6e 75 65 53 74 61 74 65 6d 65 6e 74 20 ntinueStatement 00017700: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 00017710: 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 35 33 20 2f | kind === 253 / 00017720: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 44 65 62 * SyntaxKind.Deb 00017730: 75 67 67 65 72 53 74 61 74 65 6d 65 6e 74 20 2a uggerStatement * 00017740: 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c /. || 00017750: 20 6b 69 6e 64 20 3d 3d 3d 20 32 34 30 20 2f 2a kind === 240 /* 00017760: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 44 6f 53 74 SyntaxKind.DoSt 00017770: 61 74 65 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 atement */. 00017780: 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d || kind = 00017790: 3d 3d 20 32 33 38 20 2f 2a 20 53 79 6e 74 61 78 == 238 /* Syntax 000177a0: 4b 69 6e 64 2e 45 78 70 72 65 73 73 69 6f 6e 53 Kind.ExpressionS 000177b0: 74 61 74 65 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 tatement */. 000177c0: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 000177d0: 3d 3d 3d 20 32 33 36 20 2f 2a 20 53 79 6e 74 61 === 236 /* Synta 000177e0: 78 4b 69 6e 64 2e 45 6d 70 74 79 53 74 61 74 65 xKind.EmptyState 000177f0: 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 ment */. 00017800: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 00017810: 32 34 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 243 /* SyntaxKin 00017820: 64 2e 46 6f 72 49 6e 53 74 61 74 65 6d 65 6e 74 d.ForInStatement 00017830: 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 */. 00017840: 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 34 34 20 || kind === 244 00017850: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 6f /* SyntaxKind.Fo 00017860: 72 4f 66 53 74 61 74 65 6d 65 6e 74 20 2a 2f 0a rOfStatement */. 00017870: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 00017880: 69 6e 64 20 3d 3d 3d 20 32 34 32 20 2f 2a 20 53 ind === 242 /* S 00017890: 79 6e 74 61 78 4b 69 6e 64 2e 46 6f 72 53 74 61 yntaxKind.ForSta 000178a0: 74 65 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 tement */. 000178b0: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 000178c0: 3d 20 32 33 39 20 2f 2a 20 53 79 6e 74 61 78 4b = 239 /* SyntaxK 000178d0: 69 6e 64 2e 49 66 53 74 61 74 65 6d 65 6e 74 20 ind.IfStatement 000178e0: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 000178f0: 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 35 30 20 2f | kind === 250 / 00017900: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4c 61 62 * SyntaxKind.Lab 00017910: 65 6c 65 64 53 74 61 74 65 6d 65 6e 74 20 2a 2f eledStatement */ 00017920: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 . || 00017930: 6b 69 6e 64 20 3d 3d 3d 20 32 34 37 20 2f 2a 20 kind === 247 /* 00017940: 53 79 6e 74 61 78 4b 69 6e 64 2e 52 65 74 75 72 SyntaxKind.Retur 00017950: 6e 53 74 61 74 65 6d 65 6e 74 20 2a 2f 0a 20 20 nStatement */. 00017960: 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e || kin 00017970: 64 20 3d 3d 3d 20 32 34 39 20 2f 2a 20 53 79 6e d === 249 /* Syn 00017980: 74 61 78 4b 69 6e 64 2e 53 77 69 74 63 68 53 74 taxKind.SwitchSt 00017990: 61 74 65 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 atement */. 000179a0: 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d || kind = 000179b0: 3d 3d 20 32 35 31 20 2f 2a 20 53 79 6e 74 61 78 == 251 /* Syntax 000179c0: 4b 69 6e 64 2e 54 68 72 6f 77 53 74 61 74 65 6d Kind.ThrowStatem 000179d0: 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 ent */. 000179e0: 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 || kind === 2 000179f0: 35 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 52 /* SyntaxKind 00017a00: 2e 54 72 79 53 74 61 74 65 6d 65 6e 74 20 2a 2f .TryStatement */ 00017a10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 . || 00017a20: 6b 69 6e 64 20 3d 3d 3d 20 32 33 37 20 2f 2a 20 kind === 237 /* 00017a30: 53 79 6e 74 61 78 4b 69 6e 64 2e 56 61 72 69 61 SyntaxKind.Varia 00017a40: 62 6c 65 53 74 61 74 65 6d 65 6e 74 20 2a 2f 0a bleStatement */. 00017a50: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 00017a60: 69 6e 64 20 3d 3d 3d 20 32 34 31 20 2f 2a 20 53 ind === 241 /* S 00017a70: 79 6e 74 61 78 4b 69 6e 64 2e 57 68 69 6c 65 53 yntaxKind.WhileS 00017a80: 74 61 74 65 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 tatement */. 00017a90: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 00017aa0: 3d 3d 3d 20 32 34 38 20 2f 2a 20 53 79 6e 74 61 === 248 /* Synta 00017ab0: 78 4b 69 6e 64 2e 57 69 74 68 53 74 61 74 65 6d xKind.WithStatem 00017ac0: 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 ent */. 00017ad0: 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 33 || kind === 3 00017ae0: 34 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 49 /* SyntaxKind 00017af0: 2e 4e 6f 74 45 6d 69 74 74 65 64 53 74 61 74 65 .NotEmittedState 00017b00: 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 ment */. 00017b10: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 00017b20: 33 35 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 353 /* SyntaxKin 00017b30: 64 2e 45 6e 64 4f 66 44 65 63 6c 61 72 61 74 69 d.EndOfDeclarati 00017b40: 6f 6e 4d 61 72 6b 65 72 20 2a 2f 0a 20 20 20 20 onMarker */. 00017b50: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 00017b60: 3d 3d 3d 20 33 35 32 20 2f 2a 20 53 79 6e 74 61 === 352 /* Synta 00017b70: 78 4b 69 6e 64 2e 4d 65 72 67 65 44 65 63 6c 61 xKind.MergeDecla 00017b80: 72 61 74 69 6f 6e 4d 61 72 6b 65 72 20 2a 2f 3b rationMarker */; 00017b90: 0a 20 20 20 20 7d 0a 20 20 20 20 2f 2a 20 40 69 . }. /* @i 00017ba0: 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 nternal */. f 00017bb0: 75 6e 63 74 69 6f 6e 20 69 73 44 65 63 6c 61 72 unction isDeclar 00017bc0: 61 74 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 ation(node) {. 00017bd0: 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e 6b if (node.k 00017be0: 69 6e 64 20 3d 3d 3d 20 31 36 33 20 2f 2a 20 53 ind === 163 /* S 00017bf0: 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 50 61 yntaxKind.TypePa 00017c00: 72 61 6d 65 74 65 72 20 2a 2f 29 20 7b 0a 20 20 rameter */) {. 00017c10: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00017c20: 20 28 6e 6f 64 65 2e 70 61 72 65 6e 74 20 26 26 (node.parent && 00017c30: 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b 69 6e node.parent.kin 00017c40: 64 20 21 3d 3d 20 33 34 34 20 2f 2a 20 53 79 6e d !== 344 /* Syn 00017c50: 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 54 65 6d taxKind.JSDocTem 00017c60: 70 6c 61 74 65 54 61 67 20 2a 2f 29 20 7c 7c 20 plateTag */) || 00017c70: 74 73 2e 69 73 49 6e 4a 53 46 69 6c 65 28 6e 6f ts.isInJSFile(no 00017c80: 64 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 de);. }. 00017c90: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 73 return is 00017ca0: 44 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 28 DeclarationKind( 00017cb0: 6e 6f 64 65 2e 6b 69 6e 64 29 3b 0a 20 20 20 20 node.kind);. 00017cc0: 7d 0a 20 20 20 20 74 73 2e 69 73 44 65 63 6c 61 }. ts.isDecla 00017cd0: 72 61 74 69 6f 6e 20 3d 20 69 73 44 65 63 6c 61 ration = isDecla 00017ce0: 72 61 74 69 6f 6e 3b 0a 20 20 20 20 2f 2a 20 40 ration;. /* @ 00017cf0: 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 internal */. 00017d00: 66 75 6e 63 74 69 6f 6e 20 69 73 44 65 63 6c 61 function isDecla 00017d10: 72 61 74 69 6f 6e 53 74 61 74 65 6d 65 6e 74 28 rationStatement( 00017d20: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 00017d30: 72 65 74 75 72 6e 20 69 73 44 65 63 6c 61 72 61 return isDeclara 00017d40: 74 69 6f 6e 53 74 61 74 65 6d 65 6e 74 4b 69 6e tionStatementKin 00017d50: 64 28 6e 6f 64 65 2e 6b 69 6e 64 29 3b 0a 20 20 d(node.kind);. 00017d60: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 44 65 63 }. ts.isDec 00017d70: 6c 61 72 61 74 69 6f 6e 53 74 61 74 65 6d 65 6e larationStatemen 00017d80: 74 20 3d 20 69 73 44 65 63 6c 61 72 61 74 69 6f t = isDeclaratio 00017d90: 6e 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 20 20 nStatement;. 00017da0: 2f 2a 2a 0a 20 20 20 20 20 2a 20 44 65 74 65 72 /**. * Deter 00017db0: 6d 69 6e 65 73 20 77 68 65 74 68 65 72 20 74 68 mines whether th 00017dc0: 65 20 6e 6f 64 65 20 69 73 20 61 20 73 74 61 74 e node is a stat 00017dd0: 65 6d 65 6e 74 20 74 68 61 74 20 69 73 20 6e 6f ement that is no 00017de0: 74 20 61 6c 73 6f 20 61 20 64 65 63 6c 61 72 61 t also a declara 00017df0: 74 69 6f 6e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 tion. */. 00017e00: 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f /* @internal */ 00017e10: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 . function is 00017e20: 53 74 61 74 65 6d 65 6e 74 42 75 74 4e 6f 74 44 StatementButNotD 00017e30: 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 eclaration(node) 00017e40: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00017e50: 6e 20 69 73 53 74 61 74 65 6d 65 6e 74 4b 69 6e n isStatementKin 00017e60: 64 42 75 74 4e 6f 74 44 65 63 6c 61 72 61 74 69 dButNotDeclarati 00017e70: 6f 6e 4b 69 6e 64 28 6e 6f 64 65 2e 6b 69 6e 64 onKind(node.kind 00017e80: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 00017e90: 69 73 53 74 61 74 65 6d 65 6e 74 42 75 74 4e 6f isStatementButNo 00017ea0: 74 44 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 69 tDeclaration = i 00017eb0: 73 53 74 61 74 65 6d 65 6e 74 42 75 74 4e 6f 74 sStatementButNot 00017ec0: 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 Declaration;. 00017ed0: 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f /* @internal */ 00017ee0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 . function is 00017ef0: 53 74 61 74 65 6d 65 6e 74 28 6e 6f 64 65 29 20 Statement(node) 00017f00: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6b 69 {. var ki 00017f10: 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 3b 0a nd = node.kind;. 00017f20: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 return i 00017f30: 73 53 74 61 74 65 6d 65 6e 74 4b 69 6e 64 42 75 sStatementKindBu 00017f40: 74 4e 6f 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b tNotDeclarationK 00017f50: 69 6e 64 28 6b 69 6e 64 29 0a 20 20 20 20 20 20 ind(kind). 00017f60: 20 20 20 20 20 20 7c 7c 20 69 73 44 65 63 6c 61 || isDecla 00017f70: 72 61 74 69 6f 6e 53 74 61 74 65 6d 65 6e 74 4b rationStatementK 00017f80: 69 6e 64 28 6b 69 6e 64 29 0a 20 20 20 20 20 20 ind(kind). 00017f90: 20 20 20 20 20 20 7c 7c 20 69 73 42 6c 6f 63 6b || isBlock 00017fa0: 53 74 61 74 65 6d 65 6e 74 28 6e 6f 64 65 29 3b Statement(node); 00017fb0: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00017fc0: 53 74 61 74 65 6d 65 6e 74 20 3d 20 69 73 53 74 Statement = isSt 00017fd0: 61 74 65 6d 65 6e 74 3b 0a 20 20 20 20 66 75 6e atement;. fun 00017fe0: 63 74 69 6f 6e 20 69 73 42 6c 6f 63 6b 53 74 61 ction isBlockSta 00017ff0: 74 65 6d 65 6e 74 28 6e 6f 64 65 29 20 7b 0a 20 tement(node) {. 00018000: 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e if (node. 00018010: 6b 69 6e 64 20 21 3d 3d 20 32 33 35 20 2f 2a 20 kind !== 235 /* 00018020: 53 79 6e 74 61 78 4b 69 6e 64 2e 42 6c 6f 63 6b SyntaxKind.Block 00018030: 20 2a 2f 29 0a 20 20 20 20 20 20 20 20 20 20 20 */). 00018040: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 return false;. 00018050: 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e if (node. 00018060: 70 61 72 65 6e 74 20 21 3d 3d 20 75 6e 64 65 66 parent !== undef 00018070: 69 6e 65 64 29 20 7b 0a 20 20 20 20 20 20 20 20 ined) {. 00018080: 20 20 20 20 69 66 20 28 6e 6f 64 65 2e 70 61 72 if (node.par 00018090: 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 32 35 32 ent.kind === 252 000180a0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 /* SyntaxKind.T 000180b0: 72 79 53 74 61 74 65 6d 65 6e 74 20 2a 2f 20 7c ryStatement */ | 000180c0: 7c 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b 69 | node.parent.ki 000180d0: 6e 64 20 3d 3d 3d 20 32 39 32 20 2f 2a 20 53 79 nd === 292 /* Sy 000180e0: 6e 74 61 78 4b 69 6e 64 2e 43 61 74 63 68 43 6c ntaxKind.CatchCl 000180f0: 61 75 73 65 20 2a 2f 29 20 7b 0a 20 20 20 20 20 ause */) {. 00018100: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00018110: 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 n false;. 00018120: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d }. } 00018130: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 00018140: 21 74 73 2e 69 73 46 75 6e 63 74 69 6f 6e 42 6c !ts.isFunctionBl 00018150: 6f 63 6b 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d ock(node);. } 00018160: 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 . /**. * 00018170: 4e 4f 54 45 3a 20 54 68 69 73 20 69 73 20 73 69 NOTE: This is si 00018180: 6d 69 6c 61 72 20 74 6f 20 60 69 73 53 74 61 74 milar to `isStat 00018190: 65 6d 65 6e 74 60 20 62 75 74 20 64 6f 65 73 20 ement` but does 000181a0: 6e 6f 74 20 61 63 63 65 73 73 20 70 61 72 65 6e not access paren 000181b0: 74 20 70 6f 69 6e 74 65 72 73 2e 0a 20 20 20 20 t pointers.. 000181c0: 20 2a 2f 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 */. /* @inte 000181d0: 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 rnal */. func 000181e0: 74 69 6f 6e 20 69 73 53 74 61 74 65 6d 65 6e 74 tion isStatement 000181f0: 4f 72 42 6c 6f 63 6b 28 6e 6f 64 65 29 20 7b 0a OrBlock(node) {. 00018200: 20 20 20 20 20 20 20 20 76 61 72 20 6b 69 6e 64 var kind 00018210: 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 3b 0a 20 20 = node.kind;. 00018220: 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 73 53 return isS 00018230: 74 61 74 65 6d 65 6e 74 4b 69 6e 64 42 75 74 4e tatementKindButN 00018240: 6f 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e otDeclarationKin 00018250: 64 28 6b 69 6e 64 29 0a 20 20 20 20 20 20 20 20 d(kind). 00018260: 20 20 20 20 7c 7c 20 69 73 44 65 63 6c 61 72 61 || isDeclara 00018270: 74 69 6f 6e 53 74 61 74 65 6d 65 6e 74 4b 69 6e tionStatementKin 00018280: 64 28 6b 69 6e 64 29 0a 20 20 20 20 20 20 20 20 d(kind). 00018290: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 000182a0: 32 33 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 235 /* SyntaxKin 000182b0: 64 2e 42 6c 6f 63 6b 20 2a 2f 3b 0a 20 20 20 20 d.Block */;. 000182c0: 7d 0a 20 20 20 20 74 73 2e 69 73 53 74 61 74 65 }. ts.isState 000182d0: 6d 65 6e 74 4f 72 42 6c 6f 63 6b 20 3d 20 69 73 mentOrBlock = is 000182e0: 53 74 61 74 65 6d 65 6e 74 4f 72 42 6c 6f 63 6b StatementOrBlock 000182f0: 3b 0a 20 20 20 20 2f 2f 20 4d 6f 64 75 6c 65 20 ;. // Module 00018300: 72 65 66 65 72 65 6e 63 65 73 0a 20 20 20 20 2f references. / 00018310: 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 * @internal */. 00018320: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4d 6f function isMo 00018330: 64 75 6c 65 52 65 66 65 72 65 6e 63 65 28 6e 6f duleReference(no 00018340: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 de) {. va 00018350: 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 r kind = node.ki 00018360: 6e 64 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 nd;. retu 00018370: 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 37 37 20 rn kind === 277 00018380: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 78 /* SyntaxKind.Ex 00018390: 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 52 65 66 65 ternalModuleRefe 000183a0: 72 65 6e 63 65 20 2a 2f 0a 20 20 20 20 20 20 20 rence */. 000183b0: 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d || kind === 000183c0: 20 31 36 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 161 /* SyntaxKi 000183d0: 6e 64 2e 51 75 61 6c 69 66 69 65 64 4e 61 6d 65 nd.QualifiedName 000183e0: 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 */. 000183f0: 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 37 39 20 2f || kind === 79 / 00018400: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 64 65 * SyntaxKind.Ide 00018410: 6e 74 69 66 69 65 72 20 2a 2f 3b 0a 20 20 20 20 ntifier */;. 00018420: 7d 0a 20 20 20 20 74 73 2e 69 73 4d 6f 64 75 6c }. ts.isModul 00018430: 65 52 65 66 65 72 65 6e 63 65 20 3d 20 69 73 4d eReference = isM 00018440: 6f 64 75 6c 65 52 65 66 65 72 65 6e 63 65 3b 0a oduleReference;. 00018450: 20 20 20 20 2f 2f 20 4a 53 58 0a 20 20 20 20 2f // JSX. / 00018460: 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 * @internal */. 00018470: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4a 73 function isJs 00018480: 78 54 61 67 4e 61 6d 65 45 78 70 72 65 73 73 69 xTagNameExpressi 00018490: 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 on(node) {. 000184a0: 20 20 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f var kind = no 000184b0: 64 65 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 de.kind;. 000184c0: 20 72 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d return kind === 000184d0: 20 31 30 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 108 /* SyntaxKi 000184e0: 6e 64 2e 54 68 69 73 4b 65 79 77 6f 72 64 20 2a nd.ThisKeyword * 000184f0: 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c /. || 00018500: 20 6b 69 6e 64 20 3d 3d 3d 20 37 39 20 2f 2a 20 kind === 79 /* 00018510: 53 79 6e 74 61 78 4b 69 6e 64 2e 49 64 65 6e 74 SyntaxKind.Ident 00018520: 69 66 69 65 72 20 2a 2f 0a 20 20 20 20 20 20 20 ifier */. 00018530: 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d || kind === 00018540: 20 32 30 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 206 /* SyntaxKi 00018550: 6e 64 2e 50 72 6f 70 65 72 74 79 41 63 63 65 73 nd.PropertyAcces 00018560: 73 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3b 0a sExpression */;. 00018570: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4a }. ts.isJ 00018580: 73 78 54 61 67 4e 61 6d 65 45 78 70 72 65 73 73 sxTagNameExpress 00018590: 69 6f 6e 20 3d 20 69 73 4a 73 78 54 61 67 4e 61 ion = isJsxTagNa 000185a0: 6d 65 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 meExpression;. 000185b0: 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a /* @internal * 000185c0: 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 /. function i 000185d0: 73 4a 73 78 43 68 69 6c 64 28 6e 6f 64 65 29 20 sJsxChild(node) 000185e0: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6b 69 {. var ki 000185f0: 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 3b 0a nd = node.kind;. 00018600: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b return k 00018610: 69 6e 64 20 3d 3d 3d 20 32 37 38 20 2f 2a 20 53 ind === 278 /* S 00018620: 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 45 6c 65 yntaxKind.JsxEle 00018630: 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 ment */. 00018640: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 00018650: 32 38 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 288 /* SyntaxKin 00018660: 64 2e 4a 73 78 45 78 70 72 65 73 73 69 6f 6e 20 d.JsxExpression 00018670: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 00018680: 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 37 39 20 2f | kind === 279 / 00018690: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 * SyntaxKind.Jsx 000186a0: 53 65 6c 66 43 6c 6f 73 69 6e 67 45 6c 65 6d 65 SelfClosingEleme 000186b0: 6e 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 nt */. 000186c0: 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 31 || kind === 11 000186d0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a /* SyntaxKind.J 000186e0: 73 78 54 65 78 74 20 2a 2f 0a 20 20 20 20 20 20 sxText */. 000186f0: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 00018700: 3d 20 32 38 32 20 2f 2a 20 53 79 6e 74 61 78 4b = 282 /* SyntaxK 00018710: 69 6e 64 2e 4a 73 78 46 72 61 67 6d 65 6e 74 20 ind.JsxFragment 00018720: 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 */;. }. ts 00018730: 2e 69 73 4a 73 78 43 68 69 6c 64 20 3d 20 69 73 .isJsxChild = is 00018740: 4a 73 78 43 68 69 6c 64 3b 0a 20 20 20 20 2f 2a JsxChild;. /* 00018750: 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 @internal */. 00018760: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4a 73 78 function isJsx 00018770: 41 74 74 72 69 62 75 74 65 4c 69 6b 65 28 6e 6f AttributeLike(no 00018780: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 de) {. va 00018790: 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 r kind = node.ki 000187a0: 6e 64 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 nd;. retu 000187b0: 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 38 35 20 rn kind === 285 000187c0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 /* SyntaxKind.Js 000187d0: 78 41 74 74 72 69 62 75 74 65 20 2a 2f 0a 20 20 xAttribute */. 000187e0: 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e || kin 000187f0: 64 20 3d 3d 3d 20 32 38 37 20 2f 2a 20 53 79 6e d === 287 /* Syn 00018800: 74 61 78 4b 69 6e 64 2e 4a 73 78 53 70 72 65 61 taxKind.JsxSprea 00018810: 64 41 74 74 72 69 62 75 74 65 20 2a 2f 3b 0a 20 dAttribute */;. 00018820: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4a 73 }. ts.isJs 00018830: 78 41 74 74 72 69 62 75 74 65 4c 69 6b 65 20 3d xAttributeLike = 00018840: 20 69 73 4a 73 78 41 74 74 72 69 62 75 74 65 4c isJsxAttributeL 00018850: 69 6b 65 3b 0a 20 20 20 20 2f 2a 20 40 69 6e 74 ike;. /* @int 00018860: 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e ernal */. fun 00018870: 63 74 69 6f 6e 20 69 73 53 74 72 69 6e 67 4c 69 ction isStringLi 00018880: 74 65 72 61 6c 4f 72 4a 73 78 45 78 70 72 65 73 teralOrJsxExpres 00018890: 73 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 sion(node) {. 000188a0: 20 20 20 20 20 76 61 72 20 6b 69 6e 64 20 3d 20 var kind = 000188b0: 6e 6f 64 65 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 node.kind;. 000188c0: 20 20 20 72 65 74 75 72 6e 20 6b 69 6e 64 20 3d return kind = 000188d0: 3d 3d 20 31 30 20 2f 2a 20 53 79 6e 74 61 78 4b == 10 /* SyntaxK 000188e0: 69 6e 64 2e 53 74 72 69 6e 67 4c 69 74 65 72 61 ind.StringLitera 000188f0: 6c 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 l */. 00018900: 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 38 38 || kind === 288 00018910: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a /* SyntaxKind.J 00018920: 73 78 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3b sxExpression */; 00018930: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00018940: 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 4f 72 4a StringLiteralOrJ 00018950: 73 78 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 69 sxExpression = i 00018960: 73 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 4f 72 sStringLiteralOr 00018970: 4a 73 78 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 JsxExpression;. 00018980: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4a 73 function isJs 00018990: 78 4f 70 65 6e 69 6e 67 4c 69 6b 65 45 6c 65 6d xOpeningLikeElem 000189a0: 65 6e 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ent(node) {. 000189b0: 20 20 20 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e var kind = n 000189c0: 6f 64 65 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 ode.kind;. 000189d0: 20 20 72 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d return kind == 000189e0: 3d 20 32 38 30 20 2f 2a 20 53 79 6e 74 61 78 4b = 280 /* SyntaxK 000189f0: 69 6e 64 2e 4a 73 78 4f 70 65 6e 69 6e 67 45 6c ind.JsxOpeningEl 00018a00: 65 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 20 ement */. 00018a10: 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d || kind === 00018a20: 20 32 37 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 279 /* SyntaxKi 00018a30: 6e 64 2e 4a 73 78 53 65 6c 66 43 6c 6f 73 69 6e nd.JsxSelfClosin 00018a40: 67 45 6c 65 6d 65 6e 74 20 2a 2f 3b 0a 20 20 20 gElement */;. 00018a50: 20 7d 0a 20 20 20 20 74 73 2e 69 73 4a 73 78 4f }. ts.isJsxO 00018a60: 70 65 6e 69 6e 67 4c 69 6b 65 45 6c 65 6d 65 6e peningLikeElemen 00018a70: 74 20 3d 20 69 73 4a 73 78 4f 70 65 6e 69 6e 67 t = isJsxOpening 00018a80: 4c 69 6b 65 45 6c 65 6d 65 6e 74 3b 0a 20 20 20 LikeElement;. 00018a90: 20 2f 2f 20 43 6c 61 75 73 65 73 0a 20 20 20 20 // Clauses. 00018aa0: 66 75 6e 63 74 69 6f 6e 20 69 73 43 61 73 65 4f function isCaseO 00018ab0: 72 44 65 66 61 75 6c 74 43 6c 61 75 73 65 28 6e rDefaultClause(n 00018ac0: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 ode) {. v 00018ad0: 61 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 2e 6b ar kind = node.k 00018ae0: 69 6e 64 3b 0a 20 20 20 20 20 20 20 20 72 65 74 ind;. ret 00018af0: 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 38 39 urn kind === 289 00018b00: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 /* SyntaxKind.C 00018b10: 61 73 65 43 6c 61 75 73 65 20 2a 2f 0a 20 20 20 aseClause */. 00018b20: 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 || kind 00018b30: 20 3d 3d 3d 20 32 39 30 20 2f 2a 20 53 79 6e 74 === 290 /* Synt 00018b40: 61 78 4b 69 6e 64 2e 44 65 66 61 75 6c 74 43 6c axKind.DefaultCl 00018b50: 61 75 73 65 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 ause */;. }. 00018b60: 20 20 20 74 73 2e 69 73 43 61 73 65 4f 72 44 65 ts.isCaseOrDe 00018b70: 66 61 75 6c 74 43 6c 61 75 73 65 20 3d 20 69 73 faultClause = is 00018b80: 43 61 73 65 4f 72 44 65 66 61 75 6c 74 43 6c 61 CaseOrDefaultCla 00018b90: 75 73 65 3b 0a 20 20 20 20 2f 2f 20 4a 53 44 6f use;. // JSDo 00018ba0: 63 0a 20 20 20 20 2f 2a 2a 20 54 72 75 65 20 69 c. /** True i 00018bb0: 66 20 6e 6f 64 65 20 69 73 20 6f 66 20 73 6f 6d f node is of som 00018bc0: 65 20 4a 53 44 6f 63 20 73 79 6e 74 61 78 20 6b e JSDoc syntax k 00018bd0: 69 6e 64 2e 20 2a 2f 0a 20 20 20 20 2f 2a 20 40 ind. */. /* @ 00018be0: 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 internal */. 00018bf0: 66 75 6e 63 74 69 6f 6e 20 69 73 4a 53 44 6f 63 function isJSDoc 00018c00: 4e 6f 64 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 Node(node) {. 00018c10: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 return node 00018c20: 2e 6b 69 6e 64 20 3e 3d 20 33 30 39 20 2f 2a 20 .kind >= 309 /* 00018c30: 53 79 6e 74 61 78 4b 69 6e 64 2e 46 69 72 73 74 SyntaxKind.First 00018c40: 4a 53 44 6f 63 4e 6f 64 65 20 2a 2f 20 26 26 20 JSDocNode */ && 00018c50: 6e 6f 64 65 2e 6b 69 6e 64 20 3c 3d 20 33 34 37 node.kind <= 347 00018c60: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4c /* SyntaxKind.L 00018c70: 61 73 74 4a 53 44 6f 63 4e 6f 64 65 20 2a 2f 3b astJSDocNode */; 00018c80: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00018c90: 4a 53 44 6f 63 4e 6f 64 65 20 3d 20 69 73 4a 53 JSDocNode = isJS 00018ca0: 44 6f 63 4e 6f 64 65 3b 0a 20 20 20 20 2f 2a 2a DocNode;. /** 00018cb0: 20 54 72 75 65 20 69 66 20 6e 6f 64 65 20 69 73 True if node is 00018cc0: 20 6f 66 20 61 20 6b 69 6e 64 20 74 68 61 74 20 of a kind that 00018cd0: 6d 61 79 20 63 6f 6e 74 61 69 6e 20 63 6f 6d 6d may contain comm 00018ce0: 65 6e 74 20 74 65 78 74 2e 20 2a 2f 0a 20 20 20 ent text. */. 00018cf0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 4a 53 44 6f function isJSDo 00018d00: 63 43 6f 6d 6d 65 6e 74 43 6f 6e 74 61 69 6e 69 cCommentContaini 00018d10: 6e 67 4e 6f 64 65 28 6e 6f 64 65 29 20 7b 0a 20 ngNode(node) {. 00018d20: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 00018d30: 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 33 32 30 20 de.kind === 320 00018d40: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 /* SyntaxKind.JS 00018d50: 44 6f 63 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 Doc */. 00018d60: 20 20 20 7c 7c 20 6e 6f 64 65 2e 6b 69 6e 64 20 || node.kind 00018d70: 3d 3d 3d 20 33 31 39 20 2f 2a 20 53 79 6e 74 61 === 319 /* Synta 00018d80: 78 4b 69 6e 64 2e 4a 53 44 6f 63 4e 61 6d 65 70 xKind.JSDocNamep 00018d90: 61 74 68 54 79 70 65 20 2a 2f 0a 20 20 20 20 20 athType */. 00018da0: 20 20 20 20 20 20 20 7c 7c 20 6e 6f 64 65 2e 6b || node.k 00018db0: 69 6e 64 20 3d 3d 3d 20 33 32 31 20 2f 2a 20 53 ind === 321 /* S 00018dc0: 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 54 yntaxKind.JSDocT 00018dd0: 65 78 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 ext */. 00018de0: 20 20 20 7c 7c 20 69 73 4a 53 44 6f 63 4c 69 6e || isJSDocLin 00018df0: 6b 4c 69 6b 65 28 6e 6f 64 65 29 0a 20 20 20 20 kLike(node). 00018e00: 20 20 20 20 20 20 20 20 7c 7c 20 69 73 4a 53 44 || isJSD 00018e10: 6f 63 54 61 67 28 6e 6f 64 65 29 0a 20 20 20 20 ocTag(node). 00018e20: 20 20 20 20 20 20 20 20 7c 7c 20 74 73 2e 69 73 || ts.is 00018e30: 4a 53 44 6f 63 54 79 70 65 4c 69 74 65 72 61 6c JSDocTypeLiteral 00018e40: 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 (node). 00018e50: 20 20 20 7c 7c 20 74 73 2e 69 73 4a 53 44 6f 63 || ts.isJSDoc 00018e60: 53 69 67 6e 61 74 75 72 65 28 6e 6f 64 65 29 3b Signature(node); 00018e70: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00018e80: 4a 53 44 6f 63 43 6f 6d 6d 65 6e 74 43 6f 6e 74 JSDocCommentCont 00018e90: 61 69 6e 69 6e 67 4e 6f 64 65 20 3d 20 69 73 4a ainingNode = isJ 00018ea0: 53 44 6f 63 43 6f 6d 6d 65 6e 74 43 6f 6e 74 61 SDocCommentConta 00018eb0: 69 6e 69 6e 67 4e 6f 64 65 3b 0a 20 20 20 20 2f iningNode;. / 00018ec0: 2f 20 54 4f 44 4f 3a 20 64 65 74 65 72 6d 69 6e / TODO: determin 00018ed0: 65 20 77 68 61 74 20 74 68 69 73 20 64 6f 65 73 e what this does 00018ee0: 20 62 65 66 6f 72 65 20 6d 61 6b 69 6e 67 20 69 before making i 00018ef0: 74 20 70 75 62 6c 69 63 2e 0a 20 20 20 20 2f 2a t public.. /* 00018f00: 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 @internal */. 00018f10: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4a 53 44 function isJSD 00018f20: 6f 63 54 61 67 28 6e 6f 64 65 29 20 7b 0a 20 20 ocTag(node) {. 00018f30: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 return nod 00018f40: 65 2e 6b 69 6e 64 20 3e 3d 20 33 32 37 20 2f 2a e.kind >= 327 /* 00018f50: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 69 72 73 SyntaxKind.Firs 00018f60: 74 4a 53 44 6f 63 54 61 67 4e 6f 64 65 20 2a 2f tJSDocTagNode */ 00018f70: 20 26 26 20 6e 6f 64 65 2e 6b 69 6e 64 20 3c 3d && node.kind <= 00018f80: 20 33 34 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 347 /* SyntaxKi 00018f90: 6e 64 2e 4c 61 73 74 4a 53 44 6f 63 54 61 67 4e nd.LastJSDocTagN 00018fa0: 6f 64 65 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ode */;. }. 00018fb0: 20 20 74 73 2e 69 73 4a 53 44 6f 63 54 61 67 20 ts.isJSDocTag 00018fc0: 3d 20 69 73 4a 53 44 6f 63 54 61 67 3b 0a 20 20 = isJSDocTag;. 00018fd0: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 65 74 function isSet 00018fe0: 41 63 63 65 73 73 6f 72 28 6e 6f 64 65 29 20 7b Accessor(node) { 00018ff0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 00019000: 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 37 node.kind === 17 00019010: 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 3 /* SyntaxKind. 00019020: 53 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 3b 0a SetAccessor */;. 00019030: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 53 }. ts.isS 00019040: 65 74 41 63 63 65 73 73 6f 72 20 3d 20 69 73 53 etAccessor = isS 00019050: 65 74 41 63 63 65 73 73 6f 72 3b 0a 20 20 20 20 etAccessor;. 00019060: 66 75 6e 63 74 69 6f 6e 20 69 73 47 65 74 41 63 function isGetAc 00019070: 63 65 73 73 6f 72 28 6e 6f 64 65 29 20 7b 0a 20 cessor(node) {. 00019080: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 00019090: 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 37 32 20 de.kind === 172 000190a0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 47 65 /* SyntaxKind.Ge 000190b0: 74 41 63 63 65 73 73 6f 72 20 2a 2f 3b 0a 20 20 tAccessor */;. 000190c0: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 47 65 74 }. ts.isGet 000190d0: 41 63 63 65 73 73 6f 72 20 3d 20 69 73 47 65 74 Accessor = isGet 000190e0: 41 63 63 65 73 73 6f 72 3b 0a 20 20 20 20 2f 2a Accessor;. /* 000190f0: 2a 20 54 72 75 65 20 69 66 20 68 61 73 20 6a 73 * True if has js 00019100: 64 6f 63 20 6e 6f 64 65 73 20 61 74 74 61 63 68 doc nodes attach 00019110: 65 64 20 74 6f 20 69 74 2e 20 2a 2f 0a 20 20 20 ed to it. */. 00019120: 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f /* @internal */ 00019130: 0a 20 20 20 20 2f 2f 20 54 4f 44 4f 3a 20 47 48 . // TODO: GH 00019140: 23 31 39 38 35 36 20 57 6f 75 6c 64 20 6c 69 6b #19856 Would lik 00019150: 65 20 74 6f 20 72 65 74 75 72 6e 20 60 6e 6f 64 e to return `nod 00019160: 65 20 69 73 20 4e 6f 64 65 20 26 20 7b 20 6a 73 e is Node & { js 00019170: 44 6f 63 3a 20 4a 53 44 6f 63 5b 5d 20 7d 60 20 Doc: JSDoc[] }` 00019180: 62 75 74 20 69 74 20 63 61 75 73 65 73 20 6c 6f but it causes lo 00019190: 6e 67 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 73 ng compile times 000191a0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 68 61 . function ha 000191b0: 73 4a 53 44 6f 63 4e 6f 64 65 73 28 6e 6f 64 65 sJSDocNodes(node 000191c0: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 000191d0: 6a 73 44 6f 63 20 3d 20 6e 6f 64 65 2e 6a 73 44 jsDoc = node.jsD 000191e0: 6f 63 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 oc;. retu 000191f0: 72 6e 20 21 21 6a 73 44 6f 63 20 26 26 20 6a 73 rn !!jsDoc && js 00019200: 44 6f 63 2e 6c 65 6e 67 74 68 20 3e 20 30 3b 0a Doc.length > 0;. 00019210: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 68 61 73 }. ts.has 00019220: 4a 53 44 6f 63 4e 6f 64 65 73 20 3d 20 68 61 73 JSDocNodes = has 00019230: 4a 53 44 6f 63 4e 6f 64 65 73 3b 0a 20 20 20 20 JSDocNodes;. 00019240: 2f 2a 2a 20 54 72 75 65 20 69 66 20 68 61 73 20 /** True if has 00019250: 74 79 70 65 20 6e 6f 64 65 20 61 74 74 61 63 68 type node attach 00019260: 65 64 20 74 6f 20 69 74 2e 20 2a 2f 0a 20 20 20 ed to it. */. 00019270: 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f /* @internal */ 00019280: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 68 61 . function ha 00019290: 73 54 79 70 65 28 6e 6f 64 65 29 20 7b 0a 20 20 sType(node) {. 000192a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 21 6e return !!n 000192b0: 6f 64 65 2e 74 79 70 65 3b 0a 20 20 20 20 7d 0a ode.type;. }. 000192c0: 20 20 20 20 74 73 2e 68 61 73 54 79 70 65 20 3d ts.hasType = 000192d0: 20 68 61 73 54 79 70 65 3b 0a 20 20 20 20 2f 2a hasType;. /* 000192e0: 2a 20 54 72 75 65 20 69 66 20 68 61 73 20 69 6e * True if has in 000192f0: 69 74 69 61 6c 69 7a 65 72 20 6e 6f 64 65 20 61 itializer node a 00019300: 74 74 61 63 68 65 64 20 74 6f 20 69 74 2e 20 2a ttached to it. * 00019310: 2f 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e /. /* @intern 00019320: 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 al */. functi 00019330: 6f 6e 20 68 61 73 49 6e 69 74 69 61 6c 69 7a 65 on hasInitialize 00019340: 72 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 r(node) {. 00019350: 20 20 72 65 74 75 72 6e 20 21 21 6e 6f 64 65 2e return !!node. 00019360: 69 6e 69 74 69 61 6c 69 7a 65 72 3b 0a 20 20 20 initializer;. 00019370: 20 7d 0a 20 20 20 20 74 73 2e 68 61 73 49 6e 69 }. ts.hasIni 00019380: 74 69 61 6c 69 7a 65 72 20 3d 20 68 61 73 49 6e tializer = hasIn 00019390: 69 74 69 61 6c 69 7a 65 72 3b 0a 20 20 20 20 2f itializer;. / 000193a0: 2a 2a 20 54 72 75 65 20 69 66 20 68 61 73 20 69 ** True if has i 000193b0: 6e 69 74 69 61 6c 69 7a 65 72 20 6e 6f 64 65 20 nitializer node 000193c0: 61 74 74 61 63 68 65 64 20 74 6f 20 69 74 2e 20 attached to it. 000193d0: 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 */. function 000193e0: 68 61 73 4f 6e 6c 79 45 78 70 72 65 73 73 69 6f hasOnlyExpressio 000193f0: 6e 49 6e 69 74 69 61 6c 69 7a 65 72 28 6e 6f 64 nInitializer(nod 00019400: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 73 77 69 e) {. swi 00019410: 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 tch (node.kind) 00019420: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 {. ca 00019430: 73 65 20 32 35 34 20 2f 2a 20 53 79 6e 74 61 78 se 254 /* Syntax 00019440: 4b 69 6e 64 2e 56 61 72 69 61 62 6c 65 44 65 63 Kind.VariableDec 00019450: 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 laration */:. 00019460: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 36 case 16 00019470: 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4 /* SyntaxKind. 00019480: 50 61 72 61 6d 65 74 65 72 20 2a 2f 3a 0a 20 20 Parameter */:. 00019490: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 000194a0: 30 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 03 /* SyntaxKind 000194b0: 2e 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 20 .BindingElement 000194c0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 000194d0: 63 61 73 65 20 31 36 37 20 2f 2a 20 53 79 6e 74 case 167 /* Synt 000194e0: 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 44 axKind.PropertyD 000194f0: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 00019500: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00019510: 32 39 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 296 /* SyntaxKin 00019520: 64 2e 50 72 6f 70 65 72 74 79 41 73 73 69 67 6e d.PropertyAssign 00019530: 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ment */:. 00019540: 20 20 20 20 20 63 61 73 65 20 32 39 39 20 2f 2a case 299 /* 00019550: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 6e 75 6d SyntaxKind.Enum 00019560: 4d 65 6d 62 65 72 20 2a 2f 3a 0a 20 20 20 20 20 Member */:. 00019570: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00019580: 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 n true;. 00019590: 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 default:. 000195a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 000195b0: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 urn false;. 000195c0: 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 }. }. t 000195d0: 73 2e 68 61 73 4f 6e 6c 79 45 78 70 72 65 73 73 s.hasOnlyExpress 000195e0: 69 6f 6e 49 6e 69 74 69 61 6c 69 7a 65 72 20 3d ionInitializer = 000195f0: 20 68 61 73 4f 6e 6c 79 45 78 70 72 65 73 73 69 hasOnlyExpressi 00019600: 6f 6e 49 6e 69 74 69 61 6c 69 7a 65 72 3b 0a 20 onInitializer;. 00019610: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4f 62 function isOb 00019620: 6a 65 63 74 4c 69 74 65 72 61 6c 45 6c 65 6d 65 jectLiteralEleme 00019630: 6e 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 nt(node) {. 00019640: 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 6b return node.k 00019650: 69 6e 64 20 3d 3d 3d 20 32 38 35 20 2f 2a 20 53 ind === 285 /* S 00019660: 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 41 74 74 yntaxKind.JsxAtt 00019670: 72 69 62 75 74 65 20 2a 2f 20 7c 7c 20 6e 6f 64 ribute */ || nod 00019680: 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 38 37 20 2f e.kind === 287 / 00019690: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 * SyntaxKind.Jsx 000196a0: 53 70 72 65 61 64 41 74 74 72 69 62 75 74 65 20 SpreadAttribute 000196b0: 2a 2f 20 7c 7c 20 69 73 4f 62 6a 65 63 74 4c 69 */ || isObjectLi 000196c0: 74 65 72 61 6c 45 6c 65 6d 65 6e 74 4c 69 6b 65 teralElementLike 000196d0: 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d 0a 20 20 (node);. }. 000196e0: 20 20 74 73 2e 69 73 4f 62 6a 65 63 74 4c 69 74 ts.isObjectLit 000196f0: 65 72 61 6c 45 6c 65 6d 65 6e 74 20 3d 20 69 73 eralElement = is 00019700: 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 45 6c 65 ObjectLiteralEle 00019710: 6d 65 6e 74 3b 0a 20 20 20 20 2f 2a 20 40 69 6e ment;. /* @in 00019720: 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 ternal */. fu 00019730: 6e 63 74 69 6f 6e 20 69 73 54 79 70 65 52 65 66 nction isTypeRef 00019740: 65 72 65 6e 63 65 54 79 70 65 28 6e 6f 64 65 29 erenceType(node) 00019750: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00019760: 6e 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 n node.kind === 00019770: 31 37 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 178 /* SyntaxKin 00019780: 64 2e 54 79 70 65 52 65 66 65 72 65 6e 63 65 20 d.TypeReference 00019790: 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 6b 69 6e 64 20 */ || node.kind 000197a0: 3d 3d 3d 20 32 32 38 20 2f 2a 20 53 79 6e 74 61 === 228 /* Synta 000197b0: 78 4b 69 6e 64 2e 45 78 70 72 65 73 73 69 6f 6e xKind.Expression 000197c0: 57 69 74 68 54 79 70 65 41 72 67 75 6d 65 6e 74 WithTypeArgument 000197d0: 73 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 s */;. }. 000197e0: 74 73 2e 69 73 54 79 70 65 52 65 66 65 72 65 6e ts.isTypeReferen 000197f0: 63 65 54 79 70 65 20 3d 20 69 73 54 79 70 65 52 ceType = isTypeR 00019800: 65 66 65 72 65 6e 63 65 54 79 70 65 3b 0a 20 20 eferenceType;. 00019810: 20 20 76 61 72 20 4d 41 58 5f 53 4d 49 5f 58 38 var MAX_SMI_X8 00019820: 36 20 3d 20 31 30 37 33 37 34 31 38 32 33 3b 0a 6 = 1073741823;. 00019830: 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c /* @internal 00019840: 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e */. function 00019850: 20 67 75 65 73 73 49 6e 64 65 6e 74 61 74 69 6f guessIndentatio 00019860: 6e 28 6c 69 6e 65 73 29 20 7b 0a 20 20 20 20 20 n(lines) {. 00019870: 20 20 20 76 61 72 20 69 6e 64 65 6e 74 61 74 69 var indentati 00019880: 6f 6e 20 3d 20 4d 41 58 5f 53 4d 49 5f 58 38 36 on = MAX_SMI_X86 00019890: 3b 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 ;. for (v 000198a0: 61 72 20 5f 69 20 3d 20 30 2c 20 6c 69 6e 65 73 ar _i = 0, lines 000198b0: 5f 31 20 3d 20 6c 69 6e 65 73 3b 20 5f 69 20 3c _1 = lines; _i < 000198c0: 20 6c 69 6e 65 73 5f 31 2e 6c 65 6e 67 74 68 3b lines_1.length; 000198d0: 20 5f 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 20 _i++) {. 000198e0: 20 20 20 20 20 76 61 72 20 6c 69 6e 65 20 3d 20 var line = 000198f0: 6c 69 6e 65 73 5f 31 5b 5f 69 5d 3b 0a 20 20 20 lines_1[_i];. 00019900: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6c 69 if (!li 00019910: 6e 65 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 20 20 ne.length) {. 00019920: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e con 00019930: 74 69 6e 75 65 3b 0a 20 20 20 20 20 20 20 20 20 tinue;. 00019940: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 00019950: 20 76 61 72 20 69 20 3d 20 30 3b 0a 20 20 20 20 var i = 0;. 00019960: 20 20 20 20 20 20 20 20 66 6f 72 20 28 3b 20 69 for (; i 00019970: 20 3c 20 6c 69 6e 65 2e 6c 65 6e 67 74 68 20 26 < line.length & 00019980: 26 20 69 20 3c 20 69 6e 64 65 6e 74 61 74 69 6f & i < indentatio 00019990: 6e 3b 20 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 n; i++) {. 000199a0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 74 if (!t 000199b0: 73 2e 69 73 57 68 69 74 65 53 70 61 63 65 4c 69 s.isWhiteSpaceLi 000199c0: 6b 65 28 6c 69 6e 65 2e 63 68 61 72 43 6f 64 65 ke(line.charCode 000199d0: 41 74 28 69 29 29 29 20 7b 0a 20 20 20 20 20 20 At(i))) {. 000199e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br 000199f0: 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 eak;. 00019a00: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 }. 00019a10: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 00019a20: 20 69 66 20 28 69 20 3c 20 69 6e 64 65 6e 74 61 if (i < indenta 00019a30: 74 69 6f 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 tion) {. 00019a40: 20 20 20 20 20 20 20 20 69 6e 64 65 6e 74 61 74 indentat 00019a50: 69 6f 6e 20 3d 20 69 3b 0a 20 20 20 20 20 20 20 ion = i;. 00019a60: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 }. 00019a70: 20 20 20 69 66 20 28 69 6e 64 65 6e 74 61 74 69 if (indentati 00019a80: 6f 6e 20 3d 3d 3d 20 30 29 20 7b 0a 20 20 20 20 on === 0) {. 00019a90: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00019aa0: 72 6e 20 30 3b 0a 20 20 20 20 20 20 20 20 20 20 rn 0;. 00019ab0: 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 }. }. 00019ac0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 6e 64 return ind 00019ad0: 65 6e 74 61 74 69 6f 6e 20 3d 3d 3d 20 4d 41 58 entation === MAX 00019ae0: 5f 53 4d 49 5f 58 38 36 20 3f 20 75 6e 64 65 66 _SMI_X86 ? undef 00019af0: 69 6e 65 64 20 3a 20 69 6e 64 65 6e 74 61 74 69 ined : indentati 00019b00: 6f 6e 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 on;. }. ts 00019b10: 2e 67 75 65 73 73 49 6e 64 65 6e 74 61 74 69 6f .guessIndentatio 00019b20: 6e 20 3d 20 67 75 65 73 73 49 6e 64 65 6e 74 61 n = guessIndenta 00019b30: 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 tion;. functi 00019b40: 6f 6e 20 69 73 53 74 72 69 6e 67 4c 69 74 65 72 on isStringLiter 00019b50: 61 6c 4c 69 6b 65 28 6e 6f 64 65 29 20 7b 0a 20 alLike(node) {. 00019b60: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 00019b70: 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 30 20 2f de.kind === 10 / 00019b80: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 74 72 * SyntaxKind.Str 00019b90: 69 6e 67 4c 69 74 65 72 61 6c 20 2a 2f 20 7c 7c ingLiteral */ || 00019ba0: 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 node.kind === 1 00019bb0: 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4 /* SyntaxKind. 00019bc0: 4e 6f 53 75 62 73 74 69 74 75 74 69 6f 6e 54 65 NoSubstitutionTe 00019bd0: 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c 20 2a 2f mplateLiteral */ 00019be0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 00019bf0: 73 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 4c 69 sStringLiteralLi 00019c00: 6b 65 20 3d 20 69 73 53 74 72 69 6e 67 4c 69 74 ke = isStringLit 00019c10: 65 72 61 6c 4c 69 6b 65 3b 0a 20 20 20 20 66 75 eralLike;. fu 00019c20: 6e 63 74 69 6f 6e 20 69 73 4a 53 44 6f 63 4c 69 nction isJSDocLi 00019c30: 6e 6b 4c 69 6b 65 28 6e 6f 64 65 29 20 7b 0a 20 nkLike(node) {. 00019c40: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 00019c50: 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 33 32 34 20 de.kind === 324 00019c60: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 /* SyntaxKind.JS 00019c70: 44 6f 63 4c 69 6e 6b 20 2a 2f 20 7c 7c 20 6e 6f DocLink */ || no 00019c80: 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 33 32 35 20 de.kind === 325 00019c90: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 /* SyntaxKind.JS 00019ca0: 44 6f 63 4c 69 6e 6b 43 6f 64 65 20 2a 2f 20 7c DocLinkCode */ | 00019cb0: 7c 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 | node.kind === 00019cc0: 33 32 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 326 /* SyntaxKin 00019cd0: 64 2e 4a 53 44 6f 63 4c 69 6e 6b 50 6c 61 69 6e d.JSDocLinkPlain 00019ce0: 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 */;. }. t 00019cf0: 73 2e 69 73 4a 53 44 6f 63 4c 69 6e 6b 4c 69 6b s.isJSDocLinkLik 00019d00: 65 20 3d 20 69 73 4a 53 44 6f 63 4c 69 6e 6b 4c e = isJSDocLinkL 00019d10: 69 6b 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ike;. functio 00019d20: 6e 20 68 61 73 52 65 73 74 50 61 72 61 6d 65 74 n hasRestParamet 00019d30: 65 72 28 73 29 20 7b 0a 20 20 20 20 20 20 20 20 er(s) {. 00019d40: 76 61 72 20 6c 61 73 74 20 3d 20 74 73 2e 6c 61 var last = ts.la 00019d50: 73 74 4f 72 55 6e 64 65 66 69 6e 65 64 28 73 2e stOrUndefined(s. 00019d60: 70 61 72 61 6d 65 74 65 72 73 29 3b 0a 20 20 20 parameters);. 00019d70: 20 20 20 20 20 72 65 74 75 72 6e 20 21 21 6c 61 return !!la 00019d80: 73 74 20 26 26 20 69 73 52 65 73 74 50 61 72 61 st && isRestPara 00019d90: 6d 65 74 65 72 28 6c 61 73 74 29 3b 0a 20 20 20 meter(last);. 00019da0: 20 7d 0a 20 20 20 20 74 73 2e 68 61 73 52 65 73 }. ts.hasRes 00019db0: 74 50 61 72 61 6d 65 74 65 72 20 3d 20 68 61 73 tParameter = has 00019dc0: 52 65 73 74 50 61 72 61 6d 65 74 65 72 3b 0a 20 RestParameter;. 00019dd0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 52 65 function isRe 00019de0: 73 74 50 61 72 61 6d 65 74 65 72 28 6e 6f 64 65 stParameter(node 00019df0: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 00019e00: 74 79 70 65 20 3d 20 74 73 2e 69 73 4a 53 44 6f type = ts.isJSDo 00019e10: 63 50 61 72 61 6d 65 74 65 72 54 61 67 28 6e 6f cParameterTag(no 00019e20: 64 65 29 20 3f 20 28 6e 6f 64 65 2e 74 79 70 65 de) ? (node.type 00019e30: 45 78 70 72 65 73 73 69 6f 6e 20 26 26 20 6e 6f Expression && no 00019e40: 64 65 2e 74 79 70 65 45 78 70 72 65 73 73 69 6f de.typeExpressio 00019e50: 6e 2e 74 79 70 65 29 20 3a 20 6e 6f 64 65 2e 74 n.type) : node.t 00019e60: 79 70 65 3b 0a 20 20 20 20 20 20 20 20 72 65 74 ype;. ret 00019e70: 75 72 6e 20 6e 6f 64 65 2e 64 6f 74 44 6f 74 44 urn node.dotDotD 00019e80: 6f 74 54 6f 6b 65 6e 20 21 3d 3d 20 75 6e 64 65 otToken !== unde 00019e90: 66 69 6e 65 64 20 7c 7c 20 21 21 74 79 70 65 20 fined || !!type 00019ea0: 26 26 20 74 79 70 65 2e 6b 69 6e 64 20 3d 3d 3d && type.kind === 00019eb0: 20 33 31 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 318 /* SyntaxKi 00019ec0: 6e 64 2e 4a 53 44 6f 63 56 61 72 69 61 64 69 63 nd.JSDocVariadic 00019ed0: 54 79 70 65 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 Type */;. }. 00019ee0: 20 20 20 74 73 2e 69 73 52 65 73 74 50 61 72 61 ts.isRestPara 00019ef0: 6d 65 74 65 72 20 3d 20 69 73 52 65 73 74 50 61 meter = isRestPa 00019f00: 72 61 6d 65 74 65 72 3b 0a 20 20 20 20 2f 2f 20 rameter;. // 00019f10: 23 65 6e 64 72 65 67 69 6f 6e 0a 7d 29 28 74 73 #endregion.})(ts 00019f20: 20 7c 7c 20 28 74 73 20 3d 20 7b 7d 29 29 3b 0a || (ts = {}));. 00019f30: 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a /* @internal */. 00019f40: 76 61 72 20 74 73 3b 0a 28 66 75 6e 63 74 69 6f var ts;.(functio 00019f50: 6e 20 28 74 73 29 20 7b 0a 20 20 20 20 74 73 2e n (ts) {. ts. 00019f60: 72 65 73 6f 6c 76 69 6e 67 45 6d 70 74 79 41 72 resolvingEmptyAr 00019f70: 72 61 79 20 3d 20 5b 5d 3b 0a 20 20 20 20 74 73 ray = [];. ts 00019f80: 2e 65 78 74 65 72 6e 61 6c 48 65 6c 70 65 72 73 .externalHelpers 00019f90: 4d 6f 64 75 6c 65 4e 61 6d 65 54 65 78 74 20 3d ModuleNameText = 00019fa0: 20 22 74 73 6c 69 62 22 3b 0a 20 20 20 20 74 73 "tslib";. ts 00019fb0: 2e 64 65 66 61 75 6c 74 4d 61 78 69 6d 75 6d 54 .defaultMaximumT 00019fc0: 72 75 6e 63 61 74 69 6f 6e 4c 65 6e 67 74 68 20 runcationLength 00019fd0: 3d 20 31 36 30 3b 0a 20 20 20 20 74 73 2e 6e 6f = 160;. ts.no 00019fe0: 54 72 75 6e 63 61 74 69 6f 6e 4d 61 78 69 6d 75 TruncationMaximu 00019ff0: 6d 54 72 75 6e 63 61 74 69 6f 6e 4c 65 6e 67 74 mTruncationLengt 0001a000: 68 20 3d 20 31 30 30 30 30 30 30 3b 0a 20 20 20 h = 1000000;. 0001a010: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 44 65 63 function getDec 0001a020: 6c 61 72 61 74 69 6f 6e 4f 66 4b 69 6e 64 28 73 larationOfKind(s 0001a030: 79 6d 62 6f 6c 2c 20 6b 69 6e 64 29 20 7b 0a 20 ymbol, kind) {. 0001a040: 20 20 20 20 20 20 20 76 61 72 20 64 65 63 6c 61 var decla 0001a050: 72 61 74 69 6f 6e 73 20 3d 20 73 79 6d 62 6f 6c rations = symbol 0001a060: 2e 64 65 63 6c 61 72 61 74 69 6f 6e 73 3b 0a 20 .declarations;. 0001a070: 20 20 20 20 20 20 20 69 66 20 28 64 65 63 6c 61 if (decla 0001a080: 72 61 74 69 6f 6e 73 29 20 7b 0a 20 20 20 20 20 rations) {. 0001a090: 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 for (var 0001a0a0: 5f 69 20 3d 20 30 2c 20 64 65 63 6c 61 72 61 74 _i = 0, declarat 0001a0b0: 69 6f 6e 73 5f 31 20 3d 20 64 65 63 6c 61 72 61 ions_1 = declara 0001a0c0: 74 69 6f 6e 73 3b 20 5f 69 20 3c 20 64 65 63 6c tions; _i < decl 0001a0d0: 61 72 61 74 69 6f 6e 73 5f 31 2e 6c 65 6e 67 74 arations_1.lengt 0001a0e0: 68 3b 20 5f 69 2b 2b 29 20 7b 0a 20 20 20 20 20 h; _i++) {. 0001a0f0: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 64 var d 0001a100: 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 64 65 63 eclaration = dec 0001a110: 6c 61 72 61 74 69 6f 6e 73 5f 31 5b 5f 69 5d 3b larations_1[_i]; 0001a120: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0001a130: 20 69 66 20 28 64 65 63 6c 61 72 61 74 69 6f 6e if (declaration 0001a140: 2e 6b 69 6e 64 20 3d 3d 3d 20 6b 69 6e 64 29 20 .kind === kind) 0001a150: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 0001a160: 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 63 return dec 0001a170: 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 20 20 20 laration;. 0001a180: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 0001a190: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0001a1a0: 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 }. retu 0001a1b0: 72 6e 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 rn undefined;. 0001a1c0: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 44 65 }. ts.getDe 0001a1d0: 63 6c 61 72 61 74 69 6f 6e 4f 66 4b 69 6e 64 20 clarationOfKind 0001a1e0: 3d 20 67 65 74 44 65 63 6c 61 72 61 74 69 6f 6e = getDeclaration 0001a1f0: 4f 66 4b 69 6e 64 3b 0a 20 20 20 20 66 75 6e 63 OfKind;. func 0001a200: 74 69 6f 6e 20 67 65 74 44 65 63 6c 61 72 61 74 tion getDeclarat 0001a210: 69 6f 6e 73 4f 66 4b 69 6e 64 28 73 79 6d 62 6f ionsOfKind(symbo 0001a220: 6c 2c 20 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 l, kind) {. 0001a230: 20 20 20 72 65 74 75 72 6e 20 74 73 2e 66 69 6c return ts.fil 0001a240: 74 65 72 28 73 79 6d 62 6f 6c 2e 64 65 63 6c 61 ter(symbol.decla 0001a250: 72 61 74 69 6f 6e 73 20 7c 7c 20 74 73 2e 65 6d rations || ts.em 0001a260: 70 74 79 41 72 72 61 79 2c 20 66 75 6e 63 74 69 ptyArray, functi 0001a270: 6f 6e 20 28 64 29 20 7b 20 72 65 74 75 72 6e 20 on (d) { return 0001a280: 64 2e 6b 69 6e 64 20 3d 3d 3d 20 6b 69 6e 64 3b d.kind === kind; 0001a290: 20 7d 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 });. }. t 0001a2a0: 73 2e 67 65 74 44 65 63 6c 61 72 61 74 69 6f 6e s.getDeclaration 0001a2b0: 73 4f 66 4b 69 6e 64 20 3d 20 67 65 74 44 65 63 sOfKind = getDec 0001a2c0: 6c 61 72 61 74 69 6f 6e 73 4f 66 4b 69 6e 64 3b larationsOfKind; 0001a2d0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 . function cr 0001a2e0: 65 61 74 65 53 79 6d 62 6f 6c 54 61 62 6c 65 28 eateSymbolTable( 0001a2f0: 73 79 6d 62 6f 6c 73 29 20 7b 0a 20 20 20 20 20 symbols) {. 0001a300: 20 20 20 76 61 72 20 72 65 73 75 6c 74 20 3d 20 var result = 0001a310: 6e 65 77 20 74 73 2e 4d 61 70 28 29 3b 0a 20 20 new ts.Map();. 0001a320: 20 20 20 20 20 20 69 66 20 28 73 79 6d 62 6f 6c if (symbol 0001a330: 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 s) {. 0001a340: 20 66 6f 72 20 28 76 61 72 20 5f 69 20 3d 20 30 for (var _i = 0 0001a350: 2c 20 73 79 6d 62 6f 6c 73 5f 31 20 3d 20 73 79 , symbols_1 = sy 0001a360: 6d 62 6f 6c 73 3b 20 5f 69 20 3c 20 73 79 6d 62 mbols; _i < symb 0001a370: 6f 6c 73 5f 31 2e 6c 65 6e 67 74 68 3b 20 5f 69 ols_1.length; _i 0001a380: 2b 2b 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 ++) {. 0001a390: 20 20 20 20 20 20 76 61 72 20 73 79 6d 62 6f 6c var symbol 0001a3a0: 20 3d 20 73 79 6d 62 6f 6c 73 5f 31 5b 5f 69 5d = symbols_1[_i] 0001a3b0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 0001a3c0: 20 20 72 65 73 75 6c 74 2e 73 65 74 28 73 79 6d result.set(sym 0001a3d0: 62 6f 6c 2e 65 73 63 61 70 65 64 4e 61 6d 65 2c bol.escapedName, 0001a3e0: 20 73 79 6d 62 6f 6c 29 3b 0a 20 20 20 20 20 20 symbol);. 0001a3f0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 0001a400: 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e }. return 0001a410: 20 72 65 73 75 6c 74 3b 0a 20 20 20 20 7d 0a 20 result;. }. 0001a420: 20 20 20 74 73 2e 63 72 65 61 74 65 53 79 6d 62 ts.createSymb 0001a430: 6f 6c 54 61 62 6c 65 20 3d 20 63 72 65 61 74 65 olTable = create 0001a440: 53 79 6d 62 6f 6c 54 61 62 6c 65 3b 0a 20 20 20 SymbolTable;. 0001a450: 20 66 75 6e 63 74 69 6f 6e 20 69 73 54 72 61 6e function isTran 0001a460: 73 69 65 6e 74 53 79 6d 62 6f 6c 28 73 79 6d 62 sientSymbol(symb 0001a470: 6f 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 ol) {. re 0001a480: 74 75 72 6e 20 28 73 79 6d 62 6f 6c 2e 66 6c 61 turn (symbol.fla 0001a490: 67 73 20 26 20 33 33 35 35 34 34 33 32 20 2f 2a gs & 33554432 /* 0001a4a0: 20 53 79 6d 62 6f 6c 46 6c 61 67 73 2e 54 72 61 SymbolFlags.Tra 0001a4b0: 6e 73 69 65 6e 74 20 2a 2f 29 20 21 3d 3d 20 30 nsient */) !== 0 0001a4c0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 0001a4d0: 73 54 72 61 6e 73 69 65 6e 74 53 79 6d 62 6f 6c sTransientSymbol 0001a4e0: 20 3d 20 69 73 54 72 61 6e 73 69 65 6e 74 53 79 = isTransientSy 0001a4f0: 6d 62 6f 6c 3b 0a 20 20 20 20 76 61 72 20 73 74 mbol;. var st 0001a500: 72 69 6e 67 57 72 69 74 65 72 20 3d 20 63 72 65 ringWriter = cre 0001a510: 61 74 65 53 69 6e 67 6c 65 4c 69 6e 65 53 74 72 ateSingleLineStr 0001a520: 69 6e 67 57 72 69 74 65 72 28 29 3b 0a 20 20 20 ingWriter();. 0001a530: 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 61 74 65 function create 0001a540: 53 69 6e 67 6c 65 4c 69 6e 65 53 74 72 69 6e 67 SingleLineString 0001a550: 57 72 69 74 65 72 28 29 20 7b 0a 20 20 20 20 20 Writer() {. 0001a560: 20 20 20 76 61 72 20 73 74 72 20 3d 20 22 22 3b var str = ""; 0001a570: 0a 20 20 20 20 20 20 20 20 76 61 72 20 77 72 69 . var wri 0001a580: 74 65 54 65 78 74 20 3d 20 66 75 6e 63 74 69 6f teText = functio 0001a590: 6e 20 28 74 65 78 74 29 20 7b 20 72 65 74 75 72 n (text) { retur 0001a5a0: 6e 20 73 74 72 20 2b 3d 20 74 65 78 74 3b 20 7d n str += text; } 0001a5b0: 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e ;. return 0001a5c0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 {. g 0001a5d0: 65 74 54 65 78 74 3a 20 66 75 6e 63 74 69 6f 6e etText: function 0001a5e0: 20 28 29 20 7b 20 72 65 74 75 72 6e 20 73 74 72 () { return str 0001a5f0: 3b 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 ; },. 0001a600: 20 77 72 69 74 65 3a 20 77 72 69 74 65 54 65 78 write: writeTex 0001a610: 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 t,. r 0001a620: 61 77 57 72 69 74 65 3a 20 77 72 69 74 65 54 65 awWrite: writeTe 0001a630: 78 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 xt,. 0001a640: 77 72 69 74 65 4b 65 79 77 6f 72 64 3a 20 77 72 writeKeyword: wr 0001a650: 69 74 65 54 65 78 74 2c 0a 20 20 20 20 20 20 20 iteText,. 0001a660: 20 20 20 20 20 77 72 69 74 65 4f 70 65 72 61 74 writeOperat 0001a670: 6f 72 3a 20 77 72 69 74 65 54 65 78 74 2c 0a 20 or: writeText,. 0001a680: 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 write 0001a690: 50 75 6e 63 74 75 61 74 69 6f 6e 3a 20 77 72 69 Punctuation: wri 0001a6a0: 74 65 54 65 78 74 2c 0a 20 20 20 20 20 20 20 20 teText,. 0001a6b0: 20 20 20 20 77 72 69 74 65 53 70 61 63 65 3a 20 writeSpace: 0001a6c0: 77 72 69 74 65 54 65 78 74 2c 0a 20 20 20 20 20 writeText,. 0001a6d0: 20 20 20 20 20 20 20 77 72 69 74 65 53 74 72 69 writeStri 0001a6e0: 6e 67 4c 69 74 65 72 61 6c 3a 20 77 72 69 74 65 ngLiteral: write 0001a6f0: 54 65 78 74 2c 0a 20 20 20 20 20 20 20 20 20 20 Text,. 0001a700: 20 20 77 72 69 74 65 4c 69 74 65 72 61 6c 3a 20 writeLiteral: 0001a710: 77 72 69 74 65 54 65 78 74 2c 0a 20 20 20 20 20 writeText,. 0001a720: 20 20 20 20 20 20 20 77 72 69 74 65 50 61 72 61 writePara 0001a730: 6d 65 74 65 72 3a 20 77 72 69 74 65 54 65 78 74 meter: writeText 0001a740: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 72 ,. wr 0001a750: 69 74 65 50 72 6f 70 65 72 74 79 3a 20 77 72 69 iteProperty: wri 0001a760: 74 65 54 65 78 74 2c 0a 20 20 20 20 20 20 20 20 teText,. 0001a770: 20 20 20 20 77 72 69 74 65 53 79 6d 62 6f 6c 3a writeSymbol: 0001a780: 20 66 75 6e 63 74 69 6f 6e 20 28 73 2c 20 5f 29 function (s, _) 0001a790: 20 7b 20 72 65 74 75 72 6e 20 77 72 69 74 65 54 { return writeT 0001a7a0: 65 78 74 28 73 29 3b 20 7d 2c 0a 20 20 20 20 20 ext(s); },. 0001a7b0: 20 20 20 20 20 20 20 77 72 69 74 65 54 72 61 69 writeTrai 0001a7c0: 6c 69 6e 67 53 65 6d 69 63 6f 6c 6f 6e 3a 20 77 lingSemicolon: w 0001a7d0: 72 69 74 65 54 65 78 74 2c 0a 20 20 20 20 20 20 riteText,. 0001a7e0: 20 20 20 20 20 20 77 72 69 74 65 43 6f 6d 6d 65 writeComme 0001a7f0: 6e 74 3a 20 77 72 69 74 65 54 65 78 74 2c 0a 20 nt: writeText,. 0001a800: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 54 65 getTe 0001a810: 78 74 50 6f 73 3a 20 66 75 6e 63 74 69 6f 6e 20 xtPos: function 0001a820: 28 29 20 7b 20 72 65 74 75 72 6e 20 73 74 72 2e () { return str. 0001a830: 6c 65 6e 67 74 68 3b 20 7d 2c 0a 20 20 20 20 20 length; },. 0001a840: 20 20 20 20 20 20 20 67 65 74 4c 69 6e 65 3a 20 getLine: 0001a850: 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 20 72 65 function () { re 0001a860: 74 75 72 6e 20 30 3b 20 7d 2c 0a 20 20 20 20 20 turn 0; },. 0001a870: 20 20 20 20 20 20 20 67 65 74 43 6f 6c 75 6d 6e getColumn 0001a880: 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 20 : function () { 0001a890: 72 65 74 75 72 6e 20 30 3b 20 7d 2c 0a 20 20 20 return 0; },. 0001a8a0: 20 20 20 20 20 20 20 20 20 67 65 74 49 6e 64 65 getInde 0001a8b0: 6e 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 nt: function () 0001a8c0: 7b 20 72 65 74 75 72 6e 20 30 3b 20 7d 2c 0a 20 { return 0; },. 0001a8d0: 20 20 20 20 20 20 20 20 20 20 20 69 73 41 74 53 isAtS 0001a8e0: 74 61 72 74 4f 66 4c 69 6e 65 3a 20 66 75 6e 63 tartOfLine: func 0001a8f0: 74 69 6f 6e 20 28 29 20 7b 20 72 65 74 75 72 6e tion () { return 0001a900: 20 66 61 6c 73 65 3b 20 7d 2c 0a 20 20 20 20 20 false; },. 0001a910: 20 20 20 20 20 20 20 68 61 73 54 72 61 69 6c 69 hasTraili 0001a920: 6e 67 43 6f 6d 6d 65 6e 74 3a 20 66 75 6e 63 74 ngComment: funct 0001a930: 69 6f 6e 20 28 29 20 7b 20 72 65 74 75 72 6e 20 ion () { return 0001a940: 66 61 6c 73 65 3b 20 7d 2c 0a 20 20 20 20 20 20 false; },. 0001a950: 20 20 20 20 20 20 68 61 73 54 72 61 69 6c 69 6e hasTrailin 0001a960: 67 57 68 69 74 65 73 70 61 63 65 3a 20 66 75 6e gWhitespace: fun 0001a970: 63 74 69 6f 6e 20 28 29 20 7b 20 72 65 74 75 72 ction () { retur 0001a980: 6e 20 21 21 73 74 72 2e 6c 65 6e 67 74 68 20 26 n !!str.length & 0001a990: 26 20 74 73 2e 69 73 57 68 69 74 65 53 70 61 63 & ts.isWhiteSpac 0001a9a0: 65 4c 69 6b 65 28 73 74 72 2e 63 68 61 72 43 6f eLike(str.charCo 0001a9b0: 64 65 41 74 28 73 74 72 2e 6c 65 6e 67 74 68 20 deAt(str.length 0001a9c0: 2d 20 31 29 29 3b 20 7d 2c 0a 20 20 20 20 20 20 - 1)); },. 0001a9d0: 20 20 20 20 20 20 2f 2f 20 43 6f 6d 70 6c 65 74 // Complet 0001a9e0: 65 6c 79 20 69 67 6e 6f 72 65 20 69 6e 64 65 6e ely ignore inden 0001a9f0: 74 61 74 69 6f 6e 20 66 6f 72 20 73 74 72 69 6e tation for strin 0001aa00: 67 20 77 72 69 74 65 72 73 2e 20 20 41 6e 64 20 g writers. And 0001aa10: 6d 61 70 20 6e 65 77 6c 69 6e 65 73 20 74 6f 0a map newlines to. 0001aa20: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 61 // a 0001aa30: 20 73 69 6e 67 6c 65 20 73 70 61 63 65 2e 0a 20 single space.. 0001aa40: 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 write 0001aa50: 4c 69 6e 65 3a 20 66 75 6e 63 74 69 6f 6e 20 28 Line: function ( 0001aa60: 29 20 7b 20 72 65 74 75 72 6e 20 73 74 72 20 2b ) { return str + 0001aa70: 3d 20 22 20 22 3b 20 7d 2c 0a 20 20 20 20 20 20 = " "; },. 0001aa80: 20 20 20 20 20 20 69 6e 63 72 65 61 73 65 49 6e increaseIn 0001aa90: 64 65 6e 74 3a 20 74 73 2e 6e 6f 6f 70 2c 0a 20 dent: ts.noop,. 0001aaa0: 20 20 20 20 20 20 20 20 20 20 20 64 65 63 72 65 decre 0001aab0: 61 73 65 49 6e 64 65 6e 74 3a 20 74 73 2e 6e 6f aseIndent: ts.no 0001aac0: 6f 70 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 op,. 0001aad0: 63 6c 65 61 72 3a 20 66 75 6e 63 74 69 6f 6e 20 clear: function 0001aae0: 28 29 20 7b 20 72 65 74 75 72 6e 20 73 74 72 20 () { return str 0001aaf0: 3d 20 22 22 3b 20 7d 2c 0a 20 20 20 20 20 20 20 = ""; },. 0001ab00: 20 20 20 20 20 74 72 61 63 6b 53 79 6d 62 6f 6c trackSymbol 0001ab10: 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 20 : function () { 0001ab20: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 20 7d 2c return false; }, 0001ab30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 . rep 0001ab40: 6f 72 74 49 6e 61 63 63 65 73 73 69 62 6c 65 54 ortInaccessibleT 0001ab50: 68 69 73 45 72 72 6f 72 3a 20 74 73 2e 6e 6f 6f hisError: ts.noo 0001ab60: 70 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 p,. r 0001ab70: 65 70 6f 72 74 49 6e 61 63 63 65 73 73 69 62 6c eportInaccessibl 0001ab80: 65 55 6e 69 71 75 65 53 79 6d 62 6f 6c 45 72 72 eUniqueSymbolErr 0001ab90: 6f 72 3a 20 74 73 2e 6e 6f 6f 70 2c 0a 20 20 20 or: ts.noop,. 0001aba0: 20 20 20 20 20 20 20 20 20 72 65 70 6f 72 74 50 reportP 0001abb0: 72 69 76 61 74 65 49 6e 42 61 73 65 4f 66 43 6c rivateInBaseOfCl 0001abc0: 61 73 73 45 78 70 72 65 73 73 69 6f 6e 3a 20 74 assExpression: t 0001abd0: 73 2e 6e 6f 6f 70 2c 0a 20 20 20 20 20 20 20 20 s.noop,. 0001abe0: 7d 3b 0a 20 20 20 20 7d 0a 20 20 20 20 66 75 6e };. }. fun 0001abf0: 63 74 69 6f 6e 20 63 68 61 6e 67 65 73 41 66 66 ction changesAff 0001ac00: 65 63 74 4d 6f 64 75 6c 65 52 65 73 6f 6c 75 74 ectModuleResolut 0001ac10: 69 6f 6e 28 6f 6c 64 4f 70 74 69 6f 6e 73 2c 20 ion(oldOptions, 0001ac20: 6e 65 77 4f 70 74 69 6f 6e 73 29 20 7b 0a 20 20 newOptions) {. 0001ac30: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 6c 64 return old 0001ac40: 4f 70 74 69 6f 6e 73 2e 63 6f 6e 66 69 67 46 69 Options.configFi 0001ac50: 6c 65 50 61 74 68 20 21 3d 3d 20 6e 65 77 4f 70 lePath !== newOp 0001ac60: 74 69 6f 6e 73 2e 63 6f 6e 66 69 67 46 69 6c 65 tions.configFile 0001ac70: 50 61 74 68 20 7c 7c 0a 20 20 20 20 20 20 20 20 Path ||. 0001ac80: 20 20 20 20 6f 70 74 69 6f 6e 73 48 61 76 65 4d optionsHaveM 0001ac90: 6f 64 75 6c 65 52 65 73 6f 6c 75 74 69 6f 6e 43 oduleResolutionC 0001aca0: 68 61 6e 67 65 73 28 6f 6c 64 4f 70 74 69 6f 6e hanges(oldOption 0001acb0: 73 2c 20 6e 65 77 4f 70 74 69 6f 6e 73 29 3b 0a s, newOptions);. 0001acc0: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 63 68 61 }. ts.cha 0001acd0: 6e 67 65 73 41 66 66 65 63 74 4d 6f 64 75 6c 65 ngesAffectModule 0001ace0: 52 65 73 6f 6c 75 74 69 6f 6e 20 3d 20 63 68 61 Resolution = cha 0001acf0: 6e 67 65 73 41 66 66 65 63 74 4d 6f 64 75 6c 65 ngesAffectModule 0001ad00: 52 65 73 6f 6c 75 74 69 6f 6e 3b 0a 20 20 20 20 Resolution;. 0001ad10: 66 75 6e 63 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 function options 0001ad20: 48 61 76 65 4d 6f 64 75 6c 65 52 65 73 6f 6c 75 HaveModuleResolu 0001ad30: 74 69 6f 6e 43 68 61 6e 67 65 73 28 6f 6c 64 4f tionChanges(oldO 0001ad40: 70 74 69 6f 6e 73 2c 20 6e 65 77 4f 70 74 69 6f ptions, newOptio 0001ad50: 6e 73 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 ns) {. re 0001ad60: 74 75 72 6e 20 6f 70 74 69 6f 6e 73 48 61 76 65 turn optionsHave 0001ad70: 43 68 61 6e 67 65 73 28 6f 6c 64 4f 70 74 69 6f Changes(oldOptio 0001ad80: 6e 73 2c 20 6e 65 77 4f 70 74 69 6f 6e 73 2c 20 ns, newOptions, 0001ad90: 74 73 2e 6d 6f 64 75 6c 65 52 65 73 6f 6c 75 74 ts.moduleResolut 0001ada0: 69 6f 6e 4f 70 74 69 6f 6e 44 65 63 6c 61 72 61 ionOptionDeclara 0001adb0: 74 69 6f 6e 73 29 3b 0a 20 20 20 20 7d 0a 20 20 tions);. }. 0001adc0: 20 20 74 73 2e 6f 70 74 69 6f 6e 73 48 61 76 65 ts.optionsHave 0001add0: 4d 6f 64 75 6c 65 52 65 73 6f 6c 75 74 69 6f 6e ModuleResolution 0001ade0: 43 68 61 6e 67 65 73 20 3d 20 6f 70 74 69 6f 6e Changes = option 0001adf0: 73 48 61 76 65 4d 6f 64 75 6c 65 52 65 73 6f 6c sHaveModuleResol 0001ae00: 75 74 69 6f 6e 43 68 61 6e 67 65 73 3b 0a 20 20 utionChanges;. 0001ae10: 20 20 66 75 6e 63 74 69 6f 6e 20 63 68 61 6e 67 function chang 0001ae20: 65 73 41 66 66 65 63 74 69 6e 67 50 72 6f 67 72 esAffectingProgr 0001ae30: 61 6d 53 74 72 75 63 74 75 72 65 28 6f 6c 64 4f amStructure(oldO 0001ae40: 70 74 69 6f 6e 73 2c 20 6e 65 77 4f 70 74 69 6f ptions, newOptio 0001ae50: 6e 73 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 ns) {. re 0001ae60: 74 75 72 6e 20 6f 70 74 69 6f 6e 73 48 61 76 65 turn optionsHave 0001ae70: 43 68 61 6e 67 65 73 28 6f 6c 64 4f 70 74 69 6f Changes(oldOptio 0001ae80: 6e 73 2c 20 6e 65 77 4f 70 74 69 6f 6e 73 2c 20 ns, newOptions, 0001ae90: 74 73 2e 6f 70 74 69 6f 6e 73 41 66 66 65 63 74 ts.optionsAffect 0001aea0: 69 6e 67 50 72 6f 67 72 61 6d 53 74 72 75 63 74 ingProgramStruct 0001aeb0: 75 72 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 ure);. }. 0001aec0: 74 73 2e 63 68 61 6e 67 65 73 41 66 66 65 63 74 ts.changesAffect 0001aed0: 69 6e 67 50 72 6f 67 72 61 6d 53 74 72 75 63 74 ingProgramStruct 0001aee0: 75 72 65 20 3d 20 63 68 61 6e 67 65 73 41 66 66 ure = changesAff 0001aef0: 65 63 74 69 6e 67 50 72 6f 67 72 61 6d 53 74 72 ectingProgramStr 0001af00: 75 63 74 75 72 65 3b 0a 20 20 20 20 66 75 6e 63 ucture;. func 0001af10: 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 48 61 76 65 tion optionsHave 0001af20: 43 68 61 6e 67 65 73 28 6f 6c 64 4f 70 74 69 6f Changes(oldOptio 0001af30: 6e 73 2c 20 6e 65 77 4f 70 74 69 6f 6e 73 2c 20 ns, newOptions, 0001af40: 6f 70 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 6f optionDeclaratio 0001af50: 6e 73 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 ns) {. re 0001af60: 74 75 72 6e 20 6f 6c 64 4f 70 74 69 6f 6e 73 20 turn oldOptions 0001af70: 21 3d 3d 20 6e 65 77 4f 70 74 69 6f 6e 73 20 26 !== newOptions & 0001af80: 26 20 6f 70 74 69 6f 6e 44 65 63 6c 61 72 61 74 & optionDeclarat 0001af90: 69 6f 6e 73 2e 73 6f 6d 65 28 66 75 6e 63 74 69 ions.some(functi 0001afa0: 6f 6e 20 28 6f 29 20 7b 0a 20 20 20 20 20 20 20 on (o) {. 0001afb0: 20 20 20 20 20 72 65 74 75 72 6e 20 21 69 73 4a return !isJ 0001afc0: 73 6f 6e 45 71 75 61 6c 28 67 65 74 43 6f 6d 70 sonEqual(getComp 0001afd0: 69 6c 65 72 4f 70 74 69 6f 6e 56 61 6c 75 65 28 ilerOptionValue( 0001afe0: 6f 6c 64 4f 70 74 69 6f 6e 73 2c 20 6f 29 2c 20 oldOptions, o), 0001aff0: 67 65 74 43 6f 6d 70 69 6c 65 72 4f 70 74 69 6f getCompilerOptio 0001b000: 6e 56 61 6c 75 65 28 6e 65 77 4f 70 74 69 6f 6e nValue(newOption 0001b010: 73 2c 20 6f 29 29 3b 0a 20 20 20 20 20 20 20 20 s, o));. 0001b020: 7d 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 });. }. ts 0001b030: 2e 6f 70 74 69 6f 6e 73 48 61 76 65 43 68 61 6e .optionsHaveChan 0001b040: 67 65 73 20 3d 20 6f 70 74 69 6f 6e 73 48 61 76 ges = optionsHav 0001b050: 65 43 68 61 6e 67 65 73 3b 0a 20 20 20 20 66 75 eChanges;. fu 0001b060: 6e 63 74 69 6f 6e 20 66 6f 72 45 61 63 68 41 6e nction forEachAn 0001b070: 63 65 73 74 6f 72 28 6e 6f 64 65 2c 20 63 61 6c cestor(node, cal 0001b080: 6c 62 61 63 6b 29 20 7b 0a 20 20 20 20 20 20 20 lback) {. 0001b090: 20 77 68 69 6c 65 20 28 74 72 75 65 29 20 7b 0a while (true) {. 0001b0a0: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var 0001b0b0: 72 65 73 20 3d 20 63 61 6c 6c 62 61 63 6b 28 6e res = callback(n 0001b0c0: 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 ode);. 0001b0d0: 20 20 69 66 20 28 72 65 73 20 3d 3d 3d 20 22 71 if (res === "q 0001b0e0: 75 69 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 uit"). 0001b0f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 6e 64 return und 0001b100: 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 efined;. 0001b110: 20 20 20 20 69 66 20 28 72 65 73 20 21 3d 3d 20 if (res !== 0001b120: 75 6e 64 65 66 69 6e 65 64 29 0a 20 20 20 20 20 undefined). 0001b130: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0001b140: 6e 20 72 65 73 3b 0a 20 20 20 20 20 20 20 20 20 n res;. 0001b150: 20 20 20 69 66 20 28 74 73 2e 69 73 53 6f 75 72 if (ts.isSour 0001b160: 63 65 46 69 6c 65 28 6e 6f 64 65 29 29 0a 20 20 ceFile(node)). 0001b170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 0001b180: 74 75 72 6e 20 75 6e 64 65 66 69 6e 65 64 3b 0a turn undefined;. 0001b190: 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 node 0001b1a0: 20 3d 20 6e 6f 64 65 2e 70 61 72 65 6e 74 3b 0a = node.parent;. 0001b1b0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a }. }. 0001b1c0: 20 20 20 20 74 73 2e 66 6f 72 45 61 63 68 41 6e ts.forEachAn 0001b1d0: 63 65 73 74 6f 72 20 3d 20 66 6f 72 45 61 63 68 cestor = forEach 0001b1e0: 41 6e 63 65 73 74 6f 72 3b 0a 20 20 20 20 2f 2a Ancestor;. /* 0001b1f0: 2a 0a 20 20 20 20 20 2a 20 43 61 6c 6c 73 20 60 *. * Calls ` 0001b200: 63 61 6c 6c 62 61 63 6b 60 20 66 6f 72 20 65 61 callback` for ea 0001b210: 63 68 20 65 6e 74 72 79 20 69 6e 20 74 68 65 20 ch entry in the 0001b220: 6d 61 70 2c 20 72 65 74 75 72 6e 69 6e 67 20 74 map, returning t 0001b230: 68 65 20 66 69 72 73 74 20 74 72 75 74 68 79 20 he first truthy 0001b240: 72 65 73 75 6c 74 2e 0a 20 20 20 20 20 2a 20 55 result.. * U 0001b250: 73 65 20 60 6d 61 70 2e 66 6f 72 45 61 63 68 60 se `map.forEach` 0001b260: 20 69 6e 73 74 65 61 64 20 66 6f 72 20 6e 6f 72 instead for nor 0001b270: 6d 61 6c 20 69 74 65 72 61 74 69 6f 6e 2e 0a 20 mal iteration.. 0001b280: 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 */. funct 0001b290: 69 6f 6e 20 66 6f 72 45 61 63 68 45 6e 74 72 79 ion forEachEntry 0001b2a0: 28 6d 61 70 2c 20 63 61 6c 6c 62 61 63 6b 29 20 (map, callback) 0001b2b0: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 74 {. var it 0001b2c0: 65 72 61 74 6f 72 20 3d 20 6d 61 70 2e 65 6e 74 erator = map.ent 0001b2d0: 72 69 65 73 28 29 3b 0a 20 20 20 20 20 20 20 20 ries();. 0001b2e0: 66 6f 72 20 28 76 61 72 20 69 74 65 72 52 65 73 for (var iterRes 0001b2f0: 75 6c 74 20 3d 20 69 74 65 72 61 74 6f 72 2e 6e ult = iterator.n 0001b300: 65 78 74 28 29 3b 20 21 69 74 65 72 52 65 73 75 ext(); !iterResu 0001b310: 6c 74 2e 64 6f 6e 65 3b 20 69 74 65 72 52 65 73 lt.done; iterRes 0001b320: 75 6c 74 20 3d 20 69 74 65 72 61 74 6f 72 2e 6e ult = iterator.n 0001b330: 65 78 74 28 29 29 20 7b 0a 20 20 20 20 20 20 20 ext()) {. 0001b340: 20 20 20 20 20 76 61 72 20 5f 61 20 3d 20 69 74 var _a = it 0001b350: 65 72 52 65 73 75 6c 74 2e 76 61 6c 75 65 2c 20 erResult.value, 0001b360: 6b 65 79 20 3d 20 5f 61 5b 30 5d 2c 20 76 61 6c key = _a[0], val 0001b370: 75 65 20 3d 20 5f 61 5b 31 5d 3b 0a 20 20 20 20 ue = _a[1];. 0001b380: 20 20 20 20 20 20 20 20 76 61 72 20 72 65 73 75 var resu 0001b390: 6c 74 20 3d 20 63 61 6c 6c 62 61 63 6b 28 76 61 lt = callback(va 0001b3a0: 6c 75 65 2c 20 6b 65 79 29 3b 0a 20 20 20 20 20 lue, key);. 0001b3b0: 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c if (resul 0001b3c0: 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 t) {. 0001b3d0: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 return resu 0001b3e0: 6c 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 lt;. 0001b3f0: 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. }. 0001b400: 20 20 20 20 72 65 74 75 72 6e 20 75 6e 64 65 66 return undef 0001b410: 69 6e 65 64 3b 0a 20 20 20 20 7d 0a 20 20 20 20 ined;. }. 0001b420: 74 73 2e 66 6f 72 45 61 63 68 45 6e 74 72 79 20 ts.forEachEntry 0001b430: 3d 20 66 6f 72 45 61 63 68 45 6e 74 72 79 3b 0a = forEachEntry;. 0001b440: 20 20 20 20 2f 2a 2a 20 60 66 6f 72 45 61 63 68 /** `forEach 0001b450: 45 6e 74 72 79 60 20 66 6f 72 20 6a 75 73 74 20 Entry` for just 0001b460: 6b 65 79 73 2e 20 2a 2f 0a 20 20 20 20 66 75 6e keys. */. fun 0001b470: 63 74 69 6f 6e 20 66 6f 72 45 61 63 68 4b 65 79 ction forEachKey 0001b480: 28 6d 61 70 2c 20 63 61 6c 6c 62 61 63 6b 29 20 (map, callback) 0001b490: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 74 {. var it 0001b4a0: 65 72 61 74 6f 72 20 3d 20 6d 61 70 2e 6b 65 79 erator = map.key 0001b4b0: 73 28 29 3b 0a 20 20 20 20 20 20 20 20 66 6f 72 s();. for 0001b4c0: 20 28 76 61 72 20 69 74 65 72 52 65 73 75 6c 74 (var iterResult 0001b4d0: 20 3d 20 69 74 65 72 61 74 6f 72 2e 6e 65 78 74 = iterator.next 0001b4e0: 28 29 3b 20 21 69 74 65 72 52 65 73 75 6c 74 2e (); !iterResult. 0001b4f0: 64 6f 6e 65 3b 20 69 74 65 72 52 65 73 75 6c 74 done; iterResult 0001b500: 20 3d 20 69 74 65 72 61 74 6f 72 2e 6e 65 78 74 = iterator.next 0001b510: 28 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 ()) {. 0001b520: 20 20 76 61 72 20 72 65 73 75 6c 74 20 3d 20 63 var result = c 0001b530: 61 6c 6c 62 61 63 6b 28 69 74 65 72 52 65 73 75 allback(iterResu 0001b540: 6c 74 2e 76 61 6c 75 65 29 3b 0a 20 20 20 20 20 lt.value);. 0001b550: 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c if (resul 0001b560: 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 t) {. 0001b570: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 return resu 0001b580: 6c 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 lt;. 0001b590: 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. }. 0001b5a0: 20 20 20 20 72 65 74 75 72 6e 20 75 6e 64 65 66 return undef 0001b5b0: 69 6e 65 64 3b 0a 20 20 20 20 7d 0a 20 20 20 20 ined;. }. 0001b5c0: 74 73 2e 66 6f 72 45 61 63 68 4b 65 79 20 3d 20 ts.forEachKey = 0001b5d0: 66 6f 72 45 61 63 68 4b 65 79 3b 0a 20 20 20 20 forEachKey;. 0001b5e0: 2f 2a 2a 20 43 6f 70 79 20 65 6e 74 72 69 65 73 /** Copy entries 0001b5f0: 20 66 72 6f 6d 20 60 73 6f 75 72 63 65 60 20 74 from `source` t 0001b600: 6f 20 60 74 61 72 67 65 74 60 2e 20 2a 2f 0a 20 o `target`. */. 0001b610: 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 6f 70 79 function copy 0001b620: 45 6e 74 72 69 65 73 28 73 6f 75 72 63 65 2c 20 Entries(source, 0001b630: 74 61 72 67 65 74 29 20 7b 0a 20 20 20 20 20 20 target) {. 0001b640: 20 20 73 6f 75 72 63 65 2e 66 6f 72 45 61 63 68 source.forEach 0001b650: 28 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c 75 65 (function (value 0001b660: 2c 20 6b 65 79 29 20 7b 0a 20 20 20 20 20 20 20 , key) {. 0001b670: 20 20 20 20 20 74 61 72 67 65 74 2e 73 65 74 28 target.set( 0001b680: 6b 65 79 2c 20 76 61 6c 75 65 29 3b 0a 20 20 20 key, value);. 0001b690: 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d 0a 20 });. }. 0001b6a0: 20 20 20 74 73 2e 63 6f 70 79 45 6e 74 72 69 65 ts.copyEntrie 0001b6b0: 73 20 3d 20 63 6f 70 79 45 6e 74 72 69 65 73 3b s = copyEntries; 0001b6c0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 75 73 . function us 0001b6d0: 69 6e 67 53 69 6e 67 6c 65 4c 69 6e 65 53 74 72 ingSingleLineStr 0001b6e0: 69 6e 67 57 72 69 74 65 72 28 61 63 74 69 6f 6e ingWriter(action 0001b6f0: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 0001b700: 6f 6c 64 53 74 72 69 6e 67 20 3d 20 73 74 72 69 oldString = stri 0001b710: 6e 67 57 72 69 74 65 72 2e 67 65 74 54 65 78 74 ngWriter.getText 0001b720: 28 29 3b 0a 20 20 20 20 20 20 20 20 74 72 79 20 ();. try 0001b730: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 63 {. ac 0001b740: 74 69 6f 6e 28 73 74 72 69 6e 67 57 72 69 74 65 tion(stringWrite 0001b750: 72 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 r);. 0001b760: 72 65 74 75 72 6e 20 73 74 72 69 6e 67 57 72 69 return stringWri 0001b770: 74 65 72 2e 67 65 74 54 65 78 74 28 29 3b 0a 20 ter.getText();. 0001b780: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 0001b790: 20 66 69 6e 61 6c 6c 79 20 7b 0a 20 20 20 20 20 finally {. 0001b7a0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 57 72 69 stringWri 0001b7b0: 74 65 72 2e 63 6c 65 61 72 28 29 3b 0a 20 20 20 ter.clear();. 0001b7c0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 57 stringW 0001b7d0: 72 69 74 65 72 2e 77 72 69 74 65 4b 65 79 77 6f riter.writeKeywo 0001b7e0: 72 64 28 6f 6c 64 53 74 72 69 6e 67 29 3b 0a 20 rd(oldString);. 0001b7f0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 }. }. 0001b800: 20 20 20 74 73 2e 75 73 69 6e 67 53 69 6e 67 6c ts.usingSingl 0001b810: 65 4c 69 6e 65 53 74 72 69 6e 67 57 72 69 74 65 eLineStringWrite 0001b820: 72 20 3d 20 75 73 69 6e 67 53 69 6e 67 6c 65 4c r = usingSingleL 0001b830: 69 6e 65 53 74 72 69 6e 67 57 72 69 74 65 72 3b ineStringWriter; 0001b840: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 0001b850: 74 46 75 6c 6c 57 69 64 74 68 28 6e 6f 64 65 29 tFullWidth(node) 0001b860: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 0001b870: 6e 20 6e 6f 64 65 2e 65 6e 64 20 2d 20 6e 6f 64 n node.end - nod 0001b880: 65 2e 70 6f 73 3b 0a 20 20 20 20 7d 0a 20 20 20 e.pos;. }. 0001b890: 20 74 73 2e 67 65 74 46 75 6c 6c 57 69 64 74 68 ts.getFullWidth 0001b8a0: 20 3d 20 67 65 74 46 75 6c 6c 57 69 64 74 68 3b = getFullWidth; 0001b8b0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 0001b8c0: 74 52 65 73 6f 6c 76 65 64 4d 6f 64 75 6c 65 28 tResolvedModule( 0001b8d0: 73 6f 75 72 63 65 46 69 6c 65 2c 20 6d 6f 64 75 sourceFile, modu 0001b8e0: 6c 65 4e 61 6d 65 54 65 78 74 2c 20 6d 6f 64 65 leNameText, mode 0001b8f0: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0001b900: 72 6e 20 73 6f 75 72 63 65 46 69 6c 65 20 26 26 rn sourceFile && 0001b910: 20 73 6f 75 72 63 65 46 69 6c 65 2e 72 65 73 6f sourceFile.reso 0001b920: 6c 76 65 64 4d 6f 64 75 6c 65 73 20 26 26 20 73 lvedModules && s 0001b930: 6f 75 72 63 65 46 69 6c 65 2e 72 65 73 6f 6c 76 ourceFile.resolv 0001b940: 65 64 4d 6f 64 75 6c 65 73 2e 67 65 74 28 6d 6f edModules.get(mo 0001b950: 64 75 6c 65 4e 61 6d 65 54 65 78 74 2c 20 6d 6f duleNameText, mo 0001b960: 64 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 de);. }. t 0001b970: 73 2e 67 65 74 52 65 73 6f 6c 76 65 64 4d 6f 64 s.getResolvedMod 0001b980: 75 6c 65 20 3d 20 67 65 74 52 65 73 6f 6c 76 65 ule = getResolve 0001b990: 64 4d 6f 64 75 6c 65 3b 0a 20 20 20 20 66 75 6e dModule;. fun 0001b9a0: 63 74 69 6f 6e 20 73 65 74 52 65 73 6f 6c 76 65 ction setResolve 0001b9b0: 64 4d 6f 64 75 6c 65 28 73 6f 75 72 63 65 46 69 dModule(sourceFi 0001b9c0: 6c 65 2c 20 6d 6f 64 75 6c 65 4e 61 6d 65 54 65 le, moduleNameTe 0001b9d0: 78 74 2c 20 72 65 73 6f 6c 76 65 64 4d 6f 64 75 xt, resolvedModu 0001b9e0: 6c 65 2c 20 6d 6f 64 65 29 20 7b 0a 20 20 20 20 le, mode) {. 0001b9f0: 20 20 20 20 69 66 20 28 21 73 6f 75 72 63 65 46 if (!sourceF 0001ba00: 69 6c 65 2e 72 65 73 6f 6c 76 65 64 4d 6f 64 75 ile.resolvedModu 0001ba10: 6c 65 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 les) {. 0001ba20: 20 20 20 73 6f 75 72 63 65 46 69 6c 65 2e 72 65 sourceFile.re 0001ba30: 73 6f 6c 76 65 64 4d 6f 64 75 6c 65 73 20 3d 20 solvedModules = 0001ba40: 74 73 2e 63 72 65 61 74 65 4d 6f 64 65 41 77 61 ts.createModeAwa 0001ba50: 72 65 43 61 63 68 65 28 29 3b 0a 20 20 20 20 20 reCache();. 0001ba60: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 73 6f 75 }. sou 0001ba70: 72 63 65 46 69 6c 65 2e 72 65 73 6f 6c 76 65 64 rceFile.resolved 0001ba80: 4d 6f 64 75 6c 65 73 2e 73 65 74 28 6d 6f 64 75 Modules.set(modu 0001ba90: 6c 65 4e 61 6d 65 54 65 78 74 2c 20 6d 6f 64 65 leNameText, mode 0001baa0: 2c 20 72 65 73 6f 6c 76 65 64 4d 6f 64 75 6c 65 , resolvedModule 0001bab0: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 0001bac0: 73 65 74 52 65 73 6f 6c 76 65 64 4d 6f 64 75 6c setResolvedModul 0001bad0: 65 20 3d 20 73 65 74 52 65 73 6f 6c 76 65 64 4d e = setResolvedM 0001bae0: 6f 64 75 6c 65 3b 0a 20 20 20 20 66 75 6e 63 74 odule;. funct 0001baf0: 69 6f 6e 20 73 65 74 52 65 73 6f 6c 76 65 64 54 ion setResolvedT 0001bb00: 79 70 65 52 65 66 65 72 65 6e 63 65 44 69 72 65 ypeReferenceDire 0001bb10: 63 74 69 76 65 28 73 6f 75 72 63 65 46 69 6c 65 ctive(sourceFile 0001bb20: 2c 20 74 79 70 65 52 65 66 65 72 65 6e 63 65 44 , typeReferenceD 0001bb30: 69 72 65 63 74 69 76 65 4e 61 6d 65 2c 20 72 65 irectiveName, re 0001bb40: 73 6f 6c 76 65 64 54 79 70 65 52 65 66 65 72 65 solvedTypeRefere 0001bb50: 6e 63 65 44 69 72 65 63 74 69 76 65 29 20 7b 0a nceDirective) {. 0001bb60: 20 20 20 20 20 20 20 20 69 66 20 28 21 73 6f 75 if (!sou 0001bb70: 72 63 65 46 69 6c 65 2e 72 65 73 6f 6c 76 65 64 rceFile.resolved 0001bb80: 54 79 70 65 52 65 66 65 72 65 6e 63 65 44 69 72 TypeReferenceDir 0001bb90: 65 63 74 69 76 65 4e 61 6d 65 73 29 20 7b 0a 20 ectiveNames) {. 0001bba0: 20 20 20 20 20 20 20 20 20 20 20 73 6f 75 72 63 sourc 0001bbb0: 65 46 69 6c 65 2e 72 65 73 6f 6c 76 65 64 54 79 eFile.resolvedTy 0001bbc0: 70 65 52 65 66 65 72 65 6e 63 65 44 69 72 65 63 peReferenceDirec 0001bbd0: 74 69 76 65 4e 61 6d 65 73 20 3d 20 74 73 2e 63 tiveNames = ts.c 0001bbe0: 72 65 61 74 65 4d 6f 64 65 41 77 61 72 65 43 61 reateModeAwareCa 0001bbf0: 63 68 65 28 29 3b 0a 20 20 20 20 20 20 20 20 7d che();. } 0001bc00: 0a 20 20 20 20 20 20 20 20 73 6f 75 72 63 65 46 . sourceF 0001bc10: 69 6c 65 2e 72 65 73 6f 6c 76 65 64 54 79 70 65 ile.resolvedType 0001bc20: 52 65 66 65 72 65 6e 63 65 44 69 72 65 63 74 69 ReferenceDirecti 0001bc30: 76 65 4e 61 6d 65 73 2e 73 65 74 28 74 79 70 65 veNames.set(type 0001bc40: 52 65 66 65 72 65 6e 63 65 44 69 72 65 63 74 69 ReferenceDirecti 0001bc50: 76 65 4e 61 6d 65 2c 20 2f 2a 6d 6f 64 65 2a 2f veName, /*mode*/ 0001bc60: 20 75 6e 64 65 66 69 6e 65 64 2c 20 72 65 73 6f undefined, reso 0001bc70: 6c 76 65 64 54 79 70 65 52 65 66 65 72 65 6e 63 lvedTypeReferenc 0001bc80: 65 44 69 72 65 63 74 69 76 65 29 3b 0a 20 20 20 eDirective);. 0001bc90: 20 7d 0a 20 20 20 20 74 73 2e 73 65 74 52 65 73 }. ts.setRes 0001bca0: 6f 6c 76 65 64 54 79 70 65 52 65 66 65 72 65 6e olvedTypeReferen 0001bcb0: 63 65 44 69 72 65 63 74 69 76 65 20 3d 20 73 65 ceDirective = se 0001bcc0: 74 52 65 73 6f 6c 76 65 64 54 79 70 65 52 65 66 tResolvedTypeRef 0001bcd0: 65 72 65 6e 63 65 44 69 72 65 63 74 69 76 65 3b erenceDirective; 0001bce0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 70 72 . function pr 0001bcf0: 6f 6a 65 63 74 52 65 66 65 72 65 6e 63 65 49 73 ojectReferenceIs 0001bd00: 45 71 75 61 6c 54 6f 28 6f 6c 64 52 65 66 2c 20 EqualTo(oldRef, 0001bd10: 6e 65 77 52 65 66 29 20 7b 0a 20 20 20 20 20 20 newRef) {. 0001bd20: 20 20 72 65 74 75 72 6e 20 6f 6c 64 52 65 66 2e return oldRef. 0001bd30: 70 61 74 68 20 3d 3d 3d 20 6e 65 77 52 65 66 2e path === newRef. 0001bd40: 70 61 74 68 20 26 26 0a 20 20 20 20 20 20 20 20 path &&. 0001bd50: 20 20 20 20 21 6f 6c 64 52 65 66 2e 70 72 65 70 !oldRef.prep 0001bd60: 65 6e 64 20 3d 3d 3d 20 21 6e 65 77 52 65 66 2e end === !newRef. 0001bd70: 70 72 65 70 65 6e 64 20 26 26 0a 20 20 20 20 20 prepend &&. 0001bd80: 20 20 20 20 20 20 20 21 6f 6c 64 52 65 66 2e 63 !oldRef.c 0001bd90: 69 72 63 75 6c 61 72 20 3d 3d 3d 20 21 6e 65 77 ircular === !new 0001bda0: 52 65 66 2e 63 69 72 63 75 6c 61 72 3b 0a 20 20 Ref.circular;. 0001bdb0: 20 20 7d 0a 20 20 20 20 74 73 2e 70 72 6f 6a 65 }. ts.proje 0001bdc0: 63 74 52 65 66 65 72 65 6e 63 65 49 73 45 71 75 ctReferenceIsEqu 0001bdd0: 61 6c 54 6f 20 3d 20 70 72 6f 6a 65 63 74 52 65 alTo = projectRe 0001bde0: 66 65 72 65 6e 63 65 49 73 45 71 75 61 6c 54 6f ferenceIsEqualTo 0001bdf0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 6d ;. function m 0001be00: 6f 64 75 6c 65 52 65 73 6f 6c 75 74 69 6f 6e 49 oduleResolutionI 0001be10: 73 45 71 75 61 6c 54 6f 28 6f 6c 64 52 65 73 6f sEqualTo(oldReso 0001be20: 6c 75 74 69 6f 6e 2c 20 6e 65 77 52 65 73 6f 6c lution, newResol 0001be30: 75 74 69 6f 6e 29 20 7b 0a 20 20 20 20 20 20 20 ution) {. 0001be40: 20 72 65 74 75 72 6e 20 6f 6c 64 52 65 73 6f 6c return oldResol 0001be50: 75 74 69 6f 6e 2e 69 73 45 78 74 65 72 6e 61 6c ution.isExternal 0001be60: 4c 69 62 72 61 72 79 49 6d 70 6f 72 74 20 3d 3d LibraryImport == 0001be70: 3d 20 6e 65 77 52 65 73 6f 6c 75 74 69 6f 6e 2e = newResolution. 0001be80: 69 73 45 78 74 65 72 6e 61 6c 4c 69 62 72 61 72 isExternalLibrar 0001be90: 79 49 6d 70 6f 72 74 20 26 26 0a 20 20 20 20 20 yImport &&. 0001bea0: 20 20 20 20 20 20 20 6f 6c 64 52 65 73 6f 6c 75 oldResolu 0001beb0: 74 69 6f 6e 2e 65 78 74 65 6e 73 69 6f 6e 20 3d tion.extension = 0001bec0: 3d 3d 20 6e 65 77 52 65 73 6f 6c 75 74 69 6f 6e == newResolution 0001bed0: 2e 65 78 74 65 6e 73 69 6f 6e 20 26 26 0a 20 20 .extension &&. 0001bee0: 20 20 20 20 20 20 20 20 20 20 6f 6c 64 52 65 73 oldRes 0001bef0: 6f 6c 75 74 69 6f 6e 2e 72 65 73 6f 6c 76 65 64 olution.resolved 0001bf00: 46 69 6c 65 4e 61 6d 65 20 3d 3d 3d 20 6e 65 77 FileName === new 0001bf10: 52 65 73 6f 6c 75 74 69 6f 6e 2e 72 65 73 6f 6c Resolution.resol 0001bf20: 76 65 64 46 69 6c 65 4e 61 6d 65 20 26 26 0a 20 vedFileName &&. 0001bf30: 20 20 20 20 20 20 20 20 20 20 20 6f 6c 64 52 65 oldRe 0001bf40: 73 6f 6c 75 74 69 6f 6e 2e 6f 72 69 67 69 6e 61 solution.origina 0001bf50: 6c 50 61 74 68 20 3d 3d 3d 20 6e 65 77 52 65 73 lPath === newRes 0001bf60: 6f 6c 75 74 69 6f 6e 2e 6f 72 69 67 69 6e 61 6c olution.original 0001bf70: 50 61 74 68 20 26 26 0a 20 20 20 20 20 20 20 20 Path &&. 0001bf80: 20 20 20 20 70 61 63 6b 61 67 65 49 64 49 73 45 packageIdIsE 0001bf90: 71 75 61 6c 28 6f 6c 64 52 65 73 6f 6c 75 74 69 qual(oldResoluti 0001bfa0: 6f 6e 2e 70 61 63 6b 61 67 65 49 64 2c 20 6e 65 on.packageId, ne 0001bfb0: 77 52 65 73 6f 6c 75 74 69 6f 6e 2e 70 61 63 6b wResolution.pack 0001bfc0: 61 67 65 49 64 29 3b 0a 20 20 20 20 7d 0a 20 20 ageId);. }. 0001bfd0: 20 20 74 73 2e 6d 6f 64 75 6c 65 52 65 73 6f 6c ts.moduleResol 0001bfe0: 75 74 69 6f 6e 49 73 45 71 75 61 6c 54 6f 20 3d utionIsEqualTo = 0001bff0: 20 6d 6f 64 75 6c 65 52 65 73 6f 6c 75 74 69 6f moduleResolutio 0001c000: 6e 49 73 45 71 75 61 6c 54 6f 3b 0a 20 20 20 20 nIsEqualTo;. 0001c010: 66 75 6e 63 74 69 6f 6e 20 70 61 63 6b 61 67 65 function package 0001c020: 49 64 49 73 45 71 75 61 6c 28 61 2c 20 62 29 20 IdIsEqual(a, b) 0001c030: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 0001c040: 20 61 20 3d 3d 3d 20 62 20 7c 7c 20 21 21 61 20 a === b || !!a 0001c050: 26 26 20 21 21 62 20 26 26 20 61 2e 6e 61 6d 65 && !!b && a.name 0001c060: 20 3d 3d 3d 20 62 2e 6e 61 6d 65 20 26 26 20 61 === b.name && a 0001c070: 2e 73 75 62 4d 6f 64 75 6c 65 4e 61 6d 65 20 3d .subModuleName = 0001c080: 3d 3d 20 62 2e 73 75 62 4d 6f 64 75 6c 65 4e 61 == b.subModuleNa 0001c090: 6d 65 20 26 26 20 61 2e 76 65 72 73 69 6f 6e 20 me && a.version 0001c0a0: 3d 3d 3d 20 62 2e 76 65 72 73 69 6f 6e 3b 0a 20 === b.version;. 0001c0b0: 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 74 69 6f }. functio 0001c0c0: 6e 20 70 61 63 6b 61 67 65 49 64 54 6f 50 61 63 n packageIdToPac 0001c0d0: 6b 61 67 65 4e 61 6d 65 28 5f 61 29 20 7b 0a 20 kageName(_a) {. 0001c0e0: 20 20 20 20 20 20 20 76 61 72 20 6e 61 6d 65 20 var name 0001c0f0: 3d 20 5f 61 2e 6e 61 6d 65 2c 20 73 75 62 4d 6f = _a.name, subMo 0001c100: 64 75 6c 65 4e 61 6d 65 20 3d 20 5f 61 2e 73 75 duleName = _a.su 0001c110: 62 4d 6f 64 75 6c 65 4e 61 6d 65 3b 0a 20 20 20 bModuleName;. 0001c120: 20 20 20 20 20 72 65 74 75 72 6e 20 73 75 62 4d return subM 0001c130: 6f 64 75 6c 65 4e 61 6d 65 20 3f 20 22 22 2e 63 oduleName ? "".c 0001c140: 6f 6e 63 61 74 28 6e 61 6d 65 2c 20 22 2f 22 29 oncat(name, "/") 0001c150: 2e 63 6f 6e 63 61 74 28 73 75 62 4d 6f 64 75 6c .concat(subModul 0001c160: 65 4e 61 6d 65 29 20 3a 20 6e 61 6d 65 3b 0a 20 eName) : name;. 0001c170: 20 20 20 7d 0a 20 20 20 20 74 73 2e 70 61 63 6b }. ts.pack 0001c180: 61 67 65 49 64 54 6f 50 61 63 6b 61 67 65 4e 61 ageIdToPackageNa 0001c190: 6d 65 20 3d 20 70 61 63 6b 61 67 65 49 64 54 6f me = packageIdTo 0001c1a0: 50 61 63 6b 61 67 65 4e 61 6d 65 3b 0a 20 20 20 PackageName;. 0001c1b0: 20 66 75 6e 63 74 69 6f 6e 20 70 61 63 6b 61 67 function packag 0001c1c0: 65 49 64 54 6f 53 74 72 69 6e 67 28 70 61 63 6b eIdToString(pack 0001c1d0: 61 67 65 49 64 29 20 7b 0a 20 20 20 20 20 20 20 ageId) {. 0001c1e0: 20 72 65 74 75 72 6e 20 22 22 2e 63 6f 6e 63 61 return "".conca 0001c1f0: 74 28 70 61 63 6b 61 67 65 49 64 54 6f 50 61 63 t(packageIdToPac 0001c200: 6b 61 67 65 4e 61 6d 65 28 70 61 63 6b 61 67 65 kageName(package 0001c210: 49 64 29 2c 20 22 40 22 29 2e 63 6f 6e 63 61 74 Id), "@").concat 0001c220: 28 70 61 63 6b 61 67 65 49 64 2e 76 65 72 73 69 (packageId.versi 0001c230: 6f 6e 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 on);. }. t 0001c240: 73 2e 70 61 63 6b 61 67 65 49 64 54 6f 53 74 72 s.packageIdToStr 0001c250: 69 6e 67 20 3d 20 70 61 63 6b 61 67 65 49 64 54 ing = packageIdT 0001c260: 6f 53 74 72 69 6e 67 3b 0a 20 20 20 20 66 75 6e oString;. fun 0001c270: 63 74 69 6f 6e 20 74 79 70 65 44 69 72 65 63 74 ction typeDirect 0001c280: 69 76 65 49 73 45 71 75 61 6c 54 6f 28 6f 6c 64 iveIsEqualTo(old 0001c290: 52 65 73 6f 6c 75 74 69 6f 6e 2c 20 6e 65 77 52 Resolution, newR 0001c2a0: 65 73 6f 6c 75 74 69 6f 6e 29 20 7b 0a 20 20 20 esolution) {. 0001c2b0: 20 20 20 20 20 72 65 74 75 72 6e 20 6f 6c 64 52 return oldR 0001c2c0: 65 73 6f 6c 75 74 69 6f 6e 2e 72 65 73 6f 6c 76 esolution.resolv 0001c2d0: 65 64 46 69 6c 65 4e 61 6d 65 20 3d 3d 3d 20 6e edFileName === n 0001c2e0: 65 77 52 65 73 6f 6c 75 74 69 6f 6e 2e 72 65 73 ewResolution.res 0001c2f0: 6f 6c 76 65 64 46 69 6c 65 4e 61 6d 65 0a 20 20 olvedFileName. 0001c300: 20 20 20 20 20 20 20 20 20 20 26 26 20 6f 6c 64 && old 0001c310: 52 65 73 6f 6c 75 74 69 6f 6e 2e 70 72 69 6d 61 Resolution.prima 0001c320: 72 79 20 3d 3d 3d 20 6e 65 77 52 65 73 6f 6c 75 ry === newResolu 0001c330: 74 69 6f 6e 2e 70 72 69 6d 61 72 79 0a 20 20 20 tion.primary. 0001c340: 20 20 20 20 20 20 20 20 20 26 26 20 6f 6c 64 52 && oldR 0001c350: 65 73 6f 6c 75 74 69 6f 6e 2e 6f 72 69 67 69 6e esolution.origin 0001c360: 61 6c 50 61 74 68 20 3d 3d 3d 20 6e 65 77 52 65 alPath === newRe 0001c370: 73 6f 6c 75 74 69 6f 6e 2e 6f 72 69 67 69 6e 61 solution.origina 0001c380: 6c 50 61 74 68 3b 0a 20 20 20 20 7d 0a 20 20 20 lPath;. }. 0001c390: 20 74 73 2e 74 79 70 65 44 69 72 65 63 74 69 76 ts.typeDirectiv 0001c3a0: 65 49 73 45 71 75 61 6c 54 6f 20 3d 20 74 79 70 eIsEqualTo = typ 0001c3b0: 65 44 69 72 65 63 74 69 76 65 49 73 45 71 75 61 eDirectiveIsEqua 0001c3c0: 6c 54 6f 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f lTo;. functio 0001c3d0: 6e 20 68 61 73 43 68 61 6e 67 65 73 49 6e 52 65 n hasChangesInRe 0001c3e0: 73 6f 6c 75 74 69 6f 6e 73 28 6e 61 6d 65 73 2c solutions(names, 0001c3f0: 20 6e 65 77 52 65 73 6f 6c 75 74 69 6f 6e 73 2c newResolutions, 0001c400: 20 6f 6c 64 52 65 73 6f 6c 75 74 69 6f 6e 73 2c oldResolutions, 0001c410: 20 6f 6c 64 53 6f 75 72 63 65 46 69 6c 65 2c 20 oldSourceFile, 0001c420: 63 6f 6d 70 61 72 65 72 29 20 7b 0a 20 20 20 20 comparer) {. 0001c430: 20 20 20 20 74 73 2e 44 65 62 75 67 2e 61 73 73 ts.Debug.ass 0001c440: 65 72 74 28 6e 61 6d 65 73 2e 6c 65 6e 67 74 68 ert(names.length 0001c450: 20 3d 3d 3d 20 6e 65 77 52 65 73 6f 6c 75 74 69 === newResoluti 0001c460: 6f 6e 73 2e 6c 65 6e 67 74 68 29 3b 0a 20 20 20 ons.length);. 0001c470: 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 for (var i 0001c480: 3d 20 30 3b 20 69 20 3c 20 6e 61 6d 65 73 2e 6c = 0; i < names.l 0001c490: 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 20 20 ength; i++) {. 0001c4a0: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e 65 var ne 0001c4b0: 77 52 65 73 6f 6c 75 74 69 6f 6e 20 3d 20 6e 65 wResolution = ne 0001c4c0: 77 52 65 73 6f 6c 75 74 69 6f 6e 73 5b 69 5d 3b wResolutions[i]; 0001c4d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var 0001c4e0: 20 65 6e 74 72 79 20 3d 20 6e 61 6d 65 73 5b 69 entry = names[i 0001c4f0: 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f ];. / 0001c500: 2f 20 57 65 20 6c 6f 77 65 72 2d 63 61 73 65 20 / We lower-case 0001c510: 61 6c 6c 20 74 79 70 65 20 72 65 66 65 72 65 6e all type referen 0001c520: 63 65 73 20 62 65 63 61 75 73 65 20 6e 70 6d 20 ces because npm 0001c530: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 6c 6f automatically lo 0001c540: 77 65 72 63 61 73 65 73 20 61 6c 6c 20 70 61 63 wercases all pac 0001c550: 6b 61 67 65 73 2e 20 53 65 65 20 47 48 23 39 38 kages. See GH#98 0001c560: 32 34 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 24.. 0001c570: 76 61 72 20 6e 61 6d 65 20 3d 20 21 74 73 2e 69 var name = !ts.i 0001c580: 73 53 74 72 69 6e 67 28 65 6e 74 72 79 29 20 3f sString(entry) ? 0001c590: 20 65 6e 74 72 79 2e 66 69 6c 65 4e 61 6d 65 2e entry.fileName. 0001c5a0: 74 6f 4c 6f 77 65 72 43 61 73 65 28 29 20 3a 20 toLowerCase() : 0001c5b0: 65 6e 74 72 79 3b 0a 20 20 20 20 20 20 20 20 20 entry;. 0001c5c0: 20 20 20 76 61 72 20 6d 6f 64 65 20 3d 20 21 74 var mode = !t 0001c5d0: 73 2e 69 73 53 74 72 69 6e 67 28 65 6e 74 72 79 s.isString(entry 0001c5e0: 29 20 3f 20 74 73 2e 67 65 74 4d 6f 64 65 46 6f ) ? ts.getModeFo 0001c5f0: 72 46 69 6c 65 52 65 66 65 72 65 6e 63 65 28 65 rFileReference(e 0001c600: 6e 74 72 79 2c 20 6f 6c 64 53 6f 75 72 63 65 46 ntry, oldSourceF 0001c610: 69 6c 65 20 3d 3d 3d 20 6e 75 6c 6c 20 7c 7c 20 ile === null || 0001c620: 6f 6c 64 53 6f 75 72 63 65 46 69 6c 65 20 3d 3d oldSourceFile == 0001c630: 3d 20 76 6f 69 64 20 30 20 3f 20 76 6f 69 64 20 = void 0 ? void 0001c640: 30 20 3a 20 6f 6c 64 53 6f 75 72 63 65 46 69 6c 0 : oldSourceFil 0001c650: 65 2e 69 6d 70 6c 69 65 64 4e 6f 64 65 46 6f 72 e.impliedNodeFor 0001c660: 6d 61 74 29 20 3a 20 6f 6c 64 53 6f 75 72 63 65 mat) : oldSource 0001c670: 46 69 6c 65 20 26 26 20 74 73 2e 67 65 74 4d 6f File && ts.getMo 0001c680: 64 65 46 6f 72 52 65 73 6f 6c 75 74 69 6f 6e 41 deForResolutionA 0001c690: 74 49 6e 64 65 78 28 6f 6c 64 53 6f 75 72 63 65 tIndex(oldSource 0001c6a0: 46 69 6c 65 2c 20 69 29 3b 0a 20 20 20 20 20 20 File, i);. 0001c6b0: 20 20 20 20 20 20 76 61 72 20 6f 6c 64 52 65 73 var oldRes 0001c6c0: 6f 6c 75 74 69 6f 6e 20 3d 20 6f 6c 64 52 65 73 olution = oldRes 0001c6d0: 6f 6c 75 74 69 6f 6e 73 20 26 26 20 6f 6c 64 52 olutions && oldR 0001c6e0: 65 73 6f 6c 75 74 69 6f 6e 73 2e 67 65 74 28 6e esolutions.get(n 0001c6f0: 61 6d 65 2c 20 6d 6f 64 65 29 3b 0a 20 20 20 20 ame, mode);. 0001c700: 20 20 20 20 20 20 20 20 76 61 72 20 63 68 61 6e var chan 0001c710: 67 65 64 20 3d 20 6f 6c 64 52 65 73 6f 6c 75 74 ged = oldResolut 0001c720: 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 ion. 0001c730: 20 20 20 20 3f 20 21 6e 65 77 52 65 73 6f 6c 75 ? !newResolu 0001c740: 74 69 6f 6e 20 7c 7c 20 21 63 6f 6d 70 61 72 65 tion || !compare 0001c750: 72 28 6f 6c 64 52 65 73 6f 6c 75 74 69 6f 6e 2c r(oldResolution, 0001c760: 20 6e 65 77 52 65 73 6f 6c 75 74 69 6f 6e 29 0a newResolution). 0001c770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0001c780: 3a 20 6e 65 77 52 65 73 6f 6c 75 74 69 6f 6e 3b : newResolution; 0001c790: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if 0001c7a0: 28 63 68 61 6e 67 65 64 29 20 7b 0a 20 20 20 20 (changed) {. 0001c7b0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 0001c7c0: 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 rn true;. 0001c7d0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d }. } 0001c7e0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 0001c7f0: 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 20 20 false;. }. 0001c800: 20 74 73 2e 68 61 73 43 68 61 6e 67 65 73 49 6e ts.hasChangesIn 0001c810: 52 65 73 6f 6c 75 74 69 6f 6e 73 20 3d 20 68 61 Resolutions = ha 0001c820: 73 43 68 61 6e 67 65 73 49 6e 52 65 73 6f 6c 75 sChangesInResolu 0001c830: 74 69 6f 6e 73 3b 0a 20 20 20 20 2f 2f 20 52 65 tions;. // Re 0001c840: 74 75 72 6e 73 20 74 72 75 65 20 69 66 20 74 68 turns true if th 0001c850: 69 73 20 6e 6f 64 65 20 63 6f 6e 74 61 69 6e 73 is node contains 0001c860: 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 20 61 a parse error a 0001c870: 6e 79 77 68 65 72 65 20 75 6e 64 65 72 6e 65 61 nywhere undernea 0001c880: 74 68 20 69 74 2e 0a 20 20 20 20 66 75 6e 63 74 th it.. funct 0001c890: 69 6f 6e 20 63 6f 6e 74 61 69 6e 73 50 61 72 73 ion containsPars 0001c8a0: 65 45 72 72 6f 72 28 6e 6f 64 65 29 20 7b 0a 20 eError(node) {. 0001c8b0: 20 20 20 20 20 20 20 61 67 67 72 65 67 61 74 65 aggregate 0001c8c0: 43 68 69 6c 64 44 61 74 61 28 6e 6f 64 65 29 3b ChildData(node); 0001c8d0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 0001c8e0: 28 6e 6f 64 65 2e 66 6c 61 67 73 20 26 20 35 32 (node.flags & 52 0001c8f0: 34 32 38 38 20 2f 2a 20 4e 6f 64 65 46 6c 61 67 4288 /* NodeFlag 0001c900: 73 2e 54 68 69 73 4e 6f 64 65 4f 72 41 6e 79 53 s.ThisNodeOrAnyS 0001c910: 75 62 4e 6f 64 65 73 48 61 73 45 72 72 6f 72 20 ubNodesHasError 0001c920: 2a 2f 29 20 21 3d 3d 20 30 3b 0a 20 20 20 20 7d */) !== 0;. } 0001c930: 0a 20 20 20 20 74 73 2e 63 6f 6e 74 61 69 6e 73 . ts.contains 0001c940: 50 61 72 73 65 45 72 72 6f 72 20 3d 20 63 6f 6e ParseError = con 0001c950: 74 61 69 6e 73 50 61 72 73 65 45 72 72 6f 72 3b tainsParseError; 0001c960: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 61 67 . function ag 0001c970: 67 72 65 67 61 74 65 43 68 69 6c 64 44 61 74 61 gregateChildData 0001c980: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 0001c990: 20 69 66 20 28 21 28 6e 6f 64 65 2e 66 6c 61 67 if (!(node.flag 0001c9a0: 73 20 26 20 31 30 34 38 35 37 36 20 2f 2a 20 4e s & 1048576 /* N 0001c9b0: 6f 64 65 46 6c 61 67 73 2e 48 61 73 41 67 67 72 odeFlags.HasAggr 0001c9c0: 65 67 61 74 65 64 43 68 69 6c 64 44 61 74 61 20 egatedChildData 0001c9d0: 2a 2f 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 */)) {. 0001c9e0: 20 20 20 2f 2f 20 41 20 6e 6f 64 65 20 69 73 20 // A node is 0001c9f0: 63 6f 6e 73 69 64 65 72 65 64 20 74 6f 20 63 6f considered to co 0001ca00: 6e 74 61 69 6e 20 61 20 70 61 72 73 65 20 65 72 ntain a parse er 0001ca10: 72 6f 72 20 69 66 3a 0a 20 20 20 20 20 20 20 20 ror if:. 0001ca20: 20 20 20 20 2f 2f 20 20 61 29 20 74 68 65 20 70 // a) the p 0001ca30: 61 72 73 65 72 20 65 78 70 6c 69 63 69 74 6c 79 arser explicitly 0001ca40: 20 6d 61 72 6b 65 64 20 74 68 61 74 20 69 74 20 marked that it 0001ca50: 68 61 64 20 61 6e 20 65 72 72 6f 72 0a 20 20 20 had an error. 0001ca60: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 62 29 20 // b) 0001ca70: 61 6e 79 20 6f 66 20 69 74 27 73 20 63 68 69 6c any of it's chil 0001ca80: 64 72 65 6e 20 72 65 70 6f 72 74 65 64 20 74 68 dren reported th 0001ca90: 61 74 20 69 74 20 68 61 64 20 61 6e 20 65 72 72 at it had an err 0001caa0: 6f 72 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 or.. 0001cab0: 76 61 72 20 74 68 69 73 4e 6f 64 65 4f 72 41 6e var thisNodeOrAn 0001cac0: 79 53 75 62 4e 6f 64 65 73 48 61 73 45 72 72 6f ySubNodesHasErro 0001cad0: 72 20 3d 20 28 28 6e 6f 64 65 2e 66 6c 61 67 73 r = ((node.flags 0001cae0: 20 26 20 31 33 31 30 37 32 20 2f 2a 20 4e 6f 64 & 131072 /* Nod 0001caf0: 65 46 6c 61 67 73 2e 54 68 69 73 4e 6f 64 65 48 eFlags.ThisNodeH 0001cb00: 61 73 45 72 72 6f 72 20 2a 2f 29 20 21 3d 3d 20 asError */) !== 0001cb10: 30 29 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 0) ||. 0001cb20: 20 20 20 20 20 20 74 73 2e 66 6f 72 45 61 63 68 ts.forEach 0001cb30: 43 68 69 6c 64 28 6e 6f 64 65 2c 20 63 6f 6e 74 Child(node, cont 0001cb40: 61 69 6e 73 50 61 72 73 65 45 72 72 6f 72 29 3b ainsParseError); 0001cb50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 . // 0001cb60: 49 66 20 73 6f 2c 20 6d 61 72 6b 20 6f 75 72 73 If so, mark ours 0001cb70: 65 6c 76 65 73 20 61 63 63 6f 72 64 69 6e 67 6c elves accordingl 0001cb80: 79 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 y.. i 0001cb90: 66 20 28 74 68 69 73 4e 6f 64 65 4f 72 41 6e 79 f (thisNodeOrAny 0001cba0: 53 75 62 4e 6f 64 65 73 48 61 73 45 72 72 6f 72 SubNodesHasError 0001cbb0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 0001cbc0: 20 20 20 20 6e 6f 64 65 2e 66 6c 61 67 73 20 7c node.flags | 0001cbd0: 3d 20 35 32 34 32 38 38 20 2f 2a 20 4e 6f 64 65 = 524288 /* Node 0001cbe0: 46 6c 61 67 73 2e 54 68 69 73 4e 6f 64 65 4f 72 Flags.ThisNodeOr 0001cbf0: 41 6e 79 53 75 62 4e 6f 64 65 73 48 61 73 45 72 AnySubNodesHasEr 0001cc00: 72 6f 72 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 ror */;. 0001cc10: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }. 0001cc20: 20 20 2f 2f 20 41 6c 73 6f 20 6d 61 72 6b 20 74 // Also mark t 0001cc30: 68 61 74 20 77 65 27 76 65 20 70 72 6f 70 61 67 hat we've propag 0001cc40: 61 74 65 64 20 74 68 65 20 63 68 69 6c 64 20 69 ated the child i 0001cc50: 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 6f 20 74 68 nformation to th 0001cc60: 69 73 20 6e 6f 64 65 2e 20 20 54 68 69 73 20 77 is node. This w 0001cc70: 61 79 20 77 65 20 63 61 6e 0a 20 20 20 20 20 20 ay we can. 0001cc80: 20 20 20 20 20 20 2f 2f 20 61 6c 77 61 79 73 20 // always 0001cc90: 63 6f 6e 73 75 6c 74 20 74 68 65 20 62 69 74 20 consult the bit 0001cca0: 64 69 72 65 63 74 6c 79 20 6f 6e 20 74 68 69 73 directly on this 0001ccb0: 20 6e 6f 64 65 20 77 69 74 68 6f 75 74 20 6e 65 node without ne 0001ccc0: 65 64 69 6e 67 20 74 6f 20 63 68 65 63 6b 20 69 eding to check i 0001ccd0: 74 73 20 63 68 69 6c 64 72 65 6e 0a 20 20 20 20 ts children. 0001cce0: 20 20 20 20 20 20 20 20 2f 2f 20 61 67 61 69 6e // again 0001ccf0: 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f .. no 0001cd00: 64 65 2e 66 6c 61 67 73 20 7c 3d 20 31 30 34 38 de.flags |= 1048 0001cd10: 35 37 36 20 2f 2a 20 4e 6f 64 65 46 6c 61 67 73 576 /* NodeFlags 0001cd20: 2e 48 61 73 41 67 67 72 65 67 61 74 65 64 43 68 .HasAggregatedCh 0001cd30: 69 6c 64 44 61 74 61 20 2a 2f 3b 0a 20 20 20 20 ildData */;. 0001cd40: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 }. }. 0001cd50: 66 75 6e 63 74 69 6f 6e 20 67 65 74 53 6f 75 72 function getSour 0001cd60: 63 65 46 69 6c 65 4f 66 4e 6f 64 65 28 6e 6f 64 ceFileOfNode(nod 0001cd70: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 77 68 69 e) {. whi 0001cd80: 6c 65 20 28 6e 6f 64 65 20 26 26 20 6e 6f 64 65 le (node && node 0001cd90: 2e 6b 69 6e 64 20 21 3d 3d 20 33 30 35 20 2f 2a .kind !== 305 /* 0001cda0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 6f 75 72 SyntaxKind.Sour 0001cdb0: 63 65 46 69 6c 65 20 2a 2f 29 20 7b 0a 20 20 20 ceFile */) {. 0001cdc0: 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 node = 0001cdd0: 6e 6f 64 65 2e 70 61 72 65 6e 74 3b 0a 20 20 20 node.parent;. 0001cde0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 }. r 0001cdf0: 65 74 75 72 6e 20 6e 6f 64 65 3b 0a 20 20 20 20 eturn node;. 0001ce00: 7d 0a 20 20 20 20 74 73 2e 67 65 74 53 6f 75 72 }. ts.getSour 0001ce10: 63 65 46 69 6c 65 4f 66 4e 6f 64 65 20 3d 20 67 ceFileOfNode = g 0001ce20: 65 74 53 6f 75 72 63 65 46 69 6c 65 4f 66 4e 6f etSourceFileOfNo 0001ce30: 64 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e de;. function 0001ce40: 20 67 65 74 53 6f 75 72 63 65 46 69 6c 65 4f 66 getSourceFileOf 0001ce50: 4d 6f 64 75 6c 65 28 6d 6f 64 75 6c 65 29 20 7b Module(module) { 0001ce60: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 0001ce70: 67 65 74 53 6f 75 72 63 65 46 69 6c 65 4f 66 4e getSourceFileOfN 0001ce80: 6f 64 65 28 6d 6f 64 75 6c 65 2e 76 61 6c 75 65 ode(module.value 0001ce90: 44 65 63 6c 61 72 61 74 69 6f 6e 20 7c 7c 20 67 Declaration || g 0001cea0: 65 74 4e 6f 6e 41 75 67 6d 65 6e 74 61 74 69 6f etNonAugmentatio 0001ceb0: 6e 44 65 63 6c 61 72 61 74 69 6f 6e 28 6d 6f 64 nDeclaration(mod 0001cec0: 75 6c 65 29 29 3b 0a 20 20 20 20 7d 0a 20 20 20 ule));. }. 0001ced0: 20 74 73 2e 67 65 74 53 6f 75 72 63 65 46 69 6c ts.getSourceFil 0001cee0: 65 4f 66 4d 6f 64 75 6c 65 20 3d 20 67 65 74 53 eOfModule = getS 0001cef0: 6f 75 72 63 65 46 69 6c 65 4f 66 4d 6f 64 75 6c ourceFileOfModul 0001cf00: 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 e;. function 0001cf10: 69 73 50 6c 61 69 6e 4a 73 46 69 6c 65 28 66 69 isPlainJsFile(fi 0001cf20: 6c 65 2c 20 63 68 65 63 6b 4a 73 29 20 7b 0a 20 le, checkJs) {. 0001cf30: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 21 return !! 0001cf40: 66 69 6c 65 20 26 26 20 28 66 69 6c 65 2e 73 63 file && (file.sc 0001cf50: 72 69 70 74 4b 69 6e 64 20 3d 3d 3d 20 31 20 2f riptKind === 1 / 0001cf60: 2a 20 53 63 72 69 70 74 4b 69 6e 64 2e 4a 53 20 * ScriptKind.JS 0001cf70: 2a 2f 20 7c 7c 20 66 69 6c 65 2e 73 63 72 69 70 */ || file.scrip 0001cf80: 74 4b 69 6e 64 20 3d 3d 3d 20 32 20 2f 2a 20 53 tKind === 2 /* S 0001cf90: 63 72 69 70 74 4b 69 6e 64 2e 4a 53 58 20 2a 2f criptKind.JSX */ 0001cfa0: 29 20 26 26 20 21 66 69 6c 65 2e 63 68 65 63 6b ) && !file.check 0001cfb0: 4a 73 44 69 72 65 63 74 69 76 65 20 26 26 20 63 JsDirective && c 0001cfc0: 68 65 63 6b 4a 73 20 3d 3d 3d 20 75 6e 64 65 66 heckJs === undef 0001cfd0: 69 6e 65 64 3b 0a 20 20 20 20 7d 0a 20 20 20 20 ined;. }. 0001cfe0: 74 73 2e 69 73 50 6c 61 69 6e 4a 73 46 69 6c 65 ts.isPlainJsFile 0001cff0: 20 3d 20 69 73 50 6c 61 69 6e 4a 73 46 69 6c 65 = isPlainJsFile 0001d000: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 0001d010: 73 53 74 61 74 65 6d 65 6e 74 57 69 74 68 4c 6f sStatementWithLo 0001d020: 63 61 6c 73 28 6e 6f 64 65 29 20 7b 0a 20 20 20 cals(node) {. 0001d030: 20 20 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 switch (nod 0001d040: 65 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 e.kind) {. 0001d050: 20 20 20 20 20 20 63 61 73 65 20 32 33 35 20 2f case 235 / 0001d060: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 6c 6f * SyntaxKind.Blo 0001d070: 63 6b 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 ck */:. 0001d080: 20 20 20 63 61 73 65 20 32 36 33 20 2f 2a 20 53 case 263 /* S 0001d090: 79 6e 74 61 78 4b 69 6e 64 2e 43 61 73 65 42 6c yntaxKind.CaseBl 0001d0a0: 6f 63 6b 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ock */:. 0001d0b0: 20 20 20 20 63 61 73 65 20 32 34 32 20 2f 2a 20 case 242 /* 0001d0c0: 53 79 6e 74 61 78 4b 69 6e 64 2e 46 6f 72 53 74 SyntaxKind.ForSt 0001d0d0: 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 atement */:. 0001d0e0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 34 33 case 243 0001d0f0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 /* SyntaxKind.F 0001d100: 6f 72 49 6e 53 74 61 74 65 6d 65 6e 74 20 2a 2f orInStatement */ 0001d110: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 0001d120: 73 65 20 32 34 34 20 2f 2a 20 53 79 6e 74 61 78 se 244 /* Syntax 0001d130: 4b 69 6e 64 2e 46 6f 72 4f 66 53 74 61 74 65 6d Kind.ForOfStatem 0001d140: 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ent */:. 0001d150: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 0001d160: 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 rue;. }. 0001d170: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 return fa 0001d180: 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 lse;. }. t 0001d190: 73 2e 69 73 53 74 61 74 65 6d 65 6e 74 57 69 74 s.isStatementWit 0001d1a0: 68 4c 6f 63 61 6c 73 20 3d 20 69 73 53 74 61 74 hLocals = isStat 0001d1b0: 65 6d 65 6e 74 57 69 74 68 4c 6f 63 61 6c 73 3b ementWithLocals; 0001d1c0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 0001d1d0: 74 53 74 61 72 74 50 6f 73 69 74 69 6f 6e 4f 66 tStartPositionOf 0001d1e0: 4c 69 6e 65 28 6c 69 6e 65 2c 20 73 6f 75 72 63 Line(line, sourc 0001d1f0: 65 46 69 6c 65 29 20 7b 0a 20 20 20 20 20 20 20 eFile) {. 0001d200: 20 74 73 2e 44 65 62 75 67 2e 61 73 73 65 72 74 ts.Debug.assert 0001d210: 28 6c 69 6e 65 20 3e 3d 20 30 29 3b 0a 20 20 20 (line >= 0);. 0001d220: 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 67 return ts.g 0001d230: 65 74 4c 69 6e 65 53 74 61 72 74 73 28 73 6f 75 etLineStarts(sou 0001d240: 72 63 65 46 69 6c 65 29 5b 6c 69 6e 65 5d 3b 0a rceFile)[line];. 0001d250: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 }. ts.get 0001d260: 53 74 61 72 74 50 6f 73 69 74 69 6f 6e 4f 66 4c StartPositionOfL 0001d270: 69 6e 65 20 3d 20 67 65 74 53 74 61 72 74 50 6f ine = getStartPo 0001d280: 73 69 74 69 6f 6e 4f 66 4c 69 6e 65 3b 0a 20 20 sitionOfLine;. 0001d290: 20 20 2f 2f 20 54 68 69 73 20 69 73 20 61 20 75 // This is a u 0001d2a0: 73 65 66 75 6c 20 66 75 6e 63 74 69 6f 6e 20 66 seful function f 0001d2b0: 6f 72 20 64 65 62 75 67 67 69 6e 67 20 70 75 72 or debugging pur 0001d2c0: 70 6f 73 65 73 2e 0a 20 20 20 20 66 75 6e 63 74 poses.. funct 0001d2d0: 69 6f 6e 20 6e 6f 64 65 50 6f 73 54 6f 53 74 72 ion nodePosToStr 0001d2e0: 69 6e 67 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ing(node) {. 0001d2f0: 20 20 20 20 76 61 72 20 66 69 6c 65 20 3d 20 67 var file = g 0001d300: 65 74 53 6f 75 72 63 65 46 69 6c 65 4f 66 4e 6f etSourceFileOfNo 0001d310: 64 65 28 6e 6f 64 65 29 3b 0a 20 20 20 20 20 20 de(node);. 0001d320: 20 20 76 61 72 20 6c 6f 63 20 3d 20 74 73 2e 67 var loc = ts.g 0001d330: 65 74 4c 69 6e 65 41 6e 64 43 68 61 72 61 63 74 etLineAndCharact 0001d340: 65 72 4f 66 50 6f 73 69 74 69 6f 6e 28 66 69 6c erOfPosition(fil 0001d350: 65 2c 20 6e 6f 64 65 2e 70 6f 73 29 3b 0a 20 20 e, node.pos);. 0001d360: 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 22 2e return "". 0001d370: 63 6f 6e 63 61 74 28 66 69 6c 65 2e 66 69 6c 65 concat(file.file 0001d380: 4e 61 6d 65 2c 20 22 28 22 29 2e 63 6f 6e 63 61 Name, "(").conca 0001d390: 74 28 6c 6f 63 2e 6c 69 6e 65 20 2b 20 31 2c 20 t(loc.line + 1, 0001d3a0: 22 2c 22 29 2e 63 6f 6e 63 61 74 28 6c 6f 63 2e ",").concat(loc. 0001d3b0: 63 68 61 72 61 63 74 65 72 20 2b 20 31 2c 20 22 character + 1, " 0001d3c0: 29 22 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 )");. }. t 0001d3d0: 73 2e 6e 6f 64 65 50 6f 73 54 6f 53 74 72 69 6e s.nodePosToStrin 0001d3e0: 67 20 3d 20 6e 6f 64 65 50 6f 73 54 6f 53 74 72 g = nodePosToStr 0001d3f0: 69 6e 67 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ing;. functio 0001d400: 6e 20 67 65 74 45 6e 64 4c 69 6e 65 50 6f 73 69 n getEndLinePosi 0001d410: 74 69 6f 6e 28 6c 69 6e 65 2c 20 73 6f 75 72 63 tion(line, sourc 0001d420: 65 46 69 6c 65 29 20 7b 0a 20 20 20 20 20 20 20 eFile) {. 0001d430: 20 74 73 2e 44 65 62 75 67 2e 61 73 73 65 72 74 ts.Debug.assert 0001d440: 28 6c 69 6e 65 20 3e 3d 20 30 29 3b 0a 20 20 20 (line >= 0);. 0001d450: 20 20 20 20 20 76 61 72 20 6c 69 6e 65 53 74 61 var lineSta 0001d460: 72 74 73 20 3d 20 74 73 2e 67 65 74 4c 69 6e 65 rts = ts.getLine 0001d470: 53 74 61 72 74 73 28 73 6f 75 72 63 65 46 69 6c Starts(sourceFil 0001d480: 65 29 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 e);. var 0001d490: 6c 69 6e 65 49 6e 64 65 78 20 3d 20 6c 69 6e 65 lineIndex = line 0001d4a0: 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 73 6f ;. var so 0001d4b0: 75 72 63 65 54 65 78 74 20 3d 20 73 6f 75 72 63 urceText = sourc 0001d4c0: 65 46 69 6c 65 2e 74 65 78 74 3b 0a 20 20 20 20 eFile.text;. 0001d4d0: 20 20 20 20 69 66 20 28 6c 69 6e 65 49 6e 64 65 if (lineInde 0001d4e0: 78 20 2b 20 31 20 3d 3d 3d 20 6c 69 6e 65 53 74 x + 1 === lineSt 0001d4f0: 61 72 74 73 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 arts.length) {. 0001d500: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 6c 61 // la 0001d510: 73 74 20 6c 69 6e 65 20 2d 20 72 65 74 75 72 6e st line - return 0001d520: 20 45 4f 46 0a 20 20 20 20 20 20 20 20 20 20 20 EOF. 0001d530: 20 72 65 74 75 72 6e 20 73 6f 75 72 63 65 54 65 return sourceTe 0001d540: 78 74 2e 6c 65 6e 67 74 68 20 2d 20 31 3b 0a 20 xt.length - 1;. 0001d550: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 0001d560: 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 else {. 0001d570: 20 20 20 20 2f 2f 20 63 75 72 72 65 6e 74 20 6c // current l 0001d580: 69 6e 65 20 73 74 61 72 74 0a 20 20 20 20 20 20 ine start. 0001d590: 20 20 20 20 20 20 76 61 72 20 73 74 61 72 74 20 var start 0001d5a0: 3d 20 6c 69 6e 65 53 74 61 72 74 73 5b 6c 69 6e = lineStarts[lin 0001d5b0: 65 49 6e 64 65 78 5d 3b 0a 20 20 20 20 20 20 20 eIndex];. 0001d5c0: 20 20 20 20 20 2f 2f 20 74 61 6b 65 20 74 68 65 // take the 0001d5d0: 20 73 74 61 72 74 20 70 6f 73 69 74 69 6f 6e 20 start position 0001d5e0: 6f 66 20 74 68 65 20 6e 65 78 74 20 6c 69 6e 65 of the next line 0001d5f0: 20 2d 20 31 20 3d 20 69 74 20 73 68 6f 75 6c 64 - 1 = it should 0001d600: 20 62 65 20 73 6f 6d 65 20 6c 69 6e 65 20 62 72 be some line br 0001d610: 65 61 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 eak. 0001d620: 76 61 72 20 70 6f 73 20 3d 20 6c 69 6e 65 53 74 var pos = lineSt 0001d630: 61 72 74 73 5b 6c 69 6e 65 49 6e 64 65 78 20 2b arts[lineIndex + 0001d640: 20 31 5d 20 2d 20 31 3b 0a 20 20 20 20 20 20 20 1] - 1;. 0001d650: 20 20 20 20 20 74 73 2e 44 65 62 75 67 2e 61 73 ts.Debug.as 0001d660: 73 65 72 74 28 74 73 2e 69 73 4c 69 6e 65 42 72 sert(ts.isLineBr 0001d670: 65 61 6b 28 73 6f 75 72 63 65 54 65 78 74 2e 63 eak(sourceText.c 0001d680: 68 61 72 43 6f 64 65 41 74 28 70 6f 73 29 29 29 harCodeAt(pos))) 0001d690: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f ;. // 0001d6a0: 20 77 61 6c 6b 20 62 61 63 6b 77 61 72 64 73 20 walk backwards 0001d6b0: 73 6b 69 70 70 69 6e 67 20 6c 69 6e 65 20 62 72 skipping line br 0001d6c0: 65 61 6b 73 2c 20 73 74 6f 70 20 74 68 65 20 74 eaks, stop the t 0001d6d0: 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 he beginning of 0001d6e0: 63 75 72 72 65 6e 74 20 6c 69 6e 65 2e 0a 20 20 current line.. 0001d6f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 2e 65 // i.e 0001d700: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f :. // 0001d710: 20 3c 73 6f 6d 65 20 74 65 78 74 3e 0a 20 20 20 <some text>. 0001d720: 20 20 20 20 20 20 20 20 20 2f 2f 20 24 20 3c 2d // $ <- 0001d730: 20 65 6e 64 20 6f 66 20 6c 69 6e 65 20 66 6f 72 end of line for 0001d740: 20 74 68 69 73 20 70 6f 73 69 74 69 6f 6e 20 73 this position s 0001d750: 68 6f 75 6c 64 20 6d 61 74 63 68 20 74 68 65 20 hould match the 0001d760: 73 74 61 72 74 20 70 6f 73 69 74 69 6f 6e 0a 20 start position. 0001d770: 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 while 0001d780: 20 28 73 74 61 72 74 20 3c 3d 20 70 6f 73 20 26 (start <= pos & 0001d790: 26 20 74 73 2e 69 73 4c 69 6e 65 42 72 65 61 6b & ts.isLineBreak 0001d7a0: 28 73 6f 75 72 63 65 54 65 78 74 2e 63 68 61 72 (sourceText.char 0001d7b0: 43 6f 64 65 41 74 28 70 6f 73 29 29 29 20 7b 0a CodeAt(pos))) {. 0001d7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0001d7d0: 70 6f 73 2d 2d 3b 0a 20 20 20 20 20 20 20 20 20 pos--;. 0001d7e0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 0001d7f0: 20 72 65 74 75 72 6e 20 70 6f 73 3b 0a 20 20 20 return pos;. 0001d800: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 }. }. 0001d810: 20 74 73 2e 67 65 74 45 6e 64 4c 69 6e 65 50 6f ts.getEndLinePo 0001d820: 73 69 74 69 6f 6e 20 3d 20 67 65 74 45 6e 64 4c sition = getEndL 0001d830: 69 6e 65 50 6f 73 69 74 69 6f 6e 3b 0a 20 20 20 inePosition;. 0001d840: 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 52 65 74 75 /**. * Retu 0001d850: 72 6e 73 20 61 20 76 61 6c 75 65 20 69 6e 64 69 rns a value indi 0001d860: 63 61 74 69 6e 67 20 77 68 65 74 68 65 72 20 61 cating whether a 0001d870: 20 6e 61 6d 65 20 69 73 20 75 6e 69 71 75 65 20 name is unique 0001d880: 67 6c 6f 62 61 6c 6c 79 20 6f 72 20 77 69 74 68 globally or with 0001d890: 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 66 in the current f 0001d8a0: 69 6c 65 2e 0a 20 20 20 20 20 2a 20 4e 6f 74 65 ile.. * Note 0001d8b0: 3a 20 54 68 69 73 20 64 6f 65 73 20 6e 6f 74 20 : This does not 0001d8c0: 63 6f 6e 73 69 64 65 72 20 77 68 65 74 68 65 72 consider whether 0001d8d0: 20 61 20 6e 61 6d 65 20 61 70 70 65 61 72 73 20 a name appears 0001d8e0: 61 73 20 61 20 66 72 65 65 20 69 64 65 6e 74 69 as a free identi 0001d8f0: 66 69 65 72 20 6f 72 20 6e 6f 74 2c 20 73 6f 20 fier or not, so 0001d900: 61 74 20 74 68 65 20 65 78 70 72 65 73 73 69 6f at the expressio 0001d910: 6e 20 60 78 2e 79 60 20 74 68 69 73 20 69 6e 63 n `x.y` this inc 0001d920: 6c 75 64 65 73 20 62 6f 74 68 20 60 78 60 20 61 ludes both `x` a 0001d930: 6e 64 20 60 79 60 2e 0a 20 20 20 20 20 2a 2f 0a nd `y`.. */. 0001d940: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 46 function isF 0001d950: 69 6c 65 4c 65 76 65 6c 55 6e 69 71 75 65 4e 61 ileLevelUniqueNa 0001d960: 6d 65 28 73 6f 75 72 63 65 46 69 6c 65 2c 20 6e me(sourceFile, n 0001d970: 61 6d 65 2c 20 68 61 73 47 6c 6f 62 61 6c 4e 61 ame, hasGlobalNa 0001d980: 6d 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 me) {. re 0001d990: 74 75 72 6e 20 21 28 68 61 73 47 6c 6f 62 61 6c turn !(hasGlobal 0001d9a0: 4e 61 6d 65 20 26 26 20 68 61 73 47 6c 6f 62 61 Name && hasGloba 0001d9b0: 6c 4e 61 6d 65 28 6e 61 6d 65 29 29 20 26 26 20 lName(name)) && 0001d9c0: 21 73 6f 75 72 63 65 46 69 6c 65 2e 69 64 65 6e !sourceFile.iden 0001d9d0: 74 69 66 69 65 72 73 2e 68 61 73 28 6e 61 6d 65 tifiers.has(name 0001d9e0: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 0001d9f0: 69 73 46 69 6c 65 4c 65 76 65 6c 55 6e 69 71 75 isFileLevelUniqu 0001da00: 65 4e 61 6d 65 20 3d 20 69 73 46 69 6c 65 4c 65 eName = isFileLe 0001da10: 76 65 6c 55 6e 69 71 75 65 4e 61 6d 65 3b 0a 20 velUniqueName;. 0001da20: 20 20 20 2f 2f 20 52 65 74 75 72 6e 73 20 74 72 // Returns tr 0001da30: 75 65 20 69 66 20 74 68 69 73 20 6e 6f 64 65 20 ue if this node 0001da40: 69 73 20 6d 69 73 73 69 6e 67 20 66 72 6f 6d 20 is missing from 0001da50: 74 68 65 20 61 63 74 75 61 6c 20 73 6f 75 72 63 the actual sourc 0001da60: 65 20 63 6f 64 65 2e 20 41 20 27 6d 69 73 73 69 e code. A 'missi 0001da70: 6e 67 27 20 6e 6f 64 65 20 69 73 20 64 69 66 66 ng' node is diff 0001da80: 65 72 65 6e 74 0a 20 20 20 20 2f 2f 20 66 72 6f erent. // fro 0001da90: 6d 20 27 75 6e 64 65 66 69 6e 65 64 2f 64 65 66 m 'undefined/def 0001daa0: 69 6e 65 64 27 2e 20 57 68 65 6e 20 61 20 6e 6f ined'. When a no 0001dab0: 64 65 20 69 73 20 75 6e 64 65 66 69 6e 65 64 20 de is undefined 0001dac0: 28 77 68 69 63 68 20 63 61 6e 20 68 61 70 70 65 (which can happe 0001dad0: 6e 20 66 6f 72 20 6f 70 74 69 6f 6e 61 6c 20 6e n for optional n 0001dae0: 6f 64 65 73 0a 20 20 20 20 2f 2f 20 69 6e 20 74 odes. // in t 0001daf0: 68 65 20 74 72 65 65 29 2c 20 69 74 20 69 73 20 he tree), it is 0001db00: 64 65 66 69 6e 69 74 65 6c 79 20 6d 69 73 73 69 definitely missi 0001db10: 6e 67 2e 20 48 6f 77 65 76 65 72 2c 20 61 20 6e ng. However, a n 0001db20: 6f 64 65 20 6d 61 79 20 62 65 20 64 65 66 69 6e ode may be defin 0001db30: 65 64 2c 20 62 75 74 20 73 74 69 6c 6c 20 62 65 ed, but still be 0001db40: 0a 20 20 20 20 2f 2f 20 6d 69 73 73 69 6e 67 2e . // missing. 0001db50: 20 20 54 68 69 73 20 68 61 70 70 65 6e 73 20 77 This happens w 0001db60: 68 65 6e 65 76 65 72 20 74 68 65 20 70 61 72 73 henever the pars 0001db70: 65 72 20 6b 6e 6f 77 73 20 69 74 20 6e 65 65 64 er knows it need 0001db80: 73 20 74 6f 20 70 61 72 73 65 20 73 6f 6d 65 74 s to parse somet 0001db90: 68 69 6e 67 2c 20 62 75 74 20 63 61 6e 27 74 0a hing, but can't. 0001dba0: 20 20 20 20 2f 2f 20 67 65 74 20 61 6e 79 74 68 // get anyth 0001dbb0: 69 6e 67 20 69 6e 20 74 68 65 20 73 6f 75 72 63 ing in the sourc 0001dbc0: 65 20 63 6f 64 65 20 74 68 61 74 20 69 74 20 65 e code that it e 0001dbd0: 78 70 65 63 74 73 20 61 74 20 74 68 61 74 20 6c xpects at that l 0001dbe0: 6f 63 61 74 69 6f 6e 2e 20 46 6f 72 20 65 78 61 ocation. For exa 0001dbf0: 6d 70 6c 65 3a 0a 20 20 20 20 2f 2f 0a 20 20 20 mple:. //. 0001dc00: 20 2f 2f 20 20 20 20 20 20 20 20 20 20 6c 65 74 // let 0001dc10: 20 61 3a 20 3b 0a 20 20 20 20 2f 2f 0a 20 20 20 a: ;. //. 0001dc20: 20 2f 2f 20 48 65 72 65 2c 20 74 68 65 20 54 79 // Here, the Ty 0001dc30: 70 65 20 69 6e 20 74 68 65 20 54 79 70 65 2d 41 pe in the Type-A 0001dc40: 6e 6e 6f 74 61 74 69 6f 6e 20 69 73 20 6e 6f 74 nnotation is not 0001dc50: 2d 6f 70 74 69 6f 6e 61 6c 20 28 61 73 20 74 68 -optional (as th 0001dc60: 65 72 65 20 69 73 20 61 20 63 6f 6c 6f 6e 20 69 ere is a colon i 0001dc70: 6e 20 74 68 65 20 73 6f 75 72 63 65 0a 20 20 20 n the source. 0001dc80: 20 2f 2f 20 63 6f 64 65 29 2e 20 53 6f 20 74 68 // code). So th 0001dc90: 65 20 70 61 72 73 65 72 20 77 69 6c 6c 20 61 74 e parser will at 0001dca0: 74 65 6d 70 74 20 74 6f 20 70 61 72 73 65 20 6f tempt to parse o 0001dcb0: 75 74 20 61 20 74 79 70 65 2c 20 61 6e 64 20 77 ut a type, and w 0001dcc0: 69 6c 6c 20 63 72 65 61 74 65 20 61 6e 20 61 63 ill create an ac 0001dcd0: 74 75 61 6c 20 6e 6f 64 65 2e 0a 20 20 20 20 2f tual node.. / 0001dce0: 2f 20 48 6f 77 65 76 65 72 2c 20 74 68 69 73 20 / However, this 0001dcf0: 6e 6f 64 65 20 77 69 6c 6c 20 62 65 20 27 6d 69 node will be 'mi 0001dd00: 73 73 69 6e 67 27 20 69 6e 20 74 68 65 20 73 65 ssing' in the se 0001dd10: 6e 73 65 20 74 68 61 74 20 6e 6f 20 61 63 74 75 nse that no actu 0001dd20: 61 6c 20 73 6f 75 72 63 65 2d 63 6f 64 65 2f 74 al source-code/t 0001dd30: 6f 6b 65 6e 73 20 61 72 65 0a 20 20 20 20 2f 2f okens are. // 0001dd40: 20 63 6f 6e 74 61 69 6e 65 64 20 77 69 74 68 69 contained withi 0001dd50: 6e 20 69 74 2e 0a 20 20 20 20 66 75 6e 63 74 69 n it.. functi 0001dd60: 6f 6e 20 6e 6f 64 65 49 73 4d 69 73 73 69 6e 67 on nodeIsMissing 0001dd70: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 0001dd80: 20 69 66 20 28 6e 6f 64 65 20 3d 3d 3d 20 75 6e if (node === un 0001dd90: 64 65 66 69 6e 65 64 29 20 7b 0a 20 20 20 20 20 defined) {. 0001dda0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 return tr 0001ddb0: 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 ue;. }. 0001ddc0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 return nod 0001ddd0: 65 2e 70 6f 73 20 3d 3d 3d 20 6e 6f 64 65 2e 65 e.pos === node.e 0001dde0: 6e 64 20 26 26 20 6e 6f 64 65 2e 70 6f 73 20 3e nd && node.pos > 0001ddf0: 3d 20 30 20 26 26 20 6e 6f 64 65 2e 6b 69 6e 64 = 0 && node.kind 0001de00: 20 21 3d 3d 20 31 20 2f 2a 20 53 79 6e 74 61 78 !== 1 /* Syntax 0001de10: 4b 69 6e 64 2e 45 6e 64 4f 66 46 69 6c 65 54 6f Kind.EndOfFileTo 0001de20: 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ken */;. }. 0001de30: 20 20 74 73 2e 6e 6f 64 65 49 73 4d 69 73 73 69 ts.nodeIsMissi 0001de40: 6e 67 20 3d 20 6e 6f 64 65 49 73 4d 69 73 73 69 ng = nodeIsMissi 0001de50: 6e 67 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ng;. function 0001de60: 20 6e 6f 64 65 49 73 50 72 65 73 65 6e 74 28 6e nodeIsPresent(n 0001de70: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 0001de80: 65 74 75 72 6e 20 21 6e 6f 64 65 49 73 4d 69 73 eturn !nodeIsMis 0001de90: 73 69 6e 67 28 6e 6f 64 65 29 3b 0a 20 20 20 20 sing(node);. 0001dea0: 7d 0a 20 20 20 20 74 73 2e 6e 6f 64 65 49 73 50 }. ts.nodeIsP 0001deb0: 72 65 73 65 6e 74 20 3d 20 6e 6f 64 65 49 73 50 resent = nodeIsP 0001dec0: 72 65 73 65 6e 74 3b 0a 20 20 20 20 66 75 6e 63 resent;. func 0001ded0: 74 69 6f 6e 20 69 6e 73 65 72 74 53 74 61 74 65 tion insertState 0001dee0: 6d 65 6e 74 73 41 66 74 65 72 50 72 6f 6c 6f 67 mentsAfterProlog 0001def0: 75 65 28 74 6f 2c 20 66 72 6f 6d 2c 20 69 73 50 ue(to, from, isP 0001df00: 72 6f 6c 6f 67 75 65 44 69 72 65 63 74 69 76 65 rologueDirective 0001df10: 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 ) {. if ( 0001df20: 66 72 6f 6d 20 3d 3d 3d 20 75 6e 64 65 66 69 6e from === undefin 0001df30: 65 64 20 7c 7c 20 66 72 6f 6d 2e 6c 65 6e 67 74 ed || from.lengt 0001df40: 68 20 3d 3d 3d 20 30 29 0a 20 20 20 20 20 20 20 h === 0). 0001df50: 20 20 20 20 20 72 65 74 75 72 6e 20 74 6f 3b 0a return to;. 0001df60: 20 20 20 20 20 20 20 20 76 61 72 20 73 74 61 74 var stat 0001df70: 65 6d 65 6e 74 49 6e 64 65 78 20 3d 20 30 3b 0a ementIndex = 0;. 0001df80: 20 20 20 20 20 20 20 20 2f 2f 20 73 6b 69 70 20 // skip 0001df90: 61 6c 6c 20 70 72 6f 6c 6f 67 75 65 20 64 69 72 all prologue dir 0001dfa0: 65 63 74 69 76 65 73 20 74 6f 20 69 6e 73 65 72 ectives to inser 0001dfb0: 74 20 61 74 20 74 68 65 20 63 6f 72 72 65 63 74 t at the correct 0001dfc0: 20 70 6f 73 69 74 69 6f 6e 0a 20 20 20 20 20 20 position. 0001dfd0: 20 20 66 6f 72 20 28 3b 20 73 74 61 74 65 6d 65 for (; stateme 0001dfe0: 6e 74 49 6e 64 65 78 20 3c 20 74 6f 2e 6c 65 6e ntIndex < to.len 0001dff0: 67 74 68 3b 20 2b 2b 73 74 61 74 65 6d 65 6e 74 gth; ++statement 0001e000: 49 6e 64 65 78 29 20 7b 0a 20 20 20 20 20 20 20 Index) {. 0001e010: 20 20 20 20 20 69 66 20 28 21 69 73 50 72 6f 6c if (!isProl 0001e020: 6f 67 75 65 44 69 72 65 63 74 69 76 65 28 74 6f ogueDirective(to 0001e030: 5b 73 74 61 74 65 6d 65 6e 74 49 6e 64 65 78 5d [statementIndex] 0001e040: 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 )) {. 0001e050: 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 break;. 0001e060: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0001e070: 20 20 7d 0a 20 20 20 20 20 20 20 20 74 6f 2e 73 }. to.s 0001e080: 70 6c 69 63 65 2e 61 70 70 6c 79 28 74 6f 2c 20 plice.apply(to, 0001e090: 5f 5f 73 70 72 65 61 64 41 72 72 61 79 28 5b 73 __spreadArray([s 0001e0a0: 74 61 74 65 6d 65 6e 74 49 6e 64 65 78 2c 20 30 tatementIndex, 0 0001e0b0: 5d 2c 20 66 72 6f 6d 2c 20 66 61 6c 73 65 29 29 ], from, false)) 0001e0c0: 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e ;. return 0001e0d0: 20 74 6f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 66 to;. }. f 0001e0e0: 75 6e 63 74 69 6f 6e 20 69 6e 73 65 72 74 53 74 unction insertSt 0001e0f0: 61 74 65 6d 65 6e 74 41 66 74 65 72 50 72 6f 6c atementAfterProl 0001e100: 6f 67 75 65 28 74 6f 2c 20 73 74 61 74 65 6d 65 ogue(to, stateme 0001e110: 6e 74 2c 20 69 73 50 72 6f 6c 6f 67 75 65 44 69 nt, isPrologueDi 0001e120: 72 65 63 74 69 76 65 29 20 7b 0a 20 20 20 20 20 rective) {. 0001e130: 20 20 20 69 66 20 28 73 74 61 74 65 6d 65 6e 74 if (statement 0001e140: 20 3d 3d 3d 20 75 6e 64 65 66 69 6e 65 64 29 0a === undefined). 0001e150: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 0001e160: 72 6e 20 74 6f 3b 0a 20 20 20 20 20 20 20 20 76 rn to;. v 0001e170: 61 72 20 73 74 61 74 65 6d 65 6e 74 49 6e 64 65 ar statementInde 0001e180: 78 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 2f x = 0;. / 0001e190: 2f 20 73 6b 69 70 20 61 6c 6c 20 70 72 6f 6c 6f / skip all prolo 0001e1a0: 67 75 65 20 64 69 72 65 63 74 69 76 65 73 20 74 gue directives t 0001e1b0: 6f 20 69 6e 73 65 72 74 20 61 74 20 74 68 65 20 o insert at the 0001e1c0: 63 6f 72 72 65 63 74 20 70 6f 73 69 74 69 6f 6e correct position 0001e1d0: 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 3b 20 . for (; 0001e1e0: 73 74 61 74 65 6d 65 6e 74 49 6e 64 65 78 20 3c statementIndex < 0001e1f0: 20 74 6f 2e 6c 65 6e 67 74 68 3b 20 2b 2b 73 74 to.length; ++st 0001e200: 61 74 65 6d 65 6e 74 49 6e 64 65 78 29 20 7b 0a atementIndex) {. 0001e210: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if ( 0001e220: 21 69 73 50 72 6f 6c 6f 67 75 65 44 69 72 65 63 !isPrologueDirec 0001e230: 74 69 76 65 28 74 6f 5b 73 74 61 74 65 6d 65 6e tive(to[statemen 0001e240: 74 49 6e 64 65 78 5d 29 29 20 7b 0a 20 20 20 20 tIndex])) {. 0001e250: 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 brea 0001e260: 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d k;. } 0001e270: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }. 0001e280: 20 20 20 74 6f 2e 73 70 6c 69 63 65 28 73 74 61 to.splice(sta 0001e290: 74 65 6d 65 6e 74 49 6e 64 65 78 2c 20 30 2c 20 tementIndex, 0, 0001e2a0: 73 74 61 74 65 6d 65 6e 74 29 3b 0a 20 20 20 20 statement);. 0001e2b0: 20 20 20 20 72 65 74 75 72 6e 20 74 6f 3b 0a 20 return to;. 0001e2c0: 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 74 69 6f }. functio 0001e2d0: 6e 20 69 73 41 6e 79 50 72 6f 6c 6f 67 75 65 44 n isAnyPrologueD 0001e2e0: 69 72 65 63 74 69 76 65 28 6e 6f 64 65 29 20 7b irective(node) { 0001e2f0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 0001e300: 69 73 50 72 6f 6c 6f 67 75 65 44 69 72 65 63 74 isPrologueDirect 0001e310: 69 76 65 28 6e 6f 64 65 29 20 7c 7c 20 21 21 28 ive(node) || !!( 0001e320: 67 65 74 45 6d 69 74 46 6c 61 67 73 28 6e 6f 64 getEmitFlags(nod 0001e330: 65 29 20 26 20 31 30 34 38 35 37 36 20 2f 2a 20 e) & 1048576 /* 0001e340: 45 6d 69 74 46 6c 61 67 73 2e 43 75 73 74 6f 6d EmitFlags.Custom 0001e350: 50 72 6f 6c 6f 67 75 65 20 2a 2f 29 3b 0a 20 20 Prologue */);. 0001e360: 20 20 7d 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 }. /**. 0001e370: 20 2a 20 50 72 65 70 65 6e 64 73 20 73 74 61 74 * Prepends stat 0001e380: 65 6d 65 6e 74 73 20 74 6f 20 61 6e 20 61 72 72 ements to an arr 0001e390: 61 79 20 77 68 69 6c 65 20 74 61 6b 69 6e 67 20 ay while taking 0001e3a0: 63 61 72 65 20 6f 66 20 70 72 6f 6c 6f 67 75 65 care of prologue 0001e3b0: 20 64 69 72 65 63 74 69 76 65 73 2e 0a 20 20 20 directives.. 0001e3c0: 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f */. functio 0001e3d0: 6e 20 69 6e 73 65 72 74 53 74 61 74 65 6d 65 6e n insertStatemen 0001e3e0: 74 73 41 66 74 65 72 53 74 61 6e 64 61 72 64 50 tsAfterStandardP 0001e3f0: 72 6f 6c 6f 67 75 65 28 74 6f 2c 20 66 72 6f 6d rologue(to, from 0001e400: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0001e410: 72 6e 20 69 6e 73 65 72 74 53 74 61 74 65 6d 65 rn insertStateme 0001e420: 6e 74 73 41 66 74 65 72 50 72 6f 6c 6f 67 75 65 ntsAfterPrologue 0001e430: 28 74 6f 2c 20 66 72 6f 6d 2c 20 69 73 50 72 6f (to, from, isPro 0001e440: 6c 6f 67 75 65 44 69 72 65 63 74 69 76 65 29 3b logueDirective); 0001e450: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 6e . }. ts.in 0001e460: 73 65 72 74 53 74 61 74 65 6d 65 6e 74 73 41 66 sertStatementsAf 0001e470: 74 65 72 53 74 61 6e 64 61 72 64 50 72 6f 6c 6f terStandardProlo 0001e480: 67 75 65 20 3d 20 69 6e 73 65 72 74 53 74 61 74 gue = insertStat 0001e490: 65 6d 65 6e 74 73 41 66 74 65 72 53 74 61 6e 64 ementsAfterStand 0001e4a0: 61 72 64 50 72 6f 6c 6f 67 75 65 3b 0a 20 20 20 ardPrologue;. 0001e4b0: 20 66 75 6e 63 74 69 6f 6e 20 69 6e 73 65 72 74 function insert 0001e4c0: 53 74 61 74 65 6d 65 6e 74 73 41 66 74 65 72 43 StatementsAfterC 0001e4d0: 75 73 74 6f 6d 50 72 6f 6c 6f 67 75 65 28 74 6f ustomPrologue(to 0001e4e0: 2c 20 66 72 6f 6d 29 20 7b 0a 20 20 20 20 20 20 , from) {. 0001e4f0: 20 20 72 65 74 75 72 6e 20 69 6e 73 65 72 74 53 return insertS 0001e500: 74 61 74 65 6d 65 6e 74 73 41 66 74 65 72 50 72 tatementsAfterPr 0001e510: 6f 6c 6f 67 75 65 28 74 6f 2c 20 66 72 6f 6d 2c ologue(to, from, 0001e520: 20 69 73 41 6e 79 50 72 6f 6c 6f 67 75 65 44 69 isAnyPrologueDi 0001e530: 72 65 63 74 69 76 65 29 3b 0a 20 20 20 20 7d 0a rective);. }. 0001e540: 20 20 20 20 74 73 2e 69 6e 73 65 72 74 53 74 61 ts.insertSta 0001e550: 74 65 6d 65 6e 74 73 41 66 74 65 72 43 75 73 74 tementsAfterCust 0001e560: 6f 6d 50 72 6f 6c 6f 67 75 65 20 3d 20 69 6e 73 omPrologue = ins 0001e570: 65 72 74 53 74 61 74 65 6d 65 6e 74 73 41 66 74 ertStatementsAft 0001e580: 65 72 43 75 73 74 6f 6d 50 72 6f 6c 6f 67 75 65 erCustomPrologue 0001e590: 3b 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a ;. /**. * 0001e5a0: 20 50 72 65 70 65 6e 64 73 20 73 74 61 74 65 6d Prepends statem 0001e5b0: 65 6e 74 73 20 74 6f 20 61 6e 20 61 72 72 61 79 ents to an array 0001e5c0: 20 77 68 69 6c 65 20 74 61 6b 69 6e 67 20 63 61 while taking ca 0001e5d0: 72 65 20 6f 66 20 70 72 6f 6c 6f 67 75 65 20 64 re of prologue d 0001e5e0: 69 72 65 63 74 69 76 65 73 2e 0a 20 20 20 20 20 irectives.. 0001e5f0: 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 */. function 0001e600: 69 6e 73 65 72 74 53 74 61 74 65 6d 65 6e 74 41 insertStatementA 0001e610: 66 74 65 72 53 74 61 6e 64 61 72 64 50 72 6f 6c fterStandardProl 0001e620: 6f 67 75 65 28 74 6f 2c 20 73 74 61 74 65 6d 65 ogue(to, stateme 0001e630: 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 nt) {. re 0001e640: 74 75 72 6e 20 69 6e 73 65 72 74 53 74 61 74 65 turn insertState 0001e650: 6d 65 6e 74 41 66 74 65 72 50 72 6f 6c 6f 67 75 mentAfterPrologu 0001e660: 65 28 74 6f 2c 20 73 74 61 74 65 6d 65 6e 74 2c e(to, statement, 0001e670: 20 69 73 50 72 6f 6c 6f 67 75 65 44 69 72 65 63 isPrologueDirec 0001e680: 74 69 76 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 tive);. }. 0001e690: 20 74 73 2e 69 6e 73 65 72 74 53 74 61 74 65 6d ts.insertStatem 0001e6a0: 65 6e 74 41 66 74 65 72 53 74 61 6e 64 61 72 64 entAfterStandard 0001e6b0: 50 72 6f 6c 6f 67 75 65 20 3d 20 69 6e 73 65 72 Prologue = inser 0001e6c0: 74 53 74 61 74 65 6d 65 6e 74 41 66 74 65 72 53 tStatementAfterS 0001e6d0: 74 61 6e 64 61 72 64 50 72 6f 6c 6f 67 75 65 3b tandardPrologue; 0001e6e0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 6e . function in 0001e6f0: 73 65 72 74 53 74 61 74 65 6d 65 6e 74 41 66 74 sertStatementAft 0001e700: 65 72 43 75 73 74 6f 6d 50 72 6f 6c 6f 67 75 65 erCustomPrologue 0001e710: 28 74 6f 2c 20 73 74 61 74 65 6d 65 6e 74 29 20 (to, statement) 0001e720: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 0001e730: 20 69 6e 73 65 72 74 53 74 61 74 65 6d 65 6e 74 insertStatement 0001e740: 41 66 74 65 72 50 72 6f 6c 6f 67 75 65 28 74 6f AfterPrologue(to 0001e750: 2c 20 73 74 61 74 65 6d 65 6e 74 2c 20 69 73 41 , statement, isA 0001e760: 6e 79 50 72 6f 6c 6f 67 75 65 44 69 72 65 63 74 nyPrologueDirect 0001e770: 69 76 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 ive);. }. 0001e780: 74 73 2e 69 6e 73 65 72 74 53 74 61 74 65 6d 65 ts.insertStateme 0001e790: 6e 74 41 66 74 65 72 43 75 73 74 6f 6d 50 72 6f ntAfterCustomPro 0001e7a0: 6c 6f 67 75 65 20 3d 20 69 6e 73 65 72 74 53 74 logue = insertSt 0001e7b0: 61 74 65 6d 65 6e 74 41 66 74 65 72 43 75 73 74 atementAfterCust 0001e7c0: 6f 6d 50 72 6f 6c 6f 67 75 65 3b 0a 20 20 20 20 omPrologue;. 0001e7d0: 2f 2a 2a 0a 20 20 20 20 20 2a 20 44 65 74 65 72 /**. * Deter 0001e7e0: 6d 69 6e 65 20 69 66 20 74 68 65 20 67 69 76 65 mine if the give 0001e7f0: 6e 20 63 6f 6d 6d 65 6e 74 20 69 73 20 61 20 74 n comment is a t 0001e800: 72 69 70 6c 65 2d 73 6c 61 73 68 0a 20 20 20 20 riple-slash. 0001e810: 20 2a 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 *. * @retur 0001e820: 6e 20 74 72 75 65 20 69 66 20 74 68 65 20 63 6f n true if the co 0001e830: 6d 6d 65 6e 74 20 69 73 20 61 20 74 72 69 70 6c mment is a tripl 0001e840: 65 2d 73 6c 61 73 68 20 63 6f 6d 6d 65 6e 74 20 e-slash comment 0001e850: 65 6c 73 65 20 66 61 6c 73 65 0a 20 20 20 20 20 else false. 0001e860: 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 */. function 0001e870: 69 73 52 65 63 6f 67 6e 69 7a 65 64 54 72 69 70 isRecognizedTrip 0001e880: 6c 65 53 6c 61 73 68 43 6f 6d 6d 65 6e 74 28 74 leSlashComment(t 0001e890: 65 78 74 2c 20 63 6f 6d 6d 65 6e 74 50 6f 73 2c ext, commentPos, 0001e8a0: 20 63 6f 6d 6d 65 6e 74 45 6e 64 29 20 7b 0a 20 commentEnd) {. 0001e8b0: 20 20 20 20 20 20 20 2f 2f 20 56 65 72 69 66 79 // Verify 0001e8c0: 20 74 68 69 73 20 69 73 20 2f 2f 2f 20 63 6f 6d this is /// com 0001e8d0: 6d 65 6e 74 2c 20 62 75 74 20 64 6f 20 74 68 65 ment, but do the 0001e8e0: 20 72 65 67 65 78 70 20 6d 61 74 63 68 20 6f 6e regexp match on 0001e8f0: 6c 79 20 77 68 65 6e 20 77 65 20 66 69 72 73 74 ly when we first 0001e900: 20 63 61 6e 20 66 69 6e 64 20 2f 2f 2f 20 69 6e can find /// in 0001e910: 20 74 68 65 20 63 6f 6d 6d 65 6e 74 20 74 65 78 the comment tex 0001e920: 74 0a 20 20 20 20 20 20 20 20 2f 2f 20 73 6f 20 t. // so 0001e930: 74 68 61 74 20 77 65 20 64 6f 6e 27 74 20 65 6e that we don't en 0001e940: 64 20 75 70 20 63 6f 6d 70 75 74 69 6e 67 20 63 d up computing c 0001e950: 6f 6d 6d 65 6e 74 20 73 74 72 69 6e 67 20 61 6e omment string an 0001e960: 64 20 64 6f 69 6e 67 20 6d 61 74 63 68 20 66 6f d doing match fo 0001e970: 72 20 61 6c 6c 20 2f 2f 20 63 6f 6d 6d 65 6e 74 r all // comment 0001e980: 73 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 65 s. if (te 0001e990: 78 74 2e 63 68 61 72 43 6f 64 65 41 74 28 63 6f xt.charCodeAt(co 0001e9a0: 6d 6d 65 6e 74 50 6f 73 20 2b 20 31 29 20 3d 3d mmentPos + 1) == 0001e9b0: 3d 20 34 37 20 2f 2a 20 43 68 61 72 61 63 74 65 = 47 /* Characte 0001e9c0: 72 43 6f 64 65 73 2e 73 6c 61 73 68 20 2a 2f 20 rCodes.slash */ 0001e9d0: 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 &&. c 0001e9e0: 6f 6d 6d 65 6e 74 50 6f 73 20 2b 20 32 20 3c 20 ommentPos + 2 < 0001e9f0: 63 6f 6d 6d 65 6e 74 45 6e 64 20 26 26 0a 20 20 commentEnd &&. 0001ea00: 20 20 20 20 20 20 20 20 20 20 74 65 78 74 2e 63 text.c 0001ea10: 68 61 72 43 6f 64 65 41 74 28 63 6f 6d 6d 65 6e harCodeAt(commen 0001ea20: 74 50 6f 73 20 2b 20 32 29 20 3d 3d 3d 20 34 37 tPos + 2) === 47 0001ea30: 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 /* CharacterCod 0001ea40: 65 73 2e 73 6c 61 73 68 20 2a 2f 29 20 7b 0a 20 es.slash */) {. 0001ea50: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 74 var t 0001ea60: 65 78 74 53 75 62 53 74 72 20 3d 20 74 65 78 74 extSubStr = text 0001ea70: 2e 73 75 62 73 74 72 69 6e 67 28 63 6f 6d 6d 65 .substring(comme 0001ea80: 6e 74 50 6f 73 2c 20 63 6f 6d 6d 65 6e 74 45 6e ntPos, commentEn 0001ea90: 64 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 d);. 0001eaa0: 72 65 74 75 72 6e 20 74 73 2e 66 75 6c 6c 54 72 return ts.fullTr 0001eab0: 69 70 6c 65 53 6c 61 73 68 52 65 66 65 72 65 6e ipleSlashReferen 0001eac0: 63 65 50 61 74 68 52 65 67 45 78 2e 74 65 73 74 cePathRegEx.test 0001ead0: 28 74 65 78 74 53 75 62 53 74 72 29 20 7c 7c 0a (textSubStr) ||. 0001eae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0001eaf0: 74 73 2e 66 75 6c 6c 54 72 69 70 6c 65 53 6c 61 ts.fullTripleSla 0001eb00: 73 68 41 4d 44 52 65 66 65 72 65 6e 63 65 50 61 shAMDReferencePa 0001eb10: 74 68 52 65 67 45 78 2e 74 65 73 74 28 74 65 78 thRegEx.test(tex 0001eb20: 74 53 75 62 53 74 72 29 20 7c 7c 0a 20 20 20 20 tSubStr) ||. 0001eb30: 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6c 6c full 0001eb40: 54 72 69 70 6c 65 53 6c 61 73 68 52 65 66 65 72 TripleSlashRefer 0001eb50: 65 6e 63 65 54 79 70 65 52 65 66 65 72 65 6e 63 enceTypeReferenc 0001eb60: 65 44 69 72 65 63 74 69 76 65 52 65 67 45 78 2e eDirectiveRegEx. 0001eb70: 74 65 73 74 28 74 65 78 74 53 75 62 53 74 72 29 test(textSubStr) 0001eb80: 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ||. 0001eb90: 20 20 20 20 64 65 66 61 75 6c 74 4c 69 62 52 65 defaultLibRe 0001eba0: 66 65 72 65 6e 63 65 52 65 67 45 78 2e 74 65 73 ferenceRegEx.tes 0001ebb0: 74 28 74 65 78 74 53 75 62 53 74 72 29 20 3f 0a t(textSubStr) ?. 0001ebc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0001ebd0: 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0a 20 20 true : false;. 0001ebe0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 0001ebf0: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 return false;. 0001ec00: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 52 65 63 }. ts.isRec 0001ec10: 6f 67 6e 69 7a 65 64 54 72 69 70 6c 65 53 6c 61 ognizedTripleSla 0001ec20: 73 68 43 6f 6d 6d 65 6e 74 20 3d 20 69 73 52 65 shComment = isRe 0001ec30: 63 6f 67 6e 69 7a 65 64 54 72 69 70 6c 65 53 6c cognizedTripleSl 0001ec40: 61 73 68 43 6f 6d 6d 65 6e 74 3b 0a 20 20 20 20 ashComment;. 0001ec50: 66 75 6e 63 74 69 6f 6e 20 69 73 50 69 6e 6e 65 function isPinne 0001ec60: 64 43 6f 6d 6d 65 6e 74 28 74 65 78 74 2c 20 73 dComment(text, s 0001ec70: 74 61 72 74 29 20 7b 0a 20 20 20 20 20 20 20 20 tart) {. 0001ec80: 72 65 74 75 72 6e 20 74 65 78 74 2e 63 68 61 72 return text.char 0001ec90: 43 6f 64 65 41 74 28 73 74 61 72 74 20 2b 20 31 CodeAt(start + 1 0001eca0: 29 20 3d 3d 3d 20 34 32 20 2f 2a 20 43 68 61 72 ) === 42 /* Char 0001ecb0: 61 63 74 65 72 43 6f 64 65 73 2e 61 73 74 65 72 acterCodes.aster 0001ecc0: 69 73 6b 20 2a 2f 20 26 26 0a 20 20 20 20 20 20 isk */ &&. 0001ecd0: 20 20 20 20 20 20 74 65 78 74 2e 63 68 61 72 43 text.charC 0001ece0: 6f 64 65 41 74 28 73 74 61 72 74 20 2b 20 32 29 odeAt(start + 2) 0001ecf0: 20 3d 3d 3d 20 33 33 20 2f 2a 20 43 68 61 72 61 === 33 /* Chara 0001ed00: 63 74 65 72 43 6f 64 65 73 2e 65 78 63 6c 61 6d cterCodes.exclam 0001ed10: 61 74 69 6f 6e 20 2a 2f 3b 0a 20 20 20 20 7d 0a ation */;. }. 0001ed20: 20 20 20 20 74 73 2e 69 73 50 69 6e 6e 65 64 43 ts.isPinnedC 0001ed30: 6f 6d 6d 65 6e 74 20 3d 20 69 73 50 69 6e 6e 65 omment = isPinne 0001ed40: 64 43 6f 6d 6d 65 6e 74 3b 0a 20 20 20 20 66 75 dComment;. fu 0001ed50: 6e 63 74 69 6f 6e 20 63 72 65 61 74 65 43 6f 6d nction createCom 0001ed60: 6d 65 6e 74 44 69 72 65 63 74 69 76 65 73 4d 61 mentDirectivesMa 0001ed70: 70 28 73 6f 75 72 63 65 46 69 6c 65 2c 20 63 6f p(sourceFile, co 0001ed80: 6d 6d 65 6e 74 44 69 72 65 63 74 69 76 65 73 29 mmentDirectives) 0001ed90: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 64 {. var d 0001eda0: 69 72 65 63 74 69 76 65 73 42 79 4c 69 6e 65 20 irectivesByLine 0001edb0: 3d 20 6e 65 77 20 74 73 2e 4d 61 70 28 63 6f 6d = new ts.Map(com 0001edc0: 6d 65 6e 74 44 69 72 65 63 74 69 76 65 73 2e 6d mentDirectives.m 0001edd0: 61 70 28 66 75 6e 63 74 69 6f 6e 20 28 63 6f 6d ap(function (com 0001ede0: 6d 65 6e 74 44 69 72 65 63 74 69 76 65 29 20 7b mentDirective) { 0001edf0: 20 72 65 74 75 72 6e 20 28 5b 0a 20 20 20 20 20 return ([. 0001ee00: 20 20 20 20 20 20 20 22 22 2e 63 6f 6e 63 61 74 "".concat 0001ee10: 28 74 73 2e 67 65 74 4c 69 6e 65 41 6e 64 43 68 (ts.getLineAndCh 0001ee20: 61 72 61 63 74 65 72 4f 66 50 6f 73 69 74 69 6f aracterOfPositio 0001ee30: 6e 28 73 6f 75 72 63 65 46 69 6c 65 2c 20 63 6f n(sourceFile, co 0001ee40: 6d 6d 65 6e 74 44 69 72 65 63 74 69 76 65 2e 72 mmentDirective.r 0001ee50: 61 6e 67 65 2e 65 6e 64 29 2e 6c 69 6e 65 29 2c ange.end).line), 0001ee60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d . com 0001ee70: 6d 65 6e 74 44 69 72 65 63 74 69 76 65 2c 0a 20 mentDirective,. 0001ee80: 20 20 20 20 20 20 20 5d 29 3b 20 7d 29 29 3b 0a ]); }));. 0001ee90: 20 20 20 20 20 20 20 20 76 61 72 20 75 73 65 64 var used 0001eea0: 4c 69 6e 65 73 20 3d 20 6e 65 77 20 74 73 2e 4d Lines = new ts.M 0001eeb0: 61 70 28 29 3b 0a 20 20 20 20 20 20 20 20 72 65 ap();. re 0001eec0: 74 75 72 6e 20 7b 20 67 65 74 55 6e 75 73 65 64 turn { getUnused 0001eed0: 45 78 70 65 63 74 61 74 69 6f 6e 73 3a 20 67 65 Expectations: ge 0001eee0: 74 55 6e 75 73 65 64 45 78 70 65 63 74 61 74 69 tUnusedExpectati 0001eef0: 6f 6e 73 2c 20 6d 61 72 6b 55 73 65 64 3a 20 6d ons, markUsed: m 0001ef00: 61 72 6b 55 73 65 64 20 7d 3b 0a 20 20 20 20 20 arkUsed };. 0001ef10: 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 55 function getU 0001ef20: 6e 75 73 65 64 45 78 70 65 63 74 61 74 69 6f 6e nusedExpectation 0001ef30: 73 28 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 s() {. 0001ef40: 20 20 72 65 74 75 72 6e 20 74 73 2e 61 72 72 61 return ts.arra 0001ef50: 79 46 72 6f 6d 28 64 69 72 65 63 74 69 76 65 73 yFrom(directives 0001ef60: 42 79 4c 69 6e 65 2e 65 6e 74 72 69 65 73 28 29 ByLine.entries() 0001ef70: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ). 0001ef80: 20 20 2e 66 69 6c 74 65 72 28 66 75 6e 63 74 69 .filter(functi 0001ef90: 6f 6e 20 28 5f 61 29 20 7b 0a 20 20 20 20 20 20 on (_a) {. 0001efa0: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6c 69 var li 0001efb0: 6e 65 20 3d 20 5f 61 5b 30 5d 2c 20 64 69 72 65 ne = _a[0], dire 0001efc0: 63 74 69 76 65 20 3d 20 5f 61 5b 31 5d 3b 0a 20 ctive = _a[1];. 0001efd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 0001efe0: 65 74 75 72 6e 20 64 69 72 65 63 74 69 76 65 2e eturn directive. 0001eff0: 74 79 70 65 20 3d 3d 3d 20 30 20 2f 2a 20 43 6f type === 0 /* Co 0001f000: 6d 6d 65 6e 74 44 69 72 65 63 74 69 76 65 54 79 mmentDirectiveTy 0001f010: 70 65 2e 45 78 70 65 63 74 45 72 72 6f 72 20 2a pe.ExpectError * 0001f020: 2f 20 26 26 20 21 75 73 65 64 4c 69 6e 65 73 2e / && !usedLines. 0001f030: 67 65 74 28 6c 69 6e 65 29 3b 0a 20 20 20 20 20 get(line);. 0001f040: 20 20 20 20 20 20 20 7d 29 0a 20 20 20 20 20 20 }). 0001f050: 20 20 20 20 20 20 20 20 20 20 2e 6d 61 70 28 66 .map(f 0001f060: 75 6e 63 74 69 6f 6e 20 28 5f 61 29 20 7b 0a 20 unction (_a) {. 0001f070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 v 0001f080: 61 72 20 5f 20 3d 20 5f 61 5b 30 5d 2c 20 64 69 ar _ = _a[0], di 0001f090: 72 65 63 74 69 76 65 20 3d 20 5f 61 5b 31 5d 3b rective = _a[1]; 0001f0a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0001f0b0: 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 69 76 return directiv 0001f0c0: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d e;. } 0001f0d0: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 );. }. 0001f0e0: 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 6d 61 function ma 0001f0f0: 72 6b 55 73 65 64 28 6c 69 6e 65 29 20 7b 0a 20 rkUsed(line) {. 0001f100: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 if (! 0001f110: 64 69 72 65 63 74 69 76 65 73 42 79 4c 69 6e 65 directivesByLine 0001f120: 2e 68 61 73 28 22 22 2e 63 6f 6e 63 61 74 28 6c .has("".concat(l 0001f130: 69 6e 65 29 29 29 20 7b 0a 20 20 20 20 20 20 20 ine))) {. 0001f140: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 0001f150: 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20 false;. 0001f160: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 0001f170: 20 75 73 65 64 4c 69 6e 65 73 2e 73 65 74 28 22 usedLines.set(" 0001f180: 22 2e 63 6f 6e 63 61 74 28 6c 69 6e 65 29 2c 20 ".concat(line), 0001f190: 74 72 75 65 29 3b 0a 20 20 20 20 20 20 20 20 20 true);. 0001f1a0: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a return true;. 0001f1b0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a }. }. 0001f1c0: 20 20 20 20 74 73 2e 63 72 65 61 74 65 43 6f 6d ts.createCom 0001f1d0: 6d 65 6e 74 44 69 72 65 63 74 69 76 65 73 4d 61 mentDirectivesMa 0001f1e0: 70 20 3d 20 63 72 65 61 74 65 43 6f 6d 6d 65 6e p = createCommen 0001f1f0: 74 44 69 72 65 63 74 69 76 65 73 4d 61 70 3b 0a tDirectivesMap;. 0001f200: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 function get 0001f210: 54 6f 6b 65 6e 50 6f 73 4f 66 4e 6f 64 65 28 6e TokenPosOfNode(n 0001f220: 6f 64 65 2c 20 73 6f 75 72 63 65 46 69 6c 65 2c ode, sourceFile, 0001f230: 20 69 6e 63 6c 75 64 65 4a 73 44 6f 63 29 20 7b includeJsDoc) { 0001f240: 0a 20 20 20 20 20 20 20 20 2f 2f 20 57 69 74 68 . // With 0001f250: 20 6e 6f 64 65 73 20 74 68 61 74 20 68 61 76 65 nodes that have 0001f260: 20 6e 6f 20 77 69 64 74 68 20 28 69 2e 65 2e 20 no width (i.e. 0001f270: 27 4d 69 73 73 69 6e 67 27 20 6e 6f 64 65 73 29 'Missing' nodes) 0001f280: 2c 20 77 65 20 61 63 74 75 61 6c 6c 79 20 2a 64 , we actually *d 0001f290: 6f 6e 27 74 2a 0a 20 20 20 20 20 20 20 20 2f 2f on't*. // 0001f2a0: 20 77 61 6e 74 20 74 6f 20 73 6b 69 70 20 74 72 want to skip tr 0001f2b0: 69 76 69 61 20 62 65 63 61 75 73 65 20 74 68 69 ivia because thi 0001f2c0: 73 20 77 69 6c 6c 20 6c 61 75 6e 63 68 20 75 73 s will launch us 0001f2d0: 20 66 6f 72 77 61 72 64 20 74 6f 20 74 68 65 20 forward to the 0001f2e0: 6e 65 78 74 20 74 6f 6b 65 6e 2e 0a 20 20 20 20 next token.. 0001f2f0: 20 20 20 20 69 66 20 28 6e 6f 64 65 49 73 4d 69 if (nodeIsMi 0001f300: 73 73 69 6e 67 28 6e 6f 64 65 29 29 20 7b 0a 20 ssing(node)) {. 0001f310: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0001f320: 6e 20 6e 6f 64 65 2e 70 6f 73 3b 0a 20 20 20 20 n node.pos;. 0001f330: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 }. if 0001f340: 20 28 74 73 2e 69 73 4a 53 44 6f 63 4e 6f 64 65 (ts.isJSDocNode 0001f350: 28 6e 6f 64 65 29 20 7c 7c 20 6e 6f 64 65 2e 6b (node) || node.k 0001f360: 69 6e 64 20 3d 3d 3d 20 31 31 20 2f 2a 20 53 79 ind === 11 /* Sy 0001f370: 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 54 65 78 74 ntaxKind.JsxText 0001f380: 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 20 20 */) {. 0001f390: 20 20 20 2f 2f 20 4a 73 78 54 65 78 74 20 63 61 // JsxText ca 0001f3a0: 6e 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20 63 6f nnot actually co 0001f3b0: 6e 74 61 69 6e 20 63 6f 6d 6d 65 6e 74 73 2c 20 ntain comments, 0001f3c0: 65 76 65 6e 20 74 68 6f 75 67 68 20 74 68 65 20 even though the 0001f3d0: 73 63 61 6e 6e 65 72 20 77 69 6c 6c 20 74 68 69 scanner will thi 0001f3e0: 6e 6b 20 69 74 20 73 65 65 73 20 63 6f 6d 6d 65 nk it sees comme 0001f3f0: 6e 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 nts. 0001f400: 72 65 74 75 72 6e 20 74 73 2e 73 6b 69 70 54 72 return ts.skipTr 0001f410: 69 76 69 61 28 28 73 6f 75 72 63 65 46 69 6c 65 ivia((sourceFile 0001f420: 20 7c 7c 20 67 65 74 53 6f 75 72 63 65 46 69 6c || getSourceFil 0001f430: 65 4f 66 4e 6f 64 65 28 6e 6f 64 65 29 29 2e 74 eOfNode(node)).t 0001f440: 65 78 74 2c 20 6e 6f 64 65 2e 70 6f 73 2c 20 2f ext, node.pos, / 0001f450: 2a 73 74 6f 70 41 66 74 65 72 4c 69 6e 65 42 72 *stopAfterLineBr 0001f460: 65 61 6b 2a 2f 20 66 61 6c 73 65 2c 20 2f 2a 73 eak*/ false, /*s 0001f470: 74 6f 70 41 74 43 6f 6d 6d 65 6e 74 73 2a 2f 20 topAtComments*/ 0001f480: 74 72 75 65 29 3b 0a 20 20 20 20 20 20 20 20 7d true);. } 0001f490: 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 63 . if (inc 0001f4a0: 6c 75 64 65 4a 73 44 6f 63 20 26 26 20 74 73 2e ludeJsDoc && ts. 0001f4b0: 68 61 73 4a 53 44 6f 63 4e 6f 64 65 73 28 6e 6f hasJSDocNodes(no 0001f4c0: 64 65 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 de)) {. 0001f4d0: 20 20 20 72 65 74 75 72 6e 20 67 65 74 54 6f 6b return getTok 0001f4e0: 65 6e 50 6f 73 4f 66 4e 6f 64 65 28 6e 6f 64 65 enPosOfNode(node 0001f4f0: 2e 6a 73 44 6f 63 5b 30 5d 2c 20 73 6f 75 72 63 .jsDoc[0], sourc 0001f500: 65 46 69 6c 65 29 3b 0a 20 20 20 20 20 20 20 20 eFile);. 0001f510: 7d 0a 20 20 20 20 20 20 20 20 2f 2f 20 46 6f 72 }. // For 0001f520: 20 61 20 73 79 6e 74 61 78 20 6c 69 73 74 2c 20 a syntax list, 0001f530: 69 74 20 69 73 20 70 6f 73 73 69 62 6c 65 20 74 it is possible t 0001f540: 68 61 74 20 6f 6e 65 20 6f 66 20 69 74 73 20 63 hat one of its c 0001f550: 68 69 6c 64 72 65 6e 20 68 61 73 20 4a 53 44 6f hildren has JSDo 0001f560: 63 43 6f 6d 6d 65 6e 74 20 6e 6f 64 65 73 2c 20 cComment nodes, 0001f570: 77 68 69 6c 65 0a 20 20 20 20 20 20 20 20 2f 2f while. // 0001f580: 20 74 68 65 20 73 79 6e 74 61 78 20 6c 69 73 74 the syntax list 0001f590: 20 69 74 73 65 6c 66 20 63 6f 6e 73 69 64 65 72 itself consider 0001f5a0: 73 20 74 68 65 6d 20 61 73 20 6e 6f 72 6d 61 6c s them as normal 0001f5b0: 20 74 72 69 76 69 61 2e 20 54 68 65 72 65 66 6f trivia. Therefo 0001f5c0: 72 65 20 69 66 20 77 65 20 73 69 6d 70 6c 79 20 re if we simply 0001f5d0: 73 6b 69 70 0a 20 20 20 20 20 20 20 20 2f 2f 20 skip. // 0001f5e0: 74 72 69 76 69 61 20 66 6f 72 20 74 68 65 20 6c trivia for the l 0001f5f0: 69 73 74 2c 20 77 65 20 6d 61 79 20 68 61 76 65 ist, we may have 0001f600: 20 73 6b 69 70 70 65 64 20 74 68 65 20 4a 53 44 skipped the JSD 0001f610: 6f 63 43 6f 6d 6d 65 6e 74 20 61 73 20 77 65 6c ocComment as wel 0001f620: 6c 2e 20 53 6f 20 77 65 20 73 68 6f 75 6c 64 20 l. So we should 0001f630: 70 72 6f 63 65 73 73 20 69 74 73 0a 20 20 20 20 process its. 0001f640: 20 20 20 20 2f 2f 20 66 69 72 73 74 20 63 68 69 // first chi 0001f650: 6c 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 ld to determine 0001f660: 74 68 65 20 61 63 74 75 61 6c 20 70 6f 73 69 74 the actual posit 0001f670: 69 6f 6e 20 6f 66 20 69 74 73 20 66 69 72 73 74 ion of its first 0001f680: 20 74 6f 6b 65 6e 2e 0a 20 20 20 20 20 20 20 20 token.. 0001f690: 69 66 20 28 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d if (node.kind == 0001f6a0: 3d 20 33 34 38 20 2f 2a 20 53 79 6e 74 61 78 4b = 348 /* SyntaxK 0001f6b0: 69 6e 64 2e 53 79 6e 74 61 78 4c 69 73 74 20 2a ind.SyntaxList * 0001f6c0: 2f 20 26 26 20 6e 6f 64 65 2e 5f 63 68 69 6c 64 / && node._child 0001f6d0: 72 65 6e 2e 6c 65 6e 67 74 68 20 3e 20 30 29 20 ren.length > 0) 0001f6e0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 {. re 0001f6f0: 74 75 72 6e 20 67 65 74 54 6f 6b 65 6e 50 6f 73 turn getTokenPos 0001f700: 4f 66 4e 6f 64 65 28 6e 6f 64 65 2e 5f 63 68 69 OfNode(node._chi 0001f710: 6c 64 72 65 6e 5b 30 5d 2c 20 73 6f 75 72 63 65 ldren[0], source 0001f720: 46 69 6c 65 2c 20 69 6e 63 6c 75 64 65 4a 73 44 File, includeJsD 0001f730: 6f 63 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 oc);. }. 0001f740: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 return ts 0001f750: 2e 73 6b 69 70 54 72 69 76 69 61 28 28 73 6f 75 .skipTrivia((sou 0001f760: 72 63 65 46 69 6c 65 20 7c 7c 20 67 65 74 53 6f rceFile || getSo 0001f770: 75 72 63 65 46 69 6c 65 4f 66 4e 6f 64 65 28 6e urceFileOfNode(n 0001f780: 6f 64 65 29 29 2e 74 65 78 74 2c 20 6e 6f 64 65 ode)).text, node 0001f790: 2e 70 6f 73 2c 20 0a 20 20 20 20 20 20 20 20 2f .pos, . / 0001f7a0: 2a 73 74 6f 70 41 66 74 65 72 4c 69 6e 65 42 72 *stopAfterLineBr 0001f7b0: 65 61 6b 2a 2f 20 66 61 6c 73 65 2c 20 0a 20 20 eak*/ false, . 0001f7c0: 20 20 20 20 20 20 2f 2a 73 74 6f 70 41 74 43 6f /*stopAtCo 0001f7d0: 6d 6d 65 6e 74 73 2a 2f 20 66 61 6c 73 65 2c 20 mments*/ false, 0001f7e0: 69 73 49 6e 4a 53 44 6f 63 28 6e 6f 64 65 29 29 isInJSDoc(node)) 0001f7f0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 ;. }. ts.g 0001f800: 65 74 54 6f 6b 65 6e 50 6f 73 4f 66 4e 6f 64 65 etTokenPosOfNode 0001f810: 20 3d 20 67 65 74 54 6f 6b 65 6e 50 6f 73 4f 66 = getTokenPosOf 0001f820: 4e 6f 64 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 Node;. functi 0001f830: 6f 6e 20 67 65 74 4e 6f 6e 44 65 63 6f 72 61 74 on getNonDecorat 0001f840: 6f 72 54 6f 6b 65 6e 50 6f 73 4f 66 4e 6f 64 65 orTokenPosOfNode 0001f850: 28 6e 6f 64 65 2c 20 73 6f 75 72 63 65 46 69 6c (node, sourceFil 0001f860: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 e) {. var 0001f870: 20 6c 61 73 74 44 65 63 6f 72 61 74 6f 72 20 3d lastDecorator = 0001f880: 20 21 6e 6f 64 65 49 73 4d 69 73 73 69 6e 67 28 !nodeIsMissing( 0001f890: 6e 6f 64 65 29 20 26 26 20 74 73 2e 63 61 6e 48 node) && ts.canH 0001f8a0: 61 76 65 4d 6f 64 69 66 69 65 72 73 28 6e 6f 64 aveModifiers(nod 0001f8b0: 65 29 20 3f 20 74 73 2e 66 69 6e 64 4c 61 73 74 e) ? ts.findLast 0001f8c0: 28 6e 6f 64 65 2e 6d 6f 64 69 66 69 65 72 73 2c (node.modifiers, 0001f8d0: 20 74 73 2e 69 73 44 65 63 6f 72 61 74 6f 72 29 ts.isDecorator) 0001f8e0: 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 : undefined;. 0001f8f0: 20 20 20 20 20 20 69 66 20 28 21 6c 61 73 74 44 if (!lastD 0001f900: 65 63 6f 72 61 74 6f 72 29 20 7b 0a 20 20 20 20 ecorator) {. 0001f910: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 return g 0001f920: 65 74 54 6f 6b 65 6e 50 6f 73 4f 66 4e 6f 64 65 etTokenPosOfNode 0001f930: 28 6e 6f 64 65 2c 20 73 6f 75 72 63 65 46 69 6c (node, sourceFil 0001f940: 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 e);. }. 0001f950: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 0001f960: 73 6b 69 70 54 72 69 76 69 61 28 28 73 6f 75 72 skipTrivia((sour 0001f970: 63 65 46 69 6c 65 20 7c 7c 20 67 65 74 53 6f 75 ceFile || getSou 0001f980: 72 63 65 46 69 6c 65 4f 66 4e 6f 64 65 28 6e 6f rceFileOfNode(no 0001f990: 64 65 29 29 2e 74 65 78 74 2c 20 6c 61 73 74 44 de)).text, lastD 0001f9a0: 65 63 6f 72 61 74 6f 72 2e 65 6e 64 29 3b 0a 20 ecorator.end);. 0001f9b0: 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4e }. ts.getN 0001f9c0: 6f 6e 44 65 63 6f 72 61 74 6f 72 54 6f 6b 65 6e onDecoratorToken 0001f9d0: 50 6f 73 4f 66 4e 6f 64 65 20 3d 20 67 65 74 4e PosOfNode = getN 0001f9e0: 6f 6e 44 65 63 6f 72 61 74 6f 72 54 6f 6b 65 6e onDecoratorToken 0001f9f0: 50 6f 73 4f 66 4e 6f 64 65 3b 0a 20 20 20 20 66 PosOfNode;. f 0001fa00: 75 6e 63 74 69 6f 6e 20 67 65 74 53 6f 75 72 63 unction getSourc 0001fa10: 65 54 65 78 74 4f 66 4e 6f 64 65 46 72 6f 6d 53 eTextOfNodeFromS 0001fa20: 6f 75 72 63 65 46 69 6c 65 28 73 6f 75 72 63 65 ourceFile(source 0001fa30: 46 69 6c 65 2c 20 6e 6f 64 65 2c 20 69 6e 63 6c File, node, incl 0001fa40: 75 64 65 54 72 69 76 69 61 29 20 7b 0a 20 20 20 udeTrivia) {. 0001fa50: 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65 if (include 0001fa60: 54 72 69 76 69 61 20 3d 3d 3d 20 76 6f 69 64 20 Trivia === void 0001fa70: 30 29 20 7b 20 69 6e 63 6c 75 64 65 54 72 69 76 0) { includeTriv 0001fa80: 69 61 20 3d 20 66 61 6c 73 65 3b 20 7d 0a 20 20 ia = false; }. 0001fa90: 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 return get 0001faa0: 54 65 78 74 4f 66 4e 6f 64 65 46 72 6f 6d 53 6f TextOfNodeFromSo 0001fab0: 75 72 63 65 54 65 78 74 28 73 6f 75 72 63 65 46 urceText(sourceF 0001fac0: 69 6c 65 2e 74 65 78 74 2c 20 6e 6f 64 65 2c 20 ile.text, node, 0001fad0: 69 6e 63 6c 75 64 65 54 72 69 76 69 61 29 3b 0a includeTrivia);. 0001fae0: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 }. ts.get 0001faf0: 53 6f 75 72 63 65 54 65 78 74 4f 66 4e 6f 64 65 SourceTextOfNode 0001fb00: 46 72 6f 6d 53 6f 75 72 63 65 46 69 6c 65 20 3d FromSourceFile = 0001fb10: 20 67 65 74 53 6f 75 72 63 65 54 65 78 74 4f 66 getSourceTextOf 0001fb20: 4e 6f 64 65 46 72 6f 6d 53 6f 75 72 63 65 46 69 NodeFromSourceFi 0001fb30: 6c 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e le;. function 0001fb40: 20 69 73 4a 53 44 6f 63 54 79 70 65 45 78 70 72 isJSDocTypeExpr 0001fb50: 65 73 73 69 6f 6e 4f 72 43 68 69 6c 64 28 6e 6f essionOrChild(no 0001fb60: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 de) {. re 0001fb70: 74 75 72 6e 20 21 21 74 73 2e 66 69 6e 64 41 6e turn !!ts.findAn 0001fb80: 63 65 73 74 6f 72 28 6e 6f 64 65 2c 20 74 73 2e cestor(node, ts. 0001fb90: 69 73 4a 53 44 6f 63 54 79 70 65 45 78 70 72 65 isJSDocTypeExpre 0001fba0: 73 73 69 6f 6e 29 3b 0a 20 20 20 20 7d 0a 20 20 ssion);. }. 0001fbb0: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 45 78 70 function isExp 0001fbc0: 6f 72 74 4e 61 6d 65 73 70 61 63 65 41 73 44 65 ortNamespaceAsDe 0001fbd0: 66 61 75 6c 74 44 65 63 6c 61 72 61 74 69 6f 6e faultDeclaration 0001fbe0: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 0001fbf0: 20 72 65 74 75 72 6e 20 21 21 28 74 73 2e 69 73 return !!(ts.is 0001fc00: 45 78 70 6f 72 74 44 65 63 6c 61 72 61 74 69 6f ExportDeclaratio 0001fc10: 6e 28 6e 6f 64 65 29 20 26 26 20 6e 6f 64 65 2e n(node) && node. 0001fc20: 65 78 70 6f 72 74 43 6c 61 75 73 65 20 26 26 20 exportClause && 0001fc30: 74 73 2e 69 73 4e 61 6d 65 73 70 61 63 65 45 78 ts.isNamespaceEx 0001fc40: 70 6f 72 74 28 6e 6f 64 65 2e 65 78 70 6f 72 74 port(node.export 0001fc50: 43 6c 61 75 73 65 29 20 26 26 20 6e 6f 64 65 2e Clause) && node. 0001fc60: 65 78 70 6f 72 74 43 6c 61 75 73 65 2e 6e 61 6d exportClause.nam 0001fc70: 65 2e 65 73 63 61 70 65 64 54 65 78 74 20 3d 3d e.escapedText == 0001fc80: 3d 20 22 64 65 66 61 75 6c 74 22 29 3b 0a 20 20 = "default");. 0001fc90: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 45 78 70 }. ts.isExp 0001fca0: 6f 72 74 4e 61 6d 65 73 70 61 63 65 41 73 44 65 ortNamespaceAsDe 0001fcb0: 66 61 75 6c 74 44 65 63 6c 61 72 61 74 69 6f 6e faultDeclaration 0001fcc0: 20 3d 20 69 73 45 78 70 6f 72 74 4e 61 6d 65 73 = isExportNames 0001fcd0: 70 61 63 65 41 73 44 65 66 61 75 6c 74 44 65 63 paceAsDefaultDec 0001fce0: 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 20 66 75 laration;. fu 0001fcf0: 6e 63 74 69 6f 6e 20 67 65 74 54 65 78 74 4f 66 nction getTextOf 0001fd00: 4e 6f 64 65 46 72 6f 6d 53 6f 75 72 63 65 54 65 NodeFromSourceTe 0001fd10: 78 74 28 73 6f 75 72 63 65 54 65 78 74 2c 20 6e xt(sourceText, n 0001fd20: 6f 64 65 2c 20 69 6e 63 6c 75 64 65 54 72 69 76 ode, includeTriv 0001fd30: 69 61 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 ia) {. if 0001fd40: 20 28 69 6e 63 6c 75 64 65 54 72 69 76 69 61 20 (includeTrivia 0001fd50: 3d 3d 3d 20 76 6f 69 64 20 30 29 20 7b 20 69 6e === void 0) { in 0001fd60: 63 6c 75 64 65 54 72 69 76 69 61 20 3d 20 66 61 cludeTrivia = fa 0001fd70: 6c 73 65 3b 20 7d 0a 20 20 20 20 20 20 20 20 69 lse; }. i 0001fd80: 66 20 28 6e 6f 64 65 49 73 4d 69 73 73 69 6e 67 f (nodeIsMissing 0001fd90: 28 6e 6f 64 65 29 29 20 7b 0a 20 20 20 20 20 20 (node)) {. 0001fda0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 22 3b return ""; 0001fdb0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }. 0001fdc0: 20 20 20 76 61 72 20 74 65 78 74 20 3d 20 73 6f var text = so 0001fdd0: 75 72 63 65 54 65 78 74 2e 73 75 62 73 74 72 69 urceText.substri 0001fde0: 6e 67 28 69 6e 63 6c 75 64 65 54 72 69 76 69 61 ng(includeTrivia 0001fdf0: 20 3f 20 6e 6f 64 65 2e 70 6f 73 20 3a 20 74 73 ? node.pos : ts 0001fe00: 2e 73 6b 69 70 54 72 69 76 69 61 28 73 6f 75 72 .skipTrivia(sour 0001fe10: 63 65 54 65 78 74 2c 20 6e 6f 64 65 2e 70 6f 73 ceText, node.pos 0001fe20: 29 2c 20 6e 6f 64 65 2e 65 6e 64 29 3b 0a 20 20 ), node.end);. 0001fe30: 20 20 20 20 20 20 69 66 20 28 69 73 4a 53 44 6f if (isJSDo 0001fe40: 63 54 79 70 65 45 78 70 72 65 73 73 69 6f 6e 4f cTypeExpressionO 0001fe50: 72 43 68 69 6c 64 28 6e 6f 64 65 29 29 20 7b 0a rChild(node)) {. 0001fe60: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 73 // s 0001fe70: 74 72 69 70 20 73 70 61 63 65 20 2b 20 61 73 74 trip space + ast 0001fe80: 65 72 69 73 6b 20 61 74 20 6c 69 6e 65 20 73 74 erisk at line st 0001fe90: 61 72 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 art. 0001fea0: 74 65 78 74 20 3d 20 74 65 78 74 2e 73 70 6c 69 text = text.spli 0001feb0: 74 28 2f 5c 72 5c 6e 7c 5c 6e 7c 5c 72 2f 29 2e t(/\r\n|\n|\r/). 0001fec0: 6d 61 70 28 66 75 6e 63 74 69 6f 6e 20 28 6c 69 map(function (li 0001fed0: 6e 65 29 20 7b 20 72 65 74 75 72 6e 20 74 73 2e ne) { return ts. 0001fee0: 74 72 69 6d 53 74 72 69 6e 67 53 74 61 72 74 28 trimStringStart( 0001fef0: 6c 69 6e 65 2e 72 65 70 6c 61 63 65 28 2f 5e 5c line.replace(/^\ 0001ff00: 73 2a 5c 2a 2f 2c 20 22 22 29 29 3b 20 7d 29 2e s*\*/, "")); }). 0001ff10: 6a 6f 69 6e 28 22 5c 6e 22 29 3b 0a 20 20 20 20 join("\n");. 0001ff20: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 }. re 0001ff30: 74 75 72 6e 20 74 65 78 74 3b 0a 20 20 20 20 7d turn text;. } 0001ff40: 0a 20 20 20 20 74 73 2e 67 65 74 54 65 78 74 4f . ts.getTextO 0001ff50: 66 4e 6f 64 65 46 72 6f 6d 53 6f 75 72 63 65 54 fNodeFromSourceT 0001ff60: 65 78 74 20 3d 20 67 65 74 54 65 78 74 4f 66 4e ext = getTextOfN 0001ff70: 6f 64 65 46 72 6f 6d 53 6f 75 72 63 65 54 65 78 odeFromSourceTex 0001ff80: 74 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 t;. function 0001ff90: 67 65 74 54 65 78 74 4f 66 4e 6f 64 65 28 6e 6f getTextOfNode(no 0001ffa0: 64 65 2c 20 69 6e 63 6c 75 64 65 54 72 69 76 69 de, includeTrivi 0001ffb0: 61 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 a) {. if 0001ffc0: 28 69 6e 63 6c 75 64 65 54 72 69 76 69 61 20 3d (includeTrivia = 0001ffd0: 3d 3d 20 76 6f 69 64 20 30 29 20 7b 20 69 6e 63 == void 0) { inc 0001ffe0: 6c 75 64 65 54 72 69 76 69 61 20 3d 20 66 61 6c ludeTrivia = fal 0001fff0: 73 65 3b 20 7d 0a 20 20 20 20 20 20 20 20 72 65 se; }. re 00020000: 74 75 72 6e 20 67 65 74 53 6f 75 72 63 65 54 65 turn getSourceTe 00020010: 78 74 4f 66 4e 6f 64 65 46 72 6f 6d 53 6f 75 72 xtOfNodeFromSour 00020020: 63 65 46 69 6c 65 28 67 65 74 53 6f 75 72 63 65 ceFile(getSource 00020030: 46 69 6c 65 4f 66 4e 6f 64 65 28 6e 6f 64 65 29 FileOfNode(node) 00020040: 2c 20 6e 6f 64 65 2c 20 69 6e 63 6c 75 64 65 54 , node, includeT 00020050: 72 69 76 69 61 29 3b 0a 20 20 20 20 7d 0a 20 20 rivia);. }. 00020060: 20 20 74 73 2e 67 65 74 54 65 78 74 4f 66 4e 6f ts.getTextOfNo 00020070: 64 65 20 3d 20 67 65 74 54 65 78 74 4f 66 4e 6f de = getTextOfNo 00020080: 64 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e de;. function 00020090: 20 67 65 74 50 6f 73 28 72 61 6e 67 65 29 20 7b getPos(range) { 000200a0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 000200b0: 72 61 6e 67 65 2e 70 6f 73 3b 0a 20 20 20 20 7d range.pos;. } 000200c0: 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 . /**. * 000200d0: 4e 6f 74 65 3a 20 69 74 20 69 73 20 65 78 70 65 Note: it is expe 000200e0: 63 74 65 64 20 74 68 61 74 20 74 68 65 20 60 6e cted that the `n 000200f0: 6f 64 65 41 72 72 61 79 60 20 61 6e 64 20 74 68 odeArray` and th 00020100: 65 20 60 6e 6f 64 65 60 20 61 72 65 20 77 69 74 e `node` are wit 00020110: 68 69 6e 20 74 68 65 20 73 61 6d 65 20 66 69 6c hin the same fil 00020120: 65 2e 0a 20 20 20 20 20 2a 20 46 6f 72 20 65 78 e.. * For ex 00020130: 61 6d 70 6c 65 2c 20 73 65 61 72 63 68 69 6e 67 ample, searching 00020140: 20 66 6f 72 20 61 20 60 53 6f 75 72 63 65 46 69 for a `SourceFi 00020150: 6c 65 60 20 69 6e 20 61 20 60 53 6f 75 72 63 65 le` in a `Source 00020160: 46 69 6c 65 5b 5d 60 20 77 6f 75 6c 64 6e 27 74 File[]` wouldn't 00020170: 20 77 6f 72 6b 2e 0a 20 20 20 20 20 2a 2f 0a 20 work.. */. 00020180: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 6e 64 65 function inde 00020190: 78 4f 66 4e 6f 64 65 28 6e 6f 64 65 41 72 72 61 xOfNode(nodeArra 000201a0: 79 2c 20 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 y, node) {. 000201b0: 20 20 20 72 65 74 75 72 6e 20 74 73 2e 62 69 6e return ts.bin 000201c0: 61 72 79 53 65 61 72 63 68 28 6e 6f 64 65 41 72 arySearch(nodeAr 000201d0: 72 61 79 2c 20 6e 6f 64 65 2c 20 67 65 74 50 6f ray, node, getPo 000201e0: 73 2c 20 74 73 2e 63 6f 6d 70 61 72 65 56 61 6c s, ts.compareVal 000201f0: 75 65 73 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 ues);. }. 00020200: 74 73 2e 69 6e 64 65 78 4f 66 4e 6f 64 65 20 3d ts.indexOfNode = 00020210: 20 69 6e 64 65 78 4f 66 4e 6f 64 65 3b 0a 20 20 indexOfNode;. 00020220: 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 47 65 74 /**. * Get 00020230: 73 20 66 6c 61 67 73 20 74 68 61 74 20 63 6f 6e s flags that con 00020240: 74 72 6f 6c 20 65 6d 69 74 20 62 65 68 61 76 69 trol emit behavi 00020250: 6f 72 20 6f 66 20 61 20 6e 6f 64 65 2e 0a 20 20 or of a node.. 00020260: 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 */. functi 00020270: 6f 6e 20 67 65 74 45 6d 69 74 46 6c 61 67 73 28 on getEmitFlags( 00020280: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 00020290: 76 61 72 20 65 6d 69 74 4e 6f 64 65 20 3d 20 6e var emitNode = n 000202a0: 6f 64 65 2e 65 6d 69 74 4e 6f 64 65 3b 0a 20 20 ode.emitNode;. 000202b0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 6d 69 return emi 000202c0: 74 4e 6f 64 65 20 26 26 20 65 6d 69 74 4e 6f 64 tNode && emitNod 000202d0: 65 2e 66 6c 61 67 73 20 7c 7c 20 30 3b 0a 20 20 e.flags || 0;. 000202e0: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 45 6d }. ts.getEm 000202f0: 69 74 46 6c 61 67 73 20 3d 20 67 65 74 45 6d 69 itFlags = getEmi 00020300: 74 46 6c 61 67 73 3b 0a 20 20 20 20 3b 0a 20 20 tFlags;. ;. 00020310: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 53 63 function getSc 00020320: 72 69 70 74 54 61 72 67 65 74 46 65 61 74 75 72 riptTargetFeatur 00020330: 65 73 28 29 20 7b 0a 20 20 20 20 20 20 20 20 72 es() {. r 00020340: 65 74 75 72 6e 20 7b 0a 20 20 20 20 20 20 20 20 eturn {. 00020350: 20 20 20 20 65 73 32 30 31 35 3a 20 7b 0a 20 20 es2015: {. 00020360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 72 Ar 00020370: 72 61 79 3a 20 5b 22 66 69 6e 64 22 2c 20 22 66 ray: ["find", "f 00020380: 69 6e 64 49 6e 64 65 78 22 2c 20 22 66 69 6c 6c indIndex", "fill 00020390: 22 2c 20 22 63 6f 70 79 57 69 74 68 69 6e 22 2c ", "copyWithin", 000203a0: 20 22 65 6e 74 72 69 65 73 22 2c 20 22 6b 65 79 "entries", "key 000203b0: 73 22 2c 20 22 76 61 6c 75 65 73 22 5d 2c 0a 20 s", "values"],. 000203c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 R 000203d0: 65 67 45 78 70 3a 20 5b 22 66 6c 61 67 73 22 2c egExp: ["flags", 000203e0: 20 22 73 74 69 63 6b 79 22 2c 20 22 75 6e 69 63 "sticky", "unic 000203f0: 6f 64 65 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 ode"],. 00020400: 20 20 20 20 20 20 20 52 65 66 6c 65 63 74 3a 20 Reflect: 00020410: 5b 22 61 70 70 6c 79 22 2c 20 22 63 6f 6e 73 74 ["apply", "const 00020420: 72 75 63 74 22 2c 20 22 64 65 66 69 6e 65 50 72 ruct", "definePr 00020430: 6f 70 65 72 74 79 22 2c 20 22 64 65 6c 65 74 65 operty", "delete 00020440: 50 72 6f 70 65 72 74 79 22 2c 20 22 67 65 74 22 Property", "get" 00020450: 2c 20 22 20 67 65 74 4f 77 6e 50 72 6f 70 65 72 , " getOwnProper 00020460: 74 79 44 65 73 63 72 69 70 74 6f 72 22 2c 20 22 tyDescriptor", " 00020470: 67 65 74 50 72 6f 74 6f 74 79 70 65 4f 66 22 2c getPrototypeOf", 00020480: 20 22 68 61 73 22 2c 20 22 69 73 45 78 74 65 6e "has", "isExten 00020490: 73 69 62 6c 65 22 2c 20 22 6f 77 6e 4b 65 79 73 sible", "ownKeys 000204a0: 22 2c 20 22 70 72 65 76 65 6e 74 45 78 74 65 6e ", "preventExten 000204b0: 73 69 6f 6e 73 22 2c 20 22 73 65 74 22 2c 20 22 sions", "set", " 000204c0: 73 65 74 50 72 6f 74 6f 74 79 70 65 4f 66 22 5d setPrototypeOf"] 000204d0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,. 000204e0: 20 20 41 72 72 61 79 43 6f 6e 73 74 72 75 63 74 ArrayConstruct 000204f0: 6f 72 3a 20 5b 22 66 72 6f 6d 22 2c 20 22 6f 66 or: ["from", "of 00020500: 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 "],. 00020510: 20 20 20 20 4f 62 6a 65 63 74 43 6f 6e 73 74 72 ObjectConstr 00020520: 75 63 74 6f 72 3a 20 5b 22 61 73 73 69 67 6e 22 uctor: ["assign" 00020530: 2c 20 22 67 65 74 4f 77 6e 50 72 6f 70 65 72 74 , "getOwnPropert 00020540: 79 53 79 6d 62 6f 6c 73 22 2c 20 22 6b 65 79 73 ySymbols", "keys 00020550: 22 2c 20 22 69 73 22 2c 20 22 73 65 74 50 72 6f ", "is", "setPro 00020560: 74 6f 74 79 70 65 4f 66 22 5d 2c 0a 20 20 20 20 totypeOf"],. 00020570: 20 20 20 20 20 20 20 20 20 20 20 20 4e 75 6d 62 Numb 00020580: 65 72 43 6f 6e 73 74 72 75 63 74 6f 72 3a 20 5b erConstructor: [ 00020590: 22 69 73 46 69 6e 69 74 65 22 2c 20 22 69 73 49 "isFinite", "isI 000205a0: 6e 74 65 67 65 72 22 2c 20 22 69 73 4e 61 4e 22 nteger", "isNaN" 000205b0: 2c 20 22 69 73 53 61 66 65 49 6e 74 65 67 65 72 , "isSafeInteger 000205c0: 22 2c 20 22 70 61 72 73 65 46 6c 6f 61 74 22 2c ", "parseFloat", 000205d0: 20 22 70 61 72 73 65 49 6e 74 22 5d 2c 0a 20 20 "parseInt"],. 000205e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 Ma 000205f0: 74 68 3a 20 5b 22 63 6c 7a 33 32 22 2c 20 22 69 th: ["clz32", "i 00020600: 6d 75 6c 22 2c 20 22 73 69 67 6e 22 2c 20 22 6c mul", "sign", "l 00020610: 6f 67 31 30 22 2c 20 22 6c 6f 67 32 22 2c 20 22 og10", "log2", " 00020620: 6c 6f 67 31 70 22 2c 20 22 65 78 70 6d 31 22 2c log1p", "expm1", 00020630: 20 22 63 6f 73 68 22 2c 20 22 73 69 6e 68 22 2c "cosh", "sinh", 00020640: 20 22 74 61 6e 68 22 2c 20 22 61 63 6f 73 68 22 "tanh", "acosh" 00020650: 2c 20 22 61 73 69 6e 68 22 2c 20 22 61 74 61 6e , "asinh", "atan 00020660: 68 22 2c 20 22 68 79 70 6f 74 22 2c 20 22 74 72 h", "hypot", "tr 00020670: 75 6e 63 22 2c 20 22 66 72 6f 75 6e 64 22 2c 20 unc", "fround", 00020680: 22 63 62 72 74 22 5d 2c 0a 20 20 20 20 20 20 20 "cbrt"],. 00020690: 20 20 20 20 20 20 20 20 20 4d 61 70 3a 20 5b 22 Map: [" 000206a0: 65 6e 74 72 69 65 73 22 2c 20 22 6b 65 79 73 22 entries", "keys" 000206b0: 2c 20 22 76 61 6c 75 65 73 22 5d 2c 0a 20 20 20 , "values"],. 000206c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 Set 000206d0: 3a 20 5b 22 65 6e 74 72 69 65 73 22 2c 20 22 6b : ["entries", "k 000206e0: 65 79 73 22 2c 20 22 76 61 6c 75 65 73 22 5d 2c eys", "values"], 000206f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00020700: 20 50 72 6f 6d 69 73 65 3a 20 74 73 2e 65 6d 70 Promise: ts.emp 00020710: 74 79 41 72 72 61 79 2c 0a 20 20 20 20 20 20 20 tyArray,. 00020720: 20 20 20 20 20 20 20 20 20 50 72 6f 6d 69 73 65 Promise 00020730: 43 6f 6e 73 74 72 75 63 74 6f 72 3a 20 5b 22 61 Constructor: ["a 00020740: 6c 6c 22 2c 20 22 72 61 63 65 22 2c 20 22 72 65 ll", "race", "re 00020750: 6a 65 63 74 22 2c 20 22 72 65 73 6f 6c 76 65 22 ject", "resolve" 00020760: 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ],. 00020770: 20 20 20 53 79 6d 62 6f 6c 3a 20 5b 22 66 6f 72 Symbol: ["for 00020780: 22 2c 20 22 6b 65 79 46 6f 72 22 5d 2c 0a 20 20 ", "keyFor"],. 00020790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57 65 We 000207a0: 61 6b 4d 61 70 3a 20 5b 22 65 6e 74 72 69 65 73 akMap: ["entries 000207b0: 22 2c 20 22 6b 65 79 73 22 2c 20 22 76 61 6c 75 ", "keys", "valu 000207c0: 65 73 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 es"],. 000207d0: 20 20 20 20 20 20 57 65 61 6b 53 65 74 3a 20 5b WeakSet: [ 000207e0: 22 65 6e 74 72 69 65 73 22 2c 20 22 6b 65 79 73 "entries", "keys 000207f0: 22 2c 20 22 76 61 6c 75 65 73 22 5d 2c 0a 20 20 ", "values"],. 00020800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 74 It 00020810: 65 72 61 74 6f 72 3a 20 74 73 2e 65 6d 70 74 79 erator: ts.empty 00020820: 41 72 72 61 79 2c 0a 20 20 20 20 20 20 20 20 20 Array,. 00020830: 20 20 20 20 20 20 20 41 73 79 6e 63 49 74 65 72 AsyncIter 00020840: 61 74 6f 72 3a 20 74 73 2e 65 6d 70 74 79 41 72 ator: ts.emptyAr 00020850: 72 61 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 ray,. 00020860: 20 20 20 20 20 53 74 72 69 6e 67 3a 20 5b 22 63 String: ["c 00020870: 6f 64 65 50 6f 69 6e 74 41 74 22 2c 20 22 69 6e odePointAt", "in 00020880: 63 6c 75 64 65 73 22 2c 20 22 65 6e 64 73 57 69 cludes", "endsWi 00020890: 74 68 22 2c 20 22 6e 6f 72 6d 61 6c 69 7a 65 22 th", "normalize" 000208a0: 2c 20 22 72 65 70 65 61 74 22 2c 20 22 73 74 61 , "repeat", "sta 000208b0: 72 74 73 57 69 74 68 22 2c 20 22 61 6e 63 68 6f rtsWith", "ancho 000208c0: 72 22 2c 20 22 62 69 67 22 2c 20 22 62 6c 69 6e r", "big", "blin 000208d0: 6b 22 2c 20 22 62 6f 6c 64 22 2c 20 22 66 69 78 k", "bold", "fix 000208e0: 65 64 22 2c 20 22 66 6f 6e 74 63 6f 6c 6f 72 22 ed", "fontcolor" 000208f0: 2c 20 22 66 6f 6e 74 73 69 7a 65 22 2c 20 22 69 , "fontsize", "i 00020900: 74 61 6c 69 63 73 22 2c 20 22 6c 69 6e 6b 22 2c talics", "link", 00020910: 20 22 73 6d 61 6c 6c 22 2c 20 22 73 74 72 69 6b "small", "strik 00020920: 65 22 2c 20 22 73 75 62 22 2c 20 22 73 75 70 22 e", "sub", "sup" 00020930: 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ],. 00020940: 20 20 20 53 74 72 69 6e 67 43 6f 6e 73 74 72 75 StringConstru 00020950: 63 74 6f 72 3a 20 5b 22 66 72 6f 6d 43 6f 64 65 ctor: ["fromCode 00020960: 50 6f 69 6e 74 22 2c 20 22 72 61 77 22 5d 0a 20 Point", "raw"]. 00020970: 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 },. 00020980: 20 20 20 20 20 20 20 20 20 20 65 73 32 30 31 36 es2016 00020990: 3a 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 : {. 000209a0: 20 20 20 20 41 72 72 61 79 3a 20 5b 22 69 6e 63 Array: ["inc 000209b0: 6c 75 64 65 73 22 5d 0a 20 20 20 20 20 20 20 20 ludes"]. 000209c0: 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 },. 000209d0: 20 20 20 65 73 32 30 31 37 3a 20 7b 0a 20 20 20 es2017: {. 000209e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 41 74 6f Ato 000209f0: 6d 69 63 73 3a 20 74 73 2e 65 6d 70 74 79 41 72 mics: ts.emptyAr 00020a00: 72 61 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 ray,. 00020a10: 20 20 20 20 20 53 68 61 72 65 64 41 72 72 61 79 SharedArray 00020a20: 42 75 66 66 65 72 3a 20 74 73 2e 65 6d 70 74 79 Buffer: ts.empty 00020a30: 41 72 72 61 79 2c 0a 20 20 20 20 20 20 20 20 20 Array,. 00020a40: 20 20 20 20 20 20 20 53 74 72 69 6e 67 3a 20 5b String: [ 00020a50: 22 70 61 64 53 74 61 72 74 22 2c 20 22 70 61 64 "padStart", "pad 00020a60: 45 6e 64 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 End"],. 00020a70: 20 20 20 20 20 20 20 4f 62 6a 65 63 74 43 6f 6e ObjectCon 00020a80: 73 74 72 75 63 74 6f 72 3a 20 5b 22 76 61 6c 75 structor: ["valu 00020a90: 65 73 22 2c 20 22 65 6e 74 72 69 65 73 22 2c 20 es", "entries", 00020aa0: 22 67 65 74 4f 77 6e 50 72 6f 70 65 72 74 79 44 "getOwnPropertyD 00020ab0: 65 73 63 72 69 70 74 6f 72 73 22 5d 2c 0a 20 20 escriptors"],. 00020ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 Da 00020ad0: 74 65 54 69 6d 65 46 6f 72 6d 61 74 3a 20 5b 22 teTimeFormat: [" 00020ae0: 66 6f 72 6d 61 74 54 6f 50 61 72 74 73 22 5d 0a formatToParts"]. 00020af0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 },. 00020b00: 20 20 20 20 20 20 20 20 20 20 20 65 73 32 30 31 es201 00020b10: 38 3a 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 8: {. 00020b20: 20 20 20 20 20 50 72 6f 6d 69 73 65 3a 20 5b 22 Promise: [" 00020b30: 66 69 6e 61 6c 6c 79 22 5d 2c 0a 20 20 20 20 20 finally"],. 00020b40: 20 20 20 20 20 20 20 20 20 20 20 52 65 67 45 78 RegEx 00020b50: 70 4d 61 74 63 68 41 72 72 61 79 3a 20 5b 22 67 pMatchArray: ["g 00020b60: 72 6f 75 70 73 22 5d 2c 0a 20 20 20 20 20 20 20 roups"],. 00020b70: 20 20 20 20 20 20 20 20 20 52 65 67 45 78 70 45 RegExpE 00020b80: 78 65 63 41 72 72 61 79 3a 20 5b 22 67 72 6f 75 xecArray: ["grou 00020b90: 70 73 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 ps"],. 00020ba0: 20 20 20 20 20 20 52 65 67 45 78 70 3a 20 5b 22 RegExp: [" 00020bb0: 64 6f 74 41 6c 6c 22 5d 2c 0a 20 20 20 20 20 20 dotAll"],. 00020bc0: 20 20 20 20 20 20 20 20 20 20 49 6e 74 6c 3a 20 Intl: 00020bd0: 5b 22 50 6c 75 72 61 6c 52 75 6c 65 73 22 5d 2c ["PluralRules"], 00020be0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00020bf0: 20 41 73 79 6e 63 49 74 65 72 61 62 6c 65 3a 20 AsyncIterable: 00020c00: 74 73 2e 65 6d 70 74 79 41 72 72 61 79 2c 0a 20 ts.emptyArray,. 00020c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 A 00020c20: 73 79 6e 63 49 74 65 72 61 62 6c 65 49 74 65 72 syncIterableIter 00020c30: 61 74 6f 72 3a 20 74 73 2e 65 6d 70 74 79 41 72 ator: ts.emptyAr 00020c40: 72 61 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 ray,. 00020c50: 20 20 20 20 20 41 73 79 6e 63 47 65 6e 65 72 61 AsyncGenera 00020c60: 74 6f 72 3a 20 74 73 2e 65 6d 70 74 79 41 72 72 tor: ts.emptyArr 00020c70: 61 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ay,. 00020c80: 20 20 20 20 41 73 79 6e 63 47 65 6e 65 72 61 74 AsyncGenerat 00020c90: 6f 72 46 75 6e 63 74 69 6f 6e 3a 20 74 73 2e 65 orFunction: ts.e 00020ca0: 6d 70 74 79 41 72 72 61 79 2c 0a 20 20 20 20 20 mptyArray,. 00020cb0: 20 20 20 20 20 20 20 20 20 20 20 4e 75 6d 62 65 Numbe 00020cc0: 72 46 6f 72 6d 61 74 3a 20 5b 22 66 6f 72 6d 61 rFormat: ["forma 00020cd0: 74 54 6f 50 61 72 74 73 22 5d 0a 20 20 20 20 20 tToParts"]. 00020ce0: 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 },. 00020cf0: 20 20 20 20 20 20 65 73 32 30 31 39 3a 20 7b 0a es2019: {. 00020d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00020d10: 41 72 72 61 79 3a 20 5b 22 66 6c 61 74 22 2c 20 Array: ["flat", 00020d20: 22 66 6c 61 74 4d 61 70 22 5d 2c 0a 20 20 20 20 "flatMap"],. 00020d30: 20 20 20 20 20 20 20 20 20 20 20 20 4f 62 6a 65 Obje 00020d40: 63 74 43 6f 6e 73 74 72 75 63 74 6f 72 3a 20 5b ctConstructor: [ 00020d50: 22 66 72 6f 6d 45 6e 74 72 69 65 73 22 5d 2c 0a "fromEntries"],. 00020d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00020d70: 53 74 72 69 6e 67 3a 20 5b 22 74 72 69 6d 53 74 String: ["trimSt 00020d80: 61 72 74 22 2c 20 22 74 72 69 6d 45 6e 64 22 2c art", "trimEnd", 00020d90: 20 22 74 72 69 6d 4c 65 66 74 22 2c 20 22 74 72 "trimLeft", "tr 00020da0: 69 6d 52 69 67 68 74 22 5d 2c 0a 20 20 20 20 20 imRight"],. 00020db0: 20 20 20 20 20 20 20 20 20 20 20 53 79 6d 62 6f Symbo 00020dc0: 6c 3a 20 5b 22 64 65 73 63 72 69 70 74 69 6f 6e l: ["description 00020dd0: 22 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d "]. } 00020de0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 73 ,. es 00020df0: 32 30 32 30 3a 20 7b 0a 20 20 20 20 20 20 20 20 2020: {. 00020e00: 20 20 20 20 20 20 20 20 42 69 67 49 6e 74 3a 20 BigInt: 00020e10: 74 73 2e 65 6d 70 74 79 41 72 72 61 79 2c 0a 20 ts.emptyArray,. 00020e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 B 00020e30: 69 67 49 6e 74 36 34 41 72 72 61 79 3a 20 74 73 igInt64Array: ts 00020e40: 2e 65 6d 70 74 79 41 72 72 61 79 2c 0a 20 20 20 .emptyArray,. 00020e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 42 69 67 Big 00020e60: 55 69 6e 74 36 34 41 72 72 61 79 3a 20 74 73 2e Uint64Array: ts. 00020e70: 65 6d 70 74 79 41 72 72 61 79 2c 0a 20 20 20 20 emptyArray,. 00020e80: 20 20 20 20 20 20 20 20 20 20 20 20 50 72 6f 6d Prom 00020e90: 69 73 65 43 6f 6e 73 74 72 75 63 74 6f 72 3a 20 iseConstructor: 00020ea0: 5b 22 61 6c 6c 53 65 74 74 6c 65 64 22 5d 2c 0a ["allSettled"],. 00020eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00020ec0: 53 79 6d 62 6f 6c 43 6f 6e 73 74 72 75 63 74 6f SymbolConstructo 00020ed0: 72 3a 20 5b 22 6d 61 74 63 68 41 6c 6c 22 5d 2c r: ["matchAll"], 00020ee0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00020ef0: 20 53 74 72 69 6e 67 3a 20 5b 22 6d 61 74 63 68 String: ["match 00020f00: 41 6c 6c 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 All"],. 00020f10: 20 20 20 20 20 20 20 44 61 74 61 56 69 65 77 3a DataView: 00020f20: 20 5b 22 73 65 74 42 69 67 49 6e 74 36 34 22 2c ["setBigInt64", 00020f30: 20 22 73 65 74 42 69 67 55 69 6e 74 36 34 22 2c "setBigUint64", 00020f40: 20 22 67 65 74 42 69 67 49 6e 74 36 34 22 2c 20 "getBigInt64", 00020f50: 22 67 65 74 42 69 67 55 69 6e 74 36 34 22 5d 2c "getBigUint64"], 00020f60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00020f70: 20 52 65 6c 61 74 69 76 65 54 69 6d 65 46 6f 72 RelativeTimeFor 00020f80: 6d 61 74 3a 20 5b 22 66 6f 72 6d 61 74 22 2c 20 mat: ["format", 00020f90: 22 66 6f 72 6d 61 74 54 6f 50 61 72 74 73 22 2c "formatToParts", 00020fa0: 20 22 72 65 73 6f 6c 76 65 64 4f 70 74 69 6f 6e "resolvedOption 00020fb0: 73 22 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 s"]. 00020fc0: 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 },. e 00020fd0: 73 32 30 32 31 3a 20 7b 0a 20 20 20 20 20 20 20 s2021: {. 00020fe0: 20 20 20 20 20 20 20 20 20 50 72 6f 6d 69 73 65 Promise 00020ff0: 43 6f 6e 73 74 72 75 63 74 6f 72 3a 20 5b 22 61 Constructor: ["a 00021000: 6e 79 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 ny"],. 00021010: 20 20 20 20 20 20 53 74 72 69 6e 67 3a 20 5b 22 String: [" 00021020: 72 65 70 6c 61 63 65 41 6c 6c 22 5d 0a 20 20 20 replaceAll"]. 00021030: 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 },. 00021040: 20 20 20 20 20 20 20 20 65 73 32 30 32 32 3a 20 es2022: 00021050: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 00021060: 20 20 41 72 72 61 79 3a 20 5b 22 61 74 22 5d 2c Array: ["at"], 00021070: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00021080: 20 53 74 72 69 6e 67 3a 20 5b 22 61 74 22 5d 2c String: ["at"], 00021090: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 000210a0: 20 49 6e 74 38 41 72 72 61 79 3a 20 5b 22 61 74 Int8Array: ["at 000210b0: 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 "],. 000210c0: 20 20 20 20 55 69 6e 74 38 41 72 72 61 79 3a 20 Uint8Array: 000210d0: 5b 22 61 74 22 5d 2c 0a 20 20 20 20 20 20 20 20 ["at"],. 000210e0: 20 20 20 20 20 20 20 20 55 69 6e 74 38 43 6c 61 Uint8Cla 000210f0: 6d 70 65 64 41 72 72 61 79 3a 20 5b 22 61 74 22 mpedArray: ["at" 00021100: 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ],. 00021110: 20 20 20 49 6e 74 31 36 41 72 72 61 79 3a 20 5b Int16Array: [ 00021120: 22 61 74 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 "at"],. 00021130: 20 20 20 20 20 20 20 55 69 6e 74 31 36 41 72 72 Uint16Arr 00021140: 61 79 3a 20 5b 22 61 74 22 5d 2c 0a 20 20 20 20 ay: ["at"],. 00021150: 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 33 Int3 00021160: 32 41 72 72 61 79 3a 20 5b 22 61 74 22 5d 2c 0a 2Array: ["at"],. 00021170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00021180: 55 69 6e 74 33 32 41 72 72 61 79 3a 20 5b 22 61 Uint32Array: ["a 00021190: 74 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 t"],. 000211a0: 20 20 20 20 20 46 6c 6f 61 74 33 32 41 72 72 61 Float32Arra 000211b0: 79 3a 20 5b 22 61 74 22 5d 2c 0a 20 20 20 20 20 y: ["at"],. 000211c0: 20 20 20 20 20 20 20 20 20 20 20 46 6c 6f 61 74 Float 000211d0: 36 34 41 72 72 61 79 3a 20 5b 22 61 74 22 5d 2c 64Array: ["at"], 000211e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 000211f0: 20 42 69 67 49 6e 74 36 34 41 72 72 61 79 3a 20 BigInt64Array: 00021200: 5b 22 61 74 22 5d 2c 0a 20 20 20 20 20 20 20 20 ["at"],. 00021210: 20 20 20 20 20 20 20 20 42 69 67 55 69 6e 74 36 BigUint6 00021220: 34 41 72 72 61 79 3a 20 5b 22 61 74 22 5d 2c 0a 4Array: ["at"],. 00021230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00021240: 4f 62 6a 65 63 74 43 6f 6e 73 74 72 75 63 74 6f ObjectConstructo 00021250: 72 3a 20 5b 22 68 61 73 4f 77 6e 22 5d 2c 0a 20 r: ["hasOwn"],. 00021260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 E 00021270: 72 72 6f 72 3a 20 5b 22 63 61 75 73 65 22 5d 0a rror: ["cause"]. 00021280: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. 00021290: 20 20 20 20 20 20 7d 3b 0a 20 20 20 20 7d 0a 20 };. }. 000212a0: 20 20 20 74 73 2e 67 65 74 53 63 72 69 70 74 54 ts.getScriptT 000212b0: 61 72 67 65 74 46 65 61 74 75 72 65 73 20 3d 20 argetFeatures = 000212c0: 67 65 74 53 63 72 69 70 74 54 61 72 67 65 74 46 getScriptTargetF 000212d0: 65 61 74 75 72 65 73 3b 0a 20 20 20 20 76 61 72 eatures;. var 000212e0: 20 47 65 74 4c 69 74 65 72 61 6c 54 65 78 74 46 GetLiteralTextF 000212f0: 6c 61 67 73 3b 0a 20 20 20 20 28 66 75 6e 63 74 lags;. (funct 00021300: 69 6f 6e 20 28 47 65 74 4c 69 74 65 72 61 6c 54 ion (GetLiteralT 00021310: 65 78 74 46 6c 61 67 73 29 20 7b 0a 20 20 20 20 extFlags) {. 00021320: 20 20 20 20 47 65 74 4c 69 74 65 72 61 6c 54 65 GetLiteralTe 00021330: 78 74 46 6c 61 67 73 5b 47 65 74 4c 69 74 65 72 xtFlags[GetLiter 00021340: 61 6c 54 65 78 74 46 6c 61 67 73 5b 22 4e 6f 6e alTextFlags["Non 00021350: 65 22 5d 20 3d 20 30 5d 20 3d 20 22 4e 6f 6e 65 e"] = 0] = "None 00021360: 22 3b 0a 20 20 20 20 20 20 20 20 47 65 74 4c 69 ";. GetLi 00021370: 74 65 72 61 6c 54 65 78 74 46 6c 61 67 73 5b 47 teralTextFlags[G 00021380: 65 74 4c 69 74 65 72 61 6c 54 65 78 74 46 6c 61 etLiteralTextFla 00021390: 67 73 5b 22 4e 65 76 65 72 41 73 63 69 69 45 73 gs["NeverAsciiEs 000213a0: 63 61 70 65 22 5d 20 3d 20 31 5d 20 3d 20 22 4e cape"] = 1] = "N 000213b0: 65 76 65 72 41 73 63 69 69 45 73 63 61 70 65 22 everAsciiEscape" 000213c0: 3b 0a 20 20 20 20 20 20 20 20 47 65 74 4c 69 74 ;. GetLit 000213d0: 65 72 61 6c 54 65 78 74 46 6c 61 67 73 5b 47 65 eralTextFlags[Ge 000213e0: 74 4c 69 74 65 72 61 6c 54 65 78 74 46 6c 61 67 tLiteralTextFlag 000213f0: 73 5b 22 4a 73 78 41 74 74 72 69 62 75 74 65 45 s["JsxAttributeE 00021400: 73 63 61 70 65 22 5d 20 3d 20 32 5d 20 3d 20 22 scape"] = 2] = " 00021410: 4a 73 78 41 74 74 72 69 62 75 74 65 45 73 63 61 JsxAttributeEsca 00021420: 70 65 22 3b 0a 20 20 20 20 20 20 20 20 47 65 74 pe";. Get 00021430: 4c 69 74 65 72 61 6c 54 65 78 74 46 6c 61 67 73 LiteralTextFlags 00021440: 5b 47 65 74 4c 69 74 65 72 61 6c 54 65 78 74 46 [GetLiteralTextF 00021450: 6c 61 67 73 5b 22 54 65 72 6d 69 6e 61 74 65 55 lags["TerminateU 00021460: 6e 74 65 72 6d 69 6e 61 74 65 64 4c 69 74 65 72 nterminatedLiter 00021470: 61 6c 73 22 5d 20 3d 20 34 5d 20 3d 20 22 54 65 als"] = 4] = "Te 00021480: 72 6d 69 6e 61 74 65 55 6e 74 65 72 6d 69 6e 61 rminateUntermina 00021490: 74 65 64 4c 69 74 65 72 61 6c 73 22 3b 0a 20 20 tedLiterals";. 000214a0: 20 20 20 20 20 20 47 65 74 4c 69 74 65 72 61 6c GetLiteral 000214b0: 54 65 78 74 46 6c 61 67 73 5b 47 65 74 4c 69 74 TextFlags[GetLit 000214c0: 65 72 61 6c 54 65 78 74 46 6c 61 67 73 5b 22 41 eralTextFlags["A 000214d0: 6c 6c 6f 77 4e 75 6d 65 72 69 63 53 65 70 61 72 llowNumericSepar 000214e0: 61 74 6f 72 22 5d 20 3d 20 38 5d 20 3d 20 22 41 ator"] = 8] = "A 000214f0: 6c 6c 6f 77 4e 75 6d 65 72 69 63 53 65 70 61 72 llowNumericSepar 00021500: 61 74 6f 72 22 3b 0a 20 20 20 20 7d 29 28 47 65 ator";. })(Ge 00021510: 74 4c 69 74 65 72 61 6c 54 65 78 74 46 6c 61 67 tLiteralTextFlag 00021520: 73 20 3d 20 74 73 2e 47 65 74 4c 69 74 65 72 61 s = ts.GetLitera 00021530: 6c 54 65 78 74 46 6c 61 67 73 20 7c 7c 20 28 74 lTextFlags || (t 00021540: 73 2e 47 65 74 4c 69 74 65 72 61 6c 54 65 78 74 s.GetLiteralText 00021550: 46 6c 61 67 73 20 3d 20 7b 7d 29 29 3b 0a 20 20 Flags = {}));. 00021560: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4c 69 function getLi 00021570: 74 65 72 61 6c 54 65 78 74 28 6e 6f 64 65 2c 20 teralText(node, 00021580: 73 6f 75 72 63 65 46 69 6c 65 2c 20 66 6c 61 67 sourceFile, flag 00021590: 73 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 s) {. var 000215a0: 20 5f 61 3b 0a 20 20 20 20 20 20 20 20 2f 2f 20 _a;. // 000215b0: 49 66 20 77 65 20 64 6f 6e 27 74 20 6e 65 65 64 If we don't need 000215c0: 20 74 6f 20 64 6f 77 6e 6c 65 76 65 6c 20 61 6e to downlevel an 000215d0: 64 20 77 65 20 63 61 6e 20 72 65 61 63 68 20 74 d we can reach t 000215e0: 68 65 20 6f 72 69 67 69 6e 61 6c 20 73 6f 75 72 he original sour 000215f0: 63 65 20 74 65 78 74 20 75 73 69 6e 67 0a 20 20 ce text using. 00021600: 20 20 20 20 20 20 2f 2f 20 74 68 65 20 6e 6f 64 // the nod 00021610: 65 27 73 20 70 61 72 65 6e 74 20 72 65 66 65 72 e's parent refer 00021620: 65 6e 63 65 2c 20 74 68 65 6e 20 73 69 6d 70 6c ence, then simpl 00021630: 79 20 67 65 74 20 74 68 65 20 74 65 78 74 20 61 y get the text a 00021640: 73 20 69 74 20 77 61 73 20 6f 72 69 67 69 6e 61 s it was origina 00021650: 6c 6c 79 20 77 72 69 74 74 65 6e 2e 0a 20 20 20 lly written.. 00021660: 20 20 20 20 20 69 66 20 28 73 6f 75 72 63 65 46 if (sourceF 00021670: 69 6c 65 20 26 26 20 63 61 6e 55 73 65 4f 72 69 ile && canUseOri 00021680: 67 69 6e 61 6c 54 65 78 74 28 6e 6f 64 65 2c 20 ginalText(node, 00021690: 66 6c 61 67 73 29 29 20 7b 0a 20 20 20 20 20 20 flags)) {. 000216a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 return get 000216b0: 53 6f 75 72 63 65 54 65 78 74 4f 66 4e 6f 64 65 SourceTextOfNode 000216c0: 46 72 6f 6d 53 6f 75 72 63 65 46 69 6c 65 28 73 FromSourceFile(s 000216d0: 6f 75 72 63 65 46 69 6c 65 2c 20 6e 6f 64 65 29 ourceFile, node) 000216e0: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 000216f0: 20 20 20 20 2f 2f 20 49 66 20 77 65 20 63 61 6e // If we can 00021700: 27 74 20 72 65 61 63 68 20 74 68 65 20 6f 72 69 't reach the ori 00021710: 67 69 6e 61 6c 20 73 6f 75 72 63 65 20 74 65 78 ginal source tex 00021720: 74 2c 20 75 73 65 20 74 68 65 20 63 61 6e 6f 6e t, use the canon 00021730: 69 63 61 6c 20 66 6f 72 6d 20 69 66 20 69 74 27 ical form if it' 00021740: 73 20 61 20 6e 75 6d 62 65 72 2c 0a 20 20 20 20 s a number,. 00021750: 20 20 20 20 2f 2f 20 6f 72 20 61 20 28 70 6f 73 // or a (pos 00021760: 73 69 62 6c 79 20 65 73 63 61 70 65 64 29 20 71 sibly escaped) q 00021770: 75 6f 74 65 64 20 66 6f 72 6d 20 6f 66 20 74 68 uoted form of th 00021780: 65 20 6f 72 69 67 69 6e 61 6c 20 74 65 78 74 20 e original text 00021790: 69 66 20 69 74 27 73 20 73 74 72 69 6e 67 2d 6c if it's string-l 000217a0: 69 6b 65 2e 0a 20 20 20 20 20 20 20 20 73 77 69 ike.. swi 000217b0: 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 tch (node.kind) 000217c0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 {. ca 000217d0: 73 65 20 31 30 20 2f 2a 20 53 79 6e 74 61 78 4b se 10 /* SyntaxK 000217e0: 69 6e 64 2e 53 74 72 69 6e 67 4c 69 74 65 72 61 ind.StringLitera 000217f0: 6c 20 2a 2f 3a 20 7b 0a 20 20 20 20 20 20 20 20 l */: {. 00021800: 20 20 20 20 20 20 20 20 76 61 72 20 65 73 63 61 var esca 00021810: 70 65 54 65 78 74 20 3d 20 66 6c 61 67 73 20 26 peText = flags & 00021820: 20 32 20 2f 2a 20 47 65 74 4c 69 74 65 72 61 6c 2 /* GetLiteral 00021830: 54 65 78 74 46 6c 61 67 73 2e 4a 73 78 41 74 74 TextFlags.JsxAtt 00021840: 72 69 62 75 74 65 45 73 63 61 70 65 20 2a 2f 20 ributeEscape */ 00021850: 3f 20 65 73 63 61 70 65 4a 73 78 41 74 74 72 69 ? escapeJsxAttri 00021860: 62 75 74 65 53 74 72 69 6e 67 20 3a 0a 20 20 20 buteString :. 00021870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00021880: 20 66 6c 61 67 73 20 26 20 31 20 2f 2a 20 47 65 flags & 1 /* Ge 00021890: 74 4c 69 74 65 72 61 6c 54 65 78 74 46 6c 61 67 tLiteralTextFlag 000218a0: 73 2e 4e 65 76 65 72 41 73 63 69 69 45 73 63 61 s.NeverAsciiEsca 000218b0: 70 65 20 2a 2f 20 7c 7c 20 28 67 65 74 45 6d 69 pe */ || (getEmi 000218c0: 74 46 6c 61 67 73 28 6e 6f 64 65 29 20 26 20 31 tFlags(node) & 1 000218d0: 36 37 37 37 32 31 36 20 2f 2a 20 45 6d 69 74 46 6777216 /* EmitF 000218e0: 6c 61 67 73 2e 4e 6f 41 73 63 69 69 45 73 63 61 lags.NoAsciiEsca 000218f0: 70 69 6e 67 20 2a 2f 29 20 3f 20 65 73 63 61 70 ping */) ? escap 00021900: 65 53 74 72 69 6e 67 20 3a 0a 20 20 20 20 20 20 eString :. 00021910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00021920: 20 20 65 73 63 61 70 65 4e 6f 6e 41 73 63 69 69 escapeNonAscii 00021930: 53 74 72 69 6e 67 3b 0a 20 20 20 20 20 20 20 20 String;. 00021940: 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 if (node 00021950: 2e 73 69 6e 67 6c 65 51 75 6f 74 65 29 20 7b 0a .singleQuote) {. 00021960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00021970: 20 20 20 20 72 65 74 75 72 6e 20 22 27 22 20 2b return "'" + 00021980: 20 65 73 63 61 70 65 54 65 78 74 28 6e 6f 64 65 escapeText(node 00021990: 2e 74 65 78 74 2c 20 33 39 20 2f 2a 20 43 68 61 .text, 39 /* Cha 000219a0: 72 61 63 74 65 72 43 6f 64 65 73 2e 73 69 6e 67 racterCodes.sing 000219b0: 6c 65 51 75 6f 74 65 20 2a 2f 29 20 2b 20 22 27 leQuote */) + "' 000219c0: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ";. 000219d0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 000219e0: 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 else {. 000219f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00021a00: 72 65 74 75 72 6e 20 27 22 27 20 2b 20 65 73 63 return '"' + esc 00021a10: 61 70 65 54 65 78 74 28 6e 6f 64 65 2e 74 65 78 apeText(node.tex 00021a20: 74 2c 20 33 34 20 2f 2a 20 43 68 61 72 61 63 74 t, 34 /* Charact 00021a30: 65 72 43 6f 64 65 73 2e 64 6f 75 62 6c 65 51 75 erCodes.doubleQu 00021a40: 6f 74 65 20 2a 2f 29 20 2b 20 27 22 27 3b 0a 20 ote */) + '"';. 00021a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d } 00021a60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 . }. 00021a70: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00021a80: 31 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 14 /* SyntaxKind 00021a90: 2e 4e 6f 53 75 62 73 74 69 74 75 74 69 6f 6e 54 .NoSubstitutionT 00021aa0: 65 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c 20 2a emplateLiteral * 00021ab0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00021ac0: 61 73 65 20 31 35 20 2f 2a 20 53 79 6e 74 61 78 ase 15 /* Syntax 00021ad0: 4b 69 6e 64 2e 54 65 6d 70 6c 61 74 65 48 65 61 Kind.TemplateHea 00021ae0: 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 d */:. 00021af0: 20 20 63 61 73 65 20 31 36 20 2f 2a 20 53 79 6e case 16 /* Syn 00021b00: 74 61 78 4b 69 6e 64 2e 54 65 6d 70 6c 61 74 65 taxKind.Template 00021b10: 4d 69 64 64 6c 65 20 2a 2f 3a 0a 20 20 20 20 20 Middle */:. 00021b20: 20 20 20 20 20 20 20 63 61 73 65 20 31 37 20 2f case 17 / 00021b30: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 65 6d * SyntaxKind.Tem 00021b40: 70 6c 61 74 65 54 61 69 6c 20 2a 2f 3a 20 7b 0a plateTail */: {. 00021b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00021b60: 2f 2f 20 49 66 20 61 20 4e 6f 53 75 62 73 74 69 // If a NoSubsti 00021b70: 74 75 74 69 6f 6e 54 65 6d 70 6c 61 74 65 4c 69 tutionTemplateLi 00021b80: 74 65 72 61 6c 20 61 70 70 65 61 72 73 20 74 6f teral appears to 00021b90: 20 68 61 76 65 20 61 20 73 75 62 73 74 69 74 75 have a substitu 00021ba0: 74 69 6f 6e 20 69 6e 20 69 74 2c 20 74 68 65 20 tion in it, the 00021bb0: 6f 72 69 67 69 6e 61 6c 20 74 65 78 74 0a 20 20 original text. 00021bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f // 00021bd0: 20 68 61 64 20 74 6f 20 69 6e 63 6c 75 64 65 20 had to include 00021be0: 61 20 62 61 63 6b 73 6c 61 73 68 3a 20 60 6e 6f a backslash: `no 00021bf0: 74 20 5c 24 7b 61 7d 20 73 75 62 73 74 69 74 75 t \${a} substitu 00021c00: 74 69 6f 6e 60 2e 0a 20 20 20 20 20 20 20 20 20 tion`.. 00021c10: 20 20 20 20 20 20 20 76 61 72 20 65 73 63 61 70 var escap 00021c20: 65 54 65 78 74 20 3d 20 66 6c 61 67 73 20 26 20 eText = flags & 00021c30: 31 20 2f 2a 20 47 65 74 4c 69 74 65 72 61 6c 54 1 /* GetLiteralT 00021c40: 65 78 74 46 6c 61 67 73 2e 4e 65 76 65 72 41 73 extFlags.NeverAs 00021c50: 63 69 69 45 73 63 61 70 65 20 2a 2f 20 7c 7c 20 ciiEscape */ || 00021c60: 28 67 65 74 45 6d 69 74 46 6c 61 67 73 28 6e 6f (getEmitFlags(no 00021c70: 64 65 29 20 26 20 31 36 37 37 37 32 31 36 20 2f de) & 16777216 / 00021c80: 2a 20 45 6d 69 74 46 6c 61 67 73 2e 4e 6f 41 73 * EmitFlags.NoAs 00021c90: 63 69 69 45 73 63 61 70 69 6e 67 20 2a 2f 29 20 ciiEscaping */) 00021ca0: 3f 20 65 73 63 61 70 65 53 74 72 69 6e 67 20 3a ? escapeString : 00021cb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00021cc0: 20 20 20 20 20 65 73 63 61 70 65 4e 6f 6e 41 73 escapeNonAs 00021cd0: 63 69 69 53 74 72 69 6e 67 3b 0a 20 20 20 20 20 ciiString;. 00021ce0: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 72 var r 00021cf0: 61 77 54 65 78 74 20 3d 20 28 5f 61 20 3d 20 6e awText = (_a = n 00021d00: 6f 64 65 2e 72 61 77 54 65 78 74 29 20 21 3d 3d ode.rawText) !== 00021d10: 20 6e 75 6c 6c 20 26 26 20 5f 61 20 21 3d 3d 20 null && _a !== 00021d20: 76 6f 69 64 20 30 20 3f 20 5f 61 20 3a 20 65 73 void 0 ? _a : es 00021d30: 63 61 70 65 54 65 6d 70 6c 61 74 65 53 75 62 73 capeTemplateSubs 00021d40: 74 69 74 75 74 69 6f 6e 28 65 73 63 61 70 65 54 titution(escapeT 00021d50: 65 78 74 28 6e 6f 64 65 2e 74 65 78 74 2c 20 39 ext(node.text, 9 00021d60: 36 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 6 /* CharacterCo 00021d70: 64 65 73 2e 62 61 63 6b 74 69 63 6b 20 2a 2f 29 des.backtick */) 00021d80: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 );. 00021d90: 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e switch (node. 00021da0: 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 kind) {. 00021db0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00021dc0: 20 31 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 14 /* SyntaxKin 00021dd0: 64 2e 4e 6f 53 75 62 73 74 69 74 75 74 69 6f 6e d.NoSubstitution 00021de0: 54 65 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c 20 TemplateLiteral 00021df0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00021e00: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00021e10: 72 6e 20 22 60 22 20 2b 20 72 61 77 54 65 78 74 rn "`" + rawText 00021e20: 20 2b 20 22 60 22 3b 0a 20 20 20 20 20 20 20 20 + "`";. 00021e30: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00021e40: 20 31 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 15 /* SyntaxKin 00021e50: 64 2e 54 65 6d 70 6c 61 74 65 48 65 61 64 20 2a d.TemplateHead * 00021e60: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 00021e70: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00021e80: 6e 20 22 60 22 20 2b 20 72 61 77 54 65 78 74 20 n "`" + rawText 00021e90: 2b 20 22 24 7b 22 3b 0a 20 20 20 20 20 20 20 20 + "${";. 00021ea0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00021eb0: 20 31 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 16 /* SyntaxKin 00021ec0: 64 2e 54 65 6d 70 6c 61 74 65 4d 69 64 64 6c 65 d.TemplateMiddle 00021ed0: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00021ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00021ef0: 75 72 6e 20 22 7d 22 20 2b 20 72 61 77 54 65 78 urn "}" + rawTex 00021f00: 74 20 2b 20 22 24 7b 22 3b 0a 20 20 20 20 20 20 t + "${";. 00021f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 00021f20: 73 65 20 31 37 20 2f 2a 20 53 79 6e 74 61 78 4b se 17 /* SyntaxK 00021f30: 69 6e 64 2e 54 65 6d 70 6c 61 74 65 54 61 69 6c ind.TemplateTail 00021f40: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00021f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00021f60: 75 72 6e 20 22 7d 22 20 2b 20 72 61 77 54 65 78 urn "}" + rawTex 00021f70: 74 20 2b 20 22 60 22 3b 0a 20 20 20 20 20 20 20 t + "`";. 00021f80: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 00021f90: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b break 00021fa0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a ;. }. 00021fb0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00021fc0: 20 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 8 /* SyntaxKind 00021fd0: 2e 4e 75 6d 65 72 69 63 4c 69 74 65 72 61 6c 20 .NumericLiteral 00021fe0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00021ff0: 63 61 73 65 20 39 20 2f 2a 20 53 79 6e 74 61 78 case 9 /* Syntax 00022000: 4b 69 6e 64 2e 42 69 67 49 6e 74 4c 69 74 65 72 Kind.BigIntLiter 00022010: 61 6c 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 al */:. 00022020: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 00022030: 64 65 2e 74 65 78 74 3b 0a 20 20 20 20 20 20 20 de.text;. 00022040: 20 20 20 20 20 63 61 73 65 20 31 33 20 2f 2a 20 case 13 /* 00022050: 53 79 6e 74 61 78 4b 69 6e 64 2e 52 65 67 75 6c SyntaxKind.Regul 00022060: 61 72 45 78 70 72 65 73 73 69 6f 6e 4c 69 74 65 arExpressionLite 00022070: 72 61 6c 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ral */:. 00022080: 20 20 20 20 20 20 20 20 69 66 20 28 66 6c 61 67 if (flag 00022090: 73 20 26 20 34 20 2f 2a 20 47 65 74 4c 69 74 65 s & 4 /* GetLite 000220a0: 72 61 6c 54 65 78 74 46 6c 61 67 73 2e 54 65 72 ralTextFlags.Ter 000220b0: 6d 69 6e 61 74 65 55 6e 74 65 72 6d 69 6e 61 74 minateUnterminat 000220c0: 65 64 4c 69 74 65 72 61 6c 73 20 2a 2f 20 26 26 edLiterals */ && 000220d0: 20 6e 6f 64 65 2e 69 73 55 6e 74 65 72 6d 69 6e node.isUntermin 000220e0: 61 74 65 64 29 20 7b 0a 20 20 20 20 20 20 20 20 ated) {. 000220f0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00022100: 72 6e 20 6e 6f 64 65 2e 74 65 78 74 20 2b 20 28 rn node.text + ( 00022110: 6e 6f 64 65 2e 74 65 78 74 2e 63 68 61 72 43 6f node.text.charCo 00022120: 64 65 41 74 28 6e 6f 64 65 2e 74 65 78 74 2e 6c deAt(node.text.l 00022130: 65 6e 67 74 68 20 2d 20 31 29 20 3d 3d 3d 20 39 ength - 1) === 9 00022140: 32 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 2 /* CharacterCo 00022150: 64 65 73 2e 62 61 63 6b 73 6c 61 73 68 20 2a 2f des.backslash */ 00022160: 20 3f 20 22 20 2f 22 20 3a 20 22 2f 22 29 3b 0a ? " /" : "/");. 00022170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00022180: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 }. 00022190: 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 74 65 return node.te 000221a0: 78 74 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 xt;. }. 000221b0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 000221c0: 44 65 62 75 67 2e 66 61 69 6c 28 22 4c 69 74 65 Debug.fail("Lite 000221d0: 72 61 6c 20 6b 69 6e 64 20 27 22 2e 63 6f 6e 63 ral kind '".conc 000221e0: 61 74 28 6e 6f 64 65 2e 6b 69 6e 64 2c 20 22 27 at(node.kind, "' 000221f0: 20 6e 6f 74 20 61 63 63 6f 75 6e 74 65 64 20 66 not accounted f 00022200: 6f 72 2e 22 29 29 3b 0a 20 20 20 20 7d 0a 20 20 or."));. }. 00022210: 20 20 74 73 2e 67 65 74 4c 69 74 65 72 61 6c 54 ts.getLiteralT 00022220: 65 78 74 20 3d 20 67 65 74 4c 69 74 65 72 61 6c ext = getLiteral 00022230: 54 65 78 74 3b 0a 20 20 20 20 66 75 6e 63 74 69 Text;. functi 00022240: 6f 6e 20 63 61 6e 55 73 65 4f 72 69 67 69 6e 61 on canUseOrigina 00022250: 6c 54 65 78 74 28 6e 6f 64 65 2c 20 66 6c 61 67 lText(node, flag 00022260: 73 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 s) {. if 00022270: 28 6e 6f 64 65 49 73 53 79 6e 74 68 65 73 69 7a (nodeIsSynthesiz 00022280: 65 64 28 6e 6f 64 65 29 20 7c 7c 20 21 6e 6f 64 ed(node) || !nod 00022290: 65 2e 70 61 72 65 6e 74 20 7c 7c 20 28 66 6c 61 e.parent || (fla 000222a0: 67 73 20 26 20 34 20 2f 2a 20 47 65 74 4c 69 74 gs & 4 /* GetLit 000222b0: 65 72 61 6c 54 65 78 74 46 6c 61 67 73 2e 54 65 eralTextFlags.Te 000222c0: 72 6d 69 6e 61 74 65 55 6e 74 65 72 6d 69 6e 61 rminateUntermina 000222d0: 74 65 64 4c 69 74 65 72 61 6c 73 20 2a 2f 20 26 tedLiterals */ & 000222e0: 26 20 6e 6f 64 65 2e 69 73 55 6e 74 65 72 6d 69 & node.isUntermi 000222f0: 6e 61 74 65 64 29 29 20 7b 0a 20 20 20 20 20 20 nated)) {. 00022300: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c return fal 00022310: 73 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 se;. }. 00022320: 20 20 20 20 20 20 69 66 20 28 74 73 2e 69 73 4e if (ts.isN 00022330: 75 6d 65 72 69 63 4c 69 74 65 72 61 6c 28 6e 6f umericLiteral(no 00022340: 64 65 29 20 26 26 20 6e 6f 64 65 2e 6e 75 6d 65 de) && node.nume 00022350: 72 69 63 4c 69 74 65 72 61 6c 46 6c 61 67 73 20 ricLiteralFlags 00022360: 26 20 35 31 32 20 2f 2a 20 54 6f 6b 65 6e 46 6c & 512 /* TokenFl 00022370: 61 67 73 2e 43 6f 6e 74 61 69 6e 73 53 65 70 61 ags.ContainsSepa 00022380: 72 61 74 6f 72 20 2a 2f 29 20 7b 0a 20 20 20 20 rator */) {. 00022390: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 return ! 000223a0: 21 28 66 6c 61 67 73 20 26 20 38 20 2f 2a 20 47 !(flags & 8 /* G 000223b0: 65 74 4c 69 74 65 72 61 6c 54 65 78 74 46 6c 61 etLiteralTextFla 000223c0: 67 73 2e 41 6c 6c 6f 77 4e 75 6d 65 72 69 63 53 gs.AllowNumericS 000223d0: 65 70 61 72 61 74 6f 72 20 2a 2f 29 3b 0a 20 20 eparator */);. 000223e0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 000223f0: 72 65 74 75 72 6e 20 21 74 73 2e 69 73 42 69 67 return !ts.isBig 00022400: 49 6e 74 4c 69 74 65 72 61 6c 28 6e 6f 64 65 29 IntLiteral(node) 00022410: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 ;. }. func 00022420: 74 69 6f 6e 20 67 65 74 54 65 78 74 4f 66 43 6f tion getTextOfCo 00022430: 6e 73 74 61 6e 74 56 61 6c 75 65 28 76 61 6c 75 nstantValue(valu 00022440: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 e) {. ret 00022450: 75 72 6e 20 74 73 2e 69 73 53 74 72 69 6e 67 28 urn ts.isString( 00022460: 76 61 6c 75 65 29 20 3f 20 27 22 27 20 2b 20 65 value) ? '"' + e 00022470: 73 63 61 70 65 4e 6f 6e 41 73 63 69 69 53 74 72 scapeNonAsciiStr 00022480: 69 6e 67 28 76 61 6c 75 65 29 20 2b 20 27 22 27 ing(value) + '"' 00022490: 20 3a 20 22 22 20 2b 20 76 61 6c 75 65 3b 0a 20 : "" + value;. 000224a0: 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 54 }. ts.getT 000224b0: 65 78 74 4f 66 43 6f 6e 73 74 61 6e 74 56 61 6c extOfConstantVal 000224c0: 75 65 20 3d 20 67 65 74 54 65 78 74 4f 66 43 6f ue = getTextOfCo 000224d0: 6e 73 74 61 6e 74 56 61 6c 75 65 3b 0a 20 20 20 nstantValue;. 000224e0: 20 2f 2f 20 4d 61 6b 65 20 61 6e 20 69 64 65 6e // Make an iden 000224f0: 74 69 66 69 65 72 20 66 72 6f 6d 20 61 6e 20 65 tifier from an e 00022500: 78 74 65 72 6e 61 6c 20 6d 6f 64 75 6c 65 20 6e xternal module n 00022510: 61 6d 65 20 62 79 20 65 78 74 72 61 63 74 69 6e ame by extractin 00022520: 67 20 74 68 65 20 73 74 72 69 6e 67 20 61 66 74 g the string aft 00022530: 65 72 20 74 68 65 20 6c 61 73 74 20 22 2f 22 20 er the last "/" 00022540: 61 6e 64 20 72 65 70 6c 61 63 69 6e 67 0a 20 20 and replacing. 00022550: 20 20 2f 2f 20 61 6c 6c 20 6e 6f 6e 2d 61 6c 70 // all non-alp 00022560: 68 61 6e 75 6d 65 72 69 63 20 63 68 61 72 61 63 hanumeric charac 00022570: 74 65 72 73 20 77 69 74 68 20 75 6e 64 65 72 73 ters with unders 00022580: 63 6f 72 65 73 0a 20 20 20 20 66 75 6e 63 74 69 cores. functi 00022590: 6f 6e 20 6d 61 6b 65 49 64 65 6e 74 69 66 69 65 on makeIdentifie 000225a0: 72 46 72 6f 6d 4d 6f 64 75 6c 65 4e 61 6d 65 28 rFromModuleName( 000225b0: 6d 6f 64 75 6c 65 4e 61 6d 65 29 20 7b 0a 20 20 moduleName) {. 000225c0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 000225d0: 67 65 74 42 61 73 65 46 69 6c 65 4e 61 6d 65 28 getBaseFileName( 000225e0: 6d 6f 64 75 6c 65 4e 61 6d 65 29 2e 72 65 70 6c moduleName).repl 000225f0: 61 63 65 28 2f 5e 28 5c 64 29 2f 2c 20 22 5f 24 ace(/^(\d)/, "_$ 00022600: 31 22 29 2e 72 65 70 6c 61 63 65 28 2f 5c 57 2f 1").replace(/\W/ 00022610: 67 2c 20 22 5f 22 29 3b 0a 20 20 20 20 7d 0a 20 g, "_");. }. 00022620: 20 20 20 74 73 2e 6d 61 6b 65 49 64 65 6e 74 69 ts.makeIdenti 00022630: 66 69 65 72 46 72 6f 6d 4d 6f 64 75 6c 65 4e 61 fierFromModuleNa 00022640: 6d 65 20 3d 20 6d 61 6b 65 49 64 65 6e 74 69 66 me = makeIdentif 00022650: 69 65 72 46 72 6f 6d 4d 6f 64 75 6c 65 4e 61 6d ierFromModuleNam 00022660: 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 e;. function 00022670: 69 73 42 6c 6f 63 6b 4f 72 43 61 74 63 68 53 63 isBlockOrCatchSc 00022680: 6f 70 65 64 28 64 65 63 6c 61 72 61 74 69 6f 6e oped(declaration 00022690: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 000226a0: 72 6e 20 28 74 73 2e 67 65 74 43 6f 6d 62 69 6e rn (ts.getCombin 000226b0: 65 64 4e 6f 64 65 46 6c 61 67 73 28 64 65 63 6c edNodeFlags(decl 000226c0: 61 72 61 74 69 6f 6e 29 20 26 20 33 20 2f 2a 20 aration) & 3 /* 000226d0: 4e 6f 64 65 46 6c 61 67 73 2e 42 6c 6f 63 6b 53 NodeFlags.BlockS 000226e0: 63 6f 70 65 64 20 2a 2f 29 20 21 3d 3d 20 30 20 coped */) !== 0 000226f0: 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 ||. i 00022700: 73 43 61 74 63 68 43 6c 61 75 73 65 56 61 72 69 sCatchClauseVari 00022710: 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 4f ableDeclarationO 00022720: 72 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 28 rBindingElement( 00022730: 64 65 63 6c 61 72 61 74 69 6f 6e 29 3b 0a 20 20 declaration);. 00022740: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 42 6c 6f }. ts.isBlo 00022750: 63 6b 4f 72 43 61 74 63 68 53 63 6f 70 65 64 20 ckOrCatchScoped 00022760: 3d 20 69 73 42 6c 6f 63 6b 4f 72 43 61 74 63 68 = isBlockOrCatch 00022770: 53 63 6f 70 65 64 3b 0a 20 20 20 20 66 75 6e 63 Scoped;. func 00022780: 74 69 6f 6e 20 69 73 43 61 74 63 68 43 6c 61 75 tion isCatchClau 00022790: 73 65 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 seVariableDeclar 000227a0: 61 74 69 6f 6e 4f 72 42 69 6e 64 69 6e 67 45 6c ationOrBindingEl 000227b0: 65 6d 65 6e 74 28 64 65 63 6c 61 72 61 74 69 6f ement(declaratio 000227c0: 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 n) {. var 000227d0: 20 6e 6f 64 65 20 3d 20 67 65 74 52 6f 6f 74 44 node = getRootD 000227e0: 65 63 6c 61 72 61 74 69 6f 6e 28 64 65 63 6c 61 eclaration(decla 000227f0: 72 61 74 69 6f 6e 29 3b 0a 20 20 20 20 20 20 20 ration);. 00022800: 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 6b 69 6e return node.kin 00022810: 64 20 3d 3d 3d 20 32 35 34 20 2f 2a 20 53 79 6e d === 254 /* Syn 00022820: 74 61 78 4b 69 6e 64 2e 56 61 72 69 61 62 6c 65 taxKind.Variable 00022830: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 20 26 Declaration */ & 00022840: 26 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b 69 & node.parent.ki 00022850: 6e 64 20 3d 3d 3d 20 32 39 32 20 2f 2a 20 53 79 nd === 292 /* Sy 00022860: 6e 74 61 78 4b 69 6e 64 2e 43 61 74 63 68 43 6c ntaxKind.CatchCl 00022870: 61 75 73 65 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 ause */;. }. 00022880: 20 20 20 74 73 2e 69 73 43 61 74 63 68 43 6c 61 ts.isCatchCla 00022890: 75 73 65 56 61 72 69 61 62 6c 65 44 65 63 6c 61 useVariableDecla 000228a0: 72 61 74 69 6f 6e 4f 72 42 69 6e 64 69 6e 67 45 rationOrBindingE 000228b0: 6c 65 6d 65 6e 74 20 3d 20 69 73 43 61 74 63 68 lement = isCatch 000228c0: 43 6c 61 75 73 65 56 61 72 69 61 62 6c 65 44 65 ClauseVariableDe 000228d0: 63 6c 61 72 61 74 69 6f 6e 4f 72 42 69 6e 64 69 clarationOrBindi 000228e0: 6e 67 45 6c 65 6d 65 6e 74 3b 0a 20 20 20 20 66 ngElement;. f 000228f0: 75 6e 63 74 69 6f 6e 20 69 73 41 6d 62 69 65 6e unction isAmbien 00022900: 74 4d 6f 64 75 6c 65 28 6e 6f 64 65 29 20 7b 0a tModule(node) {. 00022910: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 00022920: 73 2e 69 73 4d 6f 64 75 6c 65 44 65 63 6c 61 72 s.isModuleDeclar 00022930: 61 74 69 6f 6e 28 6e 6f 64 65 29 20 26 26 20 28 ation(node) && ( 00022940: 6e 6f 64 65 2e 6e 61 6d 65 2e 6b 69 6e 64 20 3d node.name.kind = 00022950: 3d 3d 20 31 30 20 2f 2a 20 53 79 6e 74 61 78 4b == 10 /* SyntaxK 00022960: 69 6e 64 2e 53 74 72 69 6e 67 4c 69 74 65 72 61 ind.StringLitera 00022970: 6c 20 2a 2f 20 7c 7c 20 69 73 47 6c 6f 62 61 6c l */ || isGlobal 00022980: 53 63 6f 70 65 41 75 67 6d 65 6e 74 61 74 69 6f ScopeAugmentatio 00022990: 6e 28 6e 6f 64 65 29 29 3b 0a 20 20 20 20 7d 0a n(node));. }. 000229a0: 20 20 20 20 74 73 2e 69 73 41 6d 62 69 65 6e 74 ts.isAmbient 000229b0: 4d 6f 64 75 6c 65 20 3d 20 69 73 41 6d 62 69 65 Module = isAmbie 000229c0: 6e 74 4d 6f 64 75 6c 65 3b 0a 20 20 20 20 66 75 ntModule;. fu 000229d0: 6e 63 74 69 6f 6e 20 69 73 4d 6f 64 75 6c 65 57 nction isModuleW 000229e0: 69 74 68 53 74 72 69 6e 67 4c 69 74 65 72 61 6c ithStringLiteral 000229f0: 4e 61 6d 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 Name(node) {. 00022a00: 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 return ts.i 00022a10: 73 4d 6f 64 75 6c 65 44 65 63 6c 61 72 61 74 69 sModuleDeclarati 00022a20: 6f 6e 28 6e 6f 64 65 29 20 26 26 20 6e 6f 64 65 on(node) && node 00022a30: 2e 6e 61 6d 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 .name.kind === 1 00022a40: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 00022a50: 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 20 2a 2f StringLiteral */ 00022a60: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 00022a70: 73 4d 6f 64 75 6c 65 57 69 74 68 53 74 72 69 6e sModuleWithStrin 00022a80: 67 4c 69 74 65 72 61 6c 4e 61 6d 65 20 3d 20 69 gLiteralName = i 00022a90: 73 4d 6f 64 75 6c 65 57 69 74 68 53 74 72 69 6e sModuleWithStrin 00022aa0: 67 4c 69 74 65 72 61 6c 4e 61 6d 65 3b 0a 20 20 gLiteralName;. 00022ab0: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4e 6f 6e function isNon 00022ac0: 47 6c 6f 62 61 6c 41 6d 62 69 65 6e 74 4d 6f 64 GlobalAmbientMod 00022ad0: 75 6c 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ule(node) {. 00022ae0: 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 return ts.is 00022af0: 4d 6f 64 75 6c 65 44 65 63 6c 61 72 61 74 69 6f ModuleDeclaratio 00022b00: 6e 28 6e 6f 64 65 29 20 26 26 20 74 73 2e 69 73 n(node) && ts.is 00022b10: 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 28 6e 6f StringLiteral(no 00022b20: 64 65 2e 6e 61 6d 65 29 3b 0a 20 20 20 20 7d 0a de.name);. }. 00022b30: 20 20 20 20 74 73 2e 69 73 4e 6f 6e 47 6c 6f 62 ts.isNonGlob 00022b40: 61 6c 41 6d 62 69 65 6e 74 4d 6f 64 75 6c 65 20 alAmbientModule 00022b50: 3d 20 69 73 4e 6f 6e 47 6c 6f 62 61 6c 41 6d 62 = isNonGlobalAmb 00022b60: 69 65 6e 74 4d 6f 64 75 6c 65 3b 0a 20 20 20 20 ientModule;. 00022b70: 2f 2a 2a 0a 20 20 20 20 20 2a 20 41 6e 20 65 66 /**. * An ef 00022b80: 66 65 63 74 69 76 65 20 6d 6f 64 75 6c 65 20 28 fective module ( 00022b90: 6e 61 6d 65 73 70 61 63 65 29 20 64 65 63 6c 61 namespace) decla 00022ba0: 72 61 74 69 6f 6e 20 69 73 20 65 69 74 68 65 72 ration is either 00022bb0: 0a 20 20 20 20 20 2a 20 31 2e 20 41 6e 20 61 63 . * 1. An ac 00022bc0: 74 75 61 6c 20 64 65 63 6c 61 72 61 74 69 6f 6e tual declaration 00022bd0: 3a 20 6e 61 6d 65 73 70 61 63 65 20 58 20 7b 20 : namespace X { 00022be0: 2e 2e 2e 20 7d 0a 20 20 20 20 20 2a 20 32 2e 20 ... }. * 2. 00022bf0: 41 20 4a 61 76 61 73 63 72 69 70 74 20 64 65 63 A Javascript dec 00022c00: 6c 61 72 61 74 69 6f 6e 2c 20 77 68 69 63 68 20 laration, which 00022c10: 69 73 3a 0a 20 20 20 20 20 2a 20 20 20 20 41 6e is:. * An 00022c20: 20 69 64 65 6e 74 69 66 69 65 72 20 69 6e 20 61 identifier in a 00022c30: 20 6e 65 73 74 65 64 20 70 72 6f 70 65 72 74 79 nested property 00022c40: 20 61 63 63 65 73 73 20 65 78 70 72 65 73 73 69 access expressi 00022c50: 6f 6e 3a 20 59 20 69 6e 20 60 58 2e 59 2e 5a 20 on: Y in `X.Y.Z 00022c60: 3d 20 7b 20 2e 2e 2e 20 7d 60 0a 20 20 20 20 20 = { ... }`. 00022c70: 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 */. function 00022c80: 69 73 45 66 66 65 63 74 69 76 65 4d 6f 64 75 6c isEffectiveModul 00022c90: 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 eDeclaration(nod 00022ca0: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 e) {. ret 00022cb0: 75 72 6e 20 74 73 2e 69 73 4d 6f 64 75 6c 65 44 urn ts.isModuleD 00022cc0: 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 eclaration(node) 00022cd0: 20 7c 7c 20 74 73 2e 69 73 49 64 65 6e 74 69 66 || ts.isIdentif 00022ce0: 69 65 72 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d ier(node);. } 00022cf0: 0a 20 20 20 20 74 73 2e 69 73 45 66 66 65 63 74 . ts.isEffect 00022d00: 69 76 65 4d 6f 64 75 6c 65 44 65 63 6c 61 72 61 iveModuleDeclara 00022d10: 74 69 6f 6e 20 3d 20 69 73 45 66 66 65 63 74 69 tion = isEffecti 00022d20: 76 65 4d 6f 64 75 6c 65 44 65 63 6c 61 72 61 74 veModuleDeclarat 00022d30: 69 6f 6e 3b 0a 20 20 20 20 2f 2a 2a 20 47 69 76 ion;. /** Giv 00022d40: 65 6e 20 61 20 73 79 6d 62 6f 6c 20 66 6f 72 20 en a symbol for 00022d50: 61 20 6d 6f 64 75 6c 65 2c 20 63 68 65 63 6b 73 a module, checks 00022d60: 20 74 68 61 74 20 69 74 20 69 73 20 61 20 73 68 that it is a sh 00022d70: 6f 72 74 68 61 6e 64 20 61 6d 62 69 65 6e 74 20 orthand ambient 00022d80: 6d 6f 64 75 6c 65 2e 20 2a 2f 0a 20 20 20 20 66 module. */. f 00022d90: 75 6e 63 74 69 6f 6e 20 69 73 53 68 6f 72 74 68 unction isShorth 00022da0: 61 6e 64 41 6d 62 69 65 6e 74 4d 6f 64 75 6c 65 andAmbientModule 00022db0: 53 79 6d 62 6f 6c 28 6d 6f 64 75 6c 65 53 79 6d Symbol(moduleSym 00022dc0: 62 6f 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 72 bol) {. r 00022dd0: 65 74 75 72 6e 20 69 73 53 68 6f 72 74 68 61 6e eturn isShorthan 00022de0: 64 41 6d 62 69 65 6e 74 4d 6f 64 75 6c 65 28 6d dAmbientModule(m 00022df0: 6f 64 75 6c 65 53 79 6d 62 6f 6c 2e 76 61 6c 75 oduleSymbol.valu 00022e00: 65 44 65 63 6c 61 72 61 74 69 6f 6e 29 3b 0a 20 eDeclaration);. 00022e10: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 53 68 }. ts.isSh 00022e20: 6f 72 74 68 61 6e 64 41 6d 62 69 65 6e 74 4d 6f orthandAmbientMo 00022e30: 64 75 6c 65 53 79 6d 62 6f 6c 20 3d 20 69 73 53 duleSymbol = isS 00022e40: 68 6f 72 74 68 61 6e 64 41 6d 62 69 65 6e 74 4d horthandAmbientM 00022e50: 6f 64 75 6c 65 53 79 6d 62 6f 6c 3b 0a 20 20 20 oduleSymbol;. 00022e60: 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 68 6f 72 function isShor 00022e70: 74 68 61 6e 64 41 6d 62 69 65 6e 74 4d 6f 64 75 thandAmbientModu 00022e80: 6c 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 le(node) {. 00022e90: 20 20 20 2f 2f 20 54 68 65 20 6f 6e 6c 79 20 6b // The only k 00022ea0: 69 6e 64 20 6f 66 20 6d 6f 64 75 6c 65 20 74 68 ind of module th 00022eb0: 61 74 20 63 61 6e 20 62 65 20 6d 69 73 73 69 6e at can be missin 00022ec0: 67 20 61 20 62 6f 64 79 20 69 73 20 61 20 73 68 g a body is a sh 00022ed0: 6f 72 74 68 61 6e 64 20 61 6d 62 69 65 6e 74 20 orthand ambient 00022ee0: 6d 6f 64 75 6c 65 2e 0a 20 20 20 20 20 20 20 20 module.. 00022ef0: 72 65 74 75 72 6e 20 21 21 6e 6f 64 65 20 26 26 return !!node && 00022f00: 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 node.kind === 2 00022f10: 36 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 61 /* SyntaxKind 00022f20: 2e 4d 6f 64 75 6c 65 44 65 63 6c 61 72 61 74 69 .ModuleDeclarati 00022f30: 6f 6e 20 2a 2f 20 26 26 20 28 21 6e 6f 64 65 2e on */ && (!node. 00022f40: 62 6f 64 79 29 3b 0a 20 20 20 20 7d 0a 20 20 20 body);. }. 00022f50: 20 66 75 6e 63 74 69 6f 6e 20 69 73 42 6c 6f 63 function isBloc 00022f60: 6b 53 63 6f 70 65 64 43 6f 6e 74 61 69 6e 65 72 kScopedContainer 00022f70: 54 6f 70 4c 65 76 65 6c 28 6e 6f 64 65 29 20 7b TopLevel(node) { 00022f80: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 00022f90: 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 33 30 node.kind === 30 00022fa0: 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 5 /* SyntaxKind. 00022fb0: 53 6f 75 72 63 65 46 69 6c 65 20 2a 2f 20 7c 7c SourceFile */ || 00022fc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 . nod 00022fd0: 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 36 31 20 2f e.kind === 261 / 00022fe0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 * SyntaxKind.Mod 00022ff0: 75 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a uleDeclaration * 00023000: 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 / ||. 00023010: 20 74 73 2e 69 73 46 75 6e 63 74 69 6f 6e 4c 69 ts.isFunctionLi 00023020: 6b 65 4f 72 43 6c 61 73 73 53 74 61 74 69 63 42 keOrClassStaticB 00023030: 6c 6f 63 6b 44 65 63 6c 61 72 61 74 69 6f 6e 28 lockDeclaration( 00023040: 6e 6f 64 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 node);. }. 00023050: 20 74 73 2e 69 73 42 6c 6f 63 6b 53 63 6f 70 65 ts.isBlockScope 00023060: 64 43 6f 6e 74 61 69 6e 65 72 54 6f 70 4c 65 76 dContainerTopLev 00023070: 65 6c 20 3d 20 69 73 42 6c 6f 63 6b 53 63 6f 70 el = isBlockScop 00023080: 65 64 43 6f 6e 74 61 69 6e 65 72 54 6f 70 4c 65 edContainerTopLe 00023090: 76 65 6c 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f vel;. functio 000230a0: 6e 20 69 73 47 6c 6f 62 61 6c 53 63 6f 70 65 41 n isGlobalScopeA 000230b0: 75 67 6d 65 6e 74 61 74 69 6f 6e 28 6d 6f 64 75 ugmentation(modu 000230c0: 6c 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 le) {. re 000230d0: 74 75 72 6e 20 21 21 28 6d 6f 64 75 6c 65 2e 66 turn !!(module.f 000230e0: 6c 61 67 73 20 26 20 31 30 32 34 20 2f 2a 20 4e lags & 1024 /* N 000230f0: 6f 64 65 46 6c 61 67 73 2e 47 6c 6f 62 61 6c 41 odeFlags.GlobalA 00023100: 75 67 6d 65 6e 74 61 74 69 6f 6e 20 2a 2f 29 3b ugmentation */); 00023110: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00023120: 47 6c 6f 62 61 6c 53 63 6f 70 65 41 75 67 6d 65 GlobalScopeAugme 00023130: 6e 74 61 74 69 6f 6e 20 3d 20 69 73 47 6c 6f 62 ntation = isGlob 00023140: 61 6c 53 63 6f 70 65 41 75 67 6d 65 6e 74 61 74 alScopeAugmentat 00023150: 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ion;. functio 00023160: 6e 20 69 73 45 78 74 65 72 6e 61 6c 4d 6f 64 75 n isExternalModu 00023170: 6c 65 41 75 67 6d 65 6e 74 61 74 69 6f 6e 28 6e leAugmentation(n 00023180: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 00023190: 65 74 75 72 6e 20 69 73 41 6d 62 69 65 6e 74 4d eturn isAmbientM 000231a0: 6f 64 75 6c 65 28 6e 6f 64 65 29 20 26 26 20 69 odule(node) && i 000231b0: 73 4d 6f 64 75 6c 65 41 75 67 6d 65 6e 74 61 74 sModuleAugmentat 000231c0: 69 6f 6e 45 78 74 65 72 6e 61 6c 28 6e 6f 64 65 ionExternal(node 000231d0: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 000231e0: 69 73 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 isExternalModule 000231f0: 41 75 67 6d 65 6e 74 61 74 69 6f 6e 20 3d 20 69 Augmentation = i 00023200: 73 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 41 sExternalModuleA 00023210: 75 67 6d 65 6e 74 61 74 69 6f 6e 3b 0a 20 20 20 ugmentation;. 00023220: 20 66 75 6e 63 74 69 6f 6e 20 69 73 4d 6f 64 75 function isModu 00023230: 6c 65 41 75 67 6d 65 6e 74 61 74 69 6f 6e 45 78 leAugmentationEx 00023240: 74 65 72 6e 61 6c 28 6e 6f 64 65 29 20 7b 0a 20 ternal(node) {. 00023250: 20 20 20 20 20 20 20 2f 2f 20 65 78 74 65 72 6e // extern 00023260: 61 6c 20 6d 6f 64 75 6c 65 20 61 75 67 6d 65 6e al module augmen 00023270: 74 61 74 69 6f 6e 20 69 73 20 61 20 61 6d 62 69 tation is a ambi 00023280: 65 6e 74 20 6d 6f 64 75 6c 65 20 64 65 63 6c 61 ent module decla 00023290: 72 61 74 69 6f 6e 20 74 68 61 74 20 69 73 20 65 ration that is e 000232a0: 69 74 68 65 72 3a 0a 20 20 20 20 20 20 20 20 2f ither:. / 000232b0: 2f 20 2d 20 64 65 66 69 6e 65 64 20 69 6e 20 74 / - defined in t 000232c0: 68 65 20 74 6f 70 20 6c 65 76 65 6c 20 73 63 6f he top level sco 000232d0: 70 65 20 61 6e 64 20 73 6f 75 72 63 65 20 66 69 pe and source fi 000232e0: 6c 65 20 69 73 20 61 6e 20 65 78 74 65 72 6e 61 le is an externa 000232f0: 6c 20 6d 6f 64 75 6c 65 0a 20 20 20 20 20 20 20 l module. 00023300: 20 2f 2f 20 2d 20 64 65 66 69 6e 65 64 20 69 6e // - defined in 00023310: 73 69 64 65 20 61 6d 62 69 65 6e 74 20 6d 6f 64 side ambient mod 00023320: 75 6c 65 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 ule declaration 00023330: 6c 6f 63 61 74 65 64 20 69 6e 20 74 68 65 20 74 located in the t 00023340: 6f 70 20 6c 65 76 65 6c 20 73 63 6f 70 65 20 61 op level scope a 00023350: 6e 64 20 73 6f 75 72 63 65 20 66 69 6c 65 20 6e nd source file n 00023360: 6f 74 20 61 6e 20 65 78 74 65 72 6e 61 6c 20 6d ot an external m 00023370: 6f 64 75 6c 65 0a 20 20 20 20 20 20 20 20 73 77 odule. sw 00023380: 69 74 63 68 20 28 6e 6f 64 65 2e 70 61 72 65 6e itch (node.paren 00023390: 74 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 t.kind) {. 000233a0: 20 20 20 20 20 20 63 61 73 65 20 33 30 35 20 2f case 305 / 000233b0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 6f 75 * SyntaxKind.Sou 000233c0: 72 63 65 46 69 6c 65 20 2a 2f 3a 0a 20 20 20 20 rceFile */:. 000233d0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 000233e0: 72 6e 20 74 73 2e 69 73 45 78 74 65 72 6e 61 6c rn ts.isExternal 000233f0: 4d 6f 64 75 6c 65 28 6e 6f 64 65 2e 70 61 72 65 Module(node.pare 00023400: 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 nt);. 00023410: 20 63 61 73 65 20 32 36 32 20 2f 2a 20 53 79 6e case 262 /* Syn 00023420: 74 61 78 4b 69 6e 64 2e 4d 6f 64 75 6c 65 42 6c taxKind.ModuleBl 00023430: 6f 63 6b 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ock */:. 00023440: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 return i 00023450: 73 41 6d 62 69 65 6e 74 4d 6f 64 75 6c 65 28 6e sAmbientModule(n 00023460: 6f 64 65 2e 70 61 72 65 6e 74 2e 70 61 72 65 6e ode.parent.paren 00023470: 74 29 20 26 26 20 74 73 2e 69 73 53 6f 75 72 63 t) && ts.isSourc 00023480: 65 46 69 6c 65 28 6e 6f 64 65 2e 70 61 72 65 6e eFile(node.paren 00023490: 74 2e 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 29 t.parent.parent) 000234a0: 20 26 26 20 21 74 73 2e 69 73 45 78 74 65 72 6e && !ts.isExtern 000234b0: 61 6c 4d 6f 64 75 6c 65 28 6e 6f 64 65 2e 70 61 alModule(node.pa 000234c0: 72 65 6e 74 2e 70 61 72 65 6e 74 2e 70 61 72 65 rent.parent.pare 000234d0: 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 nt);. }. 000234e0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 return fa 000234f0: 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 lse;. }. t 00023500: 73 2e 69 73 4d 6f 64 75 6c 65 41 75 67 6d 65 6e s.isModuleAugmen 00023510: 74 61 74 69 6f 6e 45 78 74 65 72 6e 61 6c 20 3d tationExternal = 00023520: 20 69 73 4d 6f 64 75 6c 65 41 75 67 6d 65 6e 74 isModuleAugment 00023530: 61 74 69 6f 6e 45 78 74 65 72 6e 61 6c 3b 0a 20 ationExternal;. 00023540: 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4e function getN 00023550: 6f 6e 41 75 67 6d 65 6e 74 61 74 69 6f 6e 44 65 onAugmentationDe 00023560: 63 6c 61 72 61 74 69 6f 6e 28 73 79 6d 62 6f 6c claration(symbol 00023570: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 00023580: 5f 61 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 _a;. retu 00023590: 72 6e 20 28 5f 61 20 3d 20 73 79 6d 62 6f 6c 2e rn (_a = symbol. 000235a0: 64 65 63 6c 61 72 61 74 69 6f 6e 73 29 20 3d 3d declarations) == 000235b0: 3d 20 6e 75 6c 6c 20 7c 7c 20 5f 61 20 3d 3d 3d = null || _a === 000235c0: 20 76 6f 69 64 20 30 20 3f 20 76 6f 69 64 20 30 void 0 ? void 0 000235d0: 20 3a 20 5f 61 2e 66 69 6e 64 28 66 75 6e 63 74 : _a.find(funct 000235e0: 69 6f 6e 20 28 64 29 20 7b 20 72 65 74 75 72 6e ion (d) { return 000235f0: 20 21 69 73 45 78 74 65 72 6e 61 6c 4d 6f 64 75 !isExternalModu 00023600: 6c 65 41 75 67 6d 65 6e 74 61 74 69 6f 6e 28 64 leAugmentation(d 00023610: 29 20 26 26 20 21 28 74 73 2e 69 73 4d 6f 64 75 ) && !(ts.isModu 00023620: 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 64 29 leDeclaration(d) 00023630: 20 26 26 20 69 73 47 6c 6f 62 61 6c 53 63 6f 70 && isGlobalScop 00023640: 65 41 75 67 6d 65 6e 74 61 74 69 6f 6e 28 64 29 eAugmentation(d) 00023650: 29 3b 20 7d 29 3b 0a 20 20 20 20 7d 0a 20 20 20 ); });. }. 00023660: 20 74 73 2e 67 65 74 4e 6f 6e 41 75 67 6d 65 6e ts.getNonAugmen 00023670: 74 61 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 6f tationDeclaratio 00023680: 6e 20 3d 20 67 65 74 4e 6f 6e 41 75 67 6d 65 6e n = getNonAugmen 00023690: 74 61 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 6f tationDeclaratio 000236a0: 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 n;. function 000236b0: 69 73 43 6f 6d 6d 6f 6e 4a 53 43 6f 6e 74 61 69 isCommonJSContai 000236c0: 6e 69 6e 67 4d 6f 64 75 6c 65 4b 69 6e 64 28 6b ningModuleKind(k 000236d0: 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ind) {. r 000236e0: 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 74 eturn kind === t 000236f0: 73 2e 4d 6f 64 75 6c 65 4b 69 6e 64 2e 43 6f 6d s.ModuleKind.Com 00023700: 6d 6f 6e 4a 53 20 7c 7c 20 6b 69 6e 64 20 3d 3d monJS || kind == 00023710: 3d 20 74 73 2e 4d 6f 64 75 6c 65 4b 69 6e 64 2e = ts.ModuleKind. 00023720: 4e 6f 64 65 31 36 20 7c 7c 20 6b 69 6e 64 20 3d Node16 || kind = 00023730: 3d 3d 20 74 73 2e 4d 6f 64 75 6c 65 4b 69 6e 64 == ts.ModuleKind 00023740: 2e 4e 6f 64 65 4e 65 78 74 3b 0a 20 20 20 20 7d .NodeNext;. } 00023750: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 . function is 00023760: 45 66 66 65 63 74 69 76 65 45 78 74 65 72 6e 61 EffectiveExterna 00023770: 6c 4d 6f 64 75 6c 65 28 6e 6f 64 65 2c 20 63 6f lModule(node, co 00023780: 6d 70 69 6c 65 72 4f 70 74 69 6f 6e 73 29 20 7b mpilerOptions) { 00023790: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 000237a0: 74 73 2e 69 73 45 78 74 65 72 6e 61 6c 4d 6f 64 ts.isExternalMod 000237b0: 75 6c 65 28 6e 6f 64 65 29 20 7c 7c 20 63 6f 6d ule(node) || com 000237c0: 70 69 6c 65 72 4f 70 74 69 6f 6e 73 2e 69 73 6f pilerOptions.iso 000237d0: 6c 61 74 65 64 4d 6f 64 75 6c 65 73 20 7c 7c 20 latedModules || 000237e0: 28 69 73 43 6f 6d 6d 6f 6e 4a 53 43 6f 6e 74 61 (isCommonJSConta 000237f0: 69 6e 69 6e 67 4d 6f 64 75 6c 65 4b 69 6e 64 28 iningModuleKind( 00023800: 67 65 74 45 6d 69 74 4d 6f 64 75 6c 65 4b 69 6e getEmitModuleKin 00023810: 64 28 63 6f 6d 70 69 6c 65 72 4f 70 74 69 6f 6e d(compilerOption 00023820: 73 29 29 20 26 26 20 21 21 6e 6f 64 65 2e 63 6f s)) && !!node.co 00023830: 6d 6d 6f 6e 4a 73 4d 6f 64 75 6c 65 49 6e 64 69 mmonJsModuleIndi 00023840: 63 61 74 6f 72 29 3b 0a 20 20 20 20 7d 0a 20 20 cator);. }. 00023850: 20 20 74 73 2e 69 73 45 66 66 65 63 74 69 76 65 ts.isEffective 00023860: 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 20 3d ExternalModule = 00023870: 20 69 73 45 66 66 65 63 74 69 76 65 45 78 74 65 isEffectiveExte 00023880: 72 6e 61 6c 4d 6f 64 75 6c 65 3b 0a 20 20 20 20 rnalModule;. 00023890: 2f 2a 2a 0a 20 20 20 20 20 2a 20 52 65 74 75 72 /**. * Retur 000238a0: 6e 73 20 77 68 65 74 68 65 72 20 74 68 65 20 73 ns whether the s 000238b0: 6f 75 72 63 65 20 66 69 6c 65 20 77 69 6c 6c 20 ource file will 000238c0: 62 65 20 74 72 65 61 74 65 64 20 61 73 20 69 66 be treated as if 000238d0: 20 69 74 20 77 65 72 65 20 69 6e 20 73 74 72 69 it were in stri 000238e0: 63 74 20 6d 6f 64 65 20 61 74 20 72 75 6e 74 69 ct mode at runti 000238f0: 6d 65 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 me.. */. 00023900: 66 75 6e 63 74 69 6f 6e 20 69 73 45 66 66 65 63 function isEffec 00023910: 74 69 76 65 53 74 72 69 63 74 4d 6f 64 65 53 6f tiveStrictModeSo 00023920: 75 72 63 65 46 69 6c 65 28 6e 6f 64 65 2c 20 63 urceFile(node, c 00023930: 6f 6d 70 69 6c 65 72 4f 70 74 69 6f 6e 73 29 20 ompilerOptions) 00023940: 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 57 65 20 {. // We 00023950: 63 61 6e 20 6f 6e 6c 79 20 76 65 72 69 66 79 20 can only verify 00023960: 73 74 72 69 63 74 20 6d 6f 64 65 20 66 6f 72 20 strict mode for 00023970: 4a 53 2f 54 53 20 66 69 6c 65 73 0a 20 20 20 20 JS/TS files. 00023980: 20 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 65 switch (node 00023990: 2e 73 63 72 69 70 74 4b 69 6e 64 29 20 7b 0a 20 .scriptKind) {. 000239a0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 000239b0: 31 20 2f 2a 20 53 63 72 69 70 74 4b 69 6e 64 2e 1 /* ScriptKind. 000239c0: 4a 53 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 JS */:. 000239d0: 20 20 20 63 61 73 65 20 33 20 2f 2a 20 53 63 72 case 3 /* Scr 000239e0: 69 70 74 4b 69 6e 64 2e 54 53 20 2a 2f 3a 0a 20 iptKind.TS */:. 000239f0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00023a00: 32 20 2f 2a 20 53 63 72 69 70 74 4b 69 6e 64 2e 2 /* ScriptKind. 00023a10: 4a 53 58 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 JSX */:. 00023a20: 20 20 20 20 63 61 73 65 20 34 20 2f 2a 20 53 63 case 4 /* Sc 00023a30: 72 69 70 74 4b 69 6e 64 2e 54 53 58 20 2a 2f 3a riptKind.TSX */: 00023a40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00023a50: 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 break;. 00023a60: 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 default:. 00023a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00023a80: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 urn false;. 00023a90: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 2f 2f 20 }. // 00023aa0: 53 74 72 69 63 74 20 6d 6f 64 65 20 64 6f 65 73 Strict mode does 00023ab0: 20 6e 6f 74 20 6d 61 74 74 65 72 20 66 6f 72 20 not matter for 00023ac0: 64 65 63 6c 61 72 61 74 69 6f 6e 20 66 69 6c 65 declaration file 00023ad0: 73 2e 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e s.. if (n 00023ae0: 6f 64 65 2e 69 73 44 65 63 6c 61 72 61 74 69 6f ode.isDeclaratio 00023af0: 6e 46 69 6c 65 29 20 7b 0a 20 20 20 20 20 20 20 nFile) {. 00023b00: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 return fals 00023b10: 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 e;. }. 00023b20: 20 20 20 20 20 2f 2f 20 49 66 20 60 61 6c 77 61 // If `alwa 00023b30: 79 73 53 74 72 69 63 74 60 20 69 73 20 73 65 74 ysStrict` is set 00023b40: 2c 20 74 68 65 6e 20 74 72 65 61 74 20 74 68 65 , then treat the 00023b50: 20 66 69 6c 65 20 61 73 20 73 74 72 69 63 74 2e file as strict. 00023b60: 0a 20 20 20 20 20 20 20 20 69 66 20 28 67 65 74 . if (get 00023b70: 53 74 72 69 63 74 4f 70 74 69 6f 6e 56 61 6c 75 StrictOptionValu 00023b80: 65 28 63 6f 6d 70 69 6c 65 72 4f 70 74 69 6f 6e e(compilerOption 00023b90: 73 2c 20 22 61 6c 77 61 79 73 53 74 72 69 63 74 s, "alwaysStrict 00023ba0: 22 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 ")) {. 00023bb0: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 return true;. 00023bc0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00023bd0: 20 2f 2f 20 53 74 61 72 74 69 6e 67 20 77 69 74 // Starting wit 00023be0: 68 20 61 20 22 75 73 65 20 73 74 72 69 63 74 22 h a "use strict" 00023bf0: 20 64 69 72 65 63 74 69 76 65 20 69 6e 64 69 63 directive indic 00023c00: 61 74 65 73 20 74 68 65 20 66 69 6c 65 20 69 73 ates the file is 00023c10: 20 73 74 72 69 63 74 2e 0a 20 20 20 20 20 20 20 strict.. 00023c20: 20 69 66 20 28 74 73 2e 73 74 61 72 74 73 57 69 if (ts.startsWi 00023c30: 74 68 55 73 65 53 74 72 69 63 74 28 6e 6f 64 65 thUseStrict(node 00023c40: 2e 73 74 61 74 65 6d 65 6e 74 73 29 29 20 7b 0a .statements)) {. 00023c50: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00023c60: 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 rn true;. 00023c70: 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 }. if (t 00023c80: 73 2e 69 73 45 78 74 65 72 6e 61 6c 4d 6f 64 75 s.isExternalModu 00023c90: 6c 65 28 6e 6f 64 65 29 20 7c 7c 20 63 6f 6d 70 le(node) || comp 00023ca0: 69 6c 65 72 4f 70 74 69 6f 6e 73 2e 69 73 6f 6c ilerOptions.isol 00023cb0: 61 74 65 64 4d 6f 64 75 6c 65 73 29 20 7b 0a 20 atedModules) {. 00023cc0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 45 43 // EC 00023cd0: 4d 41 53 63 72 69 70 74 20 4d 6f 64 75 6c 65 73 MAScript Modules 00023ce0: 20 61 72 65 20 61 6c 77 61 79 73 20 73 74 72 69 are always stri 00023cf0: 63 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 ct.. 00023d00: 69 66 20 28 67 65 74 45 6d 69 74 4d 6f 64 75 6c if (getEmitModul 00023d10: 65 4b 69 6e 64 28 63 6f 6d 70 69 6c 65 72 4f 70 eKind(compilerOp 00023d20: 74 69 6f 6e 73 29 20 3e 3d 20 74 73 2e 4d 6f 64 tions) >= ts.Mod 00023d30: 75 6c 65 4b 69 6e 64 2e 45 53 32 30 31 35 29 20 uleKind.ES2015) 00023d40: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 00023d50: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 return true;. 00023d60: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 00023d70: 20 20 20 20 20 20 20 20 20 2f 2f 20 4f 74 68 65 // Othe 00023d80: 72 20 6d 6f 64 75 6c 65 73 20 61 72 65 20 73 74 r modules are st 00023d90: 72 69 63 74 20 75 6e 6c 65 73 73 20 6f 74 68 65 rict unless othe 00023da0: 72 77 69 73 65 20 73 70 65 63 69 66 69 65 64 2e rwise specified. 00023db0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret 00023dc0: 75 72 6e 20 21 63 6f 6d 70 69 6c 65 72 4f 70 74 urn !compilerOpt 00023dd0: 69 6f 6e 73 2e 6e 6f 49 6d 70 6c 69 63 69 74 55 ions.noImplicitU 00023de0: 73 65 53 74 72 69 63 74 3b 0a 20 20 20 20 20 20 seStrict;. 00023df0: 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 }. retu 00023e00: 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a rn false;. }. 00023e10: 20 20 20 20 74 73 2e 69 73 45 66 66 65 63 74 69 ts.isEffecti 00023e20: 76 65 53 74 72 69 63 74 4d 6f 64 65 53 6f 75 72 veStrictModeSour 00023e30: 63 65 46 69 6c 65 20 3d 20 69 73 45 66 66 65 63 ceFile = isEffec 00023e40: 74 69 76 65 53 74 72 69 63 74 4d 6f 64 65 53 6f tiveStrictModeSo 00023e50: 75 72 63 65 46 69 6c 65 3b 0a 20 20 20 20 66 75 urceFile;. fu 00023e60: 6e 63 74 69 6f 6e 20 69 73 42 6c 6f 63 6b 53 63 nction isBlockSc 00023e70: 6f 70 65 28 6e 6f 64 65 2c 20 70 61 72 65 6e 74 ope(node, parent 00023e80: 4e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 Node) {. 00023e90: 73 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e switch (node.kin 00023ea0: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 d) {. 00023eb0: 20 63 61 73 65 20 33 30 35 20 2f 2a 20 53 79 6e case 305 /* Syn 00023ec0: 74 61 78 4b 69 6e 64 2e 53 6f 75 72 63 65 46 69 taxKind.SourceFi 00023ed0: 6c 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 le */:. 00023ee0: 20 20 20 63 61 73 65 20 32 36 33 20 2f 2a 20 53 case 263 /* S 00023ef0: 79 6e 74 61 78 4b 69 6e 64 2e 43 61 73 65 42 6c yntaxKind.CaseBl 00023f00: 6f 63 6b 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ock */:. 00023f10: 20 20 20 20 63 61 73 65 20 32 39 32 20 2f 2a 20 case 292 /* 00023f20: 53 79 6e 74 61 78 4b 69 6e 64 2e 43 61 74 63 68 SyntaxKind.Catch 00023f30: 43 6c 61 75 73 65 20 2a 2f 3a 0a 20 20 20 20 20 Clause */:. 00023f40: 20 20 20 20 20 20 20 63 61 73 65 20 32 36 31 20 case 261 00023f50: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 6f /* SyntaxKind.Mo 00023f60: 64 75 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 duleDeclaration 00023f70: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00023f80: 63 61 73 65 20 32 34 32 20 2f 2a 20 53 79 6e 74 case 242 /* Synt 00023f90: 61 78 4b 69 6e 64 2e 46 6f 72 53 74 61 74 65 6d axKind.ForStatem 00023fa0: 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ent */:. 00023fb0: 20 20 20 20 63 61 73 65 20 32 34 33 20 2f 2a 20 case 243 /* 00023fc0: 53 79 6e 74 61 78 4b 69 6e 64 2e 46 6f 72 49 6e SyntaxKind.ForIn 00023fd0: 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 Statement */:. 00023fe0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 00023ff0: 34 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 44 /* SyntaxKind 00024000: 2e 46 6f 72 4f 66 53 74 61 74 65 6d 65 6e 74 20 .ForOfStatement 00024010: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00024020: 63 61 73 65 20 31 37 31 20 2f 2a 20 53 79 6e 74 case 171 /* Synt 00024030: 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 72 75 63 74 axKind.Construct 00024040: 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 or */:. 00024050: 20 20 20 63 61 73 65 20 31 36 39 20 2f 2a 20 53 case 169 /* S 00024060: 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 74 68 6f 64 yntaxKind.Method 00024070: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a Declaration */:. 00024080: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00024090: 20 31 37 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 172 /* SyntaxKi 000240a0: 6e 64 2e 47 65 74 41 63 63 65 73 73 6f 72 20 2a nd.GetAccessor * 000240b0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 000240c0: 61 73 65 20 31 37 33 20 2f 2a 20 53 79 6e 74 61 ase 173 /* Synta 000240d0: 78 4b 69 6e 64 2e 53 65 74 41 63 63 65 73 73 6f xKind.SetAccesso 000240e0: 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 r */:. 000240f0: 20 20 63 61 73 65 20 32 35 36 20 2f 2a 20 53 79 case 256 /* Sy 00024100: 6e 74 61 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f ntaxKind.Functio 00024110: 6e 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a nDeclaration */: 00024120: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00024130: 65 20 32 31 33 20 2f 2a 20 53 79 6e 74 61 78 4b e 213 /* SyntaxK 00024140: 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 45 78 70 72 ind.FunctionExpr 00024150: 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ession */:. 00024160: 20 20 20 20 20 20 20 63 61 73 65 20 32 31 34 20 case 214 00024170: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 72 /* SyntaxKind.Ar 00024180: 72 6f 77 46 75 6e 63 74 69 6f 6e 20 2a 2f 3a 0a rowFunction */:. 00024190: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 000241a0: 20 31 36 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 167 /* SyntaxKi 000241b0: 6e 64 2e 50 72 6f 70 65 72 74 79 44 65 63 6c 61 nd.PropertyDecla 000241c0: 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ration */:. 000241d0: 20 20 20 20 20 20 20 63 61 73 65 20 31 37 30 20 case 170 000241e0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6c /* SyntaxKind.Cl 000241f0: 61 73 73 53 74 61 74 69 63 42 6c 6f 63 6b 44 65 assStaticBlockDe 00024200: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 00024210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00024220: 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 turn true;. 00024230: 20 20 20 20 20 20 20 63 61 73 65 20 32 33 35 20 case 235 00024240: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 6c /* SyntaxKind.Bl 00024250: 6f 63 6b 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ock */:. 00024260: 20 20 20 20 20 20 20 20 2f 2f 20 66 75 6e 63 74 // funct 00024270: 69 6f 6e 20 62 6c 6f 63 6b 20 69 73 20 6e 6f 74 ion block is not 00024280: 20 63 6f 6e 73 69 64 65 72 65 64 20 62 6c 6f 63 considered bloc 00024290: 6b 2d 73 63 6f 70 65 20 63 6f 6e 74 61 69 6e 65 k-scope containe 000242a0: 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r. 000242b0: 20 20 2f 2f 20 73 65 65 20 63 6f 6d 6d 65 6e 74 // see comment 000242c0: 20 69 6e 20 62 69 6e 64 65 72 2e 74 73 3a 20 62 in binder.ts: b 000242d0: 69 6e 64 28 2e 2e 2e 29 2c 20 63 61 73 65 20 66 ind(...), case f 000242e0: 6f 72 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 6c or SyntaxKind.Bl 000242f0: 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ock. 00024300: 20 20 20 20 72 65 74 75 72 6e 20 21 74 73 2e 69 return !ts.i 00024310: 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 4f 72 43 sFunctionLikeOrC 00024320: 6c 61 73 73 53 74 61 74 69 63 42 6c 6f 63 6b 44 lassStaticBlockD 00024330: 65 63 6c 61 72 61 74 69 6f 6e 28 70 61 72 65 6e eclaration(paren 00024340: 74 4e 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 20 tNode);. 00024350: 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e }. return 00024360: 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 20 false;. }. 00024370: 20 20 74 73 2e 69 73 42 6c 6f 63 6b 53 63 6f 70 ts.isBlockScop 00024380: 65 20 3d 20 69 73 42 6c 6f 63 6b 53 63 6f 70 65 e = isBlockScope 00024390: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 000243a0: 73 44 65 63 6c 61 72 61 74 69 6f 6e 57 69 74 68 sDeclarationWith 000243b0: 54 79 70 65 50 61 72 61 6d 65 74 65 72 73 28 6e TypeParameters(n 000243c0: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ode) {. s 000243d0: 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 witch (node.kind 000243e0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 000243f0: 63 61 73 65 20 33 33 38 20 2f 2a 20 53 79 6e 74 case 338 /* Synt 00024400: 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 43 61 6c 6c axKind.JSDocCall 00024410: 62 61 63 6b 54 61 67 20 2a 2f 3a 0a 20 20 20 20 backTag */:. 00024420: 20 20 20 20 20 20 20 20 63 61 73 65 20 33 34 35 case 345 00024430: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a /* SyntaxKind.J 00024440: 53 44 6f 63 54 79 70 65 64 65 66 54 61 67 20 2a SDocTypedefTag * 00024450: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00024460: 61 73 65 20 33 32 33 20 2f 2a 20 53 79 6e 74 61 ase 323 /* Synta 00024470: 78 4b 69 6e 64 2e 4a 53 44 6f 63 53 69 67 6e 61 xKind.JSDocSigna 00024480: 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ture */:. 00024490: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 000244a0: 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 20 20 true;. 000244b0: 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 default:. 000244c0: 20 20 20 20 20 20 20 20 20 20 20 74 73 2e 61 73 ts.as 000244d0: 73 65 72 74 54 79 70 65 28 6e 6f 64 65 29 3b 0a sertType(node);. 000244e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000244f0: 72 65 74 75 72 6e 20 69 73 44 65 63 6c 61 72 61 return isDeclara 00024500: 74 69 6f 6e 57 69 74 68 54 79 70 65 50 61 72 61 tionWithTypePara 00024510: 6d 65 74 65 72 43 68 69 6c 64 72 65 6e 28 6e 6f meterChildren(no 00024520: 64 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 de);. }. 00024530: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 44 65 }. ts.isDe 00024540: 63 6c 61 72 61 74 69 6f 6e 57 69 74 68 54 79 70 clarationWithTyp 00024550: 65 50 61 72 61 6d 65 74 65 72 73 20 3d 20 69 73 eParameters = is 00024560: 44 65 63 6c 61 72 61 74 69 6f 6e 57 69 74 68 54 DeclarationWithT 00024570: 79 70 65 50 61 72 61 6d 65 74 65 72 73 3b 0a 20 ypeParameters;. 00024580: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 44 65 function isDe 00024590: 63 6c 61 72 61 74 69 6f 6e 57 69 74 68 54 79 70 clarationWithTyp 000245a0: 65 50 61 72 61 6d 65 74 65 72 43 68 69 6c 64 72 eParameterChildr 000245b0: 65 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 en(node) {. 000245c0: 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e switch (node. 000245d0: 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 kind) {. 000245e0: 20 20 20 20 63 61 73 65 20 31 37 34 20 2f 2a 20 case 174 /* 000245f0: 53 79 6e 74 61 78 4b 69 6e 64 2e 43 61 6c 6c 53 SyntaxKind.CallS 00024600: 69 67 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 ignature */:. 00024610: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 case 17 00024620: 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 5 /* SyntaxKind. 00024630: 43 6f 6e 73 74 72 75 63 74 53 69 67 6e 61 74 75 ConstructSignatu 00024640: 72 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 re */:. 00024650: 20 20 20 63 61 73 65 20 31 36 38 20 2f 2a 20 53 case 168 /* S 00024660: 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 74 68 6f 64 yntaxKind.Method 00024670: 53 69 67 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 Signature */:. 00024680: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 00024690: 37 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 76 /* SyntaxKind 000246a0: 2e 49 6e 64 65 78 53 69 67 6e 61 74 75 72 65 20 .IndexSignature 000246b0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 000246c0: 63 61 73 65 20 31 37 39 20 2f 2a 20 53 79 6e 74 case 179 /* Synt 000246d0: 61 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 54 axKind.FunctionT 000246e0: 79 70 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ype */:. 000246f0: 20 20 20 20 63 61 73 65 20 31 38 30 20 2f 2a 20 case 180 /* 00024700: 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 SyntaxKind.Const 00024710: 72 75 63 74 6f 72 54 79 70 65 20 2a 2f 3a 0a 20 ructorType */:. 00024720: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00024730: 33 31 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 317 /* SyntaxKin 00024740: 64 2e 4a 53 44 6f 63 46 75 6e 63 74 69 6f 6e 54 d.JSDocFunctionT 00024750: 79 70 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ype */:. 00024760: 20 20 20 20 63 61 73 65 20 32 35 37 20 2f 2a 20 case 257 /* 00024770: 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 SyntaxKind.Class 00024780: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a Declaration */:. 00024790: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 000247a0: 20 32 32 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 226 /* SyntaxKi 000247b0: 6e 64 2e 43 6c 61 73 73 45 78 70 72 65 73 73 69 nd.ClassExpressi 000247c0: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 000247d0: 20 20 20 63 61 73 65 20 32 35 38 20 2f 2a 20 53 case 258 /* S 000247e0: 79 6e 74 61 78 4b 69 6e 64 2e 49 6e 74 65 72 66 yntaxKind.Interf 000247f0: 61 63 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a aceDeclaration * 00024800: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00024810: 61 73 65 20 32 35 39 20 2f 2a 20 53 79 6e 74 61 ase 259 /* Synta 00024820: 78 4b 69 6e 64 2e 54 79 70 65 41 6c 69 61 73 44 xKind.TypeAliasD 00024830: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 00024840: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00024850: 33 34 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 344 /* SyntaxKin 00024860: 64 2e 4a 53 44 6f 63 54 65 6d 70 6c 61 74 65 54 d.JSDocTemplateT 00024870: 61 67 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 ag */:. 00024880: 20 20 20 63 61 73 65 20 32 35 36 20 2f 2a 20 53 case 256 /* S 00024890: 79 6e 74 61 78 4b 69 6e 64 2e 46 75 6e 63 74 69 yntaxKind.Functi 000248a0: 6f 6e 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f onDeclaration */ 000248b0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 000248c0: 73 65 20 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 se 169 /* Syntax 000248d0: 4b 69 6e 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 Kind.MethodDecla 000248e0: 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ration */:. 000248f0: 20 20 20 20 20 20 20 63 61 73 65 20 31 37 31 20 case 171 00024900: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f /* SyntaxKind.Co 00024910: 6e 73 74 72 75 63 74 6f 72 20 2a 2f 3a 0a 20 20 nstructor */:. 00024920: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 00024930: 37 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 72 /* SyntaxKind 00024940: 2e 47 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 3a .GetAccessor */: 00024950: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00024960: 65 20 31 37 33 20 2f 2a 20 53 79 6e 74 61 78 4b e 173 /* SyntaxK 00024970: 69 6e 64 2e 53 65 74 41 63 63 65 73 73 6f 72 20 ind.SetAccessor 00024980: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00024990: 63 61 73 65 20 32 31 33 20 2f 2a 20 53 79 6e 74 case 213 /* Synt 000249a0: 61 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 45 axKind.FunctionE 000249b0: 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 xpression */:. 000249c0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 000249d0: 31 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 14 /* SyntaxKind 000249e0: 2e 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e 20 2a .ArrowFunction * 000249f0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 00024a00: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a return true;. 00024a10: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 defa 00024a20: 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 ult:. 00024a30: 20 20 20 20 20 74 73 2e 61 73 73 65 72 74 54 79 ts.assertTy 00024a40: 70 65 28 6e 6f 64 65 29 3b 0a 20 20 20 20 20 20 pe(node);. 00024a50: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00024a60: 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 false;. 00024a70: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 }. }. ts.i 00024a80: 73 44 65 63 6c 61 72 61 74 69 6f 6e 57 69 74 68 sDeclarationWith 00024a90: 54 79 70 65 50 61 72 61 6d 65 74 65 72 43 68 69 TypeParameterChi 00024aa0: 6c 64 72 65 6e 20 3d 20 69 73 44 65 63 6c 61 72 ldren = isDeclar 00024ab0: 61 74 69 6f 6e 57 69 74 68 54 79 70 65 50 61 72 ationWithTypePar 00024ac0: 61 6d 65 74 65 72 43 68 69 6c 64 72 65 6e 3b 0a ameterChildren;. 00024ad0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 41 function isA 00024ae0: 6e 79 49 6d 70 6f 72 74 53 79 6e 74 61 78 28 6e nyImportSyntax(n 00024af0: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ode) {. s 00024b00: 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 witch (node.kind 00024b10: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 00024b20: 63 61 73 65 20 32 36 36 20 2f 2a 20 53 79 6e 74 case 266 /* Synt 00024b30: 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 44 65 63 axKind.ImportDec 00024b40: 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 laration */:. 00024b50: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 36 case 26 00024b60: 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 5 /* SyntaxKind. 00024b70: 49 6d 70 6f 72 74 45 71 75 61 6c 73 44 65 63 6c ImportEqualsDecl 00024b80: 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 aration */:. 00024b90: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00024ba0: 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 rn true;. 00024bb0: 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 default:. 00024bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00024bd0: 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 turn false;. 00024be0: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 }. }. 00024bf0: 74 73 2e 69 73 41 6e 79 49 6d 70 6f 72 74 53 79 ts.isAnyImportSy 00024c00: 6e 74 61 78 20 3d 20 69 73 41 6e 79 49 6d 70 6f ntax = isAnyImpo 00024c10: 72 74 53 79 6e 74 61 78 3b 0a 20 20 20 20 66 75 rtSyntax;. fu 00024c20: 6e 63 74 69 6f 6e 20 69 73 41 6e 79 49 6d 70 6f nction isAnyImpo 00024c30: 72 74 4f 72 42 61 72 65 4f 72 41 63 63 65 73 73 rtOrBareOrAccess 00024c40: 65 64 52 65 71 75 69 72 65 28 6e 6f 64 65 29 20 edRequire(node) 00024c50: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 00024c60: 20 69 73 41 6e 79 49 6d 70 6f 72 74 53 79 6e 74 isAnyImportSynt 00024c70: 61 78 28 6e 6f 64 65 29 20 7c 7c 20 69 73 56 61 ax(node) || isVa 00024c80: 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f riableDeclaratio 00024c90: 6e 49 6e 69 74 69 61 6c 69 7a 65 64 54 6f 42 61 nInitializedToBa 00024ca0: 72 65 4f 72 41 63 63 65 73 73 65 64 52 65 71 75 reOrAccessedRequ 00024cb0: 69 72 65 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d ire(node);. } 00024cc0: 0a 20 20 20 20 74 73 2e 69 73 41 6e 79 49 6d 70 . ts.isAnyImp 00024cd0: 6f 72 74 4f 72 42 61 72 65 4f 72 41 63 63 65 73 ortOrBareOrAcces 00024ce0: 73 65 64 52 65 71 75 69 72 65 20 3d 20 69 73 41 sedRequire = isA 00024cf0: 6e 79 49 6d 70 6f 72 74 4f 72 42 61 72 65 4f 72 nyImportOrBareOr 00024d00: 41 63 63 65 73 73 65 64 52 65 71 75 69 72 65 3b AccessedRequire; 00024d10: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 . function is 00024d20: 4c 61 74 65 56 69 73 69 62 69 6c 69 74 79 50 61 LateVisibilityPa 00024d30: 69 6e 74 65 64 53 74 61 74 65 6d 65 6e 74 28 6e intedStatement(n 00024d40: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ode) {. s 00024d50: 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 witch (node.kind 00024d60: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 00024d70: 63 61 73 65 20 32 36 36 20 2f 2a 20 53 79 6e 74 case 266 /* Synt 00024d80: 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 44 65 63 axKind.ImportDec 00024d90: 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 laration */:. 00024da0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 36 case 26 00024db0: 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 5 /* SyntaxKind. 00024dc0: 49 6d 70 6f 72 74 45 71 75 61 6c 73 44 65 63 6c ImportEqualsDecl 00024dd0: 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 aration */:. 00024de0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 33 37 case 237 00024df0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 56 /* SyntaxKind.V 00024e00: 61 72 69 61 62 6c 65 53 74 61 74 65 6d 65 6e 74 ariableStatement 00024e10: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00024e20: 20 63 61 73 65 20 32 35 37 20 2f 2a 20 53 79 6e case 257 /* Syn 00024e30: 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 44 65 63 taxKind.ClassDec 00024e40: 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 laration */:. 00024e50: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 35 case 25 00024e60: 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 6 /* SyntaxKind. 00024e70: 46 75 6e 63 74 69 6f 6e 44 65 63 6c 61 72 61 74 FunctionDeclarat 00024e80: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 00024e90: 20 20 20 20 63 61 73 65 20 32 36 31 20 2f 2a 20 case 261 /* 00024ea0: 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 75 6c SyntaxKind.Modul 00024eb0: 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a eDeclaration */: 00024ec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00024ed0: 65 20 32 35 39 20 2f 2a 20 53 79 6e 74 61 78 4b e 259 /* SyntaxK 00024ee0: 69 6e 64 2e 54 79 70 65 41 6c 69 61 73 44 65 63 ind.TypeAliasDec 00024ef0: 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 laration */:. 00024f00: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 35 case 25 00024f10: 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 8 /* SyntaxKind. 00024f20: 49 6e 74 65 72 66 61 63 65 44 65 63 6c 61 72 61 InterfaceDeclara 00024f30: 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 tion */:. 00024f40: 20 20 20 20 20 63 61 73 65 20 32 36 30 20 2f 2a case 260 /* 00024f50: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 6e 75 6d SyntaxKind.Enum 00024f60: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a Declaration */:. 00024f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00024f80: 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 return true;. 00024f90: 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 default 00024fa0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 00024fb0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a return false;. 00024fc0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a }. }. 00024fd0: 20 20 20 20 74 73 2e 69 73 4c 61 74 65 56 69 73 ts.isLateVis 00024fe0: 69 62 69 6c 69 74 79 50 61 69 6e 74 65 64 53 74 ibilityPaintedSt 00024ff0: 61 74 65 6d 65 6e 74 20 3d 20 69 73 4c 61 74 65 atement = isLate 00025000: 56 69 73 69 62 69 6c 69 74 79 50 61 69 6e 74 65 VisibilityPainte 00025010: 64 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 20 20 dStatement;. 00025020: 66 75 6e 63 74 69 6f 6e 20 68 61 73 50 6f 73 73 function hasPoss 00025030: 69 62 6c 65 45 78 74 65 72 6e 61 6c 4d 6f 64 75 ibleExternalModu 00025040: 6c 65 52 65 66 65 72 65 6e 63 65 28 6e 6f 64 65 leReference(node 00025050: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 00025060: 72 6e 20 69 73 41 6e 79 49 6d 70 6f 72 74 4f 72 rn isAnyImportOr 00025070: 52 65 45 78 70 6f 72 74 28 6e 6f 64 65 29 20 7c ReExport(node) | 00025080: 7c 20 74 73 2e 69 73 4d 6f 64 75 6c 65 44 65 63 | ts.isModuleDec 00025090: 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 20 7c laration(node) | 000250a0: 7c 20 74 73 2e 69 73 49 6d 70 6f 72 74 54 79 70 | ts.isImportTyp 000250b0: 65 4e 6f 64 65 28 6e 6f 64 65 29 20 7c 7c 20 69 eNode(node) || i 000250c0: 73 49 6d 70 6f 72 74 43 61 6c 6c 28 6e 6f 64 65 sImportCall(node 000250d0: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 000250e0: 68 61 73 50 6f 73 73 69 62 6c 65 45 78 74 65 72 hasPossibleExter 000250f0: 6e 61 6c 4d 6f 64 75 6c 65 52 65 66 65 72 65 6e nalModuleReferen 00025100: 63 65 20 3d 20 68 61 73 50 6f 73 73 69 62 6c 65 ce = hasPossible 00025110: 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 52 65 ExternalModuleRe 00025120: 66 65 72 65 6e 63 65 3b 0a 20 20 20 20 66 75 6e ference;. fun 00025130: 63 74 69 6f 6e 20 69 73 41 6e 79 49 6d 70 6f 72 ction isAnyImpor 00025140: 74 4f 72 52 65 45 78 70 6f 72 74 28 6e 6f 64 65 tOrReExport(node 00025150: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 00025160: 72 6e 20 69 73 41 6e 79 49 6d 70 6f 72 74 53 79 rn isAnyImportSy 00025170: 6e 74 61 78 28 6e 6f 64 65 29 20 7c 7c 20 74 73 ntax(node) || ts 00025180: 2e 69 73 45 78 70 6f 72 74 44 65 63 6c 61 72 61 .isExportDeclara 00025190: 74 69 6f 6e 28 6e 6f 64 65 29 3b 0a 20 20 20 20 tion(node);. 000251a0: 7d 0a 20 20 20 20 74 73 2e 69 73 41 6e 79 49 6d }. ts.isAnyIm 000251b0: 70 6f 72 74 4f 72 52 65 45 78 70 6f 72 74 20 3d portOrReExport = 000251c0: 20 69 73 41 6e 79 49 6d 70 6f 72 74 4f 72 52 65 isAnyImportOrRe 000251d0: 45 78 70 6f 72 74 3b 0a 20 20 20 20 2f 2f 20 47 Export;. // G 000251e0: 65 74 73 20 74 68 65 20 6e 65 61 72 65 73 74 20 ets the nearest 000251f0: 65 6e 63 6c 6f 73 69 6e 67 20 62 6c 6f 63 6b 20 enclosing block 00025200: 73 63 6f 70 65 20 63 6f 6e 74 61 69 6e 65 72 20 scope container 00025210: 74 68 61 74 20 68 61 73 20 74 68 65 20 70 72 6f that has the pro 00025220: 76 69 64 65 64 20 6e 6f 64 65 0a 20 20 20 20 2f vided node. / 00025230: 2f 20 61 73 20 61 20 64 65 73 63 65 6e 64 61 6e / as a descendan 00025240: 74 2c 20 74 68 61 74 20 69 73 20 6e 6f 74 20 74 t, that is not t 00025250: 68 65 20 70 72 6f 76 69 64 65 64 20 6e 6f 64 65 he provided node 00025260: 2e 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 .. function g 00025270: 65 74 45 6e 63 6c 6f 73 69 6e 67 42 6c 6f 63 6b etEnclosingBlock 00025280: 53 63 6f 70 65 43 6f 6e 74 61 69 6e 65 72 28 6e ScopeContainer(n 00025290: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 000252a0: 65 74 75 72 6e 20 74 73 2e 66 69 6e 64 41 6e 63 eturn ts.findAnc 000252b0: 65 73 74 6f 72 28 6e 6f 64 65 2e 70 61 72 65 6e estor(node.paren 000252c0: 74 2c 20 66 75 6e 63 74 69 6f 6e 20 28 63 75 72 t, function (cur 000252d0: 72 65 6e 74 29 20 7b 20 72 65 74 75 72 6e 20 69 rent) { return i 000252e0: 73 42 6c 6f 63 6b 53 63 6f 70 65 28 63 75 72 72 sBlockScope(curr 000252f0: 65 6e 74 2c 20 63 75 72 72 65 6e 74 2e 70 61 72 ent, current.par 00025300: 65 6e 74 29 3b 20 7d 29 3b 0a 20 20 20 20 7d 0a ent); });. }. 00025310: 20 20 20 20 74 73 2e 67 65 74 45 6e 63 6c 6f 73 ts.getEnclos 00025320: 69 6e 67 42 6c 6f 63 6b 53 63 6f 70 65 43 6f 6e ingBlockScopeCon 00025330: 74 61 69 6e 65 72 20 3d 20 67 65 74 45 6e 63 6c tainer = getEncl 00025340: 6f 73 69 6e 67 42 6c 6f 63 6b 53 63 6f 70 65 43 osingBlockScopeC 00025350: 6f 6e 74 61 69 6e 65 72 3b 0a 20 20 20 20 66 75 ontainer;. fu 00025360: 6e 63 74 69 6f 6e 20 66 6f 72 45 61 63 68 45 6e nction forEachEn 00025370: 63 6c 6f 73 69 6e 67 42 6c 6f 63 6b 53 63 6f 70 closingBlockScop 00025380: 65 43 6f 6e 74 61 69 6e 65 72 28 6e 6f 64 65 2c eContainer(node, 00025390: 20 63 62 29 20 7b 0a 20 20 20 20 20 20 20 20 76 cb) {. v 000253a0: 61 72 20 63 6f 6e 74 61 69 6e 65 72 20 3d 20 67 ar container = g 000253b0: 65 74 45 6e 63 6c 6f 73 69 6e 67 42 6c 6f 63 6b etEnclosingBlock 000253c0: 53 63 6f 70 65 43 6f 6e 74 61 69 6e 65 72 28 6e ScopeContainer(n 000253d0: 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 20 77 68 ode);. wh 000253e0: 69 6c 65 20 28 63 6f 6e 74 61 69 6e 65 72 29 20 ile (container) 000253f0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 62 {. cb 00025400: 28 63 6f 6e 74 61 69 6e 65 72 29 3b 0a 20 20 20 (container);. 00025410: 20 20 20 20 20 20 20 20 20 63 6f 6e 74 61 69 6e contain 00025420: 65 72 20 3d 20 67 65 74 45 6e 63 6c 6f 73 69 6e er = getEnclosin 00025430: 67 42 6c 6f 63 6b 53 63 6f 70 65 43 6f 6e 74 61 gBlockScopeConta 00025440: 69 6e 65 72 28 63 6f 6e 74 61 69 6e 65 72 29 3b iner(container); 00025450: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d . }. } 00025460: 0a 20 20 20 20 74 73 2e 66 6f 72 45 61 63 68 45 . ts.forEachE 00025470: 6e 63 6c 6f 73 69 6e 67 42 6c 6f 63 6b 53 63 6f nclosingBlockSco 00025480: 70 65 43 6f 6e 74 61 69 6e 65 72 20 3d 20 66 6f peContainer = fo 00025490: 72 45 61 63 68 45 6e 63 6c 6f 73 69 6e 67 42 6c rEachEnclosingBl 000254a0: 6f 63 6b 53 63 6f 70 65 43 6f 6e 74 61 69 6e 65 ockScopeContaine 000254b0: 72 3b 0a 20 20 20 20 2f 2f 20 52 65 74 75 72 6e r;. // Return 000254c0: 20 64 69 73 70 6c 61 79 20 6e 61 6d 65 20 6f 66 display name of 000254d0: 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 0a 20 an identifier. 000254e0: 20 20 20 2f 2f 20 43 6f 6d 70 75 74 65 64 20 70 // Computed p 000254f0: 72 6f 70 65 72 74 79 20 6e 61 6d 65 73 20 77 69 roperty names wi 00025500: 6c 6c 20 6a 75 73 74 20 62 65 20 65 6d 69 74 74 ll just be emitt 00025510: 65 64 20 61 73 20 22 5b 3c 65 78 70 72 3e 5d 22 ed as "[<expr>]" 00025520: 2c 20 77 68 65 72 65 20 3c 65 78 70 72 3e 20 69 , where <expr> i 00025530: 73 20 74 68 65 20 73 6f 75 72 63 65 0a 20 20 20 s the source. 00025540: 20 2f 2f 20 74 65 78 74 20 6f 66 20 74 68 65 20 // text of the 00025550: 65 78 70 72 65 73 73 69 6f 6e 20 69 6e 20 74 68 expression in th 00025560: 65 20 63 6f 6d 70 75 74 65 64 20 70 72 6f 70 65 e computed prope 00025570: 72 74 79 2e 0a 20 20 20 20 66 75 6e 63 74 69 6f rty.. functio 00025580: 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 4e 61 6d n declarationNam 00025590: 65 54 6f 53 74 72 69 6e 67 28 6e 61 6d 65 29 20 eToString(name) 000255a0: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 000255b0: 20 21 6e 61 6d 65 20 7c 7c 20 67 65 74 46 75 6c !name || getFul 000255c0: 6c 57 69 64 74 68 28 6e 61 6d 65 29 20 3d 3d 3d lWidth(name) === 000255d0: 20 30 20 3f 20 22 28 4d 69 73 73 69 6e 67 29 22 0 ? "(Missing)" 000255e0: 20 3a 20 67 65 74 54 65 78 74 4f 66 4e 6f 64 65 : getTextOfNode 000255f0: 28 6e 61 6d 65 29 3b 0a 20 20 20 20 7d 0a 20 20 (name);. }. 00025600: 20 20 74 73 2e 64 65 63 6c 61 72 61 74 69 6f 6e ts.declaration 00025610: 4e 61 6d 65 54 6f 53 74 72 69 6e 67 20 3d 20 64 NameToString = d 00025620: 65 63 6c 61 72 61 74 69 6f 6e 4e 61 6d 65 54 6f eclarationNameTo 00025630: 53 74 72 69 6e 67 3b 0a 20 20 20 20 66 75 6e 63 String;. func 00025640: 74 69 6f 6e 20 67 65 74 4e 61 6d 65 46 72 6f 6d tion getNameFrom 00025650: 49 6e 64 65 78 49 6e 66 6f 28 69 6e 66 6f 29 20 IndexInfo(info) 00025660: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 00025670: 20 69 6e 66 6f 2e 64 65 63 6c 61 72 61 74 69 6f info.declaratio 00025680: 6e 20 3f 20 64 65 63 6c 61 72 61 74 69 6f 6e 4e n ? declarationN 00025690: 61 6d 65 54 6f 53 74 72 69 6e 67 28 69 6e 66 6f ameToString(info 000256a0: 2e 64 65 63 6c 61 72 61 74 69 6f 6e 2e 70 61 72 .declaration.par 000256b0: 61 6d 65 74 65 72 73 5b 30 5d 2e 6e 61 6d 65 29 ameters[0].name) 000256c0: 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 : undefined;. 000256d0: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4e 61 }. ts.getNa 000256e0: 6d 65 46 72 6f 6d 49 6e 64 65 78 49 6e 66 6f 20 meFromIndexInfo 000256f0: 3d 20 67 65 74 4e 61 6d 65 46 72 6f 6d 49 6e 64 = getNameFromInd 00025700: 65 78 49 6e 66 6f 3b 0a 20 20 20 20 66 75 6e 63 exInfo;. func 00025710: 74 69 6f 6e 20 69 73 43 6f 6d 70 75 74 65 64 4e tion isComputedN 00025720: 6f 6e 4c 69 74 65 72 61 6c 4e 61 6d 65 28 6e 61 onLiteralName(na 00025730: 6d 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 me) {. re 00025740: 74 75 72 6e 20 6e 61 6d 65 2e 6b 69 6e 64 20 3d turn name.kind = 00025750: 3d 3d 20 31 36 32 20 2f 2a 20 53 79 6e 74 61 78 == 162 /* Syntax 00025760: 4b 69 6e 64 2e 43 6f 6d 70 75 74 65 64 50 72 6f Kind.ComputedPro 00025770: 70 65 72 74 79 4e 61 6d 65 20 2a 2f 20 26 26 20 pertyName */ && 00025780: 21 69 73 53 74 72 69 6e 67 4f 72 4e 75 6d 65 72 !isStringOrNumer 00025790: 69 63 4c 69 74 65 72 61 6c 4c 69 6b 65 28 6e 61 icLiteralLike(na 000257a0: 6d 65 2e 65 78 70 72 65 73 73 69 6f 6e 29 3b 0a me.expression);. 000257b0: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 43 }. ts.isC 000257c0: 6f 6d 70 75 74 65 64 4e 6f 6e 4c 69 74 65 72 61 omputedNonLitera 000257d0: 6c 4e 61 6d 65 20 3d 20 69 73 43 6f 6d 70 75 74 lName = isComput 000257e0: 65 64 4e 6f 6e 4c 69 74 65 72 61 6c 4e 61 6d 65 edNonLiteralName 000257f0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 74 ;. function t 00025800: 72 79 47 65 74 54 65 78 74 4f 66 50 72 6f 70 65 ryGetTextOfPrope 00025810: 72 74 79 4e 61 6d 65 28 6e 61 6d 65 29 20 7b 0a rtyName(name) {. 00025820: 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 switch ( 00025830: 6e 61 6d 65 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 name.kind) {. 00025840: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 37 39 case 79 00025850: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 /* SyntaxKind.I 00025860: 64 65 6e 74 69 66 69 65 72 20 2a 2f 3a 0a 20 20 dentifier */:. 00025870: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 38 case 8 00025880: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 00025890: 50 72 69 76 61 74 65 49 64 65 6e 74 69 66 69 65 PrivateIdentifie 000258a0: 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 r */:. 000258b0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 61 6d return nam 000258c0: 65 2e 65 73 63 61 70 65 64 54 65 78 74 3b 0a 20 e.escapedText;. 000258d0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 000258e0: 31 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 10 /* SyntaxKind 000258f0: 2e 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 20 2a .StringLiteral * 00025900: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00025910: 61 73 65 20 38 20 2f 2a 20 53 79 6e 74 61 78 4b ase 8 /* SyntaxK 00025920: 69 6e 64 2e 4e 75 6d 65 72 69 63 4c 69 74 65 72 ind.NumericLiter 00025930: 61 6c 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 al */:. 00025940: 20 20 20 63 61 73 65 20 31 34 20 2f 2a 20 53 79 case 14 /* Sy 00025950: 6e 74 61 78 4b 69 6e 64 2e 4e 6f 53 75 62 73 74 ntaxKind.NoSubst 00025960: 69 74 75 74 69 6f 6e 54 65 6d 70 6c 61 74 65 4c itutionTemplateL 00025970: 69 74 65 72 61 6c 20 2a 2f 3a 0a 20 20 20 20 20 iteral */:. 00025980: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00025990: 6e 20 74 73 2e 65 73 63 61 70 65 4c 65 61 64 69 n ts.escapeLeadi 000259a0: 6e 67 55 6e 64 65 72 73 63 6f 72 65 73 28 6e 61 ngUnderscores(na 000259b0: 6d 65 2e 74 65 78 74 29 3b 0a 20 20 20 20 20 20 me.text);. 000259c0: 20 20 20 20 20 20 63 61 73 65 20 31 36 32 20 2f case 162 / 000259d0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6d * SyntaxKind.Com 000259e0: 70 75 74 65 64 50 72 6f 70 65 72 74 79 4e 61 6d putedPropertyNam 000259f0: 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 e */:. 00025a00: 20 20 20 20 20 20 69 66 20 28 69 73 53 74 72 69 if (isStri 00025a10: 6e 67 4f 72 4e 75 6d 65 72 69 63 4c 69 74 65 72 ngOrNumericLiter 00025a20: 61 6c 4c 69 6b 65 28 6e 61 6d 65 2e 65 78 70 72 alLike(name.expr 00025a30: 65 73 73 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 ession)). 00025a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00025a50: 75 72 6e 20 74 73 2e 65 73 63 61 70 65 4c 65 61 urn ts.escapeLea 00025a60: 64 69 6e 67 55 6e 64 65 72 73 63 6f 72 65 73 28 dingUnderscores( 00025a70: 6e 61 6d 65 2e 65 78 70 72 65 73 73 69 6f 6e 2e name.expression. 00025a80: 74 65 78 74 29 3b 0a 20 20 20 20 20 20 20 20 20 text);. 00025a90: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 6e return un 00025aa0: 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 defined;. 00025ab0: 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 default:. 00025ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00025ad0: 74 75 72 6e 20 74 73 2e 44 65 62 75 67 2e 61 73 turn ts.Debug.as 00025ae0: 73 65 72 74 4e 65 76 65 72 28 6e 61 6d 65 29 3b sertNever(name); 00025af0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d . }. } 00025b00: 0a 20 20 20 20 74 73 2e 74 72 79 47 65 74 54 65 . ts.tryGetTe 00025b10: 78 74 4f 66 50 72 6f 70 65 72 74 79 4e 61 6d 65 xtOfPropertyName 00025b20: 20 3d 20 74 72 79 47 65 74 54 65 78 74 4f 66 50 = tryGetTextOfP 00025b30: 72 6f 70 65 72 74 79 4e 61 6d 65 3b 0a 20 20 20 ropertyName;. 00025b40: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 54 65 78 function getTex 00025b50: 74 4f 66 50 72 6f 70 65 72 74 79 4e 61 6d 65 28 tOfPropertyName( 00025b60: 6e 61 6d 65 29 20 7b 0a 20 20 20 20 20 20 20 20 name) {. 00025b70: 72 65 74 75 72 6e 20 74 73 2e 44 65 62 75 67 2e return ts.Debug. 00025b80: 63 68 65 63 6b 44 65 66 69 6e 65 64 28 74 72 79 checkDefined(try 00025b90: 47 65 74 54 65 78 74 4f 66 50 72 6f 70 65 72 74 GetTextOfPropert 00025ba0: 79 4e 61 6d 65 28 6e 61 6d 65 29 29 3b 0a 20 20 yName(name));. 00025bb0: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 54 65 }. ts.getTe 00025bc0: 78 74 4f 66 50 72 6f 70 65 72 74 79 4e 61 6d 65 xtOfPropertyName 00025bd0: 20 3d 20 67 65 74 54 65 78 74 4f 66 50 72 6f 70 = getTextOfProp 00025be0: 65 72 74 79 4e 61 6d 65 3b 0a 20 20 20 20 66 75 ertyName;. fu 00025bf0: 6e 63 74 69 6f 6e 20 65 6e 74 69 74 79 4e 61 6d nction entityNam 00025c00: 65 54 6f 53 74 72 69 6e 67 28 6e 61 6d 65 29 20 eToString(name) 00025c10: 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 {. switch 00025c20: 20 28 6e 61 6d 65 2e 6b 69 6e 64 29 20 7b 0a 20 (name.kind) {. 00025c30: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00025c40: 31 30 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 108 /* SyntaxKin 00025c50: 64 2e 54 68 69 73 4b 65 79 77 6f 72 64 20 2a 2f d.ThisKeyword */ 00025c60: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 00025c70: 20 20 72 65 74 75 72 6e 20 22 74 68 69 73 22 3b return "this"; 00025c80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00025c90: 65 20 38 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 e 80 /* SyntaxKi 00025ca0: 6e 64 2e 50 72 69 76 61 74 65 49 64 65 6e 74 69 nd.PrivateIdenti 00025cb0: 66 69 65 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 fier */:. 00025cc0: 20 20 20 20 20 63 61 73 65 20 37 39 20 2f 2a 20 case 79 /* 00025cd0: 53 79 6e 74 61 78 4b 69 6e 64 2e 49 64 65 6e 74 SyntaxKind.Ident 00025ce0: 69 66 69 65 72 20 2a 2f 3a 0a 20 20 20 20 20 20 ifier */:. 00025cf0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00025d00: 20 67 65 74 46 75 6c 6c 57 69 64 74 68 28 6e 61 getFullWidth(na 00025d10: 6d 65 29 20 3d 3d 3d 20 30 20 3f 20 74 73 2e 69 me) === 0 ? ts.i 00025d20: 64 54 65 78 74 28 6e 61 6d 65 29 20 3a 20 67 65 dText(name) : ge 00025d30: 74 54 65 78 74 4f 66 4e 6f 64 65 28 6e 61 6d 65 tTextOfNode(name 00025d40: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 );. c 00025d50: 61 73 65 20 31 36 31 20 2f 2a 20 53 79 6e 74 61 ase 161 /* Synta 00025d60: 78 4b 69 6e 64 2e 51 75 61 6c 69 66 69 65 64 4e xKind.QualifiedN 00025d70: 61 6d 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ame */:. 00025d80: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 return e 00025d90: 6e 74 69 74 79 4e 61 6d 65 54 6f 53 74 72 69 6e ntityNameToStrin 00025da0: 67 28 6e 61 6d 65 2e 6c 65 66 74 29 20 2b 20 22 g(name.left) + " 00025db0: 2e 22 20 2b 20 65 6e 74 69 74 79 4e 61 6d 65 54 ." + entityNameT 00025dc0: 6f 53 74 72 69 6e 67 28 6e 61 6d 65 2e 72 69 67 oString(name.rig 00025dd0: 68 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ht);. 00025de0: 20 63 61 73 65 20 32 30 36 20 2f 2a 20 53 79 6e case 206 /* Syn 00025df0: 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 taxKind.Property 00025e00: 41 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e AccessExpression 00025e10: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00025e20: 20 20 20 20 20 69 66 20 28 74 73 2e 69 73 49 64 if (ts.isId 00025e30: 65 6e 74 69 66 69 65 72 28 6e 61 6d 65 2e 6e 61 entifier(name.na 00025e40: 6d 65 29 20 7c 7c 20 74 73 2e 69 73 50 72 69 76 me) || ts.isPriv 00025e50: 61 74 65 49 64 65 6e 74 69 66 69 65 72 28 6e 61 ateIdentifier(na 00025e60: 6d 65 2e 6e 61 6d 65 29 29 20 7b 0a 20 20 20 20 me.name)) {. 00025e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00025e80: 72 65 74 75 72 6e 20 65 6e 74 69 74 79 4e 61 6d return entityNam 00025e90: 65 54 6f 53 74 72 69 6e 67 28 6e 61 6d 65 2e 65 eToString(name.e 00025ea0: 78 70 72 65 73 73 69 6f 6e 29 20 2b 20 22 2e 22 xpression) + "." 00025eb0: 20 2b 20 65 6e 74 69 74 79 4e 61 6d 65 54 6f 53 + entityNameToS 00025ec0: 74 72 69 6e 67 28 6e 61 6d 65 2e 6e 61 6d 65 29 tring(name.name) 00025ed0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 00025ee0: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }. 00025ef0: 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 else {. 00025f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 00025f10: 65 74 75 72 6e 20 74 73 2e 44 65 62 75 67 2e 61 eturn ts.Debug.a 00025f20: 73 73 65 72 74 4e 65 76 65 72 28 6e 61 6d 65 2e ssertNever(name. 00025f30: 6e 61 6d 65 29 3b 0a 20 20 20 20 20 20 20 20 20 name);. 00025f40: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00025f50: 20 20 20 20 20 63 61 73 65 20 33 31 31 20 2f 2a case 311 /* 00025f60: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f SyntaxKind.JSDo 00025f70: 63 4d 65 6d 62 65 72 4e 61 6d 65 20 2a 2f 3a 0a cMemberName */:. 00025f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00025f90: 72 65 74 75 72 6e 20 65 6e 74 69 74 79 4e 61 6d return entityNam 00025fa0: 65 54 6f 53 74 72 69 6e 67 28 6e 61 6d 65 2e 6c eToString(name.l 00025fb0: 65 66 74 29 20 2b 20 65 6e 74 69 74 79 4e 61 6d eft) + entityNam 00025fc0: 65 54 6f 53 74 72 69 6e 67 28 6e 61 6d 65 2e 72 eToString(name.r 00025fd0: 69 67 68 74 29 3b 0a 20 20 20 20 20 20 20 20 20 ight);. 00025fe0: 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 default:. 00025ff0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00026000: 72 6e 20 74 73 2e 44 65 62 75 67 2e 61 73 73 65 rn ts.Debug.asse 00026010: 72 74 4e 65 76 65 72 28 6e 61 6d 65 29 3b 0a 20 rtNever(name);. 00026020: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 }. }. 00026030: 20 20 20 74 73 2e 65 6e 74 69 74 79 4e 61 6d 65 ts.entityName 00026040: 54 6f 53 74 72 69 6e 67 20 3d 20 65 6e 74 69 74 ToString = entit 00026050: 79 4e 61 6d 65 54 6f 53 74 72 69 6e 67 3b 0a 20 yNameToString;. 00026060: 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 61 function crea 00026070: 74 65 44 69 61 67 6e 6f 73 74 69 63 46 6f 72 4e teDiagnosticForN 00026080: 6f 64 65 28 6e 6f 64 65 2c 20 6d 65 73 73 61 67 ode(node, messag 00026090: 65 2c 20 61 72 67 30 2c 20 61 72 67 31 2c 20 61 e, arg0, arg1, a 000260a0: 72 67 32 2c 20 61 72 67 33 29 20 7b 0a 20 20 20 rg2, arg3) {. 000260b0: 20 20 20 20 20 76 61 72 20 73 6f 75 72 63 65 46 var sourceF 000260c0: 69 6c 65 20 3d 20 67 65 74 53 6f 75 72 63 65 46 ile = getSourceF 000260d0: 69 6c 65 4f 66 4e 6f 64 65 28 6e 6f 64 65 29 3b ileOfNode(node); 000260e0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 000260f0: 63 72 65 61 74 65 44 69 61 67 6e 6f 73 74 69 63 createDiagnostic 00026100: 46 6f 72 4e 6f 64 65 49 6e 53 6f 75 72 63 65 46 ForNodeInSourceF 00026110: 69 6c 65 28 73 6f 75 72 63 65 46 69 6c 65 2c 20 ile(sourceFile, 00026120: 6e 6f 64 65 2c 20 6d 65 73 73 61 67 65 2c 20 61 node, message, a 00026130: 72 67 30 2c 20 61 72 67 31 2c 20 61 72 67 32 2c rg0, arg1, arg2, 00026140: 20 61 72 67 33 29 3b 0a 20 20 20 20 7d 0a 20 20 arg3);. }. 00026150: 20 20 74 73 2e 63 72 65 61 74 65 44 69 61 67 6e ts.createDiagn 00026160: 6f 73 74 69 63 46 6f 72 4e 6f 64 65 20 3d 20 63 osticForNode = c 00026170: 72 65 61 74 65 44 69 61 67 6e 6f 73 74 69 63 46 reateDiagnosticF 00026180: 6f 72 4e 6f 64 65 3b 0a 20 20 20 20 66 75 6e 63 orNode;. func 00026190: 74 69 6f 6e 20 63 72 65 61 74 65 44 69 61 67 6e tion createDiagn 000261a0: 6f 73 74 69 63 46 6f 72 4e 6f 64 65 41 72 72 61 osticForNodeArra 000261b0: 79 28 73 6f 75 72 63 65 46 69 6c 65 2c 20 6e 6f y(sourceFile, no 000261c0: 64 65 73 2c 20 6d 65 73 73 61 67 65 2c 20 61 72 des, message, ar 000261d0: 67 30 2c 20 61 72 67 31 2c 20 61 72 67 32 2c 20 g0, arg1, arg2, 000261e0: 61 72 67 33 29 20 7b 0a 20 20 20 20 20 20 20 20 arg3) {. 000261f0: 76 61 72 20 73 74 61 72 74 20 3d 20 74 73 2e 73 var start = ts.s 00026200: 6b 69 70 54 72 69 76 69 61 28 73 6f 75 72 63 65 kipTrivia(source 00026210: 46 69 6c 65 2e 74 65 78 74 2c 20 6e 6f 64 65 73 File.text, nodes 00026220: 2e 70 6f 73 29 3b 0a 20 20 20 20 20 20 20 20 72 .pos);. r 00026230: 65 74 75 72 6e 20 63 72 65 61 74 65 46 69 6c 65 eturn createFile 00026240: 44 69 61 67 6e 6f 73 74 69 63 28 73 6f 75 72 63 Diagnostic(sourc 00026250: 65 46 69 6c 65 2c 20 73 74 61 72 74 2c 20 6e 6f eFile, start, no 00026260: 64 65 73 2e 65 6e 64 20 2d 20 73 74 61 72 74 2c des.end - start, 00026270: 20 6d 65 73 73 61 67 65 2c 20 61 72 67 30 2c 20 message, arg0, 00026280: 61 72 67 31 2c 20 61 72 67 32 2c 20 61 72 67 33 arg1, arg2, arg3 00026290: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 000262a0: 63 72 65 61 74 65 44 69 61 67 6e 6f 73 74 69 63 createDiagnostic 000262b0: 46 6f 72 4e 6f 64 65 41 72 72 61 79 20 3d 20 63 ForNodeArray = c 000262c0: 72 65 61 74 65 44 69 61 67 6e 6f 73 74 69 63 46 reateDiagnosticF 000262d0: 6f 72 4e 6f 64 65 41 72 72 61 79 3b 0a 20 20 20 orNodeArray;. 000262e0: 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 61 74 65 function create 000262f0: 44 69 61 67 6e 6f 73 74 69 63 46 6f 72 4e 6f 64 DiagnosticForNod 00026300: 65 49 6e 53 6f 75 72 63 65 46 69 6c 65 28 73 6f eInSourceFile(so 00026310: 75 72 63 65 46 69 6c 65 2c 20 6e 6f 64 65 2c 20 urceFile, node, 00026320: 6d 65 73 73 61 67 65 2c 20 61 72 67 30 2c 20 61 message, arg0, a 00026330: 72 67 31 2c 20 61 72 67 32 2c 20 61 72 67 33 29 rg1, arg2, arg3) 00026340: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 73 {. var s 00026350: 70 61 6e 20 3d 20 67 65 74 45 72 72 6f 72 53 70 pan = getErrorSp 00026360: 61 6e 46 6f 72 4e 6f 64 65 28 73 6f 75 72 63 65 anForNode(source 00026370: 46 69 6c 65 2c 20 6e 6f 64 65 29 3b 0a 20 20 20 File, node);. 00026380: 20 20 20 20 20 72 65 74 75 72 6e 20 63 72 65 61 return crea 00026390: 74 65 46 69 6c 65 44 69 61 67 6e 6f 73 74 69 63 teFileDiagnostic 000263a0: 28 73 6f 75 72 63 65 46 69 6c 65 2c 20 73 70 61 (sourceFile, spa 000263b0: 6e 2e 73 74 61 72 74 2c 20 73 70 61 6e 2e 6c 65 n.start, span.le 000263c0: 6e 67 74 68 2c 20 6d 65 73 73 61 67 65 2c 20 61 ngth, message, a 000263d0: 72 67 30 2c 20 61 72 67 31 2c 20 61 72 67 32 2c rg0, arg1, arg2, 000263e0: 20 61 72 67 33 29 3b 0a 20 20 20 20 7d 0a 20 20 arg3);. }. 000263f0: 20 20 74 73 2e 63 72 65 61 74 65 44 69 61 67 6e ts.createDiagn 00026400: 6f 73 74 69 63 46 6f 72 4e 6f 64 65 49 6e 53 6f osticForNodeInSo 00026410: 75 72 63 65 46 69 6c 65 20 3d 20 63 72 65 61 74 urceFile = creat 00026420: 65 44 69 61 67 6e 6f 73 74 69 63 46 6f 72 4e 6f eDiagnosticForNo 00026430: 64 65 49 6e 53 6f 75 72 63 65 46 69 6c 65 3b 0a deInSourceFile;. 00026440: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 function cre 00026450: 61 74 65 44 69 61 67 6e 6f 73 74 69 63 46 6f 72 ateDiagnosticFor 00026460: 4e 6f 64 65 46 72 6f 6d 4d 65 73 73 61 67 65 43 NodeFromMessageC 00026470: 68 61 69 6e 28 6e 6f 64 65 2c 20 6d 65 73 73 61 hain(node, messa 00026480: 67 65 43 68 61 69 6e 2c 20 72 65 6c 61 74 65 64 geChain, related 00026490: 49 6e 66 6f 72 6d 61 74 69 6f 6e 29 20 7b 0a 20 Information) {. 000264a0: 20 20 20 20 20 20 20 76 61 72 20 73 6f 75 72 63 var sourc 000264b0: 65 46 69 6c 65 20 3d 20 67 65 74 53 6f 75 72 63 eFile = getSourc 000264c0: 65 46 69 6c 65 4f 66 4e 6f 64 65 28 6e 6f 64 65 eFileOfNode(node 000264d0: 29 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 73 );. var s 000264e0: 70 61 6e 20 3d 20 67 65 74 45 72 72 6f 72 53 70 pan = getErrorSp 000264f0: 61 6e 46 6f 72 4e 6f 64 65 28 73 6f 75 72 63 65 anForNode(source 00026500: 46 69 6c 65 2c 20 6e 6f 64 65 29 3b 0a 20 20 20 File, node);. 00026510: 20 20 20 20 20 72 65 74 75 72 6e 20 63 72 65 61 return crea 00026520: 74 65 46 69 6c 65 44 69 61 67 6e 6f 73 74 69 63 teFileDiagnostic 00026530: 46 72 6f 6d 4d 65 73 73 61 67 65 43 68 61 69 6e FromMessageChain 00026540: 28 73 6f 75 72 63 65 46 69 6c 65 2c 20 73 70 61 (sourceFile, spa 00026550: 6e 2e 73 74 61 72 74 2c 20 73 70 61 6e 2e 6c 65 n.start, span.le 00026560: 6e 67 74 68 2c 20 6d 65 73 73 61 67 65 43 68 61 ngth, messageCha 00026570: 69 6e 2c 20 72 65 6c 61 74 65 64 49 6e 66 6f 72 in, relatedInfor 00026580: 6d 61 74 69 6f 6e 29 3b 0a 20 20 20 20 7d 0a 20 mation);. }. 00026590: 20 20 20 74 73 2e 63 72 65 61 74 65 44 69 61 67 ts.createDiag 000265a0: 6e 6f 73 74 69 63 46 6f 72 4e 6f 64 65 46 72 6f nosticForNodeFro 000265b0: 6d 4d 65 73 73 61 67 65 43 68 61 69 6e 20 3d 20 mMessageChain = 000265c0: 63 72 65 61 74 65 44 69 61 67 6e 6f 73 74 69 63 createDiagnostic 000265d0: 46 6f 72 4e 6f 64 65 46 72 6f 6d 4d 65 73 73 61 ForNodeFromMessa 000265e0: 67 65 43 68 61 69 6e 3b 0a 20 20 20 20 66 75 6e geChain;. fun 000265f0: 63 74 69 6f 6e 20 61 73 73 65 72 74 44 69 61 67 ction assertDiag 00026600: 6e 6f 73 74 69 63 4c 6f 63 61 74 69 6f 6e 28 66 nosticLocation(f 00026610: 69 6c 65 2c 20 73 74 61 72 74 2c 20 6c 65 6e 67 ile, start, leng 00026620: 74 68 29 20 7b 0a 20 20 20 20 20 20 20 20 74 73 th) {. ts 00026630: 2e 44 65 62 75 67 2e 61 73 73 65 72 74 47 72 65 .Debug.assertGre 00026640: 61 74 65 72 54 68 61 6e 4f 72 45 71 75 61 6c 28 aterThanOrEqual( 00026650: 73 74 61 72 74 2c 20 30 29 3b 0a 20 20 20 20 20 start, 0);. 00026660: 20 20 20 74 73 2e 44 65 62 75 67 2e 61 73 73 65 ts.Debug.asse 00026670: 72 74 47 72 65 61 74 65 72 54 68 61 6e 4f 72 45 rtGreaterThanOrE 00026680: 71 75 61 6c 28 6c 65 6e 67 74 68 2c 20 30 29 3b qual(length, 0); 00026690: 0a 20 20 20 20 20 20 20 20 69 66 20 28 66 69 6c . if (fil 000266a0: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 e) {. 000266b0: 20 74 73 2e 44 65 62 75 67 2e 61 73 73 65 72 74 ts.Debug.assert 000266c0: 4c 65 73 73 54 68 61 6e 4f 72 45 71 75 61 6c 28 LessThanOrEqual( 000266d0: 73 74 61 72 74 2c 20 66 69 6c 65 2e 74 65 78 74 start, file.text 000266e0: 2e 6c 65 6e 67 74 68 29 3b 0a 20 20 20 20 20 20 .length);. 000266f0: 20 20 20 20 20 20 74 73 2e 44 65 62 75 67 2e 61 ts.Debug.a 00026700: 73 73 65 72 74 4c 65 73 73 54 68 61 6e 4f 72 45 ssertLessThanOrE 00026710: 71 75 61 6c 28 73 74 61 72 74 20 2b 20 6c 65 6e qual(start + len 00026720: 67 74 68 2c 20 66 69 6c 65 2e 74 65 78 74 2e 6c gth, file.text.l 00026730: 65 6e 67 74 68 29 3b 0a 20 20 20 20 20 20 20 20 ength);. 00026740: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 }. }. func 00026750: 74 69 6f 6e 20 63 72 65 61 74 65 46 69 6c 65 44 tion createFileD 00026760: 69 61 67 6e 6f 73 74 69 63 46 72 6f 6d 4d 65 73 iagnosticFromMes 00026770: 73 61 67 65 43 68 61 69 6e 28 66 69 6c 65 2c 20 sageChain(file, 00026780: 73 74 61 72 74 2c 20 6c 65 6e 67 74 68 2c 20 6d start, length, m 00026790: 65 73 73 61 67 65 43 68 61 69 6e 2c 20 72 65 6c essageChain, rel 000267a0: 61 74 65 64 49 6e 66 6f 72 6d 61 74 69 6f 6e 29 atedInformation) 000267b0: 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 {. asser 000267c0: 74 44 69 61 67 6e 6f 73 74 69 63 4c 6f 63 61 74 tDiagnosticLocat 000267d0: 69 6f 6e 28 66 69 6c 65 2c 20 73 74 61 72 74 2c ion(file, start, 000267e0: 20 6c 65 6e 67 74 68 29 3b 0a 20 20 20 20 20 20 length);. 000267f0: 20 20 72 65 74 75 72 6e 20 7b 0a 20 20 20 20 20 return {. 00026800: 20 20 20 20 20 20 20 66 69 6c 65 3a 20 66 69 6c file: fil 00026810: 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 e,. s 00026820: 74 61 72 74 3a 20 73 74 61 72 74 2c 0a 20 20 20 tart: start,. 00026830: 20 20 20 20 20 20 20 20 20 6c 65 6e 67 74 68 3a length: 00026840: 20 6c 65 6e 67 74 68 2c 0a 20 20 20 20 20 20 20 length,. 00026850: 20 20 20 20 20 63 6f 64 65 3a 20 6d 65 73 73 61 code: messa 00026860: 67 65 43 68 61 69 6e 2e 63 6f 64 65 2c 0a 20 20 geChain.code,. 00026870: 20 20 20 20 20 20 20 20 20 20 63 61 74 65 67 6f catego 00026880: 72 79 3a 20 6d 65 73 73 61 67 65 43 68 61 69 6e ry: messageChain 00026890: 2e 63 61 74 65 67 6f 72 79 2c 0a 20 20 20 20 20 .category,. 000268a0: 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 54 65 messageTe 000268b0: 78 74 3a 20 6d 65 73 73 61 67 65 43 68 61 69 6e xt: messageChain 000268c0: 2e 6e 65 78 74 20 3f 20 6d 65 73 73 61 67 65 43 .next ? messageC 000268d0: 68 61 69 6e 20 3a 20 6d 65 73 73 61 67 65 43 68 hain : messageCh 000268e0: 61 69 6e 2e 6d 65 73 73 61 67 65 54 65 78 74 2c ain.messageText, 000268f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 6c . rel 00026900: 61 74 65 64 49 6e 66 6f 72 6d 61 74 69 6f 6e 3a atedInformation: 00026910: 20 72 65 6c 61 74 65 64 49 6e 66 6f 72 6d 61 74 relatedInformat 00026920: 69 6f 6e 0a 20 20 20 20 20 20 20 20 7d 3b 0a 20 ion. };. 00026930: 20 20 20 7d 0a 20 20 20 20 74 73 2e 63 72 65 61 }. ts.crea 00026940: 74 65 46 69 6c 65 44 69 61 67 6e 6f 73 74 69 63 teFileDiagnostic 00026950: 46 72 6f 6d 4d 65 73 73 61 67 65 43 68 61 69 6e FromMessageChain 00026960: 20 3d 20 63 72 65 61 74 65 46 69 6c 65 44 69 61 = createFileDia 00026970: 67 6e 6f 73 74 69 63 46 72 6f 6d 4d 65 73 73 61 gnosticFromMessa 00026980: 67 65 43 68 61 69 6e 3b 0a 20 20 20 20 66 75 6e geChain;. fun 00026990: 63 74 69 6f 6e 20 63 72 65 61 74 65 44 69 61 67 ction createDiag 000269a0: 6e 6f 73 74 69 63 46 6f 72 46 69 6c 65 46 72 6f nosticForFileFro 000269b0: 6d 4d 65 73 73 61 67 65 43 68 61 69 6e 28 73 6f mMessageChain(so 000269c0: 75 72 63 65 46 69 6c 65 2c 20 6d 65 73 73 61 67 urceFile, messag 000269d0: 65 43 68 61 69 6e 2c 20 72 65 6c 61 74 65 64 49 eChain, relatedI 000269e0: 6e 66 6f 72 6d 61 74 69 6f 6e 29 20 7b 0a 20 20 nformation) {. 000269f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 7b 0a 20 return {. 00026a00: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 3a file: 00026a10: 20 73 6f 75 72 63 65 46 69 6c 65 2c 0a 20 20 20 sourceFile,. 00026a20: 20 20 20 20 20 20 20 20 20 73 74 61 72 74 3a 20 start: 00026a30: 30 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 0,. l 00026a40: 65 6e 67 74 68 3a 20 30 2c 0a 20 20 20 20 20 20 ength: 0,. 00026a50: 20 20 20 20 20 20 63 6f 64 65 3a 20 6d 65 73 73 code: mess 00026a60: 61 67 65 43 68 61 69 6e 2e 63 6f 64 65 2c 0a 20 ageChain.code,. 00026a70: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 65 67 categ 00026a80: 6f 72 79 3a 20 6d 65 73 73 61 67 65 43 68 61 69 ory: messageChai 00026a90: 6e 2e 63 61 74 65 67 6f 72 79 2c 0a 20 20 20 20 n.category,. 00026aa0: 20 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 54 messageT 00026ab0: 65 78 74 3a 20 6d 65 73 73 61 67 65 43 68 61 69 ext: messageChai 00026ac0: 6e 2e 6e 65 78 74 20 3f 20 6d 65 73 73 61 67 65 n.next ? message 00026ad0: 43 68 61 69 6e 20 3a 20 6d 65 73 73 61 67 65 43 Chain : messageC 00026ae0: 68 61 69 6e 2e 6d 65 73 73 61 67 65 54 65 78 74 hain.messageText 00026af0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 ,. re 00026b00: 6c 61 74 65 64 49 6e 66 6f 72 6d 61 74 69 6f 6e latedInformation 00026b10: 3a 20 72 65 6c 61 74 65 64 49 6e 66 6f 72 6d 61 : relatedInforma 00026b20: 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 7d 3b 0a tion. };. 00026b30: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 63 72 65 }. ts.cre 00026b40: 61 74 65 44 69 61 67 6e 6f 73 74 69 63 46 6f 72 ateDiagnosticFor 00026b50: 46 69 6c 65 46 72 6f 6d 4d 65 73 73 61 67 65 43 FileFromMessageC 00026b60: 68 61 69 6e 20 3d 20 63 72 65 61 74 65 44 69 61 hain = createDia 00026b70: 67 6e 6f 73 74 69 63 46 6f 72 46 69 6c 65 46 72 gnosticForFileFr 00026b80: 6f 6d 4d 65 73 73 61 67 65 43 68 61 69 6e 3b 0a omMessageChain;. 00026b90: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 function cre 00026ba0: 61 74 65 44 69 61 67 6e 6f 73 74 69 63 4d 65 73 ateDiagnosticMes 00026bb0: 73 61 67 65 43 68 61 69 6e 46 72 6f 6d 44 69 61 sageChainFromDia 00026bc0: 67 6e 6f 73 74 69 63 28 64 69 61 67 6e 6f 73 74 gnostic(diagnost 00026bd0: 69 63 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 ic) {. re 00026be0: 74 75 72 6e 20 74 79 70 65 6f 66 20 64 69 61 67 turn typeof diag 00026bf0: 6e 6f 73 74 69 63 2e 6d 65 73 73 61 67 65 54 65 nostic.messageTe 00026c00: 78 74 20 3d 3d 3d 20 22 73 74 72 69 6e 67 22 20 xt === "string" 00026c10: 3f 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ? {. 00026c20: 63 6f 64 65 3a 20 64 69 61 67 6e 6f 73 74 69 63 code: diagnostic 00026c30: 2e 63 6f 64 65 2c 0a 20 20 20 20 20 20 20 20 20 .code,. 00026c40: 20 20 20 63 61 74 65 67 6f 72 79 3a 20 64 69 61 category: dia 00026c50: 67 6e 6f 73 74 69 63 2e 63 61 74 65 67 6f 72 79 gnostic.category 00026c60: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 ,. me 00026c70: 73 73 61 67 65 54 65 78 74 3a 20 64 69 61 67 6e ssageText: diagn 00026c80: 6f 73 74 69 63 2e 6d 65 73 73 61 67 65 54 65 78 ostic.messageTex 00026c90: 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e t,. n 00026ca0: 65 78 74 3a 20 64 69 61 67 6e 6f 73 74 69 63 2e ext: diagnostic. 00026cb0: 6e 65 78 74 2c 0a 20 20 20 20 20 20 20 20 7d 20 next,. } 00026cc0: 3a 20 64 69 61 67 6e 6f 73 74 69 63 2e 6d 65 73 : diagnostic.mes 00026cd0: 73 61 67 65 54 65 78 74 3b 0a 20 20 20 20 7d 0a sageText;. }. 00026ce0: 20 20 20 20 74 73 2e 63 72 65 61 74 65 44 69 61 ts.createDia 00026cf0: 67 6e 6f 73 74 69 63 4d 65 73 73 61 67 65 43 68 gnosticMessageCh 00026d00: 61 69 6e 46 72 6f 6d 44 69 61 67 6e 6f 73 74 69 ainFromDiagnosti 00026d10: 63 20 3d 20 63 72 65 61 74 65 44 69 61 67 6e 6f c = createDiagno 00026d20: 73 74 69 63 4d 65 73 73 61 67 65 43 68 61 69 6e sticMessageChain 00026d30: 46 72 6f 6d 44 69 61 67 6e 6f 73 74 69 63 3b 0a FromDiagnostic;. 00026d40: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 function cre 00026d50: 61 74 65 44 69 61 67 6e 6f 73 74 69 63 46 6f 72 ateDiagnosticFor 00026d60: 52 61 6e 67 65 28 73 6f 75 72 63 65 46 69 6c 65 Range(sourceFile 00026d70: 2c 20 72 61 6e 67 65 2c 20 6d 65 73 73 61 67 65 , range, message 00026d80: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 00026d90: 72 6e 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 rn {. 00026da0: 20 66 69 6c 65 3a 20 73 6f 75 72 63 65 46 69 6c file: sourceFil 00026db0: 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 e,. s 00026dc0: 74 61 72 74 3a 20 72 61 6e 67 65 2e 70 6f 73 2c tart: range.pos, 00026dd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e . len 00026de0: 67 74 68 3a 20 72 61 6e 67 65 2e 65 6e 64 20 2d gth: range.end - 00026df0: 20 72 61 6e 67 65 2e 70 6f 73 2c 0a 20 20 20 20 range.pos,. 00026e00: 20 20 20 20 20 20 20 20 63 6f 64 65 3a 20 6d 65 code: me 00026e10: 73 73 61 67 65 2e 63 6f 64 65 2c 0a 20 20 20 20 ssage.code,. 00026e20: 20 20 20 20 20 20 20 20 63 61 74 65 67 6f 72 79 category 00026e30: 3a 20 6d 65 73 73 61 67 65 2e 63 61 74 65 67 6f : message.catego 00026e40: 72 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ry,. 00026e50: 6d 65 73 73 61 67 65 54 65 78 74 3a 20 6d 65 73 messageText: mes 00026e60: 73 61 67 65 2e 6d 65 73 73 61 67 65 2c 0a 20 20 sage.message,. 00026e70: 20 20 20 20 20 20 7d 3b 0a 20 20 20 20 7d 0a 20 };. }. 00026e80: 20 20 20 74 73 2e 63 72 65 61 74 65 44 69 61 67 ts.createDiag 00026e90: 6e 6f 73 74 69 63 46 6f 72 52 61 6e 67 65 20 3d nosticForRange = 00026ea0: 20 63 72 65 61 74 65 44 69 61 67 6e 6f 73 74 69 createDiagnosti 00026eb0: 63 46 6f 72 52 61 6e 67 65 3b 0a 20 20 20 20 66 cForRange;. f 00026ec0: 75 6e 63 74 69 6f 6e 20 67 65 74 53 70 61 6e 4f unction getSpanO 00026ed0: 66 54 6f 6b 65 6e 41 74 50 6f 73 69 74 69 6f 6e fTokenAtPosition 00026ee0: 28 73 6f 75 72 63 65 46 69 6c 65 2c 20 70 6f 73 (sourceFile, pos 00026ef0: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 00026f00: 73 63 61 6e 6e 65 72 20 3d 20 74 73 2e 63 72 65 scanner = ts.cre 00026f10: 61 74 65 53 63 61 6e 6e 65 72 28 73 6f 75 72 63 ateScanner(sourc 00026f20: 65 46 69 6c 65 2e 6c 61 6e 67 75 61 67 65 56 65 eFile.languageVe 00026f30: 72 73 69 6f 6e 2c 20 2f 2a 73 6b 69 70 54 72 69 rsion, /*skipTri 00026f40: 76 69 61 2a 2f 20 74 72 75 65 2c 20 73 6f 75 72 via*/ true, sour 00026f50: 63 65 46 69 6c 65 2e 6c 61 6e 67 75 61 67 65 56 ceFile.languageV 00026f60: 61 72 69 61 6e 74 2c 20 73 6f 75 72 63 65 46 69 ariant, sourceFi 00026f70: 6c 65 2e 74 65 78 74 2c 20 2f 2a 6f 6e 45 72 72 le.text, /*onErr 00026f80: 6f 72 3a 2a 2f 20 75 6e 64 65 66 69 6e 65 64 2c or:*/ undefined, 00026f90: 20 70 6f 73 29 3b 0a 20 20 20 20 20 20 20 20 73 pos);. s 00026fa0: 63 61 6e 6e 65 72 2e 73 63 61 6e 28 29 3b 0a 20 canner.scan();. 00026fb0: 20 20 20 20 20 20 20 76 61 72 20 73 74 61 72 74 var start 00026fc0: 20 3d 20 73 63 61 6e 6e 65 72 2e 67 65 74 54 6f = scanner.getTo 00026fd0: 6b 65 6e 50 6f 73 28 29 3b 0a 20 20 20 20 20 20 kenPos();. 00026fe0: 20 20 72 65 74 75 72 6e 20 74 73 2e 63 72 65 61 return ts.crea 00026ff0: 74 65 54 65 78 74 53 70 61 6e 46 72 6f 6d 42 6f teTextSpanFromBo 00027000: 75 6e 64 73 28 73 74 61 72 74 2c 20 73 63 61 6e unds(start, scan 00027010: 6e 65 72 2e 67 65 74 54 65 78 74 50 6f 73 28 29 ner.getTextPos() 00027020: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 00027030: 67 65 74 53 70 61 6e 4f 66 54 6f 6b 65 6e 41 74 getSpanOfTokenAt 00027040: 50 6f 73 69 74 69 6f 6e 20 3d 20 67 65 74 53 70 Position = getSp 00027050: 61 6e 4f 66 54 6f 6b 65 6e 41 74 50 6f 73 69 74 anOfTokenAtPosit 00027060: 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ion;. functio 00027070: 6e 20 67 65 74 45 72 72 6f 72 53 70 61 6e 46 6f n getErrorSpanFo 00027080: 72 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e 28 73 rArrowFunction(s 00027090: 6f 75 72 63 65 46 69 6c 65 2c 20 6e 6f 64 65 29 ourceFile, node) 000270a0: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 70 {. var p 000270b0: 6f 73 20 3d 20 74 73 2e 73 6b 69 70 54 72 69 76 os = ts.skipTriv 000270c0: 69 61 28 73 6f 75 72 63 65 46 69 6c 65 2e 74 65 ia(sourceFile.te 000270d0: 78 74 2c 20 6e 6f 64 65 2e 70 6f 73 29 3b 0a 20 xt, node.pos);. 000270e0: 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e if (node. 000270f0: 62 6f 64 79 20 26 26 20 6e 6f 64 65 2e 62 6f 64 body && node.bod 00027100: 79 2e 6b 69 6e 64 20 3d 3d 3d 20 32 33 35 20 2f y.kind === 235 / 00027110: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 6c 6f * SyntaxKind.Blo 00027120: 63 6b 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 ck */) {. 00027130: 20 20 20 20 20 76 61 72 20 73 74 61 72 74 4c 69 var startLi 00027140: 6e 65 20 3d 20 74 73 2e 67 65 74 4c 69 6e 65 41 ne = ts.getLineA 00027150: 6e 64 43 68 61 72 61 63 74 65 72 4f 66 50 6f 73 ndCharacterOfPos 00027160: 69 74 69 6f 6e 28 73 6f 75 72 63 65 46 69 6c 65 ition(sourceFile 00027170: 2c 20 6e 6f 64 65 2e 62 6f 64 79 2e 70 6f 73 29 , node.body.pos) 00027180: 2e 6c 69 6e 65 3b 0a 20 20 20 20 20 20 20 20 20 .line;. 00027190: 20 20 20 76 61 72 20 65 6e 64 4c 69 6e 65 20 3d var endLine = 000271a0: 20 74 73 2e 67 65 74 4c 69 6e 65 41 6e 64 43 68 ts.getLineAndCh 000271b0: 61 72 61 63 74 65 72 4f 66 50 6f 73 69 74 69 6f aracterOfPositio 000271c0: 6e 28 73 6f 75 72 63 65 46 69 6c 65 2c 20 6e 6f n(sourceFile, no 000271d0: 64 65 2e 62 6f 64 79 2e 65 6e 64 29 2e 6c 69 6e de.body.end).lin 000271e0: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 e;. i 000271f0: 66 20 28 73 74 61 72 74 4c 69 6e 65 20 3c 20 65 f (startLine < e 00027200: 6e 64 4c 69 6e 65 29 20 7b 0a 20 20 20 20 20 20 ndLine) {. 00027210: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 68 65 // The 00027220: 20 61 72 72 6f 77 20 66 75 6e 63 74 69 6f 6e 20 arrow function 00027230: 73 70 61 6e 73 20 6d 75 6c 74 69 70 6c 65 20 6c spans multiple l 00027240: 69 6e 65 73 2c 0a 20 20 20 20 20 20 20 20 20 20 ines,. 00027250: 20 20 20 20 20 20 2f 2f 20 6d 61 6b 65 20 74 68 // make th 00027260: 65 20 65 72 72 6f 72 20 73 70 61 6e 20 62 65 20 e error span be 00027270: 74 68 65 20 66 69 72 73 74 20 6c 69 6e 65 2c 20 the first line, 00027280: 69 6e 63 6c 75 73 69 76 65 2e 0a 20 20 20 20 20 inclusive.. 00027290: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 000272a0: 6e 20 74 73 2e 63 72 65 61 74 65 54 65 78 74 53 n ts.createTextS 000272b0: 70 61 6e 28 70 6f 73 2c 20 67 65 74 45 6e 64 4c pan(pos, getEndL 000272c0: 69 6e 65 50 6f 73 69 74 69 6f 6e 28 73 74 61 72 inePosition(star 000272d0: 74 4c 69 6e 65 2c 20 73 6f 75 72 63 65 46 69 6c tLine, sourceFil 000272e0: 65 29 20 2d 20 70 6f 73 20 2b 20 31 29 3b 0a 20 e) - pos + 1);. 000272f0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 00027300: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 }. r 00027310: 65 74 75 72 6e 20 74 73 2e 63 72 65 61 74 65 54 eturn ts.createT 00027320: 65 78 74 53 70 61 6e 46 72 6f 6d 42 6f 75 6e 64 extSpanFromBound 00027330: 73 28 70 6f 73 2c 20 6e 6f 64 65 2e 65 6e 64 29 s(pos, node.end) 00027340: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 ;. }. func 00027350: 74 69 6f 6e 20 67 65 74 45 72 72 6f 72 53 70 61 tion getErrorSpa 00027360: 6e 46 6f 72 4e 6f 64 65 28 73 6f 75 72 63 65 46 nForNode(sourceF 00027370: 69 6c 65 2c 20 6e 6f 64 65 29 20 7b 0a 20 20 20 ile, node) {. 00027380: 20 20 20 20 20 76 61 72 20 65 72 72 6f 72 4e 6f var errorNo 00027390: 64 65 20 3d 20 6e 6f 64 65 3b 0a 20 20 20 20 20 de = node;. 000273a0: 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e switch (node. 000273b0: 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 kind) {. 000273c0: 20 20 20 20 63 61 73 65 20 33 30 35 20 2f 2a 20 case 305 /* 000273d0: 53 79 6e 74 61 78 4b 69 6e 64 2e 53 6f 75 72 63 SyntaxKind.Sourc 000273e0: 65 46 69 6c 65 20 2a 2f 3a 0a 20 20 20 20 20 20 eFile */:. 000273f0: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 70 6f var po 00027400: 73 5f 31 20 3d 20 74 73 2e 73 6b 69 70 54 72 69 s_1 = ts.skipTri 00027410: 76 69 61 28 73 6f 75 72 63 65 46 69 6c 65 2e 74 via(sourceFile.t 00027420: 65 78 74 2c 20 30 2c 20 2f 2a 73 74 6f 70 41 66 ext, 0, /*stopAf 00027430: 74 65 72 4c 69 6e 65 42 72 65 61 6b 2a 2f 20 66 terLineBreak*/ f 00027440: 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 alse);. 00027450: 20 20 20 20 20 20 20 69 66 20 28 70 6f 73 5f 31 if (pos_1 00027460: 20 3d 3d 3d 20 73 6f 75 72 63 65 46 69 6c 65 2e === sourceFile. 00027470: 74 65 78 74 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 text.length) {. 00027480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00027490: 20 20 20 2f 2f 20 66 69 6c 65 20 69 73 20 65 6d // file is em 000274a0: 70 74 79 20 2d 20 72 65 74 75 72 6e 20 73 70 61 pty - return spa 000274b0: 6e 20 66 6f 72 20 74 68 65 20 62 65 67 69 6e 6e n for the beginn 000274c0: 69 6e 67 20 6f 66 20 74 68 65 20 66 69 6c 65 0a ing of the file. 000274d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000274e0: 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 63 72 return ts.cr 000274f0: 65 61 74 65 54 65 78 74 53 70 61 6e 28 30 2c 20 eateTextSpan(0, 00027500: 30 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 0);. 00027510: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }. 00027520: 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 return get 00027530: 53 70 61 6e 4f 66 54 6f 6b 65 6e 41 74 50 6f 73 SpanOfTokenAtPos 00027540: 69 74 69 6f 6e 28 73 6f 75 72 63 65 46 69 6c 65 ition(sourceFile 00027550: 2c 20 70 6f 73 5f 31 29 3b 0a 20 20 20 20 20 20 , pos_1);. 00027560: 20 20 20 20 20 20 2f 2f 20 54 68 69 73 20 6c 69 // This li 00027570: 73 74 20 69 73 20 61 20 77 6f 72 6b 20 69 6e 20 st is a work in 00027580: 70 72 6f 67 72 65 73 73 2e 20 41 64 64 20 6d 69 progress. Add mi 00027590: 73 73 69 6e 67 20 6e 6f 64 65 20 6b 69 6e 64 73 ssing node kinds 000275a0: 20 74 6f 20 69 6d 70 72 6f 76 65 20 74 68 65 69 to improve thei 000275b0: 72 20 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 r error. 000275c0: 20 20 20 20 2f 2f 20 73 70 61 6e 73 2e 0a 20 20 // spans.. 000275d0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 000275e0: 35 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 54 /* SyntaxKind 000275f0: 2e 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 .VariableDeclara 00027600: 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 tion */:. 00027610: 20 20 20 20 20 63 61 73 65 20 32 30 33 20 2f 2a case 203 /* 00027620: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 69 6e 64 SyntaxKind.Bind 00027630: 69 6e 67 45 6c 65 6d 65 6e 74 20 2a 2f 3a 0a 20 ingElement */:. 00027640: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00027650: 32 35 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 257 /* SyntaxKin 00027660: 64 2e 43 6c 61 73 73 44 65 63 6c 61 72 61 74 69 d.ClassDeclarati 00027670: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 00027680: 20 20 20 63 61 73 65 20 32 32 36 20 2f 2a 20 53 case 226 /* S 00027690: 79 6e 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 45 yntaxKind.ClassE 000276a0: 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 xpression */:. 000276b0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 000276c0: 35 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 58 /* SyntaxKind 000276d0: 2e 49 6e 74 65 72 66 61 63 65 44 65 63 6c 61 72 .InterfaceDeclar 000276e0: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 000276f0: 20 20 20 20 20 20 63 61 73 65 20 32 36 31 20 2f case 261 / 00027700: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 * SyntaxKind.Mod 00027710: 75 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a uleDeclaration * 00027720: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00027730: 61 73 65 20 32 36 30 20 2f 2a 20 53 79 6e 74 61 ase 260 /* Synta 00027740: 78 4b 69 6e 64 2e 45 6e 75 6d 44 65 63 6c 61 72 xKind.EnumDeclar 00027750: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 00027760: 20 20 20 20 20 20 63 61 73 65 20 32 39 39 20 2f case 299 / 00027770: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 6e 75 * SyntaxKind.Enu 00027780: 6d 4d 65 6d 62 65 72 20 2a 2f 3a 0a 20 20 20 20 mMember */:. 00027790: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 35 36 case 256 000277a0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 /* SyntaxKind.F 000277b0: 75 6e 63 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 unctionDeclarati 000277c0: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 000277d0: 20 20 20 63 61 73 65 20 32 31 33 20 2f 2a 20 53 case 213 /* S 000277e0: 79 6e 74 61 78 4b 69 6e 64 2e 46 75 6e 63 74 69 yntaxKind.Functi 000277f0: 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a onExpression */: 00027800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00027810: 65 20 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 4b e 169 /* SyntaxK 00027820: 69 6e 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 72 ind.MethodDeclar 00027830: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 00027840: 20 20 20 20 20 20 63 61 73 65 20 31 37 32 20 2f case 172 / 00027850: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 47 65 74 * SyntaxKind.Get 00027860: 41 63 63 65 73 73 6f 72 20 2a 2f 3a 0a 20 20 20 Accessor */:. 00027870: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 case 17 00027880: 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 3 /* SyntaxKind. 00027890: 53 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 3a 0a SetAccessor */:. 000278a0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 000278b0: 20 32 35 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 259 /* SyntaxKi 000278c0: 6e 64 2e 54 79 70 65 41 6c 69 61 73 44 65 63 6c nd.TypeAliasDecl 000278d0: 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 aration */:. 000278e0: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 36 37 case 167 000278f0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 /* SyntaxKind.P 00027900: 72 6f 70 65 72 74 79 44 65 63 6c 61 72 61 74 69 ropertyDeclarati 00027910: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 00027920: 20 20 20 63 61 73 65 20 31 36 36 20 2f 2a 20 53 case 166 /* S 00027930: 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 yntaxKind.Proper 00027940: 74 79 53 69 67 6e 61 74 75 72 65 20 2a 2f 3a 0a tySignature */:. 00027950: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00027960: 20 32 36 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 268 /* SyntaxKi 00027970: 6e 64 2e 4e 61 6d 65 73 70 61 63 65 49 6d 70 6f nd.NamespaceImpo 00027980: 72 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 rt */:. 00027990: 20 20 20 20 20 20 20 65 72 72 6f 72 4e 6f 64 65 errorNode 000279a0: 20 3d 20 6e 6f 64 65 2e 6e 61 6d 65 3b 0a 20 20 = node.name;. 000279b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br 000279c0: 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 eak;. 000279d0: 20 63 61 73 65 20 32 31 34 20 2f 2a 20 53 79 6e case 214 /* Syn 000279e0: 74 61 78 4b 69 6e 64 2e 41 72 72 6f 77 46 75 6e taxKind.ArrowFun 000279f0: 63 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ction */:. 00027a00: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00027a10: 20 67 65 74 45 72 72 6f 72 53 70 61 6e 46 6f 72 getErrorSpanFor 00027a20: 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e 28 73 6f ArrowFunction(so 00027a30: 75 72 63 65 46 69 6c 65 2c 20 6e 6f 64 65 29 3b urceFile, node); 00027a40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00027a50: 65 20 32 38 39 20 2f 2a 20 53 79 6e 74 61 78 4b e 289 /* SyntaxK 00027a60: 69 6e 64 2e 43 61 73 65 43 6c 61 75 73 65 20 2a ind.CaseClause * 00027a70: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00027a80: 61 73 65 20 32 39 30 20 2f 2a 20 53 79 6e 74 61 ase 290 /* Synta 00027a90: 78 4b 69 6e 64 2e 44 65 66 61 75 6c 74 43 6c 61 xKind.DefaultCla 00027aa0: 75 73 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 use */:. 00027ab0: 20 20 20 20 20 20 20 20 76 61 72 20 73 74 61 72 var star 00027ac0: 74 20 3d 20 74 73 2e 73 6b 69 70 54 72 69 76 69 t = ts.skipTrivi 00027ad0: 61 28 73 6f 75 72 63 65 46 69 6c 65 2e 74 65 78 a(sourceFile.tex 00027ae0: 74 2c 20 6e 6f 64 65 2e 70 6f 73 29 3b 0a 20 20 t, node.pos);. 00027af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 va 00027b00: 72 20 65 6e 64 20 3d 20 6e 6f 64 65 2e 73 74 61 r end = node.sta 00027b10: 74 65 6d 65 6e 74 73 2e 6c 65 6e 67 74 68 20 3e tements.length > 00027b20: 20 30 20 3f 20 6e 6f 64 65 2e 73 74 61 74 65 6d 0 ? node.statem 00027b30: 65 6e 74 73 5b 30 5d 2e 70 6f 73 20 3a 20 6e 6f ents[0].pos : no 00027b40: 64 65 2e 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 de.end;. 00027b50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 00027b60: 73 2e 63 72 65 61 74 65 54 65 78 74 53 70 61 6e s.createTextSpan 00027b70: 46 72 6f 6d 42 6f 75 6e 64 73 28 73 74 61 72 74 FromBounds(start 00027b80: 2c 20 65 6e 64 29 3b 0a 20 20 20 20 20 20 20 20 , end);. 00027b90: 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 65 72 }. if (er 00027ba0: 72 6f 72 4e 6f 64 65 20 3d 3d 3d 20 75 6e 64 65 rorNode === unde 00027bb0: 66 69 6e 65 64 29 20 7b 0a 20 20 20 20 20 20 20 fined) {. 00027bc0: 20 20 20 20 20 2f 2f 20 49 66 20 77 65 20 64 6f // If we do 00027bd0: 6e 27 74 20 68 61 76 65 20 61 20 62 65 74 74 65 n't have a bette 00027be0: 72 20 6e 6f 64 65 2c 20 74 68 65 6e 20 6a 75 73 r node, then jus 00027bf0: 74 20 73 65 74 20 74 68 65 20 65 72 72 6f 72 20 t set the error 00027c00: 6f 6e 20 74 68 65 20 66 69 72 73 74 20 74 6f 6b on the first tok 00027c10: 65 6e 20 6f 66 0a 20 20 20 20 20 20 20 20 20 20 en of. 00027c20: 20 20 2f 2f 20 63 6f 6e 73 74 72 75 63 74 2e 0a // construct.. 00027c30: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00027c40: 72 6e 20 67 65 74 53 70 61 6e 4f 66 54 6f 6b 65 rn getSpanOfToke 00027c50: 6e 41 74 50 6f 73 69 74 69 6f 6e 28 73 6f 75 72 nAtPosition(sour 00027c60: 63 65 46 69 6c 65 2c 20 6e 6f 64 65 2e 70 6f 73 ceFile, node.pos 00027c70: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 );. }. 00027c80: 20 20 20 20 20 74 73 2e 44 65 62 75 67 2e 61 73 ts.Debug.as 00027c90: 73 65 72 74 28 21 74 73 2e 69 73 4a 53 44 6f 63 sert(!ts.isJSDoc 00027ca0: 28 65 72 72 6f 72 4e 6f 64 65 29 29 3b 0a 20 20 (errorNode));. 00027cb0: 20 20 20 20 20 20 76 61 72 20 69 73 4d 69 73 73 var isMiss 00027cc0: 69 6e 67 20 3d 20 6e 6f 64 65 49 73 4d 69 73 73 ing = nodeIsMiss 00027cd0: 69 6e 67 28 65 72 72 6f 72 4e 6f 64 65 29 3b 0a ing(errorNode);. 00027ce0: 20 20 20 20 20 20 20 20 76 61 72 20 70 6f 73 20 var pos 00027cf0: 3d 20 69 73 4d 69 73 73 69 6e 67 20 7c 7c 20 74 = isMissing || t 00027d00: 73 2e 69 73 4a 73 78 54 65 78 74 28 6e 6f 64 65 s.isJsxText(node 00027d10: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3f 20 ). ? 00027d20: 65 72 72 6f 72 4e 6f 64 65 2e 70 6f 73 0a 20 20 errorNode.pos. 00027d30: 20 20 20 20 20 20 20 20 20 20 3a 20 74 73 2e 73 : ts.s 00027d40: 6b 69 70 54 72 69 76 69 61 28 73 6f 75 72 63 65 kipTrivia(source 00027d50: 46 69 6c 65 2e 74 65 78 74 2c 20 65 72 72 6f 72 File.text, error 00027d60: 4e 6f 64 65 2e 70 6f 73 29 3b 0a 20 20 20 20 20 Node.pos);. 00027d70: 20 20 20 2f 2f 20 54 68 65 73 65 20 61 73 73 65 // These asse 00027d80: 72 74 73 20 73 68 6f 75 6c 64 20 61 6c 6c 20 62 rts should all b 00027d90: 65 20 73 61 74 69 73 66 69 65 64 20 66 6f 72 20 e satisfied for 00027da0: 61 20 70 72 6f 70 65 72 6c 79 20 63 6f 6e 73 74 a properly const 00027db0: 72 75 63 74 65 64 20 60 65 72 72 6f 72 4e 6f 64 ructed `errorNod 00027dc0: 65 60 2e 0a 20 20 20 20 20 20 20 20 69 66 20 28 e`.. if ( 00027dd0: 69 73 4d 69 73 73 69 6e 67 29 20 7b 0a 20 20 20 isMissing) {. 00027de0: 20 20 20 20 20 20 20 20 20 74 73 2e 44 65 62 75 ts.Debu 00027df0: 67 2e 61 73 73 65 72 74 28 70 6f 73 20 3d 3d 3d g.assert(pos === 00027e00: 20 65 72 72 6f 72 4e 6f 64 65 2e 70 6f 73 2c 20 errorNode.pos, 00027e10: 22 54 68 69 73 20 66 61 69 6c 75 72 65 20 63 6f "This failure co 00027e20: 75 6c 64 20 74 72 69 67 67 65 72 20 68 74 74 70 uld trigger http 00027e30: 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 4d s://github.com/M 00027e40: 69 63 72 6f 73 6f 66 74 2f 54 79 70 65 53 63 72 icrosoft/TypeScr 00027e50: 69 70 74 2f 69 73 73 75 65 73 2f 32 30 38 30 39 ipt/issues/20809 00027e60: 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ");. 00027e70: 74 73 2e 44 65 62 75 67 2e 61 73 73 65 72 74 28 ts.Debug.assert( 00027e80: 70 6f 73 20 3d 3d 3d 20 65 72 72 6f 72 4e 6f 64 pos === errorNod 00027e90: 65 2e 65 6e 64 2c 20 22 54 68 69 73 20 66 61 69 e.end, "This fai 00027ea0: 6c 75 72 65 20 63 6f 75 6c 64 20 74 72 69 67 67 lure could trigg 00027eb0: 65 72 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 er https://githu 00027ec0: 62 2e 63 6f 6d 2f 4d 69 63 72 6f 73 6f 66 74 2f b.com/Microsoft/ 00027ed0: 54 79 70 65 53 63 72 69 70 74 2f 69 73 73 75 65 TypeScript/issue 00027ee0: 73 2f 32 30 38 30 39 22 29 3b 0a 20 20 20 20 20 s/20809");. 00027ef0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 65 6c 73 }. els 00027f00: 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 e {. 00027f10: 74 73 2e 44 65 62 75 67 2e 61 73 73 65 72 74 28 ts.Debug.assert( 00027f20: 70 6f 73 20 3e 3d 20 65 72 72 6f 72 4e 6f 64 65 pos >= errorNode 00027f30: 2e 70 6f 73 2c 20 22 54 68 69 73 20 66 61 69 6c .pos, "This fail 00027f40: 75 72 65 20 63 6f 75 6c 64 20 74 72 69 67 67 65 ure could trigge 00027f50: 72 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 r https://github 00027f60: 2e 63 6f 6d 2f 4d 69 63 72 6f 73 6f 66 74 2f 54 .com/Microsoft/T 00027f70: 79 70 65 53 63 72 69 70 74 2f 69 73 73 75 65 73 ypeScript/issues 00027f80: 2f 32 30 38 30 39 22 29 3b 0a 20 20 20 20 20 20 /20809");. 00027f90: 20 20 20 20 20 20 74 73 2e 44 65 62 75 67 2e 61 ts.Debug.a 00027fa0: 73 73 65 72 74 28 70 6f 73 20 3c 3d 20 65 72 72 ssert(pos <= err 00027fb0: 6f 72 4e 6f 64 65 2e 65 6e 64 2c 20 22 54 68 69 orNode.end, "Thi 00027fc0: 73 20 66 61 69 6c 75 72 65 20 63 6f 75 6c 64 20 s failure could 00027fd0: 74 72 69 67 67 65 72 20 68 74 74 70 73 3a 2f 2f trigger https:// 00027fe0: 67 69 74 68 75 62 2e 63 6f 6d 2f 4d 69 63 72 6f github.com/Micro 00027ff0: 73 6f 66 74 2f 54 79 70 65 53 63 72 69 70 74 2f soft/TypeScript/ 00028000: 69 73 73 75 65 73 2f 32 30 38 30 39 22 29 3b 0a issues/20809");. 00028010: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 00028020: 20 20 72 65 74 75 72 6e 20 74 73 2e 63 72 65 61 return ts.crea 00028030: 74 65 54 65 78 74 53 70 61 6e 46 72 6f 6d 42 6f teTextSpanFromBo 00028040: 75 6e 64 73 28 70 6f 73 2c 20 65 72 72 6f 72 4e unds(pos, errorN 00028050: 6f 64 65 2e 65 6e 64 29 3b 0a 20 20 20 20 7d 0a ode.end);. }. 00028060: 20 20 20 20 74 73 2e 67 65 74 45 72 72 6f 72 53 ts.getErrorS 00028070: 70 61 6e 46 6f 72 4e 6f 64 65 20 3d 20 67 65 74 panForNode = get 00028080: 45 72 72 6f 72 53 70 61 6e 46 6f 72 4e 6f 64 65 ErrorSpanForNode 00028090: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 000280a0: 73 45 78 74 65 72 6e 61 6c 4f 72 43 6f 6d 6d 6f sExternalOrCommo 000280b0: 6e 4a 73 4d 6f 64 75 6c 65 28 66 69 6c 65 29 20 nJsModule(file) 000280c0: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 000280d0: 20 28 66 69 6c 65 2e 65 78 74 65 72 6e 61 6c 4d (file.externalM 000280e0: 6f 64 75 6c 65 49 6e 64 69 63 61 74 6f 72 20 7c oduleIndicator | 000280f0: 7c 20 66 69 6c 65 2e 63 6f 6d 6d 6f 6e 4a 73 4d | file.commonJsM 00028100: 6f 64 75 6c 65 49 6e 64 69 63 61 74 6f 72 29 20 oduleIndicator) 00028110: 21 3d 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 !== undefined;. 00028120: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 45 78 }. ts.isEx 00028130: 74 65 72 6e 61 6c 4f 72 43 6f 6d 6d 6f 6e 4a 73 ternalOrCommonJs 00028140: 4d 6f 64 75 6c 65 20 3d 20 69 73 45 78 74 65 72 Module = isExter 00028150: 6e 61 6c 4f 72 43 6f 6d 6d 6f 6e 4a 73 4d 6f 64 nalOrCommonJsMod 00028160: 75 6c 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ule;. functio 00028170: 6e 20 69 73 4a 73 6f 6e 53 6f 75 72 63 65 46 69 n isJsonSourceFi 00028180: 6c 65 28 66 69 6c 65 29 20 7b 0a 20 20 20 20 20 le(file) {. 00028190: 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 2e 73 return file.s 000281a0: 63 72 69 70 74 4b 69 6e 64 20 3d 3d 3d 20 36 20 criptKind === 6 000281b0: 2f 2a 20 53 63 72 69 70 74 4b 69 6e 64 2e 4a 53 /* ScriptKind.JS 000281c0: 4f 4e 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 ON */;. }. 000281d0: 20 74 73 2e 69 73 4a 73 6f 6e 53 6f 75 72 63 65 ts.isJsonSource 000281e0: 46 69 6c 65 20 3d 20 69 73 4a 73 6f 6e 53 6f 75 File = isJsonSou 000281f0: 72 63 65 46 69 6c 65 3b 0a 20 20 20 20 66 75 6e rceFile;. fun 00028200: 63 74 69 6f 6e 20 69 73 45 6e 75 6d 43 6f 6e 73 ction isEnumCons 00028210: 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 t(node) {. 00028220: 20 20 72 65 74 75 72 6e 20 21 21 28 74 73 2e 67 return !!(ts.g 00028230: 65 74 43 6f 6d 62 69 6e 65 64 4d 6f 64 69 66 69 etCombinedModifi 00028240: 65 72 46 6c 61 67 73 28 6e 6f 64 65 29 20 26 20 erFlags(node) & 00028250: 32 30 34 38 20 2f 2a 20 4d 6f 64 69 66 69 65 72 2048 /* Modifier 00028260: 46 6c 61 67 73 2e 43 6f 6e 73 74 20 2a 2f 29 3b Flags.Const */); 00028270: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00028280: 45 6e 75 6d 43 6f 6e 73 74 20 3d 20 69 73 45 6e EnumConst = isEn 00028290: 75 6d 43 6f 6e 73 74 3b 0a 20 20 20 20 66 75 6e umConst;. fun 000282a0: 63 74 69 6f 6e 20 69 73 44 65 63 6c 61 72 61 74 ction isDeclarat 000282b0: 69 6f 6e 52 65 61 64 6f 6e 6c 79 28 64 65 63 6c ionReadonly(decl 000282c0: 61 72 61 74 69 6f 6e 29 20 7b 0a 20 20 20 20 20 aration) {. 000282d0: 20 20 20 72 65 74 75 72 6e 20 21 21 28 74 73 2e return !!(ts. 000282e0: 67 65 74 43 6f 6d 62 69 6e 65 64 4d 6f 64 69 66 getCombinedModif 000282f0: 69 65 72 46 6c 61 67 73 28 64 65 63 6c 61 72 61 ierFlags(declara 00028300: 74 69 6f 6e 29 20 26 20 36 34 20 2f 2a 20 4d 6f tion) & 64 /* Mo 00028310: 64 69 66 69 65 72 46 6c 61 67 73 2e 52 65 61 64 difierFlags.Read 00028320: 6f 6e 6c 79 20 2a 2f 20 26 26 20 21 74 73 2e 69 only */ && !ts.i 00028330: 73 50 61 72 61 6d 65 74 65 72 50 72 6f 70 65 72 sParameterProper 00028340: 74 79 44 65 63 6c 61 72 61 74 69 6f 6e 28 64 65 tyDeclaration(de 00028350: 63 6c 61 72 61 74 69 6f 6e 2c 20 64 65 63 6c 61 claration, decla 00028360: 72 61 74 69 6f 6e 2e 70 61 72 65 6e 74 29 29 3b ration.parent)); 00028370: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00028380: 44 65 63 6c 61 72 61 74 69 6f 6e 52 65 61 64 6f DeclarationReado 00028390: 6e 6c 79 20 3d 20 69 73 44 65 63 6c 61 72 61 74 nly = isDeclarat 000283a0: 69 6f 6e 52 65 61 64 6f 6e 6c 79 3b 0a 20 20 20 ionReadonly;. 000283b0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 56 61 72 43 function isVarC 000283c0: 6f 6e 73 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 onst(node) {. 000283d0: 20 20 20 20 20 72 65 74 75 72 6e 20 21 21 28 74 return !!(t 000283e0: 73 2e 67 65 74 43 6f 6d 62 69 6e 65 64 4e 6f 64 s.getCombinedNod 000283f0: 65 46 6c 61 67 73 28 6e 6f 64 65 29 20 26 20 32 eFlags(node) & 2 00028400: 20 2f 2a 20 4e 6f 64 65 46 6c 61 67 73 2e 43 6f /* NodeFlags.Co 00028410: 6e 73 74 20 2a 2f 29 3b 0a 20 20 20 20 7d 0a 20 nst */);. }. 00028420: 20 20 20 74 73 2e 69 73 56 61 72 43 6f 6e 73 74 ts.isVarConst 00028430: 20 3d 20 69 73 56 61 72 43 6f 6e 73 74 3b 0a 20 = isVarConst;. 00028440: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4c 65 function isLe 00028450: 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 t(node) {. 00028460: 20 20 72 65 74 75 72 6e 20 21 21 28 74 73 2e 67 return !!(ts.g 00028470: 65 74 43 6f 6d 62 69 6e 65 64 4e 6f 64 65 46 6c etCombinedNodeFl 00028480: 61 67 73 28 6e 6f 64 65 29 20 26 20 31 20 2f 2a ags(node) & 1 /* 00028490: 20 4e 6f 64 65 46 6c 61 67 73 2e 4c 65 74 20 2a NodeFlags.Let * 000284a0: 2f 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 /);. }. ts 000284b0: 2e 69 73 4c 65 74 20 3d 20 69 73 4c 65 74 3b 0a .isLet = isLet;. 000284c0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 function isS 000284d0: 75 70 65 72 43 61 6c 6c 28 6e 29 20 7b 0a 20 20 uperCall(n) {. 000284e0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 2e 6b return n.k 000284f0: 69 6e 64 20 3d 3d 3d 20 32 30 38 20 2f 2a 20 53 ind === 208 /* S 00028500: 79 6e 74 61 78 4b 69 6e 64 2e 43 61 6c 6c 45 78 yntaxKind.CallEx 00028510: 70 72 65 73 73 69 6f 6e 20 2a 2f 20 26 26 20 6e pression */ && n 00028520: 2e 65 78 70 72 65 73 73 69 6f 6e 2e 6b 69 6e 64 .expression.kind 00028530: 20 3d 3d 3d 20 31 30 36 20 2f 2a 20 53 79 6e 74 === 106 /* Synt 00028540: 61 78 4b 69 6e 64 2e 53 75 70 65 72 4b 65 79 77 axKind.SuperKeyw 00028550: 6f 72 64 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ord */;. }. 00028560: 20 20 74 73 2e 69 73 53 75 70 65 72 43 61 6c 6c ts.isSuperCall 00028570: 20 3d 20 69 73 53 75 70 65 72 43 61 6c 6c 3b 0a = isSuperCall;. 00028580: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 49 function isI 00028590: 6d 70 6f 72 74 43 61 6c 6c 28 6e 29 20 7b 0a 20 mportCall(n) {. 000285a0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 2e return n. 000285b0: 6b 69 6e 64 20 3d 3d 3d 20 32 30 38 20 2f 2a 20 kind === 208 /* 000285c0: 53 79 6e 74 61 78 4b 69 6e 64 2e 43 61 6c 6c 45 SyntaxKind.CallE 000285d0: 78 70 72 65 73 73 69 6f 6e 20 2a 2f 20 26 26 20 xpression */ && 000285e0: 6e 2e 65 78 70 72 65 73 73 69 6f 6e 2e 6b 69 6e n.expression.kin 000285f0: 64 20 3d 3d 3d 20 31 30 30 20 2f 2a 20 53 79 6e d === 100 /* Syn 00028600: 74 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 4b 65 taxKind.ImportKe 00028610: 79 77 6f 72 64 20 2a 2f 3b 0a 20 20 20 20 7d 0a yword */;. }. 00028620: 20 20 20 20 74 73 2e 69 73 49 6d 70 6f 72 74 43 ts.isImportC 00028630: 61 6c 6c 20 3d 20 69 73 49 6d 70 6f 72 74 43 61 all = isImportCa 00028640: 6c 6c 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ll;. function 00028650: 20 69 73 49 6d 70 6f 72 74 4d 65 74 61 28 6e 29 isImportMeta(n) 00028660: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00028670: 6e 20 74 73 2e 69 73 4d 65 74 61 50 72 6f 70 65 n ts.isMetaPrope 00028680: 72 74 79 28 6e 29 0a 20 20 20 20 20 20 20 20 20 rty(n). 00028690: 20 20 20 26 26 20 6e 2e 6b 65 79 77 6f 72 64 54 && n.keywordT 000286a0: 6f 6b 65 6e 20 3d 3d 3d 20 31 30 30 20 2f 2a 20 oken === 100 /* 000286b0: 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 SyntaxKind.Impor 000286c0: 74 4b 65 79 77 6f 72 64 20 2a 2f 0a 20 20 20 20 tKeyword */. 000286d0: 20 20 20 20 20 20 20 20 26 26 20 6e 2e 6e 61 6d && n.nam 000286e0: 65 2e 65 73 63 61 70 65 64 54 65 78 74 20 3d 3d e.escapedText == 000286f0: 3d 20 22 6d 65 74 61 22 3b 0a 20 20 20 20 7d 0a = "meta";. }. 00028700: 20 20 20 20 74 73 2e 69 73 49 6d 70 6f 72 74 4d ts.isImportM 00028710: 65 74 61 20 3d 20 69 73 49 6d 70 6f 72 74 4d 65 eta = isImportMe 00028720: 74 61 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ta;. function 00028730: 20 69 73 4c 69 74 65 72 61 6c 49 6d 70 6f 72 74 isLiteralImport 00028740: 54 79 70 65 4e 6f 64 65 28 6e 29 20 7b 0a 20 20 TypeNode(n) {. 00028750: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 00028760: 69 73 49 6d 70 6f 72 74 54 79 70 65 4e 6f 64 65 isImportTypeNode 00028770: 28 6e 29 20 26 26 20 74 73 2e 69 73 4c 69 74 65 (n) && ts.isLite 00028780: 72 61 6c 54 79 70 65 4e 6f 64 65 28 6e 2e 61 72 ralTypeNode(n.ar 00028790: 67 75 6d 65 6e 74 29 20 26 26 20 74 73 2e 69 73 gument) && ts.is 000287a0: 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 28 6e 2e StringLiteral(n. 000287b0: 61 72 67 75 6d 65 6e 74 2e 6c 69 74 65 72 61 6c argument.literal 000287c0: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 000287d0: 69 73 4c 69 74 65 72 61 6c 49 6d 70 6f 72 74 54 isLiteralImportT 000287e0: 79 70 65 4e 6f 64 65 20 3d 20 69 73 4c 69 74 65 ypeNode = isLite 000287f0: 72 61 6c 49 6d 70 6f 72 74 54 79 70 65 4e 6f 64 ralImportTypeNod 00028800: 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 e;. function 00028810: 69 73 50 72 6f 6c 6f 67 75 65 44 69 72 65 63 74 isPrologueDirect 00028820: 69 76 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ive(node) {. 00028830: 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e return node. 00028840: 6b 69 6e 64 20 3d 3d 3d 20 32 33 38 20 2f 2a 20 kind === 238 /* 00028850: 53 79 6e 74 61 78 4b 69 6e 64 2e 45 78 70 72 65 SyntaxKind.Expre 00028860: 73 73 69 6f 6e 53 74 61 74 65 6d 65 6e 74 20 2a ssionStatement * 00028870: 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 26 26 /. && 00028880: 20 6e 6f 64 65 2e 65 78 70 72 65 73 73 69 6f 6e node.expression 00028890: 2e 6b 69 6e 64 20 3d 3d 3d 20 31 30 20 2f 2a 20 .kind === 10 /* 000288a0: 53 79 6e 74 61 78 4b 69 6e 64 2e 53 74 72 69 6e SyntaxKind.Strin 000288b0: 67 4c 69 74 65 72 61 6c 20 2a 2f 3b 0a 20 20 20 gLiteral */;. 000288c0: 20 7d 0a 20 20 20 20 74 73 2e 69 73 50 72 6f 6c }. ts.isProl 000288d0: 6f 67 75 65 44 69 72 65 63 74 69 76 65 20 3d 20 ogueDirective = 000288e0: 69 73 50 72 6f 6c 6f 67 75 65 44 69 72 65 63 74 isPrologueDirect 000288f0: 69 76 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ive;. functio 00028900: 6e 20 69 73 43 75 73 74 6f 6d 50 72 6f 6c 6f 67 n isCustomProlog 00028910: 75 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 ue(node) {. 00028920: 20 20 20 72 65 74 75 72 6e 20 21 21 28 67 65 74 return !!(get 00028930: 45 6d 69 74 46 6c 61 67 73 28 6e 6f 64 65 29 20 EmitFlags(node) 00028940: 26 20 31 30 34 38 35 37 36 20 2f 2a 20 45 6d 69 & 1048576 /* Emi 00028950: 74 46 6c 61 67 73 2e 43 75 73 74 6f 6d 50 72 6f tFlags.CustomPro 00028960: 6c 6f 67 75 65 20 2a 2f 29 3b 0a 20 20 20 20 7d logue */);. } 00028970: 0a 20 20 20 20 74 73 2e 69 73 43 75 73 74 6f 6d . ts.isCustom 00028980: 50 72 6f 6c 6f 67 75 65 20 3d 20 69 73 43 75 73 Prologue = isCus 00028990: 74 6f 6d 50 72 6f 6c 6f 67 75 65 3b 0a 20 20 20 tomPrologue;. 000289a0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 48 6f 69 73 function isHois 000289b0: 74 65 64 46 75 6e 63 74 69 6f 6e 28 6e 6f 64 65 tedFunction(node 000289c0: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 000289d0: 72 6e 20 69 73 43 75 73 74 6f 6d 50 72 6f 6c 6f rn isCustomProlo 000289e0: 67 75 65 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 gue(node). 000289f0: 20 20 20 20 20 20 26 26 20 74 73 2e 69 73 46 75 && ts.isFu 00028a00: 6e 63 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 6f nctionDeclaratio 00028a10: 6e 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d 0a 20 n(node);. }. 00028a20: 20 20 20 74 73 2e 69 73 48 6f 69 73 74 65 64 46 ts.isHoistedF 00028a30: 75 6e 63 74 69 6f 6e 20 3d 20 69 73 48 6f 69 73 unction = isHois 00028a40: 74 65 64 46 75 6e 63 74 69 6f 6e 3b 0a 20 20 20 tedFunction;. 00028a50: 20 66 75 6e 63 74 69 6f 6e 20 69 73 48 6f 69 73 function isHois 00028a60: 74 65 64 56 61 72 69 61 62 6c 65 28 6e 6f 64 65 tedVariable(node 00028a70: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 00028a80: 72 6e 20 74 73 2e 69 73 49 64 65 6e 74 69 66 69 rn ts.isIdentifi 00028a90: 65 72 28 6e 6f 64 65 2e 6e 61 6d 65 29 0a 20 20 er(node.name). 00028aa0: 20 20 20 20 20 20 20 20 20 20 26 26 20 21 6e 6f && !no 00028ab0: 64 65 2e 69 6e 69 74 69 61 6c 69 7a 65 72 3b 0a de.initializer;. 00028ac0: 20 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 74 69 }. functi 00028ad0: 6f 6e 20 69 73 48 6f 69 73 74 65 64 56 61 72 69 on isHoistedVari 00028ae0: 61 62 6c 65 53 74 61 74 65 6d 65 6e 74 28 6e 6f ableStatement(no 00028af0: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 de) {. re 00028b00: 74 75 72 6e 20 69 73 43 75 73 74 6f 6d 50 72 6f turn isCustomPro 00028b10: 6c 6f 67 75 65 28 6e 6f 64 65 29 0a 20 20 20 20 logue(node). 00028b20: 20 20 20 20 20 20 20 20 26 26 20 74 73 2e 69 73 && ts.is 00028b30: 56 61 72 69 61 62 6c 65 53 74 61 74 65 6d 65 6e VariableStatemen 00028b40: 74 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 t(node). 00028b50: 20 20 20 20 26 26 20 74 73 2e 65 76 65 72 79 28 && ts.every( 00028b60: 6e 6f 64 65 2e 64 65 63 6c 61 72 61 74 69 6f 6e node.declaration 00028b70: 4c 69 73 74 2e 64 65 63 6c 61 72 61 74 69 6f 6e List.declaration 00028b80: 73 2c 20 69 73 48 6f 69 73 74 65 64 56 61 72 69 s, isHoistedVari 00028b90: 61 62 6c 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 able);. }. 00028ba0: 20 74 73 2e 69 73 48 6f 69 73 74 65 64 56 61 72 ts.isHoistedVar 00028bb0: 69 61 62 6c 65 53 74 61 74 65 6d 65 6e 74 20 3d iableStatement = 00028bc0: 20 69 73 48 6f 69 73 74 65 64 56 61 72 69 61 62 isHoistedVariab 00028bd0: 6c 65 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 20 leStatement;. 00028be0: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4c 65 61 function getLea 00028bf0: 64 69 6e 67 43 6f 6d 6d 65 6e 74 52 61 6e 67 65 dingCommentRange 00028c00: 73 4f 66 4e 6f 64 65 28 6e 6f 64 65 2c 20 73 6f sOfNode(node, so 00028c10: 75 72 63 65 46 69 6c 65 4f 66 4e 6f 64 65 29 20 urceFileOfNode) 00028c20: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 00028c30: 20 6e 6f 64 65 2e 6b 69 6e 64 20 21 3d 3d 20 31 node.kind !== 1 00028c40: 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 1 /* SyntaxKind. 00028c50: 4a 73 78 54 65 78 74 20 2a 2f 20 3f 20 74 73 2e JsxText */ ? ts. 00028c60: 67 65 74 4c 65 61 64 69 6e 67 43 6f 6d 6d 65 6e getLeadingCommen 00028c70: 74 52 61 6e 67 65 73 28 73 6f 75 72 63 65 46 69 tRanges(sourceFi 00028c80: 6c 65 4f 66 4e 6f 64 65 2e 74 65 78 74 2c 20 6e leOfNode.text, n 00028c90: 6f 64 65 2e 70 6f 73 29 20 3a 20 75 6e 64 65 66 ode.pos) : undef 00028ca0: 69 6e 65 64 3b 0a 20 20 20 20 7d 0a 20 20 20 20 ined;. }. 00028cb0: 74 73 2e 67 65 74 4c 65 61 64 69 6e 67 43 6f 6d ts.getLeadingCom 00028cc0: 6d 65 6e 74 52 61 6e 67 65 73 4f 66 4e 6f 64 65 mentRangesOfNode 00028cd0: 20 3d 20 67 65 74 4c 65 61 64 69 6e 67 43 6f 6d = getLeadingCom 00028ce0: 6d 65 6e 74 52 61 6e 67 65 73 4f 66 4e 6f 64 65 mentRangesOfNode 00028cf0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 ;. function g 00028d00: 65 74 4a 53 44 6f 63 43 6f 6d 6d 65 6e 74 52 61 etJSDocCommentRa 00028d10: 6e 67 65 73 28 6e 6f 64 65 2c 20 74 65 78 74 29 nges(node, text) 00028d20: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 63 {. var c 00028d30: 6f 6d 6d 65 6e 74 52 61 6e 67 65 73 20 3d 20 28 ommentRanges = ( 00028d40: 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 36 node.kind === 16 00028d50: 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4 /* SyntaxKind. 00028d60: 50 61 72 61 6d 65 74 65 72 20 2a 2f 20 7c 7c 0a Parameter */ ||. 00028d70: 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 node 00028d80: 2e 6b 69 6e 64 20 3d 3d 3d 20 31 36 33 20 2f 2a .kind === 163 /* 00028d90: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 SyntaxKind.Type 00028da0: 50 61 72 61 6d 65 74 65 72 20 2a 2f 20 7c 7c 0a Parameter */ ||. 00028db0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 node 00028dc0: 2e 6b 69 6e 64 20 3d 3d 3d 20 32 31 33 20 2f 2a .kind === 213 /* 00028dd0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 75 6e 63 SyntaxKind.Func 00028de0: 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 2a tionExpression * 00028df0: 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 / ||. 00028e00: 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 node.kind === 2 00028e10: 31 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 14 /* SyntaxKind 00028e20: 2e 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e 20 2a .ArrowFunction * 00028e30: 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 / ||. 00028e40: 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 node.kind === 2 00028e50: 31 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 12 /* SyntaxKind 00028e60: 2e 50 61 72 65 6e 74 68 65 73 69 7a 65 64 45 78 .ParenthesizedEx 00028e70: 70 72 65 73 73 69 6f 6e 20 2a 2f 20 7c 7c 0a 20 pression */ ||. 00028e80: 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 2e node. 00028e90: 6b 69 6e 64 20 3d 3d 3d 20 32 35 34 20 2f 2a 20 kind === 254 /* 00028ea0: 53 79 6e 74 61 78 4b 69 6e 64 2e 56 61 72 69 61 SyntaxKind.Varia 00028eb0: 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a bleDeclaration * 00028ec0: 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 / ||. 00028ed0: 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 node.kind === 2 00028ee0: 37 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 75 /* SyntaxKind 00028ef0: 2e 45 78 70 6f 72 74 53 70 65 63 69 66 69 65 72 .ExportSpecifier 00028f00: 20 2a 2f 29 20 3f 0a 20 20 20 20 20 20 20 20 20 */) ?. 00028f10: 20 20 20 74 73 2e 63 6f 6e 63 61 74 65 6e 61 74 ts.concatenat 00028f20: 65 28 74 73 2e 67 65 74 54 72 61 69 6c 69 6e 67 e(ts.getTrailing 00028f30: 43 6f 6d 6d 65 6e 74 52 61 6e 67 65 73 28 74 65 CommentRanges(te 00028f40: 78 74 2c 20 6e 6f 64 65 2e 70 6f 73 29 2c 20 74 xt, node.pos), t 00028f50: 73 2e 67 65 74 4c 65 61 64 69 6e 67 43 6f 6d 6d s.getLeadingComm 00028f60: 65 6e 74 52 61 6e 67 65 73 28 74 65 78 74 2c 20 entRanges(text, 00028f70: 6e 6f 64 65 2e 70 6f 73 29 29 20 3a 0a 20 20 20 node.pos)) :. 00028f80: 20 20 20 20 20 20 20 20 20 74 73 2e 67 65 74 4c ts.getL 00028f90: 65 61 64 69 6e 67 43 6f 6d 6d 65 6e 74 52 61 6e eadingCommentRan 00028fa0: 67 65 73 28 74 65 78 74 2c 20 6e 6f 64 65 2e 70 ges(text, node.p 00028fb0: 6f 73 29 3b 0a 20 20 20 20 20 20 20 20 2f 2f 20 os);. // 00028fc0: 54 72 75 65 20 69 66 20 74 68 65 20 63 6f 6d 6d True if the comm 00028fd0: 65 6e 74 20 73 74 61 72 74 73 20 77 69 74 68 20 ent starts with 00028fe0: 27 2f 2a 2a 27 20 62 75 74 20 6e 6f 74 20 69 66 '/**' but not if 00028ff0: 20 69 74 20 69 73 20 27 2f 2a 2a 2f 27 0a 20 20 it is '/**/'. 00029000: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 00029010: 66 69 6c 74 65 72 28 63 6f 6d 6d 65 6e 74 52 61 filter(commentRa 00029020: 6e 67 65 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 nges, function ( 00029030: 63 6f 6d 6d 65 6e 74 29 20 7b 0a 20 20 20 20 20 comment) {. 00029040: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 65 return te 00029050: 78 74 2e 63 68 61 72 43 6f 64 65 41 74 28 63 6f xt.charCodeAt(co 00029060: 6d 6d 65 6e 74 2e 70 6f 73 20 2b 20 31 29 20 3d mment.pos + 1) = 00029070: 3d 3d 20 34 32 20 2f 2a 20 43 68 61 72 61 63 74 == 42 /* Charact 00029080: 65 72 43 6f 64 65 73 2e 61 73 74 65 72 69 73 6b erCodes.asterisk 00029090: 20 2a 2f 20 26 26 0a 20 20 20 20 20 20 20 20 20 */ &&. 000290a0: 20 20 20 20 20 20 20 74 65 78 74 2e 63 68 61 72 text.char 000290b0: 43 6f 64 65 41 74 28 63 6f 6d 6d 65 6e 74 2e 70 CodeAt(comment.p 000290c0: 6f 73 20 2b 20 32 29 20 3d 3d 3d 20 34 32 20 2f os + 2) === 42 / 000290d0: 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 65 73 * CharacterCodes 000290e0: 2e 61 73 74 65 72 69 73 6b 20 2a 2f 20 26 26 0a .asterisk */ &&. 000290f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00029100: 74 65 78 74 2e 63 68 61 72 43 6f 64 65 41 74 28 text.charCodeAt( 00029110: 63 6f 6d 6d 65 6e 74 2e 70 6f 73 20 2b 20 33 29 comment.pos + 3) 00029120: 20 21 3d 3d 20 34 37 20 2f 2a 20 43 68 61 72 61 !== 47 /* Chara 00029130: 63 74 65 72 43 6f 64 65 73 2e 73 6c 61 73 68 20 cterCodes.slash 00029140: 2a 2f 3b 0a 20 20 20 20 20 20 20 20 7d 29 3b 0a */;. });. 00029150: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 }. ts.get 00029160: 4a 53 44 6f 63 43 6f 6d 6d 65 6e 74 52 61 6e 67 JSDocCommentRang 00029170: 65 73 20 3d 20 67 65 74 4a 53 44 6f 63 43 6f 6d es = getJSDocCom 00029180: 6d 65 6e 74 52 61 6e 67 65 73 3b 0a 20 20 20 20 mentRanges;. 00029190: 74 73 2e 66 75 6c 6c 54 72 69 70 6c 65 53 6c 61 ts.fullTripleSla 000291a0: 73 68 52 65 66 65 72 65 6e 63 65 50 61 74 68 52 shReferencePathR 000291b0: 65 67 45 78 20 3d 20 2f 5e 28 5c 2f 5c 2f 5c 2f egEx = /^(\/\/\/ 000291c0: 5c 73 2a 3c 72 65 66 65 72 65 6e 63 65 5c 73 2b \s*<reference\s+ 000291d0: 70 61 74 68 5c 73 2a 3d 5c 73 2a 29 28 28 27 5b path\s*=\s*)(('[ 000291e0: 5e 27 5d 2a 27 29 7c 28 22 5b 5e 22 5d 2a 22 29 ^']*')|("[^"]*") 000291f0: 29 2e 2a 3f 5c 2f 3e 2f 3b 0a 20 20 20 20 76 61 ).*?\/>/;. va 00029200: 72 20 66 75 6c 6c 54 72 69 70 6c 65 53 6c 61 73 r fullTripleSlas 00029210: 68 52 65 66 65 72 65 6e 63 65 54 79 70 65 52 65 hReferenceTypeRe 00029220: 66 65 72 65 6e 63 65 44 69 72 65 63 74 69 76 65 ferenceDirective 00029230: 52 65 67 45 78 20 3d 20 2f 5e 28 5c 2f 5c 2f 5c RegEx = /^(\/\/\ 00029240: 2f 5c 73 2a 3c 72 65 66 65 72 65 6e 63 65 5c 73 /\s*<reference\s 00029250: 2b 74 79 70 65 73 5c 73 2a 3d 5c 73 2a 29 28 28 +types\s*=\s*)(( 00029260: 27 5b 5e 27 5d 2a 27 29 7c 28 22 5b 5e 22 5d 2a '[^']*')|("[^"]* 00029270: 22 29 29 2e 2a 3f 5c 2f 3e 2f 3b 0a 20 20 20 20 ")).*?\/>/;. 00029280: 74 73 2e 66 75 6c 6c 54 72 69 70 6c 65 53 6c 61 ts.fullTripleSla 00029290: 73 68 41 4d 44 52 65 66 65 72 65 6e 63 65 50 61 shAMDReferencePa 000292a0: 74 68 52 65 67 45 78 20 3d 20 2f 5e 28 5c 2f 5c thRegEx = /^(\/\ 000292b0: 2f 5c 2f 5c 73 2a 3c 61 6d 64 2d 64 65 70 65 6e /\/\s*<amd-depen 000292c0: 64 65 6e 63 79 5c 73 2b 70 61 74 68 5c 73 2a 3d dency\s+path\s*= 000292d0: 5c 73 2a 29 28 28 27 5b 5e 27 5d 2a 27 29 7c 28 \s*)(('[^']*')|( 000292e0: 22 5b 5e 22 5d 2a 22 29 29 2e 2a 3f 5c 2f 3e 2f "[^"]*")).*?\/>/ 000292f0: 3b 0a 20 20 20 20 76 61 72 20 64 65 66 61 75 6c ;. var defaul 00029300: 74 4c 69 62 52 65 66 65 72 65 6e 63 65 52 65 67 tLibReferenceReg 00029310: 45 78 20 3d 20 2f 5e 28 5c 2f 5c 2f 5c 2f 5c 73 Ex = /^(\/\/\/\s 00029320: 2a 3c 72 65 66 65 72 65 6e 63 65 5c 73 2b 6e 6f *<reference\s+no 00029330: 2d 64 65 66 61 75 6c 74 2d 6c 69 62 5c 73 2a 3d -default-lib\s*= 00029340: 5c 73 2a 29 28 28 27 5b 5e 27 5d 2a 27 29 7c 28 \s*)(('[^']*')|( 00029350: 22 5b 5e 22 5d 2a 22 29 29 5c 73 2a 5c 2f 3e 2f "[^"]*"))\s*\/>/ 00029360: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 00029370: 73 50 61 72 74 4f 66 54 79 70 65 4e 6f 64 65 28 sPartOfTypeNode( 00029380: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 00029390: 69 66 20 28 31 37 37 20 2f 2a 20 53 79 6e 74 61 if (177 /* Synta 000293a0: 78 4b 69 6e 64 2e 46 69 72 73 74 54 79 70 65 4e xKind.FirstTypeN 000293b0: 6f 64 65 20 2a 2f 20 3c 3d 20 6e 6f 64 65 2e 6b ode */ <= node.k 000293c0: 69 6e 64 20 26 26 20 6e 6f 64 65 2e 6b 69 6e 64 ind && node.kind 000293d0: 20 3c 3d 20 32 30 30 20 2f 2a 20 53 79 6e 74 61 <= 200 /* Synta 000293e0: 78 4b 69 6e 64 2e 4c 61 73 74 54 79 70 65 4e 6f xKind.LastTypeNo 000293f0: 64 65 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 de */) {. 00029400: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 return true 00029410: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 00029420: 20 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 65 switch (node 00029430: 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 .kind) {. 00029440: 20 20 20 20 20 63 61 73 65 20 31 33 30 20 2f 2a case 130 /* 00029450: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 6e 79 4b SyntaxKind.AnyK 00029460: 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 20 eyword */:. 00029470: 20 20 20 20 20 20 20 63 61 73 65 20 31 35 35 20 case 155 00029480: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 55 6e /* SyntaxKind.Un 00029490: 6b 6e 6f 77 6e 4b 65 79 77 6f 72 64 20 2a 2f 3a knownKeyword */: 000294a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 000294b0: 65 20 31 34 37 20 2f 2a 20 53 79 6e 74 61 78 4b e 147 /* SyntaxK 000294c0: 69 6e 64 2e 4e 75 6d 62 65 72 4b 65 79 77 6f 72 ind.NumberKeywor 000294d0: 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 d */:. 000294e0: 20 20 63 61 73 65 20 31 35 38 20 2f 2a 20 53 79 case 158 /* Sy 000294f0: 6e 74 61 78 4b 69 6e 64 2e 42 69 67 49 6e 74 4b ntaxKind.BigIntK 00029500: 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 20 eyword */:. 00029510: 20 20 20 20 20 20 20 63 61 73 65 20 31 35 30 20 case 150 00029520: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 74 /* SyntaxKind.St 00029530: 72 69 6e 67 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a ringKeyword */:. 00029540: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00029550: 20 31 33 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 133 /* SyntaxKi 00029560: 6e 64 2e 42 6f 6f 6c 65 61 6e 4b 65 79 77 6f 72 nd.BooleanKeywor 00029570: 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 d */:. 00029580: 20 20 63 61 73 65 20 31 35 31 20 2f 2a 20 53 79 case 151 /* Sy 00029590: 6e 74 61 78 4b 69 6e 64 2e 53 79 6d 62 6f 6c 4b ntaxKind.SymbolK 000295a0: 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 20 eyword */:. 000295b0: 20 20 20 20 20 20 20 63 61 73 65 20 31 34 38 20 case 148 000295c0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4f 62 /* SyntaxKind.Ob 000295d0: 6a 65 63 74 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a jectKeyword */:. 000295e0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 000295f0: 20 31 35 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 153 /* SyntaxKi 00029600: 6e 64 2e 55 6e 64 65 66 69 6e 65 64 4b 65 79 77 nd.UndefinedKeyw 00029610: 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ord */:. 00029620: 20 20 20 20 63 61 73 65 20 31 34 33 20 2f 2a 20 case 143 /* 00029630: 53 79 6e 74 61 78 4b 69 6e 64 2e 4e 65 76 65 72 SyntaxKind.Never 00029640: 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 Keyword */:. 00029650: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00029660: 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 rn true;. 00029670: 20 20 20 20 20 63 61 73 65 20 31 31 34 20 2f 2a case 114 /* 00029680: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 56 6f 69 64 SyntaxKind.Void 00029690: 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 Keyword */:. 000296a0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 000296b0: 72 6e 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b rn node.parent.k 000296c0: 69 6e 64 20 21 3d 3d 20 32 31 37 20 2f 2a 20 53 ind !== 217 /* S 000296d0: 79 6e 74 61 78 4b 69 6e 64 2e 56 6f 69 64 45 78 yntaxKind.VoidEx 000296e0: 70 72 65 73 73 69 6f 6e 20 2a 2f 3b 0a 20 20 20 pression */;. 000296f0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 32 case 22 00029700: 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 8 /* SyntaxKind. 00029710: 45 78 70 72 65 73 73 69 6f 6e 57 69 74 68 54 79 ExpressionWithTy 00029720: 70 65 41 72 67 75 6d 65 6e 74 73 20 2a 2f 3a 0a peArguments */:. 00029730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00029740: 72 65 74 75 72 6e 20 74 73 2e 69 73 48 65 72 69 return ts.isHeri 00029750: 74 61 67 65 43 6c 61 75 73 65 28 6e 6f 64 65 2e tageClause(node. 00029760: 70 61 72 65 6e 74 29 20 26 26 20 21 69 73 45 78 parent) && !isEx 00029770: 70 72 65 73 73 69 6f 6e 57 69 74 68 54 79 70 65 pressionWithType 00029780: 41 72 67 75 6d 65 6e 74 73 49 6e 43 6c 61 73 73 ArgumentsInClass 00029790: 45 78 74 65 6e 64 73 43 6c 61 75 73 65 28 6e 6f ExtendsClause(no 000297a0: 64 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 de);. 000297b0: 20 63 61 73 65 20 31 36 33 20 2f 2a 20 53 79 6e case 163 /* Syn 000297c0: 74 61 78 4b 69 6e 64 2e 54 79 70 65 50 61 72 61 taxKind.TypePara 000297d0: 6d 65 74 65 72 20 2a 2f 3a 0a 20 20 20 20 20 20 meter */:. 000297e0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 000297f0: 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b 69 6e node.parent.kin 00029800: 64 20 3d 3d 3d 20 31 39 35 20 2f 2a 20 53 79 6e d === 195 /* Syn 00029810: 74 61 78 4b 69 6e 64 2e 4d 61 70 70 65 64 54 79 taxKind.MappedTy 00029820: 70 65 20 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 70 61 pe */ || node.pa 00029830: 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 31 39 rent.kind === 19 00029840: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 00029850: 49 6e 66 65 72 54 79 70 65 20 2a 2f 3b 0a 20 20 InferType */;. 00029860: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 64 65 // Ide 00029870: 6e 74 69 66 69 65 72 73 20 61 6e 64 20 71 75 61 ntifiers and qua 00029880: 6c 69 66 69 65 64 20 6e 61 6d 65 73 20 6d 61 79 lified names may 00029890: 20 62 65 20 74 79 70 65 20 6e 6f 64 65 73 2c 20 be type nodes, 000298a0: 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 depending on the 000298b0: 69 72 20 63 6f 6e 74 65 78 74 2e 20 43 6c 69 6d ir context. Clim 000298c0: 62 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f b. // 000298d0: 20 61 62 6f 76 65 20 74 68 65 6d 20 74 6f 20 66 above them to f 000298e0: 69 6e 64 20 74 68 65 20 6c 6f 77 65 73 74 20 63 ind the lowest c 000298f0: 6f 6e 74 61 69 6e 65 72 0a 20 20 20 20 20 20 20 ontainer. 00029900: 20 20 20 20 20 63 61 73 65 20 37 39 20 2f 2a 20 case 79 /* 00029910: 53 79 6e 74 61 78 4b 69 6e 64 2e 49 64 65 6e 74 SyntaxKind.Ident 00029920: 69 66 69 65 72 20 2a 2f 3a 0a 20 20 20 20 20 20 ifier */:. 00029930: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 // If 00029940: 74 68 65 20 69 64 65 6e 74 69 66 69 65 72 20 69 the identifier i 00029950: 73 20 74 68 65 20 52 48 53 20 6f 66 20 61 20 71 s the RHS of a q 00029960: 75 61 6c 69 66 69 65 64 20 6e 61 6d 65 2c 20 74 ualified name, t 00029970: 68 65 6e 20 69 74 27 73 20 61 20 74 79 70 65 20 hen it's a type 00029980: 69 66 66 20 69 74 73 20 70 61 72 65 6e 74 20 69 iff its parent i 00029990: 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 s.. 000299a0: 20 20 20 69 66 20 28 6e 6f 64 65 2e 70 61 72 65 if (node.pare 000299b0: 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 31 36 31 20 nt.kind === 161 000299c0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 51 75 /* SyntaxKind.Qu 000299d0: 61 6c 69 66 69 65 64 4e 61 6d 65 20 2a 2f 20 26 alifiedName */ & 000299e0: 26 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 72 69 & node.parent.ri 000299f0: 67 68 74 20 3d 3d 3d 20 6e 6f 64 65 29 20 7b 0a ght === node) {. 00029a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00029a10: 20 20 20 20 6e 6f 64 65 20 3d 20 6e 6f 64 65 2e node = node. 00029a20: 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 parent;. 00029a30: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 00029a40: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 else i 00029a50: 66 20 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b f (node.parent.k 00029a60: 69 6e 64 20 3d 3d 3d 20 32 30 36 20 2f 2a 20 53 ind === 206 /* S 00029a70: 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 yntaxKind.Proper 00029a80: 74 79 41 63 63 65 73 73 45 78 70 72 65 73 73 69 tyAccessExpressi 00029a90: 6f 6e 20 2a 2f 20 26 26 20 6e 6f 64 65 2e 70 61 on */ && node.pa 00029aa0: 72 65 6e 74 2e 6e 61 6d 65 20 3d 3d 3d 20 6e 6f rent.name === no 00029ab0: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 de) {. 00029ac0: 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d node = 00029ad0: 20 6e 6f 64 65 2e 70 61 72 65 6e 74 3b 0a 20 20 node.parent;. 00029ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }. 00029af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00029b00: 2f 2f 20 41 74 20 74 68 69 73 20 70 6f 69 6e 74 // At this point 00029b10: 2c 20 6e 6f 64 65 20 69 73 20 65 69 74 68 65 72 , node is either 00029b20: 20 61 20 71 75 61 6c 69 66 69 65 64 20 6e 61 6d a qualified nam 00029b30: 65 20 6f 72 20 61 6e 20 69 64 65 6e 74 69 66 69 e or an identifi 00029b40: 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 er. 00029b50: 20 20 20 74 73 2e 44 65 62 75 67 2e 61 73 73 65 ts.Debug.asse 00029b60: 72 74 28 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d rt(node.kind === 00029b70: 20 37 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 79 /* SyntaxKin 00029b80: 64 2e 49 64 65 6e 74 69 66 69 65 72 20 2a 2f 20 d.Identifier */ 00029b90: 7c 7c 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d || node.kind === 00029ba0: 20 31 36 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 161 /* SyntaxKi 00029bb0: 6e 64 2e 51 75 61 6c 69 66 69 65 64 4e 61 6d 65 nd.QualifiedName 00029bc0: 20 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 6b 69 6e 64 */ || node.kind 00029bd0: 20 3d 3d 3d 20 32 30 36 20 2f 2a 20 53 79 6e 74 === 206 /* Synt 00029be0: 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 41 axKind.PropertyA 00029bf0: 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 20 ccessExpression 00029c00: 2a 2f 2c 20 22 27 6e 6f 64 65 27 20 77 61 73 20 */, "'node' was 00029c10: 65 78 70 65 63 74 65 64 20 74 6f 20 62 65 20 61 expected to be a 00029c20: 20 71 75 61 6c 69 66 69 65 64 20 6e 61 6d 65 2c qualified name, 00029c30: 20 69 64 65 6e 74 69 66 69 65 72 20 6f 72 20 70 identifier or p 00029c40: 72 6f 70 65 72 74 79 20 61 63 63 65 73 73 20 69 roperty access i 00029c50: 6e 20 27 69 73 50 61 72 74 4f 66 54 79 70 65 4e n 'isPartOfTypeN 00029c60: 6f 64 65 27 2e 22 29 3b 0a 20 20 20 20 20 20 20 ode'.");. 00029c70: 20 20 20 20 20 2f 2f 20 66 61 6c 6c 73 20 74 68 // falls th 00029c80: 72 6f 75 67 68 0a 20 20 20 20 20 20 20 20 20 20 rough. 00029c90: 20 20 63 61 73 65 20 31 36 31 20 2f 2a 20 53 79 case 161 /* Sy 00029ca0: 6e 74 61 78 4b 69 6e 64 2e 51 75 61 6c 69 66 69 ntaxKind.Qualifi 00029cb0: 65 64 4e 61 6d 65 20 2a 2f 3a 0a 20 20 20 20 20 edName */:. 00029cc0: 20 20 20 20 20 20 20 63 61 73 65 20 32 30 36 20 case 206 00029cd0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 72 /* SyntaxKind.Pr 00029ce0: 6f 70 65 72 74 79 41 63 63 65 73 73 45 78 70 72 opertyAccessExpr 00029cf0: 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ession */:. 00029d00: 20 20 20 20 20 20 20 63 61 73 65 20 31 30 38 20 case 108 00029d10: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 68 /* SyntaxKind.Th 00029d20: 69 73 4b 65 79 77 6f 72 64 20 2a 2f 3a 20 7b 0a isKeyword */: {. 00029d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00029d40: 76 61 72 20 70 61 72 65 6e 74 20 3d 20 6e 6f 64 var parent = nod 00029d50: 65 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 e.parent;. 00029d60: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61 if (pa 00029d70: 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 31 38 rent.kind === 18 00029d80: 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 1 /* SyntaxKind. 00029d90: 54 79 70 65 51 75 65 72 79 20 2a 2f 29 20 7b 0a TypeQuery */) {. 00029da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00029db0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 return false 00029dc0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 00029dd0: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }. 00029de0: 20 20 20 20 69 66 20 28 70 61 72 65 6e 74 2e 6b if (parent.k 00029df0: 69 6e 64 20 3d 3d 3d 20 32 30 30 20 2f 2a 20 53 ind === 200 /* S 00029e00: 79 6e 74 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 yntaxKind.Import 00029e10: 54 79 70 65 20 2a 2f 29 20 7b 0a 20 20 20 20 20 Type */) {. 00029e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 00029e30: 65 74 75 72 6e 20 21 70 61 72 65 6e 74 2e 69 73 eturn !parent.is 00029e40: 54 79 70 65 4f 66 3b 0a 20 20 20 20 20 20 20 20 TypeOf;. 00029e50: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 00029e60: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44 6f 20 // Do 00029e70: 6e 6f 74 20 72 65 63 75 72 73 69 76 65 6c 79 20 not recursively 00029e80: 63 61 6c 6c 20 69 73 50 61 72 74 4f 66 54 79 70 call isPartOfTyp 00029e90: 65 4e 6f 64 65 20 6f 6e 20 74 68 65 20 70 61 72 eNode on the par 00029ea0: 65 6e 74 2e 20 49 6e 20 74 68 65 20 65 78 61 6d ent. In the exam 00029eb0: 70 6c 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 ple:. 00029ec0: 20 20 20 20 20 2f 2f 0a 20 20 20 20 20 20 20 20 //. 00029ed0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 6c // l 00029ee0: 65 74 20 61 3a 20 41 2e 42 2e 43 3b 0a 20 20 20 et a: A.B.C;. 00029ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0a //. 00029f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00029f10: 2f 2f 20 43 61 6c 6c 69 6e 67 20 69 73 50 61 72 // Calling isPar 00029f20: 74 4f 66 54 79 70 65 4e 6f 64 65 20 77 6f 75 6c tOfTypeNode woul 00029f30: 64 20 63 6f 6e 73 69 64 65 72 20 74 68 65 20 71 d consider the q 00029f40: 75 61 6c 69 66 69 65 64 20 6e 61 6d 65 20 41 2e ualified name A. 00029f50: 42 20 61 20 74 79 70 65 20 6e 6f 64 65 2e 0a 20 B a type node.. 00029f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f / 00029f70: 2f 20 4f 6e 6c 79 20 43 20 61 6e 64 20 41 2e 42 / Only C and A.B 00029f80: 2e 43 20 61 72 65 20 74 79 70 65 20 6e 6f 64 65 .C are type node 00029f90: 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 s.. 00029fa0: 20 20 20 69 66 20 28 31 37 37 20 2f 2a 20 53 79 if (177 /* Sy 00029fb0: 6e 74 61 78 4b 69 6e 64 2e 46 69 72 73 74 54 79 ntaxKind.FirstTy 00029fc0: 70 65 4e 6f 64 65 20 2a 2f 20 3c 3d 20 70 61 72 peNode */ <= par 00029fd0: 65 6e 74 2e 6b 69 6e 64 20 26 26 20 70 61 72 65 ent.kind && pare 00029fe0: 6e 74 2e 6b 69 6e 64 20 3c 3d 20 32 30 30 20 2f nt.kind <= 200 / 00029ff0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4c 61 73 * SyntaxKind.Las 0002a000: 74 54 79 70 65 4e 6f 64 65 20 2a 2f 29 20 7b 0a tTypeNode */) {. 0002a010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a020: 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b return true; 0002a030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002a040: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }. 0002a050: 20 20 20 73 77 69 74 63 68 20 28 70 61 72 65 6e switch (paren 0002a060: 74 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 t.kind) {. 0002a070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 0002a080: 73 65 20 32 32 38 20 2f 2a 20 53 79 6e 74 61 78 se 228 /* Syntax 0002a090: 4b 69 6e 64 2e 45 78 70 72 65 73 73 69 6f 6e 57 Kind.ExpressionW 0002a0a0: 69 74 68 54 79 70 65 41 72 67 75 6d 65 6e 74 73 ithTypeArguments 0002a0b0: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 0002a0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 0002a0d0: 75 72 6e 20 74 73 2e 69 73 48 65 72 69 74 61 67 urn ts.isHeritag 0002a0e0: 65 43 6c 61 75 73 65 28 70 61 72 65 6e 74 2e 70 eClause(parent.p 0002a0f0: 61 72 65 6e 74 29 20 26 26 20 21 69 73 45 78 70 arent) && !isExp 0002a100: 72 65 73 73 69 6f 6e 57 69 74 68 54 79 70 65 41 ressionWithTypeA 0002a110: 72 67 75 6d 65 6e 74 73 49 6e 43 6c 61 73 73 45 rgumentsInClassE 0002a120: 78 74 65 6e 64 73 43 6c 61 75 73 65 28 70 61 72 xtendsClause(par 0002a130: 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 ent);. 0002a140: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 0002a150: 36 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 63 /* SyntaxKind 0002a160: 2e 54 79 70 65 50 61 72 61 6d 65 74 65 72 20 2a .TypeParameter * 0002a170: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0002a180: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0002a190: 6e 20 6e 6f 64 65 20 3d 3d 3d 20 70 61 72 65 6e n node === paren 0002a1a0: 74 2e 63 6f 6e 73 74 72 61 69 6e 74 3b 0a 20 20 t.constraint;. 0002a1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a1c0: 20 20 63 61 73 65 20 33 34 34 20 2f 2a 20 53 79 case 344 /* Sy 0002a1d0: 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 54 65 ntaxKind.JSDocTe 0002a1e0: 6d 70 6c 61 74 65 54 61 67 20 2a 2f 3a 0a 20 20 mplateTag */:. 0002a1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a200: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 return nod 0002a210: 65 20 3d 3d 3d 20 70 61 72 65 6e 74 2e 63 6f 6e e === parent.con 0002a220: 73 74 72 61 69 6e 74 3b 0a 20 20 20 20 20 20 20 straint;. 0002a230: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 cas 0002a240: 65 20 31 36 37 20 2f 2a 20 53 79 6e 74 61 78 4b e 167 /* SyntaxK 0002a250: 69 6e 64 2e 50 72 6f 70 65 72 74 79 44 65 63 6c ind.PropertyDecl 0002a260: 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 aration */:. 0002a270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a280: 63 61 73 65 20 31 36 36 20 2f 2a 20 53 79 6e 74 case 166 /* Synt 0002a290: 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 53 axKind.PropertyS 0002a2a0: 69 67 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 ignature */:. 0002a2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a2c0: 20 63 61 73 65 20 31 36 34 20 2f 2a 20 53 79 6e case 164 /* Syn 0002a2d0: 74 61 78 4b 69 6e 64 2e 50 61 72 61 6d 65 74 65 taxKind.Paramete 0002a2e0: 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 r */:. 0002a2f0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 0002a300: 35 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 54 /* SyntaxKind 0002a310: 2e 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 .VariableDeclara 0002a320: 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 tion */:. 0002a330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a340: 20 72 65 74 75 72 6e 20 6e 6f 64 65 20 3d 3d 3d return node === 0002a350: 20 70 61 72 65 6e 74 2e 74 79 70 65 3b 0a 20 20 parent.type;. 0002a360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a370: 20 20 63 61 73 65 20 32 35 36 20 2f 2a 20 53 79 case 256 /* Sy 0002a380: 6e 74 61 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f ntaxKind.Functio 0002a390: 6e 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a nDeclaration */: 0002a3a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002a3b0: 20 20 20 20 20 63 61 73 65 20 32 31 33 20 2f 2a case 213 /* 0002a3c0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 75 6e 63 SyntaxKind.Func 0002a3d0: 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 2a tionExpression * 0002a3e0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0002a3f0: 20 20 20 20 20 20 20 63 61 73 65 20 32 31 34 20 case 214 0002a400: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 72 /* SyntaxKind.Ar 0002a410: 72 6f 77 46 75 6e 63 74 69 6f 6e 20 2a 2f 3a 0a rowFunction */:. 0002a420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a430: 20 20 20 20 63 61 73 65 20 31 37 31 20 2f 2a 20 case 171 /* 0002a440: 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 SyntaxKind.Const 0002a450: 72 75 63 74 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 ructor */:. 0002a460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0002a470: 61 73 65 20 31 36 39 20 2f 2a 20 53 79 6e 74 61 ase 169 /* Synta 0002a480: 78 4b 69 6e 64 2e 4d 65 74 68 6f 64 44 65 63 6c xKind.MethodDecl 0002a490: 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 aration */:. 0002a4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a4b0: 63 61 73 65 20 31 36 38 20 2f 2a 20 53 79 6e 74 case 168 /* Synt 0002a4c0: 61 78 4b 69 6e 64 2e 4d 65 74 68 6f 64 53 69 67 axKind.MethodSig 0002a4d0: 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 20 nature */:. 0002a4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0002a4f0: 61 73 65 20 31 37 32 20 2f 2a 20 53 79 6e 74 61 ase 172 /* Synta 0002a500: 78 4b 69 6e 64 2e 47 65 74 41 63 63 65 73 73 6f xKind.GetAccesso 0002a510: 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 r */:. 0002a520: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 0002a530: 37 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 73 /* SyntaxKind 0002a540: 2e 53 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 3a .SetAccessor */: 0002a550: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002a560: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 0002a570: 6e 6f 64 65 20 3d 3d 3d 20 70 61 72 65 6e 74 2e node === parent. 0002a580: 74 79 70 65 3b 0a 20 20 20 20 20 20 20 20 20 20 type;. 0002a590: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 0002a5a0: 37 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 74 /* SyntaxKind 0002a5b0: 2e 43 61 6c 6c 53 69 67 6e 61 74 75 72 65 20 2a .CallSignature * 0002a5c0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0002a5d0: 20 20 20 20 20 20 20 63 61 73 65 20 31 37 35 20 case 175 0002a5e0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f /* SyntaxKind.Co 0002a5f0: 6e 73 74 72 75 63 74 53 69 67 6e 61 74 75 72 65 nstructSignature 0002a600: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 0002a610: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 case 17 0002a620: 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 6 /* SyntaxKind. 0002a630: 49 6e 64 65 78 53 69 67 6e 61 74 75 72 65 20 2a IndexSignature * 0002a640: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0002a650: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0002a660: 6e 20 6e 6f 64 65 20 3d 3d 3d 20 70 61 72 65 6e n node === paren 0002a670: 74 2e 74 79 70 65 3b 0a 20 20 20 20 20 20 20 20 t.type;. 0002a680: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0002a690: 20 32 31 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 211 /* SyntaxKi 0002a6a0: 6e 64 2e 54 79 70 65 41 73 73 65 72 74 69 6f 6e nd.TypeAssertion 0002a6b0: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 0002a6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a6d0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 0002a6e0: 64 65 20 3d 3d 3d 20 70 61 72 65 6e 74 2e 74 79 de === parent.ty 0002a6f0: 70 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 pe;. 0002a700: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 38 case 208 0002a710: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 /* SyntaxKind.C 0002a720: 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f allExpression */ 0002a730: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0002a740: 20 20 20 20 20 20 63 61 73 65 20 32 30 39 20 2f case 209 / 0002a750: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e 65 77 * SyntaxKind.New 0002a760: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 0002a770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a780: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 return ts 0002a790: 2e 63 6f 6e 74 61 69 6e 73 28 70 61 72 65 6e 74 .contains(parent 0002a7a0: 2e 74 79 70 65 41 72 67 75 6d 65 6e 74 73 2c 20 .typeArguments, 0002a7b0: 6e 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 20 20 node);. 0002a7c0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0002a7d0: 32 31 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 210 /* SyntaxKin 0002a7e0: 64 2e 54 61 67 67 65 64 54 65 6d 70 6c 61 74 65 d.TaggedTemplate 0002a7f0: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 0002a800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a810: 20 20 20 20 20 20 20 2f 2f 20 54 4f 44 4f 20 28 // TODO ( 0002a820: 64 72 6f 73 65 6e 29 3a 20 54 61 67 67 65 64 54 drosen): TaggedT 0002a830: 65 6d 70 6c 61 74 65 45 78 70 72 65 73 73 69 6f emplateExpressio 0002a840: 6e 73 20 6d 61 79 20 65 76 65 6e 74 75 61 6c 6c ns may eventuall 0002a850: 79 20 73 75 70 70 6f 72 74 20 74 79 70 65 20 61 y support type a 0002a860: 72 67 75 6d 65 6e 74 73 2e 0a 20 20 20 20 20 20 rguments.. 0002a870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a880: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a return false;. 0002a890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a8a0: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }. }. 0002a8b0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0002a8c0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a return false;. 0002a8d0: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 50 }. ts.isP 0002a8e0: 61 72 74 4f 66 54 79 70 65 4e 6f 64 65 20 3d 20 artOfTypeNode = 0002a8f0: 69 73 50 61 72 74 4f 66 54 79 70 65 4e 6f 64 65 isPartOfTypeNode 0002a900: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 0002a910: 73 43 68 69 6c 64 4f 66 4e 6f 64 65 57 69 74 68 sChildOfNodeWith 0002a920: 4b 69 6e 64 28 6e 6f 64 65 2c 20 6b 69 6e 64 29 Kind(node, kind) 0002a930: 20 7b 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 {. while 0002a940: 20 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 (node) {. 0002a950: 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e 6b if (node.k 0002a960: 69 6e 64 20 3d 3d 3d 20 6b 69 6e 64 29 20 7b 0a ind === kind) {. 0002a970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a980: 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 return true;. 0002a990: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 0002a9a0: 20 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 6e 6f node = no 0002a9b0: 64 65 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 de.parent;. 0002a9c0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 }. ret 0002a9d0: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d urn false;. } 0002a9e0: 0a 20 20 20 20 74 73 2e 69 73 43 68 69 6c 64 4f . ts.isChildO 0002a9f0: 66 4e 6f 64 65 57 69 74 68 4b 69 6e 64 20 3d 20 fNodeWithKind = 0002aa00: 69 73 43 68 69 6c 64 4f 66 4e 6f 64 65 57 69 74 isChildOfNodeWit 0002aa10: 68 4b 69 6e 64 3b 0a 20 20 20 20 2f 2f 20 57 61 hKind;. // Wa 0002aa20: 72 6e 69 6e 67 3a 20 54 68 69 73 20 68 61 73 20 rning: This has 0002aa30: 74 68 65 20 73 61 6d 65 20 73 65 6d 61 6e 74 69 the same semanti 0002aa40: 63 73 20 61 73 20 74 68 65 20 66 6f 72 45 61 63 cs as the forEac 0002aa50: 68 20 66 61 6d 69 6c 79 20 6f 66 20 66 75 6e 63 h family of func 0002aa60: 74 69 6f 6e 73 2c 0a 20 20 20 20 2f 2f 20 20 20 tions,. // 0002aa70: 20 20 20 20 20 20 20 69 6e 20 74 68 61 74 20 74 in that t 0002aa80: 72 61 76 65 72 73 61 6c 20 74 65 72 6d 69 6e 61 raversal termina 0002aa90: 74 65 73 20 69 6e 20 74 68 65 20 65 76 65 6e 74 tes in the event 0002aaa0: 20 74 68 61 74 20 27 76 69 73 69 74 6f 72 27 20 that 'visitor' 0002aab0: 73 75 70 70 6c 69 65 73 20 61 20 74 72 75 74 68 supplies a truth 0002aac0: 79 20 76 61 6c 75 65 2e 0a 20 20 20 20 66 75 6e y value.. fun 0002aad0: 63 74 69 6f 6e 20 66 6f 72 45 61 63 68 52 65 74 ction forEachRet 0002aae0: 75 72 6e 53 74 61 74 65 6d 65 6e 74 28 62 6f 64 urnStatement(bod 0002aaf0: 79 2c 20 76 69 73 69 74 6f 72 29 20 7b 0a 20 20 y, visitor) {. 0002ab00: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 61 return tra 0002ab10: 76 65 72 73 65 28 62 6f 64 79 29 3b 0a 20 20 20 verse(body);. 0002ab20: 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 74 72 function tr 0002ab30: 61 76 65 72 73 65 28 6e 6f 64 65 29 20 7b 0a 20 averse(node) {. 0002ab40: 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74 63 switc 0002ab50: 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 7b 0a h (node.kind) {. 0002ab60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002ab70: 63 61 73 65 20 32 34 37 20 2f 2a 20 53 79 6e 74 case 247 /* Synt 0002ab80: 61 78 4b 69 6e 64 2e 52 65 74 75 72 6e 53 74 61 axKind.ReturnSta 0002ab90: 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 tement */:. 0002aba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 0002abb0: 65 74 75 72 6e 20 76 69 73 69 74 6f 72 28 6e 6f eturn visitor(no 0002abc0: 64 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 de);. 0002abd0: 20 20 20 20 20 63 61 73 65 20 32 36 33 20 2f 2a case 263 /* 0002abe0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 61 73 65 SyntaxKind.Case 0002abf0: 42 6c 6f 63 6b 20 2a 2f 3a 0a 20 20 20 20 20 20 Block */:. 0002ac00: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 0002ac10: 33 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 35 /* SyntaxKind 0002ac20: 2e 42 6c 6f 63 6b 20 2a 2f 3a 0a 20 20 20 20 20 .Block */:. 0002ac30: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0002ac40: 32 33 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 239 /* SyntaxKin 0002ac50: 64 2e 49 66 53 74 61 74 65 6d 65 6e 74 20 2a 2f d.IfStatement */ 0002ac60: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0002ac70: 20 20 63 61 73 65 20 32 34 30 20 2f 2a 20 53 79 case 240 /* Sy 0002ac80: 6e 74 61 78 4b 69 6e 64 2e 44 6f 53 74 61 74 65 ntaxKind.DoState 0002ac90: 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ment */:. 0002aca0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 34 case 24 0002acb0: 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 1 /* SyntaxKind. 0002acc0: 57 68 69 6c 65 53 74 61 74 65 6d 65 6e 74 20 2a WhileStatement * 0002acd0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0002ace0: 20 20 20 63 61 73 65 20 32 34 32 20 2f 2a 20 53 case 242 /* S 0002acf0: 79 6e 74 61 78 4b 69 6e 64 2e 46 6f 72 53 74 61 yntaxKind.ForSta 0002ad00: 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 tement */:. 0002ad10: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0002ad20: 32 34 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 243 /* SyntaxKin 0002ad30: 64 2e 46 6f 72 49 6e 53 74 61 74 65 6d 65 6e 74 d.ForInStatement 0002ad40: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 0002ad50: 20 20 20 20 20 63 61 73 65 20 32 34 34 20 2f 2a case 244 /* 0002ad60: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 6f 72 4f SyntaxKind.ForO 0002ad70: 66 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 fStatement */:. 0002ad80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0002ad90: 61 73 65 20 32 34 38 20 2f 2a 20 53 79 6e 74 61 ase 248 /* Synta 0002ada0: 78 4b 69 6e 64 2e 57 69 74 68 53 74 61 74 65 6d xKind.WithStatem 0002adb0: 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ent */:. 0002adc0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 34 39 case 249 0002add0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 /* SyntaxKind.S 0002ade0: 77 69 74 63 68 53 74 61 74 65 6d 65 6e 74 20 2a witchStatement * 0002adf0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0002ae00: 20 20 20 63 61 73 65 20 32 38 39 20 2f 2a 20 53 case 289 /* S 0002ae10: 79 6e 74 61 78 4b 69 6e 64 2e 43 61 73 65 43 6c yntaxKind.CaseCl 0002ae20: 61 75 73 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ause */:. 0002ae30: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 39 case 29 0002ae40: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 0002ae50: 44 65 66 61 75 6c 74 43 6c 61 75 73 65 20 2a 2f DefaultClause */ 0002ae60: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0002ae70: 20 20 63 61 73 65 20 32 35 30 20 2f 2a 20 53 79 case 250 /* Sy 0002ae80: 6e 74 61 78 4b 69 6e 64 2e 4c 61 62 65 6c 65 64 ntaxKind.Labeled 0002ae90: 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 Statement */:. 0002aea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 0002aeb0: 73 65 20 32 35 32 20 2f 2a 20 53 79 6e 74 61 78 se 252 /* Syntax 0002aec0: 4b 69 6e 64 2e 54 72 79 53 74 61 74 65 6d 65 6e Kind.TryStatemen 0002aed0: 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 t */:. 0002aee0: 20 20 20 20 20 20 63 61 73 65 20 32 39 32 20 2f case 292 / 0002aef0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 61 74 * SyntaxKind.Cat 0002af00: 63 68 43 6c 61 75 73 65 20 2a 2f 3a 0a 20 20 20 chClause */:. 0002af10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002af20: 20 72 65 74 75 72 6e 20 74 73 2e 66 6f 72 45 61 return ts.forEa 0002af30: 63 68 43 68 69 6c 64 28 6e 6f 64 65 2c 20 74 72 chChild(node, tr 0002af40: 61 76 65 72 73 65 29 3b 0a 20 20 20 20 20 20 20 averse);. 0002af50: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d }. } 0002af60: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 66 6f . }. ts.fo 0002af70: 72 45 61 63 68 52 65 74 75 72 6e 53 74 61 74 65 rEachReturnState 0002af80: 6d 65 6e 74 20 3d 20 66 6f 72 45 61 63 68 52 65 ment = forEachRe 0002af90: 74 75 72 6e 53 74 61 74 65 6d 65 6e 74 3b 0a 20 turnStatement;. 0002afa0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 45 function forE 0002afb0: 61 63 68 59 69 65 6c 64 45 78 70 72 65 73 73 69 achYieldExpressi 0002afc0: 6f 6e 28 62 6f 64 79 2c 20 76 69 73 69 74 6f 72 on(body, visitor 0002afd0: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0002afe0: 72 6e 20 74 72 61 76 65 72 73 65 28 62 6f 64 79 rn traverse(body 0002aff0: 29 3b 0a 20 20 20 20 20 20 20 20 66 75 6e 63 74 );. funct 0002b000: 69 6f 6e 20 74 72 61 76 65 72 73 65 28 6e 6f 64 ion traverse(nod 0002b010: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 e) {. 0002b020: 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 switch (node.ki 0002b030: 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 nd) {. 0002b040: 20 20 20 20 20 20 63 61 73 65 20 32 32 34 20 2f case 224 / 0002b050: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 59 69 65 * SyntaxKind.Yie 0002b060: 6c 64 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a ldExpression */: 0002b070: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002b080: 20 20 20 20 20 76 69 73 69 74 6f 72 28 6e 6f 64 visitor(nod 0002b090: 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 e);. 0002b0a0: 20 20 20 20 20 20 20 20 76 61 72 20 6f 70 65 72 var oper 0002b0b0: 61 6e 64 20 3d 20 6e 6f 64 65 2e 65 78 70 72 65 and = node.expre 0002b0c0: 73 73 69 6f 6e 3b 0a 20 20 20 20 20 20 20 20 20 ssion;. 0002b0d0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f if (o 0002b0e0: 70 65 72 61 6e 64 29 20 7b 0a 20 20 20 20 20 20 perand) {. 0002b0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b100: 20 20 74 72 61 76 65 72 73 65 28 6f 70 65 72 61 traverse(opera 0002b110: 6e 64 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 nd);. 0002b120: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 0002b130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 0002b140: 65 74 75 72 6e 3b 0a 20 20 20 20 20 20 20 20 20 eturn;. 0002b150: 20 20 20 20 20 20 20 63 61 73 65 20 32 36 30 20 case 260 0002b160: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 6e /* SyntaxKind.En 0002b170: 75 6d 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f umDeclaration */ 0002b180: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0002b190: 20 20 63 61 73 65 20 32 35 38 20 2f 2a 20 53 79 case 258 /* Sy 0002b1a0: 6e 74 61 78 4b 69 6e 64 2e 49 6e 74 65 72 66 61 ntaxKind.Interfa 0002b1b0: 63 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f ceDeclaration */ 0002b1c0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0002b1d0: 20 20 63 61 73 65 20 32 36 31 20 2f 2a 20 53 79 case 261 /* Sy 0002b1e0: 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 75 6c 65 44 ntaxKind.ModuleD 0002b1f0: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 0002b200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0002b210: 61 73 65 20 32 35 39 20 2f 2a 20 53 79 6e 74 61 ase 259 /* Synta 0002b220: 78 4b 69 6e 64 2e 54 79 70 65 41 6c 69 61 73 44 xKind.TypeAliasD 0002b230: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 0002b240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b250: 20 20 20 2f 2f 20 54 68 65 73 65 20 61 72 65 20 // These are 0002b260: 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 69 6e 73 69 not allowed insi 0002b270: 64 65 20 61 20 67 65 6e 65 72 61 74 6f 72 20 6e de a generator n 0002b280: 6f 77 2c 20 62 75 74 20 65 76 65 6e 74 75 61 6c ow, but eventual 0002b290: 6c 79 20 74 68 65 79 20 6d 61 79 20 62 65 20 61 ly they may be a 0002b2a0: 6c 6c 6f 77 65 64 0a 20 20 20 20 20 20 20 20 20 llowed. 0002b2b0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 61 73 // as 0002b2c0: 20 6c 6f 63 61 6c 20 74 79 70 65 73 2e 20 52 65 local types. Re 0002b2d0: 67 61 72 64 6c 65 73 73 2c 20 73 6b 69 70 20 74 gardless, skip t 0002b2e0: 68 65 6d 20 74 6f 20 61 76 6f 69 64 20 74 68 65 hem to avoid the 0002b2f0: 20 77 6f 72 6b 2e 0a 20 20 20 20 20 20 20 20 20 work.. 0002b300: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0002b310: 6e 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 n;. 0002b320: 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 default:. 0002b330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b340: 69 66 20 28 74 73 2e 69 73 46 75 6e 63 74 69 6f if (ts.isFunctio 0002b350: 6e 4c 69 6b 65 28 6e 6f 64 65 29 29 20 7b 0a 20 nLike(node)) {. 0002b360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b370: 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e if (node. 0002b380: 6e 61 6d 65 20 26 26 20 6e 6f 64 65 2e 6e 61 6d name && node.nam 0002b390: 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 36 32 20 2f e.kind === 162 / 0002b3a0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6d * SyntaxKind.Com 0002b3b0: 70 75 74 65 64 50 72 6f 70 65 72 74 79 4e 61 6d putedPropertyNam 0002b3c0: 65 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 20 e */) {. 0002b3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b3e0: 20 20 20 20 2f 2f 20 4e 6f 74 65 20 74 68 61 74 // Note that 0002b3f0: 20 77 65 20 77 69 6c 6c 20 6e 6f 74 20 69 6e 63 we will not inc 0002b400: 6c 75 64 65 20 6d 65 74 68 6f 64 73 2f 61 63 63 lude methods/acc 0002b410: 65 73 73 6f 72 73 20 6f 66 20 61 20 63 6c 61 73 essors of a clas 0002b420: 73 20 62 65 63 61 75 73 65 20 74 68 65 79 20 77 s because they w 0002b430: 6f 75 6c 64 20 72 65 71 75 69 72 65 0a 20 20 20 ould require. 0002b440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b450: 20 20 20 20 20 20 20 20 20 2f 2f 20 66 69 72 73 // firs 0002b460: 74 20 64 65 73 63 65 6e 64 69 6e 67 20 69 6e 74 t descending int 0002b470: 6f 20 74 68 65 20 63 6c 61 73 73 2e 20 54 68 69 o the class. Thi 0002b480: 73 20 69 73 20 62 79 20 64 65 73 69 67 6e 2e 0a s is by design.. 0002b490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b4a0: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 76 trav 0002b4b0: 65 72 73 65 28 6e 6f 64 65 2e 6e 61 6d 65 2e 65 erse(node.name.e 0002b4c0: 78 70 72 65 73 73 69 6f 6e 29 3b 0a 20 20 20 20 xpression);. 0002b4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b4e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a return;. 0002b4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b500: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0002b510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }. 0002b520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b530: 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 69 73 else if (!is 0002b540: 50 61 72 74 4f 66 54 79 70 65 4e 6f 64 65 28 6e PartOfTypeNode(n 0002b550: 6f 64 65 29 29 20 7b 0a 20 20 20 20 20 20 20 20 ode)) {. 0002b560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b570: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 67 // This is the g 0002b580: 65 6e 65 72 61 6c 20 63 61 73 65 2c 20 77 68 69 eneral case, whi 0002b590: 63 68 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64 ch should includ 0002b5a0: 65 20 6d 6f 73 74 6c 79 20 65 78 70 72 65 73 73 e mostly express 0002b5b0: 69 6f 6e 73 20 61 6e 64 20 73 74 61 74 65 6d 65 ions and stateme 0002b5c0: 6e 74 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 nts.. 0002b5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 // 0002b5e0: 41 6c 73 6f 20 69 6e 63 6c 75 64 65 73 20 4e 6f Also includes No 0002b5f0: 64 65 41 72 72 61 79 73 2e 0a 20 20 20 20 20 20 deArrays.. 0002b600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b610: 20 20 74 73 2e 66 6f 72 45 61 63 68 43 68 69 6c ts.forEachChil 0002b620: 64 28 6e 6f 64 65 2c 20 74 72 61 76 65 72 73 65 d(node, traverse 0002b630: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 );. 0002b640: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 0002b650: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d }. } 0002b660: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 66 6f . }. ts.fo 0002b670: 72 45 61 63 68 59 69 65 6c 64 45 78 70 72 65 73 rEachYieldExpres 0002b680: 73 69 6f 6e 20 3d 20 66 6f 72 45 61 63 68 59 69 sion = forEachYi 0002b690: 65 6c 64 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 eldExpression;. 0002b6a0: 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 47 65 /**. * Ge 0002b6b0: 74 73 20 74 68 65 20 6d 6f 73 74 20 6c 69 6b 65 ts the most like 0002b6c0: 6c 79 20 65 6c 65 6d 65 6e 74 20 74 79 70 65 20 ly element type 0002b6d0: 66 6f 72 20 61 20 54 79 70 65 4e 6f 64 65 2e 20 for a TypeNode. 0002b6e0: 54 68 69 73 20 69 73 20 6e 6f 74 20 61 6e 20 65 This is not an e 0002b6f0: 78 68 61 75 73 74 69 76 65 20 74 65 73 74 0a 20 xhaustive test. 0002b700: 20 20 20 20 2a 20 61 73 20 69 74 20 61 73 73 75 * as it assu 0002b710: 6d 65 73 20 61 20 72 65 73 74 20 61 72 67 75 6d mes a rest argum 0002b720: 65 6e 74 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 ent can only be 0002b730: 61 6e 20 61 72 72 61 79 20 74 79 70 65 20 28 65 an array type (e 0002b740: 69 74 68 65 72 20 54 5b 5d 2c 20 6f 72 20 41 72 ither T[], or Ar 0002b750: 72 61 79 3c 54 3e 29 2e 0a 20 20 20 20 20 2a 0a ray<T>).. *. 0002b760: 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 6e 6f * @param no 0002b770: 64 65 20 54 68 65 20 74 79 70 65 20 6e 6f 64 65 de The type node 0002b780: 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 .. */. fu 0002b790: 6e 63 74 69 6f 6e 20 67 65 74 52 65 73 74 50 61 nction getRestPa 0002b7a0: 72 61 6d 65 74 65 72 45 6c 65 6d 65 6e 74 54 79 rameterElementTy 0002b7b0: 70 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 pe(node) {. 0002b7c0: 20 20 20 69 66 20 28 6e 6f 64 65 20 26 26 20 6e if (node && n 0002b7d0: 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 38 33 ode.kind === 183 0002b7e0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 /* SyntaxKind.A 0002b7f0: 72 72 61 79 54 79 70 65 20 2a 2f 29 20 7b 0a 20 rrayType */) {. 0002b800: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0002b810: 6e 20 6e 6f 64 65 2e 65 6c 65 6d 65 6e 74 54 79 n node.elementTy 0002b820: 70 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 pe;. }. 0002b830: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6e else if (n 0002b840: 6f 64 65 20 26 26 20 6e 6f 64 65 2e 6b 69 6e 64 ode && node.kind 0002b850: 20 3d 3d 3d 20 31 37 38 20 2f 2a 20 53 79 6e 74 === 178 /* Synt 0002b860: 61 78 4b 69 6e 64 2e 54 79 70 65 52 65 66 65 72 axKind.TypeRefer 0002b870: 65 6e 63 65 20 2a 2f 29 20 7b 0a 20 20 20 20 20 ence */) {. 0002b880: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 return ts 0002b890: 2e 73 69 6e 67 6c 65 4f 72 55 6e 64 65 66 69 6e .singleOrUndefin 0002b8a0: 65 64 28 6e 6f 64 65 2e 74 79 70 65 41 72 67 75 ed(node.typeArgu 0002b8b0: 6d 65 6e 74 73 29 3b 0a 20 20 20 20 20 20 20 20 ments);. 0002b8c0: 7d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b }. else { 0002b8d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret 0002b8e0: 75 72 6e 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 urn undefined;. 0002b8f0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 }. }. 0002b900: 20 20 20 74 73 2e 67 65 74 52 65 73 74 50 61 72 ts.getRestPar 0002b910: 61 6d 65 74 65 72 45 6c 65 6d 65 6e 74 54 79 70 ameterElementTyp 0002b920: 65 20 3d 20 67 65 74 52 65 73 74 50 61 72 61 6d e = getRestParam 0002b930: 65 74 65 72 45 6c 65 6d 65 6e 74 54 79 70 65 3b eterElementType; 0002b940: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 0002b950: 74 4d 65 6d 62 65 72 73 4f 66 44 65 63 6c 61 72 tMembersOfDeclar 0002b960: 61 74 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 ation(node) {. 0002b970: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 6e 6f switch (no 0002b980: 64 65 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 de.kind) {. 0002b990: 20 20 20 20 20 20 20 63 61 73 65 20 32 35 38 20 case 258 0002b9a0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6e /* SyntaxKind.In 0002b9b0: 74 65 72 66 61 63 65 44 65 63 6c 61 72 61 74 69 terfaceDeclarati 0002b9c0: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 0002b9d0: 20 20 20 63 61 73 65 20 32 35 37 20 2f 2a 20 53 case 257 /* S 0002b9e0: 79 6e 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 44 yntaxKind.ClassD 0002b9f0: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 0002ba00: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0002ba10: 32 32 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 226 /* SyntaxKin 0002ba20: 64 2e 43 6c 61 73 73 45 78 70 72 65 73 73 69 6f d.ClassExpressio 0002ba30: 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 n */:. 0002ba40: 20 20 63 61 73 65 20 31 38 32 20 2f 2a 20 53 79 case 182 /* Sy 0002ba50: 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 4c 69 74 ntaxKind.TypeLit 0002ba60: 65 72 61 6c 20 2a 2f 3a 0a 20 20 20 20 20 20 20 eral */:. 0002ba70: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 0002ba80: 6e 6f 64 65 2e 6d 65 6d 62 65 72 73 3b 0a 20 20 node.members;. 0002ba90: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 0002baa0: 30 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 05 /* SyntaxKind 0002bab0: 2e 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 45 78 .ObjectLiteralEx 0002bac0: 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 pression */:. 0002bad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 0002bae0: 75 72 6e 20 6e 6f 64 65 2e 70 72 6f 70 65 72 74 urn node.propert 0002baf0: 69 65 73 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 ies;. }. 0002bb00: 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4d }. ts.getM 0002bb10: 65 6d 62 65 72 73 4f 66 44 65 63 6c 61 72 61 74 embersOfDeclarat 0002bb20: 69 6f 6e 20 3d 20 67 65 74 4d 65 6d 62 65 72 73 ion = getMembers 0002bb30: 4f 66 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 OfDeclaration;. 0002bb40: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 56 61 function isVa 0002bb50: 72 69 61 62 6c 65 4c 69 6b 65 28 6e 6f 64 65 29 riableLike(node) 0002bb60: 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e {. if (n 0002bb70: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ode) {. 0002bb80: 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e switch (node. 0002bb90: 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 kind) {. 0002bba0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 33 case 203 0002bbb0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 /* SyntaxKind.B 0002bbc0: 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 20 2a 2f indingElement */ 0002bbd0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0002bbe0: 20 20 63 61 73 65 20 32 39 39 20 2f 2a 20 53 79 case 299 /* Sy 0002bbf0: 6e 74 61 78 4b 69 6e 64 2e 45 6e 75 6d 4d 65 6d ntaxKind.EnumMem 0002bc00: 62 65 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ber */:. 0002bc10: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 36 34 case 164 0002bc20: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 /* SyntaxKind.P 0002bc30: 61 72 61 6d 65 74 65 72 20 2a 2f 3a 0a 20 20 20 arameter */:. 0002bc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 cas 0002bc50: 65 20 32 39 36 20 2f 2a 20 53 79 6e 74 61 78 4b e 296 /* SyntaxK 0002bc60: 69 6e 64 2e 50 72 6f 70 65 72 74 79 41 73 73 69 ind.PropertyAssi 0002bc70: 67 6e 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 gnment */:. 0002bc80: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0002bc90: 31 36 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 167 /* SyntaxKin 0002bca0: 64 2e 50 72 6f 70 65 72 74 79 44 65 63 6c 61 72 d.PropertyDeclar 0002bcb0: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 0002bcc0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 0002bcd0: 36 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 66 /* SyntaxKind 0002bce0: 2e 50 72 6f 70 65 72 74 79 53 69 67 6e 61 74 75 .PropertySignatu 0002bcf0: 72 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 re */:. 0002bd00: 20 20 20 20 20 20 20 63 61 73 65 20 32 39 37 20 case 297 0002bd10: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 68 /* SyntaxKind.Sh 0002bd20: 6f 72 74 68 61 6e 64 50 72 6f 70 65 72 74 79 41 orthandPropertyA 0002bd30: 73 73 69 67 6e 6d 65 6e 74 20 2a 2f 3a 0a 20 20 ssignment */:. 0002bd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 0002bd50: 73 65 20 32 35 34 20 2f 2a 20 53 79 6e 74 61 78 se 254 /* Syntax 0002bd60: 4b 69 6e 64 2e 56 61 72 69 61 62 6c 65 44 65 63 Kind.VariableDec 0002bd70: 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 laration */:. 0002bd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002bd90: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 return true;. 0002bda0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 0002bdb0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 }. re 0002bdc0: 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 turn false;. 0002bdd0: 7d 0a 20 20 20 20 74 73 2e 69 73 56 61 72 69 61 }. ts.isVaria 0002bde0: 62 6c 65 4c 69 6b 65 20 3d 20 69 73 56 61 72 69 bleLike = isVari 0002bdf0: 61 62 6c 65 4c 69 6b 65 3b 0a 20 20 20 20 66 75 ableLike;. fu 0002be00: 6e 63 74 69 6f 6e 20 69 73 56 61 72 69 61 62 6c nction isVariabl 0002be10: 65 4c 69 6b 65 4f 72 41 63 63 65 73 73 6f 72 28 eLikeOrAccessor( 0002be20: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 0002be30: 72 65 74 75 72 6e 20 69 73 56 61 72 69 61 62 6c return isVariabl 0002be40: 65 4c 69 6b 65 28 6e 6f 64 65 29 20 7c 7c 20 74 eLike(node) || t 0002be50: 73 2e 69 73 41 63 63 65 73 73 6f 72 28 6e 6f 64 s.isAccessor(nod 0002be60: 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 e);. }. ts 0002be70: 2e 69 73 56 61 72 69 61 62 6c 65 4c 69 6b 65 4f .isVariableLikeO 0002be80: 72 41 63 63 65 73 73 6f 72 20 3d 20 69 73 56 61 rAccessor = isVa 0002be90: 72 69 61 62 6c 65 4c 69 6b 65 4f 72 41 63 63 65 riableLikeOrAcce 0002bea0: 73 73 6f 72 3b 0a 20 20 20 20 66 75 6e 63 74 69 ssor;. functi 0002beb0: 6f 6e 20 69 73 56 61 72 69 61 62 6c 65 44 65 63 on isVariableDec 0002bec0: 6c 61 72 61 74 69 6f 6e 49 6e 56 61 72 69 61 62 larationInVariab 0002bed0: 6c 65 53 74 61 74 65 6d 65 6e 74 28 6e 6f 64 65 leStatement(node 0002bee0: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0002bef0: 72 6e 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b rn node.parent.k 0002bf00: 69 6e 64 20 3d 3d 3d 20 32 35 35 20 2f 2a 20 53 ind === 255 /* S 0002bf10: 79 6e 74 61 78 4b 69 6e 64 2e 56 61 72 69 61 62 yntaxKind.Variab 0002bf20: 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 4c 69 73 leDeclarationLis 0002bf30: 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 t */. 0002bf40: 20 26 26 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e && node.parent. 0002bf50: 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 parent.kind === 0002bf60: 32 33 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 237 /* SyntaxKin 0002bf70: 64 2e 56 61 72 69 61 62 6c 65 53 74 61 74 65 6d d.VariableStatem 0002bf80: 65 6e 74 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ent */;. }. 0002bf90: 20 20 74 73 2e 69 73 56 61 72 69 61 62 6c 65 44 ts.isVariableD 0002bfa0: 65 63 6c 61 72 61 74 69 6f 6e 49 6e 56 61 72 69 eclarationInVari 0002bfb0: 61 62 6c 65 53 74 61 74 65 6d 65 6e 74 20 3d 20 ableStatement = 0002bfc0: 69 73 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 isVariableDeclar 0002bfd0: 61 74 69 6f 6e 49 6e 56 61 72 69 61 62 6c 65 53 ationInVariableS 0002bfe0: 74 61 74 65 6d 65 6e 74 3b 0a 20 20 20 20 66 75 tatement;. fu 0002bff0: 6e 63 74 69 6f 6e 20 69 73 43 6f 6d 6d 6f 6e 4a nction isCommonJ 0002c000: 73 45 78 70 6f 72 74 65 64 45 78 70 72 65 73 73 sExportedExpress 0002c010: 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ion(node) {. 0002c020: 20 20 20 20 69 66 20 28 21 69 73 49 6e 4a 53 46 if (!isInJSF 0002c030: 69 6c 65 28 6e 6f 64 65 29 29 0a 20 20 20 20 20 ile(node)). 0002c040: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 return fa 0002c050: 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 72 65 74 lse;. ret 0002c060: 75 72 6e 20 28 74 73 2e 69 73 4f 62 6a 65 63 74 urn (ts.isObject 0002c070: 4c 69 74 65 72 61 6c 45 78 70 72 65 73 73 69 6f LiteralExpressio 0002c080: 6e 28 6e 6f 64 65 2e 70 61 72 65 6e 74 29 20 26 n(node.parent) & 0002c090: 26 20 74 73 2e 69 73 42 69 6e 61 72 79 45 78 70 & ts.isBinaryExp 0002c0a0: 72 65 73 73 69 6f 6e 28 6e 6f 64 65 2e 70 61 72 ression(node.par 0002c0b0: 65 6e 74 2e 70 61 72 65 6e 74 29 20 26 26 20 67 ent.parent) && g 0002c0c0: 65 74 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c etAssignmentDecl 0002c0d0: 61 72 61 74 69 6f 6e 4b 69 6e 64 28 6e 6f 64 65 arationKind(node 0002c0e0: 2e 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 29 20 .parent.parent) 0002c0f0: 3d 3d 3d 20 32 20 2f 2a 20 41 73 73 69 67 6e 6d === 2 /* Assignm 0002c100: 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b 69 entDeclarationKi 0002c110: 6e 64 2e 4d 6f 64 75 6c 65 45 78 70 6f 72 74 73 nd.ModuleExports 0002c120: 20 2a 2f 29 20 7c 7c 0a 20 20 20 20 20 20 20 20 */) ||. 0002c130: 20 20 20 20 69 73 43 6f 6d 6d 6f 6e 4a 73 45 78 isCommonJsEx 0002c140: 70 6f 72 74 50 72 6f 70 65 72 74 79 41 73 73 69 portPropertyAssi 0002c150: 67 6e 6d 65 6e 74 28 6e 6f 64 65 2e 70 61 72 65 gnment(node.pare 0002c160: 6e 74 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 nt);. }. t 0002c170: 73 2e 69 73 43 6f 6d 6d 6f 6e 4a 73 45 78 70 6f s.isCommonJsExpo 0002c180: 72 74 65 64 45 78 70 72 65 73 73 69 6f 6e 20 3d rtedExpression = 0002c190: 20 69 73 43 6f 6d 6d 6f 6e 4a 73 45 78 70 6f 72 isCommonJsExpor 0002c1a0: 74 65 64 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 tedExpression;. 0002c1b0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 43 6f function isCo 0002c1c0: 6d 6d 6f 6e 4a 73 45 78 70 6f 72 74 50 72 6f 70 mmonJsExportProp 0002c1d0: 65 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 28 6e ertyAssignment(n 0002c1e0: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 69 ode) {. i 0002c1f0: 66 20 28 21 69 73 49 6e 4a 53 46 69 6c 65 28 6e f (!isInJSFile(n 0002c200: 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 ode)). 0002c210: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a return false;. 0002c220: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 return ( 0002c230: 74 73 2e 69 73 42 69 6e 61 72 79 45 78 70 72 65 ts.isBinaryExpre 0002c240: 73 73 69 6f 6e 28 6e 6f 64 65 29 20 26 26 20 67 ssion(node) && g 0002c250: 65 74 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c etAssignmentDecl 0002c260: 61 72 61 74 69 6f 6e 4b 69 6e 64 28 6e 6f 64 65 arationKind(node 0002c270: 29 20 3d 3d 3d 20 31 20 2f 2a 20 41 73 73 69 67 ) === 1 /* Assig 0002c280: 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e nmentDeclaration 0002c290: 4b 69 6e 64 2e 45 78 70 6f 72 74 73 50 72 6f 70 Kind.ExportsProp 0002c2a0: 65 72 74 79 20 2a 2f 29 3b 0a 20 20 20 20 7d 0a erty */);. }. 0002c2b0: 20 20 20 20 74 73 2e 69 73 43 6f 6d 6d 6f 6e 4a ts.isCommonJ 0002c2c0: 73 45 78 70 6f 72 74 50 72 6f 70 65 72 74 79 41 sExportPropertyA 0002c2d0: 73 73 69 67 6e 6d 65 6e 74 20 3d 20 69 73 43 6f ssignment = isCo 0002c2e0: 6d 6d 6f 6e 4a 73 45 78 70 6f 72 74 50 72 6f 70 mmonJsExportProp 0002c2f0: 65 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 3b 0a ertyAssignment;. 0002c300: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 56 function isV 0002c310: 61 6c 69 64 45 53 53 79 6d 62 6f 6c 44 65 63 6c alidESSymbolDecl 0002c320: 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a aration(node) {. 0002c330: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 return ( 0002c340: 74 73 2e 69 73 56 61 72 69 61 62 6c 65 44 65 63 ts.isVariableDec 0002c350: 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 20 3f laration(node) ? 0002c360: 20 69 73 56 61 72 43 6f 6e 73 74 28 6e 6f 64 65 isVarConst(node 0002c370: 29 20 26 26 20 74 73 2e 69 73 49 64 65 6e 74 69 ) && ts.isIdenti 0002c380: 66 69 65 72 28 6e 6f 64 65 2e 6e 61 6d 65 29 20 fier(node.name) 0002c390: 26 26 20 69 73 56 61 72 69 61 62 6c 65 44 65 63 && isVariableDec 0002c3a0: 6c 61 72 61 74 69 6f 6e 49 6e 56 61 72 69 61 62 larationInVariab 0002c3b0: 6c 65 53 74 61 74 65 6d 65 6e 74 28 6e 6f 64 65 leStatement(node 0002c3c0: 29 20 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) :. 0002c3d0: 74 73 2e 69 73 50 72 6f 70 65 72 74 79 44 65 63 ts.isPropertyDec 0002c3e0: 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 20 3f laration(node) ? 0002c3f0: 20 68 61 73 45 66 66 65 63 74 69 76 65 52 65 61 hasEffectiveRea 0002c400: 64 6f 6e 6c 79 4d 6f 64 69 66 69 65 72 28 6e 6f donlyModifier(no 0002c410: 64 65 29 20 26 26 20 68 61 73 53 74 61 74 69 63 de) && hasStatic 0002c420: 4d 6f 64 69 66 69 65 72 28 6e 6f 64 65 29 20 3a Modifier(node) : 0002c430: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002c440: 20 74 73 2e 69 73 50 72 6f 70 65 72 74 79 53 69 ts.isPropertySi 0002c450: 67 6e 61 74 75 72 65 28 6e 6f 64 65 29 20 26 26 gnature(node) && 0002c460: 20 68 61 73 45 66 66 65 63 74 69 76 65 52 65 61 hasEffectiveRea 0002c470: 64 6f 6e 6c 79 4d 6f 64 69 66 69 65 72 28 6e 6f donlyModifier(no 0002c480: 64 65 29 29 20 7c 7c 20 69 73 43 6f 6d 6d 6f 6e de)) || isCommon 0002c490: 4a 73 45 78 70 6f 72 74 50 72 6f 70 65 72 74 79 JsExportProperty 0002c4a0: 41 73 73 69 67 6e 6d 65 6e 74 28 6e 6f 64 65 29 Assignment(node) 0002c4b0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 0002c4c0: 73 56 61 6c 69 64 45 53 53 79 6d 62 6f 6c 44 65 sValidESSymbolDe 0002c4d0: 63 6c 61 72 61 74 69 6f 6e 20 3d 20 69 73 56 61 claration = isVa 0002c4e0: 6c 69 64 45 53 53 79 6d 62 6f 6c 44 65 63 6c 61 lidESSymbolDecla 0002c4f0: 72 61 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 ration;. func 0002c500: 74 69 6f 6e 20 69 6e 74 72 6f 64 75 63 65 73 41 tion introducesA 0002c510: 72 67 75 6d 65 6e 74 73 45 78 6f 74 69 63 4f 62 rgumentsExoticOb 0002c520: 6a 65 63 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 ject(node) {. 0002c530: 20 20 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 switch (nod 0002c540: 65 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 e.kind) {. 0002c550: 20 20 20 20 20 20 63 61 73 65 20 31 36 39 20 2f case 169 / 0002c560: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 74 * SyntaxKind.Met 0002c570: 68 6f 64 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a hodDeclaration * 0002c580: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 0002c590: 61 73 65 20 31 36 38 20 2f 2a 20 53 79 6e 74 61 ase 168 /* Synta 0002c5a0: 78 4b 69 6e 64 2e 4d 65 74 68 6f 64 53 69 67 6e xKind.MethodSign 0002c5b0: 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 20 20 ature */:. 0002c5c0: 20 20 20 20 20 20 63 61 73 65 20 31 37 31 20 2f case 171 / 0002c5d0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6e * SyntaxKind.Con 0002c5e0: 73 74 72 75 63 74 6f 72 20 2a 2f 3a 0a 20 20 20 structor */:. 0002c5f0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 case 17 0002c600: 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 2 /* SyntaxKind. 0002c610: 47 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 3a 0a GetAccessor */:. 0002c620: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0002c630: 20 31 37 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 173 /* SyntaxKi 0002c640: 6e 64 2e 53 65 74 41 63 63 65 73 73 6f 72 20 2a nd.SetAccessor * 0002c650: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 0002c660: 61 73 65 20 32 35 36 20 2f 2a 20 53 79 6e 74 61 ase 256 /* Synta 0002c670: 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 44 65 xKind.FunctionDe 0002c680: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 0002c690: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 0002c6a0: 31 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 13 /* SyntaxKind 0002c6b0: 2e 46 75 6e 63 74 69 6f 6e 45 78 70 72 65 73 73 .FunctionExpress 0002c6c0: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 0002c6d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 0002c6e0: 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 rue;. }. 0002c6f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 return fa 0002c700: 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 lse;. }. t 0002c710: 73 2e 69 6e 74 72 6f 64 75 63 65 73 41 72 67 75 s.introducesArgu 0002c720: 6d 65 6e 74 73 45 78 6f 74 69 63 4f 62 6a 65 63 mentsExoticObjec 0002c730: 74 20 3d 20 69 6e 74 72 6f 64 75 63 65 73 41 72 t = introducesAr 0002c740: 67 75 6d 65 6e 74 73 45 78 6f 74 69 63 4f 62 6a gumentsExoticObj 0002c750: 65 63 74 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ect;. functio 0002c760: 6e 20 75 6e 77 72 61 70 49 6e 6e 65 72 6d 6f 73 n unwrapInnermos 0002c770: 74 53 74 61 74 65 6d 65 6e 74 4f 66 4c 61 62 65 tStatementOfLabe 0002c780: 6c 28 6e 6f 64 65 2c 20 62 65 66 6f 72 65 55 6e l(node, beforeUn 0002c790: 77 72 61 70 4c 61 62 65 6c 43 61 6c 6c 62 61 63 wrapLabelCallbac 0002c7a0: 6b 29 20 7b 0a 20 20 20 20 20 20 20 20 77 68 69 k) {. whi 0002c7b0: 6c 65 20 28 74 72 75 65 29 20 7b 0a 20 20 20 20 le (true) {. 0002c7c0: 20 20 20 20 20 20 20 20 69 66 20 28 62 65 66 6f if (befo 0002c7d0: 72 65 55 6e 77 72 61 70 4c 61 62 65 6c 43 61 6c reUnwrapLabelCal 0002c7e0: 6c 62 61 63 6b 29 20 7b 0a 20 20 20 20 20 20 20 lback) {. 0002c7f0: 20 20 20 20 20 20 20 20 20 62 65 66 6f 72 65 55 beforeU 0002c800: 6e 77 72 61 70 4c 61 62 65 6c 43 61 6c 6c 62 61 nwrapLabelCallba 0002c810: 63 6b 28 6e 6f 64 65 29 3b 0a 20 20 20 20 20 20 ck(node);. 0002c820: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 0002c830: 20 20 20 20 69 66 20 28 6e 6f 64 65 2e 73 74 61 if (node.sta 0002c840: 74 65 6d 65 6e 74 2e 6b 69 6e 64 20 21 3d 3d 20 tement.kind !== 0002c850: 32 35 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 250 /* SyntaxKin 0002c860: 64 2e 4c 61 62 65 6c 65 64 53 74 61 74 65 6d 65 d.LabeledStateme 0002c870: 6e 74 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 nt */) {. 0002c880: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 0002c890: 6e 6f 64 65 2e 73 74 61 74 65 6d 65 6e 74 3b 0a node.statement;. 0002c8a0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. 0002c8b0: 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d node = 0002c8c0: 20 6e 6f 64 65 2e 73 74 61 74 65 6d 65 6e 74 3b node.statement; 0002c8d0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d . }. } 0002c8e0: 0a 20 20 20 20 74 73 2e 75 6e 77 72 61 70 49 6e . ts.unwrapIn 0002c8f0: 6e 65 72 6d 6f 73 74 53 74 61 74 65 6d 65 6e 74 nermostStatement 0002c900: 4f 66 4c 61 62 65 6c 20 3d 20 75 6e 77 72 61 70 OfLabel = unwrap 0002c910: 49 6e 6e 65 72 6d 6f 73 74 53 74 61 74 65 6d 65 InnermostStateme 0002c920: 6e 74 4f 66 4c 61 62 65 6c 3b 0a 20 20 20 20 66 ntOfLabel;. f 0002c930: 75 6e 63 74 69 6f 6e 20 69 73 46 75 6e 63 74 69 unction isFuncti 0002c940: 6f 6e 42 6c 6f 63 6b 28 6e 6f 64 65 29 20 7b 0a onBlock(node) {. 0002c950: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e return n 0002c960: 6f 64 65 20 26 26 20 6e 6f 64 65 2e 6b 69 6e 64 ode && node.kind 0002c970: 20 3d 3d 3d 20 32 33 35 20 2f 2a 20 53 79 6e 74 === 235 /* Synt 0002c980: 61 78 4b 69 6e 64 2e 42 6c 6f 63 6b 20 2a 2f 20 axKind.Block */ 0002c990: 26 26 20 74 73 2e 69 73 46 75 6e 63 74 69 6f 6e && ts.isFunction 0002c9a0: 4c 69 6b 65 28 6e 6f 64 65 2e 70 61 72 65 6e 74 Like(node.parent 0002c9b0: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 0002c9c0: 69 73 46 75 6e 63 74 69 6f 6e 42 6c 6f 63 6b 20 isFunctionBlock 0002c9d0: 3d 20 69 73 46 75 6e 63 74 69 6f 6e 42 6c 6f 63 = isFunctionBloc 0002c9e0: 6b 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 k;. function 0002c9f0: 69 73 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 4d isObjectLiteralM 0002ca00: 65 74 68 6f 64 28 6e 6f 64 65 29 20 7b 0a 20 20 ethod(node) {. 0002ca10: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 return nod 0002ca20: 65 20 26 26 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d e && node.kind = 0002ca30: 3d 3d 20 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 == 169 /* Syntax 0002ca40: 4b 69 6e 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 Kind.MethodDecla 0002ca50: 72 61 74 69 6f 6e 20 2a 2f 20 26 26 20 6e 6f 64 ration */ && nod 0002ca60: 65 2e 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d e.parent.kind == 0002ca70: 3d 20 32 30 35 20 2f 2a 20 53 79 6e 74 61 78 4b = 205 /* SyntaxK 0002ca80: 69 6e 64 2e 4f 62 6a 65 63 74 4c 69 74 65 72 61 ind.ObjectLitera 0002ca90: 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3b 0a lExpression */;. 0002caa0: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4f }. ts.isO 0002cab0: 62 6a 65 63 74 4c 69 74 65 72 61 6c 4d 65 74 68 bjectLiteralMeth 0002cac0: 6f 64 20 3d 20 69 73 4f 62 6a 65 63 74 4c 69 74 od = isObjectLit 0002cad0: 65 72 61 6c 4d 65 74 68 6f 64 3b 0a 20 20 20 20 eralMethod;. 0002cae0: 66 75 6e 63 74 69 6f 6e 20 69 73 4f 62 6a 65 63 function isObjec 0002caf0: 74 4c 69 74 65 72 61 6c 4f 72 43 6c 61 73 73 45 tLiteralOrClassE 0002cb00: 78 70 72 65 73 73 69 6f 6e 4d 65 74 68 6f 64 4f xpressionMethodO 0002cb10: 72 41 63 63 65 73 73 6f 72 28 6e 6f 64 65 29 20 rAccessor(node) 0002cb20: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 0002cb30: 20 28 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 (node.kind === 0002cb40: 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 169 /* SyntaxKin 0002cb50: 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 72 61 74 d.MethodDeclarat 0002cb60: 69 6f 6e 20 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 6b ion */ || node.k 0002cb70: 69 6e 64 20 3d 3d 3d 20 31 37 32 20 2f 2a 20 53 ind === 172 /* S 0002cb80: 79 6e 74 61 78 4b 69 6e 64 2e 47 65 74 41 63 63 yntaxKind.GetAcc 0002cb90: 65 73 73 6f 72 20 2a 2f 20 7c 7c 20 6e 6f 64 65 essor */ || node 0002cba0: 2e 6b 69 6e 64 20 3d 3d 3d 20 31 37 33 20 2f 2a .kind === 173 /* 0002cbb0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 65 74 41 SyntaxKind.SetA 0002cbc0: 63 63 65 73 73 6f 72 20 2a 2f 29 20 26 26 0a 20 ccessor */) &&. 0002cbd0: 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 64 65 (node 0002cbe0: 2e 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d .parent.kind === 0002cbf0: 20 32 30 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 205 /* SyntaxKi 0002cc00: 6e 64 2e 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c nd.ObjectLiteral 0002cc10: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 20 7c 7c Expression */ || 0002cc20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002cc30: 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b 69 6e node.parent.kin 0002cc40: 64 20 3d 3d 3d 20 32 32 36 20 2f 2a 20 53 79 6e d === 226 /* Syn 0002cc50: 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 45 78 70 taxKind.ClassExp 0002cc60: 72 65 73 73 69 6f 6e 20 2a 2f 29 3b 0a 20 20 20 ression */);. 0002cc70: 20 7d 0a 20 20 20 20 74 73 2e 69 73 4f 62 6a 65 }. ts.isObje 0002cc80: 63 74 4c 69 74 65 72 61 6c 4f 72 43 6c 61 73 73 ctLiteralOrClass 0002cc90: 45 78 70 72 65 73 73 69 6f 6e 4d 65 74 68 6f 64 ExpressionMethod 0002cca0: 4f 72 41 63 63 65 73 73 6f 72 20 3d 20 69 73 4f OrAccessor = isO 0002ccb0: 62 6a 65 63 74 4c 69 74 65 72 61 6c 4f 72 43 6c bjectLiteralOrCl 0002ccc0: 61 73 73 45 78 70 72 65 73 73 69 6f 6e 4d 65 74 assExpressionMet 0002ccd0: 68 6f 64 4f 72 41 63 63 65 73 73 6f 72 3b 0a 20 hodOrAccessor;. 0002cce0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 49 64 function isId 0002ccf0: 65 6e 74 69 66 69 65 72 54 79 70 65 50 72 65 64 entifierTypePred 0002cd00: 69 63 61 74 65 28 70 72 65 64 69 63 61 74 65 29 icate(predicate) 0002cd10: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 0002cd20: 6e 20 70 72 65 64 69 63 61 74 65 20 26 26 20 70 n predicate && p 0002cd30: 72 65 64 69 63 61 74 65 2e 6b 69 6e 64 20 3d 3d redicate.kind == 0002cd40: 3d 20 31 20 2f 2a 20 54 79 70 65 50 72 65 64 69 = 1 /* TypePredi 0002cd50: 63 61 74 65 4b 69 6e 64 2e 49 64 65 6e 74 69 66 cateKind.Identif 0002cd60: 69 65 72 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ier */;. }. 0002cd70: 20 20 74 73 2e 69 73 49 64 65 6e 74 69 66 69 65 ts.isIdentifie 0002cd80: 72 54 79 70 65 50 72 65 64 69 63 61 74 65 20 3d rTypePredicate = 0002cd90: 20 69 73 49 64 65 6e 74 69 66 69 65 72 54 79 70 isIdentifierTyp 0002cda0: 65 50 72 65 64 69 63 61 74 65 3b 0a 20 20 20 20 ePredicate;. 0002cdb0: 66 75 6e 63 74 69 6f 6e 20 69 73 54 68 69 73 54 function isThisT 0002cdc0: 79 70 65 50 72 65 64 69 63 61 74 65 28 70 72 65 ypePredicate(pre 0002cdd0: 64 69 63 61 74 65 29 20 7b 0a 20 20 20 20 20 20 dicate) {. 0002cde0: 20 20 72 65 74 75 72 6e 20 70 72 65 64 69 63 61 return predica 0002cdf0: 74 65 20 26 26 20 70 72 65 64 69 63 61 74 65 2e te && predicate. 0002ce00: 6b 69 6e 64 20 3d 3d 3d 20 30 20 2f 2a 20 54 79 kind === 0 /* Ty 0002ce10: 70 65 50 72 65 64 69 63 61 74 65 4b 69 6e 64 2e pePredicateKind. 0002ce20: 54 68 69 73 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 This */;. }. 0002ce30: 20 20 20 74 73 2e 69 73 54 68 69 73 54 79 70 65 ts.isThisType 0002ce40: 50 72 65 64 69 63 61 74 65 20 3d 20 69 73 54 68 Predicate = isTh 0002ce50: 69 73 54 79 70 65 50 72 65 64 69 63 61 74 65 3b isTypePredicate; 0002ce60: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 0002ce70: 74 50 72 6f 70 65 72 74 79 41 73 73 69 67 6e 6d tPropertyAssignm 0002ce80: 65 6e 74 28 6f 62 6a 65 63 74 4c 69 74 65 72 61 ent(objectLitera 0002ce90: 6c 2c 20 6b 65 79 2c 20 6b 65 79 32 29 20 7b 0a l, key, key2) {. 0002cea0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f return o 0002ceb0: 62 6a 65 63 74 4c 69 74 65 72 61 6c 2e 70 72 6f bjectLiteral.pro 0002cec0: 70 65 72 74 69 65 73 2e 66 69 6c 74 65 72 28 66 perties.filter(f 0002ced0: 75 6e 63 74 69 6f 6e 20 28 70 72 6f 70 65 72 74 unction (propert 0002cee0: 79 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 y) {. 0002cef0: 20 69 66 20 28 70 72 6f 70 65 72 74 79 2e 6b 69 if (property.ki 0002cf00: 6e 64 20 3d 3d 3d 20 32 39 36 20 2f 2a 20 53 79 nd === 296 /* Sy 0002cf10: 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 ntaxKind.Propert 0002cf20: 79 41 73 73 69 67 6e 6d 65 6e 74 20 2a 2f 29 20 yAssignment */) 0002cf30: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 0002cf40: 20 20 76 61 72 20 70 72 6f 70 4e 61 6d 65 20 3d var propName = 0002cf50: 20 74 72 79 47 65 74 54 65 78 74 4f 66 50 72 6f tryGetTextOfPro 0002cf60: 70 65 72 74 79 4e 61 6d 65 28 70 72 6f 70 65 72 pertyName(proper 0002cf70: 74 79 2e 6e 61 6d 65 29 3b 0a 20 20 20 20 20 20 ty.name);. 0002cf80: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 0002cf90: 20 6b 65 79 20 3d 3d 3d 20 70 72 6f 70 4e 61 6d key === propNam 0002cfa0: 65 20 7c 7c 20 28 21 21 6b 65 79 32 20 26 26 20 e || (!!key2 && 0002cfb0: 6b 65 79 32 20 3d 3d 3d 20 70 72 6f 70 4e 61 6d key2 === propNam 0002cfc0: 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 e);. 0002cfd0: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 }. re 0002cfe0: 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 turn false;. 0002cff0: 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d 0a 20 20 });. }. 0002d000: 20 20 74 73 2e 67 65 74 50 72 6f 70 65 72 74 79 ts.getProperty 0002d010: 41 73 73 69 67 6e 6d 65 6e 74 20 3d 20 67 65 74 Assignment = get 0002d020: 50 72 6f 70 65 72 74 79 41 73 73 69 67 6e 6d 65 PropertyAssignme 0002d030: 6e 74 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e nt;. function 0002d040: 20 67 65 74 50 72 6f 70 65 72 74 79 41 72 72 61 getPropertyArra 0002d050: 79 45 6c 65 6d 65 6e 74 56 61 6c 75 65 28 6f 62 yElementValue(ob 0002d060: 6a 65 63 74 4c 69 74 65 72 61 6c 2c 20 70 72 6f jectLiteral, pro 0002d070: 70 4b 65 79 2c 20 65 6c 65 6d 65 6e 74 56 61 6c pKey, elementVal 0002d080: 75 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 ue) {. re 0002d090: 74 75 72 6e 20 74 73 2e 66 69 72 73 74 44 65 66 turn ts.firstDef 0002d0a0: 69 6e 65 64 28 67 65 74 50 72 6f 70 65 72 74 79 ined(getProperty 0002d0b0: 41 73 73 69 67 6e 6d 65 6e 74 28 6f 62 6a 65 63 Assignment(objec 0002d0c0: 74 4c 69 74 65 72 61 6c 2c 20 70 72 6f 70 4b 65 tLiteral, propKe 0002d0d0: 79 29 2c 20 66 75 6e 63 74 69 6f 6e 20 28 70 72 y), function (pr 0002d0e0: 6f 70 65 72 74 79 29 20 7b 0a 20 20 20 20 20 20 operty) {. 0002d0f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 0002d100: 69 73 41 72 72 61 79 4c 69 74 65 72 61 6c 45 78 isArrayLiteralEx 0002d110: 70 72 65 73 73 69 6f 6e 28 70 72 6f 70 65 72 74 pression(propert 0002d120: 79 2e 69 6e 69 74 69 61 6c 69 7a 65 72 29 20 3f y.initializer) ? 0002d130: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002d140: 20 74 73 2e 66 69 6e 64 28 70 72 6f 70 65 72 74 ts.find(propert 0002d150: 79 2e 69 6e 69 74 69 61 6c 69 7a 65 72 2e 65 6c y.initializer.el 0002d160: 65 6d 65 6e 74 73 2c 20 66 75 6e 63 74 69 6f 6e ements, function 0002d170: 20 28 65 6c 65 6d 65 6e 74 29 20 7b 20 72 65 74 (element) { ret 0002d180: 75 72 6e 20 74 73 2e 69 73 53 74 72 69 6e 67 4c urn ts.isStringL 0002d190: 69 74 65 72 61 6c 28 65 6c 65 6d 65 6e 74 29 20 iteral(element) 0002d1a0: 26 26 20 65 6c 65 6d 65 6e 74 2e 74 65 78 74 20 && element.text 0002d1b0: 3d 3d 3d 20 65 6c 65 6d 65 6e 74 56 61 6c 75 65 === elementValue 0002d1c0: 3b 20 7d 29 20 3a 0a 20 20 20 20 20 20 20 20 20 ; }) :. 0002d1d0: 20 20 20 20 20 20 20 75 6e 64 65 66 69 6e 65 64 undefined 0002d1e0: 3b 0a 20 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 ;. });. 0002d1f0: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 50 72 }. ts.getPr 0002d200: 6f 70 65 72 74 79 41 72 72 61 79 45 6c 65 6d 65 opertyArrayEleme 0002d210: 6e 74 56 61 6c 75 65 20 3d 20 67 65 74 50 72 6f ntValue = getPro 0002d220: 70 65 72 74 79 41 72 72 61 79 45 6c 65 6d 65 6e pertyArrayElemen 0002d230: 74 56 61 6c 75 65 3b 0a 20 20 20 20 66 75 6e 63 tValue;. func 0002d240: 74 69 6f 6e 20 67 65 74 54 73 43 6f 6e 66 69 67 tion getTsConfig 0002d250: 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 45 78 70 ObjectLiteralExp 0002d260: 72 65 73 73 69 6f 6e 28 74 73 43 6f 6e 66 69 67 ression(tsConfig 0002d270: 53 6f 75 72 63 65 46 69 6c 65 29 20 7b 0a 20 20 SourceFile) {. 0002d280: 20 20 20 20 20 20 69 66 20 28 74 73 43 6f 6e 66 if (tsConf 0002d290: 69 67 53 6f 75 72 63 65 46 69 6c 65 20 26 26 20 igSourceFile && 0002d2a0: 74 73 43 6f 6e 66 69 67 53 6f 75 72 63 65 46 69 tsConfigSourceFi 0002d2b0: 6c 65 2e 73 74 61 74 65 6d 65 6e 74 73 2e 6c 65 le.statements.le 0002d2c0: 6e 67 74 68 29 20 7b 0a 20 20 20 20 20 20 20 20 ngth) {. 0002d2d0: 20 20 20 20 76 61 72 20 65 78 70 72 65 73 73 69 var expressi 0002d2e0: 6f 6e 20 3d 20 74 73 43 6f 6e 66 69 67 53 6f 75 on = tsConfigSou 0002d2f0: 72 63 65 46 69 6c 65 2e 73 74 61 74 65 6d 65 6e rceFile.statemen 0002d300: 74 73 5b 30 5d 2e 65 78 70 72 65 73 73 69 6f 6e ts[0].expression 0002d310: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 ;. re 0002d320: 74 75 72 6e 20 74 73 2e 74 72 79 43 61 73 74 28 turn ts.tryCast( 0002d330: 65 78 70 72 65 73 73 69 6f 6e 2c 20 74 73 2e 69 expression, ts.i 0002d340: 73 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 45 78 sObjectLiteralEx 0002d350: 70 72 65 73 73 69 6f 6e 29 3b 0a 20 20 20 20 20 pression);. 0002d360: 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 }. }. t 0002d370: 73 2e 67 65 74 54 73 43 6f 6e 66 69 67 4f 62 6a s.getTsConfigObj 0002d380: 65 63 74 4c 69 74 65 72 61 6c 45 78 70 72 65 73 ectLiteralExpres 0002d390: 73 69 6f 6e 20 3d 20 67 65 74 54 73 43 6f 6e 66 sion = getTsConf 0002d3a0: 69 67 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 45 igObjectLiteralE 0002d3b0: 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 20 66 xpression;. f 0002d3c0: 75 6e 63 74 69 6f 6e 20 67 65 74 54 73 43 6f 6e unction getTsCon 0002d3d0: 66 69 67 50 72 6f 70 41 72 72 61 79 45 6c 65 6d figPropArrayElem 0002d3e0: 65 6e 74 56 61 6c 75 65 28 74 73 43 6f 6e 66 69 entValue(tsConfi 0002d3f0: 67 53 6f 75 72 63 65 46 69 6c 65 2c 20 70 72 6f gSourceFile, pro 0002d400: 70 4b 65 79 2c 20 65 6c 65 6d 65 6e 74 56 61 6c pKey, elementVal 0002d410: 75 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 ue) {. re 0002d420: 74 75 72 6e 20 74 73 2e 66 69 72 73 74 44 65 66 turn ts.firstDef 0002d430: 69 6e 65 64 28 67 65 74 54 73 43 6f 6e 66 69 67 ined(getTsConfig 0002d440: 50 72 6f 70 41 72 72 61 79 28 74 73 43 6f 6e 66 PropArray(tsConf 0002d450: 69 67 53 6f 75 72 63 65 46 69 6c 65 2c 20 70 72 igSourceFile, pr 0002d460: 6f 70 4b 65 79 29 2c 20 66 75 6e 63 74 69 6f 6e opKey), function 0002d470: 20 28 70 72 6f 70 65 72 74 79 29 20 7b 0a 20 20 (property) {. 0002d480: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 0002d490: 20 74 73 2e 69 73 41 72 72 61 79 4c 69 74 65 72 ts.isArrayLiter 0002d4a0: 61 6c 45 78 70 72 65 73 73 69 6f 6e 28 70 72 6f alExpression(pro 0002d4b0: 70 65 72 74 79 2e 69 6e 69 74 69 61 6c 69 7a 65 perty.initialize 0002d4c0: 72 29 20 3f 0a 20 20 20 20 20 20 20 20 20 20 20 r) ?. 0002d4d0: 20 20 20 20 20 74 73 2e 66 69 6e 64 28 70 72 6f ts.find(pro 0002d4e0: 70 65 72 74 79 2e 69 6e 69 74 69 61 6c 69 7a 65 perty.initialize 0002d4f0: 72 2e 65 6c 65 6d 65 6e 74 73 2c 20 66 75 6e 63 r.elements, func 0002d500: 74 69 6f 6e 20 28 65 6c 65 6d 65 6e 74 29 20 7b tion (element) { 0002d510: 20 72 65 74 75 72 6e 20 74 73 2e 69 73 53 74 72 return ts.isStr 0002d520: 69 6e 67 4c 69 74 65 72 61 6c 28 65 6c 65 6d 65 ingLiteral(eleme 0002d530: 6e 74 29 20 26 26 20 65 6c 65 6d 65 6e 74 2e 74 nt) && element.t 0002d540: 65 78 74 20 3d 3d 3d 20 65 6c 65 6d 65 6e 74 56 ext === elementV 0002d550: 61 6c 75 65 3b 20 7d 29 20 3a 0a 20 20 20 20 20 alue; }) :. 0002d560: 20 20 20 20 20 20 20 20 20 20 20 75 6e 64 65 66 undef 0002d570: 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 7d 29 ined;. }) 0002d580: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 ;. }. ts.g 0002d590: 65 74 54 73 43 6f 6e 66 69 67 50 72 6f 70 41 72 etTsConfigPropAr 0002d5a0: 72 61 79 45 6c 65 6d 65 6e 74 56 61 6c 75 65 20 rayElementValue 0002d5b0: 3d 20 67 65 74 54 73 43 6f 6e 66 69 67 50 72 6f = getTsConfigPro 0002d5c0: 70 41 72 72 61 79 45 6c 65 6d 65 6e 74 56 61 6c pArrayElementVal 0002d5d0: 75 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ue;. function 0002d5e0: 20 67 65 74 54 73 43 6f 6e 66 69 67 50 72 6f 70 getTsConfigProp 0002d5f0: 41 72 72 61 79 28 74 73 43 6f 6e 66 69 67 53 6f Array(tsConfigSo 0002d600: 75 72 63 65 46 69 6c 65 2c 20 70 72 6f 70 4b 65 urceFile, propKe 0002d610: 79 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 y) {. var 0002d620: 20 6a 73 6f 6e 4f 62 6a 65 63 74 4c 69 74 65 72 jsonObjectLiter 0002d630: 61 6c 20 3d 20 67 65 74 54 73 43 6f 6e 66 69 67 al = getTsConfig 0002d640: 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 45 78 70 ObjectLiteralExp 0002d650: 72 65 73 73 69 6f 6e 28 74 73 43 6f 6e 66 69 67 ression(tsConfig 0002d660: 53 6f 75 72 63 65 46 69 6c 65 29 3b 0a 20 20 20 SourceFile);. 0002d670: 20 20 20 20 20 72 65 74 75 72 6e 20 6a 73 6f 6e return json 0002d680: 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 20 3f 20 ObjectLiteral ? 0002d690: 67 65 74 50 72 6f 70 65 72 74 79 41 73 73 69 67 getPropertyAssig 0002d6a0: 6e 6d 65 6e 74 28 6a 73 6f 6e 4f 62 6a 65 63 74 nment(jsonObject 0002d6b0: 4c 69 74 65 72 61 6c 2c 20 70 72 6f 70 4b 65 79 Literal, propKey 0002d6c0: 29 20 3a 20 74 73 2e 65 6d 70 74 79 41 72 72 61 ) : ts.emptyArra 0002d6d0: 79 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e y;. }. ts. 0002d6e0: 67 65 74 54 73 43 6f 6e 66 69 67 50 72 6f 70 41 getTsConfigPropA 0002d6f0: 72 72 61 79 20 3d 20 67 65 74 54 73 43 6f 6e 66 rray = getTsConf 0002d700: 69 67 50 72 6f 70 41 72 72 61 79 3b 0a 20 20 20 igPropArray;. 0002d710: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 43 6f 6e function getCon 0002d720: 74 61 69 6e 69 6e 67 46 75 6e 63 74 69 6f 6e 28 tainingFunction( 0002d730: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 0002d740: 72 65 74 75 72 6e 20 74 73 2e 66 69 6e 64 41 6e return ts.findAn 0002d750: 63 65 73 74 6f 72 28 6e 6f 64 65 2e 70 61 72 65 cestor(node.pare 0002d760: 6e 74 2c 20 74 73 2e 69 73 46 75 6e 63 74 69 6f nt, ts.isFunctio 0002d770: 6e 4c 69 6b 65 29 3b 0a 20 20 20 20 7d 0a 20 20 nLike);. }. 0002d780: 20 20 74 73 2e 67 65 74 43 6f 6e 74 61 69 6e 69 ts.getContaini 0002d790: 6e 67 46 75 6e 63 74 69 6f 6e 20 3d 20 67 65 74 ngFunction = get 0002d7a0: 43 6f 6e 74 61 69 6e 69 6e 67 46 75 6e 63 74 69 ContainingFuncti 0002d7b0: 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e on;. function 0002d7c0: 20 67 65 74 43 6f 6e 74 61 69 6e 69 6e 67 46 75 getContainingFu 0002d7d0: 6e 63 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 6f nctionDeclaratio 0002d7e0: 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 n(node) {. 0002d7f0: 20 20 72 65 74 75 72 6e 20 74 73 2e 66 69 6e 64 return ts.find 0002d800: 41 6e 63 65 73 74 6f 72 28 6e 6f 64 65 2e 70 61 Ancestor(node.pa 0002d810: 72 65 6e 74 2c 20 74 73 2e 69 73 46 75 6e 63 74 rent, ts.isFunct 0002d820: 69 6f 6e 4c 69 6b 65 44 65 63 6c 61 72 61 74 69 ionLikeDeclarati 0002d830: 6f 6e 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 on);. }. t 0002d840: 73 2e 67 65 74 43 6f 6e 74 61 69 6e 69 6e 67 46 s.getContainingF 0002d850: 75 6e 63 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 unctionDeclarati 0002d860: 6f 6e 20 3d 20 67 65 74 43 6f 6e 74 61 69 6e 69 on = getContaini 0002d870: 6e 67 46 75 6e 63 74 69 6f 6e 44 65 63 6c 61 72 ngFunctionDeclar 0002d880: 61 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 ation;. funct 0002d890: 69 6f 6e 20 67 65 74 43 6f 6e 74 61 69 6e 69 6e ion getContainin 0002d8a0: 67 43 6c 61 73 73 28 6e 6f 64 65 29 20 7b 0a 20 gClass(node) {. 0002d8b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 return ts 0002d8c0: 2e 66 69 6e 64 41 6e 63 65 73 74 6f 72 28 6e 6f .findAncestor(no 0002d8d0: 64 65 2e 70 61 72 65 6e 74 2c 20 74 73 2e 69 73 de.parent, ts.is 0002d8e0: 43 6c 61 73 73 4c 69 6b 65 29 3b 0a 20 20 20 20 ClassLike);. 0002d8f0: 7d 0a 20 20 20 20 74 73 2e 67 65 74 43 6f 6e 74 }. ts.getCont 0002d900: 61 69 6e 69 6e 67 43 6c 61 73 73 20 3d 20 67 65 ainingClass = ge 0002d910: 74 43 6f 6e 74 61 69 6e 69 6e 67 43 6c 61 73 73 tContainingClass 0002d920: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 ;. function g 0002d930: 65 74 43 6f 6e 74 61 69 6e 69 6e 67 43 6c 61 73 etContainingClas 0002d940: 73 53 74 61 74 69 63 42 6c 6f 63 6b 28 6e 6f 64 sStaticBlock(nod 0002d950: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 e) {. ret 0002d960: 75 72 6e 20 74 73 2e 66 69 6e 64 41 6e 63 65 73 urn ts.findAnces 0002d970: 74 6f 72 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2c tor(node.parent, 0002d980: 20 66 75 6e 63 74 69 6f 6e 20 28 6e 29 20 7b 0a function (n) {. 0002d990: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if ( 0002d9a0: 74 73 2e 69 73 43 6c 61 73 73 4c 69 6b 65 28 6e ts.isClassLike(n 0002d9b0: 29 20 7c 7c 20 74 73 2e 69 73 46 75 6e 63 74 69 ) || ts.isFuncti 0002d9c0: 6f 6e 4c 69 6b 65 28 6e 29 29 20 7b 0a 20 20 20 onLike(n)) {. 0002d9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 0002d9e0: 75 72 6e 20 22 71 75 69 74 22 3b 0a 20 20 20 20 urn "quit";. 0002d9f0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0002da00: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 0002da10: 69 73 43 6c 61 73 73 53 74 61 74 69 63 42 6c 6f isClassStaticBlo 0002da20: 63 6b 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 29 ckDeclaration(n) 0002da30: 3b 0a 20 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 ;. });. 0002da40: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 43 6f }. ts.getCo 0002da50: 6e 74 61 69 6e 69 6e 67 43 6c 61 73 73 53 74 61 ntainingClassSta 0002da60: 74 69 63 42 6c 6f 63 6b 20 3d 20 67 65 74 43 6f ticBlock = getCo 0002da70: 6e 74 61 69 6e 69 6e 67 43 6c 61 73 73 53 74 61 ntainingClassSta 0002da80: 74 69 63 42 6c 6f 63 6b 3b 0a 20 20 20 20 66 75 ticBlock;. fu 0002da90: 6e 63 74 69 6f 6e 20 67 65 74 43 6f 6e 74 61 69 nction getContai 0002daa0: 6e 69 6e 67 46 75 6e 63 74 69 6f 6e 4f 72 43 6c ningFunctionOrCl 0002dab0: 61 73 73 53 74 61 74 69 63 42 6c 6f 63 6b 28 6e assStaticBlock(n 0002dac0: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 0002dad0: 65 74 75 72 6e 20 74 73 2e 66 69 6e 64 41 6e 63 eturn ts.findAnc 0002dae0: 65 73 74 6f 72 28 6e 6f 64 65 2e 70 61 72 65 6e estor(node.paren 0002daf0: 74 2c 20 74 73 2e 69 73 46 75 6e 63 74 69 6f 6e t, ts.isFunction 0002db00: 4c 69 6b 65 4f 72 43 6c 61 73 73 53 74 61 74 69 LikeOrClassStati 0002db10: 63 42 6c 6f 63 6b 44 65 63 6c 61 72 61 74 69 6f cBlockDeclaratio 0002db20: 6e 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 n);. }. ts 0002db30: 2e 67 65 74 43 6f 6e 74 61 69 6e 69 6e 67 46 75 .getContainingFu 0002db40: 6e 63 74 69 6f 6e 4f 72 43 6c 61 73 73 53 74 61 nctionOrClassSta 0002db50: 74 69 63 42 6c 6f 63 6b 20 3d 20 67 65 74 43 6f ticBlock = getCo 0002db60: 6e 74 61 69 6e 69 6e 67 46 75 6e 63 74 69 6f 6e ntainingFunction 0002db70: 4f 72 43 6c 61 73 73 53 74 61 74 69 63 42 6c 6f OrClassStaticBlo 0002db80: 63 6b 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ck;. function 0002db90: 20 67 65 74 54 68 69 73 43 6f 6e 74 61 69 6e 65 getThisContaine 0002dba0: 72 28 6e 6f 64 65 2c 20 69 6e 63 6c 75 64 65 41 r(node, includeA 0002dbb0: 72 72 6f 77 46 75 6e 63 74 69 6f 6e 73 29 20 7b rrowFunctions) { 0002dbc0: 0a 20 20 20 20 20 20 20 20 74 73 2e 44 65 62 75 . ts.Debu 0002dbd0: 67 2e 61 73 73 65 72 74 28 6e 6f 64 65 2e 6b 69 g.assert(node.ki 0002dbe0: 6e 64 20 21 3d 3d 20 33 30 35 20 2f 2a 20 53 79 nd !== 305 /* Sy 0002dbf0: 6e 74 61 78 4b 69 6e 64 2e 53 6f 75 72 63 65 46 ntaxKind.SourceF 0002dc00: 69 6c 65 20 2a 2f 29 3b 0a 20 20 20 20 20 20 20 ile */);. 0002dc10: 20 77 68 69 6c 65 20 28 74 72 75 65 29 20 7b 0a while (true) {. 0002dc20: 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 node 0002dc30: 20 3d 20 6e 6f 64 65 2e 70 61 72 65 6e 74 3b 0a = node.parent;. 0002dc40: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if ( 0002dc50: 21 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 !node) {. 0002dc60: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 0002dc70: 74 73 2e 44 65 62 75 67 2e 66 61 69 6c 28 29 3b ts.Debug.fail(); 0002dc80: 20 2f 2f 20 49 66 20 77 65 20 6e 65 76 65 72 20 // If we never 0002dc90: 70 61 73 73 20 69 6e 20 61 20 53 6f 75 72 63 65 pass in a Source 0002dca0: 46 69 6c 65 2c 20 74 68 69 73 20 73 68 6f 75 6c File, this shoul 0002dcb0: 64 20 62 65 20 75 6e 72 65 61 63 68 61 62 6c 65 d be unreachable 0002dcc0: 2c 20 73 69 6e 63 65 20 77 65 27 6c 6c 20 73 74 , since we'll st 0002dcd0: 6f 70 20 77 68 65 6e 20 77 65 20 72 65 61 63 68 op when we reach 0002dce0: 20 74 68 61 74 2e 0a 20 20 20 20 20 20 20 20 20 that.. 0002dcf0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 0002dd00: 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 switch (node.ki 0002dd10: 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 nd) {. 0002dd20: 20 20 20 20 20 20 63 61 73 65 20 31 36 32 20 2f case 162 / 0002dd30: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6d * SyntaxKind.Com 0002dd40: 70 75 74 65 64 50 72 6f 70 65 72 74 79 4e 61 6d putedPropertyNam 0002dd50: 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 e */:. 0002dd60: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 // If 0002dd70: 74 68 65 20 67 72 61 6e 64 70 61 72 65 6e 74 20 the grandparent 0002dd80: 6e 6f 64 65 20 69 73 20 61 6e 20 6f 62 6a 65 63 node is an objec 0002dd90: 74 20 6c 69 74 65 72 61 6c 20 28 61 73 20 6f 70 t literal (as op 0002dda0: 70 6f 73 65 64 20 74 6f 20 61 20 63 6c 61 73 73 posed to a class 0002ddb0: 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ),. 0002ddc0: 20 20 20 20 20 20 20 2f 2f 20 74 68 65 6e 20 74 // then t 0002ddd0: 68 65 20 63 6f 6d 70 75 74 65 64 20 70 72 6f 70 he computed prop 0002dde0: 65 72 74 79 20 69 73 20 6e 6f 74 20 61 20 27 74 erty is not a 't 0002ddf0: 68 69 73 27 20 63 6f 6e 74 61 69 6e 65 72 2e 0a his' container.. 0002de00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002de10: 20 20 20 20 2f 2f 20 41 20 63 6f 6d 70 75 74 65 // A compute 0002de20: 64 20 70 72 6f 70 65 72 74 79 20 6e 61 6d 65 20 d property name 0002de30: 69 6e 20 61 20 63 6c 61 73 73 20 6e 65 65 64 73 in a class needs 0002de40: 20 74 6f 20 62 65 20 61 20 74 68 69 73 20 63 6f to be a this co 0002de50: 6e 74 61 69 6e 65 72 0a 20 20 20 20 20 20 20 20 ntainer. 0002de60: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 73 // s 0002de70: 6f 20 74 68 61 74 20 77 65 20 63 61 6e 20 65 72 o that we can er 0002de80: 72 6f 72 20 6f 6e 20 69 74 2e 0a 20 20 20 20 20 ror on it.. 0002de90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i 0002dea0: 66 20 28 74 73 2e 69 73 43 6c 61 73 73 4c 69 6b f (ts.isClassLik 0002deb0: 65 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 70 61 e(node.parent.pa 0002dec0: 72 65 6e 74 29 29 20 7b 0a 20 20 20 20 20 20 20 rent)) {. 0002ded0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002dee0: 20 72 65 74 75 72 6e 20 6e 6f 64 65 3b 0a 20 20 return node;. 0002def0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002df00: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }. 0002df10: 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 74 68 // If th 0002df20: 69 73 20 69 73 20 61 20 63 6f 6d 70 75 74 65 64 is is a computed 0002df30: 20 70 72 6f 70 65 72 74 79 2c 20 74 68 65 6e 20 property, then 0002df40: 74 68 65 20 70 61 72 65 6e 74 20 73 68 6f 75 6c the parent shoul 0002df50: 64 20 6e 6f 74 0a 20 20 20 20 20 20 20 20 20 20 d not. 0002df60: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 6d 61 6b // mak 0002df70: 65 20 69 74 20 61 20 74 68 69 73 20 63 6f 6e 74 e it a this cont 0002df80: 61 69 6e 65 72 2e 20 54 68 65 20 70 61 72 65 6e ainer. The paren 0002df90: 74 20 6d 69 67 68 74 20 62 65 20 61 20 70 72 6f t might be a pro 0002dfa0: 70 65 72 74 79 0a 20 20 20 20 20 20 20 20 20 20 perty. 0002dfb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 6e 20 // in 0002dfc0: 61 6e 20 6f 62 6a 65 63 74 20 6c 69 74 65 72 61 an object litera 0002dfd0: 6c 2c 20 6c 69 6b 65 20 61 20 6d 65 74 68 6f 64 l, like a method 0002dfe0: 20 6f 72 20 61 63 63 65 73 73 6f 72 2e 20 42 75 or accessor. Bu 0002dff0: 74 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 0a 20 t in order for. 0002e000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002e010: 20 20 20 2f 2f 20 73 75 63 68 20 61 20 70 61 72 // such a par 0002e020: 65 6e 74 20 74 6f 20 62 65 20 61 20 74 68 69 73 ent to be a this 0002e030: 20 63 6f 6e 74 61 69 6e 65 72 2c 20 74 68 65 20 container, the 0002e040: 72 65 66 65 72 65 6e 63 65 20 6d 75 73 74 20 62 reference must b 0002e050: 65 20 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 e in. 0002e060: 20 20 20 20 20 20 20 20 20 2f 2f 20 74 68 65 20 // the 0002e070: 2a 62 6f 64 79 2a 20 6f 66 20 74 68 65 20 63 6f *body* of the co 0002e080: 6e 74 61 69 6e 65 72 2e 0a 20 20 20 20 20 20 20 ntainer.. 0002e090: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 nod 0002e0a0: 65 20 3d 20 6e 6f 64 65 2e 70 61 72 65 6e 74 3b e = node.parent; 0002e0b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002e0c0: 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 break;. 0002e0d0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0002e0e0: 20 31 36 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 165 /* SyntaxKi 0002e0f0: 6e 64 2e 44 65 63 6f 72 61 74 6f 72 20 2a 2f 3a nd.Decorator */: 0002e100: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002e110: 20 20 20 20 20 2f 2f 20 44 65 63 6f 72 61 74 6f // Decorato 0002e120: 72 73 20 61 72 65 20 61 6c 77 61 79 73 20 61 70 rs are always ap 0002e130: 70 6c 69 65 64 20 6f 75 74 73 69 64 65 20 6f 66 plied outside of 0002e140: 20 74 68 65 20 62 6f 64 79 20 6f 66 20 61 20 63 the body of a c 0002e150: 6c 61 73 73 20 6f 72 20 6d 65 74 68 6f 64 2e 0a lass or method.. 0002e160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002e170: 20 20 20 20 69 66 20 28 6e 6f 64 65 2e 70 61 72 if (node.par 0002e180: 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 31 36 34 ent.kind === 164 0002e190: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 /* SyntaxKind.P 0002e1a0: 61 72 61 6d 65 74 65 72 20 2a 2f 20 26 26 20 74 arameter */ && t 0002e1b0: 73 2e 69 73 43 6c 61 73 73 45 6c 65 6d 65 6e 74 s.isClassElement 0002e1c0: 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 70 61 72 (node.parent.par 0002e1d0: 65 6e 74 29 29 20 7b 0a 20 20 20 20 20 20 20 20 ent)) {. 0002e1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002e1f0: 2f 2f 20 49 66 20 74 68 65 20 64 65 63 6f 72 61 // If the decora 0002e200: 74 6f 72 27 73 20 70 61 72 65 6e 74 20 69 73 20 tor's parent is 0002e210: 61 20 50 61 72 61 6d 65 74 65 72 2c 20 77 65 20 a Parameter, we 0002e220: 72 65 73 6f 6c 76 65 20 74 68 65 20 74 68 69 73 resolve the this 0002e230: 20 63 6f 6e 74 61 69 6e 65 72 20 66 72 6f 6d 0a container from. 0002e240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002e250: 20 20 20 20 20 20 20 20 2f 2f 20 74 68 65 20 67 // the g 0002e260: 72 61 6e 64 70 61 72 65 6e 74 20 63 6c 61 73 73 randparent class 0002e270: 20 64 65 63 6c 61 72 61 74 69 6f 6e 2e 0a 20 20 declaration.. 0002e280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002e290: 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 6e 6f 64 node = nod 0002e2a0: 65 2e 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 3b e.parent.parent; 0002e2b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002e2c0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 }. 0002e2d0: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 else 0002e2e0: 69 66 20 28 74 73 2e 69 73 43 6c 61 73 73 45 6c if (ts.isClassEl 0002e2f0: 65 6d 65 6e 74 28 6e 6f 64 65 2e 70 61 72 65 6e ement(node.paren 0002e300: 74 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 t)) {. 0002e310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f // 0002e320: 20 49 66 20 74 68 65 20 64 65 63 6f 72 61 74 6f If the decorato 0002e330: 72 27 73 20 70 61 72 65 6e 74 20 69 73 20 61 20 r's parent is a 0002e340: 63 6c 61 73 73 20 65 6c 65 6d 65 6e 74 2c 20 77 class element, w 0002e350: 65 20 72 65 73 6f 6c 76 65 20 74 68 65 20 27 74 e resolve the 't 0002e360: 68 69 73 27 20 63 6f 6e 74 61 69 6e 65 72 0a 20 his' container. 0002e370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002e380: 20 20 20 20 20 20 20 2f 2f 20 66 72 6f 6d 20 74 // from t 0002e390: 68 65 20 70 61 72 65 6e 74 20 63 6c 61 73 73 20 he parent class 0002e3a0: 64 65 63 6c 61 72 61 74 69 6f 6e 2e 0a 20 20 20 declaration.. 0002e3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002e3c0: 20 20 20 20 20 6e 6f 64 65 20 3d 20 6e 6f 64 65 node = node 0002e3d0: 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 .parent;. 0002e3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 }. 0002e3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002e400: 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 break;. 0002e410: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 0002e420: 31 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 14 /* SyntaxKind 0002e430: 2e 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e 20 2a .ArrowFunction * 0002e440: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0002e450: 20 20 20 20 20 20 20 69 66 20 28 21 69 6e 63 6c if (!incl 0002e460: 75 64 65 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e udeArrowFunction 0002e470: 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 s) {. 0002e480: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e con 0002e490: 74 69 6e 75 65 3b 0a 20 20 20 20 20 20 20 20 20 tinue;. 0002e4a0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 0002e4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 // 0002e4c0: 66 61 6c 6c 73 20 74 68 72 6f 75 67 68 0a 20 20 falls through. 0002e4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 0002e4e0: 73 65 20 32 35 36 20 2f 2a 20 53 79 6e 74 61 78 se 256 /* Syntax 0002e4f0: 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 44 65 63 Kind.FunctionDec 0002e500: 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 laration */:. 0002e510: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 cas 0002e520: 65 20 32 31 33 20 2f 2a 20 53 79 6e 74 61 78 4b e 213 /* SyntaxK 0002e530: 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 45 78 70 72 ind.FunctionExpr 0002e540: 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ession */:. 0002e550: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0002e560: 32 36 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 261 /* SyntaxKin 0002e570: 64 2e 4d 6f 64 75 6c 65 44 65 63 6c 61 72 61 74 d.ModuleDeclarat 0002e580: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 0002e590: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 30 case 170 0002e5a0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 /* SyntaxKind.C 0002e5b0: 6c 61 73 73 53 74 61 74 69 63 42 6c 6f 63 6b 44 lassStaticBlockD 0002e5c0: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 0002e5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0002e5e0: 61 73 65 20 31 36 37 20 2f 2a 20 53 79 6e 74 61 ase 167 /* Synta 0002e5f0: 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 44 65 xKind.PropertyDe 0002e600: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 0002e610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 0002e620: 73 65 20 31 36 36 20 2f 2a 20 53 79 6e 74 61 78 se 166 /* Syntax 0002e630: 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 53 69 67 Kind.PropertySig 0002e640: 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 20 nature */:. 0002e650: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0002e660: 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 169 /* SyntaxKin 0002e670: 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 72 61 74 d.MethodDeclarat 0002e680: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 0002e690: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 36 38 case 168 0002e6a0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d /* SyntaxKind.M 0002e6b0: 65 74 68 6f 64 53 69 67 6e 61 74 75 72 65 20 2a ethodSignature * 0002e6c0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0002e6d0: 20 20 20 63 61 73 65 20 31 37 31 20 2f 2a 20 53 case 171 /* S 0002e6e0: 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 72 yntaxKind.Constr 0002e6f0: 75 63 74 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 20 uctor */:. 0002e700: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 0002e710: 37 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 72 /* SyntaxKind 0002e720: 2e 47 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 3a .GetAccessor */: 0002e730: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002e740: 20 63 61 73 65 20 31 37 33 20 2f 2a 20 53 79 6e case 173 /* Syn 0002e750: 74 61 78 4b 69 6e 64 2e 53 65 74 41 63 63 65 73 taxKind.SetAcces 0002e760: 73 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 sor */:. 0002e770: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 34 case 174 0002e780: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 /* SyntaxKind.C 0002e790: 61 6c 6c 53 69 67 6e 61 74 75 72 65 20 2a 2f 3a allSignature */: 0002e7a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002e7b0: 20 63 61 73 65 20 31 37 35 20 2f 2a 20 53 79 6e case 175 /* Syn 0002e7c0: 74 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 72 75 63 taxKind.Construc 0002e7d0: 74 53 69 67 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 tSignature */:. 0002e7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0002e7f0: 61 73 65 20 31 37 36 20 2f 2a 20 53 79 6e 74 61 ase 176 /* Synta 0002e800: 78 4b 69 6e 64 2e 49 6e 64 65 78 53 69 67 6e 61 xKind.IndexSigna 0002e810: 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ture */:. 0002e820: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 36 case 26 0002e830: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 0002e840: 45 6e 75 6d 44 65 63 6c 61 72 61 74 69 6f 6e 20 EnumDeclaration 0002e850: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0002e860: 20 20 20 20 63 61 73 65 20 33 30 35 20 2f 2a 20 case 305 /* 0002e870: 53 79 6e 74 61 78 4b 69 6e 64 2e 53 6f 75 72 63 SyntaxKind.Sourc 0002e880: 65 46 69 6c 65 20 2a 2f 3a 0a 20 20 20 20 20 20 eFile */:. 0002e890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 0002e8a0: 74 75 72 6e 20 6e 6f 64 65 3b 0a 20 20 20 20 20 turn node;. 0002e8b0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 0002e8c0: 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e }. }. ts. 0002e8d0: 67 65 74 54 68 69 73 43 6f 6e 74 61 69 6e 65 72 getThisContainer 0002e8e0: 20 3d 20 67 65 74 54 68 69 73 43 6f 6e 74 61 69 = getThisContai 0002e8f0: 6e 65 72 3b 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 ner;. /**. 0002e900: 20 20 2a 20 40 72 65 74 75 72 6e 73 20 57 68 65 * @returns Whe 0002e910: 74 68 65 72 20 74 68 65 20 6e 6f 64 65 20 63 72 ther the node cr 0002e920: 65 61 74 65 73 20 61 20 6e 65 77 20 27 74 68 69 eates a new 'thi 0002e930: 73 27 20 73 63 6f 70 65 20 66 6f 72 20 69 74 73 s' scope for its 0002e940: 20 63 68 69 6c 64 72 65 6e 2e 0a 20 20 20 20 20 children.. 0002e950: 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 */. function 0002e960: 69 73 54 68 69 73 43 6f 6e 74 61 69 6e 65 72 4f isThisContainerO 0002e970: 72 46 75 6e 63 74 69 6f 6e 42 6c 6f 63 6b 28 6e rFunctionBlock(n 0002e980: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ode) {. s 0002e990: 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 witch (node.kind 0002e9a0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 0002e9b0: 2f 2f 20 41 72 72 6f 77 20 66 75 6e 63 74 69 6f // Arrow functio 0002e9c0: 6e 73 20 75 73 65 20 74 68 65 20 73 61 6d 65 20 ns use the same 0002e9d0: 73 63 6f 70 65 2c 20 62 75 74 20 6d 61 79 20 64 scope, but may d 0002e9e0: 6f 20 73 6f 20 69 6e 20 61 20 22 64 65 6c 61 79 o so in a "delay 0002e9f0: 65 64 22 20 6d 61 6e 6e 65 72 0a 20 20 20 20 20 ed" manner. 0002ea00: 20 20 20 20 20 20 20 2f 2f 20 46 6f 72 20 65 78 // For ex 0002ea10: 61 6d 70 6c 65 2c 20 60 63 6f 6e 73 74 20 67 65 ample, `const ge 0002ea20: 74 54 68 69 73 20 3d 20 28 29 20 3d 3e 20 74 68 tThis = () => th 0002ea30: 69 73 60 20 6d 61 79 20 62 65 20 62 65 66 6f 72 is` may be befor 0002ea40: 65 20 61 20 73 75 70 65 72 28 29 20 63 61 6c 6c e a super() call 0002ea50: 20 69 6e 20 61 20 64 65 72 69 76 65 64 20 63 6f in a derived co 0002ea60: 6e 73 74 72 75 63 74 6f 72 0a 20 20 20 20 20 20 nstructor. 0002ea70: 20 20 20 20 20 20 63 61 73 65 20 32 31 34 20 2f case 214 / 0002ea80: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 72 72 * SyntaxKind.Arr 0002ea90: 6f 77 46 75 6e 63 74 69 6f 6e 20 2a 2f 3a 0a 20 owFunction */:. 0002eaa0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0002eab0: 32 35 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 256 /* SyntaxKin 0002eac0: 64 2e 46 75 6e 63 74 69 6f 6e 44 65 63 6c 61 72 d.FunctionDeclar 0002ead0: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 0002eae0: 20 20 20 20 20 20 63 61 73 65 20 32 31 33 20 2f case 213 / 0002eaf0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 75 6e * SyntaxKind.Fun 0002eb00: 63 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 ctionExpression 0002eb10: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0002eb20: 63 61 73 65 20 31 36 37 20 2f 2a 20 53 79 6e 74 case 167 /* Synt 0002eb30: 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 44 axKind.PropertyD 0002eb40: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 0002eb50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 0002eb60: 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 eturn true;. 0002eb70: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 33 35 case 235 0002eb80: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 /* SyntaxKind.B 0002eb90: 6c 6f 63 6b 20 2a 2f 3a 0a 20 20 20 20 20 20 20 lock */:. 0002eba0: 20 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 switch 0002ebb0: 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b 69 6e (node.parent.kin 0002ebc0: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 d) {. 0002ebd0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 case 17 0002ebe0: 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 1 /* SyntaxKind. 0002ebf0: 43 6f 6e 73 74 72 75 63 74 6f 72 20 2a 2f 3a 0a Constructor */:. 0002ec00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002ec10: 20 20 20 20 63 61 73 65 20 31 36 39 20 2f 2a 20 case 169 /* 0002ec20: 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 74 68 6f SyntaxKind.Metho 0002ec30: 64 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a dDeclaration */: 0002ec40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002ec50: 20 20 20 20 20 63 61 73 65 20 31 37 32 20 2f 2a case 172 /* 0002ec60: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 47 65 74 41 SyntaxKind.GetA 0002ec70: 63 63 65 73 73 6f 72 20 2a 2f 3a 0a 20 20 20 20 ccessor */:. 0002ec80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002ec90: 63 61 73 65 20 31 37 33 20 2f 2a 20 53 79 6e 74 case 173 /* Synt 0002eca0: 61 78 4b 69 6e 64 2e 53 65 74 41 63 63 65 73 73 axKind.SetAccess 0002ecb0: 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 or */:. 0002ecc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f / 0002ecd0: 2f 20 4f 62 6a 65 63 74 20 70 72 6f 70 65 72 74 / Object propert 0002ece0: 69 65 73 20 63 61 6e 20 68 61 76 65 20 63 6f 6d ies can have com 0002ecf0: 70 75 74 65 64 20 6e 61 6d 65 73 3b 20 6f 6e 6c puted names; onl 0002ed00: 79 20 6d 65 74 68 6f 64 2d 6c 69 6b 65 20 62 6f y method-like bo 0002ed10: 64 69 65 73 20 73 74 61 72 74 20 61 20 6e 65 77 dies start a new 0002ed20: 20 73 63 6f 70 65 0a 20 20 20 20 20 20 20 20 20 scope. 0002ed30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 0002ed40: 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 eturn true;. 0002ed50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002ed60: 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 default:. 0002ed70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002ed80: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 return false;. 0002ed90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d } 0002eda0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 . def 0002edb0: 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 20 ault:. 0002edc0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c return fal 0002edd0: 73 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 se;. }. 0002ede0: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 54 68 69 }. ts.isThi 0002edf0: 73 43 6f 6e 74 61 69 6e 65 72 4f 72 46 75 6e 63 sContainerOrFunc 0002ee00: 74 69 6f 6e 42 6c 6f 63 6b 20 3d 20 69 73 54 68 tionBlock = isTh 0002ee10: 69 73 43 6f 6e 74 61 69 6e 65 72 4f 72 46 75 6e isContainerOrFun 0002ee20: 63 74 69 6f 6e 42 6c 6f 63 6b 3b 0a 20 20 20 20 ctionBlock;. 0002ee30: 66 75 6e 63 74 69 6f 6e 20 69 73 49 6e 54 6f 70 function isInTop 0002ee40: 4c 65 76 65 6c 43 6f 6e 74 65 78 74 28 6e 6f 64 LevelContext(nod 0002ee50: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 e) {. // 0002ee60: 54 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 63 6c The name of a cl 0002ee70: 61 73 73 20 6f 72 20 66 75 6e 63 74 69 6f 6e 20 ass or function 0002ee80: 64 65 63 6c 61 72 61 74 69 6f 6e 20 69 73 20 61 declaration is a 0002ee90: 20 42 69 6e 64 69 6e 67 49 64 65 6e 74 69 66 69 BindingIdentifi 0002eea0: 65 72 20 69 6e 20 69 74 73 20 73 75 72 72 6f 75 er in its surrou 0002eeb0: 6e 64 69 6e 67 20 73 63 6f 70 65 2e 0a 20 20 20 nding scope.. 0002eec0: 20 20 20 20 20 69 66 20 28 74 73 2e 69 73 49 64 if (ts.isId 0002eed0: 65 6e 74 69 66 69 65 72 28 6e 6f 64 65 29 20 26 entifier(node) & 0002eee0: 26 20 28 74 73 2e 69 73 43 6c 61 73 73 44 65 63 & (ts.isClassDec 0002eef0: 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 2e 70 61 laration(node.pa 0002ef00: 72 65 6e 74 29 20 7c 7c 20 74 73 2e 69 73 46 75 rent) || ts.isFu 0002ef10: 6e 63 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 6f nctionDeclaratio 0002ef20: 6e 28 6e 6f 64 65 2e 70 61 72 65 6e 74 29 29 20 n(node.parent)) 0002ef30: 26 26 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6e && node.parent.n 0002ef40: 61 6d 65 20 3d 3d 3d 20 6e 6f 64 65 29 20 7b 0a ame === node) {. 0002ef50: 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 node 0002ef60: 20 3d 20 6e 6f 64 65 2e 70 61 72 65 6e 74 3b 0a = node.parent;. 0002ef70: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0002ef80: 20 20 76 61 72 20 63 6f 6e 74 61 69 6e 65 72 20 var container 0002ef90: 3d 20 67 65 74 54 68 69 73 43 6f 6e 74 61 69 6e = getThisContain 0002efa0: 65 72 28 6e 6f 64 65 2c 20 2f 2a 69 6e 63 6c 75 er(node, /*inclu 0002efb0: 64 65 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e 73 deArrowFunctions 0002efc0: 2a 2f 20 74 72 75 65 29 3b 0a 20 20 20 20 20 20 */ true);. 0002efd0: 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 53 6f return ts.isSo 0002efe0: 75 72 63 65 46 69 6c 65 28 63 6f 6e 74 61 69 6e urceFile(contain 0002eff0: 65 72 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 er);. }. t 0002f000: 73 2e 69 73 49 6e 54 6f 70 4c 65 76 65 6c 43 6f s.isInTopLevelCo 0002f010: 6e 74 65 78 74 20 3d 20 69 73 49 6e 54 6f 70 4c ntext = isInTopL 0002f020: 65 76 65 6c 43 6f 6e 74 65 78 74 3b 0a 20 20 20 evelContext;. 0002f030: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4e 65 77 function getNew 0002f040: 54 61 72 67 65 74 43 6f 6e 74 61 69 6e 65 72 28 TargetContainer( 0002f050: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 0002f060: 76 61 72 20 63 6f 6e 74 61 69 6e 65 72 20 3d 20 var container = 0002f070: 67 65 74 54 68 69 73 43 6f 6e 74 61 69 6e 65 72 getThisContainer 0002f080: 28 6e 6f 64 65 2c 20 2f 2a 69 6e 63 6c 75 64 65 (node, /*include 0002f090: 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e 73 2a 2f ArrowFunctions*/ 0002f0a0: 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 false);. 0002f0b0: 20 69 66 20 28 63 6f 6e 74 61 69 6e 65 72 29 20 if (container) 0002f0c0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 77 {. sw 0002f0d0: 69 74 63 68 20 28 63 6f 6e 74 61 69 6e 65 72 2e itch (container. 0002f0e0: 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 kind) {. 0002f0f0: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 31 case 171 0002f100: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 /* SyntaxKind.C 0002f110: 6f 6e 73 74 72 75 63 74 6f 72 20 2a 2f 3a 0a 20 onstructor */:. 0002f120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0002f130: 61 73 65 20 32 35 36 20 2f 2a 20 53 79 6e 74 61 ase 256 /* Synta 0002f140: 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 44 65 xKind.FunctionDe 0002f150: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 0002f160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 0002f170: 73 65 20 32 31 33 20 2f 2a 20 53 79 6e 74 61 78 se 213 /* Syntax 0002f180: 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 45 78 70 Kind.FunctionExp 0002f190: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 0002f1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002f1b0: 72 65 74 75 72 6e 20 63 6f 6e 74 61 69 6e 65 72 return container 0002f1c0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a ;. }. 0002f1d0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0002f1e0: 20 20 72 65 74 75 72 6e 20 75 6e 64 65 66 69 6e return undefin 0002f1f0: 65 64 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 ed;. }. ts 0002f200: 2e 67 65 74 4e 65 77 54 61 72 67 65 74 43 6f 6e .getNewTargetCon 0002f210: 74 61 69 6e 65 72 20 3d 20 67 65 74 4e 65 77 54 tainer = getNewT 0002f220: 61 72 67 65 74 43 6f 6e 74 61 69 6e 65 72 3b 0a argetContainer;. 0002f230: 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 47 /**. * G 0002f240: 69 76 65 6e 20 61 6e 20 73 75 70 65 72 20 63 61 iven an super ca 0002f250: 6c 6c 2f 70 72 6f 70 65 72 74 79 20 6e 6f 64 65 ll/property node 0002f260: 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20 63 6c , returns the cl 0002f270: 6f 73 65 73 74 20 6e 6f 64 65 20 77 68 65 72 65 osest node where 0002f280: 0a 20 20 20 20 20 2a 20 2d 20 61 20 73 75 70 65 . * - a supe 0002f290: 72 20 63 61 6c 6c 2f 70 72 6f 70 65 72 74 79 20 r call/property 0002f2a0: 61 63 63 65 73 73 20 69 73 20 6c 65 67 61 6c 20 access is legal 0002f2b0: 69 6e 20 74 68 65 20 6e 6f 64 65 20 61 6e 64 20 in the node and 0002f2c0: 6e 6f 74 20 6c 65 67 61 6c 20 69 6e 20 74 68 65 not legal in the 0002f2d0: 20 70 61 72 65 6e 74 20 6e 6f 64 65 20 74 68 65 parent node the 0002f2e0: 20 6e 6f 64 65 2e 0a 20 20 20 20 20 2a 20 20 20 node.. * 0002f2f0: 69 2e 65 2e 20 73 75 70 65 72 20 63 61 6c 6c 20 i.e. super call 0002f300: 69 73 20 6c 65 67 61 6c 20 69 6e 20 63 6f 6e 73 is legal in cons 0002f310: 74 72 75 63 74 6f 72 20 62 75 74 20 6e 6f 74 20 tructor but not 0002f320: 6c 65 67 61 6c 20 69 6e 20 74 68 65 20 63 6c 61 legal in the cla 0002f330: 73 73 20 62 6f 64 79 2e 0a 20 20 20 20 20 2a 20 ss body.. * 0002f340: 2d 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 72 20 - the container 0002f350: 69 73 20 61 6e 20 61 72 72 6f 77 20 66 75 6e 63 is an arrow func 0002f360: 74 69 6f 6e 20 28 73 6f 20 63 61 6c 6c 65 72 20 tion (so caller 0002f370: 6d 69 67 68 74 20 6e 65 65 64 20 74 6f 20 63 61 might need to ca 0002f380: 6c 6c 20 67 65 74 53 75 70 65 72 43 6f 6e 74 61 ll getSuperConta 0002f390: 69 6e 65 72 20 61 67 61 69 6e 20 69 6e 20 63 61 iner again in ca 0002f3a0: 73 65 20 69 74 20 6e 65 65 64 73 20 74 6f 20 63 se it needs to c 0002f3b0: 6c 69 6d 62 20 68 69 67 68 65 72 29 0a 20 20 20 limb higher). 0002f3c0: 20 20 2a 20 2d 20 61 20 73 75 70 65 72 20 63 61 * - a super ca 0002f3d0: 6c 6c 2f 70 72 6f 70 65 72 74 79 20 69 73 20 64 ll/property is d 0002f3e0: 65 66 69 6e 69 74 65 6c 79 20 69 6c 6c 65 67 61 efinitely illega 0002f3f0: 6c 20 69 6e 20 74 68 65 20 63 6f 6e 74 61 69 6e l in the contain 0002f400: 65 72 20 28 62 75 74 20 6d 69 67 68 74 20 62 65 er (but might be 0002f410: 20 6c 65 67 61 6c 20 69 6e 20 73 6f 6d 65 20 73 legal in some s 0002f420: 75 62 6e 6f 64 65 29 0a 20 20 20 20 20 2a 20 20 ubnode). * 0002f430: 20 69 2e 65 2e 20 73 75 70 65 72 20 70 72 6f 70 i.e. super prop 0002f440: 65 72 74 79 20 61 63 63 65 73 73 20 69 73 20 69 erty access is i 0002f450: 6c 6c 65 67 61 6c 20 69 6e 20 66 75 6e 63 74 69 llegal in functi 0002f460: 6f 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 62 on declaration b 0002f470: 75 74 20 63 61 6e 20 62 65 20 6c 65 67 61 6c 20 ut can be legal 0002f480: 69 6e 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 in the statement 0002f490: 20 6c 69 73 74 0a 20 20 20 20 20 2a 2f 0a 20 20 list. */. 0002f4a0: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 53 75 function getSu 0002f4b0: 70 65 72 43 6f 6e 74 61 69 6e 65 72 28 6e 6f 64 perContainer(nod 0002f4c0: 65 2c 20 73 74 6f 70 4f 6e 46 75 6e 63 74 69 6f e, stopOnFunctio 0002f4d0: 6e 73 29 20 7b 0a 20 20 20 20 20 20 20 20 77 68 ns) {. wh 0002f4e0: 69 6c 65 20 28 74 72 75 65 29 20 7b 0a 20 20 20 ile (true) {. 0002f4f0: 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 node = 0002f500: 6e 6f 64 65 2e 70 61 72 65 6e 74 3b 0a 20 20 20 node.parent;. 0002f510: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6e 6f if (!no 0002f520: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 de) {. 0002f530: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 return nod 0002f540: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d e;. } 0002f550: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 77 69 . swi 0002f560: 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 tch (node.kind) 0002f570: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 0002f580: 20 20 63 61 73 65 20 31 36 32 20 2f 2a 20 53 79 case 162 /* Sy 0002f590: 6e 74 61 78 4b 69 6e 64 2e 43 6f 6d 70 75 74 65 ntaxKind.Compute 0002f5a0: 64 50 72 6f 70 65 72 74 79 4e 61 6d 65 20 2a 2f dPropertyName */ 0002f5b0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0002f5c0: 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 6e 6f 64 node = nod 0002f5d0: 65 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 e.parent;. 0002f5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br 0002f5f0: 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 eak;. 0002f600: 20 20 20 20 20 63 61 73 65 20 32 35 36 20 2f 2a case 256 /* 0002f610: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 75 6e 63 SyntaxKind.Func 0002f620: 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 6f 6e 20 tionDeclaration 0002f630: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0002f640: 20 20 20 20 63 61 73 65 20 32 31 33 20 2f 2a 20 case 213 /* 0002f650: 53 79 6e 74 61 78 4b 69 6e 64 2e 46 75 6e 63 74 SyntaxKind.Funct 0002f660: 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f ionExpression */ 0002f670: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0002f680: 20 20 63 61 73 65 20 32 31 34 20 2f 2a 20 53 79 case 214 /* Sy 0002f690: 6e 74 61 78 4b 69 6e 64 2e 41 72 72 6f 77 46 75 ntaxKind.ArrowFu 0002f6a0: 6e 63 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 nction */:. 0002f6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i 0002f6c0: 66 20 28 21 73 74 6f 70 4f 6e 46 75 6e 63 74 69 f (!stopOnFuncti 0002f6d0: 6f 6e 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ons) {. 0002f6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0002f6f0: 6f 6e 74 69 6e 75 65 3b 0a 20 20 20 20 20 20 20 ontinue;. 0002f700: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 }. 0002f710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f / 0002f720: 2f 20 66 61 6c 6c 73 20 74 68 72 6f 75 67 68 0a / falls through. 0002f730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002f740: 63 61 73 65 20 31 36 37 20 2f 2a 20 53 79 6e 74 case 167 /* Synt 0002f750: 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 44 axKind.PropertyD 0002f760: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 0002f770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0002f780: 61 73 65 20 31 36 36 20 2f 2a 20 53 79 6e 74 61 ase 166 /* Synta 0002f790: 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 53 69 xKind.PropertySi 0002f7a0: 67 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 gnature */:. 0002f7b0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0002f7c0: 20 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 169 /* SyntaxKi 0002f7d0: 6e 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 72 61 nd.MethodDeclara 0002f7e0: 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 tion */:. 0002f7f0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 36 case 16 0002f800: 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 8 /* SyntaxKind. 0002f810: 4d 65 74 68 6f 64 53 69 67 6e 61 74 75 72 65 20 MethodSignature 0002f820: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0002f830: 20 20 20 20 63 61 73 65 20 31 37 31 20 2f 2a 20 case 171 /* 0002f840: 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 SyntaxKind.Const 0002f850: 72 75 63 74 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 ructor */:. 0002f860: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0002f870: 31 37 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 172 /* SyntaxKin 0002f880: 64 2e 47 65 74 41 63 63 65 73 73 6f 72 20 2a 2f d.GetAccessor */ 0002f890: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0002f8a0: 20 20 63 61 73 65 20 31 37 33 20 2f 2a 20 53 79 case 173 /* Sy 0002f8b0: 6e 74 61 78 4b 69 6e 64 2e 53 65 74 41 63 63 65 ntaxKind.SetAcce 0002f8c0: 73 73 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ssor */:. 0002f8d0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 case 17 0002f8e0: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 0002f8f0: 43 6c 61 73 73 53 74 61 74 69 63 42 6c 6f 63 6b ClassStaticBlock 0002f900: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a Declaration */:. 0002f910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002f920: 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 3b return node; 0002f930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002f940: 20 63 61 73 65 20 31 36 35 20 2f 2a 20 53 79 6e case 165 /* Syn 0002f950: 74 61 78 4b 69 6e 64 2e 44 65 63 6f 72 61 74 6f taxKind.Decorato 0002f960: 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 r */:. 0002f970: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44 65 63 // Dec 0002f980: 6f 72 61 74 6f 72 73 20 61 72 65 20 61 6c 77 61 orators are alwa 0002f990: 79 73 20 61 70 70 6c 69 65 64 20 6f 75 74 73 69 ys applied outsi 0002f9a0: 64 65 20 6f 66 20 74 68 65 20 62 6f 64 79 20 6f de of the body o 0002f9b0: 66 20 61 20 63 6c 61 73 73 20 6f 72 20 6d 65 74 f a class or met 0002f9c0: 68 6f 64 2e 0a 20 20 20 20 20 20 20 20 20 20 20 hod.. 0002f9d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 if (nod 0002f9e0: 65 2e 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d e.parent.kind == 0002f9f0: 3d 20 31 36 34 20 2f 2a 20 53 79 6e 74 61 78 4b = 164 /* SyntaxK 0002fa00: 69 6e 64 2e 50 61 72 61 6d 65 74 65 72 20 2a 2f ind.Parameter */ 0002fa10: 20 26 26 20 74 73 2e 69 73 43 6c 61 73 73 45 6c && ts.isClassEl 0002fa20: 65 6d 65 6e 74 28 6e 6f 64 65 2e 70 61 72 65 6e ement(node.paren 0002fa30: 74 2e 70 61 72 65 6e 74 29 29 20 7b 0a 20 20 20 t.parent)) {. 0002fa40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002fa50: 20 20 20 20 20 2f 2f 20 49 66 20 74 68 65 20 64 // If the d 0002fa60: 65 63 6f 72 61 74 6f 72 27 73 20 70 61 72 65 6e ecorator's paren 0002fa70: 74 20 69 73 20 61 20 50 61 72 61 6d 65 74 65 72 t is a Parameter 0002fa80: 2c 20 77 65 20 72 65 73 6f 6c 76 65 20 74 68 65 , we resolve the 0002fa90: 20 74 68 69 73 20 63 6f 6e 74 61 69 6e 65 72 20 this container 0002faa0: 66 72 6f 6d 0a 20 20 20 20 20 20 20 20 20 20 20 from. 0002fab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 // 0002fac0: 74 68 65 20 67 72 61 6e 64 70 61 72 65 6e 74 20 the grandparent 0002fad0: 63 6c 61 73 73 20 64 65 63 6c 61 72 61 74 69 6f class declaratio 0002fae0: 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 n.. 0002faf0: 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 node 0002fb00: 3d 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 70 61 = node.parent.pa 0002fb10: 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 20 20 rent;. 0002fb20: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 0002fb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002fb40: 65 6c 73 65 20 69 66 20 28 74 73 2e 69 73 43 6c else if (ts.isCl 0002fb50: 61 73 73 45 6c 65 6d 65 6e 74 28 6e 6f 64 65 2e assElement(node. 0002fb60: 70 61 72 65 6e 74 29 29 20 7b 0a 20 20 20 20 20 parent)) {. 0002fb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002fb80: 20 20 20 2f 2f 20 49 66 20 74 68 65 20 64 65 63 // If the dec 0002fb90: 6f 72 61 74 6f 72 27 73 20 70 61 72 65 6e 74 20 orator's parent 0002fba0: 69 73 20 61 20 63 6c 61 73 73 20 65 6c 65 6d 65 is a class eleme 0002fbb0: 6e 74 2c 20 77 65 20 72 65 73 6f 6c 76 65 20 74 nt, we resolve t 0002fbc0: 68 65 20 27 74 68 69 73 27 20 63 6f 6e 74 61 69 he 'this' contai 0002fbd0: 6e 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 ner. 0002fbe0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 66 // f 0002fbf0: 72 6f 6d 20 74 68 65 20 70 61 72 65 6e 74 20 63 rom the parent c 0002fc00: 6c 61 73 73 20 64 65 63 6c 61 72 61 74 69 6f 6e lass declaration 0002fc10: 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .. 0002fc20: 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d node = 0002fc30: 20 6e 6f 64 65 2e 70 61 72 65 6e 74 3b 0a 20 20 node.parent;. 0002fc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002fc50: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }. 0002fc60: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 break;. 0002fc70: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 0002fc80: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 }. }. 0002fc90: 20 74 73 2e 67 65 74 53 75 70 65 72 43 6f 6e 74 ts.getSuperCont 0002fca0: 61 69 6e 65 72 20 3d 20 67 65 74 53 75 70 65 72 ainer = getSuper 0002fcb0: 43 6f 6e 74 61 69 6e 65 72 3b 0a 20 20 20 20 66 Container;. f 0002fcc0: 75 6e 63 74 69 6f 6e 20 67 65 74 49 6d 6d 65 64 unction getImmed 0002fcd0: 69 61 74 65 6c 79 49 6e 76 6f 6b 65 64 46 75 6e iatelyInvokedFun 0002fce0: 63 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 28 ctionExpression( 0002fcf0: 66 75 6e 63 29 20 7b 0a 20 20 20 20 20 20 20 20 func) {. 0002fd00: 69 66 20 28 66 75 6e 63 2e 6b 69 6e 64 20 3d 3d if (func.kind == 0002fd10: 3d 20 32 31 33 20 2f 2a 20 53 79 6e 74 61 78 4b = 213 /* SyntaxK 0002fd20: 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 45 78 70 72 ind.FunctionExpr 0002fd30: 65 73 73 69 6f 6e 20 2a 2f 20 7c 7c 20 66 75 6e ession */ || fun 0002fd40: 63 2e 6b 69 6e 64 20 3d 3d 3d 20 32 31 34 20 2f c.kind === 214 / 0002fd50: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 72 72 * SyntaxKind.Arr 0002fd60: 6f 77 46 75 6e 63 74 69 6f 6e 20 2a 2f 29 20 7b owFunction */) { 0002fd70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var 0002fd80: 20 70 72 65 76 20 3d 20 66 75 6e 63 3b 0a 20 20 prev = func;. 0002fd90: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 70 61 var pa 0002fda0: 72 65 6e 74 20 3d 20 66 75 6e 63 2e 70 61 72 65 rent = func.pare 0002fdb0: 6e 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 nt;. 0002fdc0: 77 68 69 6c 65 20 28 70 61 72 65 6e 74 2e 6b 69 while (parent.ki 0002fdd0: 6e 64 20 3d 3d 3d 20 32 31 32 20 2f 2a 20 53 79 nd === 212 /* Sy 0002fde0: 6e 74 61 78 4b 69 6e 64 2e 50 61 72 65 6e 74 68 ntaxKind.Parenth 0002fdf0: 65 73 69 7a 65 64 45 78 70 72 65 73 73 69 6f 6e esizedExpression 0002fe00: 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 20 20 */) {. 0002fe10: 20 20 20 20 20 20 20 70 72 65 76 20 3d 20 70 61 prev = pa 0002fe20: 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 20 20 rent;. 0002fe30: 20 20 20 20 20 20 70 61 72 65 6e 74 20 3d 20 70 parent = p 0002fe40: 61 72 65 6e 74 2e 70 61 72 65 6e 74 3b 0a 20 20 arent.parent;. 0002fe50: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 0002fe60: 20 20 20 20 20 20 20 20 69 66 20 28 70 61 72 65 if (pare 0002fe70: 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 32 30 38 20 nt.kind === 208 0002fe80: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 61 /* SyntaxKind.Ca 0002fe90: 6c 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 20 llExpression */ 0002fea0: 26 26 20 70 61 72 65 6e 74 2e 65 78 70 72 65 73 && parent.expres 0002feb0: 73 69 6f 6e 20 3d 3d 3d 20 70 72 65 76 29 20 7b sion === prev) { 0002fec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002fed0: 20 72 65 74 75 72 6e 20 70 61 72 65 6e 74 3b 0a return parent;. 0002fee0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. 0002fef0: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 }. }. 0002ff00: 20 20 74 73 2e 67 65 74 49 6d 6d 65 64 69 61 74 ts.getImmediat 0002ff10: 65 6c 79 49 6e 76 6f 6b 65 64 46 75 6e 63 74 69 elyInvokedFuncti 0002ff20: 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 67 onExpression = g 0002ff30: 65 74 49 6d 6d 65 64 69 61 74 65 6c 79 49 6e 76 etImmediatelyInv 0002ff40: 6f 6b 65 64 46 75 6e 63 74 69 6f 6e 45 78 70 72 okedFunctionExpr 0002ff50: 65 73 73 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 ession;. func 0002ff60: 74 69 6f 6e 20 69 73 53 75 70 65 72 4f 72 53 75 tion isSuperOrSu 0002ff70: 70 65 72 50 72 6f 70 65 72 74 79 28 6e 6f 64 65 perProperty(node 0002ff80: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0002ff90: 72 6e 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d rn node.kind === 0002ffa0: 20 31 30 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 106 /* SyntaxKi 0002ffb0: 6e 64 2e 53 75 70 65 72 4b 65 79 77 6f 72 64 20 nd.SuperKeyword 0002ffc0: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 0002ffd0: 7c 20 69 73 53 75 70 65 72 50 72 6f 70 65 72 74 | isSuperPropert 0002ffe0: 79 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d 0a 20 y(node);. }. 0002fff0: 20 20 20 74 73 2e 69 73 53 75 70 65 72 4f 72 53 ts.isSuperOrS 00030000: 75 70 65 72 50 72 6f 70 65 72 74 79 20 3d 20 69 uperProperty = i 00030010: 73 53 75 70 65 72 4f 72 53 75 70 65 72 50 72 6f sSuperOrSuperPro 00030020: 70 65 72 74 79 3b 0a 20 20 20 20 2f 2a 2a 0a 20 perty;. /**. 00030030: 20 20 20 20 2a 20 44 65 74 65 72 6d 69 6e 65 73 * Determines 00030040: 20 77 68 65 74 68 65 72 20 61 20 6e 6f 64 65 20 whether a node 00030050: 69 73 20 61 20 70 72 6f 70 65 72 74 79 20 6f 72 is a property or 00030060: 20 65 6c 65 6d 65 6e 74 20 61 63 63 65 73 73 20 element access 00030070: 65 78 70 72 65 73 73 69 6f 6e 20 66 6f 72 20 60 expression for ` 00030080: 73 75 70 65 72 60 2e 0a 20 20 20 20 20 2a 2f 0a super`.. */. 00030090: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 function isS 000300a0: 75 70 65 72 50 72 6f 70 65 72 74 79 28 6e 6f 64 uperProperty(nod 000300b0: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 e) {. var 000300c0: 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e kind = node.kin 000300d0: 64 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 d;. retur 000300e0: 6e 20 28 6b 69 6e 64 20 3d 3d 3d 20 32 30 36 20 n (kind === 206 000300f0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 72 /* SyntaxKind.Pr 00030100: 6f 70 65 72 74 79 41 63 63 65 73 73 45 78 70 72 opertyAccessExpr 00030110: 65 73 73 69 6f 6e 20 2a 2f 20 7c 7c 20 6b 69 6e ession */ || kin 00030120: 64 20 3d 3d 3d 20 32 30 37 20 2f 2a 20 53 79 6e d === 207 /* Syn 00030130: 74 61 78 4b 69 6e 64 2e 45 6c 65 6d 65 6e 74 41 taxKind.ElementA 00030140: 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 20 ccessExpression 00030150: 2a 2f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 */). 00030160: 26 26 20 6e 6f 64 65 2e 65 78 70 72 65 73 73 69 && node.expressi 00030170: 6f 6e 2e 6b 69 6e 64 20 3d 3d 3d 20 31 30 36 20 on.kind === 106 00030180: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 75 /* SyntaxKind.Su 00030190: 70 65 72 4b 65 79 77 6f 72 64 20 2a 2f 3b 0a 20 perKeyword */;. 000301a0: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 53 75 }. ts.isSu 000301b0: 70 65 72 50 72 6f 70 65 72 74 79 20 3d 20 69 73 perProperty = is 000301c0: 53 75 70 65 72 50 72 6f 70 65 72 74 79 3b 0a 20 SuperProperty;. 000301d0: 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 44 65 /**. * De 000301e0: 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65 72 termines whether 000301f0: 20 61 20 6e 6f 64 65 20 69 73 20 61 20 70 72 6f a node is a pro 00030200: 70 65 72 74 79 20 6f 72 20 65 6c 65 6d 65 6e 74 perty or element 00030210: 20 61 63 63 65 73 73 20 65 78 70 72 65 73 73 69 access expressi 00030220: 6f 6e 20 66 6f 72 20 60 74 68 69 73 60 2e 0a 20 on for `this`.. 00030230: 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 */. funct 00030240: 69 6f 6e 20 69 73 54 68 69 73 50 72 6f 70 65 72 ion isThisProper 00030250: 74 79 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 ty(node) {. 00030260: 20 20 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f var kind = no 00030270: 64 65 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 de.kind;. 00030280: 20 72 65 74 75 72 6e 20 28 6b 69 6e 64 20 3d 3d return (kind == 00030290: 3d 20 32 30 36 20 2f 2a 20 53 79 6e 74 61 78 4b = 206 /* SyntaxK 000302a0: 69 6e 64 2e 50 72 6f 70 65 72 74 79 41 63 63 65 ind.PropertyAcce 000302b0: 73 73 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 20 ssExpression */ 000302c0: 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 30 37 20 || kind === 207 000302d0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 6c /* SyntaxKind.El 000302e0: 65 6d 65 6e 74 41 63 63 65 73 73 45 78 70 72 65 ementAccessExpre 000302f0: 73 73 69 6f 6e 20 2a 2f 29 0a 20 20 20 20 20 20 ssion */). 00030300: 20 20 20 20 20 20 26 26 20 6e 6f 64 65 2e 65 78 && node.ex 00030310: 70 72 65 73 73 69 6f 6e 2e 6b 69 6e 64 20 3d 3d pression.kind == 00030320: 3d 20 31 30 38 20 2f 2a 20 53 79 6e 74 61 78 4b = 108 /* SyntaxK 00030330: 69 6e 64 2e 54 68 69 73 4b 65 79 77 6f 72 64 20 ind.ThisKeyword 00030340: 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 */;. }. ts 00030350: 2e 69 73 54 68 69 73 50 72 6f 70 65 72 74 79 20 .isThisProperty 00030360: 3d 20 69 73 54 68 69 73 50 72 6f 70 65 72 74 79 = isThisProperty 00030370: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 00030380: 73 54 68 69 73 49 6e 69 74 69 61 6c 69 7a 65 64 sThisInitialized 00030390: 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 Declaration(node 000303a0: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 000303b0: 5f 61 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 _a;. retu 000303c0: 72 6e 20 21 21 6e 6f 64 65 20 26 26 20 74 73 2e rn !!node && ts. 000303d0: 69 73 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 isVariableDeclar 000303e0: 61 74 69 6f 6e 28 6e 6f 64 65 29 20 26 26 20 28 ation(node) && ( 000303f0: 28 5f 61 20 3d 20 6e 6f 64 65 2e 69 6e 69 74 69 (_a = node.initi 00030400: 61 6c 69 7a 65 72 29 20 3d 3d 3d 20 6e 75 6c 6c alizer) === null 00030410: 20 7c 7c 20 5f 61 20 3d 3d 3d 20 76 6f 69 64 20 || _a === void 00030420: 30 20 3f 20 76 6f 69 64 20 30 20 3a 20 5f 61 2e 0 ? void 0 : _a. 00030430: 6b 69 6e 64 29 20 3d 3d 3d 20 31 30 38 20 2f 2a kind) === 108 /* 00030440: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 68 69 73 SyntaxKind.This 00030450: 4b 65 79 77 6f 72 64 20 2a 2f 3b 0a 20 20 20 20 Keyword */;. 00030460: 7d 0a 20 20 20 20 74 73 2e 69 73 54 68 69 73 49 }. ts.isThisI 00030470: 6e 69 74 69 61 6c 69 7a 65 64 44 65 63 6c 61 72 nitializedDeclar 00030480: 61 74 69 6f 6e 20 3d 20 69 73 54 68 69 73 49 6e ation = isThisIn 00030490: 69 74 69 61 6c 69 7a 65 64 44 65 63 6c 61 72 61 itializedDeclara 000304a0: 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 tion;. functi 000304b0: 6f 6e 20 69 73 54 68 69 73 49 6e 69 74 69 61 6c on isThisInitial 000304c0: 69 7a 65 64 4f 62 6a 65 63 74 42 69 6e 64 69 6e izedObjectBindin 000304d0: 67 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 gExpression(node 000304e0: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 000304f0: 72 6e 20 21 21 6e 6f 64 65 0a 20 20 20 20 20 20 rn !!node. 00030500: 20 20 20 20 20 20 26 26 20 28 74 73 2e 69 73 53 && (ts.isS 00030510: 68 6f 72 74 68 61 6e 64 50 72 6f 70 65 72 74 79 horthandProperty 00030520: 41 73 73 69 67 6e 6d 65 6e 74 28 6e 6f 64 65 29 Assignment(node) 00030530: 20 7c 7c 20 74 73 2e 69 73 50 72 6f 70 65 72 74 || ts.isPropert 00030540: 79 41 73 73 69 67 6e 6d 65 6e 74 28 6e 6f 64 65 yAssignment(node 00030550: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 26 )). & 00030560: 26 20 74 73 2e 69 73 42 69 6e 61 72 79 45 78 70 & ts.isBinaryExp 00030570: 72 65 73 73 69 6f 6e 28 6e 6f 64 65 2e 70 61 72 ression(node.par 00030580: 65 6e 74 2e 70 61 72 65 6e 74 29 0a 20 20 20 20 ent.parent). 00030590: 20 20 20 20 20 20 20 20 26 26 20 6e 6f 64 65 2e && node. 000305a0: 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 2e 6f 70 parent.parent.op 000305b0: 65 72 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 6e 64 eratorToken.kind 000305c0: 20 3d 3d 3d 20 36 33 20 2f 2a 20 53 79 6e 74 61 === 63 /* Synta 000305d0: 78 4b 69 6e 64 2e 45 71 75 61 6c 73 54 6f 6b 65 xKind.EqualsToke 000305e0: 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 n */. 000305f0: 20 26 26 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e && node.parent. 00030600: 70 61 72 65 6e 74 2e 72 69 67 68 74 2e 6b 69 6e parent.right.kin 00030610: 64 20 3d 3d 3d 20 31 30 38 20 2f 2a 20 53 79 6e d === 108 /* Syn 00030620: 74 61 78 4b 69 6e 64 2e 54 68 69 73 4b 65 79 77 taxKind.ThisKeyw 00030630: 6f 72 64 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ord */;. }. 00030640: 20 20 74 73 2e 69 73 54 68 69 73 49 6e 69 74 69 ts.isThisIniti 00030650: 61 6c 69 7a 65 64 4f 62 6a 65 63 74 42 69 6e 64 alizedObjectBind 00030660: 69 6e 67 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 ingExpression = 00030670: 69 73 54 68 69 73 49 6e 69 74 69 61 6c 69 7a 65 isThisInitialize 00030680: 64 4f 62 6a 65 63 74 42 69 6e 64 69 6e 67 45 78 dObjectBindingEx 00030690: 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 20 66 75 pression;. fu 000306a0: 6e 63 74 69 6f 6e 20 67 65 74 45 6e 74 69 74 79 nction getEntity 000306b0: 4e 61 6d 65 46 72 6f 6d 54 79 70 65 4e 6f 64 65 NameFromTypeNode 000306c0: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 000306d0: 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 switch (node.ki 000306e0: 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 nd) {. 000306f0: 20 20 63 61 73 65 20 31 37 38 20 2f 2a 20 53 79 case 178 /* Sy 00030700: 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 52 65 66 ntaxKind.TypeRef 00030710: 65 72 65 6e 63 65 20 2a 2f 3a 0a 20 20 20 20 20 erence */:. 00030720: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00030730: 6e 20 6e 6f 64 65 2e 74 79 70 65 4e 61 6d 65 3b n node.typeName; 00030740: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00030750: 65 20 32 32 38 20 2f 2a 20 53 79 6e 74 61 78 4b e 228 /* SyntaxK 00030760: 69 6e 64 2e 45 78 70 72 65 73 73 69 6f 6e 57 69 ind.ExpressionWi 00030770: 74 68 54 79 70 65 41 72 67 75 6d 65 6e 74 73 20 thTypeArguments 00030780: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00030790: 20 20 20 20 72 65 74 75 72 6e 20 69 73 45 6e 74 return isEnt 000307a0: 69 74 79 4e 61 6d 65 45 78 70 72 65 73 73 69 6f ityNameExpressio 000307b0: 6e 28 6e 6f 64 65 2e 65 78 70 72 65 73 73 69 6f n(node.expressio 000307c0: 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 n). 000307d0: 20 20 20 20 20 20 20 3f 20 6e 6f 64 65 2e 65 78 ? node.ex 000307e0: 70 72 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20 pression. 000307f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 75 : u 00030800: 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 ndefined;. 00030810: 20 20 20 20 20 20 2f 2f 20 54 4f 44 4f 28 72 62 // TODO(rb 00030820: 75 63 6b 74 6f 6e 29 3a 20 54 68 65 73 65 20 61 uckton): These a 00030830: 72 65 6e 27 74 20 76 61 6c 69 64 20 54 79 70 65 ren't valid Type 00030840: 4e 6f 64 65 73 2c 20 62 75 74 20 77 65 20 74 72 Nodes, but we tr 00030850: 65 61 74 20 74 68 65 6d 20 61 73 20 73 75 63 68 eat them as such 00030860: 20 62 65 63 61 75 73 65 20 6f 66 20 60 69 73 50 because of `isP 00030870: 61 72 74 4f 66 54 79 70 65 4e 6f 64 65 60 2c 20 artOfTypeNode`, 00030880: 77 68 69 63 68 20 72 65 74 75 72 6e 73 20 60 74 which returns `t 00030890: 72 75 65 60 20 66 6f 72 20 74 68 69 6e 67 73 20 rue` for things 000308a0: 74 68 61 74 20 61 72 65 6e 27 74 20 60 54 79 70 that aren't `Typ 000308b0: 65 4e 6f 64 65 60 73 2e 0a 20 20 20 20 20 20 20 eNode`s.. 000308c0: 20 20 20 20 20 63 61 73 65 20 37 39 20 2f 2a 20 case 79 /* 000308d0: 53 79 6e 74 61 78 4b 69 6e 64 2e 49 64 65 6e 74 SyntaxKind.Ident 000308e0: 69 66 69 65 72 20 2a 2f 3a 0a 20 20 20 20 20 20 ifier */:. 000308f0: 20 20 20 20 20 20 63 61 73 65 20 31 36 31 20 2f case 161 / 00030900: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 51 75 61 * SyntaxKind.Qua 00030910: 6c 69 66 69 65 64 4e 61 6d 65 20 2a 2f 3a 0a 20 lifiedName */:. 00030920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 00030930: 65 74 75 72 6e 20 6e 6f 64 65 3b 0a 20 20 20 20 eturn node;. 00030940: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 }. re 00030950: 74 75 72 6e 20 75 6e 64 65 66 69 6e 65 64 3b 0a turn undefined;. 00030960: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 }. ts.get 00030970: 45 6e 74 69 74 79 4e 61 6d 65 46 72 6f 6d 54 79 EntityNameFromTy 00030980: 70 65 4e 6f 64 65 20 3d 20 67 65 74 45 6e 74 69 peNode = getEnti 00030990: 74 79 4e 61 6d 65 46 72 6f 6d 54 79 70 65 4e 6f tyNameFromTypeNo 000309a0: 64 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e de;. function 000309b0: 20 67 65 74 49 6e 76 6f 6b 65 64 45 78 70 72 65 getInvokedExpre 000309c0: 73 73 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 ssion(node) {. 000309d0: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 6e 6f switch (no 000309e0: 64 65 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 de.kind) {. 000309f0: 20 20 20 20 20 20 20 63 61 73 65 20 32 31 30 20 case 210 00030a00: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 61 /* SyntaxKind.Ta 00030a10: 67 67 65 64 54 65 6d 70 6c 61 74 65 45 78 70 72 ggedTemplateExpr 00030a20: 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ession */:. 00030a30: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00030a40: 6e 20 6e 6f 64 65 2e 74 61 67 3b 0a 20 20 20 20 n node.tag;. 00030a50: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 38 30 case 280 00030a60: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a /* SyntaxKind.J 00030a70: 73 78 4f 70 65 6e 69 6e 67 45 6c 65 6d 65 6e 74 sxOpeningElement 00030a80: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00030a90: 20 63 61 73 65 20 32 37 39 20 2f 2a 20 53 79 6e case 279 /* Syn 00030aa0: 74 61 78 4b 69 6e 64 2e 4a 73 78 53 65 6c 66 43 taxKind.JsxSelfC 00030ab0: 6c 6f 73 69 6e 67 45 6c 65 6d 65 6e 74 20 2a 2f losingElement */ 00030ac0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 00030ad0: 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 74 61 return node.ta 00030ae0: 67 4e 61 6d 65 3b 0a 20 20 20 20 20 20 20 20 20 gName;. 00030af0: 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 default:. 00030b00: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00030b10: 72 6e 20 6e 6f 64 65 2e 65 78 70 72 65 73 73 69 rn node.expressi 00030b20: 6f 6e 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 on;. }. 00030b30: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 49 6e }. ts.getIn 00030b40: 76 6f 6b 65 64 45 78 70 72 65 73 73 69 6f 6e 20 vokedExpression 00030b50: 3d 20 67 65 74 49 6e 76 6f 6b 65 64 45 78 70 72 = getInvokedExpr 00030b60: 65 73 73 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 ession;. func 00030b70: 74 69 6f 6e 20 6e 6f 64 65 43 61 6e 42 65 44 65 tion nodeCanBeDe 00030b80: 63 6f 72 61 74 65 64 28 6e 6f 64 65 2c 20 70 61 corated(node, pa 00030b90: 72 65 6e 74 2c 20 67 72 61 6e 64 70 61 72 65 6e rent, grandparen 00030ba0: 74 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 t) {. // 00030bb0: 70 72 69 76 61 74 65 20 6e 61 6d 65 73 20 63 61 private names ca 00030bc0: 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 77 69 74 nnot be used wit 00030bd0: 68 20 64 65 63 6f 72 61 74 6f 72 73 20 79 65 74 h decorators yet 00030be0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 73 2e . if (ts. 00030bf0: 69 73 4e 61 6d 65 64 44 65 63 6c 61 72 61 74 69 isNamedDeclarati 00030c00: 6f 6e 28 6e 6f 64 65 29 20 26 26 20 74 73 2e 69 on(node) && ts.i 00030c10: 73 50 72 69 76 61 74 65 49 64 65 6e 74 69 66 69 sPrivateIdentifi 00030c20: 65 72 28 6e 6f 64 65 2e 6e 61 6d 65 29 29 20 7b er(node.name)) { 00030c30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret 00030c40: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 urn false;. 00030c50: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 73 77 69 }. swi 00030c60: 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 tch (node.kind) 00030c70: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 {. ca 00030c80: 73 65 20 32 35 37 20 2f 2a 20 53 79 6e 74 61 78 se 257 /* Syntax 00030c90: 4b 69 6e 64 2e 43 6c 61 73 73 44 65 63 6c 61 72 Kind.ClassDeclar 00030ca0: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 00030cb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 63 6c 61 // cla 00030cc0: 73 73 65 73 20 61 72 65 20 76 61 6c 69 64 20 74 sses are valid t 00030cd0: 61 72 67 65 74 73 0a 20 20 20 20 20 20 20 20 20 argets. 00030ce0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 return tr 00030cf0: 75 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ue;. 00030d00: 63 61 73 65 20 31 36 37 20 2f 2a 20 53 79 6e 74 case 167 /* Synt 00030d10: 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 44 axKind.PropertyD 00030d20: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 00030d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f / 00030d40: 2f 20 70 72 6f 70 65 72 74 79 20 64 65 63 6c 61 / property decla 00030d50: 72 61 74 69 6f 6e 73 20 61 72 65 20 76 61 6c 69 rations are vali 00030d60: 64 20 69 66 20 74 68 65 69 72 20 70 61 72 65 6e d if their paren 00030d70: 74 20 69 73 20 61 20 63 6c 61 73 73 20 64 65 63 t is a class dec 00030d80: 6c 61 72 61 74 69 6f 6e 2e 0a 20 20 20 20 20 20 laration.. 00030d90: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00030da0: 20 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d parent.kind === 00030db0: 20 32 35 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 257 /* SyntaxKi 00030dc0: 6e 64 2e 43 6c 61 73 73 44 65 63 6c 61 72 61 74 nd.ClassDeclarat 00030dd0: 69 6f 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 ion */;. 00030de0: 20 20 20 20 63 61 73 65 20 31 37 32 20 2f 2a 20 case 172 /* 00030df0: 53 79 6e 74 61 78 4b 69 6e 64 2e 47 65 74 41 63 SyntaxKind.GetAc 00030e00: 63 65 73 73 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 cessor */:. 00030e10: 20 20 20 20 20 20 20 63 61 73 65 20 31 37 33 20 case 173 00030e20: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 65 /* SyntaxKind.Se 00030e30: 74 41 63 63 65 73 73 6f 72 20 2a 2f 3a 0a 20 20 tAccessor */:. 00030e40: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 00030e50: 36 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 69 /* SyntaxKind 00030e60: 2e 4d 65 74 68 6f 64 44 65 63 6c 61 72 61 74 69 .MethodDeclarati 00030e70: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 00030e80: 20 20 20 20 20 20 20 2f 2f 20 69 66 20 74 68 69 // if thi 00030e90: 73 20 6d 65 74 68 6f 64 20 68 61 73 20 61 20 62 s method has a b 00030ea0: 6f 64 79 20 61 6e 64 20 69 74 73 20 70 61 72 65 ody and its pare 00030eb0: 6e 74 20 69 73 20 61 20 63 6c 61 73 73 20 64 65 nt is a class de 00030ec0: 63 6c 61 72 61 74 69 6f 6e 2c 20 74 68 69 73 20 claration, this 00030ed0: 69 73 20 61 20 76 61 6c 69 64 20 74 61 72 67 65 is a valid targe 00030ee0: 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t.. 00030ef0: 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 62 return node.b 00030f00: 6f 64 79 20 21 3d 3d 20 75 6e 64 65 66 69 6e 65 ody !== undefine 00030f10: 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d. 00030f20: 20 20 20 20 20 20 26 26 20 70 61 72 65 6e 74 2e && parent. 00030f30: 6b 69 6e 64 20 3d 3d 3d 20 32 35 37 20 2f 2a 20 kind === 257 /* 00030f40: 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 SyntaxKind.Class 00030f50: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3b 0a Declaration */;. 00030f60: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00030f70: 20 31 36 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 164 /* SyntaxKi 00030f80: 6e 64 2e 50 61 72 61 6d 65 74 65 72 20 2a 2f 3a nd.Parameter */: 00030f90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00030fa0: 20 2f 2f 20 69 66 20 74 68 65 20 70 61 72 61 6d // if the param 00030fb0: 65 74 65 72 27 73 20 70 61 72 65 6e 74 20 68 61 eter's parent ha 00030fc0: 73 20 61 20 62 6f 64 79 20 61 6e 64 20 69 74 73 s a body and its 00030fd0: 20 67 72 61 6e 64 70 61 72 65 6e 74 20 69 73 20 grandparent is 00030fe0: 61 20 63 6c 61 73 73 20 64 65 63 6c 61 72 61 74 a class declarat 00030ff0: 69 6f 6e 2c 20 74 68 69 73 20 69 73 20 61 20 76 ion, this is a v 00031000: 61 6c 69 64 20 74 61 72 67 65 74 3b 0a 20 20 20 alid target;. 00031010: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00031020: 75 72 6e 20 70 61 72 65 6e 74 2e 62 6f 64 79 20 urn parent.body 00031030: 21 3d 3d 20 75 6e 64 65 66 69 6e 65 64 0a 20 20 !== undefined. 00031040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00031050: 20 20 26 26 20 28 70 61 72 65 6e 74 2e 6b 69 6e && (parent.kin 00031060: 64 20 3d 3d 3d 20 31 37 31 20 2f 2a 20 53 79 6e d === 171 /* Syn 00031070: 74 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 72 75 63 taxKind.Construc 00031080: 74 6f 72 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 tor */. 00031090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c | 000310a0: 7c 20 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d | parent.kind == 000310b0: 3d 20 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 4b = 169 /* SyntaxK 000310c0: 69 6e 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 72 ind.MethodDeclar 000310d0: 61 74 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 20 ation */. 000310e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000310f0: 20 7c 7c 20 70 61 72 65 6e 74 2e 6b 69 6e 64 20 || parent.kind 00031100: 3d 3d 3d 20 31 37 33 20 2f 2a 20 53 79 6e 74 61 === 173 /* Synta 00031110: 78 4b 69 6e 64 2e 53 65 74 41 63 63 65 73 73 6f xKind.SetAccesso 00031120: 72 20 2a 2f 29 0a 20 20 20 20 20 20 20 20 20 20 r */). 00031130: 20 20 20 20 20 20 20 20 20 20 26 26 20 67 72 61 && gra 00031140: 6e 64 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d ndparent.kind == 00031150: 3d 20 32 35 37 20 2f 2a 20 53 79 6e 74 61 78 4b = 257 /* SyntaxK 00031160: 69 6e 64 2e 43 6c 61 73 73 44 65 63 6c 61 72 61 ind.ClassDeclara 00031170: 74 69 6f 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 20 tion */;. 00031180: 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 }. retur 00031190: 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 n false;. }. 000311a0: 20 20 20 74 73 2e 6e 6f 64 65 43 61 6e 42 65 44 ts.nodeCanBeD 000311b0: 65 63 6f 72 61 74 65 64 20 3d 20 6e 6f 64 65 43 ecorated = nodeC 000311c0: 61 6e 42 65 44 65 63 6f 72 61 74 65 64 3b 0a 20 anBeDecorated;. 000311d0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 6e 6f 64 65 function node 000311e0: 49 73 44 65 63 6f 72 61 74 65 64 28 6e 6f 64 65 IsDecorated(node 000311f0: 2c 20 70 61 72 65 6e 74 2c 20 67 72 61 6e 64 70 , parent, grandp 00031200: 61 72 65 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 arent) {. 00031210: 20 72 65 74 75 72 6e 20 68 61 73 44 65 63 6f 72 return hasDecor 00031220: 61 74 6f 72 73 28 6e 6f 64 65 29 0a 20 20 20 20 ators(node). 00031230: 20 20 20 20 20 20 20 20 26 26 20 6e 6f 64 65 43 && nodeC 00031240: 61 6e 42 65 44 65 63 6f 72 61 74 65 64 28 6e 6f anBeDecorated(no 00031250: 64 65 2c 20 70 61 72 65 6e 74 2c 20 67 72 61 6e de, parent, gran 00031260: 64 70 61 72 65 6e 74 29 3b 20 2f 2f 20 54 4f 44 dparent); // TOD 00031270: 4f 3a 20 47 48 23 31 38 32 31 37 0a 20 20 20 20 O: GH#18217. 00031280: 7d 0a 20 20 20 20 74 73 2e 6e 6f 64 65 49 73 44 }. ts.nodeIsD 00031290: 65 63 6f 72 61 74 65 64 20 3d 20 6e 6f 64 65 49 ecorated = nodeI 000312a0: 73 44 65 63 6f 72 61 74 65 64 3b 0a 20 20 20 20 sDecorated;. 000312b0: 66 75 6e 63 74 69 6f 6e 20 6e 6f 64 65 4f 72 43 function nodeOrC 000312c0: 68 69 6c 64 49 73 44 65 63 6f 72 61 74 65 64 28 hildIsDecorated( 000312d0: 6e 6f 64 65 2c 20 70 61 72 65 6e 74 2c 20 67 72 node, parent, gr 000312e0: 61 6e 64 70 61 72 65 6e 74 29 20 7b 0a 20 20 20 andparent) {. 000312f0: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 return node 00031300: 49 73 44 65 63 6f 72 61 74 65 64 28 6e 6f 64 65 IsDecorated(node 00031310: 2c 20 70 61 72 65 6e 74 2c 20 67 72 61 6e 64 70 , parent, grandp 00031320: 61 72 65 6e 74 29 20 7c 7c 20 63 68 69 6c 64 49 arent) || childI 00031330: 73 44 65 63 6f 72 61 74 65 64 28 6e 6f 64 65 2c sDecorated(node, 00031340: 20 70 61 72 65 6e 74 29 3b 20 2f 2f 20 54 4f 44 parent); // TOD 00031350: 4f 3a 20 47 48 23 31 38 32 31 37 0a 20 20 20 20 O: GH#18217. 00031360: 7d 0a 20 20 20 20 74 73 2e 6e 6f 64 65 4f 72 43 }. ts.nodeOrC 00031370: 68 69 6c 64 49 73 44 65 63 6f 72 61 74 65 64 20 hildIsDecorated 00031380: 3d 20 6e 6f 64 65 4f 72 43 68 69 6c 64 49 73 44 = nodeOrChildIsD 00031390: 65 63 6f 72 61 74 65 64 3b 0a 20 20 20 20 66 75 ecorated;. fu 000313a0: 6e 63 74 69 6f 6e 20 63 68 69 6c 64 49 73 44 65 nction childIsDe 000313b0: 63 6f 72 61 74 65 64 28 6e 6f 64 65 2c 20 70 61 corated(node, pa 000313c0: 72 65 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 rent) {. 000313d0: 73 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e switch (node.kin 000313e0: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 d) {. 000313f0: 20 63 61 73 65 20 32 35 37 20 2f 2a 20 53 79 6e case 257 /* Syn 00031400: 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 44 65 63 taxKind.ClassDec 00031410: 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 laration */:. 00031420: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00031430: 75 72 6e 20 74 73 2e 73 6f 6d 65 28 6e 6f 64 65 urn ts.some(node 00031440: 2e 6d 65 6d 62 65 72 73 2c 20 66 75 6e 63 74 69 .members, functi 00031450: 6f 6e 20 28 6d 29 20 7b 20 72 65 74 75 72 6e 20 on (m) { return 00031460: 6e 6f 64 65 4f 72 43 68 69 6c 64 49 73 44 65 63 nodeOrChildIsDec 00031470: 6f 72 61 74 65 64 28 6d 2c 20 6e 6f 64 65 2c 20 orated(m, node, 00031480: 70 61 72 65 6e 74 29 3b 20 7d 29 3b 20 2f 2f 20 parent); }); // 00031490: 54 4f 44 4f 3a 20 47 48 23 31 38 32 31 37 0a 20 TODO: GH#18217. 000314a0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 000314b0: 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 169 /* SyntaxKin 000314c0: 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 72 61 74 d.MethodDeclarat 000314d0: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 000314e0: 20 20 20 20 63 61 73 65 20 31 37 33 20 2f 2a 20 case 173 /* 000314f0: 53 79 6e 74 61 78 4b 69 6e 64 2e 53 65 74 41 63 SyntaxKind.SetAc 00031500: 63 65 73 73 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 cessor */:. 00031510: 20 20 20 20 20 20 20 63 61 73 65 20 31 37 31 20 case 171 00031520: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f /* SyntaxKind.Co 00031530: 6e 73 74 72 75 63 74 6f 72 20 2a 2f 3a 0a 20 20 nstructor */:. 00031540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00031550: 74 75 72 6e 20 74 73 2e 73 6f 6d 65 28 6e 6f 64 turn ts.some(nod 00031560: 65 2e 70 61 72 61 6d 65 74 65 72 73 2c 20 66 75 e.parameters, fu 00031570: 6e 63 74 69 6f 6e 20 28 70 29 20 7b 20 72 65 74 nction (p) { ret 00031580: 75 72 6e 20 6e 6f 64 65 49 73 44 65 63 6f 72 61 urn nodeIsDecora 00031590: 74 65 64 28 70 2c 20 6e 6f 64 65 2c 20 70 61 72 ted(p, node, par 000315a0: 65 6e 74 29 3b 20 7d 29 3b 20 2f 2f 20 54 4f 44 ent); }); // TOD 000315b0: 4f 3a 20 47 48 23 31 38 32 31 37 0a 20 20 20 20 O: GH#18217. 000315c0: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a default: 000315d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 000315e0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 return false;. 000315f0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 }. }. 00031600: 20 20 20 74 73 2e 63 68 69 6c 64 49 73 44 65 63 ts.childIsDec 00031610: 6f 72 61 74 65 64 20 3d 20 63 68 69 6c 64 49 73 orated = childIs 00031620: 44 65 63 6f 72 61 74 65 64 3b 0a 20 20 20 20 66 Decorated;. f 00031630: 75 6e 63 74 69 6f 6e 20 63 6c 61 73 73 4f 72 43 unction classOrC 00031640: 6f 6e 73 74 72 75 63 74 6f 72 50 61 72 61 6d 65 onstructorParame 00031650: 74 65 72 49 73 44 65 63 6f 72 61 74 65 64 28 6e terIsDecorated(n 00031660: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 69 ode) {. i 00031670: 66 20 28 6e 6f 64 65 49 73 44 65 63 6f 72 61 74 f (nodeIsDecorat 00031680: 65 64 28 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 ed(node)). 00031690: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 return tru 000316a0: 65 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 63 e;. var c 000316b0: 6f 6e 73 74 72 75 63 74 6f 72 20 3d 20 67 65 74 onstructor = get 000316c0: 46 69 72 73 74 43 6f 6e 73 74 72 75 63 74 6f 72 FirstConstructor 000316d0: 57 69 74 68 42 6f 64 79 28 6e 6f 64 65 29 3b 0a WithBody(node);. 000316e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 return ! 000316f0: 21 63 6f 6e 73 74 72 75 63 74 6f 72 20 26 26 20 !constructor && 00031700: 63 68 69 6c 64 49 73 44 65 63 6f 72 61 74 65 64 childIsDecorated 00031710: 28 63 6f 6e 73 74 72 75 63 74 6f 72 2c 20 6e 6f (constructor, no 00031720: 64 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 de);. }. t 00031730: 73 2e 63 6c 61 73 73 4f 72 43 6f 6e 73 74 72 75 s.classOrConstru 00031740: 63 74 6f 72 50 61 72 61 6d 65 74 65 72 49 73 44 ctorParameterIsD 00031750: 65 63 6f 72 61 74 65 64 20 3d 20 63 6c 61 73 73 ecorated = class 00031760: 4f 72 43 6f 6e 73 74 72 75 63 74 6f 72 50 61 72 OrConstructorPar 00031770: 61 6d 65 74 65 72 49 73 44 65 63 6f 72 61 74 65 ameterIsDecorate 00031780: 64 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 d;. function 00031790: 69 73 4a 53 58 54 61 67 4e 61 6d 65 28 6e 6f 64 isJSXTagName(nod 000317a0: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 e) {. var 000317b0: 20 70 61 72 65 6e 74 20 3d 20 6e 6f 64 65 2e 70 parent = node.p 000317c0: 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 69 arent;. i 000317d0: 66 20 28 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d f (parent.kind = 000317e0: 3d 3d 20 32 38 30 20 2f 2a 20 53 79 6e 74 61 78 == 280 /* Syntax 000317f0: 4b 69 6e 64 2e 4a 73 78 4f 70 65 6e 69 6e 67 45 Kind.JsxOpeningE 00031800: 6c 65 6d 65 6e 74 20 2a 2f 20 7c 7c 0a 20 20 20 lement */ ||. 00031810: 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 2e parent. 00031820: 6b 69 6e 64 20 3d 3d 3d 20 32 37 39 20 2f 2a 20 kind === 279 /* 00031830: 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 53 65 SyntaxKind.JsxSe 00031840: 6c 66 43 6c 6f 73 69 6e 67 45 6c 65 6d 65 6e 74 lfClosingElement 00031850: 20 2a 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 */ ||. 00031860: 20 20 20 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d parent.kind = 00031870: 3d 3d 20 32 38 31 20 2f 2a 20 53 79 6e 74 61 78 == 281 /* Syntax 00031880: 4b 69 6e 64 2e 4a 73 78 43 6c 6f 73 69 6e 67 45 Kind.JsxClosingE 00031890: 6c 65 6d 65 6e 74 20 2a 2f 29 20 7b 0a 20 20 20 lement */) {. 000318a0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 000318b0: 70 61 72 65 6e 74 2e 74 61 67 4e 61 6d 65 20 3d parent.tagName = 000318c0: 3d 3d 20 6e 6f 64 65 3b 0a 20 20 20 20 20 20 20 == node;. 000318d0: 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 }. retur 000318e0: 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 n false;. }. 000318f0: 20 20 20 74 73 2e 69 73 4a 53 58 54 61 67 4e 61 ts.isJSXTagNa 00031900: 6d 65 20 3d 20 69 73 4a 53 58 54 61 67 4e 61 6d me = isJSXTagNam 00031910: 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 e;. function 00031920: 69 73 45 78 70 72 65 73 73 69 6f 6e 4e 6f 64 65 isExpressionNode 00031930: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 00031940: 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 switch (node.ki 00031950: 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 nd) {. 00031960: 20 20 63 61 73 65 20 31 30 36 20 2f 2a 20 53 79 case 106 /* Sy 00031970: 6e 74 61 78 4b 69 6e 64 2e 53 75 70 65 72 4b 65 ntaxKind.SuperKe 00031980: 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 20 20 yword */:. 00031990: 20 20 20 20 20 20 63 61 73 65 20 31 30 34 20 2f case 104 / 000319a0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e 75 6c * SyntaxKind.Nul 000319b0: 6c 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 lKeyword */:. 000319c0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 31 case 11 000319d0: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 000319e0: 54 72 75 65 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a TrueKeyword */:. 000319f0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00031a00: 20 39 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 95 /* SyntaxKin 00031a10: 64 2e 46 61 6c 73 65 4b 65 79 77 6f 72 64 20 2a d.FalseKeyword * 00031a20: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00031a30: 61 73 65 20 31 33 20 2f 2a 20 53 79 6e 74 61 78 ase 13 /* Syntax 00031a40: 4b 69 6e 64 2e 52 65 67 75 6c 61 72 45 78 70 72 Kind.RegularExpr 00031a50: 65 73 73 69 6f 6e 4c 69 74 65 72 61 6c 20 2a 2f essionLiteral */ 00031a60: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 00031a70: 73 65 20 32 30 34 20 2f 2a 20 53 79 6e 74 61 78 se 204 /* Syntax 00031a80: 4b 69 6e 64 2e 41 72 72 61 79 4c 69 74 65 72 61 Kind.ArrayLitera 00031a90: 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a lExpression */:. 00031aa0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00031ab0: 20 32 30 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 205 /* SyntaxKi 00031ac0: 6e 64 2e 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c nd.ObjectLiteral 00031ad0: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 00031ae0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00031af0: 32 30 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 206 /* SyntaxKin 00031b00: 64 2e 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 d.PropertyAccess 00031b10: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 00031b20: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00031b30: 32 30 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 207 /* SyntaxKin 00031b40: 64 2e 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 45 d.ElementAccessE 00031b50: 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 xpression */:. 00031b60: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 00031b70: 30 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 08 /* SyntaxKind 00031b80: 2e 43 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e 20 .CallExpression 00031b90: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00031ba0: 63 61 73 65 20 32 30 39 20 2f 2a 20 53 79 6e 74 case 209 /* Synt 00031bb0: 61 78 4b 69 6e 64 2e 4e 65 77 45 78 70 72 65 73 axKind.NewExpres 00031bc0: 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 sion */:. 00031bd0: 20 20 20 20 20 63 61 73 65 20 32 31 30 20 2f 2a case 210 /* 00031be0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 61 67 67 SyntaxKind.Tagg 00031bf0: 65 64 54 65 6d 70 6c 61 74 65 45 78 70 72 65 73 edTemplateExpres 00031c00: 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 sion */:. 00031c10: 20 20 20 20 20 63 61 73 65 20 32 32 39 20 2f 2a case 229 /* 00031c20: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 73 45 78 SyntaxKind.AsEx 00031c30: 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 pression */:. 00031c40: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 31 case 21 00031c50: 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 1 /* SyntaxKind. 00031c60: 54 79 70 65 41 73 73 65 72 74 69 6f 6e 45 78 70 TypeAssertionExp 00031c70: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 00031c80: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 33 30 case 230 00031c90: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e /* SyntaxKind.N 00031ca0: 6f 6e 4e 75 6c 6c 45 78 70 72 65 73 73 69 6f 6e onNullExpression 00031cb0: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00031cc0: 20 63 61 73 65 20 32 31 32 20 2f 2a 20 53 79 6e case 212 /* Syn 00031cd0: 74 61 78 4b 69 6e 64 2e 50 61 72 65 6e 74 68 65 taxKind.Parenthe 00031ce0: 73 69 7a 65 64 45 78 70 72 65 73 73 69 6f 6e 20 sizedExpression 00031cf0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00031d00: 63 61 73 65 20 32 31 33 20 2f 2a 20 53 79 6e 74 case 213 /* Synt 00031d10: 61 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 45 axKind.FunctionE 00031d20: 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 xpression */:. 00031d30: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 00031d40: 32 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 26 /* SyntaxKind 00031d50: 2e 43 6c 61 73 73 45 78 70 72 65 73 73 69 6f 6e .ClassExpression 00031d60: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00031d70: 20 63 61 73 65 20 32 31 34 20 2f 2a 20 53 79 6e case 214 /* Syn 00031d80: 74 61 78 4b 69 6e 64 2e 41 72 72 6f 77 46 75 6e taxKind.ArrowFun 00031d90: 63 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ction */:. 00031da0: 20 20 20 20 20 20 63 61 73 65 20 32 31 37 20 2f case 217 / 00031db0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 56 6f 69 * SyntaxKind.Voi 00031dc0: 64 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a dExpression */:. 00031dd0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00031de0: 20 32 31 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 215 /* SyntaxKi 00031df0: 6e 64 2e 44 65 6c 65 74 65 45 78 70 72 65 73 73 nd.DeleteExpress 00031e00: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 00031e10: 20 20 20 20 63 61 73 65 20 32 31 36 20 2f 2a 20 case 216 /* 00031e20: 53 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 4f SyntaxKind.TypeO 00031e30: 66 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a fExpression */:. 00031e40: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00031e50: 20 32 31 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 219 /* SyntaxKi 00031e60: 6e 64 2e 50 72 65 66 69 78 55 6e 61 72 79 45 78 nd.PrefixUnaryEx 00031e70: 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 pression */:. 00031e80: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 32 case 22 00031e90: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 00031ea0: 50 6f 73 74 66 69 78 55 6e 61 72 79 45 78 70 72 PostfixUnaryExpr 00031eb0: 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ession */:. 00031ec0: 20 20 20 20 20 20 20 63 61 73 65 20 32 32 31 20 case 221 00031ed0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 69 /* SyntaxKind.Bi 00031ee0: 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e 20 2a naryExpression * 00031ef0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00031f00: 61 73 65 20 32 32 32 20 2f 2a 20 53 79 6e 74 61 ase 222 /* Synta 00031f10: 78 4b 69 6e 64 2e 43 6f 6e 64 69 74 69 6f 6e 61 xKind.Conditiona 00031f20: 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a lExpression */:. 00031f30: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00031f40: 20 32 32 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 225 /* SyntaxKi 00031f50: 6e 64 2e 53 70 72 65 61 64 45 6c 65 6d 65 6e 74 nd.SpreadElement 00031f60: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00031f70: 20 63 61 73 65 20 32 32 33 20 2f 2a 20 53 79 6e case 223 /* Syn 00031f80: 74 61 78 4b 69 6e 64 2e 54 65 6d 70 6c 61 74 65 taxKind.Template 00031f90: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 00031fa0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00031fb0: 32 32 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 227 /* SyntaxKin 00031fc0: 64 2e 4f 6d 69 74 74 65 64 45 78 70 72 65 73 73 d.OmittedExpress 00031fd0: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 00031fe0: 20 20 20 20 63 61 73 65 20 32 37 38 20 2f 2a 20 case 278 /* 00031ff0: 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 45 6c SyntaxKind.JsxEl 00032000: 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 ement */:. 00032010: 20 20 20 20 20 20 63 61 73 65 20 32 37 39 20 2f case 279 / 00032020: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 * SyntaxKind.Jsx 00032030: 53 65 6c 66 43 6c 6f 73 69 6e 67 45 6c 65 6d 65 SelfClosingEleme 00032040: 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 nt */:. 00032050: 20 20 20 63 61 73 65 20 32 38 32 20 2f 2a 20 53 case 282 /* S 00032060: 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 46 72 61 yntaxKind.JsxFra 00032070: 67 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 gment */:. 00032080: 20 20 20 20 20 20 63 61 73 65 20 32 32 34 20 2f case 224 / 00032090: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 59 69 65 * SyntaxKind.Yie 000320a0: 6c 64 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a ldExpression */: 000320b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 000320c0: 65 20 32 31 38 20 2f 2a 20 53 79 6e 74 61 78 4b e 218 /* SyntaxK 000320d0: 69 6e 64 2e 41 77 61 69 74 45 78 70 72 65 73 73 ind.AwaitExpress 000320e0: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 000320f0: 20 20 20 20 63 61 73 65 20 32 33 31 20 2f 2a 20 case 231 /* 00032100: 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 74 61 50 SyntaxKind.MetaP 00032110: 72 6f 70 65 72 74 79 20 2a 2f 3a 0a 20 20 20 20 roperty */:. 00032120: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00032130: 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 rn true;. 00032140: 20 20 20 20 20 63 61 73 65 20 32 32 38 20 2f 2a case 228 /* 00032150: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 78 70 72 SyntaxKind.Expr 00032160: 65 73 73 69 6f 6e 57 69 74 68 54 79 70 65 41 72 essionWithTypeAr 00032170: 67 75 6d 65 6e 74 73 20 2a 2f 3a 0a 20 20 20 20 guments */:. 00032180: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00032190: 72 6e 20 21 74 73 2e 69 73 48 65 72 69 74 61 67 rn !ts.isHeritag 000321a0: 65 43 6c 61 75 73 65 28 6e 6f 64 65 2e 70 61 72 eClause(node.par 000321b0: 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 ent);. 000321c0: 20 20 63 61 73 65 20 31 36 31 20 2f 2a 20 53 79 case 161 /* Sy 000321d0: 6e 74 61 78 4b 69 6e 64 2e 51 75 61 6c 69 66 69 ntaxKind.Qualifi 000321e0: 65 64 4e 61 6d 65 20 2a 2f 3a 0a 20 20 20 20 20 edName */:. 000321f0: 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 while 00032200: 20 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b 69 (node.parent.ki 00032210: 6e 64 20 3d 3d 3d 20 31 36 31 20 2f 2a 20 53 79 nd === 161 /* Sy 00032220: 6e 74 61 78 4b 69 6e 64 2e 51 75 61 6c 69 66 69 ntaxKind.Qualifi 00032230: 65 64 4e 61 6d 65 20 2a 2f 29 20 7b 0a 20 20 20 edName */) {. 00032240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00032250: 20 6e 6f 64 65 20 3d 20 6e 6f 64 65 2e 70 61 72 node = node.par 00032260: 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ent;. 00032270: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 }. 00032280: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 00032290: 64 65 2e 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d de.parent.kind = 000322a0: 3d 3d 20 31 38 31 20 2f 2a 20 53 79 6e 74 61 78 == 181 /* Syntax 000322b0: 4b 69 6e 64 2e 54 79 70 65 51 75 65 72 79 20 2a Kind.TypeQuery * 000322c0: 2f 20 7c 7c 20 74 73 2e 69 73 4a 53 44 6f 63 4c / || ts.isJSDocL 000322d0: 69 6e 6b 4c 69 6b 65 28 6e 6f 64 65 2e 70 61 72 inkLike(node.par 000322e0: 65 6e 74 29 20 7c 7c 20 74 73 2e 69 73 4a 53 44 ent) || ts.isJSD 000322f0: 6f 63 4e 61 6d 65 52 65 66 65 72 65 6e 63 65 28 ocNameReference( 00032300: 6e 6f 64 65 2e 70 61 72 65 6e 74 29 20 7c 7c 20 node.parent) || 00032310: 74 73 2e 69 73 4a 53 44 6f 63 4d 65 6d 62 65 72 ts.isJSDocMember 00032320: 4e 61 6d 65 28 6e 6f 64 65 2e 70 61 72 65 6e 74 Name(node.parent 00032330: 29 20 7c 7c 20 69 73 4a 53 58 54 61 67 4e 61 6d ) || isJSXTagNam 00032340: 65 28 6e 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 e(node);. 00032350: 20 20 20 20 20 63 61 73 65 20 33 31 31 20 2f 2a case 311 /* 00032360: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f SyntaxKind.JSDo 00032370: 63 4d 65 6d 62 65 72 4e 61 6d 65 20 2a 2f 3a 0a cMemberName */:. 00032380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00032390: 77 68 69 6c 65 20 28 74 73 2e 69 73 4a 53 44 6f while (ts.isJSDo 000323a0: 63 4d 65 6d 62 65 72 4e 61 6d 65 28 6e 6f 64 65 cMemberName(node 000323b0: 2e 70 61 72 65 6e 74 29 29 20 7b 0a 20 20 20 20 .parent)) {. 000323c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000323d0: 6e 6f 64 65 20 3d 20 6e 6f 64 65 2e 70 61 72 65 node = node.pare 000323e0: 6e 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 nt;. 000323f0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }. 00032400: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 return nod 00032410: 65 2e 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d e.parent.kind == 00032420: 3d 20 31 38 31 20 2f 2a 20 53 79 6e 74 61 78 4b = 181 /* SyntaxK 00032430: 69 6e 64 2e 54 79 70 65 51 75 65 72 79 20 2a 2f ind.TypeQuery */ 00032440: 20 7c 7c 20 74 73 2e 69 73 4a 53 44 6f 63 4c 69 || ts.isJSDocLi 00032450: 6e 6b 4c 69 6b 65 28 6e 6f 64 65 2e 70 61 72 65 nkLike(node.pare 00032460: 6e 74 29 20 7c 7c 20 74 73 2e 69 73 4a 53 44 6f nt) || ts.isJSDo 00032470: 63 4e 61 6d 65 52 65 66 65 72 65 6e 63 65 28 6e cNameReference(n 00032480: 6f 64 65 2e 70 61 72 65 6e 74 29 20 7c 7c 20 74 ode.parent) || t 00032490: 73 2e 69 73 4a 53 44 6f 63 4d 65 6d 62 65 72 4e s.isJSDocMemberN 000324a0: 61 6d 65 28 6e 6f 64 65 2e 70 61 72 65 6e 74 29 ame(node.parent) 000324b0: 20 7c 7c 20 69 73 4a 53 58 54 61 67 4e 61 6d 65 || isJSXTagName 000324c0: 28 6e 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 20 (node);. 000324d0: 20 20 20 20 63 61 73 65 20 38 30 20 2f 2a 20 53 case 80 /* S 000324e0: 79 6e 74 61 78 4b 69 6e 64 2e 50 72 69 76 61 74 yntaxKind.Privat 000324f0: 65 49 64 65 6e 74 69 66 69 65 72 20 2a 2f 3a 0a eIdentifier */:. 00032500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00032510: 72 65 74 75 72 6e 20 74 73 2e 69 73 42 69 6e 61 return ts.isBina 00032520: 72 79 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 ryExpression(nod 00032530: 65 2e 70 61 72 65 6e 74 29 20 26 26 20 6e 6f 64 e.parent) && nod 00032540: 65 2e 70 61 72 65 6e 74 2e 6c 65 66 74 20 3d 3d e.parent.left == 00032550: 3d 20 6e 6f 64 65 20 26 26 20 6e 6f 64 65 2e 70 = node && node.p 00032560: 61 72 65 6e 74 2e 6f 70 65 72 61 74 6f 72 54 6f arent.operatorTo 00032570: 6b 65 6e 2e 6b 69 6e 64 20 3d 3d 3d 20 31 30 31 ken.kind === 101 00032580: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 /* SyntaxKind.I 00032590: 6e 4b 65 79 77 6f 72 64 20 2a 2f 3b 0a 20 20 20 nKeyword */;. 000325a0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 37 39 case 79 000325b0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 /* SyntaxKind.I 000325c0: 64 65 6e 74 69 66 69 65 72 20 2a 2f 3a 0a 20 20 dentifier */:. 000325d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if 000325e0: 20 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b 69 (node.parent.ki 000325f0: 6e 64 20 3d 3d 3d 20 31 38 31 20 2f 2a 20 53 79 nd === 181 /* Sy 00032600: 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 51 75 65 ntaxKind.TypeQue 00032610: 72 79 20 2a 2f 20 7c 7c 20 74 73 2e 69 73 4a 53 ry */ || ts.isJS 00032620: 44 6f 63 4c 69 6e 6b 4c 69 6b 65 28 6e 6f 64 65 DocLinkLike(node 00032630: 2e 70 61 72 65 6e 74 29 20 7c 7c 20 74 73 2e 69 .parent) || ts.i 00032640: 73 4a 53 44 6f 63 4e 61 6d 65 52 65 66 65 72 65 sJSDocNameRefere 00032650: 6e 63 65 28 6e 6f 64 65 2e 70 61 72 65 6e 74 29 nce(node.parent) 00032660: 20 7c 7c 20 74 73 2e 69 73 4a 53 44 6f 63 4d 65 || ts.isJSDocMe 00032670: 6d 62 65 72 4e 61 6d 65 28 6e 6f 64 65 2e 70 61 mberName(node.pa 00032680: 72 65 6e 74 29 20 7c 7c 20 69 73 4a 53 58 54 61 rent) || isJSXTa 00032690: 67 4e 61 6d 65 28 6e 6f 64 65 29 29 20 7b 0a 20 gName(node)) {. 000326a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000326b0: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a return true;. 000326c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000326d0: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f }. // 000326e0: 20 66 61 6c 6c 73 20 74 68 72 6f 75 67 68 0a 20 falls through. 000326f0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00032700: 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 8 /* SyntaxKind. 00032710: 4e 75 6d 65 72 69 63 4c 69 74 65 72 61 6c 20 2a NumericLiteral * 00032720: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00032730: 61 73 65 20 39 20 2f 2a 20 53 79 6e 74 61 78 4b ase 9 /* SyntaxK 00032740: 69 6e 64 2e 42 69 67 49 6e 74 4c 69 74 65 72 61 ind.BigIntLitera 00032750: 6c 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 l */:. 00032760: 20 20 63 61 73 65 20 31 30 20 2f 2a 20 53 79 6e case 10 /* Syn 00032770: 74 61 78 4b 69 6e 64 2e 53 74 72 69 6e 67 4c 69 taxKind.StringLi 00032780: 74 65 72 61 6c 20 2a 2f 3a 0a 20 20 20 20 20 20 teral */:. 00032790: 20 20 20 20 20 20 63 61 73 65 20 31 34 20 2f 2a case 14 /* 000327a0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e 6f 53 75 SyntaxKind.NoSu 000327b0: 62 73 74 69 74 75 74 69 6f 6e 54 65 6d 70 6c 61 bstitutionTempla 000327c0: 74 65 4c 69 74 65 72 61 6c 20 2a 2f 3a 0a 20 20 teLiteral */:. 000327d0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 000327e0: 30 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 08 /* SyntaxKind 000327f0: 2e 54 68 69 73 4b 65 79 77 6f 72 64 20 2a 2f 3a .ThisKeyword */: 00032800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00032810: 20 72 65 74 75 72 6e 20 69 73 49 6e 45 78 70 72 return isInExpr 00032820: 65 73 73 69 6f 6e 43 6f 6e 74 65 78 74 28 6e 6f essionContext(no 00032830: 64 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 de);. 00032840: 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 default:. 00032850: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00032860: 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 false;. 00032870: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 }. }. ts.i 00032880: 73 45 78 70 72 65 73 73 69 6f 6e 4e 6f 64 65 20 sExpressionNode 00032890: 3d 20 69 73 45 78 70 72 65 73 73 69 6f 6e 4e 6f = isExpressionNo 000328a0: 64 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e de;. function 000328b0: 20 69 73 49 6e 45 78 70 72 65 73 73 69 6f 6e 43 isInExpressionC 000328c0: 6f 6e 74 65 78 74 28 6e 6f 64 65 29 20 7b 0a 20 ontext(node) {. 000328d0: 20 20 20 20 20 20 20 76 61 72 20 70 61 72 65 6e var paren 000328e0: 74 20 3d 20 6e 6f 64 65 2e 70 61 72 65 6e 74 3b t = node.parent; 000328f0: 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 . switch 00032900: 28 70 61 72 65 6e 74 2e 6b 69 6e 64 29 20 7b 0a (parent.kind) {. 00032910: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00032920: 20 32 35 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 254 /* SyntaxKi 00032930: 6e 64 2e 56 61 72 69 61 62 6c 65 44 65 63 6c 61 nd.VariableDecla 00032940: 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ration */:. 00032950: 20 20 20 20 20 20 20 63 61 73 65 20 31 36 34 20 case 164 00032960: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 61 /* SyntaxKind.Pa 00032970: 72 61 6d 65 74 65 72 20 2a 2f 3a 0a 20 20 20 20 rameter */:. 00032980: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 36 37 case 167 00032990: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 /* SyntaxKind.P 000329a0: 72 6f 70 65 72 74 79 44 65 63 6c 61 72 61 74 69 ropertyDeclarati 000329b0: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 000329c0: 20 20 20 63 61 73 65 20 31 36 36 20 2f 2a 20 53 case 166 /* S 000329d0: 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 yntaxKind.Proper 000329e0: 74 79 53 69 67 6e 61 74 75 72 65 20 2a 2f 3a 0a tySignature */:. 000329f0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00032a00: 20 32 39 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 299 /* SyntaxKi 00032a10: 6e 64 2e 45 6e 75 6d 4d 65 6d 62 65 72 20 2a 2f nd.EnumMember */ 00032a20: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 00032a30: 73 65 20 32 39 36 20 2f 2a 20 53 79 6e 74 61 78 se 296 /* Syntax 00032a40: 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 41 73 73 Kind.PropertyAss 00032a50: 69 67 6e 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 ignment */:. 00032a60: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 33 case 203 00032a70: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 /* SyntaxKind.B 00032a80: 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 20 2a 2f indingElement */ 00032a90: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 00032aa0: 20 20 72 65 74 75 72 6e 20 70 61 72 65 6e 74 2e return parent. 00032ab0: 69 6e 69 74 69 61 6c 69 7a 65 72 20 3d 3d 3d 20 initializer === 00032ac0: 6e 6f 64 65 3b 0a 20 20 20 20 20 20 20 20 20 20 node;. 00032ad0: 20 20 63 61 73 65 20 32 33 38 20 2f 2a 20 53 79 case 238 /* Sy 00032ae0: 6e 74 61 78 4b 69 6e 64 2e 45 78 70 72 65 73 73 ntaxKind.Express 00032af0: 69 6f 6e 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a ionStatement */: 00032b00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00032b10: 65 20 32 33 39 20 2f 2a 20 53 79 6e 74 61 78 4b e 239 /* SyntaxK 00032b20: 69 6e 64 2e 49 66 53 74 61 74 65 6d 65 6e 74 20 ind.IfStatement 00032b30: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00032b40: 63 61 73 65 20 32 34 30 20 2f 2a 20 53 79 6e 74 case 240 /* Synt 00032b50: 61 78 4b 69 6e 64 2e 44 6f 53 74 61 74 65 6d 65 axKind.DoStateme 00032b60: 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 nt */:. 00032b70: 20 20 20 63 61 73 65 20 32 34 31 20 2f 2a 20 53 case 241 /* S 00032b80: 79 6e 74 61 78 4b 69 6e 64 2e 57 68 69 6c 65 53 yntaxKind.WhileS 00032b90: 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 tatement */:. 00032ba0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 34 case 24 00032bb0: 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 7 /* SyntaxKind. 00032bc0: 52 65 74 75 72 6e 53 74 61 74 65 6d 65 6e 74 20 ReturnStatement 00032bd0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00032be0: 63 61 73 65 20 32 34 38 20 2f 2a 20 53 79 6e 74 case 248 /* Synt 00032bf0: 61 78 4b 69 6e 64 2e 57 69 74 68 53 74 61 74 65 axKind.WithState 00032c00: 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ment */:. 00032c10: 20 20 20 20 20 63 61 73 65 20 32 34 39 20 2f 2a case 249 /* 00032c20: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 77 69 74 SyntaxKind.Swit 00032c30: 63 68 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a chStatement */:. 00032c40: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00032c50: 20 32 38 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 289 /* SyntaxKi 00032c60: 6e 64 2e 43 61 73 65 43 6c 61 75 73 65 20 2a 2f nd.CaseClause */ 00032c70: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 00032c80: 73 65 20 32 35 31 20 2f 2a 20 53 79 6e 74 61 78 se 251 /* Syntax 00032c90: 4b 69 6e 64 2e 54 68 72 6f 77 53 74 61 74 65 6d Kind.ThrowStatem 00032ca0: 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ent */:. 00032cb0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 return p 00032cc0: 61 72 65 6e 74 2e 65 78 70 72 65 73 73 69 6f 6e arent.expression 00032cd0: 20 3d 3d 3d 20 6e 6f 64 65 3b 0a 20 20 20 20 20 === node;. 00032ce0: 20 20 20 20 20 20 20 63 61 73 65 20 32 34 32 20 case 242 00032cf0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 6f /* SyntaxKind.Fo 00032d00: 72 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 rStatement */:. 00032d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 v 00032d20: 61 72 20 66 6f 72 53 74 61 74 65 6d 65 6e 74 20 ar forStatement 00032d30: 3d 20 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 = parent;. 00032d40: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00032d50: 20 28 66 6f 72 53 74 61 74 65 6d 65 6e 74 2e 69 (forStatement.i 00032d60: 6e 69 74 69 61 6c 69 7a 65 72 20 3d 3d 3d 20 6e nitializer === n 00032d70: 6f 64 65 20 26 26 20 66 6f 72 53 74 61 74 65 6d ode && forStatem 00032d80: 65 6e 74 2e 69 6e 69 74 69 61 6c 69 7a 65 72 2e ent.initializer. 00032d90: 6b 69 6e 64 20 21 3d 3d 20 32 35 35 20 2f 2a 20 kind !== 255 /* 00032da0: 53 79 6e 74 61 78 4b 69 6e 64 2e 56 61 72 69 61 SyntaxKind.Varia 00032db0: 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 4c 69 bleDeclarationLi 00032dc0: 73 74 20 2a 2f 29 20 7c 7c 0a 20 20 20 20 20 20 st */) ||. 00032dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f fo 00032de0: 72 53 74 61 74 65 6d 65 6e 74 2e 63 6f 6e 64 69 rStatement.condi 00032df0: 74 69 6f 6e 20 3d 3d 3d 20 6e 6f 64 65 20 7c 7c tion === node || 00032e00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00032e10: 20 20 20 20 20 66 6f 72 53 74 61 74 65 6d 65 6e forStatemen 00032e20: 74 2e 69 6e 63 72 65 6d 65 6e 74 6f 72 20 3d 3d t.incrementor == 00032e30: 3d 20 6e 6f 64 65 3b 0a 20 20 20 20 20 20 20 20 = node;. 00032e40: 20 20 20 20 63 61 73 65 20 32 34 33 20 2f 2a 20 case 243 /* 00032e50: 53 79 6e 74 61 78 4b 69 6e 64 2e 46 6f 72 49 6e SyntaxKind.ForIn 00032e60: 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 Statement */:. 00032e70: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 00032e80: 34 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 44 /* SyntaxKind 00032e90: 2e 46 6f 72 4f 66 53 74 61 74 65 6d 65 6e 74 20 .ForOfStatement 00032ea0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00032eb0: 20 20 20 20 76 61 72 20 66 6f 72 49 6e 53 74 61 var forInSta 00032ec0: 74 65 6d 65 6e 74 20 3d 20 70 61 72 65 6e 74 3b tement = parent; 00032ed0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00032ee0: 20 72 65 74 75 72 6e 20 28 66 6f 72 49 6e 53 74 return (forInSt 00032ef0: 61 74 65 6d 65 6e 74 2e 69 6e 69 74 69 61 6c 69 atement.initiali 00032f00: 7a 65 72 20 3d 3d 3d 20 6e 6f 64 65 20 26 26 20 zer === node && 00032f10: 66 6f 72 49 6e 53 74 61 74 65 6d 65 6e 74 2e 69 forInStatement.i 00032f20: 6e 69 74 69 61 6c 69 7a 65 72 2e 6b 69 6e 64 20 nitializer.kind 00032f30: 21 3d 3d 20 32 35 35 20 2f 2a 20 53 79 6e 74 61 !== 255 /* Synta 00032f40: 78 4b 69 6e 64 2e 56 61 72 69 61 62 6c 65 44 65 xKind.VariableDe 00032f50: 63 6c 61 72 61 74 69 6f 6e 4c 69 73 74 20 2a 2f clarationList */ 00032f60: 29 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 ) ||. 00032f70: 20 20 20 20 20 20 20 20 20 66 6f 72 49 6e 53 74 forInSt 00032f80: 61 74 65 6d 65 6e 74 2e 65 78 70 72 65 73 73 69 atement.expressi 00032f90: 6f 6e 20 3d 3d 3d 20 6e 6f 64 65 3b 0a 20 20 20 on === node;. 00032fa0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 31 case 21 00032fb0: 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 1 /* SyntaxKind. 00032fc0: 54 79 70 65 41 73 73 65 72 74 69 6f 6e 45 78 70 TypeAssertionExp 00032fd0: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 00032fe0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 32 39 case 229 00032ff0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 /* SyntaxKind.A 00033000: 73 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a sExpression */:. 00033010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00033020: 72 65 74 75 72 6e 20 6e 6f 64 65 20 3d 3d 3d 20 return node === 00033030: 70 61 72 65 6e 74 2e 65 78 70 72 65 73 73 69 6f parent.expressio 00033040: 6e 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 n;. c 00033050: 61 73 65 20 32 33 33 20 2f 2a 20 53 79 6e 74 61 ase 233 /* Synta 00033060: 78 4b 69 6e 64 2e 54 65 6d 70 6c 61 74 65 53 70 xKind.TemplateSp 00033070: 61 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 an */:. 00033080: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 00033090: 64 65 20 3d 3d 3d 20 70 61 72 65 6e 74 2e 65 78 de === parent.ex 000330a0: 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 20 20 20 pression;. 000330b0: 20 20 20 20 20 20 63 61 73 65 20 31 36 32 20 2f case 162 / 000330c0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6d * SyntaxKind.Com 000330d0: 70 75 74 65 64 50 72 6f 70 65 72 74 79 4e 61 6d putedPropertyNam 000330e0: 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 e */:. 000330f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 return nod 00033100: 65 20 3d 3d 3d 20 70 61 72 65 6e 74 2e 65 78 70 e === parent.exp 00033110: 72 65 73 73 69 6f 6e 3b 0a 20 20 20 20 20 20 20 ression;. 00033120: 20 20 20 20 20 63 61 73 65 20 31 36 35 20 2f 2a case 165 /* 00033130: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 44 65 63 6f SyntaxKind.Deco 00033140: 72 61 74 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 20 rator */:. 00033150: 20 20 20 20 20 20 63 61 73 65 20 32 38 38 20 2f case 288 / 00033160: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 * SyntaxKind.Jsx 00033170: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 00033180: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00033190: 32 38 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 287 /* SyntaxKin 000331a0: 64 2e 4a 73 78 53 70 72 65 61 64 41 74 74 72 69 d.JsxSpreadAttri 000331b0: 62 75 74 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 bute */:. 000331c0: 20 20 20 20 20 63 61 73 65 20 32 39 38 20 2f 2a case 298 /* 000331d0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 70 72 65 SyntaxKind.Spre 000331e0: 61 64 41 73 73 69 67 6e 6d 65 6e 74 20 2a 2f 3a adAssignment */: 000331f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00033200: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 return true;. 00033210: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 00033220: 32 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 28 /* SyntaxKind 00033230: 2e 45 78 70 72 65 73 73 69 6f 6e 57 69 74 68 54 .ExpressionWithT 00033240: 79 70 65 41 72 67 75 6d 65 6e 74 73 20 2a 2f 3a ypeArguments */: 00033250: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00033260: 20 72 65 74 75 72 6e 20 70 61 72 65 6e 74 2e 65 return parent.e 00033270: 78 70 72 65 73 73 69 6f 6e 20 3d 3d 3d 20 6e 6f xpression === no 00033280: 64 65 20 26 26 20 21 69 73 50 61 72 74 4f 66 54 de && !isPartOfT 00033290: 79 70 65 4e 6f 64 65 28 70 61 72 65 6e 74 29 3b ypeNode(parent); 000332a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 000332b0: 65 20 32 39 37 20 2f 2a 20 53 79 6e 74 61 78 4b e 297 /* SyntaxK 000332c0: 69 6e 64 2e 53 68 6f 72 74 68 61 6e 64 50 72 6f ind.ShorthandPro 000332d0: 70 65 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 20 pertyAssignment 000332e0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 000332f0: 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 65 6e return paren 00033300: 74 2e 6f 62 6a 65 63 74 41 73 73 69 67 6e 6d 65 t.objectAssignme 00033310: 6e 74 49 6e 69 74 69 61 6c 69 7a 65 72 20 3d 3d ntInitializer == 00033320: 3d 20 6e 6f 64 65 3b 0a 20 20 20 20 20 20 20 20 = node;. 00033330: 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 default:. 00033340: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00033350: 75 72 6e 20 69 73 45 78 70 72 65 73 73 69 6f 6e urn isExpression 00033360: 4e 6f 64 65 28 70 61 72 65 6e 74 29 3b 0a 20 20 Node(parent);. 00033370: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 }. }. 00033380: 20 20 74 73 2e 69 73 49 6e 45 78 70 72 65 73 73 ts.isInExpress 00033390: 69 6f 6e 43 6f 6e 74 65 78 74 20 3d 20 69 73 49 ionContext = isI 000333a0: 6e 45 78 70 72 65 73 73 69 6f 6e 43 6f 6e 74 65 nExpressionConte 000333b0: 78 74 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e xt;. function 000333c0: 20 69 73 50 61 72 74 4f 66 54 79 70 65 51 75 65 isPartOfTypeQue 000333d0: 72 79 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 ry(node) {. 000333e0: 20 20 20 77 68 69 6c 65 20 28 6e 6f 64 65 2e 6b while (node.k 000333f0: 69 6e 64 20 3d 3d 3d 20 31 36 31 20 2f 2a 20 53 ind === 161 /* S 00033400: 79 6e 74 61 78 4b 69 6e 64 2e 51 75 61 6c 69 66 yntaxKind.Qualif 00033410: 69 65 64 4e 61 6d 65 20 2a 2f 20 7c 7c 20 6e 6f iedName */ || no 00033420: 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 37 39 20 2f de.kind === 79 / 00033430: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 64 65 * SyntaxKind.Ide 00033440: 6e 74 69 66 69 65 72 20 2a 2f 29 20 7b 0a 20 20 ntifier */) {. 00033450: 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d node = 00033460: 20 6e 6f 64 65 2e 70 61 72 65 6e 74 3b 0a 20 20 node.parent;. 00033470: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 00033480: 72 65 74 75 72 6e 20 6e 6f 64 65 2e 6b 69 6e 64 return node.kind 00033490: 20 3d 3d 3d 20 31 38 31 20 2f 2a 20 53 79 6e 74 === 181 /* Synt 000334a0: 61 78 4b 69 6e 64 2e 54 79 70 65 51 75 65 72 79 axKind.TypeQuery 000334b0: 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 */;. }. t 000334c0: 73 2e 69 73 50 61 72 74 4f 66 54 79 70 65 51 75 s.isPartOfTypeQu 000334d0: 65 72 79 20 3d 20 69 73 50 61 72 74 4f 66 54 79 ery = isPartOfTy 000334e0: 70 65 51 75 65 72 79 3b 0a 20 20 20 20 66 75 6e peQuery;. fun 000334f0: 63 74 69 6f 6e 20 69 73 4e 61 6d 65 73 70 61 63 ction isNamespac 00033500: 65 52 65 65 78 70 6f 72 74 44 65 63 6c 61 72 61 eReexportDeclara 00033510: 74 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 tion(node) {. 00033520: 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 return ts.i 00033530: 73 4e 61 6d 65 73 70 61 63 65 45 78 70 6f 72 74 sNamespaceExport 00033540: 28 6e 6f 64 65 29 20 26 26 20 21 21 6e 6f 64 65 (node) && !!node 00033550: 2e 70 61 72 65 6e 74 2e 6d 6f 64 75 6c 65 53 70 .parent.moduleSp 00033560: 65 63 69 66 69 65 72 3b 0a 20 20 20 20 7d 0a 20 ecifier;. }. 00033570: 20 20 20 74 73 2e 69 73 4e 61 6d 65 73 70 61 63 ts.isNamespac 00033580: 65 52 65 65 78 70 6f 72 74 44 65 63 6c 61 72 61 eReexportDeclara 00033590: 74 69 6f 6e 20 3d 20 69 73 4e 61 6d 65 73 70 61 tion = isNamespa 000335a0: 63 65 52 65 65 78 70 6f 72 74 44 65 63 6c 61 72 ceReexportDeclar 000335b0: 61 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 ation;. funct 000335c0: 69 6f 6e 20 69 73 45 78 74 65 72 6e 61 6c 4d 6f ion isExternalMo 000335d0: 64 75 6c 65 49 6d 70 6f 72 74 45 71 75 61 6c 73 duleImportEquals 000335e0: 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 Declaration(node 000335f0: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 00033600: 72 6e 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d rn node.kind === 00033610: 20 32 36 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 265 /* SyntaxKi 00033620: 6e 64 2e 49 6d 70 6f 72 74 45 71 75 61 6c 73 44 nd.ImportEqualsD 00033630: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 20 26 26 eclaration */ && 00033640: 20 6e 6f 64 65 2e 6d 6f 64 75 6c 65 52 65 66 65 node.moduleRefe 00033650: 72 65 6e 63 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 rence.kind === 2 00033660: 37 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 77 /* SyntaxKind 00033670: 2e 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 52 .ExternalModuleR 00033680: 65 66 65 72 65 6e 63 65 20 2a 2f 3b 0a 20 20 20 eference */;. 00033690: 20 7d 0a 20 20 20 20 74 73 2e 69 73 45 78 74 65 }. ts.isExte 000336a0: 72 6e 61 6c 4d 6f 64 75 6c 65 49 6d 70 6f 72 74 rnalModuleImport 000336b0: 45 71 75 61 6c 73 44 65 63 6c 61 72 61 74 69 6f EqualsDeclaratio 000336c0: 6e 20 3d 20 69 73 45 78 74 65 72 6e 61 6c 4d 6f n = isExternalMo 000336d0: 64 75 6c 65 49 6d 70 6f 72 74 45 71 75 61 6c 73 duleImportEquals 000336e0: 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 Declaration;. 000336f0: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 45 78 74 function getExt 00033700: 65 72 6e 61 6c 4d 6f 64 75 6c 65 49 6d 70 6f 72 ernalModuleImpor 00033710: 74 45 71 75 61 6c 73 44 65 63 6c 61 72 61 74 69 tEqualsDeclarati 00033720: 6f 6e 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 onExpression(nod 00033730: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 74 73 2e e) {. ts. 00033740: 44 65 62 75 67 2e 61 73 73 65 72 74 28 69 73 45 Debug.assert(isE 00033750: 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 49 6d 70 xternalModuleImp 00033760: 6f 72 74 45 71 75 61 6c 73 44 65 63 6c 61 72 61 ortEqualsDeclara 00033770: 74 69 6f 6e 28 6e 6f 64 65 29 29 3b 0a 20 20 20 tion(node));. 00033780: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 return node 00033790: 2e 6d 6f 64 75 6c 65 52 65 66 65 72 65 6e 63 65 .moduleReference 000337a0: 2e 65 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 .expression;. 000337b0: 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 45 78 74 }. ts.getExt 000337c0: 65 72 6e 61 6c 4d 6f 64 75 6c 65 49 6d 70 6f 72 ernalModuleImpor 000337d0: 74 45 71 75 61 6c 73 44 65 63 6c 61 72 61 74 69 tEqualsDeclarati 000337e0: 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 67 onExpression = g 000337f0: 65 74 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 etExternalModule 00033800: 49 6d 70 6f 72 74 45 71 75 61 6c 73 44 65 63 6c ImportEqualsDecl 00033810: 61 72 61 74 69 6f 6e 45 78 70 72 65 73 73 69 6f arationExpressio 00033820: 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 n;. function 00033830: 67 65 74 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c getExternalModul 00033840: 65 52 65 71 75 69 72 65 41 72 67 75 6d 65 6e 74 eRequireArgument 00033850: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 00033860: 20 72 65 74 75 72 6e 20 69 73 56 61 72 69 61 62 return isVariab 00033870: 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 49 6e 69 leDeclarationIni 00033880: 74 69 61 6c 69 7a 65 64 54 6f 42 61 72 65 4f 72 tializedToBareOr 00033890: 41 63 63 65 73 73 65 64 52 65 71 75 69 72 65 28 AccessedRequire( 000338a0: 6e 6f 64 65 29 20 26 26 20 67 65 74 4c 65 66 74 node) && getLeft 000338b0: 6d 6f 73 74 41 63 63 65 73 73 45 78 70 72 65 73 mostAccessExpres 000338c0: 73 69 6f 6e 28 6e 6f 64 65 2e 69 6e 69 74 69 61 sion(node.initia 000338d0: 6c 69 7a 65 72 29 2e 61 72 67 75 6d 65 6e 74 73 lizer).arguments 000338e0: 5b 30 5d 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 [0];. }. t 000338f0: 73 2e 67 65 74 45 78 74 65 72 6e 61 6c 4d 6f 64 s.getExternalMod 00033900: 75 6c 65 52 65 71 75 69 72 65 41 72 67 75 6d 65 uleRequireArgume 00033910: 6e 74 20 3d 20 67 65 74 45 78 74 65 72 6e 61 6c nt = getExternal 00033920: 4d 6f 64 75 6c 65 52 65 71 75 69 72 65 41 72 67 ModuleRequireArg 00033930: 75 6d 65 6e 74 3b 0a 20 20 20 20 66 75 6e 63 74 ument;. funct 00033940: 69 6f 6e 20 69 73 49 6e 74 65 72 6e 61 6c 4d 6f ion isInternalMo 00033950: 64 75 6c 65 49 6d 70 6f 72 74 45 71 75 61 6c 73 duleImportEquals 00033960: 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 Declaration(node 00033970: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 00033980: 72 6e 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d rn node.kind === 00033990: 20 32 36 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 265 /* SyntaxKi 000339a0: 6e 64 2e 49 6d 70 6f 72 74 45 71 75 61 6c 73 44 nd.ImportEqualsD 000339b0: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 20 26 26 eclaration */ && 000339c0: 20 6e 6f 64 65 2e 6d 6f 64 75 6c 65 52 65 66 65 node.moduleRefe 000339d0: 72 65 6e 63 65 2e 6b 69 6e 64 20 21 3d 3d 20 32 rence.kind !== 2 000339e0: 37 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 77 /* SyntaxKind 000339f0: 2e 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 52 .ExternalModuleR 00033a00: 65 66 65 72 65 6e 63 65 20 2a 2f 3b 0a 20 20 20 eference */;. 00033a10: 20 7d 0a 20 20 20 20 74 73 2e 69 73 49 6e 74 65 }. ts.isInte 00033a20: 72 6e 61 6c 4d 6f 64 75 6c 65 49 6d 70 6f 72 74 rnalModuleImport 00033a30: 45 71 75 61 6c 73 44 65 63 6c 61 72 61 74 69 6f EqualsDeclaratio 00033a40: 6e 20 3d 20 69 73 49 6e 74 65 72 6e 61 6c 4d 6f n = isInternalMo 00033a50: 64 75 6c 65 49 6d 70 6f 72 74 45 71 75 61 6c 73 duleImportEquals 00033a60: 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 Declaration;. 00033a70: 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 6f 75 72 function isSour 00033a80: 63 65 46 69 6c 65 4a 53 28 66 69 6c 65 29 20 7b ceFileJS(file) { 00033a90: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 00033aa0: 69 73 49 6e 4a 53 46 69 6c 65 28 66 69 6c 65 29 isInJSFile(file) 00033ab0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 00033ac0: 73 53 6f 75 72 63 65 46 69 6c 65 4a 53 20 3d 20 sSourceFileJS = 00033ad0: 69 73 53 6f 75 72 63 65 46 69 6c 65 4a 53 3b 0a isSourceFileJS;. 00033ae0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 function isS 00033af0: 6f 75 72 63 65 46 69 6c 65 4e 6f 74 4a 53 28 66 ourceFileNotJS(f 00033b00: 69 6c 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ile) {. r 00033b10: 65 74 75 72 6e 20 21 69 73 49 6e 4a 53 46 69 6c eturn !isInJSFil 00033b20: 65 28 66 69 6c 65 29 3b 0a 20 20 20 20 7d 0a 20 e(file);. }. 00033b30: 20 20 20 74 73 2e 69 73 53 6f 75 72 63 65 46 69 ts.isSourceFi 00033b40: 6c 65 4e 6f 74 4a 53 20 3d 20 69 73 53 6f 75 72 leNotJS = isSour 00033b50: 63 65 46 69 6c 65 4e 6f 74 4a 53 3b 0a 20 20 20 ceFileNotJS;. 00033b60: 20 66 75 6e 63 74 69 6f 6e 20 69 73 49 6e 4a 53 function isInJS 00033b70: 46 69 6c 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 File(node) {. 00033b80: 20 20 20 20 20 72 65 74 75 72 6e 20 21 21 6e 6f return !!no 00033b90: 64 65 20 26 26 20 21 21 28 6e 6f 64 65 2e 66 6c de && !!(node.fl 00033ba0: 61 67 73 20 26 20 32 36 32 31 34 34 20 2f 2a 20 ags & 262144 /* 00033bb0: 4e 6f 64 65 46 6c 61 67 73 2e 4a 61 76 61 53 63 NodeFlags.JavaSc 00033bc0: 72 69 70 74 46 69 6c 65 20 2a 2f 29 3b 0a 20 20 riptFile */);. 00033bd0: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 49 6e 4a }. ts.isInJ 00033be0: 53 46 69 6c 65 20 3d 20 69 73 49 6e 4a 53 46 69 SFile = isInJSFi 00033bf0: 6c 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e le;. function 00033c00: 20 69 73 49 6e 4a 73 6f 6e 46 69 6c 65 28 6e 6f isInJsonFile(no 00033c10: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 de) {. re 00033c20: 74 75 72 6e 20 21 21 6e 6f 64 65 20 26 26 20 21 turn !!node && ! 00033c30: 21 28 6e 6f 64 65 2e 66 6c 61 67 73 20 26 20 36 !(node.flags & 6 00033c40: 37 31 30 38 38 36 34 20 2f 2a 20 4e 6f 64 65 46 7108864 /* NodeF 00033c50: 6c 61 67 73 2e 4a 73 6f 6e 46 69 6c 65 20 2a 2f lags.JsonFile */ 00033c60: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 00033c70: 69 73 49 6e 4a 73 6f 6e 46 69 6c 65 20 3d 20 69 isInJsonFile = i 00033c80: 73 49 6e 4a 73 6f 6e 46 69 6c 65 3b 0a 20 20 20 sInJsonFile;. 00033c90: 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 6f 75 72 function isSour 00033ca0: 63 65 46 69 6c 65 4e 6f 74 4a 73 6f 6e 28 66 69 ceFileNotJson(fi 00033cb0: 6c 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 le) {. re 00033cc0: 74 75 72 6e 20 21 69 73 4a 73 6f 6e 53 6f 75 72 turn !isJsonSour 00033cd0: 63 65 46 69 6c 65 28 66 69 6c 65 29 3b 0a 20 20 ceFile(file);. 00033ce0: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 53 6f 75 }. ts.isSou 00033cf0: 72 63 65 46 69 6c 65 4e 6f 74 4a 73 6f 6e 20 3d rceFileNotJson = 00033d00: 20 69 73 53 6f 75 72 63 65 46 69 6c 65 4e 6f 74 isSourceFileNot 00033d10: 4a 73 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 Json;. functi 00033d20: 6f 6e 20 69 73 49 6e 4a 53 44 6f 63 28 6e 6f 64 on isInJSDoc(nod 00033d30: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 e) {. ret 00033d40: 75 72 6e 20 21 21 6e 6f 64 65 20 26 26 20 21 21 urn !!node && !! 00033d50: 28 6e 6f 64 65 2e 66 6c 61 67 73 20 26 20 38 33 (node.flags & 83 00033d60: 38 38 36 30 38 20 2f 2a 20 4e 6f 64 65 46 6c 61 88608 /* NodeFla 00033d70: 67 73 2e 4a 53 44 6f 63 20 2a 2f 29 3b 0a 20 20 gs.JSDoc */);. 00033d80: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 49 6e 4a }. ts.isInJ 00033d90: 53 44 6f 63 20 3d 20 69 73 49 6e 4a 53 44 6f 63 SDoc = isInJSDoc 00033da0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 00033db0: 73 4a 53 44 6f 63 49 6e 64 65 78 53 69 67 6e 61 sJSDocIndexSigna 00033dc0: 74 75 72 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 ture(node) {. 00033dd0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 return ts.i 00033de0: 73 54 79 70 65 52 65 66 65 72 65 6e 63 65 4e 6f sTypeReferenceNo 00033df0: 64 65 28 6e 6f 64 65 29 20 26 26 0a 20 20 20 20 de(node) &&. 00033e00: 20 20 20 20 20 20 20 20 74 73 2e 69 73 49 64 65 ts.isIde 00033e10: 6e 74 69 66 69 65 72 28 6e 6f 64 65 2e 74 79 70 ntifier(node.typ 00033e20: 65 4e 61 6d 65 29 20 26 26 0a 20 20 20 20 20 20 eName) &&. 00033e30: 20 20 20 20 20 20 6e 6f 64 65 2e 74 79 70 65 4e node.typeN 00033e40: 61 6d 65 2e 65 73 63 61 70 65 64 54 65 78 74 20 ame.escapedText 00033e50: 3d 3d 3d 20 22 4f 62 6a 65 63 74 22 20 26 26 0a === "Object" &&. 00033e60: 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 node 00033e70: 2e 74 79 70 65 41 72 67 75 6d 65 6e 74 73 20 26 .typeArguments & 00033e80: 26 20 6e 6f 64 65 2e 74 79 70 65 41 72 67 75 6d & node.typeArgum 00033e90: 65 6e 74 73 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 ents.length === 00033ea0: 32 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 2 &&. 00033eb0: 20 28 6e 6f 64 65 2e 74 79 70 65 41 72 67 75 6d (node.typeArgum 00033ec0: 65 6e 74 73 5b 30 5d 2e 6b 69 6e 64 20 3d 3d 3d ents[0].kind === 00033ed0: 20 31 35 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 150 /* SyntaxKi 00033ee0: 6e 64 2e 53 74 72 69 6e 67 4b 65 79 77 6f 72 64 nd.StringKeyword 00033ef0: 20 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 74 79 70 65 */ || node.type 00033f00: 41 72 67 75 6d 65 6e 74 73 5b 30 5d 2e 6b 69 6e Arguments[0].kin 00033f10: 64 20 3d 3d 3d 20 31 34 37 20 2f 2a 20 53 79 6e d === 147 /* Syn 00033f20: 74 61 78 4b 69 6e 64 2e 4e 75 6d 62 65 72 4b 65 taxKind.NumberKe 00033f30: 79 77 6f 72 64 20 2a 2f 29 3b 0a 20 20 20 20 7d yword */);. } 00033f40: 0a 20 20 20 20 74 73 2e 69 73 4a 53 44 6f 63 49 . ts.isJSDocI 00033f50: 6e 64 65 78 53 69 67 6e 61 74 75 72 65 20 3d 20 ndexSignature = 00033f60: 69 73 4a 53 44 6f 63 49 6e 64 65 78 53 69 67 6e isJSDocIndexSign 00033f70: 61 74 75 72 65 3b 0a 20 20 20 20 66 75 6e 63 74 ature;. funct 00033f80: 69 6f 6e 20 69 73 52 65 71 75 69 72 65 43 61 6c ion isRequireCal 00033f90: 6c 28 63 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e l(callExpression 00033fa0: 2c 20 72 65 71 75 69 72 65 53 74 72 69 6e 67 4c , requireStringL 00033fb0: 69 74 65 72 61 6c 4c 69 6b 65 41 72 67 75 6d 65 iteralLikeArgume 00033fc0: 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 nt) {. if 00033fd0: 20 28 63 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e (callExpression 00033fe0: 2e 6b 69 6e 64 20 21 3d 3d 20 32 30 38 20 2f 2a .kind !== 208 /* 00033ff0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 61 6c 6c SyntaxKind.Call 00034000: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 29 20 7b Expression */) { 00034010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret 00034020: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 urn false;. 00034030: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 76 61 72 }. var 00034040: 20 5f 61 20 3d 20 63 61 6c 6c 45 78 70 72 65 73 _a = callExpres 00034050: 73 69 6f 6e 2c 20 65 78 70 72 65 73 73 69 6f 6e sion, expression 00034060: 20 3d 20 5f 61 2e 65 78 70 72 65 73 73 69 6f 6e = _a.expression 00034070: 2c 20 61 72 67 73 20 3d 20 5f 61 2e 61 72 67 75 , args = _a.argu 00034080: 6d 65 6e 74 73 3b 0a 20 20 20 20 20 20 20 20 69 ments;. i 00034090: 66 20 28 65 78 70 72 65 73 73 69 6f 6e 2e 6b 69 f (expression.ki 000340a0: 6e 64 20 21 3d 3d 20 37 39 20 2f 2a 20 53 79 6e nd !== 79 /* Syn 000340b0: 74 61 78 4b 69 6e 64 2e 49 64 65 6e 74 69 66 69 taxKind.Identifi 000340c0: 65 72 20 2a 2f 20 7c 7c 20 65 78 70 72 65 73 73 er */ || express 000340d0: 69 6f 6e 2e 65 73 63 61 70 65 64 54 65 78 74 20 ion.escapedText 000340e0: 21 3d 3d 20 22 72 65 71 75 69 72 65 22 29 20 7b !== "require") { 000340f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret 00034100: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 urn false;. 00034110: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 }. if 00034120: 28 61 72 67 73 2e 6c 65 6e 67 74 68 20 21 3d 3d (args.length !== 00034130: 20 31 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 1) {. 00034140: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a return false;. 00034150: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 00034160: 20 20 76 61 72 20 61 72 67 20 3d 20 61 72 67 73 var arg = args 00034170: 5b 30 5d 3b 0a 20 20 20 20 20 20 20 20 72 65 74 [0];. ret 00034180: 75 72 6e 20 21 72 65 71 75 69 72 65 53 74 72 69 urn !requireStri 00034190: 6e 67 4c 69 74 65 72 61 6c 4c 69 6b 65 41 72 67 ngLiteralLikeArg 000341a0: 75 6d 65 6e 74 20 7c 7c 20 74 73 2e 69 73 53 74 ument || ts.isSt 000341b0: 72 69 6e 67 4c 69 74 65 72 61 6c 4c 69 6b 65 28 ringLiteralLike( 000341c0: 61 72 67 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 arg);. }. 000341d0: 74 73 2e 69 73 52 65 71 75 69 72 65 43 61 6c 6c ts.isRequireCall 000341e0: 20 3d 20 69 73 52 65 71 75 69 72 65 43 61 6c 6c = isRequireCall 000341f0: 3b 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a ;. /**. * 00034200: 20 52 65 74 75 72 6e 73 20 74 72 75 65 20 69 66 Returns true if 00034210: 20 74 68 65 20 6e 6f 64 65 20 69 73 20 61 20 56 the node is a V 00034220: 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 ariableDeclarati 00034230: 6f 6e 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 74 on initialized t 00034240: 6f 20 61 20 72 65 71 75 69 72 65 20 63 61 6c 6c o a require call 00034250: 20 28 73 65 65 20 60 69 73 52 65 71 75 69 72 65 (see `isRequire 00034260: 43 61 6c 6c 60 29 2e 0a 20 20 20 20 20 2a 20 54 Call`).. * T 00034270: 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 64 6f 65 his function doe 00034280: 73 20 6e 6f 74 20 74 65 73 74 20 69 66 20 74 68 s not test if th 00034290: 65 20 6e 6f 64 65 20 69 73 20 69 6e 20 61 20 4a e node is in a J 000342a0: 61 76 61 53 63 72 69 70 74 20 66 69 6c 65 20 6f avaScript file o 000342b0: 72 20 6e 6f 74 2e 0a 20 20 20 20 20 2a 2f 0a 20 r not.. */. 000342c0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 56 61 function isVa 000342d0: 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f riableDeclaratio 000342e0: 6e 49 6e 69 74 69 61 6c 69 7a 65 64 54 6f 52 65 nInitializedToRe 000342f0: 71 75 69 72 65 28 6e 6f 64 65 29 20 7b 0a 20 20 quire(node) {. 00034300: 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 73 56 return isV 00034310: 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 ariableDeclarati 00034320: 6f 6e 49 6e 69 74 69 61 6c 69 7a 65 64 57 69 74 onInitializedWit 00034330: 68 52 65 71 75 69 72 65 48 65 6c 70 65 72 28 6e hRequireHelper(n 00034340: 6f 64 65 2c 20 2f 2a 61 6c 6c 6f 77 41 63 63 65 ode, /*allowAcce 00034350: 73 73 65 64 52 65 71 75 69 72 65 2a 2f 20 66 61 ssedRequire*/ fa 00034360: 6c 73 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 lse);. }. 00034370: 74 73 2e 69 73 56 61 72 69 61 62 6c 65 44 65 63 ts.isVariableDec 00034380: 6c 61 72 61 74 69 6f 6e 49 6e 69 74 69 61 6c 69 larationInitiali 00034390: 7a 65 64 54 6f 52 65 71 75 69 72 65 20 3d 20 69 zedToRequire = i 000343a0: 73 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 sVariableDeclara 000343b0: 74 69 6f 6e 49 6e 69 74 69 61 6c 69 7a 65 64 54 tionInitializedT 000343c0: 6f 52 65 71 75 69 72 65 3b 0a 20 20 20 20 2f 2a oRequire;. /* 000343d0: 2a 0a 20 20 20 20 20 2a 20 4c 69 6b 65 20 7b 40 *. * Like {@ 000343e0: 6c 69 6e 6b 20 69 73 56 61 72 69 61 62 6c 65 44 link isVariableD 000343f0: 65 63 6c 61 72 61 74 69 6f 6e 49 6e 69 74 69 61 eclarationInitia 00034400: 6c 69 7a 65 64 54 6f 52 65 71 75 69 72 65 7d 20 lizedToRequire} 00034410: 62 75 74 20 61 6c 6c 6f 77 73 20 74 68 69 6e 67 but allows thing 00034420: 73 20 6c 69 6b 65 20 60 72 65 71 75 69 72 65 28 s like `require( 00034430: 22 2e 2e 2e 22 29 2e 66 6f 6f 2e 62 61 72 60 20 "...").foo.bar` 00034440: 6f 72 20 60 72 65 71 75 69 72 65 28 22 2e 2e 2e or `require("... 00034450: 22 29 5b 22 62 61 7a 22 5d 60 2e 0a 20 20 20 20 ")["baz"]`.. 00034460: 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e */. function 00034470: 20 69 73 56 61 72 69 61 62 6c 65 44 65 63 6c 61 isVariableDecla 00034480: 72 61 74 69 6f 6e 49 6e 69 74 69 61 6c 69 7a 65 rationInitialize 00034490: 64 54 6f 42 61 72 65 4f 72 41 63 63 65 73 73 65 dToBareOrAccesse 000344a0: 64 52 65 71 75 69 72 65 28 6e 6f 64 65 29 20 7b dRequire(node) { 000344b0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 000344c0: 69 73 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 isVariableDeclar 000344d0: 61 74 69 6f 6e 49 6e 69 74 69 61 6c 69 7a 65 64 ationInitialized 000344e0: 57 69 74 68 52 65 71 75 69 72 65 48 65 6c 70 65 WithRequireHelpe 000344f0: 72 28 6e 6f 64 65 2c 20 2f 2a 61 6c 6c 6f 77 41 r(node, /*allowA 00034500: 63 63 65 73 73 65 64 52 65 71 75 69 72 65 2a 2f ccessedRequire*/ 00034510: 20 74 72 75 65 29 3b 0a 20 20 20 20 7d 0a 20 20 true);. }. 00034520: 20 20 74 73 2e 69 73 56 61 72 69 61 62 6c 65 44 ts.isVariableD 00034530: 65 63 6c 61 72 61 74 69 6f 6e 49 6e 69 74 69 61 eclarationInitia 00034540: 6c 69 7a 65 64 54 6f 42 61 72 65 4f 72 41 63 63 lizedToBareOrAcc 00034550: 65 73 73 65 64 52 65 71 75 69 72 65 20 3d 20 69 essedRequire = i 00034560: 73 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 sVariableDeclara 00034570: 74 69 6f 6e 49 6e 69 74 69 61 6c 69 7a 65 64 54 tionInitializedT 00034580: 6f 42 61 72 65 4f 72 41 63 63 65 73 73 65 64 52 oBareOrAccessedR 00034590: 65 71 75 69 72 65 3b 0a 20 20 20 20 66 75 6e 63 equire;. func 000345a0: 74 69 6f 6e 20 69 73 56 61 72 69 61 62 6c 65 44 tion isVariableD 000345b0: 65 63 6c 61 72 61 74 69 6f 6e 49 6e 69 74 69 61 eclarationInitia 000345c0: 6c 69 7a 65 64 57 69 74 68 52 65 71 75 69 72 65 lizedWithRequire 000345d0: 48 65 6c 70 65 72 28 6e 6f 64 65 2c 20 61 6c 6c Helper(node, all 000345e0: 6f 77 41 63 63 65 73 73 65 64 52 65 71 75 69 72 owAccessedRequir 000345f0: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 e) {. ret 00034600: 75 72 6e 20 74 73 2e 69 73 56 61 72 69 61 62 6c urn ts.isVariabl 00034610: 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 eDeclaration(nod 00034620: 65 29 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 e) &&. 00034630: 20 20 21 21 6e 6f 64 65 2e 69 6e 69 74 69 61 6c !!node.initial 00034640: 69 7a 65 72 20 26 26 0a 20 20 20 20 20 20 20 20 izer &&. 00034650: 20 20 20 20 69 73 52 65 71 75 69 72 65 43 61 6c isRequireCal 00034660: 6c 28 61 6c 6c 6f 77 41 63 63 65 73 73 65 64 52 l(allowAccessedR 00034670: 65 71 75 69 72 65 20 3f 20 67 65 74 4c 65 66 74 equire ? getLeft 00034680: 6d 6f 73 74 41 63 63 65 73 73 45 78 70 72 65 73 mostAccessExpres 00034690: 73 69 6f 6e 28 6e 6f 64 65 2e 69 6e 69 74 69 61 sion(node.initia 000346a0: 6c 69 7a 65 72 29 20 3a 20 6e 6f 64 65 2e 69 6e lizer) : node.in 000346b0: 69 74 69 61 6c 69 7a 65 72 2c 20 2f 2a 72 65 71 itializer, /*req 000346c0: 75 69 72 65 53 74 72 69 6e 67 4c 69 74 65 72 61 uireStringLitera 000346d0: 6c 4c 69 6b 65 41 72 67 75 6d 65 6e 74 2a 2f 20 lLikeArgument*/ 000346e0: 74 72 75 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 true);. }. 000346f0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 52 65 71 75 function isRequ 00034700: 69 72 65 56 61 72 69 61 62 6c 65 53 74 61 74 65 ireVariableState 00034710: 6d 65 6e 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 ment(node) {. 00034720: 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 return ts.i 00034730: 73 56 61 72 69 61 62 6c 65 53 74 61 74 65 6d 65 sVariableStateme 00034740: 6e 74 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 nt(node). 00034750: 20 20 20 20 20 26 26 20 6e 6f 64 65 2e 64 65 63 && node.dec 00034760: 6c 61 72 61 74 69 6f 6e 4c 69 73 74 2e 64 65 63 larationList.dec 00034770: 6c 61 72 61 74 69 6f 6e 73 2e 6c 65 6e 67 74 68 larations.length 00034780: 20 3e 20 30 0a 20 20 20 20 20 20 20 20 20 20 20 > 0. 00034790: 20 26 26 20 74 73 2e 65 76 65 72 79 28 6e 6f 64 && ts.every(nod 000347a0: 65 2e 64 65 63 6c 61 72 61 74 69 6f 6e 4c 69 73 e.declarationLis 000347b0: 74 2e 64 65 63 6c 61 72 61 74 69 6f 6e 73 2c 20 t.declarations, 000347c0: 66 75 6e 63 74 69 6f 6e 20 28 64 65 63 6c 29 20 function (decl) 000347d0: 7b 20 72 65 74 75 72 6e 20 69 73 56 61 72 69 61 { return isVaria 000347e0: 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 49 6e bleDeclarationIn 000347f0: 69 74 69 61 6c 69 7a 65 64 54 6f 52 65 71 75 69 itializedToRequi 00034800: 72 65 28 64 65 63 6c 29 3b 20 7d 29 3b 0a 20 20 re(decl); });. 00034810: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 52 65 71 }. ts.isReq 00034820: 75 69 72 65 56 61 72 69 61 62 6c 65 53 74 61 74 uireVariableStat 00034830: 65 6d 65 6e 74 20 3d 20 69 73 52 65 71 75 69 72 ement = isRequir 00034840: 65 56 61 72 69 61 62 6c 65 53 74 61 74 65 6d 65 eVariableStateme 00034850: 6e 74 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e nt;. function 00034860: 20 69 73 53 69 6e 67 6c 65 4f 72 44 6f 75 62 6c isSingleOrDoubl 00034870: 65 51 75 6f 74 65 28 63 68 61 72 43 6f 64 65 29 eQuote(charCode) 00034880: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00034890: 6e 20 63 68 61 72 43 6f 64 65 20 3d 3d 3d 20 33 n charCode === 3 000348a0: 39 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 9 /* CharacterCo 000348b0: 64 65 73 2e 73 69 6e 67 6c 65 51 75 6f 74 65 20 des.singleQuote 000348c0: 2a 2f 20 7c 7c 20 63 68 61 72 43 6f 64 65 20 3d */ || charCode = 000348d0: 3d 3d 20 33 34 20 2f 2a 20 43 68 61 72 61 63 74 == 34 /* Charact 000348e0: 65 72 43 6f 64 65 73 2e 64 6f 75 62 6c 65 51 75 erCodes.doubleQu 000348f0: 6f 74 65 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ote */;. }. 00034900: 20 20 74 73 2e 69 73 53 69 6e 67 6c 65 4f 72 44 ts.isSingleOrD 00034910: 6f 75 62 6c 65 51 75 6f 74 65 20 3d 20 69 73 53 oubleQuote = isS 00034920: 69 6e 67 6c 65 4f 72 44 6f 75 62 6c 65 51 75 6f ingleOrDoubleQuo 00034930: 74 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e te;. function 00034940: 20 69 73 53 74 72 69 6e 67 44 6f 75 62 6c 65 51 isStringDoubleQ 00034950: 75 6f 74 65 64 28 73 74 72 2c 20 73 6f 75 72 63 uoted(str, sourc 00034960: 65 46 69 6c 65 29 20 7b 0a 20 20 20 20 20 20 20 eFile) {. 00034970: 20 72 65 74 75 72 6e 20 67 65 74 53 6f 75 72 63 return getSourc 00034980: 65 54 65 78 74 4f 66 4e 6f 64 65 46 72 6f 6d 53 eTextOfNodeFromS 00034990: 6f 75 72 63 65 46 69 6c 65 28 73 6f 75 72 63 65 ourceFile(source 000349a0: 46 69 6c 65 2c 20 73 74 72 29 2e 63 68 61 72 43 File, str).charC 000349b0: 6f 64 65 41 74 28 30 29 20 3d 3d 3d 20 33 34 20 odeAt(0) === 34 000349c0: 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 65 /* CharacterCode 000349d0: 73 2e 64 6f 75 62 6c 65 51 75 6f 74 65 20 2a 2f s.doubleQuote */ 000349e0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 000349f0: 73 53 74 72 69 6e 67 44 6f 75 62 6c 65 51 75 6f sStringDoubleQuo 00034a00: 74 65 64 20 3d 20 69 73 53 74 72 69 6e 67 44 6f ted = isStringDo 00034a10: 75 62 6c 65 51 75 6f 74 65 64 3b 0a 20 20 20 20 ubleQuoted;. 00034a20: 66 75 6e 63 74 69 6f 6e 20 69 73 41 73 73 69 67 function isAssig 00034a30: 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e nmentDeclaration 00034a40: 28 64 65 63 6c 29 20 7b 0a 20 20 20 20 20 20 20 (decl) {. 00034a50: 20 72 65 74 75 72 6e 20 74 73 2e 69 73 42 69 6e return ts.isBin 00034a60: 61 72 79 45 78 70 72 65 73 73 69 6f 6e 28 64 65 aryExpression(de 00034a70: 63 6c 29 20 7c 7c 20 69 73 41 63 63 65 73 73 45 cl) || isAccessE 00034a80: 78 70 72 65 73 73 69 6f 6e 28 64 65 63 6c 29 20 xpression(decl) 00034a90: 7c 7c 20 74 73 2e 69 73 49 64 65 6e 74 69 66 69 || ts.isIdentifi 00034aa0: 65 72 28 64 65 63 6c 29 20 7c 7c 20 74 73 2e 69 er(decl) || ts.i 00034ab0: 73 43 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e 28 sCallExpression( 00034ac0: 64 65 63 6c 29 3b 0a 20 20 20 20 7d 0a 20 20 20 decl);. }. 00034ad0: 20 74 73 2e 69 73 41 73 73 69 67 6e 6d 65 6e 74 ts.isAssignment 00034ae0: 44 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 69 73 Declaration = is 00034af0: 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 AssignmentDeclar 00034b00: 61 74 69 6f 6e 3b 0a 20 20 20 20 2f 2a 2a 20 47 ation;. /** G 00034b10: 65 74 20 74 68 65 20 69 6e 69 74 69 61 6c 69 7a et the initializ 00034b20: 65 72 2c 20 74 61 6b 69 6e 67 20 69 6e 74 6f 20 er, taking into 00034b30: 61 63 63 6f 75 6e 74 20 64 65 66 61 75 6c 74 65 account defaulte 00034b40: 64 20 4a 61 76 61 73 63 72 69 70 74 20 69 6e 69 d Javascript ini 00034b50: 74 69 61 6c 69 7a 65 72 73 20 2a 2f 0a 20 20 20 tializers */. 00034b60: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 45 66 66 function getEff 00034b70: 65 63 74 69 76 65 49 6e 69 74 69 61 6c 69 7a 65 ectiveInitialize 00034b80: 72 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 r(node) {. 00034b90: 20 20 69 66 20 28 69 73 49 6e 4a 53 46 69 6c 65 if (isInJSFile 00034ba0: 28 6e 6f 64 65 29 20 26 26 20 6e 6f 64 65 2e 69 (node) && node.i 00034bb0: 6e 69 74 69 61 6c 69 7a 65 72 20 26 26 0a 20 20 nitializer &&. 00034bc0: 20 20 20 20 20 20 20 20 20 20 74 73 2e 69 73 42 ts.isB 00034bd0: 69 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e 28 inaryExpression( 00034be0: 6e 6f 64 65 2e 69 6e 69 74 69 61 6c 69 7a 65 72 node.initializer 00034bf0: 29 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 ) &&. 00034c00: 20 28 6e 6f 64 65 2e 69 6e 69 74 69 61 6c 69 7a (node.initializ 00034c10: 65 72 2e 6f 70 65 72 61 74 6f 72 54 6f 6b 65 6e er.operatorToken 00034c20: 2e 6b 69 6e 64 20 3d 3d 3d 20 35 36 20 2f 2a 20 .kind === 56 /* 00034c30: 53 79 6e 74 61 78 4b 69 6e 64 2e 42 61 72 42 61 SyntaxKind.BarBa 00034c40: 72 54 6f 6b 65 6e 20 2a 2f 20 7c 7c 20 6e 6f 64 rToken */ || nod 00034c50: 65 2e 69 6e 69 74 69 61 6c 69 7a 65 72 2e 6f 70 e.initializer.op 00034c60: 65 72 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 6e 64 eratorToken.kind 00034c70: 20 3d 3d 3d 20 36 30 20 2f 2a 20 53 79 6e 74 61 === 60 /* Synta 00034c80: 78 4b 69 6e 64 2e 51 75 65 73 74 69 6f 6e 51 75 xKind.QuestionQu 00034c90: 65 73 74 69 6f 6e 54 6f 6b 65 6e 20 2a 2f 29 20 estionToken */) 00034ca0: 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e &&. n 00034cb0: 6f 64 65 2e 6e 61 6d 65 20 26 26 20 69 73 45 6e ode.name && isEn 00034cc0: 74 69 74 79 4e 61 6d 65 45 78 70 72 65 73 73 69 tityNameExpressi 00034cd0: 6f 6e 28 6e 6f 64 65 2e 6e 61 6d 65 29 20 26 26 on(node.name) && 00034ce0: 20 69 73 53 61 6d 65 45 6e 74 69 74 79 4e 61 6d isSameEntityNam 00034cf0: 65 28 6e 6f 64 65 2e 6e 61 6d 65 2c 20 6e 6f 64 e(node.name, nod 00034d00: 65 2e 69 6e 69 74 69 61 6c 69 7a 65 72 2e 6c 65 e.initializer.le 00034d10: 66 74 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ft)) {. 00034d20: 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 69 return node.i 00034d30: 6e 69 74 69 61 6c 69 7a 65 72 2e 72 69 67 68 74 nitializer.right 00034d40: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 00034d50: 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e return node. 00034d60: 69 6e 69 74 69 61 6c 69 7a 65 72 3b 0a 20 20 20 initializer;. 00034d70: 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 45 66 66 }. ts.getEff 00034d80: 65 63 74 69 76 65 49 6e 69 74 69 61 6c 69 7a 65 ectiveInitialize 00034d90: 72 20 3d 20 67 65 74 45 66 66 65 63 74 69 76 65 r = getEffective 00034da0: 49 6e 69 74 69 61 6c 69 7a 65 72 3b 0a 20 20 20 Initializer;. 00034db0: 20 2f 2a 2a 20 47 65 74 20 74 68 65 20 64 65 63 /** Get the dec 00034dc0: 6c 61 72 61 74 69 6f 6e 20 69 6e 69 74 69 61 6c laration initial 00034dd0: 69 7a 65 72 20 77 68 65 6e 20 69 74 20 69 73 20 izer when it is 00034de0: 63 6f 6e 74 61 69 6e 65 72 2d 6c 69 6b 65 20 28 container-like ( 00034df0: 53 65 65 20 67 65 74 45 78 70 61 6e 64 6f 49 6e See getExpandoIn 00034e00: 69 74 69 61 6c 69 7a 65 72 29 2e 20 2a 2f 0a 20 itializer). */. 00034e10: 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 44 function getD 00034e20: 65 63 6c 61 72 65 64 45 78 70 61 6e 64 6f 49 6e eclaredExpandoIn 00034e30: 69 74 69 61 6c 69 7a 65 72 28 6e 6f 64 65 29 20 itializer(node) 00034e40: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 6e {. var in 00034e50: 69 74 20 3d 20 67 65 74 45 66 66 65 63 74 69 76 it = getEffectiv 00034e60: 65 49 6e 69 74 69 61 6c 69 7a 65 72 28 6e 6f 64 eInitializer(nod 00034e70: 65 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 e);. retu 00034e80: 72 6e 20 69 6e 69 74 20 26 26 20 67 65 74 45 78 rn init && getEx 00034e90: 70 61 6e 64 6f 49 6e 69 74 69 61 6c 69 7a 65 72 pandoInitializer 00034ea0: 28 69 6e 69 74 2c 20 69 73 50 72 6f 74 6f 74 79 (init, isPrototy 00034eb0: 70 65 41 63 63 65 73 73 28 6e 6f 64 65 2e 6e 61 peAccess(node.na 00034ec0: 6d 65 29 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 me));. }. 00034ed0: 74 73 2e 67 65 74 44 65 63 6c 61 72 65 64 45 78 ts.getDeclaredEx 00034ee0: 70 61 6e 64 6f 49 6e 69 74 69 61 6c 69 7a 65 72 pandoInitializer 00034ef0: 20 3d 20 67 65 74 44 65 63 6c 61 72 65 64 45 78 = getDeclaredEx 00034f00: 70 61 6e 64 6f 49 6e 69 74 69 61 6c 69 7a 65 72 pandoInitializer 00034f10: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 68 ;. function h 00034f20: 61 73 45 78 70 61 6e 64 6f 56 61 6c 75 65 50 72 asExpandoValuePr 00034f30: 6f 70 65 72 74 79 28 6e 6f 64 65 2c 20 69 73 50 operty(node, isP 00034f40: 72 6f 74 6f 74 79 70 65 41 73 73 69 67 6e 6d 65 rototypeAssignme 00034f50: 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 nt) {. re 00034f60: 74 75 72 6e 20 74 73 2e 66 6f 72 45 61 63 68 28 turn ts.forEach( 00034f70: 6e 6f 64 65 2e 70 72 6f 70 65 72 74 69 65 73 2c node.properties, 00034f80: 20 66 75 6e 63 74 69 6f 6e 20 28 70 29 20 7b 0a function (p) {. 00034f90: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00034fa0: 72 6e 20 74 73 2e 69 73 50 72 6f 70 65 72 74 79 rn ts.isProperty 00034fb0: 41 73 73 69 67 6e 6d 65 6e 74 28 70 29 20 26 26 Assignment(p) && 00034fc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00034fd0: 20 74 73 2e 69 73 49 64 65 6e 74 69 66 69 65 72 ts.isIdentifier 00034fe0: 28 70 2e 6e 61 6d 65 29 20 26 26 0a 20 20 20 20 (p.name) &&. 00034ff0: 20 20 20 20 20 20 20 20 20 20 20 20 70 2e 6e 61 p.na 00035000: 6d 65 2e 65 73 63 61 70 65 64 54 65 78 74 20 3d me.escapedText = 00035010: 3d 3d 20 22 76 61 6c 75 65 22 20 26 26 0a 20 20 == "value" &&. 00035020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 2e p. 00035030: 69 6e 69 74 69 61 6c 69 7a 65 72 20 26 26 0a 20 initializer &&. 00035040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 g 00035050: 65 74 45 78 70 61 6e 64 6f 49 6e 69 74 69 61 6c etExpandoInitial 00035060: 69 7a 65 72 28 70 2e 69 6e 69 74 69 61 6c 69 7a izer(p.initializ 00035070: 65 72 2c 20 69 73 50 72 6f 74 6f 74 79 70 65 41 er, isPrototypeA 00035080: 73 73 69 67 6e 6d 65 6e 74 29 3b 0a 20 20 20 20 ssignment);. 00035090: 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d 0a 20 20 });. }. 000350a0: 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 47 65 74 /**. * Get 000350b0: 20 74 68 65 20 61 73 73 69 67 6e 6d 65 6e 74 20 the assignment 000350c0: 27 69 6e 69 74 69 61 6c 69 7a 65 72 27 20 2d 2d 'initializer' -- 000350d0: 20 74 68 65 20 72 69 67 68 74 68 61 6e 64 20 73 the righthand s 000350e0: 69 64 65 2d 2d 20 77 68 65 6e 20 74 68 65 20 69 ide-- when the i 000350f0: 6e 69 74 69 61 6c 69 7a 65 72 20 69 73 20 63 6f nitializer is co 00035100: 6e 74 61 69 6e 65 72 2d 6c 69 6b 65 20 28 53 65 ntainer-like (Se 00035110: 65 20 67 65 74 45 78 70 61 6e 64 6f 49 6e 69 74 e getExpandoInit 00035120: 69 61 6c 69 7a 65 72 29 2e 0a 20 20 20 20 20 2a ializer).. * 00035130: 20 57 65 20 74 72 65 61 74 20 74 68 65 20 72 69 We treat the ri 00035140: 67 68 74 20 68 61 6e 64 20 73 69 64 65 20 6f 66 ght hand side of 00035150: 20 61 73 73 69 67 6e 6d 65 6e 74 73 20 77 69 74 assignments wit 00035160: 68 20 63 6f 6e 74 61 69 6e 65 72 2d 6c 69 6b 65 h container-like 00035170: 20 69 6e 69 74 69 61 6c 69 7a 65 72 73 20 61 73 initializers as 00035180: 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 2e 0a 20 declarations.. 00035190: 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 */. funct 000351a0: 69 6f 6e 20 67 65 74 41 73 73 69 67 6e 65 64 45 ion getAssignedE 000351b0: 78 70 61 6e 64 6f 49 6e 69 74 69 61 6c 69 7a 65 xpandoInitialize 000351c0: 72 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 r(node) {. 000351d0: 20 20 69 66 20 28 6e 6f 64 65 20 26 26 20 6e 6f if (node && no 000351e0: 64 65 2e 70 61 72 65 6e 74 20 26 26 20 74 73 2e de.parent && ts. 000351f0: 69 73 42 69 6e 61 72 79 45 78 70 72 65 73 73 69 isBinaryExpressi 00035200: 6f 6e 28 6e 6f 64 65 2e 70 61 72 65 6e 74 29 20 on(node.parent) 00035210: 26 26 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6f && node.parent.o 00035220: 70 65 72 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 6e peratorToken.kin 00035230: 64 20 3d 3d 3d 20 36 33 20 2f 2a 20 53 79 6e 74 d === 63 /* Synt 00035240: 61 78 4b 69 6e 64 2e 45 71 75 61 6c 73 54 6f 6b axKind.EqualsTok 00035250: 65 6e 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 en */) {. 00035260: 20 20 20 20 20 76 61 72 20 69 73 50 72 6f 74 6f var isProto 00035270: 74 79 70 65 41 73 73 69 67 6e 6d 65 6e 74 20 3d typeAssignment = 00035280: 20 69 73 50 72 6f 74 6f 74 79 70 65 41 63 63 65 isPrototypeAcce 00035290: 73 73 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6c ss(node.parent.l 000352a0: 65 66 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 eft);. 000352b0: 20 20 72 65 74 75 72 6e 20 67 65 74 45 78 70 61 return getExpa 000352c0: 6e 64 6f 49 6e 69 74 69 61 6c 69 7a 65 72 28 6e ndoInitializer(n 000352d0: 6f 64 65 2e 70 61 72 65 6e 74 2e 72 69 67 68 74 ode.parent.right 000352e0: 2c 20 69 73 50 72 6f 74 6f 74 79 70 65 41 73 73 , isPrototypeAss 000352f0: 69 67 6e 6d 65 6e 74 29 20 7c 7c 0a 20 20 20 20 ignment) ||. 00035300: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 44 getD 00035310: 65 66 61 75 6c 74 65 64 45 78 70 61 6e 64 6f 49 efaultedExpandoI 00035320: 6e 69 74 69 61 6c 69 7a 65 72 28 6e 6f 64 65 2e nitializer(node. 00035330: 70 61 72 65 6e 74 2e 6c 65 66 74 2c 20 6e 6f 64 parent.left, nod 00035340: 65 2e 70 61 72 65 6e 74 2e 72 69 67 68 74 2c 20 e.parent.right, 00035350: 69 73 50 72 6f 74 6f 74 79 70 65 41 73 73 69 67 isPrototypeAssig 00035360: 6e 6d 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 nment);. 00035370: 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f }. if (no 00035380: 64 65 20 26 26 20 74 73 2e 69 73 43 61 6c 6c 45 de && ts.isCallE 00035390: 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 xpression(node) 000353a0: 26 26 20 69 73 42 69 6e 64 61 62 6c 65 4f 62 6a && isBindableObj 000353b0: 65 63 74 44 65 66 69 6e 65 50 72 6f 70 65 72 74 ectDefinePropert 000353c0: 79 43 61 6c 6c 28 6e 6f 64 65 29 29 20 7b 0a 20 yCall(node)) {. 000353d0: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 72 var r 000353e0: 65 73 75 6c 74 20 3d 20 68 61 73 45 78 70 61 6e esult = hasExpan 000353f0: 64 6f 56 61 6c 75 65 50 72 6f 70 65 72 74 79 28 doValueProperty( 00035400: 6e 6f 64 65 2e 61 72 67 75 6d 65 6e 74 73 5b 32 node.arguments[2 00035410: 5d 2c 20 6e 6f 64 65 2e 61 72 67 75 6d 65 6e 74 ], node.argument 00035420: 73 5b 31 5d 2e 74 65 78 74 20 3d 3d 3d 20 22 70 s[1].text === "p 00035430: 72 6f 74 6f 74 79 70 65 22 29 3b 0a 20 20 20 20 rototype");. 00035440: 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75 if (resu 00035450: 6c 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 lt) {. 00035460: 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 return res 00035470: 75 6c 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ult;. 00035480: 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. }. 00035490: 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 41 73 73 }. ts.getAss 000354a0: 69 67 6e 65 64 45 78 70 61 6e 64 6f 49 6e 69 74 ignedExpandoInit 000354b0: 69 61 6c 69 7a 65 72 20 3d 20 67 65 74 41 73 73 ializer = getAss 000354c0: 69 67 6e 65 64 45 78 70 61 6e 64 6f 49 6e 69 74 ignedExpandoInit 000354d0: 69 61 6c 69 7a 65 72 3b 0a 20 20 20 20 2f 2a 2a ializer;. /** 000354e0: 0a 20 20 20 20 20 2a 20 52 65 63 6f 67 6e 69 7a . * Recogniz 000354f0: 65 64 20 65 78 70 61 6e 64 6f 20 69 6e 69 74 69 ed expando initi 00035500: 61 6c 69 7a 65 72 73 20 61 72 65 3a 0a 20 20 20 alizers are:. 00035510: 20 20 2a 20 31 2e 20 28 66 75 6e 63 74 69 6f 6e * 1. (function 00035520: 28 29 20 7b 7d 29 28 29 20 2d 2d 20 49 49 46 45 () {})() -- IIFE 00035530: 73 0a 20 20 20 20 20 2a 20 32 2e 20 66 75 6e 63 s. * 2. func 00035540: 74 69 6f 6e 28 29 20 7b 20 7d 20 2d 2d 20 46 75 tion() { } -- Fu 00035550: 6e 63 74 69 6f 6e 20 65 78 70 72 65 73 73 69 6f nction expressio 00035560: 6e 73 0a 20 20 20 20 20 2a 20 33 2e 20 63 6c 61 ns. * 3. cla 00035570: 73 73 20 7b 20 7d 20 2d 2d 20 43 6c 61 73 73 20 ss { } -- Class 00035580: 65 78 70 72 65 73 73 69 6f 6e 73 0a 20 20 20 20 expressions. 00035590: 20 2a 20 34 2e 20 7b 7d 20 2d 2d 20 45 6d 70 74 * 4. {} -- Empt 000355a0: 79 20 6f 62 6a 65 63 74 20 6c 69 74 65 72 61 6c y object literal 000355b0: 73 0a 20 20 20 20 20 2a 20 35 2e 20 7b 20 2e 2e s. * 5. { .. 000355c0: 2e 20 7d 20 2d 2d 20 4e 6f 6e 2d 65 6d 70 74 79 . } -- Non-empty 000355d0: 20 6f 62 6a 65 63 74 20 6c 69 74 65 72 61 6c 73 object literals 000355e0: 2c 20 77 68 65 6e 20 75 73 65 64 20 74 6f 20 69 , when used to i 000355f0: 6e 69 74 69 61 6c 69 7a 65 20 61 20 70 72 6f 74 nitialize a prot 00035600: 6f 74 79 70 65 2c 20 6c 69 6b 65 20 60 43 2e 70 otype, like `C.p 00035610: 72 6f 74 6f 74 79 70 65 20 3d 20 7b 20 6d 28 29 rototype = { m() 00035620: 20 7b 20 7d 20 7d 60 0a 20 20 20 20 20 2a 0a 20 { } }`. *. 00035630: 20 20 20 20 2a 20 54 68 69 73 20 66 75 6e 63 74 * This funct 00035640: 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 ion returns the 00035650: 70 72 6f 76 69 64 65 64 20 69 6e 69 74 69 61 6c provided initial 00035660: 69 7a 65 72 2c 20 6f 72 20 75 6e 64 65 66 69 6e izer, or undefin 00035670: 65 64 20 69 66 20 69 74 20 69 73 20 6e 6f 74 20 ed if it is not 00035680: 76 61 6c 69 64 2e 0a 20 20 20 20 20 2a 2f 0a 20 valid.. */. 00035690: 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 45 function getE 000356a0: 78 70 61 6e 64 6f 49 6e 69 74 69 61 6c 69 7a 65 xpandoInitialize 000356b0: 72 28 69 6e 69 74 69 61 6c 69 7a 65 72 2c 20 69 r(initializer, i 000356c0: 73 50 72 6f 74 6f 74 79 70 65 41 73 73 69 67 6e sPrototypeAssign 000356d0: 6d 65 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 ment) {. 000356e0: 69 66 20 28 74 73 2e 69 73 43 61 6c 6c 45 78 70 if (ts.isCallExp 000356f0: 72 65 73 73 69 6f 6e 28 69 6e 69 74 69 61 6c 69 ression(initiali 00035700: 7a 65 72 29 29 20 7b 0a 20 20 20 20 20 20 20 20 zer)) {. 00035710: 20 20 20 20 76 61 72 20 65 20 3d 20 73 6b 69 70 var e = skip 00035720: 50 61 72 65 6e 74 68 65 73 65 73 28 69 6e 69 74 Parentheses(init 00035730: 69 61 6c 69 7a 65 72 2e 65 78 70 72 65 73 73 69 ializer.expressi 00035740: 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 on);. 00035750: 20 72 65 74 75 72 6e 20 65 2e 6b 69 6e 64 20 3d return e.kind = 00035760: 3d 3d 20 32 31 33 20 2f 2a 20 53 79 6e 74 61 78 == 213 /* Syntax 00035770: 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 45 78 70 Kind.FunctionExp 00035780: 72 65 73 73 69 6f 6e 20 2a 2f 20 7c 7c 20 65 2e ression */ || e. 00035790: 6b 69 6e 64 20 3d 3d 3d 20 32 31 34 20 2f 2a 20 kind === 214 /* 000357a0: 53 79 6e 74 61 78 4b 69 6e 64 2e 41 72 72 6f 77 SyntaxKind.Arrow 000357b0: 46 75 6e 63 74 69 6f 6e 20 2a 2f 20 3f 20 69 6e Function */ ? in 000357c0: 69 74 69 61 6c 69 7a 65 72 20 3a 20 75 6e 64 65 itializer : unde 000357d0: 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 7d fined;. } 000357e0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 69 . if (ini 000357f0: 74 69 61 6c 69 7a 65 72 2e 6b 69 6e 64 20 3d 3d tializer.kind == 00035800: 3d 20 32 31 33 20 2f 2a 20 53 79 6e 74 61 78 4b = 213 /* SyntaxK 00035810: 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 45 78 70 72 ind.FunctionExpr 00035820: 65 73 73 69 6f 6e 20 2a 2f 20 7c 7c 0a 20 20 20 ession */ ||. 00035830: 20 20 20 20 20 20 20 20 20 69 6e 69 74 69 61 6c initial 00035840: 69 7a 65 72 2e 6b 69 6e 64 20 3d 3d 3d 20 32 32 izer.kind === 22 00035850: 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 6 /* SyntaxKind. 00035860: 43 6c 61 73 73 45 78 70 72 65 73 73 69 6f 6e 20 ClassExpression 00035870: 2a 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 */ ||. 00035880: 20 20 69 6e 69 74 69 61 6c 69 7a 65 72 2e 6b 69 initializer.ki 00035890: 6e 64 20 3d 3d 3d 20 32 31 34 20 2f 2a 20 53 79 nd === 214 /* Sy 000358a0: 6e 74 61 78 4b 69 6e 64 2e 41 72 72 6f 77 46 75 ntaxKind.ArrowFu 000358b0: 6e 63 74 69 6f 6e 20 2a 2f 29 20 7b 0a 20 20 20 nction */) {. 000358c0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 000358d0: 69 6e 69 74 69 61 6c 69 7a 65 72 3b 0a 20 20 20 initializer;. 000358e0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 }. i 000358f0: 66 20 28 74 73 2e 69 73 4f 62 6a 65 63 74 4c 69 f (ts.isObjectLi 00035900: 74 65 72 61 6c 45 78 70 72 65 73 73 69 6f 6e 28 teralExpression( 00035910: 69 6e 69 74 69 61 6c 69 7a 65 72 29 20 26 26 20 initializer) && 00035920: 28 69 6e 69 74 69 61 6c 69 7a 65 72 2e 70 72 6f (initializer.pro 00035930: 70 65 72 74 69 65 73 2e 6c 65 6e 67 74 68 20 3d perties.length = 00035940: 3d 3d 20 30 20 7c 7c 20 69 73 50 72 6f 74 6f 74 == 0 || isProtot 00035950: 79 70 65 41 73 73 69 67 6e 6d 65 6e 74 29 29 20 ypeAssignment)) 00035960: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 {. re 00035970: 74 75 72 6e 20 69 6e 69 74 69 61 6c 69 7a 65 72 turn initializer 00035980: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 00035990: 7d 0a 20 20 20 20 74 73 2e 67 65 74 45 78 70 61 }. ts.getExpa 000359a0: 6e 64 6f 49 6e 69 74 69 61 6c 69 7a 65 72 20 3d ndoInitializer = 000359b0: 20 67 65 74 45 78 70 61 6e 64 6f 49 6e 69 74 69 getExpandoIniti 000359c0: 61 6c 69 7a 65 72 3b 0a 20 20 20 20 2f 2a 2a 0a alizer;. /**. 000359d0: 20 20 20 20 20 2a 20 41 20 64 65 66 61 75 6c 74 * A default 000359e0: 65 64 20 65 78 70 61 6e 64 6f 20 69 6e 69 74 69 ed expando initi 000359f0: 61 6c 69 7a 65 72 20 6d 61 74 63 68 65 73 20 74 alizer matches t 00035a00: 68 65 20 70 61 74 74 65 72 6e 0a 20 20 20 20 20 he pattern. 00035a10: 2a 20 60 4c 68 73 20 3d 20 4c 68 73 20 7c 7c 20 * `Lhs = Lhs || 00035a20: 45 78 70 61 6e 64 6f 49 6e 69 74 69 61 6c 69 7a ExpandoInitializ 00035a30: 65 72 60 0a 20 20 20 20 20 2a 20 6f 72 20 60 76 er`. * or `v 00035a40: 61 72 20 4c 68 73 20 3d 20 4c 68 73 20 7c 7c 20 ar Lhs = Lhs || 00035a50: 45 78 70 61 6e 64 6f 49 6e 69 74 69 61 6c 69 7a ExpandoInitializ 00035a60: 65 72 60 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 er`. *. 00035a70: 2a 20 54 68 65 20 73 65 63 6f 6e 64 20 4c 68 73 * The second Lhs 00035a80: 20 69 73 20 72 65 71 75 69 72 65 64 20 74 6f 20 is required to 00035a90: 62 65 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 be the same as t 00035aa0: 68 65 20 66 69 72 73 74 20 65 78 63 65 70 74 20 he first except 00035ab0: 74 68 61 74 20 69 74 20 6d 61 79 20 62 65 20 70 that it may be p 00035ac0: 72 65 66 69 78 65 64 20 77 69 74 68 0a 20 20 20 refixed with. 00035ad0: 20 20 2a 20 27 77 69 6e 64 6f 77 2e 27 2c 20 27 * 'window.', ' 00035ae0: 67 6c 6f 62 61 6c 2e 27 20 6f 72 20 27 73 65 6c global.' or 'sel 00035af0: 66 2e 27 20 54 68 65 20 73 65 63 6f 6e 64 20 4c f.' The second L 00035b00: 68 73 20 69 73 20 6f 74 68 65 72 77 69 73 65 20 hs is otherwise 00035b10: 69 67 6e 6f 72 65 64 20 62 79 20 74 68 65 20 62 ignored by the b 00035b20: 69 6e 64 65 72 20 61 6e 64 20 63 68 65 63 6b 65 inder and checke 00035b30: 72 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 r.. */. f 00035b40: 75 6e 63 74 69 6f 6e 20 67 65 74 44 65 66 61 75 unction getDefau 00035b50: 6c 74 65 64 45 78 70 61 6e 64 6f 49 6e 69 74 69 ltedExpandoIniti 00035b60: 61 6c 69 7a 65 72 28 6e 61 6d 65 2c 20 69 6e 69 alizer(name, ini 00035b70: 74 69 61 6c 69 7a 65 72 2c 20 69 73 50 72 6f 74 tializer, isProt 00035b80: 6f 74 79 70 65 41 73 73 69 67 6e 6d 65 6e 74 29 otypeAssignment) 00035b90: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 65 {. var e 00035ba0: 20 3d 20 74 73 2e 69 73 42 69 6e 61 72 79 45 78 = ts.isBinaryEx 00035bb0: 70 72 65 73 73 69 6f 6e 28 69 6e 69 74 69 61 6c pression(initial 00035bc0: 69 7a 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 izer). 00035bd0: 20 20 26 26 20 28 69 6e 69 74 69 61 6c 69 7a 65 && (initialize 00035be0: 72 2e 6f 70 65 72 61 74 6f 72 54 6f 6b 65 6e 2e r.operatorToken. 00035bf0: 6b 69 6e 64 20 3d 3d 3d 20 35 36 20 2f 2a 20 53 kind === 56 /* S 00035c00: 79 6e 74 61 78 4b 69 6e 64 2e 42 61 72 42 61 72 yntaxKind.BarBar 00035c10: 54 6f 6b 65 6e 20 2a 2f 20 7c 7c 20 69 6e 69 74 Token */ || init 00035c20: 69 61 6c 69 7a 65 72 2e 6f 70 65 72 61 74 6f 72 ializer.operator 00035c30: 54 6f 6b 65 6e 2e 6b 69 6e 64 20 3d 3d 3d 20 36 Token.kind === 6 00035c40: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 00035c50: 51 75 65 73 74 69 6f 6e 51 75 65 73 74 69 6f 6e QuestionQuestion 00035c60: 54 6f 6b 65 6e 20 2a 2f 29 0a 20 20 20 20 20 20 Token */). 00035c70: 20 20 20 20 20 20 26 26 20 67 65 74 45 78 70 61 && getExpa 00035c80: 6e 64 6f 49 6e 69 74 69 61 6c 69 7a 65 72 28 69 ndoInitializer(i 00035c90: 6e 69 74 69 61 6c 69 7a 65 72 2e 72 69 67 68 74 nitializer.right 00035ca0: 2c 20 69 73 50 72 6f 74 6f 74 79 70 65 41 73 73 , isPrototypeAss 00035cb0: 69 67 6e 6d 65 6e 74 29 3b 0a 20 20 20 20 20 20 ignment);. 00035cc0: 20 20 69 66 20 28 65 20 26 26 20 69 73 53 61 6d if (e && isSam 00035cd0: 65 45 6e 74 69 74 79 4e 61 6d 65 28 6e 61 6d 65 eEntityName(name 00035ce0: 2c 20 69 6e 69 74 69 61 6c 69 7a 65 72 2e 6c 65 , initializer.le 00035cf0: 66 74 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ft)) {. 00035d00: 20 20 20 72 65 74 75 72 6e 20 65 3b 0a 20 20 20 return e;. 00035d10: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 }. }. 00035d20: 20 66 75 6e 63 74 69 6f 6e 20 69 73 44 65 66 61 function isDefa 00035d30: 75 6c 74 65 64 45 78 70 61 6e 64 6f 49 6e 69 74 ultedExpandoInit 00035d40: 69 61 6c 69 7a 65 72 28 6e 6f 64 65 29 20 7b 0a ializer(node) {. 00035d50: 20 20 20 20 20 20 20 20 76 61 72 20 6e 61 6d 65 var name 00035d60: 20 3d 20 74 73 2e 69 73 56 61 72 69 61 62 6c 65 = ts.isVariable 00035d70: 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 Declaration(node 00035d80: 2e 70 61 72 65 6e 74 29 20 3f 20 6e 6f 64 65 2e .parent) ? node. 00035d90: 70 61 72 65 6e 74 2e 6e 61 6d 65 20 3a 0a 20 20 parent.name :. 00035da0: 20 20 20 20 20 20 20 20 20 20 74 73 2e 69 73 42 ts.isB 00035db0: 69 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e 28 inaryExpression( 00035dc0: 6e 6f 64 65 2e 70 61 72 65 6e 74 29 20 26 26 20 node.parent) && 00035dd0: 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6f 70 65 72 node.parent.oper 00035de0: 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 6e 64 20 3d atorToken.kind = 00035df0: 3d 3d 20 36 33 20 2f 2a 20 53 79 6e 74 61 78 4b == 63 /* SyntaxK 00035e00: 69 6e 64 2e 45 71 75 61 6c 73 54 6f 6b 65 6e 20 ind.EqualsToken 00035e10: 2a 2f 20 3f 20 6e 6f 64 65 2e 70 61 72 65 6e 74 */ ? node.parent 00035e20: 2e 6c 65 66 74 20 3a 0a 20 20 20 20 20 20 20 20 .left :. 00035e30: 20 20 20 20 20 20 20 20 75 6e 64 65 66 69 6e 65 undefine 00035e40: 64 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 d;. retur 00035e50: 6e 20 6e 61 6d 65 20 26 26 20 67 65 74 45 78 70 n name && getExp 00035e60: 61 6e 64 6f 49 6e 69 74 69 61 6c 69 7a 65 72 28 andoInitializer( 00035e70: 6e 6f 64 65 2e 72 69 67 68 74 2c 20 69 73 50 72 node.right, isPr 00035e80: 6f 74 6f 74 79 70 65 41 63 63 65 73 73 28 6e 61 ototypeAccess(na 00035e90: 6d 65 29 29 20 26 26 20 69 73 45 6e 74 69 74 79 me)) && isEntity 00035ea0: 4e 61 6d 65 45 78 70 72 65 73 73 69 6f 6e 28 6e NameExpression(n 00035eb0: 61 6d 65 29 20 26 26 20 69 73 53 61 6d 65 45 6e ame) && isSameEn 00035ec0: 74 69 74 79 4e 61 6d 65 28 6e 61 6d 65 2c 20 6e tityName(name, n 00035ed0: 6f 64 65 2e 6c 65 66 74 29 3b 0a 20 20 20 20 7d ode.left);. } 00035ee0: 0a 20 20 20 20 74 73 2e 69 73 44 65 66 61 75 6c . ts.isDefaul 00035ef0: 74 65 64 45 78 70 61 6e 64 6f 49 6e 69 74 69 61 tedExpandoInitia 00035f00: 6c 69 7a 65 72 20 3d 20 69 73 44 65 66 61 75 6c lizer = isDefaul 00035f10: 74 65 64 45 78 70 61 6e 64 6f 49 6e 69 74 69 61 tedExpandoInitia 00035f20: 6c 69 7a 65 72 3b 0a 20 20 20 20 2f 2a 2a 20 47 lizer;. /** G 00035f30: 69 76 65 6e 20 61 6e 20 65 78 70 61 6e 64 6f 20 iven an expando 00035f40: 69 6e 69 74 69 61 6c 69 7a 65 72 2c 20 72 65 74 initializer, ret 00035f50: 75 72 6e 20 69 74 73 20 64 65 63 6c 61 72 61 74 urn its declarat 00035f60: 69 6f 6e 20 6e 61 6d 65 2c 20 6f 72 20 74 68 65 ion name, or the 00035f70: 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 left-hand side 00035f80: 6f 66 20 74 68 65 20 61 73 73 69 67 6e 6d 65 6e of the assignmen 00035f90: 74 20 69 66 20 69 74 27 73 20 70 61 72 74 20 6f t if it's part o 00035fa0: 66 20 61 6e 20 61 73 73 69 67 6e 6d 65 6e 74 20 f an assignment 00035fb0: 64 65 63 6c 61 72 61 74 69 6f 6e 2e 20 2a 2f 0a declaration. */. 00035fc0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 function get 00035fd0: 4e 61 6d 65 4f 66 45 78 70 61 6e 64 6f 28 6e 6f NameOfExpando(no 00035fe0: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 de) {. if 00035ff0: 20 28 74 73 2e 69 73 42 69 6e 61 72 79 45 78 70 (ts.isBinaryExp 00036000: 72 65 73 73 69 6f 6e 28 6e 6f 64 65 2e 70 61 72 ression(node.par 00036010: 65 6e 74 29 29 20 7b 0a 20 20 20 20 20 20 20 20 ent)) {. 00036020: 20 20 20 20 76 61 72 20 70 61 72 65 6e 74 20 3d var parent = 00036030: 20 28 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6f ((node.parent.o 00036040: 70 65 72 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 6e peratorToken.kin 00036050: 64 20 3d 3d 3d 20 35 36 20 2f 2a 20 53 79 6e 74 d === 56 /* Synt 00036060: 61 78 4b 69 6e 64 2e 42 61 72 42 61 72 54 6f 6b axKind.BarBarTok 00036070: 65 6e 20 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 70 61 en */ || node.pa 00036080: 72 65 6e 74 2e 6f 70 65 72 61 74 6f 72 54 6f 6b rent.operatorTok 00036090: 65 6e 2e 6b 69 6e 64 20 3d 3d 3d 20 36 30 20 2f en.kind === 60 / 000360a0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 51 75 65 * SyntaxKind.Que 000360b0: 73 74 69 6f 6e 51 75 65 73 74 69 6f 6e 54 6f 6b stionQuestionTok 000360c0: 65 6e 20 2a 2f 29 20 26 26 20 74 73 2e 69 73 42 en */) && ts.isB 000360d0: 69 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e 28 inaryExpression( 000360e0: 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 70 61 72 65 node.parent.pare 000360f0: 6e 74 29 29 20 3f 20 6e 6f 64 65 2e 70 61 72 65 nt)) ? node.pare 00036100: 6e 74 2e 70 61 72 65 6e 74 20 3a 20 6e 6f 64 65 nt.parent : node 00036110: 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 .parent;. 00036120: 20 20 20 20 20 69 66 20 28 70 61 72 65 6e 74 2e if (parent. 00036130: 6f 70 65 72 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 operatorToken.ki 00036140: 6e 64 20 3d 3d 3d 20 36 33 20 2f 2a 20 53 79 6e nd === 63 /* Syn 00036150: 74 61 78 4b 69 6e 64 2e 45 71 75 61 6c 73 54 6f taxKind.EqualsTo 00036160: 6b 65 6e 20 2a 2f 20 26 26 20 74 73 2e 69 73 49 ken */ && ts.isI 00036170: 64 65 6e 74 69 66 69 65 72 28 70 61 72 65 6e 74 dentifier(parent 00036180: 2e 6c 65 66 74 29 29 20 7b 0a 20 20 20 20 20 20 .left)) {. 00036190: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 000361a0: 20 70 61 72 65 6e 74 2e 6c 65 66 74 3b 0a 20 20 parent.left;. 000361b0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 000361c0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 65 6c }. el 000361d0: 73 65 20 69 66 20 28 74 73 2e 69 73 56 61 72 69 se if (ts.isVari 000361e0: 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 ableDeclaration( 000361f0: 6e 6f 64 65 2e 70 61 72 65 6e 74 29 29 20 7b 0a node.parent)) {. 00036200: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00036210: 72 6e 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6e rn node.parent.n 00036220: 61 6d 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 ame;. }. 00036230: 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4e }. ts.getN 00036240: 61 6d 65 4f 66 45 78 70 61 6e 64 6f 20 3d 20 67 ameOfExpando = g 00036250: 65 74 4e 61 6d 65 4f 66 45 78 70 61 6e 64 6f 3b etNameOfExpando; 00036260: 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 . /**. * 00036270: 49 73 20 74 68 65 20 27 64 65 63 6c 61 72 65 64 Is the 'declared 00036280: 27 20 6e 61 6d 65 20 74 68 65 20 73 61 6d 65 20 ' name the same 00036290: 61 73 20 74 68 65 20 6f 6e 65 20 69 6e 20 74 68 as the one in th 000362a0: 65 20 69 6e 69 74 69 61 6c 69 7a 65 72 3f 0a 20 e initializer?. 000362b0: 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 74 72 * @return tr 000362c0: 75 65 20 66 6f 72 20 69 64 65 6e 74 69 63 61 6c ue for identical 000362d0: 20 65 6e 74 69 74 79 20 6e 61 6d 65 73 2c 20 61 entity names, a 000362e0: 73 20 77 65 6c 6c 20 61 73 20 6f 6e 65 73 20 77 s well as ones w 000362f0: 68 65 72 65 20 74 68 65 20 69 6e 69 74 69 61 6c here the initial 00036300: 69 7a 65 72 20 69 73 20 70 72 65 66 69 78 65 64 izer is prefixed 00036310: 20 77 69 74 68 0a 20 20 20 20 20 2a 20 27 77 69 with. * 'wi 00036320: 6e 64 6f 77 27 2c 20 27 73 65 6c 66 27 20 6f 72 ndow', 'self' or 00036330: 20 27 67 6c 6f 62 61 6c 27 2e 20 46 6f 72 20 65 'global'. For e 00036340: 78 61 6d 70 6c 65 3a 0a 20 20 20 20 20 2a 0a 20 xample:. *. 00036350: 20 20 20 20 2a 20 76 61 72 20 6d 79 20 3d 20 6d * var my = m 00036360: 79 20 7c 7c 20 7b 7d 0a 20 20 20 20 20 2a 20 76 y || {}. * v 00036370: 61 72 20 6d 69 6e 20 3d 20 77 69 6e 64 6f 77 2e ar min = window. 00036380: 6d 69 6e 20 7c 7c 20 7b 7d 0a 20 20 20 20 20 2a min || {}. * 00036390: 20 6d 79 2e 61 70 70 20 3d 20 73 65 6c 66 2e 6d my.app = self.m 000363a0: 79 2e 61 70 70 20 7c 7c 20 63 6c 61 73 73 20 7b y.app || class { 000363b0: 20 7d 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 }. */. f 000363c0: 75 6e 63 74 69 6f 6e 20 69 73 53 61 6d 65 45 6e unction isSameEn 000363d0: 74 69 74 79 4e 61 6d 65 28 6e 61 6d 65 2c 20 69 tityName(name, i 000363e0: 6e 69 74 69 61 6c 69 7a 65 72 29 20 7b 0a 20 20 nitializer) {. 000363f0: 20 20 20 20 20 20 69 66 20 28 69 73 50 72 6f 70 if (isProp 00036400: 65 72 74 79 4e 61 6d 65 4c 69 74 65 72 61 6c 28 ertyNameLiteral( 00036410: 6e 61 6d 65 29 20 26 26 20 69 73 50 72 6f 70 65 name) && isPrope 00036420: 72 74 79 4e 61 6d 65 4c 69 74 65 72 61 6c 28 69 rtyNameLiteral(i 00036430: 6e 69 74 69 61 6c 69 7a 65 72 29 29 20 7b 0a 20 nitializer)) {. 00036440: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00036450: 6e 20 67 65 74 54 65 78 74 4f 66 49 64 65 6e 74 n getTextOfIdent 00036460: 69 66 69 65 72 4f 72 4c 69 74 65 72 61 6c 28 6e ifierOrLiteral(n 00036470: 61 6d 65 29 20 3d 3d 3d 20 67 65 74 54 65 78 74 ame) === getText 00036480: 4f 66 49 64 65 6e 74 69 66 69 65 72 4f 72 4c 69 OfIdentifierOrLi 00036490: 74 65 72 61 6c 28 69 6e 69 74 69 61 6c 69 7a 65 teral(initialize 000364a0: 72 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 r);. }. 000364b0: 20 20 20 20 20 20 69 66 20 28 74 73 2e 69 73 4d if (ts.isM 000364c0: 65 6d 62 65 72 4e 61 6d 65 28 6e 61 6d 65 29 20 emberName(name) 000364d0: 26 26 20 69 73 4c 69 74 65 72 61 6c 4c 69 6b 65 && isLiteralLike 000364e0: 41 63 63 65 73 73 28 69 6e 69 74 69 61 6c 69 7a Access(initializ 000364f0: 65 72 29 20 26 26 0a 20 20 20 20 20 20 20 20 20 er) &&. 00036500: 20 20 20 28 69 6e 69 74 69 61 6c 69 7a 65 72 2e (initializer. 00036510: 65 78 70 72 65 73 73 69 6f 6e 2e 6b 69 6e 64 20 expression.kind 00036520: 3d 3d 3d 20 31 30 38 20 2f 2a 20 53 79 6e 74 61 === 108 /* Synta 00036530: 78 4b 69 6e 64 2e 54 68 69 73 4b 65 79 77 6f 72 xKind.ThisKeywor 00036540: 64 20 2a 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 d */ ||. 00036550: 20 20 20 20 20 20 20 20 74 73 2e 69 73 49 64 65 ts.isIde 00036560: 6e 74 69 66 69 65 72 28 69 6e 69 74 69 61 6c 69 ntifier(initiali 00036570: 7a 65 72 2e 65 78 70 72 65 73 73 69 6f 6e 29 20 zer.expression) 00036580: 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 &&. 00036590: 20 20 20 20 20 20 20 28 69 6e 69 74 69 61 6c 69 (initiali 000365a0: 7a 65 72 2e 65 78 70 72 65 73 73 69 6f 6e 2e 65 zer.expression.e 000365b0: 73 63 61 70 65 64 54 65 78 74 20 3d 3d 3d 20 22 scapedText === " 000365c0: 77 69 6e 64 6f 77 22 20 7c 7c 0a 20 20 20 20 20 window" ||. 000365d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000365e0: 20 20 20 69 6e 69 74 69 61 6c 69 7a 65 72 2e 65 initializer.e 000365f0: 78 70 72 65 73 73 69 6f 6e 2e 65 73 63 61 70 65 xpression.escape 00036600: 64 54 65 78 74 20 3d 3d 3d 20 22 73 65 6c 66 22 dText === "self" 00036610: 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ||. 00036620: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 69 74 init 00036630: 69 61 6c 69 7a 65 72 2e 65 78 70 72 65 73 73 69 ializer.expressi 00036640: 6f 6e 2e 65 73 63 61 70 65 64 54 65 78 74 20 3d on.escapedText = 00036650: 3d 3d 20 22 67 6c 6f 62 61 6c 22 29 29 29 20 7b == "global"))) { 00036660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret 00036670: 75 72 6e 20 69 73 53 61 6d 65 45 6e 74 69 74 79 urn isSameEntity 00036680: 4e 61 6d 65 28 6e 61 6d 65 2c 20 67 65 74 4e 61 Name(name, getNa 00036690: 6d 65 4f 72 41 72 67 75 6d 65 6e 74 28 69 6e 69 meOrArgument(ini 000366a0: 74 69 61 6c 69 7a 65 72 29 29 3b 0a 20 20 20 20 tializer));. 000366b0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 }. if 000366c0: 20 28 69 73 4c 69 74 65 72 61 6c 4c 69 6b 65 41 (isLiteralLikeA 000366d0: 63 63 65 73 73 28 6e 61 6d 65 29 20 26 26 20 69 ccess(name) && i 000366e0: 73 4c 69 74 65 72 61 6c 4c 69 6b 65 41 63 63 65 sLiteralLikeAcce 000366f0: 73 73 28 69 6e 69 74 69 61 6c 69 7a 65 72 29 29 ss(initializer)) 00036700: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 {. r 00036710: 65 74 75 72 6e 20 67 65 74 45 6c 65 6d 65 6e 74 eturn getElement 00036720: 4f 72 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 OrPropertyAccess 00036730: 4e 61 6d 65 28 6e 61 6d 65 29 20 3d 3d 3d 20 67 Name(name) === g 00036740: 65 74 45 6c 65 6d 65 6e 74 4f 72 50 72 6f 70 65 etElementOrPrope 00036750: 72 74 79 41 63 63 65 73 73 4e 61 6d 65 28 69 6e rtyAccessName(in 00036760: 69 74 69 61 6c 69 7a 65 72 29 0a 20 20 20 20 20 itializer). 00036770: 20 20 20 20 20 20 20 20 20 20 20 26 26 20 69 73 && is 00036780: 53 61 6d 65 45 6e 74 69 74 79 4e 61 6d 65 28 6e SameEntityName(n 00036790: 61 6d 65 2e 65 78 70 72 65 73 73 69 6f 6e 2c 20 ame.expression, 000367a0: 69 6e 69 74 69 61 6c 69 7a 65 72 2e 65 78 70 72 initializer.expr 000367b0: 65 73 73 69 6f 6e 29 3b 0a 20 20 20 20 20 20 20 ession);. 000367c0: 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 }. retur 000367d0: 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 n false;. }. 000367e0: 20 20 20 74 73 2e 69 73 53 61 6d 65 45 6e 74 69 ts.isSameEnti 000367f0: 74 79 4e 61 6d 65 20 3d 20 69 73 53 61 6d 65 45 tyName = isSameE 00036800: 6e 74 69 74 79 4e 61 6d 65 3b 0a 20 20 20 20 66 ntityName;. f 00036810: 75 6e 63 74 69 6f 6e 20 67 65 74 52 69 67 68 74 unction getRight 00036820: 4d 6f 73 74 41 73 73 69 67 6e 65 64 45 78 70 72 MostAssignedExpr 00036830: 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 ession(node) {. 00036840: 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 69 73 while (is 00036850: 41 73 73 69 67 6e 6d 65 6e 74 45 78 70 72 65 73 AssignmentExpres 00036860: 73 69 6f 6e 28 6e 6f 64 65 2c 20 2f 2a 65 78 63 sion(node, /*exc 00036870: 6c 75 64 65 43 6f 6d 70 6f 75 6e 64 41 73 73 69 ludeCompoundAssi 00036880: 67 6e 6d 65 6e 74 73 2a 2f 20 74 72 75 65 29 29 gnments*/ true)) 00036890: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e {. n 000368a0: 6f 64 65 20 3d 20 6e 6f 64 65 2e 72 69 67 68 74 ode = node.right 000368b0: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 000368c0: 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 3b return node; 000368d0: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 . }. ts.ge 000368e0: 74 52 69 67 68 74 4d 6f 73 74 41 73 73 69 67 6e tRightMostAssign 000368f0: 65 64 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 67 edExpression = g 00036900: 65 74 52 69 67 68 74 4d 6f 73 74 41 73 73 69 67 etRightMostAssig 00036910: 6e 65 64 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 nedExpression;. 00036920: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 45 78 function isEx 00036930: 70 6f 72 74 73 49 64 65 6e 74 69 66 69 65 72 28 portsIdentifier( 00036940: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 00036950: 72 65 74 75 72 6e 20 74 73 2e 69 73 49 64 65 6e return ts.isIden 00036960: 74 69 66 69 65 72 28 6e 6f 64 65 29 20 26 26 20 tifier(node) && 00036970: 6e 6f 64 65 2e 65 73 63 61 70 65 64 54 65 78 74 node.escapedText 00036980: 20 3d 3d 3d 20 22 65 78 70 6f 72 74 73 22 3b 0a === "exports";. 00036990: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 45 }. ts.isE 000369a0: 78 70 6f 72 74 73 49 64 65 6e 74 69 66 69 65 72 xportsIdentifier 000369b0: 20 3d 20 69 73 45 78 70 6f 72 74 73 49 64 65 6e = isExportsIden 000369c0: 74 69 66 69 65 72 3b 0a 20 20 20 20 66 75 6e 63 tifier;. func 000369d0: 74 69 6f 6e 20 69 73 4d 6f 64 75 6c 65 49 64 65 tion isModuleIde 000369e0: 6e 74 69 66 69 65 72 28 6e 6f 64 65 29 20 7b 0a ntifier(node) {. 000369f0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 00036a00: 73 2e 69 73 49 64 65 6e 74 69 66 69 65 72 28 6e s.isIdentifier(n 00036a10: 6f 64 65 29 20 26 26 20 6e 6f 64 65 2e 65 73 63 ode) && node.esc 00036a20: 61 70 65 64 54 65 78 74 20 3d 3d 3d 20 22 6d 6f apedText === "mo 00036a30: 64 75 6c 65 22 3b 0a 20 20 20 20 7d 0a 20 20 20 dule";. }. 00036a40: 20 74 73 2e 69 73 4d 6f 64 75 6c 65 49 64 65 6e ts.isModuleIden 00036a50: 74 69 66 69 65 72 20 3d 20 69 73 4d 6f 64 75 6c tifier = isModul 00036a60: 65 49 64 65 6e 74 69 66 69 65 72 3b 0a 20 20 20 eIdentifier;. 00036a70: 20 66 75 6e 63 74 69 6f 6e 20 69 73 4d 6f 64 75 function isModu 00036a80: 6c 65 45 78 70 6f 72 74 73 41 63 63 65 73 73 45 leExportsAccessE 00036a90: 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 xpression(node) 00036aa0: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 00036ab0: 20 28 74 73 2e 69 73 50 72 6f 70 65 72 74 79 41 (ts.isPropertyA 00036ac0: 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 28 ccessExpression( 00036ad0: 6e 6f 64 65 29 20 7c 7c 20 69 73 4c 69 74 65 72 node) || isLiter 00036ae0: 61 6c 4c 69 6b 65 45 6c 65 6d 65 6e 74 41 63 63 alLikeElementAcc 00036af0: 65 73 73 28 6e 6f 64 65 29 29 0a 20 20 20 20 20 ess(node)). 00036b00: 20 20 20 20 20 20 20 26 26 20 69 73 4d 6f 64 75 && isModu 00036b10: 6c 65 49 64 65 6e 74 69 66 69 65 72 28 6e 6f 64 leIdentifier(nod 00036b20: 65 2e 65 78 70 72 65 73 73 69 6f 6e 29 0a 20 20 e.expression). 00036b30: 20 20 20 20 20 20 20 20 20 20 26 26 20 67 65 74 && get 00036b40: 45 6c 65 6d 65 6e 74 4f 72 50 72 6f 70 65 72 74 ElementOrPropert 00036b50: 79 41 63 63 65 73 73 4e 61 6d 65 28 6e 6f 64 65 yAccessName(node 00036b60: 29 20 3d 3d 3d 20 22 65 78 70 6f 72 74 73 22 3b ) === "exports"; 00036b70: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00036b80: 4d 6f 64 75 6c 65 45 78 70 6f 72 74 73 41 63 63 ModuleExportsAcc 00036b90: 65 73 73 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 essExpression = 00036ba0: 69 73 4d 6f 64 75 6c 65 45 78 70 6f 72 74 73 41 isModuleExportsA 00036bb0: 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 3b ccessExpression; 00036bc0: 0a 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20 61 . /// Given a 00036bd0: 20 42 69 6e 61 72 79 45 78 70 72 65 73 73 69 6f BinaryExpressio 00036be0: 6e 2c 20 72 65 74 75 72 6e 73 20 53 70 65 63 69 n, returns Speci 00036bf0: 61 6c 50 72 6f 70 65 72 74 79 41 73 73 69 67 6e alPropertyAssign 00036c00: 6d 65 6e 74 4b 69 6e 64 20 66 6f 72 20 74 68 65 mentKind for the 00036c10: 20 76 61 72 69 6f 75 73 20 6b 69 6e 64 73 20 6f various kinds o 00036c20: 66 20 70 72 6f 70 65 72 74 79 0a 20 20 20 20 2f f property. / 00036c30: 2f 2f 20 61 73 73 69 67 6e 6d 65 6e 74 73 20 77 // assignments w 00036c40: 65 20 74 72 65 61 74 20 61 73 20 73 70 65 63 69 e treat as speci 00036c50: 61 6c 20 69 6e 20 74 68 65 20 62 69 6e 64 65 72 al in the binder 00036c60: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 00036c70: 74 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 tAssignmentDecla 00036c80: 72 61 74 69 6f 6e 4b 69 6e 64 28 65 78 70 72 29 rationKind(expr) 00036c90: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 73 {. var s 00036ca0: 70 65 63 69 61 6c 20 3d 20 67 65 74 41 73 73 69 pecial = getAssi 00036cb0: 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 6f gnmentDeclaratio 00036cc0: 6e 4b 69 6e 64 57 6f 72 6b 65 72 28 65 78 70 72 nKindWorker(expr 00036cd0: 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 );. retur 00036ce0: 6e 20 73 70 65 63 69 61 6c 20 3d 3d 3d 20 35 20 n special === 5 00036cf0: 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 /* AssignmentDec 00036d00: 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 50 72 6f larationKind.Pro 00036d10: 70 65 72 74 79 20 2a 2f 20 7c 7c 20 69 73 49 6e perty */ || isIn 00036d20: 4a 53 46 69 6c 65 28 65 78 70 72 29 20 3f 20 73 JSFile(expr) ? s 00036d30: 70 65 63 69 61 6c 20 3a 20 30 20 2f 2a 20 41 73 pecial : 0 /* As 00036d40: 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 signmentDeclarat 00036d50: 69 6f 6e 4b 69 6e 64 2e 4e 6f 6e 65 20 2a 2f 3b ionKind.None */; 00036d60: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 . }. ts.ge 00036d70: 74 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 tAssignmentDecla 00036d80: 72 61 74 69 6f 6e 4b 69 6e 64 20 3d 20 67 65 74 rationKind = get 00036d90: 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 AssignmentDeclar 00036da0: 61 74 69 6f 6e 4b 69 6e 64 3b 0a 20 20 20 20 66 ationKind;. f 00036db0: 75 6e 63 74 69 6f 6e 20 69 73 42 69 6e 64 61 62 unction isBindab 00036dc0: 6c 65 4f 62 6a 65 63 74 44 65 66 69 6e 65 50 72 leObjectDefinePr 00036dd0: 6f 70 65 72 74 79 43 61 6c 6c 28 65 78 70 72 29 opertyCall(expr) 00036de0: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00036df0: 6e 20 74 73 2e 6c 65 6e 67 74 68 28 65 78 70 72 n ts.length(expr 00036e00: 2e 61 72 67 75 6d 65 6e 74 73 29 20 3d 3d 3d 20 .arguments) === 00036e10: 33 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 3 &&. 00036e20: 20 74 73 2e 69 73 50 72 6f 70 65 72 74 79 41 63 ts.isPropertyAc 00036e30: 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 28 65 cessExpression(e 00036e40: 78 70 72 2e 65 78 70 72 65 73 73 69 6f 6e 29 20 xpr.expression) 00036e50: 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 &&. t 00036e60: 73 2e 69 73 49 64 65 6e 74 69 66 69 65 72 28 65 s.isIdentifier(e 00036e70: 78 70 72 2e 65 78 70 72 65 73 73 69 6f 6e 2e 65 xpr.expression.e 00036e80: 78 70 72 65 73 73 69 6f 6e 29 20 26 26 0a 20 20 xpression) &&. 00036e90: 20 20 20 20 20 20 20 20 20 20 74 73 2e 69 64 54 ts.idT 00036ea0: 65 78 74 28 65 78 70 72 2e 65 78 70 72 65 73 73 ext(expr.express 00036eb0: 69 6f 6e 2e 65 78 70 72 65 73 73 69 6f 6e 29 20 ion.expression) 00036ec0: 3d 3d 3d 20 22 4f 62 6a 65 63 74 22 20 26 26 0a === "Object" &&. 00036ed0: 20 20 20 20 20 20 20 20 20 20 20 20 74 73 2e 69 ts.i 00036ee0: 64 54 65 78 74 28 65 78 70 72 2e 65 78 70 72 65 dText(expr.expre 00036ef0: 73 73 69 6f 6e 2e 6e 61 6d 65 29 20 3d 3d 3d 20 ssion.name) === 00036f00: 22 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 22 "defineProperty" 00036f10: 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 &&. 00036f20: 69 73 53 74 72 69 6e 67 4f 72 4e 75 6d 65 72 69 isStringOrNumeri 00036f30: 63 4c 69 74 65 72 61 6c 4c 69 6b 65 28 65 78 70 cLiteralLike(exp 00036f40: 72 2e 61 72 67 75 6d 65 6e 74 73 5b 31 5d 29 20 r.arguments[1]) 00036f50: 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 &&. i 00036f60: 73 42 69 6e 64 61 62 6c 65 53 74 61 74 69 63 4e sBindableStaticN 00036f70: 61 6d 65 45 78 70 72 65 73 73 69 6f 6e 28 65 78 ameExpression(ex 00036f80: 70 72 2e 61 72 67 75 6d 65 6e 74 73 5b 30 5d 2c pr.arguments[0], 00036f90: 20 2f 2a 65 78 63 6c 75 64 65 54 68 69 73 4b 65 /*excludeThisKe 00036fa0: 79 77 6f 72 64 2a 2f 20 74 72 75 65 29 3b 0a 20 yword*/ true);. 00036fb0: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 42 69 }. ts.isBi 00036fc0: 6e 64 61 62 6c 65 4f 62 6a 65 63 74 44 65 66 69 ndableObjectDefi 00036fd0: 6e 65 50 72 6f 70 65 72 74 79 43 61 6c 6c 20 3d nePropertyCall = 00036fe0: 20 69 73 42 69 6e 64 61 62 6c 65 4f 62 6a 65 63 isBindableObjec 00036ff0: 74 44 65 66 69 6e 65 50 72 6f 70 65 72 74 79 43 tDefinePropertyC 00037000: 61 6c 6c 3b 0a 20 20 20 20 2f 2a 2a 20 78 2e 79 all;. /** x.y 00037010: 20 4f 52 20 78 5b 30 5d 20 2a 2f 0a 20 20 20 20 OR x[0] */. 00037020: 66 75 6e 63 74 69 6f 6e 20 69 73 4c 69 74 65 72 function isLiter 00037030: 61 6c 4c 69 6b 65 41 63 63 65 73 73 28 6e 6f 64 alLikeAccess(nod 00037040: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 e) {. ret 00037050: 75 72 6e 20 74 73 2e 69 73 50 72 6f 70 65 72 74 urn ts.isPropert 00037060: 79 41 63 63 65 73 73 45 78 70 72 65 73 73 69 6f yAccessExpressio 00037070: 6e 28 6e 6f 64 65 29 20 7c 7c 20 69 73 4c 69 74 n(node) || isLit 00037080: 65 72 61 6c 4c 69 6b 65 45 6c 65 6d 65 6e 74 41 eralLikeElementA 00037090: 63 63 65 73 73 28 6e 6f 64 65 29 3b 0a 20 20 20 ccess(node);. 000370a0: 20 7d 0a 20 20 20 20 74 73 2e 69 73 4c 69 74 65 }. ts.isLite 000370b0: 72 61 6c 4c 69 6b 65 41 63 63 65 73 73 20 3d 20 ralLikeAccess = 000370c0: 69 73 4c 69 74 65 72 61 6c 4c 69 6b 65 41 63 63 isLiteralLikeAcc 000370d0: 65 73 73 3b 0a 20 20 20 20 2f 2a 2a 20 78 5b 30 ess;. /** x[0 000370e0: 5d 20 4f 52 20 78 5b 27 61 27 5d 20 4f 52 20 78 ] OR x['a'] OR x 000370f0: 5b 53 79 6d 62 6f 6c 2e 79 5d 20 2a 2f 0a 20 20 [Symbol.y] */. 00037100: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4c 69 74 function isLit 00037110: 65 72 61 6c 4c 69 6b 65 45 6c 65 6d 65 6e 74 41 eralLikeElementA 00037120: 63 63 65 73 73 28 6e 6f 64 65 29 20 7b 0a 20 20 ccess(node) {. 00037130: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 00037140: 69 73 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 45 isElementAccessE 00037150: 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 xpression(node) 00037160: 26 26 20 69 73 53 74 72 69 6e 67 4f 72 4e 75 6d && isStringOrNum 00037170: 65 72 69 63 4c 69 74 65 72 61 6c 4c 69 6b 65 28 ericLiteralLike( 00037180: 6e 6f 64 65 2e 61 72 67 75 6d 65 6e 74 45 78 70 node.argumentExp 00037190: 72 65 73 73 69 6f 6e 29 3b 0a 20 20 20 20 7d 0a ression);. }. 000371a0: 20 20 20 20 74 73 2e 69 73 4c 69 74 65 72 61 6c ts.isLiteral 000371b0: 4c 69 6b 65 45 6c 65 6d 65 6e 74 41 63 63 65 73 LikeElementAcces 000371c0: 73 20 3d 20 69 73 4c 69 74 65 72 61 6c 4c 69 6b s = isLiteralLik 000371d0: 65 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 3b 0a eElementAccess;. 000371e0: 20 20 20 20 2f 2a 2a 20 41 6e 79 20 73 65 72 69 /** Any seri 000371f0: 65 73 20 6f 66 20 70 72 6f 70 65 72 74 79 20 61 es of property a 00037200: 6e 64 20 65 6c 65 6d 65 6e 74 20 61 63 63 65 73 nd element acces 00037210: 73 65 73 2e 20 2a 2f 0a 20 20 20 20 66 75 6e 63 ses. */. func 00037220: 74 69 6f 6e 20 69 73 42 69 6e 64 61 62 6c 65 53 tion isBindableS 00037230: 74 61 74 69 63 41 63 63 65 73 73 45 78 70 72 65 taticAccessExpre 00037240: 73 73 69 6f 6e 28 6e 6f 64 65 2c 20 65 78 63 6c ssion(node, excl 00037250: 75 64 65 54 68 69 73 4b 65 79 77 6f 72 64 29 20 udeThisKeyword) 00037260: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 00037270: 20 74 73 2e 69 73 50 72 6f 70 65 72 74 79 41 63 ts.isPropertyAc 00037280: 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 28 6e cessExpression(n 00037290: 6f 64 65 29 20 26 26 20 28 21 65 78 63 6c 75 64 ode) && (!exclud 000372a0: 65 54 68 69 73 4b 65 79 77 6f 72 64 20 26 26 20 eThisKeyword && 000372b0: 6e 6f 64 65 2e 65 78 70 72 65 73 73 69 6f 6e 2e node.expression. 000372c0: 6b 69 6e 64 20 3d 3d 3d 20 31 30 38 20 2f 2a 20 kind === 108 /* 000372d0: 53 79 6e 74 61 78 4b 69 6e 64 2e 54 68 69 73 4b SyntaxKind.ThisK 000372e0: 65 79 77 6f 72 64 20 2a 2f 20 7c 7c 20 74 73 2e eyword */ || ts. 000372f0: 69 73 49 64 65 6e 74 69 66 69 65 72 28 6e 6f 64 isIdentifier(nod 00037300: 65 2e 6e 61 6d 65 29 20 26 26 20 69 73 42 69 6e e.name) && isBin 00037310: 64 61 62 6c 65 53 74 61 74 69 63 4e 61 6d 65 45 dableStaticNameE 00037320: 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 2e 65 xpression(node.e 00037330: 78 70 72 65 73 73 69 6f 6e 2c 20 2f 2a 65 78 63 xpression, /*exc 00037340: 6c 75 64 65 54 68 69 73 4b 65 79 77 6f 72 64 2a ludeThisKeyword* 00037350: 2f 20 74 72 75 65 29 29 0a 20 20 20 20 20 20 20 / true)). 00037360: 20 20 20 20 20 7c 7c 20 69 73 42 69 6e 64 61 62 || isBindab 00037370: 6c 65 53 74 61 74 69 63 45 6c 65 6d 65 6e 74 41 leStaticElementA 00037380: 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 28 ccessExpression( 00037390: 6e 6f 64 65 2c 20 65 78 63 6c 75 64 65 54 68 69 node, excludeThi 000373a0: 73 4b 65 79 77 6f 72 64 29 3b 0a 20 20 20 20 7d sKeyword);. } 000373b0: 0a 20 20 20 20 74 73 2e 69 73 42 69 6e 64 61 62 . ts.isBindab 000373c0: 6c 65 53 74 61 74 69 63 41 63 63 65 73 73 45 78 leStaticAccessEx 000373d0: 70 72 65 73 73 69 6f 6e 20 3d 20 69 73 42 69 6e pression = isBin 000373e0: 64 61 62 6c 65 53 74 61 74 69 63 41 63 63 65 73 dableStaticAcces 000373f0: 73 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 sExpression;. 00037400: 20 2f 2a 2a 20 41 6e 79 20 73 65 72 69 65 73 20 /** Any series 00037410: 6f 66 20 70 72 6f 70 65 72 74 79 20 61 6e 64 20 of property and 00037420: 65 6c 65 6d 65 6e 74 20 61 63 63 65 73 73 65 73 element accesses 00037430: 2c 20 65 6e 64 69 6e 67 20 69 6e 20 61 20 6c 69 , ending in a li 00037440: 74 65 72 61 6c 20 65 6c 65 6d 65 6e 74 20 61 63 teral element ac 00037450: 63 65 73 73 20 2a 2f 0a 20 20 20 20 66 75 6e 63 cess */. func 00037460: 74 69 6f 6e 20 69 73 42 69 6e 64 61 62 6c 65 53 tion isBindableS 00037470: 74 61 74 69 63 45 6c 65 6d 65 6e 74 41 63 63 65 taticElementAcce 00037480: 73 73 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 ssExpression(nod 00037490: 65 2c 20 65 78 63 6c 75 64 65 54 68 69 73 4b 65 e, excludeThisKe 000374a0: 79 77 6f 72 64 29 20 7b 0a 20 20 20 20 20 20 20 yword) {. 000374b0: 20 72 65 74 75 72 6e 20 69 73 4c 69 74 65 72 61 return isLitera 000374c0: 6c 4c 69 6b 65 45 6c 65 6d 65 6e 74 41 63 63 65 lLikeElementAcce 000374d0: 73 73 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 ss(node). 000374e0: 20 20 20 20 20 26 26 20 28 28 21 65 78 63 6c 75 && ((!exclu 000374f0: 64 65 54 68 69 73 4b 65 79 77 6f 72 64 20 26 26 deThisKeyword && 00037500: 20 6e 6f 64 65 2e 65 78 70 72 65 73 73 69 6f 6e node.expression 00037510: 2e 6b 69 6e 64 20 3d 3d 3d 20 31 30 38 20 2f 2a .kind === 108 /* 00037520: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 68 69 73 SyntaxKind.This 00037530: 4b 65 79 77 6f 72 64 20 2a 2f 29 20 7c 7c 0a 20 Keyword */) ||. 00037540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i 00037550: 73 45 6e 74 69 74 79 4e 61 6d 65 45 78 70 72 65 sEntityNameExpre 00037560: 73 73 69 6f 6e 28 6e 6f 64 65 2e 65 78 70 72 65 ssion(node.expre 00037570: 73 73 69 6f 6e 29 20 7c 7c 0a 20 20 20 20 20 20 ssion) ||. 00037580: 20 20 20 20 20 20 20 20 20 20 69 73 42 69 6e 64 isBind 00037590: 61 62 6c 65 53 74 61 74 69 63 41 63 63 65 73 73 ableStaticAccess 000375a0: 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 2e Expression(node. 000375b0: 65 78 70 72 65 73 73 69 6f 6e 2c 20 2f 2a 65 78 expression, /*ex 000375c0: 63 6c 75 64 65 54 68 69 73 4b 65 79 77 6f 72 64 cludeThisKeyword 000375d0: 2a 2f 20 74 72 75 65 29 29 3b 0a 20 20 20 20 7d */ true));. } 000375e0: 0a 20 20 20 20 74 73 2e 69 73 42 69 6e 64 61 62 . ts.isBindab 000375f0: 6c 65 53 74 61 74 69 63 45 6c 65 6d 65 6e 74 41 leStaticElementA 00037600: 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 20 ccessExpression 00037610: 3d 20 69 73 42 69 6e 64 61 62 6c 65 53 74 61 74 = isBindableStat 00037620: 69 63 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 45 icElementAccessE 00037630: 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 20 66 xpression;. f 00037640: 75 6e 63 74 69 6f 6e 20 69 73 42 69 6e 64 61 62 unction isBindab 00037650: 6c 65 53 74 61 74 69 63 4e 61 6d 65 45 78 70 72 leStaticNameExpr 00037660: 65 73 73 69 6f 6e 28 6e 6f 64 65 2c 20 65 78 63 ession(node, exc 00037670: 6c 75 64 65 54 68 69 73 4b 65 79 77 6f 72 64 29 ludeThisKeyword) 00037680: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00037690: 6e 20 69 73 45 6e 74 69 74 79 4e 61 6d 65 45 78 n isEntityNameEx 000376a0: 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 7c pression(node) | 000376b0: 7c 20 69 73 42 69 6e 64 61 62 6c 65 53 74 61 74 | isBindableStat 000376c0: 69 63 41 63 63 65 73 73 45 78 70 72 65 73 73 69 icAccessExpressi 000376d0: 6f 6e 28 6e 6f 64 65 2c 20 65 78 63 6c 75 64 65 on(node, exclude 000376e0: 54 68 69 73 4b 65 79 77 6f 72 64 29 3b 0a 20 20 ThisKeyword);. 000376f0: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 42 69 6e }. ts.isBin 00037700: 64 61 62 6c 65 53 74 61 74 69 63 4e 61 6d 65 45 dableStaticNameE 00037710: 78 70 72 65 73 73 69 6f 6e 20 3d 20 69 73 42 69 xpression = isBi 00037720: 6e 64 61 62 6c 65 53 74 61 74 69 63 4e 61 6d 65 ndableStaticName 00037730: 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 20 Expression;. 00037740: 66 75 6e 63 74 69 6f 6e 20 67 65 74 4e 61 6d 65 function getName 00037750: 4f 72 41 72 67 75 6d 65 6e 74 28 65 78 70 72 29 OrArgument(expr) 00037760: 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 {. if (t 00037770: 73 2e 69 73 50 72 6f 70 65 72 74 79 41 63 63 65 s.isPropertyAcce 00037780: 73 73 45 78 70 72 65 73 73 69 6f 6e 28 65 78 70 ssExpression(exp 00037790: 72 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 r)) {. 000377a0: 20 20 72 65 74 75 72 6e 20 65 78 70 72 2e 6e 61 return expr.na 000377b0: 6d 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 me;. }. 000377c0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 78 70 return exp 000377d0: 72 2e 61 72 67 75 6d 65 6e 74 45 78 70 72 65 73 r.argumentExpres 000377e0: 73 69 6f 6e 3b 0a 20 20 20 20 7d 0a 20 20 20 20 sion;. }. 000377f0: 74 73 2e 67 65 74 4e 61 6d 65 4f 72 41 72 67 75 ts.getNameOrArgu 00037800: 6d 65 6e 74 20 3d 20 67 65 74 4e 61 6d 65 4f 72 ment = getNameOr 00037810: 41 72 67 75 6d 65 6e 74 3b 0a 20 20 20 20 66 75 Argument;. fu 00037820: 6e 63 74 69 6f 6e 20 67 65 74 41 73 73 69 67 6e nction getAssign 00037830: 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b mentDeclarationK 00037840: 69 6e 64 57 6f 72 6b 65 72 28 65 78 70 72 29 20 indWorker(expr) 00037850: 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 73 {. if (ts 00037860: 2e 69 73 43 61 6c 6c 45 78 70 72 65 73 73 69 6f .isCallExpressio 00037870: 6e 28 65 78 70 72 29 29 20 7b 0a 20 20 20 20 20 n(expr)) {. 00037880: 20 20 20 20 20 20 20 69 66 20 28 21 69 73 42 69 if (!isBi 00037890: 6e 64 61 62 6c 65 4f 62 6a 65 63 74 44 65 66 69 ndableObjectDefi 000378a0: 6e 65 50 72 6f 70 65 72 74 79 43 61 6c 6c 28 65 nePropertyCall(e 000378b0: 78 70 72 29 29 20 7b 0a 20 20 20 20 20 20 20 20 xpr)) {. 000378c0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 return 0 000378d0: 20 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 /* AssignmentDe 000378e0: 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 4e 6f clarationKind.No 000378f0: 6e 65 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 20 ne */;. 00037900: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 00037910: 20 76 61 72 20 65 6e 74 69 74 79 4e 61 6d 65 20 var entityName 00037920: 3d 20 65 78 70 72 2e 61 72 67 75 6d 65 6e 74 73 = expr.arguments 00037930: 5b 30 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 [0];. 00037940: 20 69 66 20 28 69 73 45 78 70 6f 72 74 73 49 64 if (isExportsId 00037950: 65 6e 74 69 66 69 65 72 28 65 6e 74 69 74 79 4e entifier(entityN 00037960: 61 6d 65 29 20 7c 7c 20 69 73 4d 6f 64 75 6c 65 ame) || isModule 00037970: 45 78 70 6f 72 74 73 41 63 63 65 73 73 45 78 70 ExportsAccessExp 00037980: 72 65 73 73 69 6f 6e 28 65 6e 74 69 74 79 4e 61 ression(entityNa 00037990: 6d 65 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 me)) {. 000379a0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 38 20 return 8 000379b0: 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 /* AssignmentDec 000379c0: 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 4f 62 6a larationKind.Obj 000379d0: 65 63 74 44 65 66 69 6e 65 50 72 6f 70 65 72 74 ectDefinePropert 000379e0: 79 45 78 70 6f 72 74 73 20 2a 2f 3b 0a 20 20 20 yExports */;. 000379f0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 00037a00: 20 20 20 20 20 20 20 69 66 20 28 69 73 42 69 6e if (isBin 00037a10: 64 61 62 6c 65 53 74 61 74 69 63 41 63 63 65 73 dableStaticAcces 00037a20: 73 45 78 70 72 65 73 73 69 6f 6e 28 65 6e 74 69 sExpression(enti 00037a30: 74 79 4e 61 6d 65 29 20 26 26 20 67 65 74 45 6c tyName) && getEl 00037a40: 65 6d 65 6e 74 4f 72 50 72 6f 70 65 72 74 79 41 ementOrPropertyA 00037a50: 63 63 65 73 73 4e 61 6d 65 28 65 6e 74 69 74 79 ccessName(entity 00037a60: 4e 61 6d 65 29 20 3d 3d 3d 20 22 70 72 6f 74 6f Name) === "proto 00037a70: 74 79 70 65 22 29 20 7b 0a 20 20 20 20 20 20 20 type") {. 00037a80: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 00037a90: 39 20 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 9 /* AssignmentD 00037aa0: 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 4f eclarationKind.O 00037ab0: 62 6a 65 63 74 44 65 66 69 6e 65 50 72 6f 74 6f bjectDefineProto 00037ac0: 74 79 70 65 50 72 6f 70 65 72 74 79 20 2a 2f 3b typeProperty */; 00037ad0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 . }. 00037ae0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00037af0: 6e 20 37 20 2f 2a 20 41 73 73 69 67 6e 6d 65 6e n 7 /* Assignmen 00037b00: 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 tDeclarationKind 00037b10: 2e 4f 62 6a 65 63 74 44 65 66 69 6e 65 50 72 6f .ObjectDefinePro 00037b20: 70 65 72 74 79 56 61 6c 75 65 20 2a 2f 3b 0a 20 pertyValue */;. 00037b30: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00037b40: 20 69 66 20 28 65 78 70 72 2e 6f 70 65 72 61 74 if (expr.operat 00037b50: 6f 72 54 6f 6b 65 6e 2e 6b 69 6e 64 20 21 3d 3d orToken.kind !== 00037b60: 20 36 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 63 /* SyntaxKin 00037b70: 64 2e 45 71 75 61 6c 73 54 6f 6b 65 6e 20 2a 2f d.EqualsToken */ 00037b80: 20 7c 7c 20 21 69 73 41 63 63 65 73 73 45 78 70 || !isAccessExp 00037b90: 72 65 73 73 69 6f 6e 28 65 78 70 72 2e 6c 65 66 ression(expr.lef 00037ba0: 74 29 20 7c 7c 20 69 73 56 6f 69 64 5a 65 72 6f t) || isVoidZero 00037bb0: 28 67 65 74 52 69 67 68 74 4d 6f 73 74 41 73 73 (getRightMostAss 00037bc0: 69 67 6e 65 64 45 78 70 72 65 73 73 69 6f 6e 28 ignedExpression( 00037bd0: 65 78 70 72 29 29 29 20 7b 0a 20 20 20 20 20 20 expr))) {. 00037be0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 20 2f return 0 / 00037bf0: 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c * AssignmentDecl 00037c00: 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 4e 6f 6e 65 arationKind.None 00037c10: 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 */;. }. 00037c20: 20 20 20 20 20 20 20 69 66 20 28 69 73 42 69 6e if (isBin 00037c30: 64 61 62 6c 65 53 74 61 74 69 63 4e 61 6d 65 45 dableStaticNameE 00037c40: 78 70 72 65 73 73 69 6f 6e 28 65 78 70 72 2e 6c xpression(expr.l 00037c50: 65 66 74 2e 65 78 70 72 65 73 73 69 6f 6e 2c 20 eft.expression, 00037c60: 2f 2a 65 78 63 6c 75 64 65 54 68 69 73 4b 65 79 /*excludeThisKey 00037c70: 77 6f 72 64 2a 2f 20 74 72 75 65 29 20 26 26 20 word*/ true) && 00037c80: 67 65 74 45 6c 65 6d 65 6e 74 4f 72 50 72 6f 70 getElementOrProp 00037c90: 65 72 74 79 41 63 63 65 73 73 4e 61 6d 65 28 65 ertyAccessName(e 00037ca0: 78 70 72 2e 6c 65 66 74 29 20 3d 3d 3d 20 22 70 xpr.left) === "p 00037cb0: 72 6f 74 6f 74 79 70 65 22 20 26 26 20 74 73 2e rototype" && ts. 00037cc0: 69 73 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 45 isObjectLiteralE 00037cd0: 78 70 72 65 73 73 69 6f 6e 28 67 65 74 49 6e 69 xpression(getIni 00037ce0: 74 69 61 6c 69 7a 65 72 4f 66 42 69 6e 61 72 79 tializerOfBinary 00037cf0: 45 78 70 72 65 73 73 69 6f 6e 28 65 78 70 72 29 Expression(expr) 00037d00: 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 )) {. 00037d10: 20 2f 2f 20 46 2e 70 72 6f 74 6f 74 79 70 65 20 // F.prototype 00037d20: 3d 20 7b 20 2e 2e 2e 20 7d 0a 20 20 20 20 20 20 = { ... }. 00037d30: 20 20 20 20 20 20 72 65 74 75 72 6e 20 36 20 2f return 6 / 00037d40: 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c * AssignmentDecl 00037d50: 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 50 72 6f 74 arationKind.Prot 00037d60: 6f 74 79 70 65 20 2a 2f 3b 0a 20 20 20 20 20 20 otype */;. 00037d70: 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 }. retu 00037d80: 72 6e 20 67 65 74 41 73 73 69 67 6e 6d 65 6e 74 rn getAssignment 00037d90: 44 65 63 6c 61 72 61 74 69 6f 6e 50 72 6f 70 65 DeclarationPrope 00037da0: 72 74 79 41 63 63 65 73 73 4b 69 6e 64 28 65 78 rtyAccessKind(ex 00037db0: 70 72 2e 6c 65 66 74 29 3b 0a 20 20 20 20 7d 0a pr.left);. }. 00037dc0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 56 function isV 00037dd0: 6f 69 64 5a 65 72 6f 28 6e 6f 64 65 29 20 7b 0a oidZero(node) {. 00037de0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 00037df0: 73 2e 69 73 56 6f 69 64 45 78 70 72 65 73 73 69 s.isVoidExpressi 00037e00: 6f 6e 28 6e 6f 64 65 29 20 26 26 20 74 73 2e 69 on(node) && ts.i 00037e10: 73 4e 75 6d 65 72 69 63 4c 69 74 65 72 61 6c 28 sNumericLiteral( 00037e20: 6e 6f 64 65 2e 65 78 70 72 65 73 73 69 6f 6e 29 node.expression) 00037e30: 20 26 26 20 6e 6f 64 65 2e 65 78 70 72 65 73 73 && node.express 00037e40: 69 6f 6e 2e 74 65 78 74 20 3d 3d 3d 20 22 30 22 ion.text === "0" 00037e50: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 2f 2a 2a 0a ;. }. /**. 00037e60: 20 20 20 20 20 2a 20 44 6f 65 73 20 6e 6f 74 20 * Does not 00037e70: 68 61 6e 64 6c 65 20 73 69 67 6e 65 64 20 6e 75 handle signed nu 00037e80: 6d 65 72 69 63 20 6e 61 6d 65 73 20 6c 69 6b 65 meric names like 00037e90: 20 60 61 5b 2b 30 5d 60 20 2d 20 68 61 6e 64 6c `a[+0]` - handl 00037ea0: 69 6e 67 20 74 68 6f 73 65 20 77 6f 75 6c 64 20 ing those would 00037eb0: 72 65 71 75 69 72 65 20 68 61 6e 64 6c 69 6e 67 require handling 00037ec0: 20 70 72 65 66 69 78 20 75 6e 61 72 79 20 65 78 prefix unary ex 00037ed0: 70 72 65 73 73 69 6f 6e 73 0a 20 20 20 20 20 2a pressions. * 00037ee0: 20 74 68 72 6f 75 67 68 6f 75 74 20 6c 61 74 65 throughout late 00037ef0: 20 62 69 6e 64 69 6e 67 20 68 61 6e 64 6c 69 6e binding handlin 00037f00: 67 20 61 73 20 77 65 6c 6c 2c 20 77 68 69 63 68 g as well, which 00037f10: 20 69 73 20 61 77 6b 77 61 72 64 20 28 62 75 74 is awkward (but 00037f20: 20 75 6c 74 69 6d 61 74 65 6c 79 20 70 72 6f 62 ultimately prob 00037f30: 61 62 6c 79 20 64 6f 61 62 6c 65 20 69 66 20 74 ably doable if t 00037f40: 68 65 72 65 20 69 73 20 64 65 6d 61 6e 64 29 0a here is demand). 00037f50: 20 20 20 20 20 2a 2f 0a 20 20 20 20 2f 2a 20 40 */. /* @ 00037f60: 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 internal */. 00037f70: 66 75 6e 63 74 69 6f 6e 20 67 65 74 45 6c 65 6d function getElem 00037f80: 65 6e 74 4f 72 50 72 6f 70 65 72 74 79 41 63 63 entOrPropertyAcc 00037f90: 65 73 73 41 72 67 75 6d 65 6e 74 45 78 70 72 65 essArgumentExpre 00037fa0: 73 73 69 6f 6e 4f 72 4e 61 6d 65 28 6e 6f 64 65 ssionOrName(node 00037fb0: 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 ) {. if ( 00037fc0: 74 73 2e 69 73 50 72 6f 70 65 72 74 79 41 63 63 ts.isPropertyAcc 00037fd0: 65 73 73 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f essExpression(no 00037fe0: 64 65 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 de)) {. 00037ff0: 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 6e return node.n 00038000: 61 6d 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 ame;. }. 00038010: 20 20 20 20 20 20 20 76 61 72 20 61 72 67 20 3d var arg = 00038020: 20 73 6b 69 70 50 61 72 65 6e 74 68 65 73 65 73 skipParentheses 00038030: 28 6e 6f 64 65 2e 61 72 67 75 6d 65 6e 74 45 78 (node.argumentEx 00038040: 70 72 65 73 73 69 6f 6e 29 3b 0a 20 20 20 20 20 pression);. 00038050: 20 20 20 69 66 20 28 74 73 2e 69 73 4e 75 6d 65 if (ts.isNume 00038060: 72 69 63 4c 69 74 65 72 61 6c 28 61 72 67 29 20 ricLiteral(arg) 00038070: 7c 7c 20 74 73 2e 69 73 53 74 72 69 6e 67 4c 69 || ts.isStringLi 00038080: 74 65 72 61 6c 4c 69 6b 65 28 61 72 67 29 29 20 teralLike(arg)) 00038090: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 {. re 000380a0: 74 75 72 6e 20 61 72 67 3b 0a 20 20 20 20 20 20 turn arg;. 000380b0: 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 }. retu 000380c0: 72 6e 20 6e 6f 64 65 3b 0a 20 20 20 20 7d 0a 20 rn node;. }. 000380d0: 20 20 20 74 73 2e 67 65 74 45 6c 65 6d 65 6e 74 ts.getElement 000380e0: 4f 72 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 OrPropertyAccess 000380f0: 41 72 67 75 6d 65 6e 74 45 78 70 72 65 73 73 69 ArgumentExpressi 00038100: 6f 6e 4f 72 4e 61 6d 65 20 3d 20 67 65 74 45 6c onOrName = getEl 00038110: 65 6d 65 6e 74 4f 72 50 72 6f 70 65 72 74 79 41 ementOrPropertyA 00038120: 63 63 65 73 73 41 72 67 75 6d 65 6e 74 45 78 70 ccessArgumentExp 00038130: 72 65 73 73 69 6f 6e 4f 72 4e 61 6d 65 3b 0a 20 ressionOrName;. 00038140: 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 45 function getE 00038150: 6c 65 6d 65 6e 74 4f 72 50 72 6f 70 65 72 74 79 lementOrProperty 00038160: 41 63 63 65 73 73 4e 61 6d 65 28 6e 6f 64 65 29 AccessName(node) 00038170: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6e {. var n 00038180: 61 6d 65 20 3d 20 67 65 74 45 6c 65 6d 65 6e 74 ame = getElement 00038190: 4f 72 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 OrPropertyAccess 000381a0: 41 72 67 75 6d 65 6e 74 45 78 70 72 65 73 73 69 ArgumentExpressi 000381b0: 6f 6e 4f 72 4e 61 6d 65 28 6e 6f 64 65 29 3b 0a onOrName(node);. 000381c0: 20 20 20 20 20 20 20 20 69 66 20 28 6e 61 6d 65 if (name 000381d0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 000381e0: 69 66 20 28 74 73 2e 69 73 49 64 65 6e 74 69 66 if (ts.isIdentif 000381f0: 69 65 72 28 6e 61 6d 65 29 29 20 7b 0a 20 20 20 ier(name)) {. 00038200: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00038210: 75 72 6e 20 6e 61 6d 65 2e 65 73 63 61 70 65 64 urn name.escaped 00038220: 54 65 78 74 3b 0a 20 20 20 20 20 20 20 20 20 20 Text;. 00038230: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }. 00038240: 69 66 20 28 74 73 2e 69 73 53 74 72 69 6e 67 4c if (ts.isStringL 00038250: 69 74 65 72 61 6c 4c 69 6b 65 28 6e 61 6d 65 29 iteralLike(name) 00038260: 20 7c 7c 20 74 73 2e 69 73 4e 75 6d 65 72 69 63 || ts.isNumeric 00038270: 4c 69 74 65 72 61 6c 28 6e 61 6d 65 29 29 20 7b Literal(name)) { 00038280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00038290: 20 72 65 74 75 72 6e 20 74 73 2e 65 73 63 61 70 return ts.escap 000382a0: 65 4c 65 61 64 69 6e 67 55 6e 64 65 72 73 63 6f eLeadingUndersco 000382b0: 72 65 73 28 6e 61 6d 65 2e 74 65 78 74 29 3b 0a res(name.text);. 000382c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. 000382d0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 000382e0: 72 65 74 75 72 6e 20 75 6e 64 65 66 69 6e 65 64 return undefined 000382f0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 ;. }. ts.g 00038300: 65 74 45 6c 65 6d 65 6e 74 4f 72 50 72 6f 70 65 etElementOrPrope 00038310: 72 74 79 41 63 63 65 73 73 4e 61 6d 65 20 3d 20 rtyAccessName = 00038320: 67 65 74 45 6c 65 6d 65 6e 74 4f 72 50 72 6f 70 getElementOrProp 00038330: 65 72 74 79 41 63 63 65 73 73 4e 61 6d 65 3b 0a ertyAccessName;. 00038340: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 function get 00038350: 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 AssignmentDeclar 00038360: 61 74 69 6f 6e 50 72 6f 70 65 72 74 79 41 63 63 ationPropertyAcc 00038370: 65 73 73 4b 69 6e 64 28 6c 68 73 29 20 7b 0a 20 essKind(lhs) {. 00038380: 20 20 20 20 20 20 20 69 66 20 28 6c 68 73 2e 65 if (lhs.e 00038390: 78 70 72 65 73 73 69 6f 6e 2e 6b 69 6e 64 20 3d xpression.kind = 000383a0: 3d 3d 20 31 30 38 20 2f 2a 20 53 79 6e 74 61 78 == 108 /* Syntax 000383b0: 4b 69 6e 64 2e 54 68 69 73 4b 65 79 77 6f 72 64 Kind.ThisKeyword 000383c0: 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 20 20 */) {. 000383d0: 20 20 20 72 65 74 75 72 6e 20 34 20 2f 2a 20 41 return 4 /* A 000383e0: 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 ssignmentDeclara 000383f0: 74 69 6f 6e 4b 69 6e 64 2e 54 68 69 73 50 72 6f tionKind.ThisPro 00038400: 70 65 72 74 79 20 2a 2f 3b 0a 20 20 20 20 20 20 perty */;. 00038410: 20 20 7d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 }. else 00038420: 20 69 66 20 28 69 73 4d 6f 64 75 6c 65 45 78 70 if (isModuleExp 00038430: 6f 72 74 73 41 63 63 65 73 73 45 78 70 72 65 73 ortsAccessExpres 00038440: 73 69 6f 6e 28 6c 68 73 29 29 20 7b 0a 20 20 20 sion(lhs)) {. 00038450: 20 20 20 20 20 20 20 20 20 2f 2f 20 6d 6f 64 75 // modu 00038460: 6c 65 2e 65 78 70 6f 72 74 73 20 3d 20 65 78 70 le.exports = exp 00038470: 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 r. re 00038480: 74 75 72 6e 20 32 20 2f 2a 20 41 73 73 69 67 6e turn 2 /* Assign 00038490: 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b mentDeclarationK 000384a0: 69 6e 64 2e 4d 6f 64 75 6c 65 45 78 70 6f 72 74 ind.ModuleExport 000384b0: 73 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 7d 0a s */;. }. 000384c0: 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 else if 000384d0: 28 69 73 42 69 6e 64 61 62 6c 65 53 74 61 74 69 (isBindableStati 000384e0: 63 4e 61 6d 65 45 78 70 72 65 73 73 69 6f 6e 28 cNameExpression( 000384f0: 6c 68 73 2e 65 78 70 72 65 73 73 69 6f 6e 2c 20 lhs.expression, 00038500: 2f 2a 65 78 63 6c 75 64 65 54 68 69 73 4b 65 79 /*excludeThisKey 00038510: 77 6f 72 64 2a 2f 20 74 72 75 65 29 29 20 7b 0a word*/ true)) {. 00038520: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if ( 00038530: 69 73 50 72 6f 74 6f 74 79 70 65 41 63 63 65 73 isPrototypeAcces 00038540: 73 28 6c 68 73 2e 65 78 70 72 65 73 73 69 6f 6e s(lhs.expression 00038550: 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 )) {. 00038560: 20 20 20 20 20 2f 2f 20 46 2e 47 2e 2e 2e 2e 70 // F.G....p 00038570: 72 6f 74 6f 74 79 70 65 2e 78 20 3d 20 65 78 70 rototype.x = exp 00038580: 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r. 00038590: 20 20 72 65 74 75 72 6e 20 33 20 2f 2a 20 41 73 return 3 /* As 000385a0: 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 signmentDeclarat 000385b0: 69 6f 6e 4b 69 6e 64 2e 50 72 6f 74 6f 74 79 70 ionKind.Prototyp 000385c0: 65 50 72 6f 70 65 72 74 79 20 2a 2f 3b 0a 20 20 eProperty */;. 000385d0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 000385e0: 20 20 20 20 20 20 20 20 76 61 72 20 6e 65 78 74 var next 000385f0: 54 6f 4c 61 73 74 20 3d 20 6c 68 73 3b 0a 20 20 ToLast = lhs;. 00038600: 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 while 00038610: 28 21 74 73 2e 69 73 49 64 65 6e 74 69 66 69 65 (!ts.isIdentifie 00038620: 72 28 6e 65 78 74 54 6f 4c 61 73 74 2e 65 78 70 r(nextToLast.exp 00038630: 72 65 73 73 69 6f 6e 29 29 20 7b 0a 20 20 20 20 ression)) {. 00038640: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 78 74 next 00038650: 54 6f 4c 61 73 74 20 3d 20 6e 65 78 74 54 6f 4c ToLast = nextToL 00038660: 61 73 74 2e 65 78 70 72 65 73 73 69 6f 6e 3b 0a ast.expression;. 00038670: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. 00038680: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 69 64 var id 00038690: 20 3d 20 6e 65 78 74 54 6f 4c 61 73 74 2e 65 78 = nextToLast.ex 000386a0: 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 20 20 20 pression;. 000386b0: 20 20 20 20 20 20 69 66 20 28 28 69 64 2e 65 73 if ((id.es 000386c0: 63 61 70 65 64 54 65 78 74 20 3d 3d 3d 20 22 65 capedText === "e 000386d0: 78 70 6f 72 74 73 22 20 7c 7c 0a 20 20 20 20 20 xports" ||. 000386e0: 20 20 20 20 20 20 20 20 20 20 20 69 64 2e 65 73 id.es 000386f0: 63 61 70 65 64 54 65 78 74 20 3d 3d 3d 20 22 6d capedText === "m 00038700: 6f 64 75 6c 65 22 20 26 26 20 67 65 74 45 6c 65 odule" && getEle 00038710: 6d 65 6e 74 4f 72 50 72 6f 70 65 72 74 79 41 63 mentOrPropertyAc 00038720: 63 65 73 73 4e 61 6d 65 28 6e 65 78 74 54 6f 4c cessName(nextToL 00038730: 61 73 74 29 20 3d 3d 3d 20 22 65 78 70 6f 72 74 ast) === "export 00038740: 73 22 29 20 26 26 0a 20 20 20 20 20 20 20 20 20 s") &&. 00038750: 20 20 20 20 20 20 20 2f 2f 20 45 78 70 6f 72 74 // Export 00038760: 73 50 72 6f 70 65 72 74 79 20 64 6f 65 73 20 6e sProperty does n 00038770: 6f 74 20 73 75 70 70 6f 72 74 20 62 69 6e 64 69 ot support bindi 00038780: 6e 67 20 77 69 74 68 20 63 6f 6d 70 75 74 65 64 ng with computed 00038790: 20 6e 61 6d 65 73 0a 20 20 20 20 20 20 20 20 20 names. 000387a0: 20 20 20 20 20 20 20 69 73 42 69 6e 64 61 62 6c isBindabl 000387b0: 65 53 74 61 74 69 63 41 63 63 65 73 73 45 78 70 eStaticAccessExp 000387c0: 72 65 73 73 69 6f 6e 28 6c 68 73 29 29 20 7b 0a ression(lhs)) {. 000387d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000387e0: 2f 2f 20 65 78 70 6f 72 74 73 2e 6e 61 6d 65 20 // exports.name 000387f0: 3d 20 65 78 70 72 20 4f 52 20 6d 6f 64 75 6c 65 = expr OR module 00038800: 2e 65 78 70 6f 72 74 73 2e 6e 61 6d 65 20 3d 20 .exports.name = 00038810: 65 78 70 72 20 4f 52 20 65 78 70 6f 72 74 73 5b expr OR exports[ 00038820: 22 6e 61 6d 65 22 5d 20 3d 20 65 78 70 72 20 2e "name"] = expr . 00038830: 2e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ... 00038840: 20 20 20 72 65 74 75 72 6e 20 31 20 2f 2a 20 41 return 1 /* A 00038850: 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 ssignmentDeclara 00038860: 74 69 6f 6e 4b 69 6e 64 2e 45 78 70 6f 72 74 73 tionKind.Exports 00038870: 50 72 6f 70 65 72 74 79 20 2a 2f 3b 0a 20 20 20 Property */;. 00038880: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 00038890: 20 20 20 20 20 20 20 69 66 20 28 69 73 42 69 6e if (isBin 000388a0: 64 61 62 6c 65 53 74 61 74 69 63 4e 61 6d 65 45 dableStaticNameE 000388b0: 78 70 72 65 73 73 69 6f 6e 28 6c 68 73 2c 20 2f xpression(lhs, / 000388c0: 2a 65 78 63 6c 75 64 65 54 68 69 73 4b 65 79 77 *excludeThisKeyw 000388d0: 6f 72 64 2a 2f 20 74 72 75 65 29 20 7c 7c 20 28 ord*/ true) || ( 000388e0: 74 73 2e 69 73 45 6c 65 6d 65 6e 74 41 63 63 65 ts.isElementAcce 000388f0: 73 73 45 78 70 72 65 73 73 69 6f 6e 28 6c 68 73 ssExpression(lhs 00038900: 29 20 26 26 20 69 73 44 79 6e 61 6d 69 63 4e 61 ) && isDynamicNa 00038910: 6d 65 28 6c 68 73 29 29 29 20 7b 0a 20 20 20 20 me(lhs))) {. 00038920: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 46 // F 00038930: 2e 47 2e 2e 2e 78 20 3d 20 65 78 70 72 0a 20 20 .G...x = expr. 00038940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00038950: 74 75 72 6e 20 35 20 2f 2a 20 41 73 73 69 67 6e turn 5 /* Assign 00038960: 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b mentDeclarationK 00038970: 69 6e 64 2e 50 72 6f 70 65 72 74 79 20 2a 2f 3b ind.Property */; 00038980: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 . }. 00038990: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 000389a0: 20 72 65 74 75 72 6e 20 30 20 2f 2a 20 41 73 73 return 0 /* Ass 000389b0: 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 ignmentDeclarati 000389c0: 6f 6e 4b 69 6e 64 2e 4e 6f 6e 65 20 2a 2f 3b 0a onKind.None */;. 000389d0: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 }. ts.get 000389e0: 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 AssignmentDeclar 000389f0: 61 74 69 6f 6e 50 72 6f 70 65 72 74 79 41 63 63 ationPropertyAcc 00038a00: 65 73 73 4b 69 6e 64 20 3d 20 67 65 74 41 73 73 essKind = getAss 00038a10: 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 ignmentDeclarati 00038a20: 6f 6e 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 onPropertyAccess 00038a30: 4b 69 6e 64 3b 0a 20 20 20 20 66 75 6e 63 74 69 Kind;. functi 00038a40: 6f 6e 20 67 65 74 49 6e 69 74 69 61 6c 69 7a 65 on getInitialize 00038a50: 72 4f 66 42 69 6e 61 72 79 45 78 70 72 65 73 73 rOfBinaryExpress 00038a60: 69 6f 6e 28 65 78 70 72 29 20 7b 0a 20 20 20 20 ion(expr) {. 00038a70: 20 20 20 20 77 68 69 6c 65 20 28 74 73 2e 69 73 while (ts.is 00038a80: 42 69 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e BinaryExpression 00038a90: 28 65 78 70 72 2e 72 69 67 68 74 29 29 20 7b 0a (expr.right)) {. 00038aa0: 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 72 expr 00038ab0: 20 3d 20 65 78 70 72 2e 72 69 67 68 74 3b 0a 20 = expr.right;. 00038ac0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00038ad0: 20 72 65 74 75 72 6e 20 65 78 70 72 2e 72 69 67 return expr.rig 00038ae0: 68 74 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 ht;. }. ts 00038af0: 2e 67 65 74 49 6e 69 74 69 61 6c 69 7a 65 72 4f .getInitializerO 00038b00: 66 42 69 6e 61 72 79 45 78 70 72 65 73 73 69 6f fBinaryExpressio 00038b10: 6e 20 3d 20 67 65 74 49 6e 69 74 69 61 6c 69 7a n = getInitializ 00038b20: 65 72 4f 66 42 69 6e 61 72 79 45 78 70 72 65 73 erOfBinaryExpres 00038b30: 73 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 sion;. functi 00038b40: 6f 6e 20 69 73 50 72 6f 74 6f 74 79 70 65 50 72 on isPrototypePr 00038b50: 6f 70 65 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 opertyAssignment 00038b60: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 00038b70: 20 72 65 74 75 72 6e 20 74 73 2e 69 73 42 69 6e return ts.isBin 00038b80: 61 72 79 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f aryExpression(no 00038b90: 64 65 29 20 26 26 20 67 65 74 41 73 73 69 67 6e de) && getAssign 00038ba0: 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b mentDeclarationK 00038bb0: 69 6e 64 28 6e 6f 64 65 29 20 3d 3d 3d 20 33 20 ind(node) === 3 00038bc0: 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 /* AssignmentDec 00038bd0: 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 50 72 6f larationKind.Pro 00038be0: 74 6f 74 79 70 65 50 72 6f 70 65 72 74 79 20 2a totypeProperty * 00038bf0: 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e /;. }. ts. 00038c00: 69 73 50 72 6f 74 6f 74 79 70 65 50 72 6f 70 65 isPrototypePrope 00038c10: 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 20 3d 20 rtyAssignment = 00038c20: 69 73 50 72 6f 74 6f 74 79 70 65 50 72 6f 70 65 isPrototypePrope 00038c30: 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 3b 0a 20 rtyAssignment;. 00038c40: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 70 function isSp 00038c50: 65 63 69 61 6c 50 72 6f 70 65 72 74 79 44 65 63 ecialPropertyDec 00038c60: 6c 61 72 61 74 69 6f 6e 28 65 78 70 72 29 20 7b laration(expr) { 00038c70: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 00038c80: 69 73 49 6e 4a 53 46 69 6c 65 28 65 78 70 72 29 isInJSFile(expr) 00038c90: 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 &&. 00038ca0: 65 78 70 72 2e 70 61 72 65 6e 74 20 26 26 20 65 expr.parent && e 00038cb0: 78 70 72 2e 70 61 72 65 6e 74 2e 6b 69 6e 64 20 xpr.parent.kind 00038cc0: 3d 3d 3d 20 32 33 38 20 2f 2a 20 53 79 6e 74 61 === 238 /* Synta 00038cd0: 78 4b 69 6e 64 2e 45 78 70 72 65 73 73 69 6f 6e xKind.Expression 00038ce0: 53 74 61 74 65 6d 65 6e 74 20 2a 2f 20 26 26 0a Statement */ &&. 00038cf0: 20 20 20 20 20 20 20 20 20 20 20 20 28 21 74 73 (!ts 00038d00: 2e 69 73 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 .isElementAccess 00038d10: 45 78 70 72 65 73 73 69 6f 6e 28 65 78 70 72 29 Expression(expr) 00038d20: 20 7c 7c 20 69 73 4c 69 74 65 72 61 6c 4c 69 6b || isLiteralLik 00038d30: 65 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 28 65 eElementAccess(e 00038d40: 78 70 72 29 29 20 26 26 0a 20 20 20 20 20 20 20 xpr)) &&. 00038d50: 20 20 20 20 20 21 21 74 73 2e 67 65 74 4a 53 44 !!ts.getJSD 00038d60: 6f 63 54 79 70 65 54 61 67 28 65 78 70 72 2e 70 ocTypeTag(expr.p 00038d70: 61 72 65 6e 74 29 3b 0a 20 20 20 20 7d 0a 20 20 arent);. }. 00038d80: 20 20 74 73 2e 69 73 53 70 65 63 69 61 6c 50 72 ts.isSpecialPr 00038d90: 6f 70 65 72 74 79 44 65 63 6c 61 72 61 74 69 6f opertyDeclaratio 00038da0: 6e 20 3d 20 69 73 53 70 65 63 69 61 6c 50 72 6f n = isSpecialPro 00038db0: 70 65 72 74 79 44 65 63 6c 61 72 61 74 69 6f 6e pertyDeclaration 00038dc0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 73 ;. function s 00038dd0: 65 74 56 61 6c 75 65 44 65 63 6c 61 72 61 74 69 etValueDeclarati 00038de0: 6f 6e 28 73 79 6d 62 6f 6c 2c 20 6e 6f 64 65 29 on(symbol, node) 00038df0: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 76 {. var v 00038e00: 61 6c 75 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 alueDeclaration 00038e10: 3d 20 73 79 6d 62 6f 6c 2e 76 61 6c 75 65 44 65 = symbol.valueDe 00038e20: 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 20 20 claration;. 00038e30: 20 20 20 69 66 20 28 21 76 61 6c 75 65 44 65 63 if (!valueDec 00038e40: 6c 61 72 61 74 69 6f 6e 20 7c 7c 0a 20 20 20 20 laration ||. 00038e50: 20 20 20 20 20 20 20 20 21 28 6e 6f 64 65 2e 66 !(node.f 00038e60: 6c 61 67 73 20 26 20 31 36 37 37 37 32 31 36 20 lags & 16777216 00038e70: 2f 2a 20 4e 6f 64 65 46 6c 61 67 73 2e 41 6d 62 /* NodeFlags.Amb 00038e80: 69 65 6e 74 20 2a 2f 20 26 26 20 21 28 76 61 6c ient */ && !(val 00038e90: 75 65 44 65 63 6c 61 72 61 74 69 6f 6e 2e 66 6c ueDeclaration.fl 00038ea0: 61 67 73 20 26 20 31 36 37 37 37 32 31 36 20 2f ags & 16777216 / 00038eb0: 2a 20 4e 6f 64 65 46 6c 61 67 73 2e 41 6d 62 69 * NodeFlags.Ambi 00038ec0: 65 6e 74 20 2a 2f 29 29 20 26 26 0a 20 20 20 20 ent */)) &&. 00038ed0: 20 20 20 20 20 20 20 20 20 20 20 20 28 69 73 41 (isA 00038ee0: 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 ssignmentDeclara 00038ef0: 74 69 6f 6e 28 76 61 6c 75 65 44 65 63 6c 61 72 tion(valueDeclar 00038f00: 61 74 69 6f 6e 29 20 26 26 20 21 69 73 41 73 73 ation) && !isAss 00038f10: 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 ignmentDeclarati 00038f20: 6f 6e 28 6e 6f 64 65 29 29 20 7c 7c 0a 20 20 20 on(node)) ||. 00038f30: 20 20 20 20 20 20 20 20 20 28 76 61 6c 75 65 44 (valueD 00038f40: 65 63 6c 61 72 61 74 69 6f 6e 2e 6b 69 6e 64 20 eclaration.kind 00038f50: 21 3d 3d 20 6e 6f 64 65 2e 6b 69 6e 64 20 26 26 !== node.kind && 00038f60: 20 69 73 45 66 66 65 63 74 69 76 65 4d 6f 64 75 isEffectiveModu 00038f70: 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 76 61 leDeclaration(va 00038f80: 6c 75 65 44 65 63 6c 61 72 61 74 69 6f 6e 29 29 lueDeclaration)) 00038f90: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 00038fa0: 2f 2f 20 6f 74 68 65 72 20 6b 69 6e 64 73 20 6f // other kinds o 00038fb0: 66 20 76 61 6c 75 65 20 64 65 63 6c 61 72 61 74 f value declarat 00038fc0: 69 6f 6e 73 20 74 61 6b 65 20 70 72 65 63 65 64 ions take preced 00038fd0: 65 6e 63 65 20 6f 76 65 72 20 6d 6f 64 75 6c 65 ence over module 00038fe0: 73 20 61 6e 64 20 61 73 73 69 67 6e 6d 65 6e 74 s and assignment 00038ff0: 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0a 20 20 declarations. 00039000: 20 20 20 20 20 20 20 20 20 20 73 79 6d 62 6f 6c symbol 00039010: 2e 76 61 6c 75 65 44 65 63 6c 61 72 61 74 69 6f .valueDeclaratio 00039020: 6e 20 3d 20 6e 6f 64 65 3b 0a 20 20 20 20 20 20 n = node;. 00039030: 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 }. }. ts 00039040: 2e 73 65 74 56 61 6c 75 65 44 65 63 6c 61 72 61 .setValueDeclara 00039050: 74 69 6f 6e 20 3d 20 73 65 74 56 61 6c 75 65 44 tion = setValueD 00039060: 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 20 eclaration;. 00039070: 66 75 6e 63 74 69 6f 6e 20 69 73 46 75 6e 63 74 function isFunct 00039080: 69 6f 6e 53 79 6d 62 6f 6c 28 73 79 6d 62 6f 6c ionSymbol(symbol 00039090: 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 ) {. if ( 000390a0: 21 73 79 6d 62 6f 6c 20 7c 7c 20 21 73 79 6d 62 !symbol || !symb 000390b0: 6f 6c 2e 76 61 6c 75 65 44 65 63 6c 61 72 61 74 ol.valueDeclarat 000390c0: 69 6f 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ion) {. 000390d0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b return false; 000390e0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }. 000390f0: 20 20 20 76 61 72 20 64 65 63 6c 20 3d 20 73 79 var decl = sy 00039100: 6d 62 6f 6c 2e 76 61 6c 75 65 44 65 63 6c 61 72 mbol.valueDeclar 00039110: 61 74 69 6f 6e 3b 0a 20 20 20 20 20 20 20 20 72 ation;. r 00039120: 65 74 75 72 6e 20 64 65 63 6c 2e 6b 69 6e 64 20 eturn decl.kind 00039130: 3d 3d 3d 20 32 35 36 20 2f 2a 20 53 79 6e 74 61 === 256 /* Synta 00039140: 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 44 65 xKind.FunctionDe 00039150: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 20 7c 7c 20 claration */ || 00039160: 74 73 2e 69 73 56 61 72 69 61 62 6c 65 44 65 63 ts.isVariableDec 00039170: 6c 61 72 61 74 69 6f 6e 28 64 65 63 6c 29 20 26 laration(decl) & 00039180: 26 20 64 65 63 6c 2e 69 6e 69 74 69 61 6c 69 7a & decl.initializ 00039190: 65 72 20 26 26 20 74 73 2e 69 73 46 75 6e 63 74 er && ts.isFunct 000391a0: 69 6f 6e 4c 69 6b 65 28 64 65 63 6c 2e 69 6e 69 ionLike(decl.ini 000391b0: 74 69 61 6c 69 7a 65 72 29 3b 0a 20 20 20 20 7d tializer);. } 000391c0: 0a 20 20 20 20 74 73 2e 69 73 46 75 6e 63 74 69 . ts.isFuncti 000391d0: 6f 6e 53 79 6d 62 6f 6c 20 3d 20 69 73 46 75 6e onSymbol = isFun 000391e0: 63 74 69 6f 6e 53 79 6d 62 6f 6c 3b 0a 20 20 20 ctionSymbol;. 000391f0: 20 66 75 6e 63 74 69 6f 6e 20 74 72 79 47 65 74 function tryGet 00039200: 4d 6f 64 75 6c 65 53 70 65 63 69 66 69 65 72 46 ModuleSpecifierF 00039210: 72 6f 6d 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e romDeclaration(n 00039220: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 ode) {. v 00039230: 61 72 20 5f 61 2c 20 5f 62 3b 0a 20 20 20 20 20 ar _a, _b;. 00039240: 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e switch (node. 00039250: 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 kind) {. 00039260: 20 20 20 20 63 61 73 65 20 32 35 34 20 2f 2a 20 case 254 /* 00039270: 53 79 6e 74 61 78 4b 69 6e 64 2e 56 61 72 69 61 SyntaxKind.Varia 00039280: 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a bleDeclaration * 00039290: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 000392a0: 20 20 20 72 65 74 75 72 6e 20 28 5f 61 20 3d 20 return (_a = 000392b0: 74 73 2e 66 69 6e 64 41 6e 63 65 73 74 6f 72 28 ts.findAncestor( 000392c0: 6e 6f 64 65 2e 69 6e 69 74 69 61 6c 69 7a 65 72 node.initializer 000392d0: 2c 20 66 75 6e 63 74 69 6f 6e 20 28 6e 6f 64 65 , function (node 000392e0: 29 20 7b 20 72 65 74 75 72 6e 20 69 73 52 65 71 ) { return isReq 000392f0: 75 69 72 65 43 61 6c 6c 28 6e 6f 64 65 2c 20 2f uireCall(node, / 00039300: 2a 72 65 71 75 69 72 65 53 74 72 69 6e 67 4c 69 *requireStringLi 00039310: 74 65 72 61 6c 4c 69 6b 65 41 72 67 75 6d 65 6e teralLikeArgumen 00039320: 74 2a 2f 20 74 72 75 65 29 3b 20 7d 29 29 20 3d t*/ true); })) = 00039330: 3d 3d 20 6e 75 6c 6c 20 7c 7c 20 5f 61 20 3d 3d == null || _a == 00039340: 3d 20 76 6f 69 64 20 30 20 3f 20 76 6f 69 64 20 = void 0 ? void 00039350: 30 20 3a 20 5f 61 2e 61 72 67 75 6d 65 6e 74 73 0 : _a.arguments 00039360: 5b 30 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 [0];. 00039370: 20 63 61 73 65 20 32 36 36 20 2f 2a 20 53 79 6e case 266 /* Syn 00039380: 74 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 44 65 taxKind.ImportDe 00039390: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 000393a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 000393b0: 74 75 72 6e 20 74 73 2e 74 72 79 43 61 73 74 28 turn ts.tryCast( 000393c0: 6e 6f 64 65 2e 6d 6f 64 75 6c 65 53 70 65 63 69 node.moduleSpeci 000393d0: 66 69 65 72 2c 20 74 73 2e 69 73 53 74 72 69 6e fier, ts.isStrin 000393e0: 67 4c 69 74 65 72 61 6c 4c 69 6b 65 29 3b 0a 20 gLiteralLike);. 000393f0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00039400: 32 36 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 265 /* SyntaxKin 00039410: 64 2e 49 6d 70 6f 72 74 45 71 75 61 6c 73 44 65 d.ImportEqualsDe 00039420: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 00039430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00039440: 74 75 72 6e 20 74 73 2e 74 72 79 43 61 73 74 28 turn ts.tryCast( 00039450: 28 5f 62 20 3d 20 74 73 2e 74 72 79 43 61 73 74 (_b = ts.tryCast 00039460: 28 6e 6f 64 65 2e 6d 6f 64 75 6c 65 52 65 66 65 (node.moduleRefe 00039470: 72 65 6e 63 65 2c 20 74 73 2e 69 73 45 78 74 65 rence, ts.isExte 00039480: 72 6e 61 6c 4d 6f 64 75 6c 65 52 65 66 65 72 65 rnalModuleRefere 00039490: 6e 63 65 29 29 20 3d 3d 3d 20 6e 75 6c 6c 20 7c nce)) === null | 000394a0: 7c 20 5f 62 20 3d 3d 3d 20 76 6f 69 64 20 30 20 | _b === void 0 000394b0: 3f 20 76 6f 69 64 20 30 20 3a 20 5f 62 2e 65 78 ? void 0 : _b.ex 000394c0: 70 72 65 73 73 69 6f 6e 2c 20 74 73 2e 69 73 53 pression, ts.isS 000394d0: 74 72 69 6e 67 4c 69 74 65 72 61 6c 4c 69 6b 65 tringLiteralLike 000394e0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 );. d 000394f0: 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 efault:. 00039500: 20 20 20 20 20 20 20 20 74 73 2e 44 65 62 75 67 ts.Debug 00039510: 2e 61 73 73 65 72 74 4e 65 76 65 72 28 6e 6f 64 .assertNever(nod 00039520: 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 e);. }. 00039530: 20 20 7d 0a 20 20 20 20 74 73 2e 74 72 79 47 65 }. ts.tryGe 00039540: 74 4d 6f 64 75 6c 65 53 70 65 63 69 66 69 65 72 tModuleSpecifier 00039550: 46 72 6f 6d 44 65 63 6c 61 72 61 74 69 6f 6e 20 FromDeclaration 00039560: 3d 20 74 72 79 47 65 74 4d 6f 64 75 6c 65 53 70 = tryGetModuleSp 00039570: 65 63 69 66 69 65 72 46 72 6f 6d 44 65 63 6c 61 ecifierFromDecla 00039580: 72 61 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 ration;. func 00039590: 74 69 6f 6e 20 69 6d 70 6f 72 74 46 72 6f 6d 4d tion importFromM 000395a0: 6f 64 75 6c 65 53 70 65 63 69 66 69 65 72 28 6e oduleSpecifier(n 000395b0: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 000395c0: 65 74 75 72 6e 20 74 72 79 47 65 74 49 6d 70 6f eturn tryGetImpo 000395d0: 72 74 46 72 6f 6d 4d 6f 64 75 6c 65 53 70 65 63 rtFromModuleSpec 000395e0: 69 66 69 65 72 28 6e 6f 64 65 29 20 7c 7c 20 74 ifier(node) || t 000395f0: 73 2e 44 65 62 75 67 2e 66 61 69 6c 42 61 64 53 s.Debug.failBadS 00039600: 79 6e 74 61 78 4b 69 6e 64 28 6e 6f 64 65 2e 70 yntaxKind(node.p 00039610: 61 72 65 6e 74 29 3b 0a 20 20 20 20 7d 0a 20 20 arent);. }. 00039620: 20 20 74 73 2e 69 6d 70 6f 72 74 46 72 6f 6d 4d ts.importFromM 00039630: 6f 64 75 6c 65 53 70 65 63 69 66 69 65 72 20 3d oduleSpecifier = 00039640: 20 69 6d 70 6f 72 74 46 72 6f 6d 4d 6f 64 75 6c importFromModul 00039650: 65 53 70 65 63 69 66 69 65 72 3b 0a 20 20 20 20 eSpecifier;. 00039660: 66 75 6e 63 74 69 6f 6e 20 74 72 79 47 65 74 49 function tryGetI 00039670: 6d 70 6f 72 74 46 72 6f 6d 4d 6f 64 75 6c 65 53 mportFromModuleS 00039680: 70 65 63 69 66 69 65 72 28 6e 6f 64 65 29 20 7b pecifier(node) { 00039690: 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 . switch 000396a0: 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b 69 6e (node.parent.kin 000396b0: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 d) {. 000396c0: 20 63 61 73 65 20 32 36 36 20 2f 2a 20 53 79 6e case 266 /* Syn 000396d0: 74 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 44 65 taxKind.ImportDe 000396e0: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 000396f0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 00039700: 37 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 72 /* SyntaxKind 00039710: 2e 45 78 70 6f 72 74 44 65 63 6c 61 72 61 74 69 .ExportDeclarati 00039720: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 00039730: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 00039740: 64 65 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 de.parent;. 00039750: 20 20 20 20 20 20 20 63 61 73 65 20 32 37 37 20 case 277 00039760: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 78 /* SyntaxKind.Ex 00039770: 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 52 65 66 65 ternalModuleRefe 00039780: 72 65 6e 63 65 20 2a 2f 3a 0a 20 20 20 20 20 20 rence */:. 00039790: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 000397a0: 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 70 61 72 node.parent.par 000397b0: 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ent;. 000397c0: 20 63 61 73 65 20 32 30 38 20 2f 2a 20 53 79 6e case 208 /* Syn 000397d0: 74 61 78 4b 69 6e 64 2e 43 61 6c 6c 45 78 70 72 taxKind.CallExpr 000397e0: 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ession */:. 000397f0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00039800: 6e 20 69 73 49 6d 70 6f 72 74 43 61 6c 6c 28 6e n isImportCall(n 00039810: 6f 64 65 2e 70 61 72 65 6e 74 29 20 7c 7c 20 69 ode.parent) || i 00039820: 73 52 65 71 75 69 72 65 43 61 6c 6c 28 6e 6f 64 sRequireCall(nod 00039830: 65 2e 70 61 72 65 6e 74 2c 20 2f 2a 63 68 65 63 e.parent, /*chec 00039840: 6b 41 72 67 2a 2f 20 66 61 6c 73 65 29 20 3f 20 kArg*/ false) ? 00039850: 6e 6f 64 65 2e 70 61 72 65 6e 74 20 3a 20 75 6e node.parent : un 00039860: 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 defined;. 00039870: 20 20 20 20 20 63 61 73 65 20 31 39 36 20 2f 2a case 196 /* 00039880: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4c 69 74 65 SyntaxKind.Lite 00039890: 72 61 6c 54 79 70 65 20 2a 2f 3a 0a 20 20 20 20 ralType */:. 000398a0: 20 20 20 20 20 20 20 20 20 20 20 20 74 73 2e 44 ts.D 000398b0: 65 62 75 67 2e 61 73 73 65 72 74 28 74 73 2e 69 ebug.assert(ts.i 000398c0: 73 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 28 6e sStringLiteral(n 000398d0: 6f 64 65 29 29 3b 0a 20 20 20 20 20 20 20 20 20 ode));. 000398e0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 return ts 000398f0: 2e 74 72 79 43 61 73 74 28 6e 6f 64 65 2e 70 61 .tryCast(node.pa 00039900: 72 65 6e 74 2e 70 61 72 65 6e 74 2c 20 74 73 2e rent.parent, ts. 00039910: 69 73 49 6d 70 6f 72 74 54 79 70 65 4e 6f 64 65 isImportTypeNode 00039920: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 );. d 00039930: 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 efault:. 00039940: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 return u 00039950: 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 ndefined;. 00039960: 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 }. }. ts 00039970: 2e 74 72 79 47 65 74 49 6d 70 6f 72 74 46 72 6f .tryGetImportFro 00039980: 6d 4d 6f 64 75 6c 65 53 70 65 63 69 66 69 65 72 mModuleSpecifier 00039990: 20 3d 20 74 72 79 47 65 74 49 6d 70 6f 72 74 46 = tryGetImportF 000399a0: 72 6f 6d 4d 6f 64 75 6c 65 53 70 65 63 69 66 69 romModuleSpecifi 000399b0: 65 72 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e er;. function 000399c0: 20 67 65 74 45 78 74 65 72 6e 61 6c 4d 6f 64 75 getExternalModu 000399d0: 6c 65 4e 61 6d 65 28 6e 6f 64 65 29 20 7b 0a 20 leName(node) {. 000399e0: 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 6e switch (n 000399f0: 6f 64 65 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 ode.kind) {. 00039a00: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 36 36 case 266 00039a10: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 /* SyntaxKind.I 00039a20: 6d 70 6f 72 74 44 65 63 6c 61 72 61 74 69 6f 6e mportDeclaration 00039a30: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00039a40: 20 63 61 73 65 20 32 37 32 20 2f 2a 20 53 79 6e case 272 /* Syn 00039a50: 74 61 78 4b 69 6e 64 2e 45 78 70 6f 72 74 44 65 taxKind.ExportDe 00039a60: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 00039a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00039a80: 74 75 72 6e 20 6e 6f 64 65 2e 6d 6f 64 75 6c 65 turn node.module 00039a90: 53 70 65 63 69 66 69 65 72 3b 0a 20 20 20 20 20 Specifier;. 00039aa0: 20 20 20 20 20 20 20 63 61 73 65 20 32 36 35 20 case 265 00039ab0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d /* SyntaxKind.Im 00039ac0: 70 6f 72 74 45 71 75 61 6c 73 44 65 63 6c 61 72 portEqualsDeclar 00039ad0: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 00039ae0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00039af0: 20 6e 6f 64 65 2e 6d 6f 64 75 6c 65 52 65 66 65 node.moduleRefe 00039b00: 72 65 6e 63 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 rence.kind === 2 00039b10: 37 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 77 /* SyntaxKind 00039b20: 2e 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 52 .ExternalModuleR 00039b30: 65 66 65 72 65 6e 63 65 20 2a 2f 20 3f 20 6e 6f eference */ ? no 00039b40: 64 65 2e 6d 6f 64 75 6c 65 52 65 66 65 72 65 6e de.moduleReferen 00039b50: 63 65 2e 65 78 70 72 65 73 73 69 6f 6e 20 3a 20 ce.expression : 00039b60: 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 undefined;. 00039b70: 20 20 20 20 20 20 20 63 61 73 65 20 32 30 30 20 case 200 00039b80: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d /* SyntaxKind.Im 00039b90: 70 6f 72 74 54 79 70 65 20 2a 2f 3a 0a 20 20 20 portType */:. 00039ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00039bb0: 75 72 6e 20 69 73 4c 69 74 65 72 61 6c 49 6d 70 urn isLiteralImp 00039bc0: 6f 72 74 54 79 70 65 4e 6f 64 65 28 6e 6f 64 65 ortTypeNode(node 00039bd0: 29 20 3f 20 6e 6f 64 65 2e 61 72 67 75 6d 65 6e ) ? node.argumen 00039be0: 74 2e 6c 69 74 65 72 61 6c 20 3a 20 75 6e 64 65 t.literal : unde 00039bf0: 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 20 fined;. 00039c00: 20 20 20 63 61 73 65 20 32 30 38 20 2f 2a 20 53 case 208 /* S 00039c10: 79 6e 74 61 78 4b 69 6e 64 2e 43 61 6c 6c 45 78 yntaxKind.CallEx 00039c20: 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 pression */:. 00039c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00039c40: 75 72 6e 20 6e 6f 64 65 2e 61 72 67 75 6d 65 6e urn node.argumen 00039c50: 74 73 5b 30 5d 3b 0a 20 20 20 20 20 20 20 20 20 ts[0];. 00039c60: 20 20 20 63 61 73 65 20 32 36 31 20 2f 2a 20 53 case 261 /* S 00039c70: 79 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 75 6c 65 yntaxKind.Module 00039c80: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a Declaration */:. 00039c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00039ca0: 72 65 74 75 72 6e 20 6e 6f 64 65 2e 6e 61 6d 65 return node.name 00039cb0: 2e 6b 69 6e 64 20 3d 3d 3d 20 31 30 20 2f 2a 20 .kind === 10 /* 00039cc0: 53 79 6e 74 61 78 4b 69 6e 64 2e 53 74 72 69 6e SyntaxKind.Strin 00039cd0: 67 4c 69 74 65 72 61 6c 20 2a 2f 20 3f 20 6e 6f gLiteral */ ? no 00039ce0: 64 65 2e 6e 61 6d 65 20 3a 20 75 6e 64 65 66 69 de.name : undefi 00039cf0: 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ned;. 00039d00: 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 default:. 00039d10: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00039d20: 20 74 73 2e 44 65 62 75 67 2e 61 73 73 65 72 74 ts.Debug.assert 00039d30: 4e 65 76 65 72 28 6e 6f 64 65 29 3b 0a 20 20 20 Never(node);. 00039d40: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 }. }. 00039d50: 20 74 73 2e 67 65 74 45 78 74 65 72 6e 61 6c 4d ts.getExternalM 00039d60: 6f 64 75 6c 65 4e 61 6d 65 20 3d 20 67 65 74 45 oduleName = getE 00039d70: 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 4e 61 6d xternalModuleNam 00039d80: 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 e;. function 00039d90: 67 65 74 4e 61 6d 65 73 70 61 63 65 44 65 63 6c getNamespaceDecl 00039da0: 61 72 61 74 69 6f 6e 4e 6f 64 65 28 6e 6f 64 65 arationNode(node 00039db0: 29 20 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 ) {. swit 00039dc0: 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 7b ch (node.kind) { 00039dd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00039de0: 65 20 32 36 36 20 2f 2a 20 53 79 6e 74 61 78 4b e 266 /* SyntaxK 00039df0: 69 6e 64 2e 49 6d 70 6f 72 74 44 65 63 6c 61 72 ind.ImportDeclar 00039e00: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 00039e10: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00039e20: 20 6e 6f 64 65 2e 69 6d 70 6f 72 74 43 6c 61 75 node.importClau 00039e30: 73 65 20 26 26 20 74 73 2e 74 72 79 43 61 73 74 se && ts.tryCast 00039e40: 28 6e 6f 64 65 2e 69 6d 70 6f 72 74 43 6c 61 75 (node.importClau 00039e50: 73 65 2e 6e 61 6d 65 64 42 69 6e 64 69 6e 67 73 se.namedBindings 00039e60: 2c 20 74 73 2e 69 73 4e 61 6d 65 73 70 61 63 65 , ts.isNamespace 00039e70: 49 6d 70 6f 72 74 29 3b 0a 20 20 20 20 20 20 20 Import);. 00039e80: 20 20 20 20 20 63 61 73 65 20 32 36 35 20 2f 2a case 265 /* 00039e90: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d 70 6f SyntaxKind.Impo 00039ea0: 72 74 45 71 75 61 6c 73 44 65 63 6c 61 72 61 74 rtEqualsDeclarat 00039eb0: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 00039ec0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e return n 00039ed0: 6f 64 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ode;. 00039ee0: 20 63 61 73 65 20 32 37 32 20 2f 2a 20 53 79 6e case 272 /* Syn 00039ef0: 74 61 78 4b 69 6e 64 2e 45 78 70 6f 72 74 44 65 taxKind.ExportDe 00039f00: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 00039f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00039f20: 74 75 72 6e 20 6e 6f 64 65 2e 65 78 70 6f 72 74 turn node.export 00039f30: 43 6c 61 75 73 65 20 26 26 20 74 73 2e 74 72 79 Clause && ts.try 00039f40: 43 61 73 74 28 6e 6f 64 65 2e 65 78 70 6f 72 74 Cast(node.export 00039f50: 43 6c 61 75 73 65 2c 20 74 73 2e 69 73 4e 61 6d Clause, ts.isNam 00039f60: 65 73 70 61 63 65 45 78 70 6f 72 74 29 3b 0a 20 espaceExport);. 00039f70: 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 defau 00039f80: 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 lt:. 00039f90: 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 44 65 return ts.De 00039fa0: 62 75 67 2e 61 73 73 65 72 74 4e 65 76 65 72 28 bug.assertNever( 00039fb0: 6e 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 20 7d node);. } 00039fc0: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 . }. ts.ge 00039fd0: 74 4e 61 6d 65 73 70 61 63 65 44 65 63 6c 61 72 tNamespaceDeclar 00039fe0: 61 74 69 6f 6e 4e 6f 64 65 20 3d 20 67 65 74 4e ationNode = getN 00039ff0: 61 6d 65 73 70 61 63 65 44 65 63 6c 61 72 61 74 amespaceDeclarat 0003a000: 69 6f 6e 4e 6f 64 65 3b 0a 20 20 20 20 66 75 6e ionNode;. fun 0003a010: 63 74 69 6f 6e 20 69 73 44 65 66 61 75 6c 74 49 ction isDefaultI 0003a020: 6d 70 6f 72 74 28 6e 6f 64 65 29 20 7b 0a 20 20 mport(node) {. 0003a030: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 return nod 0003a040: 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 36 36 20 2f e.kind === 266 / 0003a050: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d 70 * SyntaxKind.Imp 0003a060: 6f 72 74 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a ortDeclaration * 0003a070: 2f 20 26 26 20 21 21 6e 6f 64 65 2e 69 6d 70 6f / && !!node.impo 0003a080: 72 74 43 6c 61 75 73 65 20 26 26 20 21 21 6e 6f rtClause && !!no 0003a090: 64 65 2e 69 6d 70 6f 72 74 43 6c 61 75 73 65 2e de.importClause. 0003a0a0: 6e 61 6d 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 name;. }. 0003a0b0: 74 73 2e 69 73 44 65 66 61 75 6c 74 49 6d 70 6f ts.isDefaultImpo 0003a0c0: 72 74 20 3d 20 69 73 44 65 66 61 75 6c 74 49 6d rt = isDefaultIm 0003a0d0: 70 6f 72 74 3b 0a 20 20 20 20 66 75 6e 63 74 69 port;. functi 0003a0e0: 6f 6e 20 66 6f 72 45 61 63 68 49 6d 70 6f 72 74 on forEachImport 0003a0f0: 43 6c 61 75 73 65 44 65 63 6c 61 72 61 74 69 6f ClauseDeclaratio 0003a100: 6e 28 6e 6f 64 65 2c 20 61 63 74 69 6f 6e 29 20 n(node, action) 0003a110: 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f {. if (no 0003a120: 64 65 2e 6e 61 6d 65 29 20 7b 0a 20 20 20 20 20 de.name) {. 0003a130: 20 20 20 20 20 20 20 76 61 72 20 72 65 73 75 6c var resul 0003a140: 74 20 3d 20 61 63 74 69 6f 6e 28 6e 6f 64 65 29 t = action(node) 0003a150: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 ;. if 0003a160: 20 28 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 (result). 0003a170: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 0003a180: 20 72 65 73 75 6c 74 3b 0a 20 20 20 20 20 20 20 result;. 0003a190: 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e }. if (n 0003a1a0: 6f 64 65 2e 6e 61 6d 65 64 42 69 6e 64 69 6e 67 ode.namedBinding 0003a1b0: 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 s) {. 0003a1c0: 20 76 61 72 20 72 65 73 75 6c 74 20 3d 20 74 73 var result = ts 0003a1d0: 2e 69 73 4e 61 6d 65 73 70 61 63 65 49 6d 70 6f .isNamespaceImpo 0003a1e0: 72 74 28 6e 6f 64 65 2e 6e 61 6d 65 64 42 69 6e rt(node.namedBin 0003a1f0: 64 69 6e 67 73 29 0a 20 20 20 20 20 20 20 20 20 dings). 0003a200: 20 20 20 20 20 20 20 3f 20 61 63 74 69 6f 6e 28 ? action( 0003a210: 6e 6f 64 65 2e 6e 61 6d 65 64 42 69 6e 64 69 6e node.namedBindin 0003a220: 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 gs). 0003a230: 20 20 20 20 3a 20 74 73 2e 66 6f 72 45 61 63 68 : ts.forEach 0003a240: 28 6e 6f 64 65 2e 6e 61 6d 65 64 42 69 6e 64 69 (node.namedBindi 0003a250: 6e 67 73 2e 65 6c 65 6d 65 6e 74 73 2c 20 61 63 ngs.elements, ac 0003a260: 74 69 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20 20 tion);. 0003a270: 20 20 20 69 66 20 28 72 65 73 75 6c 74 29 0a 20 if (result). 0003a280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 0003a290: 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 20 20 eturn result;. 0003a2a0: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 }. }. 0003a2b0: 20 20 74 73 2e 66 6f 72 45 61 63 68 49 6d 70 6f ts.forEachImpo 0003a2c0: 72 74 43 6c 61 75 73 65 44 65 63 6c 61 72 61 74 rtClauseDeclarat 0003a2d0: 69 6f 6e 20 3d 20 66 6f 72 45 61 63 68 49 6d 70 ion = forEachImp 0003a2e0: 6f 72 74 43 6c 61 75 73 65 44 65 63 6c 61 72 61 ortClauseDeclara 0003a2f0: 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 tion;. functi 0003a300: 6f 6e 20 68 61 73 51 75 65 73 74 69 6f 6e 54 6f on hasQuestionTo 0003a310: 6b 65 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ken(node) {. 0003a320: 20 20 20 20 69 66 20 28 6e 6f 64 65 29 20 7b 0a if (node) {. 0003a330: 20 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74 swit 0003a340: 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 7b ch (node.kind) { 0003a350: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0003a360: 20 63 61 73 65 20 31 36 34 20 2f 2a 20 53 79 6e case 164 /* Syn 0003a370: 74 61 78 4b 69 6e 64 2e 50 61 72 61 6d 65 74 65 taxKind.Paramete 0003a380: 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 r */:. 0003a390: 20 20 20 20 20 20 63 61 73 65 20 31 36 39 20 2f case 169 / 0003a3a0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 74 * SyntaxKind.Met 0003a3b0: 68 6f 64 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a hodDeclaration * 0003a3c0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0003a3d0: 20 20 20 63 61 73 65 20 31 36 38 20 2f 2a 20 53 case 168 /* S 0003a3e0: 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 74 68 6f 64 yntaxKind.Method 0003a3f0: 53 69 67 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 Signature */:. 0003a400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 0003a410: 73 65 20 32 39 37 20 2f 2a 20 53 79 6e 74 61 78 se 297 /* Syntax 0003a420: 4b 69 6e 64 2e 53 68 6f 72 74 68 61 6e 64 50 72 Kind.ShorthandPr 0003a430: 6f 70 65 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 opertyAssignment 0003a440: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 0003a450: 20 20 20 20 20 63 61 73 65 20 32 39 36 20 2f 2a case 296 /* 0003a460: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 SyntaxKind.Prop 0003a470: 65 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 20 2a ertyAssignment * 0003a480: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0003a490: 20 20 20 63 61 73 65 20 31 36 37 20 2f 2a 20 53 case 167 /* S 0003a4a0: 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 yntaxKind.Proper 0003a4b0: 74 79 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f tyDeclaration */ 0003a4c0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0003a4d0: 20 20 63 61 73 65 20 31 36 36 20 2f 2a 20 53 79 case 166 /* Sy 0003a4e0: 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 ntaxKind.Propert 0003a4f0: 79 53 69 67 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 ySignature */:. 0003a500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003a510: 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 71 return node.q 0003a520: 75 65 73 74 69 6f 6e 54 6f 6b 65 6e 20 21 3d 3d uestionToken !== 0003a530: 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 undefined;. 0003a540: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0003a550: 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 }. retu 0003a560: 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a rn false;. }. 0003a570: 20 20 20 20 74 73 2e 68 61 73 51 75 65 73 74 69 ts.hasQuesti 0003a580: 6f 6e 54 6f 6b 65 6e 20 3d 20 68 61 73 51 75 65 onToken = hasQue 0003a590: 73 74 69 6f 6e 54 6f 6b 65 6e 3b 0a 20 20 20 20 stionToken;. 0003a5a0: 66 75 6e 63 74 69 6f 6e 20 69 73 4a 53 44 6f 63 function isJSDoc 0003a5b0: 43 6f 6e 73 74 72 75 63 74 53 69 67 6e 61 74 75 ConstructSignatu 0003a5c0: 72 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 re(node) {. 0003a5d0: 20 20 20 76 61 72 20 70 61 72 61 6d 20 3d 20 74 var param = t 0003a5e0: 73 2e 69 73 4a 53 44 6f 63 46 75 6e 63 74 69 6f s.isJSDocFunctio 0003a5f0: 6e 54 79 70 65 28 6e 6f 64 65 29 20 3f 20 74 73 nType(node) ? ts 0003a600: 2e 66 69 72 73 74 4f 72 55 6e 64 65 66 69 6e 65 .firstOrUndefine 0003a610: 64 28 6e 6f 64 65 2e 70 61 72 61 6d 65 74 65 72 d(node.parameter 0003a620: 73 29 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b 0a s) : undefined;. 0003a630: 20 20 20 20 20 20 20 20 76 61 72 20 6e 61 6d 65 var name 0003a640: 20 3d 20 74 73 2e 74 72 79 43 61 73 74 28 70 61 = ts.tryCast(pa 0003a650: 72 61 6d 20 26 26 20 70 61 72 61 6d 2e 6e 61 6d ram && param.nam 0003a660: 65 2c 20 74 73 2e 69 73 49 64 65 6e 74 69 66 69 e, ts.isIdentifi 0003a670: 65 72 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 er);. ret 0003a680: 75 72 6e 20 21 21 6e 61 6d 65 20 26 26 20 6e 61 urn !!name && na 0003a690: 6d 65 2e 65 73 63 61 70 65 64 54 65 78 74 20 3d me.escapedText = 0003a6a0: 3d 3d 20 22 6e 65 77 22 3b 0a 20 20 20 20 7d 0a == "new";. }. 0003a6b0: 20 20 20 20 74 73 2e 69 73 4a 53 44 6f 63 43 6f ts.isJSDocCo 0003a6c0: 6e 73 74 72 75 63 74 53 69 67 6e 61 74 75 72 65 nstructSignature 0003a6d0: 20 3d 20 69 73 4a 53 44 6f 63 43 6f 6e 73 74 72 = isJSDocConstr 0003a6e0: 75 63 74 53 69 67 6e 61 74 75 72 65 3b 0a 20 20 uctSignature;. 0003a6f0: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4a 53 44 function isJSD 0003a700: 6f 63 54 79 70 65 41 6c 69 61 73 28 6e 6f 64 65 ocTypeAlias(node 0003a710: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0003a720: 72 6e 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d rn node.kind === 0003a730: 20 33 34 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 345 /* SyntaxKi 0003a740: 6e 64 2e 4a 53 44 6f 63 54 79 70 65 64 65 66 54 nd.JSDocTypedefT 0003a750: 61 67 20 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 6b 69 ag */ || node.ki 0003a760: 6e 64 20 3d 3d 3d 20 33 33 38 20 2f 2a 20 53 79 nd === 338 /* Sy 0003a770: 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 43 61 ntaxKind.JSDocCa 0003a780: 6c 6c 62 61 63 6b 54 61 67 20 2a 2f 20 7c 7c 20 llbackTag */ || 0003a790: 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 33 33 node.kind === 33 0003a7a0: 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 9 /* SyntaxKind. 0003a7b0: 4a 53 44 6f 63 45 6e 75 6d 54 61 67 20 2a 2f 3b JSDocEnumTag */; 0003a7c0: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 0003a7d0: 4a 53 44 6f 63 54 79 70 65 41 6c 69 61 73 20 3d JSDocTypeAlias = 0003a7e0: 20 69 73 4a 53 44 6f 63 54 79 70 65 41 6c 69 61 isJSDocTypeAlia 0003a7f0: 73 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 s;. function 0003a800: 69 73 54 79 70 65 41 6c 69 61 73 28 6e 6f 64 65 isTypeAlias(node 0003a810: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0003a820: 72 6e 20 69 73 4a 53 44 6f 63 54 79 70 65 41 6c rn isJSDocTypeAl 0003a830: 69 61 73 28 6e 6f 64 65 29 20 7c 7c 20 74 73 2e ias(node) || ts. 0003a840: 69 73 54 79 70 65 41 6c 69 61 73 44 65 63 6c 61 isTypeAliasDecla 0003a850: 72 61 74 69 6f 6e 28 6e 6f 64 65 29 3b 0a 20 20 ration(node);. 0003a860: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 54 79 70 }. ts.isTyp 0003a870: 65 41 6c 69 61 73 20 3d 20 69 73 54 79 70 65 41 eAlias = isTypeA 0003a880: 6c 69 61 73 3b 0a 20 20 20 20 66 75 6e 63 74 69 lias;. functi 0003a890: 6f 6e 20 67 65 74 53 6f 75 72 63 65 4f 66 41 73 on getSourceOfAs 0003a8a0: 73 69 67 6e 6d 65 6e 74 28 6e 6f 64 65 29 20 7b signment(node) { 0003a8b0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 0003a8c0: 74 73 2e 69 73 45 78 70 72 65 73 73 69 6f 6e 53 ts.isExpressionS 0003a8d0: 74 61 74 65 6d 65 6e 74 28 6e 6f 64 65 29 20 26 tatement(node) & 0003a8e0: 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 73 &. ts 0003a8f0: 2e 69 73 42 69 6e 61 72 79 45 78 70 72 65 73 73 .isBinaryExpress 0003a900: 69 6f 6e 28 6e 6f 64 65 2e 65 78 70 72 65 73 73 ion(node.express 0003a910: 69 6f 6e 29 20 26 26 0a 20 20 20 20 20 20 20 20 ion) &&. 0003a920: 20 20 20 20 6e 6f 64 65 2e 65 78 70 72 65 73 73 node.express 0003a930: 69 6f 6e 2e 6f 70 65 72 61 74 6f 72 54 6f 6b 65 ion.operatorToke 0003a940: 6e 2e 6b 69 6e 64 20 3d 3d 3d 20 36 33 20 2f 2a n.kind === 63 /* 0003a950: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 71 75 61 SyntaxKind.Equa 0003a960: 6c 73 54 6f 6b 65 6e 20 2a 2f 0a 20 20 20 20 20 lsToken */. 0003a970: 20 20 20 20 20 20 20 3f 20 67 65 74 52 69 67 68 ? getRigh 0003a980: 74 4d 6f 73 74 41 73 73 69 67 6e 65 64 45 78 70 tMostAssignedExp 0003a990: 72 65 73 73 69 6f 6e 28 6e 6f 64 65 2e 65 78 70 ression(node.exp 0003a9a0: 72 65 73 73 69 6f 6e 29 0a 20 20 20 20 20 20 20 ression). 0003a9b0: 20 20 20 20 20 3a 20 75 6e 64 65 66 69 6e 65 64 : undefined 0003a9c0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 ;. }. func 0003a9d0: 74 69 6f 6e 20 67 65 74 53 6f 75 72 63 65 4f 66 tion getSourceOf 0003a9e0: 44 65 66 61 75 6c 74 65 64 41 73 73 69 67 6e 6d DefaultedAssignm 0003a9f0: 65 6e 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ent(node) {. 0003aa00: 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 return ts.is 0003aa10: 45 78 70 72 65 73 73 69 6f 6e 53 74 61 74 65 6d ExpressionStatem 0003aa20: 65 6e 74 28 6e 6f 64 65 29 20 26 26 0a 20 20 20 ent(node) &&. 0003aa30: 20 20 20 20 20 20 20 20 20 74 73 2e 69 73 42 69 ts.isBi 0003aa40: 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e 28 6e naryExpression(n 0003aa50: 6f 64 65 2e 65 78 70 72 65 73 73 69 6f 6e 29 20 ode.expression) 0003aa60: 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 &&. g 0003aa70: 65 74 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c etAssignmentDecl 0003aa80: 61 72 61 74 69 6f 6e 4b 69 6e 64 28 6e 6f 64 65 arationKind(node 0003aa90: 2e 65 78 70 72 65 73 73 69 6f 6e 29 20 21 3d 3d .expression) !== 0003aaa0: 20 30 20 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 0 /* Assignment 0003aab0: 44 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 2e DeclarationKind. 0003aac0: 4e 6f 6e 65 20 2a 2f 20 26 26 0a 20 20 20 20 20 None */ &&. 0003aad0: 20 20 20 20 20 20 20 74 73 2e 69 73 42 69 6e 61 ts.isBina 0003aae0: 72 79 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 ryExpression(nod 0003aaf0: 65 2e 65 78 70 72 65 73 73 69 6f 6e 2e 72 69 67 e.expression.rig 0003ab00: 68 74 29 20 26 26 0a 20 20 20 20 20 20 20 20 20 ht) &&. 0003ab10: 20 20 20 28 6e 6f 64 65 2e 65 78 70 72 65 73 73 (node.express 0003ab20: 69 6f 6e 2e 72 69 67 68 74 2e 6f 70 65 72 61 74 ion.right.operat 0003ab30: 6f 72 54 6f 6b 65 6e 2e 6b 69 6e 64 20 3d 3d 3d orToken.kind === 0003ab40: 20 35 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 56 /* SyntaxKin 0003ab50: 64 2e 42 61 72 42 61 72 54 6f 6b 65 6e 20 2a 2f d.BarBarToken */ 0003ab60: 20 7c 7c 20 6e 6f 64 65 2e 65 78 70 72 65 73 73 || node.express 0003ab70: 69 6f 6e 2e 72 69 67 68 74 2e 6f 70 65 72 61 74 ion.right.operat 0003ab80: 6f 72 54 6f 6b 65 6e 2e 6b 69 6e 64 20 3d 3d 3d orToken.kind === 0003ab90: 20 36 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 60 /* SyntaxKin 0003aba0: 64 2e 51 75 65 73 74 69 6f 6e 51 75 65 73 74 69 d.QuestionQuesti 0003abb0: 6f 6e 54 6f 6b 65 6e 20 2a 2f 29 0a 20 20 20 20 onToken */). 0003abc0: 20 20 20 20 20 20 20 20 3f 20 6e 6f 64 65 2e 65 ? node.e 0003abd0: 78 70 72 65 73 73 69 6f 6e 2e 72 69 67 68 74 2e xpression.right. 0003abe0: 72 69 67 68 74 0a 20 20 20 20 20 20 20 20 20 20 right. 0003abf0: 20 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 : undefined;. 0003ac00: 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 74 69 6f }. functio 0003ac10: 6e 20 67 65 74 53 69 6e 67 6c 65 49 6e 69 74 69 n getSingleIniti 0003ac20: 61 6c 69 7a 65 72 4f 66 56 61 72 69 61 62 6c 65 alizerOfVariable 0003ac30: 53 74 61 74 65 6d 65 6e 74 4f 72 50 72 6f 70 65 StatementOrPrope 0003ac40: 72 74 79 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e rtyDeclaration(n 0003ac50: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ode) {. s 0003ac60: 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 witch (node.kind 0003ac70: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 0003ac80: 63 61 73 65 20 32 33 37 20 2f 2a 20 53 79 6e 74 case 237 /* Synt 0003ac90: 61 78 4b 69 6e 64 2e 56 61 72 69 61 62 6c 65 53 axKind.VariableS 0003aca0: 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 tatement */:. 0003acb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 var 0003acc0: 20 76 20 3d 20 67 65 74 53 69 6e 67 6c 65 56 61 v = getSingleVa 0003acd0: 72 69 61 62 6c 65 4f 66 56 61 72 69 61 62 6c 65 riableOfVariable 0003ace0: 53 74 61 74 65 6d 65 6e 74 28 6e 6f 64 65 29 3b Statement(node); 0003acf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0003ad00: 20 72 65 74 75 72 6e 20 76 20 26 26 20 76 2e 69 return v && v.i 0003ad10: 6e 69 74 69 61 6c 69 7a 65 72 3b 0a 20 20 20 20 nitializer;. 0003ad20: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 36 37 case 167 0003ad30: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 /* SyntaxKind.P 0003ad40: 72 6f 70 65 72 74 79 44 65 63 6c 61 72 61 74 69 ropertyDeclarati 0003ad50: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 0003ad60: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 0003ad70: 64 65 2e 69 6e 69 74 69 61 6c 69 7a 65 72 3b 0a de.initializer;. 0003ad80: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0003ad90: 20 32 39 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 296 /* SyntaxKi 0003ada0: 6e 64 2e 50 72 6f 70 65 72 74 79 41 73 73 69 67 nd.PropertyAssig 0003adb0: 6e 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 nment */:. 0003adc0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 0003add0: 20 6e 6f 64 65 2e 69 6e 69 74 69 61 6c 69 7a 65 node.initialize 0003ade0: 72 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 r;. }. 0003adf0: 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 53 69 6e }. ts.getSin 0003ae00: 67 6c 65 49 6e 69 74 69 61 6c 69 7a 65 72 4f 66 gleInitializerOf 0003ae10: 56 61 72 69 61 62 6c 65 53 74 61 74 65 6d 65 6e VariableStatemen 0003ae20: 74 4f 72 50 72 6f 70 65 72 74 79 44 65 63 6c 61 tOrPropertyDecla 0003ae30: 72 61 74 69 6f 6e 20 3d 20 67 65 74 53 69 6e 67 ration = getSing 0003ae40: 6c 65 49 6e 69 74 69 61 6c 69 7a 65 72 4f 66 56 leInitializerOfV 0003ae50: 61 72 69 61 62 6c 65 53 74 61 74 65 6d 65 6e 74 ariableStatement 0003ae60: 4f 72 50 72 6f 70 65 72 74 79 44 65 63 6c 61 72 OrPropertyDeclar 0003ae70: 61 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 ation;. funct 0003ae80: 69 6f 6e 20 67 65 74 53 69 6e 67 6c 65 56 61 72 ion getSingleVar 0003ae90: 69 61 62 6c 65 4f 66 56 61 72 69 61 62 6c 65 53 iableOfVariableS 0003aea0: 74 61 74 65 6d 65 6e 74 28 6e 6f 64 65 29 20 7b tatement(node) { 0003aeb0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 0003aec0: 74 73 2e 69 73 56 61 72 69 61 62 6c 65 53 74 61 ts.isVariableSta 0003aed0: 74 65 6d 65 6e 74 28 6e 6f 64 65 29 20 3f 20 74 tement(node) ? t 0003aee0: 73 2e 66 69 72 73 74 4f 72 55 6e 64 65 66 69 6e s.firstOrUndefin 0003aef0: 65 64 28 6e 6f 64 65 2e 64 65 63 6c 61 72 61 74 ed(node.declarat 0003af00: 69 6f 6e 4c 69 73 74 2e 64 65 63 6c 61 72 61 74 ionList.declarat 0003af10: 69 6f 6e 73 29 20 3a 20 75 6e 64 65 66 69 6e 65 ions) : undefine 0003af20: 64 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e d;. }. ts. 0003af30: 67 65 74 53 69 6e 67 6c 65 56 61 72 69 61 62 6c getSingleVariabl 0003af40: 65 4f 66 56 61 72 69 61 62 6c 65 53 74 61 74 65 eOfVariableState 0003af50: 6d 65 6e 74 20 3d 20 67 65 74 53 69 6e 67 6c 65 ment = getSingle 0003af60: 56 61 72 69 61 62 6c 65 4f 66 56 61 72 69 61 62 VariableOfVariab 0003af70: 6c 65 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 20 leStatement;. 0003af80: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4e 65 73 function getNes 0003af90: 74 65 64 4d 6f 64 75 6c 65 44 65 63 6c 61 72 61 tedModuleDeclara 0003afa0: 74 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 tion(node) {. 0003afb0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 return ts.i 0003afc0: 73 4d 6f 64 75 6c 65 44 65 63 6c 61 72 61 74 69 sModuleDeclarati 0003afd0: 6f 6e 28 6e 6f 64 65 29 20 26 26 0a 20 20 20 20 on(node) &&. 0003afe0: 20 20 20 20 20 20 20 20 6e 6f 64 65 2e 62 6f 64 node.bod 0003aff0: 79 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 y &&. 0003b000: 20 6e 6f 64 65 2e 62 6f 64 79 2e 6b 69 6e 64 20 node.body.kind 0003b010: 3d 3d 3d 20 32 36 31 20 2f 2a 20 53 79 6e 74 61 === 261 /* Synta 0003b020: 78 4b 69 6e 64 2e 4d 6f 64 75 6c 65 44 65 63 6c xKind.ModuleDecl 0003b030: 61 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 aration */. 0003b040: 20 20 20 20 20 20 20 3f 20 6e 6f 64 65 2e 62 6f ? node.bo 0003b050: 64 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a dy. : 0003b060: 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 undefined;. 0003b070: 7d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 }. function g 0003b080: 65 74 4a 53 44 6f 63 43 6f 6d 6d 65 6e 74 73 41 etJSDocCommentsA 0003b090: 6e 64 54 61 67 73 28 68 6f 73 74 4e 6f 64 65 2c ndTags(hostNode, 0003b0a0: 20 6e 6f 43 61 63 68 65 29 20 7b 0a 20 20 20 20 noCache) {. 0003b0b0: 20 20 20 20 76 61 72 20 72 65 73 75 6c 74 3b 0a var result;. 0003b0c0: 20 20 20 20 20 20 20 20 2f 2f 20 50 75 6c 6c 20 // Pull 0003b0d0: 70 61 72 61 6d 65 74 65 72 20 63 6f 6d 6d 65 6e parameter commen 0003b0e0: 74 73 20 66 72 6f 6d 20 64 65 63 6c 61 72 69 6e ts from declarin 0003b0f0: 67 20 66 75 6e 63 74 69 6f 6e 20 61 73 20 77 65 g function as we 0003b100: 6c 6c 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 ll. if (i 0003b110: 73 56 61 72 69 61 62 6c 65 4c 69 6b 65 28 68 6f sVariableLike(ho 0003b120: 73 74 4e 6f 64 65 29 20 26 26 20 74 73 2e 68 61 stNode) && ts.ha 0003b130: 73 49 6e 69 74 69 61 6c 69 7a 65 72 28 68 6f 73 sInitializer(hos 0003b140: 74 4e 6f 64 65 29 20 26 26 20 74 73 2e 68 61 73 tNode) && ts.has 0003b150: 4a 53 44 6f 63 4e 6f 64 65 73 28 68 6f 73 74 4e JSDocNodes(hostN 0003b160: 6f 64 65 2e 69 6e 69 74 69 61 6c 69 7a 65 72 29 ode.initializer) 0003b170: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 0003b180: 72 65 73 75 6c 74 20 3d 20 74 73 2e 61 64 64 52 result = ts.addR 0003b190: 61 6e 67 65 28 72 65 73 75 6c 74 2c 20 66 69 6c ange(result, fil 0003b1a0: 74 65 72 4f 77 6e 65 64 4a 53 44 6f 63 54 61 67 terOwnedJSDocTag 0003b1b0: 73 28 68 6f 73 74 4e 6f 64 65 2c 20 74 73 2e 6c s(hostNode, ts.l 0003b1c0: 61 73 74 28 68 6f 73 74 4e 6f 64 65 2e 69 6e 69 ast(hostNode.ini 0003b1d0: 74 69 61 6c 69 7a 65 72 2e 6a 73 44 6f 63 29 29 tializer.jsDoc)) 0003b1e0: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 );. }. 0003b1f0: 20 20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 var node = 0003b200: 68 6f 73 74 4e 6f 64 65 3b 0a 20 20 20 20 20 20 hostNode;. 0003b210: 20 20 77 68 69 6c 65 20 28 6e 6f 64 65 20 26 26 while (node && 0003b220: 20 6e 6f 64 65 2e 70 61 72 65 6e 74 29 20 7b 0a node.parent) {. 0003b230: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if ( 0003b240: 74 73 2e 68 61 73 4a 53 44 6f 63 4e 6f 64 65 73 ts.hasJSDocNodes 0003b250: 28 6e 6f 64 65 29 29 20 7b 0a 20 20 20 20 20 20 (node)) {. 0003b260: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 result 0003b270: 20 3d 20 74 73 2e 61 64 64 52 61 6e 67 65 28 72 = ts.addRange(r 0003b280: 65 73 75 6c 74 2c 20 66 69 6c 74 65 72 4f 77 6e esult, filterOwn 0003b290: 65 64 4a 53 44 6f 63 54 61 67 73 28 68 6f 73 74 edJSDocTags(host 0003b2a0: 4e 6f 64 65 2c 20 74 73 2e 6c 61 73 74 28 6e 6f Node, ts.last(no 0003b2b0: 64 65 2e 6a 73 44 6f 63 29 29 29 3b 0a 20 20 20 de.jsDoc)));. 0003b2c0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 0003b2d0: 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e if (node. 0003b2e0: 6b 69 6e 64 20 3d 3d 3d 20 31 36 34 20 2f 2a 20 kind === 164 /* 0003b2f0: 53 79 6e 74 61 78 4b 69 6e 64 2e 50 61 72 61 6d SyntaxKind.Param 0003b300: 65 74 65 72 20 2a 2f 29 20 7b 0a 20 20 20 20 20 eter */) {. 0003b310: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c resul 0003b320: 74 20 3d 20 74 73 2e 61 64 64 52 61 6e 67 65 28 t = ts.addRange( 0003b330: 72 65 73 75 6c 74 2c 20 28 6e 6f 43 61 63 68 65 result, (noCache 0003b340: 20 3f 20 74 73 2e 67 65 74 4a 53 44 6f 63 50 61 ? ts.getJSDocPa 0003b350: 72 61 6d 65 74 65 72 54 61 67 73 4e 6f 43 61 63 rameterTagsNoCac 0003b360: 68 65 20 3a 20 74 73 2e 67 65 74 4a 53 44 6f 63 he : ts.getJSDoc 0003b370: 50 61 72 61 6d 65 74 65 72 54 61 67 73 29 28 6e ParameterTags)(n 0003b380: 6f 64 65 29 29 3b 0a 20 20 20 20 20 20 20 20 20 ode));. 0003b390: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 break;. 0003b3a0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 0003b3b0: 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 if (node 0003b3c0: 2e 6b 69 6e 64 20 3d 3d 3d 20 31 36 33 20 2f 2a .kind === 163 /* 0003b3d0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 SyntaxKind.Type 0003b3e0: 50 61 72 61 6d 65 74 65 72 20 2a 2f 29 20 7b 0a Parameter */) {. 0003b3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003b400: 72 65 73 75 6c 74 20 3d 20 74 73 2e 61 64 64 52 result = ts.addR 0003b410: 61 6e 67 65 28 72 65 73 75 6c 74 2c 20 28 6e 6f ange(result, (no 0003b420: 43 61 63 68 65 20 3f 20 74 73 2e 67 65 74 4a 53 Cache ? ts.getJS 0003b430: 44 6f 63 54 79 70 65 50 61 72 61 6d 65 74 65 72 DocTypeParameter 0003b440: 54 61 67 73 4e 6f 43 61 63 68 65 20 3a 20 74 73 TagsNoCache : ts 0003b450: 2e 67 65 74 4a 53 44 6f 63 54 79 70 65 50 61 72 .getJSDocTypePar 0003b460: 61 6d 65 74 65 72 54 61 67 73 29 28 6e 6f 64 65 ameterTags)(node 0003b470: 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ));. 0003b480: 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 break;. 0003b490: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 0003b4a0: 20 20 20 20 20 6e 6f 64 65 20 3d 20 67 65 74 4e node = getN 0003b4b0: 65 78 74 4a 53 44 6f 63 43 6f 6d 6d 65 6e 74 4c extJSDocCommentL 0003b4c0: 6f 63 61 74 69 6f 6e 28 6e 6f 64 65 29 3b 0a 20 ocation(node);. 0003b4d0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 0003b4e0: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 20 7c return result | 0003b4f0: 7c 20 74 73 2e 65 6d 70 74 79 41 72 72 61 79 3b | ts.emptyArray; 0003b500: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 . }. ts.ge 0003b510: 74 4a 53 44 6f 63 43 6f 6d 6d 65 6e 74 73 41 6e tJSDocCommentsAn 0003b520: 64 54 61 67 73 20 3d 20 67 65 74 4a 53 44 6f 63 dTags = getJSDoc 0003b530: 43 6f 6d 6d 65 6e 74 73 41 6e 64 54 61 67 73 3b CommentsAndTags; 0003b540: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 66 69 . function fi 0003b550: 6c 74 65 72 4f 77 6e 65 64 4a 53 44 6f 63 54 61 lterOwnedJSDocTa 0003b560: 67 73 28 68 6f 73 74 4e 6f 64 65 2c 20 6a 73 44 gs(hostNode, jsD 0003b570: 6f 63 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 oc) {. if 0003b580: 20 28 74 73 2e 69 73 4a 53 44 6f 63 28 6a 73 44 (ts.isJSDoc(jsD 0003b590: 6f 63 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 oc)) {. 0003b5a0: 20 20 20 76 61 72 20 6f 77 6e 65 64 54 61 67 73 var ownedTags 0003b5b0: 20 3d 20 74 73 2e 66 69 6c 74 65 72 28 6a 73 44 = ts.filter(jsD 0003b5c0: 6f 63 2e 74 61 67 73 2c 20 66 75 6e 63 74 69 6f oc.tags, functio 0003b5d0: 6e 20 28 74 61 67 29 20 7b 20 72 65 74 75 72 6e n (tag) { return 0003b5e0: 20 6f 77 6e 73 4a 53 44 6f 63 54 61 67 28 68 6f ownsJSDocTag(ho 0003b5f0: 73 74 4e 6f 64 65 2c 20 74 61 67 29 3b 20 7d 29 stNode, tag); }) 0003b600: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 ;. re 0003b610: 74 75 72 6e 20 6a 73 44 6f 63 2e 74 61 67 73 20 turn jsDoc.tags 0003b620: 3d 3d 3d 20 6f 77 6e 65 64 54 61 67 73 20 3f 20 === ownedTags ? 0003b630: 5b 6a 73 44 6f 63 5d 20 3a 20 6f 77 6e 65 64 54 [jsDoc] : ownedT 0003b640: 61 67 73 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 ags;. }. 0003b650: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 77 return ow 0003b660: 6e 73 4a 53 44 6f 63 54 61 67 28 68 6f 73 74 4e nsJSDocTag(hostN 0003b670: 6f 64 65 2c 20 6a 73 44 6f 63 29 20 3f 20 5b 6a ode, jsDoc) ? [j 0003b680: 73 44 6f 63 5d 20 3a 20 75 6e 64 65 66 69 6e 65 sDoc] : undefine 0003b690: 64 3b 0a 20 20 20 20 7d 0a 20 20 20 20 2f 2a 2a d;. }. /** 0003b6a0: 0a 20 20 20 20 20 2a 20 44 65 74 65 72 6d 69 6e . * Determin 0003b6b0: 65 73 20 77 68 65 74 68 65 72 20 61 20 68 6f 73 es whether a hos 0003b6c0: 74 20 6e 6f 64 65 20 6f 77 6e 73 20 61 20 6a 73 t node owns a js 0003b6d0: 44 6f 63 20 74 61 67 2e 20 41 20 60 40 74 79 70 Doc tag. A `@typ 0003b6e0: 65 60 20 74 61 67 20 61 74 74 61 63 68 65 64 20 e` tag attached 0003b6f0: 74 6f 20 61 0a 20 20 20 20 20 2a 20 61 20 50 61 to a. * a Pa 0003b700: 72 65 6e 74 68 65 73 69 7a 65 64 45 78 70 72 65 renthesizedExpre 0003b710: 73 73 69 6f 6e 20 62 65 6c 6f 6e 67 73 20 6f 6e ssion belongs on 0003b720: 6c 79 20 74 6f 20 74 68 65 20 50 61 72 65 6e 74 ly to the Parent 0003b730: 68 65 73 69 7a 65 64 45 78 70 72 65 73 73 69 6f hesizedExpressio 0003b740: 6e 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 n.. */. f 0003b750: 75 6e 63 74 69 6f 6e 20 6f 77 6e 73 4a 53 44 6f unction ownsJSDo 0003b760: 63 54 61 67 28 68 6f 73 74 4e 6f 64 65 2c 20 74 cTag(hostNode, t 0003b770: 61 67 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 ag) {. re 0003b780: 74 75 72 6e 20 21 74 73 2e 69 73 4a 53 44 6f 63 turn !ts.isJSDoc 0003b790: 54 79 70 65 54 61 67 28 74 61 67 29 0a 20 20 20 TypeTag(tag). 0003b7a0: 20 20 20 20 20 20 20 20 20 7c 7c 20 21 74 61 67 || !tag 0003b7b0: 2e 70 61 72 65 6e 74 0a 20 20 20 20 20 20 20 20 .parent. 0003b7c0: 20 20 20 20 7c 7c 20 21 74 73 2e 69 73 4a 53 44 || !ts.isJSD 0003b7d0: 6f 63 28 74 61 67 2e 70 61 72 65 6e 74 29 0a 20 oc(tag.parent). 0003b7e0: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 21 74 || !t 0003b7f0: 73 2e 69 73 50 61 72 65 6e 74 68 65 73 69 7a 65 s.isParenthesize 0003b800: 64 45 78 70 72 65 73 73 69 6f 6e 28 74 61 67 2e dExpression(tag. 0003b810: 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 29 0a 20 parent.parent). 0003b820: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 74 61 || ta 0003b830: 67 2e 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 20 g.parent.parent 0003b840: 3d 3d 3d 20 68 6f 73 74 4e 6f 64 65 3b 0a 20 20 === hostNode;. 0003b850: 20 20 7d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e }. function 0003b860: 20 67 65 74 4e 65 78 74 4a 53 44 6f 63 43 6f 6d getNextJSDocCom 0003b870: 6d 65 6e 74 4c 6f 63 61 74 69 6f 6e 28 6e 6f 64 mentLocation(nod 0003b880: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 e) {. var 0003b890: 20 70 61 72 65 6e 74 20 3d 20 6e 6f 64 65 2e 70 parent = node.p 0003b8a0: 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 69 arent;. i 0003b8b0: 66 20 28 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d f (parent.kind = 0003b8c0: 3d 3d 20 32 39 36 20 2f 2a 20 53 79 6e 74 61 78 == 296 /* Syntax 0003b8d0: 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 41 73 73 Kind.PropertyAss 0003b8e0: 69 67 6e 6d 65 6e 74 20 2a 2f 20 7c 7c 0a 20 20 ignment */ ||. 0003b8f0: 20 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 parent 0003b900: 2e 6b 69 6e 64 20 3d 3d 3d 20 32 37 31 20 2f 2a .kind === 271 /* 0003b910: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 78 70 6f SyntaxKind.Expo 0003b920: 72 74 41 73 73 69 67 6e 6d 65 6e 74 20 2a 2f 20 rtAssignment */ 0003b930: 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 ||. p 0003b940: 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 31 arent.kind === 1 0003b950: 36 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 67 /* SyntaxKind 0003b960: 2e 50 72 6f 70 65 72 74 79 44 65 63 6c 61 72 61 .PropertyDeclara 0003b970: 74 69 6f 6e 20 2a 2f 20 7c 7c 0a 20 20 20 20 20 tion */ ||. 0003b980: 20 20 20 20 20 20 20 70 61 72 65 6e 74 2e 6b 69 parent.ki 0003b990: 6e 64 20 3d 3d 3d 20 32 33 38 20 2f 2a 20 53 79 nd === 238 /* Sy 0003b9a0: 6e 74 61 78 4b 69 6e 64 2e 45 78 70 72 65 73 73 ntaxKind.Express 0003b9b0: 69 6f 6e 53 74 61 74 65 6d 65 6e 74 20 2a 2f 20 ionStatement */ 0003b9c0: 26 26 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d && node.kind === 0003b9d0: 20 32 30 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 206 /* SyntaxKi 0003b9e0: 6e 64 2e 50 72 6f 70 65 72 74 79 41 63 63 65 73 nd.PropertyAcces 0003b9f0: 73 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 20 7c sExpression */ | 0003ba00: 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 |. pa 0003ba10: 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 32 34 rent.kind === 24 0003ba20: 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 7 /* SyntaxKind. 0003ba30: 52 65 74 75 72 6e 53 74 61 74 65 6d 65 6e 74 20 ReturnStatement 0003ba40: 2a 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 */ ||. 0003ba50: 20 20 67 65 74 4e 65 73 74 65 64 4d 6f 64 75 6c getNestedModul 0003ba60: 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 70 61 72 eDeclaration(par 0003ba70: 65 6e 74 29 20 7c 7c 0a 20 20 20 20 20 20 20 20 ent) ||. 0003ba80: 20 20 20 20 74 73 2e 69 73 42 69 6e 61 72 79 45 ts.isBinaryE 0003ba90: 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 xpression(node) 0003baa0: 26 26 20 6e 6f 64 65 2e 6f 70 65 72 61 74 6f 72 && node.operator 0003bab0: 54 6f 6b 65 6e 2e 6b 69 6e 64 20 3d 3d 3d 20 36 Token.kind === 6 0003bac0: 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 3 /* SyntaxKind. 0003bad0: 45 71 75 61 6c 73 54 6f 6b 65 6e 20 2a 2f 29 20 EqualsToken */) 0003bae0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 {. re 0003baf0: 74 75 72 6e 20 70 61 72 65 6e 74 3b 0a 20 20 20 turn parent;. 0003bb00: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 2f }. / 0003bb10: 2f 20 54 72 79 20 74 6f 20 72 65 63 6f 67 6e 69 / Try to recogni 0003bb20: 7a 65 20 74 68 69 73 20 70 61 74 74 65 72 6e 20 ze this pattern 0003bb30: 77 68 65 6e 20 6e 6f 64 65 20 69 73 20 69 6e 69 when node is ini 0003bb40: 74 69 61 6c 69 7a 65 72 20 6f 66 20 76 61 72 69 tializer of vari 0003bb50: 61 62 6c 65 20 64 65 63 6c 61 72 61 74 69 6f 6e able declaration 0003bb60: 20 61 6e 64 20 4a 53 44 6f 63 20 63 6f 6d 6d 65 and JSDoc comme 0003bb70: 6e 74 73 20 61 72 65 20 6f 6e 20 63 6f 6e 74 61 nts are on conta 0003bb80: 69 6e 69 6e 67 20 76 61 72 69 61 62 6c 65 20 73 ining variable s 0003bb90: 74 61 74 65 6d 65 6e 74 2e 0a 20 20 20 20 20 20 tatement.. 0003bba0: 20 20 2f 2f 20 2f 2a 2a 0a 20 20 20 20 20 20 20 // /**. 0003bbb0: 20 2f 2f 20 20 20 2a 20 40 70 61 72 61 6d 20 7b // * @param { 0003bbc0: 6e 75 6d 62 65 72 7d 20 6e 61 6d 65 0a 20 20 20 number} name. 0003bbd0: 20 20 20 20 20 2f 2f 20 20 20 2a 20 40 72 65 74 // * @ret 0003bbe0: 75 72 6e 73 20 7b 6e 75 6d 62 65 72 7d 0a 20 20 urns {number}. 0003bbf0: 20 20 20 20 20 20 2f 2f 20 20 20 2a 2f 0a 20 20 // */. 0003bc00: 20 20 20 20 20 20 2f 2f 20 76 61 72 20 78 20 3d // var x = 0003bc10: 20 66 75 6e 63 74 69 6f 6e 28 6e 61 6d 65 29 20 function(name) 0003bc20: 7b 20 72 65 74 75 72 6e 20 6e 61 6d 65 2e 6c 65 { return name.le 0003bc30: 6e 67 74 68 3b 20 7d 0a 20 20 20 20 20 20 20 20 ngth; }. 0003bc40: 65 6c 73 65 20 69 66 20 28 70 61 72 65 6e 74 2e else if (parent. 0003bc50: 70 61 72 65 6e 74 20 26 26 0a 20 20 20 20 20 20 parent &&. 0003bc60: 20 20 20 20 20 20 28 67 65 74 53 69 6e 67 6c 65 (getSingle 0003bc70: 56 61 72 69 61 62 6c 65 4f 66 56 61 72 69 61 62 VariableOfVariab 0003bc80: 6c 65 53 74 61 74 65 6d 65 6e 74 28 70 61 72 65 leStatement(pare 0003bc90: 6e 74 2e 70 61 72 65 6e 74 29 20 3d 3d 3d 20 6e nt.parent) === n 0003bca0: 6f 64 65 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 ode ||. 0003bcb0: 20 20 20 20 20 20 20 74 73 2e 69 73 42 69 6e 61 ts.isBina 0003bcc0: 72 79 45 78 70 72 65 73 73 69 6f 6e 28 70 61 72 ryExpression(par 0003bcd0: 65 6e 74 29 20 26 26 20 70 61 72 65 6e 74 2e 6f ent) && parent.o 0003bce0: 70 65 72 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 6e peratorToken.kin 0003bcf0: 64 20 3d 3d 3d 20 36 33 20 2f 2a 20 53 79 6e 74 d === 63 /* Synt 0003bd00: 61 78 4b 69 6e 64 2e 45 71 75 61 6c 73 54 6f 6b axKind.EqualsTok 0003bd10: 65 6e 20 2a 2f 29 29 20 7b 0a 20 20 20 20 20 20 en */)) {. 0003bd20: 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 return par 0003bd30: 65 6e 74 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 ent.parent;. 0003bd40: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 65 6c }. el 0003bd50: 73 65 20 69 66 20 28 70 61 72 65 6e 74 2e 70 61 se if (parent.pa 0003bd60: 72 65 6e 74 20 26 26 20 70 61 72 65 6e 74 2e 70 rent && parent.p 0003bd70: 61 72 65 6e 74 2e 70 61 72 65 6e 74 20 26 26 0a arent.parent &&. 0003bd80: 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 (get 0003bd90: 53 69 6e 67 6c 65 56 61 72 69 61 62 6c 65 4f 66 SingleVariableOf 0003bda0: 56 61 72 69 61 62 6c 65 53 74 61 74 65 6d 65 6e VariableStatemen 0003bdb0: 74 28 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 2e t(parent.parent. 0003bdc0: 70 61 72 65 6e 74 29 20 7c 7c 0a 20 20 20 20 20 parent) ||. 0003bdd0: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 53 69 getSi 0003bde0: 6e 67 6c 65 49 6e 69 74 69 61 6c 69 7a 65 72 4f ngleInitializerO 0003bdf0: 66 56 61 72 69 61 62 6c 65 53 74 61 74 65 6d 65 fVariableStateme 0003be00: 6e 74 4f 72 50 72 6f 70 65 72 74 79 44 65 63 6c ntOrPropertyDecl 0003be10: 61 72 61 74 69 6f 6e 28 70 61 72 65 6e 74 2e 70 aration(parent.p 0003be20: 61 72 65 6e 74 2e 70 61 72 65 6e 74 29 20 3d 3d arent.parent) == 0003be30: 3d 20 6e 6f 64 65 20 7c 7c 0a 20 20 20 20 20 20 = node ||. 0003be40: 20 20 20 20 20 20 20 20 20 20 67 65 74 53 6f 75 getSou 0003be50: 72 63 65 4f 66 44 65 66 61 75 6c 74 65 64 41 73 rceOfDefaultedAs 0003be60: 73 69 67 6e 6d 65 6e 74 28 70 61 72 65 6e 74 2e signment(parent. 0003be70: 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 29 29 29 parent.parent))) 0003be80: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 {. r 0003be90: 65 74 75 72 6e 20 70 61 72 65 6e 74 2e 70 61 72 eturn parent.par 0003bea0: 65 6e 74 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 ent.parent;. 0003beb0: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 }. }. 0003bec0: 74 73 2e 67 65 74 4e 65 78 74 4a 53 44 6f 63 43 ts.getNextJSDocC 0003bed0: 6f 6d 6d 65 6e 74 4c 6f 63 61 74 69 6f 6e 20 3d ommentLocation = 0003bee0: 20 67 65 74 4e 65 78 74 4a 53 44 6f 63 43 6f 6d getNextJSDocCom 0003bef0: 6d 65 6e 74 4c 6f 63 61 74 69 6f 6e 3b 0a 20 20 mentLocation;. 0003bf00: 20 20 2f 2a 2a 20 44 6f 65 73 20 74 68 65 20 6f /** Does the o 0003bf10: 70 70 6f 73 69 74 65 20 6f 66 20 60 67 65 74 4a pposite of `getJ 0003bf20: 53 44 6f 63 50 61 72 61 6d 65 74 65 72 54 61 67 SDocParameterTag 0003bf30: 73 60 3a 20 67 69 76 65 6e 20 61 20 4a 53 44 6f s`: given a JSDo 0003bf40: 63 20 70 61 72 61 6d 65 74 65 72 2c 20 66 69 6e c parameter, fin 0003bf50: 64 73 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 ds the parameter 0003bf60: 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 corresponding t 0003bf70: 6f 20 69 74 2e 20 2a 2f 0a 20 20 20 20 66 75 6e o it. */. fun 0003bf80: 63 74 69 6f 6e 20 67 65 74 50 61 72 61 6d 65 74 ction getParamet 0003bf90: 65 72 53 79 6d 62 6f 6c 46 72 6f 6d 4a 53 44 6f erSymbolFromJSDo 0003bfa0: 63 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 c(node) {. 0003bfb0: 20 20 69 66 20 28 6e 6f 64 65 2e 73 79 6d 62 6f if (node.symbo 0003bfc0: 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 l) {. 0003bfd0: 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 73 79 6d return node.sym 0003bfe0: 62 6f 6c 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 bol;. }. 0003bff0: 20 20 20 20 20 20 20 69 66 20 28 21 74 73 2e 69 if (!ts.i 0003c000: 73 49 64 65 6e 74 69 66 69 65 72 28 6e 6f 64 65 sIdentifier(node 0003c010: 2e 6e 61 6d 65 29 29 20 7b 0a 20 20 20 20 20 20 .name)) {. 0003c020: 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 6e 64 return und 0003c030: 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 efined;. 0003c040: 7d 0a 20 20 20 20 20 20 20 20 76 61 72 20 6e 61 }. var na 0003c050: 6d 65 20 3d 20 6e 6f 64 65 2e 6e 61 6d 65 2e 65 me = node.name.e 0003c060: 73 63 61 70 65 64 54 65 78 74 3b 0a 20 20 20 20 scapedText;. 0003c070: 20 20 20 20 76 61 72 20 64 65 63 6c 20 3d 20 67 var decl = g 0003c080: 65 74 48 6f 73 74 53 69 67 6e 61 74 75 72 65 46 etHostSignatureF 0003c090: 72 6f 6d 4a 53 44 6f 63 28 6e 6f 64 65 29 3b 0a romJSDoc(node);. 0003c0a0: 20 20 20 20 20 20 20 20 69 66 20 28 21 64 65 63 if (!dec 0003c0b0: 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 l) {. 0003c0c0: 20 72 65 74 75 72 6e 20 75 6e 64 65 66 69 6e 65 return undefine 0003c0d0: 64 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 d;. }. 0003c0e0: 20 20 20 20 20 76 61 72 20 70 61 72 61 6d 65 74 var paramet 0003c0f0: 65 72 20 3d 20 74 73 2e 66 69 6e 64 28 64 65 63 er = ts.find(dec 0003c100: 6c 2e 70 61 72 61 6d 65 74 65 72 73 2c 20 66 75 l.parameters, fu 0003c110: 6e 63 74 69 6f 6e 20 28 70 29 20 7b 20 72 65 74 nction (p) { ret 0003c120: 75 72 6e 20 70 2e 6e 61 6d 65 2e 6b 69 6e 64 20 urn p.name.kind 0003c130: 3d 3d 3d 20 37 39 20 2f 2a 20 53 79 6e 74 61 78 === 79 /* Syntax 0003c140: 4b 69 6e 64 2e 49 64 65 6e 74 69 66 69 65 72 20 Kind.Identifier 0003c150: 2a 2f 20 26 26 20 70 2e 6e 61 6d 65 2e 65 73 63 */ && p.name.esc 0003c160: 61 70 65 64 54 65 78 74 20 3d 3d 3d 20 6e 61 6d apedText === nam 0003c170: 65 3b 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 72 e; });. r 0003c180: 65 74 75 72 6e 20 70 61 72 61 6d 65 74 65 72 20 eturn parameter 0003c190: 26 26 20 70 61 72 61 6d 65 74 65 72 2e 73 79 6d && parameter.sym 0003c1a0: 62 6f 6c 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 bol;. }. t 0003c1b0: 73 2e 67 65 74 50 61 72 61 6d 65 74 65 72 53 79 s.getParameterSy 0003c1c0: 6d 62 6f 6c 46 72 6f 6d 4a 53 44 6f 63 20 3d 20 mbolFromJSDoc = 0003c1d0: 67 65 74 50 61 72 61 6d 65 74 65 72 53 79 6d 62 getParameterSymb 0003c1e0: 6f 6c 46 72 6f 6d 4a 53 44 6f 63 3b 0a 20 20 20 olFromJSDoc;. 0003c1f0: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 45 66 66 function getEff 0003c200: 65 63 74 69 76 65 43 6f 6e 74 61 69 6e 65 72 46 ectiveContainerF 0003c210: 6f 72 4a 53 44 6f 63 54 65 6d 70 6c 61 74 65 54 orJSDocTemplateT 0003c220: 61 67 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 ag(node) {. 0003c230: 20 20 20 69 66 20 28 74 73 2e 69 73 4a 53 44 6f if (ts.isJSDo 0003c240: 63 28 6e 6f 64 65 2e 70 61 72 65 6e 74 29 20 26 c(node.parent) & 0003c250: 26 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 74 61 & node.parent.ta 0003c260: 67 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 gs) {. 0003c270: 20 20 2f 2f 20 41 20 40 74 65 6d 70 6c 61 74 65 // A @template 0003c280: 20 74 61 67 20 62 65 6c 6f 6e 67 73 20 74 6f 20 tag belongs to 0003c290: 61 6e 79 20 40 74 79 70 65 64 65 66 2c 20 40 63 any @typedef, @c 0003c2a0: 61 6c 6c 62 61 63 6b 2c 20 6f 72 20 40 65 6e 75 allback, or @enu 0003c2b0: 6d 20 74 61 67 73 20 69 6e 20 74 68 65 20 73 61 m tags in the sa 0003c2c0: 6d 65 20 63 6f 6d 6d 65 6e 74 20 62 6c 6f 63 6b me comment block 0003c2d0: 2c 20 69 66 20 74 68 65 79 20 65 78 69 73 74 2e , if they exist. 0003c2e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var 0003c2f0: 20 74 79 70 65 41 6c 69 61 73 20 3d 20 74 73 2e typeAlias = ts. 0003c300: 66 69 6e 64 28 6e 6f 64 65 2e 70 61 72 65 6e 74 find(node.parent 0003c310: 2e 74 61 67 73 2c 20 69 73 4a 53 44 6f 63 54 79 .tags, isJSDocTy 0003c320: 70 65 41 6c 69 61 73 29 3b 0a 20 20 20 20 20 20 peAlias);. 0003c330: 20 20 20 20 20 20 69 66 20 28 74 79 70 65 41 6c if (typeAl 0003c340: 69 61 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ias) {. 0003c350: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 79 return ty 0003c360: 70 65 41 6c 69 61 73 3b 0a 20 20 20 20 20 20 20 peAlias;. 0003c370: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d }. } 0003c380: 0a 20 20 20 20 20 20 20 20 2f 2f 20 6f 74 68 65 . // othe 0003c390: 72 77 69 73 65 20 69 74 20 62 65 6c 6f 6e 67 73 rwise it belongs 0003c3a0: 20 74 6f 20 74 68 65 20 68 6f 73 74 20 69 74 20 to the host it 0003c3b0: 61 6e 6e 6f 74 61 74 65 73 0a 20 20 20 20 20 20 annotates. 0003c3c0: 20 20 72 65 74 75 72 6e 20 67 65 74 48 6f 73 74 return getHost 0003c3d0: 53 69 67 6e 61 74 75 72 65 46 72 6f 6d 4a 53 44 SignatureFromJSD 0003c3e0: 6f 63 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d 0a oc(node);. }. 0003c3f0: 20 20 20 20 74 73 2e 67 65 74 45 66 66 65 63 74 ts.getEffect 0003c400: 69 76 65 43 6f 6e 74 61 69 6e 65 72 46 6f 72 4a iveContainerForJ 0003c410: 53 44 6f 63 54 65 6d 70 6c 61 74 65 54 61 67 20 SDocTemplateTag 0003c420: 3d 20 67 65 74 45 66 66 65 63 74 69 76 65 43 6f = getEffectiveCo 0003c430: 6e 74 61 69 6e 65 72 46 6f 72 4a 53 44 6f 63 54 ntainerForJSDocT 0003c440: 65 6d 70 6c 61 74 65 54 61 67 3b 0a 20 20 20 20 emplateTag;. 0003c450: 66 75 6e 63 74 69 6f 6e 20 67 65 74 48 6f 73 74 function getHost 0003c460: 53 69 67 6e 61 74 75 72 65 46 72 6f 6d 4a 53 44 SignatureFromJSD 0003c470: 6f 63 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 oc(node) {. 0003c480: 20 20 20 76 61 72 20 68 6f 73 74 20 3d 20 67 65 var host = ge 0003c490: 74 45 66 66 65 63 74 69 76 65 4a 53 44 6f 63 48 tEffectiveJSDocH 0003c4a0: 6f 73 74 28 6e 6f 64 65 29 3b 0a 20 20 20 20 20 ost(node);. 0003c4b0: 20 20 20 69 66 20 28 68 6f 73 74 29 20 7b 0a 20 if (host) {. 0003c4c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0003c4d0: 6e 20 74 73 2e 69 73 50 72 6f 70 65 72 74 79 53 n ts.isPropertyS 0003c4e0: 69 67 6e 61 74 75 72 65 28 68 6f 73 74 29 20 26 ignature(host) & 0003c4f0: 26 20 68 6f 73 74 2e 74 79 70 65 20 26 26 20 74 & host.type && t 0003c500: 73 2e 69 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 s.isFunctionLike 0003c510: 28 68 6f 73 74 2e 74 79 70 65 29 20 3f 20 68 6f (host.type) ? ho 0003c520: 73 74 2e 74 79 70 65 20 3a 0a 20 20 20 20 20 20 st.type :. 0003c530: 20 20 20 20 20 20 20 20 20 20 74 73 2e 69 73 46 ts.isF 0003c540: 75 6e 63 74 69 6f 6e 4c 69 6b 65 28 68 6f 73 74 unctionLike(host 0003c550: 29 20 3f 20 68 6f 73 74 20 3a 20 75 6e 64 65 66 ) ? host : undef 0003c560: 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 7d 0a ined;. }. 0003c570: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 return u 0003c580: 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 7d 0a ndefined;. }. 0003c590: 20 20 20 20 74 73 2e 67 65 74 48 6f 73 74 53 69 ts.getHostSi 0003c5a0: 67 6e 61 74 75 72 65 46 72 6f 6d 4a 53 44 6f 63 gnatureFromJSDoc 0003c5b0: 20 3d 20 67 65 74 48 6f 73 74 53 69 67 6e 61 74 = getHostSignat 0003c5c0: 75 72 65 46 72 6f 6d 4a 53 44 6f 63 3b 0a 20 20 ureFromJSDoc;. 0003c5d0: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 45 66 function getEf 0003c5e0: 66 65 63 74 69 76 65 4a 53 44 6f 63 48 6f 73 74 fectiveJSDocHost 0003c5f0: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 0003c600: 20 76 61 72 20 68 6f 73 74 20 3d 20 67 65 74 4a var host = getJ 0003c610: 53 44 6f 63 48 6f 73 74 28 6e 6f 64 65 29 3b 0a SDocHost(node);. 0003c620: 20 20 20 20 20 20 20 20 69 66 20 28 68 6f 73 74 if (host 0003c630: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 0003c640: 72 65 74 75 72 6e 20 67 65 74 53 6f 75 72 63 65 return getSource 0003c650: 4f 66 44 65 66 61 75 6c 74 65 64 41 73 73 69 67 OfDefaultedAssig 0003c660: 6e 6d 65 6e 74 28 68 6f 73 74 29 0a 20 20 20 20 nment(host). 0003c670: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 67 || g 0003c680: 65 74 53 6f 75 72 63 65 4f 66 41 73 73 69 67 6e etSourceOfAssign 0003c690: 6d 65 6e 74 28 68 6f 73 74 29 0a 20 20 20 20 20 ment(host). 0003c6a0: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 67 65 || ge 0003c6b0: 74 53 69 6e 67 6c 65 49 6e 69 74 69 61 6c 69 7a tSingleInitializ 0003c6c0: 65 72 4f 66 56 61 72 69 61 62 6c 65 53 74 61 74 erOfVariableStat 0003c6d0: 65 6d 65 6e 74 4f 72 50 72 6f 70 65 72 74 79 44 ementOrPropertyD 0003c6e0: 65 63 6c 61 72 61 74 69 6f 6e 28 68 6f 73 74 29 eclaration(host) 0003c6f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0003c700: 20 7c 7c 20 67 65 74 53 69 6e 67 6c 65 56 61 72 || getSingleVar 0003c710: 69 61 62 6c 65 4f 66 56 61 72 69 61 62 6c 65 53 iableOfVariableS 0003c720: 74 61 74 65 6d 65 6e 74 28 68 6f 73 74 29 0a 20 tatement(host). 0003c730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c | 0003c740: 7c 20 67 65 74 4e 65 73 74 65 64 4d 6f 64 75 6c | getNestedModul 0003c750: 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 68 6f 73 eDeclaration(hos 0003c760: 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t). 0003c770: 20 20 20 7c 7c 20 68 6f 73 74 3b 0a 20 20 20 20 || host;. 0003c780: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 }. }. 0003c790: 74 73 2e 67 65 74 45 66 66 65 63 74 69 76 65 4a ts.getEffectiveJ 0003c7a0: 53 44 6f 63 48 6f 73 74 20 3d 20 67 65 74 45 66 SDocHost = getEf 0003c7b0: 66 65 63 74 69 76 65 4a 53 44 6f 63 48 6f 73 74 fectiveJSDocHost 0003c7c0: 3b 0a 20 20 20 20 2f 2a 2a 20 55 73 65 20 67 65 ;. /** Use ge 0003c7d0: 74 45 66 66 65 63 74 69 76 65 4a 53 44 6f 63 48 tEffectiveJSDocH 0003c7e0: 6f 73 74 20 69 66 20 79 6f 75 20 61 64 64 69 74 ost if you addit 0003c7f0: 69 6f 6e 61 6c 6c 79 20 6e 65 65 64 20 74 6f 20 ionally need to 0003c800: 6c 6f 6f 6b 20 66 6f 72 20 6a 73 64 6f 63 20 6f look for jsdoc o 0003c810: 6e 20 70 61 72 65 6e 74 20 6e 6f 64 65 73 2c 20 n parent nodes, 0003c820: 6c 69 6b 65 20 61 73 73 69 67 6e 6d 65 6e 74 73 like assignments 0003c830: 2e 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f . */. functio 0003c840: 6e 20 67 65 74 4a 53 44 6f 63 48 6f 73 74 28 6e n getJSDocHost(n 0003c850: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 ode) {. v 0003c860: 61 72 20 6a 73 44 6f 63 20 3d 20 67 65 74 4a 53 ar jsDoc = getJS 0003c870: 44 6f 63 52 6f 6f 74 28 6e 6f 64 65 29 3b 0a 20 DocRoot(node);. 0003c880: 20 20 20 20 20 20 20 69 66 20 28 21 6a 73 44 6f if (!jsDo 0003c890: 63 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 c) {. 0003c8a0: 20 72 65 74 75 72 6e 20 75 6e 64 65 66 69 6e 65 return undefine 0003c8b0: 64 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 d;. }. 0003c8c0: 20 20 20 20 20 76 61 72 20 68 6f 73 74 20 3d 20 var host = 0003c8d0: 6a 73 44 6f 63 2e 70 61 72 65 6e 74 3b 0a 20 20 jsDoc.parent;. 0003c8e0: 20 20 20 20 20 20 69 66 20 28 68 6f 73 74 20 26 if (host & 0003c8f0: 26 20 68 6f 73 74 2e 6a 73 44 6f 63 20 26 26 20 & host.jsDoc && 0003c900: 6a 73 44 6f 63 20 3d 3d 3d 20 74 73 2e 6c 61 73 jsDoc === ts.las 0003c910: 74 4f 72 55 6e 64 65 66 69 6e 65 64 28 68 6f 73 tOrUndefined(hos 0003c920: 74 2e 6a 73 44 6f 63 29 29 20 7b 0a 20 20 20 20 t.jsDoc)) {. 0003c930: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 return h 0003c940: 6f 73 74 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 ost;. }. 0003c950: 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4a }. ts.getJ 0003c960: 53 44 6f 63 48 6f 73 74 20 3d 20 67 65 74 4a 53 SDocHost = getJS 0003c970: 44 6f 63 48 6f 73 74 3b 0a 20 20 20 20 66 75 6e DocHost;. fun 0003c980: 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 52 6f ction getJSDocRo 0003c990: 6f 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 ot(node) {. 0003c9a0: 20 20 20 72 65 74 75 72 6e 20 74 73 2e 66 69 6e return ts.fin 0003c9b0: 64 41 6e 63 65 73 74 6f 72 28 6e 6f 64 65 2e 70 dAncestor(node.p 0003c9c0: 61 72 65 6e 74 2c 20 74 73 2e 69 73 4a 53 44 6f arent, ts.isJSDo 0003c9d0: 63 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 c);. }. ts 0003c9e0: 2e 67 65 74 4a 53 44 6f 63 52 6f 6f 74 20 3d 20 .getJSDocRoot = 0003c9f0: 67 65 74 4a 53 44 6f 63 52 6f 6f 74 3b 0a 20 20 getJSDocRoot;. 0003ca00: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 54 79 function getTy 0003ca10: 70 65 50 61 72 61 6d 65 74 65 72 46 72 6f 6d 4a peParameterFromJ 0003ca20: 73 44 6f 63 28 6e 6f 64 65 29 20 7b 0a 20 20 20 sDoc(node) {. 0003ca30: 20 20 20 20 20 76 61 72 20 6e 61 6d 65 20 3d 20 var name = 0003ca40: 6e 6f 64 65 2e 6e 61 6d 65 2e 65 73 63 61 70 65 node.name.escape 0003ca50: 64 54 65 78 74 3b 0a 20 20 20 20 20 20 20 20 76 dText;. v 0003ca60: 61 72 20 74 79 70 65 50 61 72 61 6d 65 74 65 72 ar typeParameter 0003ca70: 73 20 3d 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e s = node.parent. 0003ca80: 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 2e 74 79 parent.parent.ty 0003ca90: 70 65 50 61 72 61 6d 65 74 65 72 73 3b 0a 20 20 peParameters;. 0003caa0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 79 70 return typ 0003cab0: 65 50 61 72 61 6d 65 74 65 72 73 20 26 26 20 74 eParameters && t 0003cac0: 73 2e 66 69 6e 64 28 74 79 70 65 50 61 72 61 6d s.find(typeParam 0003cad0: 65 74 65 72 73 2c 20 66 75 6e 63 74 69 6f 6e 20 eters, function 0003cae0: 28 70 29 20 7b 20 72 65 74 75 72 6e 20 70 2e 6e (p) { return p.n 0003caf0: 61 6d 65 2e 65 73 63 61 70 65 64 54 65 78 74 20 ame.escapedText 0003cb00: 3d 3d 3d 20 6e 61 6d 65 3b 20 7d 29 3b 0a 20 20 === name; });. 0003cb10: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 54 79 }. ts.getTy 0003cb20: 70 65 50 61 72 61 6d 65 74 65 72 46 72 6f 6d 4a peParameterFromJ 0003cb30: 73 44 6f 63 20 3d 20 67 65 74 54 79 70 65 50 61 sDoc = getTypePa 0003cb40: 72 61 6d 65 74 65 72 46 72 6f 6d 4a 73 44 6f 63 rameterFromJsDoc 0003cb50: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 68 ;. function h 0003cb60: 61 73 54 79 70 65 41 72 67 75 6d 65 6e 74 73 28 asTypeArguments( 0003cb70: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 0003cb80: 72 65 74 75 72 6e 20 21 21 6e 6f 64 65 2e 74 79 return !!node.ty 0003cb90: 70 65 41 72 67 75 6d 65 6e 74 73 3b 0a 20 20 20 peArguments;. 0003cba0: 20 7d 0a 20 20 20 20 74 73 2e 68 61 73 54 79 70 }. ts.hasTyp 0003cbb0: 65 41 72 67 75 6d 65 6e 74 73 20 3d 20 68 61 73 eArguments = has 0003cbc0: 54 79 70 65 41 72 67 75 6d 65 6e 74 73 3b 0a 20 TypeArguments;. 0003cbd0: 20 20 20 76 61 72 20 41 73 73 69 67 6e 6d 65 6e var Assignmen 0003cbe0: 74 4b 69 6e 64 3b 0a 20 20 20 20 28 66 75 6e 63 tKind;. (func 0003cbf0: 74 69 6f 6e 20 28 41 73 73 69 67 6e 6d 65 6e 74 tion (Assignment 0003cc00: 4b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 Kind) {. 0003cc10: 41 73 73 69 67 6e 6d 65 6e 74 4b 69 6e 64 5b 41 AssignmentKind[A 0003cc20: 73 73 69 67 6e 6d 65 6e 74 4b 69 6e 64 5b 22 4e ssignmentKind["N 0003cc30: 6f 6e 65 22 5d 20 3d 20 30 5d 20 3d 20 22 4e 6f one"] = 0] = "No 0003cc40: 6e 65 22 3b 0a 20 20 20 20 20 20 20 20 41 73 73 ne";. Ass 0003cc50: 69 67 6e 6d 65 6e 74 4b 69 6e 64 5b 41 73 73 69 ignmentKind[Assi 0003cc60: 67 6e 6d 65 6e 74 4b 69 6e 64 5b 22 44 65 66 69 gnmentKind["Defi 0003cc70: 6e 69 74 65 22 5d 20 3d 20 31 5d 20 3d 20 22 44 nite"] = 1] = "D 0003cc80: 65 66 69 6e 69 74 65 22 3b 0a 20 20 20 20 20 20 efinite";. 0003cc90: 20 20 41 73 73 69 67 6e 6d 65 6e 74 4b 69 6e 64 AssignmentKind 0003cca0: 5b 41 73 73 69 67 6e 6d 65 6e 74 4b 69 6e 64 5b [AssignmentKind[ 0003ccb0: 22 43 6f 6d 70 6f 75 6e 64 22 5d 20 3d 20 32 5d "Compound"] = 2] 0003ccc0: 20 3d 20 22 43 6f 6d 70 6f 75 6e 64 22 3b 0a 20 = "Compound";. 0003ccd0: 20 20 20 7d 29 28 41 73 73 69 67 6e 6d 65 6e 74 })(Assignment 0003cce0: 4b 69 6e 64 20 3d 20 74 73 2e 41 73 73 69 67 6e Kind = ts.Assign 0003ccf0: 6d 65 6e 74 4b 69 6e 64 20 7c 7c 20 28 74 73 2e mentKind || (ts. 0003cd00: 41 73 73 69 67 6e 6d 65 6e 74 4b 69 6e 64 20 3d AssignmentKind = 0003cd10: 20 7b 7d 29 29 3b 0a 20 20 20 20 66 75 6e 63 74 {}));. funct 0003cd20: 69 6f 6e 20 67 65 74 41 73 73 69 67 6e 6d 65 6e ion getAssignmen 0003cd30: 74 54 61 72 67 65 74 4b 69 6e 64 28 6e 6f 64 65 tTargetKind(node 0003cd40: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 0003cd50: 70 61 72 65 6e 74 20 3d 20 6e 6f 64 65 2e 70 61 parent = node.pa 0003cd60: 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 77 68 rent;. wh 0003cd70: 69 6c 65 20 28 74 72 75 65 29 20 7b 0a 20 20 20 ile (true) {. 0003cd80: 20 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 switch 0003cd90: 28 70 61 72 65 6e 74 2e 6b 69 6e 64 29 20 7b 0a (parent.kind) {. 0003cda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003cdb0: 63 61 73 65 20 32 32 31 20 2f 2a 20 53 79 6e 74 case 221 /* Synt 0003cdc0: 61 78 4b 69 6e 64 2e 42 69 6e 61 72 79 45 78 70 axKind.BinaryExp 0003cdd0: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 0003cde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003cdf0: 76 61 72 20 62 69 6e 61 72 79 4f 70 65 72 61 74 var binaryOperat 0003ce00: 6f 72 20 3d 20 70 61 72 65 6e 74 2e 6f 70 65 72 or = parent.oper 0003ce10: 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 6e 64 3b 0a atorToken.kind;. 0003ce20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003ce30: 20 20 20 20 72 65 74 75 72 6e 20 69 73 41 73 73 return isAss 0003ce40: 69 67 6e 6d 65 6e 74 4f 70 65 72 61 74 6f 72 28 ignmentOperator( 0003ce50: 62 69 6e 61 72 79 4f 70 65 72 61 74 6f 72 29 20 binaryOperator) 0003ce60: 26 26 20 70 61 72 65 6e 74 2e 6c 65 66 74 20 3d && parent.left = 0003ce70: 3d 3d 20 6e 6f 64 65 20 3f 0a 20 20 20 20 20 20 == node ?. 0003ce80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003ce90: 20 20 62 69 6e 61 72 79 4f 70 65 72 61 74 6f 72 binaryOperator 0003cea0: 20 3d 3d 3d 20 36 33 20 2f 2a 20 53 79 6e 74 61 === 63 /* Synta 0003ceb0: 78 4b 69 6e 64 2e 45 71 75 61 6c 73 54 6f 6b 65 xKind.EqualsToke 0003cec0: 6e 20 2a 2f 20 7c 7c 20 69 73 4c 6f 67 69 63 61 n */ || isLogica 0003ced0: 6c 4f 72 43 6f 61 6c 65 73 63 69 6e 67 41 73 73 lOrCoalescingAss 0003cee0: 69 67 6e 6d 65 6e 74 4f 70 65 72 61 74 6f 72 28 ignmentOperator( 0003cef0: 62 69 6e 61 72 79 4f 70 65 72 61 74 6f 72 29 20 binaryOperator) 0003cf00: 3f 20 31 20 2f 2a 20 41 73 73 69 67 6e 6d 65 6e ? 1 /* Assignmen 0003cf10: 74 4b 69 6e 64 2e 44 65 66 69 6e 69 74 65 20 2a tKind.Definite * 0003cf20: 2f 20 3a 20 32 20 2f 2a 20 41 73 73 69 67 6e 6d / : 2 /* Assignm 0003cf30: 65 6e 74 4b 69 6e 64 2e 43 6f 6d 70 6f 75 6e 64 entKind.Compound 0003cf40: 20 2a 2f 20 3a 0a 20 20 20 20 20 20 20 20 20 20 */ :. 0003cf50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20 0 0003cf60: 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 4b 69 6e /* AssignmentKin 0003cf70: 64 2e 4e 6f 6e 65 20 2a 2f 3b 0a 20 20 20 20 20 d.None */;. 0003cf80: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0003cf90: 32 31 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 219 /* SyntaxKin 0003cfa0: 64 2e 50 72 65 66 69 78 55 6e 61 72 79 45 78 70 d.PrefixUnaryExp 0003cfb0: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 0003cfc0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0003cfd0: 20 32 32 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 220 /* SyntaxKi 0003cfe0: 6e 64 2e 50 6f 73 74 66 69 78 55 6e 61 72 79 45 nd.PostfixUnaryE 0003cff0: 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 xpression */:. 0003d000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003d010: 20 20 76 61 72 20 75 6e 61 72 79 4f 70 65 72 61 var unaryOpera 0003d020: 74 6f 72 20 3d 20 70 61 72 65 6e 74 2e 6f 70 65 tor = parent.ope 0003d030: 72 61 74 6f 72 3b 0a 20 20 20 20 20 20 20 20 20 rator;. 0003d040: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0003d050: 6e 20 75 6e 61 72 79 4f 70 65 72 61 74 6f 72 20 n unaryOperator 0003d060: 3d 3d 3d 20 34 35 20 2f 2a 20 53 79 6e 74 61 78 === 45 /* Syntax 0003d070: 4b 69 6e 64 2e 50 6c 75 73 50 6c 75 73 54 6f 6b Kind.PlusPlusTok 0003d080: 65 6e 20 2a 2f 20 7c 7c 20 75 6e 61 72 79 4f 70 en */ || unaryOp 0003d090: 65 72 61 74 6f 72 20 3d 3d 3d 20 34 36 20 2f 2a erator === 46 /* 0003d0a0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 69 6e 75 SyntaxKind.Minu 0003d0b0: 73 4d 69 6e 75 73 54 6f 6b 65 6e 20 2a 2f 20 3f sMinusToken */ ? 0003d0c0: 20 32 20 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 2 /* Assignment 0003d0d0: 4b 69 6e 64 2e 43 6f 6d 70 6f 75 6e 64 20 2a 2f Kind.Compound */ 0003d0e0: 20 3a 20 30 20 2f 2a 20 41 73 73 69 67 6e 6d 65 : 0 /* Assignme 0003d0f0: 6e 74 4b 69 6e 64 2e 4e 6f 6e 65 20 2a 2f 3b 0a ntKind.None */;. 0003d100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003d110: 63 61 73 65 20 32 34 33 20 2f 2a 20 53 79 6e 74 case 243 /* Synt 0003d120: 61 78 4b 69 6e 64 2e 46 6f 72 49 6e 53 74 61 74 axKind.ForInStat 0003d130: 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 ement */:. 0003d140: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 0003d150: 34 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 44 /* SyntaxKind 0003d160: 2e 46 6f 72 4f 66 53 74 61 74 65 6d 65 6e 74 20 .ForOfStatement 0003d170: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0003d180: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 return p 0003d190: 61 72 65 6e 74 2e 69 6e 69 74 69 61 6c 69 7a 65 arent.initialize 0003d1a0: 72 20 3d 3d 3d 20 6e 6f 64 65 20 3f 20 31 20 2f r === node ? 1 / 0003d1b0: 2a 20 41 73 73 69 67 6e 6d 65 6e 74 4b 69 6e 64 * AssignmentKind 0003d1c0: 2e 44 65 66 69 6e 69 74 65 20 2a 2f 20 3a 20 30 .Definite */ : 0 0003d1d0: 20 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 4b 69 /* AssignmentKi 0003d1e0: 6e 64 2e 4e 6f 6e 65 20 2a 2f 3b 0a 20 20 20 20 nd.None */;. 0003d1f0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0003d200: 20 32 31 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 212 /* SyntaxKi 0003d210: 6e 64 2e 50 61 72 65 6e 74 68 65 73 69 7a 65 64 nd.Parenthesized 0003d220: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 0003d230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0003d240: 61 73 65 20 32 30 34 20 2f 2a 20 53 79 6e 74 61 ase 204 /* Synta 0003d250: 78 4b 69 6e 64 2e 41 72 72 61 79 4c 69 74 65 72 xKind.ArrayLiter 0003d260: 61 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a alExpression */: 0003d270: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0003d280: 20 63 61 73 65 20 32 32 35 20 2f 2a 20 53 79 6e case 225 /* Syn 0003d290: 74 61 78 4b 69 6e 64 2e 53 70 72 65 61 64 45 6c taxKind.SpreadEl 0003d2a0: 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 ement */:. 0003d2b0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 0003d2c0: 33 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 30 /* SyntaxKind 0003d2d0: 2e 4e 6f 6e 4e 75 6c 6c 45 78 70 72 65 73 73 69 .NonNullExpressi 0003d2e0: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 0003d2f0: 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 node 0003d300: 3d 20 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 = parent;. 0003d310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br 0003d320: 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 eak;. 0003d330: 20 20 20 20 20 63 61 73 65 20 32 39 38 20 2f 2a case 298 /* 0003d340: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 70 72 65 SyntaxKind.Spre 0003d350: 61 64 41 73 73 69 67 6e 6d 65 6e 74 20 2a 2f 3a adAssignment */: 0003d360: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0003d370: 20 20 20 20 20 6e 6f 64 65 20 3d 20 70 61 72 65 node = pare 0003d380: 6e 74 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 nt.parent;. 0003d390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 b 0003d3a0: 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 reak;. 0003d3b0: 20 20 20 20 20 20 63 61 73 65 20 32 39 37 20 2f case 297 / 0003d3c0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 68 6f * SyntaxKind.Sho 0003d3d0: 72 74 68 61 6e 64 50 72 6f 70 65 72 74 79 41 73 rthandPropertyAs 0003d3e0: 73 69 67 6e 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 signment */:. 0003d3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003d400: 20 69 66 20 28 70 61 72 65 6e 74 2e 6e 61 6d 65 if (parent.name 0003d410: 20 21 3d 3d 20 6e 6f 64 65 29 20 7b 0a 20 20 20 !== node) {. 0003d420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003d430: 20 20 20 20 20 72 65 74 75 72 6e 20 30 20 2f 2a return 0 /* 0003d440: 20 41 73 73 69 67 6e 6d 65 6e 74 4b 69 6e 64 2e AssignmentKind. 0003d450: 4e 6f 6e 65 20 2a 2f 3b 0a 20 20 20 20 20 20 20 None */;. 0003d460: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 }. 0003d470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003d480: 20 20 20 6e 6f 64 65 20 3d 20 70 61 72 65 6e 74 node = parent 0003d490: 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 .parent;. 0003d4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 bre 0003d4b0: 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ak;. 0003d4c0: 20 20 20 20 63 61 73 65 20 32 39 36 20 2f 2a 20 case 296 /* 0003d4d0: 53 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 SyntaxKind.Prope 0003d4e0: 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 20 2a 2f rtyAssignment */ 0003d4f0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0003d500: 20 20 20 20 20 20 69 66 20 28 70 61 72 65 6e 74 if (parent 0003d510: 2e 6e 61 6d 65 20 3d 3d 3d 20 6e 6f 64 65 29 20 .name === node) 0003d520: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 0003d530: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 0003d540: 20 30 20 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 0 /* Assignment 0003d550: 4b 69 6e 64 2e 4e 6f 6e 65 20 2a 2f 3b 0a 20 20 Kind.None */;. 0003d560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003d570: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }. 0003d580: 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 70 node = p 0003d590: 61 72 65 6e 74 2e 70 61 72 65 6e 74 3b 0a 20 20 arent.parent;. 0003d5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003d5b0: 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 break;. 0003d5c0: 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 default 0003d5d0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0003d5e0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 20 2f return 0 / 0003d5f0: 2a 20 41 73 73 69 67 6e 6d 65 6e 74 4b 69 6e 64 * AssignmentKind 0003d600: 2e 4e 6f 6e 65 20 2a 2f 3b 0a 20 20 20 20 20 20 .None */;. 0003d610: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 0003d620: 20 20 20 20 70 61 72 65 6e 74 20 3d 20 6e 6f 64 parent = nod 0003d630: 65 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 e.parent;. 0003d640: 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 }. }. ts 0003d650: 2e 67 65 74 41 73 73 69 67 6e 6d 65 6e 74 54 61 .getAssignmentTa 0003d660: 72 67 65 74 4b 69 6e 64 20 3d 20 67 65 74 41 73 rgetKind = getAs 0003d670: 73 69 67 6e 6d 65 6e 74 54 61 72 67 65 74 4b 69 signmentTargetKi 0003d680: 6e 64 3b 0a 20 20 20 20 2f 2f 20 41 20 6e 6f 64 nd;. // A nod 0003d690: 65 20 69 73 20 61 6e 20 61 73 73 69 67 6e 6d 65 e is an assignme 0003d6a0: 6e 74 20 74 61 72 67 65 74 20 69 66 20 69 74 20 nt target if it 0003d6b0: 69 73 20 6f 6e 20 74 68 65 20 6c 65 66 74 20 68 is on the left h 0003d6c0: 61 6e 64 20 73 69 64 65 20 6f 66 20 61 6e 20 27 and side of an ' 0003d6d0: 3d 27 20 74 6f 6b 65 6e 2c 20 69 66 20 69 74 20 =' token, if it 0003d6e0: 69 73 20 70 61 72 65 6e 74 65 64 20 62 79 20 61 is parented by a 0003d6f0: 20 70 72 6f 70 65 72 74 79 0a 20 20 20 20 2f 2f property. // 0003d700: 20 61 73 73 69 67 6e 6d 65 6e 74 20 69 6e 20 61 assignment in a 0003d710: 6e 20 6f 62 6a 65 63 74 20 6c 69 74 65 72 61 6c n object literal 0003d720: 20 74 68 61 74 20 69 73 20 61 6e 20 61 73 73 69 that is an assi 0003d730: 67 6e 6d 65 6e 74 20 74 61 72 67 65 74 2c 20 6f gnment target, o 0003d740: 72 20 69 66 20 69 74 20 69 73 20 70 61 72 65 6e r if it is paren 0003d750: 74 65 64 20 62 79 20 61 6e 20 61 72 72 61 79 20 ted by an array 0003d760: 6c 69 74 65 72 61 6c 20 74 68 61 74 20 69 73 0a literal that is. 0003d770: 20 20 20 20 2f 2f 20 61 6e 20 61 73 73 69 67 6e // an assign 0003d780: 6d 65 6e 74 20 74 61 72 67 65 74 2e 20 45 78 61 ment target. Exa 0003d790: 6d 70 6c 65 73 20 69 6e 63 6c 75 64 65 20 27 61 mples include 'a 0003d7a0: 20 3d 20 78 78 78 27 2c 20 27 7b 20 70 3a 20 61 = xxx', '{ p: a 0003d7b0: 20 7d 20 3d 20 78 78 78 27 2c 20 27 5b 7b 20 61 } = xxx', '[{ a 0003d7c0: 20 7d 5d 20 3d 20 78 78 78 27 2e 0a 20 20 20 20 }] = xxx'.. 0003d7d0: 2f 2f 20 28 4e 6f 74 65 20 74 68 61 74 20 60 70 // (Note that `p 0003d7e0: 60 20 69 73 20 6e 6f 74 20 61 20 74 61 72 67 65 ` is not a targe 0003d7f0: 74 20 69 6e 20 74 68 65 20 61 62 6f 76 65 20 65 t in the above e 0003d800: 78 61 6d 70 6c 65 73 2c 20 6f 6e 6c 79 20 60 61 xamples, only `a 0003d810: 60 2e 29 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e `.). function 0003d820: 20 69 73 41 73 73 69 67 6e 6d 65 6e 74 54 61 72 isAssignmentTar 0003d830: 67 65 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 get(node) {. 0003d840: 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 41 73 return getAs 0003d850: 73 69 67 6e 6d 65 6e 74 54 61 72 67 65 74 4b 69 signmentTargetKi 0003d860: 6e 64 28 6e 6f 64 65 29 20 21 3d 3d 20 30 20 2f nd(node) !== 0 / 0003d870: 2a 20 41 73 73 69 67 6e 6d 65 6e 74 4b 69 6e 64 * AssignmentKind 0003d880: 2e 4e 6f 6e 65 20 2a 2f 3b 0a 20 20 20 20 7d 0a .None */;. }. 0003d890: 20 20 20 20 74 73 2e 69 73 41 73 73 69 67 6e 6d ts.isAssignm 0003d8a0: 65 6e 74 54 61 72 67 65 74 20 3d 20 69 73 41 73 entTarget = isAs 0003d8b0: 73 69 67 6e 6d 65 6e 74 54 61 72 67 65 74 3b 0a signmentTarget;. 0003d8c0: 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 49 /**. * I 0003d8d0: 6e 64 69 63 61 74 65 73 20 77 68 65 74 68 65 72 ndicates whether 0003d8e0: 20 61 20 6e 6f 64 65 20 63 6f 75 6c 64 20 63 6f a node could co 0003d8f0: 6e 74 61 69 6e 20 61 20 60 76 61 72 60 20 56 61 ntain a `var` Va 0003d900: 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f riableDeclaratio 0003d910: 6e 4c 69 73 74 20 74 68 61 74 20 63 6f 6e 74 72 nList that contr 0003d920: 69 62 75 74 65 73 20 74 6f 0a 20 20 20 20 20 2a ibutes to. * 0003d930: 20 74 68 65 20 73 61 6d 65 20 60 76 61 72 60 20 the same `var` 0003d940: 64 65 63 6c 61 72 61 74 69 6f 6e 20 73 63 6f 70 declaration scop 0003d950: 65 20 61 73 20 74 68 65 20 6e 6f 64 65 27 73 20 e as the node's 0003d960: 70 61 72 65 6e 74 2e 0a 20 20 20 20 20 2a 2f 0a parent.. */. 0003d970: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4e function isN 0003d980: 6f 64 65 57 69 74 68 50 6f 73 73 69 62 6c 65 48 odeWithPossibleH 0003d990: 6f 69 73 74 65 64 44 65 63 6c 61 72 61 74 69 6f oistedDeclaratio 0003d9a0: 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 n(node) {. 0003d9b0: 20 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b switch (node.k 0003d9c0: 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ind) {. 0003d9d0: 20 20 20 63 61 73 65 20 32 33 35 20 2f 2a 20 53 case 235 /* S 0003d9e0: 79 6e 74 61 78 4b 69 6e 64 2e 42 6c 6f 63 6b 20 yntaxKind.Block 0003d9f0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0003da00: 63 61 73 65 20 32 33 37 20 2f 2a 20 53 79 6e 74 case 237 /* Synt 0003da10: 61 78 4b 69 6e 64 2e 56 61 72 69 61 62 6c 65 53 axKind.VariableS 0003da20: 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 tatement */:. 0003da30: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 34 case 24 0003da40: 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 8 /* SyntaxKind. 0003da50: 57 69 74 68 53 74 61 74 65 6d 65 6e 74 20 2a 2f WithStatement */ 0003da60: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 0003da70: 73 65 20 32 33 39 20 2f 2a 20 53 79 6e 74 61 78 se 239 /* Syntax 0003da80: 4b 69 6e 64 2e 49 66 53 74 61 74 65 6d 65 6e 74 Kind.IfStatement 0003da90: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 0003daa0: 20 63 61 73 65 20 32 34 39 20 2f 2a 20 53 79 6e case 249 /* Syn 0003dab0: 74 61 78 4b 69 6e 64 2e 53 77 69 74 63 68 53 74 taxKind.SwitchSt 0003dac0: 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 atement */:. 0003dad0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 36 33 case 263 0003dae0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 /* SyntaxKind.C 0003daf0: 61 73 65 42 6c 6f 63 6b 20 2a 2f 3a 0a 20 20 20 aseBlock */:. 0003db00: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 38 case 28 0003db10: 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 9 /* SyntaxKind. 0003db20: 43 61 73 65 43 6c 61 75 73 65 20 2a 2f 3a 0a 20 CaseClause */:. 0003db30: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0003db40: 32 39 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 290 /* SyntaxKin 0003db50: 64 2e 44 65 66 61 75 6c 74 43 6c 61 75 73 65 20 d.DefaultClause 0003db60: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0003db70: 63 61 73 65 20 32 35 30 20 2f 2a 20 53 79 6e 74 case 250 /* Synt 0003db80: 61 78 4b 69 6e 64 2e 4c 61 62 65 6c 65 64 53 74 axKind.LabeledSt 0003db90: 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 atement */:. 0003dba0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 34 32 case 242 0003dbb0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 /* SyntaxKind.F 0003dbc0: 6f 72 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a orStatement */:. 0003dbd0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0003dbe0: 20 32 34 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 243 /* SyntaxKi 0003dbf0: 6e 64 2e 46 6f 72 49 6e 53 74 61 74 65 6d 65 6e nd.ForInStatemen 0003dc00: 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 t */:. 0003dc10: 20 20 63 61 73 65 20 32 34 34 20 2f 2a 20 53 79 case 244 /* Sy 0003dc20: 6e 74 61 78 4b 69 6e 64 2e 46 6f 72 4f 66 53 74 ntaxKind.ForOfSt 0003dc30: 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 atement */:. 0003dc40: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 34 30 case 240 0003dc50: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 44 /* SyntaxKind.D 0003dc60: 6f 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 oStatement */:. 0003dc70: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0003dc80: 32 34 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 241 /* SyntaxKin 0003dc90: 64 2e 57 68 69 6c 65 53 74 61 74 65 6d 65 6e 74 d.WhileStatement 0003dca0: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 0003dcb0: 20 63 61 73 65 20 32 35 32 20 2f 2a 20 53 79 6e case 252 /* Syn 0003dcc0: 74 61 78 4b 69 6e 64 2e 54 72 79 53 74 61 74 65 taxKind.TryState 0003dcd0: 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ment */:. 0003dce0: 20 20 20 20 20 63 61 73 65 20 32 39 32 20 2f 2a case 292 /* 0003dcf0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 61 74 63 SyntaxKind.Catc 0003dd00: 68 43 6c 61 75 73 65 20 2a 2f 3a 0a 20 20 20 20 hClause */:. 0003dd10: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 0003dd20: 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 rn true;. 0003dd30: 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 }. retur 0003dd40: 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 n false;. }. 0003dd50: 20 20 20 74 73 2e 69 73 4e 6f 64 65 57 69 74 68 ts.isNodeWith 0003dd60: 50 6f 73 73 69 62 6c 65 48 6f 69 73 74 65 64 44 PossibleHoistedD 0003dd70: 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 69 73 4e eclaration = isN 0003dd80: 6f 64 65 57 69 74 68 50 6f 73 73 69 62 6c 65 48 odeWithPossibleH 0003dd90: 6f 69 73 74 65 64 44 65 63 6c 61 72 61 74 69 6f oistedDeclaratio 0003dda0: 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 n;. function 0003ddb0: 69 73 56 61 6c 75 65 53 69 67 6e 61 74 75 72 65 isValueSignature 0003ddc0: 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 Declaration(node 0003ddd0: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0003dde0: 72 6e 20 74 73 2e 69 73 46 75 6e 63 74 69 6f 6e rn ts.isFunction 0003ddf0: 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 Expression(node) 0003de00: 20 7c 7c 20 74 73 2e 69 73 41 72 72 6f 77 46 75 || ts.isArrowFu 0003de10: 6e 63 74 69 6f 6e 28 6e 6f 64 65 29 20 7c 7c 20 nction(node) || 0003de20: 74 73 2e 69 73 4d 65 74 68 6f 64 4f 72 41 63 63 ts.isMethodOrAcc 0003de30: 65 73 73 6f 72 28 6e 6f 64 65 29 20 7c 7c 20 74 essor(node) || t 0003de40: 73 2e 69 73 46 75 6e 63 74 69 6f 6e 44 65 63 6c s.isFunctionDecl 0003de50: 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 20 7c 7c aration(node) || 0003de60: 20 74 73 2e 69 73 43 6f 6e 73 74 72 75 63 74 6f ts.isConstructo 0003de70: 72 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 rDeclaration(nod 0003de80: 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 e);. }. ts 0003de90: 2e 69 73 56 61 6c 75 65 53 69 67 6e 61 74 75 72 .isValueSignatur 0003dea0: 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 69 eDeclaration = i 0003deb0: 73 56 61 6c 75 65 53 69 67 6e 61 74 75 72 65 44 sValueSignatureD 0003dec0: 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 20 eclaration;. 0003ded0: 66 75 6e 63 74 69 6f 6e 20 77 61 6c 6b 55 70 28 function walkUp( 0003dee0: 6e 6f 64 65 2c 20 6b 69 6e 64 29 20 7b 0a 20 20 node, kind) {. 0003def0: 20 20 20 20 20 20 77 68 69 6c 65 20 28 6e 6f 64 while (nod 0003df00: 65 20 26 26 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d e && node.kind = 0003df10: 3d 3d 20 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 == kind) {. 0003df20: 20 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 6e 6f node = no 0003df30: 64 65 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 de.parent;. 0003df40: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 }. ret 0003df50: 75 72 6e 20 6e 6f 64 65 3b 0a 20 20 20 20 7d 0a urn node;. }. 0003df60: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 77 61 6c function wal 0003df70: 6b 55 70 50 61 72 65 6e 74 68 65 73 69 7a 65 64 kUpParenthesized 0003df80: 54 79 70 65 73 28 6e 6f 64 65 29 20 7b 0a 20 20 Types(node) {. 0003df90: 20 20 20 20 20 20 72 65 74 75 72 6e 20 77 61 6c return wal 0003dfa0: 6b 55 70 28 6e 6f 64 65 2c 20 31 39 31 20 2f 2a kUp(node, 191 /* 0003dfb0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 61 72 65 SyntaxKind.Pare 0003dfc0: 6e 74 68 65 73 69 7a 65 64 54 79 70 65 20 2a 2f nthesizedType */ 0003dfd0: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 0003dfe0: 77 61 6c 6b 55 70 50 61 72 65 6e 74 68 65 73 69 walkUpParenthesi 0003dff0: 7a 65 64 54 79 70 65 73 20 3d 20 77 61 6c 6b 55 zedTypes = walkU 0003e000: 70 50 61 72 65 6e 74 68 65 73 69 7a 65 64 54 79 pParenthesizedTy 0003e010: 70 65 73 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f pes;. functio 0003e020: 6e 20 77 61 6c 6b 55 70 50 61 72 65 6e 74 68 65 n walkUpParenthe 0003e030: 73 69 7a 65 64 45 78 70 72 65 73 73 69 6f 6e 73 sizedExpressions 0003e040: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 0003e050: 20 72 65 74 75 72 6e 20 77 61 6c 6b 55 70 28 6e return walkUp(n 0003e060: 6f 64 65 2c 20 32 31 32 20 2f 2a 20 53 79 6e 74 ode, 212 /* Synt 0003e070: 61 78 4b 69 6e 64 2e 50 61 72 65 6e 74 68 65 73 axKind.Parenthes 0003e080: 69 7a 65 64 45 78 70 72 65 73 73 69 6f 6e 20 2a izedExpression * 0003e090: 2f 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 /);. }. ts 0003e0a0: 2e 77 61 6c 6b 55 70 50 61 72 65 6e 74 68 65 73 .walkUpParenthes 0003e0b0: 69 7a 65 64 45 78 70 72 65 73 73 69 6f 6e 73 20 izedExpressions 0003e0c0: 3d 20 77 61 6c 6b 55 70 50 61 72 65 6e 74 68 65 = walkUpParenthe 0003e0d0: 73 69 7a 65 64 45 78 70 72 65 73 73 69 6f 6e 73 sizedExpressions 0003e0e0: 3b 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a ;. /**. * 0003e0f0: 20 57 61 6c 6b 73 20 75 70 20 70 61 72 65 6e 74 Walks up parent 0003e100: 68 65 73 69 7a 65 64 20 74 79 70 65 73 2e 0a 20 hesized types.. 0003e110: 20 20 20 20 2a 20 49 74 20 72 65 74 75 72 6e 73 * It returns 0003e120: 20 62 6f 74 68 20 74 68 65 20 6f 75 74 65 72 6d both the outerm 0003e130: 6f 73 74 20 70 61 72 65 6e 74 68 65 73 69 7a 65 ost parenthesize 0003e140: 64 20 74 79 70 65 20 61 6e 64 20 69 74 73 20 70 d type and its p 0003e150: 61 72 65 6e 74 2e 0a 20 20 20 20 20 2a 20 49 66 arent.. * If 0003e160: 20 67 69 76 65 6e 20 6e 6f 64 65 20 69 73 20 6e given node is n 0003e170: 6f 74 20 61 20 70 61 72 65 6e 74 68 65 73 69 65 ot a parenthesie 0003e180: 7a 64 20 74 79 70 65 2c 20 75 6e 64 65 66 69 6e zd type, undefin 0003e190: 65 64 20 69 73 20 72 65 74 75 72 6e 20 61 73 20 ed is return as 0003e1a0: 74 68 65 20 66 6f 72 6d 65 72 2e 0a 20 20 20 20 the former.. 0003e1b0: 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e */. function 0003e1c0: 20 77 61 6c 6b 55 70 50 61 72 65 6e 74 68 65 73 walkUpParenthes 0003e1d0: 69 7a 65 64 54 79 70 65 73 41 6e 64 47 65 74 50 izedTypesAndGetP 0003e1e0: 61 72 65 6e 74 41 6e 64 43 68 69 6c 64 28 6e 6f arentAndChild(no 0003e1f0: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 de) {. va 0003e200: 72 20 63 68 69 6c 64 3b 0a 20 20 20 20 20 20 20 r child;. 0003e210: 20 77 68 69 6c 65 20 28 6e 6f 64 65 20 26 26 20 while (node && 0003e220: 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 39 node.kind === 19 0003e230: 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 1 /* SyntaxKind. 0003e240: 50 61 72 65 6e 74 68 65 73 69 7a 65 64 54 79 70 ParenthesizedTyp 0003e250: 65 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 20 e */) {. 0003e260: 20 20 20 20 63 68 69 6c 64 20 3d 20 6e 6f 64 65 child = node 0003e270: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f ;. no 0003e280: 64 65 20 3d 20 6e 6f 64 65 2e 70 61 72 65 6e 74 de = node.parent 0003e290: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 0003e2a0: 20 20 20 20 72 65 74 75 72 6e 20 5b 63 68 69 6c return [chil 0003e2b0: 64 2c 20 6e 6f 64 65 5d 3b 0a 20 20 20 20 7d 0a d, node];. }. 0003e2c0: 20 20 20 20 74 73 2e 77 61 6c 6b 55 70 50 61 72 ts.walkUpPar 0003e2d0: 65 6e 74 68 65 73 69 7a 65 64 54 79 70 65 73 41 enthesizedTypesA 0003e2e0: 6e 64 47 65 74 50 61 72 65 6e 74 41 6e 64 43 68 ndGetParentAndCh 0003e2f0: 69 6c 64 20 3d 20 77 61 6c 6b 55 70 50 61 72 65 ild = walkUpPare 0003e300: 6e 74 68 65 73 69 7a 65 64 54 79 70 65 73 41 6e nthesizedTypesAn 0003e310: 64 47 65 74 50 61 72 65 6e 74 41 6e 64 43 68 69 dGetParentAndChi 0003e320: 6c 64 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ld;. function 0003e330: 20 73 6b 69 70 54 79 70 65 50 61 72 65 6e 74 68 skipTypeParenth 0003e340: 65 73 65 73 28 6e 6f 64 65 29 20 7b 0a 20 20 20 eses(node) {. 0003e350: 20 20 20 20 20 77 68 69 6c 65 20 28 74 73 2e 69 while (ts.i 0003e360: 73 50 61 72 65 6e 74 68 65 73 69 7a 65 64 54 79 sParenthesizedTy 0003e370: 70 65 4e 6f 64 65 28 6e 6f 64 65 29 29 0a 20 20 peNode(node)). 0003e380: 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d node = 0003e390: 20 6e 6f 64 65 2e 74 79 70 65 3b 0a 20 20 20 20 node.type;. 0003e3a0: 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 3b return node; 0003e3b0: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 73 6b . }. ts.sk 0003e3c0: 69 70 54 79 70 65 50 61 72 65 6e 74 68 65 73 65 ipTypeParenthese 0003e3d0: 73 20 3d 20 73 6b 69 70 54 79 70 65 50 61 72 65 s = skipTypePare 0003e3e0: 6e 74 68 65 73 65 73 3b 0a 20 20 20 20 66 75 6e ntheses;. fun 0003e3f0: 63 74 69 6f 6e 20 73 6b 69 70 50 61 72 65 6e 74 ction skipParent 0003e400: 68 65 73 65 73 28 6e 6f 64 65 2c 20 65 78 63 6c heses(node, excl 0003e410: 75 64 65 4a 53 44 6f 63 54 79 70 65 41 73 73 65 udeJSDocTypeAsse 0003e420: 72 74 69 6f 6e 73 29 20 7b 0a 20 20 20 20 20 20 rtions) {. 0003e430: 20 20 76 61 72 20 66 6c 61 67 73 20 3d 20 65 78 var flags = ex 0003e440: 63 6c 75 64 65 4a 53 44 6f 63 54 79 70 65 41 73 cludeJSDocTypeAs 0003e450: 73 65 72 74 69 6f 6e 73 20 3f 0a 20 20 20 20 20 sertions ?. 0003e460: 20 20 20 20 20 20 20 31 20 2f 2a 20 4f 75 74 65 1 /* Oute 0003e470: 72 45 78 70 72 65 73 73 69 6f 6e 4b 69 6e 64 73 rExpressionKinds 0003e480: 2e 50 61 72 65 6e 74 68 65 73 65 73 20 2a 2f 20 .Parentheses */ 0003e490: 7c 20 31 36 20 2f 2a 20 4f 75 74 65 72 45 78 70 | 16 /* OuterExp 0003e4a0: 72 65 73 73 69 6f 6e 4b 69 6e 64 73 2e 45 78 63 ressionKinds.Exc 0003e4b0: 6c 75 64 65 4a 53 44 6f 63 54 79 70 65 41 73 73 ludeJSDocTypeAss 0003e4c0: 65 72 74 69 6f 6e 20 2a 2f 20 3a 0a 20 20 20 20 ertion */ :. 0003e4d0: 20 20 20 20 20 20 20 20 31 20 2f 2a 20 4f 75 74 1 /* Out 0003e4e0: 65 72 45 78 70 72 65 73 73 69 6f 6e 4b 69 6e 64 erExpressionKind 0003e4f0: 73 2e 50 61 72 65 6e 74 68 65 73 65 73 20 2a 2f s.Parentheses */ 0003e500: 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e ;. return 0003e510: 20 74 73 2e 73 6b 69 70 4f 75 74 65 72 45 78 70 ts.skipOuterExp 0003e520: 72 65 73 73 69 6f 6e 73 28 6e 6f 64 65 2c 20 66 ressions(node, f 0003e530: 6c 61 67 73 29 3b 0a 20 20 20 20 7d 0a 20 20 20 lags);. }. 0003e540: 20 74 73 2e 73 6b 69 70 50 61 72 65 6e 74 68 65 ts.skipParenthe 0003e550: 73 65 73 20 3d 20 73 6b 69 70 50 61 72 65 6e 74 ses = skipParent 0003e560: 68 65 73 65 73 3b 0a 20 20 20 20 2f 2f 20 61 20 heses;. // a 0003e570: 6e 6f 64 65 20 69 73 20 64 65 6c 65 74 65 20 74 node is delete t 0003e580: 61 72 67 65 74 20 69 66 66 2e 20 69 74 20 69 73 arget iff. it is 0003e590: 20 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 45 PropertyAccessE 0003e5a0: 78 70 72 65 73 73 69 6f 6e 2f 45 6c 65 6d 65 6e xpression/Elemen 0003e5b0: 74 41 63 63 65 73 73 45 78 70 72 65 73 73 69 6f tAccessExpressio 0003e5c0: 6e 20 77 69 74 68 20 70 61 72 65 6e 74 68 65 73 n with parenthes 0003e5d0: 65 73 20 73 6b 69 70 70 65 64 0a 20 20 20 20 66 es skipped. f 0003e5e0: 75 6e 63 74 69 6f 6e 20 69 73 44 65 6c 65 74 65 unction isDelete 0003e5f0: 54 61 72 67 65 74 28 6e 6f 64 65 29 20 7b 0a 20 Target(node) {. 0003e600: 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e if (node. 0003e610: 6b 69 6e 64 20 21 3d 3d 20 32 30 36 20 2f 2a 20 kind !== 206 /* 0003e620: 53 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 SyntaxKind.Prope 0003e630: 72 74 79 41 63 63 65 73 73 45 78 70 72 65 73 73 rtyAccessExpress 0003e640: 69 6f 6e 20 2a 2f 20 26 26 20 6e 6f 64 65 2e 6b ion */ && node.k 0003e650: 69 6e 64 20 21 3d 3d 20 32 30 37 20 2f 2a 20 53 ind !== 207 /* S 0003e660: 79 6e 74 61 78 4b 69 6e 64 2e 45 6c 65 6d 65 6e yntaxKind.Elemen 0003e670: 74 41 63 63 65 73 73 45 78 70 72 65 73 73 69 6f tAccessExpressio 0003e680: 6e 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 20 n */) {. 0003e690: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 return false 0003e6a0: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 0003e6b0: 20 20 20 20 6e 6f 64 65 20 3d 20 77 61 6c 6b 55 node = walkU 0003e6c0: 70 50 61 72 65 6e 74 68 65 73 69 7a 65 64 45 78 pParenthesizedEx 0003e6d0: 70 72 65 73 73 69 6f 6e 73 28 6e 6f 64 65 2e 70 pressions(node.p 0003e6e0: 61 72 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 arent);. 0003e6f0: 72 65 74 75 72 6e 20 6e 6f 64 65 20 26 26 20 6e return node && n 0003e700: 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 31 35 ode.kind === 215 0003e710: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 44 /* SyntaxKind.D 0003e720: 65 6c 65 74 65 45 78 70 72 65 73 73 69 6f 6e 20 eleteExpression 0003e730: 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 */;. }. ts 0003e740: 2e 69 73 44 65 6c 65 74 65 54 61 72 67 65 74 20 .isDeleteTarget 0003e750: 3d 20 69 73 44 65 6c 65 74 65 54 61 72 67 65 74 = isDeleteTarget 0003e760: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 0003e770: 73 4e 6f 64 65 44 65 73 63 65 6e 64 61 6e 74 4f sNodeDescendantO 0003e780: 66 28 6e 6f 64 65 2c 20 61 6e 63 65 73 74 6f 72 f(node, ancestor 0003e790: 29 20 7b 0a 20 20 20 20 20 20 20 20 77 68 69 6c ) {. whil 0003e7a0: 65 20 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 e (node) {. 0003e7b0: 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 20 if (node 0003e7c0: 3d 3d 3d 20 61 6e 63 65 73 74 6f 72 29 0a 20 20 === ancestor). 0003e7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 0003e7e0: 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 turn true;. 0003e7f0: 20 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 6e 6f node = no 0003e800: 64 65 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 de.parent;. 0003e810: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 }. ret 0003e820: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d urn false;. } 0003e830: 0a 20 20 20 20 74 73 2e 69 73 4e 6f 64 65 44 65 . ts.isNodeDe 0003e840: 73 63 65 6e 64 61 6e 74 4f 66 20 3d 20 69 73 4e scendantOf = isN 0003e850: 6f 64 65 44 65 73 63 65 6e 64 61 6e 74 4f 66 3b odeDescendantOf; 0003e860: 0a 20 20 20 20 2f 2f 20 54 72 75 65 20 69 66 20 . // True if 0003e870: 60 6e 61 6d 65 60 20 69 73 20 74 68 65 20 6e 61 `name` is the na 0003e880: 6d 65 20 6f 66 20 61 20 64 65 63 6c 61 72 61 74 me of a declarat 0003e890: 69 6f 6e 20 6e 6f 64 65 0a 20 20 20 20 66 75 6e ion node. fun 0003e8a0: 63 74 69 6f 6e 20 69 73 44 65 63 6c 61 72 61 74 ction isDeclarat 0003e8b0: 69 6f 6e 4e 61 6d 65 28 6e 61 6d 65 29 20 7b 0a ionName(name) {. 0003e8c0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 return ! 0003e8d0: 74 73 2e 69 73 53 6f 75 72 63 65 46 69 6c 65 28 ts.isSourceFile( 0003e8e0: 6e 61 6d 65 29 20 26 26 20 21 74 73 2e 69 73 42 name) && !ts.isB 0003e8f0: 69 6e 64 69 6e 67 50 61 74 74 65 72 6e 28 6e 61 indingPattern(na 0003e900: 6d 65 29 20 26 26 20 74 73 2e 69 73 44 65 63 6c me) && ts.isDecl 0003e910: 61 72 61 74 69 6f 6e 28 6e 61 6d 65 2e 70 61 72 aration(name.par 0003e920: 65 6e 74 29 20 26 26 20 6e 61 6d 65 2e 70 61 72 ent) && name.par 0003e930: 65 6e 74 2e 6e 61 6d 65 20 3d 3d 3d 20 6e 61 6d ent.name === nam 0003e940: 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e e;. }. ts. 0003e950: 69 73 44 65 63 6c 61 72 61 74 69 6f 6e 4e 61 6d isDeclarationNam 0003e960: 65 20 3d 20 69 73 44 65 63 6c 61 72 61 74 69 6f e = isDeclaratio 0003e970: 6e 4e 61 6d 65 3b 0a 20 20 20 20 2f 2f 20 53 65 nName;. // Se 0003e980: 65 20 47 48 23 31 36 30 33 30 0a 20 20 20 20 66 e GH#16030. f 0003e990: 75 6e 63 74 69 6f 6e 20 67 65 74 44 65 63 6c 61 unction getDecla 0003e9a0: 72 61 74 69 6f 6e 46 72 6f 6d 4e 61 6d 65 28 6e rationFromName(n 0003e9b0: 61 6d 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 ame) {. v 0003e9c0: 61 72 20 70 61 72 65 6e 74 20 3d 20 6e 61 6d 65 ar parent = name 0003e9d0: 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 .parent;. 0003e9e0: 20 73 77 69 74 63 68 20 28 6e 61 6d 65 2e 6b 69 switch (name.ki 0003e9f0: 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 nd) {. 0003ea00: 20 20 63 61 73 65 20 31 30 20 2f 2a 20 53 79 6e case 10 /* Syn 0003ea10: 74 61 78 4b 69 6e 64 2e 53 74 72 69 6e 67 4c 69 taxKind.StringLi 0003ea20: 74 65 72 61 6c 20 2a 2f 3a 0a 20 20 20 20 20 20 teral */:. 0003ea30: 20 20 20 20 20 20 63 61 73 65 20 31 34 20 2f 2a case 14 /* 0003ea40: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e 6f 53 75 SyntaxKind.NoSu 0003ea50: 62 73 74 69 74 75 74 69 6f 6e 54 65 6d 70 6c 61 bstitutionTempla 0003ea60: 74 65 4c 69 74 65 72 61 6c 20 2a 2f 3a 0a 20 20 teLiteral */:. 0003ea70: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 38 case 8 0003ea80: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e /* SyntaxKind.N 0003ea90: 75 6d 65 72 69 63 4c 69 74 65 72 61 6c 20 2a 2f umericLiteral */ 0003eaa0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0003eab0: 20 20 69 66 20 28 74 73 2e 69 73 43 6f 6d 70 75 if (ts.isCompu 0003eac0: 74 65 64 50 72 6f 70 65 72 74 79 4e 61 6d 65 28 tedPropertyName( 0003ead0: 70 61 72 65 6e 74 29 29 0a 20 20 20 20 20 20 20 parent)). 0003eae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 0003eaf0: 75 72 6e 20 70 61 72 65 6e 74 2e 70 61 72 65 6e urn parent.paren 0003eb00: 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f t;. / 0003eb10: 2f 20 66 61 6c 6c 73 20 74 68 72 6f 75 67 68 0a / falls through. 0003eb20: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0003eb30: 20 37 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 79 /* SyntaxKin 0003eb40: 64 2e 49 64 65 6e 74 69 66 69 65 72 20 2a 2f 3a d.Identifier */: 0003eb50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0003eb60: 20 69 66 20 28 74 73 2e 69 73 44 65 63 6c 61 72 if (ts.isDeclar 0003eb70: 61 74 69 6f 6e 28 70 61 72 65 6e 74 29 29 20 7b ation(parent)) { 0003eb80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0003eb90: 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 65 return pare 0003eba0: 6e 74 2e 6e 61 6d 65 20 3d 3d 3d 20 6e 61 6d 65 nt.name === name 0003ebb0: 20 3f 20 70 61 72 65 6e 74 20 3a 20 75 6e 64 65 ? parent : unde 0003ebc0: 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 20 fined;. 0003ebd0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 0003ebe0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 else if 0003ebf0: 20 28 74 73 2e 69 73 51 75 61 6c 69 66 69 65 64 (ts.isQualified 0003ec00: 4e 61 6d 65 28 70 61 72 65 6e 74 29 29 20 7b 0a Name(parent)) {. 0003ec10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003ec20: 20 20 20 20 76 61 72 20 74 61 67 20 3d 20 70 61 var tag = pa 0003ec30: 72 65 6e 74 2e 70 61 72 65 6e 74 3b 0a 20 20 20 rent.parent;. 0003ec40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003ec50: 20 72 65 74 75 72 6e 20 74 73 2e 69 73 4a 53 44 return ts.isJSD 0003ec60: 6f 63 50 61 72 61 6d 65 74 65 72 54 61 67 28 74 ocParameterTag(t 0003ec70: 61 67 29 20 26 26 20 74 61 67 2e 6e 61 6d 65 20 ag) && tag.name 0003ec80: 3d 3d 3d 20 70 61 72 65 6e 74 20 3f 20 74 61 67 === parent ? tag 0003ec90: 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 : undefined;. 0003eca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }. 0003ecb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003ecc0: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 else {. 0003ecd0: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 62 var b 0003ece0: 69 6e 45 78 70 20 3d 20 70 61 72 65 6e 74 2e 70 inExp = parent.p 0003ecf0: 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 20 arent;. 0003ed00: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0003ed10: 6e 20 74 73 2e 69 73 42 69 6e 61 72 79 45 78 70 n ts.isBinaryExp 0003ed20: 72 65 73 73 69 6f 6e 28 62 69 6e 45 78 70 29 20 ression(binExp) 0003ed30: 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 &&. 0003ed40: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 41 73 getAs 0003ed50: 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 signmentDeclarat 0003ed60: 69 6f 6e 4b 69 6e 64 28 62 69 6e 45 78 70 29 20 ionKind(binExp) 0003ed70: 21 3d 3d 20 30 20 2f 2a 20 41 73 73 69 67 6e 6d !== 0 /* Assignm 0003ed80: 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b 69 entDeclarationKi 0003ed90: 6e 64 2e 4e 6f 6e 65 20 2a 2f 20 26 26 0a 20 20 nd.None */ &&. 0003eda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003edb0: 20 20 20 20 20 20 28 62 69 6e 45 78 70 2e 6c 65 (binExp.le 0003edc0: 66 74 2e 73 79 6d 62 6f 6c 20 7c 7c 20 62 69 6e ft.symbol || bin 0003edd0: 45 78 70 2e 73 79 6d 62 6f 6c 29 20 26 26 0a 20 Exp.symbol) &&. 0003ede0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003edf0: 20 20 20 20 20 20 20 74 73 2e 67 65 74 4e 61 6d ts.getNam 0003ee00: 65 4f 66 44 65 63 6c 61 72 61 74 69 6f 6e 28 62 eOfDeclaration(b 0003ee10: 69 6e 45 78 70 29 20 3d 3d 3d 20 6e 61 6d 65 0a inExp) === name. 0003ee20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003ee30: 20 20 20 20 20 20 20 20 3f 20 62 69 6e 45 78 70 ? binExp 0003ee40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0003ee50: 20 20 20 20 20 20 20 20 20 3a 20 75 6e 64 65 66 : undef 0003ee60: 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 20 20 ined;. 0003ee70: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 0003ee80: 20 20 20 20 63 61 73 65 20 38 30 20 2f 2a 20 53 case 80 /* S 0003ee90: 79 6e 74 61 78 4b 69 6e 64 2e 50 72 69 76 61 74 yntaxKind.Privat 0003eea0: 65 49 64 65 6e 74 69 66 69 65 72 20 2a 2f 3a 0a eIdentifier */:. 0003eeb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003eec0: 72 65 74 75 72 6e 20 74 73 2e 69 73 44 65 63 6c return ts.isDecl 0003eed0: 61 72 61 74 69 6f 6e 28 70 61 72 65 6e 74 29 20 aration(parent) 0003eee0: 26 26 20 70 61 72 65 6e 74 2e 6e 61 6d 65 20 3d && parent.name = 0003eef0: 3d 3d 20 6e 61 6d 65 20 3f 20 70 61 72 65 6e 74 == name ? parent 0003ef00: 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 : undefined;. 0003ef10: 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c defaul 0003ef20: 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t:. 0003ef30: 20 20 20 72 65 74 75 72 6e 20 75 6e 64 65 66 69 return undefi 0003ef40: 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 ned;. }. 0003ef50: 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 44 }. ts.getD 0003ef60: 65 63 6c 61 72 61 74 69 6f 6e 46 72 6f 6d 4e 61 eclarationFromNa 0003ef70: 6d 65 20 3d 20 67 65 74 44 65 63 6c 61 72 61 74 me = getDeclarat 0003ef80: 69 6f 6e 46 72 6f 6d 4e 61 6d 65 3b 0a 20 20 20 ionFromName;. 0003ef90: 20 66 75 6e 63 74 69 6f 6e 20 69 73 4c 69 74 65 function isLite 0003efa0: 72 61 6c 43 6f 6d 70 75 74 65 64 50 72 6f 70 65 ralComputedPrope 0003efb0: 72 74 79 44 65 63 6c 61 72 61 74 69 6f 6e 4e 61 rtyDeclarationNa 0003efc0: 6d 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 me(node) {. 0003efd0: 20 20 20 72 65 74 75 72 6e 20 69 73 53 74 72 69 return isStri 0003efe0: 6e 67 4f 72 4e 75 6d 65 72 69 63 4c 69 74 65 72 ngOrNumericLiter 0003eff0: 61 6c 4c 69 6b 65 28 6e 6f 64 65 29 20 26 26 0a alLike(node) &&. 0003f000: 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 node 0003f010: 2e 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d .parent.kind === 0003f020: 20 31 36 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 162 /* SyntaxKi 0003f030: 6e 64 2e 43 6f 6d 70 75 74 65 64 50 72 6f 70 65 nd.ComputedPrope 0003f040: 72 74 79 4e 61 6d 65 20 2a 2f 20 26 26 0a 20 20 rtyName */ &&. 0003f050: 20 20 20 20 20 20 20 20 20 20 74 73 2e 69 73 44 ts.isD 0003f060: 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 2e eclaration(node. 0003f070: 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 29 3b 0a parent.parent);. 0003f080: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4c }. ts.isL 0003f090: 69 74 65 72 61 6c 43 6f 6d 70 75 74 65 64 50 72 iteralComputedPr 0003f0a0: 6f 70 65 72 74 79 44 65 63 6c 61 72 61 74 69 6f opertyDeclaratio 0003f0b0: 6e 4e 61 6d 65 20 3d 20 69 73 4c 69 74 65 72 61 nName = isLitera 0003f0c0: 6c 43 6f 6d 70 75 74 65 64 50 72 6f 70 65 72 74 lComputedPropert 0003f0d0: 79 44 65 63 6c 61 72 61 74 69 6f 6e 4e 61 6d 65 yDeclarationName 0003f0e0: 3b 0a 20 20 20 20 2f 2f 20 52 65 74 75 72 6e 20 ;. // Return 0003f0f0: 74 72 75 65 20 69 66 20 74 68 65 20 67 69 76 65 true if the give 0003f100: 6e 20 69 64 65 6e 74 69 66 69 65 72 20 69 73 20 n identifier is 0003f110: 63 6c 61 73 73 69 66 69 65 64 20 61 73 20 61 6e classified as an 0003f120: 20 49 64 65 6e 74 69 66 69 65 72 4e 61 6d 65 0a IdentifierName. 0003f130: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 49 function isI 0003f140: 64 65 6e 74 69 66 69 65 72 4e 61 6d 65 28 6e 6f dentifierName(no 0003f150: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 de) {. va 0003f160: 72 20 70 61 72 65 6e 74 20 3d 20 6e 6f 64 65 2e r parent = node. 0003f170: 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 parent;. 0003f180: 73 77 69 74 63 68 20 28 70 61 72 65 6e 74 2e 6b switch (parent.k 0003f190: 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ind) {. 0003f1a0: 20 20 20 63 61 73 65 20 31 36 37 20 2f 2a 20 53 case 167 /* S 0003f1b0: 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 yntaxKind.Proper 0003f1c0: 74 79 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f tyDeclaration */ 0003f1d0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 0003f1e0: 73 65 20 31 36 36 20 2f 2a 20 53 79 6e 74 61 78 se 166 /* Syntax 0003f1f0: 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 53 69 67 Kind.PropertySig 0003f200: 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 20 nature */:. 0003f210: 20 20 20 20 20 20 20 63 61 73 65 20 31 36 39 20 case 169 0003f220: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 /* SyntaxKind.Me 0003f230: 74 68 6f 64 44 65 63 6c 61 72 61 74 69 6f 6e 20 thodDeclaration 0003f240: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0003f250: 63 61 73 65 20 31 36 38 20 2f 2a 20 53 79 6e 74 case 168 /* Synt 0003f260: 61 78 4b 69 6e 64 2e 4d 65 74 68 6f 64 53 69 67 axKind.MethodSig 0003f270: 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 20 nature */:. 0003f280: 20 20 20 20 20 20 20 63 61 73 65 20 31 37 32 20 case 172 0003f290: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 47 65 /* SyntaxKind.Ge 0003f2a0: 74 41 63 63 65 73 73 6f 72 20 2a 2f 3a 0a 20 20 tAccessor */:. 0003f2b0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 0003f2c0: 37 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 73 /* SyntaxKind 0003f2d0: 2e 53 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 3a .SetAccessor */: 0003f2e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 0003f2f0: 65 20 32 39 39 20 2f 2a 20 53 79 6e 74 61 78 4b e 299 /* SyntaxK 0003f300: 69 6e 64 2e 45 6e 75 6d 4d 65 6d 62 65 72 20 2a ind.EnumMember * 0003f310: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 0003f320: 61 73 65 20 32 39 36 20 2f 2a 20 53 79 6e 74 61 ase 296 /* Synta 0003f330: 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 41 73 xKind.PropertyAs 0003f340: 73 69 67 6e 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 signment */:. 0003f350: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 case 20 0003f360: 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 6 /* SyntaxKind. 0003f370: 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 45 78 PropertyAccessEx 0003f380: 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 pression */:. 0003f390: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 // 0003f3a0: 4e 61 6d 65 20 69 6e 20 6d 65 6d 62 65 72 20 64 Name in member d 0003f3b0: 65 63 6c 61 72 61 74 69 6f 6e 20 6f 72 20 70 72 eclaration or pr 0003f3c0: 6f 70 65 72 74 79 20 6e 61 6d 65 20 69 6e 20 70 operty name in p 0003f3d0: 72 6f 70 65 72 74 79 20 61 63 63 65 73 73 0a 20 roperty access. 0003f3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 0003f3f0: 65 74 75 72 6e 20 70 61 72 65 6e 74 2e 6e 61 6d eturn parent.nam 0003f400: 65 20 3d 3d 3d 20 6e 6f 64 65 3b 0a 20 20 20 20 e === node;. 0003f410: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 36 31 case 161 0003f420: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 51 /* SyntaxKind.Q 0003f430: 75 61 6c 69 66 69 65 64 4e 61 6d 65 20 2a 2f 3a ualifiedName */: 0003f440: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0003f450: 20 2f 2f 20 4e 61 6d 65 20 6f 6e 20 72 69 67 68 // Name on righ 0003f460: 74 20 68 61 6e 64 20 73 69 64 65 20 6f 66 20 64 t hand side of d 0003f470: 6f 74 20 69 6e 20 61 20 74 79 70 65 20 71 75 65 ot in a type que 0003f480: 72 79 20 6f 72 20 74 79 70 65 20 72 65 66 65 72 ry or type refer 0003f490: 65 6e 63 65 0a 20 20 20 20 20 20 20 20 20 20 20 ence. 0003f4a0: 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 65 return pare 0003f4b0: 6e 74 2e 72 69 67 68 74 20 3d 3d 3d 20 6e 6f 64 nt.right === nod 0003f4c0: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 e;. c 0003f4d0: 61 73 65 20 32 30 33 20 2f 2a 20 53 79 6e 74 61 ase 203 /* Synta 0003f4e0: 78 4b 69 6e 64 2e 42 69 6e 64 69 6e 67 45 6c 65 xKind.BindingEle 0003f4f0: 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ment */:. 0003f500: 20 20 20 20 20 63 61 73 65 20 32 37 30 20 2f 2a case 270 /* 0003f510: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d 70 6f SyntaxKind.Impo 0003f520: 72 74 53 70 65 63 69 66 69 65 72 20 2a 2f 3a 0a rtSpecifier */:. 0003f530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003f540: 2f 2f 20 50 72 6f 70 65 72 74 79 20 6e 61 6d 65 // Property name 0003f550: 20 69 6e 20 62 69 6e 64 69 6e 67 20 65 6c 65 6d in binding elem 0003f560: 65 6e 74 20 6f 72 20 69 6d 70 6f 72 74 20 73 70 ent or import sp 0003f570: 65 63 69 66 69 65 72 0a 20 20 20 20 20 20 20 20 ecifier. 0003f580: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 return p 0003f590: 61 72 65 6e 74 2e 70 72 6f 70 65 72 74 79 4e 61 arent.propertyNa 0003f5a0: 6d 65 20 3d 3d 3d 20 6e 6f 64 65 3b 0a 20 20 20 me === node;. 0003f5b0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 37 case 27 0003f5c0: 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 5 /* SyntaxKind. 0003f5d0: 45 78 70 6f 72 74 53 70 65 63 69 66 69 65 72 20 ExportSpecifier 0003f5e0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0003f5f0: 63 61 73 65 20 32 38 35 20 2f 2a 20 53 79 6e 74 case 285 /* Synt 0003f600: 61 78 4b 69 6e 64 2e 4a 73 78 41 74 74 72 69 62 axKind.JsxAttrib 0003f610: 75 74 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ute */:. 0003f620: 20 20 20 20 63 61 73 65 20 32 37 39 20 2f 2a 20 case 279 /* 0003f630: 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 53 65 SyntaxKind.JsxSe 0003f640: 6c 66 43 6c 6f 73 69 6e 67 45 6c 65 6d 65 6e 74 lfClosingElement 0003f650: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 0003f660: 20 63 61 73 65 20 32 38 30 20 2f 2a 20 53 79 6e case 280 /* Syn 0003f670: 74 61 78 4b 69 6e 64 2e 4a 73 78 4f 70 65 6e 69 taxKind.JsxOpeni 0003f680: 6e 67 45 6c 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 ngElement */:. 0003f690: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 0003f6a0: 38 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 81 /* SyntaxKind 0003f6b0: 2e 4a 73 78 43 6c 6f 73 69 6e 67 45 6c 65 6d 65 .JsxClosingEleme 0003f6c0: 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 nt */:. 0003f6d0: 20 20 20 20 20 20 20 2f 2f 20 41 6e 79 20 6e 61 // Any na 0003f6e0: 6d 65 20 69 6e 20 61 6e 20 65 78 70 6f 72 74 20 me in an export 0003f6f0: 73 70 65 63 69 66 69 65 72 20 6f 72 20 4a 53 58 specifier or JSX 0003f700: 20 41 74 74 72 69 62 75 74 65 20 6f 72 20 4a 73 Attribute or Js 0003f710: 78 20 45 6c 65 6d 65 6e 74 0a 20 20 20 20 20 20 x Element. 0003f720: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 0003f730: 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d true;. } 0003f740: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 0003f750: 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 20 20 false;. }. 0003f760: 20 74 73 2e 69 73 49 64 65 6e 74 69 66 69 65 72 ts.isIdentifier 0003f770: 4e 61 6d 65 20 3d 20 69 73 49 64 65 6e 74 69 66 Name = isIdentif 0003f780: 69 65 72 4e 61 6d 65 3b 0a 20 20 20 20 2f 2f 20 ierName;. // 0003f790: 41 6e 20 61 6c 69 61 73 20 73 79 6d 62 6f 6c 20 An alias symbol 0003f7a0: 69 73 20 63 72 65 61 74 65 64 20 62 79 20 6f 6e is created by on 0003f7b0: 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 e of the followi 0003f7c0: 6e 67 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 3a ng declarations: 0003f7d0: 0a 20 20 20 20 2f 2f 20 69 6d 70 6f 72 74 20 3c . // import < 0003f7e0: 73 79 6d 62 6f 6c 3e 20 3d 20 2e 2e 2e 0a 20 20 symbol> = .... 0003f7f0: 20 20 2f 2f 20 69 6d 70 6f 72 74 20 3c 73 79 6d // import <sym 0003f800: 62 6f 6c 3e 20 66 72 6f 6d 20 2e 2e 2e 0a 20 20 bol> from .... 0003f810: 20 20 2f 2f 20 69 6d 70 6f 72 74 20 2a 20 61 73 // import * as 0003f820: 20 3c 73 79 6d 62 6f 6c 3e 20 66 72 6f 6d 20 2e <symbol> from . 0003f830: 2e 2e 0a 20 20 20 20 2f 2f 20 69 6d 70 6f 72 74 ... // import 0003f840: 20 7b 20 78 20 61 73 20 3c 73 79 6d 62 6f 6c 3e { x as <symbol> 0003f850: 20 7d 20 66 72 6f 6d 20 2e 2e 2e 0a 20 20 20 20 } from .... 0003f860: 2f 2f 20 65 78 70 6f 72 74 20 7b 20 78 20 61 73 // export { x as 0003f870: 20 3c 73 79 6d 62 6f 6c 3e 20 7d 20 66 72 6f 6d <symbol> } from 0003f880: 20 2e 2e 2e 0a 20 20 20 20 2f 2f 20 65 78 70 6f .... // expo 0003f890: 72 74 20 2a 20 61 73 20 6e 73 20 3c 73 79 6d 62 rt * as ns <symb 0003f8a0: 6f 6c 3e 20 66 72 6f 6d 20 2e 2e 2e 0a 20 20 20 ol> from .... 0003f8b0: 20 2f 2f 20 65 78 70 6f 72 74 20 3d 20 3c 45 6e // export = <En 0003f8c0: 74 69 74 79 4e 61 6d 65 45 78 70 72 65 73 73 69 tityNameExpressi 0003f8d0: 6f 6e 3e 0a 20 20 20 20 2f 2f 20 65 78 70 6f 72 on>. // expor 0003f8e0: 74 20 64 65 66 61 75 6c 74 20 3c 45 6e 74 69 74 t default <Entit 0003f8f0: 79 4e 61 6d 65 45 78 70 72 65 73 73 69 6f 6e 3e yNameExpression> 0003f900: 0a 20 20 20 20 2f 2f 20 6d 6f 64 75 6c 65 2e 65 . // module.e 0003f910: 78 70 6f 72 74 73 20 3d 20 3c 45 6e 74 69 74 79 xports = <Entity 0003f920: 4e 61 6d 65 45 78 70 72 65 73 73 69 6f 6e 3e 0a NameExpression>. 0003f930: 20 20 20 20 2f 2f 20 6d 6f 64 75 6c 65 2e 65 78 // module.ex 0003f940: 70 6f 72 74 73 2e 78 20 3d 20 3c 45 6e 74 69 74 ports.x = <Entit 0003f950: 79 4e 61 6d 65 45 78 70 72 65 73 73 69 6f 6e 3e yNameExpression> 0003f960: 0a 20 20 20 20 2f 2f 20 63 6f 6e 73 74 20 78 20 . // const x 0003f970: 3d 20 72 65 71 75 69 72 65 28 22 2e 2e 2e 22 29 = require("...") 0003f980: 0a 20 20 20 20 2f 2f 20 63 6f 6e 73 74 20 7b 20 . // const { 0003f990: 78 20 7d 20 3d 20 72 65 71 75 69 72 65 28 22 2e x } = require(". 0003f9a0: 2e 2e 22 29 0a 20 20 20 20 2f 2f 20 63 6f 6e 73 .."). // cons 0003f9b0: 74 20 78 20 3d 20 72 65 71 75 69 72 65 28 22 2e t x = require(". 0003f9c0: 2e 2e 22 29 2e 79 0a 20 20 20 20 2f 2f 20 63 6f ..").y. // co 0003f9d0: 6e 73 74 20 7b 20 78 20 7d 20 3d 20 72 65 71 75 nst { x } = requ 0003f9e0: 69 72 65 28 22 2e 2e 2e 22 29 2e 79 0a 20 20 20 ire("...").y. 0003f9f0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 41 6c 69 61 function isAlia 0003fa00: 73 53 79 6d 62 6f 6c 44 65 63 6c 61 72 61 74 69 sSymbolDeclarati 0003fa10: 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 on(node) {. 0003fa20: 20 20 20 69 66 20 28 6e 6f 64 65 2e 6b 69 6e 64 if (node.kind 0003fa30: 20 3d 3d 3d 20 32 36 35 20 2f 2a 20 53 79 6e 74 === 265 /* Synt 0003fa40: 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 45 71 75 axKind.ImportEqu 0003fa50: 61 6c 73 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a alsDeclaration * 0003fa60: 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 / ||. 0003fa70: 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 node.kind === 2 0003fa80: 36 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 64 /* SyntaxKind 0003fa90: 2e 4e 61 6d 65 73 70 61 63 65 45 78 70 6f 72 74 .NamespaceExport 0003faa0: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 20 7c Declaration */ | 0003fab0: 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f |. no 0003fac0: 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 36 37 20 de.kind === 267 0003fad0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d /* SyntaxKind.Im 0003fae0: 70 6f 72 74 43 6c 61 75 73 65 20 2a 2f 20 26 26 portClause */ && 0003faf0: 20 21 21 6e 6f 64 65 2e 6e 61 6d 65 20 7c 7c 0a !!node.name ||. 0003fb00: 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 node 0003fb10: 2e 6b 69 6e 64 20 3d 3d 3d 20 32 36 38 20 2f 2a .kind === 268 /* 0003fb20: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e 61 6d 65 SyntaxKind.Name 0003fb30: 73 70 61 63 65 49 6d 70 6f 72 74 20 2a 2f 20 7c spaceImport */ | 0003fb40: 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f |. no 0003fb50: 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 37 34 20 de.kind === 274 0003fb60: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e 61 /* SyntaxKind.Na 0003fb70: 6d 65 73 70 61 63 65 45 78 70 6f 72 74 20 2a 2f mespaceExport */ 0003fb80: 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ||. 0003fb90: 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 37 node.kind === 27 0003fba0: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 0003fbb0: 49 6d 70 6f 72 74 53 70 65 63 69 66 69 65 72 20 ImportSpecifier 0003fbc0: 2a 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 */ ||. 0003fbd0: 20 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 node.kind === 0003fbe0: 32 37 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 275 /* SyntaxKin 0003fbf0: 64 2e 45 78 70 6f 72 74 53 70 65 63 69 66 69 65 d.ExportSpecifie 0003fc00: 72 20 2a 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 r */ ||. 0003fc10: 20 20 20 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d node.kind == 0003fc20: 3d 20 32 37 31 20 2f 2a 20 53 79 6e 74 61 78 4b = 271 /* SyntaxK 0003fc30: 69 6e 64 2e 45 78 70 6f 72 74 41 73 73 69 67 6e ind.ExportAssign 0003fc40: 6d 65 6e 74 20 2a 2f 20 26 26 20 65 78 70 6f 72 ment */ && expor 0003fc50: 74 41 73 73 69 67 6e 6d 65 6e 74 49 73 41 6c 69 tAssignmentIsAli 0003fc60: 61 73 28 6e 6f 64 65 29 29 20 7b 0a 20 20 20 20 as(node)) {. 0003fc70: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 0003fc80: 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 rue;. }. 0003fc90: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 73 return is 0003fca0: 49 6e 4a 53 46 69 6c 65 28 6e 6f 64 65 29 20 26 InJSFile(node) & 0003fcb0: 26 20 28 74 73 2e 69 73 42 69 6e 61 72 79 45 78 & (ts.isBinaryEx 0003fcc0: 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 26 pression(node) & 0003fcd0: 26 20 67 65 74 41 73 73 69 67 6e 6d 65 6e 74 44 & getAssignmentD 0003fce0: 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 28 6e eclarationKind(n 0003fcf0: 6f 64 65 29 20 3d 3d 3d 20 32 20 2f 2a 20 41 73 ode) === 2 /* As 0003fd00: 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 signmentDeclarat 0003fd10: 69 6f 6e 4b 69 6e 64 2e 4d 6f 64 75 6c 65 45 78 ionKind.ModuleEx 0003fd20: 70 6f 72 74 73 20 2a 2f 20 26 26 20 65 78 70 6f ports */ && expo 0003fd30: 72 74 41 73 73 69 67 6e 6d 65 6e 74 49 73 41 6c rtAssignmentIsAl 0003fd40: 69 61 73 28 6e 6f 64 65 29 20 7c 7c 0a 20 20 20 ias(node) ||. 0003fd50: 20 20 20 20 20 20 20 20 20 74 73 2e 69 73 50 72 ts.isPr 0003fd60: 6f 70 65 72 74 79 41 63 63 65 73 73 45 78 70 72 opertyAccessExpr 0003fd70: 65 73 73 69 6f 6e 28 6e 6f 64 65 29 0a 20 20 20 ession(node). 0003fd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 26 26 20 && 0003fd90: 74 73 2e 69 73 42 69 6e 61 72 79 45 78 70 72 65 ts.isBinaryExpre 0003fda0: 73 73 69 6f 6e 28 6e 6f 64 65 2e 70 61 72 65 6e ssion(node.paren 0003fdb0: 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t). 0003fdc0: 20 20 20 26 26 20 6e 6f 64 65 2e 70 61 72 65 6e && node.paren 0003fdd0: 74 2e 6c 65 66 74 20 3d 3d 3d 20 6e 6f 64 65 0a t.left === node. 0003fde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003fdf0: 26 26 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6f && node.parent.o 0003fe00: 70 65 72 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 6e peratorToken.kin 0003fe10: 64 20 3d 3d 3d 20 36 33 20 2f 2a 20 53 79 6e 74 d === 63 /* Synt 0003fe20: 61 78 4b 69 6e 64 2e 45 71 75 61 6c 73 54 6f 6b axKind.EqualsTok 0003fe30: 65 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 en */. 0003fe40: 20 20 20 20 20 20 26 26 20 69 73 41 6c 69 61 73 && isAlias 0003fe50: 61 62 6c 65 45 78 70 72 65 73 73 69 6f 6e 28 6e ableExpression(n 0003fe60: 6f 64 65 2e 70 61 72 65 6e 74 2e 72 69 67 68 74 ode.parent.right 0003fe70: 29 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 ));. }. ts 0003fe80: 2e 69 73 41 6c 69 61 73 53 79 6d 62 6f 6c 44 65 .isAliasSymbolDe 0003fe90: 63 6c 61 72 61 74 69 6f 6e 20 3d 20 69 73 41 6c claration = isAl 0003fea0: 69 61 73 53 79 6d 62 6f 6c 44 65 63 6c 61 72 61 iasSymbolDeclara 0003feb0: 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 tion;. functi 0003fec0: 6f 6e 20 67 65 74 41 6c 69 61 73 44 65 63 6c 61 on getAliasDecla 0003fed0: 72 61 74 69 6f 6e 46 72 6f 6d 4e 61 6d 65 28 6e rationFromName(n 0003fee0: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ode) {. s 0003fef0: 77 69 74 63 68 20 28 6e 6f 64 65 2e 70 61 72 65 witch (node.pare 0003ff00: 6e 74 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 nt.kind) {. 0003ff10: 20 20 20 20 20 20 20 63 61 73 65 20 32 36 37 20 case 267 0003ff20: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d /* SyntaxKind.Im 0003ff30: 70 6f 72 74 43 6c 61 75 73 65 20 2a 2f 3a 0a 20 portClause */:. 0003ff40: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0003ff50: 32 37 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 270 /* SyntaxKin 0003ff60: 64 2e 49 6d 70 6f 72 74 53 70 65 63 69 66 69 65 d.ImportSpecifie 0003ff70: 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 r */:. 0003ff80: 20 20 63 61 73 65 20 32 36 38 20 2f 2a 20 53 79 case 268 /* Sy 0003ff90: 6e 74 61 78 4b 69 6e 64 2e 4e 61 6d 65 73 70 61 ntaxKind.Namespa 0003ffa0: 63 65 49 6d 70 6f 72 74 20 2a 2f 3a 0a 20 20 20 ceImport */:. 0003ffb0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 37 case 27 0003ffc0: 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 5 /* SyntaxKind. 0003ffd0: 45 78 70 6f 72 74 53 70 65 63 69 66 69 65 72 20 ExportSpecifier 0003ffe0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0003fff0: 63 61 73 65 20 32 37 31 20 2f 2a 20 53 79 6e 74 case 271 /* Synt

Transaction Execution Plan

Convert Transaction To Receipt
Gas Burned:
894 Ggas
Tokens Burned:
0.00009 
Receipt:
Predecessor ID:
Receiver ID:
Gas Burned:
1 Tgas
Tokens Burned:
0.00015 
Called method: 'fs_store' in contract: crans.near
Arguments:
00000000: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 72 /* SyntaxKind.Pr 00000010: 69 76 61 74 65 49 64 65 6e 74 69 66 69 65 72 20 ivateIdentifier 00000020: 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 */) {. 00000030: 20 20 20 20 20 20 70 6f 73 20 3d 20 74 6f 6b 65 pos = toke 00000040: 6e 50 6f 73 20 2b 20 31 3b 0a 20 20 20 20 20 20 nPos + 1;. 00000050: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00000060: 20 74 6f 6b 65 6e 20 3d 20 36 32 20 2f 2a 20 53 token = 62 /* S 00000070: 79 6e 74 61 78 4b 69 6e 64 2e 48 61 73 68 54 6f yntaxKind.HashTo 00000080: 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 ken */;. 00000090: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }. 000000a0: 20 20 72 65 74 75 72 6e 20 74 6f 6b 65 6e 3b 0a return token;. 000000b0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 000000c0: 20 20 66 75 6e 63 74 69 6f 6e 20 72 65 53 63 61 function reSca 000000d0: 6e 51 75 65 73 74 69 6f 6e 54 6f 6b 65 6e 28 29 nQuestionToken() 000000e0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 {. t 000000f0: 73 2e 44 65 62 75 67 2e 61 73 73 65 72 74 28 74 s.Debug.assert(t 00000100: 6f 6b 65 6e 20 3d 3d 3d 20 36 30 20 2f 2a 20 53 oken === 60 /* S 00000110: 79 6e 74 61 78 4b 69 6e 64 2e 51 75 65 73 74 69 yntaxKind.Questi 00000120: 6f 6e 51 75 65 73 74 69 6f 6e 54 6f 6b 65 6e 20 onQuestionToken 00000130: 2a 2f 2c 20 22 27 72 65 53 63 61 6e 51 75 65 73 */, "'reScanQues 00000140: 74 69 6f 6e 54 6f 6b 65 6e 27 20 73 68 6f 75 6c tionToken' shoul 00000150: 64 20 6f 6e 6c 79 20 62 65 20 63 61 6c 6c 65 64 d only be called 00000160: 20 6f 6e 20 61 20 27 3f 3f 27 22 29 3b 0a 20 20 on a '??'");. 00000170: 20 20 20 20 20 20 20 20 20 20 70 6f 73 20 3d 20 pos = 00000180: 74 6f 6b 65 6e 50 6f 73 20 2b 20 31 3b 0a 20 20 tokenPos + 1;. 00000190: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 000001a0: 20 74 6f 6b 65 6e 20 3d 20 35 37 20 2f 2a 20 53 token = 57 /* S 000001b0: 79 6e 74 61 78 4b 69 6e 64 2e 51 75 65 73 74 69 yntaxKind.Questi 000001c0: 6f 6e 54 6f 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 onToken */;. 000001d0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 66 75 }. fu 000001e0: 6e 63 74 69 6f 6e 20 73 63 61 6e 4a 73 78 54 6f nction scanJsxTo 000001f0: 6b 65 6e 28 61 6c 6c 6f 77 4d 75 6c 74 69 6c 69 ken(allowMultili 00000200: 6e 65 4a 73 78 54 65 78 74 29 20 7b 0a 20 20 20 neJsxText) {. 00000210: 20 20 20 20 20 20 20 20 20 69 66 20 28 61 6c 6c if (all 00000220: 6f 77 4d 75 6c 74 69 6c 69 6e 65 4a 73 78 54 65 owMultilineJsxTe 00000230: 78 74 20 3d 3d 3d 20 76 6f 69 64 20 30 29 20 7b xt === void 0) { 00000240: 20 61 6c 6c 6f 77 4d 75 6c 74 69 6c 69 6e 65 4a allowMultilineJ 00000250: 73 78 54 65 78 74 20 3d 20 74 72 75 65 3b 20 7d sxText = true; } 00000260: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61 . sta 00000270: 72 74 50 6f 73 20 3d 20 74 6f 6b 65 6e 50 6f 73 rtPos = tokenPos 00000280: 20 3d 20 70 6f 73 3b 0a 20 20 20 20 20 20 20 20 = pos;. 00000290: 20 20 20 20 69 66 20 28 70 6f 73 20 3e 3d 20 65 if (pos >= e 000002a0: 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 nd) {. 000002b0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 6f 6b return tok 000002c0: 65 6e 20 3d 20 31 20 2f 2a 20 53 79 6e 74 61 78 en = 1 /* Syntax 000002d0: 4b 69 6e 64 2e 45 6e 64 4f 66 46 69 6c 65 54 6f Kind.EndOfFileTo 000002e0: 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 ken */;. 000002f0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }. 00000300: 20 20 76 61 72 20 63 68 61 72 20 3d 20 74 65 78 var char = tex 00000310: 74 2e 63 68 61 72 43 6f 64 65 41 74 28 70 6f 73 t.charCodeAt(pos 00000320: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 );. i 00000330: 66 20 28 63 68 61 72 20 3d 3d 3d 20 36 30 20 2f f (char === 60 / 00000340: 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 65 73 * CharacterCodes 00000350: 2e 6c 65 73 73 54 68 61 6e 20 2a 2f 29 20 7b 0a .lessThan */) {. 00000360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00000370: 69 66 20 28 74 65 78 74 2e 63 68 61 72 43 6f 64 if (text.charCod 00000380: 65 41 74 28 70 6f 73 20 2b 20 31 29 20 3d 3d 3d eAt(pos + 1) === 00000390: 20 34 37 20 2f 2a 20 43 68 61 72 61 63 74 65 72 47 /* Character 000003a0: 43 6f 64 65 73 2e 73 6c 61 73 68 20 2a 2f 29 20 Codes.slash */) 000003b0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 000003c0: 20 20 20 20 20 20 70 6f 73 20 2b 3d 20 32 3b 0a pos += 2;. 000003d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000003e0: 20 20 20 20 72 65 74 75 72 6e 20 74 6f 6b 65 6e return token 000003f0: 20 3d 20 33 30 20 2f 2a 20 53 79 6e 74 61 78 4b = 30 /* SyntaxK 00000400: 69 6e 64 2e 4c 65 73 73 54 68 61 6e 53 6c 61 73 ind.LessThanSlas 00000410: 68 54 6f 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 20 hToken */;. 00000420: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 00000430: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 6f 73 pos 00000440: 2b 2b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ++;. 00000450: 20 20 20 20 72 65 74 75 72 6e 20 74 6f 6b 65 6e return token 00000460: 20 3d 20 32 39 20 2f 2a 20 53 79 6e 74 61 78 4b = 29 /* SyntaxK 00000470: 69 6e 64 2e 4c 65 73 73 54 68 61 6e 54 6f 6b 65 ind.LessThanToke 00000480: 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 20 20 n */;. 00000490: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }. 000004a0: 69 66 20 28 63 68 61 72 20 3d 3d 3d 20 31 32 33 if (char === 123 000004b0: 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 /* CharacterCod 000004c0: 65 73 2e 6f 70 65 6e 42 72 61 63 65 20 2a 2f 29 es.openBrace */) 000004d0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 000004e0: 20 20 20 70 6f 73 2b 2b 3b 0a 20 20 20 20 20 20 pos++;. 000004f0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00000500: 20 74 6f 6b 65 6e 20 3d 20 31 38 20 2f 2a 20 53 token = 18 /* S 00000510: 79 6e 74 61 78 4b 69 6e 64 2e 4f 70 65 6e 42 72 yntaxKind.OpenBr 00000520: 61 63 65 54 6f 6b 65 6e 20 2a 2f 3b 0a 20 20 20 aceToken */;. 00000530: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 00000540: 20 20 20 20 20 20 20 2f 2f 20 46 69 72 73 74 20 // First 00000550: 6e 6f 6e 2d 77 68 69 74 65 73 70 61 63 65 20 63 non-whitespace c 00000560: 68 61 72 61 63 74 65 72 20 6f 6e 20 74 68 69 73 haracter on this 00000570: 20 6c 69 6e 65 2e 0a 20 20 20 20 20 20 20 20 20 line.. 00000580: 20 20 20 76 61 72 20 66 69 72 73 74 4e 6f 6e 57 var firstNonW 00000590: 68 69 74 65 73 70 61 63 65 20 3d 20 30 3b 0a 20 hitespace = 0;. 000005a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 68 // Th 000005b0: 65 73 65 20 69 6e 69 74 69 61 6c 20 76 61 6c 75 ese initial valu 000005c0: 65 73 20 61 72 65 20 73 70 65 63 69 61 6c 20 62 es are special b 000005d0: 65 63 61 75 73 65 20 74 68 65 20 66 69 72 73 74 ecause the first 000005e0: 20 6c 69 6e 65 20 69 73 3a 0a 20 20 20 20 20 20 line is:. 000005f0: 20 20 20 20 20 20 2f 2f 20 66 69 72 73 74 4e 6f // firstNo 00000600: 6e 57 68 69 74 65 73 70 61 63 65 20 3d 20 30 20 nWhitespace = 0 00000610: 74 6f 20 69 6e 64 69 63 61 74 65 20 74 68 61 74 to indicate that 00000620: 20 77 65 20 77 61 6e 74 20 6c 65 61 64 69 6e 67 we want leading 00000630: 20 77 68 69 74 65 73 70 61 63 65 2c 0a 20 20 20 whitespace,. 00000640: 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 while ( 00000650: 70 6f 73 20 3c 20 65 6e 64 29 20 7b 0a 20 20 20 pos < end) {. 00000660: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 68 61 cha 00000670: 72 20 3d 20 74 65 78 74 2e 63 68 61 72 43 6f 64 r = text.charCod 00000680: 65 41 74 28 70 6f 73 29 3b 0a 20 20 20 20 20 20 eAt(pos);. 00000690: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 68 if (ch 000006a0: 61 72 20 3d 3d 3d 20 31 32 33 20 2f 2a 20 43 68 ar === 123 /* Ch 000006b0: 61 72 61 63 74 65 72 43 6f 64 65 73 2e 6f 70 65 aracterCodes.ope 000006c0: 6e 42 72 61 63 65 20 2a 2f 29 20 7b 0a 20 20 20 nBrace */) {. 000006d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000006e0: 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 break;. 000006f0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 00000700: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 68 if (ch 00000710: 61 72 20 3d 3d 3d 20 36 30 20 2f 2a 20 43 68 61 ar === 60 /* Cha 00000720: 72 61 63 74 65 72 43 6f 64 65 73 2e 6c 65 73 73 racterCodes.less 00000730: 54 68 61 6e 20 2a 2f 29 20 7b 0a 20 20 20 20 20 Than */) {. 00000740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i 00000750: 66 20 28 69 73 43 6f 6e 66 6c 69 63 74 4d 61 72 f (isConflictMar 00000760: 6b 65 72 54 72 69 76 69 61 28 74 65 78 74 2c 20 kerTrivia(text, 00000770: 70 6f 73 29 29 20 7b 0a 20 20 20 20 20 20 20 20 pos)) {. 00000780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00000790: 70 6f 73 20 3d 20 73 63 61 6e 43 6f 6e 66 6c 69 pos = scanConfli 000007a0: 63 74 4d 61 72 6b 65 72 54 72 69 76 69 61 28 74 ctMarkerTrivia(t 000007b0: 65 78 74 2c 20 70 6f 73 2c 20 65 72 72 6f 72 29 ext, pos, error) 000007c0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 000007d0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 000007e0: 20 74 6f 6b 65 6e 20 3d 20 37 20 2f 2a 20 53 79 token = 7 /* Sy 000007f0: 6e 74 61 78 4b 69 6e 64 2e 43 6f 6e 66 6c 69 63 ntaxKind.Conflic 00000800: 74 4d 61 72 6b 65 72 54 72 69 76 69 61 20 2a 2f tMarkerTrivia */ 00000810: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 00000820: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 00000830: 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 brea 00000840: 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 k;. 00000850: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 00000860: 20 20 20 20 20 69 66 20 28 63 68 61 72 20 3d 3d if (char == 00000870: 3d 20 36 32 20 2f 2a 20 43 68 61 72 61 63 74 65 = 62 /* Characte 00000880: 72 43 6f 64 65 73 2e 67 72 65 61 74 65 72 54 68 rCodes.greaterTh 00000890: 61 6e 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 an */) {. 000008a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 err 000008b0: 6f 72 28 74 73 2e 44 69 61 67 6e 6f 73 74 69 63 or(ts.Diagnostic 000008c0: 73 2e 55 6e 65 78 70 65 63 74 65 64 5f 74 6f 6b s.Unexpected_tok 000008d0: 65 6e 5f 44 69 64 5f 79 6f 75 5f 6d 65 61 6e 5f en_Did_you_mean_ 000008e0: 6f 72 5f 67 74 2c 20 70 6f 73 2c 20 31 29 3b 0a or_gt, pos, 1);. 000008f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00000900: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 }. 00000910: 20 20 69 66 20 28 63 68 61 72 20 3d 3d 3d 20 31 if (char === 1 00000920: 32 35 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 25 /* CharacterC 00000930: 6f 64 65 73 2e 63 6c 6f 73 65 42 72 61 63 65 20 odes.closeBrace 00000940: 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 */) {. 00000950: 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 28 error( 00000960: 74 73 2e 44 69 61 67 6e 6f 73 74 69 63 73 2e 55 ts.Diagnostics.U 00000970: 6e 65 78 70 65 63 74 65 64 5f 74 6f 6b 65 6e 5f nexpected_token_ 00000980: 44 69 64 5f 79 6f 75 5f 6d 65 61 6e 5f 6f 72 5f Did_you_mean_or_ 00000990: 72 62 72 61 63 65 2c 20 70 6f 73 2c 20 31 29 3b rbrace, pos, 1); 000009a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 000009b0: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }. 000009c0: 20 20 20 2f 2f 20 46 69 72 73 74 4e 6f 6e 57 68 // FirstNonWh 000009d0: 69 74 65 73 70 61 63 65 20 69 73 20 30 2c 20 74 itespace is 0, t 000009e0: 68 65 6e 20 77 65 20 6f 6e 6c 79 20 73 65 65 20 hen we only see 000009f0: 77 68 69 74 65 73 70 61 63 65 73 20 73 6f 20 66 whitespaces so f 00000a00: 61 72 2e 20 49 66 20 77 65 20 73 65 65 20 61 20 ar. If we see a 00000a10: 6c 69 6e 65 62 72 65 61 6b 2c 20 77 65 20 77 61 linebreak, we wa 00000a20: 6e 74 20 74 6f 20 69 67 6e 6f 72 65 20 74 68 61 nt to ignore tha 00000a30: 74 20 77 68 69 74 65 73 70 61 63 65 73 2e 0a 20 t whitespaces.. 00000a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f / 00000a50: 2f 20 69 2e 65 20 28 2d 20 3a 20 77 68 69 74 65 / i.e (- : white 00000a60: 73 70 61 63 65 29 0a 20 20 20 20 20 20 20 20 20 space). 00000a70: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 3c // < 00000a80: 64 69 76 3e 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 div>----. 00000a90: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 // 00000aa0: 20 3c 2f 64 69 76 3e 20 62 65 63 6f 6d 65 73 20 </div> becomes 00000ab0: 3c 64 69 76 3e 3c 2f 64 69 76 3e 0a 20 20 20 20 <div></div>. 00000ac0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0a 20 //. 00000ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f / 00000ae0: 2f 20 20 20 20 20 20 3c 64 69 76 3e 2d 2d 2d 2d / <div>---- 00000af0: 3c 2f 64 69 76 3e 20 62 65 63 6f 6d 65 73 20 3c </div> becomes < 00000b00: 64 69 76 3e 2d 2d 2d 2d 3c 2f 64 69 76 3e 0a 20 div>----</div>. 00000b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i 00000b20: 66 20 28 69 73 4c 69 6e 65 42 72 65 61 6b 28 63 f (isLineBreak(c 00000b30: 68 61 72 29 20 26 26 20 66 69 72 73 74 4e 6f 6e har) && firstNon 00000b40: 57 68 69 74 65 73 70 61 63 65 20 3d 3d 3d 20 30 Whitespace === 0 00000b50: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 00000b60: 20 20 20 20 20 20 20 20 66 69 72 73 74 4e 6f 6e firstNon 00000b70: 57 68 69 74 65 73 70 61 63 65 20 3d 20 2d 31 3b Whitespace = -1; 00000b80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00000b90: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }. 00000ba0: 20 20 20 65 6c 73 65 20 69 66 20 28 21 61 6c 6c else if (!all 00000bb0: 6f 77 4d 75 6c 74 69 6c 69 6e 65 4a 73 78 54 65 owMultilineJsxTe 00000bc0: 78 74 20 26 26 20 69 73 4c 69 6e 65 42 72 65 61 xt && isLineBrea 00000bd0: 6b 28 63 68 61 72 29 20 26 26 20 66 69 72 73 74 k(char) && first 00000be0: 4e 6f 6e 57 68 69 74 65 73 70 61 63 65 20 3e 20 NonWhitespace > 00000bf0: 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 0) {. 00000c00: 20 20 20 20 20 20 20 20 20 2f 2f 20 53 74 6f 70 // Stop 00000c10: 20 4a 73 78 54 65 78 74 20 6f 6e 20 65 61 63 68 JsxText on each 00000c20: 20 6c 69 6e 65 20 64 75 72 69 6e 67 20 66 6f 72 line during for 00000c30: 6d 61 74 74 69 6e 67 2e 20 54 68 69 73 20 61 6c matting. This al 00000c40: 6c 6f 77 73 20 74 68 65 20 66 6f 72 6d 61 74 74 lows the formatt 00000c50: 65 72 20 74 6f 0a 20 20 20 20 20 20 20 20 20 20 er to. 00000c60: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 6e 64 // ind 00000c70: 65 6e 74 20 65 61 63 68 20 6c 69 6e 65 20 63 6f ent each line co 00000c80: 72 72 65 63 74 6c 79 2e 0a 20 20 20 20 20 20 20 rrectly.. 00000c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 bre 00000ca0: 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ak;. 00000cb0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }. 00000cc0: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 else if (! 00000cd0: 69 73 57 68 69 74 65 53 70 61 63 65 4c 69 6b 65 isWhiteSpaceLike 00000ce0: 28 63 68 61 72 29 29 20 7b 0a 20 20 20 20 20 20 (char)) {. 00000cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 fi 00000d00: 72 73 74 4e 6f 6e 57 68 69 74 65 73 70 61 63 65 rstNonWhitespace 00000d10: 20 3d 20 70 6f 73 3b 0a 20 20 20 20 20 20 20 20 = pos;. 00000d20: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 00000d30: 20 20 20 20 20 20 20 20 20 20 70 6f 73 2b 2b 3b pos++; 00000d40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 . }. 00000d50: 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e token 00000d60: 56 61 6c 75 65 20 3d 20 74 65 78 74 2e 73 75 62 Value = text.sub 00000d70: 73 74 72 69 6e 67 28 73 74 61 72 74 50 6f 73 2c string(startPos, 00000d80: 20 70 6f 73 29 3b 0a 20 20 20 20 20 20 20 20 20 pos);. 00000d90: 20 20 20 72 65 74 75 72 6e 20 66 69 72 73 74 4e return firstN 00000da0: 6f 6e 57 68 69 74 65 73 70 61 63 65 20 3d 3d 3d onWhitespace === 00000db0: 20 2d 31 20 3f 20 31 32 20 2f 2a 20 53 79 6e 74 -1 ? 12 /* Synt 00000dc0: 61 78 4b 69 6e 64 2e 4a 73 78 54 65 78 74 41 6c axKind.JsxTextAl 00000dd0: 6c 57 68 69 74 65 53 70 61 63 65 73 20 2a 2f 20 lWhiteSpaces */ 00000de0: 3a 20 31 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 : 11 /* SyntaxKi 00000df0: 6e 64 2e 4a 73 78 54 65 78 74 20 2a 2f 3b 0a 20 nd.JsxText */;. 00000e00: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00000e10: 20 2f 2f 20 53 63 61 6e 73 20 61 20 4a 53 58 20 // Scans a JSX 00000e20: 69 64 65 6e 74 69 66 69 65 72 3b 20 74 68 65 73 identifier; thes 00000e30: 65 20 64 69 66 66 65 72 20 66 72 6f 6d 20 6e 6f e differ from no 00000e40: 72 6d 61 6c 20 69 64 65 6e 74 69 66 69 65 72 73 rmal identifiers 00000e50: 20 69 6e 20 74 68 61 74 0a 20 20 20 20 20 20 20 in that. 00000e60: 20 2f 2f 20 74 68 65 79 20 61 6c 6c 6f 77 20 64 // they allow d 00000e70: 61 73 68 65 73 0a 20 20 20 20 20 20 20 20 66 75 ashes. fu 00000e80: 6e 63 74 69 6f 6e 20 73 63 61 6e 4a 73 78 49 64 nction scanJsxId 00000e90: 65 6e 74 69 66 69 65 72 28 29 20 7b 0a 20 20 20 entifier() {. 00000ea0: 20 20 20 20 20 20 20 20 20 69 66 20 28 74 6f 6b if (tok 00000eb0: 65 6e 49 73 49 64 65 6e 74 69 66 69 65 72 4f 72 enIsIdentifierOr 00000ec0: 4b 65 79 77 6f 72 64 28 74 6f 6b 65 6e 29 29 20 Keyword(token)) 00000ed0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 00000ee0: 20 20 2f 2f 20 41 6e 20 69 64 65 6e 74 69 66 69 // An identifi 00000ef0: 65 72 20 6f 72 20 6b 65 79 77 6f 72 64 20 68 61 er or keyword ha 00000f00: 73 20 61 6c 72 65 61 64 79 20 62 65 65 6e 20 70 s already been p 00000f10: 61 72 73 65 64 20 2d 20 63 68 65 63 6b 20 66 6f arsed - check fo 00000f20: 72 20 61 20 60 2d 60 20 6f 72 20 61 20 73 69 6e r a `-` or a sin 00000f30: 67 6c 65 20 69 6e 73 74 61 6e 63 65 20 6f 66 20 gle instance of 00000f40: 60 3a 60 20 61 6e 64 20 74 68 65 6e 20 61 70 70 `:` and then app 00000f50: 65 6e 64 20 69 74 20 61 6e 64 0a 20 20 20 20 20 end it and. 00000f60: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 65 76 // ev 00000f70: 65 72 79 74 68 69 6e 67 20 61 66 74 65 72 20 69 erything after i 00000f80: 74 20 74 6f 20 74 68 65 20 74 6f 6b 65 6e 0a 20 t to the token. 00000f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f / 00000fa0: 2f 20 44 6f 20 6e 6f 74 65 20 74 68 61 74 20 74 / Do note that t 00000fb0: 68 69 73 20 6d 65 61 6e 73 20 74 68 61 74 20 60 his means that ` 00000fc0: 73 63 61 6e 4a 73 78 49 64 65 6e 74 69 66 69 65 scanJsxIdentifie 00000fd0: 72 60 20 65 66 66 65 63 74 69 76 65 6c 79 20 5f r` effectively _ 00000fe0: 6d 75 74 61 74 65 73 5f 20 74 68 65 20 76 69 73 mutates_ the vis 00000ff0: 69 62 6c 65 20 74 6f 6b 65 6e 20 77 69 74 68 6f ible token witho 00001000: 75 74 20 61 64 76 61 6e 63 69 6e 67 20 74 6f 20 ut advancing to 00001010: 61 20 6e 65 77 20 74 6f 6b 65 6e 0a 20 20 20 20 a new token. 00001020: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 41 // A 00001030: 6e 79 20 63 61 6c 6c 65 72 20 73 68 6f 75 6c 64 ny caller should 00001040: 20 62 65 20 65 78 70 65 63 74 69 6e 67 20 74 68 be expecting th 00001050: 69 73 20 62 65 68 61 76 69 6f 72 20 61 6e 64 20 is behavior and 00001060: 73 68 6f 75 6c 64 20 6f 6e 6c 79 20 72 65 61 64 should only read 00001070: 20 74 68 65 20 70 6f 73 20 6f 72 20 74 6f 6b 65 the pos or toke 00001080: 6e 20 76 61 6c 75 65 20 61 66 74 65 72 20 63 61 n value after ca 00001090: 6c 6c 69 6e 67 20 69 74 2e 0a 20 20 20 20 20 20 lling it.. 000010a0: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e 61 var na 000010b0: 6d 65 73 70 61 63 65 53 65 70 61 72 61 74 6f 72 mespaceSeparator 000010c0: 20 3d 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 = false;. 000010d0: 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 while 000010e0: 28 70 6f 73 20 3c 20 65 6e 64 29 20 7b 0a 20 20 (pos < end) {. 000010f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001100: 20 20 76 61 72 20 63 68 20 3d 20 74 65 78 74 2e var ch = text. 00001110: 63 68 61 72 43 6f 64 65 41 74 28 70 6f 73 29 3b charCodeAt(pos); 00001120: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00001130: 20 20 20 20 20 69 66 20 28 63 68 20 3d 3d 3d 20 if (ch === 00001140: 34 35 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 45 /* CharacterC 00001150: 6f 64 65 73 2e 6d 69 6e 75 73 20 2a 2f 29 20 7b odes.minus */) { 00001160: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00001170: 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 56 61 tokenVa 00001180: 6c 75 65 20 2b 3d 20 22 2d 22 3b 0a 20 20 20 20 lue += "-";. 00001190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000011a0: 20 20 20 20 70 6f 73 2b 2b 3b 0a 20 20 20 20 20 pos++;. 000011b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000011c0: 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0a 20 20 20 continue;. 000011d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000011e0: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }. 000011f0: 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 else if ( 00001200: 63 68 20 3d 3d 3d 20 35 38 20 2f 2a 20 43 68 61 ch === 58 /* Cha 00001210: 72 61 63 74 65 72 43 6f 64 65 73 2e 63 6f 6c 6f racterCodes.colo 00001220: 6e 20 2a 2f 20 26 26 20 21 6e 61 6d 65 73 70 61 n */ && !namespa 00001230: 63 65 53 65 70 61 72 61 74 6f 72 29 20 7b 0a 20 ceSeparator) {. 00001240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001250: 20 20 20 20 20 20 20 74 6f 6b 65 6e 56 61 6c 75 tokenValu 00001260: 65 20 2b 3d 20 22 3a 22 3b 0a 20 20 20 20 20 20 e += ":";. 00001270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001280: 20 20 70 6f 73 2b 2b 3b 0a 20 20 20 20 20 20 20 pos++;. 00001290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000012a0: 20 6e 61 6d 65 73 70 61 63 65 53 65 70 61 72 61 namespaceSepara 000012b0: 74 6f 72 20 3d 20 74 72 75 65 3b 0a 20 20 20 20 tor = true;. 000012c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000012d0: 20 20 20 20 74 6f 6b 65 6e 20 3d 20 37 39 20 2f token = 79 / 000012e0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 64 65 * SyntaxKind.Ide 000012f0: 6e 74 69 66 69 65 72 20 2a 2f 3b 20 2f 2f 20 73 ntifier */; // s 00001300: 77 61 70 20 66 72 6f 6d 20 6b 65 79 77 6f 72 64 wap from keyword 00001310: 20 6b 69 6e 64 20 74 6f 20 69 64 65 6e 74 69 66 kind to identif 00001320: 69 65 72 20 6b 69 6e 64 0a 20 20 20 20 20 20 20 ier kind. 00001330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001340: 20 63 6f 6e 74 69 6e 75 65 3b 0a 20 20 20 20 20 continue;. 00001350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d } 00001360: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00001370: 20 20 20 20 20 76 61 72 20 6f 6c 64 50 6f 73 20 var oldPos 00001380: 3d 20 70 6f 73 3b 0a 20 20 20 20 20 20 20 20 20 = pos;. 00001390: 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e token 000013a0: 56 61 6c 75 65 20 2b 3d 20 73 63 61 6e 49 64 65 Value += scanIde 000013b0: 6e 74 69 66 69 65 72 50 61 72 74 73 28 29 3b 20 ntifierParts(); 000013c0: 2f 2f 20 72 65 75 73 65 20 60 73 63 61 6e 49 64 // reuse `scanId 000013d0: 65 6e 74 69 66 69 65 72 50 61 72 74 73 60 20 73 entifierParts` s 000013e0: 6f 20 75 6e 69 63 6f 64 65 20 65 73 63 61 70 65 o unicode escape 000013f0: 73 20 61 72 65 20 68 61 6e 64 6c 65 64 0a 20 20 s are handled. 00001400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001410: 20 20 69 66 20 28 70 6f 73 20 3d 3d 3d 20 6f 6c if (pos === ol 00001420: 64 50 6f 73 29 20 7b 0a 20 20 20 20 20 20 20 20 dPos) {. 00001430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001440: 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 break;. 00001450: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 00001460: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 }. 00001470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f / 00001480: 2f 20 44 6f 20 6e 6f 74 20 69 6e 63 6c 75 64 65 / Do not include 00001490: 20 61 20 74 72 61 69 6c 69 6e 67 20 6e 61 6d 65 a trailing name 000014a0: 73 70 61 63 65 20 73 65 70 61 72 61 74 6f 72 20 space separator 000014b0: 69 6e 20 74 68 65 20 74 6f 6b 65 6e 2c 20 73 69 in the token, si 000014c0: 6e 63 65 20 74 68 69 73 20 69 73 20 61 67 61 69 nce this is agai 000014d0: 6e 73 74 20 74 68 65 20 73 70 65 63 2e 0a 20 20 nst the spec.. 000014e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if 000014f0: 20 28 74 6f 6b 65 6e 56 61 6c 75 65 2e 73 6c 69 (tokenValue.sli 00001500: 63 65 28 2d 31 29 20 3d 3d 3d 20 22 3a 22 29 20 ce(-1) === ":") 00001510: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 00001520: 20 20 20 20 20 20 74 6f 6b 65 6e 56 61 6c 75 65 tokenValue 00001530: 20 3d 20 74 6f 6b 65 6e 56 61 6c 75 65 2e 73 6c = tokenValue.sl 00001540: 69 63 65 28 30 2c 20 2d 31 29 3b 0a 20 20 20 20 ice(0, -1);. 00001550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001560: 70 6f 73 2d 2d 3b 0a 20 20 20 20 20 20 20 20 20 pos--;. 00001570: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00001580: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 00001590: 67 65 74 49 64 65 6e 74 69 66 69 65 72 54 6f 6b getIdentifierTok 000015a0: 65 6e 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 en();. 000015b0: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }. 000015c0: 72 65 74 75 72 6e 20 74 6f 6b 65 6e 3b 0a 20 20 return token;. 000015d0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 000015e0: 66 75 6e 63 74 69 6f 6e 20 73 63 61 6e 4a 73 78 function scanJsx 000015f0: 41 74 74 72 69 62 75 74 65 56 61 6c 75 65 28 29 AttributeValue() 00001600: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 {. s 00001610: 74 61 72 74 50 6f 73 20 3d 20 70 6f 73 3b 0a 20 tartPos = pos;. 00001620: 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74 63 switc 00001630: 68 20 28 74 65 78 74 2e 63 68 61 72 43 6f 64 65 h (text.charCode 00001640: 41 74 28 70 6f 73 29 29 20 7b 0a 20 20 20 20 20 At(pos)) {. 00001650: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00001660: 33 34 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 34 /* CharacterC 00001670: 6f 64 65 73 2e 64 6f 75 62 6c 65 51 75 6f 74 65 odes.doubleQuote 00001680: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00001690: 20 20 20 20 20 63 61 73 65 20 33 39 20 2f 2a 20 case 39 /* 000016a0: 43 68 61 72 61 63 74 65 72 43 6f 64 65 73 2e 73 CharacterCodes.s 000016b0: 69 6e 67 6c 65 51 75 6f 74 65 20 2a 2f 3a 0a 20 ingleQuote */:. 000016c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000016d0: 20 20 20 74 6f 6b 65 6e 56 61 6c 75 65 20 3d 20 tokenValue = 000016e0: 73 63 61 6e 53 74 72 69 6e 67 28 2f 2a 6a 73 78 scanString(/*jsx 000016f0: 41 74 74 72 69 62 75 74 65 53 74 72 69 6e 67 2a AttributeString* 00001700: 2f 20 74 72 75 65 29 3b 0a 20 20 20 20 20 20 20 / true);. 00001710: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00001720: 75 72 6e 20 74 6f 6b 65 6e 20 3d 20 31 30 20 2f urn token = 10 / 00001730: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 74 72 * SyntaxKind.Str 00001740: 69 6e 67 4c 69 74 65 72 61 6c 20 2a 2f 3b 0a 20 ingLiteral */;. 00001750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 d 00001760: 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 efault:. 00001770: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 // I 00001780: 66 20 74 68 69 73 20 73 63 61 6e 73 20 61 6e 79 f this scans any 00001790: 74 68 69 6e 67 20 6f 74 68 65 72 20 74 68 61 6e thing other than 000017a0: 20 60 7b 60 2c 20 69 74 27 73 20 61 20 70 61 72 `{`, it's a par 000017b0: 73 65 20 65 72 72 6f 72 2e 0a 20 20 20 20 20 20 se error.. 000017c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 000017d0: 74 75 72 6e 20 73 63 61 6e 28 29 3b 0a 20 20 20 turn scan();. 000017e0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 000017f0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 66 75 6e }. fun 00001800: 63 74 69 6f 6e 20 72 65 53 63 61 6e 4a 73 78 41 ction reScanJsxA 00001810: 74 74 72 69 62 75 74 65 56 61 6c 75 65 28 29 20 ttributeValue() 00001820: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 6f {. po 00001830: 73 20 3d 20 74 6f 6b 65 6e 50 6f 73 20 3d 20 73 s = tokenPos = s 00001840: 74 61 72 74 50 6f 73 3b 0a 20 20 20 20 20 20 20 tartPos;. 00001850: 20 20 20 20 20 72 65 74 75 72 6e 20 73 63 61 6e return scan 00001860: 4a 73 78 41 74 74 72 69 62 75 74 65 56 61 6c 75 JsxAttributeValu 00001870: 65 28 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 e();. }. 00001880: 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 function 00001890: 73 63 61 6e 4a 73 44 6f 63 54 6f 6b 65 6e 28 29 scanJsDocToken() 000018a0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 {. s 000018b0: 74 61 72 74 50 6f 73 20 3d 20 74 6f 6b 65 6e 50 tartPos = tokenP 000018c0: 6f 73 20 3d 20 70 6f 73 3b 0a 20 20 20 20 20 20 os = pos;. 000018d0: 20 20 20 20 20 20 74 6f 6b 65 6e 46 6c 61 67 73 tokenFlags 000018e0: 20 3d 20 30 20 2f 2a 20 54 6f 6b 65 6e 46 6c 61 = 0 /* TokenFla 000018f0: 67 73 2e 4e 6f 6e 65 20 2a 2f 3b 0a 20 20 20 20 gs.None */;. 00001900: 20 20 20 20 20 20 20 20 69 66 20 28 70 6f 73 20 if (pos 00001910: 3e 3d 20 65 6e 64 29 20 7b 0a 20 20 20 20 20 20 >= end) {. 00001920: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00001930: 20 74 6f 6b 65 6e 20 3d 20 31 20 2f 2a 20 53 79 token = 1 /* Sy 00001940: 6e 74 61 78 4b 69 6e 64 2e 45 6e 64 4f 66 46 69 ntaxKind.EndOfFi 00001950: 6c 65 54 6f 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 leToken */;. 00001960: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 00001970: 20 20 20 20 20 20 76 61 72 20 63 68 20 3d 20 63 var ch = c 00001980: 6f 64 65 50 6f 69 6e 74 41 74 28 74 65 78 74 2c odePointAt(text, 00001990: 20 70 6f 73 29 3b 0a 20 20 20 20 20 20 20 20 20 pos);. 000019a0: 20 20 20 70 6f 73 20 2b 3d 20 63 68 61 72 53 69 pos += charSi 000019b0: 7a 65 28 63 68 29 3b 0a 20 20 20 20 20 20 20 20 ze(ch);. 000019c0: 20 20 20 20 73 77 69 74 63 68 20 28 63 68 29 20 switch (ch) 000019d0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 000019e0: 20 20 63 61 73 65 20 39 20 2f 2a 20 43 68 61 72 case 9 /* Char 000019f0: 61 63 74 65 72 43 6f 64 65 73 2e 74 61 62 20 2a acterCodes.tab * 00001a00: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 00001a10: 20 20 20 63 61 73 65 20 31 31 20 2f 2a 20 43 68 case 11 /* Ch 00001a20: 61 72 61 63 74 65 72 43 6f 64 65 73 2e 76 65 72 aracterCodes.ver 00001a30: 74 69 63 61 6c 54 61 62 20 2a 2f 3a 0a 20 20 20 ticalTab */:. 00001a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 cas 00001a50: 65 20 31 32 20 2f 2a 20 43 68 61 72 61 63 74 65 e 12 /* Characte 00001a60: 72 43 6f 64 65 73 2e 66 6f 72 6d 46 65 65 64 20 rCodes.formFeed 00001a70: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00001a80: 20 20 20 20 63 61 73 65 20 33 32 20 2f 2a 20 43 case 32 /* C 00001a90: 68 61 72 61 63 74 65 72 43 6f 64 65 73 2e 73 70 haracterCodes.sp 00001aa0: 61 63 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ace */:. 00001ab0: 20 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c whil 00001ac0: 65 20 28 70 6f 73 20 3c 20 65 6e 64 20 26 26 20 e (pos < end && 00001ad0: 69 73 57 68 69 74 65 53 70 61 63 65 53 69 6e 67 isWhiteSpaceSing 00001ae0: 6c 65 4c 69 6e 65 28 74 65 78 74 2e 63 68 61 72 leLine(text.char 00001af0: 43 6f 64 65 41 74 28 70 6f 73 29 29 29 20 7b 0a CodeAt(pos))) {. 00001b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001b10: 20 20 20 20 20 20 20 20 70 6f 73 2b 2b 3b 0a 20 pos++;. 00001b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001b30: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 00001b40: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 00001b50: 74 6f 6b 65 6e 20 3d 20 35 20 2f 2a 20 53 79 6e token = 5 /* Syn 00001b60: 74 61 78 4b 69 6e 64 2e 57 68 69 74 65 73 70 61 taxKind.Whitespa 00001b70: 63 65 54 72 69 76 69 61 20 2a 2f 3b 0a 20 20 20 ceTrivia */;. 00001b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 cas 00001b90: 65 20 36 34 20 2f 2a 20 43 68 61 72 61 63 74 65 e 64 /* Characte 00001ba0: 72 43 6f 64 65 73 2e 61 74 20 2a 2f 3a 0a 20 20 rCodes.at */:. 00001bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001bc0: 20 20 72 65 74 75 72 6e 20 74 6f 6b 65 6e 20 3d return token = 00001bd0: 20 35 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 59 /* SyntaxKin 00001be0: 64 2e 41 74 54 6f 6b 65 6e 20 2a 2f 3b 0a 20 20 d.AtToken */;. 00001bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 00001c00: 73 65 20 31 33 20 2f 2a 20 43 68 61 72 61 63 74 se 13 /* Charact 00001c10: 65 72 43 6f 64 65 73 2e 63 61 72 72 69 61 67 65 erCodes.carriage 00001c20: 52 65 74 75 72 6e 20 2a 2f 3a 0a 20 20 20 20 20 Return */:. 00001c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i 00001c40: 66 20 28 74 65 78 74 2e 63 68 61 72 43 6f 64 65 f (text.charCode 00001c50: 41 74 28 70 6f 73 29 20 3d 3d 3d 20 31 30 20 2f At(pos) === 10 / 00001c60: 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 65 73 * CharacterCodes 00001c70: 2e 6c 69 6e 65 46 65 65 64 20 2a 2f 29 20 7b 0a .lineFeed */) {. 00001c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001c90: 20 20 20 20 20 20 20 20 70 6f 73 2b 2b 3b 0a 20 pos++;. 00001ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001cb0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 00001cc0: 20 20 20 20 20 2f 2f 20 66 61 6c 6c 73 20 74 68 // falls th 00001cd0: 72 6f 75 67 68 0a 20 20 20 20 20 20 20 20 20 20 rough. 00001ce0: 20 20 20 20 20 20 63 61 73 65 20 31 30 20 2f 2a case 10 /* 00001cf0: 20 43 68 61 72 61 63 74 65 72 43 6f 64 65 73 2e CharacterCodes. 00001d00: 6c 69 6e 65 46 65 65 64 20 2a 2f 3a 0a 20 20 20 lineFeed */:. 00001d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00001d20: 20 74 6f 6b 65 6e 46 6c 61 67 73 20 7c 3d 20 31 tokenFlags |= 1 00001d30: 20 2f 2a 20 54 6f 6b 65 6e 46 6c 61 67 73 2e 50 /* TokenFlags.P 00001d40: 72 65 63 65 64 69 6e 67 4c 69 6e 65 42 72 65 61 recedingLineBrea 00001d50: 6b 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 20 20 k */;. 00001d60: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00001d70: 20 74 6f 6b 65 6e 20 3d 20 34 20 2f 2a 20 53 79 token = 4 /* Sy 00001d80: 6e 74 61 78 4b 69 6e 64 2e 4e 65 77 4c 69 6e 65 ntaxKind.NewLine 00001d90: 54 72 69 76 69 61 20 2a 2f 3b 0a 20 20 20 20 20 Trivia */;. 00001da0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00001db0: 34 32 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 42 /* CharacterC 00001dc0: 6f 64 65 73 2e 61 73 74 65 72 69 73 6b 20 2a 2f odes.asterisk */ 00001dd0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 00001de0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 6f 6b return tok 00001df0: 65 6e 20 3d 20 34 31 20 2f 2a 20 53 79 6e 74 61 en = 41 /* Synta 00001e00: 78 4b 69 6e 64 2e 41 73 74 65 72 69 73 6b 54 6f xKind.AsteriskTo 00001e10: 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 ken */;. 00001e20: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 32 33 case 123 00001e30: 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 /* CharacterCod 00001e40: 65 73 2e 6f 70 65 6e 42 72 61 63 65 20 2a 2f 3a es.openBrace */: 00001e50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00001e60: 20 20 20 20 20 72 65 74 75 72 6e 20 74 6f 6b 65 return toke 00001e70: 6e 20 3d 20 31 38 20 2f 2a 20 53 79 6e 74 61 78 n = 18 /* Syntax 00001e80: 4b 69 6e 64 2e 4f 70 65 6e 42 72 61 63 65 54 6f Kind.OpenBraceTo 00001e90: 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 ken */;. 00001ea0: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 32 35 case 125 00001eb0: 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 /* CharacterCod 00001ec0: 65 73 2e 63 6c 6f 73 65 42 72 61 63 65 20 2a 2f es.closeBrace */ 00001ed0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 00001ee0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 6f 6b return tok 00001ef0: 65 6e 20 3d 20 31 39 20 2f 2a 20 53 79 6e 74 61 en = 19 /* Synta 00001f00: 78 4b 69 6e 64 2e 43 6c 6f 73 65 42 72 61 63 65 xKind.CloseBrace 00001f10: 54 6f 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 Token */;. 00001f20: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 39 case 9 00001f30: 31 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 1 /* CharacterCo 00001f40: 64 65 73 2e 6f 70 65 6e 42 72 61 63 6b 65 74 20 des.openBracket 00001f50: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00001f60: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 00001f70: 6f 6b 65 6e 20 3d 20 32 32 20 2f 2a 20 53 79 6e oken = 22 /* Syn 00001f80: 74 61 78 4b 69 6e 64 2e 4f 70 65 6e 42 72 61 63 taxKind.OpenBrac 00001f90: 6b 65 74 54 6f 6b 65 6e 20 2a 2f 3b 0a 20 20 20 ketToken */;. 00001fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 cas 00001fb0: 65 20 39 33 20 2f 2a 20 43 68 61 72 61 63 74 65 e 93 /* Characte 00001fc0: 72 43 6f 64 65 73 2e 63 6c 6f 73 65 42 72 61 63 rCodes.closeBrac 00001fd0: 6b 65 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ket */:. 00001fe0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00001ff0: 72 6e 20 74 6f 6b 65 6e 20 3d 20 32 33 20 2f 2a rn token = 23 /* 00002000: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6c 6f 73 SyntaxKind.Clos 00002010: 65 42 72 61 63 6b 65 74 54 6f 6b 65 6e 20 2a 2f eBracketToken */ 00002020: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 00002030: 20 20 63 61 73 65 20 36 30 20 2f 2a 20 43 68 61 case 60 /* Cha 00002040: 72 61 63 74 65 72 43 6f 64 65 73 2e 6c 65 73 73 racterCodes.less 00002050: 54 68 61 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 Than */:. 00002060: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00002070: 75 72 6e 20 74 6f 6b 65 6e 20 3d 20 32 39 20 2f urn token = 29 / 00002080: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4c 65 73 * SyntaxKind.Les 00002090: 73 54 68 61 6e 54 6f 6b 65 6e 20 2a 2f 3b 0a 20 sThanToken */;. 000020a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 000020b0: 61 73 65 20 36 32 20 2f 2a 20 43 68 61 72 61 63 ase 62 /* Charac 000020c0: 74 65 72 43 6f 64 65 73 2e 67 72 65 61 74 65 72 terCodes.greater 000020d0: 54 68 61 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 Than */:. 000020e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 000020f0: 75 72 6e 20 74 6f 6b 65 6e 20 3d 20 33 31 20 2f urn token = 31 / 00002100: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 47 72 65 * SyntaxKind.Gre 00002110: 61 74 65 72 54 68 61 6e 54 6f 6b 65 6e 20 2a 2f aterThanToken */ 00002120: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 00002130: 20 20 63 61 73 65 20 36 31 20 2f 2a 20 43 68 61 case 61 /* Cha 00002140: 72 61 63 74 65 72 43 6f 64 65 73 2e 65 71 75 61 racterCodes.equa 00002150: 6c 73 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 ls */:. 00002160: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00002170: 6e 20 74 6f 6b 65 6e 20 3d 20 36 33 20 2f 2a 20 n token = 63 /* 00002180: 53 79 6e 74 61 78 4b 69 6e 64 2e 45 71 75 61 6c SyntaxKind.Equal 00002190: 73 54 6f 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 20 sToken */;. 000021a0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 000021b0: 34 34 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 44 /* CharacterC 000021c0: 6f 64 65 73 2e 63 6f 6d 6d 61 20 2a 2f 3a 0a 20 odes.comma */:. 000021d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000021e0: 20 20 20 72 65 74 75 72 6e 20 74 6f 6b 65 6e 20 return token 000021f0: 3d 20 32 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 = 27 /* SyntaxKi 00002200: 6e 64 2e 43 6f 6d 6d 61 54 6f 6b 65 6e 20 2a 2f nd.CommaToken */ 00002210: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 00002220: 20 20 63 61 73 65 20 34 36 20 2f 2a 20 43 68 61 case 46 /* Cha 00002230: 72 61 63 74 65 72 43 6f 64 65 73 2e 64 6f 74 20 racterCodes.dot 00002240: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00002250: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 00002260: 6f 6b 65 6e 20 3d 20 32 34 20 2f 2a 20 53 79 6e oken = 24 /* Syn 00002270: 74 61 78 4b 69 6e 64 2e 44 6f 74 54 6f 6b 65 6e taxKind.DotToken 00002280: 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 20 20 20 */;. 00002290: 20 20 20 20 20 63 61 73 65 20 39 36 20 2f 2a 20 case 96 /* 000022a0: 43 68 61 72 61 63 74 65 72 43 6f 64 65 73 2e 62 CharacterCodes.b 000022b0: 61 63 6b 74 69 63 6b 20 2a 2f 3a 0a 20 20 20 20 acktick */:. 000022c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000022d0: 72 65 74 75 72 6e 20 74 6f 6b 65 6e 20 3d 20 36 return token = 6 000022e0: 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 1 /* SyntaxKind. 000022f0: 42 61 63 6b 74 69 63 6b 54 6f 6b 65 6e 20 2a 2f BacktickToken */ 00002300: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 00002310: 20 20 63 61 73 65 20 33 35 20 2f 2a 20 43 68 61 case 35 /* Cha 00002320: 72 61 63 74 65 72 43 6f 64 65 73 2e 68 61 73 68 racterCodes.hash 00002330: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00002340: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 00002350: 74 6f 6b 65 6e 20 3d 20 36 32 20 2f 2a 20 53 79 token = 62 /* Sy 00002360: 6e 74 61 78 4b 69 6e 64 2e 48 61 73 68 54 6f 6b ntaxKind.HashTok 00002370: 65 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 20 en */;. 00002380: 20 20 20 20 20 20 20 63 61 73 65 20 39 32 20 2f case 92 / 00002390: 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 65 73 * CharacterCodes 000023a0: 2e 62 61 63 6b 73 6c 61 73 68 20 2a 2f 3a 0a 20 .backslash */:. 000023b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000023c0: 20 20 20 70 6f 73 2d 2d 3b 0a 20 20 20 20 20 20 pos--;. 000023d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 va 000023e0: 72 20 65 78 74 65 6e 64 65 64 43 6f 6f 6b 65 64 r extendedCooked 000023f0: 43 68 61 72 20 3d 20 70 65 65 6b 45 78 74 65 6e Char = peekExten 00002400: 64 65 64 55 6e 69 63 6f 64 65 45 73 63 61 70 65 dedUnicodeEscape 00002410: 28 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ();. 00002420: 20 20 20 20 20 20 20 20 69 66 20 28 65 78 74 65 if (exte 00002430: 6e 64 65 64 43 6f 6f 6b 65 64 43 68 61 72 20 3e ndedCookedChar > 00002440: 3d 20 30 20 26 26 20 69 73 49 64 65 6e 74 69 66 = 0 && isIdentif 00002450: 69 65 72 53 74 61 72 74 28 65 78 74 65 6e 64 65 ierStart(extende 00002460: 64 43 6f 6f 6b 65 64 43 68 61 72 2c 20 6c 61 6e dCookedChar, lan 00002470: 67 75 61 67 65 56 65 72 73 69 6f 6e 29 29 20 7b guageVersion)) { 00002480: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00002490: 20 20 20 20 20 20 20 20 20 70 6f 73 20 2b 3d 20 pos += 000024a0: 33 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 3;. 000024b0: 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e token 000024c0: 46 6c 61 67 73 20 7c 3d 20 38 20 2f 2a 20 54 6f Flags |= 8 /* To 000024d0: 6b 65 6e 46 6c 61 67 73 2e 45 78 74 65 6e 64 65 kenFlags.Extende 000024e0: 64 55 6e 69 63 6f 64 65 45 73 63 61 70 65 20 2a dUnicodeEscape * 000024f0: 2f 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /;. 00002500: 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e token 00002510: 56 61 6c 75 65 20 3d 20 73 63 61 6e 45 78 74 65 Value = scanExte 00002520: 6e 64 65 64 55 6e 69 63 6f 64 65 45 73 63 61 70 ndedUnicodeEscap 00002530: 65 28 29 20 2b 20 73 63 61 6e 49 64 65 6e 74 69 e() + scanIdenti 00002540: 66 69 65 72 50 61 72 74 73 28 29 3b 0a 20 20 20 fierParts();. 00002550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00002560: 20 20 20 20 20 72 65 74 75 72 6e 20 74 6f 6b 65 return toke 00002570: 6e 20 3d 20 67 65 74 49 64 65 6e 74 69 66 69 65 n = getIdentifie 00002580: 72 54 6f 6b 65 6e 28 29 3b 0a 20 20 20 20 20 20 rToken();. 00002590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }. 000025a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000025b0: 20 20 20 20 76 61 72 20 63 6f 6f 6b 65 64 43 68 var cookedCh 000025c0: 61 72 20 3d 20 70 65 65 6b 55 6e 69 63 6f 64 65 ar = peekUnicode 000025d0: 45 73 63 61 70 65 28 29 3b 0a 20 20 20 20 20 20 Escape();. 000025e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if 000025f0: 20 28 63 6f 6f 6b 65 64 43 68 61 72 20 3e 3d 20 (cookedChar >= 00002600: 30 20 26 26 20 69 73 49 64 65 6e 74 69 66 69 65 0 && isIdentifie 00002610: 72 53 74 61 72 74 28 63 6f 6f 6b 65 64 43 68 61 rStart(cookedCha 00002620: 72 2c 20 6c 61 6e 67 75 61 67 65 56 65 72 73 69 r, languageVersi 00002630: 6f 6e 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 on)) {. 00002640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 p 00002650: 6f 73 20 2b 3d 20 36 3b 0a 20 20 20 20 20 20 20 os += 6;. 00002660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00002670: 20 74 6f 6b 65 6e 46 6c 61 67 73 20 7c 3d 20 31 tokenFlags |= 1 00002680: 30 32 34 20 2f 2a 20 54 6f 6b 65 6e 46 6c 61 67 024 /* TokenFlag 00002690: 73 2e 55 6e 69 63 6f 64 65 45 73 63 61 70 65 20 s.UnicodeEscape 000026a0: 2a 2f 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 */;. 000026b0: 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 toke 000026c0: 6e 56 61 6c 75 65 20 3d 20 53 74 72 69 6e 67 2e nValue = String. 000026d0: 66 72 6f 6d 43 68 61 72 43 6f 64 65 28 63 6f 6f fromCharCode(coo 000026e0: 6b 65 64 43 68 61 72 29 20 2b 20 73 63 61 6e 49 kedChar) + scanI 000026f0: 64 65 6e 74 69 66 69 65 72 50 61 72 74 73 28 29 dentifierParts() 00002700: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 00002710: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00002720: 20 74 6f 6b 65 6e 20 3d 20 67 65 74 49 64 65 6e token = getIden 00002730: 74 69 66 69 65 72 54 6f 6b 65 6e 28 29 3b 0a 20 tifierToken();. 00002740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00002750: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 00002760: 20 20 20 20 20 20 20 20 20 70 6f 73 2b 2b 3b 0a pos++;. 00002770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00002780: 20 20 20 20 72 65 74 75 72 6e 20 74 6f 6b 65 6e return token 00002790: 20 3d 20 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 = 0 /* SyntaxKi 000027a0: 6e 64 2e 55 6e 6b 6e 6f 77 6e 20 2a 2f 3b 0a 20 nd.Unknown */;. 000027b0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 000027c0: 20 20 20 20 20 20 20 20 20 69 66 20 28 69 73 49 if (isI 000027d0: 64 65 6e 74 69 66 69 65 72 53 74 61 72 74 28 63 dentifierStart(c 000027e0: 68 2c 20 6c 61 6e 67 75 61 67 65 56 65 72 73 69 h, languageVersi 000027f0: 6f 6e 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 on)) {. 00002800: 20 20 20 20 20 20 20 76 61 72 20 63 68 61 72 20 var char 00002810: 3d 20 63 68 3b 0a 20 20 20 20 20 20 20 20 20 20 = ch;. 00002820: 20 20 20 20 20 20 77 68 69 6c 65 20 28 70 6f 73 while (pos 00002830: 20 3c 20 65 6e 64 20 26 26 20 69 73 49 64 65 6e < end && isIden 00002840: 74 69 66 69 65 72 50 61 72 74 28 63 68 61 72 20 tifierPart(char 00002850: 3d 20 63 6f 64 65 50 6f 69 6e 74 41 74 28 74 65 = codePointAt(te 00002860: 78 74 2c 20 70 6f 73 29 2c 20 6c 61 6e 67 75 61 xt, pos), langua 00002870: 67 65 56 65 72 73 69 6f 6e 29 20 7c 7c 20 74 65 geVersion) || te 00002880: 78 74 2e 63 68 61 72 43 6f 64 65 41 74 28 70 6f xt.charCodeAt(po 00002890: 73 29 20 3d 3d 3d 20 34 35 20 2f 2a 20 43 68 61 s) === 45 /* Cha 000028a0: 72 61 63 74 65 72 43 6f 64 65 73 2e 6d 69 6e 75 racterCodes.minu 000028b0: 73 20 2a 2f 29 0a 20 20 20 20 20 20 20 20 20 20 s */). 000028c0: 20 20 20 20 20 20 20 20 20 20 70 6f 73 20 2b 3d pos += 000028d0: 20 63 68 61 72 53 69 7a 65 28 63 68 61 72 29 3b charSize(char); 000028e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 000028f0: 20 74 6f 6b 65 6e 56 61 6c 75 65 20 3d 20 74 65 tokenValue = te 00002900: 78 74 2e 73 75 62 73 74 72 69 6e 67 28 74 6f 6b xt.substring(tok 00002910: 65 6e 50 6f 73 2c 20 70 6f 73 29 3b 0a 20 20 20 enPos, pos);. 00002920: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if 00002930: 28 63 68 61 72 20 3d 3d 3d 20 39 32 20 2f 2a 20 (char === 92 /* 00002940: 43 68 61 72 61 63 74 65 72 43 6f 64 65 73 2e 62 CharacterCodes.b 00002950: 61 63 6b 73 6c 61 73 68 20 2a 2f 29 20 7b 0a 20 ackslash */) {. 00002960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00002970: 20 20 20 74 6f 6b 65 6e 56 61 6c 75 65 20 2b 3d tokenValue += 00002980: 20 73 63 61 6e 49 64 65 6e 74 69 66 69 65 72 50 scanIdentifierP 00002990: 61 72 74 73 28 29 3b 0a 20 20 20 20 20 20 20 20 arts();. 000029a0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 000029b0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 000029c0: 20 74 6f 6b 65 6e 20 3d 20 67 65 74 49 64 65 6e token = getIden 000029d0: 74 69 66 69 65 72 54 6f 6b 65 6e 28 29 3b 0a 20 tifierToken();. 000029e0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 000029f0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b 0a else {. 00002a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00002a10: 72 65 74 75 72 6e 20 74 6f 6b 65 6e 20 3d 20 30 return token = 0 00002a20: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 55 /* SyntaxKind.U 00002a30: 6e 6b 6e 6f 77 6e 20 2a 2f 3b 0a 20 20 20 20 20 nknown */;. 00002a40: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00002a50: 20 7d 0a 20 20 20 20 20 20 20 20 66 75 6e 63 74 }. funct 00002a60: 69 6f 6e 20 73 70 65 63 75 6c 61 74 69 6f 6e 48 ion speculationH 00002a70: 65 6c 70 65 72 28 63 61 6c 6c 62 61 63 6b 2c 20 elper(callback, 00002a80: 69 73 4c 6f 6f 6b 61 68 65 61 64 29 20 7b 0a 20 isLookahead) {. 00002a90: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 73 var s 00002aa0: 61 76 65 50 6f 73 20 3d 20 70 6f 73 3b 0a 20 20 avePos = pos;. 00002ab0: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 73 61 var sa 00002ac0: 76 65 53 74 61 72 74 50 6f 73 20 3d 20 73 74 61 veStartPos = sta 00002ad0: 72 74 50 6f 73 3b 0a 20 20 20 20 20 20 20 20 20 rtPos;. 00002ae0: 20 20 20 76 61 72 20 73 61 76 65 54 6f 6b 65 6e var saveToken 00002af0: 50 6f 73 20 3d 20 74 6f 6b 65 6e 50 6f 73 3b 0a Pos = tokenPos;. 00002b00: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var 00002b10: 73 61 76 65 54 6f 6b 65 6e 20 3d 20 74 6f 6b 65 saveToken = toke 00002b20: 6e 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 n;. v 00002b30: 61 72 20 73 61 76 65 54 6f 6b 65 6e 56 61 6c 75 ar saveTokenValu 00002b40: 65 20 3d 20 74 6f 6b 65 6e 56 61 6c 75 65 3b 0a e = tokenValue;. 00002b50: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var 00002b60: 73 61 76 65 54 6f 6b 65 6e 46 6c 61 67 73 20 3d saveTokenFlags = 00002b70: 20 74 6f 6b 65 6e 46 6c 61 67 73 3b 0a 20 20 20 tokenFlags;. 00002b80: 20 20 20 20 20 20 20 20 20 76 61 72 20 72 65 73 var res 00002b90: 75 6c 74 20 3d 20 63 61 6c 6c 62 61 63 6b 28 29 ult = callback() 00002ba0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f ;. // 00002bb0: 20 49 66 20 6f 75 72 20 63 61 6c 6c 62 61 63 6b If our callback 00002bc0: 20 72 65 74 75 72 6e 65 64 20 73 6f 6d 65 74 68 returned someth 00002bd0: 69 6e 67 20 27 66 61 6c 73 79 27 20 6f 72 20 77 ing 'falsy' or w 00002be0: 65 27 72 65 20 6a 75 73 74 20 6c 6f 6f 6b 69 6e e're just lookin 00002bf0: 67 20 61 68 65 61 64 2c 0a 20 20 20 20 20 20 20 g ahead,. 00002c00: 20 20 20 20 20 2f 2f 20 74 68 65 6e 20 75 6e 63 // then unc 00002c10: 6f 6e 64 69 74 69 6f 6e 61 6c 6c 79 20 72 65 73 onditionally res 00002c20: 74 6f 72 65 20 75 73 20 74 6f 20 77 68 65 72 65 tore us to where 00002c30: 20 77 65 20 77 65 72 65 2e 0a 20 20 20 20 20 20 we were.. 00002c40: 20 20 20 20 20 20 69 66 20 28 21 72 65 73 75 6c if (!resul 00002c50: 74 20 7c 7c 20 69 73 4c 6f 6f 6b 61 68 65 61 64 t || isLookahead 00002c60: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 00002c70: 20 20 20 20 70 6f 73 20 3d 20 73 61 76 65 50 6f pos = savePo 00002c80: 73 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 s;. 00002c90: 20 20 20 73 74 61 72 74 50 6f 73 20 3d 20 73 61 startPos = sa 00002ca0: 76 65 53 74 61 72 74 50 6f 73 3b 0a 20 20 20 20 veStartPos;. 00002cb0: 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b 65 toke 00002cc0: 6e 50 6f 73 20 3d 20 73 61 76 65 54 6f 6b 65 6e nPos = saveToken 00002cd0: 50 6f 73 3b 0a 20 20 20 20 20 20 20 20 20 20 20 Pos;. 00002ce0: 20 20 20 20 20 74 6f 6b 65 6e 20 3d 20 73 61 76 token = sav 00002cf0: 65 54 6f 6b 65 6e 3b 0a 20 20 20 20 20 20 20 20 eToken;. 00002d00: 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 56 61 6c tokenVal 00002d10: 75 65 20 3d 20 73 61 76 65 54 6f 6b 65 6e 56 61 ue = saveTokenVa 00002d20: 6c 75 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 lue;. 00002d30: 20 20 20 20 20 74 6f 6b 65 6e 46 6c 61 67 73 20 tokenFlags 00002d40: 3d 20 73 61 76 65 54 6f 6b 65 6e 46 6c 61 67 73 = saveTokenFlags 00002d50: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a ;. }. 00002d60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00002d70: 72 6e 20 72 65 73 75 6c 74 3b 0a 20 20 20 20 20 rn result;. 00002d80: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 66 75 6e }. fun 00002d90: 63 74 69 6f 6e 20 73 63 61 6e 52 61 6e 67 65 28 ction scanRange( 00002da0: 73 74 61 72 74 2c 20 6c 65 6e 67 74 68 2c 20 63 start, length, c 00002db0: 61 6c 6c 62 61 63 6b 29 20 7b 0a 20 20 20 20 20 allback) {. 00002dc0: 20 20 20 20 20 20 20 76 61 72 20 73 61 76 65 45 var saveE 00002dd0: 6e 64 20 3d 20 65 6e 64 3b 0a 20 20 20 20 20 20 nd = end;. 00002de0: 20 20 20 20 20 20 76 61 72 20 73 61 76 65 50 6f var savePo 00002df0: 73 20 3d 20 70 6f 73 3b 0a 20 20 20 20 20 20 20 s = pos;. 00002e00: 20 20 20 20 20 76 61 72 20 73 61 76 65 53 74 61 var saveSta 00002e10: 72 74 50 6f 73 20 3d 20 73 74 61 72 74 50 6f 73 rtPos = startPos 00002e20: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 ;. va 00002e30: 72 20 73 61 76 65 54 6f 6b 65 6e 50 6f 73 20 3d r saveTokenPos = 00002e40: 20 74 6f 6b 65 6e 50 6f 73 3b 0a 20 20 20 20 20 tokenPos;. 00002e50: 20 20 20 20 20 20 20 76 61 72 20 73 61 76 65 54 var saveT 00002e60: 6f 6b 65 6e 20 3d 20 74 6f 6b 65 6e 3b 0a 20 20 oken = token;. 00002e70: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 73 61 var sa 00002e80: 76 65 54 6f 6b 65 6e 56 61 6c 75 65 20 3d 20 74 veTokenValue = t 00002e90: 6f 6b 65 6e 56 61 6c 75 65 3b 0a 20 20 20 20 20 okenValue;. 00002ea0: 20 20 20 20 20 20 20 76 61 72 20 73 61 76 65 54 var saveT 00002eb0: 6f 6b 65 6e 46 6c 61 67 73 20 3d 20 74 6f 6b 65 okenFlags = toke 00002ec0: 6e 46 6c 61 67 73 3b 0a 20 20 20 20 20 20 20 20 nFlags;. 00002ed0: 20 20 20 20 76 61 72 20 73 61 76 65 45 72 72 6f var saveErro 00002ee0: 72 45 78 70 65 63 74 61 74 69 6f 6e 73 20 3d 20 rExpectations = 00002ef0: 63 6f 6d 6d 65 6e 74 44 69 72 65 63 74 69 76 65 commentDirective 00002f00: 73 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 s;. s 00002f10: 65 74 54 65 78 74 28 74 65 78 74 2c 20 73 74 61 etText(text, sta 00002f20: 72 74 2c 20 6c 65 6e 67 74 68 29 3b 0a 20 20 20 rt, length);. 00002f30: 20 20 20 20 20 20 20 20 20 76 61 72 20 72 65 73 var res 00002f40: 75 6c 74 20 3d 20 63 61 6c 6c 62 61 63 6b 28 29 ult = callback() 00002f50: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e ;. en 00002f60: 64 20 3d 20 73 61 76 65 45 6e 64 3b 0a 20 20 20 d = saveEnd;. 00002f70: 20 20 20 20 20 20 20 20 20 70 6f 73 20 3d 20 73 pos = s 00002f80: 61 76 65 50 6f 73 3b 0a 20 20 20 20 20 20 20 20 avePos;. 00002f90: 20 20 20 20 73 74 61 72 74 50 6f 73 20 3d 20 73 startPos = s 00002fa0: 61 76 65 53 74 61 72 74 50 6f 73 3b 0a 20 20 20 aveStartPos;. 00002fb0: 20 20 20 20 20 20 20 20 20 74 6f 6b 65 6e 50 6f tokenPo 00002fc0: 73 20 3d 20 73 61 76 65 54 6f 6b 65 6e 50 6f 73 s = saveTokenPos 00002fd0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f ;. to 00002fe0: 6b 65 6e 20 3d 20 73 61 76 65 54 6f 6b 65 6e 3b ken = saveToken; 00002ff0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 6f 6b . tok 00003000: 65 6e 56 61 6c 75 65 20 3d 20 73 61 76 65 54 6f enValue = saveTo 00003010: 6b 65 6e 56 61 6c 75 65 3b 0a 20 20 20 20 20 20 kenValue;. 00003020: 20 20 20 20 20 20 74 6f 6b 65 6e 46 6c 61 67 73 tokenFlags 00003030: 20 3d 20 73 61 76 65 54 6f 6b 65 6e 46 6c 61 67 = saveTokenFlag 00003040: 73 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 s;. c 00003050: 6f 6d 6d 65 6e 74 44 69 72 65 63 74 69 76 65 73 ommentDirectives 00003060: 20 3d 20 73 61 76 65 45 72 72 6f 72 45 78 70 65 = saveErrorExpe 00003070: 63 74 61 74 69 6f 6e 73 3b 0a 20 20 20 20 20 20 ctations;. 00003080: 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 return res 00003090: 75 6c 74 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 ult;. }. 000030a0: 20 20 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 function 000030b0: 6c 6f 6f 6b 41 68 65 61 64 28 63 61 6c 6c 62 61 lookAhead(callba 000030c0: 63 6b 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 ck) {. 000030d0: 20 20 72 65 74 75 72 6e 20 73 70 65 63 75 6c 61 return specula 000030e0: 74 69 6f 6e 48 65 6c 70 65 72 28 63 61 6c 6c 62 tionHelper(callb 000030f0: 61 63 6b 2c 20 2f 2a 69 73 4c 6f 6f 6b 61 68 65 ack, /*isLookahe 00003100: 61 64 2a 2f 20 74 72 75 65 29 3b 0a 20 20 20 20 ad*/ true);. 00003110: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 66 75 }. fu 00003120: 6e 63 74 69 6f 6e 20 74 72 79 53 63 61 6e 28 63 nction tryScan(c 00003130: 61 6c 6c 62 61 63 6b 29 20 7b 0a 20 20 20 20 20 allback) {. 00003140: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 70 return sp 00003150: 65 63 75 6c 61 74 69 6f 6e 48 65 6c 70 65 72 28 eculationHelper( 00003160: 63 61 6c 6c 62 61 63 6b 2c 20 2f 2a 69 73 4c 6f callback, /*isLo 00003170: 6f 6b 61 68 65 61 64 2a 2f 20 66 61 6c 73 65 29 okahead*/ false) 00003180: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 00003190: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 function get 000031a0: 54 65 78 74 28 29 20 7b 0a 20 20 20 20 20 20 20 Text() {. 000031b0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 65 78 74 return text 000031c0: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 000031d0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 6c 65 function cle 000031e0: 61 72 43 6f 6d 6d 65 6e 74 44 69 72 65 63 74 69 arCommentDirecti 000031f0: 76 65 73 28 29 20 7b 0a 20 20 20 20 20 20 20 20 ves() {. 00003200: 20 20 20 20 63 6f 6d 6d 65 6e 74 44 69 72 65 63 commentDirec 00003210: 74 69 76 65 73 20 3d 20 75 6e 64 65 66 69 6e 65 tives = undefine 00003220: 64 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 d;. }. 00003230: 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 73 65 function se 00003240: 74 54 65 78 74 28 6e 65 77 54 65 78 74 2c 20 73 tText(newText, s 00003250: 74 61 72 74 2c 20 6c 65 6e 67 74 68 29 20 7b 0a tart, length) {. 00003260: 20 20 20 20 20 20 20 20 20 20 20 20 74 65 78 74 text 00003270: 20 3d 20 6e 65 77 54 65 78 74 20 7c 7c 20 22 22 = newText || "" 00003280: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6e ;. en 00003290: 64 20 3d 20 6c 65 6e 67 74 68 20 3d 3d 3d 20 75 d = length === u 000032a0: 6e 64 65 66 69 6e 65 64 20 3f 20 74 65 78 74 2e ndefined ? text. 000032b0: 6c 65 6e 67 74 68 20 3a 20 73 74 61 72 74 20 2b length : start + 000032c0: 20 6c 65 6e 67 74 68 3b 0a 20 20 20 20 20 20 20 length;. 000032d0: 20 20 20 20 20 73 65 74 54 65 78 74 50 6f 73 28 setTextPos( 000032e0: 73 74 61 72 74 20 7c 7c 20 30 29 3b 0a 20 20 20 start || 0);. 000032f0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 66 }. f 00003300: 75 6e 63 74 69 6f 6e 20 73 65 74 4f 6e 45 72 72 unction setOnErr 00003310: 6f 72 28 65 72 72 6f 72 43 61 6c 6c 62 61 63 6b or(errorCallback 00003320: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 00003330: 6f 6e 45 72 72 6f 72 20 3d 20 65 72 72 6f 72 43 onError = errorC 00003340: 61 6c 6c 62 61 63 6b 3b 0a 20 20 20 20 20 20 20 allback;. 00003350: 20 7d 0a 20 20 20 20 20 20 20 20 66 75 6e 63 74 }. funct 00003360: 69 6f 6e 20 73 65 74 53 63 72 69 70 74 54 61 72 ion setScriptTar 00003370: 67 65 74 28 73 63 72 69 70 74 54 61 72 67 65 74 get(scriptTarget 00003380: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 00003390: 6c 61 6e 67 75 61 67 65 56 65 72 73 69 6f 6e 20 languageVersion 000033a0: 3d 20 73 63 72 69 70 74 54 61 72 67 65 74 3b 0a = scriptTarget;. 000033b0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 000033c0: 20 20 66 75 6e 63 74 69 6f 6e 20 73 65 74 4c 61 function setLa 000033d0: 6e 67 75 61 67 65 56 61 72 69 61 6e 74 28 76 61 nguageVariant(va 000033e0: 72 69 61 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 riant) {. 000033f0: 20 20 20 20 20 6c 61 6e 67 75 61 67 65 56 61 72 languageVar 00003400: 69 61 6e 74 20 3d 20 76 61 72 69 61 6e 74 3b 0a iant = variant;. 00003410: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 00003420: 20 20 66 75 6e 63 74 69 6f 6e 20 73 65 74 54 65 function setTe 00003430: 78 74 50 6f 73 28 74 65 78 74 50 6f 73 29 20 7b xtPos(textPos) { 00003440: 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 73 2e . ts. 00003450: 44 65 62 75 67 2e 61 73 73 65 72 74 28 74 65 78 Debug.assert(tex 00003460: 74 50 6f 73 20 3e 3d 20 30 29 3b 0a 20 20 20 20 tPos >= 0);. 00003470: 20 20 20 20 20 20 20 20 70 6f 73 20 3d 20 74 65 pos = te 00003480: 78 74 50 6f 73 3b 0a 20 20 20 20 20 20 20 20 20 xtPos;. 00003490: 20 20 20 73 74 61 72 74 50 6f 73 20 3d 20 74 65 startPos = te 000034a0: 78 74 50 6f 73 3b 0a 20 20 20 20 20 20 20 20 20 xtPos;. 000034b0: 20 20 20 74 6f 6b 65 6e 50 6f 73 20 3d 20 74 65 tokenPos = te 000034c0: 78 74 50 6f 73 3b 0a 20 20 20 20 20 20 20 20 20 xtPos;. 000034d0: 20 20 20 74 6f 6b 65 6e 20 3d 20 30 20 2f 2a 20 token = 0 /* 000034e0: 53 79 6e 74 61 78 4b 69 6e 64 2e 55 6e 6b 6e 6f SyntaxKind.Unkno 000034f0: 77 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 20 wn */;. 00003500: 20 20 20 74 6f 6b 65 6e 56 61 6c 75 65 20 3d 20 tokenValue = 00003510: 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 undefined;. 00003520: 20 20 20 20 20 20 20 74 6f 6b 65 6e 46 6c 61 67 tokenFlag 00003530: 73 20 3d 20 30 20 2f 2a 20 54 6f 6b 65 6e 46 6c s = 0 /* TokenFl 00003540: 61 67 73 2e 4e 6f 6e 65 20 2a 2f 3b 0a 20 20 20 ags.None */;. 00003550: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 66 }. f 00003560: 75 6e 63 74 69 6f 6e 20 73 65 74 49 6e 4a 53 44 unction setInJSD 00003570: 6f 63 54 79 70 65 28 69 6e 54 79 70 65 29 20 7b ocType(inType) { 00003580: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 4a . inJ 00003590: 53 44 6f 63 54 79 70 65 20 2b 3d 20 69 6e 54 79 SDocType += inTy 000035a0: 70 65 20 3f 20 31 20 3a 20 2d 31 3b 0a 20 20 20 pe ? 1 : -1;. 000035b0: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 }. }. 000035c0: 20 74 73 2e 63 72 65 61 74 65 53 63 61 6e 6e 65 ts.createScanne 000035d0: 72 20 3d 20 63 72 65 61 74 65 53 63 61 6e 6e 65 r = createScanne 000035e0: 72 3b 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 r;. /* @inter 000035f0: 6e 61 6c 20 2a 2f 0a 20 20 20 20 76 61 72 20 63 nal */. var c 00003600: 6f 64 65 50 6f 69 6e 74 41 74 20 3d 20 53 74 72 odePointAt = Str 00003610: 69 6e 67 2e 70 72 6f 74 6f 74 79 70 65 2e 63 6f ing.prototype.co 00003620: 64 65 50 6f 69 6e 74 41 74 20 3f 20 66 75 6e 63 dePointAt ? func 00003630: 74 69 6f 6e 20 28 73 2c 20 69 29 20 7b 20 72 65 tion (s, i) { re 00003640: 74 75 72 6e 20 73 2e 63 6f 64 65 50 6f 69 6e 74 turn s.codePoint 00003650: 41 74 28 69 29 3b 20 7d 20 3a 20 66 75 6e 63 74 At(i); } : funct 00003660: 69 6f 6e 20 63 6f 64 65 50 6f 69 6e 74 41 74 28 ion codePointAt( 00003670: 73 74 72 2c 20 69 29 20 7b 0a 20 20 20 20 20 20 str, i) {. 00003680: 20 20 2f 2f 20 66 72 6f 6d 20 68 74 74 70 73 3a // from https: 00003690: 2f 2f 64 65 76 65 6c 6f 70 65 72 2e 6d 6f 7a 69 //developer.mozi 000036a0: 6c 6c 61 2e 6f 72 67 2f 65 6e 2d 55 53 2f 64 6f lla.org/en-US/do 000036b0: 63 73 2f 57 65 62 2f 4a 61 76 61 53 63 72 69 70 cs/Web/JavaScrip 000036c0: 74 2f 52 65 66 65 72 65 6e 63 65 2f 47 6c 6f 62 t/Reference/Glob 000036d0: 61 6c 5f 4f 62 6a 65 63 74 73 2f 53 74 72 69 6e al_Objects/Strin 000036e0: 67 2f 63 6f 64 65 50 6f 69 6e 74 41 74 0a 20 20 g/codePointAt. 000036f0: 20 20 20 20 20 20 76 61 72 20 73 69 7a 65 20 3d var size = 00003700: 20 73 74 72 2e 6c 65 6e 67 74 68 3b 0a 20 20 20 str.length;. 00003710: 20 20 20 20 20 2f 2f 20 41 63 63 6f 75 6e 74 20 // Account 00003720: 66 6f 72 20 6f 75 74 2d 6f 66 2d 62 6f 75 6e 64 for out-of-bound 00003730: 73 20 69 6e 64 69 63 65 73 3a 0a 20 20 20 20 20 s indices:. 00003740: 20 20 20 69 66 20 28 69 20 3c 20 30 20 7c 7c 20 if (i < 0 || 00003750: 69 20 3e 3d 20 73 69 7a 65 29 20 7b 0a 20 20 20 i >= size) {. 00003760: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 00003770: 75 6e 64 65 66 69 6e 65 64 3b 20 2f 2f 20 53 74 undefined; // St 00003780: 72 69 6e 67 2e 63 6f 64 65 50 6f 69 6e 74 41 74 ring.codePointAt 00003790: 20 72 65 74 75 72 6e 73 20 60 75 6e 64 65 66 69 returns `undefi 000037a0: 6e 65 64 60 20 66 6f 72 20 4f 4f 42 20 69 6e 64 ned` for OOB ind 000037b0: 65 78 65 73 0a 20 20 20 20 20 20 20 20 7d 0a 20 exes. }. 000037c0: 20 20 20 20 20 20 20 2f 2f 20 47 65 74 20 74 68 // Get th 000037d0: 65 20 66 69 72 73 74 20 63 6f 64 65 20 75 6e 69 e first code uni 000037e0: 74 0a 20 20 20 20 20 20 20 20 76 61 72 20 66 69 t. var fi 000037f0: 72 73 74 20 3d 20 73 74 72 2e 63 68 61 72 43 6f rst = str.charCo 00003800: 64 65 41 74 28 69 29 3b 0a 20 20 20 20 20 20 20 deAt(i);. 00003810: 20 2f 2f 20 63 68 65 63 6b 20 69 66 20 69 74 e2 // check if it. 00003820: 80 99 73 20 74 68 65 20 73 74 61 72 74 20 6f 66 ..s the start of 00003830: 20 61 20 73 75 72 72 6f 67 61 74 65 20 70 61 69 a surrogate pai 00003840: 72 0a 20 20 20 20 20 20 20 20 69 66 20 28 66 69 r. if (fi 00003850: 72 73 74 20 3e 3d 20 30 78 44 38 30 30 20 26 26 rst >= 0xD800 && 00003860: 20 66 69 72 73 74 20 3c 3d 20 30 78 44 42 46 46 first <= 0xDBFF 00003870: 20 26 26 20 73 69 7a 65 20 3e 20 69 20 2b 20 31 && size > i + 1 00003880: 29 20 7b 20 2f 2f 20 68 69 67 68 20 73 75 72 72 ) { // high surr 00003890: 6f 67 61 74 65 20 61 6e 64 20 74 68 65 72 65 20 ogate and there 000038a0: 69 73 20 61 20 6e 65 78 74 20 63 6f 64 65 20 75 is a next code u 000038b0: 6e 69 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 nit. 000038c0: 76 61 72 20 73 65 63 6f 6e 64 20 3d 20 73 74 72 var second = str 000038d0: 2e 63 68 61 72 43 6f 64 65 41 74 28 69 20 2b 20 .charCodeAt(i + 000038e0: 31 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 1);. 000038f0: 69 66 20 28 73 65 63 6f 6e 64 20 3e 3d 20 30 78 if (second >= 0x 00003900: 44 43 30 30 20 26 26 20 73 65 63 6f 6e 64 20 3c DC00 && second < 00003910: 3d 20 30 78 44 46 46 46 29 20 7b 20 2f 2f 20 6c = 0xDFFF) { // l 00003920: 6f 77 20 73 75 72 72 6f 67 61 74 65 0a 20 20 20 ow surrogate. 00003930: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 // 00003940: 68 74 74 70 73 3a 2f 2f 6d 61 74 68 69 61 73 62 https://mathiasb 00003950: 79 6e 65 6e 73 2e 62 65 2f 6e 6f 74 65 73 2f 6a ynens.be/notes/j 00003960: 61 76 61 73 63 72 69 70 74 2d 65 6e 63 6f 64 69 avascript-encodi 00003970: 6e 67 23 73 75 72 72 6f 67 61 74 65 2d 66 6f 72 ng#surrogate-for 00003980: 6d 75 6c 61 65 0a 20 20 20 20 20 20 20 20 20 20 mulae. 00003990: 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 66 69 return (fi 000039a0: 72 73 74 20 2d 20 30 78 44 38 30 30 29 20 2a 20 rst - 0xD800) * 000039b0: 30 78 34 30 30 20 2b 20 73 65 63 6f 6e 64 20 2d 0x400 + second - 000039c0: 20 30 78 44 43 30 30 20 2b 20 30 78 31 30 30 30 0xDC00 + 0x1000 000039d0: 30 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0;. } 000039e0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }. 000039f0: 20 20 20 72 65 74 75 72 6e 20 66 69 72 73 74 3b return first; 00003a00: 0a 20 20 20 20 7d 3b 0a 20 20 20 20 2f 2a 20 40 . };. /* @ 00003a10: 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 internal */. 00003a20: 66 75 6e 63 74 69 6f 6e 20 63 68 61 72 53 69 7a function charSiz 00003a30: 65 28 63 68 29 20 7b 0a 20 20 20 20 20 20 20 20 e(ch) {. 00003a40: 69 66 20 28 63 68 20 3e 3d 20 30 78 31 30 30 30 if (ch >= 0x1000 00003a50: 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 0) {. 00003a60: 20 72 65 74 75 72 6e 20 32 3b 0a 20 20 20 20 20 return 2;. 00003a70: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 }. ret 00003a80: 75 72 6e 20 31 3b 0a 20 20 20 20 7d 0a 20 20 20 urn 1;. }. 00003a90: 20 2f 2f 20 44 65 72 69 76 65 64 20 66 72 6f 6d // Derived from 00003aa0: 20 74 68 65 20 31 30 2e 31 2e 31 20 55 54 46 31 the 10.1.1 UTF1 00003ab0: 36 45 6e 63 6f 64 69 6e 67 20 6f 66 20 74 68 65 6Encoding of the 00003ac0: 20 45 53 36 20 53 70 65 63 2e 0a 20 20 20 20 66 ES6 Spec.. f 00003ad0: 75 6e 63 74 69 6f 6e 20 75 74 66 31 36 45 6e 63 unction utf16Enc 00003ae0: 6f 64 65 41 73 53 74 72 69 6e 67 46 61 6c 6c 62 odeAsStringFallb 00003af0: 61 63 6b 28 63 6f 64 65 50 6f 69 6e 74 29 20 7b ack(codePoint) { 00003b00: 0a 20 20 20 20 20 20 20 20 74 73 2e 44 65 62 75 . ts.Debu 00003b10: 67 2e 61 73 73 65 72 74 28 30 78 30 20 3c 3d 20 g.assert(0x0 <= 00003b20: 63 6f 64 65 50 6f 69 6e 74 20 26 26 20 63 6f 64 codePoint && cod 00003b30: 65 50 6f 69 6e 74 20 3c 3d 20 30 78 31 30 46 46 ePoint <= 0x10FF 00003b40: 46 46 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 FF);. if 00003b50: 28 63 6f 64 65 50 6f 69 6e 74 20 3c 3d 20 36 35 (codePoint <= 65 00003b60: 35 33 35 29 20 7b 0a 20 20 20 20 20 20 20 20 20 535) {. 00003b70: 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 return String 00003b80: 2e 66 72 6f 6d 43 68 61 72 43 6f 64 65 28 63 6f .fromCharCode(co 00003b90: 64 65 50 6f 69 6e 74 29 3b 0a 20 20 20 20 20 20 dePoint);. 00003ba0: 20 20 7d 0a 20 20 20 20 20 20 20 20 76 61 72 20 }. var 00003bb0: 63 6f 64 65 55 6e 69 74 31 20 3d 20 4d 61 74 68 codeUnit1 = Math 00003bc0: 2e 66 6c 6f 6f 72 28 28 63 6f 64 65 50 6f 69 6e .floor((codePoin 00003bd0: 74 20 2d 20 36 35 35 33 36 29 20 2f 20 31 30 32 t - 65536) / 102 00003be0: 34 29 20 2b 20 30 78 44 38 30 30 3b 0a 20 20 20 4) + 0xD800;. 00003bf0: 20 20 20 20 20 76 61 72 20 63 6f 64 65 55 6e 69 var codeUni 00003c00: 74 32 20 3d 20 28 28 63 6f 64 65 50 6f 69 6e 74 t2 = ((codePoint 00003c10: 20 2d 20 36 35 35 33 36 29 20 25 20 31 30 32 34 - 65536) % 1024 00003c20: 29 20 2b 20 30 78 44 43 30 30 3b 0a 20 20 20 20 ) + 0xDC00;. 00003c30: 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e return Strin 00003c40: 67 2e 66 72 6f 6d 43 68 61 72 43 6f 64 65 28 63 g.fromCharCode(c 00003c50: 6f 64 65 55 6e 69 74 31 2c 20 63 6f 64 65 55 6e odeUnit1, codeUn 00003c60: 69 74 32 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 it2);. }. 00003c70: 76 61 72 20 75 74 66 31 36 45 6e 63 6f 64 65 41 var utf16EncodeA 00003c80: 73 53 74 72 69 6e 67 57 6f 72 6b 65 72 20 3d 20 sStringWorker = 00003c90: 53 74 72 69 6e 67 2e 66 72 6f 6d 43 6f 64 65 50 String.fromCodeP 00003ca0: 6f 69 6e 74 20 3f 20 66 75 6e 63 74 69 6f 6e 20 oint ? function 00003cb0: 28 63 6f 64 65 50 6f 69 6e 74 29 20 7b 20 72 65 (codePoint) { re 00003cc0: 74 75 72 6e 20 53 74 72 69 6e 67 2e 66 72 6f 6d turn String.from 00003cd0: 43 6f 64 65 50 6f 69 6e 74 28 63 6f 64 65 50 6f CodePoint(codePo 00003ce0: 69 6e 74 29 3b 20 7d 20 3a 20 75 74 66 31 36 45 int); } : utf16E 00003cf0: 6e 63 6f 64 65 41 73 53 74 72 69 6e 67 46 61 6c ncodeAsStringFal 00003d00: 6c 62 61 63 6b 3b 0a 20 20 20 20 2f 2a 20 40 69 lback;. /* @i 00003d10: 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 nternal */. f 00003d20: 75 6e 63 74 69 6f 6e 20 75 74 66 31 36 45 6e 63 unction utf16Enc 00003d30: 6f 64 65 41 73 53 74 72 69 6e 67 28 63 6f 64 65 odeAsString(code 00003d40: 50 6f 69 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 Point) {. 00003d50: 20 72 65 74 75 72 6e 20 75 74 66 31 36 45 6e 63 return utf16Enc 00003d60: 6f 64 65 41 73 53 74 72 69 6e 67 57 6f 72 6b 65 odeAsStringWorke 00003d70: 72 28 63 6f 64 65 50 6f 69 6e 74 29 3b 0a 20 20 r(codePoint);. 00003d80: 20 20 7d 0a 20 20 20 20 74 73 2e 75 74 66 31 36 }. ts.utf16 00003d90: 45 6e 63 6f 64 65 41 73 53 74 72 69 6e 67 20 3d EncodeAsString = 00003da0: 20 75 74 66 31 36 45 6e 63 6f 64 65 41 73 53 74 utf16EncodeAsSt 00003db0: 72 69 6e 67 3b 0a 7d 29 28 74 73 20 7c 7c 20 28 ring;.})(ts || ( 00003dc0: 74 73 20 3d 20 7b 7d 29 29 3b 0a 76 61 72 20 74 ts = {}));.var t 00003dd0: 73 3b 0a 28 66 75 6e 63 74 69 6f 6e 20 28 74 73 s;.(function (ts 00003de0: 29 20 7b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ) {. function 00003df0: 20 69 73 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c isExternalModul 00003e00: 65 4e 61 6d 65 52 65 6c 61 74 69 76 65 28 6d 6f eNameRelative(mo 00003e10: 64 75 6c 65 4e 61 6d 65 29 20 7b 0a 20 20 20 20 duleName) {. 00003e20: 20 20 20 20 2f 2f 20 54 79 70 65 53 63 72 69 70 // TypeScrip 00003e30: 74 20 31 2e 30 20 73 70 65 63 20 28 41 70 72 69 t 1.0 spec (Apri 00003e40: 6c 20 32 30 31 34 29 3a 20 31 31 2e 32 2e 31 0a l 2014): 11.2.1. 00003e50: 20 20 20 20 20 20 20 20 2f 2f 20 41 6e 20 65 78 // An ex 00003e60: 74 65 72 6e 61 6c 20 6d 6f 64 75 6c 65 20 6e 61 ternal module na 00003e70: 6d 65 20 69 73 20 22 72 65 6c 61 74 69 76 65 22 me is "relative" 00003e80: 20 69 66 20 74 68 65 20 66 69 72 73 74 20 74 65 if the first te 00003e90: 72 6d 20 69 73 20 22 2e 22 20 6f 72 20 22 2e 2e rm is "." or ".. 00003ea0: 22 2e 0a 20 20 20 20 20 20 20 20 2f 2f 20 55 70 ".. // Up 00003eb0: 64 61 74 65 3a 20 57 65 20 61 6c 73 6f 20 63 6f date: We also co 00003ec0: 6e 73 69 64 65 72 20 61 20 70 61 74 68 20 6c 69 nsider a path li 00003ed0: 6b 65 20 60 43 3a 5c 66 6f 6f 2e 74 73 60 20 22 ke `C:\foo.ts` " 00003ee0: 72 65 6c 61 74 69 76 65 22 20 62 65 63 61 75 73 relative" becaus 00003ef0: 65 20 77 65 20 64 6f 20 6e 6f 74 20 73 65 61 72 e we do not sear 00003f00: 63 68 20 66 6f 72 20 69 74 20 69 6e 20 60 6e 6f ch for it in `no 00003f10: 64 65 5f 6d 6f 64 75 6c 65 73 60 20 6f 72 20 74 de_modules` or t 00003f20: 72 65 61 74 20 69 74 20 61 73 20 61 6e 20 61 6d reat it as an am 00003f30: 62 69 65 6e 74 20 6d 6f 64 75 6c 65 2e 0a 20 20 bient module.. 00003f40: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 00003f50: 70 61 74 68 49 73 52 65 6c 61 74 69 76 65 28 6d pathIsRelative(m 00003f60: 6f 64 75 6c 65 4e 61 6d 65 29 20 7c 7c 20 74 73 oduleName) || ts 00003f70: 2e 69 73 52 6f 6f 74 65 64 44 69 73 6b 50 61 74 .isRootedDiskPat 00003f80: 68 28 6d 6f 64 75 6c 65 4e 61 6d 65 29 3b 0a 20 h(moduleName);. 00003f90: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 45 78 }. ts.isEx 00003fa0: 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 4e 61 6d 65 ternalModuleName 00003fb0: 52 65 6c 61 74 69 76 65 20 3d 20 69 73 45 78 74 Relative = isExt 00003fc0: 65 72 6e 61 6c 4d 6f 64 75 6c 65 4e 61 6d 65 52 ernalModuleNameR 00003fd0: 65 6c 61 74 69 76 65 3b 0a 20 20 20 20 66 75 6e elative;. fun 00003fe0: 63 74 69 6f 6e 20 73 6f 72 74 41 6e 64 44 65 64 ction sortAndDed 00003ff0: 75 70 6c 69 63 61 74 65 44 69 61 67 6e 6f 73 74 uplicateDiagnost 00004000: 69 63 73 28 64 69 61 67 6e 6f 73 74 69 63 73 29 ics(diagnostics) 00004010: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00004020: 6e 20 74 73 2e 73 6f 72 74 41 6e 64 44 65 64 75 n ts.sortAndDedu 00004030: 70 6c 69 63 61 74 65 28 64 69 61 67 6e 6f 73 74 plicate(diagnost 00004040: 69 63 73 2c 20 74 73 2e 63 6f 6d 70 61 72 65 44 ics, ts.compareD 00004050: 69 61 67 6e 6f 73 74 69 63 73 29 3b 0a 20 20 20 iagnostics);. 00004060: 20 7d 0a 20 20 20 20 74 73 2e 73 6f 72 74 41 6e }. ts.sortAn 00004070: 64 44 65 64 75 70 6c 69 63 61 74 65 44 69 61 67 dDeduplicateDiag 00004080: 6e 6f 73 74 69 63 73 20 3d 20 73 6f 72 74 41 6e nostics = sortAn 00004090: 64 44 65 64 75 70 6c 69 63 61 74 65 44 69 61 67 dDeduplicateDiag 000040a0: 6e 6f 73 74 69 63 73 3b 0a 20 20 20 20 66 75 6e nostics;. fun 000040b0: 63 74 69 6f 6e 20 67 65 74 44 65 66 61 75 6c 74 ction getDefault 000040c0: 4c 69 62 46 69 6c 65 4e 61 6d 65 28 6f 70 74 69 LibFileName(opti 000040d0: 6f 6e 73 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ons) {. s 000040e0: 77 69 74 63 68 20 28 74 73 2e 67 65 74 45 6d 69 witch (ts.getEmi 000040f0: 74 53 63 72 69 70 74 54 61 72 67 65 74 28 6f 70 tScriptTarget(op 00004100: 74 69 6f 6e 73 29 29 20 7b 0a 20 20 20 20 20 20 tions)) {. 00004110: 20 20 20 20 20 20 63 61 73 65 20 39 39 20 2f 2a case 99 /* 00004120: 20 53 63 72 69 70 74 54 61 72 67 65 74 2e 45 53 ScriptTarget.ES 00004130: 4e 65 78 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 Next */:. 00004140: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 00004150: 22 6c 69 62 2e 65 73 6e 65 78 74 2e 66 75 6c 6c "lib.esnext.full 00004160: 2e 64 2e 74 73 22 3b 0a 20 20 20 20 20 20 20 20 .d.ts";. 00004170: 20 20 20 20 63 61 73 65 20 39 20 2f 2a 20 53 63 case 9 /* Sc 00004180: 72 69 70 74 54 61 72 67 65 74 2e 45 53 32 30 32 riptTarget.ES202 00004190: 32 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 2 */:. 000041a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 6c 69 return "li 000041b0: 62 2e 65 73 32 30 32 32 2e 66 75 6c 6c 2e 64 2e b.es2022.full.d. 000041c0: 74 73 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ts";. 000041d0: 20 63 61 73 65 20 38 20 2f 2a 20 53 63 72 69 70 case 8 /* Scrip 000041e0: 74 54 61 72 67 65 74 2e 45 53 32 30 32 31 20 2a tTarget.ES2021 * 000041f0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 00004200: 20 20 20 72 65 74 75 72 6e 20 22 6c 69 62 2e 65 return "lib.e 00004210: 73 32 30 32 31 2e 66 75 6c 6c 2e 64 2e 74 73 22 s2021.full.d.ts" 00004220: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ;. ca 00004230: 73 65 20 37 20 2f 2a 20 53 63 72 69 70 74 54 61 se 7 /* ScriptTa 00004240: 72 67 65 74 2e 45 53 32 30 32 30 20 2a 2f 3a 0a rget.ES2020 */:. 00004250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00004260: 72 65 74 75 72 6e 20 22 6c 69 62 2e 65 73 32 30 return "lib.es20 00004270: 32 30 2e 66 75 6c 6c 2e 64 2e 74 73 22 3b 0a 20 20.full.d.ts";. 00004280: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00004290: 36 20 2f 2a 20 53 63 72 69 70 74 54 61 72 67 65 6 /* ScriptTarge 000042a0: 74 2e 45 53 32 30 31 39 20 2a 2f 3a 0a 20 20 20 t.ES2019 */:. 000042b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 000042c0: 75 72 6e 20 22 6c 69 62 2e 65 73 32 30 31 39 2e urn "lib.es2019. 000042d0: 66 75 6c 6c 2e 64 2e 74 73 22 3b 0a 20 20 20 20 full.d.ts";. 000042e0: 20 20 20 20 20 20 20 20 63 61 73 65 20 35 20 2f case 5 / 000042f0: 2a 20 53 63 72 69 70 74 54 61 72 67 65 74 2e 45 * ScriptTarget.E 00004300: 53 32 30 31 38 20 2a 2f 3a 0a 20 20 20 20 20 20 S2018 */:. 00004310: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00004320: 20 22 6c 69 62 2e 65 73 32 30 31 38 2e 66 75 6c "lib.es2018.ful 00004330: 6c 2e 64 2e 74 73 22 3b 0a 20 20 20 20 20 20 20 l.d.ts";. 00004340: 20 20 20 20 20 63 61 73 65 20 34 20 2f 2a 20 53 case 4 /* S 00004350: 63 72 69 70 74 54 61 72 67 65 74 2e 45 53 32 30 criptTarget.ES20 00004360: 31 37 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 17 */:. 00004370: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 6c return "l 00004380: 69 62 2e 65 73 32 30 31 37 2e 66 75 6c 6c 2e 64 ib.es2017.full.d 00004390: 2e 74 73 22 3b 0a 20 20 20 20 20 20 20 20 20 20 .ts";. 000043a0: 20 20 63 61 73 65 20 33 20 2f 2a 20 53 63 72 69 case 3 /* Scri 000043b0: 70 74 54 61 72 67 65 74 2e 45 53 32 30 31 36 20 ptTarget.ES2016 000043c0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 000043d0: 20 20 20 20 72 65 74 75 72 6e 20 22 6c 69 62 2e return "lib. 000043e0: 65 73 32 30 31 36 2e 66 75 6c 6c 2e 64 2e 74 73 es2016.full.d.ts 000043f0: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 ";. c 00004400: 61 73 65 20 32 20 2f 2a 20 53 63 72 69 70 74 54 ase 2 /* ScriptT 00004410: 61 72 67 65 74 2e 45 53 32 30 31 35 20 2a 2f 3a arget.ES2015 */: 00004420: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00004430: 20 72 65 74 75 72 6e 20 22 6c 69 62 2e 65 73 36 return "lib.es6 00004440: 2e 64 2e 74 73 22 3b 20 2f 2f 20 57 65 20 64 6f .d.ts"; // We do 00004450: 6e 27 74 20 75 73 65 20 6c 69 62 2e 65 73 32 30 n't use lib.es20 00004460: 31 35 2e 66 75 6c 6c 2e 64 2e 74 73 20 64 75 65 15.full.d.ts due 00004470: 20 74 6f 20 62 72 65 61 6b 69 6e 67 20 63 68 61 to breaking cha 00004480: 6e 67 65 2e 0a 20 20 20 20 20 20 20 20 20 20 20 nge.. 00004490: 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 default:. 000044a0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 000044b0: 20 22 6c 69 62 2e 64 2e 74 73 22 3b 0a 20 20 20 "lib.d.ts";. 000044c0: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 }. }. 000044d0: 20 74 73 2e 67 65 74 44 65 66 61 75 6c 74 4c 69 ts.getDefaultLi 000044e0: 62 46 69 6c 65 4e 61 6d 65 20 3d 20 67 65 74 44 bFileName = getD 000044f0: 65 66 61 75 6c 74 4c 69 62 46 69 6c 65 4e 61 6d efaultLibFileNam 00004500: 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 e;. function 00004510: 74 65 78 74 53 70 61 6e 45 6e 64 28 73 70 61 6e textSpanEnd(span 00004520: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 00004530: 72 6e 20 73 70 61 6e 2e 73 74 61 72 74 20 2b 20 rn span.start + 00004540: 73 70 61 6e 2e 6c 65 6e 67 74 68 3b 0a 20 20 20 span.length;. 00004550: 20 7d 0a 20 20 20 20 74 73 2e 74 65 78 74 53 70 }. ts.textSp 00004560: 61 6e 45 6e 64 20 3d 20 74 65 78 74 53 70 61 6e anEnd = textSpan 00004570: 45 6e 64 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f End;. functio 00004580: 6e 20 74 65 78 74 53 70 61 6e 49 73 45 6d 70 74 n textSpanIsEmpt 00004590: 79 28 73 70 61 6e 29 20 7b 0a 20 20 20 20 20 20 y(span) {. 000045a0: 20 20 72 65 74 75 72 6e 20 73 70 61 6e 2e 6c 65 return span.le 000045b0: 6e 67 74 68 20 3d 3d 3d 20 30 3b 0a 20 20 20 20 ngth === 0;. 000045c0: 7d 0a 20 20 20 20 74 73 2e 74 65 78 74 53 70 61 }. ts.textSpa 000045d0: 6e 49 73 45 6d 70 74 79 20 3d 20 74 65 78 74 53 nIsEmpty = textS 000045e0: 70 61 6e 49 73 45 6d 70 74 79 3b 0a 20 20 20 20 panIsEmpty;. 000045f0: 66 75 6e 63 74 69 6f 6e 20 74 65 78 74 53 70 61 function textSpa 00004600: 6e 43 6f 6e 74 61 69 6e 73 50 6f 73 69 74 69 6f nContainsPositio 00004610: 6e 28 73 70 61 6e 2c 20 70 6f 73 69 74 69 6f 6e n(span, position 00004620: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 00004630: 72 6e 20 70 6f 73 69 74 69 6f 6e 20 3e 3d 20 73 rn position >= s 00004640: 70 61 6e 2e 73 74 61 72 74 20 26 26 20 70 6f 73 pan.start && pos 00004650: 69 74 69 6f 6e 20 3c 20 74 65 78 74 53 70 61 6e ition < textSpan 00004660: 45 6e 64 28 73 70 61 6e 29 3b 0a 20 20 20 20 7d End(span);. } 00004670: 0a 20 20 20 20 74 73 2e 74 65 78 74 53 70 61 6e . ts.textSpan 00004680: 43 6f 6e 74 61 69 6e 73 50 6f 73 69 74 69 6f 6e ContainsPosition 00004690: 20 3d 20 74 65 78 74 53 70 61 6e 43 6f 6e 74 61 = textSpanConta 000046a0: 69 6e 73 50 6f 73 69 74 69 6f 6e 3b 0a 20 20 20 insPosition;. 000046b0: 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f /* @internal */ 000046c0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 74 65 . function te 000046d0: 78 74 52 61 6e 67 65 43 6f 6e 74 61 69 6e 73 50 xtRangeContainsP 000046e0: 6f 73 69 74 69 6f 6e 49 6e 63 6c 75 73 69 76 65 ositionInclusive 000046f0: 28 73 70 61 6e 2c 20 70 6f 73 69 74 69 6f 6e 29 (span, position) 00004700: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00004710: 6e 20 70 6f 73 69 74 69 6f 6e 20 3e 3d 20 73 70 n position >= sp 00004720: 61 6e 2e 70 6f 73 20 26 26 20 70 6f 73 69 74 69 an.pos && positi 00004730: 6f 6e 20 3c 3d 20 73 70 61 6e 2e 65 6e 64 3b 0a on <= span.end;. 00004740: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 74 65 78 }. ts.tex 00004750: 74 52 61 6e 67 65 43 6f 6e 74 61 69 6e 73 50 6f tRangeContainsPo 00004760: 73 69 74 69 6f 6e 49 6e 63 6c 75 73 69 76 65 20 sitionInclusive 00004770: 3d 20 74 65 78 74 52 61 6e 67 65 43 6f 6e 74 61 = textRangeConta 00004780: 69 6e 73 50 6f 73 69 74 69 6f 6e 49 6e 63 6c 75 insPositionInclu 00004790: 73 69 76 65 3b 0a 20 20 20 20 2f 2f 20 52 65 74 sive;. // Ret 000047a0: 75 72 6e 73 20 74 72 75 65 20 69 66 20 27 73 70 urns true if 'sp 000047b0: 61 6e 27 20 63 6f 6e 74 61 69 6e 73 20 27 6f 74 an' contains 'ot 000047c0: 68 65 72 27 2e 0a 20 20 20 20 66 75 6e 63 74 69 her'.. functi 000047d0: 6f 6e 20 74 65 78 74 53 70 61 6e 43 6f 6e 74 61 on textSpanConta 000047e0: 69 6e 73 54 65 78 74 53 70 61 6e 28 73 70 61 6e insTextSpan(span 000047f0: 2c 20 6f 74 68 65 72 29 20 7b 0a 20 20 20 20 20 , other) {. 00004800: 20 20 20 72 65 74 75 72 6e 20 6f 74 68 65 72 2e return other. 00004810: 73 74 61 72 74 20 3e 3d 20 73 70 61 6e 2e 73 74 start >= span.st 00004820: 61 72 74 20 26 26 20 74 65 78 74 53 70 61 6e 45 art && textSpanE 00004830: 6e 64 28 6f 74 68 65 72 29 20 3c 3d 20 74 65 78 nd(other) <= tex 00004840: 74 53 70 61 6e 45 6e 64 28 73 70 61 6e 29 3b 0a tSpanEnd(span);. 00004850: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 74 65 78 }. ts.tex 00004860: 74 53 70 61 6e 43 6f 6e 74 61 69 6e 73 54 65 78 tSpanContainsTex 00004870: 74 53 70 61 6e 20 3d 20 74 65 78 74 53 70 61 6e tSpan = textSpan 00004880: 43 6f 6e 74 61 69 6e 73 54 65 78 74 53 70 61 6e ContainsTextSpan 00004890: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 74 ;. function t 000048a0: 65 78 74 53 70 61 6e 4f 76 65 72 6c 61 70 73 57 extSpanOverlapsW 000048b0: 69 74 68 28 73 70 61 6e 2c 20 6f 74 68 65 72 29 ith(span, other) 000048c0: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 000048d0: 6e 20 74 65 78 74 53 70 61 6e 4f 76 65 72 6c 61 n textSpanOverla 000048e0: 70 28 73 70 61 6e 2c 20 6f 74 68 65 72 29 20 21 p(span, other) ! 000048f0: 3d 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 == undefined;. 00004900: 20 20 7d 0a 20 20 20 20 74 73 2e 74 65 78 74 53 }. ts.textS 00004910: 70 61 6e 4f 76 65 72 6c 61 70 73 57 69 74 68 20 panOverlapsWith 00004920: 3d 20 74 65 78 74 53 70 61 6e 4f 76 65 72 6c 61 = textSpanOverla 00004930: 70 73 57 69 74 68 3b 0a 20 20 20 20 66 75 6e 63 psWith;. func 00004940: 74 69 6f 6e 20 74 65 78 74 53 70 61 6e 4f 76 65 tion textSpanOve 00004950: 72 6c 61 70 28 73 70 61 6e 31 2c 20 73 70 61 6e rlap(span1, span 00004960: 32 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 2) {. var 00004970: 20 6f 76 65 72 6c 61 70 20 3d 20 74 65 78 74 53 overlap = textS 00004980: 70 61 6e 49 6e 74 65 72 73 65 63 74 69 6f 6e 28 panIntersection( 00004990: 73 70 61 6e 31 2c 20 73 70 61 6e 32 29 3b 0a 20 span1, span2);. 000049a0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 76 return ov 000049b0: 65 72 6c 61 70 20 26 26 20 6f 76 65 72 6c 61 70 erlap && overlap 000049c0: 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 30 20 3f 20 .length === 0 ? 000049d0: 75 6e 64 65 66 69 6e 65 64 20 3a 20 6f 76 65 72 undefined : over 000049e0: 6c 61 70 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 lap;. }. t 000049f0: 73 2e 74 65 78 74 53 70 61 6e 4f 76 65 72 6c 61 s.textSpanOverla 00004a00: 70 20 3d 20 74 65 78 74 53 70 61 6e 4f 76 65 72 p = textSpanOver 00004a10: 6c 61 70 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f lap;. functio 00004a20: 6e 20 74 65 78 74 53 70 61 6e 49 6e 74 65 72 73 n textSpanInters 00004a30: 65 63 74 73 57 69 74 68 54 65 78 74 53 70 61 6e ectsWithTextSpan 00004a40: 28 73 70 61 6e 2c 20 6f 74 68 65 72 29 20 7b 0a (span, other) {. 00004a50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 return d 00004a60: 65 63 6f 64 65 64 54 65 78 74 53 70 61 6e 49 6e ecodedTextSpanIn 00004a70: 74 65 72 73 65 63 74 73 57 69 74 68 28 73 70 61 tersectsWith(spa 00004a80: 6e 2e 73 74 61 72 74 2c 20 73 70 61 6e 2e 6c 65 n.start, span.le 00004a90: 6e 67 74 68 2c 20 6f 74 68 65 72 2e 73 74 61 72 ngth, other.star 00004aa0: 74 2c 20 6f 74 68 65 72 2e 6c 65 6e 67 74 68 29 t, other.length) 00004ab0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 74 ;. }. ts.t 00004ac0: 65 78 74 53 70 61 6e 49 6e 74 65 72 73 65 63 74 extSpanIntersect 00004ad0: 73 57 69 74 68 54 65 78 74 53 70 61 6e 20 3d 20 sWithTextSpan = 00004ae0: 74 65 78 74 53 70 61 6e 49 6e 74 65 72 73 65 63 textSpanIntersec 00004af0: 74 73 57 69 74 68 54 65 78 74 53 70 61 6e 3b 0a tsWithTextSpan;. 00004b00: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 74 65 78 function tex 00004b10: 74 53 70 61 6e 49 6e 74 65 72 73 65 63 74 73 57 tSpanIntersectsW 00004b20: 69 74 68 28 73 70 61 6e 2c 20 73 74 61 72 74 2c ith(span, start, 00004b30: 20 6c 65 6e 67 74 68 29 20 7b 0a 20 20 20 20 20 length) {. 00004b40: 20 20 20 72 65 74 75 72 6e 20 64 65 63 6f 64 65 return decode 00004b50: 64 54 65 78 74 53 70 61 6e 49 6e 74 65 72 73 65 dTextSpanInterse 00004b60: 63 74 73 57 69 74 68 28 73 70 61 6e 2e 73 74 61 ctsWith(span.sta 00004b70: 72 74 2c 20 73 70 61 6e 2e 6c 65 6e 67 74 68 2c rt, span.length, 00004b80: 20 73 74 61 72 74 2c 20 6c 65 6e 67 74 68 29 3b start, length); 00004b90: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 74 65 . }. ts.te 00004ba0: 78 74 53 70 61 6e 49 6e 74 65 72 73 65 63 74 73 xtSpanIntersects 00004bb0: 57 69 74 68 20 3d 20 74 65 78 74 53 70 61 6e 49 With = textSpanI 00004bc0: 6e 74 65 72 73 65 63 74 73 57 69 74 68 3b 0a 20 ntersectsWith;. 00004bd0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 64 65 63 6f function deco 00004be0: 64 65 64 54 65 78 74 53 70 61 6e 49 6e 74 65 72 dedTextSpanInter 00004bf0: 73 65 63 74 73 57 69 74 68 28 73 74 61 72 74 31 sectsWith(start1 00004c00: 2c 20 6c 65 6e 67 74 68 31 2c 20 73 74 61 72 74 , length1, start 00004c10: 32 2c 20 6c 65 6e 67 74 68 32 29 20 7b 0a 20 20 2, length2) {. 00004c20: 20 20 20 20 20 20 76 61 72 20 65 6e 64 31 20 3d var end1 = 00004c30: 20 73 74 61 72 74 31 20 2b 20 6c 65 6e 67 74 68 start1 + length 00004c40: 31 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 65 1;. var e 00004c50: 6e 64 32 20 3d 20 73 74 61 72 74 32 20 2b 20 6c nd2 = start2 + l 00004c60: 65 6e 67 74 68 32 3b 0a 20 20 20 20 20 20 20 20 ength2;. 00004c70: 72 65 74 75 72 6e 20 73 74 61 72 74 32 20 3c 3d return start2 <= 00004c80: 20 65 6e 64 31 20 26 26 20 65 6e 64 32 20 3e 3d end1 && end2 >= 00004c90: 20 73 74 61 72 74 31 3b 0a 20 20 20 20 7d 0a 20 start1;. }. 00004ca0: 20 20 20 74 73 2e 64 65 63 6f 64 65 64 54 65 78 ts.decodedTex 00004cb0: 74 53 70 61 6e 49 6e 74 65 72 73 65 63 74 73 57 tSpanIntersectsW 00004cc0: 69 74 68 20 3d 20 64 65 63 6f 64 65 64 54 65 78 ith = decodedTex 00004cd0: 74 53 70 61 6e 49 6e 74 65 72 73 65 63 74 73 57 tSpanIntersectsW 00004ce0: 69 74 68 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ith;. functio 00004cf0: 6e 20 74 65 78 74 53 70 61 6e 49 6e 74 65 72 73 n textSpanInters 00004d00: 65 63 74 73 57 69 74 68 50 6f 73 69 74 69 6f 6e ectsWithPosition 00004d10: 28 73 70 61 6e 2c 20 70 6f 73 69 74 69 6f 6e 29 (span, position) 00004d20: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00004d30: 6e 20 70 6f 73 69 74 69 6f 6e 20 3c 3d 20 74 65 n position <= te 00004d40: 78 74 53 70 61 6e 45 6e 64 28 73 70 61 6e 29 20 xtSpanEnd(span) 00004d50: 26 26 20 70 6f 73 69 74 69 6f 6e 20 3e 3d 20 73 && position >= s 00004d60: 70 61 6e 2e 73 74 61 72 74 3b 0a 20 20 20 20 7d pan.start;. } 00004d70: 0a 20 20 20 20 74 73 2e 74 65 78 74 53 70 61 6e . ts.textSpan 00004d80: 49 6e 74 65 72 73 65 63 74 73 57 69 74 68 50 6f IntersectsWithPo 00004d90: 73 69 74 69 6f 6e 20 3d 20 74 65 78 74 53 70 61 sition = textSpa 00004da0: 6e 49 6e 74 65 72 73 65 63 74 73 57 69 74 68 50 nIntersectsWithP 00004db0: 6f 73 69 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e osition;. fun 00004dc0: 63 74 69 6f 6e 20 74 65 78 74 53 70 61 6e 49 6e ction textSpanIn 00004dd0: 74 65 72 73 65 63 74 69 6f 6e 28 73 70 61 6e 31 tersection(span1 00004de0: 2c 20 73 70 61 6e 32 29 20 7b 0a 20 20 20 20 20 , span2) {. 00004df0: 20 20 20 76 61 72 20 73 74 61 72 74 20 3d 20 4d var start = M 00004e00: 61 74 68 2e 6d 61 78 28 73 70 61 6e 31 2e 73 74 ath.max(span1.st 00004e10: 61 72 74 2c 20 73 70 61 6e 32 2e 73 74 61 72 74 art, span2.start 00004e20: 29 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 65 );. var e 00004e30: 6e 64 20 3d 20 4d 61 74 68 2e 6d 69 6e 28 74 65 nd = Math.min(te 00004e40: 78 74 53 70 61 6e 45 6e 64 28 73 70 61 6e 31 29 xtSpanEnd(span1) 00004e50: 2c 20 74 65 78 74 53 70 61 6e 45 6e 64 28 73 70 , textSpanEnd(sp 00004e60: 61 6e 32 29 29 3b 0a 20 20 20 20 20 20 20 20 72 an2));. r 00004e70: 65 74 75 72 6e 20 73 74 61 72 74 20 3c 3d 20 65 eturn start <= e 00004e80: 6e 64 20 3f 20 63 72 65 61 74 65 54 65 78 74 53 nd ? createTextS 00004e90: 70 61 6e 46 72 6f 6d 42 6f 75 6e 64 73 28 73 74 panFromBounds(st 00004ea0: 61 72 74 2c 20 65 6e 64 29 20 3a 20 75 6e 64 65 art, end) : unde 00004eb0: 66 69 6e 65 64 3b 0a 20 20 20 20 7d 0a 20 20 20 fined;. }. 00004ec0: 20 74 73 2e 74 65 78 74 53 70 61 6e 49 6e 74 65 ts.textSpanInte 00004ed0: 72 73 65 63 74 69 6f 6e 20 3d 20 74 65 78 74 53 rsection = textS 00004ee0: 70 61 6e 49 6e 74 65 72 73 65 63 74 69 6f 6e 3b panIntersection; 00004ef0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 . function cr 00004f00: 65 61 74 65 54 65 78 74 53 70 61 6e 28 73 74 61 eateTextSpan(sta 00004f10: 72 74 2c 20 6c 65 6e 67 74 68 29 20 7b 0a 20 20 rt, length) {. 00004f20: 20 20 20 20 20 20 69 66 20 28 73 74 61 72 74 20 if (start 00004f30: 3c 20 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 < 0) {. 00004f40: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 45 72 72 throw new Err 00004f50: 6f 72 28 22 73 74 61 72 74 20 3c 20 30 22 29 3b or("start < 0"); 00004f60: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }. 00004f70: 20 20 20 69 66 20 28 6c 65 6e 67 74 68 20 3c 20 if (length < 00004f80: 30 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 0) {. 00004f90: 20 74 68 72 6f 77 20 6e 65 77 20 45 72 72 6f 72 throw new Error 00004fa0: 28 22 6c 65 6e 67 74 68 20 3c 20 30 22 29 3b 0a ("length < 0");. 00004fb0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 00004fc0: 20 20 72 65 74 75 72 6e 20 7b 20 73 74 61 72 74 return { start 00004fd0: 3a 20 73 74 61 72 74 2c 20 6c 65 6e 67 74 68 3a : start, length: 00004fe0: 20 6c 65 6e 67 74 68 20 7d 3b 0a 20 20 20 20 7d length };. } 00004ff0: 0a 20 20 20 20 74 73 2e 63 72 65 61 74 65 54 65 . ts.createTe 00005000: 78 74 53 70 61 6e 20 3d 20 63 72 65 61 74 65 54 xtSpan = createT 00005010: 65 78 74 53 70 61 6e 3b 0a 20 20 20 20 66 75 6e extSpan;. fun 00005020: 63 74 69 6f 6e 20 63 72 65 61 74 65 54 65 78 74 ction createText 00005030: 53 70 61 6e 46 72 6f 6d 42 6f 75 6e 64 73 28 73 SpanFromBounds(s 00005040: 74 61 72 74 2c 20 65 6e 64 29 20 7b 0a 20 20 20 tart, end) {. 00005050: 20 20 20 20 20 72 65 74 75 72 6e 20 63 72 65 61 return crea 00005060: 74 65 54 65 78 74 53 70 61 6e 28 73 74 61 72 74 teTextSpan(start 00005070: 2c 20 65 6e 64 20 2d 20 73 74 61 72 74 29 3b 0a , end - start);. 00005080: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 63 72 65 }. ts.cre 00005090: 61 74 65 54 65 78 74 53 70 61 6e 46 72 6f 6d 42 ateTextSpanFromB 000050a0: 6f 75 6e 64 73 20 3d 20 63 72 65 61 74 65 54 65 ounds = createTe 000050b0: 78 74 53 70 61 6e 46 72 6f 6d 42 6f 75 6e 64 73 xtSpanFromBounds 000050c0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 74 ;. function t 000050d0: 65 78 74 43 68 61 6e 67 65 52 61 6e 67 65 4e 65 extChangeRangeNe 000050e0: 77 53 70 61 6e 28 72 61 6e 67 65 29 20 7b 0a 20 wSpan(range) {. 000050f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 72 return cr 00005100: 65 61 74 65 54 65 78 74 53 70 61 6e 28 72 61 6e eateTextSpan(ran 00005110: 67 65 2e 73 70 61 6e 2e 73 74 61 72 74 2c 20 72 ge.span.start, r 00005120: 61 6e 67 65 2e 6e 65 77 4c 65 6e 67 74 68 29 3b ange.newLength); 00005130: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 74 65 . }. ts.te 00005140: 78 74 43 68 61 6e 67 65 52 61 6e 67 65 4e 65 77 xtChangeRangeNew 00005150: 53 70 61 6e 20 3d 20 74 65 78 74 43 68 61 6e 67 Span = textChang 00005160: 65 52 61 6e 67 65 4e 65 77 53 70 61 6e 3b 0a 20 eRangeNewSpan;. 00005170: 20 20 20 66 75 6e 63 74 69 6f 6e 20 74 65 78 74 function text 00005180: 43 68 61 6e 67 65 52 61 6e 67 65 49 73 55 6e 63 ChangeRangeIsUnc 00005190: 68 61 6e 67 65 64 28 72 61 6e 67 65 29 20 7b 0a hanged(range) {. 000051a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 000051b0: 65 78 74 53 70 61 6e 49 73 45 6d 70 74 79 28 72 extSpanIsEmpty(r 000051c0: 61 6e 67 65 2e 73 70 61 6e 29 20 26 26 20 72 61 ange.span) && ra 000051d0: 6e 67 65 2e 6e 65 77 4c 65 6e 67 74 68 20 3d 3d nge.newLength == 000051e0: 3d 20 30 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 = 0;. }. t 000051f0: 73 2e 74 65 78 74 43 68 61 6e 67 65 52 61 6e 67 s.textChangeRang 00005200: 65 49 73 55 6e 63 68 61 6e 67 65 64 20 3d 20 74 eIsUnchanged = t 00005210: 65 78 74 43 68 61 6e 67 65 52 61 6e 67 65 49 73 extChangeRangeIs 00005220: 55 6e 63 68 61 6e 67 65 64 3b 0a 20 20 20 20 66 Unchanged;. f 00005230: 75 6e 63 74 69 6f 6e 20 63 72 65 61 74 65 54 65 unction createTe 00005240: 78 74 43 68 61 6e 67 65 52 61 6e 67 65 28 73 70 xtChangeRange(sp 00005250: 61 6e 2c 20 6e 65 77 4c 65 6e 67 74 68 29 20 7b an, newLength) { 00005260: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 65 77 . if (new 00005270: 4c 65 6e 67 74 68 20 3c 20 30 29 20 7b 0a 20 20 Length < 0) {. 00005280: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 throw 00005290: 6e 65 77 20 45 72 72 6f 72 28 22 6e 65 77 4c 65 new Error("newLe 000052a0: 6e 67 74 68 20 3c 20 30 22 29 3b 0a 20 20 20 20 ngth < 0");. 000052b0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 }. re 000052c0: 74 75 72 6e 20 7b 20 73 70 61 6e 3a 20 73 70 61 turn { span: spa 000052d0: 6e 2c 20 6e 65 77 4c 65 6e 67 74 68 3a 20 6e 65 n, newLength: ne 000052e0: 77 4c 65 6e 67 74 68 20 7d 3b 0a 20 20 20 20 7d wLength };. } 000052f0: 0a 20 20 20 20 74 73 2e 63 72 65 61 74 65 54 65 . ts.createTe 00005300: 78 74 43 68 61 6e 67 65 52 61 6e 67 65 20 3d 20 xtChangeRange = 00005310: 63 72 65 61 74 65 54 65 78 74 43 68 61 6e 67 65 createTextChange 00005320: 52 61 6e 67 65 3b 0a 20 20 20 20 74 73 2e 75 6e Range;. ts.un 00005330: 63 68 61 6e 67 65 64 54 65 78 74 43 68 61 6e 67 changedTextChang 00005340: 65 52 61 6e 67 65 20 3d 20 63 72 65 61 74 65 54 eRange = createT 00005350: 65 78 74 43 68 61 6e 67 65 52 61 6e 67 65 28 63 extChangeRange(c 00005360: 72 65 61 74 65 54 65 78 74 53 70 61 6e 28 30 2c reateTextSpan(0, 00005370: 20 30 29 2c 20 30 29 3b 20 2f 2f 20 65 73 6c 69 0), 0); // esli 00005380: 6e 74 2d 64 69 73 61 62 6c 65 2d 6c 69 6e 65 20 nt-disable-line 00005390: 70 72 65 66 65 72 2d 63 6f 6e 73 74 0a 20 20 20 prefer-const. 000053a0: 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 43 61 6c 6c /**. * Call 000053b0: 65 64 20 74 6f 20 6d 65 72 67 65 20 61 6c 6c 20 ed to merge all 000053c0: 74 68 65 20 63 68 61 6e 67 65 73 20 74 68 61 74 the changes that 000053d0: 20 6f 63 63 75 72 72 65 64 20 61 63 72 6f 73 73 occurred across 000053e0: 20 73 65 76 65 72 61 6c 20 76 65 72 73 69 6f 6e several version 000053f0: 73 20 6f 66 20 61 20 73 63 72 69 70 74 20 73 6e s of a script sn 00005400: 61 70 73 68 6f 74 0a 20 20 20 20 20 2a 20 69 6e apshot. * in 00005410: 74 6f 20 61 20 73 69 6e 67 6c 65 20 63 68 61 6e to a single chan 00005420: 67 65 2e 20 20 69 2e 65 2e 20 69 66 20 61 20 75 ge. i.e. if a u 00005430: 73 65 72 20 6b 65 65 70 73 20 6d 61 6b 69 6e 67 ser keeps making 00005440: 20 73 75 63 63 65 73 73 69 76 65 20 65 64 69 74 successive edit 00005450: 73 20 74 6f 20 61 20 73 63 72 69 70 74 20 77 65 s to a script we 00005460: 20 77 69 6c 6c 0a 20 20 20 20 20 2a 20 68 61 76 will. * hav 00005470: 65 20 61 20 74 65 78 74 20 63 68 61 6e 67 65 20 e a text change 00005480: 66 72 6f 6d 20 56 31 20 74 6f 20 56 32 2c 20 56 from V1 to V2, V 00005490: 32 20 74 6f 20 56 33 2c 20 2e 2e 2e 2c 20 56 6e 2 to V3, ..., Vn 000054a0: 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 .. *. * 000054b0: 54 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 77 69 This function wi 000054c0: 6c 6c 20 74 68 65 6e 20 6d 65 72 67 65 20 74 68 ll then merge th 000054d0: 6f 73 65 20 63 68 61 6e 67 65 73 20 69 6e 74 6f ose changes into 000054e0: 20 61 20 73 69 6e 67 6c 65 20 63 68 61 6e 67 65 a single change 000054f0: 20 72 61 6e 67 65 20 76 61 6c 69 64 20 62 65 74 range valid bet 00005500: 77 65 65 6e 20 56 31 20 61 6e 64 0a 20 20 20 20 ween V1 and. 00005510: 20 2a 20 56 6e 2e 0a 20 20 20 20 20 2a 2f 0a 20 * Vn.. */. 00005520: 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 6f 6c 6c function coll 00005530: 61 70 73 65 54 65 78 74 43 68 61 6e 67 65 52 61 apseTextChangeRa 00005540: 6e 67 65 73 41 63 72 6f 73 73 4d 75 6c 74 69 70 ngesAcrossMultip 00005550: 6c 65 56 65 72 73 69 6f 6e 73 28 63 68 61 6e 67 leVersions(chang 00005560: 65 73 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 es) {. if 00005570: 20 28 63 68 61 6e 67 65 73 2e 6c 65 6e 67 74 68 (changes.length 00005580: 20 3d 3d 3d 20 30 29 20 7b 0a 20 20 20 20 20 20 === 0) {. 00005590: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 000055a0: 75 6e 63 68 61 6e 67 65 64 54 65 78 74 43 68 61 unchangedTextCha 000055b0: 6e 67 65 52 61 6e 67 65 3b 0a 20 20 20 20 20 20 ngeRange;. 000055c0: 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 }. if ( 000055d0: 63 68 61 6e 67 65 73 2e 6c 65 6e 67 74 68 20 3d changes.length = 000055e0: 3d 3d 20 31 29 20 7b 0a 20 20 20 20 20 20 20 20 == 1) {. 000055f0: 20 20 20 20 72 65 74 75 72 6e 20 63 68 61 6e 67 return chang 00005600: 65 73 5b 30 5d 3b 0a 20 20 20 20 20 20 20 20 7d es[0];. } 00005610: 0a 20 20 20 20 20 20 20 20 2f 2f 20 57 65 20 63 . // We c 00005620: 68 61 6e 67 65 20 66 72 6f 6d 20 74 61 6c 6b 69 hange from talki 00005630: 6e 67 20 61 62 6f 75 74 20 7b 20 7b 20 6f 6c 64 ng about { { old 00005640: 53 74 61 72 74 2c 20 6f 6c 64 4c 65 6e 67 74 68 Start, oldLength 00005650: 20 7d 2c 20 6e 65 77 4c 65 6e 67 74 68 20 7d 20 }, newLength } 00005660: 74 6f 20 7b 20 6f 6c 64 53 74 61 72 74 2c 20 6f to { oldStart, o 00005670: 6c 64 45 6e 64 2c 20 6e 65 77 45 6e 64 20 7d 0a ldEnd, newEnd }. 00005680: 20 20 20 20 20 20 20 20 2f 2f 20 61 73 20 69 74 // as it 00005690: 20 6d 61 6b 65 73 20 74 68 69 6e 67 73 20 6d 75 makes things mu 000056a0: 63 68 20 65 61 73 69 65 72 20 74 6f 20 72 65 61 ch easier to rea 000056b0: 73 6f 6e 20 61 62 6f 75 74 2e 0a 20 20 20 20 20 son about.. 000056c0: 20 20 20 76 61 72 20 63 68 61 6e 67 65 30 20 3d var change0 = 000056d0: 20 63 68 61 6e 67 65 73 5b 30 5d 3b 0a 20 20 20 changes[0];. 000056e0: 20 20 20 20 20 76 61 72 20 6f 6c 64 53 74 61 72 var oldStar 000056f0: 74 4e 20 3d 20 63 68 61 6e 67 65 30 2e 73 70 61 tN = change0.spa 00005700: 6e 2e 73 74 61 72 74 3b 0a 20 20 20 20 20 20 20 n.start;. 00005710: 20 76 61 72 20 6f 6c 64 45 6e 64 4e 20 3d 20 74 var oldEndN = t 00005720: 65 78 74 53 70 61 6e 45 6e 64 28 63 68 61 6e 67 extSpanEnd(chang 00005730: 65 30 2e 73 70 61 6e 29 3b 0a 20 20 20 20 20 20 e0.span);. 00005740: 20 20 76 61 72 20 6e 65 77 45 6e 64 4e 20 3d 20 var newEndN = 00005750: 6f 6c 64 53 74 61 72 74 4e 20 2b 20 63 68 61 6e oldStartN + chan 00005760: 67 65 30 2e 6e 65 77 4c 65 6e 67 74 68 3b 0a 20 ge0.newLength;. 00005770: 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 for (var 00005780: 69 20 3d 20 31 3b 20 69 20 3c 20 63 68 61 6e 67 i = 1; i < chang 00005790: 65 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b 29 20 es.length; i++) 000057a0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 {. va 000057b0: 72 20 6e 65 78 74 43 68 61 6e 67 65 20 3d 20 63 r nextChange = c 000057c0: 68 61 6e 67 65 73 5b 69 5d 3b 0a 20 20 20 20 20 hanges[i];. 000057d0: 20 20 20 20 20 20 20 2f 2f 20 43 6f 6e 73 69 64 // Consid 000057e0: 65 72 20 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 er the following 000057f0: 20 63 61 73 65 3a 0a 20 20 20 20 20 20 20 20 20 case:. 00005800: 20 20 20 2f 2f 20 69 2e 65 2e 20 74 77 6f 20 65 // i.e. two e 00005810: 64 69 74 73 2e 20 20 54 68 65 20 66 69 72 73 74 dits. The first 00005820: 20 72 65 70 72 65 73 65 6e 74 73 20 74 68 65 20 represents the 00005830: 74 65 78 74 20 63 68 61 6e 67 65 20 72 61 6e 67 text change rang 00005840: 65 20 7b 20 7b 20 31 30 2c 20 35 30 20 7d 2c 20 e { { 10, 50 }, 00005850: 33 30 20 7d 2e 20 20 69 2e 65 2e 20 54 68 65 20 30 }. i.e. The 00005860: 73 70 61 6e 20 73 74 61 72 74 69 6e 67 0a 20 20 span starting. 00005870: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 61 74 20 // at 00005880: 31 30 2c 20 77 69 74 68 20 6c 65 6e 67 74 68 20 10, with length 00005890: 35 30 20 69 73 20 72 65 64 75 63 65 64 20 74 6f 50 is reduced to 000058a0: 20 6c 65 6e 67 74 68 20 33 30 2e 20 20 54 68 65 length 30. The 000058b0: 20 73 65 63 6f 6e 64 20 72 65 70 72 65 73 65 6e second represen 000058c0: 74 73 20 74 68 65 20 74 65 78 74 20 63 68 61 6e ts the text chan 000058d0: 67 65 20 72 61 6e 67 65 20 7b 20 7b 20 33 30 2c ge range { { 30, 000058e0: 20 33 30 20 7d 2c 20 34 30 20 7d 2e 0a 20 20 20 30 }, 40 }.. 000058f0: 20 20 20 20 20 20 20 20 20 2f 2f 20 69 2e 65 2e // i.e. 00005900: 20 74 68 65 20 73 70 61 6e 20 73 74 61 72 74 69 the span starti 00005910: 6e 67 20 61 74 20 33 30 20 77 69 74 68 20 6c 65 ng at 30 with le 00005920: 6e 67 74 68 20 33 30 20 69 73 20 69 6e 63 72 65 ngth 30 is incre 00005930: 61 73 65 64 20 74 6f 20 6c 65 6e 67 74 68 20 34 ased to length 4 00005940: 30 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 0.. / 00005950: 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f /. // 00005960: 20 20 20 20 20 20 30 20 20 20 20 20 20 20 20 20 0 00005970: 31 30 20 20 20 20 20 20 20 20 32 30 20 20 20 20 10 20 00005980: 20 20 20 20 33 30 20 20 20 20 20 20 20 20 34 30 30 40 00005990: 20 20 20 20 20 20 20 20 35 30 20 20 20 20 20 20 50 000059a0: 20 20 36 30 20 20 20 20 20 20 20 20 37 30 20 20 60 70 000059b0: 20 20 20 20 20 20 38 30 20 20 20 20 20 20 20 20 80 000059c0: 39 30 20 20 20 20 20 20 20 20 31 30 30 0a 20 20 90 100. 000059d0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 // 000059e0: 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -------------- 000059f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005a00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005a10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005a20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005a30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005a40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 20 ---------. 00005a50: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 // 00005a60: 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 | 00005a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005a90: 20 20 20 20 20 20 20 20 20 20 2f 0a 20 20 20 20 /. 00005aa0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 // 00005ab0: 20 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 | 00005ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005ae0: 20 20 20 20 20 20 20 2f 2d 2d 2d 2d 0a 20 20 20 /----. 00005af0: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 54 31 20 // T1 00005b00: 20 20 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 | 00005b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005b30: 20 20 20 2f 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 /----. 00005b40: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20 // 00005b50: 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 20 | 00005b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005b70: 20 20 20 20 20 20 20 20 20 20 2f 2d 2d 2d 2d 0a /----. 00005b80: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 // 00005b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 | 00005ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005bb0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2d 2d 2d /--- 00005bc0: 2d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f -. // 00005bd0: 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------- 00005be0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005bf0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005c00: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005c10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005c20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005c30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 -------------. 00005c40: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 // 00005c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005c70: 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | 00005c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a \. 00005c90: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 // 00005ca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005cc0: 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 | 00005cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005ce0: 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 \. 00005cf0: 20 2f 2f 20 20 20 54 32 20 20 20 20 20 20 20 20 // T2 00005d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005d10: 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 | 00005d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005d30: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 \. 00005d40: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 // 00005d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c | 00005d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005d90: 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 \. 00005da0: 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 // 00005db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005dc0: 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 | 00005dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00005de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 5c \ 00005df0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 . // 00005e00: 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ----------- 00005e10: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005e20: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005e30: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005e40: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005e50: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005e60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 ------------. 00005e70: 20 20 20 20 20 20 20 20 20 2f 2f 0a 20 20 20 20 //. 00005e80: 20 20 20 20 20 20 20 20 2f 2f 20 4d 65 72 67 69 // Mergi 00005e90: 6e 67 20 74 68 65 73 65 20 74 75 72 6e 73 20 6f ng these turns o 00005ea0: 75 74 20 74 6f 20 6e 6f 74 20 62 65 20 74 6f 6f ut to not be too 00005eb0: 20 64 69 66 66 69 63 75 6c 74 2e 20 20 46 69 72 difficult. Fir 00005ec0: 73 74 2c 20 64 65 74 65 72 6d 69 6e 69 6e 67 20 st, determining 00005ed0: 74 68 65 20 6e 65 77 20 73 74 61 72 74 20 6f 66 the new start of 00005ee0: 20 74 68 65 20 63 68 61 6e 67 65 20 69 73 20 74 the change is t 00005ef0: 72 69 76 69 61 6c 0a 20 20 20 20 20 20 20 20 20 rivial. 00005f00: 20 20 20 2f 2f 20 69 74 27 73 20 6a 75 73 74 20 // it's just 00005f10: 74 68 65 20 6d 69 6e 20 6f 66 20 74 68 65 20 6f the min of the o 00005f20: 6c 64 20 61 6e 64 20 6e 65 77 20 73 74 61 72 74 ld and new start 00005f30: 73 2e 20 20 69 2e 65 2e 3a 0a 20 20 20 20 20 20 s. i.e.:. 00005f40: 20 20 20 20 20 20 2f 2f 0a 20 20 20 20 20 20 20 //. 00005f50: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 30 20 20 // 0 00005f60: 20 20 20 20 20 20 20 31 30 20 20 20 20 20 20 20 10 00005f70: 20 32 30 20 20 20 20 20 20 20 20 33 30 20 20 20 20 30 00005f80: 20 20 20 20 20 34 30 20 20 20 20 20 20 20 20 35 40 5 00005f90: 30 20 20 20 20 20 20 20 20 36 30 20 20 20 20 20 0 60 00005fa0: 20 20 20 37 30 20 20 20 20 20 20 20 20 38 30 20 70 80 00005fb0: 20 20 20 20 20 20 20 39 30 20 20 20 20 20 20 20 90 00005fc0: 20 31 30 30 0a 20 20 20 20 20 20 20 20 20 20 20 100. 00005fd0: 20 2f 2f 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d // ------- 00005fe0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00005ff0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006000: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006010: 2d 2d 2d 2d 2d 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -----*---------- 00006020: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006030: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006040: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 . // 00006050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c | 00006060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006090: 20 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f /. / 000060a0: 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 / 000060b0: 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 | 000060c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000060d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2d /- 000060e0: 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ---. 000060f0: 2f 2f 20 20 54 31 20 20 20 20 20 20 20 20 20 20 // T1 00006100: 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 | 00006110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006120: 20 20 20 20 20 20 20 20 20 20 2f 2d 2d 2d 2d 0a /----. 00006130: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 // 00006140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 | 00006150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006170: 20 2f 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 /----. 00006180: 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 // 00006190: 20 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 | 000061a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000061b0: 20 20 20 2f 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 /----. 000061c0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 2d 2d 2d // --- 000061d0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 000061e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 000061f0: 2d 2d 2d 2d 2d 24 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -----$---------- 00006200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 24 2d 2d 2d 2d 2d 2d ---------$------ 00006210: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006220: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006230: 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 20 20 ----. 00006240: 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 // 00006250: 20 20 20 2e 20 20 20 20 20 20 20 20 20 20 20 20 . 00006260: 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 | 00006270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006280: 20 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20 \. 00006290: 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 // 000062a0: 20 20 20 20 20 2e 20 20 20 20 20 20 20 20 20 20 . 000062b0: 20 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 | 000062c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000062d0: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 \. 000062e0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 54 32 20 // T2 000062f0: 20 20 20 20 20 20 20 20 20 20 2e 20 20 20 20 20 . 00006300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c | 00006310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006330: 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f \. / 00006340: 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 / 00006350: 20 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00006360: 20 20 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 | 00006370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006380: 20 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 \. 00006390: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 // 000063a0: 20 20 20 20 20 20 20 20 20 20 2e 20 20 20 20 20 . 000063b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c | 000063c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000063d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000063e0: 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20 \. 000063f0: 20 20 20 20 2f 2f 20 20 20 20 20 20 2d 2d 2d 2d // ---- 00006400: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006410: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006420: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006430: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006440: 2d 2d 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d --*------------- 00006450: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006460: 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 20 20 20 ---. 00006470: 2f 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f //. / 00006480: 2f 20 28 4e 6f 74 65 20 74 68 65 20 64 6f 74 73 / (Note the dots 00006490: 20 72 65 70 72 65 73 65 6e 74 20 74 68 65 20 6e represent the n 000064a0: 65 77 6c 79 20 69 6e 66 65 72 72 65 64 20 73 74 ewly inferred st 000064b0: 61 72 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 art.. 000064c0: 20 2f 2f 20 44 65 74 65 72 6d 69 6e 69 6e 67 20 // Determining 000064d0: 74 68 65 20 6e 65 77 20 61 6e 64 20 6f 6c 64 20 the new and old 000064e0: 65 6e 64 20 69 73 20 61 6c 73 6f 20 70 72 65 74 end is also pret 000064f0: 74 79 20 73 69 6d 70 6c 65 2e 20 20 42 61 73 69 ty simple. Basi 00006500: 63 61 6c 6c 79 20 69 74 20 62 6f 69 6c 73 20 64 cally it boils d 00006510: 6f 77 6e 20 74 6f 20 70 61 79 69 6e 67 20 61 74 own to paying at 00006520: 74 65 6e 74 69 6f 6e 20 74 6f 20 74 68 65 0a 20 tention to the. 00006530: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 61 62 // ab 00006540: 73 6f 6c 75 74 65 20 70 6f 73 69 74 69 6f 6e 73 solute positions 00006550: 20 61 74 20 74 68 65 20 61 73 74 65 72 69 73 6b at the asterisk 00006560: 73 2c 20 61 6e 64 20 74 68 65 20 72 65 6c 61 74 s, and the relat 00006570: 69 76 65 20 63 68 61 6e 67 65 20 62 65 74 77 65 ive change betwe 00006580: 65 6e 20 74 68 65 20 64 6f 6c 6c 61 72 20 73 69 en the dollar si 00006590: 67 6e 73 2e 20 42 61 73 69 63 61 6c 6c 79 2c 20 gns. Basically, 000065a0: 77 65 20 73 65 65 0a 20 20 20 20 20 20 20 20 20 we see. 000065b0: 20 20 20 2f 2f 20 77 68 69 63 68 20 69 66 20 74 // which if t 000065c0: 68 65 20 74 77 6f 20 24 27 73 20 70 72 65 63 65 he two $'s prece 000065d0: 64 65 73 20 74 68 65 20 6f 74 68 65 72 2c 20 61 des the other, a 000065e0: 6e 64 20 77 65 20 6d 6f 76 65 20 74 68 61 74 20 nd we move that 000065f0: 6f 6e 65 20 66 6f 72 77 61 72 64 20 75 6e 74 69 one forward unti 00006600: 6c 20 74 68 65 79 20 6c 69 6e 65 20 75 70 2e 20 l they line up. 00006610: 20 69 6e 20 74 68 69 73 20 63 61 73 65 20 74 68 in this case th 00006620: 61 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f at. / 00006630: 2f 20 6d 65 61 6e 73 3a 0a 20 20 20 20 20 20 20 / means:. 00006640: 20 20 20 20 20 2f 2f 0a 20 20 20 20 20 20 20 20 //. 00006650: 20 20 20 20 2f 2f 20 20 20 20 20 20 30 20 20 20 // 0 00006660: 20 20 20 20 20 20 31 30 20 20 20 20 20 20 20 20 10 00006670: 32 30 20 20 20 20 20 20 20 20 33 30 20 20 20 20 20 30 00006680: 20 20 20 20 34 30 20 20 20 20 20 20 20 20 35 30 40 50 00006690: 20 20 20 20 20 20 20 20 36 30 20 20 20 20 20 20 60 000066a0: 20 20 37 30 20 20 20 20 20 20 20 20 38 30 20 20 70 80 000066b0: 20 20 20 20 20 20 39 30 20 20 20 20 20 20 20 20 90 000066c0: 31 30 30 0a 20 20 20 20 20 20 20 20 20 20 20 20 100. 000066d0: 2f 2f 20 20 20 20 20 20 2d 2d 2d 2d 2d 2d 2d 2d // -------- 000066e0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 000066f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006700: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006710: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006720: 2d 2d 2d 2d 2d 2d 2d 2d 2a 2d 2d 2d 2d 2d 2d 2d --------*------- 00006730: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 0a ---------------. 00006740: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 // 00006750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 | 00006760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000067a0: 20 20 20 20 2f 0a 20 20 20 20 20 20 20 20 20 20 /. 000067b0: 20 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 // 000067c0: 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 | 000067d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000067e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000067f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006800: 20 20 20 20 20 2f 2d 2d 2d 2d 0a 20 20 20 20 20 /----. 00006810: 20 20 20 20 20 20 20 2f 2f 20 20 54 31 20 20 20 // T1 00006820: 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 | 00006830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006860: 20 20 20 20 20 2f 2d 2d 2d 2d 0a 20 20 20 20 20 /----. 00006870: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 // 00006880: 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 | 00006890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000068a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000068b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000068c0: 2f 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 20 /----. 000068d0: 20 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 // 000068e0: 20 20 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 | 000068f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006910: 20 20 20 20 20 20 2f 2d 2d 2d 2d 0a 20 20 20 20 /----. 00006920: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 // 00006930: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006940: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006950: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006960: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 24 2d 2d 2d ------------$--- 00006970: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006980: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006990: 2d 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 -------. 000069a0: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20 20 // 000069b0: 20 20 20 20 20 20 2e 20 20 20 20 20 20 20 20 20 . 000069c0: 20 20 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 | 000069d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000069e0: 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20 20 \. 000069f0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 // 00006a00: 20 20 20 20 20 20 20 20 2e 20 20 20 20 20 20 20 . 00006a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 7c 20 20 | 00006a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 \. 00006a40: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 // 00006a50: 54 32 20 20 20 20 20 20 20 20 20 20 20 2e 20 20 T2 . 00006a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006a70: 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 | 00006a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006a90: 20 20 20 20 5c 0a 20 20 20 20 20 20 20 20 20 20 \. 00006aa0: 20 20 2f 2f 20 20 20 20 20 20 20 20 20 20 20 20 // 00006ab0: 20 20 20 20 2e 20 20 20 20 20 20 20 20 20 20 20 . 00006ac0: 20 20 20 20 20 20 20 20 20 7c 20 20 20 20 20 20 | 00006ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 5c 0a 20 \. 00006af0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 // 00006b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 2e 20 20 . 00006b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006b20: 20 20 7c 20 20 20 20 20 20 20 20 20 20 20 20 20 | 00006b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00006b40: 20 20 20 20 20 20 20 20 20 5c 0a 20 20 20 20 20 \. 00006b50: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 2d // - 00006b60: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006b70: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006b80: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006b90: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006ba0: 2d 2d 2d 2d 2d 2a 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d -----*---------- 00006bb0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ---------------- 00006bc0: 2d 2d 2d 2d 2d 2d 0a 20 20 20 20 20 20 20 20 20 ------. 00006bd0: 20 20 20 2f 2f 0a 20 20 20 20 20 20 20 20 20 20 //. 00006be0: 20 20 2f 2f 20 49 6e 20 6f 74 68 65 72 20 77 6f // In other wo 00006bf0: 72 64 73 20 28 69 6e 20 74 68 69 73 20 63 61 73 rds (in this cas 00006c00: 65 29 2c 20 77 65 27 72 65 20 72 65 63 6f 67 6e e), we're recogn 00006c10: 69 7a 69 6e 67 20 74 68 61 74 20 74 68 65 20 73 izing that the s 00006c20: 65 63 6f 6e 64 20 65 64 69 74 20 68 61 70 70 65 econd edit happe 00006c30: 6e 65 64 20 61 66 74 65 72 20 77 68 65 72 65 20 ned after where 00006c40: 74 68 65 20 66 69 72 73 74 20 65 64 69 74 0a 20 the first edit. 00006c50: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 65 6e // en 00006c60: 64 65 64 20 77 69 74 68 20 61 20 64 65 6c 74 61 ded with a delta 00006c70: 20 6f 66 20 32 30 20 63 68 61 72 61 63 74 65 72 of 20 character 00006c80: 73 20 28 36 30 20 2d 20 34 30 29 2e 20 20 54 68 s (60 - 40). Th 00006c90: 75 73 2c 20 69 66 20 77 65 20 67 6f 20 62 61 63 us, if we go bac 00006ca0: 6b 20 69 6e 20 74 69 6d 65 20 74 6f 20 77 68 65 k in time to whe 00006cb0: 72 65 20 74 68 65 20 66 69 72 73 74 20 65 64 69 re the first edi 00006cc0: 74 20 73 74 61 72 74 65 64 0a 20 20 20 20 20 20 t started. 00006cd0: 20 20 20 20 20 20 2f 2f 20 74 68 61 74 27 73 20 // that's 00006ce0: 74 68 65 20 73 61 6d 65 20 61 73 20 69 66 20 77 the same as if w 00006cf0: 65 20 73 74 61 72 74 65 64 20 61 74 20 63 68 61 e started at cha 00006d00: 72 20 38 30 20 69 6e 73 74 65 61 64 20 6f 66 20 r 80 instead of 00006d10: 36 30 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 60.. 00006d20: 2f 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f //. / 00006d30: 2f 20 41 73 20 69 74 20 73 6f 20 68 61 70 70 65 / As it so happe 00006d40: 6e 73 2c 20 74 68 65 20 73 61 6d 65 20 6c 6f 67 ns, the same log 00006d50: 69 63 20 61 70 70 6c 69 65 73 20 69 66 20 74 68 ic applies if th 00006d60: 65 20 73 65 63 6f 6e 64 20 65 64 69 74 20 70 72 e second edit pr 00006d70: 65 63 65 64 65 73 20 74 68 65 20 66 69 72 73 74 ecedes the first 00006d80: 20 65 64 69 74 2e 20 20 49 6e 20 74 68 61 74 20 edit. In that 00006d90: 63 61 73 65 20 72 61 74 68 65 72 0a 20 20 20 20 case rather. 00006da0: 20 20 20 20 20 20 20 20 2f 2f 20 74 68 61 6e 20 // than 00006db0: 70 75 73 68 69 6e 67 20 74 68 65 20 66 69 72 73 pushing the firs 00006dc0: 74 20 65 64 69 74 20 66 6f 72 77 61 72 64 20 74 t edit forward t 00006dd0: 6f 20 6d 61 74 63 68 20 74 68 65 20 73 65 63 6f o match the seco 00006de0: 6e 64 2c 20 77 65 27 6c 6c 20 70 75 73 68 20 74 nd, we'll push t 00006df0: 68 65 20 73 65 63 6f 6e 64 20 65 64 69 74 20 66 he second edit f 00006e00: 6f 72 77 61 72 64 20 74 6f 20 6d 61 74 63 68 20 orward to match 00006e10: 74 68 65 0a 20 20 20 20 20 20 20 20 20 20 20 20 the. 00006e20: 2f 2f 20 66 69 72 73 74 2e 0a 20 20 20 20 20 20 // first.. 00006e30: 20 20 20 20 20 20 2f 2f 0a 20 20 20 20 20 20 20 //. 00006e40: 20 20 20 20 20 2f 2f 20 49 6e 20 74 68 69 73 20 // In this 00006e50: 63 61 73 65 20 74 68 61 74 20 6d 65 61 6e 73 20 case that means 00006e60: 77 65 20 68 61 76 65 20 7b 20 6f 6c 64 53 74 61 we have { oldSta 00006e70: 72 74 3a 20 31 30 2c 20 6f 6c 64 45 6e 64 3a 20 rt: 10, oldEnd: 00006e80: 38 30 2c 20 6e 65 77 45 6e 64 3a 20 37 30 20 7d 80, newEnd: 70 } 00006e90: 20 6f 72 2c 20 69 6e 20 54 65 78 74 43 68 61 6e or, in TextChan 00006ea0: 67 65 52 61 6e 67 65 0a 20 20 20 20 20 20 20 20 geRange. 00006eb0: 20 20 20 20 2f 2f 20 73 65 6d 61 6e 74 69 63 73 // semantics 00006ec0: 3a 20 7b 20 7b 20 73 74 61 72 74 3a 20 31 30 2c : { { start: 10, 00006ed0: 20 6c 65 6e 67 74 68 3a 20 37 30 20 7d 2c 20 6e length: 70 }, n 00006ee0: 65 77 4c 65 6e 67 74 68 3a 20 36 30 20 7d 0a 20 ewLength: 60 }. 00006ef0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0a 20 20 //. 00006f00: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 68 65 // The 00006f10: 20 6d 61 74 68 20 74 68 65 6e 20 77 6f 72 6b 73 math then works 00006f20: 20 6f 75 74 20 61 73 20 66 6f 6c 6c 6f 77 73 2e out as follows. 00006f30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 . // 00006f40: 49 66 20 77 65 20 68 61 76 65 20 7b 20 6f 6c 64 If we have { old 00006f50: 53 74 61 72 74 31 2c 20 6f 6c 64 45 6e 64 31 2c Start1, oldEnd1, 00006f60: 20 6e 65 77 45 6e 64 31 20 7d 20 61 6e 64 20 7b newEnd1 } and { 00006f70: 20 6f 6c 64 53 74 61 72 74 32 2c 20 6f 6c 64 45 oldStart2, oldE 00006f80: 6e 64 32 2c 20 6e 65 77 45 6e 64 32 20 7d 20 74 nd2, newEnd2 } t 00006f90: 68 65 6e 20 77 65 20 63 61 6e 20 63 6f 6d 70 75 hen we can compu 00006fa0: 74 65 20 74 68 65 0a 20 20 20 20 20 20 20 20 20 te the. 00006fb0: 20 20 20 2f 2f 20 66 69 6e 61 6c 20 72 65 73 75 // final resu 00006fc0: 6c 74 20 6c 69 6b 65 20 73 6f 3a 0a 20 20 20 20 lt like so:. 00006fd0: 20 20 20 20 20 20 20 20 2f 2f 0a 20 20 20 20 20 //. 00006fe0: 20 20 20 20 20 20 20 2f 2f 20 7b 0a 20 20 20 20 // {. 00006ff0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 // 00007000: 6f 6c 64 53 74 61 72 74 33 3a 20 4d 69 6e 28 6f oldStart3: Min(o 00007010: 6c 64 53 74 61 72 74 31 2c 20 6f 6c 64 53 74 61 ldStart1, oldSta 00007020: 72 74 32 29 2c 0a 20 20 20 20 20 20 20 20 20 20 rt2),. 00007030: 20 20 2f 2f 20 20 20 20 20 20 6f 6c 64 45 6e 64 // oldEnd 00007040: 33 3a 20 4d 61 78 28 6f 6c 64 45 6e 64 31 2c 20 3: Max(oldEnd1, 00007050: 6f 6c 64 45 6e 64 31 20 2b 20 28 6f 6c 64 45 6e oldEnd1 + (oldEn 00007060: 64 32 20 2d 20 6e 65 77 45 6e 64 31 29 29 2c 0a d2 - newEnd1)),. 00007070: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 // 00007080: 20 20 20 20 6e 65 77 45 6e 64 33 3a 20 4d 61 78 newEnd3: Max 00007090: 28 6e 65 77 45 6e 64 32 2c 20 6e 65 77 45 6e 64 (newEnd2, newEnd 000070a0: 32 20 2b 20 28 6e 65 77 45 6e 64 31 20 2d 20 6f 2 + (newEnd1 - o 000070b0: 6c 64 45 6e 64 32 29 29 0a 20 20 20 20 20 20 20 ldEnd2)). 000070c0: 20 20 20 20 20 2f 2f 20 7d 0a 20 20 20 20 20 20 // }. 000070d0: 20 20 20 20 20 20 76 61 72 20 6f 6c 64 53 74 61 var oldSta 000070e0: 72 74 31 20 3d 20 6f 6c 64 53 74 61 72 74 4e 3b rt1 = oldStartN; 000070f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var 00007100: 20 6f 6c 64 45 6e 64 31 20 3d 20 6f 6c 64 45 6e oldEnd1 = oldEn 00007110: 64 4e 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 dN;. 00007120: 76 61 72 20 6e 65 77 45 6e 64 31 20 3d 20 6e 65 var newEnd1 = ne 00007130: 77 45 6e 64 4e 3b 0a 20 20 20 20 20 20 20 20 20 wEndN;. 00007140: 20 20 20 76 61 72 20 6f 6c 64 53 74 61 72 74 32 var oldStart2 00007150: 20 3d 20 6e 65 78 74 43 68 61 6e 67 65 2e 73 70 = nextChange.sp 00007160: 61 6e 2e 73 74 61 72 74 3b 0a 20 20 20 20 20 20 an.start;. 00007170: 20 20 20 20 20 20 76 61 72 20 6f 6c 64 45 6e 64 var oldEnd 00007180: 32 20 3d 20 74 65 78 74 53 70 61 6e 45 6e 64 28 2 = textSpanEnd( 00007190: 6e 65 78 74 43 68 61 6e 67 65 2e 73 70 61 6e 29 nextChange.span) 000071a0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 ;. va 000071b0: 72 20 6e 65 77 45 6e 64 32 20 3d 20 6f 6c 64 53 r newEnd2 = oldS 000071c0: 74 61 72 74 32 20 2b 20 6e 65 78 74 43 68 61 6e tart2 + nextChan 000071d0: 67 65 2e 6e 65 77 4c 65 6e 67 74 68 3b 0a 20 20 ge.newLength;. 000071e0: 20 20 20 20 20 20 20 20 20 20 6f 6c 64 53 74 61 oldSta 000071f0: 72 74 4e 20 3d 20 4d 61 74 68 2e 6d 69 6e 28 6f rtN = Math.min(o 00007200: 6c 64 53 74 61 72 74 31 2c 20 6f 6c 64 53 74 61 ldStart1, oldSta 00007210: 72 74 32 29 3b 0a 20 20 20 20 20 20 20 20 20 20 rt2);. 00007220: 20 20 6f 6c 64 45 6e 64 4e 20 3d 20 4d 61 74 68 oldEndN = Math 00007230: 2e 6d 61 78 28 6f 6c 64 45 6e 64 31 2c 20 6f 6c .max(oldEnd1, ol 00007240: 64 45 6e 64 31 20 2b 20 28 6f 6c 64 45 6e 64 32 dEnd1 + (oldEnd2 00007250: 20 2d 20 6e 65 77 45 6e 64 31 29 29 3b 0a 20 20 - newEnd1));. 00007260: 20 20 20 20 20 20 20 20 20 20 6e 65 77 45 6e 64 newEnd 00007270: 4e 20 3d 20 4d 61 74 68 2e 6d 61 78 28 6e 65 77 N = Math.max(new 00007280: 45 6e 64 32 2c 20 6e 65 77 45 6e 64 32 20 2b 20 End2, newEnd2 + 00007290: 28 6e 65 77 45 6e 64 31 20 2d 20 6f 6c 64 45 6e (newEnd1 - oldEn 000072a0: 64 32 29 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a d2));. }. 000072b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 return c 000072c0: 72 65 61 74 65 54 65 78 74 43 68 61 6e 67 65 52 reateTextChangeR 000072d0: 61 6e 67 65 28 63 72 65 61 74 65 54 65 78 74 53 ange(createTextS 000072e0: 70 61 6e 46 72 6f 6d 42 6f 75 6e 64 73 28 6f 6c panFromBounds(ol 000072f0: 64 53 74 61 72 74 4e 2c 20 6f 6c 64 45 6e 64 4e dStartN, oldEndN 00007300: 29 2c 20 2f 2a 6e 65 77 4c 65 6e 67 74 68 2a 2f ), /*newLength*/ 00007310: 20 6e 65 77 45 6e 64 4e 20 2d 20 6f 6c 64 53 74 newEndN - oldSt 00007320: 61 72 74 4e 29 3b 0a 20 20 20 20 7d 0a 20 20 20 artN);. }. 00007330: 20 74 73 2e 63 6f 6c 6c 61 70 73 65 54 65 78 74 ts.collapseText 00007340: 43 68 61 6e 67 65 52 61 6e 67 65 73 41 63 72 6f ChangeRangesAcro 00007350: 73 73 4d 75 6c 74 69 70 6c 65 56 65 72 73 69 6f ssMultipleVersio 00007360: 6e 73 20 3d 20 63 6f 6c 6c 61 70 73 65 54 65 78 ns = collapseTex 00007370: 74 43 68 61 6e 67 65 52 61 6e 67 65 73 41 63 72 tChangeRangesAcr 00007380: 6f 73 73 4d 75 6c 74 69 70 6c 65 56 65 72 73 69 ossMultipleVersi 00007390: 6f 6e 73 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ons;. functio 000073a0: 6e 20 67 65 74 54 79 70 65 50 61 72 61 6d 65 74 n getTypeParamet 000073b0: 65 72 4f 77 6e 65 72 28 64 29 20 7b 0a 20 20 20 erOwner(d) {. 000073c0: 20 20 20 20 20 69 66 20 28 64 20 26 26 20 64 2e if (d && d. 000073d0: 6b 69 6e 64 20 3d 3d 3d 20 31 36 33 20 2f 2a 20 kind === 163 /* 000073e0: 53 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 50 SyntaxKind.TypeP 000073f0: 61 72 61 6d 65 74 65 72 20 2a 2f 29 20 7b 0a 20 arameter */) {. 00007400: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 28 for ( 00007410: 76 61 72 20 63 75 72 72 65 6e 74 20 3d 20 64 3b var current = d; 00007420: 20 63 75 72 72 65 6e 74 3b 20 63 75 72 72 65 6e current; curren 00007430: 74 20 3d 20 63 75 72 72 65 6e 74 2e 70 61 72 65 t = current.pare 00007440: 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 nt) {. 00007450: 20 20 20 20 20 20 69 66 20 28 69 73 46 75 6e 63 if (isFunc 00007460: 74 69 6f 6e 4c 69 6b 65 28 63 75 72 72 65 6e 74 tionLike(current 00007470: 29 20 7c 7c 20 69 73 43 6c 61 73 73 4c 69 6b 65 ) || isClassLike 00007480: 28 63 75 72 72 65 6e 74 29 20 7c 7c 20 63 75 72 (current) || cur 00007490: 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 32 35 rent.kind === 25 000074a0: 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 8 /* SyntaxKind. 000074b0: 49 6e 74 65 72 66 61 63 65 44 65 63 6c 61 72 61 InterfaceDeclara 000074c0: 74 69 6f 6e 20 2a 2f 29 20 7b 0a 20 20 20 20 20 tion */) {. 000074d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 000074e0: 65 74 75 72 6e 20 63 75 72 72 65 6e 74 3b 0a 20 eturn current;. 000074f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d } 00007500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 . }. 00007510: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 }. }. 00007520: 20 20 20 74 73 2e 67 65 74 54 79 70 65 50 61 72 ts.getTypePar 00007530: 61 6d 65 74 65 72 4f 77 6e 65 72 20 3d 20 67 65 ameterOwner = ge 00007540: 74 54 79 70 65 50 61 72 61 6d 65 74 65 72 4f 77 tTypeParameterOw 00007550: 6e 65 72 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ner;. functio 00007560: 6e 20 69 73 50 61 72 61 6d 65 74 65 72 50 72 6f n isParameterPro 00007570: 70 65 72 74 79 44 65 63 6c 61 72 61 74 69 6f 6e pertyDeclaration 00007580: 28 6e 6f 64 65 2c 20 70 61 72 65 6e 74 29 20 7b (node, parent) { 00007590: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 000075a0: 74 73 2e 68 61 73 53 79 6e 74 61 63 74 69 63 4d ts.hasSyntacticM 000075b0: 6f 64 69 66 69 65 72 28 6e 6f 64 65 2c 20 31 36 odifier(node, 16 000075c0: 34 37 36 20 2f 2a 20 4d 6f 64 69 66 69 65 72 46 476 /* ModifierF 000075d0: 6c 61 67 73 2e 50 61 72 61 6d 65 74 65 72 50 72 lags.ParameterPr 000075e0: 6f 70 65 72 74 79 4d 6f 64 69 66 69 65 72 20 2a opertyModifier * 000075f0: 2f 29 20 26 26 20 70 61 72 65 6e 74 2e 6b 69 6e /) && parent.kin 00007600: 64 20 3d 3d 3d 20 31 37 31 20 2f 2a 20 53 79 6e d === 171 /* Syn 00007610: 74 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 72 75 63 taxKind.Construc 00007620: 74 6f 72 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 tor */;. }. 00007630: 20 20 74 73 2e 69 73 50 61 72 61 6d 65 74 65 72 ts.isParameter 00007640: 50 72 6f 70 65 72 74 79 44 65 63 6c 61 72 61 74 PropertyDeclarat 00007650: 69 6f 6e 20 3d 20 69 73 50 61 72 61 6d 65 74 65 ion = isParamete 00007660: 72 50 72 6f 70 65 72 74 79 44 65 63 6c 61 72 61 rPropertyDeclara 00007670: 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 tion;. functi 00007680: 6f 6e 20 69 73 45 6d 70 74 79 42 69 6e 64 69 6e on isEmptyBindin 00007690: 67 50 61 74 74 65 72 6e 28 6e 6f 64 65 29 20 7b gPattern(node) { 000076a0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 73 42 . if (isB 000076b0: 69 6e 64 69 6e 67 50 61 74 74 65 72 6e 28 6e 6f indingPattern(no 000076c0: 64 65 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 de)) {. 000076d0: 20 20 20 72 65 74 75 72 6e 20 74 73 2e 65 76 65 return ts.eve 000076e0: 72 79 28 6e 6f 64 65 2e 65 6c 65 6d 65 6e 74 73 ry(node.elements 000076f0: 2c 20 69 73 45 6d 70 74 79 42 69 6e 64 69 6e 67 , isEmptyBinding 00007700: 45 6c 65 6d 65 6e 74 29 3b 0a 20 20 20 20 20 20 Element);. 00007710: 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 }. retu 00007720: 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a rn false;. }. 00007730: 20 20 20 20 74 73 2e 69 73 45 6d 70 74 79 42 69 ts.isEmptyBi 00007740: 6e 64 69 6e 67 50 61 74 74 65 72 6e 20 3d 20 69 ndingPattern = i 00007750: 73 45 6d 70 74 79 42 69 6e 64 69 6e 67 50 61 74 sEmptyBindingPat 00007760: 74 65 72 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 tern;. functi 00007770: 6f 6e 20 69 73 45 6d 70 74 79 42 69 6e 64 69 6e on isEmptyBindin 00007780: 67 45 6c 65 6d 65 6e 74 28 6e 6f 64 65 29 20 7b gElement(node) { 00007790: 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 73 2e . if (ts. 000077a0: 69 73 4f 6d 69 74 74 65 64 45 78 70 72 65 73 73 isOmittedExpress 000077b0: 69 6f 6e 28 6e 6f 64 65 29 29 20 7b 0a 20 20 20 ion(node)) {. 000077c0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 000077d0: 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a true;. }. 000077e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 return i 000077f0: 73 45 6d 70 74 79 42 69 6e 64 69 6e 67 50 61 74 sEmptyBindingPat 00007800: 74 65 72 6e 28 6e 6f 64 65 2e 6e 61 6d 65 29 3b tern(node.name); 00007810: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00007820: 45 6d 70 74 79 42 69 6e 64 69 6e 67 45 6c 65 6d EmptyBindingElem 00007830: 65 6e 74 20 3d 20 69 73 45 6d 70 74 79 42 69 6e ent = isEmptyBin 00007840: 64 69 6e 67 45 6c 65 6d 65 6e 74 3b 0a 20 20 20 dingElement;. 00007850: 20 66 75 6e 63 74 69 6f 6e 20 77 61 6c 6b 55 70 function walkUp 00007860: 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 73 41 BindingElementsA 00007870: 6e 64 50 61 74 74 65 72 6e 73 28 62 69 6e 64 69 ndPatterns(bindi 00007880: 6e 67 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 ng) {. va 00007890: 72 20 6e 6f 64 65 20 3d 20 62 69 6e 64 69 6e 67 r node = binding 000078a0: 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 .parent;. 000078b0: 20 77 68 69 6c 65 20 28 74 73 2e 69 73 42 69 6e while (ts.isBin 000078c0: 64 69 6e 67 45 6c 65 6d 65 6e 74 28 6e 6f 64 65 dingElement(node 000078d0: 2e 70 61 72 65 6e 74 29 29 20 7b 0a 20 20 20 20 .parent)) {. 000078e0: 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 6e node = n 000078f0: 6f 64 65 2e 70 61 72 65 6e 74 2e 70 61 72 65 6e ode.parent.paren 00007900: 74 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 t;. }. 00007910: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 return node 00007920: 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 7d 0a 20 .parent;. }. 00007930: 20 20 20 74 73 2e 77 61 6c 6b 55 70 42 69 6e 64 ts.walkUpBind 00007940: 69 6e 67 45 6c 65 6d 65 6e 74 73 41 6e 64 50 61 ingElementsAndPa 00007950: 74 74 65 72 6e 73 20 3d 20 77 61 6c 6b 55 70 42 tterns = walkUpB 00007960: 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 73 41 6e indingElementsAn 00007970: 64 50 61 74 74 65 72 6e 73 3b 0a 20 20 20 20 66 dPatterns;. f 00007980: 75 6e 63 74 69 6f 6e 20 67 65 74 43 6f 6d 62 69 unction getCombi 00007990: 6e 65 64 46 6c 61 67 73 28 6e 6f 64 65 2c 20 67 nedFlags(node, g 000079a0: 65 74 46 6c 61 67 73 29 20 7b 0a 20 20 20 20 20 etFlags) {. 000079b0: 20 20 20 69 66 20 28 74 73 2e 69 73 42 69 6e 64 if (ts.isBind 000079c0: 69 6e 67 45 6c 65 6d 65 6e 74 28 6e 6f 64 65 29 ingElement(node) 000079d0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 000079e0: 6e 6f 64 65 20 3d 20 77 61 6c 6b 55 70 42 69 6e node = walkUpBin 000079f0: 64 69 6e 67 45 6c 65 6d 65 6e 74 73 41 6e 64 50 dingElementsAndP 00007a00: 61 74 74 65 72 6e 73 28 6e 6f 64 65 29 3b 0a 20 atterns(node);. 00007a10: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00007a20: 20 76 61 72 20 66 6c 61 67 73 20 3d 20 67 65 74 var flags = get 00007a30: 46 6c 61 67 73 28 6e 6f 64 65 29 3b 0a 20 20 20 Flags(node);. 00007a40: 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e 6b 69 if (node.ki 00007a50: 6e 64 20 3d 3d 3d 20 32 35 34 20 2f 2a 20 53 79 nd === 254 /* Sy 00007a60: 6e 74 61 78 4b 69 6e 64 2e 56 61 72 69 61 62 6c ntaxKind.Variabl 00007a70: 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 29 eDeclaration */) 00007a80: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e {. n 00007a90: 6f 64 65 20 3d 20 6e 6f 64 65 2e 70 61 72 65 6e ode = node.paren 00007aa0: 74 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 t;. }. 00007ab0: 20 20 20 20 20 69 66 20 28 6e 6f 64 65 20 26 26 if (node && 00007ac0: 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 node.kind === 2 00007ad0: 35 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 55 /* SyntaxKind 00007ae0: 2e 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 .VariableDeclara 00007af0: 74 69 6f 6e 4c 69 73 74 20 2a 2f 29 20 7b 0a 20 tionList */) {. 00007b00: 20 20 20 20 20 20 20 20 20 20 20 66 6c 61 67 73 flags 00007b10: 20 7c 3d 20 67 65 74 46 6c 61 67 73 28 6e 6f 64 |= getFlags(nod 00007b20: 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 e);. 00007b30: 6e 6f 64 65 20 3d 20 6e 6f 64 65 2e 70 61 72 65 node = node.pare 00007b40: 6e 74 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 nt;. }. 00007b50: 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 20 26 if (node & 00007b60: 26 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 & node.kind === 00007b70: 32 33 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 237 /* SyntaxKin 00007b80: 64 2e 56 61 72 69 61 62 6c 65 53 74 61 74 65 6d d.VariableStatem 00007b90: 65 6e 74 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 ent */) {. 00007ba0: 20 20 20 20 20 20 66 6c 61 67 73 20 7c 3d 20 67 flags |= g 00007bb0: 65 74 46 6c 61 67 73 28 6e 6f 64 65 29 3b 0a 20 etFlags(node);. 00007bc0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00007bd0: 20 72 65 74 75 72 6e 20 66 6c 61 67 73 3b 0a 20 return flags;. 00007be0: 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 74 69 6f }. functio 00007bf0: 6e 20 67 65 74 43 6f 6d 62 69 6e 65 64 4d 6f 64 n getCombinedMod 00007c00: 69 66 69 65 72 46 6c 61 67 73 28 6e 6f 64 65 29 ifierFlags(node) 00007c10: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00007c20: 6e 20 67 65 74 43 6f 6d 62 69 6e 65 64 46 6c 61 n getCombinedFla 00007c30: 67 73 28 6e 6f 64 65 2c 20 74 73 2e 67 65 74 45 gs(node, ts.getE 00007c40: 66 66 65 63 74 69 76 65 4d 6f 64 69 66 69 65 72 ffectiveModifier 00007c50: 46 6c 61 67 73 29 3b 0a 20 20 20 20 7d 0a 20 20 Flags);. }. 00007c60: 20 20 74 73 2e 67 65 74 43 6f 6d 62 69 6e 65 64 ts.getCombined 00007c70: 4d 6f 64 69 66 69 65 72 46 6c 61 67 73 20 3d 20 ModifierFlags = 00007c80: 67 65 74 43 6f 6d 62 69 6e 65 64 4d 6f 64 69 66 getCombinedModif 00007c90: 69 65 72 46 6c 61 67 73 3b 0a 20 20 20 20 2f 2a ierFlags;. /* 00007ca0: 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 @internal */. 00007cb0: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 43 6f function getCo 00007cc0: 6d 62 69 6e 65 64 4e 6f 64 65 46 6c 61 67 73 41 mbinedNodeFlagsA 00007cd0: 6c 77 61 79 73 49 6e 63 6c 75 64 65 4a 53 44 6f lwaysIncludeJSDo 00007ce0: 63 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 c(node) {. 00007cf0: 20 20 72 65 74 75 72 6e 20 67 65 74 43 6f 6d 62 return getComb 00007d00: 69 6e 65 64 46 6c 61 67 73 28 6e 6f 64 65 2c 20 inedFlags(node, 00007d10: 74 73 2e 67 65 74 45 66 66 65 63 74 69 76 65 4d ts.getEffectiveM 00007d20: 6f 64 69 66 69 65 72 46 6c 61 67 73 41 6c 77 61 odifierFlagsAlwa 00007d30: 79 73 49 6e 63 6c 75 64 65 4a 53 44 6f 63 29 3b ysIncludeJSDoc); 00007d40: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 . }. ts.ge 00007d50: 74 43 6f 6d 62 69 6e 65 64 4e 6f 64 65 46 6c 61 tCombinedNodeFla 00007d60: 67 73 41 6c 77 61 79 73 49 6e 63 6c 75 64 65 4a gsAlwaysIncludeJ 00007d70: 53 44 6f 63 20 3d 20 67 65 74 43 6f 6d 62 69 6e SDoc = getCombin 00007d80: 65 64 4e 6f 64 65 46 6c 61 67 73 41 6c 77 61 79 edNodeFlagsAlway 00007d90: 73 49 6e 63 6c 75 64 65 4a 53 44 6f 63 3b 0a 20 sIncludeJSDoc;. 00007da0: 20 20 20 2f 2f 20 52 65 74 75 72 6e 73 20 74 68 // Returns th 00007db0: 65 20 6e 6f 64 65 20 66 6c 61 67 73 20 66 6f 72 e node flags for 00007dc0: 20 74 68 69 73 20 6e 6f 64 65 20 61 6e 64 20 61 this node and a 00007dd0: 6c 6c 20 72 65 6c 65 76 61 6e 74 20 70 61 72 65 ll relevant pare 00007de0: 6e 74 20 6e 6f 64 65 73 2e 20 20 54 68 69 73 20 nt nodes. This 00007df0: 69 73 20 64 6f 6e 65 20 73 6f 20 74 68 61 74 0a is done so that. 00007e00: 20 20 20 20 2f 2f 20 6e 6f 64 65 73 20 6c 69 6b // nodes lik 00007e10: 65 20 76 61 72 69 61 62 6c 65 20 64 65 63 6c 61 e variable decla 00007e20: 72 61 74 69 6f 6e 73 20 61 6e 64 20 62 69 6e 64 rations and bind 00007e30: 69 6e 67 20 65 6c 65 6d 65 6e 74 73 20 63 61 6e ing elements can 00007e40: 20 72 65 74 75 72 6e 65 64 20 61 20 76 69 65 77 returned a view 00007e50: 20 6f 66 20 74 68 65 69 72 20 66 6c 61 67 73 0a of their flags. 00007e60: 20 20 20 20 2f 2f 20 74 68 61 74 20 69 6e 63 6c // that incl 00007e70: 75 64 65 73 20 74 68 65 20 6d 6f 64 69 66 69 65 udes the modifie 00007e80: 72 73 20 66 72 6f 6d 20 74 68 65 69 72 20 63 6f rs from their co 00007e90: 6e 74 61 69 6e 65 72 2e 20 20 69 2e 65 2e 20 66 ntainer. i.e. f 00007ea0: 6c 61 67 73 20 6c 69 6b 65 20 65 78 70 6f 72 74 lags like export 00007eb0: 2f 64 65 63 6c 61 72 65 20 61 72 65 6e 27 74 0a /declare aren't. 00007ec0: 20 20 20 20 2f 2f 20 73 74 6f 72 65 64 20 6f 6e // stored on 00007ed0: 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 64 65 the variable de 00007ee0: 63 6c 61 72 61 74 69 6f 6e 20 64 69 72 65 63 74 claration direct 00007ef0: 6c 79 2c 20 62 75 74 20 6f 6e 20 74 68 65 20 63 ly, but on the c 00007f00: 6f 6e 74 61 69 6e 69 6e 67 20 76 61 72 69 61 62 ontaining variab 00007f10: 6c 65 20 73 74 61 74 65 6d 65 6e 74 0a 20 20 20 le statement. 00007f20: 20 2f 2f 20 28 69 66 20 69 74 20 68 61 73 20 6f // (if it has o 00007f30: 6e 65 29 2e 20 20 53 69 6d 69 6c 61 72 6c 79 2c ne). Similarly, 00007f40: 20 66 6c 61 67 73 20 66 6f 72 20 6c 65 74 2f 63 flags for let/c 00007f50: 6f 6e 73 74 20 61 72 65 20 73 74 6f 72 65 64 20 onst are stored 00007f60: 6f 6e 20 74 68 65 20 76 61 72 69 61 62 6c 65 20 on the variable 00007f70: 64 65 63 6c 61 72 61 74 69 6f 6e 0a 20 20 20 20 declaration. 00007f80: 2f 2f 20 6c 69 73 74 2e 20 20 42 79 20 63 61 6c // list. By cal 00007f90: 6c 69 6e 67 20 74 68 69 73 20 66 75 6e 63 74 69 ling this functi 00007fa0: 6f 6e 2c 20 61 6c 6c 20 74 68 6f 73 65 20 66 6c on, all those fl 00007fb0: 61 67 73 20 61 72 65 20 63 6f 6d 62 69 6e 65 64 ags are combined 00007fc0: 20 73 6f 20 74 68 61 74 20 74 68 65 20 63 6c 69 so that the cli 00007fd0: 65 6e 74 20 63 61 6e 20 74 72 65 61 74 0a 20 20 ent can treat. 00007fe0: 20 20 2f 2f 20 74 68 65 20 6e 6f 64 65 20 61 73 // the node as 00007ff0: 20 69 66 20 69 74 20 61 63 74 75 61 6c 6c 79 20 if it actually 00008000: 68 61 64 20 74 68 6f 73 65 20 66 6c 61 67 73 2e had those flags. 00008010: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 00008020: 74 43 6f 6d 62 69 6e 65 64 4e 6f 64 65 46 6c 61 tCombinedNodeFla 00008030: 67 73 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 gs(node) {. 00008040: 20 20 20 72 65 74 75 72 6e 20 67 65 74 43 6f 6d return getCom 00008050: 62 69 6e 65 64 46 6c 61 67 73 28 6e 6f 64 65 2c binedFlags(node, 00008060: 20 66 75 6e 63 74 69 6f 6e 20 28 6e 29 20 7b 20 function (n) { 00008070: 72 65 74 75 72 6e 20 6e 2e 66 6c 61 67 73 3b 20 return n.flags; 00008080: 7d 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 });. }. ts 00008090: 2e 67 65 74 43 6f 6d 62 69 6e 65 64 4e 6f 64 65 .getCombinedNode 000080a0: 46 6c 61 67 73 20 3d 20 67 65 74 43 6f 6d 62 69 Flags = getCombi 000080b0: 6e 65 64 4e 6f 64 65 46 6c 61 67 73 3b 0a 20 20 nedNodeFlags;. 000080c0: 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a /* @internal * 000080d0: 2f 0a 20 20 20 20 74 73 2e 73 75 70 70 6f 72 74 /. ts.support 000080e0: 65 64 4c 6f 63 61 6c 65 44 69 72 65 63 74 6f 72 edLocaleDirector 000080f0: 69 65 73 20 3d 20 5b 22 63 73 22 2c 20 22 64 65 ies = ["cs", "de 00008100: 22 2c 20 22 65 73 22 2c 20 22 66 72 22 2c 20 22 ", "es", "fr", " 00008110: 69 74 22 2c 20 22 6a 61 22 2c 20 22 6b 6f 22 2c it", "ja", "ko", 00008120: 20 22 70 6c 22 2c 20 22 70 74 2d 62 72 22 2c 20 "pl", "pt-br", 00008130: 22 72 75 22 2c 20 22 74 72 22 2c 20 22 7a 68 2d "ru", "tr", "zh- 00008140: 63 6e 22 2c 20 22 7a 68 2d 74 77 22 5d 3b 0a 20 cn", "zh-tw"];. 00008150: 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 43 68 /**. * Ch 00008160: 65 63 6b 73 20 74 6f 20 73 65 65 20 69 66 20 74 ecks to see if t 00008170: 68 65 20 6c 6f 63 61 6c 65 20 69 73 20 69 6e 20 he locale is in 00008180: 74 68 65 20 61 70 70 72 6f 70 72 69 61 74 65 20 the appropriate 00008190: 66 6f 72 6d 61 74 2c 0a 20 20 20 20 20 2a 20 61 format,. * a 000081a0: 6e 64 20 69 66 20 69 74 20 69 73 2c 20 61 74 74 nd if it is, att 000081b0: 65 6d 70 74 73 20 74 6f 20 73 65 74 20 74 68 65 empts to set the 000081c0: 20 61 70 70 72 6f 70 72 69 61 74 65 20 6c 61 6e appropriate lan 000081d0: 67 75 61 67 65 2e 0a 20 20 20 20 20 2a 2f 0a 20 guage.. */. 000081e0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 76 61 6c 69 function vali 000081f0: 64 61 74 65 4c 6f 63 61 6c 65 41 6e 64 53 65 74 dateLocaleAndSet 00008200: 4c 61 6e 67 75 61 67 65 28 6c 6f 63 61 6c 65 2c Language(locale, 00008210: 20 73 79 73 2c 20 65 72 72 6f 72 73 29 20 7b 0a sys, errors) {. 00008220: 20 20 20 20 20 20 20 20 76 61 72 20 6c 6f 77 65 var lowe 00008230: 72 43 61 73 65 4c 6f 63 61 6c 65 20 3d 20 6c 6f rCaseLocale = lo 00008240: 63 61 6c 65 2e 74 6f 4c 6f 77 65 72 43 61 73 65 cale.toLowerCase 00008250: 28 29 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ();. var 00008260: 6d 61 74 63 68 52 65 73 75 6c 74 20 3d 20 2f 5e matchResult = /^ 00008270: 28 5b 61 2d 7a 5d 2b 29 28 5b 5f 5c 2d 5d 28 5b ([a-z]+)([_\-]([ 00008280: 61 2d 7a 5d 2b 29 29 3f 24 2f 2e 65 78 65 63 28 a-z]+))?$/.exec( 00008290: 6c 6f 77 65 72 43 61 73 65 4c 6f 63 61 6c 65 29 lowerCaseLocale) 000082a0: 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 6d ;. if (!m 000082b0: 61 74 63 68 52 65 73 75 6c 74 29 20 7b 0a 20 20 atchResult) {. 000082c0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 72 if (er 000082d0: 72 6f 72 73 29 20 7b 0a 20 20 20 20 20 20 20 20 rors) {. 000082e0: 20 20 20 20 20 20 20 20 65 72 72 6f 72 73 2e 70 errors.p 000082f0: 75 73 68 28 74 73 2e 63 72 65 61 74 65 43 6f 6d ush(ts.createCom 00008300: 70 69 6c 65 72 44 69 61 67 6e 6f 73 74 69 63 28 pilerDiagnostic( 00008310: 74 73 2e 44 69 61 67 6e 6f 73 74 69 63 73 2e 4c ts.Diagnostics.L 00008320: 6f 63 61 6c 65 5f 6d 75 73 74 5f 62 65 5f 6f 66 ocale_must_be_of 00008330: 5f 74 68 65 5f 66 6f 72 6d 5f 6c 61 6e 67 75 61 _the_form_langua 00008340: 67 65 5f 6f 72 5f 6c 61 6e 67 75 61 67 65 5f 74 ge_or_language_t 00008350: 65 72 72 69 74 6f 72 79 5f 46 6f 72 5f 65 78 61 erritory_For_exa 00008360: 6d 70 6c 65 5f 30 5f 6f 72 5f 31 2c 20 22 65 6e mple_0_or_1, "en 00008370: 22 2c 20 22 6a 61 2d 6a 70 22 29 29 3b 0a 20 20 ", "ja-jp"));. 00008380: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 00008390: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a return;. 000083a0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 000083b0: 20 20 76 61 72 20 6c 61 6e 67 75 61 67 65 20 3d var language = 000083c0: 20 6d 61 74 63 68 52 65 73 75 6c 74 5b 31 5d 3b matchResult[1]; 000083d0: 0a 20 20 20 20 20 20 20 20 76 61 72 20 74 65 72 . var ter 000083e0: 72 69 74 6f 72 79 20 3d 20 6d 61 74 63 68 52 65 ritory = matchRe 000083f0: 73 75 6c 74 5b 33 5d 3b 0a 20 20 20 20 20 20 20 sult[3];. 00008400: 20 2f 2f 20 46 69 72 73 74 20 74 72 79 20 74 68 // First try th 00008410: 65 20 65 6e 74 69 72 65 20 6c 6f 63 61 6c 65 2c e entire locale, 00008420: 20 74 68 65 6e 20 66 61 6c 6c 20 62 61 63 6b 20 then fall back 00008430: 74 6f 20 6a 75 73 74 20 6c 61 6e 67 75 61 67 65 to just language 00008440: 20 69 66 20 74 68 61 74 27 73 20 61 6c 6c 20 77 if that's all w 00008450: 65 20 68 61 76 65 2e 0a 20 20 20 20 20 20 20 20 e have.. 00008460: 2f 2f 20 45 69 74 68 65 72 20 77 61 79 73 20 64 // Either ways d 00008470: 6f 20 6e 6f 74 20 66 61 69 6c 2c 20 61 6e 64 20 o not fail, and 00008480: 66 61 6c 6c 62 61 63 6b 20 74 6f 20 74 68 65 20 fallback to the 00008490: 45 6e 67 6c 69 73 68 20 64 69 61 67 6e 6f 73 74 English diagnost 000084a0: 69 63 20 73 74 72 69 6e 67 73 2e 0a 20 20 20 20 ic strings.. 000084b0: 20 20 20 20 69 66 20 28 74 73 2e 63 6f 6e 74 61 if (ts.conta 000084c0: 69 6e 73 28 74 73 2e 73 75 70 70 6f 72 74 65 64 ins(ts.supported 000084d0: 4c 6f 63 61 6c 65 44 69 72 65 63 74 6f 72 69 65 LocaleDirectorie 000084e0: 73 2c 20 6c 6f 77 65 72 43 61 73 65 4c 6f 63 61 s, lowerCaseLoca 000084f0: 6c 65 29 20 26 26 20 21 74 72 79 53 65 74 4c 61 le) && !trySetLa 00008500: 6e 67 75 61 67 65 41 6e 64 54 65 72 72 69 74 6f nguageAndTerrito 00008510: 72 79 28 6c 61 6e 67 75 61 67 65 2c 20 74 65 72 ry(language, ter 00008520: 72 69 74 6f 72 79 2c 20 65 72 72 6f 72 73 29 29 ritory, errors)) 00008530: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 {. t 00008540: 72 79 53 65 74 4c 61 6e 67 75 61 67 65 41 6e 64 rySetLanguageAnd 00008550: 54 65 72 72 69 74 6f 72 79 28 6c 61 6e 67 75 61 Territory(langua 00008560: 67 65 2c 20 2f 2a 74 65 72 72 69 74 6f 72 79 2a ge, /*territory* 00008570: 2f 20 75 6e 64 65 66 69 6e 65 64 2c 20 65 72 72 / undefined, err 00008580: 6f 72 73 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a ors);. }. 00008590: 20 20 20 20 20 20 20 20 2f 2f 20 53 65 74 20 74 // Set t 000085a0: 68 65 20 55 49 20 6c 6f 63 61 6c 65 20 66 6f 72 he UI locale for 000085b0: 20 73 74 72 69 6e 67 20 63 6f 6c 6c 61 74 69 6f string collatio 000085c0: 6e 0a 20 20 20 20 20 20 20 20 74 73 2e 73 65 74 n. ts.set 000085d0: 55 49 4c 6f 63 61 6c 65 28 6c 6f 63 61 6c 65 29 UILocale(locale) 000085e0: 3b 0a 20 20 20 20 20 20 20 20 66 75 6e 63 74 69 ;. functi 000085f0: 6f 6e 20 74 72 79 53 65 74 4c 61 6e 67 75 61 67 on trySetLanguag 00008600: 65 41 6e 64 54 65 72 72 69 74 6f 72 79 28 6c 61 eAndTerritory(la 00008610: 6e 67 75 61 67 65 2c 20 74 65 72 72 69 74 6f 72 nguage, territor 00008620: 79 2c 20 65 72 72 6f 72 73 29 20 7b 0a 20 20 20 y, errors) {. 00008630: 20 20 20 20 20 20 20 20 20 76 61 72 20 63 6f 6d var com 00008640: 70 69 6c 65 72 46 69 6c 65 50 61 74 68 20 3d 20 pilerFilePath = 00008650: 74 73 2e 6e 6f 72 6d 61 6c 69 7a 65 50 61 74 68 ts.normalizePath 00008660: 28 73 79 73 2e 67 65 74 45 78 65 63 75 74 69 6e (sys.getExecutin 00008670: 67 46 69 6c 65 50 61 74 68 28 29 29 3b 0a 20 20 gFilePath());. 00008680: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 63 6f var co 00008690: 6e 74 61 69 6e 69 6e 67 44 69 72 65 63 74 6f 72 ntainingDirector 000086a0: 79 50 61 74 68 20 3d 20 74 73 2e 67 65 74 44 69 yPath = ts.getDi 000086b0: 72 65 63 74 6f 72 79 50 61 74 68 28 63 6f 6d 70 rectoryPath(comp 000086c0: 69 6c 65 72 46 69 6c 65 50 61 74 68 29 3b 0a 20 ilerFilePath);. 000086d0: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 66 var f 000086e0: 69 6c 65 50 61 74 68 20 3d 20 74 73 2e 63 6f 6d ilePath = ts.com 000086f0: 62 69 6e 65 50 61 74 68 73 28 63 6f 6e 74 61 69 binePaths(contai 00008700: 6e 69 6e 67 44 69 72 65 63 74 6f 72 79 50 61 74 ningDirectoryPat 00008710: 68 2c 20 6c 61 6e 67 75 61 67 65 29 3b 0a 20 20 h, language);. 00008720: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 65 if (te 00008730: 72 72 69 74 6f 72 79 29 20 7b 0a 20 20 20 20 20 rritory) {. 00008740: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 50 fileP 00008750: 61 74 68 20 3d 20 66 69 6c 65 50 61 74 68 20 2b ath = filePath + 00008760: 20 22 2d 22 20 2b 20 74 65 72 72 69 74 6f 72 79 "-" + territory 00008770: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a ;. }. 00008780: 20 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 file 00008790: 50 61 74 68 20 3d 20 73 79 73 2e 72 65 73 6f 6c Path = sys.resol 000087a0: 76 65 50 61 74 68 28 74 73 2e 63 6f 6d 62 69 6e vePath(ts.combin 000087b0: 65 50 61 74 68 73 28 66 69 6c 65 50 61 74 68 2c ePaths(filePath, 000087c0: 20 22 64 69 61 67 6e 6f 73 74 69 63 4d 65 73 73 "diagnosticMess 000087d0: 61 67 65 73 2e 67 65 6e 65 72 61 74 65 64 2e 6a ages.generated.j 000087e0: 73 6f 6e 22 29 29 3b 0a 20 20 20 20 20 20 20 20 son"));. 000087f0: 20 20 20 20 69 66 20 28 21 73 79 73 2e 66 69 6c if (!sys.fil 00008800: 65 45 78 69 73 74 73 28 66 69 6c 65 50 61 74 68 eExists(filePath 00008810: 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 )) {. 00008820: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 return fals 00008830: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d e;. } 00008840: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 . // 00008850: 54 4f 44 4f 3a 20 41 64 64 20 63 6f 64 65 50 61 TODO: Add codePa 00008860: 67 65 20 73 75 70 70 6f 72 74 20 66 6f 72 20 72 ge support for r 00008870: 65 61 64 46 69 6c 65 3f 0a 20 20 20 20 20 20 20 eadFile?. 00008880: 20 20 20 20 20 76 61 72 20 66 69 6c 65 43 6f 6e var fileCon 00008890: 74 65 6e 74 73 20 3d 20 22 22 3b 0a 20 20 20 20 tents = "";. 000088a0: 20 20 20 20 20 20 20 20 74 72 79 20 7b 0a 20 20 try {. 000088b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69 fi 000088c0: 6c 65 43 6f 6e 74 65 6e 74 73 20 3d 20 73 79 73 leContents = sys 000088d0: 2e 72 65 61 64 46 69 6c 65 28 66 69 6c 65 50 61 .readFile(filePa 000088e0: 74 68 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 th);. 000088f0: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 }. c 00008900: 61 74 63 68 20 28 65 29 20 7b 0a 20 20 20 20 20 atch (e) {. 00008910: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 65 if (e 00008920: 72 72 6f 72 73 29 20 7b 0a 20 20 20 20 20 20 20 rrors) {. 00008930: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 err 00008940: 6f 72 73 2e 70 75 73 68 28 74 73 2e 63 72 65 61 ors.push(ts.crea 00008950: 74 65 43 6f 6d 70 69 6c 65 72 44 69 61 67 6e 6f teCompilerDiagno 00008960: 73 74 69 63 28 74 73 2e 44 69 61 67 6e 6f 73 74 stic(ts.Diagnost 00008970: 69 63 73 2e 55 6e 61 62 6c 65 5f 74 6f 5f 6f 70 ics.Unable_to_op 00008980: 65 6e 5f 66 69 6c 65 5f 30 2c 20 66 69 6c 65 50 en_file_0, fileP 00008990: 61 74 68 29 29 3b 0a 20 20 20 20 20 20 20 20 20 ath));. 000089a0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 000089b0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 000089c0: 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20 false;. 000089d0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 000089e0: 20 74 72 79 20 7b 0a 20 20 20 20 20 20 20 20 20 try {. 000089f0: 20 20 20 20 20 20 20 2f 2f 20 74 68 69 73 20 69 // this i 00008a00: 73 20 61 20 67 6c 6f 62 61 6c 20 6d 75 74 61 74 s a global mutat 00008a10: 69 6f 6e 20 28 6f 72 20 6c 69 76 65 20 62 69 6e ion (or live bin 00008a20: 64 69 6e 67 20 75 70 64 61 74 65 29 21 0a 20 20 ding update)!. 00008a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 73 ts 00008a40: 2e 73 65 74 4c 6f 63 61 6c 69 7a 65 64 44 69 61 .setLocalizedDia 00008a50: 67 6e 6f 73 74 69 63 4d 65 73 73 61 67 65 73 28 gnosticMessages( 00008a60: 4a 53 4f 4e 2e 70 61 72 73 65 28 66 69 6c 65 43 JSON.parse(fileC 00008a70: 6f 6e 74 65 6e 74 73 29 29 3b 0a 20 20 20 20 20 ontents));. 00008a80: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00008a90: 20 20 20 20 20 63 61 74 63 68 20 28 5f 61 29 20 catch (_a) 00008aa0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 00008ab0: 20 20 69 66 20 28 65 72 72 6f 72 73 29 20 7b 0a if (errors) {. 00008ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00008ad0: 20 20 20 20 65 72 72 6f 72 73 2e 70 75 73 68 28 errors.push( 00008ae0: 74 73 2e 63 72 65 61 74 65 43 6f 6d 70 69 6c 65 ts.createCompile 00008af0: 72 44 69 61 67 6e 6f 73 74 69 63 28 74 73 2e 44 rDiagnostic(ts.D 00008b00: 69 61 67 6e 6f 73 74 69 63 73 2e 43 6f 72 72 75 iagnostics.Corru 00008b10: 70 74 65 64 5f 6c 6f 63 61 6c 65 5f 66 69 6c 65 pted_locale_file 00008b20: 5f 30 2c 20 66 69 6c 65 50 61 74 68 29 29 3b 0a _0, filePath));. 00008b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00008b40: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 }. 00008b50: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a return false;. 00008b60: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. 00008b70: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00008b80: 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d true;. } 00008b90: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 76 61 . }. ts.va 00008ba0: 6c 69 64 61 74 65 4c 6f 63 61 6c 65 41 6e 64 53 lidateLocaleAndS 00008bb0: 65 74 4c 61 6e 67 75 61 67 65 20 3d 20 76 61 6c etLanguage = val 00008bc0: 69 64 61 74 65 4c 6f 63 61 6c 65 41 6e 64 53 65 idateLocaleAndSe 00008bd0: 74 4c 61 6e 67 75 61 67 65 3b 0a 20 20 20 20 66 tLanguage;. f 00008be0: 75 6e 63 74 69 6f 6e 20 67 65 74 4f 72 69 67 69 unction getOrigi 00008bf0: 6e 61 6c 4e 6f 64 65 28 6e 6f 64 65 2c 20 6e 6f nalNode(node, no 00008c00: 64 65 54 65 73 74 29 20 7b 0a 20 20 20 20 20 20 deTest) {. 00008c10: 20 20 69 66 20 28 6e 6f 64 65 29 20 7b 0a 20 20 if (node) {. 00008c20: 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 while 00008c30: 28 6e 6f 64 65 2e 6f 72 69 67 69 6e 61 6c 20 21 (node.original ! 00008c40: 3d 3d 20 75 6e 64 65 66 69 6e 65 64 29 20 7b 0a == undefined) {. 00008c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00008c60: 6e 6f 64 65 20 3d 20 6e 6f 64 65 2e 6f 72 69 67 node = node.orig 00008c70: 69 6e 61 6c 3b 0a 20 20 20 20 20 20 20 20 20 20 inal;. 00008c80: 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 }. }. 00008c90: 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 6e 6f return !no 00008ca0: 64 65 54 65 73 74 20 7c 7c 20 6e 6f 64 65 54 65 deTest || nodeTe 00008cb0: 73 74 28 6e 6f 64 65 29 20 3f 20 6e 6f 64 65 20 st(node) ? node 00008cc0: 3a 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 : undefined;. 00008cd0: 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4f 72 69 }. ts.getOri 00008ce0: 67 69 6e 61 6c 4e 6f 64 65 20 3d 20 67 65 74 4f ginalNode = getO 00008cf0: 72 69 67 69 6e 61 6c 4e 6f 64 65 3b 0a 20 20 20 riginalNode;. 00008d00: 20 66 75 6e 63 74 69 6f 6e 20 66 69 6e 64 41 6e function findAn 00008d10: 63 65 73 74 6f 72 28 6e 6f 64 65 2c 20 63 61 6c cestor(node, cal 00008d20: 6c 62 61 63 6b 29 20 7b 0a 20 20 20 20 20 20 20 lback) {. 00008d30: 20 77 68 69 6c 65 20 28 6e 6f 64 65 29 20 7b 0a while (node) {. 00008d40: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var 00008d50: 72 65 73 75 6c 74 20 3d 20 63 61 6c 6c 62 61 63 result = callbac 00008d60: 6b 28 6e 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 k(node);. 00008d70: 20 20 20 20 20 69 66 20 28 72 65 73 75 6c 74 20 if (result 00008d80: 3d 3d 3d 20 22 71 75 69 74 22 29 20 7b 0a 20 20 === "quit") {. 00008d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00008da0: 74 75 72 6e 20 75 6e 64 65 66 69 6e 65 64 3b 0a turn undefined;. 00008db0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. 00008dc0: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 else i 00008dd0: 66 20 28 72 65 73 75 6c 74 29 20 7b 0a 20 20 20 f (result) {. 00008de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00008df0: 75 72 6e 20 6e 6f 64 65 3b 0a 20 20 20 20 20 20 urn node;. 00008e00: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 00008e10: 20 20 20 20 6e 6f 64 65 20 3d 20 6e 6f 64 65 2e node = node. 00008e20: 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 parent;. 00008e30: 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e }. return 00008e40: 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 undefined;. 00008e50: 7d 0a 20 20 20 20 74 73 2e 66 69 6e 64 41 6e 63 }. ts.findAnc 00008e60: 65 73 74 6f 72 20 3d 20 66 69 6e 64 41 6e 63 65 estor = findAnce 00008e70: 73 74 6f 72 3b 0a 20 20 20 20 2f 2a 2a 0a 20 20 stor;. /**. 00008e80: 20 20 20 2a 20 47 65 74 73 20 61 20 76 61 6c 75 * Gets a valu 00008e90: 65 20 69 6e 64 69 63 61 74 69 6e 67 20 77 68 65 e indicating whe 00008ea0: 74 68 65 72 20 61 20 6e 6f 64 65 20 6f 72 69 67 ther a node orig 00008eb0: 69 6e 61 74 65 64 20 69 6e 20 74 68 65 20 70 61 inated in the pa 00008ec0: 72 73 65 20 74 72 65 65 2e 0a 20 20 20 20 20 2a rse tree.. * 00008ed0: 0a 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 6e . * @param n 00008ee0: 6f 64 65 20 54 68 65 20 6e 6f 64 65 20 74 6f 20 ode The node to 00008ef0: 74 65 73 74 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 test.. */. 00008f00: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 50 61 72 function isPar 00008f10: 73 65 54 72 65 65 4e 6f 64 65 28 6e 6f 64 65 29 seTreeNode(node) 00008f20: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00008f30: 6e 20 28 6e 6f 64 65 2e 66 6c 61 67 73 20 26 20 n (node.flags & 00008f40: 38 20 2f 2a 20 4e 6f 64 65 46 6c 61 67 73 2e 53 8 /* NodeFlags.S 00008f50: 79 6e 74 68 65 73 69 7a 65 64 20 2a 2f 29 20 3d ynthesized */) = 00008f60: 3d 3d 20 30 3b 0a 20 20 20 20 7d 0a 20 20 20 20 == 0;. }. 00008f70: 74 73 2e 69 73 50 61 72 73 65 54 72 65 65 4e 6f ts.isParseTreeNo 00008f80: 64 65 20 3d 20 69 73 50 61 72 73 65 54 72 65 65 de = isParseTree 00008f90: 4e 6f 64 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 Node;. functi 00008fa0: 6f 6e 20 67 65 74 50 61 72 73 65 54 72 65 65 4e on getParseTreeN 00008fb0: 6f 64 65 28 6e 6f 64 65 2c 20 6e 6f 64 65 54 65 ode(node, nodeTe 00008fc0: 73 74 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 st) {. if 00008fd0: 20 28 6e 6f 64 65 20 3d 3d 3d 20 75 6e 64 65 66 (node === undef 00008fe0: 69 6e 65 64 20 7c 7c 20 69 73 50 61 72 73 65 54 ined || isParseT 00008ff0: 72 65 65 4e 6f 64 65 28 6e 6f 64 65 29 29 20 7b reeNode(node)) { 00009000: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret 00009010: 75 72 6e 20 6e 6f 64 65 3b 0a 20 20 20 20 20 20 urn node;. 00009020: 20 20 7d 0a 20 20 20 20 20 20 20 20 6e 6f 64 65 }. node 00009030: 20 3d 20 6e 6f 64 65 2e 6f 72 69 67 69 6e 61 6c = node.original 00009040: 3b 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 ;. while 00009050: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 00009060: 20 20 20 20 20 69 66 20 28 69 73 50 61 72 73 65 if (isParse 00009070: 54 72 65 65 4e 6f 64 65 28 6e 6f 64 65 29 29 20 TreeNode(node)) 00009080: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 00009090: 20 20 72 65 74 75 72 6e 20 21 6e 6f 64 65 54 65 return !nodeTe 000090a0: 73 74 20 7c 7c 20 6e 6f 64 65 54 65 73 74 28 6e st || nodeTest(n 000090b0: 6f 64 65 29 20 3f 20 6e 6f 64 65 20 3a 20 75 6e ode) ? node : un 000090c0: 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 defined;. 000090d0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 }. 000090e0: 20 20 20 6e 6f 64 65 20 3d 20 6e 6f 64 65 2e 6f node = node.o 000090f0: 72 69 67 69 6e 61 6c 3b 0a 20 20 20 20 20 20 20 riginal;. 00009100: 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e }. }. ts. 00009110: 67 65 74 50 61 72 73 65 54 72 65 65 4e 6f 64 65 getParseTreeNode 00009120: 20 3d 20 67 65 74 50 61 72 73 65 54 72 65 65 4e = getParseTreeN 00009130: 6f 64 65 3b 0a 20 20 20 20 2f 2a 2a 20 41 64 64 ode;. /** Add 00009140: 20 61 6e 20 65 78 74 72 61 20 75 6e 64 65 72 73 an extra unders 00009150: 63 6f 72 65 20 74 6f 20 69 64 65 6e 74 69 66 69 core to identifi 00009160: 65 72 73 20 74 68 61 74 20 73 74 61 72 74 20 77 ers that start w 00009170: 69 74 68 20 74 77 6f 20 75 6e 64 65 72 73 63 6f ith two undersco 00009180: 72 65 73 20 74 6f 20 61 76 6f 69 64 20 69 73 73 res to avoid iss 00009190: 75 65 73 20 77 69 74 68 20 6d 61 67 69 63 20 6e ues with magic n 000091a0: 61 6d 65 73 20 6c 69 6b 65 20 27 5f 5f 70 72 6f ames like '__pro 000091b0: 74 6f 5f 5f 27 20 2a 2f 0a 20 20 20 20 66 75 6e to__' */. fun 000091c0: 63 74 69 6f 6e 20 65 73 63 61 70 65 4c 65 61 64 ction escapeLead 000091d0: 69 6e 67 55 6e 64 65 72 73 63 6f 72 65 73 28 69 ingUnderscores(i 000091e0: 64 65 6e 74 69 66 69 65 72 29 20 7b 0a 20 20 20 dentifier) {. 000091f0: 20 20 20 20 20 72 65 74 75 72 6e 20 28 69 64 65 return (ide 00009200: 6e 74 69 66 69 65 72 2e 6c 65 6e 67 74 68 20 3e ntifier.length > 00009210: 3d 20 32 20 26 26 20 69 64 65 6e 74 69 66 69 65 = 2 && identifie 00009220: 72 2e 63 68 61 72 43 6f 64 65 41 74 28 30 29 20 r.charCodeAt(0) 00009230: 3d 3d 3d 20 39 35 20 2f 2a 20 43 68 61 72 61 63 === 95 /* Charac 00009240: 74 65 72 43 6f 64 65 73 2e 5f 20 2a 2f 20 26 26 terCodes._ */ && 00009250: 20 69 64 65 6e 74 69 66 69 65 72 2e 63 68 61 72 identifier.char 00009260: 43 6f 64 65 41 74 28 31 29 20 3d 3d 3d 20 39 35 CodeAt(1) === 95 00009270: 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 /* CharacterCod 00009280: 65 73 2e 5f 20 2a 2f 20 3f 20 22 5f 22 20 2b 20 es._ */ ? "_" + 00009290: 69 64 65 6e 74 69 66 69 65 72 20 3a 20 69 64 65 identifier : ide 000092a0: 6e 74 69 66 69 65 72 29 3b 0a 20 20 20 20 7d 0a ntifier);. }. 000092b0: 20 20 20 20 74 73 2e 65 73 63 61 70 65 4c 65 61 ts.escapeLea 000092c0: 64 69 6e 67 55 6e 64 65 72 73 63 6f 72 65 73 20 dingUnderscores 000092d0: 3d 20 65 73 63 61 70 65 4c 65 61 64 69 6e 67 55 = escapeLeadingU 000092e0: 6e 64 65 72 73 63 6f 72 65 73 3b 0a 20 20 20 20 nderscores;. 000092f0: 2f 2a 2a 0a 20 20 20 20 20 2a 20 52 65 6d 6f 76 /**. * Remov 00009300: 65 20 65 78 74 72 61 20 75 6e 64 65 72 73 63 6f e extra undersco 00009310: 72 65 20 66 72 6f 6d 20 65 73 63 61 70 65 64 20 re from escaped 00009320: 69 64 65 6e 74 69 66 69 65 72 20 74 65 78 74 20 identifier text 00009330: 63 6f 6e 74 65 6e 74 2e 0a 20 20 20 20 20 2a 0a content.. *. 00009340: 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 69 64 * @param id 00009350: 65 6e 74 69 66 69 65 72 20 54 68 65 20 65 73 63 entifier The esc 00009360: 61 70 65 64 20 69 64 65 6e 74 69 66 69 65 72 20 aped identifier 00009370: 74 65 78 74 2e 0a 20 20 20 20 20 2a 20 40 72 65 text.. * @re 00009380: 74 75 72 6e 73 20 54 68 65 20 75 6e 65 73 63 61 turns The unesca 00009390: 70 65 64 20 69 64 65 6e 74 69 66 69 65 72 20 74 ped identifier t 000093a0: 65 78 74 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 ext.. */. 000093b0: 20 66 75 6e 63 74 69 6f 6e 20 75 6e 65 73 63 61 function unesca 000093c0: 70 65 4c 65 61 64 69 6e 67 55 6e 64 65 72 73 63 peLeadingUndersc 000093d0: 6f 72 65 73 28 69 64 65 6e 74 69 66 69 65 72 29 ores(identifier) 000093e0: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 {. var i 000093f0: 64 20 3d 20 69 64 65 6e 74 69 66 69 65 72 3b 0a d = identifier;. 00009400: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 return i 00009410: 64 2e 6c 65 6e 67 74 68 20 3e 3d 20 33 20 26 26 d.length >= 3 && 00009420: 20 69 64 2e 63 68 61 72 43 6f 64 65 41 74 28 30 id.charCodeAt(0 00009430: 29 20 3d 3d 3d 20 39 35 20 2f 2a 20 43 68 61 72 ) === 95 /* Char 00009440: 61 63 74 65 72 43 6f 64 65 73 2e 5f 20 2a 2f 20 acterCodes._ */ 00009450: 26 26 20 69 64 2e 63 68 61 72 43 6f 64 65 41 74 && id.charCodeAt 00009460: 28 31 29 20 3d 3d 3d 20 39 35 20 2f 2a 20 43 68 (1) === 95 /* Ch 00009470: 61 72 61 63 74 65 72 43 6f 64 65 73 2e 5f 20 2a aracterCodes._ * 00009480: 2f 20 26 26 20 69 64 2e 63 68 61 72 43 6f 64 65 / && id.charCode 00009490: 41 74 28 32 29 20 3d 3d 3d 20 39 35 20 2f 2a 20 At(2) === 95 /* 000094a0: 43 68 61 72 61 63 74 65 72 43 6f 64 65 73 2e 5f CharacterCodes._ 000094b0: 20 2a 2f 20 3f 20 69 64 2e 73 75 62 73 74 72 28 */ ? id.substr( 000094c0: 31 29 20 3a 20 69 64 3b 0a 20 20 20 20 7d 0a 20 1) : id;. }. 000094d0: 20 20 20 74 73 2e 75 6e 65 73 63 61 70 65 4c 65 ts.unescapeLe 000094e0: 61 64 69 6e 67 55 6e 64 65 72 73 63 6f 72 65 73 adingUnderscores 000094f0: 20 3d 20 75 6e 65 73 63 61 70 65 4c 65 61 64 69 = unescapeLeadi 00009500: 6e 67 55 6e 64 65 72 73 63 6f 72 65 73 3b 0a 20 ngUnderscores;. 00009510: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 64 54 65 function idTe 00009520: 78 74 28 69 64 65 6e 74 69 66 69 65 72 4f 72 50 xt(identifierOrP 00009530: 72 69 76 61 74 65 4e 61 6d 65 29 20 7b 0a 20 20 rivateName) {. 00009540: 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 6e 65 return une 00009550: 73 63 61 70 65 4c 65 61 64 69 6e 67 55 6e 64 65 scapeLeadingUnde 00009560: 72 73 63 6f 72 65 73 28 69 64 65 6e 74 69 66 69 rscores(identifi 00009570: 65 72 4f 72 50 72 69 76 61 74 65 4e 61 6d 65 2e erOrPrivateName. 00009580: 65 73 63 61 70 65 64 54 65 78 74 29 3b 0a 20 20 escapedText);. 00009590: 20 20 7d 0a 20 20 20 20 74 73 2e 69 64 54 65 78 }. ts.idTex 000095a0: 74 20 3d 20 69 64 54 65 78 74 3b 0a 20 20 20 20 t = idText;. 000095b0: 66 75 6e 63 74 69 6f 6e 20 73 79 6d 62 6f 6c 4e function symbolN 000095c0: 61 6d 65 28 73 79 6d 62 6f 6c 29 20 7b 0a 20 20 ame(symbol) {. 000095d0: 20 20 20 20 20 20 69 66 20 28 73 79 6d 62 6f 6c if (symbol 000095e0: 2e 76 61 6c 75 65 44 65 63 6c 61 72 61 74 69 6f .valueDeclaratio 000095f0: 6e 20 26 26 20 69 73 50 72 69 76 61 74 65 49 64 n && isPrivateId 00009600: 65 6e 74 69 66 69 65 72 43 6c 61 73 73 45 6c 65 entifierClassEle 00009610: 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e 28 mentDeclaration( 00009620: 73 79 6d 62 6f 6c 2e 76 61 6c 75 65 44 65 63 6c symbol.valueDecl 00009630: 61 72 61 74 69 6f 6e 29 29 20 7b 0a 20 20 20 20 aration)) {. 00009640: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 return i 00009650: 64 54 65 78 74 28 73 79 6d 62 6f 6c 2e 76 61 6c dText(symbol.val 00009660: 75 65 44 65 63 6c 61 72 61 74 69 6f 6e 2e 6e 61 ueDeclaration.na 00009670: 6d 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 me);. }. 00009680: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 6e return un 00009690: 65 73 63 61 70 65 4c 65 61 64 69 6e 67 55 6e 64 escapeLeadingUnd 000096a0: 65 72 73 63 6f 72 65 73 28 73 79 6d 62 6f 6c 2e erscores(symbol. 000096b0: 65 73 63 61 70 65 64 4e 61 6d 65 29 3b 0a 20 20 escapedName);. 000096c0: 20 20 7d 0a 20 20 20 20 74 73 2e 73 79 6d 62 6f }. ts.symbo 000096d0: 6c 4e 61 6d 65 20 3d 20 73 79 6d 62 6f 6c 4e 61 lName = symbolNa 000096e0: 6d 65 3b 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 me;. /**. 000096f0: 20 2a 20 41 20 4a 53 44 6f 63 54 79 70 65 64 65 * A JSDocTypede 00009700: 66 20 74 61 67 20 68 61 73 20 61 6e 20 5f 6f 70 f tag has an _op 00009710: 74 69 6f 6e 61 6c 5f 20 6e 61 6d 65 20 66 69 65 tional_ name fie 00009720: 6c 64 20 2d 20 69 66 20 61 20 6e 61 6d 65 20 69 ld - if a name i 00009730: 73 20 6e 6f 74 20 64 69 72 65 63 74 6c 79 20 70 s not directly p 00009740: 72 65 73 65 6e 74 2c 20 77 65 20 73 68 6f 75 6c resent, we shoul 00009750: 64 0a 20 20 20 20 20 2a 20 61 74 74 65 6d 70 74 d. * attempt 00009760: 20 74 6f 20 64 72 61 77 20 74 68 65 20 6e 61 6d to draw the nam 00009770: 65 20 66 72 6f 6d 20 74 68 65 20 6e 6f 64 65 20 e from the node 00009780: 74 68 65 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 the declaration 00009790: 69 73 20 6f 6e 20 28 61 73 20 74 68 61 74 20 64 is on (as that d 000097a0: 65 63 6c 61 72 61 74 69 6f 6e 20 69 73 20 77 68 eclaration is wh 000097b0: 61 74 20 69 74 73 27 20 73 79 6d 62 6f 6c 0a 20 at its' symbol. 000097c0: 20 20 20 20 2a 20 77 69 6c 6c 20 62 65 20 6d 65 * will be me 000097d0: 72 67 65 64 20 77 69 74 68 29 0a 20 20 20 20 20 rged with). 000097e0: 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 */. function 000097f0: 6e 61 6d 65 46 6f 72 4e 61 6d 65 6c 65 73 73 4a nameForNamelessJ 00009800: 53 44 6f 63 54 79 70 65 64 65 66 28 64 65 63 6c SDocTypedef(decl 00009810: 61 72 61 74 69 6f 6e 29 20 7b 0a 20 20 20 20 20 aration) {. 00009820: 20 20 20 76 61 72 20 68 6f 73 74 4e 6f 64 65 20 var hostNode 00009830: 3d 20 64 65 63 6c 61 72 61 74 69 6f 6e 2e 70 61 = declaration.pa 00009840: 72 65 6e 74 2e 70 61 72 65 6e 74 3b 0a 20 20 20 rent.parent;. 00009850: 20 20 20 20 20 69 66 20 28 21 68 6f 73 74 4e 6f if (!hostNo 00009860: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 de) {. 00009870: 20 20 72 65 74 75 72 6e 20 75 6e 64 65 66 69 6e return undefin 00009880: 65 64 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 ed;. }. 00009890: 20 20 20 20 20 20 2f 2f 20 43 6f 76 65 72 73 20 // Covers 000098a0: 63 6c 61 73 73 65 73 2c 20 66 75 6e 63 74 69 6f classes, functio 000098b0: 6e 73 20 2d 20 61 6e 79 20 6e 61 6d 65 64 20 64 ns - any named d 000098c0: 65 63 6c 61 72 61 74 69 6f 6e 20 68 6f 73 74 20 eclaration host 000098d0: 6e 6f 64 65 0a 20 20 20 20 20 20 20 20 69 66 20 node. if 000098e0: 28 69 73 44 65 63 6c 61 72 61 74 69 6f 6e 28 68 (isDeclaration(h 000098f0: 6f 73 74 4e 6f 64 65 29 29 20 7b 0a 20 20 20 20 ostNode)) {. 00009900: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 return g 00009910: 65 74 44 65 63 6c 61 72 61 74 69 6f 6e 49 64 65 etDeclarationIde 00009920: 6e 74 69 66 69 65 72 28 68 6f 73 74 4e 6f 64 65 ntifier(hostNode 00009930: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 );. }. 00009940: 20 20 20 20 20 2f 2f 20 43 6f 76 65 72 73 20 72 // Covers r 00009950: 65 6d 61 69 6e 69 6e 67 20 63 61 73 65 73 20 28 emaining cases ( 00009960: 72 65 74 75 72 6e 69 6e 67 20 75 6e 64 65 66 69 returning undefi 00009970: 6e 65 64 20 69 66 20 6e 6f 6e 65 20 6d 61 74 63 ned if none matc 00009980: 68 29 2e 0a 20 20 20 20 20 20 20 20 73 77 69 74 h).. swit 00009990: 63 68 20 28 68 6f 73 74 4e 6f 64 65 2e 6b 69 6e ch (hostNode.kin 000099a0: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 d) {. 000099b0: 20 63 61 73 65 20 32 33 37 20 2f 2a 20 53 79 6e case 237 /* Syn 000099c0: 74 61 78 4b 69 6e 64 2e 56 61 72 69 61 62 6c 65 taxKind.Variable 000099d0: 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 Statement */:. 000099e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if 000099f0: 20 28 68 6f 73 74 4e 6f 64 65 2e 64 65 63 6c 61 (hostNode.decla 00009a00: 72 61 74 69 6f 6e 4c 69 73 74 20 26 26 20 68 6f rationList && ho 00009a10: 73 74 4e 6f 64 65 2e 64 65 63 6c 61 72 61 74 69 stNode.declarati 00009a20: 6f 6e 4c 69 73 74 2e 64 65 63 6c 61 72 61 74 69 onList.declarati 00009a30: 6f 6e 73 5b 30 5d 29 20 7b 0a 20 20 20 20 20 20 ons[0]) {. 00009a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00009a50: 74 75 72 6e 20 67 65 74 44 65 63 6c 61 72 61 74 turn getDeclarat 00009a60: 69 6f 6e 49 64 65 6e 74 69 66 69 65 72 28 68 6f ionIdentifier(ho 00009a70: 73 74 4e 6f 64 65 2e 64 65 63 6c 61 72 61 74 69 stNode.declarati 00009a80: 6f 6e 4c 69 73 74 2e 64 65 63 6c 61 72 61 74 69 onList.declarati 00009a90: 6f 6e 73 5b 30 5d 29 3b 0a 20 20 20 20 20 20 20 ons[0]);. 00009aa0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 00009ab0: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b break 00009ac0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ;. ca 00009ad0: 73 65 20 32 33 38 20 2f 2a 20 53 79 6e 74 61 78 se 238 /* Syntax 00009ae0: 4b 69 6e 64 2e 45 78 70 72 65 73 73 69 6f 6e 53 Kind.ExpressionS 00009af0: 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 tatement */:. 00009b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 var 00009b10: 20 65 78 70 72 20 3d 20 68 6f 73 74 4e 6f 64 65 expr = hostNode 00009b20: 2e 65 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 .expression;. 00009b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 if 00009b40: 28 65 78 70 72 2e 6b 69 6e 64 20 3d 3d 3d 20 32 (expr.kind === 2 00009b50: 32 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 21 /* SyntaxKind 00009b60: 2e 42 69 6e 61 72 79 45 78 70 72 65 73 73 69 6f .BinaryExpressio 00009b70: 6e 20 2a 2f 20 26 26 20 65 78 70 72 2e 6f 70 65 n */ && expr.ope 00009b80: 72 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 6e 64 20 ratorToken.kind 00009b90: 3d 3d 3d 20 36 33 20 2f 2a 20 53 79 6e 74 61 78 === 63 /* Syntax 00009ba0: 4b 69 6e 64 2e 45 71 75 61 6c 73 54 6f 6b 65 6e Kind.EqualsToken 00009bb0: 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 20 20 */) {. 00009bc0: 20 20 20 20 20 20 20 20 20 20 20 65 78 70 72 20 expr 00009bd0: 3d 20 65 78 70 72 2e 6c 65 66 74 3b 0a 20 20 20 = expr.left;. 00009be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 }. 00009bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 s 00009c00: 77 69 74 63 68 20 28 65 78 70 72 2e 6b 69 6e 64 witch (expr.kind 00009c10: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 00009c20: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 36 case 206 00009c30: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 /* SyntaxKind.P 00009c40: 72 6f 70 65 72 74 79 41 63 63 65 73 73 45 78 70 ropertyAccessExp 00009c50: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 00009c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00009c70: 20 20 20 20 72 65 74 75 72 6e 20 65 78 70 72 2e return expr. 00009c80: 6e 61 6d 65 3b 0a 20 20 20 20 20 20 20 20 20 20 name;. 00009c90: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 00009ca0: 30 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 07 /* SyntaxKind 00009cb0: 2e 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 45 78 .ElementAccessEx 00009cc0: 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 pression */:. 00009cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00009ce0: 20 20 20 20 20 76 61 72 20 61 72 67 20 3d 20 65 var arg = e 00009cf0: 78 70 72 2e 61 72 67 75 6d 65 6e 74 45 78 70 72 xpr.argumentExpr 00009d00: 65 73 73 69 6f 6e 3b 0a 20 20 20 20 20 20 20 20 ession;. 00009d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00009d20: 69 66 20 28 74 73 2e 69 73 49 64 65 6e 74 69 66 if (ts.isIdentif 00009d30: 69 65 72 28 61 72 67 29 29 20 7b 0a 20 20 20 20 ier(arg)) {. 00009d40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00009d50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 return a 00009d60: 72 67 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 rg;. 00009d70: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. 00009d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }. 00009d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00009da0: 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 break;. 00009db0: 20 20 20 63 61 73 65 20 32 31 32 20 2f 2a 20 53 case 212 /* S 00009dc0: 79 6e 74 61 78 4b 69 6e 64 2e 50 61 72 65 6e 74 yntaxKind.Parent 00009dd0: 68 65 73 69 7a 65 64 45 78 70 72 65 73 73 69 6f hesizedExpressio 00009de0: 6e 20 2a 2f 3a 20 7b 0a 20 20 20 20 20 20 20 20 n */: {. 00009df0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 return g 00009e00: 65 74 44 65 63 6c 61 72 61 74 69 6f 6e 49 64 65 etDeclarationIde 00009e10: 6e 74 69 66 69 65 72 28 68 6f 73 74 4e 6f 64 65 ntifier(hostNode 00009e20: 2e 65 78 70 72 65 73 73 69 6f 6e 29 3b 0a 20 20 .expression);. 00009e30: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 00009e40: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 35 30 case 250 00009e50: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4c /* SyntaxKind.L 00009e60: 61 62 65 6c 65 64 53 74 61 74 65 6d 65 6e 74 20 abeledStatement 00009e70: 2a 2f 3a 20 7b 0a 20 20 20 20 20 20 20 20 20 20 */: {. 00009e80: 20 20 20 20 20 20 69 66 20 28 69 73 44 65 63 6c if (isDecl 00009e90: 61 72 61 74 69 6f 6e 28 68 6f 73 74 4e 6f 64 65 aration(hostNode 00009ea0: 2e 73 74 61 74 65 6d 65 6e 74 29 20 7c 7c 20 69 .statement) || i 00009eb0: 73 45 78 70 72 65 73 73 69 6f 6e 28 68 6f 73 74 sExpression(host 00009ec0: 4e 6f 64 65 2e 73 74 61 74 65 6d 65 6e 74 29 29 Node.statement)) 00009ed0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 00009ee0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 return ge 00009ef0: 74 44 65 63 6c 61 72 61 74 69 6f 6e 49 64 65 6e tDeclarationIden 00009f00: 74 69 66 69 65 72 28 68 6f 73 74 4e 6f 64 65 2e tifier(hostNode. 00009f10: 73 74 61 74 65 6d 65 6e 74 29 3b 0a 20 20 20 20 statement);. 00009f20: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. 00009f30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br 00009f40: 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 eak;. 00009f50: 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. }. 00009f60: 20 7d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 }. function 00009f70: 67 65 74 44 65 63 6c 61 72 61 74 69 6f 6e 49 64 getDeclarationId 00009f80: 65 6e 74 69 66 69 65 72 28 6e 6f 64 65 29 20 7b entifier(node) { 00009f90: 0a 20 20 20 20 20 20 20 20 76 61 72 20 6e 61 6d . var nam 00009fa0: 65 20 3d 20 67 65 74 4e 61 6d 65 4f 66 44 65 63 e = getNameOfDec 00009fb0: 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 3b 0a laration(node);. 00009fc0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e return n 00009fd0: 61 6d 65 20 26 26 20 74 73 2e 69 73 49 64 65 6e ame && ts.isIden 00009fe0: 74 69 66 69 65 72 28 6e 61 6d 65 29 20 3f 20 6e tifier(name) ? n 00009ff0: 61 6d 65 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b ame : undefined; 0000a000: 0a 20 20 20 20 7d 0a 20 20 20 20 2f 2a 2a 20 40 . }. /** @ 0000a010: 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 internal */. 0000a020: 66 75 6e 63 74 69 6f 6e 20 6e 6f 64 65 48 61 73 function nodeHas 0000a030: 4e 61 6d 65 28 73 74 61 74 65 6d 65 6e 74 2c 20 Name(statement, 0000a040: 6e 61 6d 65 29 20 7b 0a 20 20 20 20 20 20 20 20 name) {. 0000a050: 69 66 20 28 69 73 4e 61 6d 65 64 44 65 63 6c 61 if (isNamedDecla 0000a060: 72 61 74 69 6f 6e 28 73 74 61 74 65 6d 65 6e 74 ration(statement 0000a070: 29 20 26 26 20 74 73 2e 69 73 49 64 65 6e 74 69 ) && ts.isIdenti 0000a080: 66 69 65 72 28 73 74 61 74 65 6d 65 6e 74 2e 6e fier(statement.n 0000a090: 61 6d 65 29 20 26 26 20 69 64 54 65 78 74 28 73 ame) && idText(s 0000a0a0: 74 61 74 65 6d 65 6e 74 2e 6e 61 6d 65 29 20 3d tatement.name) = 0000a0b0: 3d 3d 20 69 64 54 65 78 74 28 6e 61 6d 65 29 29 == idText(name)) 0000a0c0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 {. r 0000a0d0: 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 eturn true;. 0000a0e0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 }. if 0000a0f0: 20 28 74 73 2e 69 73 56 61 72 69 61 62 6c 65 53 (ts.isVariableS 0000a100: 74 61 74 65 6d 65 6e 74 28 73 74 61 74 65 6d 65 tatement(stateme 0000a110: 6e 74 29 20 26 26 20 74 73 2e 73 6f 6d 65 28 73 nt) && ts.some(s 0000a120: 74 61 74 65 6d 65 6e 74 2e 64 65 63 6c 61 72 61 tatement.declara 0000a130: 74 69 6f 6e 4c 69 73 74 2e 64 65 63 6c 61 72 61 tionList.declara 0000a140: 74 69 6f 6e 73 2c 20 66 75 6e 63 74 69 6f 6e 20 tions, function 0000a150: 28 64 29 20 7b 20 72 65 74 75 72 6e 20 6e 6f 64 (d) { return nod 0000a160: 65 48 61 73 4e 61 6d 65 28 64 2c 20 6e 61 6d 65 eHasName(d, name 0000a170: 29 3b 20 7d 29 29 20 7b 0a 20 20 20 20 20 20 20 ); })) {. 0000a180: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 return true 0000a190: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 0000a1a0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 return false 0000a1b0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 6e ;. }. ts.n 0000a1c0: 6f 64 65 48 61 73 4e 61 6d 65 20 3d 20 6e 6f 64 odeHasName = nod 0000a1d0: 65 48 61 73 4e 61 6d 65 3b 0a 20 20 20 20 66 75 eHasName;. fu 0000a1e0: 6e 63 74 69 6f 6e 20 67 65 74 4e 61 6d 65 4f 66 nction getNameOf 0000a1f0: 4a 53 44 6f 63 54 79 70 65 64 65 66 28 64 65 63 JSDocTypedef(dec 0000a200: 6c 61 72 61 74 69 6f 6e 29 20 7b 0a 20 20 20 20 laration) {. 0000a210: 20 20 20 20 72 65 74 75 72 6e 20 64 65 63 6c 61 return decla 0000a220: 72 61 74 69 6f 6e 2e 6e 61 6d 65 20 7c 7c 20 6e ration.name || n 0000a230: 61 6d 65 46 6f 72 4e 61 6d 65 6c 65 73 73 4a 53 ameForNamelessJS 0000a240: 44 6f 63 54 79 70 65 64 65 66 28 64 65 63 6c 61 DocTypedef(decla 0000a250: 72 61 74 69 6f 6e 29 3b 0a 20 20 20 20 7d 0a 20 ration);. }. 0000a260: 20 20 20 74 73 2e 67 65 74 4e 61 6d 65 4f 66 4a ts.getNameOfJ 0000a270: 53 44 6f 63 54 79 70 65 64 65 66 20 3d 20 67 65 SDocTypedef = ge 0000a280: 74 4e 61 6d 65 4f 66 4a 53 44 6f 63 54 79 70 65 tNameOfJSDocType 0000a290: 64 65 66 3b 0a 20 20 20 20 2f 2a 2a 20 40 69 6e def;. /** @in 0000a2a0: 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 ternal */. fu 0000a2b0: 6e 63 74 69 6f 6e 20 69 73 4e 61 6d 65 64 44 65 nction isNamedDe 0000a2c0: 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 20 claration(node) 0000a2d0: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 0000a2e0: 20 21 21 6e 6f 64 65 2e 6e 61 6d 65 3b 20 2f 2f !!node.name; // 0000a2f0: 20 41 20 27 6e 61 6d 65 27 20 70 72 6f 70 65 72 A 'name' proper 0000a300: 74 79 20 73 68 6f 75 6c 64 20 61 6c 77 61 79 73 ty should always 0000a310: 20 62 65 20 61 20 44 65 63 6c 61 72 61 74 69 6f be a Declaratio 0000a320: 6e 4e 61 6d 65 2e 0a 20 20 20 20 7d 0a 20 20 20 nName.. }. 0000a330: 20 74 73 2e 69 73 4e 61 6d 65 64 44 65 63 6c 61 ts.isNamedDecla 0000a340: 72 61 74 69 6f 6e 20 3d 20 69 73 4e 61 6d 65 64 ration = isNamed 0000a350: 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 Declaration;. 0000a360: 20 2f 2a 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a /** @internal * 0000a370: 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 /. function g 0000a380: 65 74 4e 6f 6e 41 73 73 69 67 6e 65 64 4e 61 6d etNonAssignedNam 0000a390: 65 4f 66 44 65 63 6c 61 72 61 74 69 6f 6e 28 64 eOfDeclaration(d 0000a3a0: 65 63 6c 61 72 61 74 69 6f 6e 29 20 7b 0a 20 20 eclaration) {. 0000a3b0: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 64 65 switch (de 0000a3c0: 63 6c 61 72 61 74 69 6f 6e 2e 6b 69 6e 64 29 20 claration.kind) 0000a3d0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 {. ca 0000a3e0: 73 65 20 37 39 20 2f 2a 20 53 79 6e 74 61 78 4b se 79 /* SyntaxK 0000a3f0: 69 6e 64 2e 49 64 65 6e 74 69 66 69 65 72 20 2a ind.Identifier * 0000a400: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0000a410: 20 20 20 72 65 74 75 72 6e 20 64 65 63 6c 61 72 return declar 0000a420: 61 74 69 6f 6e 3b 0a 20 20 20 20 20 20 20 20 20 ation;. 0000a430: 20 20 20 63 61 73 65 20 33 34 37 20 2f 2a 20 53 case 347 /* S 0000a440: 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 50 yntaxKind.JSDocP 0000a450: 72 6f 70 65 72 74 79 54 61 67 20 2a 2f 3a 0a 20 ropertyTag */:. 0000a460: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0000a470: 33 34 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 340 /* SyntaxKin 0000a480: 64 2e 4a 53 44 6f 63 50 61 72 61 6d 65 74 65 72 d.JSDocParameter 0000a490: 54 61 67 20 2a 2f 3a 20 7b 0a 20 20 20 20 20 20 Tag */: {. 0000a4a0: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e 61 var na 0000a4b0: 6d 65 20 3d 20 64 65 63 6c 61 72 61 74 69 6f 6e me = declaration 0000a4c0: 2e 6e 61 6d 65 3b 0a 20 20 20 20 20 20 20 20 20 .name;. 0000a4d0: 20 20 20 20 20 20 20 69 66 20 28 6e 61 6d 65 2e if (name. 0000a4e0: 6b 69 6e 64 20 3d 3d 3d 20 31 36 31 20 2f 2a 20 kind === 161 /* 0000a4f0: 53 79 6e 74 61 78 4b 69 6e 64 2e 51 75 61 6c 69 SyntaxKind.Quali 0000a500: 66 69 65 64 4e 61 6d 65 20 2a 2f 29 20 7b 0a 20 fiedName */) {. 0000a510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0000a520: 20 20 20 72 65 74 75 72 6e 20 6e 61 6d 65 2e 72 return name.r 0000a530: 69 67 68 74 3b 0a 20 20 20 20 20 20 20 20 20 20 ight;. 0000a540: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 0000a550: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 break;. 0000a560: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 0000a570: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 case 20 0000a580: 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 8 /* SyntaxKind. 0000a590: 43 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a CallExpression * 0000a5a0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 0000a5b0: 61 73 65 20 32 32 31 20 2f 2a 20 53 79 6e 74 61 ase 221 /* Synta 0000a5c0: 78 4b 69 6e 64 2e 42 69 6e 61 72 79 45 78 70 72 xKind.BinaryExpr 0000a5d0: 65 73 73 69 6f 6e 20 2a 2f 3a 20 7b 0a 20 20 20 ession */: {. 0000a5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 var 0000a5f0: 20 65 78 70 72 5f 31 20 3d 20 64 65 63 6c 61 72 expr_1 = declar 0000a600: 61 74 69 6f 6e 3b 0a 20 20 20 20 20 20 20 20 20 ation;. 0000a610: 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 74 switch (t 0000a620: 73 2e 67 65 74 41 73 73 69 67 6e 6d 65 6e 74 44 s.getAssignmentD 0000a630: 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 28 65 eclarationKind(e 0000a640: 78 70 72 5f 31 29 29 20 7b 0a 20 20 20 20 20 20 xpr_1)) {. 0000a650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 0000a660: 73 65 20 31 20 2f 2a 20 41 73 73 69 67 6e 6d 65 se 1 /* Assignme 0000a670: 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e ntDeclarationKin 0000a680: 64 2e 45 78 70 6f 72 74 73 50 72 6f 70 65 72 74 d.ExportsPropert 0000a690: 79 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 y */:. 0000a6a0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 34 case 4 0000a6b0: 20 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 /* AssignmentDe 0000a6c0: 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 54 68 clarationKind.Th 0000a6d0: 69 73 50 72 6f 70 65 72 74 79 20 2a 2f 3a 0a 20 isProperty */:. 0000a6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0000a6f0: 20 20 20 63 61 73 65 20 35 20 2f 2a 20 41 73 73 case 5 /* Ass 0000a700: 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 ignmentDeclarati 0000a710: 6f 6e 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 20 onKind.Property 0000a720: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0000a730: 20 20 20 20 20 20 20 20 63 61 73 65 20 33 20 2f case 3 / 0000a740: 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c * AssignmentDecl 0000a750: 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 50 72 6f 74 arationKind.Prot 0000a760: 6f 74 79 70 65 50 72 6f 70 65 72 74 79 20 2a 2f otypeProperty */ 0000a770: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0000a780: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 0000a790: 20 74 73 2e 67 65 74 45 6c 65 6d 65 6e 74 4f 72 ts.getElementOr 0000a7a0: 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 41 72 PropertyAccessAr 0000a7b0: 67 75 6d 65 6e 74 45 78 70 72 65 73 73 69 6f 6e gumentExpression 0000a7c0: 4f 72 4e 61 6d 65 28 65 78 70 72 5f 31 2e 6c 65 OrName(expr_1.le 0000a7d0: 66 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ft);. 0000a7e0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 37 20 case 7 0000a7f0: 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 /* AssignmentDec 0000a800: 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 4f 62 6a larationKind.Obj 0000a810: 65 63 74 44 65 66 69 6e 65 50 72 6f 70 65 72 74 ectDefinePropert 0000a820: 79 56 61 6c 75 65 20 2a 2f 3a 0a 20 20 20 20 20 yValue */:. 0000a830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0000a840: 61 73 65 20 38 20 2f 2a 20 41 73 73 69 67 6e 6d ase 8 /* Assignm 0000a850: 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b 69 entDeclarationKi 0000a860: 6e 64 2e 4f 62 6a 65 63 74 44 65 66 69 6e 65 50 nd.ObjectDefineP 0000a870: 72 6f 70 65 72 74 79 45 78 70 6f 72 74 73 20 2a ropertyExports * 0000a880: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0000a890: 20 20 20 20 20 20 20 63 61 73 65 20 39 20 2f 2a case 9 /* 0000a8a0: 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 AssignmentDecla 0000a8b0: 72 61 74 69 6f 6e 4b 69 6e 64 2e 4f 62 6a 65 63 rationKind.Objec 0000a8c0: 74 44 65 66 69 6e 65 50 72 6f 74 6f 74 79 70 65 tDefinePrototype 0000a8d0: 50 72 6f 70 65 72 74 79 20 2a 2f 3a 0a 20 20 20 Property */:. 0000a8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0000a8f0: 20 20 20 20 20 72 65 74 75 72 6e 20 65 78 70 72 return expr 0000a900: 5f 31 2e 61 72 67 75 6d 65 6e 74 73 5b 31 5d 3b _1.arguments[1]; 0000a910: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0000a920: 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 default:. 0000a930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0000a940: 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 6e 64 return und 0000a950: 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 efined;. 0000a960: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0000a970: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 0000a980: 20 20 20 20 63 61 73 65 20 33 34 35 20 2f 2a 20 case 345 /* 0000a990: 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 SyntaxKind.JSDoc 0000a9a0: 54 79 70 65 64 65 66 54 61 67 20 2a 2f 3a 0a 20 TypedefTag */:. 0000a9b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 0000a9c0: 65 74 75 72 6e 20 67 65 74 4e 61 6d 65 4f 66 4a eturn getNameOfJ 0000a9d0: 53 44 6f 63 54 79 70 65 64 65 66 28 64 65 63 6c SDocTypedef(decl 0000a9e0: 61 72 61 74 69 6f 6e 29 3b 0a 20 20 20 20 20 20 aration);. 0000a9f0: 20 20 20 20 20 20 63 61 73 65 20 33 33 39 20 2f case 339 / 0000aa00: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 * SyntaxKind.JSD 0000aa10: 6f 63 45 6e 75 6d 54 61 67 20 2a 2f 3a 0a 20 20 ocEnumTag */:. 0000aa20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 0000aa30: 74 75 72 6e 20 6e 61 6d 65 46 6f 72 4e 61 6d 65 turn nameForName 0000aa40: 6c 65 73 73 4a 53 44 6f 63 54 79 70 65 64 65 66 lessJSDocTypedef 0000aa50: 28 64 65 63 6c 61 72 61 74 69 6f 6e 29 3b 0a 20 (declaration);. 0000aa60: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0000aa70: 32 37 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 271 /* SyntaxKin 0000aa80: 64 2e 45 78 70 6f 72 74 41 73 73 69 67 6e 6d 65 d.ExportAssignme 0000aa90: 6e 74 20 2a 2f 3a 20 7b 0a 20 20 20 20 20 20 20 nt */: {. 0000aaa0: 20 20 20 20 20 20 20 20 20 76 61 72 20 65 78 70 var exp 0000aab0: 72 65 73 73 69 6f 6e 20 3d 20 64 65 63 6c 61 72 ression = declar 0000aac0: 61 74 69 6f 6e 2e 65 78 70 72 65 73 73 69 6f 6e ation.expression 0000aad0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 0000aae0: 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 49 64 return ts.isId 0000aaf0: 65 6e 74 69 66 69 65 72 28 65 78 70 72 65 73 73 entifier(express 0000ab00: 69 6f 6e 29 20 3f 20 65 78 70 72 65 73 73 69 6f ion) ? expressio 0000ab10: 6e 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 n : undefined;. 0000ab20: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 0000ab30: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 case 20 0000ab40: 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 7 /* SyntaxKind. 0000ab50: 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 45 78 70 ElementAccessExp 0000ab60: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 0000ab70: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var 0000ab80: 65 78 70 72 20 3d 20 64 65 63 6c 61 72 61 74 69 expr = declarati 0000ab90: 6f 6e 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 on;. 0000aba0: 20 20 20 20 69 66 20 28 74 73 2e 69 73 42 69 6e if (ts.isBin 0000abb0: 64 61 62 6c 65 53 74 61 74 69 63 45 6c 65 6d 65 dableStaticEleme 0000abc0: 6e 74 41 63 63 65 73 73 45 78 70 72 65 73 73 69 ntAccessExpressi 0000abd0: 6f 6e 28 65 78 70 72 29 29 20 7b 0a 20 20 20 20 on(expr)) {. 0000abe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0000abf0: 72 65 74 75 72 6e 20 65 78 70 72 2e 61 72 67 75 return expr.argu 0000ac00: 6d 65 6e 74 45 78 70 72 65 73 73 69 6f 6e 3b 0a mentExpression;. 0000ac10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0000ac20: 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. }. 0000ac30: 20 20 20 20 72 65 74 75 72 6e 20 64 65 63 6c 61 return decla 0000ac40: 72 61 74 69 6f 6e 2e 6e 61 6d 65 3b 0a 20 20 20 ration.name;. 0000ac50: 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4e 6f 6e }. ts.getNon 0000ac60: 41 73 73 69 67 6e 65 64 4e 61 6d 65 4f 66 44 65 AssignedNameOfDe 0000ac70: 63 6c 61 72 61 74 69 6f 6e 20 3d 20 67 65 74 4e claration = getN 0000ac80: 6f 6e 41 73 73 69 67 6e 65 64 4e 61 6d 65 4f 66 onAssignedNameOf 0000ac90: 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 Declaration;. 0000aca0: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4e 61 6d function getNam 0000acb0: 65 4f 66 44 65 63 6c 61 72 61 74 69 6f 6e 28 64 eOfDeclaration(d 0000acc0: 65 63 6c 61 72 61 74 69 6f 6e 29 20 7b 0a 20 20 eclaration) {. 0000acd0: 20 20 20 20 20 20 69 66 20 28 64 65 63 6c 61 72 if (declar 0000ace0: 61 74 69 6f 6e 20 3d 3d 3d 20 75 6e 64 65 66 69 ation === undefi 0000acf0: 6e 65 64 29 0a 20 20 20 20 20 20 20 20 20 20 20 ned). 0000ad00: 20 72 65 74 75 72 6e 20 75 6e 64 65 66 69 6e 65 return undefine 0000ad10: 64 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 d;. retur 0000ad20: 6e 20 67 65 74 4e 6f 6e 41 73 73 69 67 6e 65 64 n getNonAssigned 0000ad30: 4e 61 6d 65 4f 66 44 65 63 6c 61 72 61 74 69 6f NameOfDeclaratio 0000ad40: 6e 28 64 65 63 6c 61 72 61 74 69 6f 6e 29 20 7c n(declaration) | 0000ad50: 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 28 74 |. (t 0000ad60: 73 2e 69 73 46 75 6e 63 74 69 6f 6e 45 78 70 72 s.isFunctionExpr 0000ad70: 65 73 73 69 6f 6e 28 64 65 63 6c 61 72 61 74 69 ession(declarati 0000ad80: 6f 6e 29 20 7c 7c 20 74 73 2e 69 73 41 72 72 6f on) || ts.isArro 0000ad90: 77 46 75 6e 63 74 69 6f 6e 28 64 65 63 6c 61 72 wFunction(declar 0000ada0: 61 74 69 6f 6e 29 20 7c 7c 20 74 73 2e 69 73 43 ation) || ts.isC 0000adb0: 6c 61 73 73 45 78 70 72 65 73 73 69 6f 6e 28 64 lassExpression(d 0000adc0: 65 63 6c 61 72 61 74 69 6f 6e 29 20 3f 20 67 65 eclaration) ? ge 0000add0: 74 41 73 73 69 67 6e 65 64 4e 61 6d 65 28 64 65 tAssignedName(de 0000ade0: 63 6c 61 72 61 74 69 6f 6e 29 20 3a 20 75 6e 64 claration) : und 0000adf0: 65 66 69 6e 65 64 29 3b 0a 20 20 20 20 7d 0a 20 efined);. }. 0000ae00: 20 20 20 74 73 2e 67 65 74 4e 61 6d 65 4f 66 44 ts.getNameOfD 0000ae10: 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 67 65 74 eclaration = get 0000ae20: 4e 61 6d 65 4f 66 44 65 63 6c 61 72 61 74 69 6f NameOfDeclaratio 0000ae30: 6e 3b 0a 20 20 20 20 2f 2a 40 69 6e 74 65 72 6e n;. /*@intern 0000ae40: 61 6c 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f al*/. functio 0000ae50: 6e 20 67 65 74 41 73 73 69 67 6e 65 64 4e 61 6d n getAssignedNam 0000ae60: 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 e(node) {. 0000ae70: 20 20 69 66 20 28 21 6e 6f 64 65 2e 70 61 72 65 if (!node.pare 0000ae80: 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 nt) {. 0000ae90: 20 20 72 65 74 75 72 6e 20 75 6e 64 65 66 69 6e return undefin 0000aea0: 65 64 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 ed;. }. 0000aeb0: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 74 else if (t 0000aec0: 73 2e 69 73 50 72 6f 70 65 72 74 79 41 73 73 69 s.isPropertyAssi 0000aed0: 67 6e 6d 65 6e 74 28 6e 6f 64 65 2e 70 61 72 65 gnment(node.pare 0000aee0: 6e 74 29 20 7c 7c 20 74 73 2e 69 73 42 69 6e 64 nt) || ts.isBind 0000aef0: 69 6e 67 45 6c 65 6d 65 6e 74 28 6e 6f 64 65 2e ingElement(node. 0000af00: 70 61 72 65 6e 74 29 29 20 7b 0a 20 20 20 20 20 parent)) {. 0000af10: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 0000af20: 64 65 2e 70 61 72 65 6e 74 2e 6e 61 6d 65 3b 0a de.parent.name;. 0000af30: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0000af40: 20 20 65 6c 73 65 20 69 66 20 28 74 73 2e 69 73 else if (ts.is 0000af50: 42 69 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e BinaryExpression 0000af60: 28 6e 6f 64 65 2e 70 61 72 65 6e 74 29 20 26 26 (node.parent) && 0000af70: 20 6e 6f 64 65 20 3d 3d 3d 20 6e 6f 64 65 2e 70 node === node.p 0000af80: 61 72 65 6e 74 2e 72 69 67 68 74 29 20 7b 0a 20 arent.right) {. 0000af90: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74 if (t 0000afa0: 73 2e 69 73 49 64 65 6e 74 69 66 69 65 72 28 6e s.isIdentifier(n 0000afb0: 6f 64 65 2e 70 61 72 65 6e 74 2e 6c 65 66 74 29 ode.parent.left) 0000afc0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 0000afd0: 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e return node. 0000afe0: 70 61 72 65 6e 74 2e 6c 65 66 74 3b 0a 20 20 20 parent.left;. 0000aff0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 0000b000: 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 else if ( 0000b010: 74 73 2e 69 73 41 63 63 65 73 73 45 78 70 72 65 ts.isAccessExpre 0000b020: 73 73 69 6f 6e 28 6e 6f 64 65 2e 70 61 72 65 6e ssion(node.paren 0000b030: 74 2e 6c 65 66 74 29 29 20 7b 0a 20 20 20 20 20 t.left)) {. 0000b040: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0000b050: 6e 20 74 73 2e 67 65 74 45 6c 65 6d 65 6e 74 4f n ts.getElementO 0000b060: 72 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 41 rPropertyAccessA 0000b070: 72 67 75 6d 65 6e 74 45 78 70 72 65 73 73 69 6f rgumentExpressio 0000b080: 6e 4f 72 4e 61 6d 65 28 6e 6f 64 65 2e 70 61 72 nOrName(node.par 0000b090: 65 6e 74 2e 6c 65 66 74 29 3b 0a 20 20 20 20 20 ent.left);. 0000b0a0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 0000b0b0: 20 7d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 20 }. else 0000b0c0: 69 66 20 28 74 73 2e 69 73 56 61 72 69 61 62 6c if (ts.isVariabl 0000b0d0: 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 eDeclaration(nod 0000b0e0: 65 2e 70 61 72 65 6e 74 29 20 26 26 20 74 73 2e e.parent) && ts. 0000b0f0: 69 73 49 64 65 6e 74 69 66 69 65 72 28 6e 6f 64 isIdentifier(nod 0000b100: 65 2e 70 61 72 65 6e 74 2e 6e 61 6d 65 29 29 20 e.parent.name)) 0000b110: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 {. re 0000b120: 74 75 72 6e 20 6e 6f 64 65 2e 70 61 72 65 6e 74 turn node.parent 0000b130: 2e 6e 61 6d 65 3b 0a 20 20 20 20 20 20 20 20 7d .name;. } 0000b140: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 . }. ts.ge 0000b150: 74 41 73 73 69 67 6e 65 64 4e 61 6d 65 20 3d 20 tAssignedName = 0000b160: 67 65 74 41 73 73 69 67 6e 65 64 4e 61 6d 65 3b getAssignedName; 0000b170: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 0000b180: 74 44 65 63 6f 72 61 74 6f 72 73 28 6e 6f 64 65 tDecorators(node 0000b190: 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 ) {. if ( 0000b1a0: 74 73 2e 68 61 73 44 65 63 6f 72 61 74 6f 72 73 ts.hasDecorators 0000b1b0: 28 6e 6f 64 65 29 29 20 7b 0a 20 20 20 20 20 20 (node)) {. 0000b1c0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 0000b1d0: 66 69 6c 74 65 72 28 6e 6f 64 65 2e 6d 6f 64 69 filter(node.modi 0000b1e0: 66 69 65 72 73 2c 20 74 73 2e 69 73 44 65 63 6f fiers, ts.isDeco 0000b1f0: 72 61 74 6f 72 29 3b 0a 20 20 20 20 20 20 20 20 rator);. 0000b200: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 }. }. ts.g 0000b210: 65 74 44 65 63 6f 72 61 74 6f 72 73 20 3d 20 67 etDecorators = g 0000b220: 65 74 44 65 63 6f 72 61 74 6f 72 73 3b 0a 20 20 etDecorators;. 0000b230: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4d 6f function getMo 0000b240: 64 69 66 69 65 72 73 28 6e 6f 64 65 29 20 7b 0a difiers(node) {. 0000b250: 20 20 20 20 20 20 20 20 69 66 20 28 74 73 2e 68 if (ts.h 0000b260: 61 73 53 79 6e 74 61 63 74 69 63 4d 6f 64 69 66 asSyntacticModif 0000b270: 69 65 72 28 6e 6f 64 65 2c 20 31 32 35 39 35 31 ier(node, 125951 0000b280: 20 2f 2a 20 4d 6f 64 69 66 69 65 72 46 6c 61 67 /* ModifierFlag 0000b290: 73 2e 4d 6f 64 69 66 69 65 72 20 2a 2f 29 29 20 s.Modifier */)) 0000b2a0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 {. re 0000b2b0: 74 75 72 6e 20 74 73 2e 66 69 6c 74 65 72 28 6e turn ts.filter(n 0000b2c0: 6f 64 65 2e 6d 6f 64 69 66 69 65 72 73 2c 20 69 ode.modifiers, i 0000b2d0: 73 4d 6f 64 69 66 69 65 72 29 3b 0a 20 20 20 20 sModifier);. 0000b2e0: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 }. }. 0000b2f0: 74 73 2e 67 65 74 4d 6f 64 69 66 69 65 72 73 20 ts.getModifiers 0000b300: 3d 20 67 65 74 4d 6f 64 69 66 69 65 72 73 3b 0a = getModifiers;. 0000b310: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 function get 0000b320: 4a 53 44 6f 63 50 61 72 61 6d 65 74 65 72 54 61 JSDocParameterTa 0000b330: 67 73 57 6f 72 6b 65 72 28 70 61 72 61 6d 2c 20 gsWorker(param, 0000b340: 6e 6f 43 61 63 68 65 29 20 7b 0a 20 20 20 20 20 noCache) {. 0000b350: 20 20 20 69 66 20 28 70 61 72 61 6d 2e 6e 61 6d if (param.nam 0000b360: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 e) {. 0000b370: 20 69 66 20 28 74 73 2e 69 73 49 64 65 6e 74 69 if (ts.isIdenti 0000b380: 66 69 65 72 28 70 61 72 61 6d 2e 6e 61 6d 65 29 fier(param.name) 0000b390: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 0000b3a0: 20 20 20 20 76 61 72 20 6e 61 6d 65 5f 31 20 3d var name_1 = 0000b3b0: 20 70 61 72 61 6d 2e 6e 61 6d 65 2e 65 73 63 61 param.name.esca 0000b3c0: 70 65 64 54 65 78 74 3b 0a 20 20 20 20 20 20 20 pedText;. 0000b3d0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 0000b3e0: 67 65 74 4a 53 44 6f 63 54 61 67 73 57 6f 72 6b getJSDocTagsWork 0000b3f0: 65 72 28 70 61 72 61 6d 2e 70 61 72 65 6e 74 2c er(param.parent, 0000b400: 20 6e 6f 43 61 63 68 65 29 2e 66 69 6c 74 65 72 noCache).filter 0000b410: 28 66 75 6e 63 74 69 6f 6e 20 28 74 61 67 29 20 (function (tag) 0000b420: 7b 20 72 65 74 75 72 6e 20 74 73 2e 69 73 4a 53 { return ts.isJS 0000b430: 44 6f 63 50 61 72 61 6d 65 74 65 72 54 61 67 28 DocParameterTag( 0000b440: 74 61 67 29 20 26 26 20 74 73 2e 69 73 49 64 65 tag) && ts.isIde 0000b450: 6e 74 69 66 69 65 72 28 74 61 67 2e 6e 61 6d 65 ntifier(tag.name 0000b460: 29 20 26 26 20 74 61 67 2e 6e 61 6d 65 2e 65 73 ) && tag.name.es 0000b470: 63 61 70 65 64 54 65 78 74 20 3d 3d 3d 20 6e 61 capedText === na 0000b480: 6d 65 5f 31 3b 20 7d 29 3b 0a 20 20 20 20 20 20 me_1; });. 0000b490: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 0000b4a0: 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 else {. 0000b4b0: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 69 var i 0000b4c0: 20 3d 20 70 61 72 61 6d 2e 70 61 72 65 6e 74 2e = param.parent. 0000b4d0: 70 61 72 61 6d 65 74 65 72 73 2e 69 6e 64 65 78 parameters.index 0000b4e0: 4f 66 28 70 61 72 61 6d 29 3b 0a 20 20 20 20 20 Of(param);. 0000b4f0: 20 20 20 20 20 20 20 20 20 20 20 74 73 2e 44 65 ts.De 0000b500: 62 75 67 2e 61 73 73 65 72 74 28 69 20 3e 20 2d bug.assert(i > - 0000b510: 31 2c 20 22 50 61 72 61 6d 65 74 65 72 73 20 73 1, "Parameters s 0000b520: 68 6f 75 6c 64 20 61 6c 77 61 79 73 20 62 65 20 hould always be 0000b530: 69 6e 20 74 68 65 69 72 20 70 61 72 65 6e 74 73 in their parents 0000b540: 27 20 70 61 72 61 6d 65 74 65 72 20 6c 69 73 74 ' parameter list 0000b550: 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ");. 0000b560: 20 20 20 20 76 61 72 20 70 61 72 61 6d 54 61 67 var paramTag 0000b570: 73 20 3d 20 67 65 74 4a 53 44 6f 63 54 61 67 73 s = getJSDocTags 0000b580: 57 6f 72 6b 65 72 28 70 61 72 61 6d 2e 70 61 72 Worker(param.par 0000b590: 65 6e 74 2c 20 6e 6f 43 61 63 68 65 29 2e 66 69 ent, noCache).fi 0000b5a0: 6c 74 65 72 28 74 73 2e 69 73 4a 53 44 6f 63 50 lter(ts.isJSDocP 0000b5b0: 61 72 61 6d 65 74 65 72 54 61 67 29 3b 0a 20 20 arameterTag);. 0000b5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if 0000b5d0: 20 28 69 20 3c 20 70 61 72 61 6d 54 61 67 73 2e (i < paramTags. 0000b5e0: 6c 65 6e 67 74 68 29 20 7b 0a 20 20 20 20 20 20 length) {. 0000b5f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 0000b600: 74 75 72 6e 20 5b 70 61 72 61 6d 54 61 67 73 5b turn [paramTags[ 0000b610: 69 5d 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 i]];. 0000b620: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 }. 0000b630: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 }. }. 0000b640: 20 20 20 20 20 20 20 2f 2f 20 72 65 74 75 72 6e // return 0000b650: 20 65 6d 70 74 79 20 61 72 72 61 79 20 66 6f 72 empty array for 0000b660: 3a 20 6f 75 74 2d 6f 66 2d 6f 72 64 65 72 20 62 : out-of-order b 0000b670: 69 6e 64 69 6e 67 20 70 61 74 74 65 72 6e 73 20 inding patterns 0000b680: 61 6e 64 20 4a 53 44 6f 63 20 66 75 6e 63 74 69 and JSDoc functi 0000b690: 6f 6e 20 73 79 6e 74 61 78 2c 20 77 68 69 63 68 on syntax, which 0000b6a0: 20 68 61 73 20 75 6e 2d 6e 61 6d 65 64 20 70 61 has un-named pa 0000b6b0: 72 61 6d 65 74 65 72 73 0a 20 20 20 20 20 20 20 rameters. 0000b6c0: 20 72 65 74 75 72 6e 20 74 73 2e 65 6d 70 74 79 return ts.empty 0000b6d0: 41 72 72 61 79 3b 0a 20 20 20 20 7d 0a 20 20 20 Array;. }. 0000b6e0: 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 47 65 74 73 /**. * Gets 0000b6f0: 20 74 68 65 20 4a 53 44 6f 63 20 70 61 72 61 6d the JSDoc param 0000b700: 65 74 65 72 20 74 61 67 73 20 66 6f 72 20 74 68 eter tags for th 0000b710: 65 20 6e 6f 64 65 20 69 66 20 70 72 65 73 65 6e e node if presen 0000b720: 74 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a t.. *. * 0000b730: 20 40 72 65 6d 61 72 6b 73 20 52 65 74 75 72 6e @remarks Return 0000b740: 73 20 61 6e 79 20 4a 53 44 6f 63 20 70 61 72 61 s any JSDoc para 0000b750: 6d 20 74 61 67 20 77 68 6f 73 65 20 6e 61 6d 65 m tag whose name 0000b760: 20 6d 61 74 63 68 65 73 20 74 68 65 20 70 72 6f matches the pro 0000b770: 76 69 64 65 64 0a 20 20 20 20 20 2a 20 70 61 72 vided. * par 0000b780: 61 6d 65 74 65 72 2c 20 77 68 65 74 68 65 72 20 ameter, whether 0000b790: 61 20 70 61 72 61 6d 20 74 61 67 20 6f 6e 20 61 a param tag on a 0000b7a0: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 66 75 6e 63 containing func 0000b7b0: 74 69 6f 6e 0a 20 20 20 20 20 2a 20 65 78 70 72 tion. * expr 0000b7c0: 65 73 73 69 6f 6e 2c 20 6f 72 20 61 20 70 61 72 ession, or a par 0000b7d0: 61 6d 20 74 61 67 20 6f 6e 20 61 20 76 61 72 69 am tag on a vari 0000b7e0: 61 62 6c 65 20 64 65 63 6c 61 72 61 74 69 6f 6e able declaration 0000b7f0: 20 77 68 6f 73 65 0a 20 20 20 20 20 2a 20 69 6e whose. * in 0000b800: 69 74 69 61 6c 69 7a 65 72 20 69 73 20 74 68 65 itializer is the 0000b810: 20 63 6f 6e 74 61 69 6e 69 6e 67 20 66 75 6e 63 containing func 0000b820: 74 69 6f 6e 2e 20 54 68 65 20 74 61 67 73 20 63 tion. The tags c 0000b830: 6c 6f 73 65 73 74 20 74 6f 20 74 68 65 0a 20 20 losest to the. 0000b840: 20 20 20 2a 20 6e 6f 64 65 20 61 72 65 20 72 65 * node are re 0000b850: 74 75 72 6e 65 64 20 66 69 72 73 74 2c 20 73 6f turned first, so 0000b860: 20 69 6e 20 74 68 65 20 70 72 65 76 69 6f 75 73 in the previous 0000b870: 20 65 78 61 6d 70 6c 65 2c 20 74 68 65 20 70 61 example, the pa 0000b880: 72 61 6d 0a 20 20 20 20 20 2a 20 74 61 67 20 6f ram. * tag o 0000b890: 6e 20 74 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67 n the containing 0000b8a0: 20 66 75 6e 63 74 69 6f 6e 20 65 78 70 72 65 73 function expres 0000b8b0: 73 69 6f 6e 20 77 6f 75 6c 64 20 62 65 20 66 69 sion would be fi 0000b8c0: 72 73 74 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 rst.. *. 0000b8d0: 20 2a 20 46 6f 72 20 62 69 6e 64 69 6e 67 20 70 * For binding p 0000b8e0: 61 74 74 65 72 6e 73 2c 20 70 61 72 61 6d 65 74 atterns, paramet 0000b8f0: 65 72 20 74 61 67 73 20 61 72 65 20 6d 61 74 63 er tags are matc 0000b900: 68 65 64 20 62 79 20 70 6f 73 69 74 69 6f 6e 2e hed by position. 0000b910: 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e . */. fun 0000b920: 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 50 61 ction getJSDocPa 0000b930: 72 61 6d 65 74 65 72 54 61 67 73 28 70 61 72 61 rameterTags(para 0000b940: 6d 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 m) {. ret 0000b950: 75 72 6e 20 67 65 74 4a 53 44 6f 63 50 61 72 61 urn getJSDocPara 0000b960: 6d 65 74 65 72 54 61 67 73 57 6f 72 6b 65 72 28 meterTagsWorker( 0000b970: 70 61 72 61 6d 2c 20 2f 2a 6e 6f 43 61 63 68 65 param, /*noCache 0000b980: 2a 2f 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 7d */ false);. } 0000b990: 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 44 6f 63 . ts.getJSDoc 0000b9a0: 50 61 72 61 6d 65 74 65 72 54 61 67 73 20 3d 20 ParameterTags = 0000b9b0: 67 65 74 4a 53 44 6f 63 50 61 72 61 6d 65 74 65 getJSDocParamete 0000b9c0: 72 54 61 67 73 3b 0a 20 20 20 20 2f 2a 20 40 69 rTags;. /* @i 0000b9d0: 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 nternal */. f 0000b9e0: 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 unction getJSDoc 0000b9f0: 50 61 72 61 6d 65 74 65 72 54 61 67 73 4e 6f 43 ParameterTagsNoC 0000ba00: 61 63 68 65 28 70 61 72 61 6d 29 20 7b 0a 20 20 ache(param) {. 0000ba10: 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 return get 0000ba20: 4a 53 44 6f 63 50 61 72 61 6d 65 74 65 72 54 61 JSDocParameterTa 0000ba30: 67 73 57 6f 72 6b 65 72 28 70 61 72 61 6d 2c 20 gsWorker(param, 0000ba40: 2f 2a 6e 6f 43 61 63 68 65 2a 2f 20 74 72 75 65 /*noCache*/ true 0000ba50: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 0000ba60: 67 65 74 4a 53 44 6f 63 50 61 72 61 6d 65 74 65 getJSDocParamete 0000ba70: 72 54 61 67 73 4e 6f 43 61 63 68 65 20 3d 20 67 rTagsNoCache = g 0000ba80: 65 74 4a 53 44 6f 63 50 61 72 61 6d 65 74 65 72 etJSDocParameter 0000ba90: 54 61 67 73 4e 6f 43 61 63 68 65 3b 0a 20 20 20 TagsNoCache;. 0000baa0: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 function getJSD 0000bab0: 6f 63 54 79 70 65 50 61 72 61 6d 65 74 65 72 54 ocTypeParameterT 0000bac0: 61 67 73 57 6f 72 6b 65 72 28 70 61 72 61 6d 2c agsWorker(param, 0000bad0: 20 6e 6f 43 61 63 68 65 29 20 7b 0a 20 20 20 20 noCache) {. 0000bae0: 20 20 20 20 76 61 72 20 6e 61 6d 65 20 3d 20 70 var name = p 0000baf0: 61 72 61 6d 2e 6e 61 6d 65 2e 65 73 63 61 70 65 aram.name.escape 0000bb00: 64 54 65 78 74 3b 0a 20 20 20 20 20 20 20 20 72 dText;. r 0000bb10: 65 74 75 72 6e 20 67 65 74 4a 53 44 6f 63 54 61 eturn getJSDocTa 0000bb20: 67 73 57 6f 72 6b 65 72 28 70 61 72 61 6d 2e 70 gsWorker(param.p 0000bb30: 61 72 65 6e 74 2c 20 6e 6f 43 61 63 68 65 29 2e arent, noCache). 0000bb40: 66 69 6c 74 65 72 28 66 75 6e 63 74 69 6f 6e 20 filter(function 0000bb50: 28 74 61 67 29 20 7b 0a 20 20 20 20 20 20 20 20 (tag) {. 0000bb60: 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 return ts.is 0000bb70: 4a 53 44 6f 63 54 65 6d 70 6c 61 74 65 54 61 67 JSDocTemplateTag 0000bb80: 28 74 61 67 29 20 26 26 20 74 61 67 2e 74 79 70 (tag) && tag.typ 0000bb90: 65 50 61 72 61 6d 65 74 65 72 73 2e 73 6f 6d 65 eParameters.some 0000bba0: 28 66 75 6e 63 74 69 6f 6e 20 28 74 70 29 20 7b (function (tp) { 0000bbb0: 20 72 65 74 75 72 6e 20 74 70 2e 6e 61 6d 65 2e return tp.name. 0000bbc0: 65 73 63 61 70 65 64 54 65 78 74 20 3d 3d 3d 20 escapedText === 0000bbd0: 6e 61 6d 65 3b 20 7d 29 3b 0a 20 20 20 20 20 20 name; });. 0000bbe0: 20 20 7d 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 });. }. 0000bbf0: 2f 2a 2a 0a 20 20 20 20 20 2a 20 47 65 74 73 20 /**. * Gets 0000bc00: 74 68 65 20 4a 53 44 6f 63 20 74 79 70 65 20 70 the JSDoc type p 0000bc10: 61 72 61 6d 65 74 65 72 20 74 61 67 73 20 66 6f arameter tags fo 0000bc20: 72 20 74 68 65 20 6e 6f 64 65 20 69 66 20 70 72 r the node if pr 0000bc30: 65 73 65 6e 74 2e 0a 20 20 20 20 20 2a 0a 20 20 esent.. *. 0000bc40: 20 20 20 2a 20 40 72 65 6d 61 72 6b 73 20 52 65 * @remarks Re 0000bc50: 74 75 72 6e 73 20 61 6e 79 20 4a 53 44 6f 63 20 turns any JSDoc 0000bc60: 74 65 6d 70 6c 61 74 65 20 74 61 67 20 77 68 6f template tag who 0000bc70: 73 65 20 6e 61 6d 65 73 20 6d 61 74 63 68 20 74 se names match t 0000bc80: 68 65 20 70 72 6f 76 69 64 65 64 0a 20 20 20 20 he provided. 0000bc90: 20 2a 20 70 61 72 61 6d 65 74 65 72 2c 20 77 68 * parameter, wh 0000bca0: 65 74 68 65 72 20 61 20 74 65 6d 70 6c 61 74 65 ether a template 0000bcb0: 20 74 61 67 20 6f 6e 20 61 20 63 6f 6e 74 61 69 tag on a contai 0000bcc0: 6e 69 6e 67 20 66 75 6e 63 74 69 6f 6e 0a 20 20 ning function. 0000bcd0: 20 20 20 2a 20 65 78 70 72 65 73 73 69 6f 6e 2c * expression, 0000bce0: 20 6f 72 20 61 20 74 65 6d 70 6c 61 74 65 20 74 or a template t 0000bcf0: 61 67 20 6f 6e 20 61 20 76 61 72 69 61 62 6c 65 ag on a variable 0000bd00: 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 77 68 6f declaration who 0000bd10: 73 65 0a 20 20 20 20 20 2a 20 69 6e 69 74 69 61 se. * initia 0000bd20: 6c 69 7a 65 72 20 69 73 20 74 68 65 20 63 6f 6e lizer is the con 0000bd30: 74 61 69 6e 69 6e 67 20 66 75 6e 63 74 69 6f 6e taining function 0000bd40: 2e 20 54 68 65 20 74 61 67 73 20 63 6c 6f 73 65 . The tags close 0000bd50: 73 74 20 74 6f 20 74 68 65 0a 20 20 20 20 20 2a st to the. * 0000bd60: 20 6e 6f 64 65 20 61 72 65 20 72 65 74 75 72 6e node are return 0000bd70: 65 64 20 66 69 72 73 74 2c 20 73 6f 20 69 6e 20 ed first, so in 0000bd80: 74 68 65 20 70 72 65 76 69 6f 75 73 20 65 78 61 the previous exa 0000bd90: 6d 70 6c 65 2c 20 74 68 65 20 74 65 6d 70 6c 61 mple, the templa 0000bda0: 74 65 0a 20 20 20 20 20 2a 20 74 61 67 20 6f 6e te. * tag on 0000bdb0: 20 74 68 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20 the containing 0000bdc0: 66 75 6e 63 74 69 6f 6e 20 65 78 70 72 65 73 73 function express 0000bdd0: 69 6f 6e 20 77 6f 75 6c 64 20 62 65 20 66 69 72 ion would be fir 0000bde0: 73 74 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 st.. */. 0000bdf0: 66 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f function getJSDo 0000be00: 63 54 79 70 65 50 61 72 61 6d 65 74 65 72 54 61 cTypeParameterTa 0000be10: 67 73 28 70 61 72 61 6d 29 20 7b 0a 20 20 20 20 gs(param) {. 0000be20: 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 4a 53 return getJS 0000be30: 44 6f 63 54 79 70 65 50 61 72 61 6d 65 74 65 72 DocTypeParameter 0000be40: 54 61 67 73 57 6f 72 6b 65 72 28 70 61 72 61 6d TagsWorker(param 0000be50: 2c 20 2f 2a 6e 6f 43 61 63 68 65 2a 2f 20 66 61 , /*noCache*/ fa 0000be60: 6c 73 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 lse);. }. 0000be70: 74 73 2e 67 65 74 4a 53 44 6f 63 54 79 70 65 50 ts.getJSDocTypeP 0000be80: 61 72 61 6d 65 74 65 72 54 61 67 73 20 3d 20 67 arameterTags = g 0000be90: 65 74 4a 53 44 6f 63 54 79 70 65 50 61 72 61 6d etJSDocTypeParam 0000bea0: 65 74 65 72 54 61 67 73 3b 0a 20 20 20 20 2f 2a eterTags;. /* 0000beb0: 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 @internal */. 0000bec0: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 function getJS 0000bed0: 44 6f 63 54 79 70 65 50 61 72 61 6d 65 74 65 72 DocTypeParameter 0000bee0: 54 61 67 73 4e 6f 43 61 63 68 65 28 70 61 72 61 TagsNoCache(para 0000bef0: 6d 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 m) {. ret 0000bf00: 75 72 6e 20 67 65 74 4a 53 44 6f 63 54 79 70 65 urn getJSDocType 0000bf10: 50 61 72 61 6d 65 74 65 72 54 61 67 73 57 6f 72 ParameterTagsWor 0000bf20: 6b 65 72 28 70 61 72 61 6d 2c 20 2f 2a 6e 6f 43 ker(param, /*noC 0000bf30: 61 63 68 65 2a 2f 20 74 72 75 65 29 3b 0a 20 20 ache*/ true);. 0000bf40: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 }. ts.getJS 0000bf50: 44 6f 63 54 79 70 65 50 61 72 61 6d 65 74 65 72 DocTypeParameter 0000bf60: 54 61 67 73 4e 6f 43 61 63 68 65 20 3d 20 67 65 TagsNoCache = ge 0000bf70: 74 4a 53 44 6f 63 54 79 70 65 50 61 72 61 6d 65 tJSDocTypeParame 0000bf80: 74 65 72 54 61 67 73 4e 6f 43 61 63 68 65 3b 0a terTagsNoCache;. 0000bf90: 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 52 /**. * R 0000bfa0: 65 74 75 72 6e 20 74 72 75 65 20 69 66 20 74 68 eturn true if th 0000bfb0: 65 20 6e 6f 64 65 20 68 61 73 20 4a 53 44 6f 63 e node has JSDoc 0000bfc0: 20 70 61 72 61 6d 65 74 65 72 20 74 61 67 73 2e parameter tags. 0000bfd0: 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 . *. * @ 0000bfe0: 72 65 6d 61 72 6b 73 20 49 6e 63 6c 75 64 65 73 remarks Includes 0000bff0: 20 70 61 72 61 6d 65 74 65 72 20 74 61 67 73 20 parameter tags 0000c000: 74 68 61 74 20 61 72 65 20 6e 6f 74 20 64 69 72 that are not dir 0000c010: 65 63 74 6c 79 20 6f 6e 20 74 68 65 20 6e 6f 64 ectly on the nod 0000c020: 65 2c 0a 20 20 20 20 20 2a 20 66 6f 72 20 65 78 e,. * for ex 0000c030: 61 6d 70 6c 65 20 6f 6e 20 61 20 76 61 72 69 61 ample on a varia 0000c040: 62 6c 65 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 ble declaration 0000c050: 77 68 6f 73 65 20 69 6e 69 74 69 61 6c 69 7a 65 whose initialize 0000c060: 72 20 69 73 20 61 20 66 75 6e 63 74 69 6f 6e 20 r is a function 0000c070: 65 78 70 72 65 73 73 69 6f 6e 2e 0a 20 20 20 20 expression.. 0000c080: 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e */. function 0000c090: 20 68 61 73 4a 53 44 6f 63 50 61 72 61 6d 65 74 hasJSDocParamet 0000c0a0: 65 72 54 61 67 73 28 6e 6f 64 65 29 20 7b 0a 20 erTags(node) {. 0000c0b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 21 return !! 0000c0c0: 67 65 74 46 69 72 73 74 4a 53 44 6f 63 54 61 67 getFirstJSDocTag 0000c0d0: 28 6e 6f 64 65 2c 20 74 73 2e 69 73 4a 53 44 6f (node, ts.isJSDo 0000c0e0: 63 50 61 72 61 6d 65 74 65 72 54 61 67 29 3b 0a cParameterTag);. 0000c0f0: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 68 61 73 }. ts.has 0000c100: 4a 53 44 6f 63 50 61 72 61 6d 65 74 65 72 54 61 JSDocParameterTa 0000c110: 67 73 20 3d 20 68 61 73 4a 53 44 6f 63 50 61 72 gs = hasJSDocPar 0000c120: 61 6d 65 74 65 72 54 61 67 73 3b 0a 20 20 20 20 ameterTags;. 0000c130: 2f 2a 2a 20 47 65 74 73 20 74 68 65 20 4a 53 44 /** Gets the JSD 0000c140: 6f 63 20 61 75 67 6d 65 6e 74 73 20 74 61 67 20 oc augments tag 0000c150: 66 6f 72 20 74 68 65 20 6e 6f 64 65 20 69 66 20 for the node if 0000c160: 70 72 65 73 65 6e 74 20 2a 2f 0a 20 20 20 20 66 present */. f 0000c170: 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 unction getJSDoc 0000c180: 41 75 67 6d 65 6e 74 73 54 61 67 28 6e 6f 64 65 AugmentsTag(node 0000c190: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0000c1a0: 72 6e 20 67 65 74 46 69 72 73 74 4a 53 44 6f 63 rn getFirstJSDoc 0000c1b0: 54 61 67 28 6e 6f 64 65 2c 20 74 73 2e 69 73 4a Tag(node, ts.isJ 0000c1c0: 53 44 6f 63 41 75 67 6d 65 6e 74 73 54 61 67 29 SDocAugmentsTag) 0000c1d0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 ;. }. ts.g 0000c1e0: 65 74 4a 53 44 6f 63 41 75 67 6d 65 6e 74 73 54 etJSDocAugmentsT 0000c1f0: 61 67 20 3d 20 67 65 74 4a 53 44 6f 63 41 75 67 ag = getJSDocAug 0000c200: 6d 65 6e 74 73 54 61 67 3b 0a 20 20 20 20 2f 2a mentsTag;. /* 0000c210: 2a 20 47 65 74 73 20 74 68 65 20 4a 53 44 6f 63 * Gets the JSDoc 0000c220: 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74 61 67 73 implements tags 0000c230: 20 66 6f 72 20 74 68 65 20 6e 6f 64 65 20 69 66 for the node if 0000c240: 20 70 72 65 73 65 6e 74 20 2a 2f 0a 20 20 20 20 present */. 0000c250: 66 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f function getJSDo 0000c260: 63 49 6d 70 6c 65 6d 65 6e 74 73 54 61 67 73 28 cImplementsTags( 0000c270: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 0000c280: 72 65 74 75 72 6e 20 67 65 74 41 6c 6c 4a 53 44 return getAllJSD 0000c290: 6f 63 54 61 67 73 28 6e 6f 64 65 2c 20 74 73 2e ocTags(node, ts. 0000c2a0: 69 73 4a 53 44 6f 63 49 6d 70 6c 65 6d 65 6e 74 isJSDocImplement 0000c2b0: 73 54 61 67 29 3b 0a 20 20 20 20 7d 0a 20 20 20 sTag);. }. 0000c2c0: 20 74 73 2e 67 65 74 4a 53 44 6f 63 49 6d 70 6c ts.getJSDocImpl 0000c2d0: 65 6d 65 6e 74 73 54 61 67 73 20 3d 20 67 65 74 ementsTags = get 0000c2e0: 4a 53 44 6f 63 49 6d 70 6c 65 6d 65 6e 74 73 54 JSDocImplementsT 0000c2f0: 61 67 73 3b 0a 20 20 20 20 2f 2a 2a 20 47 65 74 ags;. /** Get 0000c300: 73 20 74 68 65 20 4a 53 44 6f 63 20 63 6c 61 73 s the JSDoc clas 0000c310: 73 20 74 61 67 20 66 6f 72 20 74 68 65 20 6e 6f s tag for the no 0000c320: 64 65 20 69 66 20 70 72 65 73 65 6e 74 20 2a 2f de if present */ 0000c330: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 0000c340: 74 4a 53 44 6f 63 43 6c 61 73 73 54 61 67 28 6e tJSDocClassTag(n 0000c350: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 0000c360: 65 74 75 72 6e 20 67 65 74 46 69 72 73 74 4a 53 eturn getFirstJS 0000c370: 44 6f 63 54 61 67 28 6e 6f 64 65 2c 20 74 73 2e DocTag(node, ts. 0000c380: 69 73 4a 53 44 6f 63 43 6c 61 73 73 54 61 67 29 isJSDocClassTag) 0000c390: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 ;. }. ts.g 0000c3a0: 65 74 4a 53 44 6f 63 43 6c 61 73 73 54 61 67 20 etJSDocClassTag 0000c3b0: 3d 20 67 65 74 4a 53 44 6f 63 43 6c 61 73 73 54 = getJSDocClassT 0000c3c0: 61 67 3b 0a 20 20 20 20 2f 2a 2a 20 47 65 74 73 ag;. /** Gets 0000c3d0: 20 74 68 65 20 4a 53 44 6f 63 20 70 75 62 6c 69 the JSDoc publi 0000c3e0: 63 20 74 61 67 20 66 6f 72 20 74 68 65 20 6e 6f c tag for the no 0000c3f0: 64 65 20 69 66 20 70 72 65 73 65 6e 74 20 2a 2f de if present */ 0000c400: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 0000c410: 74 4a 53 44 6f 63 50 75 62 6c 69 63 54 61 67 28 tJSDocPublicTag( 0000c420: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 0000c430: 72 65 74 75 72 6e 20 67 65 74 46 69 72 73 74 4a return getFirstJ 0000c440: 53 44 6f 63 54 61 67 28 6e 6f 64 65 2c 20 74 73 SDocTag(node, ts 0000c450: 2e 69 73 4a 53 44 6f 63 50 75 62 6c 69 63 54 61 .isJSDocPublicTa 0000c460: 67 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 g);. }. ts 0000c470: 2e 67 65 74 4a 53 44 6f 63 50 75 62 6c 69 63 54 .getJSDocPublicT 0000c480: 61 67 20 3d 20 67 65 74 4a 53 44 6f 63 50 75 62 ag = getJSDocPub 0000c490: 6c 69 63 54 61 67 3b 0a 20 20 20 20 2f 2a 40 69 licTag;. /*@i 0000c4a0: 6e 74 65 72 6e 61 6c 2a 2f 0a 20 20 20 20 66 75 nternal*/. fu 0000c4b0: 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 50 nction getJSDocP 0000c4c0: 75 62 6c 69 63 54 61 67 4e 6f 43 61 63 68 65 28 ublicTagNoCache( 0000c4d0: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 0000c4e0: 72 65 74 75 72 6e 20 67 65 74 46 69 72 73 74 4a return getFirstJ 0000c4f0: 53 44 6f 63 54 61 67 28 6e 6f 64 65 2c 20 74 73 SDocTag(node, ts 0000c500: 2e 69 73 4a 53 44 6f 63 50 75 62 6c 69 63 54 61 .isJSDocPublicTa 0000c510: 67 2c 20 2f 2a 6e 6f 43 61 63 68 65 2a 2f 20 74 g, /*noCache*/ t 0000c520: 72 75 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 rue);. }. 0000c530: 74 73 2e 67 65 74 4a 53 44 6f 63 50 75 62 6c 69 ts.getJSDocPubli 0000c540: 63 54 61 67 4e 6f 43 61 63 68 65 20 3d 20 67 65 cTagNoCache = ge 0000c550: 74 4a 53 44 6f 63 50 75 62 6c 69 63 54 61 67 4e tJSDocPublicTagN 0000c560: 6f 43 61 63 68 65 3b 0a 20 20 20 20 2f 2a 2a 20 oCache;. /** 0000c570: 47 65 74 73 20 74 68 65 20 4a 53 44 6f 63 20 70 Gets the JSDoc p 0000c580: 72 69 76 61 74 65 20 74 61 67 20 66 6f 72 20 74 rivate tag for t 0000c590: 68 65 20 6e 6f 64 65 20 69 66 20 70 72 65 73 65 he node if prese 0000c5a0: 6e 74 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 nt */. functi 0000c5b0: 6f 6e 20 67 65 74 4a 53 44 6f 63 50 72 69 76 61 on getJSDocPriva 0000c5c0: 74 65 54 61 67 28 6e 6f 64 65 29 20 7b 0a 20 20 teTag(node) {. 0000c5d0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 return get 0000c5e0: 46 69 72 73 74 4a 53 44 6f 63 54 61 67 28 6e 6f FirstJSDocTag(no 0000c5f0: 64 65 2c 20 74 73 2e 69 73 4a 53 44 6f 63 50 72 de, ts.isJSDocPr 0000c600: 69 76 61 74 65 54 61 67 29 3b 0a 20 20 20 20 7d ivateTag);. } 0000c610: 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 44 6f 63 . ts.getJSDoc 0000c620: 50 72 69 76 61 74 65 54 61 67 20 3d 20 67 65 74 PrivateTag = get 0000c630: 4a 53 44 6f 63 50 72 69 76 61 74 65 54 61 67 3b JSDocPrivateTag; 0000c640: 0a 20 20 20 20 2f 2a 40 69 6e 74 65 72 6e 61 6c . /*@internal 0000c650: 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 */. function 0000c660: 67 65 74 4a 53 44 6f 63 50 72 69 76 61 74 65 54 getJSDocPrivateT 0000c670: 61 67 4e 6f 43 61 63 68 65 28 6e 6f 64 65 29 20 agNoCache(node) 0000c680: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 0000c690: 20 67 65 74 46 69 72 73 74 4a 53 44 6f 63 54 61 getFirstJSDocTa 0000c6a0: 67 28 6e 6f 64 65 2c 20 74 73 2e 69 73 4a 53 44 g(node, ts.isJSD 0000c6b0: 6f 63 50 72 69 76 61 74 65 54 61 67 2c 20 2f 2a ocPrivateTag, /* 0000c6c0: 6e 6f 43 61 63 68 65 2a 2f 20 74 72 75 65 29 3b noCache*/ true); 0000c6d0: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 . }. ts.ge 0000c6e0: 74 4a 53 44 6f 63 50 72 69 76 61 74 65 54 61 67 tJSDocPrivateTag 0000c6f0: 4e 6f 43 61 63 68 65 20 3d 20 67 65 74 4a 53 44 NoCache = getJSD 0000c700: 6f 63 50 72 69 76 61 74 65 54 61 67 4e 6f 43 61 ocPrivateTagNoCa 0000c710: 63 68 65 3b 0a 20 20 20 20 2f 2a 2a 20 47 65 74 che;. /** Get 0000c720: 73 20 74 68 65 20 4a 53 44 6f 63 20 70 72 6f 74 s the JSDoc prot 0000c730: 65 63 74 65 64 20 74 61 67 20 66 6f 72 20 74 68 ected tag for th 0000c740: 65 20 6e 6f 64 65 20 69 66 20 70 72 65 73 65 6e e node if presen 0000c750: 74 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f t */. functio 0000c760: 6e 20 67 65 74 4a 53 44 6f 63 50 72 6f 74 65 63 n getJSDocProtec 0000c770: 74 65 64 54 61 67 28 6e 6f 64 65 29 20 7b 0a 20 tedTag(node) {. 0000c780: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 return ge 0000c790: 74 46 69 72 73 74 4a 53 44 6f 63 54 61 67 28 6e tFirstJSDocTag(n 0000c7a0: 6f 64 65 2c 20 74 73 2e 69 73 4a 53 44 6f 63 50 ode, ts.isJSDocP 0000c7b0: 72 6f 74 65 63 74 65 64 54 61 67 29 3b 0a 20 20 rotectedTag);. 0000c7c0: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 }. ts.getJS 0000c7d0: 44 6f 63 50 72 6f 74 65 63 74 65 64 54 61 67 20 DocProtectedTag 0000c7e0: 3d 20 67 65 74 4a 53 44 6f 63 50 72 6f 74 65 63 = getJSDocProtec 0000c7f0: 74 65 64 54 61 67 3b 0a 20 20 20 20 2f 2a 40 69 tedTag;. /*@i 0000c800: 6e 74 65 72 6e 61 6c 2a 2f 0a 20 20 20 20 66 75 nternal*/. fu 0000c810: 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 50 nction getJSDocP 0000c820: 72 6f 74 65 63 74 65 64 54 61 67 4e 6f 43 61 63 rotectedTagNoCac 0000c830: 68 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 he(node) {. 0000c840: 20 20 20 72 65 74 75 72 6e 20 67 65 74 46 69 72 return getFir 0000c850: 73 74 4a 53 44 6f 63 54 61 67 28 6e 6f 64 65 2c stJSDocTag(node, 0000c860: 20 74 73 2e 69 73 4a 53 44 6f 63 50 72 6f 74 65 ts.isJSDocProte 0000c870: 63 74 65 64 54 61 67 2c 20 2f 2a 6e 6f 43 61 63 ctedTag, /*noCac 0000c880: 68 65 2a 2f 20 74 72 75 65 29 3b 0a 20 20 20 20 he*/ true);. 0000c890: 7d 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 44 6f }. ts.getJSDo 0000c8a0: 63 50 72 6f 74 65 63 74 65 64 54 61 67 4e 6f 43 cProtectedTagNoC 0000c8b0: 61 63 68 65 20 3d 20 67 65 74 4a 53 44 6f 63 50 ache = getJSDocP 0000c8c0: 72 6f 74 65 63 74 65 64 54 61 67 4e 6f 43 61 63 rotectedTagNoCac 0000c8d0: 68 65 3b 0a 20 20 20 20 2f 2a 2a 20 47 65 74 73 he;. /** Gets 0000c8e0: 20 74 68 65 20 4a 53 44 6f 63 20 70 72 6f 74 65 the JSDoc prote 0000c8f0: 63 74 65 64 20 74 61 67 20 66 6f 72 20 74 68 65 cted tag for the 0000c900: 20 6e 6f 64 65 20 69 66 20 70 72 65 73 65 6e 74 node if present 0000c910: 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e */. function 0000c920: 20 67 65 74 4a 53 44 6f 63 52 65 61 64 6f 6e 6c getJSDocReadonl 0000c930: 79 54 61 67 28 6e 6f 64 65 29 20 7b 0a 20 20 20 yTag(node) {. 0000c940: 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 46 return getF 0000c950: 69 72 73 74 4a 53 44 6f 63 54 61 67 28 6e 6f 64 irstJSDocTag(nod 0000c960: 65 2c 20 74 73 2e 69 73 4a 53 44 6f 63 52 65 61 e, ts.isJSDocRea 0000c970: 64 6f 6e 6c 79 54 61 67 29 3b 0a 20 20 20 20 7d donlyTag);. } 0000c980: 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 44 6f 63 . ts.getJSDoc 0000c990: 52 65 61 64 6f 6e 6c 79 54 61 67 20 3d 20 67 65 ReadonlyTag = ge 0000c9a0: 74 4a 53 44 6f 63 52 65 61 64 6f 6e 6c 79 54 61 tJSDocReadonlyTa 0000c9b0: 67 3b 0a 20 20 20 20 2f 2a 40 69 6e 74 65 72 6e g;. /*@intern 0000c9c0: 61 6c 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f al*/. functio 0000c9d0: 6e 20 67 65 74 4a 53 44 6f 63 52 65 61 64 6f 6e n getJSDocReadon 0000c9e0: 6c 79 54 61 67 4e 6f 43 61 63 68 65 28 6e 6f 64 lyTagNoCache(nod 0000c9f0: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 e) {. ret 0000ca00: 75 72 6e 20 67 65 74 46 69 72 73 74 4a 53 44 6f urn getFirstJSDo 0000ca10: 63 54 61 67 28 6e 6f 64 65 2c 20 74 73 2e 69 73 cTag(node, ts.is 0000ca20: 4a 53 44 6f 63 52 65 61 64 6f 6e 6c 79 54 61 67 JSDocReadonlyTag 0000ca30: 2c 20 2f 2a 6e 6f 43 61 63 68 65 2a 2f 20 74 72 , /*noCache*/ tr 0000ca40: 75 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 ue);. }. t 0000ca50: 73 2e 67 65 74 4a 53 44 6f 63 52 65 61 64 6f 6e s.getJSDocReadon 0000ca60: 6c 79 54 61 67 4e 6f 43 61 63 68 65 20 3d 20 67 lyTagNoCache = g 0000ca70: 65 74 4a 53 44 6f 63 52 65 61 64 6f 6e 6c 79 54 etJSDocReadonlyT 0000ca80: 61 67 4e 6f 43 61 63 68 65 3b 0a 20 20 20 20 66 agNoCache;. f 0000ca90: 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 unction getJSDoc 0000caa0: 4f 76 65 72 72 69 64 65 54 61 67 4e 6f 43 61 63 OverrideTagNoCac 0000cab0: 68 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 he(node) {. 0000cac0: 20 20 20 72 65 74 75 72 6e 20 67 65 74 46 69 72 return getFir 0000cad0: 73 74 4a 53 44 6f 63 54 61 67 28 6e 6f 64 65 2c stJSDocTag(node, 0000cae0: 20 74 73 2e 69 73 4a 53 44 6f 63 4f 76 65 72 72 ts.isJSDocOverr 0000caf0: 69 64 65 54 61 67 2c 20 2f 2a 6e 6f 43 61 63 68 ideTag, /*noCach 0000cb00: 65 2a 2f 20 74 72 75 65 29 3b 0a 20 20 20 20 7d e*/ true);. } 0000cb10: 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 44 6f 63 . ts.getJSDoc 0000cb20: 4f 76 65 72 72 69 64 65 54 61 67 4e 6f 43 61 63 OverrideTagNoCac 0000cb30: 68 65 20 3d 20 67 65 74 4a 53 44 6f 63 4f 76 65 he = getJSDocOve 0000cb40: 72 72 69 64 65 54 61 67 4e 6f 43 61 63 68 65 3b rrideTagNoCache; 0000cb50: 0a 20 20 20 20 2f 2a 2a 20 47 65 74 73 20 74 68 . /** Gets th 0000cb60: 65 20 4a 53 44 6f 63 20 64 65 70 72 65 63 61 74 e JSDoc deprecat 0000cb70: 65 64 20 74 61 67 20 66 6f 72 20 74 68 65 20 6e ed tag for the n 0000cb80: 6f 64 65 20 69 66 20 70 72 65 73 65 6e 74 20 2a ode if present * 0000cb90: 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 /. function g 0000cba0: 65 74 4a 53 44 6f 63 44 65 70 72 65 63 61 74 65 etJSDocDeprecate 0000cbb0: 64 54 61 67 28 6e 6f 64 65 29 20 7b 0a 20 20 20 dTag(node) {. 0000cbc0: 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 46 return getF 0000cbd0: 69 72 73 74 4a 53 44 6f 63 54 61 67 28 6e 6f 64 irstJSDocTag(nod 0000cbe0: 65 2c 20 74 73 2e 69 73 4a 53 44 6f 63 44 65 70 e, ts.isJSDocDep 0000cbf0: 72 65 63 61 74 65 64 54 61 67 29 3b 0a 20 20 20 recatedTag);. 0000cc00: 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 44 }. ts.getJSD 0000cc10: 6f 63 44 65 70 72 65 63 61 74 65 64 54 61 67 20 ocDeprecatedTag 0000cc20: 3d 20 67 65 74 4a 53 44 6f 63 44 65 70 72 65 63 = getJSDocDeprec 0000cc30: 61 74 65 64 54 61 67 3b 0a 20 20 20 20 2f 2a 40 atedTag;. /*@ 0000cc40: 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 internal */. 0000cc50: 66 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f function getJSDo 0000cc60: 63 44 65 70 72 65 63 61 74 65 64 54 61 67 4e 6f cDeprecatedTagNo 0000cc70: 43 61 63 68 65 28 6e 6f 64 65 29 20 7b 0a 20 20 Cache(node) {. 0000cc80: 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 return get 0000cc90: 46 69 72 73 74 4a 53 44 6f 63 54 61 67 28 6e 6f FirstJSDocTag(no 0000cca0: 64 65 2c 20 74 73 2e 69 73 4a 53 44 6f 63 44 65 de, ts.isJSDocDe 0000ccb0: 70 72 65 63 61 74 65 64 54 61 67 2c 20 2f 2a 6e precatedTag, /*n 0000ccc0: 6f 43 61 63 68 65 2a 2f 20 74 72 75 65 29 3b 0a oCache*/ true);. 0000ccd0: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 }. ts.get 0000cce0: 4a 53 44 6f 63 44 65 70 72 65 63 61 74 65 64 54 JSDocDeprecatedT 0000ccf0: 61 67 4e 6f 43 61 63 68 65 20 3d 20 67 65 74 4a agNoCache = getJ 0000cd00: 53 44 6f 63 44 65 70 72 65 63 61 74 65 64 54 61 SDocDeprecatedTa 0000cd10: 67 4e 6f 43 61 63 68 65 3b 0a 20 20 20 20 2f 2a gNoCache;. /* 0000cd20: 2a 20 47 65 74 73 20 74 68 65 20 4a 53 44 6f 63 * Gets the JSDoc 0000cd30: 20 65 6e 75 6d 20 74 61 67 20 66 6f 72 20 74 68 enum tag for th 0000cd40: 65 20 6e 6f 64 65 20 69 66 20 70 72 65 73 65 6e e node if presen 0000cd50: 74 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f t */. functio 0000cd60: 6e 20 67 65 74 4a 53 44 6f 63 45 6e 75 6d 54 61 n getJSDocEnumTa 0000cd70: 67 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 g(node) {. 0000cd80: 20 20 72 65 74 75 72 6e 20 67 65 74 46 69 72 73 return getFirs 0000cd90: 74 4a 53 44 6f 63 54 61 67 28 6e 6f 64 65 2c 20 tJSDocTag(node, 0000cda0: 74 73 2e 69 73 4a 53 44 6f 63 45 6e 75 6d 54 61 ts.isJSDocEnumTa 0000cdb0: 67 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 g);. }. ts 0000cdc0: 2e 67 65 74 4a 53 44 6f 63 45 6e 75 6d 54 61 67 .getJSDocEnumTag 0000cdd0: 20 3d 20 67 65 74 4a 53 44 6f 63 45 6e 75 6d 54 = getJSDocEnumT 0000cde0: 61 67 3b 0a 20 20 20 20 2f 2a 2a 20 47 65 74 73 ag;. /** Gets 0000cdf0: 20 74 68 65 20 4a 53 44 6f 63 20 74 68 69 73 20 the JSDoc this 0000ce00: 74 61 67 20 66 6f 72 20 74 68 65 20 6e 6f 64 65 tag for the node 0000ce10: 20 69 66 20 70 72 65 73 65 6e 74 20 2a 2f 0a 20 if present */. 0000ce20: 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4a function getJ 0000ce30: 53 44 6f 63 54 68 69 73 54 61 67 28 6e 6f 64 65 SDocThisTag(node 0000ce40: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0000ce50: 72 6e 20 67 65 74 46 69 72 73 74 4a 53 44 6f 63 rn getFirstJSDoc 0000ce60: 54 61 67 28 6e 6f 64 65 2c 20 74 73 2e 69 73 4a Tag(node, ts.isJ 0000ce70: 53 44 6f 63 54 68 69 73 54 61 67 29 3b 0a 20 20 SDocThisTag);. 0000ce80: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 }. ts.getJS 0000ce90: 44 6f 63 54 68 69 73 54 61 67 20 3d 20 67 65 74 DocThisTag = get 0000cea0: 4a 53 44 6f 63 54 68 69 73 54 61 67 3b 0a 20 20 JSDocThisTag;. 0000ceb0: 20 20 2f 2a 2a 20 47 65 74 73 20 74 68 65 20 4a /** Gets the J 0000cec0: 53 44 6f 63 20 72 65 74 75 72 6e 20 74 61 67 20 SDoc return tag 0000ced0: 66 6f 72 20 74 68 65 20 6e 6f 64 65 20 69 66 20 for the node if 0000cee0: 70 72 65 73 65 6e 74 20 2a 2f 0a 20 20 20 20 66 present */. f 0000cef0: 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 unction getJSDoc 0000cf00: 52 65 74 75 72 6e 54 61 67 28 6e 6f 64 65 29 20 ReturnTag(node) 0000cf10: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 0000cf20: 20 67 65 74 46 69 72 73 74 4a 53 44 6f 63 54 61 getFirstJSDocTa 0000cf30: 67 28 6e 6f 64 65 2c 20 74 73 2e 69 73 4a 53 44 g(node, ts.isJSD 0000cf40: 6f 63 52 65 74 75 72 6e 54 61 67 29 3b 0a 20 20 ocReturnTag);. 0000cf50: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 }. ts.getJS 0000cf60: 44 6f 63 52 65 74 75 72 6e 54 61 67 20 3d 20 67 DocReturnTag = g 0000cf70: 65 74 4a 53 44 6f 63 52 65 74 75 72 6e 54 61 67 etJSDocReturnTag 0000cf80: 3b 0a 20 20 20 20 2f 2a 2a 20 47 65 74 73 20 74 ;. /** Gets t 0000cf90: 68 65 20 4a 53 44 6f 63 20 74 65 6d 70 6c 61 74 he JSDoc templat 0000cfa0: 65 20 74 61 67 20 66 6f 72 20 74 68 65 20 6e 6f e tag for the no 0000cfb0: 64 65 20 69 66 20 70 72 65 73 65 6e 74 20 2a 2f de if present */ 0000cfc0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 0000cfd0: 74 4a 53 44 6f 63 54 65 6d 70 6c 61 74 65 54 61 tJSDocTemplateTa 0000cfe0: 67 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 g(node) {. 0000cff0: 20 20 72 65 74 75 72 6e 20 67 65 74 46 69 72 73 return getFirs 0000d000: 74 4a 53 44 6f 63 54 61 67 28 6e 6f 64 65 2c 20 tJSDocTag(node, 0000d010: 74 73 2e 69 73 4a 53 44 6f 63 54 65 6d 70 6c 61 ts.isJSDocTempla 0000d020: 74 65 54 61 67 29 3b 0a 20 20 20 20 7d 0a 20 20 teTag);. }. 0000d030: 20 20 74 73 2e 67 65 74 4a 53 44 6f 63 54 65 6d ts.getJSDocTem 0000d040: 70 6c 61 74 65 54 61 67 20 3d 20 67 65 74 4a 53 plateTag = getJS 0000d050: 44 6f 63 54 65 6d 70 6c 61 74 65 54 61 67 3b 0a DocTemplateTag;. 0000d060: 20 20 20 20 2f 2a 2a 20 47 65 74 73 20 74 68 65 /** Gets the 0000d070: 20 4a 53 44 6f 63 20 74 79 70 65 20 74 61 67 20 JSDoc type tag 0000d080: 66 6f 72 20 74 68 65 20 6e 6f 64 65 20 69 66 20 for the node if 0000d090: 70 72 65 73 65 6e 74 20 61 6e 64 20 76 61 6c 69 present and vali 0000d0a0: 64 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f d */. functio 0000d0b0: 6e 20 67 65 74 4a 53 44 6f 63 54 79 70 65 54 61 n getJSDocTypeTa 0000d0c0: 67 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 g(node) {. 0000d0d0: 20 20 2f 2f 20 57 65 20 73 68 6f 75 6c 64 20 68 // We should h 0000d0e0: 61 76 65 20 61 6c 72 65 61 64 79 20 69 73 73 75 ave already issu 0000d0f0: 65 64 20 61 6e 20 65 72 72 6f 72 20 69 66 20 74 ed an error if t 0000d100: 68 65 72 65 20 77 65 72 65 20 6d 75 6c 74 69 70 here were multip 0000d110: 6c 65 20 74 79 70 65 20 6a 73 64 6f 63 73 2c 20 le type jsdocs, 0000d120: 73 6f 20 6a 75 73 74 20 75 73 65 20 74 68 65 20 so just use the 0000d130: 66 69 72 73 74 20 6f 6e 65 2e 0a 20 20 20 20 20 first one.. 0000d140: 20 20 20 76 61 72 20 74 61 67 20 3d 20 67 65 74 var tag = get 0000d150: 46 69 72 73 74 4a 53 44 6f 63 54 61 67 28 6e 6f FirstJSDocTag(no 0000d160: 64 65 2c 20 74 73 2e 69 73 4a 53 44 6f 63 54 79 de, ts.isJSDocTy 0000d170: 70 65 54 61 67 29 3b 0a 20 20 20 20 20 20 20 20 peTag);. 0000d180: 69 66 20 28 74 61 67 20 26 26 20 74 61 67 2e 74 if (tag && tag.t 0000d190: 79 70 65 45 78 70 72 65 73 73 69 6f 6e 20 26 26 ypeExpression && 0000d1a0: 20 74 61 67 2e 74 79 70 65 45 78 70 72 65 73 73 tag.typeExpress 0000d1b0: 69 6f 6e 2e 74 79 70 65 29 20 7b 0a 20 20 20 20 ion.type) {. 0000d1c0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 0000d1d0: 61 67 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 ag;. }. 0000d1e0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 6e 64 return und 0000d1f0: 65 66 69 6e 65 64 3b 0a 20 20 20 20 7d 0a 20 20 efined;. }. 0000d200: 20 20 74 73 2e 67 65 74 4a 53 44 6f 63 54 79 70 ts.getJSDocTyp 0000d210: 65 54 61 67 20 3d 20 67 65 74 4a 53 44 6f 63 54 eTag = getJSDocT 0000d220: 79 70 65 54 61 67 3b 0a 20 20 20 20 2f 2a 2a 0a ypeTag;. /**. 0000d230: 20 20 20 20 20 2a 20 47 65 74 73 20 74 68 65 20 * Gets the 0000d240: 74 79 70 65 20 6e 6f 64 65 20 66 6f 72 20 74 68 type node for th 0000d250: 65 20 6e 6f 64 65 20 69 66 20 70 72 6f 76 69 64 e node if provid 0000d260: 65 64 20 76 69 61 20 4a 53 44 6f 63 2e 0a 20 20 ed via JSDoc.. 0000d270: 20 20 20 2a 0a 20 20 20 20 20 2a 20 40 72 65 6d *. * @rem 0000d280: 61 72 6b 73 20 54 68 65 20 73 65 61 72 63 68 20 arks The search 0000d290: 69 6e 63 6c 75 64 65 73 20 61 6e 79 20 4a 53 44 includes any JSD 0000d2a0: 6f 63 20 70 61 72 61 6d 20 74 61 67 20 74 68 61 oc param tag tha 0000d2b0: 74 20 72 65 6c 61 74 65 73 0a 20 20 20 20 20 2a t relates. * 0000d2c0: 20 74 6f 20 74 68 65 20 70 72 6f 76 69 64 65 64 to the provided 0000d2d0: 20 70 61 72 61 6d 65 74 65 72 2c 20 66 6f 72 20 parameter, for 0000d2e0: 65 78 61 6d 70 6c 65 20 61 20 74 79 70 65 20 74 example a type t 0000d2f0: 61 67 20 6f 6e 20 74 68 65 0a 20 20 20 20 20 2a ag on the. * 0000d300: 20 70 61 72 61 6d 65 74 65 72 20 69 74 73 65 6c parameter itsel 0000d310: 66 2c 20 6f 72 20 61 20 70 61 72 61 6d 20 74 61 f, or a param ta 0000d320: 67 20 6f 6e 20 61 20 63 6f 6e 74 61 69 6e 69 6e g on a containin 0000d330: 67 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 20 20 g function. 0000d340: 2a 20 65 78 70 72 65 73 73 69 6f 6e 2c 20 6f 72 * expression, or 0000d350: 20 61 20 70 61 72 61 6d 20 74 61 67 20 6f 6e 20 a param tag on 0000d360: 61 20 76 61 72 69 61 62 6c 65 20 64 65 63 6c 61 a variable decla 0000d370: 72 61 74 69 6f 6e 20 77 68 6f 73 65 0a 20 20 20 ration whose. 0000d380: 20 20 2a 20 69 6e 69 74 69 61 6c 69 7a 65 72 20 * initializer 0000d390: 69 73 20 74 68 65 20 63 6f 6e 74 61 69 6e 69 6e is the containin 0000d3a0: 67 20 66 75 6e 63 74 69 6f 6e 2e 20 54 68 65 20 g function. The 0000d3b0: 74 61 67 73 20 63 6c 6f 73 65 73 74 20 74 6f 20 tags closest to 0000d3c0: 74 68 65 0a 20 20 20 20 20 2a 20 6e 6f 64 65 20 the. * node 0000d3d0: 61 72 65 20 65 78 61 6d 69 6e 65 64 20 66 69 72 are examined fir 0000d3e0: 73 74 2c 20 73 6f 20 69 6e 20 74 68 65 20 70 72 st, so in the pr 0000d3f0: 65 76 69 6f 75 73 20 65 78 61 6d 70 6c 65 2c 20 evious example, 0000d400: 74 68 65 20 74 79 70 65 0a 20 20 20 20 20 2a 20 the type. * 0000d410: 74 61 67 20 64 69 72 65 63 74 6c 79 20 6f 6e 20 tag directly on 0000d420: 74 68 65 20 6e 6f 64 65 20 77 6f 75 6c 64 20 62 the node would b 0000d430: 65 20 72 65 74 75 72 6e 65 64 2e 0a 20 20 20 20 e returned.. 0000d440: 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e */. function 0000d450: 20 67 65 74 4a 53 44 6f 63 54 79 70 65 28 6e 6f getJSDocType(no 0000d460: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 de) {. va 0000d470: 72 20 74 61 67 20 3d 20 67 65 74 46 69 72 73 74 r tag = getFirst 0000d480: 4a 53 44 6f 63 54 61 67 28 6e 6f 64 65 2c 20 74 JSDocTag(node, t 0000d490: 73 2e 69 73 4a 53 44 6f 63 54 79 70 65 54 61 67 s.isJSDocTypeTag 0000d4a0: 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 );. if (! 0000d4b0: 74 61 67 20 26 26 20 74 73 2e 69 73 50 61 72 61 tag && ts.isPara 0000d4c0: 6d 65 74 65 72 28 6e 6f 64 65 29 29 20 7b 0a 20 meter(node)) {. 0000d4d0: 20 20 20 20 20 20 20 20 20 20 20 74 61 67 20 3d tag = 0000d4e0: 20 74 73 2e 66 69 6e 64 28 67 65 74 4a 53 44 6f ts.find(getJSDo 0000d4f0: 63 50 61 72 61 6d 65 74 65 72 54 61 67 73 28 6e cParameterTags(n 0000d500: 6f 64 65 29 2c 20 66 75 6e 63 74 69 6f 6e 20 28 ode), function ( 0000d510: 74 61 67 29 20 7b 20 72 65 74 75 72 6e 20 21 21 tag) { return !! 0000d520: 74 61 67 2e 74 79 70 65 45 78 70 72 65 73 73 69 tag.typeExpressi 0000d530: 6f 6e 3b 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 on; });. 0000d540: 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e }. return 0000d550: 20 74 61 67 20 26 26 20 74 61 67 2e 74 79 70 65 tag && tag.type 0000d560: 45 78 70 72 65 73 73 69 6f 6e 20 26 26 20 74 61 Expression && ta 0000d570: 67 2e 74 79 70 65 45 78 70 72 65 73 73 69 6f 6e g.typeExpression 0000d580: 2e 74 79 70 65 3b 0a 20 20 20 20 7d 0a 20 20 20 .type;. }. 0000d590: 20 74 73 2e 67 65 74 4a 53 44 6f 63 54 79 70 65 ts.getJSDocType 0000d5a0: 20 3d 20 67 65 74 4a 53 44 6f 63 54 79 70 65 3b = getJSDocType; 0000d5b0: 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 . /**. * 0000d5c0: 47 65 74 73 20 74 68 65 20 72 65 74 75 72 6e 20 Gets the return 0000d5d0: 74 79 70 65 20 6e 6f 64 65 20 66 6f 72 20 74 68 type node for th 0000d5e0: 65 20 6e 6f 64 65 20 69 66 20 70 72 6f 76 69 64 e node if provid 0000d5f0: 65 64 20 76 69 61 20 4a 53 44 6f 63 20 72 65 74 ed via JSDoc ret 0000d600: 75 72 6e 20 74 61 67 20 6f 72 20 74 79 70 65 20 urn tag or type 0000d610: 74 61 67 2e 0a 20 20 20 20 20 2a 0a 20 20 20 20 tag.. *. 0000d620: 20 2a 20 40 72 65 6d 61 72 6b 73 20 60 67 65 74 * @remarks `get 0000d630: 4a 53 44 6f 63 52 65 74 75 72 6e 54 61 67 60 20 JSDocReturnTag` 0000d640: 6a 75 73 74 20 67 65 74 73 20 74 68 65 20 77 68 just gets the wh 0000d650: 6f 6c 65 20 4a 53 44 6f 63 20 74 61 67 2e 20 54 ole JSDoc tag. T 0000d660: 68 69 73 20 66 75 6e 63 74 69 6f 6e 0a 20 20 20 his function. 0000d670: 20 20 2a 20 67 65 74 73 20 74 68 65 20 74 79 70 * gets the typ 0000d680: 65 20 66 72 6f 6d 20 69 6e 73 69 64 65 20 74 68 e from inside th 0000d690: 65 20 62 72 61 63 65 73 2c 20 61 66 74 65 72 20 e braces, after 0000d6a0: 74 68 65 20 66 61 74 20 61 72 72 6f 77 2c 20 65 the fat arrow, e 0000d6b0: 74 63 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 tc.. */. 0000d6c0: 66 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f function getJSDo 0000d6d0: 63 52 65 74 75 72 6e 54 79 70 65 28 6e 6f 64 65 cReturnType(node 0000d6e0: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 0000d6f0: 72 65 74 75 72 6e 54 61 67 20 3d 20 67 65 74 4a returnTag = getJ 0000d700: 53 44 6f 63 52 65 74 75 72 6e 54 61 67 28 6e 6f SDocReturnTag(no 0000d710: 64 65 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 de);. if 0000d720: 28 72 65 74 75 72 6e 54 61 67 20 26 26 20 72 65 (returnTag && re 0000d730: 74 75 72 6e 54 61 67 2e 74 79 70 65 45 78 70 72 turnTag.typeExpr 0000d740: 65 73 73 69 6f 6e 29 20 7b 0a 20 20 20 20 20 20 ession) {. 0000d750: 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 74 return ret 0000d760: 75 72 6e 54 61 67 2e 74 79 70 65 45 78 70 72 65 urnTag.typeExpre 0000d770: 73 73 69 6f 6e 2e 74 79 70 65 3b 0a 20 20 20 20 ssion.type;. 0000d780: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 76 61 }. va 0000d790: 72 20 74 79 70 65 54 61 67 20 3d 20 67 65 74 4a r typeTag = getJ 0000d7a0: 53 44 6f 63 54 79 70 65 54 61 67 28 6e 6f 64 65 SDocTypeTag(node 0000d7b0: 29 3b 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 );. if (t 0000d7c0: 79 70 65 54 61 67 20 26 26 20 74 79 70 65 54 61 ypeTag && typeTa 0000d7d0: 67 2e 74 79 70 65 45 78 70 72 65 73 73 69 6f 6e g.typeExpression 0000d7e0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 0000d7f0: 76 61 72 20 74 79 70 65 20 3d 20 74 79 70 65 54 var type = typeT 0000d800: 61 67 2e 74 79 70 65 45 78 70 72 65 73 73 69 6f ag.typeExpressio 0000d810: 6e 2e 74 79 70 65 3b 0a 20 20 20 20 20 20 20 20 n.type;. 0000d820: 20 20 20 20 69 66 20 28 74 73 2e 69 73 54 79 70 if (ts.isTyp 0000d830: 65 4c 69 74 65 72 61 6c 4e 6f 64 65 28 74 79 70 eLiteralNode(typ 0000d840: 65 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 e)) {. 0000d850: 20 20 20 20 20 20 76 61 72 20 73 69 67 20 3d 20 var sig = 0000d860: 74 73 2e 66 69 6e 64 28 74 79 70 65 2e 6d 65 6d ts.find(type.mem 0000d870: 62 65 72 73 2c 20 74 73 2e 69 73 43 61 6c 6c 53 bers, ts.isCallS 0000d880: 69 67 6e 61 74 75 72 65 44 65 63 6c 61 72 61 74 ignatureDeclarat 0000d890: 69 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20 20 20 ion);. 0000d8a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 73 69 67 return sig 0000d8b0: 20 26 26 20 73 69 67 2e 74 79 70 65 3b 0a 20 20 && sig.type;. 0000d8c0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 0000d8d0: 20 20 20 20 20 20 20 20 69 66 20 28 74 73 2e 69 if (ts.i 0000d8e0: 73 46 75 6e 63 74 69 6f 6e 54 79 70 65 4e 6f 64 sFunctionTypeNod 0000d8f0: 65 28 74 79 70 65 29 20 7c 7c 20 74 73 2e 69 73 e(type) || ts.is 0000d900: 4a 53 44 6f 63 46 75 6e 63 74 69 6f 6e 54 79 70 JSDocFunctionTyp 0000d910: 65 28 74 79 70 65 29 29 20 7b 0a 20 20 20 20 20 e(type)) {. 0000d920: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0000d930: 6e 20 74 79 70 65 2e 74 79 70 65 3b 0a 20 20 20 n type.type;. 0000d940: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 0000d950: 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 }. }. t 0000d960: 73 2e 67 65 74 4a 53 44 6f 63 52 65 74 75 72 6e s.getJSDocReturn 0000d970: 54 79 70 65 20 3d 20 67 65 74 4a 53 44 6f 63 52 Type = getJSDocR 0000d980: 65 74 75 72 6e 54 79 70 65 3b 0a 20 20 20 20 66 eturnType;. f 0000d990: 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 unction getJSDoc 0000d9a0: 54 61 67 73 57 6f 72 6b 65 72 28 6e 6f 64 65 2c TagsWorker(node, 0000d9b0: 20 6e 6f 43 61 63 68 65 29 20 7b 0a 20 20 20 20 noCache) {. 0000d9c0: 20 20 20 20 76 61 72 20 74 61 67 73 20 3d 20 6e var tags = n 0000d9d0: 6f 64 65 2e 6a 73 44 6f 63 43 61 63 68 65 3b 0a ode.jsDocCache;. 0000d9e0: 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 63 61 // If ca 0000d9f0: 63 68 65 20 69 73 20 27 6e 75 6c 6c 27 2c 20 74 che is 'null', t 0000da00: 68 61 74 20 6d 65 61 6e 73 20 77 65 20 64 69 64 hat means we did 0000da10: 20 74 68 65 20 77 6f 72 6b 20 6f 66 20 73 65 61 the work of sea 0000da20: 72 63 68 69 6e 67 20 66 6f 72 20 4a 53 44 6f 63 rching for JSDoc 0000da30: 20 74 61 67 73 20 61 6e 64 20 63 61 6d 65 20 75 tags and came u 0000da40: 70 20 77 69 74 68 20 6e 6f 74 68 69 6e 67 2e 0a p with nothing.. 0000da50: 20 20 20 20 20 20 20 20 69 66 20 28 74 61 67 73 if (tags 0000da60: 20 3d 3d 3d 20 75 6e 64 65 66 69 6e 65 64 20 7c === undefined | 0000da70: 7c 20 6e 6f 43 61 63 68 65 29 20 7b 0a 20 20 20 | noCache) {. 0000da80: 20 20 20 20 20 20 20 20 20 76 61 72 20 63 6f 6d var com 0000da90: 6d 65 6e 74 73 20 3d 20 74 73 2e 67 65 74 4a 53 ments = ts.getJS 0000daa0: 44 6f 63 43 6f 6d 6d 65 6e 74 73 41 6e 64 54 61 DocCommentsAndTa 0000dab0: 67 73 28 6e 6f 64 65 2c 20 6e 6f 43 61 63 68 65 gs(node, noCache 0000dac0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 );. t 0000dad0: 73 2e 44 65 62 75 67 2e 61 73 73 65 72 74 28 63 s.Debug.assert(c 0000dae0: 6f 6d 6d 65 6e 74 73 2e 6c 65 6e 67 74 68 20 3c omments.length < 0000daf0: 20 32 20 7c 7c 20 63 6f 6d 6d 65 6e 74 73 5b 30 2 || comments[0 0000db00: 5d 20 21 3d 3d 20 63 6f 6d 6d 65 6e 74 73 5b 31 ] !== comments[1 0000db10: 5d 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ]);. 0000db20: 74 61 67 73 20 3d 20 74 73 2e 66 6c 61 74 4d 61 tags = ts.flatMa 0000db30: 70 28 63 6f 6d 6d 65 6e 74 73 2c 20 66 75 6e 63 p(comments, func 0000db40: 74 69 6f 6e 20 28 6a 29 20 7b 20 72 65 74 75 72 tion (j) { retur 0000db50: 6e 20 74 73 2e 69 73 4a 53 44 6f 63 28 6a 29 20 n ts.isJSDoc(j) 0000db60: 3f 20 6a 2e 74 61 67 73 20 3a 20 6a 3b 20 7d 29 ? j.tags : j; }) 0000db70: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 ;. if 0000db80: 20 28 21 6e 6f 43 61 63 68 65 29 20 7b 0a 20 20 (!noCache) {. 0000db90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f no 0000dba0: 64 65 2e 6a 73 44 6f 63 43 61 63 68 65 20 3d 20 de.jsDocCache = 0000dbb0: 74 61 67 73 3b 0a 20 20 20 20 20 20 20 20 20 20 tags;. 0000dbc0: 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 }. }. 0000dbd0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 61 67 return tag 0000dbe0: 73 3b 0a 20 20 20 20 7d 0a 20 20 20 20 2f 2a 2a s;. }. /** 0000dbf0: 20 47 65 74 20 61 6c 6c 20 4a 53 44 6f 63 20 74 Get all JSDoc t 0000dc00: 61 67 73 20 72 65 6c 61 74 65 64 20 74 6f 20 61 ags related to a 0000dc10: 20 6e 6f 64 65 2c 20 69 6e 63 6c 75 64 69 6e 67 node, including 0000dc20: 20 74 68 6f 73 65 20 6f 6e 20 70 61 72 65 6e 74 those on parent 0000dc30: 20 6e 6f 64 65 73 2e 20 2a 2f 0a 20 20 20 20 66 nodes. */. f 0000dc40: 75 6e 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 unction getJSDoc 0000dc50: 54 61 67 73 28 6e 6f 64 65 29 20 7b 0a 20 20 20 Tags(node) {. 0000dc60: 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 4a return getJ 0000dc70: 53 44 6f 63 54 61 67 73 57 6f 72 6b 65 72 28 6e SDocTagsWorker(n 0000dc80: 6f 64 65 2c 20 2f 2a 6e 6f 43 61 63 68 65 2a 2f ode, /*noCache*/ 0000dc90: 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 7d 0a 20 false);. }. 0000dca0: 20 20 20 74 73 2e 67 65 74 4a 53 44 6f 63 54 61 ts.getJSDocTa 0000dcb0: 67 73 20 3d 20 67 65 74 4a 53 44 6f 63 54 61 67 gs = getJSDocTag 0000dcc0: 73 3b 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 s;. /* @inter 0000dcd0: 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 nal */. funct 0000dce0: 69 6f 6e 20 67 65 74 4a 53 44 6f 63 54 61 67 73 ion getJSDocTags 0000dcf0: 4e 6f 43 61 63 68 65 28 6e 6f 64 65 29 20 7b 0a NoCache(node) {. 0000dd00: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 return g 0000dd10: 65 74 4a 53 44 6f 63 54 61 67 73 57 6f 72 6b 65 etJSDocTagsWorke 0000dd20: 72 28 6e 6f 64 65 2c 20 2f 2a 6e 6f 43 61 63 68 r(node, /*noCach 0000dd30: 65 2a 2f 20 74 72 75 65 29 3b 0a 20 20 20 20 7d e*/ true);. } 0000dd40: 0a 20 20 20 20 74 73 2e 67 65 74 4a 53 44 6f 63 . ts.getJSDoc 0000dd50: 54 61 67 73 4e 6f 43 61 63 68 65 20 3d 20 67 65 TagsNoCache = ge 0000dd60: 74 4a 53 44 6f 63 54 61 67 73 4e 6f 43 61 63 68 tJSDocTagsNoCach 0000dd70: 65 3b 0a 20 20 20 20 2f 2a 2a 20 47 65 74 20 74 e;. /** Get t 0000dd80: 68 65 20 66 69 72 73 74 20 4a 53 44 6f 63 20 74 he first JSDoc t 0000dd90: 61 67 20 6f 66 20 61 20 73 70 65 63 69 66 69 65 ag of a specifie 0000dda0: 64 20 6b 69 6e 64 2c 20 6f 72 20 75 6e 64 65 66 d kind, or undef 0000ddb0: 69 6e 65 64 20 69 66 20 6e 6f 74 20 70 72 65 73 ined if not pres 0000ddc0: 65 6e 74 2e 20 2a 2f 0a 20 20 20 20 66 75 6e 63 ent. */. func 0000ddd0: 74 69 6f 6e 20 67 65 74 46 69 72 73 74 4a 53 44 tion getFirstJSD 0000dde0: 6f 63 54 61 67 28 6e 6f 64 65 2c 20 70 72 65 64 ocTag(node, pred 0000ddf0: 69 63 61 74 65 2c 20 6e 6f 43 61 63 68 65 29 20 icate, noCache) 0000de00: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 0000de10: 20 74 73 2e 66 69 6e 64 28 67 65 74 4a 53 44 6f ts.find(getJSDo 0000de20: 63 54 61 67 73 57 6f 72 6b 65 72 28 6e 6f 64 65 cTagsWorker(node 0000de30: 2c 20 6e 6f 43 61 63 68 65 29 2c 20 70 72 65 64 , noCache), pred 0000de40: 69 63 61 74 65 29 3b 0a 20 20 20 20 7d 0a 20 20 icate);. }. 0000de50: 20 20 2f 2a 2a 20 47 65 74 73 20 61 6c 6c 20 4a /** Gets all J 0000de60: 53 44 6f 63 20 74 61 67 73 20 74 68 61 74 20 6d SDoc tags that m 0000de70: 61 74 63 68 20 61 20 73 70 65 63 69 66 69 65 64 atch a specified 0000de80: 20 70 72 65 64 69 63 61 74 65 20 2a 2f 0a 20 20 predicate */. 0000de90: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 41 6c function getAl 0000dea0: 6c 4a 53 44 6f 63 54 61 67 73 28 6e 6f 64 65 2c lJSDocTags(node, 0000deb0: 20 70 72 65 64 69 63 61 74 65 29 20 7b 0a 20 20 predicate) {. 0000dec0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 return get 0000ded0: 4a 53 44 6f 63 54 61 67 73 28 6e 6f 64 65 29 2e JSDocTags(node). 0000dee0: 66 69 6c 74 65 72 28 70 72 65 64 69 63 61 74 65 filter(predicate 0000def0: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 0000df00: 67 65 74 41 6c 6c 4a 53 44 6f 63 54 61 67 73 20 getAllJSDocTags 0000df10: 3d 20 67 65 74 41 6c 6c 4a 53 44 6f 63 54 61 67 = getAllJSDocTag 0000df20: 73 3b 0a 20 20 20 20 2f 2a 2a 20 47 65 74 73 20 s;. /** Gets 0000df30: 61 6c 6c 20 4a 53 44 6f 63 20 74 61 67 73 20 6f all JSDoc tags o 0000df40: 66 20 61 20 73 70 65 63 69 66 69 65 64 20 6b 69 f a specified ki 0000df50: 6e 64 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 nd */. functi 0000df60: 6f 6e 20 67 65 74 41 6c 6c 4a 53 44 6f 63 54 61 on getAllJSDocTa 0000df70: 67 73 4f 66 4b 69 6e 64 28 6e 6f 64 65 2c 20 6b gsOfKind(node, k 0000df80: 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ind) {. r 0000df90: 65 74 75 72 6e 20 67 65 74 4a 53 44 6f 63 54 61 eturn getJSDocTa 0000dfa0: 67 73 28 6e 6f 64 65 29 2e 66 69 6c 74 65 72 28 gs(node).filter( 0000dfb0: 66 75 6e 63 74 69 6f 6e 20 28 64 6f 63 29 20 7b function (doc) { 0000dfc0: 20 72 65 74 75 72 6e 20 64 6f 63 2e 6b 69 6e 64 return doc.kind 0000dfd0: 20 3d 3d 3d 20 6b 69 6e 64 3b 20 7d 29 3b 0a 20 === kind; });. 0000dfe0: 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 41 }. ts.getA 0000dff0: 6c 6c 4a 53 44 6f 63 54 61 67 73 4f 66 4b 69 6e llJSDocTagsOfKin 0000e000: 64 20 3d 20 67 65 74 41 6c 6c 4a 53 44 6f 63 54 d = getAllJSDocT 0000e010: 61 67 73 4f 66 4b 69 6e 64 3b 0a 20 20 20 20 2f agsOfKind;. / 0000e020: 2a 2a 20 47 65 74 73 20 74 68 65 20 74 65 78 74 ** Gets the text 0000e030: 20 6f 66 20 61 20 6a 73 64 6f 63 20 63 6f 6d 6d of a jsdoc comm 0000e040: 65 6e 74 2c 20 66 6c 61 74 74 65 6e 69 6e 67 20 ent, flattening 0000e050: 6c 69 6e 6b 73 20 74 6f 20 74 68 65 69 72 20 74 links to their t 0000e060: 65 78 74 2e 20 2a 2f 0a 20 20 20 20 66 75 6e 63 ext. */. func 0000e070: 74 69 6f 6e 20 67 65 74 54 65 78 74 4f 66 4a 53 tion getTextOfJS 0000e080: 44 6f 63 43 6f 6d 6d 65 6e 74 28 63 6f 6d 6d 65 DocComment(comme 0000e090: 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 nt) {. re 0000e0a0: 74 75 72 6e 20 74 79 70 65 6f 66 20 63 6f 6d 6d turn typeof comm 0000e0b0: 65 6e 74 20 3d 3d 3d 20 22 73 74 72 69 6e 67 22 ent === "string" 0000e0c0: 20 3f 20 63 6f 6d 6d 65 6e 74 0a 20 20 20 20 20 ? comment. 0000e0d0: 20 20 20 20 20 20 20 3a 20 63 6f 6d 6d 65 6e 74 : comment 0000e0e0: 20 3d 3d 3d 20 6e 75 6c 6c 20 7c 7c 20 63 6f 6d === null || com 0000e0f0: 6d 65 6e 74 20 3d 3d 3d 20 76 6f 69 64 20 30 20 ment === void 0 0000e100: 3f 20 76 6f 69 64 20 30 20 3a 20 63 6f 6d 6d 65 ? void 0 : comme 0000e110: 6e 74 2e 6d 61 70 28 66 75 6e 63 74 69 6f 6e 20 nt.map(function 0000e120: 28 63 29 20 7b 20 72 65 74 75 72 6e 20 63 2e 6b (c) { return c.k 0000e130: 69 6e 64 20 3d 3d 3d 20 33 32 31 20 2f 2a 20 53 ind === 321 /* S 0000e140: 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 54 yntaxKind.JSDocT 0000e150: 65 78 74 20 2a 2f 20 3f 20 63 2e 74 65 78 74 20 ext */ ? c.text 0000e160: 3a 20 66 6f 72 6d 61 74 4a 53 44 6f 63 4c 69 6e : formatJSDocLin 0000e170: 6b 28 63 29 3b 20 7d 29 2e 6a 6f 69 6e 28 22 22 k(c); }).join("" 0000e180: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 0000e190: 67 65 74 54 65 78 74 4f 66 4a 53 44 6f 63 43 6f getTextOfJSDocCo 0000e1a0: 6d 6d 65 6e 74 20 3d 20 67 65 74 54 65 78 74 4f mment = getTextO 0000e1b0: 66 4a 53 44 6f 63 43 6f 6d 6d 65 6e 74 3b 0a 20 fJSDocComment;. 0000e1c0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 6d function form 0000e1d0: 61 74 4a 53 44 6f 63 4c 69 6e 6b 28 6c 69 6e 6b atJSDocLink(link 0000e1e0: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 0000e1f0: 6b 69 6e 64 20 3d 20 6c 69 6e 6b 2e 6b 69 6e 64 kind = link.kind 0000e200: 20 3d 3d 3d 20 33 32 34 20 2f 2a 20 53 79 6e 74 === 324 /* Synt 0000e210: 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 4c 69 6e 6b axKind.JSDocLink 0000e220: 20 2a 2f 20 3f 20 22 6c 69 6e 6b 22 0a 20 20 20 */ ? "link". 0000e230: 20 20 20 20 20 20 20 20 20 3a 20 6c 69 6e 6b 2e : link. 0000e240: 6b 69 6e 64 20 3d 3d 3d 20 33 32 35 20 2f 2a 20 kind === 325 /* 0000e250: 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 SyntaxKind.JSDoc 0000e260: 4c 69 6e 6b 43 6f 64 65 20 2a 2f 20 3f 20 22 6c LinkCode */ ? "l 0000e270: 69 6e 6b 63 6f 64 65 22 0a 20 20 20 20 20 20 20 inkcode". 0000e280: 20 20 20 20 20 20 20 20 20 3a 20 22 6c 69 6e 6b : "link 0000e290: 70 6c 61 69 6e 22 3b 0a 20 20 20 20 20 20 20 20 plain";. 0000e2a0: 76 61 72 20 6e 61 6d 65 20 3d 20 6c 69 6e 6b 2e var name = link. 0000e2b0: 6e 61 6d 65 20 3f 20 74 73 2e 65 6e 74 69 74 79 name ? ts.entity 0000e2c0: 4e 61 6d 65 54 6f 53 74 72 69 6e 67 28 6c 69 6e NameToString(lin 0000e2d0: 6b 2e 6e 61 6d 65 29 20 3a 20 22 22 3b 0a 20 20 k.name) : "";. 0000e2e0: 20 20 20 20 20 20 76 61 72 20 73 70 61 63 65 20 var space 0000e2f0: 3d 20 6c 69 6e 6b 2e 6e 61 6d 65 20 26 26 20 6c = link.name && l 0000e300: 69 6e 6b 2e 74 65 78 74 2e 73 74 61 72 74 73 57 ink.text.startsW 0000e310: 69 74 68 28 22 3a 2f 2f 22 29 20 3f 20 22 22 20 ith("://") ? "" 0000e320: 3a 20 22 20 22 3b 0a 20 20 20 20 20 20 20 20 72 : " ";. r 0000e330: 65 74 75 72 6e 20 22 7b 40 22 2e 63 6f 6e 63 61 eturn "{@".conca 0000e340: 74 28 6b 69 6e 64 2c 20 22 20 22 29 2e 63 6f 6e t(kind, " ").con 0000e350: 63 61 74 28 6e 61 6d 65 29 2e 63 6f 6e 63 61 74 cat(name).concat 0000e360: 28 73 70 61 63 65 29 2e 63 6f 6e 63 61 74 28 6c (space).concat(l 0000e370: 69 6e 6b 2e 74 65 78 74 2c 20 22 7d 22 29 3b 0a ink.text, "}");. 0000e380: 20 20 20 20 7d 0a 20 20 20 20 2f 2a 2a 0a 20 20 }. /**. 0000e390: 20 20 20 2a 20 47 65 74 73 20 74 68 65 20 65 66 * Gets the ef 0000e3a0: 66 65 63 74 69 76 65 20 74 79 70 65 20 70 61 72 fective type par 0000e3b0: 61 6d 65 74 65 72 73 2e 20 49 66 20 74 68 65 20 ameters. If the 0000e3c0: 6e 6f 64 65 20 77 61 73 20 70 61 72 73 65 64 20 node was parsed 0000e3d0: 69 6e 20 61 0a 20 20 20 20 20 2a 20 4a 61 76 61 in a. * Java 0000e3e0: 53 63 72 69 70 74 20 66 69 6c 65 2c 20 67 65 74 Script file, get 0000e3f0: 73 20 74 68 65 20 74 79 70 65 20 70 61 72 61 6d s the type param 0000e400: 65 74 65 72 73 20 66 72 6f 6d 20 74 68 65 20 60 eters from the ` 0000e410: 40 74 65 6d 70 6c 61 74 65 60 20 74 61 67 20 66 @template` tag f 0000e420: 72 6f 6d 20 4a 53 44 6f 63 2e 0a 20 20 20 20 20 rom JSDoc.. 0000e430: 2a 0a 20 20 20 20 20 2a 20 54 68 69 73 20 64 6f *. * This do 0000e440: 65 73 20 2a 6e 6f 74 2a 20 72 65 74 75 72 6e 20 es *not* return 0000e450: 74 79 70 65 20 70 61 72 61 6d 65 74 65 72 73 20 type parameters 0000e460: 66 72 6f 6d 20 61 20 6a 73 64 6f 63 20 72 65 66 from a jsdoc ref 0000e470: 65 72 65 6e 63 65 20 74 6f 20 61 20 67 65 6e 65 erence to a gene 0000e480: 72 69 63 20 74 79 70 65 2c 20 65 67 0a 20 20 20 ric type, eg. 0000e490: 20 20 2a 0a 20 20 20 20 20 2a 20 74 79 70 65 20 *. * type 0000e4a0: 49 64 20 3d 20 3c 54 3e 28 78 3a 20 54 29 20 3d Id = <T>(x: T) = 0000e4b0: 3e 20 54 0a 20 20 20 20 20 2a 20 2f 2a 2a 20 40 > T. * /** @ 0000e4c0: 74 79 70 65 20 7b 49 64 7d 20 2f 0a 20 20 20 20 type {Id} /. 0000e4d0: 20 2a 20 66 75 6e 63 74 69 6f 6e 20 69 64 28 78 * function id(x 0000e4e0: 29 20 7b 20 72 65 74 75 72 6e 20 78 20 7d 0a 20 ) { return x }. 0000e4f0: 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 */. funct 0000e500: 69 6f 6e 20 67 65 74 45 66 66 65 63 74 69 76 65 ion getEffective 0000e510: 54 79 70 65 50 61 72 61 6d 65 74 65 72 44 65 63 TypeParameterDec 0000e520: 6c 61 72 61 74 69 6f 6e 73 28 6e 6f 64 65 29 20 larations(node) 0000e530: 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 73 {. if (ts 0000e540: 2e 69 73 4a 53 44 6f 63 53 69 67 6e 61 74 75 72 .isJSDocSignatur 0000e550: 65 28 6e 6f 64 65 29 29 20 7b 0a 20 20 20 20 20 e(node)) {. 0000e560: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 return ts 0000e570: 2e 65 6d 70 74 79 41 72 72 61 79 3b 0a 20 20 20 .emptyArray;. 0000e580: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 }. i 0000e590: 66 20 28 74 73 2e 69 73 4a 53 44 6f 63 54 79 70 f (ts.isJSDocTyp 0000e5a0: 65 41 6c 69 61 73 28 6e 6f 64 65 29 29 20 7b 0a eAlias(node)) {. 0000e5b0: 20 20 20 20 20 20 20 20 20 20 20 20 74 73 2e 44 ts.D 0000e5c0: 65 62 75 67 2e 61 73 73 65 72 74 28 6e 6f 64 65 ebug.assert(node 0000e5d0: 2e 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d .parent.kind === 0000e5e0: 20 33 32 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 320 /* SyntaxKi 0000e5f0: 6e 64 2e 4a 53 44 6f 63 20 2a 2f 29 3b 0a 20 20 nd.JSDoc */);. 0000e600: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 0000e610: 20 74 73 2e 66 6c 61 74 4d 61 70 28 6e 6f 64 65 ts.flatMap(node 0000e620: 2e 70 61 72 65 6e 74 2e 74 61 67 73 2c 20 66 75 .parent.tags, fu 0000e630: 6e 63 74 69 6f 6e 20 28 74 61 67 29 20 7b 20 72 nction (tag) { r 0000e640: 65 74 75 72 6e 20 74 73 2e 69 73 4a 53 44 6f 63 eturn ts.isJSDoc 0000e650: 54 65 6d 70 6c 61 74 65 54 61 67 28 74 61 67 29 TemplateTag(tag) 0000e660: 20 3f 20 74 61 67 2e 74 79 70 65 50 61 72 61 6d ? tag.typeParam 0000e670: 65 74 65 72 73 20 3a 20 75 6e 64 65 66 69 6e 65 eters : undefine 0000e680: 64 3b 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 7d d; });. } 0000e690: 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 . if (nod 0000e6a0: 65 2e 74 79 70 65 50 61 72 61 6d 65 74 65 72 73 e.typeParameters 0000e6b0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 0000e6c0: 72 65 74 75 72 6e 20 6e 6f 64 65 2e 74 79 70 65 return node.type 0000e6d0: 50 61 72 61 6d 65 74 65 72 73 3b 0a 20 20 20 20 Parameters;. 0000e6e0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 }. if 0000e6f0: 20 28 74 73 2e 63 61 6e 48 61 76 65 49 6c 6c 65 (ts.canHaveIlle 0000e700: 67 61 6c 54 79 70 65 50 61 72 61 6d 65 74 65 72 galTypeParameter 0000e710: 73 28 6e 6f 64 65 29 20 26 26 20 6e 6f 64 65 2e s(node) && node. 0000e720: 74 79 70 65 50 61 72 61 6d 65 74 65 72 73 29 20 typeParameters) 0000e730: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 {. re 0000e740: 74 75 72 6e 20 6e 6f 64 65 2e 74 79 70 65 50 61 turn node.typePa 0000e750: 72 61 6d 65 74 65 72 73 3b 0a 20 20 20 20 20 20 rameters;. 0000e760: 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 }. if ( 0000e770: 74 73 2e 69 73 49 6e 4a 53 46 69 6c 65 28 6e 6f ts.isInJSFile(no 0000e780: 64 65 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 de)) {. 0000e790: 20 20 20 76 61 72 20 64 65 63 6c 73 20 3d 20 74 var decls = t 0000e7a0: 73 2e 67 65 74 4a 53 44 6f 63 54 79 70 65 50 61 s.getJSDocTypePa 0000e7b0: 72 61 6d 65 74 65 72 44 65 63 6c 61 72 61 74 69 rameterDeclarati 0000e7c0: 6f 6e 73 28 6e 6f 64 65 29 3b 0a 20 20 20 20 20 ons(node);. 0000e7d0: 20 20 20 20 20 20 20 69 66 20 28 64 65 63 6c 73 if (decls 0000e7e0: 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 20 20 20 20 .length) {. 0000e7f0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0000e800: 6e 20 64 65 63 6c 73 3b 0a 20 20 20 20 20 20 20 n decls;. 0000e810: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 }. 0000e820: 20 20 20 76 61 72 20 74 79 70 65 54 61 67 20 3d var typeTag = 0000e830: 20 67 65 74 4a 53 44 6f 63 54 79 70 65 28 6e 6f getJSDocType(no 0000e840: 64 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 de);. 0000e850: 20 69 66 20 28 74 79 70 65 54 61 67 20 26 26 20 if (typeTag && 0000e860: 74 73 2e 69 73 46 75 6e 63 74 69 6f 6e 54 79 70 ts.isFunctionTyp 0000e870: 65 4e 6f 64 65 28 74 79 70 65 54 61 67 29 20 26 eNode(typeTag) & 0000e880: 26 20 74 79 70 65 54 61 67 2e 74 79 70 65 50 61 & typeTag.typePa 0000e890: 72 61 6d 65 74 65 72 73 29 20 7b 0a 20 20 20 20 rameters) {. 0000e8a0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 0000e8b0: 72 6e 20 74 79 70 65 54 61 67 2e 74 79 70 65 50 rn typeTag.typeP 0000e8c0: 61 72 61 6d 65 74 65 72 73 3b 0a 20 20 20 20 20 arameters;. 0000e8d0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 0000e8e0: 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 }. retur 0000e8f0: 6e 20 74 73 2e 65 6d 70 74 79 41 72 72 61 79 3b n ts.emptyArray; 0000e900: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 . }. ts.ge 0000e910: 74 45 66 66 65 63 74 69 76 65 54 79 70 65 50 61 tEffectiveTypePa 0000e920: 72 61 6d 65 74 65 72 44 65 63 6c 61 72 61 74 69 rameterDeclarati 0000e930: 6f 6e 73 20 3d 20 67 65 74 45 66 66 65 63 74 69 ons = getEffecti 0000e940: 76 65 54 79 70 65 50 61 72 61 6d 65 74 65 72 44 veTypeParameterD 0000e950: 65 63 6c 61 72 61 74 69 6f 6e 73 3b 0a 20 20 20 eclarations;. 0000e960: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 45 66 66 function getEff 0000e970: 65 63 74 69 76 65 43 6f 6e 73 74 72 61 69 6e 74 ectiveConstraint 0000e980: 4f 66 54 79 70 65 50 61 72 61 6d 65 74 65 72 28 OfTypeParameter( 0000e990: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 0000e9a0: 72 65 74 75 72 6e 20 6e 6f 64 65 2e 63 6f 6e 73 return node.cons 0000e9b0: 74 72 61 69 6e 74 20 3f 20 6e 6f 64 65 2e 63 6f traint ? node.co 0000e9c0: 6e 73 74 72 61 69 6e 74 20 3a 0a 20 20 20 20 20 nstraint :. 0000e9d0: 20 20 20 20 20 20 20 74 73 2e 69 73 4a 53 44 6f ts.isJSDo 0000e9e0: 63 54 65 6d 70 6c 61 74 65 54 61 67 28 6e 6f 64 cTemplateTag(nod 0000e9f0: 65 2e 70 61 72 65 6e 74 29 20 26 26 20 6e 6f 64 e.parent) && nod 0000ea00: 65 20 3d 3d 3d 20 6e 6f 64 65 2e 70 61 72 65 6e e === node.paren 0000ea10: 74 2e 74 79 70 65 50 61 72 61 6d 65 74 65 72 73 t.typeParameters 0000ea20: 5b 30 5d 20 3f 20 6e 6f 64 65 2e 70 61 72 65 6e [0] ? node.paren 0000ea30: 74 2e 63 6f 6e 73 74 72 61 69 6e 74 20 3a 0a 20 t.constraint :. 0000ea40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 75 u 0000ea50: 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 7d 0a ndefined;. }. 0000ea60: 20 20 20 20 74 73 2e 67 65 74 45 66 66 65 63 74 ts.getEffect 0000ea70: 69 76 65 43 6f 6e 73 74 72 61 69 6e 74 4f 66 54 iveConstraintOfT 0000ea80: 79 70 65 50 61 72 61 6d 65 74 65 72 20 3d 20 67 ypeParameter = g 0000ea90: 65 74 45 66 66 65 63 74 69 76 65 43 6f 6e 73 74 etEffectiveConst 0000eaa0: 72 61 69 6e 74 4f 66 54 79 70 65 50 61 72 61 6d raintOfTypeParam 0000eab0: 65 74 65 72 3b 0a 20 20 20 20 2f 2f 20 23 72 65 eter;. // #re 0000eac0: 67 69 6f 6e 0a 20 20 20 20 66 75 6e 63 74 69 6f gion. functio 0000ead0: 6e 20 69 73 4d 65 6d 62 65 72 4e 61 6d 65 28 6e n isMemberName(n 0000eae0: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 0000eaf0: 65 74 75 72 6e 20 6e 6f 64 65 2e 6b 69 6e 64 20 eturn node.kind 0000eb00: 3d 3d 3d 20 37 39 20 2f 2a 20 53 79 6e 74 61 78 === 79 /* Syntax 0000eb10: 4b 69 6e 64 2e 49 64 65 6e 74 69 66 69 65 72 20 Kind.Identifier 0000eb20: 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 6b 69 6e 64 20 */ || node.kind 0000eb30: 3d 3d 3d 20 38 30 20 2f 2a 20 53 79 6e 74 61 78 === 80 /* Syntax 0000eb40: 4b 69 6e 64 2e 50 72 69 76 61 74 65 49 64 65 6e Kind.PrivateIden 0000eb50: 74 69 66 69 65 72 20 2a 2f 3b 0a 20 20 20 20 7d tifier */;. } 0000eb60: 0a 20 20 20 20 74 73 2e 69 73 4d 65 6d 62 65 72 . ts.isMember 0000eb70: 4e 61 6d 65 20 3d 20 69 73 4d 65 6d 62 65 72 4e Name = isMemberN 0000eb80: 61 6d 65 3b 0a 20 20 20 20 2f 2a 20 40 69 6e 74 ame;. /* @int 0000eb90: 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e ernal */. fun 0000eba0: 63 74 69 6f 6e 20 69 73 47 65 74 4f 72 53 65 74 ction isGetOrSet 0000ebb0: 41 63 63 65 73 73 6f 72 44 65 63 6c 61 72 61 74 AccessorDeclarat 0000ebc0: 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ion(node) {. 0000ebd0: 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e return node. 0000ebe0: 6b 69 6e 64 20 3d 3d 3d 20 31 37 33 20 2f 2a 20 kind === 173 /* 0000ebf0: 53 79 6e 74 61 78 4b 69 6e 64 2e 53 65 74 41 63 SyntaxKind.SetAc 0000ec00: 63 65 73 73 6f 72 20 2a 2f 20 7c 7c 20 6e 6f 64 cessor */ || nod 0000ec10: 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 37 32 20 2f e.kind === 172 / 0000ec20: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 47 65 74 * SyntaxKind.Get 0000ec30: 41 63 63 65 73 73 6f 72 20 2a 2f 3b 0a 20 20 20 Accessor */;. 0000ec40: 20 7d 0a 20 20 20 20 74 73 2e 69 73 47 65 74 4f }. ts.isGetO 0000ec50: 72 53 65 74 41 63 63 65 73 73 6f 72 44 65 63 6c rSetAccessorDecl 0000ec60: 61 72 61 74 69 6f 6e 20 3d 20 69 73 47 65 74 4f aration = isGetO 0000ec70: 72 53 65 74 41 63 63 65 73 73 6f 72 44 65 63 6c rSetAccessorDecl 0000ec80: 61 72 61 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e aration;. fun 0000ec90: 63 74 69 6f 6e 20 69 73 50 72 6f 70 65 72 74 79 ction isProperty 0000eca0: 41 63 63 65 73 73 43 68 61 69 6e 28 6e 6f 64 65 AccessChain(node 0000ecb0: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0000ecc0: 72 6e 20 74 73 2e 69 73 50 72 6f 70 65 72 74 79 rn ts.isProperty 0000ecd0: 41 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e AccessExpression 0000ece0: 28 6e 6f 64 65 29 20 26 26 20 21 21 28 6e 6f 64 (node) && !!(nod 0000ecf0: 65 2e 66 6c 61 67 73 20 26 20 33 32 20 2f 2a 20 e.flags & 32 /* 0000ed00: 4e 6f 64 65 46 6c 61 67 73 2e 4f 70 74 69 6f 6e NodeFlags.Option 0000ed10: 61 6c 43 68 61 69 6e 20 2a 2f 29 3b 0a 20 20 20 alChain */);. 0000ed20: 20 7d 0a 20 20 20 20 74 73 2e 69 73 50 72 6f 70 }. ts.isProp 0000ed30: 65 72 74 79 41 63 63 65 73 73 43 68 61 69 6e 20 ertyAccessChain 0000ed40: 3d 20 69 73 50 72 6f 70 65 72 74 79 41 63 63 65 = isPropertyAcce 0000ed50: 73 73 43 68 61 69 6e 3b 0a 20 20 20 20 66 75 6e ssChain;. fun 0000ed60: 63 74 69 6f 6e 20 69 73 45 6c 65 6d 65 6e 74 41 ction isElementA 0000ed70: 63 63 65 73 73 43 68 61 69 6e 28 6e 6f 64 65 29 ccessChain(node) 0000ed80: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 0000ed90: 6e 20 74 73 2e 69 73 45 6c 65 6d 65 6e 74 41 63 n ts.isElementAc 0000eda0: 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 28 6e cessExpression(n 0000edb0: 6f 64 65 29 20 26 26 20 21 21 28 6e 6f 64 65 2e ode) && !!(node. 0000edc0: 66 6c 61 67 73 20 26 20 33 32 20 2f 2a 20 4e 6f flags & 32 /* No 0000edd0: 64 65 46 6c 61 67 73 2e 4f 70 74 69 6f 6e 61 6c deFlags.Optional 0000ede0: 43 68 61 69 6e 20 2a 2f 29 3b 0a 20 20 20 20 7d Chain */);. } 0000edf0: 0a 20 20 20 20 74 73 2e 69 73 45 6c 65 6d 65 6e . ts.isElemen 0000ee00: 74 41 63 63 65 73 73 43 68 61 69 6e 20 3d 20 69 tAccessChain = i 0000ee10: 73 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 43 68 sElementAccessCh 0000ee20: 61 69 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ain;. functio 0000ee30: 6e 20 69 73 43 61 6c 6c 43 68 61 69 6e 28 6e 6f n isCallChain(no 0000ee40: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 de) {. re 0000ee50: 74 75 72 6e 20 74 73 2e 69 73 43 61 6c 6c 45 78 turn ts.isCallEx 0000ee60: 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 26 pression(node) & 0000ee70: 26 20 21 21 28 6e 6f 64 65 2e 66 6c 61 67 73 20 & !!(node.flags 0000ee80: 26 20 33 32 20 2f 2a 20 4e 6f 64 65 46 6c 61 67 & 32 /* NodeFlag 0000ee90: 73 2e 4f 70 74 69 6f 6e 61 6c 43 68 61 69 6e 20 s.OptionalChain 0000eea0: 2a 2f 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 */);. }. t 0000eeb0: 73 2e 69 73 43 61 6c 6c 43 68 61 69 6e 20 3d 20 s.isCallChain = 0000eec0: 69 73 43 61 6c 6c 43 68 61 69 6e 3b 0a 20 20 20 isCallChain;. 0000eed0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 4f 70 74 69 function isOpti 0000eee0: 6f 6e 61 6c 43 68 61 69 6e 28 6e 6f 64 65 29 20 onalChain(node) 0000eef0: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6b 69 {. var ki 0000ef00: 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 3b 0a nd = node.kind;. 0000ef10: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 return ! 0000ef20: 21 28 6e 6f 64 65 2e 66 6c 61 67 73 20 26 20 33 !(node.flags & 3 0000ef30: 32 20 2f 2a 20 4e 6f 64 65 46 6c 61 67 73 2e 4f 2 /* NodeFlags.O 0000ef40: 70 74 69 6f 6e 61 6c 43 68 61 69 6e 20 2a 2f 29 ptionalChain */) 0000ef50: 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 &&. 0000ef60: 28 6b 69 6e 64 20 3d 3d 3d 20 32 30 36 20 2f 2a (kind === 206 /* 0000ef70: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 SyntaxKind.Prop 0000ef80: 65 72 74 79 41 63 63 65 73 73 45 78 70 72 65 73 ertyAccessExpres 0000ef90: 73 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 sion */. 0000efa0: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 0000efb0: 3d 3d 3d 20 32 30 37 20 2f 2a 20 53 79 6e 74 61 === 207 /* Synta 0000efc0: 78 4b 69 6e 64 2e 45 6c 65 6d 65 6e 74 41 63 63 xKind.ElementAcc 0000efd0: 65 73 73 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f essExpression */ 0000efe0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0000eff0: 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 30 38 || kind === 208 0000f000: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 /* SyntaxKind.C 0000f010: 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f allExpression */ 0000f020: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0000f030: 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 33 30 || kind === 230 0000f040: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e /* SyntaxKind.N 0000f050: 6f 6e 4e 75 6c 6c 45 78 70 72 65 73 73 69 6f 6e onNullExpression 0000f060: 20 2a 2f 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 */);. }. 0000f070: 74 73 2e 69 73 4f 70 74 69 6f 6e 61 6c 43 68 61 ts.isOptionalCha 0000f080: 69 6e 20 3d 20 69 73 4f 70 74 69 6f 6e 61 6c 43 in = isOptionalC 0000f090: 68 61 69 6e 3b 0a 20 20 20 20 2f 2a 20 40 69 6e hain;. /* @in 0000f0a0: 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 ternal */. fu 0000f0b0: 6e 63 74 69 6f 6e 20 69 73 4f 70 74 69 6f 6e 61 nction isOptiona 0000f0c0: 6c 43 68 61 69 6e 52 6f 6f 74 28 6e 6f 64 65 29 lChainRoot(node) 0000f0d0: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 0000f0e0: 6e 20 69 73 4f 70 74 69 6f 6e 61 6c 43 68 61 69 n isOptionalChai 0000f0f0: 6e 28 6e 6f 64 65 29 20 26 26 20 21 74 73 2e 69 n(node) && !ts.i 0000f100: 73 4e 6f 6e 4e 75 6c 6c 45 78 70 72 65 73 73 69 sNonNullExpressi 0000f110: 6f 6e 28 6e 6f 64 65 29 20 26 26 20 21 21 6e 6f on(node) && !!no 0000f120: 64 65 2e 71 75 65 73 74 69 6f 6e 44 6f 74 54 6f de.questionDotTo 0000f130: 6b 65 6e 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 ken;. }. t 0000f140: 73 2e 69 73 4f 70 74 69 6f 6e 61 6c 43 68 61 69 s.isOptionalChai 0000f150: 6e 52 6f 6f 74 20 3d 20 69 73 4f 70 74 69 6f 6e nRoot = isOption 0000f160: 61 6c 43 68 61 69 6e 52 6f 6f 74 3b 0a 20 20 20 alChainRoot;. 0000f170: 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 44 65 74 65 /**. * Dete 0000f180: 72 6d 69 6e 65 73 20 77 68 65 74 68 65 72 20 61 rmines whether a 0000f190: 20 6e 6f 64 65 20 69 73 20 74 68 65 20 65 78 70 node is the exp 0000f1a0: 72 65 73 73 69 6f 6e 20 70 72 65 63 65 64 69 6e ression precedin 0000f1b0: 67 20 61 6e 20 6f 70 74 69 6f 6e 61 6c 20 63 68 g an optional ch 0000f1c0: 61 69 6e 20 28 69 2e 65 2e 20 60 61 60 20 69 6e ain (i.e. `a` in 0000f1d0: 20 60 61 3f 2e 62 60 29 2e 0a 20 20 20 20 20 2a `a?.b`).. * 0000f1e0: 2f 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e /. /* @intern 0000f1f0: 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 al */. functi 0000f200: 6f 6e 20 69 73 45 78 70 72 65 73 73 69 6f 6e 4f on isExpressionO 0000f210: 66 4f 70 74 69 6f 6e 61 6c 43 68 61 69 6e 52 6f fOptionalChainRo 0000f220: 6f 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 ot(node) {. 0000f230: 20 20 20 72 65 74 75 72 6e 20 69 73 4f 70 74 69 return isOpti 0000f240: 6f 6e 61 6c 43 68 61 69 6e 52 6f 6f 74 28 6e 6f onalChainRoot(no 0000f250: 64 65 2e 70 61 72 65 6e 74 29 20 26 26 20 6e 6f de.parent) && no 0000f260: 64 65 2e 70 61 72 65 6e 74 2e 65 78 70 72 65 73 de.parent.expres 0000f270: 73 69 6f 6e 20 3d 3d 3d 20 6e 6f 64 65 3b 0a 20 sion === node;. 0000f280: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 45 78 }. ts.isEx 0000f290: 70 72 65 73 73 69 6f 6e 4f 66 4f 70 74 69 6f 6e pressionOfOption 0000f2a0: 61 6c 43 68 61 69 6e 52 6f 6f 74 20 3d 20 69 73 alChainRoot = is 0000f2b0: 45 78 70 72 65 73 73 69 6f 6e 4f 66 4f 70 74 69 ExpressionOfOpti 0000f2c0: 6f 6e 61 6c 43 68 61 69 6e 52 6f 6f 74 3b 0a 20 onalChainRoot;. 0000f2d0: 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 44 65 /**. * De 0000f2e0: 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65 72 termines whether 0000f2f0: 20 61 20 6e 6f 64 65 20 69 73 20 74 68 65 20 6f a node is the o 0000f300: 75 74 65 72 6d 6f 73 74 20 60 4f 70 74 69 6f 6e utermost `Option 0000f310: 61 6c 43 68 61 69 6e 60 20 69 6e 20 61 6e 20 45 alChain` in an E 0000f320: 43 4d 41 53 63 72 69 70 74 20 60 4f 70 74 69 6f CMAScript `Optio 0000f330: 6e 61 6c 45 78 70 72 65 73 73 69 6f 6e 60 3a 0a nalExpression`:. 0000f340: 20 20 20 20 20 2a 0a 20 20 20 20 20 2a 20 31 2e *. * 1. 0000f350: 20 46 6f 72 20 60 61 3f 2e 62 2e 63 60 2c 20 74 For `a?.b.c`, t 0000f360: 68 65 20 6f 75 74 65 72 6d 6f 73 74 20 63 68 61 he outermost cha 0000f370: 69 6e 20 69 73 20 60 61 3f 2e 62 2e 63 60 20 28 in is `a?.b.c` ( 0000f380: 60 63 60 20 69 73 20 74 68 65 20 65 6e 64 20 6f `c` is the end o 0000f390: 66 20 74 68 65 20 63 68 61 69 6e 20 73 74 61 72 f the chain star 0000f3a0: 74 69 6e 67 20 61 74 20 60 61 3f 2e 60 29 0a 20 ting at `a?.`). 0000f3b0: 20 20 20 20 2a 20 32 2e 20 46 6f 72 20 60 61 3f * 2. For `a? 0000f3c0: 2e 62 21 60 2c 20 74 68 65 20 6f 75 74 65 72 6d .b!`, the outerm 0000f3d0: 6f 73 74 20 63 68 61 69 6e 20 69 73 20 60 61 3f ost chain is `a? 0000f3e0: 2e 62 60 20 28 60 62 60 20 69 73 20 74 68 65 20 .b` (`b` is the 0000f3f0: 65 6e 64 20 6f 66 20 74 68 65 20 63 68 61 69 6e end of the chain 0000f400: 20 73 74 61 72 74 69 6e 67 20 61 74 20 60 61 3f starting at `a? 0000f410: 2e 60 29 0a 20 20 20 20 20 2a 20 33 2e 20 46 6f .`). * 3. Fo 0000f420: 72 20 60 28 61 3f 2e 62 2e 63 29 2e 64 60 2c 20 r `(a?.b.c).d`, 0000f430: 74 68 65 20 6f 75 74 65 72 6d 6f 73 74 20 63 68 the outermost ch 0000f440: 61 69 6e 20 69 73 20 60 61 3f 2e 62 2e 63 60 20 ain is `a?.b.c` 0000f450: 28 60 63 60 20 69 73 20 74 68 65 20 65 6e 64 20 (`c` is the end 0000f460: 6f 66 20 74 68 65 20 63 68 61 69 6e 20 73 74 61 of the chain sta 0000f470: 72 74 69 6e 67 20 61 74 20 60 61 3f 2e 60 20 73 rting at `a?.` s 0000f480: 69 6e 63 65 20 70 61 72 65 6e 73 20 65 6e 64 20 ince parens end 0000f490: 74 68 65 20 63 68 61 69 6e 29 0a 20 20 20 20 20 the chain). 0000f4a0: 2a 20 34 2e 20 46 6f 72 20 60 61 3f 2e 62 2e 63 * 4. For `a?.b.c 0000f4b0: 3f 2e 64 60 2c 20 62 6f 74 68 20 60 61 3f 2e 62 ?.d`, both `a?.b 0000f4c0: 2e 63 60 20 61 6e 64 20 60 61 3f 2e 62 2e 63 3f .c` and `a?.b.c? 0000f4d0: 2e 64 60 20 61 72 65 20 6f 75 74 65 72 6d 6f 73 .d` are outermos 0000f4e0: 74 20 28 60 63 60 20 69 73 20 74 68 65 20 65 6e t (`c` is the en 0000f4f0: 64 20 6f 66 20 74 68 65 20 63 68 61 69 6e 20 73 d of the chain s 0000f500: 74 61 72 74 69 6e 67 20 61 74 20 60 61 3f 2e 60 tarting at `a?.` 0000f510: 2c 20 61 6e 64 20 60 64 60 20 69 73 0a 20 20 20 , and `d` is. 0000f520: 20 20 2a 20 20 20 74 68 65 20 65 6e 64 20 6f 66 * the end of 0000f530: 20 74 68 65 20 63 68 61 69 6e 20 73 74 61 72 74 the chain start 0000f540: 69 6e 67 20 61 74 20 60 63 3f 2e 60 29 0a 20 20 ing at `c?.`). 0000f550: 20 20 20 2a 20 35 2e 20 46 6f 72 20 60 61 3f 2e * 5. For `a?. 0000f560: 28 62 3f 2e 63 29 2e 64 60 2c 20 62 6f 74 68 20 (b?.c).d`, both 0000f570: 60 62 3f 2e 63 60 20 61 6e 64 20 60 61 3f 2e 28 `b?.c` and `a?.( 0000f580: 62 3f 2e 63 29 64 60 20 61 72 65 20 6f 75 74 65 b?.c)d` are oute 0000f590: 72 6d 6f 73 74 20 28 60 63 60 20 69 73 20 74 68 rmost (`c` is th 0000f5a0: 65 20 65 6e 64 20 6f 66 20 74 68 65 20 63 68 61 e end of the cha 0000f5b0: 69 6e 20 73 74 61 72 74 69 6e 67 20 61 74 20 60 in starting at ` 0000f5c0: 62 60 2c 20 61 6e 64 20 60 64 60 20 69 73 0a 20 b`, and `d` is. 0000f5d0: 20 20 20 20 2a 20 20 20 74 68 65 20 65 6e 64 20 * the end 0000f5e0: 6f 66 20 74 68 65 20 63 68 61 69 6e 20 73 74 61 of the chain sta 0000f5f0: 72 74 69 6e 67 20 61 74 20 60 61 3f 2e 60 29 0a rting at `a?.`). 0000f600: 20 20 20 20 20 2a 2f 0a 20 20 20 20 2f 2a 20 40 */. /* @ 0000f610: 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 internal */. 0000f620: 66 75 6e 63 74 69 6f 6e 20 69 73 4f 75 74 65 72 function isOuter 0000f630: 6d 6f 73 74 4f 70 74 69 6f 6e 61 6c 43 68 61 69 mostOptionalChai 0000f640: 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 n(node) {. 0000f650: 20 20 72 65 74 75 72 6e 20 21 69 73 4f 70 74 69 return !isOpti 0000f660: 6f 6e 61 6c 43 68 61 69 6e 28 6e 6f 64 65 2e 70 onalChain(node.p 0000f670: 61 72 65 6e 74 29 20 2f 2f 20 63 61 73 65 73 20 arent) // cases 0000f680: 31 2c 20 32 2c 20 61 6e 64 20 33 0a 20 20 20 20 1, 2, and 3. 0000f690: 20 20 20 20 20 20 20 20 7c 7c 20 69 73 4f 70 74 || isOpt 0000f6a0: 69 6f 6e 61 6c 43 68 61 69 6e 52 6f 6f 74 28 6e ionalChainRoot(n 0000f6b0: 6f 64 65 2e 70 61 72 65 6e 74 29 20 2f 2f 20 63 ode.parent) // c 0000f6c0: 61 73 65 20 34 0a 20 20 20 20 20 20 20 20 20 20 ase 4. 0000f6d0: 20 20 7c 7c 20 6e 6f 64 65 20 21 3d 3d 20 6e 6f || node !== no 0000f6e0: 64 65 2e 70 61 72 65 6e 74 2e 65 78 70 72 65 73 de.parent.expres 0000f6f0: 73 69 6f 6e 3b 20 2f 2f 20 63 61 73 65 20 35 0a sion; // case 5. 0000f700: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4f }. ts.isO 0000f710: 75 74 65 72 6d 6f 73 74 4f 70 74 69 6f 6e 61 6c utermostOptional 0000f720: 43 68 61 69 6e 20 3d 20 69 73 4f 75 74 65 72 6d Chain = isOuterm 0000f730: 6f 73 74 4f 70 74 69 6f 6e 61 6c 43 68 61 69 6e ostOptionalChain 0000f740: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 0000f750: 73 4e 75 6c 6c 69 73 68 43 6f 61 6c 65 73 63 65 sNullishCoalesce 0000f760: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 0000f770: 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 6b 69 6e return node.kin 0000f780: 64 20 3d 3d 3d 20 32 32 31 20 2f 2a 20 53 79 6e d === 221 /* Syn 0000f790: 74 61 78 4b 69 6e 64 2e 42 69 6e 61 72 79 45 78 taxKind.BinaryEx 0000f7a0: 70 72 65 73 73 69 6f 6e 20 2a 2f 20 26 26 20 6e pression */ && n 0000f7b0: 6f 64 65 2e 6f 70 65 72 61 74 6f 72 54 6f 6b 65 ode.operatorToke 0000f7c0: 6e 2e 6b 69 6e 64 20 3d 3d 3d 20 36 30 20 2f 2a n.kind === 60 /* 0000f7d0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 51 75 65 73 SyntaxKind.Ques 0000f7e0: 74 69 6f 6e 51 75 65 73 74 69 6f 6e 54 6f 6b 65 tionQuestionToke 0000f7f0: 6e 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 n */;. }. 0000f800: 74 73 2e 69 73 4e 75 6c 6c 69 73 68 43 6f 61 6c ts.isNullishCoal 0000f810: 65 73 63 65 20 3d 20 69 73 4e 75 6c 6c 69 73 68 esce = isNullish 0000f820: 43 6f 61 6c 65 73 63 65 3b 0a 20 20 20 20 66 75 Coalesce;. fu 0000f830: 6e 63 74 69 6f 6e 20 69 73 43 6f 6e 73 74 54 79 nction isConstTy 0000f840: 70 65 52 65 66 65 72 65 6e 63 65 28 6e 6f 64 65 peReference(node 0000f850: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0000f860: 72 6e 20 74 73 2e 69 73 54 79 70 65 52 65 66 65 rn ts.isTypeRefe 0000f870: 72 65 6e 63 65 4e 6f 64 65 28 6e 6f 64 65 29 20 renceNode(node) 0000f880: 26 26 20 74 73 2e 69 73 49 64 65 6e 74 69 66 69 && ts.isIdentifi 0000f890: 65 72 28 6e 6f 64 65 2e 74 79 70 65 4e 61 6d 65 er(node.typeName 0000f8a0: 29 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 ) &&. 0000f8b0: 20 6e 6f 64 65 2e 74 79 70 65 4e 61 6d 65 2e 65 node.typeName.e 0000f8c0: 73 63 61 70 65 64 54 65 78 74 20 3d 3d 3d 20 22 scapedText === " 0000f8d0: 63 6f 6e 73 74 22 20 26 26 20 21 6e 6f 64 65 2e const" && !node. 0000f8e0: 74 79 70 65 41 72 67 75 6d 65 6e 74 73 3b 0a 20 typeArguments;. 0000f8f0: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 43 6f }. ts.isCo 0000f900: 6e 73 74 54 79 70 65 52 65 66 65 72 65 6e 63 65 nstTypeReference 0000f910: 20 3d 20 69 73 43 6f 6e 73 74 54 79 70 65 52 65 = isConstTypeRe 0000f920: 66 65 72 65 6e 63 65 3b 0a 20 20 20 20 66 75 6e ference;. fun 0000f930: 63 74 69 6f 6e 20 73 6b 69 70 50 61 72 74 69 61 ction skipPartia 0000f940: 6c 6c 79 45 6d 69 74 74 65 64 45 78 70 72 65 73 llyEmittedExpres 0000f950: 73 69 6f 6e 73 28 6e 6f 64 65 29 20 7b 0a 20 20 sions(node) {. 0000f960: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 0000f970: 73 6b 69 70 4f 75 74 65 72 45 78 70 72 65 73 73 skipOuterExpress 0000f980: 69 6f 6e 73 28 6e 6f 64 65 2c 20 38 20 2f 2a 20 ions(node, 8 /* 0000f990: 4f 75 74 65 72 45 78 70 72 65 73 73 69 6f 6e 4b OuterExpressionK 0000f9a0: 69 6e 64 73 2e 50 61 72 74 69 61 6c 6c 79 45 6d inds.PartiallyEm 0000f9b0: 69 74 74 65 64 45 78 70 72 65 73 73 69 6f 6e 73 ittedExpressions 0000f9c0: 20 2a 2f 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 */);. }. 0000f9d0: 74 73 2e 73 6b 69 70 50 61 72 74 69 61 6c 6c 79 ts.skipPartially 0000f9e0: 45 6d 69 74 74 65 64 45 78 70 72 65 73 73 69 6f EmittedExpressio 0000f9f0: 6e 73 20 3d 20 73 6b 69 70 50 61 72 74 69 61 6c ns = skipPartial 0000fa00: 6c 79 45 6d 69 74 74 65 64 45 78 70 72 65 73 73 lyEmittedExpress 0000fa10: 69 6f 6e 73 3b 0a 20 20 20 20 66 75 6e 63 74 69 ions;. functi 0000fa20: 6f 6e 20 69 73 4e 6f 6e 4e 75 6c 6c 43 68 61 69 on isNonNullChai 0000fa30: 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 n(node) {. 0000fa40: 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 4e 6f return ts.isNo 0000fa50: 6e 4e 75 6c 6c 45 78 70 72 65 73 73 69 6f 6e 28 nNullExpression( 0000fa60: 6e 6f 64 65 29 20 26 26 20 21 21 28 6e 6f 64 65 node) && !!(node 0000fa70: 2e 66 6c 61 67 73 20 26 20 33 32 20 2f 2a 20 4e .flags & 32 /* N 0000fa80: 6f 64 65 46 6c 61 67 73 2e 4f 70 74 69 6f 6e 61 odeFlags.Optiona 0000fa90: 6c 43 68 61 69 6e 20 2a 2f 29 3b 0a 20 20 20 20 lChain */);. 0000faa0: 7d 0a 20 20 20 20 74 73 2e 69 73 4e 6f 6e 4e 75 }. ts.isNonNu 0000fab0: 6c 6c 43 68 61 69 6e 20 3d 20 69 73 4e 6f 6e 4e llChain = isNonN 0000fac0: 75 6c 6c 43 68 61 69 6e 3b 0a 20 20 20 20 66 75 ullChain;. fu 0000fad0: 6e 63 74 69 6f 6e 20 69 73 42 72 65 61 6b 4f 72 nction isBreakOr 0000fae0: 43 6f 6e 74 69 6e 75 65 53 74 61 74 65 6d 65 6e ContinueStatemen 0000faf0: 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 t(node) {. 0000fb00: 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 6b 69 return node.ki 0000fb10: 6e 64 20 3d 3d 3d 20 32 34 36 20 2f 2a 20 53 79 nd === 246 /* Sy 0000fb20: 6e 74 61 78 4b 69 6e 64 2e 42 72 65 61 6b 53 74 ntaxKind.BreakSt 0000fb30: 61 74 65 6d 65 6e 74 20 2a 2f 20 7c 7c 20 6e 6f atement */ || no 0000fb40: 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 34 35 20 de.kind === 245 0000fb50: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f /* SyntaxKind.Co 0000fb60: 6e 74 69 6e 75 65 53 74 61 74 65 6d 65 6e 74 20 ntinueStatement 0000fb70: 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 */;. }. ts 0000fb80: 2e 69 73 42 72 65 61 6b 4f 72 43 6f 6e 74 69 6e .isBreakOrContin 0000fb90: 75 65 53 74 61 74 65 6d 65 6e 74 20 3d 20 69 73 ueStatement = is 0000fba0: 42 72 65 61 6b 4f 72 43 6f 6e 74 69 6e 75 65 53 BreakOrContinueS 0000fbb0: 74 61 74 65 6d 65 6e 74 3b 0a 20 20 20 20 66 75 tatement;. fu 0000fbc0: 6e 63 74 69 6f 6e 20 69 73 4e 61 6d 65 64 45 78 nction isNamedEx 0000fbd0: 70 6f 72 74 42 69 6e 64 69 6e 67 73 28 6e 6f 64 portBindings(nod 0000fbe0: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 e) {. ret 0000fbf0: 75 72 6e 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d urn node.kind == 0000fc00: 3d 20 32 37 34 20 2f 2a 20 53 79 6e 74 61 78 4b = 274 /* SyntaxK 0000fc10: 69 6e 64 2e 4e 61 6d 65 73 70 61 63 65 45 78 70 ind.NamespaceExp 0000fc20: 6f 72 74 20 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 6b ort */ || node.k 0000fc30: 69 6e 64 20 3d 3d 3d 20 32 37 33 20 2f 2a 20 53 ind === 273 /* S 0000fc40: 79 6e 74 61 78 4b 69 6e 64 2e 4e 61 6d 65 64 45 yntaxKind.NamedE 0000fc50: 78 70 6f 72 74 73 20 2a 2f 3b 0a 20 20 20 20 7d xports */;. } 0000fc60: 0a 20 20 20 20 74 73 2e 69 73 4e 61 6d 65 64 45 . ts.isNamedE 0000fc70: 78 70 6f 72 74 42 69 6e 64 69 6e 67 73 20 3d 20 xportBindings = 0000fc80: 69 73 4e 61 6d 65 64 45 78 70 6f 72 74 42 69 6e isNamedExportBin 0000fc90: 64 69 6e 67 73 3b 0a 20 20 20 20 66 75 6e 63 74 dings;. funct 0000fca0: 69 6f 6e 20 69 73 55 6e 70 61 72 73 65 64 54 65 ion isUnparsedTe 0000fcb0: 78 74 4c 69 6b 65 28 6e 6f 64 65 29 20 7b 0a 20 xtLike(node) {. 0000fcc0: 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 6e switch (n 0000fcd0: 6f 64 65 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 ode.kind) {. 0000fce0: 20 20 20 20 20 20 20 20 63 61 73 65 20 33 30 32 case 302 0000fcf0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 55 /* SyntaxKind.U 0000fd00: 6e 70 61 72 73 65 64 54 65 78 74 20 2a 2f 3a 0a nparsedText */:. 0000fd10: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0000fd20: 20 33 30 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 303 /* SyntaxKi 0000fd30: 6e 64 2e 55 6e 70 61 72 73 65 64 49 6e 74 65 72 nd.UnparsedInter 0000fd40: 6e 61 6c 54 65 78 74 20 2a 2f 3a 0a 20 20 20 20 nalText */:. 0000fd50: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 0000fd60: 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 rn true;. 0000fd70: 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 default:. 0000fd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 0000fd90: 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 turn false;. 0000fda0: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 }. }. 0000fdb0: 74 73 2e 69 73 55 6e 70 61 72 73 65 64 54 65 78 ts.isUnparsedTex 0000fdc0: 74 4c 69 6b 65 20 3d 20 69 73 55 6e 70 61 72 73 tLike = isUnpars 0000fdd0: 65 64 54 65 78 74 4c 69 6b 65 3b 0a 20 20 20 20 edTextLike;. 0000fde0: 66 75 6e 63 74 69 6f 6e 20 69 73 55 6e 70 61 72 function isUnpar 0000fdf0: 73 65 64 4e 6f 64 65 28 6e 6f 64 65 29 20 7b 0a sedNode(node) {. 0000fe00: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 return i 0000fe10: 73 55 6e 70 61 72 73 65 64 54 65 78 74 4c 69 6b sUnparsedTextLik 0000fe20: 65 28 6e 6f 64 65 29 20 7c 7c 0a 20 20 20 20 20 e(node) ||. 0000fe30: 20 20 20 20 20 20 20 6e 6f 64 65 2e 6b 69 6e 64 node.kind 0000fe40: 20 3d 3d 3d 20 33 30 30 20 2f 2a 20 53 79 6e 74 === 300 /* Synt 0000fe50: 61 78 4b 69 6e 64 2e 55 6e 70 61 72 73 65 64 50 axKind.UnparsedP 0000fe60: 72 6f 6c 6f 67 75 65 20 2a 2f 20 7c 7c 0a 20 20 rologue */ ||. 0000fe70: 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 2e 6b node.k 0000fe80: 69 6e 64 20 3d 3d 3d 20 33 30 34 20 2f 2a 20 53 ind === 304 /* S 0000fe90: 79 6e 74 61 78 4b 69 6e 64 2e 55 6e 70 61 72 73 yntaxKind.Unpars 0000fea0: 65 64 53 79 6e 74 68 65 74 69 63 52 65 66 65 72 edSyntheticRefer 0000feb0: 65 6e 63 65 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 ence */;. }. 0000fec0: 20 20 20 74 73 2e 69 73 55 6e 70 61 72 73 65 64 ts.isUnparsed 0000fed0: 4e 6f 64 65 20 3d 20 69 73 55 6e 70 61 72 73 65 Node = isUnparse 0000fee0: 64 4e 6f 64 65 3b 0a 20 20 20 20 66 75 6e 63 74 dNode;. funct 0000fef0: 69 6f 6e 20 69 73 4a 53 44 6f 63 50 72 6f 70 65 ion isJSDocPrope 0000ff00: 72 74 79 4c 69 6b 65 54 61 67 28 6e 6f 64 65 29 rtyLikeTag(node) 0000ff10: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 0000ff20: 6e 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 n node.kind === 0000ff30: 33 34 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 347 /* SyntaxKin 0000ff40: 64 2e 4a 53 44 6f 63 50 72 6f 70 65 72 74 79 54 d.JSDocPropertyT 0000ff50: 61 67 20 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 6b 69 ag */ || node.ki 0000ff60: 6e 64 20 3d 3d 3d 20 33 34 30 20 2f 2a 20 53 79 nd === 340 /* Sy 0000ff70: 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 50 61 ntaxKind.JSDocPa 0000ff80: 72 61 6d 65 74 65 72 54 61 67 20 2a 2f 3b 0a 20 rameterTag */;. 0000ff90: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4a 53 }. ts.isJS 0000ffa0: 44 6f 63 50 72 6f 70 65 72 74 79 4c 69 6b 65 54 DocPropertyLikeT 0000ffb0: 61 67 20 3d 20 69 73 4a 53 44 6f 63 50 72 6f 70 ag = isJSDocProp 0000ffc0: 65 72 74 79 4c 69 6b 65 54 61 67 3b 0a 20 20 20 ertyLikeTag;. 0000ffd0: 20 2f 2f 20 23 65 6e 64 72 65 67 69 6f 6e 0a 20 // #endregion. 0000ffe0: 20 20 20 2f 2f 20 23 72 65 67 69 6f 6e 0a 20 20 // #region. 0000fff0: 20 20 2f 2f 20 4e 6f 64 65 20 74 65 73 74 73 0a // Node tests. 00010000: 20 20 20 20 2f 2f 0a 20 20 20 20 2f 2f 20 41 6c //. // Al 00010010: 6c 20 6e 6f 64 65 20 74 65 73 74 73 20 69 6e 20 l node tests in 00010020: 74 68 65 20 66 6f 6c 6c 6f 77 69 6e 67 20 6c 69 the following li 00010030: 73 74 20 73 68 6f 75 6c 64 20 2a 6e 6f 74 2a 20 st should *not* 00010040: 72 65 66 65 72 65 6e 63 65 20 70 61 72 65 6e 74 reference parent 00010050: 20 70 6f 69 6e 74 65 72 73 20 73 6f 20 74 68 61 pointers so tha 00010060: 74 0a 20 20 20 20 2f 2f 20 74 68 65 79 20 6d 61 t. // they ma 00010070: 79 20 62 65 20 75 73 65 64 20 77 69 74 68 20 74 y be used with t 00010080: 72 61 6e 73 66 6f 72 6d 61 74 69 6f 6e 73 2e 0a ransformations.. 00010090: 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c /* @internal 000100a0: 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e */. function 000100b0: 20 69 73 4e 6f 64 65 28 6e 6f 64 65 29 20 7b 0a isNode(node) {. 000100c0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 return i 000100d0: 73 4e 6f 64 65 4b 69 6e 64 28 6e 6f 64 65 2e 6b sNodeKind(node.k 000100e0: 69 6e 64 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 ind);. }. 000100f0: 74 73 2e 69 73 4e 6f 64 65 20 3d 20 69 73 4e 6f ts.isNode = isNo 00010100: 64 65 3b 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 de;. /* @inte 00010110: 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 rnal */. func 00010120: 74 69 6f 6e 20 69 73 4e 6f 64 65 4b 69 6e 64 28 tion isNodeKind( 00010130: 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 kind) {. 00010140: 72 65 74 75 72 6e 20 6b 69 6e 64 20 3e 3d 20 31 return kind >= 1 00010150: 36 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 61 /* SyntaxKind 00010160: 2e 46 69 72 73 74 4e 6f 64 65 20 2a 2f 3b 0a 20 .FirstNode */;. 00010170: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4e 6f }. ts.isNo 00010180: 64 65 4b 69 6e 64 20 3d 20 69 73 4e 6f 64 65 4b deKind = isNodeK 00010190: 69 6e 64 3b 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 ind;. /**. 000101a0: 20 20 2a 20 54 72 75 65 20 69 66 20 6b 69 6e 64 * True if kind 000101b0: 20 69 73 20 6f 66 20 73 6f 6d 65 20 74 6f 6b 65 is of some toke 000101c0: 6e 20 73 79 6e 74 61 78 20 6b 69 6e 64 2e 0a 20 n syntax kind.. 000101d0: 20 20 20 20 2a 20 46 6f 72 20 65 78 61 6d 70 6c * For exampl 000101e0: 65 2c 20 74 68 69 73 20 69 73 20 74 72 75 65 20 e, this is true 000101f0: 66 6f 72 20 61 6e 20 49 66 4b 65 79 77 6f 72 64 for an IfKeyword 00010200: 20 62 75 74 20 6e 6f 74 20 66 6f 72 20 61 6e 20 but not for an 00010210: 49 66 53 74 61 74 65 6d 65 6e 74 2e 0a 20 20 20 IfStatement.. 00010220: 20 20 2a 20 4c 69 74 65 72 61 6c 73 20 61 72 65 * Literals are 00010230: 20 63 6f 6e 73 69 64 65 72 65 64 20 74 6f 6b 65 considered toke 00010240: 6e 73 2c 20 65 78 63 65 70 74 20 54 65 6d 70 6c ns, except Templ 00010250: 61 74 65 4c 69 74 65 72 61 6c 2c 20 62 75 74 20 ateLiteral, but 00010260: 64 6f 65 73 20 69 6e 63 6c 75 64 65 20 54 65 6d does include Tem 00010270: 70 6c 61 74 65 48 65 61 64 2f 4d 69 64 64 6c 65 plateHead/Middle 00010280: 2f 54 61 69 6c 2e 0a 20 20 20 20 20 2a 2f 0a 20 /Tail.. */. 00010290: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 54 6f function isTo 000102a0: 6b 65 6e 4b 69 6e 64 28 6b 69 6e 64 29 20 7b 0a kenKind(kind) {. 000102b0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b return k 000102c0: 69 6e 64 20 3e 3d 20 30 20 2f 2a 20 53 79 6e 74 ind >= 0 /* Synt 000102d0: 61 78 4b 69 6e 64 2e 46 69 72 73 74 54 6f 6b 65 axKind.FirstToke 000102e0: 6e 20 2a 2f 20 26 26 20 6b 69 6e 64 20 3c 3d 20 n */ && kind <= 000102f0: 31 36 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 160 /* SyntaxKin 00010300: 64 2e 4c 61 73 74 54 6f 6b 65 6e 20 2a 2f 3b 0a d.LastToken */;. 00010310: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 54 }. ts.isT 00010320: 6f 6b 65 6e 4b 69 6e 64 20 3d 20 69 73 54 6f 6b okenKind = isTok 00010330: 65 6e 4b 69 6e 64 3b 0a 20 20 20 20 2f 2a 2a 0a enKind;. /**. 00010340: 20 20 20 20 20 2a 20 54 72 75 65 20 69 66 20 6e * True if n 00010350: 6f 64 65 20 69 73 20 6f 66 20 73 6f 6d 65 20 74 ode is of some t 00010360: 6f 6b 65 6e 20 73 79 6e 74 61 78 20 6b 69 6e 64 oken syntax kind 00010370: 2e 0a 20 20 20 20 20 2a 20 46 6f 72 20 65 78 61 .. * For exa 00010380: 6d 70 6c 65 2c 20 74 68 69 73 20 69 73 20 74 72 mple, this is tr 00010390: 75 65 20 66 6f 72 20 61 6e 20 49 66 4b 65 79 77 ue for an IfKeyw 000103a0: 6f 72 64 20 62 75 74 20 6e 6f 74 20 66 6f 72 20 ord but not for 000103b0: 61 6e 20 49 66 53 74 61 74 65 6d 65 6e 74 2e 0a an IfStatement.. 000103c0: 20 20 20 20 20 2a 20 4c 69 74 65 72 61 6c 73 20 * Literals 000103d0: 61 72 65 20 63 6f 6e 73 69 64 65 72 65 64 20 74 are considered t 000103e0: 6f 6b 65 6e 73 2c 20 65 78 63 65 70 74 20 54 65 okens, except Te 000103f0: 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c 2c 20 62 mplateLiteral, b 00010400: 75 74 20 64 6f 65 73 20 69 6e 63 6c 75 64 65 20 ut does include 00010410: 54 65 6d 70 6c 61 74 65 48 65 61 64 2f 4d 69 64 TemplateHead/Mid 00010420: 64 6c 65 2f 54 61 69 6c 2e 0a 20 20 20 20 20 2a dle/Tail.. * 00010430: 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 /. function i 00010440: 73 54 6f 6b 65 6e 28 6e 29 20 7b 0a 20 20 20 20 sToken(n) {. 00010450: 20 20 20 20 72 65 74 75 72 6e 20 69 73 54 6f 6b return isTok 00010460: 65 6e 4b 69 6e 64 28 6e 2e 6b 69 6e 64 29 3b 0a enKind(n.kind);. 00010470: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 54 }. ts.isT 00010480: 6f 6b 65 6e 20 3d 20 69 73 54 6f 6b 65 6e 3b 0a oken = isToken;. 00010490: 20 20 20 20 2f 2f 20 4e 6f 64 65 20 41 72 72 61 // Node Arra 000104a0: 79 73 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 ys. /* @inter 000104b0: 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 nal */. funct 000104c0: 69 6f 6e 20 69 73 4e 6f 64 65 41 72 72 61 79 28 ion isNodeArray( 000104d0: 61 72 72 61 79 29 20 7b 0a 20 20 20 20 20 20 20 array) {. 000104e0: 20 72 65 74 75 72 6e 20 61 72 72 61 79 2e 68 61 return array.ha 000104f0: 73 4f 77 6e 50 72 6f 70 65 72 74 79 28 22 70 6f sOwnProperty("po 00010500: 73 22 29 20 26 26 20 61 72 72 61 79 2e 68 61 73 s") && array.has 00010510: 4f 77 6e 50 72 6f 70 65 72 74 79 28 22 65 6e 64 OwnProperty("end 00010520: 22 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 ");. }. ts 00010530: 2e 69 73 4e 6f 64 65 41 72 72 61 79 20 3d 20 69 .isNodeArray = i 00010540: 73 4e 6f 64 65 41 72 72 61 79 3b 0a 20 20 20 20 sNodeArray;. 00010550: 2f 2f 20 4c 69 74 65 72 61 6c 73 0a 20 20 20 20 // Literals. 00010560: 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a /* @internal */. 00010570: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4c function isL 00010580: 69 74 65 72 61 6c 4b 69 6e 64 28 6b 69 6e 64 29 iteralKind(kind) 00010590: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 000105a0: 6e 20 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e n 8 /* SyntaxKin 000105b0: 64 2e 46 69 72 73 74 4c 69 74 65 72 61 6c 54 6f d.FirstLiteralTo 000105c0: 6b 65 6e 20 2a 2f 20 3c 3d 20 6b 69 6e 64 20 26 ken */ <= kind & 000105d0: 26 20 6b 69 6e 64 20 3c 3d 20 31 34 20 2f 2a 20 & kind <= 14 /* 000105e0: 53 79 6e 74 61 78 4b 69 6e 64 2e 4c 61 73 74 4c SyntaxKind.LastL 000105f0: 69 74 65 72 61 6c 54 6f 6b 65 6e 20 2a 2f 3b 0a iteralToken */;. 00010600: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4c }. ts.isL 00010610: 69 74 65 72 61 6c 4b 69 6e 64 20 3d 20 69 73 4c iteralKind = isL 00010620: 69 74 65 72 61 6c 4b 69 6e 64 3b 0a 20 20 20 20 iteralKind;. 00010630: 66 75 6e 63 74 69 6f 6e 20 69 73 4c 69 74 65 72 function isLiter 00010640: 61 6c 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 alExpression(nod 00010650: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 e) {. ret 00010660: 75 72 6e 20 69 73 4c 69 74 65 72 61 6c 4b 69 6e urn isLiteralKin 00010670: 64 28 6e 6f 64 65 2e 6b 69 6e 64 29 3b 0a 20 20 d(node.kind);. 00010680: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4c 69 74 }. ts.isLit 00010690: 65 72 61 6c 45 78 70 72 65 73 73 69 6f 6e 20 3d eralExpression = 000106a0: 20 69 73 4c 69 74 65 72 61 6c 45 78 70 72 65 73 isLiteralExpres 000106b0: 73 69 6f 6e 3b 0a 20 20 20 20 2f 2a 2a 20 40 69 sion;. /** @i 000106c0: 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 nternal */. f 000106d0: 75 6e 63 74 69 6f 6e 20 69 73 4c 69 74 65 72 61 unction isLitera 000106e0: 6c 45 78 70 72 65 73 73 69 6f 6e 4f 66 4f 62 6a lExpressionOfObj 000106f0: 65 63 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ect(node) {. 00010700: 20 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 65 switch (node 00010710: 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 .kind) {. 00010720: 20 20 20 20 20 63 61 73 65 20 32 30 35 20 2f 2a case 205 /* 00010730: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4f 62 6a 65 SyntaxKind.Obje 00010740: 63 74 4c 69 74 65 72 61 6c 45 78 70 72 65 73 73 ctLiteralExpress 00010750: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 00010760: 20 20 20 20 63 61 73 65 20 32 30 34 20 2f 2a 20 case 204 /* 00010770: 53 79 6e 74 61 78 4b 69 6e 64 2e 41 72 72 61 79 SyntaxKind.Array 00010780: 4c 69 74 65 72 61 6c 45 78 70 72 65 73 73 69 6f LiteralExpressio 00010790: 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 n */:. 000107a0: 20 20 63 61 73 65 20 31 33 20 2f 2a 20 53 79 6e case 13 /* Syn 000107b0: 74 61 78 4b 69 6e 64 2e 52 65 67 75 6c 61 72 45 taxKind.RegularE 000107c0: 78 70 72 65 73 73 69 6f 6e 4c 69 74 65 72 61 6c xpressionLiteral 000107d0: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 000107e0: 20 63 61 73 65 20 32 31 33 20 2f 2a 20 53 79 6e case 213 /* Syn 000107f0: 74 61 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e taxKind.Function 00010800: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 00010810: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00010820: 32 32 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 226 /* SyntaxKin 00010830: 64 2e 43 6c 61 73 73 45 78 70 72 65 73 73 69 6f d.ClassExpressio 00010840: 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 n */:. 00010850: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 return tru 00010860: 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 e;. }. 00010870: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 return fals 00010880: 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e e;. }. ts. 00010890: 69 73 4c 69 74 65 72 61 6c 45 78 70 72 65 73 73 isLiteralExpress 000108a0: 69 6f 6e 4f 66 4f 62 6a 65 63 74 20 3d 20 69 73 ionOfObject = is 000108b0: 4c 69 74 65 72 61 6c 45 78 70 72 65 73 73 69 6f LiteralExpressio 000108c0: 6e 4f 66 4f 62 6a 65 63 74 3b 0a 20 20 20 20 2f nOfObject;. / 000108d0: 2f 20 50 73 65 75 64 6f 2d 6c 69 74 65 72 61 6c / Pseudo-literal 000108e0: 73 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e s. /* @intern 000108f0: 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 al */. functi 00010900: 6f 6e 20 69 73 54 65 6d 70 6c 61 74 65 4c 69 74 on isTemplateLit 00010910: 65 72 61 6c 4b 69 6e 64 28 6b 69 6e 64 29 20 7b eralKind(kind) { 00010920: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 00010930: 31 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 14 /* SyntaxKind 00010940: 2e 46 69 72 73 74 54 65 6d 70 6c 61 74 65 54 6f .FirstTemplateTo 00010950: 6b 65 6e 20 2a 2f 20 3c 3d 20 6b 69 6e 64 20 26 ken */ <= kind & 00010960: 26 20 6b 69 6e 64 20 3c 3d 20 31 37 20 2f 2a 20 & kind <= 17 /* 00010970: 53 79 6e 74 61 78 4b 69 6e 64 2e 4c 61 73 74 54 SyntaxKind.LastT 00010980: 65 6d 70 6c 61 74 65 54 6f 6b 65 6e 20 2a 2f 3b emplateToken */; 00010990: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 000109a0: 54 65 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c 4b TemplateLiteralK 000109b0: 69 6e 64 20 3d 20 69 73 54 65 6d 70 6c 61 74 65 ind = isTemplate 000109c0: 4c 69 74 65 72 61 6c 4b 69 6e 64 3b 0a 20 20 20 LiteralKind;. 000109d0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 54 65 6d 70 function isTemp 000109e0: 6c 61 74 65 4c 69 74 65 72 61 6c 54 6f 6b 65 6e lateLiteralToken 000109f0: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 00010a00: 20 72 65 74 75 72 6e 20 69 73 54 65 6d 70 6c 61 return isTempla 00010a10: 74 65 4c 69 74 65 72 61 6c 4b 69 6e 64 28 6e 6f teLiteralKind(no 00010a20: 64 65 2e 6b 69 6e 64 29 3b 0a 20 20 20 20 7d 0a de.kind);. }. 00010a30: 20 20 20 20 74 73 2e 69 73 54 65 6d 70 6c 61 74 ts.isTemplat 00010a40: 65 4c 69 74 65 72 61 6c 54 6f 6b 65 6e 20 3d 20 eLiteralToken = 00010a50: 69 73 54 65 6d 70 6c 61 74 65 4c 69 74 65 72 61 isTemplateLitera 00010a60: 6c 54 6f 6b 65 6e 3b 0a 20 20 20 20 66 75 6e 63 lToken;. func 00010a70: 74 69 6f 6e 20 69 73 54 65 6d 70 6c 61 74 65 4d tion isTemplateM 00010a80: 69 64 64 6c 65 4f 72 54 65 6d 70 6c 61 74 65 54 iddleOrTemplateT 00010a90: 61 69 6c 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ail(node) {. 00010aa0: 20 20 20 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e var kind = n 00010ab0: 6f 64 65 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 ode.kind;. 00010ac0: 20 20 72 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d return kind == 00010ad0: 3d 20 31 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 = 16 /* SyntaxKi 00010ae0: 6e 64 2e 54 65 6d 70 6c 61 74 65 4d 69 64 64 6c nd.TemplateMiddl 00010af0: 65 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 e */. 00010b00: 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 37 20 || kind === 17 00010b10: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 65 /* SyntaxKind.Te 00010b20: 6d 70 6c 61 74 65 54 61 69 6c 20 2a 2f 3b 0a 20 mplateTail */;. 00010b30: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 54 65 }. ts.isTe 00010b40: 6d 70 6c 61 74 65 4d 69 64 64 6c 65 4f 72 54 65 mplateMiddleOrTe 00010b50: 6d 70 6c 61 74 65 54 61 69 6c 20 3d 20 69 73 54 mplateTail = isT 00010b60: 65 6d 70 6c 61 74 65 4d 69 64 64 6c 65 4f 72 54 emplateMiddleOrT 00010b70: 65 6d 70 6c 61 74 65 54 61 69 6c 3b 0a 20 20 20 emplateTail;. 00010b80: 20 66 75 6e 63 74 69 6f 6e 20 69 73 49 6d 70 6f function isImpo 00010b90: 72 74 4f 72 45 78 70 6f 72 74 53 70 65 63 69 66 rtOrExportSpecif 00010ba0: 69 65 72 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ier(node) {. 00010bb0: 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 return ts.is 00010bc0: 49 6d 70 6f 72 74 53 70 65 63 69 66 69 65 72 28 ImportSpecifier( 00010bd0: 6e 6f 64 65 29 20 7c 7c 20 74 73 2e 69 73 45 78 node) || ts.isEx 00010be0: 70 6f 72 74 53 70 65 63 69 66 69 65 72 28 6e 6f portSpecifier(no 00010bf0: 64 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 de);. }. t 00010c00: 73 2e 69 73 49 6d 70 6f 72 74 4f 72 45 78 70 6f s.isImportOrExpo 00010c10: 72 74 53 70 65 63 69 66 69 65 72 20 3d 20 69 73 rtSpecifier = is 00010c20: 49 6d 70 6f 72 74 4f 72 45 78 70 6f 72 74 53 70 ImportOrExportSp 00010c30: 65 63 69 66 69 65 72 3b 0a 20 20 20 20 66 75 6e ecifier;. fun 00010c40: 63 74 69 6f 6e 20 69 73 54 79 70 65 4f 6e 6c 79 ction isTypeOnly 00010c50: 49 6d 70 6f 72 74 4f 72 45 78 70 6f 72 74 44 65 ImportOrExportDe 00010c60: 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 20 claration(node) 00010c70: 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 {. switch 00010c80: 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 7b 0a 20 (node.kind) {. 00010c90: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00010ca0: 32 37 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 270 /* SyntaxKin 00010cb0: 64 2e 49 6d 70 6f 72 74 53 70 65 63 69 66 69 65 d.ImportSpecifie 00010cc0: 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 r */:. 00010cd0: 20 20 63 61 73 65 20 32 37 35 20 2f 2a 20 53 79 case 275 /* Sy 00010ce0: 6e 74 61 78 4b 69 6e 64 2e 45 78 70 6f 72 74 53 ntaxKind.ExportS 00010cf0: 70 65 63 69 66 69 65 72 20 2a 2f 3a 0a 20 20 20 pecifier */:. 00010d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00010d10: 75 72 6e 20 6e 6f 64 65 2e 69 73 54 79 70 65 4f urn node.isTypeO 00010d20: 6e 6c 79 20 7c 7c 20 6e 6f 64 65 2e 70 61 72 65 nly || node.pare 00010d30: 6e 74 2e 70 61 72 65 6e 74 2e 69 73 54 79 70 65 nt.parent.isType 00010d40: 4f 6e 6c 79 3b 0a 20 20 20 20 20 20 20 20 20 20 Only;. 00010d50: 20 20 63 61 73 65 20 32 36 38 20 2f 2a 20 53 79 case 268 /* Sy 00010d60: 6e 74 61 78 4b 69 6e 64 2e 4e 61 6d 65 73 70 61 ntaxKind.Namespa 00010d70: 63 65 49 6d 70 6f 72 74 20 2a 2f 3a 0a 20 20 20 ceImport */:. 00010d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00010d90: 75 72 6e 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e urn node.parent. 00010da0: 69 73 54 79 70 65 4f 6e 6c 79 3b 0a 20 20 20 20 isTypeOnly;. 00010db0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 36 37 case 267 00010dc0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 /* SyntaxKind.I 00010dd0: 6d 70 6f 72 74 43 6c 61 75 73 65 20 2a 2f 3a 0a mportClause */:. 00010de0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00010df0: 20 32 36 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 265 /* SyntaxKi 00010e00: 6e 64 2e 49 6d 70 6f 72 74 45 71 75 61 6c 73 44 nd.ImportEqualsD 00010e10: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 00010e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 00010e30: 65 74 75 72 6e 20 6e 6f 64 65 2e 69 73 54 79 70 eturn node.isTyp 00010e40: 65 4f 6e 6c 79 3b 0a 20 20 20 20 20 20 20 20 20 eOnly;. 00010e50: 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 default:. 00010e60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00010e70: 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 rn false;. 00010e80: 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 }. }. ts 00010e90: 2e 69 73 54 79 70 65 4f 6e 6c 79 49 6d 70 6f 72 .isTypeOnlyImpor 00010ea0: 74 4f 72 45 78 70 6f 72 74 44 65 63 6c 61 72 61 tOrExportDeclara 00010eb0: 74 69 6f 6e 20 3d 20 69 73 54 79 70 65 4f 6e 6c tion = isTypeOnl 00010ec0: 79 49 6d 70 6f 72 74 4f 72 45 78 70 6f 72 74 44 yImportOrExportD 00010ed0: 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 20 eclaration;. 00010ee0: 66 75 6e 63 74 69 6f 6e 20 69 73 41 73 73 65 72 function isAsser 00010ef0: 74 69 6f 6e 4b 65 79 28 6e 6f 64 65 29 20 7b 0a tionKey(node) {. 00010f00: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 00010f10: 73 2e 69 73 53 74 72 69 6e 67 4c 69 74 65 72 61 s.isStringLitera 00010f20: 6c 28 6e 6f 64 65 29 20 7c 7c 20 74 73 2e 69 73 l(node) || ts.is 00010f30: 49 64 65 6e 74 69 66 69 65 72 28 6e 6f 64 65 29 Identifier(node) 00010f40: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 00010f50: 73 41 73 73 65 72 74 69 6f 6e 4b 65 79 20 3d 20 sAssertionKey = 00010f60: 69 73 41 73 73 65 72 74 69 6f 6e 4b 65 79 3b 0a isAssertionKey;. 00010f70: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 function isS 00010f80: 74 72 69 6e 67 54 65 78 74 43 6f 6e 74 61 69 6e tringTextContain 00010f90: 69 6e 67 4e 6f 64 65 28 6e 6f 64 65 29 20 7b 0a ingNode(node) {. 00010fa0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e return n 00010fb0: 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 30 20 ode.kind === 10 00010fc0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 74 /* SyntaxKind.St 00010fd0: 72 69 6e 67 4c 69 74 65 72 61 6c 20 2a 2f 20 7c ringLiteral */ | 00010fe0: 7c 20 69 73 54 65 6d 70 6c 61 74 65 4c 69 74 65 | isTemplateLite 00010ff0: 72 61 6c 4b 69 6e 64 28 6e 6f 64 65 2e 6b 69 6e ralKind(node.kin 00011000: 64 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 d);. }. ts 00011010: 2e 69 73 53 74 72 69 6e 67 54 65 78 74 43 6f 6e .isStringTextCon 00011020: 74 61 69 6e 69 6e 67 4e 6f 64 65 20 3d 20 69 73 tainingNode = is 00011030: 53 74 72 69 6e 67 54 65 78 74 43 6f 6e 74 61 69 StringTextContai 00011040: 6e 69 6e 67 4e 6f 64 65 3b 0a 20 20 20 20 2f 2f ningNode;. // 00011050: 20 49 64 65 6e 74 69 66 69 65 72 73 0a 20 20 20 Identifiers. 00011060: 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f /* @internal */ 00011070: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 . function is 00011080: 47 65 6e 65 72 61 74 65 64 49 64 65 6e 74 69 66 GeneratedIdentif 00011090: 69 65 72 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ier(node) {. 000110a0: 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 return ts.is 000110b0: 49 64 65 6e 74 69 66 69 65 72 28 6e 6f 64 65 29 Identifier(node) 000110c0: 20 26 26 20 28 6e 6f 64 65 2e 61 75 74 6f 47 65 && (node.autoGe 000110d0: 6e 65 72 61 74 65 46 6c 61 67 73 20 26 20 37 20 nerateFlags & 7 000110e0: 2f 2a 20 47 65 6e 65 72 61 74 65 64 49 64 65 6e /* GeneratedIden 000110f0: 74 69 66 69 65 72 46 6c 61 67 73 2e 4b 69 6e 64 tifierFlags.Kind 00011100: 4d 61 73 6b 20 2a 2f 29 20 3e 20 30 20 2f 2a 20 Mask */) > 0 /* 00011110: 47 65 6e 65 72 61 74 65 64 49 64 65 6e 74 69 66 GeneratedIdentif 00011120: 69 65 72 46 6c 61 67 73 2e 4e 6f 6e 65 20 2a 2f ierFlags.None */ 00011130: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 00011140: 73 47 65 6e 65 72 61 74 65 64 49 64 65 6e 74 69 sGeneratedIdenti 00011150: 66 69 65 72 20 3d 20 69 73 47 65 6e 65 72 61 74 fier = isGenerat 00011160: 65 64 49 64 65 6e 74 69 66 69 65 72 3b 0a 20 20 edIdentifier;. 00011170: 20 20 2f 2f 20 50 72 69 76 61 74 65 20 49 64 65 // Private Ide 00011180: 6e 74 69 66 69 65 72 73 0a 20 20 20 20 2f 2a 40 ntifiers. /*@ 00011190: 69 6e 74 65 72 6e 61 6c 2a 2f 0a 20 20 20 20 66 internal*/. f 000111a0: 75 6e 63 74 69 6f 6e 20 69 73 50 72 69 76 61 74 unction isPrivat 000111b0: 65 49 64 65 6e 74 69 66 69 65 72 43 6c 61 73 73 eIdentifierClass 000111c0: 45 6c 65 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 ElementDeclarati 000111d0: 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 on(node) {. 000111e0: 20 20 20 72 65 74 75 72 6e 20 28 74 73 2e 69 73 return (ts.is 000111f0: 50 72 6f 70 65 72 74 79 44 65 63 6c 61 72 61 74 PropertyDeclarat 00011200: 69 6f 6e 28 6e 6f 64 65 29 20 7c 7c 20 69 73 4d ion(node) || isM 00011210: 65 74 68 6f 64 4f 72 41 63 63 65 73 73 6f 72 28 ethodOrAccessor( 00011220: 6e 6f 64 65 29 29 20 26 26 20 74 73 2e 69 73 50 node)) && ts.isP 00011230: 72 69 76 61 74 65 49 64 65 6e 74 69 66 69 65 72 rivateIdentifier 00011240: 28 6e 6f 64 65 2e 6e 61 6d 65 29 3b 0a 20 20 20 (node.name);. 00011250: 20 7d 0a 20 20 20 20 74 73 2e 69 73 50 72 69 76 }. ts.isPriv 00011260: 61 74 65 49 64 65 6e 74 69 66 69 65 72 43 6c 61 ateIdentifierCla 00011270: 73 73 45 6c 65 6d 65 6e 74 44 65 63 6c 61 72 61 ssElementDeclara 00011280: 74 69 6f 6e 20 3d 20 69 73 50 72 69 76 61 74 65 tion = isPrivate 00011290: 49 64 65 6e 74 69 66 69 65 72 43 6c 61 73 73 45 IdentifierClassE 000112a0: 6c 65 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 6f lementDeclaratio 000112b0: 6e 3b 0a 20 20 20 20 2f 2a 40 69 6e 74 65 72 6e n;. /*@intern 000112c0: 61 6c 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f al*/. functio 000112d0: 6e 20 69 73 50 72 69 76 61 74 65 49 64 65 6e 74 n isPrivateIdent 000112e0: 69 66 69 65 72 50 72 6f 70 65 72 74 79 41 63 63 ifierPropertyAcc 000112f0: 65 73 73 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f essExpression(no 00011300: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 de) {. re 00011310: 74 75 72 6e 20 74 73 2e 69 73 50 72 6f 70 65 72 turn ts.isProper 00011320: 74 79 41 63 63 65 73 73 45 78 70 72 65 73 73 69 tyAccessExpressi 00011330: 6f 6e 28 6e 6f 64 65 29 20 26 26 20 74 73 2e 69 on(node) && ts.i 00011340: 73 50 72 69 76 61 74 65 49 64 65 6e 74 69 66 69 sPrivateIdentifi 00011350: 65 72 28 6e 6f 64 65 2e 6e 61 6d 65 29 3b 0a 20 er(node.name);. 00011360: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 50 72 }. ts.isPr 00011370: 69 76 61 74 65 49 64 65 6e 74 69 66 69 65 72 50 ivateIdentifierP 00011380: 72 6f 70 65 72 74 79 41 63 63 65 73 73 45 78 70 ropertyAccessExp 00011390: 72 65 73 73 69 6f 6e 20 3d 20 69 73 50 72 69 76 ression = isPriv 000113a0: 61 74 65 49 64 65 6e 74 69 66 69 65 72 50 72 6f ateIdentifierPro 000113b0: 70 65 72 74 79 41 63 63 65 73 73 45 78 70 72 65 pertyAccessExpre 000113c0: 73 73 69 6f 6e 3b 0a 20 20 20 20 2f 2f 20 4b 65 ssion;. // Ke 000113d0: 79 77 6f 72 64 73 0a 20 20 20 20 2f 2a 20 40 69 ywords. /* @i 000113e0: 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 nternal */. f 000113f0: 75 6e 63 74 69 6f 6e 20 69 73 4d 6f 64 69 66 69 unction isModifi 00011400: 65 72 4b 69 6e 64 28 74 6f 6b 65 6e 29 20 7b 0a erKind(token) {. 00011410: 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 switch ( 00011420: 74 6f 6b 65 6e 29 20 7b 0a 20 20 20 20 20 20 20 token) {. 00011430: 20 20 20 20 20 63 61 73 65 20 31 32 36 20 2f 2a case 126 /* 00011440: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 62 73 74 SyntaxKind.Abst 00011450: 72 61 63 74 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a ractKeyword */:. 00011460: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00011470: 20 31 33 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 131 /* SyntaxKi 00011480: 6e 64 2e 41 73 79 6e 63 4b 65 79 77 6f 72 64 20 nd.AsyncKeyword 00011490: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 000114a0: 63 61 73 65 20 38 35 20 2f 2a 20 53 79 6e 74 61 case 85 /* Synta 000114b0: 78 4b 69 6e 64 2e 43 6f 6e 73 74 4b 65 79 77 6f xKind.ConstKeywo 000114c0: 72 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 rd */:. 000114d0: 20 20 20 63 61 73 65 20 31 33 35 20 2f 2a 20 53 case 135 /* S 000114e0: 79 6e 74 61 78 4b 69 6e 64 2e 44 65 63 6c 61 72 yntaxKind.Declar 000114f0: 65 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 eKeyword */:. 00011500: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 38 38 case 88 00011510: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 44 /* SyntaxKind.D 00011520: 65 66 61 75 6c 74 4b 65 79 77 6f 72 64 20 2a 2f efaultKeyword */ 00011530: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 00011540: 73 65 20 39 33 20 2f 2a 20 53 79 6e 74 61 78 4b se 93 /* SyntaxK 00011550: 69 6e 64 2e 45 78 70 6f 72 74 4b 65 79 77 6f 72 ind.ExportKeywor 00011560: 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 d */:. 00011570: 20 20 63 61 73 65 20 31 30 31 20 2f 2a 20 53 79 case 101 /* Sy 00011580: 6e 74 61 78 4b 69 6e 64 2e 49 6e 4b 65 79 77 6f ntaxKind.InKeywo 00011590: 72 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 rd */:. 000115a0: 20 20 20 63 61 73 65 20 31 32 33 20 2f 2a 20 53 case 123 /* S 000115b0: 79 6e 74 61 78 4b 69 6e 64 2e 50 75 62 6c 69 63 yntaxKind.Public 000115c0: 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 Keyword */:. 000115d0: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 32 31 case 121 000115e0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 /* SyntaxKind.P 000115f0: 72 69 76 61 74 65 4b 65 79 77 6f 72 64 20 2a 2f rivateKeyword */ 00011600: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 00011610: 73 65 20 31 32 32 20 2f 2a 20 53 79 6e 74 61 78 se 122 /* Syntax 00011620: 4b 69 6e 64 2e 50 72 6f 74 65 63 74 65 64 4b 65 Kind.ProtectedKe 00011630: 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 20 20 yword */:. 00011640: 20 20 20 20 20 20 63 61 73 65 20 31 34 35 20 2f case 145 / 00011650: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 52 65 61 * SyntaxKind.Rea 00011660: 64 6f 6e 6c 79 4b 65 79 77 6f 72 64 20 2a 2f 3a donlyKeyword */: 00011670: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00011680: 65 20 31 32 34 20 2f 2a 20 53 79 6e 74 61 78 4b e 124 /* SyntaxK 00011690: 69 6e 64 2e 53 74 61 74 69 63 4b 65 79 77 6f 72 ind.StaticKeywor 000116a0: 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 d */:. 000116b0: 20 20 63 61 73 65 20 31 34 34 20 2f 2a 20 53 79 case 144 /* Sy 000116c0: 6e 74 61 78 4b 69 6e 64 2e 4f 75 74 4b 65 79 77 ntaxKind.OutKeyw 000116d0: 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ord */:. 000116e0: 20 20 20 20 63 61 73 65 20 31 35 39 20 2f 2a 20 case 159 /* 000116f0: 53 79 6e 74 61 78 4b 69 6e 64 2e 4f 76 65 72 72 SyntaxKind.Overr 00011700: 69 64 65 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 ideKeyword */:. 00011710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 00011720: 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 eturn true;. 00011730: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 }. re 00011740: 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 turn false;. 00011750: 7d 0a 20 20 20 20 74 73 2e 69 73 4d 6f 64 69 66 }. ts.isModif 00011760: 69 65 72 4b 69 6e 64 20 3d 20 69 73 4d 6f 64 69 ierKind = isModi 00011770: 66 69 65 72 4b 69 6e 64 3b 0a 20 20 20 20 2f 2a fierKind;. /* 00011780: 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 @internal */. 00011790: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 50 61 72 function isPar 000117a0: 61 6d 65 74 65 72 50 72 6f 70 65 72 74 79 4d 6f ameterPropertyMo 000117b0: 64 69 66 69 65 72 28 6b 69 6e 64 29 20 7b 0a 20 difier(kind) {. 000117c0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 21 return !! 000117d0: 28 74 73 2e 6d 6f 64 69 66 69 65 72 54 6f 46 6c (ts.modifierToFl 000117e0: 61 67 28 6b 69 6e 64 29 20 26 20 31 36 34 37 36 ag(kind) & 16476 000117f0: 20 2f 2a 20 4d 6f 64 69 66 69 65 72 46 6c 61 67 /* ModifierFlag 00011800: 73 2e 50 61 72 61 6d 65 74 65 72 50 72 6f 70 65 s.ParameterPrope 00011810: 72 74 79 4d 6f 64 69 66 69 65 72 20 2a 2f 29 3b rtyModifier */); 00011820: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00011830: 50 61 72 61 6d 65 74 65 72 50 72 6f 70 65 72 74 ParameterPropert 00011840: 79 4d 6f 64 69 66 69 65 72 20 3d 20 69 73 50 61 yModifier = isPa 00011850: 72 61 6d 65 74 65 72 50 72 6f 70 65 72 74 79 4d rameterPropertyM 00011860: 6f 64 69 66 69 65 72 3b 0a 20 20 20 20 2f 2a 20 odifier;. /* 00011870: 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 @internal */. 00011880: 20 66 75 6e 63 74 69 6f 6e 20 69 73 43 6c 61 73 function isClas 00011890: 73 4d 65 6d 62 65 72 4d 6f 64 69 66 69 65 72 28 sMemberModifier( 000118a0: 69 64 54 6f 6b 65 6e 29 20 7b 0a 20 20 20 20 20 idToken) {. 000118b0: 20 20 20 72 65 74 75 72 6e 20 69 73 50 61 72 61 return isPara 000118c0: 6d 65 74 65 72 50 72 6f 70 65 72 74 79 4d 6f 64 meterPropertyMod 000118d0: 69 66 69 65 72 28 69 64 54 6f 6b 65 6e 29 20 7c ifier(idToken) | 000118e0: 7c 20 69 64 54 6f 6b 65 6e 20 3d 3d 3d 20 31 32 | idToken === 12 000118f0: 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4 /* SyntaxKind. 00011900: 53 74 61 74 69 63 4b 65 79 77 6f 72 64 20 2a 2f StaticKeyword */ 00011910: 20 7c 7c 20 69 64 54 6f 6b 65 6e 20 3d 3d 3d 20 || idToken === 00011920: 31 35 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 159 /* SyntaxKin 00011930: 64 2e 4f 76 65 72 72 69 64 65 4b 65 79 77 6f 72 d.OverrideKeywor 00011940: 64 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 d */;. }. 00011950: 74 73 2e 69 73 43 6c 61 73 73 4d 65 6d 62 65 72 ts.isClassMember 00011960: 4d 6f 64 69 66 69 65 72 20 3d 20 69 73 43 6c 61 Modifier = isCla 00011970: 73 73 4d 65 6d 62 65 72 4d 6f 64 69 66 69 65 72 ssMemberModifier 00011980: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 00011990: 73 4d 6f 64 69 66 69 65 72 28 6e 6f 64 65 29 20 sModifier(node) 000119a0: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 000119b0: 20 69 73 4d 6f 64 69 66 69 65 72 4b 69 6e 64 28 isModifierKind( 000119c0: 6e 6f 64 65 2e 6b 69 6e 64 29 3b 0a 20 20 20 20 node.kind);. 000119d0: 7d 0a 20 20 20 20 74 73 2e 69 73 4d 6f 64 69 66 }. ts.isModif 000119e0: 69 65 72 20 3d 20 69 73 4d 6f 64 69 66 69 65 72 ier = isModifier 000119f0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 00011a00: 73 45 6e 74 69 74 79 4e 61 6d 65 28 6e 6f 64 65 sEntityName(node 00011a10: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 00011a20: 6b 69 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 kind = node.kind 00011a30: 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e ;. return 00011a40: 20 6b 69 6e 64 20 3d 3d 3d 20 31 36 31 20 2f 2a kind === 161 /* 00011a50: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 51 75 61 6c SyntaxKind.Qual 00011a60: 69 66 69 65 64 4e 61 6d 65 20 2a 2f 0a 20 20 20 ifiedName */. 00011a70: 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 || kind 00011a80: 20 3d 3d 3d 20 37 39 20 2f 2a 20 53 79 6e 74 61 === 79 /* Synta 00011a90: 78 4b 69 6e 64 2e 49 64 65 6e 74 69 66 69 65 72 xKind.Identifier 00011aa0: 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 */;. }. t 00011ab0: 73 2e 69 73 45 6e 74 69 74 79 4e 61 6d 65 20 3d s.isEntityName = 00011ac0: 20 69 73 45 6e 74 69 74 79 4e 61 6d 65 3b 0a 20 isEntityName;. 00011ad0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 50 72 function isPr 00011ae0: 6f 70 65 72 74 79 4e 61 6d 65 28 6e 6f 64 65 29 opertyName(node) 00011af0: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6b {. var k 00011b00: 69 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 3b ind = node.kind; 00011b10: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 00011b20: 6b 69 6e 64 20 3d 3d 3d 20 37 39 20 2f 2a 20 53 kind === 79 /* S 00011b30: 79 6e 74 61 78 4b 69 6e 64 2e 49 64 65 6e 74 69 yntaxKind.Identi 00011b40: 66 69 65 72 20 2a 2f 0a 20 20 20 20 20 20 20 20 fier */. 00011b50: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 00011b60: 38 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 80 /* SyntaxKind 00011b70: 2e 50 72 69 76 61 74 65 49 64 65 6e 74 69 66 69 .PrivateIdentifi 00011b80: 65 72 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 er */. 00011b90: 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 30 || kind === 10 00011ba0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 /* SyntaxKind.S 00011bb0: 74 72 69 6e 67 4c 69 74 65 72 61 6c 20 2a 2f 0a tringLiteral */. 00011bc0: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 00011bd0: 69 6e 64 20 3d 3d 3d 20 38 20 2f 2a 20 53 79 6e ind === 8 /* Syn 00011be0: 74 61 78 4b 69 6e 64 2e 4e 75 6d 65 72 69 63 4c taxKind.NumericL 00011bf0: 69 74 65 72 61 6c 20 2a 2f 0a 20 20 20 20 20 20 iteral */. 00011c00: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 00011c10: 3d 20 31 36 32 20 2f 2a 20 53 79 6e 74 61 78 4b = 162 /* SyntaxK 00011c20: 69 6e 64 2e 43 6f 6d 70 75 74 65 64 50 72 6f 70 ind.ComputedProp 00011c30: 65 72 74 79 4e 61 6d 65 20 2a 2f 3b 0a 20 20 20 ertyName */;. 00011c40: 20 7d 0a 20 20 20 20 74 73 2e 69 73 50 72 6f 70 }. ts.isProp 00011c50: 65 72 74 79 4e 61 6d 65 20 3d 20 69 73 50 72 6f ertyName = isPro 00011c60: 70 65 72 74 79 4e 61 6d 65 3b 0a 20 20 20 20 66 pertyName;. f 00011c70: 75 6e 63 74 69 6f 6e 20 69 73 42 69 6e 64 69 6e unction isBindin 00011c80: 67 4e 61 6d 65 28 6e 6f 64 65 29 20 7b 0a 20 20 gName(node) {. 00011c90: 20 20 20 20 20 20 76 61 72 20 6b 69 6e 64 20 3d var kind = 00011ca0: 20 6e 6f 64 65 2e 6b 69 6e 64 3b 0a 20 20 20 20 node.kind;. 00011cb0: 20 20 20 20 72 65 74 75 72 6e 20 6b 69 6e 64 20 return kind 00011cc0: 3d 3d 3d 20 37 39 20 2f 2a 20 53 79 6e 74 61 78 === 79 /* Syntax 00011cd0: 4b 69 6e 64 2e 49 64 65 6e 74 69 66 69 65 72 20 Kind.Identifier 00011ce0: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 00011cf0: 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 30 31 20 2f | kind === 201 / 00011d00: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4f 62 6a * SyntaxKind.Obj 00011d10: 65 63 74 42 69 6e 64 69 6e 67 50 61 74 74 65 72 ectBindingPatter 00011d20: 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 n */. 00011d30: 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 30 32 || kind === 202 00011d40: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 /* SyntaxKind.A 00011d50: 72 72 61 79 42 69 6e 64 69 6e 67 50 61 74 74 65 rrayBindingPatte 00011d60: 72 6e 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 rn */;. }. 00011d70: 20 74 73 2e 69 73 42 69 6e 64 69 6e 67 4e 61 6d ts.isBindingNam 00011d80: 65 20 3d 20 69 73 42 69 6e 64 69 6e 67 4e 61 6d e = isBindingNam 00011d90: 65 3b 0a 20 20 20 20 2f 2f 20 46 75 6e 63 74 69 e;. // Functi 00011da0: 6f 6e 73 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ons. function 00011db0: 20 69 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 28 isFunctionLike( 00011dc0: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 00011dd0: 72 65 74 75 72 6e 20 21 21 6e 6f 64 65 20 26 26 return !!node && 00011de0: 20 69 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 4b isFunctionLikeK 00011df0: 69 6e 64 28 6e 6f 64 65 2e 6b 69 6e 64 29 3b 0a ind(node.kind);. 00011e00: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 46 }. ts.isF 00011e10: 75 6e 63 74 69 6f 6e 4c 69 6b 65 20 3d 20 69 73 unctionLike = is 00011e20: 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 3b 0a 20 20 FunctionLike;. 00011e30: 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a /* @internal * 00011e40: 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 /. function i 00011e50: 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 4f 72 43 sFunctionLikeOrC 00011e60: 6c 61 73 73 53 74 61 74 69 63 42 6c 6f 63 6b 44 lassStaticBlockD 00011e70: 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 eclaration(node) 00011e80: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00011e90: 6e 20 21 21 6e 6f 64 65 20 26 26 20 28 69 73 46 n !!node && (isF 00011ea0: 75 6e 63 74 69 6f 6e 4c 69 6b 65 4b 69 6e 64 28 unctionLikeKind( 00011eb0: 6e 6f 64 65 2e 6b 69 6e 64 29 20 7c 7c 20 74 73 node.kind) || ts 00011ec0: 2e 69 73 43 6c 61 73 73 53 74 61 74 69 63 42 6c .isClassStaticBl 00011ed0: 6f 63 6b 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e ockDeclaration(n 00011ee0: 6f 64 65 29 29 3b 0a 20 20 20 20 7d 0a 20 20 20 ode));. }. 00011ef0: 20 74 73 2e 69 73 46 75 6e 63 74 69 6f 6e 4c 69 ts.isFunctionLi 00011f00: 6b 65 4f 72 43 6c 61 73 73 53 74 61 74 69 63 42 keOrClassStaticB 00011f10: 6c 6f 63 6b 44 65 63 6c 61 72 61 74 69 6f 6e 20 lockDeclaration 00011f20: 3d 20 69 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 = isFunctionLike 00011f30: 4f 72 43 6c 61 73 73 53 74 61 74 69 63 42 6c 6f OrClassStaticBlo 00011f40: 63 6b 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 ckDeclaration;. 00011f50: 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 /* @internal 00011f60: 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 */. function 00011f70: 69 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 44 65 isFunctionLikeDe 00011f80: 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 20 claration(node) 00011f90: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 00011fa0: 20 6e 6f 64 65 20 26 26 20 69 73 46 75 6e 63 74 node && isFunct 00011fb0: 69 6f 6e 4c 69 6b 65 44 65 63 6c 61 72 61 74 69 ionLikeDeclarati 00011fc0: 6f 6e 4b 69 6e 64 28 6e 6f 64 65 2e 6b 69 6e 64 onKind(node.kind 00011fd0: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 00011fe0: 69 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 44 65 isFunctionLikeDe 00011ff0: 63 6c 61 72 61 74 69 6f 6e 20 3d 20 69 73 46 75 claration = isFu 00012000: 6e 63 74 69 6f 6e 4c 69 6b 65 44 65 63 6c 61 72 nctionLikeDeclar 00012010: 61 74 69 6f 6e 3b 0a 20 20 20 20 2f 2a 20 40 69 ation;. /* @i 00012020: 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 nternal */. f 00012030: 75 6e 63 74 69 6f 6e 20 69 73 42 6f 6f 6c 65 61 unction isBoolea 00012040: 6e 4c 69 74 65 72 61 6c 28 6e 6f 64 65 29 20 7b nLiteral(node) { 00012050: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 00012060: 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 31 node.kind === 11 00012070: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 00012080: 54 72 75 65 4b 65 79 77 6f 72 64 20 2a 2f 20 7c TrueKeyword */ | 00012090: 7c 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 | node.kind === 000120a0: 39 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 95 /* SyntaxKind 000120b0: 2e 46 61 6c 73 65 4b 65 79 77 6f 72 64 20 2a 2f .FalseKeyword */ 000120c0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 000120d0: 73 42 6f 6f 6c 65 61 6e 4c 69 74 65 72 61 6c 20 sBooleanLiteral 000120e0: 3d 20 69 73 42 6f 6f 6c 65 61 6e 4c 69 74 65 72 = isBooleanLiter 000120f0: 61 6c 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e al;. function 00012100: 20 69 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 44 isFunctionLikeD 00012110: 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 28 6b eclarationKind(k 00012120: 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ind) {. s 00012130: 77 69 74 63 68 20 28 6b 69 6e 64 29 20 7b 0a 20 witch (kind) {. 00012140: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00012150: 32 35 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 256 /* SyntaxKin 00012160: 64 2e 46 75 6e 63 74 69 6f 6e 44 65 63 6c 61 72 d.FunctionDeclar 00012170: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 00012180: 20 20 20 20 20 20 63 61 73 65 20 31 36 39 20 2f case 169 / 00012190: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 74 * SyntaxKind.Met 000121a0: 68 6f 64 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a hodDeclaration * 000121b0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 000121c0: 61 73 65 20 31 37 31 20 2f 2a 20 53 79 6e 74 61 ase 171 /* Synta 000121d0: 78 4b 69 6e 64 2e 43 6f 6e 73 74 72 75 63 74 6f xKind.Constructo 000121e0: 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 r */:. 000121f0: 20 20 63 61 73 65 20 31 37 32 20 2f 2a 20 53 79 case 172 /* Sy 00012200: 6e 74 61 78 4b 69 6e 64 2e 47 65 74 41 63 63 65 ntaxKind.GetAcce 00012210: 73 73 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ssor */:. 00012220: 20 20 20 20 20 63 61 73 65 20 31 37 33 20 2f 2a case 173 /* 00012230: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 65 74 41 SyntaxKind.SetA 00012240: 63 63 65 73 73 6f 72 20 2a 2f 3a 0a 20 20 20 20 ccessor */:. 00012250: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 31 33 case 213 00012260: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 /* SyntaxKind.F 00012270: 75 6e 63 74 69 6f 6e 45 78 70 72 65 73 73 69 6f unctionExpressio 00012280: 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 n */:. 00012290: 20 20 63 61 73 65 20 32 31 34 20 2f 2a 20 53 79 case 214 /* Sy 000122a0: 6e 74 61 78 4b 69 6e 64 2e 41 72 72 6f 77 46 75 ntaxKind.ArrowFu 000122b0: 6e 63 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 nction */:. 000122c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 000122d0: 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 n true;. 000122e0: 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 default:. 000122f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00012300: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 urn false;. 00012310: 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 2f }. }. / 00012320: 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 * @internal */. 00012330: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 46 75 function isFu 00012340: 6e 63 74 69 6f 6e 4c 69 6b 65 4b 69 6e 64 28 6b nctionLikeKind(k 00012350: 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ind) {. s 00012360: 77 69 74 63 68 20 28 6b 69 6e 64 29 20 7b 0a 20 witch (kind) {. 00012370: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00012380: 31 36 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 168 /* SyntaxKin 00012390: 64 2e 4d 65 74 68 6f 64 53 69 67 6e 61 74 75 72 d.MethodSignatur 000123a0: 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 e */:. 000123b0: 20 20 63 61 73 65 20 31 37 34 20 2f 2a 20 53 79 case 174 /* Sy 000123c0: 6e 74 61 78 4b 69 6e 64 2e 43 61 6c 6c 53 69 67 ntaxKind.CallSig 000123d0: 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 20 nature */:. 000123e0: 20 20 20 20 20 20 20 63 61 73 65 20 33 32 33 20 case 323 000123f0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 /* SyntaxKind.JS 00012400: 44 6f 63 53 69 67 6e 61 74 75 72 65 20 2a 2f 3a DocSignature */: 00012410: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00012420: 65 20 31 37 35 20 2f 2a 20 53 79 6e 74 61 78 4b e 175 /* SyntaxK 00012430: 69 6e 64 2e 43 6f 6e 73 74 72 75 63 74 53 69 67 ind.ConstructSig 00012440: 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 20 nature */:. 00012450: 20 20 20 20 20 20 20 63 61 73 65 20 31 37 36 20 case 176 00012460: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6e /* SyntaxKind.In 00012470: 64 65 78 53 69 67 6e 61 74 75 72 65 20 2a 2f 3a dexSignature */: 00012480: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00012490: 65 20 31 37 39 20 2f 2a 20 53 79 6e 74 61 78 4b e 179 /* SyntaxK 000124a0: 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 54 79 70 65 ind.FunctionType 000124b0: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 000124c0: 20 63 61 73 65 20 33 31 37 20 2f 2a 20 53 79 6e case 317 /* Syn 000124d0: 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 46 75 6e taxKind.JSDocFun 000124e0: 63 74 69 6f 6e 54 79 70 65 20 2a 2f 3a 0a 20 20 ctionType */:. 000124f0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 00012500: 38 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 80 /* SyntaxKind 00012510: 2e 43 6f 6e 73 74 72 75 63 74 6f 72 54 79 70 65 .ConstructorType 00012520: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00012530: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 return true 00012540: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 ;. de 00012550: 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 fault:. 00012560: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 73 return is 00012570: 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 44 65 63 6c FunctionLikeDecl 00012580: 61 72 61 74 69 6f 6e 4b 69 6e 64 28 6b 69 6e 64 arationKind(kind 00012590: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 );. }. 000125a0: 20 7d 0a 20 20 20 20 74 73 2e 69 73 46 75 6e 63 }. ts.isFunc 000125b0: 74 69 6f 6e 4c 69 6b 65 4b 69 6e 64 20 3d 20 69 tionLikeKind = i 000125c0: 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 4b 69 6e sFunctionLikeKin 000125d0: 64 3b 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 d;. /* @inter 000125e0: 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 nal */. funct 000125f0: 69 6f 6e 20 69 73 46 75 6e 63 74 69 6f 6e 4f 72 ion isFunctionOr 00012600: 4d 6f 64 75 6c 65 42 6c 6f 63 6b 28 6e 6f 64 65 ModuleBlock(node 00012610: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 00012620: 72 6e 20 74 73 2e 69 73 53 6f 75 72 63 65 46 69 rn ts.isSourceFi 00012630: 6c 65 28 6e 6f 64 65 29 20 7c 7c 20 74 73 2e 69 le(node) || ts.i 00012640: 73 4d 6f 64 75 6c 65 42 6c 6f 63 6b 28 6e 6f 64 sModuleBlock(nod 00012650: 65 29 20 7c 7c 20 74 73 2e 69 73 42 6c 6f 63 6b e) || ts.isBlock 00012660: 28 6e 6f 64 65 29 20 26 26 20 69 73 46 75 6e 63 (node) && isFunc 00012670: 74 69 6f 6e 4c 69 6b 65 28 6e 6f 64 65 2e 70 61 tionLike(node.pa 00012680: 72 65 6e 74 29 3b 0a 20 20 20 20 7d 0a 20 20 20 rent);. }. 00012690: 20 74 73 2e 69 73 46 75 6e 63 74 69 6f 6e 4f 72 ts.isFunctionOr 000126a0: 4d 6f 64 75 6c 65 42 6c 6f 63 6b 20 3d 20 69 73 ModuleBlock = is 000126b0: 46 75 6e 63 74 69 6f 6e 4f 72 4d 6f 64 75 6c 65 FunctionOrModule 000126c0: 42 6c 6f 63 6b 3b 0a 20 20 20 20 2f 2f 20 43 6c Block;. // Cl 000126d0: 61 73 73 65 73 0a 20 20 20 20 66 75 6e 63 74 69 asses. functi 000126e0: 6f 6e 20 69 73 43 6c 61 73 73 45 6c 65 6d 65 6e on isClassElemen 000126f0: 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 t(node) {. 00012700: 20 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 var kind = nod 00012710: 65 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 20 e.kind;. 00012720: 72 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 return kind === 00012730: 31 37 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 171 /* SyntaxKin 00012740: 64 2e 43 6f 6e 73 74 72 75 63 74 6f 72 20 2a 2f d.Constructor */ 00012750: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 . || 00012760: 6b 69 6e 64 20 3d 3d 3d 20 31 36 37 20 2f 2a 20 kind === 167 /* 00012770: 53 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 SyntaxKind.Prope 00012780: 72 74 79 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a rtyDeclaration * 00012790: 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c /. || 000127a0: 20 6b 69 6e 64 20 3d 3d 3d 20 31 36 39 20 2f 2a kind === 169 /* 000127b0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 74 68 SyntaxKind.Meth 000127c0: 6f 64 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f odDeclaration */ 000127d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 . || 000127e0: 6b 69 6e 64 20 3d 3d 3d 20 31 37 32 20 2f 2a 20 kind === 172 /* 000127f0: 53 79 6e 74 61 78 4b 69 6e 64 2e 47 65 74 41 63 SyntaxKind.GetAc 00012800: 63 65 73 73 6f 72 20 2a 2f 0a 20 20 20 20 20 20 cessor */. 00012810: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 00012820: 3d 20 31 37 33 20 2f 2a 20 53 79 6e 74 61 78 4b = 173 /* SyntaxK 00012830: 69 6e 64 2e 53 65 74 41 63 63 65 73 73 6f 72 20 ind.SetAccessor 00012840: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 00012850: 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 37 36 20 2f | kind === 176 / 00012860: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6e 64 * SyntaxKind.Ind 00012870: 65 78 53 69 67 6e 61 74 75 72 65 20 2a 2f 0a 20 exSignature */. 00012880: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 00012890: 6e 64 20 3d 3d 3d 20 31 37 30 20 2f 2a 20 53 79 nd === 170 /* Sy 000128a0: 6e 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 53 74 ntaxKind.ClassSt 000128b0: 61 74 69 63 42 6c 6f 63 6b 44 65 63 6c 61 72 61 aticBlockDeclara 000128c0: 74 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 tion */. 000128d0: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 000128e0: 32 33 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 234 /* SyntaxKin 000128f0: 64 2e 53 65 6d 69 63 6f 6c 6f 6e 43 6c 61 73 73 d.SemicolonClass 00012900: 45 6c 65 6d 65 6e 74 20 2a 2f 3b 0a 20 20 20 20 Element */;. 00012910: 7d 0a 20 20 20 20 74 73 2e 69 73 43 6c 61 73 73 }. ts.isClass 00012920: 45 6c 65 6d 65 6e 74 20 3d 20 69 73 43 6c 61 73 Element = isClas 00012930: 73 45 6c 65 6d 65 6e 74 3b 0a 20 20 20 20 66 75 sElement;. fu 00012940: 6e 63 74 69 6f 6e 20 69 73 43 6c 61 73 73 4c 69 nction isClassLi 00012950: 6b 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 ke(node) {. 00012960: 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 20 26 return node & 00012970: 26 20 28 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d & (node.kind === 00012980: 20 32 35 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 257 /* SyntaxKi 00012990: 6e 64 2e 43 6c 61 73 73 44 65 63 6c 61 72 61 74 nd.ClassDeclarat 000129a0: 69 6f 6e 20 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 6b ion */ || node.k 000129b0: 69 6e 64 20 3d 3d 3d 20 32 32 36 20 2f 2a 20 53 ind === 226 /* S 000129c0: 79 6e 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 45 yntaxKind.ClassE 000129d0: 78 70 72 65 73 73 69 6f 6e 20 2a 2f 29 3b 0a 20 xpression */);. 000129e0: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 43 6c }. ts.isCl 000129f0: 61 73 73 4c 69 6b 65 20 3d 20 69 73 43 6c 61 73 assLike = isClas 00012a00: 73 4c 69 6b 65 3b 0a 20 20 20 20 66 75 6e 63 74 sLike;. funct 00012a10: 69 6f 6e 20 69 73 41 63 63 65 73 73 6f 72 28 6e ion isAccessor(n 00012a20: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 00012a30: 65 74 75 72 6e 20 6e 6f 64 65 20 26 26 20 28 6e eturn node && (n 00012a40: 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 37 32 ode.kind === 172 00012a50: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 47 /* SyntaxKind.G 00012a60: 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 20 7c 7c etAccessor */ || 00012a70: 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 node.kind === 1 00012a80: 37 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 73 /* SyntaxKind 00012a90: 2e 53 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 29 .SetAccessor */) 00012aa0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 00012ab0: 73 41 63 63 65 73 73 6f 72 20 3d 20 69 73 41 63 sAccessor = isAc 00012ac0: 63 65 73 73 6f 72 3b 0a 20 20 20 20 2f 2a 20 40 cessor;. /* @ 00012ad0: 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 internal */. 00012ae0: 66 75 6e 63 74 69 6f 6e 20 69 73 4d 65 74 68 6f function isMetho 00012af0: 64 4f 72 41 63 63 65 73 73 6f 72 28 6e 6f 64 65 dOrAccessor(node 00012b00: 29 20 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 ) {. swit 00012b10: 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 7b ch (node.kind) { 00012b20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00012b30: 65 20 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 4b e 169 /* SyntaxK 00012b40: 69 6e 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 72 ind.MethodDeclar 00012b50: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 00012b60: 20 20 20 20 20 20 63 61 73 65 20 31 37 32 20 2f case 172 / 00012b70: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 47 65 74 * SyntaxKind.Get 00012b80: 41 63 63 65 73 73 6f 72 20 2a 2f 3a 0a 20 20 20 Accessor */:. 00012b90: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 case 17 00012ba0: 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 3 /* SyntaxKind. 00012bb0: 53 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 3a 0a SetAccessor */:. 00012bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00012bd0: 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 return true;. 00012be0: 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 default 00012bf0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 00012c00: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a return false;. 00012c10: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a }. }. 00012c20: 20 20 20 20 74 73 2e 69 73 4d 65 74 68 6f 64 4f ts.isMethodO 00012c30: 72 41 63 63 65 73 73 6f 72 20 3d 20 69 73 4d 65 rAccessor = isMe 00012c40: 74 68 6f 64 4f 72 41 63 63 65 73 73 6f 72 3b 0a thodOrAccessor;. 00012c50: 20 20 20 20 2f 2f 20 54 79 70 65 20 6d 65 6d 62 // Type memb 00012c60: 65 72 73 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ers. function 00012c70: 20 69 73 4d 6f 64 69 66 69 65 72 4c 69 6b 65 28 isModifierLike( 00012c80: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 00012c90: 72 65 74 75 72 6e 20 69 73 4d 6f 64 69 66 69 65 return isModifie 00012ca0: 72 28 6e 6f 64 65 29 20 7c 7c 20 74 73 2e 69 73 r(node) || ts.is 00012cb0: 44 65 63 6f 72 61 74 6f 72 28 6e 6f 64 65 29 3b Decorator(node); 00012cc0: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00012cd0: 4d 6f 64 69 66 69 65 72 4c 69 6b 65 20 3d 20 69 ModifierLike = i 00012ce0: 73 4d 6f 64 69 66 69 65 72 4c 69 6b 65 3b 0a 20 sModifierLike;. 00012cf0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 54 79 function isTy 00012d00: 70 65 45 6c 65 6d 65 6e 74 28 6e 6f 64 65 29 20 peElement(node) 00012d10: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6b 69 {. var ki 00012d20: 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 3b 0a nd = node.kind;. 00012d30: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b return k 00012d40: 69 6e 64 20 3d 3d 3d 20 31 37 35 20 2f 2a 20 53 ind === 175 /* S 00012d50: 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 72 yntaxKind.Constr 00012d60: 75 63 74 53 69 67 6e 61 74 75 72 65 20 2a 2f 0a uctSignature */. 00012d70: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 00012d80: 69 6e 64 20 3d 3d 3d 20 31 37 34 20 2f 2a 20 53 ind === 174 /* S 00012d90: 79 6e 74 61 78 4b 69 6e 64 2e 43 61 6c 6c 53 69 yntaxKind.CallSi 00012da0: 67 6e 61 74 75 72 65 20 2a 2f 0a 20 20 20 20 20 gnature */. 00012db0: 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d || kind = 00012dc0: 3d 3d 20 31 36 36 20 2f 2a 20 53 79 6e 74 61 78 == 166 /* Syntax 00012dd0: 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 53 69 67 Kind.PropertySig 00012de0: 6e 61 74 75 72 65 20 2a 2f 0a 20 20 20 20 20 20 nature */. 00012df0: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 00012e00: 3d 20 31 36 38 20 2f 2a 20 53 79 6e 74 61 78 4b = 168 /* SyntaxK 00012e10: 69 6e 64 2e 4d 65 74 68 6f 64 53 69 67 6e 61 74 ind.MethodSignat 00012e20: 75 72 65 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 ure */. 00012e30: 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 || kind === 1 00012e40: 37 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 76 /* SyntaxKind 00012e50: 2e 49 6e 64 65 78 53 69 67 6e 61 74 75 72 65 20 .IndexSignature 00012e60: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 00012e70: 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 37 32 20 2f | kind === 172 / 00012e80: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 47 65 74 * SyntaxKind.Get 00012e90: 41 63 63 65 73 73 6f 72 20 2a 2f 0a 20 20 20 20 Accessor */. 00012ea0: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 00012eb0: 3d 3d 3d 20 31 37 33 20 2f 2a 20 53 79 6e 74 61 === 173 /* Synta 00012ec0: 78 4b 69 6e 64 2e 53 65 74 41 63 63 65 73 73 6f xKind.SetAccesso 00012ed0: 72 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 r */;. }. 00012ee0: 74 73 2e 69 73 54 79 70 65 45 6c 65 6d 65 6e 74 ts.isTypeElement 00012ef0: 20 3d 20 69 73 54 79 70 65 45 6c 65 6d 65 6e 74 = isTypeElement 00012f00: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 00012f10: 73 43 6c 61 73 73 4f 72 54 79 70 65 45 6c 65 6d sClassOrTypeElem 00012f20: 65 6e 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ent(node) {. 00012f30: 20 20 20 20 72 65 74 75 72 6e 20 69 73 54 79 70 return isTyp 00012f40: 65 45 6c 65 6d 65 6e 74 28 6e 6f 64 65 29 20 7c eElement(node) | 00012f50: 7c 20 69 73 43 6c 61 73 73 45 6c 65 6d 65 6e 74 | isClassElement 00012f60: 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d 0a 20 20 (node);. }. 00012f70: 20 20 74 73 2e 69 73 43 6c 61 73 73 4f 72 54 79 ts.isClassOrTy 00012f80: 70 65 45 6c 65 6d 65 6e 74 20 3d 20 69 73 43 6c peElement = isCl 00012f90: 61 73 73 4f 72 54 79 70 65 45 6c 65 6d 65 6e 74 assOrTypeElement 00012fa0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 00012fb0: 73 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 45 6c sObjectLiteralEl 00012fc0: 65 6d 65 6e 74 4c 69 6b 65 28 6e 6f 64 65 29 20 ementLike(node) 00012fd0: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6b 69 {. var ki 00012fe0: 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 3b 0a nd = node.kind;. 00012ff0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b return k 00013000: 69 6e 64 20 3d 3d 3d 20 32 39 36 20 2f 2a 20 53 ind === 296 /* S 00013010: 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 yntaxKind.Proper 00013020: 74 79 41 73 73 69 67 6e 6d 65 6e 74 20 2a 2f 0a tyAssignment */. 00013030: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 00013040: 69 6e 64 20 3d 3d 3d 20 32 39 37 20 2f 2a 20 53 ind === 297 /* S 00013050: 79 6e 74 61 78 4b 69 6e 64 2e 53 68 6f 72 74 68 yntaxKind.Shorth 00013060: 61 6e 64 50 72 6f 70 65 72 74 79 41 73 73 69 67 andPropertyAssig 00013070: 6e 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 20 nment */. 00013080: 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d || kind === 00013090: 20 32 39 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 298 /* SyntaxKi 000130a0: 6e 64 2e 53 70 72 65 61 64 41 73 73 69 67 6e 6d nd.SpreadAssignm 000130b0: 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 ent */. 000130c0: 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 || kind === 1 000130d0: 36 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 69 /* SyntaxKind 000130e0: 2e 4d 65 74 68 6f 64 44 65 63 6c 61 72 61 74 69 .MethodDeclarati 000130f0: 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 on */. 00013100: 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 37 || kind === 17 00013110: 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 2 /* SyntaxKind. 00013120: 47 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 0a 20 GetAccessor */. 00013130: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 00013140: 6e 64 20 3d 3d 3d 20 31 37 33 20 2f 2a 20 53 79 nd === 173 /* Sy 00013150: 6e 74 61 78 4b 69 6e 64 2e 53 65 74 41 63 63 65 ntaxKind.SetAcce 00013160: 73 73 6f 72 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 ssor */;. }. 00013170: 20 20 20 74 73 2e 69 73 4f 62 6a 65 63 74 4c 69 ts.isObjectLi 00013180: 74 65 72 61 6c 45 6c 65 6d 65 6e 74 4c 69 6b 65 teralElementLike 00013190: 20 3d 20 69 73 4f 62 6a 65 63 74 4c 69 74 65 72 = isObjectLiter 000131a0: 61 6c 45 6c 65 6d 65 6e 74 4c 69 6b 65 3b 0a 20 alElementLike;. 000131b0: 20 20 20 2f 2f 20 54 79 70 65 0a 20 20 20 20 2f // Type. / 000131c0: 2a 2a 0a 20 20 20 20 20 2a 20 4e 6f 64 65 20 74 **. * Node t 000131d0: 65 73 74 20 74 68 61 74 20 64 65 74 65 72 6d 69 est that determi 000131e0: 6e 65 73 20 77 68 65 74 68 65 72 20 61 20 6e 6f nes whether a no 000131f0: 64 65 20 69 73 20 61 20 76 61 6c 69 64 20 74 79 de is a valid ty 00013200: 70 65 20 6e 6f 64 65 2e 0a 20 20 20 20 20 2a 20 pe node.. * 00013210: 54 68 69 73 20 64 69 66 66 65 72 73 20 66 72 6f This differs fro 00013220: 6d 20 74 68 65 20 60 69 73 50 61 72 74 4f 66 54 m the `isPartOfT 00013230: 79 70 65 4e 6f 64 65 60 20 66 75 6e 63 74 69 6f ypeNode` functio 00013240: 6e 20 77 68 69 63 68 20 64 65 74 65 72 6d 69 6e n which determin 00013250: 65 73 20 77 68 65 74 68 65 72 20 61 20 6e 6f 64 es whether a nod 00013260: 65 20 69 73 20 2a 70 61 72 74 2a 0a 20 20 20 20 e is *part*. 00013270: 20 2a 20 6f 66 20 61 20 54 79 70 65 4e 6f 64 65 * of a TypeNode 00013280: 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 .. */. fu 00013290: 6e 63 74 69 6f 6e 20 69 73 54 79 70 65 4e 6f 64 nction isTypeNod 000132a0: 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 e(node) {. 000132b0: 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 54 79 return ts.isTy 000132c0: 70 65 4e 6f 64 65 4b 69 6e 64 28 6e 6f 64 65 2e peNodeKind(node. 000132d0: 6b 69 6e 64 29 3b 0a 20 20 20 20 7d 0a 20 20 20 kind);. }. 000132e0: 20 74 73 2e 69 73 54 79 70 65 4e 6f 64 65 20 3d ts.isTypeNode = 000132f0: 20 69 73 54 79 70 65 4e 6f 64 65 3b 0a 20 20 20 isTypeNode;. 00013300: 20 66 75 6e 63 74 69 6f 6e 20 69 73 46 75 6e 63 function isFunc 00013310: 74 69 6f 6e 4f 72 43 6f 6e 73 74 72 75 63 74 6f tionOrConstructo 00013320: 72 54 79 70 65 4e 6f 64 65 28 6e 6f 64 65 29 20 rTypeNode(node) 00013330: 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 {. switch 00013340: 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 7b 0a 20 (node.kind) {. 00013350: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00013360: 31 37 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 179 /* SyntaxKin 00013370: 64 2e 46 75 6e 63 74 69 6f 6e 54 79 70 65 20 2a d.FunctionType * 00013380: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00013390: 61 73 65 20 31 38 30 20 2f 2a 20 53 79 6e 74 61 ase 180 /* Synta 000133a0: 78 4b 69 6e 64 2e 43 6f 6e 73 74 72 75 63 74 6f xKind.Constructo 000133b0: 72 54 79 70 65 20 2a 2f 3a 0a 20 20 20 20 20 20 rType */:. 000133c0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 000133d0: 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d true;. } 000133e0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 000133f0: 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 20 20 false;. }. 00013400: 20 74 73 2e 69 73 46 75 6e 63 74 69 6f 6e 4f 72 ts.isFunctionOr 00013410: 43 6f 6e 73 74 72 75 63 74 6f 72 54 79 70 65 4e ConstructorTypeN 00013420: 6f 64 65 20 3d 20 69 73 46 75 6e 63 74 69 6f 6e ode = isFunction 00013430: 4f 72 43 6f 6e 73 74 72 75 63 74 6f 72 54 79 70 OrConstructorTyp 00013440: 65 4e 6f 64 65 3b 0a 20 20 20 20 2f 2f 20 42 69 eNode;. // Bi 00013450: 6e 64 69 6e 67 20 70 61 74 74 65 72 6e 73 0a 20 nding patterns. 00013460: 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 /* @internal 00013470: 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 */. function 00013480: 69 73 42 69 6e 64 69 6e 67 50 61 74 74 65 72 6e isBindingPattern 00013490: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 000134a0: 20 69 66 20 28 6e 6f 64 65 29 20 7b 0a 20 20 20 if (node) {. 000134b0: 20 20 20 20 20 20 20 20 20 76 61 72 20 6b 69 6e var kin 000134c0: 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 3b 0a 20 d = node.kind;. 000134d0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 000134e0: 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 30 32 20 2f n kind === 202 / 000134f0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 72 72 * SyntaxKind.Arr 00013500: 61 79 42 69 6e 64 69 6e 67 50 61 74 74 65 72 6e ayBindingPattern 00013510: 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 */. 00013520: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 00013530: 32 30 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 201 /* SyntaxKin 00013540: 64 2e 4f 62 6a 65 63 74 42 69 6e 64 69 6e 67 50 d.ObjectBindingP 00013550: 61 74 74 65 72 6e 20 2a 2f 3b 0a 20 20 20 20 20 attern */;. 00013560: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 }. ret 00013570: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d urn false;. } 00013580: 0a 20 20 20 20 74 73 2e 69 73 42 69 6e 64 69 6e . ts.isBindin 00013590: 67 50 61 74 74 65 72 6e 20 3d 20 69 73 42 69 6e gPattern = isBin 000135a0: 64 69 6e 67 50 61 74 74 65 72 6e 3b 0a 20 20 20 dingPattern;. 000135b0: 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f /* @internal */ 000135c0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 . function is 000135d0: 41 73 73 69 67 6e 6d 65 6e 74 50 61 74 74 65 72 AssignmentPatter 000135e0: 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 n(node) {. 000135f0: 20 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 var kind = nod 00013600: 65 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 20 e.kind;. 00013610: 72 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 return kind === 00013620: 32 30 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 204 /* SyntaxKin 00013630: 64 2e 41 72 72 61 79 4c 69 74 65 72 61 6c 45 78 d.ArrayLiteralEx 00013640: 70 72 65 73 73 69 6f 6e 20 2a 2f 0a 20 20 20 20 pression */. 00013650: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 00013660: 3d 3d 3d 20 32 30 35 20 2f 2a 20 53 79 6e 74 61 === 205 /* Synta 00013670: 78 4b 69 6e 64 2e 4f 62 6a 65 63 74 4c 69 74 65 xKind.ObjectLite 00013680: 72 61 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f ralExpression */ 00013690: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 000136a0: 73 41 73 73 69 67 6e 6d 65 6e 74 50 61 74 74 65 sAssignmentPatte 000136b0: 72 6e 20 3d 20 69 73 41 73 73 69 67 6e 6d 65 6e rn = isAssignmen 000136c0: 74 50 61 74 74 65 72 6e 3b 0a 20 20 20 20 2f 2a tPattern;. /* 000136d0: 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 @internal */. 000136e0: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 41 72 72 function isArr 000136f0: 61 79 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 ayBindingElement 00013700: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 00013710: 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 var kind = node 00013720: 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 20 72 .kind;. r 00013730: 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 eturn kind === 2 00013740: 30 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 03 /* SyntaxKind 00013750: 2e 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 20 .BindingElement 00013760: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 00013770: 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 32 37 20 2f | kind === 227 / 00013780: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4f 6d 69 * SyntaxKind.Omi 00013790: 74 74 65 64 45 78 70 72 65 73 73 69 6f 6e 20 2a ttedExpression * 000137a0: 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e /;. }. ts. 000137b0: 69 73 41 72 72 61 79 42 69 6e 64 69 6e 67 45 6c isArrayBindingEl 000137c0: 65 6d 65 6e 74 20 3d 20 69 73 41 72 72 61 79 42 ement = isArrayB 000137d0: 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 3b 0a 20 indingElement;. 000137e0: 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 44 65 /**. * De 000137f0: 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65 72 termines whether 00013800: 20 74 68 65 20 42 69 6e 64 69 6e 67 4f 72 41 73 the BindingOrAs 00013810: 73 69 67 6e 6d 65 6e 74 45 6c 65 6d 65 6e 74 20 signmentElement 00013820: 69 73 20 61 20 42 69 6e 64 69 6e 67 45 6c 65 6d is a BindingElem 00013830: 65 6e 74 2d 6c 69 6b 65 20 64 65 63 6c 61 72 61 ent-like declara 00013840: 74 69 6f 6e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 tion. */. 00013850: 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f /* @internal */ 00013860: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 . function is 00013870: 44 65 63 6c 61 72 61 74 69 6f 6e 42 69 6e 64 69 DeclarationBindi 00013880: 6e 67 45 6c 65 6d 65 6e 74 28 62 69 6e 64 69 6e ngElement(bindin 00013890: 67 45 6c 65 6d 65 6e 74 29 20 7b 0a 20 20 20 20 gElement) {. 000138a0: 20 20 20 20 73 77 69 74 63 68 20 28 62 69 6e 64 switch (bind 000138b0: 69 6e 67 45 6c 65 6d 65 6e 74 2e 6b 69 6e 64 29 ingElement.kind) 000138c0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 {. c 000138d0: 61 73 65 20 32 35 34 20 2f 2a 20 53 79 6e 74 61 ase 254 /* Synta 000138e0: 78 4b 69 6e 64 2e 56 61 72 69 61 62 6c 65 44 65 xKind.VariableDe 000138f0: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 00013900: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 00013910: 36 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 64 /* SyntaxKind 00013920: 2e 50 61 72 61 6d 65 74 65 72 20 2a 2f 3a 0a 20 .Parameter */:. 00013930: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00013940: 32 30 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 203 /* SyntaxKin 00013950: 64 2e 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 d.BindingElement 00013960: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00013970: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 return true 00013980: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 00013990: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 return false 000139a0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 000139b0: 73 44 65 63 6c 61 72 61 74 69 6f 6e 42 69 6e 64 sDeclarationBind 000139c0: 69 6e 67 45 6c 65 6d 65 6e 74 20 3d 20 69 73 44 ingElement = isD 000139d0: 65 63 6c 61 72 61 74 69 6f 6e 42 69 6e 64 69 6e eclarationBindin 000139e0: 67 45 6c 65 6d 65 6e 74 3b 0a 20 20 20 20 2f 2a gElement;. /* 000139f0: 2a 0a 20 20 20 20 20 2a 20 44 65 74 65 72 6d 69 *. * Determi 00013a00: 6e 65 73 20 77 68 65 74 68 65 72 20 61 20 6e 6f nes whether a no 00013a10: 64 65 20 69 73 20 61 20 42 69 6e 64 69 6e 67 4f de is a BindingO 00013a20: 72 41 73 73 69 67 6e 6d 65 6e 74 50 61 74 74 65 rAssignmentPatte 00013a30: 72 6e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 2f rn. */. / 00013a40: 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 * @internal */. 00013a50: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 42 69 function isBi 00013a60: 6e 64 69 6e 67 4f 72 41 73 73 69 67 6e 6d 65 6e ndingOrAssignmen 00013a70: 74 50 61 74 74 65 72 6e 28 6e 6f 64 65 29 20 7b tPattern(node) { 00013a80: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 00013a90: 69 73 4f 62 6a 65 63 74 42 69 6e 64 69 6e 67 4f isObjectBindingO 00013aa0: 72 41 73 73 69 67 6e 6d 65 6e 74 50 61 74 74 65 rAssignmentPatte 00013ab0: 72 6e 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 rn(node). 00013ac0: 20 20 20 20 20 7c 7c 20 69 73 41 72 72 61 79 42 || isArrayB 00013ad0: 69 6e 64 69 6e 67 4f 72 41 73 73 69 67 6e 6d 65 indingOrAssignme 00013ae0: 6e 74 50 61 74 74 65 72 6e 28 6e 6f 64 65 29 3b ntPattern(node); 00013af0: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00013b00: 42 69 6e 64 69 6e 67 4f 72 41 73 73 69 67 6e 6d BindingOrAssignm 00013b10: 65 6e 74 50 61 74 74 65 72 6e 20 3d 20 69 73 42 entPattern = isB 00013b20: 69 6e 64 69 6e 67 4f 72 41 73 73 69 67 6e 6d 65 indingOrAssignme 00013b30: 6e 74 50 61 74 74 65 72 6e 3b 0a 20 20 20 20 2f ntPattern;. / 00013b40: 2a 2a 0a 20 20 20 20 20 2a 20 44 65 74 65 72 6d **. * Determ 00013b50: 69 6e 65 73 20 77 68 65 74 68 65 72 20 61 20 6e ines whether a n 00013b60: 6f 64 65 20 69 73 20 61 6e 20 4f 62 6a 65 63 74 ode is an Object 00013b70: 42 69 6e 64 69 6e 67 4f 72 41 73 73 69 67 6e 6d BindingOrAssignm 00013b80: 65 6e 74 50 61 74 74 65 72 6e 0a 20 20 20 20 20 entPattern. 00013b90: 2a 2f 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 */. /* @inter 00013ba0: 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 nal */. funct 00013bb0: 69 6f 6e 20 69 73 4f 62 6a 65 63 74 42 69 6e 64 ion isObjectBind 00013bc0: 69 6e 67 4f 72 41 73 73 69 67 6e 6d 65 6e 74 50 ingOrAssignmentP 00013bd0: 61 74 74 65 72 6e 28 6e 6f 64 65 29 20 7b 0a 20 attern(node) {. 00013be0: 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 6e switch (n 00013bf0: 6f 64 65 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 ode.kind) {. 00013c00: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 31 case 201 00013c10: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4f /* SyntaxKind.O 00013c20: 62 6a 65 63 74 42 69 6e 64 69 6e 67 50 61 74 74 bjectBindingPatt 00013c30: 65 72 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ern */:. 00013c40: 20 20 20 20 63 61 73 65 20 32 30 35 20 2f 2a 20 case 205 /* 00013c50: 53 79 6e 74 61 78 4b 69 6e 64 2e 4f 62 6a 65 63 SyntaxKind.Objec 00013c60: 74 4c 69 74 65 72 61 6c 45 78 70 72 65 73 73 69 tLiteralExpressi 00013c70: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 00013c80: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 return tr 00013c90: 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 ue;. }. 00013ca0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c return fal 00013cb0: 73 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 se;. }. ts 00013cc0: 2e 69 73 4f 62 6a 65 63 74 42 69 6e 64 69 6e 67 .isObjectBinding 00013cd0: 4f 72 41 73 73 69 67 6e 6d 65 6e 74 50 61 74 74 OrAssignmentPatt 00013ce0: 65 72 6e 20 3d 20 69 73 4f 62 6a 65 63 74 42 69 ern = isObjectBi 00013cf0: 6e 64 69 6e 67 4f 72 41 73 73 69 67 6e 6d 65 6e ndingOrAssignmen 00013d00: 74 50 61 74 74 65 72 6e 3b 0a 20 20 20 20 2f 2a tPattern;. /* 00013d10: 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 @internal */. 00013d20: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4f 62 6a function isObj 00013d30: 65 63 74 42 69 6e 64 69 6e 67 4f 72 41 73 73 69 ectBindingOrAssi 00013d40: 67 6e 6d 65 6e 74 45 6c 65 6d 65 6e 74 28 6e 6f gnmentElement(no 00013d50: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 73 77 de) {. sw 00013d60: 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 itch (node.kind) 00013d70: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 {. c 00013d80: 61 73 65 20 32 30 33 20 2f 2a 20 53 79 6e 74 61 ase 203 /* Synta 00013d90: 78 4b 69 6e 64 2e 42 69 6e 64 69 6e 67 45 6c 65 xKind.BindingEle 00013da0: 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ment */:. 00013db0: 20 20 20 20 20 63 61 73 65 20 32 39 36 20 2f 2a case 296 /* 00013dc0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 SyntaxKind.Prop 00013dd0: 65 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 20 2a ertyAssignment * 00013de0: 2f 3a 20 2f 2f 20 41 73 73 69 67 6e 6d 65 6e 74 /: // Assignment 00013df0: 50 72 6f 70 65 72 74 79 0a 20 20 20 20 20 20 20 Property. 00013e00: 20 20 20 20 20 63 61 73 65 20 32 39 37 20 2f 2a case 297 /* 00013e10: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 68 6f 72 SyntaxKind.Shor 00013e20: 74 68 61 6e 64 50 72 6f 70 65 72 74 79 41 73 73 thandPropertyAss 00013e30: 69 67 6e 6d 65 6e 74 20 2a 2f 3a 20 2f 2f 20 41 ignment */: // A 00013e40: 73 73 69 67 6e 6d 65 6e 74 50 72 6f 70 65 72 74 ssignmentPropert 00013e50: 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 y. ca 00013e60: 73 65 20 32 39 38 20 2f 2a 20 53 79 6e 74 61 78 se 298 /* Syntax 00013e70: 4b 69 6e 64 2e 53 70 72 65 61 64 41 73 73 69 67 Kind.SpreadAssig 00013e80: 6e 6d 65 6e 74 20 2a 2f 3a 20 2f 2f 20 41 73 73 nment */: // Ass 00013e90: 69 67 6e 6d 65 6e 74 52 65 73 74 50 72 6f 70 65 ignmentRestPrope 00013ea0: 72 74 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 rty. 00013eb0: 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b return true; 00013ec0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }. 00013ed0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b return false; 00013ee0: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00013ef0: 4f 62 6a 65 63 74 42 69 6e 64 69 6e 67 4f 72 41 ObjectBindingOrA 00013f00: 73 73 69 67 6e 6d 65 6e 74 45 6c 65 6d 65 6e 74 ssignmentElement 00013f10: 20 3d 20 69 73 4f 62 6a 65 63 74 42 69 6e 64 69 = isObjectBindi 00013f20: 6e 67 4f 72 41 73 73 69 67 6e 6d 65 6e 74 45 6c ngOrAssignmentEl 00013f30: 65 6d 65 6e 74 3b 0a 20 20 20 20 2f 2a 2a 0a 20 ement;. /**. 00013f40: 20 20 20 20 2a 20 44 65 74 65 72 6d 69 6e 65 73 * Determines 00013f50: 20 77 68 65 74 68 65 72 20 61 20 6e 6f 64 65 20 whether a node 00013f60: 69 73 20 61 6e 20 41 72 72 61 79 42 69 6e 64 69 is an ArrayBindi 00013f70: 6e 67 4f 72 41 73 73 69 67 6e 6d 65 6e 74 50 61 ngOrAssignmentPa 00013f80: 74 74 65 72 6e 0a 20 20 20 20 20 2a 2f 0a 20 20 ttern. */. 00013f90: 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a /* @internal * 00013fa0: 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 /. function i 00013fb0: 73 41 72 72 61 79 42 69 6e 64 69 6e 67 4f 72 41 sArrayBindingOrA 00013fc0: 73 73 69 67 6e 6d 65 6e 74 50 61 74 74 65 72 6e ssignmentPattern 00013fd0: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 00013fe0: 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 switch (node.ki 00013ff0: 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 nd) {. 00014000: 20 20 63 61 73 65 20 32 30 32 20 2f 2a 20 53 79 case 202 /* Sy 00014010: 6e 74 61 78 4b 69 6e 64 2e 41 72 72 61 79 42 69 ntaxKind.ArrayBi 00014020: 6e 64 69 6e 67 50 61 74 74 65 72 6e 20 2a 2f 3a ndingPattern */: 00014030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00014040: 65 20 32 30 34 20 2f 2a 20 53 79 6e 74 61 78 4b e 204 /* SyntaxK 00014050: 69 6e 64 2e 41 72 72 61 79 4c 69 74 65 72 61 6c ind.ArrayLiteral 00014060: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 00014070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 00014080: 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 eturn true;. 00014090: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 }. re 000140a0: 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 turn false;. 000140b0: 7d 0a 20 20 20 20 74 73 2e 69 73 41 72 72 61 79 }. ts.isArray 000140c0: 42 69 6e 64 69 6e 67 4f 72 41 73 73 69 67 6e 6d BindingOrAssignm 000140d0: 65 6e 74 50 61 74 74 65 72 6e 20 3d 20 69 73 41 entPattern = isA 000140e0: 72 72 61 79 42 69 6e 64 69 6e 67 4f 72 41 73 73 rrayBindingOrAss 000140f0: 69 67 6e 6d 65 6e 74 50 61 74 74 65 72 6e 3b 0a ignmentPattern;. 00014100: 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c /* @internal 00014110: 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e */. function 00014120: 20 69 73 50 72 6f 70 65 72 74 79 41 63 63 65 73 isPropertyAcces 00014130: 73 4f 72 51 75 61 6c 69 66 69 65 64 4e 61 6d 65 sOrQualifiedName 00014140: 4f 72 49 6d 70 6f 72 74 54 79 70 65 4e 6f 64 65 OrImportTypeNode 00014150: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 00014160: 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 var kind = node 00014170: 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 20 72 .kind;. r 00014180: 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 eturn kind === 2 00014190: 30 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 06 /* SyntaxKind 000141a0: 2e 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 45 .PropertyAccessE 000141b0: 78 70 72 65 73 73 69 6f 6e 20 2a 2f 0a 20 20 20 xpression */. 000141c0: 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 || kind 000141d0: 20 3d 3d 3d 20 31 36 31 20 2f 2a 20 53 79 6e 74 === 161 /* Synt 000141e0: 61 78 4b 69 6e 64 2e 51 75 61 6c 69 66 69 65 64 axKind.Qualified 000141f0: 4e 61 6d 65 20 2a 2f 0a 20 20 20 20 20 20 20 20 Name */. 00014200: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 00014210: 32 30 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 200 /* SyntaxKin 00014220: 64 2e 49 6d 70 6f 72 74 54 79 70 65 20 2a 2f 3b d.ImportType */; 00014230: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00014240: 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 4f 72 PropertyAccessOr 00014250: 51 75 61 6c 69 66 69 65 64 4e 61 6d 65 4f 72 49 QualifiedNameOrI 00014260: 6d 70 6f 72 74 54 79 70 65 4e 6f 64 65 20 3d 20 mportTypeNode = 00014270: 69 73 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 isPropertyAccess 00014280: 4f 72 51 75 61 6c 69 66 69 65 64 4e 61 6d 65 4f OrQualifiedNameO 00014290: 72 49 6d 70 6f 72 74 54 79 70 65 4e 6f 64 65 3b rImportTypeNode; 000142a0: 0a 20 20 20 20 2f 2f 20 45 78 70 72 65 73 73 69 . // Expressi 000142b0: 6f 6e 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 on. function 000142c0: 69 73 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 isPropertyAccess 000142d0: 4f 72 51 75 61 6c 69 66 69 65 64 4e 61 6d 65 28 OrQualifiedName( 000142e0: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 000142f0: 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 2e var kind = node. 00014300: 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 20 72 65 kind;. re 00014310: 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 30 turn kind === 20 00014320: 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 6 /* SyntaxKind. 00014330: 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 45 78 PropertyAccessEx 00014340: 70 72 65 73 73 69 6f 6e 20 2a 2f 0a 20 20 20 20 pression */. 00014350: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 00014360: 3d 3d 3d 20 31 36 31 20 2f 2a 20 53 79 6e 74 61 === 161 /* Synta 00014370: 78 4b 69 6e 64 2e 51 75 61 6c 69 66 69 65 64 4e xKind.QualifiedN 00014380: 61 6d 65 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ame */;. }. 00014390: 20 20 74 73 2e 69 73 50 72 6f 70 65 72 74 79 41 ts.isPropertyA 000143a0: 63 63 65 73 73 4f 72 51 75 61 6c 69 66 69 65 64 ccessOrQualified 000143b0: 4e 61 6d 65 20 3d 20 69 73 50 72 6f 70 65 72 74 Name = isPropert 000143c0: 79 41 63 63 65 73 73 4f 72 51 75 61 6c 69 66 69 yAccessOrQualifi 000143d0: 65 64 4e 61 6d 65 3b 0a 20 20 20 20 66 75 6e 63 edName;. func 000143e0: 74 69 6f 6e 20 69 73 43 61 6c 6c 4c 69 6b 65 45 tion isCallLikeE 000143f0: 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 xpression(node) 00014400: 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 {. switch 00014410: 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 7b 0a 20 (node.kind) {. 00014420: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00014430: 32 38 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 280 /* SyntaxKin 00014440: 64 2e 4a 73 78 4f 70 65 6e 69 6e 67 45 6c 65 6d d.JsxOpeningElem 00014450: 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ent */:. 00014460: 20 20 20 20 63 61 73 65 20 32 37 39 20 2f 2a 20 case 279 /* 00014470: 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 53 65 SyntaxKind.JsxSe 00014480: 6c 66 43 6c 6f 73 69 6e 67 45 6c 65 6d 65 6e 74 lfClosingElement 00014490: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 000144a0: 20 63 61 73 65 20 32 30 38 20 2f 2a 20 53 79 6e case 208 /* Syn 000144b0: 74 61 78 4b 69 6e 64 2e 43 61 6c 6c 45 78 70 72 taxKind.CallExpr 000144c0: 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ession */:. 000144d0: 20 20 20 20 20 20 20 63 61 73 65 20 32 30 39 20 case 209 000144e0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e 65 /* SyntaxKind.Ne 000144f0: 77 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a wExpression */:. 00014500: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00014510: 20 32 31 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 210 /* SyntaxKi 00014520: 6e 64 2e 54 61 67 67 65 64 54 65 6d 70 6c 61 74 nd.TaggedTemplat 00014530: 65 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a eExpression */:. 00014540: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00014550: 20 31 36 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 165 /* SyntaxKi 00014560: 6e 64 2e 44 65 63 6f 72 61 74 6f 72 20 2a 2f 3a nd.Decorator */: 00014570: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00014580: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 return true;. 00014590: 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c defaul 000145a0: 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t:. 000145b0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b return false; 000145c0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d . }. } 000145d0: 0a 20 20 20 20 74 73 2e 69 73 43 61 6c 6c 4c 69 . ts.isCallLi 000145e0: 6b 65 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 69 keExpression = i 000145f0: 73 43 61 6c 6c 4c 69 6b 65 45 78 70 72 65 73 73 sCallLikeExpress 00014600: 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ion;. functio 00014610: 6e 20 69 73 43 61 6c 6c 4f 72 4e 65 77 45 78 70 n isCallOrNewExp 00014620: 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a ression(node) {. 00014630: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e return n 00014640: 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 30 38 ode.kind === 208 00014650: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 /* SyntaxKind.C 00014660: 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f allExpression */ 00014670: 20 7c 7c 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d || node.kind == 00014680: 3d 20 32 30 39 20 2f 2a 20 53 79 6e 74 61 78 4b = 209 /* SyntaxK 00014690: 69 6e 64 2e 4e 65 77 45 78 70 72 65 73 73 69 6f ind.NewExpressio 000146a0: 6e 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 n */;. }. 000146b0: 74 73 2e 69 73 43 61 6c 6c 4f 72 4e 65 77 45 78 ts.isCallOrNewEx 000146c0: 70 72 65 73 73 69 6f 6e 20 3d 20 69 73 43 61 6c pression = isCal 000146d0: 6c 4f 72 4e 65 77 45 78 70 72 65 73 73 69 6f 6e lOrNewExpression 000146e0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 000146f0: 73 54 65 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c sTemplateLiteral 00014700: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 00014710: 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 var kind = node 00014720: 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 20 72 .kind;. r 00014730: 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 eturn kind === 2 00014740: 32 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 23 /* SyntaxKind 00014750: 2e 54 65 6d 70 6c 61 74 65 45 78 70 72 65 73 73 .TemplateExpress 00014760: 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 ion */. 00014770: 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 || kind === 1 00014780: 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4 /* SyntaxKind. 00014790: 4e 6f 53 75 62 73 74 69 74 75 74 69 6f 6e 54 65 NoSubstitutionTe 000147a0: 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c 20 2a 2f mplateLiteral */ 000147b0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 000147c0: 73 54 65 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c sTemplateLiteral 000147d0: 20 3d 20 69 73 54 65 6d 70 6c 61 74 65 4c 69 74 = isTemplateLit 000147e0: 65 72 61 6c 3b 0a 20 20 20 20 2f 2a 20 40 69 6e eral;. /* @in 000147f0: 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 ternal */. fu 00014800: 6e 63 74 69 6f 6e 20 69 73 4c 65 66 74 48 61 6e nction isLeftHan 00014810: 64 53 69 64 65 45 78 70 72 65 73 73 69 6f 6e 28 dSideExpression( 00014820: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 00014830: 72 65 74 75 72 6e 20 69 73 4c 65 66 74 48 61 6e return isLeftHan 00014840: 64 53 69 64 65 45 78 70 72 65 73 73 69 6f 6e 4b dSideExpressionK 00014850: 69 6e 64 28 73 6b 69 70 50 61 72 74 69 61 6c 6c ind(skipPartiall 00014860: 79 45 6d 69 74 74 65 64 45 78 70 72 65 73 73 69 yEmittedExpressi 00014870: 6f 6e 73 28 6e 6f 64 65 29 2e 6b 69 6e 64 29 3b ons(node).kind); 00014880: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00014890: 4c 65 66 74 48 61 6e 64 53 69 64 65 45 78 70 72 LeftHandSideExpr 000148a0: 65 73 73 69 6f 6e 20 3d 20 69 73 4c 65 66 74 48 ession = isLeftH 000148b0: 61 6e 64 53 69 64 65 45 78 70 72 65 73 73 69 6f andSideExpressio 000148c0: 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 n;. function 000148d0: 69 73 4c 65 66 74 48 61 6e 64 53 69 64 65 45 78 isLeftHandSideEx 000148e0: 70 72 65 73 73 69 6f 6e 4b 69 6e 64 28 6b 69 6e pressionKind(kin 000148f0: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 73 77 69 d) {. swi 00014900: 74 63 68 20 28 6b 69 6e 64 29 20 7b 0a 20 20 20 tch (kind) {. 00014910: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 case 20 00014920: 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 6 /* SyntaxKind. 00014930: 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 45 78 PropertyAccessEx 00014940: 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 pression */:. 00014950: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 case 20 00014960: 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 7 /* SyntaxKind. 00014970: 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 45 78 70 ElementAccessExp 00014980: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 00014990: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 39 case 209 000149a0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e /* SyntaxKind.N 000149b0: 65 77 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a ewExpression */: 000149c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 000149d0: 65 20 32 30 38 20 2f 2a 20 53 79 6e 74 61 78 4b e 208 /* SyntaxK 000149e0: 69 6e 64 2e 43 61 6c 6c 45 78 70 72 65 73 73 69 ind.CallExpressi 000149f0: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 00014a00: 20 20 20 63 61 73 65 20 32 37 38 20 2f 2a 20 53 case 278 /* S 00014a10: 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 45 6c 65 yntaxKind.JsxEle 00014a20: 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ment */:. 00014a30: 20 20 20 20 20 63 61 73 65 20 32 37 39 20 2f 2a case 279 /* 00014a40: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 53 SyntaxKind.JsxS 00014a50: 65 6c 66 43 6c 6f 73 69 6e 67 45 6c 65 6d 65 6e elfClosingElemen 00014a60: 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 t */:. 00014a70: 20 20 63 61 73 65 20 32 38 32 20 2f 2a 20 53 79 case 282 /* Sy 00014a80: 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 46 72 61 67 ntaxKind.JsxFrag 00014a90: 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ment */:. 00014aa0: 20 20 20 20 20 63 61 73 65 20 32 31 30 20 2f 2a case 210 /* 00014ab0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 61 67 67 SyntaxKind.Tagg 00014ac0: 65 64 54 65 6d 70 6c 61 74 65 45 78 70 72 65 73 edTemplateExpres 00014ad0: 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 sion */:. 00014ae0: 20 20 20 20 20 63 61 73 65 20 32 30 34 20 2f 2a case 204 /* 00014af0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 72 72 61 SyntaxKind.Arra 00014b00: 79 4c 69 74 65 72 61 6c 45 78 70 72 65 73 73 69 yLiteralExpressi 00014b10: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 00014b20: 20 20 20 63 61 73 65 20 32 31 32 20 2f 2a 20 53 case 212 /* S 00014b30: 79 6e 74 61 78 4b 69 6e 64 2e 50 61 72 65 6e 74 yntaxKind.Parent 00014b40: 68 65 73 69 7a 65 64 45 78 70 72 65 73 73 69 6f hesizedExpressio 00014b50: 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 n */:. 00014b60: 20 20 63 61 73 65 20 32 30 35 20 2f 2a 20 53 79 case 205 /* Sy 00014b70: 6e 74 61 78 4b 69 6e 64 2e 4f 62 6a 65 63 74 4c ntaxKind.ObjectL 00014b80: 69 74 65 72 61 6c 45 78 70 72 65 73 73 69 6f 6e iteralExpression 00014b90: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00014ba0: 20 63 61 73 65 20 32 32 36 20 2f 2a 20 53 79 6e case 226 /* Syn 00014bb0: 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 45 78 70 taxKind.ClassExp 00014bc0: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 00014bd0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 31 33 case 213 00014be0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 /* SyntaxKind.F 00014bf0: 75 6e 63 74 69 6f 6e 45 78 70 72 65 73 73 69 6f unctionExpressio 00014c00: 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 n */:. 00014c10: 20 20 63 61 73 65 20 37 39 20 2f 2a 20 53 79 6e case 79 /* Syn 00014c20: 74 61 78 4b 69 6e 64 2e 49 64 65 6e 74 69 66 69 taxKind.Identifi 00014c30: 65 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 er */:. 00014c40: 20 20 20 63 61 73 65 20 38 30 20 2f 2a 20 53 79 case 80 /* Sy 00014c50: 6e 74 61 78 4b 69 6e 64 2e 50 72 69 76 61 74 65 ntaxKind.Private 00014c60: 49 64 65 6e 74 69 66 69 65 72 20 2a 2f 3a 20 2f Identifier */: / 00014c70: 2f 20 74 65 63 68 6e 69 63 61 6c 6c 79 20 74 68 / technically th 00014c80: 69 73 20 69 73 20 6f 6e 6c 79 20 61 6e 20 45 78 is is only an Ex 00014c90: 70 72 65 73 73 69 6f 6e 20 69 66 20 69 74 27 73 pression if it's 00014ca0: 20 69 6e 20 61 20 60 23 66 69 65 6c 64 20 69 6e in a `#field in 00014cb0: 20 65 78 70 72 60 20 42 69 6e 61 72 79 45 78 70 expr` BinaryExp 00014cc0: 72 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20 20 ression. 00014cd0: 20 20 20 20 63 61 73 65 20 31 33 20 2f 2a 20 53 case 13 /* S 00014ce0: 79 6e 74 61 78 4b 69 6e 64 2e 52 65 67 75 6c 61 yntaxKind.Regula 00014cf0: 72 45 78 70 72 65 73 73 69 6f 6e 4c 69 74 65 72 rExpressionLiter 00014d00: 61 6c 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 al */:. 00014d10: 20 20 20 63 61 73 65 20 38 20 2f 2a 20 53 79 6e case 8 /* Syn 00014d20: 74 61 78 4b 69 6e 64 2e 4e 75 6d 65 72 69 63 4c taxKind.NumericL 00014d30: 69 74 65 72 61 6c 20 2a 2f 3a 0a 20 20 20 20 20 iteral */:. 00014d40: 20 20 20 20 20 20 20 63 61 73 65 20 39 20 2f 2a case 9 /* 00014d50: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 69 67 49 SyntaxKind.BigI 00014d60: 6e 74 4c 69 74 65 72 61 6c 20 2a 2f 3a 0a 20 20 ntLiteral */:. 00014d70: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 00014d80: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 00014d90: 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 20 2a 2f StringLiteral */ 00014da0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 00014db0: 73 65 20 31 34 20 2f 2a 20 53 79 6e 74 61 78 4b se 14 /* SyntaxK 00014dc0: 69 6e 64 2e 4e 6f 53 75 62 73 74 69 74 75 74 69 ind.NoSubstituti 00014dd0: 6f 6e 54 65 6d 70 6c 61 74 65 4c 69 74 65 72 61 onTemplateLitera 00014de0: 6c 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 l */:. 00014df0: 20 20 63 61 73 65 20 32 32 33 20 2f 2a 20 53 79 case 223 /* Sy 00014e00: 6e 74 61 78 4b 69 6e 64 2e 54 65 6d 70 6c 61 74 ntaxKind.Templat 00014e10: 65 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a eExpression */:. 00014e20: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00014e30: 20 39 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 95 /* SyntaxKin 00014e40: 64 2e 46 61 6c 73 65 4b 65 79 77 6f 72 64 20 2a d.FalseKeyword * 00014e50: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00014e60: 61 73 65 20 31 30 34 20 2f 2a 20 53 79 6e 74 61 ase 104 /* Synta 00014e70: 78 4b 69 6e 64 2e 4e 75 6c 6c 4b 65 79 77 6f 72 xKind.NullKeywor 00014e80: 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 d */:. 00014e90: 20 20 63 61 73 65 20 31 30 38 20 2f 2a 20 53 79 case 108 /* Sy 00014ea0: 6e 74 61 78 4b 69 6e 64 2e 54 68 69 73 4b 65 79 ntaxKind.ThisKey 00014eb0: 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 word */:. 00014ec0: 20 20 20 20 20 63 61 73 65 20 31 31 30 20 2f 2a case 110 /* 00014ed0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 72 75 65 SyntaxKind.True 00014ee0: 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 Keyword */:. 00014ef0: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 30 36 case 106 00014f00: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 /* SyntaxKind.S 00014f10: 75 70 65 72 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a uperKeyword */:. 00014f20: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00014f30: 20 32 33 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 230 /* SyntaxKi 00014f40: 6e 64 2e 4e 6f 6e 4e 75 6c 6c 45 78 70 72 65 73 nd.NonNullExpres 00014f50: 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 sion */:. 00014f60: 20 20 20 20 20 63 61 73 65 20 32 32 38 20 2f 2a case 228 /* 00014f70: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 78 70 72 SyntaxKind.Expr 00014f80: 65 73 73 69 6f 6e 57 69 74 68 54 79 70 65 41 72 essionWithTypeAr 00014f90: 67 75 6d 65 6e 74 73 20 2a 2f 3a 0a 20 20 20 20 guments */:. 00014fa0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 33 31 case 231 00014fb0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d /* SyntaxKind.M 00014fc0: 65 74 61 50 72 6f 70 65 72 74 79 20 2a 2f 3a 0a etaProperty */:. 00014fd0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00014fe0: 20 31 30 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 100 /* SyntaxKi 00014ff0: 6e 64 2e 49 6d 70 6f 72 74 4b 65 79 77 6f 72 64 nd.ImportKeyword 00015000: 20 2a 2f 3a 20 2f 2f 20 74 65 63 68 6e 69 63 61 */: // technica 00015010: 6c 6c 79 20 74 68 69 73 20 69 73 20 6f 6e 6c 79 lly this is only 00015020: 20 61 6e 20 45 78 70 72 65 73 73 69 6f 6e 20 69 an Expression i 00015030: 66 20 69 74 27 73 20 69 6e 20 61 20 43 61 6c 6c f it's in a Call 00015040: 45 78 70 72 65 73 73 69 6f 6e 0a 20 20 20 20 20 Expression. 00015050: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00015060: 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 n true;. 00015070: 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 default:. 00015080: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00015090: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 urn false;. 000150a0: 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 2f }. }. / 000150b0: 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 * @internal */. 000150c0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 55 6e function isUn 000150d0: 61 72 79 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f aryExpression(no 000150e0: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 de) {. re 000150f0: 74 75 72 6e 20 69 73 55 6e 61 72 79 45 78 70 72 turn isUnaryExpr 00015100: 65 73 73 69 6f 6e 4b 69 6e 64 28 73 6b 69 70 50 essionKind(skipP 00015110: 61 72 74 69 61 6c 6c 79 45 6d 69 74 74 65 64 45 artiallyEmittedE 00015120: 78 70 72 65 73 73 69 6f 6e 73 28 6e 6f 64 65 29 xpressions(node) 00015130: 2e 6b 69 6e 64 29 3b 0a 20 20 20 20 7d 0a 20 20 .kind);. }. 00015140: 20 20 74 73 2e 69 73 55 6e 61 72 79 45 78 70 72 ts.isUnaryExpr 00015150: 65 73 73 69 6f 6e 20 3d 20 69 73 55 6e 61 72 79 ession = isUnary 00015160: 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 20 Expression;. 00015170: 66 75 6e 63 74 69 6f 6e 20 69 73 55 6e 61 72 79 function isUnary 00015180: 45 78 70 72 65 73 73 69 6f 6e 4b 69 6e 64 28 6b ExpressionKind(k 00015190: 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ind) {. s 000151a0: 77 69 74 63 68 20 28 6b 69 6e 64 29 20 7b 0a 20 witch (kind) {. 000151b0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 000151c0: 32 31 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 219 /* SyntaxKin 000151d0: 64 2e 50 72 65 66 69 78 55 6e 61 72 79 45 78 70 d.PrefixUnaryExp 000151e0: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 000151f0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 32 30 case 220 00015200: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 /* SyntaxKind.P 00015210: 6f 73 74 66 69 78 55 6e 61 72 79 45 78 70 72 65 ostfixUnaryExpre 00015220: 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ssion */:. 00015230: 20 20 20 20 20 20 63 61 73 65 20 32 31 35 20 2f case 215 / 00015240: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 44 65 6c * SyntaxKind.Del 00015250: 65 74 65 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f eteExpression */ 00015260: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 00015270: 73 65 20 32 31 36 20 2f 2a 20 53 79 6e 74 61 78 se 216 /* Syntax 00015280: 4b 69 6e 64 2e 54 79 70 65 4f 66 45 78 70 72 65 Kind.TypeOfExpre 00015290: 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ssion */:. 000152a0: 20 20 20 20 20 20 63 61 73 65 20 32 31 37 20 2f case 217 / 000152b0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 56 6f 69 * SyntaxKind.Voi 000152c0: 64 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a dExpression */:. 000152d0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 000152e0: 20 32 31 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 218 /* SyntaxKi 000152f0: 6e 64 2e 41 77 61 69 74 45 78 70 72 65 73 73 69 nd.AwaitExpressi 00015300: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 00015310: 20 20 20 63 61 73 65 20 32 31 31 20 2f 2a 20 53 case 211 /* S 00015320: 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 41 73 yntaxKind.TypeAs 00015330: 73 65 72 74 69 6f 6e 45 78 70 72 65 73 73 69 6f sertionExpressio 00015340: 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 n */:. 00015350: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 return tru 00015360: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 e;. d 00015370: 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 efault:. 00015380: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 return i 00015390: 73 4c 65 66 74 48 61 6e 64 53 69 64 65 45 78 70 sLeftHandSideExp 000153a0: 72 65 73 73 69 6f 6e 4b 69 6e 64 28 6b 69 6e 64 ressionKind(kind 000153b0: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 );. }. 000153c0: 20 7d 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 }. /* @inter 000153d0: 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 nal */. funct 000153e0: 69 6f 6e 20 69 73 55 6e 61 72 79 45 78 70 72 65 ion isUnaryExpre 000153f0: 73 73 69 6f 6e 57 69 74 68 57 72 69 74 65 28 65 ssionWithWrite(e 00015400: 78 70 72 29 20 7b 0a 20 20 20 20 20 20 20 20 73 xpr) {. s 00015410: 77 69 74 63 68 20 28 65 78 70 72 2e 6b 69 6e 64 witch (expr.kind 00015420: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 00015430: 63 61 73 65 20 32 32 30 20 2f 2a 20 53 79 6e 74 case 220 /* Synt 00015440: 61 78 4b 69 6e 64 2e 50 6f 73 74 66 69 78 55 6e axKind.PostfixUn 00015450: 61 72 79 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f aryExpression */ 00015460: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 00015470: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 return true;. 00015480: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00015490: 32 31 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 219 /* SyntaxKin 000154a0: 64 2e 50 72 65 66 69 78 55 6e 61 72 79 45 78 70 d.PrefixUnaryExp 000154b0: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 000154c0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 000154d0: 72 6e 20 65 78 70 72 2e 6f 70 65 72 61 74 6f 72 rn expr.operator 000154e0: 20 3d 3d 3d 20 34 35 20 2f 2a 20 53 79 6e 74 61 === 45 /* Synta 000154f0: 78 4b 69 6e 64 2e 50 6c 75 73 50 6c 75 73 54 6f xKind.PlusPlusTo 00015500: 6b 65 6e 20 2a 2f 20 7c 7c 0a 20 20 20 20 20 20 ken */ ||. 00015510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 78 ex 00015520: 70 72 2e 6f 70 65 72 61 74 6f 72 20 3d 3d 3d 20 pr.operator === 00015530: 34 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 46 /* SyntaxKind 00015540: 2e 4d 69 6e 75 73 4d 69 6e 75 73 54 6f 6b 65 6e .MinusMinusToken 00015550: 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 20 20 20 */;. 00015560: 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 default:. 00015570: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00015580: 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 false;. 00015590: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 }. }. ts.i 000155a0: 73 55 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e sUnaryExpression 000155b0: 57 69 74 68 57 72 69 74 65 20 3d 20 69 73 55 6e WithWrite = isUn 000155c0: 61 72 79 45 78 70 72 65 73 73 69 6f 6e 57 69 74 aryExpressionWit 000155d0: 68 57 72 69 74 65 3b 0a 20 20 20 20 2f 2a 20 40 hWrite;. /* @ 000155e0: 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 internal */. 000155f0: 2f 2a 2a 0a 20 20 20 20 20 2a 20 44 65 74 65 72 /**. * Deter 00015600: 6d 69 6e 65 73 20 77 68 65 74 68 65 72 20 61 20 mines whether a 00015610: 6e 6f 64 65 20 69 73 20 61 6e 20 65 78 70 72 65 node is an expre 00015620: 73 73 69 6f 6e 20 62 61 73 65 64 20 6f 6e 6c 79 ssion based only 00015630: 20 6f 6e 20 69 74 73 20 6b 69 6e 64 2e 0a 20 20 on its kind.. 00015640: 20 20 20 2a 20 55 73 65 20 60 69 73 45 78 70 72 * Use `isExpr 00015650: 65 73 73 69 6f 6e 4e 6f 64 65 60 20 69 66 20 6e essionNode` if n 00015660: 6f 74 20 69 6e 20 74 72 61 6e 73 66 6f 72 6d 73 ot in transforms 00015670: 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 .. */. fu 00015680: 6e 63 74 69 6f 6e 20 69 73 45 78 70 72 65 73 73 nction isExpress 00015690: 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ion(node) {. 000156a0: 20 20 20 20 72 65 74 75 72 6e 20 69 73 45 78 70 return isExp 000156b0: 72 65 73 73 69 6f 6e 4b 69 6e 64 28 73 6b 69 70 ressionKind(skip 000156c0: 50 61 72 74 69 61 6c 6c 79 45 6d 69 74 74 65 64 PartiallyEmitted 000156d0: 45 78 70 72 65 73 73 69 6f 6e 73 28 6e 6f 64 65 Expressions(node 000156e0: 29 2e 6b 69 6e 64 29 3b 0a 20 20 20 20 7d 0a 20 ).kind);. }. 000156f0: 20 20 20 74 73 2e 69 73 45 78 70 72 65 73 73 69 ts.isExpressi 00015700: 6f 6e 20 3d 20 69 73 45 78 70 72 65 73 73 69 6f on = isExpressio 00015710: 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 n;. function 00015720: 69 73 45 78 70 72 65 73 73 69 6f 6e 4b 69 6e 64 isExpressionKind 00015730: 28 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 (kind) {. 00015740: 20 73 77 69 74 63 68 20 28 6b 69 6e 64 29 20 7b switch (kind) { 00015750: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00015760: 65 20 32 32 32 20 2f 2a 20 53 79 6e 74 61 78 4b e 222 /* SyntaxK 00015770: 69 6e 64 2e 43 6f 6e 64 69 74 69 6f 6e 61 6c 45 ind.ConditionalE 00015780: 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 xpression */:. 00015790: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 000157a0: 32 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 24 /* SyntaxKind 000157b0: 2e 59 69 65 6c 64 45 78 70 72 65 73 73 69 6f 6e .YieldExpression 000157c0: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 000157d0: 20 63 61 73 65 20 32 31 34 20 2f 2a 20 53 79 6e case 214 /* Syn 000157e0: 74 61 78 4b 69 6e 64 2e 41 72 72 6f 77 46 75 6e taxKind.ArrowFun 000157f0: 63 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ction */:. 00015800: 20 20 20 20 20 20 63 61 73 65 20 32 32 31 20 2f case 221 / 00015810: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 69 6e * SyntaxKind.Bin 00015820: 61 72 79 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f aryExpression */ 00015830: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 00015840: 73 65 20 32 32 35 20 2f 2a 20 53 79 6e 74 61 78 se 225 /* Syntax 00015850: 4b 69 6e 64 2e 53 70 72 65 61 64 45 6c 65 6d 65 Kind.SpreadEleme 00015860: 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 nt */:. 00015870: 20 20 20 63 61 73 65 20 32 32 39 20 2f 2a 20 53 case 229 /* S 00015880: 79 6e 74 61 78 4b 69 6e 64 2e 41 73 45 78 70 72 yntaxKind.AsExpr 00015890: 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ession */:. 000158a0: 20 20 20 20 20 20 20 63 61 73 65 20 32 32 37 20 case 227 000158b0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4f 6d /* SyntaxKind.Om 000158c0: 69 74 74 65 64 45 78 70 72 65 73 73 69 6f 6e 20 ittedExpression 000158d0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 000158e0: 63 61 73 65 20 33 35 31 20 2f 2a 20 53 79 6e 74 case 351 /* Synt 000158f0: 61 78 4b 69 6e 64 2e 43 6f 6d 6d 61 4c 69 73 74 axKind.CommaList 00015900: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 00015910: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00015920: 33 35 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 350 /* SyntaxKin 00015930: 64 2e 50 61 72 74 69 61 6c 6c 79 45 6d 69 74 74 d.PartiallyEmitt 00015940: 65 64 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a edExpression */: 00015950: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00015960: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 return true;. 00015970: 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c defaul 00015980: 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t:. 00015990: 20 20 20 72 65 74 75 72 6e 20 69 73 55 6e 61 72 return isUnar 000159a0: 79 45 78 70 72 65 73 73 69 6f 6e 4b 69 6e 64 28 yExpressionKind( 000159b0: 6b 69 6e 64 29 3b 0a 20 20 20 20 20 20 20 20 7d kind);. } 000159c0: 0a 20 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 74 . }. funct 000159d0: 69 6f 6e 20 69 73 41 73 73 65 72 74 69 6f 6e 45 ion isAssertionE 000159e0: 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 xpression(node) 000159f0: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6b 69 {. var ki 00015a00: 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 3b 0a nd = node.kind;. 00015a10: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b return k 00015a20: 69 6e 64 20 3d 3d 3d 20 32 31 31 20 2f 2a 20 53 ind === 211 /* S 00015a30: 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 41 73 yntaxKind.TypeAs 00015a40: 73 65 72 74 69 6f 6e 45 78 70 72 65 73 73 69 6f sertionExpressio 00015a50: 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 n */. 00015a60: 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 32 39 || kind === 229 00015a70: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 /* SyntaxKind.A 00015a80: 73 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3b 0a sExpression */;. 00015a90: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 41 }. ts.isA 00015aa0: 73 73 65 72 74 69 6f 6e 45 78 70 72 65 73 73 69 ssertionExpressi 00015ab0: 6f 6e 20 3d 20 69 73 41 73 73 65 72 74 69 6f 6e on = isAssertion 00015ac0: 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 20 Expression;. 00015ad0: 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a /* @internal */. 00015ae0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4e function isN 00015af0: 6f 74 45 6d 69 74 74 65 64 4f 72 50 61 72 74 69 otEmittedOrParti 00015b00: 61 6c 6c 79 45 6d 69 74 74 65 64 4e 6f 64 65 28 allyEmittedNode( 00015b10: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 00015b20: 72 65 74 75 72 6e 20 74 73 2e 69 73 4e 6f 74 45 return ts.isNotE 00015b30: 6d 69 74 74 65 64 53 74 61 74 65 6d 65 6e 74 28 mittedStatement( 00015b40: 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 20 node). 00015b50: 20 20 7c 7c 20 74 73 2e 69 73 50 61 72 74 69 61 || ts.isPartia 00015b60: 6c 6c 79 45 6d 69 74 74 65 64 45 78 70 72 65 73 llyEmittedExpres 00015b70: 73 69 6f 6e 28 6e 6f 64 65 29 3b 0a 20 20 20 20 sion(node);. 00015b80: 7d 0a 20 20 20 20 74 73 2e 69 73 4e 6f 74 45 6d }. ts.isNotEm 00015b90: 69 74 74 65 64 4f 72 50 61 72 74 69 61 6c 6c 79 ittedOrPartially 00015ba0: 45 6d 69 74 74 65 64 4e 6f 64 65 20 3d 20 69 73 EmittedNode = is 00015bb0: 4e 6f 74 45 6d 69 74 74 65 64 4f 72 50 61 72 74 NotEmittedOrPart 00015bc0: 69 61 6c 6c 79 45 6d 69 74 74 65 64 4e 6f 64 65 iallyEmittedNode 00015bd0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 00015be0: 73 49 74 65 72 61 74 69 6f 6e 53 74 61 74 65 6d sIterationStatem 00015bf0: 65 6e 74 28 6e 6f 64 65 2c 20 6c 6f 6f 6b 49 6e ent(node, lookIn 00015c00: 4c 61 62 65 6c 65 64 53 74 61 74 65 6d 65 6e 74 LabeledStatement 00015c10: 73 29 20 7b 0a 20 20 20 20 20 20 20 20 73 77 69 s) {. swi 00015c20: 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 tch (node.kind) 00015c30: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 {. ca 00015c40: 73 65 20 32 34 32 20 2f 2a 20 53 79 6e 74 61 78 se 242 /* Syntax 00015c50: 4b 69 6e 64 2e 46 6f 72 53 74 61 74 65 6d 65 6e Kind.ForStatemen 00015c60: 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 t */:. 00015c70: 20 20 63 61 73 65 20 32 34 33 20 2f 2a 20 53 79 case 243 /* Sy 00015c80: 6e 74 61 78 4b 69 6e 64 2e 46 6f 72 49 6e 53 74 ntaxKind.ForInSt 00015c90: 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 atement */:. 00015ca0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 34 34 case 244 00015cb0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 /* SyntaxKind.F 00015cc0: 6f 72 4f 66 53 74 61 74 65 6d 65 6e 74 20 2a 2f orOfStatement */ 00015cd0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 00015ce0: 73 65 20 32 34 30 20 2f 2a 20 53 79 6e 74 61 78 se 240 /* Syntax 00015cf0: 4b 69 6e 64 2e 44 6f 53 74 61 74 65 6d 65 6e 74 Kind.DoStatement 00015d00: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00015d10: 20 63 61 73 65 20 32 34 31 20 2f 2a 20 53 79 6e case 241 /* Syn 00015d20: 74 61 78 4b 69 6e 64 2e 57 68 69 6c 65 53 74 61 taxKind.WhileSta 00015d30: 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 tement */:. 00015d40: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00015d50: 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 n true;. 00015d60: 20 20 20 20 63 61 73 65 20 32 35 30 20 2f 2a 20 case 250 /* 00015d70: 53 79 6e 74 61 78 4b 69 6e 64 2e 4c 61 62 65 6c SyntaxKind.Label 00015d80: 65 64 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a edStatement */:. 00015d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00015da0: 72 65 74 75 72 6e 20 6c 6f 6f 6b 49 6e 4c 61 62 return lookInLab 00015db0: 65 6c 65 64 53 74 61 74 65 6d 65 6e 74 73 20 26 eledStatements & 00015dc0: 26 20 69 73 49 74 65 72 61 74 69 6f 6e 53 74 61 & isIterationSta 00015dd0: 74 65 6d 65 6e 74 28 6e 6f 64 65 2e 73 74 61 74 tement(node.stat 00015de0: 65 6d 65 6e 74 2c 20 6c 6f 6f 6b 49 6e 4c 61 62 ement, lookInLab 00015df0: 65 6c 65 64 53 74 61 74 65 6d 65 6e 74 73 29 3b eledStatements); 00015e00: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }. 00015e10: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b return false; 00015e20: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00015e30: 49 74 65 72 61 74 69 6f 6e 53 74 61 74 65 6d 65 IterationStateme 00015e40: 6e 74 20 3d 20 69 73 49 74 65 72 61 74 69 6f 6e nt = isIteration 00015e50: 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 20 20 2f Statement;. / 00015e60: 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 * @internal */. 00015e70: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 63 function isSc 00015e80: 6f 70 65 4d 61 72 6b 65 72 28 6e 6f 64 65 29 20 opeMarker(node) 00015e90: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 00015ea0: 20 74 73 2e 69 73 45 78 70 6f 72 74 41 73 73 69 ts.isExportAssi 00015eb0: 67 6e 6d 65 6e 74 28 6e 6f 64 65 29 20 7c 7c 20 gnment(node) || 00015ec0: 74 73 2e 69 73 45 78 70 6f 72 74 44 65 63 6c 61 ts.isExportDecla 00015ed0: 72 61 74 69 6f 6e 28 6e 6f 64 65 29 3b 0a 20 20 ration(node);. 00015ee0: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 53 63 6f }. ts.isSco 00015ef0: 70 65 4d 61 72 6b 65 72 20 3d 20 69 73 53 63 6f peMarker = isSco 00015f00: 70 65 4d 61 72 6b 65 72 3b 0a 20 20 20 20 2f 2a peMarker;. /* 00015f10: 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 @internal */. 00015f20: 20 20 66 75 6e 63 74 69 6f 6e 20 68 61 73 53 63 function hasSc 00015f30: 6f 70 65 4d 61 72 6b 65 72 28 73 74 61 74 65 6d opeMarker(statem 00015f40: 65 6e 74 73 29 20 7b 0a 20 20 20 20 20 20 20 20 ents) {. 00015f50: 72 65 74 75 72 6e 20 74 73 2e 73 6f 6d 65 28 73 return ts.some(s 00015f60: 74 61 74 65 6d 65 6e 74 73 2c 20 69 73 53 63 6f tatements, isSco 00015f70: 70 65 4d 61 72 6b 65 72 29 3b 0a 20 20 20 20 7d peMarker);. } 00015f80: 0a 20 20 20 20 74 73 2e 68 61 73 53 63 6f 70 65 . ts.hasScope 00015f90: 4d 61 72 6b 65 72 20 3d 20 68 61 73 53 63 6f 70 Marker = hasScop 00015fa0: 65 4d 61 72 6b 65 72 3b 0a 20 20 20 20 2f 2a 20 eMarker;. /* 00015fb0: 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 @internal */. 00015fc0: 20 66 75 6e 63 74 69 6f 6e 20 6e 65 65 64 73 53 function needsS 00015fd0: 63 6f 70 65 4d 61 72 6b 65 72 28 72 65 73 75 6c copeMarker(resul 00015fe0: 74 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 t) {. ret 00015ff0: 75 72 6e 20 21 74 73 2e 69 73 41 6e 79 49 6d 70 urn !ts.isAnyImp 00016000: 6f 72 74 4f 72 52 65 45 78 70 6f 72 74 28 72 65 ortOrReExport(re 00016010: 73 75 6c 74 29 20 26 26 20 21 74 73 2e 69 73 45 sult) && !ts.isE 00016020: 78 70 6f 72 74 41 73 73 69 67 6e 6d 65 6e 74 28 xportAssignment( 00016030: 72 65 73 75 6c 74 29 20 26 26 20 21 74 73 2e 68 result) && !ts.h 00016040: 61 73 53 79 6e 74 61 63 74 69 63 4d 6f 64 69 66 asSyntacticModif 00016050: 69 65 72 28 72 65 73 75 6c 74 2c 20 31 20 2f 2a ier(result, 1 /* 00016060: 20 4d 6f 64 69 66 69 65 72 46 6c 61 67 73 2e 45 ModifierFlags.E 00016070: 78 70 6f 72 74 20 2a 2f 29 20 26 26 20 21 74 73 xport */) && !ts 00016080: 2e 69 73 41 6d 62 69 65 6e 74 4d 6f 64 75 6c 65 .isAmbientModule 00016090: 28 72 65 73 75 6c 74 29 3b 0a 20 20 20 20 7d 0a (result);. }. 000160a0: 20 20 20 20 74 73 2e 6e 65 65 64 73 53 63 6f 70 ts.needsScop 000160b0: 65 4d 61 72 6b 65 72 20 3d 20 6e 65 65 64 73 53 eMarker = needsS 000160c0: 63 6f 70 65 4d 61 72 6b 65 72 3b 0a 20 20 20 20 copeMarker;. 000160d0: 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a /* @internal */. 000160e0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 45 function isE 000160f0: 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 49 6e 64 xternalModuleInd 00016100: 69 63 61 74 6f 72 28 72 65 73 75 6c 74 29 20 7b icator(result) { 00016110: 0a 20 20 20 20 20 20 20 20 2f 2f 20 45 78 70 6f . // Expo 00016120: 72 74 65 64 20 74 6f 70 2d 6c 65 76 65 6c 20 6d rted top-level m 00016130: 65 6d 62 65 72 20 69 6e 64 69 63 61 74 65 73 20 ember indicates 00016140: 6d 6f 64 75 6c 65 6e 65 73 73 0a 20 20 20 20 20 moduleness. 00016150: 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 41 return ts.isA 00016160: 6e 79 49 6d 70 6f 72 74 4f 72 52 65 45 78 70 6f nyImportOrReExpo 00016170: 72 74 28 72 65 73 75 6c 74 29 20 7c 7c 20 74 73 rt(result) || ts 00016180: 2e 69 73 45 78 70 6f 72 74 41 73 73 69 67 6e 6d .isExportAssignm 00016190: 65 6e 74 28 72 65 73 75 6c 74 29 20 7c 7c 20 74 ent(result) || t 000161a0: 73 2e 68 61 73 53 79 6e 74 61 63 74 69 63 4d 6f s.hasSyntacticMo 000161b0: 64 69 66 69 65 72 28 72 65 73 75 6c 74 2c 20 31 difier(result, 1 000161c0: 20 2f 2a 20 4d 6f 64 69 66 69 65 72 46 6c 61 67 /* ModifierFlag 000161d0: 73 2e 45 78 70 6f 72 74 20 2a 2f 29 3b 0a 20 20 s.Export */);. 000161e0: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 45 78 74 }. ts.isExt 000161f0: 65 72 6e 61 6c 4d 6f 64 75 6c 65 49 6e 64 69 63 ernalModuleIndic 00016200: 61 74 6f 72 20 3d 20 69 73 45 78 74 65 72 6e 61 ator = isExterna 00016210: 6c 4d 6f 64 75 6c 65 49 6e 64 69 63 61 74 6f 72 lModuleIndicator 00016220: 3b 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e ;. /* @intern 00016230: 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 al */. functi 00016240: 6f 6e 20 69 73 46 6f 72 49 6e 4f 72 4f 66 53 74 on isForInOrOfSt 00016250: 61 74 65 6d 65 6e 74 28 6e 6f 64 65 29 20 7b 0a atement(node) {. 00016260: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e return n 00016270: 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 34 33 ode.kind === 243 00016280: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 /* SyntaxKind.F 00016290: 6f 72 49 6e 53 74 61 74 65 6d 65 6e 74 20 2a 2f orInStatement */ 000162a0: 20 7c 7c 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d || node.kind == 000162b0: 3d 20 32 34 34 20 2f 2a 20 53 79 6e 74 61 78 4b = 244 /* SyntaxK 000162c0: 69 6e 64 2e 46 6f 72 4f 66 53 74 61 74 65 6d 65 ind.ForOfStateme 000162d0: 6e 74 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 nt */;. }. 000162e0: 20 74 73 2e 69 73 46 6f 72 49 6e 4f 72 4f 66 53 ts.isForInOrOfS 000162f0: 74 61 74 65 6d 65 6e 74 20 3d 20 69 73 46 6f 72 tatement = isFor 00016300: 49 6e 4f 72 4f 66 53 74 61 74 65 6d 65 6e 74 3b InOrOfStatement; 00016310: 0a 20 20 20 20 2f 2f 20 45 6c 65 6d 65 6e 74 0a . // Element. 00016320: 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c /* @internal 00016330: 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e */. function 00016340: 20 69 73 43 6f 6e 63 69 73 65 42 6f 64 79 28 6e isConciseBody(n 00016350: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 00016360: 65 74 75 72 6e 20 74 73 2e 69 73 42 6c 6f 63 6b eturn ts.isBlock 00016370: 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 (node). 00016380: 20 20 20 7c 7c 20 69 73 45 78 70 72 65 73 73 69 || isExpressi 00016390: 6f 6e 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d 0a on(node);. }. 000163a0: 20 20 20 20 74 73 2e 69 73 43 6f 6e 63 69 73 65 ts.isConcise 000163b0: 42 6f 64 79 20 3d 20 69 73 43 6f 6e 63 69 73 65 Body = isConcise 000163c0: 42 6f 64 79 3b 0a 20 20 20 20 2f 2a 20 40 69 6e Body;. /* @in 000163d0: 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 ternal */. fu 000163e0: 6e 63 74 69 6f 6e 20 69 73 46 75 6e 63 74 69 6f nction isFunctio 000163f0: 6e 42 6f 64 79 28 6e 6f 64 65 29 20 7b 0a 20 20 nBody(node) {. 00016400: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 00016410: 69 73 42 6c 6f 63 6b 28 6e 6f 64 65 29 3b 0a 20 isBlock(node);. 00016420: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 46 75 }. ts.isFu 00016430: 6e 63 74 69 6f 6e 42 6f 64 79 20 3d 20 69 73 46 nctionBody = isF 00016440: 75 6e 63 74 69 6f 6e 42 6f 64 79 3b 0a 20 20 20 unctionBody;. 00016450: 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f /* @internal */ 00016460: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 . function is 00016470: 46 6f 72 49 6e 69 74 69 61 6c 69 7a 65 72 28 6e ForInitializer(n 00016480: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 00016490: 65 74 75 72 6e 20 74 73 2e 69 73 56 61 72 69 61 eturn ts.isVaria 000164a0: 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 4c 69 bleDeclarationLi 000164b0: 73 74 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 st(node). 000164c0: 20 20 20 20 20 7c 7c 20 69 73 45 78 70 72 65 73 || isExpres 000164d0: 73 69 6f 6e 28 6e 6f 64 65 29 3b 0a 20 20 20 20 sion(node);. 000164e0: 7d 0a 20 20 20 20 74 73 2e 69 73 46 6f 72 49 6e }. ts.isForIn 000164f0: 69 74 69 61 6c 69 7a 65 72 20 3d 20 69 73 46 6f itializer = isFo 00016500: 72 49 6e 69 74 69 61 6c 69 7a 65 72 3b 0a 20 20 rInitializer;. 00016510: 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a /* @internal * 00016520: 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 /. function i 00016530: 73 4d 6f 64 75 6c 65 42 6f 64 79 28 6e 6f 64 65 sModuleBody(node 00016540: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 00016550: 6b 69 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 kind = node.kind 00016560: 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e ;. return 00016570: 20 6b 69 6e 64 20 3d 3d 3d 20 32 36 32 20 2f 2a kind === 262 /* 00016580: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 75 SyntaxKind.Modu 00016590: 6c 65 42 6c 6f 63 6b 20 2a 2f 0a 20 20 20 20 20 leBlock */. 000165a0: 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d || kind = 000165b0: 3d 3d 20 32 36 31 20 2f 2a 20 53 79 6e 74 61 78 == 261 /* Syntax 000165c0: 4b 69 6e 64 2e 4d 6f 64 75 6c 65 44 65 63 6c 61 Kind.ModuleDecla 000165d0: 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 ration */. 000165e0: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 000165f0: 3d 20 37 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 = 79 /* SyntaxKi 00016600: 6e 64 2e 49 64 65 6e 74 69 66 69 65 72 20 2a 2f nd.Identifier */ 00016610: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 00016620: 73 4d 6f 64 75 6c 65 42 6f 64 79 20 3d 20 69 73 sModuleBody = is 00016630: 4d 6f 64 75 6c 65 42 6f 64 79 3b 0a 20 20 20 20 ModuleBody;. 00016640: 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a /* @internal */. 00016650: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4e function isN 00016660: 61 6d 65 73 70 61 63 65 42 6f 64 79 28 6e 6f 64 amespaceBody(nod 00016670: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 e) {. var 00016680: 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e kind = node.kin 00016690: 64 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 d;. retur 000166a0: 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 36 32 20 2f n kind === 262 / 000166b0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 * SyntaxKind.Mod 000166c0: 75 6c 65 42 6c 6f 63 6b 20 2a 2f 0a 20 20 20 20 uleBlock */. 000166d0: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 000166e0: 3d 3d 3d 20 32 36 31 20 2f 2a 20 53 79 6e 74 61 === 261 /* Synta 000166f0: 78 4b 69 6e 64 2e 4d 6f 64 75 6c 65 44 65 63 6c xKind.ModuleDecl 00016700: 61 72 61 74 69 6f 6e 20 2a 2f 3b 0a 20 20 20 20 aration */;. 00016710: 7d 0a 20 20 20 20 74 73 2e 69 73 4e 61 6d 65 73 }. ts.isNames 00016720: 70 61 63 65 42 6f 64 79 20 3d 20 69 73 4e 61 6d paceBody = isNam 00016730: 65 73 70 61 63 65 42 6f 64 79 3b 0a 20 20 20 20 espaceBody;. 00016740: 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a /* @internal */. 00016750: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4a function isJ 00016760: 53 44 6f 63 4e 61 6d 65 73 70 61 63 65 42 6f 64 SDocNamespaceBod 00016770: 79 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 y(node) {. 00016780: 20 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 var kind = nod 00016790: 65 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 20 e.kind;. 000167a0: 72 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 return kind === 000167b0: 37 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 79 /* SyntaxKind 000167c0: 2e 49 64 65 6e 74 69 66 69 65 72 20 2a 2f 0a 20 .Identifier */. 000167d0: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 000167e0: 6e 64 20 3d 3d 3d 20 32 36 31 20 2f 2a 20 53 79 nd === 261 /* Sy 000167f0: 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 75 6c 65 44 ntaxKind.ModuleD 00016800: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3b 0a 20 eclaration */;. 00016810: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4a 53 }. ts.isJS 00016820: 44 6f 63 4e 61 6d 65 73 70 61 63 65 42 6f 64 79 DocNamespaceBody 00016830: 20 3d 20 69 73 4a 53 44 6f 63 4e 61 6d 65 73 70 = isJSDocNamesp 00016840: 61 63 65 42 6f 64 79 3b 0a 20 20 20 20 2f 2a 20 aceBody;. /* 00016850: 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 @internal */. 00016860: 20 66 75 6e 63 74 69 6f 6e 20 69 73 4e 61 6d 65 function isName 00016870: 64 49 6d 70 6f 72 74 42 69 6e 64 69 6e 67 73 28 dImportBindings( 00016880: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 00016890: 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 2e var kind = node. 000168a0: 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 20 72 65 kind;. re 000168b0: 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 36 turn kind === 26 000168c0: 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 9 /* SyntaxKind. 000168d0: 4e 61 6d 65 64 49 6d 70 6f 72 74 73 20 2a 2f 0a NamedImports */. 000168e0: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 000168f0: 69 6e 64 20 3d 3d 3d 20 32 36 38 20 2f 2a 20 53 ind === 268 /* S 00016900: 79 6e 74 61 78 4b 69 6e 64 2e 4e 61 6d 65 73 70 yntaxKind.Namesp 00016910: 61 63 65 49 6d 70 6f 72 74 20 2a 2f 3b 0a 20 20 aceImport */;. 00016920: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4e 61 6d }. ts.isNam 00016930: 65 64 49 6d 70 6f 72 74 42 69 6e 64 69 6e 67 73 edImportBindings 00016940: 20 3d 20 69 73 4e 61 6d 65 64 49 6d 70 6f 72 74 = isNamedImport 00016950: 42 69 6e 64 69 6e 67 73 3b 0a 20 20 20 20 2f 2a Bindings;. /* 00016960: 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 @internal */. 00016970: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4d 6f 64 function isMod 00016980: 75 6c 65 4f 72 45 6e 75 6d 44 65 63 6c 61 72 61 uleOrEnumDeclara 00016990: 74 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 tion(node) {. 000169a0: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 return node 000169b0: 2e 6b 69 6e 64 20 3d 3d 3d 20 32 36 31 20 2f 2a .kind === 261 /* 000169c0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 75 SyntaxKind.Modu 000169d0: 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f leDeclaration */ 000169e0: 20 7c 7c 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d || node.kind == 000169f0: 3d 20 32 36 30 20 2f 2a 20 53 79 6e 74 61 78 4b = 260 /* SyntaxK 00016a00: 69 6e 64 2e 45 6e 75 6d 44 65 63 6c 61 72 61 74 ind.EnumDeclarat 00016a10: 69 6f 6e 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ion */;. }. 00016a20: 20 20 74 73 2e 69 73 4d 6f 64 75 6c 65 4f 72 45 ts.isModuleOrE 00016a30: 6e 75 6d 44 65 63 6c 61 72 61 74 69 6f 6e 20 3d numDeclaration = 00016a40: 20 69 73 4d 6f 64 75 6c 65 4f 72 45 6e 75 6d 44 isModuleOrEnumD 00016a50: 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 20 eclaration;. 00016a60: 66 75 6e 63 74 69 6f 6e 20 69 73 44 65 63 6c 61 function isDecla 00016a70: 72 61 74 69 6f 6e 4b 69 6e 64 28 6b 69 6e 64 29 rationKind(kind) 00016a80: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00016a90: 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 31 34 20 2f n kind === 214 / 00016aa0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 72 72 * SyntaxKind.Arr 00016ab0: 6f 77 46 75 6e 63 74 69 6f 6e 20 2a 2f 0a 20 20 owFunction */. 00016ac0: 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e || kin 00016ad0: 64 20 3d 3d 3d 20 32 30 33 20 2f 2a 20 53 79 6e d === 203 /* Syn 00016ae0: 74 61 78 4b 69 6e 64 2e 42 69 6e 64 69 6e 67 45 taxKind.BindingE 00016af0: 6c 65 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 lement */. 00016b00: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 00016b10: 3d 20 32 35 37 20 2f 2a 20 53 79 6e 74 61 78 4b = 257 /* SyntaxK 00016b20: 69 6e 64 2e 43 6c 61 73 73 44 65 63 6c 61 72 61 ind.ClassDeclara 00016b30: 74 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 tion */. 00016b40: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 00016b50: 32 32 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 226 /* SyntaxKin 00016b60: 64 2e 43 6c 61 73 73 45 78 70 72 65 73 73 69 6f d.ClassExpressio 00016b70: 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 n */. 00016b80: 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 37 30 || kind === 170 00016b90: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 /* SyntaxKind.C 00016ba0: 6c 61 73 73 53 74 61 74 69 63 42 6c 6f 63 6b 44 lassStaticBlockD 00016bb0: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 eclaration */. 00016bc0: 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e || kin 00016bd0: 64 20 3d 3d 3d 20 31 37 31 20 2f 2a 20 53 79 6e d === 171 /* Syn 00016be0: 74 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 72 75 63 taxKind.Construc 00016bf0: 74 6f 72 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 tor */. 00016c00: 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 || kind === 2 00016c10: 36 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 60 /* SyntaxKind 00016c20: 2e 45 6e 75 6d 44 65 63 6c 61 72 61 74 69 6f 6e .EnumDeclaration 00016c30: 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 */. 00016c40: 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 39 39 20 || kind === 299 00016c50: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 6e /* SyntaxKind.En 00016c60: 75 6d 4d 65 6d 62 65 72 20 2a 2f 0a 20 20 20 20 umMember */. 00016c70: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 00016c80: 3d 3d 3d 20 32 37 35 20 2f 2a 20 53 79 6e 74 61 === 275 /* Synta 00016c90: 78 4b 69 6e 64 2e 45 78 70 6f 72 74 53 70 65 63 xKind.ExportSpec 00016ca0: 69 66 69 65 72 20 2a 2f 0a 20 20 20 20 20 20 20 ifier */. 00016cb0: 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d || kind === 00016cc0: 20 32 35 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 256 /* SyntaxKi 00016cd0: 6e 64 2e 46 75 6e 63 74 69 6f 6e 44 65 63 6c 61 nd.FunctionDecla 00016ce0: 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 ration */. 00016cf0: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 00016d00: 3d 20 32 31 33 20 2f 2a 20 53 79 6e 74 61 78 4b = 213 /* SyntaxK 00016d10: 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 45 78 70 72 ind.FunctionExpr 00016d20: 65 73 73 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 ession */. 00016d30: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 00016d40: 3d 20 31 37 32 20 2f 2a 20 53 79 6e 74 61 78 4b = 172 /* SyntaxK 00016d50: 69 6e 64 2e 47 65 74 41 63 63 65 73 73 6f 72 20 ind.GetAccessor 00016d60: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 00016d70: 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 36 37 20 2f | kind === 267 / 00016d80: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d 70 * SyntaxKind.Imp 00016d90: 6f 72 74 43 6c 61 75 73 65 20 2a 2f 0a 20 20 20 ortClause */. 00016da0: 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 || kind 00016db0: 20 3d 3d 3d 20 32 36 35 20 2f 2a 20 53 79 6e 74 === 265 /* Synt 00016dc0: 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 45 71 75 axKind.ImportEqu 00016dd0: 61 6c 73 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a alsDeclaration * 00016de0: 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c /. || 00016df0: 20 6b 69 6e 64 20 3d 3d 3d 20 32 37 30 20 2f 2a kind === 270 /* 00016e00: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d 70 6f SyntaxKind.Impo 00016e10: 72 74 53 70 65 63 69 66 69 65 72 20 2a 2f 0a 20 rtSpecifier */. 00016e20: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 00016e30: 6e 64 20 3d 3d 3d 20 32 35 38 20 2f 2a 20 53 79 nd === 258 /* Sy 00016e40: 6e 74 61 78 4b 69 6e 64 2e 49 6e 74 65 72 66 61 ntaxKind.Interfa 00016e50: 63 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f ceDeclaration */ 00016e60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 . || 00016e70: 6b 69 6e 64 20 3d 3d 3d 20 32 38 35 20 2f 2a 20 kind === 285 /* 00016e80: 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 41 74 SyntaxKind.JsxAt 00016e90: 74 72 69 62 75 74 65 20 2a 2f 0a 20 20 20 20 20 tribute */. 00016ea0: 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d || kind = 00016eb0: 3d 3d 20 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 == 169 /* Syntax 00016ec0: 4b 69 6e 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 Kind.MethodDecla 00016ed0: 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 ration */. 00016ee0: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 00016ef0: 3d 20 31 36 38 20 2f 2a 20 53 79 6e 74 61 78 4b = 168 /* SyntaxK 00016f00: 69 6e 64 2e 4d 65 74 68 6f 64 53 69 67 6e 61 74 ind.MethodSignat 00016f10: 75 72 65 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 ure */. 00016f20: 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 || kind === 2 00016f30: 36 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 61 /* SyntaxKind 00016f40: 2e 4d 6f 64 75 6c 65 44 65 63 6c 61 72 61 74 69 .ModuleDeclarati 00016f50: 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 on */. 00016f60: 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 36 || kind === 26 00016f70: 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4 /* SyntaxKind. 00016f80: 4e 61 6d 65 73 70 61 63 65 45 78 70 6f 72 74 44 NamespaceExportD 00016f90: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 eclaration */. 00016fa0: 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e || kin 00016fb0: 64 20 3d 3d 3d 20 32 36 38 20 2f 2a 20 53 79 6e d === 268 /* Syn 00016fc0: 74 61 78 4b 69 6e 64 2e 4e 61 6d 65 73 70 61 63 taxKind.Namespac 00016fd0: 65 49 6d 70 6f 72 74 20 2a 2f 0a 20 20 20 20 20 eImport */. 00016fe0: 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d || kind = 00016ff0: 3d 3d 20 32 37 34 20 2f 2a 20 53 79 6e 74 61 78 == 274 /* Syntax 00017000: 4b 69 6e 64 2e 4e 61 6d 65 73 70 61 63 65 45 78 Kind.NamespaceEx 00017010: 70 6f 72 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 port */. 00017020: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 00017030: 31 36 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 164 /* SyntaxKin 00017040: 64 2e 50 61 72 61 6d 65 74 65 72 20 2a 2f 0a 20 d.Parameter */. 00017050: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 00017060: 6e 64 20 3d 3d 3d 20 32 39 36 20 2f 2a 20 53 79 nd === 296 /* Sy 00017070: 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 ntaxKind.Propert 00017080: 79 41 73 73 69 67 6e 6d 65 6e 74 20 2a 2f 0a 20 yAssignment */. 00017090: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 000170a0: 6e 64 20 3d 3d 3d 20 31 36 37 20 2f 2a 20 53 79 nd === 167 /* Sy 000170b0: 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 ntaxKind.Propert 000170c0: 79 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a yDeclaration */. 000170d0: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 000170e0: 69 6e 64 20 3d 3d 3d 20 31 36 36 20 2f 2a 20 53 ind === 166 /* S 000170f0: 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 yntaxKind.Proper 00017100: 74 79 53 69 67 6e 61 74 75 72 65 20 2a 2f 0a 20 tySignature */. 00017110: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 00017120: 6e 64 20 3d 3d 3d 20 31 37 33 20 2f 2a 20 53 79 nd === 173 /* Sy 00017130: 6e 74 61 78 4b 69 6e 64 2e 53 65 74 41 63 63 65 ntaxKind.SetAcce 00017140: 73 73 6f 72 20 2a 2f 0a 20 20 20 20 20 20 20 20 ssor */. 00017150: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 00017160: 32 39 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 297 /* SyntaxKin 00017170: 64 2e 53 68 6f 72 74 68 61 6e 64 50 72 6f 70 65 d.ShorthandPrope 00017180: 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 20 2a 2f rtyAssignment */ 00017190: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 . || 000171a0: 6b 69 6e 64 20 3d 3d 3d 20 32 35 39 20 2f 2a 20 kind === 259 /* 000171b0: 53 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 41 SyntaxKind.TypeA 000171c0: 6c 69 61 73 44 65 63 6c 61 72 61 74 69 6f 6e 20 liasDeclaration 000171d0: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 000171e0: 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 36 33 20 2f | kind === 163 / 000171f0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 * SyntaxKind.Typ 00017200: 65 50 61 72 61 6d 65 74 65 72 20 2a 2f 0a 20 20 eParameter */. 00017210: 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e || kin 00017220: 64 20 3d 3d 3d 20 32 35 34 20 2f 2a 20 53 79 6e d === 254 /* Syn 00017230: 74 61 78 4b 69 6e 64 2e 56 61 72 69 61 62 6c 65 taxKind.Variable 00017240: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a 20 Declaration */. 00017250: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 00017260: 6e 64 20 3d 3d 3d 20 33 34 35 20 2f 2a 20 53 79 nd === 345 /* Sy 00017270: 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 54 79 ntaxKind.JSDocTy 00017280: 70 65 64 65 66 54 61 67 20 2a 2f 0a 20 20 20 20 pedefTag */. 00017290: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 000172a0: 3d 3d 3d 20 33 33 38 20 2f 2a 20 53 79 6e 74 61 === 338 /* Synta 000172b0: 78 4b 69 6e 64 2e 4a 53 44 6f 63 43 61 6c 6c 62 xKind.JSDocCallb 000172c0: 61 63 6b 54 61 67 20 2a 2f 0a 20 20 20 20 20 20 ackTag */. 000172d0: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 000172e0: 3d 20 33 34 37 20 2f 2a 20 53 79 6e 74 61 78 4b = 347 /* SyntaxK 000172f0: 69 6e 64 2e 4a 53 44 6f 63 50 72 6f 70 65 72 74 ind.JSDocPropert 00017300: 79 54 61 67 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 yTag */;. }. 00017310: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 44 65 function isDe 00017320: 63 6c 61 72 61 74 69 6f 6e 53 74 61 74 65 6d 65 clarationStateme 00017330: 6e 74 4b 69 6e 64 28 6b 69 6e 64 29 20 7b 0a 20 ntKind(kind) {. 00017340: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b 69 return ki 00017350: 6e 64 20 3d 3d 3d 20 32 35 36 20 2f 2a 20 53 79 nd === 256 /* Sy 00017360: 6e 74 61 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f ntaxKind.Functio 00017370: 6e 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a nDeclaration */. 00017380: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 00017390: 69 6e 64 20 3d 3d 3d 20 32 37 36 20 2f 2a 20 53 ind === 276 /* S 000173a0: 79 6e 74 61 78 4b 69 6e 64 2e 4d 69 73 73 69 6e yntaxKind.Missin 000173b0: 67 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a gDeclaration */. 000173c0: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 000173d0: 69 6e 64 20 3d 3d 3d 20 32 35 37 20 2f 2a 20 53 ind === 257 /* S 000173e0: 79 6e 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 44 yntaxKind.ClassD 000173f0: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 eclaration */. 00017400: 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e || kin 00017410: 64 20 3d 3d 3d 20 32 35 38 20 2f 2a 20 53 79 6e d === 258 /* Syn 00017420: 74 61 78 4b 69 6e 64 2e 49 6e 74 65 72 66 61 63 taxKind.Interfac 00017430: 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a eDeclaration */. 00017440: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 00017450: 69 6e 64 20 3d 3d 3d 20 32 35 39 20 2f 2a 20 53 ind === 259 /* S 00017460: 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 41 6c yntaxKind.TypeAl 00017470: 69 61 73 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a iasDeclaration * 00017480: 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c /. || 00017490: 20 6b 69 6e 64 20 3d 3d 3d 20 32 36 30 20 2f 2a kind === 260 /* 000174a0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 6e 75 6d SyntaxKind.Enum 000174b0: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a 20 Declaration */. 000174c0: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 000174d0: 6e 64 20 3d 3d 3d 20 32 36 31 20 2f 2a 20 53 79 nd === 261 /* Sy 000174e0: 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 75 6c 65 44 ntaxKind.ModuleD 000174f0: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 eclaration */. 00017500: 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e || kin 00017510: 64 20 3d 3d 3d 20 32 36 36 20 2f 2a 20 53 79 6e d === 266 /* Syn 00017520: 74 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 44 65 taxKind.ImportDe 00017530: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 20 claration */. 00017540: 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 || kind 00017550: 20 3d 3d 3d 20 32 36 35 20 2f 2a 20 53 79 6e 74 === 265 /* Synt 00017560: 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 45 71 75 axKind.ImportEqu 00017570: 61 6c 73 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a alsDeclaration * 00017580: 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c /. || 00017590: 20 6b 69 6e 64 20 3d 3d 3d 20 32 37 32 20 2f 2a kind === 272 /* 000175a0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 78 70 6f SyntaxKind.Expo 000175b0: 72 74 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f rtDeclaration */ 000175c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 . || 000175d0: 6b 69 6e 64 20 3d 3d 3d 20 32 37 31 20 2f 2a 20 kind === 271 /* 000175e0: 53 79 6e 74 61 78 4b 69 6e 64 2e 45 78 70 6f 72 SyntaxKind.Expor 000175f0: 74 41 73 73 69 67 6e 6d 65 6e 74 20 2a 2f 0a 20 tAssignment */. 00017600: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 || ki 00017610: 6e 64 20 3d 3d 3d 20 32 36 34 20 2f 2a 20 53 79 nd === 264 /* Sy 00017620: 6e 74 61 78 4b 69 6e 64 2e 4e 61 6d 65 73 70 61 ntaxKind.Namespa 00017630: 63 65 45 78 70 6f 72 74 44 65 63 6c 61 72 61 74 ceExportDeclarat 00017640: 69 6f 6e 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ion */;. }. 00017650: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 74 61 function isSta 00017660: 74 65 6d 65 6e 74 4b 69 6e 64 42 75 74 4e 6f 74 tementKindButNot 00017670: 44 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 28 DeclarationKind( 00017680: 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 kind) {. 00017690: 72 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 return kind === 000176a0: 32 34 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 246 /* SyntaxKin 000176b0: 64 2e 42 72 65 61 6b 53 74 61 74 65 6d 65 6e 74 d.BreakStatement 000176c0: 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 */. 000176d0: 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 34 35 20 || kind === 245 000176e0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f /* SyntaxKind.Co 000176f0: 6e 74 69 6e 75 65 53 74 61 74 65 6d 65 6e 74 20 ntinueStatement 00017700: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 00017710: 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 35 33 20 2f | kind === 253 / 00017720: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 44 65 62 * SyntaxKind.Deb 00017730: 75 67 67 65 72 53 74 61 74 65 6d 65 6e 74 20 2a uggerStatement * 00017740: 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c /. || 00017750: 20 6b 69 6e 64 20 3d 3d 3d 20 32 34 30 20 2f 2a kind === 240 /* 00017760: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 44 6f 53 74 SyntaxKind.DoSt 00017770: 61 74 65 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 atement */. 00017780: 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d || kind = 00017790: 3d 3d 20 32 33 38 20 2f 2a 20 53 79 6e 74 61 78 == 238 /* Syntax 000177a0: 4b 69 6e 64 2e 45 78 70 72 65 73 73 69 6f 6e 53 Kind.ExpressionS 000177b0: 74 61 74 65 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 tatement */. 000177c0: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 000177d0: 3d 3d 3d 20 32 33 36 20 2f 2a 20 53 79 6e 74 61 === 236 /* Synta 000177e0: 78 4b 69 6e 64 2e 45 6d 70 74 79 53 74 61 74 65 xKind.EmptyState 000177f0: 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 ment */. 00017800: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 00017810: 32 34 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 243 /* SyntaxKin 00017820: 64 2e 46 6f 72 49 6e 53 74 61 74 65 6d 65 6e 74 d.ForInStatement 00017830: 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 */. 00017840: 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 34 34 20 || kind === 244 00017850: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 6f /* SyntaxKind.Fo 00017860: 72 4f 66 53 74 61 74 65 6d 65 6e 74 20 2a 2f 0a rOfStatement */. 00017870: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 00017880: 69 6e 64 20 3d 3d 3d 20 32 34 32 20 2f 2a 20 53 ind === 242 /* S 00017890: 79 6e 74 61 78 4b 69 6e 64 2e 46 6f 72 53 74 61 yntaxKind.ForSta 000178a0: 74 65 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 tement */. 000178b0: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 000178c0: 3d 20 32 33 39 20 2f 2a 20 53 79 6e 74 61 78 4b = 239 /* SyntaxK 000178d0: 69 6e 64 2e 49 66 53 74 61 74 65 6d 65 6e 74 20 ind.IfStatement 000178e0: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 000178f0: 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 35 30 20 2f | kind === 250 / 00017900: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4c 61 62 * SyntaxKind.Lab 00017910: 65 6c 65 64 53 74 61 74 65 6d 65 6e 74 20 2a 2f eledStatement */ 00017920: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 . || 00017930: 6b 69 6e 64 20 3d 3d 3d 20 32 34 37 20 2f 2a 20 kind === 247 /* 00017940: 53 79 6e 74 61 78 4b 69 6e 64 2e 52 65 74 75 72 SyntaxKind.Retur 00017950: 6e 53 74 61 74 65 6d 65 6e 74 20 2a 2f 0a 20 20 nStatement */. 00017960: 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e || kin 00017970: 64 20 3d 3d 3d 20 32 34 39 20 2f 2a 20 53 79 6e d === 249 /* Syn 00017980: 74 61 78 4b 69 6e 64 2e 53 77 69 74 63 68 53 74 taxKind.SwitchSt 00017990: 61 74 65 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 atement */. 000179a0: 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d || kind = 000179b0: 3d 3d 20 32 35 31 20 2f 2a 20 53 79 6e 74 61 78 == 251 /* Syntax 000179c0: 4b 69 6e 64 2e 54 68 72 6f 77 53 74 61 74 65 6d Kind.ThrowStatem 000179d0: 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 ent */. 000179e0: 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 || kind === 2 000179f0: 35 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 52 /* SyntaxKind 00017a00: 2e 54 72 79 53 74 61 74 65 6d 65 6e 74 20 2a 2f .TryStatement */ 00017a10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 . || 00017a20: 6b 69 6e 64 20 3d 3d 3d 20 32 33 37 20 2f 2a 20 kind === 237 /* 00017a30: 53 79 6e 74 61 78 4b 69 6e 64 2e 56 61 72 69 61 SyntaxKind.Varia 00017a40: 62 6c 65 53 74 61 74 65 6d 65 6e 74 20 2a 2f 0a bleStatement */. 00017a50: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b || k 00017a60: 69 6e 64 20 3d 3d 3d 20 32 34 31 20 2f 2a 20 53 ind === 241 /* S 00017a70: 79 6e 74 61 78 4b 69 6e 64 2e 57 68 69 6c 65 53 yntaxKind.WhileS 00017a80: 74 61 74 65 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 tatement */. 00017a90: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 00017aa0: 3d 3d 3d 20 32 34 38 20 2f 2a 20 53 79 6e 74 61 === 248 /* Synta 00017ab0: 78 4b 69 6e 64 2e 57 69 74 68 53 74 61 74 65 6d xKind.WithStatem 00017ac0: 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 ent */. 00017ad0: 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 33 || kind === 3 00017ae0: 34 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 49 /* SyntaxKind 00017af0: 2e 4e 6f 74 45 6d 69 74 74 65 64 53 74 61 74 65 .NotEmittedState 00017b00: 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 ment */. 00017b10: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 00017b20: 33 35 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 353 /* SyntaxKin 00017b30: 64 2e 45 6e 64 4f 66 44 65 63 6c 61 72 61 74 69 d.EndOfDeclarati 00017b40: 6f 6e 4d 61 72 6b 65 72 20 2a 2f 0a 20 20 20 20 onMarker */. 00017b50: 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 || kind 00017b60: 3d 3d 3d 20 33 35 32 20 2f 2a 20 53 79 6e 74 61 === 352 /* Synta 00017b70: 78 4b 69 6e 64 2e 4d 65 72 67 65 44 65 63 6c 61 xKind.MergeDecla 00017b80: 72 61 74 69 6f 6e 4d 61 72 6b 65 72 20 2a 2f 3b rationMarker */; 00017b90: 0a 20 20 20 20 7d 0a 20 20 20 20 2f 2a 20 40 69 . }. /* @i 00017ba0: 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 nternal */. f 00017bb0: 75 6e 63 74 69 6f 6e 20 69 73 44 65 63 6c 61 72 unction isDeclar 00017bc0: 61 74 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 ation(node) {. 00017bd0: 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e 6b if (node.k 00017be0: 69 6e 64 20 3d 3d 3d 20 31 36 33 20 2f 2a 20 53 ind === 163 /* S 00017bf0: 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 50 61 yntaxKind.TypePa 00017c00: 72 61 6d 65 74 65 72 20 2a 2f 29 20 7b 0a 20 20 rameter */) {. 00017c10: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00017c20: 20 28 6e 6f 64 65 2e 70 61 72 65 6e 74 20 26 26 (node.parent && 00017c30: 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b 69 6e node.parent.kin 00017c40: 64 20 21 3d 3d 20 33 34 34 20 2f 2a 20 53 79 6e d !== 344 /* Syn 00017c50: 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 54 65 6d taxKind.JSDocTem 00017c60: 70 6c 61 74 65 54 61 67 20 2a 2f 29 20 7c 7c 20 plateTag */) || 00017c70: 74 73 2e 69 73 49 6e 4a 53 46 69 6c 65 28 6e 6f ts.isInJSFile(no 00017c80: 64 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 de);. }. 00017c90: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 73 return is 00017ca0: 44 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 28 DeclarationKind( 00017cb0: 6e 6f 64 65 2e 6b 69 6e 64 29 3b 0a 20 20 20 20 node.kind);. 00017cc0: 7d 0a 20 20 20 20 74 73 2e 69 73 44 65 63 6c 61 }. ts.isDecla 00017cd0: 72 61 74 69 6f 6e 20 3d 20 69 73 44 65 63 6c 61 ration = isDecla 00017ce0: 72 61 74 69 6f 6e 3b 0a 20 20 20 20 2f 2a 20 40 ration;. /* @ 00017cf0: 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 internal */. 00017d00: 66 75 6e 63 74 69 6f 6e 20 69 73 44 65 63 6c 61 function isDecla 00017d10: 72 61 74 69 6f 6e 53 74 61 74 65 6d 65 6e 74 28 rationStatement( 00017d20: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 00017d30: 72 65 74 75 72 6e 20 69 73 44 65 63 6c 61 72 61 return isDeclara 00017d40: 74 69 6f 6e 53 74 61 74 65 6d 65 6e 74 4b 69 6e tionStatementKin 00017d50: 64 28 6e 6f 64 65 2e 6b 69 6e 64 29 3b 0a 20 20 d(node.kind);. 00017d60: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 44 65 63 }. ts.isDec 00017d70: 6c 61 72 61 74 69 6f 6e 53 74 61 74 65 6d 65 6e larationStatemen 00017d80: 74 20 3d 20 69 73 44 65 63 6c 61 72 61 74 69 6f t = isDeclaratio 00017d90: 6e 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 20 20 nStatement;. 00017da0: 2f 2a 2a 0a 20 20 20 20 20 2a 20 44 65 74 65 72 /**. * Deter 00017db0: 6d 69 6e 65 73 20 77 68 65 74 68 65 72 20 74 68 mines whether th 00017dc0: 65 20 6e 6f 64 65 20 69 73 20 61 20 73 74 61 74 e node is a stat 00017dd0: 65 6d 65 6e 74 20 74 68 61 74 20 69 73 20 6e 6f ement that is no 00017de0: 74 20 61 6c 73 6f 20 61 20 64 65 63 6c 61 72 61 t also a declara 00017df0: 74 69 6f 6e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 tion. */. 00017e00: 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f /* @internal */ 00017e10: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 . function is 00017e20: 53 74 61 74 65 6d 65 6e 74 42 75 74 4e 6f 74 44 StatementButNotD 00017e30: 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 eclaration(node) 00017e40: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00017e50: 6e 20 69 73 53 74 61 74 65 6d 65 6e 74 4b 69 6e n isStatementKin 00017e60: 64 42 75 74 4e 6f 74 44 65 63 6c 61 72 61 74 69 dButNotDeclarati 00017e70: 6f 6e 4b 69 6e 64 28 6e 6f 64 65 2e 6b 69 6e 64 onKind(node.kind 00017e80: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 00017e90: 69 73 53 74 61 74 65 6d 65 6e 74 42 75 74 4e 6f isStatementButNo 00017ea0: 74 44 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 69 tDeclaration = i 00017eb0: 73 53 74 61 74 65 6d 65 6e 74 42 75 74 4e 6f 74 sStatementButNot 00017ec0: 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 Declaration;. 00017ed0: 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f /* @internal */ 00017ee0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 . function is 00017ef0: 53 74 61 74 65 6d 65 6e 74 28 6e 6f 64 65 29 20 Statement(node) 00017f00: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6b 69 {. var ki 00017f10: 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 3b 0a nd = node.kind;. 00017f20: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 return i 00017f30: 73 53 74 61 74 65 6d 65 6e 74 4b 69 6e 64 42 75 sStatementKindBu 00017f40: 74 4e 6f 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b tNotDeclarationK 00017f50: 69 6e 64 28 6b 69 6e 64 29 0a 20 20 20 20 20 20 ind(kind). 00017f60: 20 20 20 20 20 20 7c 7c 20 69 73 44 65 63 6c 61 || isDecla 00017f70: 72 61 74 69 6f 6e 53 74 61 74 65 6d 65 6e 74 4b rationStatementK 00017f80: 69 6e 64 28 6b 69 6e 64 29 0a 20 20 20 20 20 20 ind(kind). 00017f90: 20 20 20 20 20 20 7c 7c 20 69 73 42 6c 6f 63 6b || isBlock 00017fa0: 53 74 61 74 65 6d 65 6e 74 28 6e 6f 64 65 29 3b Statement(node); 00017fb0: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00017fc0: 53 74 61 74 65 6d 65 6e 74 20 3d 20 69 73 53 74 Statement = isSt 00017fd0: 61 74 65 6d 65 6e 74 3b 0a 20 20 20 20 66 75 6e atement;. fun 00017fe0: 63 74 69 6f 6e 20 69 73 42 6c 6f 63 6b 53 74 61 ction isBlockSta 00017ff0: 74 65 6d 65 6e 74 28 6e 6f 64 65 29 20 7b 0a 20 tement(node) {. 00018000: 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e if (node. 00018010: 6b 69 6e 64 20 21 3d 3d 20 32 33 35 20 2f 2a 20 kind !== 235 /* 00018020: 53 79 6e 74 61 78 4b 69 6e 64 2e 42 6c 6f 63 6b SyntaxKind.Block 00018030: 20 2a 2f 29 0a 20 20 20 20 20 20 20 20 20 20 20 */). 00018040: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 return false;. 00018050: 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e if (node. 00018060: 70 61 72 65 6e 74 20 21 3d 3d 20 75 6e 64 65 66 parent !== undef 00018070: 69 6e 65 64 29 20 7b 0a 20 20 20 20 20 20 20 20 ined) {. 00018080: 20 20 20 20 69 66 20 28 6e 6f 64 65 2e 70 61 72 if (node.par 00018090: 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 32 35 32 ent.kind === 252 000180a0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 /* SyntaxKind.T 000180b0: 72 79 53 74 61 74 65 6d 65 6e 74 20 2a 2f 20 7c ryStatement */ | 000180c0: 7c 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b 69 | node.parent.ki 000180d0: 6e 64 20 3d 3d 3d 20 32 39 32 20 2f 2a 20 53 79 nd === 292 /* Sy 000180e0: 6e 74 61 78 4b 69 6e 64 2e 43 61 74 63 68 43 6c ntaxKind.CatchCl 000180f0: 61 75 73 65 20 2a 2f 29 20 7b 0a 20 20 20 20 20 ause */) {. 00018100: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00018110: 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 n false;. 00018120: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d }. } 00018130: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 00018140: 21 74 73 2e 69 73 46 75 6e 63 74 69 6f 6e 42 6c !ts.isFunctionBl 00018150: 6f 63 6b 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d ock(node);. } 00018160: 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 . /**. * 00018170: 4e 4f 54 45 3a 20 54 68 69 73 20 69 73 20 73 69 NOTE: This is si 00018180: 6d 69 6c 61 72 20 74 6f 20 60 69 73 53 74 61 74 milar to `isStat 00018190: 65 6d 65 6e 74 60 20 62 75 74 20 64 6f 65 73 20 ement` but does 000181a0: 6e 6f 74 20 61 63 63 65 73 73 20 70 61 72 65 6e not access paren 000181b0: 74 20 70 6f 69 6e 74 65 72 73 2e 0a 20 20 20 20 t pointers.. 000181c0: 20 2a 2f 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 */. /* @inte 000181d0: 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 rnal */. func 000181e0: 74 69 6f 6e 20 69 73 53 74 61 74 65 6d 65 6e 74 tion isStatement 000181f0: 4f 72 42 6c 6f 63 6b 28 6e 6f 64 65 29 20 7b 0a OrBlock(node) {. 00018200: 20 20 20 20 20 20 20 20 76 61 72 20 6b 69 6e 64 var kind 00018210: 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 3b 0a 20 20 = node.kind;. 00018220: 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 73 53 return isS 00018230: 74 61 74 65 6d 65 6e 74 4b 69 6e 64 42 75 74 4e tatementKindButN 00018240: 6f 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e otDeclarationKin 00018250: 64 28 6b 69 6e 64 29 0a 20 20 20 20 20 20 20 20 d(kind). 00018260: 20 20 20 20 7c 7c 20 69 73 44 65 63 6c 61 72 61 || isDeclara 00018270: 74 69 6f 6e 53 74 61 74 65 6d 65 6e 74 4b 69 6e tionStatementKin 00018280: 64 28 6b 69 6e 64 29 0a 20 20 20 20 20 20 20 20 d(kind). 00018290: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 000182a0: 32 33 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 235 /* SyntaxKin 000182b0: 64 2e 42 6c 6f 63 6b 20 2a 2f 3b 0a 20 20 20 20 d.Block */;. 000182c0: 7d 0a 20 20 20 20 74 73 2e 69 73 53 74 61 74 65 }. ts.isState 000182d0: 6d 65 6e 74 4f 72 42 6c 6f 63 6b 20 3d 20 69 73 mentOrBlock = is 000182e0: 53 74 61 74 65 6d 65 6e 74 4f 72 42 6c 6f 63 6b StatementOrBlock 000182f0: 3b 0a 20 20 20 20 2f 2f 20 4d 6f 64 75 6c 65 20 ;. // Module 00018300: 72 65 66 65 72 65 6e 63 65 73 0a 20 20 20 20 2f references. / 00018310: 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 * @internal */. 00018320: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4d 6f function isMo 00018330: 64 75 6c 65 52 65 66 65 72 65 6e 63 65 28 6e 6f duleReference(no 00018340: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 de) {. va 00018350: 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 r kind = node.ki 00018360: 6e 64 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 nd;. retu 00018370: 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 37 37 20 rn kind === 277 00018380: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 78 /* SyntaxKind.Ex 00018390: 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 52 65 66 65 ternalModuleRefe 000183a0: 72 65 6e 63 65 20 2a 2f 0a 20 20 20 20 20 20 20 rence */. 000183b0: 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d || kind === 000183c0: 20 31 36 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 161 /* SyntaxKi 000183d0: 6e 64 2e 51 75 61 6c 69 66 69 65 64 4e 61 6d 65 nd.QualifiedName 000183e0: 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 */. 000183f0: 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 37 39 20 2f || kind === 79 / 00018400: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 64 65 * SyntaxKind.Ide 00018410: 6e 74 69 66 69 65 72 20 2a 2f 3b 0a 20 20 20 20 ntifier */;. 00018420: 7d 0a 20 20 20 20 74 73 2e 69 73 4d 6f 64 75 6c }. ts.isModul 00018430: 65 52 65 66 65 72 65 6e 63 65 20 3d 20 69 73 4d eReference = isM 00018440: 6f 64 75 6c 65 52 65 66 65 72 65 6e 63 65 3b 0a oduleReference;. 00018450: 20 20 20 20 2f 2f 20 4a 53 58 0a 20 20 20 20 2f // JSX. / 00018460: 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 * @internal */. 00018470: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4a 73 function isJs 00018480: 78 54 61 67 4e 61 6d 65 45 78 70 72 65 73 73 69 xTagNameExpressi 00018490: 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 on(node) {. 000184a0: 20 20 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f var kind = no 000184b0: 64 65 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 de.kind;. 000184c0: 20 72 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d return kind === 000184d0: 20 31 30 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 108 /* SyntaxKi 000184e0: 6e 64 2e 54 68 69 73 4b 65 79 77 6f 72 64 20 2a nd.ThisKeyword * 000184f0: 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c /. || 00018500: 20 6b 69 6e 64 20 3d 3d 3d 20 37 39 20 2f 2a 20 kind === 79 /* 00018510: 53 79 6e 74 61 78 4b 69 6e 64 2e 49 64 65 6e 74 SyntaxKind.Ident 00018520: 69 66 69 65 72 20 2a 2f 0a 20 20 20 20 20 20 20 ifier */. 00018530: 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d || kind === 00018540: 20 32 30 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 206 /* SyntaxKi 00018550: 6e 64 2e 50 72 6f 70 65 72 74 79 41 63 63 65 73 nd.PropertyAcces 00018560: 73 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3b 0a sExpression */;. 00018570: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4a }. ts.isJ 00018580: 73 78 54 61 67 4e 61 6d 65 45 78 70 72 65 73 73 sxTagNameExpress 00018590: 69 6f 6e 20 3d 20 69 73 4a 73 78 54 61 67 4e 61 ion = isJsxTagNa 000185a0: 6d 65 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 meExpression;. 000185b0: 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a /* @internal * 000185c0: 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 /. function i 000185d0: 73 4a 73 78 43 68 69 6c 64 28 6e 6f 64 65 29 20 sJsxChild(node) 000185e0: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6b 69 {. var ki 000185f0: 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e 64 3b 0a nd = node.kind;. 00018600: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b return k 00018610: 69 6e 64 20 3d 3d 3d 20 32 37 38 20 2f 2a 20 53 ind === 278 /* S 00018620: 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 45 6c 65 yntaxKind.JsxEle 00018630: 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 ment */. 00018640: 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 || kind === 00018650: 32 38 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 288 /* SyntaxKin 00018660: 64 2e 4a 73 78 45 78 70 72 65 73 73 69 6f 6e 20 d.JsxExpression 00018670: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 00018680: 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 37 39 20 2f | kind === 279 / 00018690: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 * SyntaxKind.Jsx 000186a0: 53 65 6c 66 43 6c 6f 73 69 6e 67 45 6c 65 6d 65 SelfClosingEleme 000186b0: 6e 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 nt */. 000186c0: 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 31 31 || kind === 11 000186d0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a /* SyntaxKind.J 000186e0: 73 78 54 65 78 74 20 2a 2f 0a 20 20 20 20 20 20 sxText */. 000186f0: 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d || kind == 00018700: 3d 20 32 38 32 20 2f 2a 20 53 79 6e 74 61 78 4b = 282 /* SyntaxK 00018710: 69 6e 64 2e 4a 73 78 46 72 61 67 6d 65 6e 74 20 ind.JsxFragment 00018720: 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 */;. }. ts 00018730: 2e 69 73 4a 73 78 43 68 69 6c 64 20 3d 20 69 73 .isJsxChild = is 00018740: 4a 73 78 43 68 69 6c 64 3b 0a 20 20 20 20 2f 2a JsxChild;. /* 00018750: 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 @internal */. 00018760: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4a 73 78 function isJsx 00018770: 41 74 74 72 69 62 75 74 65 4c 69 6b 65 28 6e 6f AttributeLike(no 00018780: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 de) {. va 00018790: 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 r kind = node.ki 000187a0: 6e 64 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 nd;. retu 000187b0: 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 38 35 20 rn kind === 285 000187c0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 /* SyntaxKind.Js 000187d0: 78 41 74 74 72 69 62 75 74 65 20 2a 2f 0a 20 20 xAttribute */. 000187e0: 20 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e || kin 000187f0: 64 20 3d 3d 3d 20 32 38 37 20 2f 2a 20 53 79 6e d === 287 /* Syn 00018800: 74 61 78 4b 69 6e 64 2e 4a 73 78 53 70 72 65 61 taxKind.JsxSprea 00018810: 64 41 74 74 72 69 62 75 74 65 20 2a 2f 3b 0a 20 dAttribute */;. 00018820: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4a 73 }. ts.isJs 00018830: 78 41 74 74 72 69 62 75 74 65 4c 69 6b 65 20 3d xAttributeLike = 00018840: 20 69 73 4a 73 78 41 74 74 72 69 62 75 74 65 4c isJsxAttributeL 00018850: 69 6b 65 3b 0a 20 20 20 20 2f 2a 20 40 69 6e 74 ike;. /* @int 00018860: 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e ernal */. fun 00018870: 63 74 69 6f 6e 20 69 73 53 74 72 69 6e 67 4c 69 ction isStringLi 00018880: 74 65 72 61 6c 4f 72 4a 73 78 45 78 70 72 65 73 teralOrJsxExpres 00018890: 73 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 sion(node) {. 000188a0: 20 20 20 20 20 76 61 72 20 6b 69 6e 64 20 3d 20 var kind = 000188b0: 6e 6f 64 65 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 node.kind;. 000188c0: 20 20 20 72 65 74 75 72 6e 20 6b 69 6e 64 20 3d return kind = 000188d0: 3d 3d 20 31 30 20 2f 2a 20 53 79 6e 74 61 78 4b == 10 /* SyntaxK 000188e0: 69 6e 64 2e 53 74 72 69 6e 67 4c 69 74 65 72 61 ind.StringLitera 000188f0: 6c 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 l */. 00018900: 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 38 38 || kind === 288 00018910: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a /* SyntaxKind.J 00018920: 73 78 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3b sxExpression */; 00018930: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00018940: 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 4f 72 4a StringLiteralOrJ 00018950: 73 78 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 69 sxExpression = i 00018960: 73 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 4f 72 sStringLiteralOr 00018970: 4a 73 78 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 JsxExpression;. 00018980: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4a 73 function isJs 00018990: 78 4f 70 65 6e 69 6e 67 4c 69 6b 65 45 6c 65 6d xOpeningLikeElem 000189a0: 65 6e 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ent(node) {. 000189b0: 20 20 20 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e var kind = n 000189c0: 6f 64 65 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 ode.kind;. 000189d0: 20 20 72 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d return kind == 000189e0: 3d 20 32 38 30 20 2f 2a 20 53 79 6e 74 61 78 4b = 280 /* SyntaxK 000189f0: 69 6e 64 2e 4a 73 78 4f 70 65 6e 69 6e 67 45 6c ind.JsxOpeningEl 00018a00: 65 6d 65 6e 74 20 2a 2f 0a 20 20 20 20 20 20 20 ement */. 00018a10: 20 20 20 20 20 7c 7c 20 6b 69 6e 64 20 3d 3d 3d || kind === 00018a20: 20 32 37 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 279 /* SyntaxKi 00018a30: 6e 64 2e 4a 73 78 53 65 6c 66 43 6c 6f 73 69 6e nd.JsxSelfClosin 00018a40: 67 45 6c 65 6d 65 6e 74 20 2a 2f 3b 0a 20 20 20 gElement */;. 00018a50: 20 7d 0a 20 20 20 20 74 73 2e 69 73 4a 73 78 4f }. ts.isJsxO 00018a60: 70 65 6e 69 6e 67 4c 69 6b 65 45 6c 65 6d 65 6e peningLikeElemen 00018a70: 74 20 3d 20 69 73 4a 73 78 4f 70 65 6e 69 6e 67 t = isJsxOpening 00018a80: 4c 69 6b 65 45 6c 65 6d 65 6e 74 3b 0a 20 20 20 LikeElement;. 00018a90: 20 2f 2f 20 43 6c 61 75 73 65 73 0a 20 20 20 20 // Clauses. 00018aa0: 66 75 6e 63 74 69 6f 6e 20 69 73 43 61 73 65 4f function isCaseO 00018ab0: 72 44 65 66 61 75 6c 74 43 6c 61 75 73 65 28 6e rDefaultClause(n 00018ac0: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 ode) {. v 00018ad0: 61 72 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 2e 6b ar kind = node.k 00018ae0: 69 6e 64 3b 0a 20 20 20 20 20 20 20 20 72 65 74 ind;. ret 00018af0: 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 32 38 39 urn kind === 289 00018b00: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 /* SyntaxKind.C 00018b10: 61 73 65 43 6c 61 75 73 65 20 2a 2f 0a 20 20 20 aseClause */. 00018b20: 20 20 20 20 20 20 20 20 20 7c 7c 20 6b 69 6e 64 || kind 00018b30: 20 3d 3d 3d 20 32 39 30 20 2f 2a 20 53 79 6e 74 === 290 /* Synt 00018b40: 61 78 4b 69 6e 64 2e 44 65 66 61 75 6c 74 43 6c axKind.DefaultCl 00018b50: 61 75 73 65 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 ause */;. }. 00018b60: 20 20 20 74 73 2e 69 73 43 61 73 65 4f 72 44 65 ts.isCaseOrDe 00018b70: 66 61 75 6c 74 43 6c 61 75 73 65 20 3d 20 69 73 faultClause = is 00018b80: 43 61 73 65 4f 72 44 65 66 61 75 6c 74 43 6c 61 CaseOrDefaultCla 00018b90: 75 73 65 3b 0a 20 20 20 20 2f 2f 20 4a 53 44 6f use;. // JSDo 00018ba0: 63 0a 20 20 20 20 2f 2a 2a 20 54 72 75 65 20 69 c. /** True i 00018bb0: 66 20 6e 6f 64 65 20 69 73 20 6f 66 20 73 6f 6d f node is of som 00018bc0: 65 20 4a 53 44 6f 63 20 73 79 6e 74 61 78 20 6b e JSDoc syntax k 00018bd0: 69 6e 64 2e 20 2a 2f 0a 20 20 20 20 2f 2a 20 40 ind. */. /* @ 00018be0: 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 internal */. 00018bf0: 66 75 6e 63 74 69 6f 6e 20 69 73 4a 53 44 6f 63 function isJSDoc 00018c00: 4e 6f 64 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 Node(node) {. 00018c10: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 return node 00018c20: 2e 6b 69 6e 64 20 3e 3d 20 33 30 39 20 2f 2a 20 .kind >= 309 /* 00018c30: 53 79 6e 74 61 78 4b 69 6e 64 2e 46 69 72 73 74 SyntaxKind.First 00018c40: 4a 53 44 6f 63 4e 6f 64 65 20 2a 2f 20 26 26 20 JSDocNode */ && 00018c50: 6e 6f 64 65 2e 6b 69 6e 64 20 3c 3d 20 33 34 37 node.kind <= 347 00018c60: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4c /* SyntaxKind.L 00018c70: 61 73 74 4a 53 44 6f 63 4e 6f 64 65 20 2a 2f 3b astJSDocNode */; 00018c80: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00018c90: 4a 53 44 6f 63 4e 6f 64 65 20 3d 20 69 73 4a 53 JSDocNode = isJS 00018ca0: 44 6f 63 4e 6f 64 65 3b 0a 20 20 20 20 2f 2a 2a DocNode;. /** 00018cb0: 20 54 72 75 65 20 69 66 20 6e 6f 64 65 20 69 73 True if node is 00018cc0: 20 6f 66 20 61 20 6b 69 6e 64 20 74 68 61 74 20 of a kind that 00018cd0: 6d 61 79 20 63 6f 6e 74 61 69 6e 20 63 6f 6d 6d may contain comm 00018ce0: 65 6e 74 20 74 65 78 74 2e 20 2a 2f 0a 20 20 20 ent text. */. 00018cf0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 4a 53 44 6f function isJSDo 00018d00: 63 43 6f 6d 6d 65 6e 74 43 6f 6e 74 61 69 6e 69 cCommentContaini 00018d10: 6e 67 4e 6f 64 65 28 6e 6f 64 65 29 20 7b 0a 20 ngNode(node) {. 00018d20: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 00018d30: 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 33 32 30 20 de.kind === 320 00018d40: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 /* SyntaxKind.JS 00018d50: 44 6f 63 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 Doc */. 00018d60: 20 20 20 7c 7c 20 6e 6f 64 65 2e 6b 69 6e 64 20 || node.kind 00018d70: 3d 3d 3d 20 33 31 39 20 2f 2a 20 53 79 6e 74 61 === 319 /* Synta 00018d80: 78 4b 69 6e 64 2e 4a 53 44 6f 63 4e 61 6d 65 70 xKind.JSDocNamep 00018d90: 61 74 68 54 79 70 65 20 2a 2f 0a 20 20 20 20 20 athType */. 00018da0: 20 20 20 20 20 20 20 7c 7c 20 6e 6f 64 65 2e 6b || node.k 00018db0: 69 6e 64 20 3d 3d 3d 20 33 32 31 20 2f 2a 20 53 ind === 321 /* S 00018dc0: 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 54 yntaxKind.JSDocT 00018dd0: 65 78 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 ext */. 00018de0: 20 20 20 7c 7c 20 69 73 4a 53 44 6f 63 4c 69 6e || isJSDocLin 00018df0: 6b 4c 69 6b 65 28 6e 6f 64 65 29 0a 20 20 20 20 kLike(node). 00018e00: 20 20 20 20 20 20 20 20 7c 7c 20 69 73 4a 53 44 || isJSD 00018e10: 6f 63 54 61 67 28 6e 6f 64 65 29 0a 20 20 20 20 ocTag(node). 00018e20: 20 20 20 20 20 20 20 20 7c 7c 20 74 73 2e 69 73 || ts.is 00018e30: 4a 53 44 6f 63 54 79 70 65 4c 69 74 65 72 61 6c JSDocTypeLiteral 00018e40: 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 20 (node). 00018e50: 20 20 20 7c 7c 20 74 73 2e 69 73 4a 53 44 6f 63 || ts.isJSDoc 00018e60: 53 69 67 6e 61 74 75 72 65 28 6e 6f 64 65 29 3b Signature(node); 00018e70: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00018e80: 4a 53 44 6f 63 43 6f 6d 6d 65 6e 74 43 6f 6e 74 JSDocCommentCont 00018e90: 61 69 6e 69 6e 67 4e 6f 64 65 20 3d 20 69 73 4a ainingNode = isJ 00018ea0: 53 44 6f 63 43 6f 6d 6d 65 6e 74 43 6f 6e 74 61 SDocCommentConta 00018eb0: 69 6e 69 6e 67 4e 6f 64 65 3b 0a 20 20 20 20 2f iningNode;. / 00018ec0: 2f 20 54 4f 44 4f 3a 20 64 65 74 65 72 6d 69 6e / TODO: determin 00018ed0: 65 20 77 68 61 74 20 74 68 69 73 20 64 6f 65 73 e what this does 00018ee0: 20 62 65 66 6f 72 65 20 6d 61 6b 69 6e 67 20 69 before making i 00018ef0: 74 20 70 75 62 6c 69 63 2e 0a 20 20 20 20 2f 2a t public.. /* 00018f00: 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 @internal */. 00018f10: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4a 53 44 function isJSD 00018f20: 6f 63 54 61 67 28 6e 6f 64 65 29 20 7b 0a 20 20 ocTag(node) {. 00018f30: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 return nod 00018f40: 65 2e 6b 69 6e 64 20 3e 3d 20 33 32 37 20 2f 2a e.kind >= 327 /* 00018f50: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 69 72 73 SyntaxKind.Firs 00018f60: 74 4a 53 44 6f 63 54 61 67 4e 6f 64 65 20 2a 2f tJSDocTagNode */ 00018f70: 20 26 26 20 6e 6f 64 65 2e 6b 69 6e 64 20 3c 3d && node.kind <= 00018f80: 20 33 34 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 347 /* SyntaxKi 00018f90: 6e 64 2e 4c 61 73 74 4a 53 44 6f 63 54 61 67 4e nd.LastJSDocTagN 00018fa0: 6f 64 65 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ode */;. }. 00018fb0: 20 20 74 73 2e 69 73 4a 53 44 6f 63 54 61 67 20 ts.isJSDocTag 00018fc0: 3d 20 69 73 4a 53 44 6f 63 54 61 67 3b 0a 20 20 = isJSDocTag;. 00018fd0: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 65 74 function isSet 00018fe0: 41 63 63 65 73 73 6f 72 28 6e 6f 64 65 29 20 7b Accessor(node) { 00018ff0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 00019000: 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 37 node.kind === 17 00019010: 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 3 /* SyntaxKind. 00019020: 53 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 3b 0a SetAccessor */;. 00019030: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 53 }. ts.isS 00019040: 65 74 41 63 63 65 73 73 6f 72 20 3d 20 69 73 53 etAccessor = isS 00019050: 65 74 41 63 63 65 73 73 6f 72 3b 0a 20 20 20 20 etAccessor;. 00019060: 66 75 6e 63 74 69 6f 6e 20 69 73 47 65 74 41 63 function isGetAc 00019070: 63 65 73 73 6f 72 28 6e 6f 64 65 29 20 7b 0a 20 cessor(node) {. 00019080: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 00019090: 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 37 32 20 de.kind === 172 000190a0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 47 65 /* SyntaxKind.Ge 000190b0: 74 41 63 63 65 73 73 6f 72 20 2a 2f 3b 0a 20 20 tAccessor */;. 000190c0: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 47 65 74 }. ts.isGet 000190d0: 41 63 63 65 73 73 6f 72 20 3d 20 69 73 47 65 74 Accessor = isGet 000190e0: 41 63 63 65 73 73 6f 72 3b 0a 20 20 20 20 2f 2a Accessor;. /* 000190f0: 2a 20 54 72 75 65 20 69 66 20 68 61 73 20 6a 73 * True if has js 00019100: 64 6f 63 20 6e 6f 64 65 73 20 61 74 74 61 63 68 doc nodes attach 00019110: 65 64 20 74 6f 20 69 74 2e 20 2a 2f 0a 20 20 20 ed to it. */. 00019120: 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f /* @internal */ 00019130: 0a 20 20 20 20 2f 2f 20 54 4f 44 4f 3a 20 47 48 . // TODO: GH 00019140: 23 31 39 38 35 36 20 57 6f 75 6c 64 20 6c 69 6b #19856 Would lik 00019150: 65 20 74 6f 20 72 65 74 75 72 6e 20 60 6e 6f 64 e to return `nod 00019160: 65 20 69 73 20 4e 6f 64 65 20 26 20 7b 20 6a 73 e is Node & { js 00019170: 44 6f 63 3a 20 4a 53 44 6f 63 5b 5d 20 7d 60 20 Doc: JSDoc[] }` 00019180: 62 75 74 20 69 74 20 63 61 75 73 65 73 20 6c 6f but it causes lo 00019190: 6e 67 20 63 6f 6d 70 69 6c 65 20 74 69 6d 65 73 ng compile times 000191a0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 68 61 . function ha 000191b0: 73 4a 53 44 6f 63 4e 6f 64 65 73 28 6e 6f 64 65 sJSDocNodes(node 000191c0: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 000191d0: 6a 73 44 6f 63 20 3d 20 6e 6f 64 65 2e 6a 73 44 jsDoc = node.jsD 000191e0: 6f 63 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 oc;. retu 000191f0: 72 6e 20 21 21 6a 73 44 6f 63 20 26 26 20 6a 73 rn !!jsDoc && js 00019200: 44 6f 63 2e 6c 65 6e 67 74 68 20 3e 20 30 3b 0a Doc.length > 0;. 00019210: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 68 61 73 }. ts.has 00019220: 4a 53 44 6f 63 4e 6f 64 65 73 20 3d 20 68 61 73 JSDocNodes = has 00019230: 4a 53 44 6f 63 4e 6f 64 65 73 3b 0a 20 20 20 20 JSDocNodes;. 00019240: 2f 2a 2a 20 54 72 75 65 20 69 66 20 68 61 73 20 /** True if has 00019250: 74 79 70 65 20 6e 6f 64 65 20 61 74 74 61 63 68 type node attach 00019260: 65 64 20 74 6f 20 69 74 2e 20 2a 2f 0a 20 20 20 ed to it. */. 00019270: 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f /* @internal */ 00019280: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 68 61 . function ha 00019290: 73 54 79 70 65 28 6e 6f 64 65 29 20 7b 0a 20 20 sType(node) {. 000192a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 21 6e return !!n 000192b0: 6f 64 65 2e 74 79 70 65 3b 0a 20 20 20 20 7d 0a ode.type;. }. 000192c0: 20 20 20 20 74 73 2e 68 61 73 54 79 70 65 20 3d ts.hasType = 000192d0: 20 68 61 73 54 79 70 65 3b 0a 20 20 20 20 2f 2a hasType;. /* 000192e0: 2a 20 54 72 75 65 20 69 66 20 68 61 73 20 69 6e * True if has in 000192f0: 69 74 69 61 6c 69 7a 65 72 20 6e 6f 64 65 20 61 itializer node a 00019300: 74 74 61 63 68 65 64 20 74 6f 20 69 74 2e 20 2a ttached to it. * 00019310: 2f 0a 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e /. /* @intern 00019320: 61 6c 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 al */. functi 00019330: 6f 6e 20 68 61 73 49 6e 69 74 69 61 6c 69 7a 65 on hasInitialize 00019340: 72 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 r(node) {. 00019350: 20 20 72 65 74 75 72 6e 20 21 21 6e 6f 64 65 2e return !!node. 00019360: 69 6e 69 74 69 61 6c 69 7a 65 72 3b 0a 20 20 20 initializer;. 00019370: 20 7d 0a 20 20 20 20 74 73 2e 68 61 73 49 6e 69 }. ts.hasIni 00019380: 74 69 61 6c 69 7a 65 72 20 3d 20 68 61 73 49 6e tializer = hasIn 00019390: 69 74 69 61 6c 69 7a 65 72 3b 0a 20 20 20 20 2f itializer;. / 000193a0: 2a 2a 20 54 72 75 65 20 69 66 20 68 61 73 20 69 ** True if has i 000193b0: 6e 69 74 69 61 6c 69 7a 65 72 20 6e 6f 64 65 20 nitializer node 000193c0: 61 74 74 61 63 68 65 64 20 74 6f 20 69 74 2e 20 attached to it. 000193d0: 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 */. function 000193e0: 68 61 73 4f 6e 6c 79 45 78 70 72 65 73 73 69 6f hasOnlyExpressio 000193f0: 6e 49 6e 69 74 69 61 6c 69 7a 65 72 28 6e 6f 64 nInitializer(nod 00019400: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 73 77 69 e) {. swi 00019410: 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 tch (node.kind) 00019420: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 {. ca 00019430: 73 65 20 32 35 34 20 2f 2a 20 53 79 6e 74 61 78 se 254 /* Syntax 00019440: 4b 69 6e 64 2e 56 61 72 69 61 62 6c 65 44 65 63 Kind.VariableDec 00019450: 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 laration */:. 00019460: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 36 case 16 00019470: 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4 /* SyntaxKind. 00019480: 50 61 72 61 6d 65 74 65 72 20 2a 2f 3a 0a 20 20 Parameter */:. 00019490: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 000194a0: 30 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 03 /* SyntaxKind 000194b0: 2e 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 20 .BindingElement 000194c0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 000194d0: 63 61 73 65 20 31 36 37 20 2f 2a 20 53 79 6e 74 case 167 /* Synt 000194e0: 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 44 axKind.PropertyD 000194f0: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 00019500: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00019510: 32 39 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 296 /* SyntaxKin 00019520: 64 2e 50 72 6f 70 65 72 74 79 41 73 73 69 67 6e d.PropertyAssign 00019530: 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ment */:. 00019540: 20 20 20 20 20 63 61 73 65 20 32 39 39 20 2f 2a case 299 /* 00019550: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 6e 75 6d SyntaxKind.Enum 00019560: 4d 65 6d 62 65 72 20 2a 2f 3a 0a 20 20 20 20 20 Member */:. 00019570: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00019580: 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 n true;. 00019590: 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 default:. 000195a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 000195b0: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 urn false;. 000195c0: 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 }. }. t 000195d0: 73 2e 68 61 73 4f 6e 6c 79 45 78 70 72 65 73 73 s.hasOnlyExpress 000195e0: 69 6f 6e 49 6e 69 74 69 61 6c 69 7a 65 72 20 3d ionInitializer = 000195f0: 20 68 61 73 4f 6e 6c 79 45 78 70 72 65 73 73 69 hasOnlyExpressi 00019600: 6f 6e 49 6e 69 74 69 61 6c 69 7a 65 72 3b 0a 20 onInitializer;. 00019610: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4f 62 function isOb 00019620: 6a 65 63 74 4c 69 74 65 72 61 6c 45 6c 65 6d 65 jectLiteralEleme 00019630: 6e 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 nt(node) {. 00019640: 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 6b return node.k 00019650: 69 6e 64 20 3d 3d 3d 20 32 38 35 20 2f 2a 20 53 ind === 285 /* S 00019660: 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 41 74 74 yntaxKind.JsxAtt 00019670: 72 69 62 75 74 65 20 2a 2f 20 7c 7c 20 6e 6f 64 ribute */ || nod 00019680: 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 38 37 20 2f e.kind === 287 / 00019690: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 * SyntaxKind.Jsx 000196a0: 53 70 72 65 61 64 41 74 74 72 69 62 75 74 65 20 SpreadAttribute 000196b0: 2a 2f 20 7c 7c 20 69 73 4f 62 6a 65 63 74 4c 69 */ || isObjectLi 000196c0: 74 65 72 61 6c 45 6c 65 6d 65 6e 74 4c 69 6b 65 teralElementLike 000196d0: 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d 0a 20 20 (node);. }. 000196e0: 20 20 74 73 2e 69 73 4f 62 6a 65 63 74 4c 69 74 ts.isObjectLit 000196f0: 65 72 61 6c 45 6c 65 6d 65 6e 74 20 3d 20 69 73 eralElement = is 00019700: 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 45 6c 65 ObjectLiteralEle 00019710: 6d 65 6e 74 3b 0a 20 20 20 20 2f 2a 20 40 69 6e ment;. /* @in 00019720: 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 66 75 ternal */. fu 00019730: 6e 63 74 69 6f 6e 20 69 73 54 79 70 65 52 65 66 nction isTypeRef 00019740: 65 72 65 6e 63 65 54 79 70 65 28 6e 6f 64 65 29 erenceType(node) 00019750: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00019760: 6e 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 n node.kind === 00019770: 31 37 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 178 /* SyntaxKin 00019780: 64 2e 54 79 70 65 52 65 66 65 72 65 6e 63 65 20 d.TypeReference 00019790: 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 6b 69 6e 64 20 */ || node.kind 000197a0: 3d 3d 3d 20 32 32 38 20 2f 2a 20 53 79 6e 74 61 === 228 /* Synta 000197b0: 78 4b 69 6e 64 2e 45 78 70 72 65 73 73 69 6f 6e xKind.Expression 000197c0: 57 69 74 68 54 79 70 65 41 72 67 75 6d 65 6e 74 WithTypeArgument 000197d0: 73 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 s */;. }. 000197e0: 74 73 2e 69 73 54 79 70 65 52 65 66 65 72 65 6e ts.isTypeReferen 000197f0: 63 65 54 79 70 65 20 3d 20 69 73 54 79 70 65 52 ceType = isTypeR 00019800: 65 66 65 72 65 6e 63 65 54 79 70 65 3b 0a 20 20 eferenceType;. 00019810: 20 20 76 61 72 20 4d 41 58 5f 53 4d 49 5f 58 38 var MAX_SMI_X8 00019820: 36 20 3d 20 31 30 37 33 37 34 31 38 32 33 3b 0a 6 = 1073741823;. 00019830: 20 20 20 20 2f 2a 20 40 69 6e 74 65 72 6e 61 6c /* @internal 00019840: 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e */. function 00019850: 20 67 75 65 73 73 49 6e 64 65 6e 74 61 74 69 6f guessIndentatio 00019860: 6e 28 6c 69 6e 65 73 29 20 7b 0a 20 20 20 20 20 n(lines) {. 00019870: 20 20 20 76 61 72 20 69 6e 64 65 6e 74 61 74 69 var indentati 00019880: 6f 6e 20 3d 20 4d 41 58 5f 53 4d 49 5f 58 38 36 on = MAX_SMI_X86 00019890: 3b 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 76 ;. for (v 000198a0: 61 72 20 5f 69 20 3d 20 30 2c 20 6c 69 6e 65 73 ar _i = 0, lines 000198b0: 5f 31 20 3d 20 6c 69 6e 65 73 3b 20 5f 69 20 3c _1 = lines; _i < 000198c0: 20 6c 69 6e 65 73 5f 31 2e 6c 65 6e 67 74 68 3b lines_1.length; 000198d0: 20 5f 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 20 _i++) {. 000198e0: 20 20 20 20 20 76 61 72 20 6c 69 6e 65 20 3d 20 var line = 000198f0: 6c 69 6e 65 73 5f 31 5b 5f 69 5d 3b 0a 20 20 20 lines_1[_i];. 00019900: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6c 69 if (!li 00019910: 6e 65 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 20 20 ne.length) {. 00019920: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e con 00019930: 74 69 6e 75 65 3b 0a 20 20 20 20 20 20 20 20 20 tinue;. 00019940: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 00019950: 20 76 61 72 20 69 20 3d 20 30 3b 0a 20 20 20 20 var i = 0;. 00019960: 20 20 20 20 20 20 20 20 66 6f 72 20 28 3b 20 69 for (; i 00019970: 20 3c 20 6c 69 6e 65 2e 6c 65 6e 67 74 68 20 26 < line.length & 00019980: 26 20 69 20 3c 20 69 6e 64 65 6e 74 61 74 69 6f & i < indentatio 00019990: 6e 3b 20 69 2b 2b 29 20 7b 0a 20 20 20 20 20 20 n; i++) {. 000199a0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 74 if (!t 000199b0: 73 2e 69 73 57 68 69 74 65 53 70 61 63 65 4c 69 s.isWhiteSpaceLi 000199c0: 6b 65 28 6c 69 6e 65 2e 63 68 61 72 43 6f 64 65 ke(line.charCode 000199d0: 41 74 28 69 29 29 29 20 7b 0a 20 20 20 20 20 20 At(i))) {. 000199e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br 000199f0: 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 eak;. 00019a00: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 }. 00019a10: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 00019a20: 20 69 66 20 28 69 20 3c 20 69 6e 64 65 6e 74 61 if (i < indenta 00019a30: 74 69 6f 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 tion) {. 00019a40: 20 20 20 20 20 20 20 20 69 6e 64 65 6e 74 61 74 indentat 00019a50: 69 6f 6e 20 3d 20 69 3b 0a 20 20 20 20 20 20 20 ion = i;. 00019a60: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 }. 00019a70: 20 20 20 69 66 20 28 69 6e 64 65 6e 74 61 74 69 if (indentati 00019a80: 6f 6e 20 3d 3d 3d 20 30 29 20 7b 0a 20 20 20 20 on === 0) {. 00019a90: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00019aa0: 72 6e 20 30 3b 0a 20 20 20 20 20 20 20 20 20 20 rn 0;. 00019ab0: 20 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 }. }. 00019ac0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 6e 64 return ind 00019ad0: 65 6e 74 61 74 69 6f 6e 20 3d 3d 3d 20 4d 41 58 entation === MAX 00019ae0: 5f 53 4d 49 5f 58 38 36 20 3f 20 75 6e 64 65 66 _SMI_X86 ? undef 00019af0: 69 6e 65 64 20 3a 20 69 6e 64 65 6e 74 61 74 69 ined : indentati 00019b00: 6f 6e 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 on;. }. ts 00019b10: 2e 67 75 65 73 73 49 6e 64 65 6e 74 61 74 69 6f .guessIndentatio 00019b20: 6e 20 3d 20 67 75 65 73 73 49 6e 64 65 6e 74 61 n = guessIndenta 00019b30: 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 tion;. functi 00019b40: 6f 6e 20 69 73 53 74 72 69 6e 67 4c 69 74 65 72 on isStringLiter 00019b50: 61 6c 4c 69 6b 65 28 6e 6f 64 65 29 20 7b 0a 20 alLike(node) {. 00019b60: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 00019b70: 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 30 20 2f de.kind === 10 / 00019b80: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 74 72 * SyntaxKind.Str 00019b90: 69 6e 67 4c 69 74 65 72 61 6c 20 2a 2f 20 7c 7c ingLiteral */ || 00019ba0: 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 node.kind === 1 00019bb0: 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4 /* SyntaxKind. 00019bc0: 4e 6f 53 75 62 73 74 69 74 75 74 69 6f 6e 54 65 NoSubstitutionTe 00019bd0: 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c 20 2a 2f mplateLiteral */ 00019be0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 00019bf0: 73 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 4c 69 sStringLiteralLi 00019c00: 6b 65 20 3d 20 69 73 53 74 72 69 6e 67 4c 69 74 ke = isStringLit 00019c10: 65 72 61 6c 4c 69 6b 65 3b 0a 20 20 20 20 66 75 eralLike;. fu 00019c20: 6e 63 74 69 6f 6e 20 69 73 4a 53 44 6f 63 4c 69 nction isJSDocLi 00019c30: 6e 6b 4c 69 6b 65 28 6e 6f 64 65 29 20 7b 0a 20 nkLike(node) {. 00019c40: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 00019c50: 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 33 32 34 20 de.kind === 324 00019c60: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 /* SyntaxKind.JS 00019c70: 44 6f 63 4c 69 6e 6b 20 2a 2f 20 7c 7c 20 6e 6f DocLink */ || no 00019c80: 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 33 32 35 20 de.kind === 325 00019c90: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 /* SyntaxKind.JS 00019ca0: 44 6f 63 4c 69 6e 6b 43 6f 64 65 20 2a 2f 20 7c DocLinkCode */ | 00019cb0: 7c 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 | node.kind === 00019cc0: 33 32 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 326 /* SyntaxKin 00019cd0: 64 2e 4a 53 44 6f 63 4c 69 6e 6b 50 6c 61 69 6e d.JSDocLinkPlain 00019ce0: 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 */;. }. t 00019cf0: 73 2e 69 73 4a 53 44 6f 63 4c 69 6e 6b 4c 69 6b s.isJSDocLinkLik 00019d00: 65 20 3d 20 69 73 4a 53 44 6f 63 4c 69 6e 6b 4c e = isJSDocLinkL 00019d10: 69 6b 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ike;. functio 00019d20: 6e 20 68 61 73 52 65 73 74 50 61 72 61 6d 65 74 n hasRestParamet 00019d30: 65 72 28 73 29 20 7b 0a 20 20 20 20 20 20 20 20 er(s) {. 00019d40: 76 61 72 20 6c 61 73 74 20 3d 20 74 73 2e 6c 61 var last = ts.la 00019d50: 73 74 4f 72 55 6e 64 65 66 69 6e 65 64 28 73 2e stOrUndefined(s. 00019d60: 70 61 72 61 6d 65 74 65 72 73 29 3b 0a 20 20 20 parameters);. 00019d70: 20 20 20 20 20 72 65 74 75 72 6e 20 21 21 6c 61 return !!la 00019d80: 73 74 20 26 26 20 69 73 52 65 73 74 50 61 72 61 st && isRestPara 00019d90: 6d 65 74 65 72 28 6c 61 73 74 29 3b 0a 20 20 20 meter(last);. 00019da0: 20 7d 0a 20 20 20 20 74 73 2e 68 61 73 52 65 73 }. ts.hasRes 00019db0: 74 50 61 72 61 6d 65 74 65 72 20 3d 20 68 61 73 tParameter = has 00019dc0: 52 65 73 74 50 61 72 61 6d 65 74 65 72 3b 0a 20 RestParameter;. 00019dd0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 52 65 function isRe 00019de0: 73 74 50 61 72 61 6d 65 74 65 72 28 6e 6f 64 65 stParameter(node 00019df0: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 00019e00: 74 79 70 65 20 3d 20 74 73 2e 69 73 4a 53 44 6f type = ts.isJSDo 00019e10: 63 50 61 72 61 6d 65 74 65 72 54 61 67 28 6e 6f cParameterTag(no 00019e20: 64 65 29 20 3f 20 28 6e 6f 64 65 2e 74 79 70 65 de) ? (node.type 00019e30: 45 78 70 72 65 73 73 69 6f 6e 20 26 26 20 6e 6f Expression && no 00019e40: 64 65 2e 74 79 70 65 45 78 70 72 65 73 73 69 6f de.typeExpressio 00019e50: 6e 2e 74 79 70 65 29 20 3a 20 6e 6f 64 65 2e 74 n.type) : node.t 00019e60: 79 70 65 3b 0a 20 20 20 20 20 20 20 20 72 65 74 ype;. ret 00019e70: 75 72 6e 20 6e 6f 64 65 2e 64 6f 74 44 6f 74 44 urn node.dotDotD 00019e80: 6f 74 54 6f 6b 65 6e 20 21 3d 3d 20 75 6e 64 65 otToken !== unde 00019e90: 66 69 6e 65 64 20 7c 7c 20 21 21 74 79 70 65 20 fined || !!type 00019ea0: 26 26 20 74 79 70 65 2e 6b 69 6e 64 20 3d 3d 3d && type.kind === 00019eb0: 20 33 31 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 318 /* SyntaxKi 00019ec0: 6e 64 2e 4a 53 44 6f 63 56 61 72 69 61 64 69 63 nd.JSDocVariadic 00019ed0: 54 79 70 65 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 Type */;. }. 00019ee0: 20 20 20 74 73 2e 69 73 52 65 73 74 50 61 72 61 ts.isRestPara 00019ef0: 6d 65 74 65 72 20 3d 20 69 73 52 65 73 74 50 61 meter = isRestPa 00019f00: 72 61 6d 65 74 65 72 3b 0a 20 20 20 20 2f 2f 20 rameter;. // 00019f10: 23 65 6e 64 72 65 67 69 6f 6e 0a 7d 29 28 74 73 #endregion.})(ts 00019f20: 20 7c 7c 20 28 74 73 20 3d 20 7b 7d 29 29 3b 0a || (ts = {}));. 00019f30: 2f 2a 20 40 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a /* @internal */. 00019f40: 76 61 72 20 74 73 3b 0a 28 66 75 6e 63 74 69 6f var ts;.(functio 00019f50: 6e 20 28 74 73 29 20 7b 0a 20 20 20 20 74 73 2e n (ts) {. ts. 00019f60: 72 65 73 6f 6c 76 69 6e 67 45 6d 70 74 79 41 72 resolvingEmptyAr 00019f70: 72 61 79 20 3d 20 5b 5d 3b 0a 20 20 20 20 74 73 ray = [];. ts 00019f80: 2e 65 78 74 65 72 6e 61 6c 48 65 6c 70 65 72 73 .externalHelpers 00019f90: 4d 6f 64 75 6c 65 4e 61 6d 65 54 65 78 74 20 3d ModuleNameText = 00019fa0: 20 22 74 73 6c 69 62 22 3b 0a 20 20 20 20 74 73 "tslib";. ts 00019fb0: 2e 64 65 66 61 75 6c 74 4d 61 78 69 6d 75 6d 54 .defaultMaximumT 00019fc0: 72 75 6e 63 61 74 69 6f 6e 4c 65 6e 67 74 68 20 runcationLength 00019fd0: 3d 20 31 36 30 3b 0a 20 20 20 20 74 73 2e 6e 6f = 160;. ts.no 00019fe0: 54 72 75 6e 63 61 74 69 6f 6e 4d 61 78 69 6d 75 TruncationMaximu 00019ff0: 6d 54 72 75 6e 63 61 74 69 6f 6e 4c 65 6e 67 74 mTruncationLengt 0001a000: 68 20 3d 20 31 30 30 30 30 30 30 3b 0a 20 20 20 h = 1000000;. 0001a010: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 44 65 63 function getDec 0001a020: 6c 61 72 61 74 69 6f 6e 4f 66 4b 69 6e 64 28 73 larationOfKind(s 0001a030: 79 6d 62 6f 6c 2c 20 6b 69 6e 64 29 20 7b 0a 20 ymbol, kind) {. 0001a040: 20 20 20 20 20 20 20 76 61 72 20 64 65 63 6c 61 var decla 0001a050: 72 61 74 69 6f 6e 73 20 3d 20 73 79 6d 62 6f 6c rations = symbol 0001a060: 2e 64 65 63 6c 61 72 61 74 69 6f 6e 73 3b 0a 20 .declarations;. 0001a070: 20 20 20 20 20 20 20 69 66 20 28 64 65 63 6c 61 if (decla 0001a080: 72 61 74 69 6f 6e 73 29 20 7b 0a 20 20 20 20 20 rations) {. 0001a090: 20 20 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 for (var 0001a0a0: 5f 69 20 3d 20 30 2c 20 64 65 63 6c 61 72 61 74 _i = 0, declarat 0001a0b0: 69 6f 6e 73 5f 31 20 3d 20 64 65 63 6c 61 72 61 ions_1 = declara 0001a0c0: 74 69 6f 6e 73 3b 20 5f 69 20 3c 20 64 65 63 6c tions; _i < decl 0001a0d0: 61 72 61 74 69 6f 6e 73 5f 31 2e 6c 65 6e 67 74 arations_1.lengt 0001a0e0: 68 3b 20 5f 69 2b 2b 29 20 7b 0a 20 20 20 20 20 h; _i++) {. 0001a0f0: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 64 var d 0001a100: 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 64 65 63 eclaration = dec 0001a110: 6c 61 72 61 74 69 6f 6e 73 5f 31 5b 5f 69 5d 3b larations_1[_i]; 0001a120: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0001a130: 20 69 66 20 28 64 65 63 6c 61 72 61 74 69 6f 6e if (declaration 0001a140: 2e 6b 69 6e 64 20 3d 3d 3d 20 6b 69 6e 64 29 20 .kind === kind) 0001a150: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 0001a160: 20 20 20 20 20 20 72 65 74 75 72 6e 20 64 65 63 return dec 0001a170: 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 20 20 20 laration;. 0001a180: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 0001a190: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0001a1a0: 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 }. retu 0001a1b0: 72 6e 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 rn undefined;. 0001a1c0: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 44 65 }. ts.getDe 0001a1d0: 63 6c 61 72 61 74 69 6f 6e 4f 66 4b 69 6e 64 20 clarationOfKind 0001a1e0: 3d 20 67 65 74 44 65 63 6c 61 72 61 74 69 6f 6e = getDeclaration 0001a1f0: 4f 66 4b 69 6e 64 3b 0a 20 20 20 20 66 75 6e 63 OfKind;. func 0001a200: 74 69 6f 6e 20 67 65 74 44 65 63 6c 61 72 61 74 tion getDeclarat 0001a210: 69 6f 6e 73 4f 66 4b 69 6e 64 28 73 79 6d 62 6f ionsOfKind(symbo 0001a220: 6c 2c 20 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 l, kind) {. 0001a230: 20 20 20 72 65 74 75 72 6e 20 74 73 2e 66 69 6c return ts.fil 0001a240: 74 65 72 28 73 79 6d 62 6f 6c 2e 64 65 63 6c 61 ter(symbol.decla 0001a250: 72 61 74 69 6f 6e 73 20 7c 7c 20 74 73 2e 65 6d rations || ts.em 0001a260: 70 74 79 41 72 72 61 79 2c 20 66 75 6e 63 74 69 ptyArray, functi 0001a270: 6f 6e 20 28 64 29 20 7b 20 72 65 74 75 72 6e 20 on (d) { return 0001a280: 64 2e 6b 69 6e 64 20 3d 3d 3d 20 6b 69 6e 64 3b d.kind === kind; 0001a290: 20 7d 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 });. }. t 0001a2a0: 73 2e 67 65 74 44 65 63 6c 61 72 61 74 69 6f 6e s.getDeclaration 0001a2b0: 73 4f 66 4b 69 6e 64 20 3d 20 67 65 74 44 65 63 sOfKind = getDec 0001a2c0: 6c 61 72 61 74 69 6f 6e 73 4f 66 4b 69 6e 64 3b larationsOfKind; 0001a2d0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 . function cr 0001a2e0: 65 61 74 65 53 79 6d 62 6f 6c 54 61 62 6c 65 28 eateSymbolTable( 0001a2f0: 73 79 6d 62 6f 6c 73 29 20 7b 0a 20 20 20 20 20 symbols) {. 0001a300: 20 20 20 76 61 72 20 72 65 73 75 6c 74 20 3d 20 var result = 0001a310: 6e 65 77 20 74 73 2e 4d 61 70 28 29 3b 0a 20 20 new ts.Map();. 0001a320: 20 20 20 20 20 20 69 66 20 28 73 79 6d 62 6f 6c if (symbol 0001a330: 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 s) {. 0001a340: 20 66 6f 72 20 28 76 61 72 20 5f 69 20 3d 20 30 for (var _i = 0 0001a350: 2c 20 73 79 6d 62 6f 6c 73 5f 31 20 3d 20 73 79 , symbols_1 = sy 0001a360: 6d 62 6f 6c 73 3b 20 5f 69 20 3c 20 73 79 6d 62 mbols; _i < symb 0001a370: 6f 6c 73 5f 31 2e 6c 65 6e 67 74 68 3b 20 5f 69 ols_1.length; _i 0001a380: 2b 2b 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 ++) {. 0001a390: 20 20 20 20 20 20 76 61 72 20 73 79 6d 62 6f 6c var symbol 0001a3a0: 20 3d 20 73 79 6d 62 6f 6c 73 5f 31 5b 5f 69 5d = symbols_1[_i] 0001a3b0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 0001a3c0: 20 20 72 65 73 75 6c 74 2e 73 65 74 28 73 79 6d result.set(sym 0001a3d0: 62 6f 6c 2e 65 73 63 61 70 65 64 4e 61 6d 65 2c bol.escapedName, 0001a3e0: 20 73 79 6d 62 6f 6c 29 3b 0a 20 20 20 20 20 20 symbol);. 0001a3f0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 0001a400: 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e }. return 0001a410: 20 72 65 73 75 6c 74 3b 0a 20 20 20 20 7d 0a 20 result;. }. 0001a420: 20 20 20 74 73 2e 63 72 65 61 74 65 53 79 6d 62 ts.createSymb 0001a430: 6f 6c 54 61 62 6c 65 20 3d 20 63 72 65 61 74 65 olTable = create 0001a440: 53 79 6d 62 6f 6c 54 61 62 6c 65 3b 0a 20 20 20 SymbolTable;. 0001a450: 20 66 75 6e 63 74 69 6f 6e 20 69 73 54 72 61 6e function isTran 0001a460: 73 69 65 6e 74 53 79 6d 62 6f 6c 28 73 79 6d 62 sientSymbol(symb 0001a470: 6f 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 ol) {. re 0001a480: 74 75 72 6e 20 28 73 79 6d 62 6f 6c 2e 66 6c 61 turn (symbol.fla 0001a490: 67 73 20 26 20 33 33 35 35 34 34 33 32 20 2f 2a gs & 33554432 /* 0001a4a0: 20 53 79 6d 62 6f 6c 46 6c 61 67 73 2e 54 72 61 SymbolFlags.Tra 0001a4b0: 6e 73 69 65 6e 74 20 2a 2f 29 20 21 3d 3d 20 30 nsient */) !== 0 0001a4c0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 0001a4d0: 73 54 72 61 6e 73 69 65 6e 74 53 79 6d 62 6f 6c sTransientSymbol 0001a4e0: 20 3d 20 69 73 54 72 61 6e 73 69 65 6e 74 53 79 = isTransientSy 0001a4f0: 6d 62 6f 6c 3b 0a 20 20 20 20 76 61 72 20 73 74 mbol;. var st 0001a500: 72 69 6e 67 57 72 69 74 65 72 20 3d 20 63 72 65 ringWriter = cre 0001a510: 61 74 65 53 69 6e 67 6c 65 4c 69 6e 65 53 74 72 ateSingleLineStr 0001a520: 69 6e 67 57 72 69 74 65 72 28 29 3b 0a 20 20 20 ingWriter();. 0001a530: 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 61 74 65 function create 0001a540: 53 69 6e 67 6c 65 4c 69 6e 65 53 74 72 69 6e 67 SingleLineString 0001a550: 57 72 69 74 65 72 28 29 20 7b 0a 20 20 20 20 20 Writer() {. 0001a560: 20 20 20 76 61 72 20 73 74 72 20 3d 20 22 22 3b var str = ""; 0001a570: 0a 20 20 20 20 20 20 20 20 76 61 72 20 77 72 69 . var wri 0001a580: 74 65 54 65 78 74 20 3d 20 66 75 6e 63 74 69 6f teText = functio 0001a590: 6e 20 28 74 65 78 74 29 20 7b 20 72 65 74 75 72 n (text) { retur 0001a5a0: 6e 20 73 74 72 20 2b 3d 20 74 65 78 74 3b 20 7d n str += text; } 0001a5b0: 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e ;. return 0001a5c0: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 {. g 0001a5d0: 65 74 54 65 78 74 3a 20 66 75 6e 63 74 69 6f 6e etText: function 0001a5e0: 20 28 29 20 7b 20 72 65 74 75 72 6e 20 73 74 72 () { return str 0001a5f0: 3b 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 ; },. 0001a600: 20 77 72 69 74 65 3a 20 77 72 69 74 65 54 65 78 write: writeTex 0001a610: 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 t,. r 0001a620: 61 77 57 72 69 74 65 3a 20 77 72 69 74 65 54 65 awWrite: writeTe 0001a630: 78 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 xt,. 0001a640: 77 72 69 74 65 4b 65 79 77 6f 72 64 3a 20 77 72 writeKeyword: wr 0001a650: 69 74 65 54 65 78 74 2c 0a 20 20 20 20 20 20 20 iteText,. 0001a660: 20 20 20 20 20 77 72 69 74 65 4f 70 65 72 61 74 writeOperat 0001a670: 6f 72 3a 20 77 72 69 74 65 54 65 78 74 2c 0a 20 or: writeText,. 0001a680: 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 write 0001a690: 50 75 6e 63 74 75 61 74 69 6f 6e 3a 20 77 72 69 Punctuation: wri 0001a6a0: 74 65 54 65 78 74 2c 0a 20 20 20 20 20 20 20 20 teText,. 0001a6b0: 20 20 20 20 77 72 69 74 65 53 70 61 63 65 3a 20 writeSpace: 0001a6c0: 77 72 69 74 65 54 65 78 74 2c 0a 20 20 20 20 20 writeText,. 0001a6d0: 20 20 20 20 20 20 20 77 72 69 74 65 53 74 72 69 writeStri 0001a6e0: 6e 67 4c 69 74 65 72 61 6c 3a 20 77 72 69 74 65 ngLiteral: write 0001a6f0: 54 65 78 74 2c 0a 20 20 20 20 20 20 20 20 20 20 Text,. 0001a700: 20 20 77 72 69 74 65 4c 69 74 65 72 61 6c 3a 20 writeLiteral: 0001a710: 77 72 69 74 65 54 65 78 74 2c 0a 20 20 20 20 20 writeText,. 0001a720: 20 20 20 20 20 20 20 77 72 69 74 65 50 61 72 61 writePara 0001a730: 6d 65 74 65 72 3a 20 77 72 69 74 65 54 65 78 74 meter: writeText 0001a740: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 77 72 ,. wr 0001a750: 69 74 65 50 72 6f 70 65 72 74 79 3a 20 77 72 69 iteProperty: wri 0001a760: 74 65 54 65 78 74 2c 0a 20 20 20 20 20 20 20 20 teText,. 0001a770: 20 20 20 20 77 72 69 74 65 53 79 6d 62 6f 6c 3a writeSymbol: 0001a780: 20 66 75 6e 63 74 69 6f 6e 20 28 73 2c 20 5f 29 function (s, _) 0001a790: 20 7b 20 72 65 74 75 72 6e 20 77 72 69 74 65 54 { return writeT 0001a7a0: 65 78 74 28 73 29 3b 20 7d 2c 0a 20 20 20 20 20 ext(s); },. 0001a7b0: 20 20 20 20 20 20 20 77 72 69 74 65 54 72 61 69 writeTrai 0001a7c0: 6c 69 6e 67 53 65 6d 69 63 6f 6c 6f 6e 3a 20 77 lingSemicolon: w 0001a7d0: 72 69 74 65 54 65 78 74 2c 0a 20 20 20 20 20 20 riteText,. 0001a7e0: 20 20 20 20 20 20 77 72 69 74 65 43 6f 6d 6d 65 writeComme 0001a7f0: 6e 74 3a 20 77 72 69 74 65 54 65 78 74 2c 0a 20 nt: writeText,. 0001a800: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 54 65 getTe 0001a810: 78 74 50 6f 73 3a 20 66 75 6e 63 74 69 6f 6e 20 xtPos: function 0001a820: 28 29 20 7b 20 72 65 74 75 72 6e 20 73 74 72 2e () { return str. 0001a830: 6c 65 6e 67 74 68 3b 20 7d 2c 0a 20 20 20 20 20 length; },. 0001a840: 20 20 20 20 20 20 20 67 65 74 4c 69 6e 65 3a 20 getLine: 0001a850: 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 20 72 65 function () { re 0001a860: 74 75 72 6e 20 30 3b 20 7d 2c 0a 20 20 20 20 20 turn 0; },. 0001a870: 20 20 20 20 20 20 20 67 65 74 43 6f 6c 75 6d 6e getColumn 0001a880: 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 20 : function () { 0001a890: 72 65 74 75 72 6e 20 30 3b 20 7d 2c 0a 20 20 20 return 0; },. 0001a8a0: 20 20 20 20 20 20 20 20 20 67 65 74 49 6e 64 65 getInde 0001a8b0: 6e 74 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 nt: function () 0001a8c0: 7b 20 72 65 74 75 72 6e 20 30 3b 20 7d 2c 0a 20 { return 0; },. 0001a8d0: 20 20 20 20 20 20 20 20 20 20 20 69 73 41 74 53 isAtS 0001a8e0: 74 61 72 74 4f 66 4c 69 6e 65 3a 20 66 75 6e 63 tartOfLine: func 0001a8f0: 74 69 6f 6e 20 28 29 20 7b 20 72 65 74 75 72 6e tion () { return 0001a900: 20 66 61 6c 73 65 3b 20 7d 2c 0a 20 20 20 20 20 false; },. 0001a910: 20 20 20 20 20 20 20 68 61 73 54 72 61 69 6c 69 hasTraili 0001a920: 6e 67 43 6f 6d 6d 65 6e 74 3a 20 66 75 6e 63 74 ngComment: funct 0001a930: 69 6f 6e 20 28 29 20 7b 20 72 65 74 75 72 6e 20 ion () { return 0001a940: 66 61 6c 73 65 3b 20 7d 2c 0a 20 20 20 20 20 20 false; },. 0001a950: 20 20 20 20 20 20 68 61 73 54 72 61 69 6c 69 6e hasTrailin 0001a960: 67 57 68 69 74 65 73 70 61 63 65 3a 20 66 75 6e gWhitespace: fun 0001a970: 63 74 69 6f 6e 20 28 29 20 7b 20 72 65 74 75 72 ction () { retur 0001a980: 6e 20 21 21 73 74 72 2e 6c 65 6e 67 74 68 20 26 n !!str.length & 0001a990: 26 20 74 73 2e 69 73 57 68 69 74 65 53 70 61 63 & ts.isWhiteSpac 0001a9a0: 65 4c 69 6b 65 28 73 74 72 2e 63 68 61 72 43 6f eLike(str.charCo 0001a9b0: 64 65 41 74 28 73 74 72 2e 6c 65 6e 67 74 68 20 deAt(str.length 0001a9c0: 2d 20 31 29 29 3b 20 7d 2c 0a 20 20 20 20 20 20 - 1)); },. 0001a9d0: 20 20 20 20 20 20 2f 2f 20 43 6f 6d 70 6c 65 74 // Complet 0001a9e0: 65 6c 79 20 69 67 6e 6f 72 65 20 69 6e 64 65 6e ely ignore inden 0001a9f0: 74 61 74 69 6f 6e 20 66 6f 72 20 73 74 72 69 6e tation for strin 0001aa00: 67 20 77 72 69 74 65 72 73 2e 20 20 41 6e 64 20 g writers. And 0001aa10: 6d 61 70 20 6e 65 77 6c 69 6e 65 73 20 74 6f 0a map newlines to. 0001aa20: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 61 // a 0001aa30: 20 73 69 6e 67 6c 65 20 73 70 61 63 65 2e 0a 20 single space.. 0001aa40: 20 20 20 20 20 20 20 20 20 20 20 77 72 69 74 65 write 0001aa50: 4c 69 6e 65 3a 20 66 75 6e 63 74 69 6f 6e 20 28 Line: function ( 0001aa60: 29 20 7b 20 72 65 74 75 72 6e 20 73 74 72 20 2b ) { return str + 0001aa70: 3d 20 22 20 22 3b 20 7d 2c 0a 20 20 20 20 20 20 = " "; },. 0001aa80: 20 20 20 20 20 20 69 6e 63 72 65 61 73 65 49 6e increaseIn 0001aa90: 64 65 6e 74 3a 20 74 73 2e 6e 6f 6f 70 2c 0a 20 dent: ts.noop,. 0001aaa0: 20 20 20 20 20 20 20 20 20 20 20 64 65 63 72 65 decre 0001aab0: 61 73 65 49 6e 64 65 6e 74 3a 20 74 73 2e 6e 6f aseIndent: ts.no 0001aac0: 6f 70 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 op,. 0001aad0: 63 6c 65 61 72 3a 20 66 75 6e 63 74 69 6f 6e 20 clear: function 0001aae0: 28 29 20 7b 20 72 65 74 75 72 6e 20 73 74 72 20 () { return str 0001aaf0: 3d 20 22 22 3b 20 7d 2c 0a 20 20 20 20 20 20 20 = ""; },. 0001ab00: 20 20 20 20 20 74 72 61 63 6b 53 79 6d 62 6f 6c trackSymbol 0001ab10: 3a 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 7b 20 : function () { 0001ab20: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 20 7d 2c return false; }, 0001ab30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 70 . rep 0001ab40: 6f 72 74 49 6e 61 63 63 65 73 73 69 62 6c 65 54 ortInaccessibleT 0001ab50: 68 69 73 45 72 72 6f 72 3a 20 74 73 2e 6e 6f 6f hisError: ts.noo 0001ab60: 70 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 p,. r 0001ab70: 65 70 6f 72 74 49 6e 61 63 63 65 73 73 69 62 6c eportInaccessibl 0001ab80: 65 55 6e 69 71 75 65 53 79 6d 62 6f 6c 45 72 72 eUniqueSymbolErr 0001ab90: 6f 72 3a 20 74 73 2e 6e 6f 6f 70 2c 0a 20 20 20 or: ts.noop,. 0001aba0: 20 20 20 20 20 20 20 20 20 72 65 70 6f 72 74 50 reportP 0001abb0: 72 69 76 61 74 65 49 6e 42 61 73 65 4f 66 43 6c rivateInBaseOfCl 0001abc0: 61 73 73 45 78 70 72 65 73 73 69 6f 6e 3a 20 74 assExpression: t 0001abd0: 73 2e 6e 6f 6f 70 2c 0a 20 20 20 20 20 20 20 20 s.noop,. 0001abe0: 7d 3b 0a 20 20 20 20 7d 0a 20 20 20 20 66 75 6e };. }. fun 0001abf0: 63 74 69 6f 6e 20 63 68 61 6e 67 65 73 41 66 66 ction changesAff 0001ac00: 65 63 74 4d 6f 64 75 6c 65 52 65 73 6f 6c 75 74 ectModuleResolut 0001ac10: 69 6f 6e 28 6f 6c 64 4f 70 74 69 6f 6e 73 2c 20 ion(oldOptions, 0001ac20: 6e 65 77 4f 70 74 69 6f 6e 73 29 20 7b 0a 20 20 newOptions) {. 0001ac30: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 6c 64 return old 0001ac40: 4f 70 74 69 6f 6e 73 2e 63 6f 6e 66 69 67 46 69 Options.configFi 0001ac50: 6c 65 50 61 74 68 20 21 3d 3d 20 6e 65 77 4f 70 lePath !== newOp 0001ac60: 74 69 6f 6e 73 2e 63 6f 6e 66 69 67 46 69 6c 65 tions.configFile 0001ac70: 50 61 74 68 20 7c 7c 0a 20 20 20 20 20 20 20 20 Path ||. 0001ac80: 20 20 20 20 6f 70 74 69 6f 6e 73 48 61 76 65 4d optionsHaveM 0001ac90: 6f 64 75 6c 65 52 65 73 6f 6c 75 74 69 6f 6e 43 oduleResolutionC 0001aca0: 68 61 6e 67 65 73 28 6f 6c 64 4f 70 74 69 6f 6e hanges(oldOption 0001acb0: 73 2c 20 6e 65 77 4f 70 74 69 6f 6e 73 29 3b 0a s, newOptions);. 0001acc0: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 63 68 61 }. ts.cha 0001acd0: 6e 67 65 73 41 66 66 65 63 74 4d 6f 64 75 6c 65 ngesAffectModule 0001ace0: 52 65 73 6f 6c 75 74 69 6f 6e 20 3d 20 63 68 61 Resolution = cha 0001acf0: 6e 67 65 73 41 66 66 65 63 74 4d 6f 64 75 6c 65 ngesAffectModule 0001ad00: 52 65 73 6f 6c 75 74 69 6f 6e 3b 0a 20 20 20 20 Resolution;. 0001ad10: 66 75 6e 63 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 function options 0001ad20: 48 61 76 65 4d 6f 64 75 6c 65 52 65 73 6f 6c 75 HaveModuleResolu 0001ad30: 74 69 6f 6e 43 68 61 6e 67 65 73 28 6f 6c 64 4f tionChanges(oldO 0001ad40: 70 74 69 6f 6e 73 2c 20 6e 65 77 4f 70 74 69 6f ptions, newOptio 0001ad50: 6e 73 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 ns) {. re 0001ad60: 74 75 72 6e 20 6f 70 74 69 6f 6e 73 48 61 76 65 turn optionsHave 0001ad70: 43 68 61 6e 67 65 73 28 6f 6c 64 4f 70 74 69 6f Changes(oldOptio 0001ad80: 6e 73 2c 20 6e 65 77 4f 70 74 69 6f 6e 73 2c 20 ns, newOptions, 0001ad90: 74 73 2e 6d 6f 64 75 6c 65 52 65 73 6f 6c 75 74 ts.moduleResolut 0001ada0: 69 6f 6e 4f 70 74 69 6f 6e 44 65 63 6c 61 72 61 ionOptionDeclara 0001adb0: 74 69 6f 6e 73 29 3b 0a 20 20 20 20 7d 0a 20 20 tions);. }. 0001adc0: 20 20 74 73 2e 6f 70 74 69 6f 6e 73 48 61 76 65 ts.optionsHave 0001add0: 4d 6f 64 75 6c 65 52 65 73 6f 6c 75 74 69 6f 6e ModuleResolution 0001ade0: 43 68 61 6e 67 65 73 20 3d 20 6f 70 74 69 6f 6e Changes = option 0001adf0: 73 48 61 76 65 4d 6f 64 75 6c 65 52 65 73 6f 6c sHaveModuleResol 0001ae00: 75 74 69 6f 6e 43 68 61 6e 67 65 73 3b 0a 20 20 utionChanges;. 0001ae10: 20 20 66 75 6e 63 74 69 6f 6e 20 63 68 61 6e 67 function chang 0001ae20: 65 73 41 66 66 65 63 74 69 6e 67 50 72 6f 67 72 esAffectingProgr 0001ae30: 61 6d 53 74 72 75 63 74 75 72 65 28 6f 6c 64 4f amStructure(oldO 0001ae40: 70 74 69 6f 6e 73 2c 20 6e 65 77 4f 70 74 69 6f ptions, newOptio 0001ae50: 6e 73 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 ns) {. re 0001ae60: 74 75 72 6e 20 6f 70 74 69 6f 6e 73 48 61 76 65 turn optionsHave 0001ae70: 43 68 61 6e 67 65 73 28 6f 6c 64 4f 70 74 69 6f Changes(oldOptio 0001ae80: 6e 73 2c 20 6e 65 77 4f 70 74 69 6f 6e 73 2c 20 ns, newOptions, 0001ae90: 74 73 2e 6f 70 74 69 6f 6e 73 41 66 66 65 63 74 ts.optionsAffect 0001aea0: 69 6e 67 50 72 6f 67 72 61 6d 53 74 72 75 63 74 ingProgramStruct 0001aeb0: 75 72 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 ure);. }. 0001aec0: 74 73 2e 63 68 61 6e 67 65 73 41 66 66 65 63 74 ts.changesAffect 0001aed0: 69 6e 67 50 72 6f 67 72 61 6d 53 74 72 75 63 74 ingProgramStruct 0001aee0: 75 72 65 20 3d 20 63 68 61 6e 67 65 73 41 66 66 ure = changesAff 0001aef0: 65 63 74 69 6e 67 50 72 6f 67 72 61 6d 53 74 72 ectingProgramStr 0001af00: 75 63 74 75 72 65 3b 0a 20 20 20 20 66 75 6e 63 ucture;. func 0001af10: 74 69 6f 6e 20 6f 70 74 69 6f 6e 73 48 61 76 65 tion optionsHave 0001af20: 43 68 61 6e 67 65 73 28 6f 6c 64 4f 70 74 69 6f Changes(oldOptio 0001af30: 6e 73 2c 20 6e 65 77 4f 70 74 69 6f 6e 73 2c 20 ns, newOptions, 0001af40: 6f 70 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 6f optionDeclaratio 0001af50: 6e 73 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 ns) {. re 0001af60: 74 75 72 6e 20 6f 6c 64 4f 70 74 69 6f 6e 73 20 turn oldOptions 0001af70: 21 3d 3d 20 6e 65 77 4f 70 74 69 6f 6e 73 20 26 !== newOptions & 0001af80: 26 20 6f 70 74 69 6f 6e 44 65 63 6c 61 72 61 74 & optionDeclarat 0001af90: 69 6f 6e 73 2e 73 6f 6d 65 28 66 75 6e 63 74 69 ions.some(functi 0001afa0: 6f 6e 20 28 6f 29 20 7b 0a 20 20 20 20 20 20 20 on (o) {. 0001afb0: 20 20 20 20 20 72 65 74 75 72 6e 20 21 69 73 4a return !isJ 0001afc0: 73 6f 6e 45 71 75 61 6c 28 67 65 74 43 6f 6d 70 sonEqual(getComp 0001afd0: 69 6c 65 72 4f 70 74 69 6f 6e 56 61 6c 75 65 28 ilerOptionValue( 0001afe0: 6f 6c 64 4f 70 74 69 6f 6e 73 2c 20 6f 29 2c 20 oldOptions, o), 0001aff0: 67 65 74 43 6f 6d 70 69 6c 65 72 4f 70 74 69 6f getCompilerOptio 0001b000: 6e 56 61 6c 75 65 28 6e 65 77 4f 70 74 69 6f 6e nValue(newOption 0001b010: 73 2c 20 6f 29 29 3b 0a 20 20 20 20 20 20 20 20 s, o));. 0001b020: 7d 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 });. }. ts 0001b030: 2e 6f 70 74 69 6f 6e 73 48 61 76 65 43 68 61 6e .optionsHaveChan 0001b040: 67 65 73 20 3d 20 6f 70 74 69 6f 6e 73 48 61 76 ges = optionsHav 0001b050: 65 43 68 61 6e 67 65 73 3b 0a 20 20 20 20 66 75 eChanges;. fu 0001b060: 6e 63 74 69 6f 6e 20 66 6f 72 45 61 63 68 41 6e nction forEachAn 0001b070: 63 65 73 74 6f 72 28 6e 6f 64 65 2c 20 63 61 6c cestor(node, cal 0001b080: 6c 62 61 63 6b 29 20 7b 0a 20 20 20 20 20 20 20 lback) {. 0001b090: 20 77 68 69 6c 65 20 28 74 72 75 65 29 20 7b 0a while (true) {. 0001b0a0: 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 var 0001b0b0: 72 65 73 20 3d 20 63 61 6c 6c 62 61 63 6b 28 6e res = callback(n 0001b0c0: 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 ode);. 0001b0d0: 20 20 69 66 20 28 72 65 73 20 3d 3d 3d 20 22 71 if (res === "q 0001b0e0: 75 69 74 22 29 0a 20 20 20 20 20 20 20 20 20 20 uit"). 0001b0f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 6e 64 return und 0001b100: 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 efined;. 0001b110: 20 20 20 20 69 66 20 28 72 65 73 20 21 3d 3d 20 if (res !== 0001b120: 75 6e 64 65 66 69 6e 65 64 29 0a 20 20 20 20 20 undefined). 0001b130: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0001b140: 6e 20 72 65 73 3b 0a 20 20 20 20 20 20 20 20 20 n res;. 0001b150: 20 20 20 69 66 20 28 74 73 2e 69 73 53 6f 75 72 if (ts.isSour 0001b160: 63 65 46 69 6c 65 28 6e 6f 64 65 29 29 0a 20 20 ceFile(node)). 0001b170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 0001b180: 74 75 72 6e 20 75 6e 64 65 66 69 6e 65 64 3b 0a turn undefined;. 0001b190: 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 node 0001b1a0: 20 3d 20 6e 6f 64 65 2e 70 61 72 65 6e 74 3b 0a = node.parent;. 0001b1b0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a }. }. 0001b1c0: 20 20 20 20 74 73 2e 66 6f 72 45 61 63 68 41 6e ts.forEachAn 0001b1d0: 63 65 73 74 6f 72 20 3d 20 66 6f 72 45 61 63 68 cestor = forEach 0001b1e0: 41 6e 63 65 73 74 6f 72 3b 0a 20 20 20 20 2f 2a Ancestor;. /* 0001b1f0: 2a 0a 20 20 20 20 20 2a 20 43 61 6c 6c 73 20 60 *. * Calls ` 0001b200: 63 61 6c 6c 62 61 63 6b 60 20 66 6f 72 20 65 61 callback` for ea 0001b210: 63 68 20 65 6e 74 72 79 20 69 6e 20 74 68 65 20 ch entry in the 0001b220: 6d 61 70 2c 20 72 65 74 75 72 6e 69 6e 67 20 74 map, returning t 0001b230: 68 65 20 66 69 72 73 74 20 74 72 75 74 68 79 20 he first truthy 0001b240: 72 65 73 75 6c 74 2e 0a 20 20 20 20 20 2a 20 55 result.. * U 0001b250: 73 65 20 60 6d 61 70 2e 66 6f 72 45 61 63 68 60 se `map.forEach` 0001b260: 20 69 6e 73 74 65 61 64 20 66 6f 72 20 6e 6f 72 instead for nor 0001b270: 6d 61 6c 20 69 74 65 72 61 74 69 6f 6e 2e 0a 20 mal iteration.. 0001b280: 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 */. funct 0001b290: 69 6f 6e 20 66 6f 72 45 61 63 68 45 6e 74 72 79 ion forEachEntry 0001b2a0: 28 6d 61 70 2c 20 63 61 6c 6c 62 61 63 6b 29 20 (map, callback) 0001b2b0: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 74 {. var it 0001b2c0: 65 72 61 74 6f 72 20 3d 20 6d 61 70 2e 65 6e 74 erator = map.ent 0001b2d0: 72 69 65 73 28 29 3b 0a 20 20 20 20 20 20 20 20 ries();. 0001b2e0: 66 6f 72 20 28 76 61 72 20 69 74 65 72 52 65 73 for (var iterRes 0001b2f0: 75 6c 74 20 3d 20 69 74 65 72 61 74 6f 72 2e 6e ult = iterator.n 0001b300: 65 78 74 28 29 3b 20 21 69 74 65 72 52 65 73 75 ext(); !iterResu 0001b310: 6c 74 2e 64 6f 6e 65 3b 20 69 74 65 72 52 65 73 lt.done; iterRes 0001b320: 75 6c 74 20 3d 20 69 74 65 72 61 74 6f 72 2e 6e ult = iterator.n 0001b330: 65 78 74 28 29 29 20 7b 0a 20 20 20 20 20 20 20 ext()) {. 0001b340: 20 20 20 20 20 76 61 72 20 5f 61 20 3d 20 69 74 var _a = it 0001b350: 65 72 52 65 73 75 6c 74 2e 76 61 6c 75 65 2c 20 erResult.value, 0001b360: 6b 65 79 20 3d 20 5f 61 5b 30 5d 2c 20 76 61 6c key = _a[0], val 0001b370: 75 65 20 3d 20 5f 61 5b 31 5d 3b 0a 20 20 20 20 ue = _a[1];. 0001b380: 20 20 20 20 20 20 20 20 76 61 72 20 72 65 73 75 var resu 0001b390: 6c 74 20 3d 20 63 61 6c 6c 62 61 63 6b 28 76 61 lt = callback(va 0001b3a0: 6c 75 65 2c 20 6b 65 79 29 3b 0a 20 20 20 20 20 lue, key);. 0001b3b0: 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c if (resul 0001b3c0: 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 t) {. 0001b3d0: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 return resu 0001b3e0: 6c 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 lt;. 0001b3f0: 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. }. 0001b400: 20 20 20 20 72 65 74 75 72 6e 20 75 6e 64 65 66 return undef 0001b410: 69 6e 65 64 3b 0a 20 20 20 20 7d 0a 20 20 20 20 ined;. }. 0001b420: 74 73 2e 66 6f 72 45 61 63 68 45 6e 74 72 79 20 ts.forEachEntry 0001b430: 3d 20 66 6f 72 45 61 63 68 45 6e 74 72 79 3b 0a = forEachEntry;. 0001b440: 20 20 20 20 2f 2a 2a 20 60 66 6f 72 45 61 63 68 /** `forEach 0001b450: 45 6e 74 72 79 60 20 66 6f 72 20 6a 75 73 74 20 Entry` for just 0001b460: 6b 65 79 73 2e 20 2a 2f 0a 20 20 20 20 66 75 6e keys. */. fun 0001b470: 63 74 69 6f 6e 20 66 6f 72 45 61 63 68 4b 65 79 ction forEachKey 0001b480: 28 6d 61 70 2c 20 63 61 6c 6c 62 61 63 6b 29 20 (map, callback) 0001b490: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 74 {. var it 0001b4a0: 65 72 61 74 6f 72 20 3d 20 6d 61 70 2e 6b 65 79 erator = map.key 0001b4b0: 73 28 29 3b 0a 20 20 20 20 20 20 20 20 66 6f 72 s();. for 0001b4c0: 20 28 76 61 72 20 69 74 65 72 52 65 73 75 6c 74 (var iterResult 0001b4d0: 20 3d 20 69 74 65 72 61 74 6f 72 2e 6e 65 78 74 = iterator.next 0001b4e0: 28 29 3b 20 21 69 74 65 72 52 65 73 75 6c 74 2e (); !iterResult. 0001b4f0: 64 6f 6e 65 3b 20 69 74 65 72 52 65 73 75 6c 74 done; iterResult 0001b500: 20 3d 20 69 74 65 72 61 74 6f 72 2e 6e 65 78 74 = iterator.next 0001b510: 28 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 ()) {. 0001b520: 20 20 76 61 72 20 72 65 73 75 6c 74 20 3d 20 63 var result = c 0001b530: 61 6c 6c 62 61 63 6b 28 69 74 65 72 52 65 73 75 allback(iterResu 0001b540: 6c 74 2e 76 61 6c 75 65 29 3b 0a 20 20 20 20 20 lt.value);. 0001b550: 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75 6c if (resul 0001b560: 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 t) {. 0001b570: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 return resu 0001b580: 6c 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 lt;. 0001b590: 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. }. 0001b5a0: 20 20 20 20 72 65 74 75 72 6e 20 75 6e 64 65 66 return undef 0001b5b0: 69 6e 65 64 3b 0a 20 20 20 20 7d 0a 20 20 20 20 ined;. }. 0001b5c0: 74 73 2e 66 6f 72 45 61 63 68 4b 65 79 20 3d 20 ts.forEachKey = 0001b5d0: 66 6f 72 45 61 63 68 4b 65 79 3b 0a 20 20 20 20 forEachKey;. 0001b5e0: 2f 2a 2a 20 43 6f 70 79 20 65 6e 74 72 69 65 73 /** Copy entries 0001b5f0: 20 66 72 6f 6d 20 60 73 6f 75 72 63 65 60 20 74 from `source` t 0001b600: 6f 20 60 74 61 72 67 65 74 60 2e 20 2a 2f 0a 20 o `target`. */. 0001b610: 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 6f 70 79 function copy 0001b620: 45 6e 74 72 69 65 73 28 73 6f 75 72 63 65 2c 20 Entries(source, 0001b630: 74 61 72 67 65 74 29 20 7b 0a 20 20 20 20 20 20 target) {. 0001b640: 20 20 73 6f 75 72 63 65 2e 66 6f 72 45 61 63 68 source.forEach 0001b650: 28 66 75 6e 63 74 69 6f 6e 20 28 76 61 6c 75 65 (function (value 0001b660: 2c 20 6b 65 79 29 20 7b 0a 20 20 20 20 20 20 20 , key) {. 0001b670: 20 20 20 20 20 74 61 72 67 65 74 2e 73 65 74 28 target.set( 0001b680: 6b 65 79 2c 20 76 61 6c 75 65 29 3b 0a 20 20 20 key, value);. 0001b690: 20 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d 0a 20 });. }. 0001b6a0: 20 20 20 74 73 2e 63 6f 70 79 45 6e 74 72 69 65 ts.copyEntrie 0001b6b0: 73 20 3d 20 63 6f 70 79 45 6e 74 72 69 65 73 3b s = copyEntries; 0001b6c0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 75 73 . function us 0001b6d0: 69 6e 67 53 69 6e 67 6c 65 4c 69 6e 65 53 74 72 ingSingleLineStr 0001b6e0: 69 6e 67 57 72 69 74 65 72 28 61 63 74 69 6f 6e ingWriter(action 0001b6f0: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 0001b700: 6f 6c 64 53 74 72 69 6e 67 20 3d 20 73 74 72 69 oldString = stri 0001b710: 6e 67 57 72 69 74 65 72 2e 67 65 74 54 65 78 74 ngWriter.getText 0001b720: 28 29 3b 0a 20 20 20 20 20 20 20 20 74 72 79 20 ();. try 0001b730: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 61 63 {. ac 0001b740: 74 69 6f 6e 28 73 74 72 69 6e 67 57 72 69 74 65 tion(stringWrite 0001b750: 72 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 r);. 0001b760: 72 65 74 75 72 6e 20 73 74 72 69 6e 67 57 72 69 return stringWri 0001b770: 74 65 72 2e 67 65 74 54 65 78 74 28 29 3b 0a 20 ter.getText();. 0001b780: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 0001b790: 20 66 69 6e 61 6c 6c 79 20 7b 0a 20 20 20 20 20 finally {. 0001b7a0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 57 72 69 stringWri 0001b7b0: 74 65 72 2e 63 6c 65 61 72 28 29 3b 0a 20 20 20 ter.clear();. 0001b7c0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 57 stringW 0001b7d0: 72 69 74 65 72 2e 77 72 69 74 65 4b 65 79 77 6f riter.writeKeywo 0001b7e0: 72 64 28 6f 6c 64 53 74 72 69 6e 67 29 3b 0a 20 rd(oldString);. 0001b7f0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 }. }. 0001b800: 20 20 20 74 73 2e 75 73 69 6e 67 53 69 6e 67 6c ts.usingSingl 0001b810: 65 4c 69 6e 65 53 74 72 69 6e 67 57 72 69 74 65 eLineStringWrite 0001b820: 72 20 3d 20 75 73 69 6e 67 53 69 6e 67 6c 65 4c r = usingSingleL 0001b830: 69 6e 65 53 74 72 69 6e 67 57 72 69 74 65 72 3b ineStringWriter; 0001b840: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 0001b850: 74 46 75 6c 6c 57 69 64 74 68 28 6e 6f 64 65 29 tFullWidth(node) 0001b860: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 0001b870: 6e 20 6e 6f 64 65 2e 65 6e 64 20 2d 20 6e 6f 64 n node.end - nod 0001b880: 65 2e 70 6f 73 3b 0a 20 20 20 20 7d 0a 20 20 20 e.pos;. }. 0001b890: 20 74 73 2e 67 65 74 46 75 6c 6c 57 69 64 74 68 ts.getFullWidth 0001b8a0: 20 3d 20 67 65 74 46 75 6c 6c 57 69 64 74 68 3b = getFullWidth; 0001b8b0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 0001b8c0: 74 52 65 73 6f 6c 76 65 64 4d 6f 64 75 6c 65 28 tResolvedModule( 0001b8d0: 73 6f 75 72 63 65 46 69 6c 65 2c 20 6d 6f 64 75 sourceFile, modu 0001b8e0: 6c 65 4e 61 6d 65 54 65 78 74 2c 20 6d 6f 64 65 leNameText, mode 0001b8f0: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0001b900: 72 6e 20 73 6f 75 72 63 65 46 69 6c 65 20 26 26 rn sourceFile && 0001b910: 20 73 6f 75 72 63 65 46 69 6c 65 2e 72 65 73 6f sourceFile.reso 0001b920: 6c 76 65 64 4d 6f 64 75 6c 65 73 20 26 26 20 73 lvedModules && s 0001b930: 6f 75 72 63 65 46 69 6c 65 2e 72 65 73 6f 6c 76 ourceFile.resolv 0001b940: 65 64 4d 6f 64 75 6c 65 73 2e 67 65 74 28 6d 6f edModules.get(mo 0001b950: 64 75 6c 65 4e 61 6d 65 54 65 78 74 2c 20 6d 6f duleNameText, mo 0001b960: 64 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 de);. }. t 0001b970: 73 2e 67 65 74 52 65 73 6f 6c 76 65 64 4d 6f 64 s.getResolvedMod 0001b980: 75 6c 65 20 3d 20 67 65 74 52 65 73 6f 6c 76 65 ule = getResolve 0001b990: 64 4d 6f 64 75 6c 65 3b 0a 20 20 20 20 66 75 6e dModule;. fun 0001b9a0: 63 74 69 6f 6e 20 73 65 74 52 65 73 6f 6c 76 65 ction setResolve 0001b9b0: 64 4d 6f 64 75 6c 65 28 73 6f 75 72 63 65 46 69 dModule(sourceFi 0001b9c0: 6c 65 2c 20 6d 6f 64 75 6c 65 4e 61 6d 65 54 65 le, moduleNameTe 0001b9d0: 78 74 2c 20 72 65 73 6f 6c 76 65 64 4d 6f 64 75 xt, resolvedModu 0001b9e0: 6c 65 2c 20 6d 6f 64 65 29 20 7b 0a 20 20 20 20 le, mode) {. 0001b9f0: 20 20 20 20 69 66 20 28 21 73 6f 75 72 63 65 46 if (!sourceF 0001ba00: 69 6c 65 2e 72 65 73 6f 6c 76 65 64 4d 6f 64 75 ile.resolvedModu 0001ba10: 6c 65 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 les) {. 0001ba20: 20 20 20 73 6f 75 72 63 65 46 69 6c 65 2e 72 65 sourceFile.re 0001ba30: 73 6f 6c 76 65 64 4d 6f 64 75 6c 65 73 20 3d 20 solvedModules = 0001ba40: 74 73 2e 63 72 65 61 74 65 4d 6f 64 65 41 77 61 ts.createModeAwa 0001ba50: 72 65 43 61 63 68 65 28 29 3b 0a 20 20 20 20 20 reCache();. 0001ba60: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 73 6f 75 }. sou 0001ba70: 72 63 65 46 69 6c 65 2e 72 65 73 6f 6c 76 65 64 rceFile.resolved 0001ba80: 4d 6f 64 75 6c 65 73 2e 73 65 74 28 6d 6f 64 75 Modules.set(modu 0001ba90: 6c 65 4e 61 6d 65 54 65 78 74 2c 20 6d 6f 64 65 leNameText, mode 0001baa0: 2c 20 72 65 73 6f 6c 76 65 64 4d 6f 64 75 6c 65 , resolvedModule 0001bab0: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 0001bac0: 73 65 74 52 65 73 6f 6c 76 65 64 4d 6f 64 75 6c setResolvedModul 0001bad0: 65 20 3d 20 73 65 74 52 65 73 6f 6c 76 65 64 4d e = setResolvedM 0001bae0: 6f 64 75 6c 65 3b 0a 20 20 20 20 66 75 6e 63 74 odule;. funct 0001baf0: 69 6f 6e 20 73 65 74 52 65 73 6f 6c 76 65 64 54 ion setResolvedT 0001bb00: 79 70 65 52 65 66 65 72 65 6e 63 65 44 69 72 65 ypeReferenceDire 0001bb10: 63 74 69 76 65 28 73 6f 75 72 63 65 46 69 6c 65 ctive(sourceFile 0001bb20: 2c 20 74 79 70 65 52 65 66 65 72 65 6e 63 65 44 , typeReferenceD 0001bb30: 69 72 65 63 74 69 76 65 4e 61 6d 65 2c 20 72 65 irectiveName, re 0001bb40: 73 6f 6c 76 65 64 54 79 70 65 52 65 66 65 72 65 solvedTypeRefere 0001bb50: 6e 63 65 44 69 72 65 63 74 69 76 65 29 20 7b 0a nceDirective) {. 0001bb60: 20 20 20 20 20 20 20 20 69 66 20 28 21 73 6f 75 if (!sou 0001bb70: 72 63 65 46 69 6c 65 2e 72 65 73 6f 6c 76 65 64 rceFile.resolved 0001bb80: 54 79 70 65 52 65 66 65 72 65 6e 63 65 44 69 72 TypeReferenceDir 0001bb90: 65 63 74 69 76 65 4e 61 6d 65 73 29 20 7b 0a 20 ectiveNames) {. 0001bba0: 20 20 20 20 20 20 20 20 20 20 20 73 6f 75 72 63 sourc 0001bbb0: 65 46 69 6c 65 2e 72 65 73 6f 6c 76 65 64 54 79 eFile.resolvedTy 0001bbc0: 70 65 52 65 66 65 72 65 6e 63 65 44 69 72 65 63 peReferenceDirec 0001bbd0: 74 69 76 65 4e 61 6d 65 73 20 3d 20 74 73 2e 63 tiveNames = ts.c 0001bbe0: 72 65 61 74 65 4d 6f 64 65 41 77 61 72 65 43 61 reateModeAwareCa 0001bbf0: 63 68 65 28 29 3b 0a 20 20 20 20 20 20 20 20 7d che();. } 0001bc00: 0a 20 20 20 20 20 20 20 20 73 6f 75 72 63 65 46 . sourceF 0001bc10: 69 6c 65 2e 72 65 73 6f 6c 76 65 64 54 79 70 65 ile.resolvedType 0001bc20: 52 65 66 65 72 65 6e 63 65 44 69 72 65 63 74 69 ReferenceDirecti 0001bc30: 76 65 4e 61 6d 65 73 2e 73 65 74 28 74 79 70 65 veNames.set(type 0001bc40: 52 65 66 65 72 65 6e 63 65 44 69 72 65 63 74 69 ReferenceDirecti 0001bc50: 76 65 4e 61 6d 65 2c 20 2f 2a 6d 6f 64 65 2a 2f veName, /*mode*/ 0001bc60: 20 75 6e 64 65 66 69 6e 65 64 2c 20 72 65 73 6f undefined, reso 0001bc70: 6c 76 65 64 54 79 70 65 52 65 66 65 72 65 6e 63 lvedTypeReferenc 0001bc80: 65 44 69 72 65 63 74 69 76 65 29 3b 0a 20 20 20 eDirective);. 0001bc90: 20 7d 0a 20 20 20 20 74 73 2e 73 65 74 52 65 73 }. ts.setRes 0001bca0: 6f 6c 76 65 64 54 79 70 65 52 65 66 65 72 65 6e olvedTypeReferen 0001bcb0: 63 65 44 69 72 65 63 74 69 76 65 20 3d 20 73 65 ceDirective = se 0001bcc0: 74 52 65 73 6f 6c 76 65 64 54 79 70 65 52 65 66 tResolvedTypeRef 0001bcd0: 65 72 65 6e 63 65 44 69 72 65 63 74 69 76 65 3b erenceDirective; 0001bce0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 70 72 . function pr 0001bcf0: 6f 6a 65 63 74 52 65 66 65 72 65 6e 63 65 49 73 ojectReferenceIs 0001bd00: 45 71 75 61 6c 54 6f 28 6f 6c 64 52 65 66 2c 20 EqualTo(oldRef, 0001bd10: 6e 65 77 52 65 66 29 20 7b 0a 20 20 20 20 20 20 newRef) {. 0001bd20: 20 20 72 65 74 75 72 6e 20 6f 6c 64 52 65 66 2e return oldRef. 0001bd30: 70 61 74 68 20 3d 3d 3d 20 6e 65 77 52 65 66 2e path === newRef. 0001bd40: 70 61 74 68 20 26 26 0a 20 20 20 20 20 20 20 20 path &&. 0001bd50: 20 20 20 20 21 6f 6c 64 52 65 66 2e 70 72 65 70 !oldRef.prep 0001bd60: 65 6e 64 20 3d 3d 3d 20 21 6e 65 77 52 65 66 2e end === !newRef. 0001bd70: 70 72 65 70 65 6e 64 20 26 26 0a 20 20 20 20 20 prepend &&. 0001bd80: 20 20 20 20 20 20 20 21 6f 6c 64 52 65 66 2e 63 !oldRef.c 0001bd90: 69 72 63 75 6c 61 72 20 3d 3d 3d 20 21 6e 65 77 ircular === !new 0001bda0: 52 65 66 2e 63 69 72 63 75 6c 61 72 3b 0a 20 20 Ref.circular;. 0001bdb0: 20 20 7d 0a 20 20 20 20 74 73 2e 70 72 6f 6a 65 }. ts.proje 0001bdc0: 63 74 52 65 66 65 72 65 6e 63 65 49 73 45 71 75 ctReferenceIsEqu 0001bdd0: 61 6c 54 6f 20 3d 20 70 72 6f 6a 65 63 74 52 65 alTo = projectRe 0001bde0: 66 65 72 65 6e 63 65 49 73 45 71 75 61 6c 54 6f ferenceIsEqualTo 0001bdf0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 6d ;. function m 0001be00: 6f 64 75 6c 65 52 65 73 6f 6c 75 74 69 6f 6e 49 oduleResolutionI 0001be10: 73 45 71 75 61 6c 54 6f 28 6f 6c 64 52 65 73 6f sEqualTo(oldReso 0001be20: 6c 75 74 69 6f 6e 2c 20 6e 65 77 52 65 73 6f 6c lution, newResol 0001be30: 75 74 69 6f 6e 29 20 7b 0a 20 20 20 20 20 20 20 ution) {. 0001be40: 20 72 65 74 75 72 6e 20 6f 6c 64 52 65 73 6f 6c return oldResol 0001be50: 75 74 69 6f 6e 2e 69 73 45 78 74 65 72 6e 61 6c ution.isExternal 0001be60: 4c 69 62 72 61 72 79 49 6d 70 6f 72 74 20 3d 3d LibraryImport == 0001be70: 3d 20 6e 65 77 52 65 73 6f 6c 75 74 69 6f 6e 2e = newResolution. 0001be80: 69 73 45 78 74 65 72 6e 61 6c 4c 69 62 72 61 72 isExternalLibrar 0001be90: 79 49 6d 70 6f 72 74 20 26 26 0a 20 20 20 20 20 yImport &&. 0001bea0: 20 20 20 20 20 20 20 6f 6c 64 52 65 73 6f 6c 75 oldResolu 0001beb0: 74 69 6f 6e 2e 65 78 74 65 6e 73 69 6f 6e 20 3d tion.extension = 0001bec0: 3d 3d 20 6e 65 77 52 65 73 6f 6c 75 74 69 6f 6e == newResolution 0001bed0: 2e 65 78 74 65 6e 73 69 6f 6e 20 26 26 0a 20 20 .extension &&. 0001bee0: 20 20 20 20 20 20 20 20 20 20 6f 6c 64 52 65 73 oldRes 0001bef0: 6f 6c 75 74 69 6f 6e 2e 72 65 73 6f 6c 76 65 64 olution.resolved 0001bf00: 46 69 6c 65 4e 61 6d 65 20 3d 3d 3d 20 6e 65 77 FileName === new 0001bf10: 52 65 73 6f 6c 75 74 69 6f 6e 2e 72 65 73 6f 6c Resolution.resol 0001bf20: 76 65 64 46 69 6c 65 4e 61 6d 65 20 26 26 0a 20 vedFileName &&. 0001bf30: 20 20 20 20 20 20 20 20 20 20 20 6f 6c 64 52 65 oldRe 0001bf40: 73 6f 6c 75 74 69 6f 6e 2e 6f 72 69 67 69 6e 61 solution.origina 0001bf50: 6c 50 61 74 68 20 3d 3d 3d 20 6e 65 77 52 65 73 lPath === newRes 0001bf60: 6f 6c 75 74 69 6f 6e 2e 6f 72 69 67 69 6e 61 6c olution.original 0001bf70: 50 61 74 68 20 26 26 0a 20 20 20 20 20 20 20 20 Path &&. 0001bf80: 20 20 20 20 70 61 63 6b 61 67 65 49 64 49 73 45 packageIdIsE 0001bf90: 71 75 61 6c 28 6f 6c 64 52 65 73 6f 6c 75 74 69 qual(oldResoluti 0001bfa0: 6f 6e 2e 70 61 63 6b 61 67 65 49 64 2c 20 6e 65 on.packageId, ne 0001bfb0: 77 52 65 73 6f 6c 75 74 69 6f 6e 2e 70 61 63 6b wResolution.pack 0001bfc0: 61 67 65 49 64 29 3b 0a 20 20 20 20 7d 0a 20 20 ageId);. }. 0001bfd0: 20 20 74 73 2e 6d 6f 64 75 6c 65 52 65 73 6f 6c ts.moduleResol 0001bfe0: 75 74 69 6f 6e 49 73 45 71 75 61 6c 54 6f 20 3d utionIsEqualTo = 0001bff0: 20 6d 6f 64 75 6c 65 52 65 73 6f 6c 75 74 69 6f moduleResolutio 0001c000: 6e 49 73 45 71 75 61 6c 54 6f 3b 0a 20 20 20 20 nIsEqualTo;. 0001c010: 66 75 6e 63 74 69 6f 6e 20 70 61 63 6b 61 67 65 function package 0001c020: 49 64 49 73 45 71 75 61 6c 28 61 2c 20 62 29 20 IdIsEqual(a, b) 0001c030: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 0001c040: 20 61 20 3d 3d 3d 20 62 20 7c 7c 20 21 21 61 20 a === b || !!a 0001c050: 26 26 20 21 21 62 20 26 26 20 61 2e 6e 61 6d 65 && !!b && a.name 0001c060: 20 3d 3d 3d 20 62 2e 6e 61 6d 65 20 26 26 20 61 === b.name && a 0001c070: 2e 73 75 62 4d 6f 64 75 6c 65 4e 61 6d 65 20 3d .subModuleName = 0001c080: 3d 3d 20 62 2e 73 75 62 4d 6f 64 75 6c 65 4e 61 == b.subModuleNa 0001c090: 6d 65 20 26 26 20 61 2e 76 65 72 73 69 6f 6e 20 me && a.version 0001c0a0: 3d 3d 3d 20 62 2e 76 65 72 73 69 6f 6e 3b 0a 20 === b.version;. 0001c0b0: 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 74 69 6f }. functio 0001c0c0: 6e 20 70 61 63 6b 61 67 65 49 64 54 6f 50 61 63 n packageIdToPac 0001c0d0: 6b 61 67 65 4e 61 6d 65 28 5f 61 29 20 7b 0a 20 kageName(_a) {. 0001c0e0: 20 20 20 20 20 20 20 76 61 72 20 6e 61 6d 65 20 var name 0001c0f0: 3d 20 5f 61 2e 6e 61 6d 65 2c 20 73 75 62 4d 6f = _a.name, subMo 0001c100: 64 75 6c 65 4e 61 6d 65 20 3d 20 5f 61 2e 73 75 duleName = _a.su 0001c110: 62 4d 6f 64 75 6c 65 4e 61 6d 65 3b 0a 20 20 20 bModuleName;. 0001c120: 20 20 20 20 20 72 65 74 75 72 6e 20 73 75 62 4d return subM 0001c130: 6f 64 75 6c 65 4e 61 6d 65 20 3f 20 22 22 2e 63 oduleName ? "".c 0001c140: 6f 6e 63 61 74 28 6e 61 6d 65 2c 20 22 2f 22 29 oncat(name, "/") 0001c150: 2e 63 6f 6e 63 61 74 28 73 75 62 4d 6f 64 75 6c .concat(subModul 0001c160: 65 4e 61 6d 65 29 20 3a 20 6e 61 6d 65 3b 0a 20 eName) : name;. 0001c170: 20 20 20 7d 0a 20 20 20 20 74 73 2e 70 61 63 6b }. ts.pack 0001c180: 61 67 65 49 64 54 6f 50 61 63 6b 61 67 65 4e 61 ageIdToPackageNa 0001c190: 6d 65 20 3d 20 70 61 63 6b 61 67 65 49 64 54 6f me = packageIdTo 0001c1a0: 50 61 63 6b 61 67 65 4e 61 6d 65 3b 0a 20 20 20 PackageName;. 0001c1b0: 20 66 75 6e 63 74 69 6f 6e 20 70 61 63 6b 61 67 function packag 0001c1c0: 65 49 64 54 6f 53 74 72 69 6e 67 28 70 61 63 6b eIdToString(pack 0001c1d0: 61 67 65 49 64 29 20 7b 0a 20 20 20 20 20 20 20 ageId) {. 0001c1e0: 20 72 65 74 75 72 6e 20 22 22 2e 63 6f 6e 63 61 return "".conca 0001c1f0: 74 28 70 61 63 6b 61 67 65 49 64 54 6f 50 61 63 t(packageIdToPac 0001c200: 6b 61 67 65 4e 61 6d 65 28 70 61 63 6b 61 67 65 kageName(package 0001c210: 49 64 29 2c 20 22 40 22 29 2e 63 6f 6e 63 61 74 Id), "@").concat 0001c220: 28 70 61 63 6b 61 67 65 49 64 2e 76 65 72 73 69 (packageId.versi 0001c230: 6f 6e 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 on);. }. t 0001c240: 73 2e 70 61 63 6b 61 67 65 49 64 54 6f 53 74 72 s.packageIdToStr 0001c250: 69 6e 67 20 3d 20 70 61 63 6b 61 67 65 49 64 54 ing = packageIdT 0001c260: 6f 53 74 72 69 6e 67 3b 0a 20 20 20 20 66 75 6e oString;. fun 0001c270: 63 74 69 6f 6e 20 74 79 70 65 44 69 72 65 63 74 ction typeDirect 0001c280: 69 76 65 49 73 45 71 75 61 6c 54 6f 28 6f 6c 64 iveIsEqualTo(old 0001c290: 52 65 73 6f 6c 75 74 69 6f 6e 2c 20 6e 65 77 52 Resolution, newR 0001c2a0: 65 73 6f 6c 75 74 69 6f 6e 29 20 7b 0a 20 20 20 esolution) {. 0001c2b0: 20 20 20 20 20 72 65 74 75 72 6e 20 6f 6c 64 52 return oldR 0001c2c0: 65 73 6f 6c 75 74 69 6f 6e 2e 72 65 73 6f 6c 76 esolution.resolv 0001c2d0: 65 64 46 69 6c 65 4e 61 6d 65 20 3d 3d 3d 20 6e edFileName === n 0001c2e0: 65 77 52 65 73 6f 6c 75 74 69 6f 6e 2e 72 65 73 ewResolution.res 0001c2f0: 6f 6c 76 65 64 46 69 6c 65 4e 61 6d 65 0a 20 20 olvedFileName. 0001c300: 20 20 20 20 20 20 20 20 20 20 26 26 20 6f 6c 64 && old 0001c310: 52 65 73 6f 6c 75 74 69 6f 6e 2e 70 72 69 6d 61 Resolution.prima 0001c320: 72 79 20 3d 3d 3d 20 6e 65 77 52 65 73 6f 6c 75 ry === newResolu 0001c330: 74 69 6f 6e 2e 70 72 69 6d 61 72 79 0a 20 20 20 tion.primary. 0001c340: 20 20 20 20 20 20 20 20 20 26 26 20 6f 6c 64 52 && oldR 0001c350: 65 73 6f 6c 75 74 69 6f 6e 2e 6f 72 69 67 69 6e esolution.origin 0001c360: 61 6c 50 61 74 68 20 3d 3d 3d 20 6e 65 77 52 65 alPath === newRe 0001c370: 73 6f 6c 75 74 69 6f 6e 2e 6f 72 69 67 69 6e 61 solution.origina 0001c380: 6c 50 61 74 68 3b 0a 20 20 20 20 7d 0a 20 20 20 lPath;. }. 0001c390: 20 74 73 2e 74 79 70 65 44 69 72 65 63 74 69 76 ts.typeDirectiv 0001c3a0: 65 49 73 45 71 75 61 6c 54 6f 20 3d 20 74 79 70 eIsEqualTo = typ 0001c3b0: 65 44 69 72 65 63 74 69 76 65 49 73 45 71 75 61 eDirectiveIsEqua 0001c3c0: 6c 54 6f 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f lTo;. functio 0001c3d0: 6e 20 68 61 73 43 68 61 6e 67 65 73 49 6e 52 65 n hasChangesInRe 0001c3e0: 73 6f 6c 75 74 69 6f 6e 73 28 6e 61 6d 65 73 2c solutions(names, 0001c3f0: 20 6e 65 77 52 65 73 6f 6c 75 74 69 6f 6e 73 2c newResolutions, 0001c400: 20 6f 6c 64 52 65 73 6f 6c 75 74 69 6f 6e 73 2c oldResolutions, 0001c410: 20 6f 6c 64 53 6f 75 72 63 65 46 69 6c 65 2c 20 oldSourceFile, 0001c420: 63 6f 6d 70 61 72 65 72 29 20 7b 0a 20 20 20 20 comparer) {. 0001c430: 20 20 20 20 74 73 2e 44 65 62 75 67 2e 61 73 73 ts.Debug.ass 0001c440: 65 72 74 28 6e 61 6d 65 73 2e 6c 65 6e 67 74 68 ert(names.length 0001c450: 20 3d 3d 3d 20 6e 65 77 52 65 73 6f 6c 75 74 69 === newResoluti 0001c460: 6f 6e 73 2e 6c 65 6e 67 74 68 29 3b 0a 20 20 20 ons.length);. 0001c470: 20 20 20 20 20 66 6f 72 20 28 76 61 72 20 69 20 for (var i 0001c480: 3d 20 30 3b 20 69 20 3c 20 6e 61 6d 65 73 2e 6c = 0; i < names.l 0001c490: 65 6e 67 74 68 3b 20 69 2b 2b 29 20 7b 0a 20 20 ength; i++) {. 0001c4a0: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6e 65 var ne 0001c4b0: 77 52 65 73 6f 6c 75 74 69 6f 6e 20 3d 20 6e 65 wResolution = ne 0001c4c0: 77 52 65 73 6f 6c 75 74 69 6f 6e 73 5b 69 5d 3b wResolutions[i]; 0001c4d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var 0001c4e0: 20 65 6e 74 72 79 20 3d 20 6e 61 6d 65 73 5b 69 entry = names[i 0001c4f0: 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f ];. / 0001c500: 2f 20 57 65 20 6c 6f 77 65 72 2d 63 61 73 65 20 / We lower-case 0001c510: 61 6c 6c 20 74 79 70 65 20 72 65 66 65 72 65 6e all type referen 0001c520: 63 65 73 20 62 65 63 61 75 73 65 20 6e 70 6d 20 ces because npm 0001c530: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 6c 6f automatically lo 0001c540: 77 65 72 63 61 73 65 73 20 61 6c 6c 20 70 61 63 wercases all pac 0001c550: 6b 61 67 65 73 2e 20 53 65 65 20 47 48 23 39 38 kages. See GH#98 0001c560: 32 34 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 24.. 0001c570: 76 61 72 20 6e 61 6d 65 20 3d 20 21 74 73 2e 69 var name = !ts.i 0001c580: 73 53 74 72 69 6e 67 28 65 6e 74 72 79 29 20 3f sString(entry) ? 0001c590: 20 65 6e 74 72 79 2e 66 69 6c 65 4e 61 6d 65 2e entry.fileName. 0001c5a0: 74 6f 4c 6f 77 65 72 43 61 73 65 28 29 20 3a 20 toLowerCase() : 0001c5b0: 65 6e 74 72 79 3b 0a 20 20 20 20 20 20 20 20 20 entry;. 0001c5c0: 20 20 20 76 61 72 20 6d 6f 64 65 20 3d 20 21 74 var mode = !t 0001c5d0: 73 2e 69 73 53 74 72 69 6e 67 28 65 6e 74 72 79 s.isString(entry 0001c5e0: 29 20 3f 20 74 73 2e 67 65 74 4d 6f 64 65 46 6f ) ? ts.getModeFo 0001c5f0: 72 46 69 6c 65 52 65 66 65 72 65 6e 63 65 28 65 rFileReference(e 0001c600: 6e 74 72 79 2c 20 6f 6c 64 53 6f 75 72 63 65 46 ntry, oldSourceF 0001c610: 69 6c 65 20 3d 3d 3d 20 6e 75 6c 6c 20 7c 7c 20 ile === null || 0001c620: 6f 6c 64 53 6f 75 72 63 65 46 69 6c 65 20 3d 3d oldSourceFile == 0001c630: 3d 20 76 6f 69 64 20 30 20 3f 20 76 6f 69 64 20 = void 0 ? void 0001c640: 30 20 3a 20 6f 6c 64 53 6f 75 72 63 65 46 69 6c 0 : oldSourceFil 0001c650: 65 2e 69 6d 70 6c 69 65 64 4e 6f 64 65 46 6f 72 e.impliedNodeFor 0001c660: 6d 61 74 29 20 3a 20 6f 6c 64 53 6f 75 72 63 65 mat) : oldSource 0001c670: 46 69 6c 65 20 26 26 20 74 73 2e 67 65 74 4d 6f File && ts.getMo 0001c680: 64 65 46 6f 72 52 65 73 6f 6c 75 74 69 6f 6e 41 deForResolutionA 0001c690: 74 49 6e 64 65 78 28 6f 6c 64 53 6f 75 72 63 65 tIndex(oldSource 0001c6a0: 46 69 6c 65 2c 20 69 29 3b 0a 20 20 20 20 20 20 File, i);. 0001c6b0: 20 20 20 20 20 20 76 61 72 20 6f 6c 64 52 65 73 var oldRes 0001c6c0: 6f 6c 75 74 69 6f 6e 20 3d 20 6f 6c 64 52 65 73 olution = oldRes 0001c6d0: 6f 6c 75 74 69 6f 6e 73 20 26 26 20 6f 6c 64 52 olutions && oldR 0001c6e0: 65 73 6f 6c 75 74 69 6f 6e 73 2e 67 65 74 28 6e esolutions.get(n 0001c6f0: 61 6d 65 2c 20 6d 6f 64 65 29 3b 0a 20 20 20 20 ame, mode);. 0001c700: 20 20 20 20 20 20 20 20 76 61 72 20 63 68 61 6e var chan 0001c710: 67 65 64 20 3d 20 6f 6c 64 52 65 73 6f 6c 75 74 ged = oldResolut 0001c720: 69 6f 6e 0a 20 20 20 20 20 20 20 20 20 20 20 20 ion. 0001c730: 20 20 20 20 3f 20 21 6e 65 77 52 65 73 6f 6c 75 ? !newResolu 0001c740: 74 69 6f 6e 20 7c 7c 20 21 63 6f 6d 70 61 72 65 tion || !compare 0001c750: 72 28 6f 6c 64 52 65 73 6f 6c 75 74 69 6f 6e 2c r(oldResolution, 0001c760: 20 6e 65 77 52 65 73 6f 6c 75 74 69 6f 6e 29 0a newResolution). 0001c770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0001c780: 3a 20 6e 65 77 52 65 73 6f 6c 75 74 69 6f 6e 3b : newResolution; 0001c790: 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 . if 0001c7a0: 28 63 68 61 6e 67 65 64 29 20 7b 0a 20 20 20 20 (changed) {. 0001c7b0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 0001c7c0: 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 rn true;. 0001c7d0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d }. } 0001c7e0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 0001c7f0: 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 20 20 false;. }. 0001c800: 20 74 73 2e 68 61 73 43 68 61 6e 67 65 73 49 6e ts.hasChangesIn 0001c810: 52 65 73 6f 6c 75 74 69 6f 6e 73 20 3d 20 68 61 Resolutions = ha 0001c820: 73 43 68 61 6e 67 65 73 49 6e 52 65 73 6f 6c 75 sChangesInResolu 0001c830: 74 69 6f 6e 73 3b 0a 20 20 20 20 2f 2f 20 52 65 tions;. // Re 0001c840: 74 75 72 6e 73 20 74 72 75 65 20 69 66 20 74 68 turns true if th 0001c850: 69 73 20 6e 6f 64 65 20 63 6f 6e 74 61 69 6e 73 is node contains 0001c860: 20 61 20 70 61 72 73 65 20 65 72 72 6f 72 20 61 a parse error a 0001c870: 6e 79 77 68 65 72 65 20 75 6e 64 65 72 6e 65 61 nywhere undernea 0001c880: 74 68 20 69 74 2e 0a 20 20 20 20 66 75 6e 63 74 th it.. funct 0001c890: 69 6f 6e 20 63 6f 6e 74 61 69 6e 73 50 61 72 73 ion containsPars 0001c8a0: 65 45 72 72 6f 72 28 6e 6f 64 65 29 20 7b 0a 20 eError(node) {. 0001c8b0: 20 20 20 20 20 20 20 61 67 67 72 65 67 61 74 65 aggregate 0001c8c0: 43 68 69 6c 64 44 61 74 61 28 6e 6f 64 65 29 3b ChildData(node); 0001c8d0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 0001c8e0: 28 6e 6f 64 65 2e 66 6c 61 67 73 20 26 20 35 32 (node.flags & 52 0001c8f0: 34 32 38 38 20 2f 2a 20 4e 6f 64 65 46 6c 61 67 4288 /* NodeFlag 0001c900: 73 2e 54 68 69 73 4e 6f 64 65 4f 72 41 6e 79 53 s.ThisNodeOrAnyS 0001c910: 75 62 4e 6f 64 65 73 48 61 73 45 72 72 6f 72 20 ubNodesHasError 0001c920: 2a 2f 29 20 21 3d 3d 20 30 3b 0a 20 20 20 20 7d */) !== 0;. } 0001c930: 0a 20 20 20 20 74 73 2e 63 6f 6e 74 61 69 6e 73 . ts.contains 0001c940: 50 61 72 73 65 45 72 72 6f 72 20 3d 20 63 6f 6e ParseError = con 0001c950: 74 61 69 6e 73 50 61 72 73 65 45 72 72 6f 72 3b tainsParseError; 0001c960: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 61 67 . function ag 0001c970: 67 72 65 67 61 74 65 43 68 69 6c 64 44 61 74 61 gregateChildData 0001c980: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 0001c990: 20 69 66 20 28 21 28 6e 6f 64 65 2e 66 6c 61 67 if (!(node.flag 0001c9a0: 73 20 26 20 31 30 34 38 35 37 36 20 2f 2a 20 4e s & 1048576 /* N 0001c9b0: 6f 64 65 46 6c 61 67 73 2e 48 61 73 41 67 67 72 odeFlags.HasAggr 0001c9c0: 65 67 61 74 65 64 43 68 69 6c 64 44 61 74 61 20 egatedChildData 0001c9d0: 2a 2f 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 */)) {. 0001c9e0: 20 20 20 2f 2f 20 41 20 6e 6f 64 65 20 69 73 20 // A node is 0001c9f0: 63 6f 6e 73 69 64 65 72 65 64 20 74 6f 20 63 6f considered to co 0001ca00: 6e 74 61 69 6e 20 61 20 70 61 72 73 65 20 65 72 ntain a parse er 0001ca10: 72 6f 72 20 69 66 3a 0a 20 20 20 20 20 20 20 20 ror if:. 0001ca20: 20 20 20 20 2f 2f 20 20 61 29 20 74 68 65 20 70 // a) the p 0001ca30: 61 72 73 65 72 20 65 78 70 6c 69 63 69 74 6c 79 arser explicitly 0001ca40: 20 6d 61 72 6b 65 64 20 74 68 61 74 20 69 74 20 marked that it 0001ca50: 68 61 64 20 61 6e 20 65 72 72 6f 72 0a 20 20 20 had an error. 0001ca60: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 62 29 20 // b) 0001ca70: 61 6e 79 20 6f 66 20 69 74 27 73 20 63 68 69 6c any of it's chil 0001ca80: 64 72 65 6e 20 72 65 70 6f 72 74 65 64 20 74 68 dren reported th 0001ca90: 61 74 20 69 74 20 68 61 64 20 61 6e 20 65 72 72 at it had an err 0001caa0: 6f 72 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 or.. 0001cab0: 76 61 72 20 74 68 69 73 4e 6f 64 65 4f 72 41 6e var thisNodeOrAn 0001cac0: 79 53 75 62 4e 6f 64 65 73 48 61 73 45 72 72 6f ySubNodesHasErro 0001cad0: 72 20 3d 20 28 28 6e 6f 64 65 2e 66 6c 61 67 73 r = ((node.flags 0001cae0: 20 26 20 31 33 31 30 37 32 20 2f 2a 20 4e 6f 64 & 131072 /* Nod 0001caf0: 65 46 6c 61 67 73 2e 54 68 69 73 4e 6f 64 65 48 eFlags.ThisNodeH 0001cb00: 61 73 45 72 72 6f 72 20 2a 2f 29 20 21 3d 3d 20 asError */) !== 0001cb10: 30 29 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 0) ||. 0001cb20: 20 20 20 20 20 20 74 73 2e 66 6f 72 45 61 63 68 ts.forEach 0001cb30: 43 68 69 6c 64 28 6e 6f 64 65 2c 20 63 6f 6e 74 Child(node, cont 0001cb40: 61 69 6e 73 50 61 72 73 65 45 72 72 6f 72 29 3b ainsParseError); 0001cb50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 . // 0001cb60: 49 66 20 73 6f 2c 20 6d 61 72 6b 20 6f 75 72 73 If so, mark ours 0001cb70: 65 6c 76 65 73 20 61 63 63 6f 72 64 69 6e 67 6c elves accordingl 0001cb80: 79 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 y.. i 0001cb90: 66 20 28 74 68 69 73 4e 6f 64 65 4f 72 41 6e 79 f (thisNodeOrAny 0001cba0: 53 75 62 4e 6f 64 65 73 48 61 73 45 72 72 6f 72 SubNodesHasError 0001cbb0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 0001cbc0: 20 20 20 20 6e 6f 64 65 2e 66 6c 61 67 73 20 7c node.flags | 0001cbd0: 3d 20 35 32 34 32 38 38 20 2f 2a 20 4e 6f 64 65 = 524288 /* Node 0001cbe0: 46 6c 61 67 73 2e 54 68 69 73 4e 6f 64 65 4f 72 Flags.ThisNodeOr 0001cbf0: 41 6e 79 53 75 62 4e 6f 64 65 73 48 61 73 45 72 AnySubNodesHasEr 0001cc00: 72 6f 72 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 ror */;. 0001cc10: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }. 0001cc20: 20 20 2f 2f 20 41 6c 73 6f 20 6d 61 72 6b 20 74 // Also mark t 0001cc30: 68 61 74 20 77 65 27 76 65 20 70 72 6f 70 61 67 hat we've propag 0001cc40: 61 74 65 64 20 74 68 65 20 63 68 69 6c 64 20 69 ated the child i 0001cc50: 6e 66 6f 72 6d 61 74 69 6f 6e 20 74 6f 20 74 68 nformation to th 0001cc60: 69 73 20 6e 6f 64 65 2e 20 20 54 68 69 73 20 77 is node. This w 0001cc70: 61 79 20 77 65 20 63 61 6e 0a 20 20 20 20 20 20 ay we can. 0001cc80: 20 20 20 20 20 20 2f 2f 20 61 6c 77 61 79 73 20 // always 0001cc90: 63 6f 6e 73 75 6c 74 20 74 68 65 20 62 69 74 20 consult the bit 0001cca0: 64 69 72 65 63 74 6c 79 20 6f 6e 20 74 68 69 73 directly on this 0001ccb0: 20 6e 6f 64 65 20 77 69 74 68 6f 75 74 20 6e 65 node without ne 0001ccc0: 65 64 69 6e 67 20 74 6f 20 63 68 65 63 6b 20 69 eding to check i 0001ccd0: 74 73 20 63 68 69 6c 64 72 65 6e 0a 20 20 20 20 ts children. 0001cce0: 20 20 20 20 20 20 20 20 2f 2f 20 61 67 61 69 6e // again 0001ccf0: 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f .. no 0001cd00: 64 65 2e 66 6c 61 67 73 20 7c 3d 20 31 30 34 38 de.flags |= 1048 0001cd10: 35 37 36 20 2f 2a 20 4e 6f 64 65 46 6c 61 67 73 576 /* NodeFlags 0001cd20: 2e 48 61 73 41 67 67 72 65 67 61 74 65 64 43 68 .HasAggregatedCh 0001cd30: 69 6c 64 44 61 74 61 20 2a 2f 3b 0a 20 20 20 20 ildData */;. 0001cd40: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 }. }. 0001cd50: 66 75 6e 63 74 69 6f 6e 20 67 65 74 53 6f 75 72 function getSour 0001cd60: 63 65 46 69 6c 65 4f 66 4e 6f 64 65 28 6e 6f 64 ceFileOfNode(nod 0001cd70: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 77 68 69 e) {. whi 0001cd80: 6c 65 20 28 6e 6f 64 65 20 26 26 20 6e 6f 64 65 le (node && node 0001cd90: 2e 6b 69 6e 64 20 21 3d 3d 20 33 30 35 20 2f 2a .kind !== 305 /* 0001cda0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 6f 75 72 SyntaxKind.Sour 0001cdb0: 63 65 46 69 6c 65 20 2a 2f 29 20 7b 0a 20 20 20 ceFile */) {. 0001cdc0: 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 node = 0001cdd0: 6e 6f 64 65 2e 70 61 72 65 6e 74 3b 0a 20 20 20 node.parent;. 0001cde0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 }. r 0001cdf0: 65 74 75 72 6e 20 6e 6f 64 65 3b 0a 20 20 20 20 eturn node;. 0001ce00: 7d 0a 20 20 20 20 74 73 2e 67 65 74 53 6f 75 72 }. ts.getSour 0001ce10: 63 65 46 69 6c 65 4f 66 4e 6f 64 65 20 3d 20 67 ceFileOfNode = g 0001ce20: 65 74 53 6f 75 72 63 65 46 69 6c 65 4f 66 4e 6f etSourceFileOfNo 0001ce30: 64 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e de;. function 0001ce40: 20 67 65 74 53 6f 75 72 63 65 46 69 6c 65 4f 66 getSourceFileOf 0001ce50: 4d 6f 64 75 6c 65 28 6d 6f 64 75 6c 65 29 20 7b Module(module) { 0001ce60: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 0001ce70: 67 65 74 53 6f 75 72 63 65 46 69 6c 65 4f 66 4e getSourceFileOfN 0001ce80: 6f 64 65 28 6d 6f 64 75 6c 65 2e 76 61 6c 75 65 ode(module.value 0001ce90: 44 65 63 6c 61 72 61 74 69 6f 6e 20 7c 7c 20 67 Declaration || g 0001cea0: 65 74 4e 6f 6e 41 75 67 6d 65 6e 74 61 74 69 6f etNonAugmentatio 0001ceb0: 6e 44 65 63 6c 61 72 61 74 69 6f 6e 28 6d 6f 64 nDeclaration(mod 0001cec0: 75 6c 65 29 29 3b 0a 20 20 20 20 7d 0a 20 20 20 ule));. }. 0001ced0: 20 74 73 2e 67 65 74 53 6f 75 72 63 65 46 69 6c ts.getSourceFil 0001cee0: 65 4f 66 4d 6f 64 75 6c 65 20 3d 20 67 65 74 53 eOfModule = getS 0001cef0: 6f 75 72 63 65 46 69 6c 65 4f 66 4d 6f 64 75 6c ourceFileOfModul 0001cf00: 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 e;. function 0001cf10: 69 73 50 6c 61 69 6e 4a 73 46 69 6c 65 28 66 69 isPlainJsFile(fi 0001cf20: 6c 65 2c 20 63 68 65 63 6b 4a 73 29 20 7b 0a 20 le, checkJs) {. 0001cf30: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 21 return !! 0001cf40: 66 69 6c 65 20 26 26 20 28 66 69 6c 65 2e 73 63 file && (file.sc 0001cf50: 72 69 70 74 4b 69 6e 64 20 3d 3d 3d 20 31 20 2f riptKind === 1 / 0001cf60: 2a 20 53 63 72 69 70 74 4b 69 6e 64 2e 4a 53 20 * ScriptKind.JS 0001cf70: 2a 2f 20 7c 7c 20 66 69 6c 65 2e 73 63 72 69 70 */ || file.scrip 0001cf80: 74 4b 69 6e 64 20 3d 3d 3d 20 32 20 2f 2a 20 53 tKind === 2 /* S 0001cf90: 63 72 69 70 74 4b 69 6e 64 2e 4a 53 58 20 2a 2f criptKind.JSX */ 0001cfa0: 29 20 26 26 20 21 66 69 6c 65 2e 63 68 65 63 6b ) && !file.check 0001cfb0: 4a 73 44 69 72 65 63 74 69 76 65 20 26 26 20 63 JsDirective && c 0001cfc0: 68 65 63 6b 4a 73 20 3d 3d 3d 20 75 6e 64 65 66 heckJs === undef 0001cfd0: 69 6e 65 64 3b 0a 20 20 20 20 7d 0a 20 20 20 20 ined;. }. 0001cfe0: 74 73 2e 69 73 50 6c 61 69 6e 4a 73 46 69 6c 65 ts.isPlainJsFile 0001cff0: 20 3d 20 69 73 50 6c 61 69 6e 4a 73 46 69 6c 65 = isPlainJsFile 0001d000: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 0001d010: 73 53 74 61 74 65 6d 65 6e 74 57 69 74 68 4c 6f sStatementWithLo 0001d020: 63 61 6c 73 28 6e 6f 64 65 29 20 7b 0a 20 20 20 cals(node) {. 0001d030: 20 20 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 switch (nod 0001d040: 65 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 e.kind) {. 0001d050: 20 20 20 20 20 20 63 61 73 65 20 32 33 35 20 2f case 235 / 0001d060: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 6c 6f * SyntaxKind.Blo 0001d070: 63 6b 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 ck */:. 0001d080: 20 20 20 63 61 73 65 20 32 36 33 20 2f 2a 20 53 case 263 /* S 0001d090: 79 6e 74 61 78 4b 69 6e 64 2e 43 61 73 65 42 6c yntaxKind.CaseBl 0001d0a0: 6f 63 6b 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ock */:. 0001d0b0: 20 20 20 20 63 61 73 65 20 32 34 32 20 2f 2a 20 case 242 /* 0001d0c0: 53 79 6e 74 61 78 4b 69 6e 64 2e 46 6f 72 53 74 SyntaxKind.ForSt 0001d0d0: 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 atement */:. 0001d0e0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 34 33 case 243 0001d0f0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 /* SyntaxKind.F 0001d100: 6f 72 49 6e 53 74 61 74 65 6d 65 6e 74 20 2a 2f orInStatement */ 0001d110: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 0001d120: 73 65 20 32 34 34 20 2f 2a 20 53 79 6e 74 61 78 se 244 /* Syntax 0001d130: 4b 69 6e 64 2e 46 6f 72 4f 66 53 74 61 74 65 6d Kind.ForOfStatem 0001d140: 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ent */:. 0001d150: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 0001d160: 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 rue;. }. 0001d170: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 return fa 0001d180: 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 lse;. }. t 0001d190: 73 2e 69 73 53 74 61 74 65 6d 65 6e 74 57 69 74 s.isStatementWit 0001d1a0: 68 4c 6f 63 61 6c 73 20 3d 20 69 73 53 74 61 74 hLocals = isStat 0001d1b0: 65 6d 65 6e 74 57 69 74 68 4c 6f 63 61 6c 73 3b ementWithLocals; 0001d1c0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 0001d1d0: 74 53 74 61 72 74 50 6f 73 69 74 69 6f 6e 4f 66 tStartPositionOf 0001d1e0: 4c 69 6e 65 28 6c 69 6e 65 2c 20 73 6f 75 72 63 Line(line, sourc 0001d1f0: 65 46 69 6c 65 29 20 7b 0a 20 20 20 20 20 20 20 eFile) {. 0001d200: 20 74 73 2e 44 65 62 75 67 2e 61 73 73 65 72 74 ts.Debug.assert 0001d210: 28 6c 69 6e 65 20 3e 3d 20 30 29 3b 0a 20 20 20 (line >= 0);. 0001d220: 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 67 return ts.g 0001d230: 65 74 4c 69 6e 65 53 74 61 72 74 73 28 73 6f 75 etLineStarts(sou 0001d240: 72 63 65 46 69 6c 65 29 5b 6c 69 6e 65 5d 3b 0a rceFile)[line];. 0001d250: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 }. ts.get 0001d260: 53 74 61 72 74 50 6f 73 69 74 69 6f 6e 4f 66 4c StartPositionOfL 0001d270: 69 6e 65 20 3d 20 67 65 74 53 74 61 72 74 50 6f ine = getStartPo 0001d280: 73 69 74 69 6f 6e 4f 66 4c 69 6e 65 3b 0a 20 20 sitionOfLine;. 0001d290: 20 20 2f 2f 20 54 68 69 73 20 69 73 20 61 20 75 // This is a u 0001d2a0: 73 65 66 75 6c 20 66 75 6e 63 74 69 6f 6e 20 66 seful function f 0001d2b0: 6f 72 20 64 65 62 75 67 67 69 6e 67 20 70 75 72 or debugging pur 0001d2c0: 70 6f 73 65 73 2e 0a 20 20 20 20 66 75 6e 63 74 poses.. funct 0001d2d0: 69 6f 6e 20 6e 6f 64 65 50 6f 73 54 6f 53 74 72 ion nodePosToStr 0001d2e0: 69 6e 67 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ing(node) {. 0001d2f0: 20 20 20 20 76 61 72 20 66 69 6c 65 20 3d 20 67 var file = g 0001d300: 65 74 53 6f 75 72 63 65 46 69 6c 65 4f 66 4e 6f etSourceFileOfNo 0001d310: 64 65 28 6e 6f 64 65 29 3b 0a 20 20 20 20 20 20 de(node);. 0001d320: 20 20 76 61 72 20 6c 6f 63 20 3d 20 74 73 2e 67 var loc = ts.g 0001d330: 65 74 4c 69 6e 65 41 6e 64 43 68 61 72 61 63 74 etLineAndCharact 0001d340: 65 72 4f 66 50 6f 73 69 74 69 6f 6e 28 66 69 6c erOfPosition(fil 0001d350: 65 2c 20 6e 6f 64 65 2e 70 6f 73 29 3b 0a 20 20 e, node.pos);. 0001d360: 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 22 2e return "". 0001d370: 63 6f 6e 63 61 74 28 66 69 6c 65 2e 66 69 6c 65 concat(file.file 0001d380: 4e 61 6d 65 2c 20 22 28 22 29 2e 63 6f 6e 63 61 Name, "(").conca 0001d390: 74 28 6c 6f 63 2e 6c 69 6e 65 20 2b 20 31 2c 20 t(loc.line + 1, 0001d3a0: 22 2c 22 29 2e 63 6f 6e 63 61 74 28 6c 6f 63 2e ",").concat(loc. 0001d3b0: 63 68 61 72 61 63 74 65 72 20 2b 20 31 2c 20 22 character + 1, " 0001d3c0: 29 22 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 )");. }. t 0001d3d0: 73 2e 6e 6f 64 65 50 6f 73 54 6f 53 74 72 69 6e s.nodePosToStrin 0001d3e0: 67 20 3d 20 6e 6f 64 65 50 6f 73 54 6f 53 74 72 g = nodePosToStr 0001d3f0: 69 6e 67 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ing;. functio 0001d400: 6e 20 67 65 74 45 6e 64 4c 69 6e 65 50 6f 73 69 n getEndLinePosi 0001d410: 74 69 6f 6e 28 6c 69 6e 65 2c 20 73 6f 75 72 63 tion(line, sourc 0001d420: 65 46 69 6c 65 29 20 7b 0a 20 20 20 20 20 20 20 eFile) {. 0001d430: 20 74 73 2e 44 65 62 75 67 2e 61 73 73 65 72 74 ts.Debug.assert 0001d440: 28 6c 69 6e 65 20 3e 3d 20 30 29 3b 0a 20 20 20 (line >= 0);. 0001d450: 20 20 20 20 20 76 61 72 20 6c 69 6e 65 53 74 61 var lineSta 0001d460: 72 74 73 20 3d 20 74 73 2e 67 65 74 4c 69 6e 65 rts = ts.getLine 0001d470: 53 74 61 72 74 73 28 73 6f 75 72 63 65 46 69 6c Starts(sourceFil 0001d480: 65 29 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 e);. var 0001d490: 6c 69 6e 65 49 6e 64 65 78 20 3d 20 6c 69 6e 65 lineIndex = line 0001d4a0: 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 73 6f ;. var so 0001d4b0: 75 72 63 65 54 65 78 74 20 3d 20 73 6f 75 72 63 urceText = sourc 0001d4c0: 65 46 69 6c 65 2e 74 65 78 74 3b 0a 20 20 20 20 eFile.text;. 0001d4d0: 20 20 20 20 69 66 20 28 6c 69 6e 65 49 6e 64 65 if (lineInde 0001d4e0: 78 20 2b 20 31 20 3d 3d 3d 20 6c 69 6e 65 53 74 x + 1 === lineSt 0001d4f0: 61 72 74 73 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 arts.length) {. 0001d500: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 6c 61 // la 0001d510: 73 74 20 6c 69 6e 65 20 2d 20 72 65 74 75 72 6e st line - return 0001d520: 20 45 4f 46 0a 20 20 20 20 20 20 20 20 20 20 20 EOF. 0001d530: 20 72 65 74 75 72 6e 20 73 6f 75 72 63 65 54 65 return sourceTe 0001d540: 78 74 2e 6c 65 6e 67 74 68 20 2d 20 31 3b 0a 20 xt.length - 1;. 0001d550: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 0001d560: 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 else {. 0001d570: 20 20 20 20 2f 2f 20 63 75 72 72 65 6e 74 20 6c // current l 0001d580: 69 6e 65 20 73 74 61 72 74 0a 20 20 20 20 20 20 ine start. 0001d590: 20 20 20 20 20 20 76 61 72 20 73 74 61 72 74 20 var start 0001d5a0: 3d 20 6c 69 6e 65 53 74 61 72 74 73 5b 6c 69 6e = lineStarts[lin 0001d5b0: 65 49 6e 64 65 78 5d 3b 0a 20 20 20 20 20 20 20 eIndex];. 0001d5c0: 20 20 20 20 20 2f 2f 20 74 61 6b 65 20 74 68 65 // take the 0001d5d0: 20 73 74 61 72 74 20 70 6f 73 69 74 69 6f 6e 20 start position 0001d5e0: 6f 66 20 74 68 65 20 6e 65 78 74 20 6c 69 6e 65 of the next line 0001d5f0: 20 2d 20 31 20 3d 20 69 74 20 73 68 6f 75 6c 64 - 1 = it should 0001d600: 20 62 65 20 73 6f 6d 65 20 6c 69 6e 65 20 62 72 be some line br 0001d610: 65 61 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 eak. 0001d620: 76 61 72 20 70 6f 73 20 3d 20 6c 69 6e 65 53 74 var pos = lineSt 0001d630: 61 72 74 73 5b 6c 69 6e 65 49 6e 64 65 78 20 2b arts[lineIndex + 0001d640: 20 31 5d 20 2d 20 31 3b 0a 20 20 20 20 20 20 20 1] - 1;. 0001d650: 20 20 20 20 20 74 73 2e 44 65 62 75 67 2e 61 73 ts.Debug.as 0001d660: 73 65 72 74 28 74 73 2e 69 73 4c 69 6e 65 42 72 sert(ts.isLineBr 0001d670: 65 61 6b 28 73 6f 75 72 63 65 54 65 78 74 2e 63 eak(sourceText.c 0001d680: 68 61 72 43 6f 64 65 41 74 28 70 6f 73 29 29 29 harCodeAt(pos))) 0001d690: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f ;. // 0001d6a0: 20 77 61 6c 6b 20 62 61 63 6b 77 61 72 64 73 20 walk backwards 0001d6b0: 73 6b 69 70 70 69 6e 67 20 6c 69 6e 65 20 62 72 skipping line br 0001d6c0: 65 61 6b 73 2c 20 73 74 6f 70 20 74 68 65 20 74 eaks, stop the t 0001d6d0: 68 65 20 62 65 67 69 6e 6e 69 6e 67 20 6f 66 20 he beginning of 0001d6e0: 63 75 72 72 65 6e 74 20 6c 69 6e 65 2e 0a 20 20 current line.. 0001d6f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 2e 65 // i.e 0001d700: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f :. // 0001d710: 20 3c 73 6f 6d 65 20 74 65 78 74 3e 0a 20 20 20 <some text>. 0001d720: 20 20 20 20 20 20 20 20 20 2f 2f 20 24 20 3c 2d // $ <- 0001d730: 20 65 6e 64 20 6f 66 20 6c 69 6e 65 20 66 6f 72 end of line for 0001d740: 20 74 68 69 73 20 70 6f 73 69 74 69 6f 6e 20 73 this position s 0001d750: 68 6f 75 6c 64 20 6d 61 74 63 68 20 74 68 65 20 hould match the 0001d760: 73 74 61 72 74 20 70 6f 73 69 74 69 6f 6e 0a 20 start position. 0001d770: 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 while 0001d780: 20 28 73 74 61 72 74 20 3c 3d 20 70 6f 73 20 26 (start <= pos & 0001d790: 26 20 74 73 2e 69 73 4c 69 6e 65 42 72 65 61 6b & ts.isLineBreak 0001d7a0: 28 73 6f 75 72 63 65 54 65 78 74 2e 63 68 61 72 (sourceText.char 0001d7b0: 43 6f 64 65 41 74 28 70 6f 73 29 29 29 20 7b 0a CodeAt(pos))) {. 0001d7c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0001d7d0: 70 6f 73 2d 2d 3b 0a 20 20 20 20 20 20 20 20 20 pos--;. 0001d7e0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 0001d7f0: 20 72 65 74 75 72 6e 20 70 6f 73 3b 0a 20 20 20 return pos;. 0001d800: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 }. }. 0001d810: 20 74 73 2e 67 65 74 45 6e 64 4c 69 6e 65 50 6f ts.getEndLinePo 0001d820: 73 69 74 69 6f 6e 20 3d 20 67 65 74 45 6e 64 4c sition = getEndL 0001d830: 69 6e 65 50 6f 73 69 74 69 6f 6e 3b 0a 20 20 20 inePosition;. 0001d840: 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 52 65 74 75 /**. * Retu 0001d850: 72 6e 73 20 61 20 76 61 6c 75 65 20 69 6e 64 69 rns a value indi 0001d860: 63 61 74 69 6e 67 20 77 68 65 74 68 65 72 20 61 cating whether a 0001d870: 20 6e 61 6d 65 20 69 73 20 75 6e 69 71 75 65 20 name is unique 0001d880: 67 6c 6f 62 61 6c 6c 79 20 6f 72 20 77 69 74 68 globally or with 0001d890: 69 6e 20 74 68 65 20 63 75 72 72 65 6e 74 20 66 in the current f 0001d8a0: 69 6c 65 2e 0a 20 20 20 20 20 2a 20 4e 6f 74 65 ile.. * Note 0001d8b0: 3a 20 54 68 69 73 20 64 6f 65 73 20 6e 6f 74 20 : This does not 0001d8c0: 63 6f 6e 73 69 64 65 72 20 77 68 65 74 68 65 72 consider whether 0001d8d0: 20 61 20 6e 61 6d 65 20 61 70 70 65 61 72 73 20 a name appears 0001d8e0: 61 73 20 61 20 66 72 65 65 20 69 64 65 6e 74 69 as a free identi 0001d8f0: 66 69 65 72 20 6f 72 20 6e 6f 74 2c 20 73 6f 20 fier or not, so 0001d900: 61 74 20 74 68 65 20 65 78 70 72 65 73 73 69 6f at the expressio 0001d910: 6e 20 60 78 2e 79 60 20 74 68 69 73 20 69 6e 63 n `x.y` this inc 0001d920: 6c 75 64 65 73 20 62 6f 74 68 20 60 78 60 20 61 ludes both `x` a 0001d930: 6e 64 20 60 79 60 2e 0a 20 20 20 20 20 2a 2f 0a nd `y`.. */. 0001d940: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 46 function isF 0001d950: 69 6c 65 4c 65 76 65 6c 55 6e 69 71 75 65 4e 61 ileLevelUniqueNa 0001d960: 6d 65 28 73 6f 75 72 63 65 46 69 6c 65 2c 20 6e me(sourceFile, n 0001d970: 61 6d 65 2c 20 68 61 73 47 6c 6f 62 61 6c 4e 61 ame, hasGlobalNa 0001d980: 6d 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 me) {. re 0001d990: 74 75 72 6e 20 21 28 68 61 73 47 6c 6f 62 61 6c turn !(hasGlobal 0001d9a0: 4e 61 6d 65 20 26 26 20 68 61 73 47 6c 6f 62 61 Name && hasGloba 0001d9b0: 6c 4e 61 6d 65 28 6e 61 6d 65 29 29 20 26 26 20 lName(name)) && 0001d9c0: 21 73 6f 75 72 63 65 46 69 6c 65 2e 69 64 65 6e !sourceFile.iden 0001d9d0: 74 69 66 69 65 72 73 2e 68 61 73 28 6e 61 6d 65 tifiers.has(name 0001d9e0: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 0001d9f0: 69 73 46 69 6c 65 4c 65 76 65 6c 55 6e 69 71 75 isFileLevelUniqu 0001da00: 65 4e 61 6d 65 20 3d 20 69 73 46 69 6c 65 4c 65 eName = isFileLe 0001da10: 76 65 6c 55 6e 69 71 75 65 4e 61 6d 65 3b 0a 20 velUniqueName;. 0001da20: 20 20 20 2f 2f 20 52 65 74 75 72 6e 73 20 74 72 // Returns tr 0001da30: 75 65 20 69 66 20 74 68 69 73 20 6e 6f 64 65 20 ue if this node 0001da40: 69 73 20 6d 69 73 73 69 6e 67 20 66 72 6f 6d 20 is missing from 0001da50: 74 68 65 20 61 63 74 75 61 6c 20 73 6f 75 72 63 the actual sourc 0001da60: 65 20 63 6f 64 65 2e 20 41 20 27 6d 69 73 73 69 e code. A 'missi 0001da70: 6e 67 27 20 6e 6f 64 65 20 69 73 20 64 69 66 66 ng' node is diff 0001da80: 65 72 65 6e 74 0a 20 20 20 20 2f 2f 20 66 72 6f erent. // fro 0001da90: 6d 20 27 75 6e 64 65 66 69 6e 65 64 2f 64 65 66 m 'undefined/def 0001daa0: 69 6e 65 64 27 2e 20 57 68 65 6e 20 61 20 6e 6f ined'. When a no 0001dab0: 64 65 20 69 73 20 75 6e 64 65 66 69 6e 65 64 20 de is undefined 0001dac0: 28 77 68 69 63 68 20 63 61 6e 20 68 61 70 70 65 (which can happe 0001dad0: 6e 20 66 6f 72 20 6f 70 74 69 6f 6e 61 6c 20 6e n for optional n 0001dae0: 6f 64 65 73 0a 20 20 20 20 2f 2f 20 69 6e 20 74 odes. // in t 0001daf0: 68 65 20 74 72 65 65 29 2c 20 69 74 20 69 73 20 he tree), it is 0001db00: 64 65 66 69 6e 69 74 65 6c 79 20 6d 69 73 73 69 definitely missi 0001db10: 6e 67 2e 20 48 6f 77 65 76 65 72 2c 20 61 20 6e ng. However, a n 0001db20: 6f 64 65 20 6d 61 79 20 62 65 20 64 65 66 69 6e ode may be defin 0001db30: 65 64 2c 20 62 75 74 20 73 74 69 6c 6c 20 62 65 ed, but still be 0001db40: 0a 20 20 20 20 2f 2f 20 6d 69 73 73 69 6e 67 2e . // missing. 0001db50: 20 20 54 68 69 73 20 68 61 70 70 65 6e 73 20 77 This happens w 0001db60: 68 65 6e 65 76 65 72 20 74 68 65 20 70 61 72 73 henever the pars 0001db70: 65 72 20 6b 6e 6f 77 73 20 69 74 20 6e 65 65 64 er knows it need 0001db80: 73 20 74 6f 20 70 61 72 73 65 20 73 6f 6d 65 74 s to parse somet 0001db90: 68 69 6e 67 2c 20 62 75 74 20 63 61 6e 27 74 0a hing, but can't. 0001dba0: 20 20 20 20 2f 2f 20 67 65 74 20 61 6e 79 74 68 // get anyth 0001dbb0: 69 6e 67 20 69 6e 20 74 68 65 20 73 6f 75 72 63 ing in the sourc 0001dbc0: 65 20 63 6f 64 65 20 74 68 61 74 20 69 74 20 65 e code that it e 0001dbd0: 78 70 65 63 74 73 20 61 74 20 74 68 61 74 20 6c xpects at that l 0001dbe0: 6f 63 61 74 69 6f 6e 2e 20 46 6f 72 20 65 78 61 ocation. For exa 0001dbf0: 6d 70 6c 65 3a 0a 20 20 20 20 2f 2f 0a 20 20 20 mple:. //. 0001dc00: 20 2f 2f 20 20 20 20 20 20 20 20 20 20 6c 65 74 // let 0001dc10: 20 61 3a 20 3b 0a 20 20 20 20 2f 2f 0a 20 20 20 a: ;. //. 0001dc20: 20 2f 2f 20 48 65 72 65 2c 20 74 68 65 20 54 79 // Here, the Ty 0001dc30: 70 65 20 69 6e 20 74 68 65 20 54 79 70 65 2d 41 pe in the Type-A 0001dc40: 6e 6e 6f 74 61 74 69 6f 6e 20 69 73 20 6e 6f 74 nnotation is not 0001dc50: 2d 6f 70 74 69 6f 6e 61 6c 20 28 61 73 20 74 68 -optional (as th 0001dc60: 65 72 65 20 69 73 20 61 20 63 6f 6c 6f 6e 20 69 ere is a colon i 0001dc70: 6e 20 74 68 65 20 73 6f 75 72 63 65 0a 20 20 20 n the source. 0001dc80: 20 2f 2f 20 63 6f 64 65 29 2e 20 53 6f 20 74 68 // code). So th 0001dc90: 65 20 70 61 72 73 65 72 20 77 69 6c 6c 20 61 74 e parser will at 0001dca0: 74 65 6d 70 74 20 74 6f 20 70 61 72 73 65 20 6f tempt to parse o 0001dcb0: 75 74 20 61 20 74 79 70 65 2c 20 61 6e 64 20 77 ut a type, and w 0001dcc0: 69 6c 6c 20 63 72 65 61 74 65 20 61 6e 20 61 63 ill create an ac 0001dcd0: 74 75 61 6c 20 6e 6f 64 65 2e 0a 20 20 20 20 2f tual node.. / 0001dce0: 2f 20 48 6f 77 65 76 65 72 2c 20 74 68 69 73 20 / However, this 0001dcf0: 6e 6f 64 65 20 77 69 6c 6c 20 62 65 20 27 6d 69 node will be 'mi 0001dd00: 73 73 69 6e 67 27 20 69 6e 20 74 68 65 20 73 65 ssing' in the se 0001dd10: 6e 73 65 20 74 68 61 74 20 6e 6f 20 61 63 74 75 nse that no actu 0001dd20: 61 6c 20 73 6f 75 72 63 65 2d 63 6f 64 65 2f 74 al source-code/t 0001dd30: 6f 6b 65 6e 73 20 61 72 65 0a 20 20 20 20 2f 2f okens are. // 0001dd40: 20 63 6f 6e 74 61 69 6e 65 64 20 77 69 74 68 69 contained withi 0001dd50: 6e 20 69 74 2e 0a 20 20 20 20 66 75 6e 63 74 69 n it.. functi 0001dd60: 6f 6e 20 6e 6f 64 65 49 73 4d 69 73 73 69 6e 67 on nodeIsMissing 0001dd70: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 0001dd80: 20 69 66 20 28 6e 6f 64 65 20 3d 3d 3d 20 75 6e if (node === un 0001dd90: 64 65 66 69 6e 65 64 29 20 7b 0a 20 20 20 20 20 defined) {. 0001dda0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 return tr 0001ddb0: 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 ue;. }. 0001ddc0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 return nod 0001ddd0: 65 2e 70 6f 73 20 3d 3d 3d 20 6e 6f 64 65 2e 65 e.pos === node.e 0001dde0: 6e 64 20 26 26 20 6e 6f 64 65 2e 70 6f 73 20 3e nd && node.pos > 0001ddf0: 3d 20 30 20 26 26 20 6e 6f 64 65 2e 6b 69 6e 64 = 0 && node.kind 0001de00: 20 21 3d 3d 20 31 20 2f 2a 20 53 79 6e 74 61 78 !== 1 /* Syntax 0001de10: 4b 69 6e 64 2e 45 6e 64 4f 66 46 69 6c 65 54 6f Kind.EndOfFileTo 0001de20: 6b 65 6e 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ken */;. }. 0001de30: 20 20 74 73 2e 6e 6f 64 65 49 73 4d 69 73 73 69 ts.nodeIsMissi 0001de40: 6e 67 20 3d 20 6e 6f 64 65 49 73 4d 69 73 73 69 ng = nodeIsMissi 0001de50: 6e 67 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ng;. function 0001de60: 20 6e 6f 64 65 49 73 50 72 65 73 65 6e 74 28 6e nodeIsPresent(n 0001de70: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 0001de80: 65 74 75 72 6e 20 21 6e 6f 64 65 49 73 4d 69 73 eturn !nodeIsMis 0001de90: 73 69 6e 67 28 6e 6f 64 65 29 3b 0a 20 20 20 20 sing(node);. 0001dea0: 7d 0a 20 20 20 20 74 73 2e 6e 6f 64 65 49 73 50 }. ts.nodeIsP 0001deb0: 72 65 73 65 6e 74 20 3d 20 6e 6f 64 65 49 73 50 resent = nodeIsP 0001dec0: 72 65 73 65 6e 74 3b 0a 20 20 20 20 66 75 6e 63 resent;. func 0001ded0: 74 69 6f 6e 20 69 6e 73 65 72 74 53 74 61 74 65 tion insertState 0001dee0: 6d 65 6e 74 73 41 66 74 65 72 50 72 6f 6c 6f 67 mentsAfterProlog 0001def0: 75 65 28 74 6f 2c 20 66 72 6f 6d 2c 20 69 73 50 ue(to, from, isP 0001df00: 72 6f 6c 6f 67 75 65 44 69 72 65 63 74 69 76 65 rologueDirective 0001df10: 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 ) {. if ( 0001df20: 66 72 6f 6d 20 3d 3d 3d 20 75 6e 64 65 66 69 6e from === undefin 0001df30: 65 64 20 7c 7c 20 66 72 6f 6d 2e 6c 65 6e 67 74 ed || from.lengt 0001df40: 68 20 3d 3d 3d 20 30 29 0a 20 20 20 20 20 20 20 h === 0). 0001df50: 20 20 20 20 20 72 65 74 75 72 6e 20 74 6f 3b 0a return to;. 0001df60: 20 20 20 20 20 20 20 20 76 61 72 20 73 74 61 74 var stat 0001df70: 65 6d 65 6e 74 49 6e 64 65 78 20 3d 20 30 3b 0a ementIndex = 0;. 0001df80: 20 20 20 20 20 20 20 20 2f 2f 20 73 6b 69 70 20 // skip 0001df90: 61 6c 6c 20 70 72 6f 6c 6f 67 75 65 20 64 69 72 all prologue dir 0001dfa0: 65 63 74 69 76 65 73 20 74 6f 20 69 6e 73 65 72 ectives to inser 0001dfb0: 74 20 61 74 20 74 68 65 20 63 6f 72 72 65 63 74 t at the correct 0001dfc0: 20 70 6f 73 69 74 69 6f 6e 0a 20 20 20 20 20 20 position. 0001dfd0: 20 20 66 6f 72 20 28 3b 20 73 74 61 74 65 6d 65 for (; stateme 0001dfe0: 6e 74 49 6e 64 65 78 20 3c 20 74 6f 2e 6c 65 6e ntIndex < to.len 0001dff0: 67 74 68 3b 20 2b 2b 73 74 61 74 65 6d 65 6e 74 gth; ++statement 0001e000: 49 6e 64 65 78 29 20 7b 0a 20 20 20 20 20 20 20 Index) {. 0001e010: 20 20 20 20 20 69 66 20 28 21 69 73 50 72 6f 6c if (!isProl 0001e020: 6f 67 75 65 44 69 72 65 63 74 69 76 65 28 74 6f ogueDirective(to 0001e030: 5b 73 74 61 74 65 6d 65 6e 74 49 6e 64 65 78 5d [statementIndex] 0001e040: 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 )) {. 0001e050: 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 break;. 0001e060: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0001e070: 20 20 7d 0a 20 20 20 20 20 20 20 20 74 6f 2e 73 }. to.s 0001e080: 70 6c 69 63 65 2e 61 70 70 6c 79 28 74 6f 2c 20 plice.apply(to, 0001e090: 5f 5f 73 70 72 65 61 64 41 72 72 61 79 28 5b 73 __spreadArray([s 0001e0a0: 74 61 74 65 6d 65 6e 74 49 6e 64 65 78 2c 20 30 tatementIndex, 0 0001e0b0: 5d 2c 20 66 72 6f 6d 2c 20 66 61 6c 73 65 29 29 ], from, false)) 0001e0c0: 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e ;. return 0001e0d0: 20 74 6f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 66 to;. }. f 0001e0e0: 75 6e 63 74 69 6f 6e 20 69 6e 73 65 72 74 53 74 unction insertSt 0001e0f0: 61 74 65 6d 65 6e 74 41 66 74 65 72 50 72 6f 6c atementAfterProl 0001e100: 6f 67 75 65 28 74 6f 2c 20 73 74 61 74 65 6d 65 ogue(to, stateme 0001e110: 6e 74 2c 20 69 73 50 72 6f 6c 6f 67 75 65 44 69 nt, isPrologueDi 0001e120: 72 65 63 74 69 76 65 29 20 7b 0a 20 20 20 20 20 rective) {. 0001e130: 20 20 20 69 66 20 28 73 74 61 74 65 6d 65 6e 74 if (statement 0001e140: 20 3d 3d 3d 20 75 6e 64 65 66 69 6e 65 64 29 0a === undefined). 0001e150: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 0001e160: 72 6e 20 74 6f 3b 0a 20 20 20 20 20 20 20 20 76 rn to;. v 0001e170: 61 72 20 73 74 61 74 65 6d 65 6e 74 49 6e 64 65 ar statementInde 0001e180: 78 20 3d 20 30 3b 0a 20 20 20 20 20 20 20 20 2f x = 0;. / 0001e190: 2f 20 73 6b 69 70 20 61 6c 6c 20 70 72 6f 6c 6f / skip all prolo 0001e1a0: 67 75 65 20 64 69 72 65 63 74 69 76 65 73 20 74 gue directives t 0001e1b0: 6f 20 69 6e 73 65 72 74 20 61 74 20 74 68 65 20 o insert at the 0001e1c0: 63 6f 72 72 65 63 74 20 70 6f 73 69 74 69 6f 6e correct position 0001e1d0: 0a 20 20 20 20 20 20 20 20 66 6f 72 20 28 3b 20 . for (; 0001e1e0: 73 74 61 74 65 6d 65 6e 74 49 6e 64 65 78 20 3c statementIndex < 0001e1f0: 20 74 6f 2e 6c 65 6e 67 74 68 3b 20 2b 2b 73 74 to.length; ++st 0001e200: 61 74 65 6d 65 6e 74 49 6e 64 65 78 29 20 7b 0a atementIndex) {. 0001e210: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if ( 0001e220: 21 69 73 50 72 6f 6c 6f 67 75 65 44 69 72 65 63 !isPrologueDirec 0001e230: 74 69 76 65 28 74 6f 5b 73 74 61 74 65 6d 65 6e tive(to[statemen 0001e240: 74 49 6e 64 65 78 5d 29 29 20 7b 0a 20 20 20 20 tIndex])) {. 0001e250: 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 brea 0001e260: 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d k;. } 0001e270: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }. 0001e280: 20 20 20 74 6f 2e 73 70 6c 69 63 65 28 73 74 61 to.splice(sta 0001e290: 74 65 6d 65 6e 74 49 6e 64 65 78 2c 20 30 2c 20 tementIndex, 0, 0001e2a0: 73 74 61 74 65 6d 65 6e 74 29 3b 0a 20 20 20 20 statement);. 0001e2b0: 20 20 20 20 72 65 74 75 72 6e 20 74 6f 3b 0a 20 return to;. 0001e2c0: 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 74 69 6f }. functio 0001e2d0: 6e 20 69 73 41 6e 79 50 72 6f 6c 6f 67 75 65 44 n isAnyPrologueD 0001e2e0: 69 72 65 63 74 69 76 65 28 6e 6f 64 65 29 20 7b irective(node) { 0001e2f0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 0001e300: 69 73 50 72 6f 6c 6f 67 75 65 44 69 72 65 63 74 isPrologueDirect 0001e310: 69 76 65 28 6e 6f 64 65 29 20 7c 7c 20 21 21 28 ive(node) || !!( 0001e320: 67 65 74 45 6d 69 74 46 6c 61 67 73 28 6e 6f 64 getEmitFlags(nod 0001e330: 65 29 20 26 20 31 30 34 38 35 37 36 20 2f 2a 20 e) & 1048576 /* 0001e340: 45 6d 69 74 46 6c 61 67 73 2e 43 75 73 74 6f 6d EmitFlags.Custom 0001e350: 50 72 6f 6c 6f 67 75 65 20 2a 2f 29 3b 0a 20 20 Prologue */);. 0001e360: 20 20 7d 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 }. /**. 0001e370: 20 2a 20 50 72 65 70 65 6e 64 73 20 73 74 61 74 * Prepends stat 0001e380: 65 6d 65 6e 74 73 20 74 6f 20 61 6e 20 61 72 72 ements to an arr 0001e390: 61 79 20 77 68 69 6c 65 20 74 61 6b 69 6e 67 20 ay while taking 0001e3a0: 63 61 72 65 20 6f 66 20 70 72 6f 6c 6f 67 75 65 care of prologue 0001e3b0: 20 64 69 72 65 63 74 69 76 65 73 2e 0a 20 20 20 directives.. 0001e3c0: 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f */. functio 0001e3d0: 6e 20 69 6e 73 65 72 74 53 74 61 74 65 6d 65 6e n insertStatemen 0001e3e0: 74 73 41 66 74 65 72 53 74 61 6e 64 61 72 64 50 tsAfterStandardP 0001e3f0: 72 6f 6c 6f 67 75 65 28 74 6f 2c 20 66 72 6f 6d rologue(to, from 0001e400: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0001e410: 72 6e 20 69 6e 73 65 72 74 53 74 61 74 65 6d 65 rn insertStateme 0001e420: 6e 74 73 41 66 74 65 72 50 72 6f 6c 6f 67 75 65 ntsAfterPrologue 0001e430: 28 74 6f 2c 20 66 72 6f 6d 2c 20 69 73 50 72 6f (to, from, isPro 0001e440: 6c 6f 67 75 65 44 69 72 65 63 74 69 76 65 29 3b logueDirective); 0001e450: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 6e . }. ts.in 0001e460: 73 65 72 74 53 74 61 74 65 6d 65 6e 74 73 41 66 sertStatementsAf 0001e470: 74 65 72 53 74 61 6e 64 61 72 64 50 72 6f 6c 6f terStandardProlo 0001e480: 67 75 65 20 3d 20 69 6e 73 65 72 74 53 74 61 74 gue = insertStat 0001e490: 65 6d 65 6e 74 73 41 66 74 65 72 53 74 61 6e 64 ementsAfterStand 0001e4a0: 61 72 64 50 72 6f 6c 6f 67 75 65 3b 0a 20 20 20 ardPrologue;. 0001e4b0: 20 66 75 6e 63 74 69 6f 6e 20 69 6e 73 65 72 74 function insert 0001e4c0: 53 74 61 74 65 6d 65 6e 74 73 41 66 74 65 72 43 StatementsAfterC 0001e4d0: 75 73 74 6f 6d 50 72 6f 6c 6f 67 75 65 28 74 6f ustomPrologue(to 0001e4e0: 2c 20 66 72 6f 6d 29 20 7b 0a 20 20 20 20 20 20 , from) {. 0001e4f0: 20 20 72 65 74 75 72 6e 20 69 6e 73 65 72 74 53 return insertS 0001e500: 74 61 74 65 6d 65 6e 74 73 41 66 74 65 72 50 72 tatementsAfterPr 0001e510: 6f 6c 6f 67 75 65 28 74 6f 2c 20 66 72 6f 6d 2c ologue(to, from, 0001e520: 20 69 73 41 6e 79 50 72 6f 6c 6f 67 75 65 44 69 isAnyPrologueDi 0001e530: 72 65 63 74 69 76 65 29 3b 0a 20 20 20 20 7d 0a rective);. }. 0001e540: 20 20 20 20 74 73 2e 69 6e 73 65 72 74 53 74 61 ts.insertSta 0001e550: 74 65 6d 65 6e 74 73 41 66 74 65 72 43 75 73 74 tementsAfterCust 0001e560: 6f 6d 50 72 6f 6c 6f 67 75 65 20 3d 20 69 6e 73 omPrologue = ins 0001e570: 65 72 74 53 74 61 74 65 6d 65 6e 74 73 41 66 74 ertStatementsAft 0001e580: 65 72 43 75 73 74 6f 6d 50 72 6f 6c 6f 67 75 65 erCustomPrologue 0001e590: 3b 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a ;. /**. * 0001e5a0: 20 50 72 65 70 65 6e 64 73 20 73 74 61 74 65 6d Prepends statem 0001e5b0: 65 6e 74 73 20 74 6f 20 61 6e 20 61 72 72 61 79 ents to an array 0001e5c0: 20 77 68 69 6c 65 20 74 61 6b 69 6e 67 20 63 61 while taking ca 0001e5d0: 72 65 20 6f 66 20 70 72 6f 6c 6f 67 75 65 20 64 re of prologue d 0001e5e0: 69 72 65 63 74 69 76 65 73 2e 0a 20 20 20 20 20 irectives.. 0001e5f0: 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 */. function 0001e600: 69 6e 73 65 72 74 53 74 61 74 65 6d 65 6e 74 41 insertStatementA 0001e610: 66 74 65 72 53 74 61 6e 64 61 72 64 50 72 6f 6c fterStandardProl 0001e620: 6f 67 75 65 28 74 6f 2c 20 73 74 61 74 65 6d 65 ogue(to, stateme 0001e630: 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 nt) {. re 0001e640: 74 75 72 6e 20 69 6e 73 65 72 74 53 74 61 74 65 turn insertState 0001e650: 6d 65 6e 74 41 66 74 65 72 50 72 6f 6c 6f 67 75 mentAfterPrologu 0001e660: 65 28 74 6f 2c 20 73 74 61 74 65 6d 65 6e 74 2c e(to, statement, 0001e670: 20 69 73 50 72 6f 6c 6f 67 75 65 44 69 72 65 63 isPrologueDirec 0001e680: 74 69 76 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 tive);. }. 0001e690: 20 74 73 2e 69 6e 73 65 72 74 53 74 61 74 65 6d ts.insertStatem 0001e6a0: 65 6e 74 41 66 74 65 72 53 74 61 6e 64 61 72 64 entAfterStandard 0001e6b0: 50 72 6f 6c 6f 67 75 65 20 3d 20 69 6e 73 65 72 Prologue = inser 0001e6c0: 74 53 74 61 74 65 6d 65 6e 74 41 66 74 65 72 53 tStatementAfterS 0001e6d0: 74 61 6e 64 61 72 64 50 72 6f 6c 6f 67 75 65 3b tandardPrologue; 0001e6e0: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 6e . function in 0001e6f0: 73 65 72 74 53 74 61 74 65 6d 65 6e 74 41 66 74 sertStatementAft 0001e700: 65 72 43 75 73 74 6f 6d 50 72 6f 6c 6f 67 75 65 erCustomPrologue 0001e710: 28 74 6f 2c 20 73 74 61 74 65 6d 65 6e 74 29 20 (to, statement) 0001e720: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 0001e730: 20 69 6e 73 65 72 74 53 74 61 74 65 6d 65 6e 74 insertStatement 0001e740: 41 66 74 65 72 50 72 6f 6c 6f 67 75 65 28 74 6f AfterPrologue(to 0001e750: 2c 20 73 74 61 74 65 6d 65 6e 74 2c 20 69 73 41 , statement, isA 0001e760: 6e 79 50 72 6f 6c 6f 67 75 65 44 69 72 65 63 74 nyPrologueDirect 0001e770: 69 76 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 ive);. }. 0001e780: 74 73 2e 69 6e 73 65 72 74 53 74 61 74 65 6d 65 ts.insertStateme 0001e790: 6e 74 41 66 74 65 72 43 75 73 74 6f 6d 50 72 6f ntAfterCustomPro 0001e7a0: 6c 6f 67 75 65 20 3d 20 69 6e 73 65 72 74 53 74 logue = insertSt 0001e7b0: 61 74 65 6d 65 6e 74 41 66 74 65 72 43 75 73 74 atementAfterCust 0001e7c0: 6f 6d 50 72 6f 6c 6f 67 75 65 3b 0a 20 20 20 20 omPrologue;. 0001e7d0: 2f 2a 2a 0a 20 20 20 20 20 2a 20 44 65 74 65 72 /**. * Deter 0001e7e0: 6d 69 6e 65 20 69 66 20 74 68 65 20 67 69 76 65 mine if the give 0001e7f0: 6e 20 63 6f 6d 6d 65 6e 74 20 69 73 20 61 20 74 n comment is a t 0001e800: 72 69 70 6c 65 2d 73 6c 61 73 68 0a 20 20 20 20 riple-slash. 0001e810: 20 2a 0a 20 20 20 20 20 2a 20 40 72 65 74 75 72 *. * @retur 0001e820: 6e 20 74 72 75 65 20 69 66 20 74 68 65 20 63 6f n true if the co 0001e830: 6d 6d 65 6e 74 20 69 73 20 61 20 74 72 69 70 6c mment is a tripl 0001e840: 65 2d 73 6c 61 73 68 20 63 6f 6d 6d 65 6e 74 20 e-slash comment 0001e850: 65 6c 73 65 20 66 61 6c 73 65 0a 20 20 20 20 20 else false. 0001e860: 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 */. function 0001e870: 69 73 52 65 63 6f 67 6e 69 7a 65 64 54 72 69 70 isRecognizedTrip 0001e880: 6c 65 53 6c 61 73 68 43 6f 6d 6d 65 6e 74 28 74 leSlashComment(t 0001e890: 65 78 74 2c 20 63 6f 6d 6d 65 6e 74 50 6f 73 2c ext, commentPos, 0001e8a0: 20 63 6f 6d 6d 65 6e 74 45 6e 64 29 20 7b 0a 20 commentEnd) {. 0001e8b0: 20 20 20 20 20 20 20 2f 2f 20 56 65 72 69 66 79 // Verify 0001e8c0: 20 74 68 69 73 20 69 73 20 2f 2f 2f 20 63 6f 6d this is /// com 0001e8d0: 6d 65 6e 74 2c 20 62 75 74 20 64 6f 20 74 68 65 ment, but do the 0001e8e0: 20 72 65 67 65 78 70 20 6d 61 74 63 68 20 6f 6e regexp match on 0001e8f0: 6c 79 20 77 68 65 6e 20 77 65 20 66 69 72 73 74 ly when we first 0001e900: 20 63 61 6e 20 66 69 6e 64 20 2f 2f 2f 20 69 6e can find /// in 0001e910: 20 74 68 65 20 63 6f 6d 6d 65 6e 74 20 74 65 78 the comment tex 0001e920: 74 0a 20 20 20 20 20 20 20 20 2f 2f 20 73 6f 20 t. // so 0001e930: 74 68 61 74 20 77 65 20 64 6f 6e 27 74 20 65 6e that we don't en 0001e940: 64 20 75 70 20 63 6f 6d 70 75 74 69 6e 67 20 63 d up computing c 0001e950: 6f 6d 6d 65 6e 74 20 73 74 72 69 6e 67 20 61 6e omment string an 0001e960: 64 20 64 6f 69 6e 67 20 6d 61 74 63 68 20 66 6f d doing match fo 0001e970: 72 20 61 6c 6c 20 2f 2f 20 63 6f 6d 6d 65 6e 74 r all // comment 0001e980: 73 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 65 s. if (te 0001e990: 78 74 2e 63 68 61 72 43 6f 64 65 41 74 28 63 6f xt.charCodeAt(co 0001e9a0: 6d 6d 65 6e 74 50 6f 73 20 2b 20 31 29 20 3d 3d mmentPos + 1) == 0001e9b0: 3d 20 34 37 20 2f 2a 20 43 68 61 72 61 63 74 65 = 47 /* Characte 0001e9c0: 72 43 6f 64 65 73 2e 73 6c 61 73 68 20 2a 2f 20 rCodes.slash */ 0001e9d0: 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 &&. c 0001e9e0: 6f 6d 6d 65 6e 74 50 6f 73 20 2b 20 32 20 3c 20 ommentPos + 2 < 0001e9f0: 63 6f 6d 6d 65 6e 74 45 6e 64 20 26 26 0a 20 20 commentEnd &&. 0001ea00: 20 20 20 20 20 20 20 20 20 20 74 65 78 74 2e 63 text.c 0001ea10: 68 61 72 43 6f 64 65 41 74 28 63 6f 6d 6d 65 6e harCodeAt(commen 0001ea20: 74 50 6f 73 20 2b 20 32 29 20 3d 3d 3d 20 34 37 tPos + 2) === 47 0001ea30: 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 /* CharacterCod 0001ea40: 65 73 2e 73 6c 61 73 68 20 2a 2f 29 20 7b 0a 20 es.slash */) {. 0001ea50: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 74 var t 0001ea60: 65 78 74 53 75 62 53 74 72 20 3d 20 74 65 78 74 extSubStr = text 0001ea70: 2e 73 75 62 73 74 72 69 6e 67 28 63 6f 6d 6d 65 .substring(comme 0001ea80: 6e 74 50 6f 73 2c 20 63 6f 6d 6d 65 6e 74 45 6e ntPos, commentEn 0001ea90: 64 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 d);. 0001eaa0: 72 65 74 75 72 6e 20 74 73 2e 66 75 6c 6c 54 72 return ts.fullTr 0001eab0: 69 70 6c 65 53 6c 61 73 68 52 65 66 65 72 65 6e ipleSlashReferen 0001eac0: 63 65 50 61 74 68 52 65 67 45 78 2e 74 65 73 74 cePathRegEx.test 0001ead0: 28 74 65 78 74 53 75 62 53 74 72 29 20 7c 7c 0a (textSubStr) ||. 0001eae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0001eaf0: 74 73 2e 66 75 6c 6c 54 72 69 70 6c 65 53 6c 61 ts.fullTripleSla 0001eb00: 73 68 41 4d 44 52 65 66 65 72 65 6e 63 65 50 61 shAMDReferencePa 0001eb10: 74 68 52 65 67 45 78 2e 74 65 73 74 28 74 65 78 thRegEx.test(tex 0001eb20: 74 53 75 62 53 74 72 29 20 7c 7c 0a 20 20 20 20 tSubStr) ||. 0001eb30: 20 20 20 20 20 20 20 20 20 20 20 20 66 75 6c 6c full 0001eb40: 54 72 69 70 6c 65 53 6c 61 73 68 52 65 66 65 72 TripleSlashRefer 0001eb50: 65 6e 63 65 54 79 70 65 52 65 66 65 72 65 6e 63 enceTypeReferenc 0001eb60: 65 44 69 72 65 63 74 69 76 65 52 65 67 45 78 2e eDirectiveRegEx. 0001eb70: 74 65 73 74 28 74 65 78 74 53 75 62 53 74 72 29 test(textSubStr) 0001eb80: 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ||. 0001eb90: 20 20 20 20 64 65 66 61 75 6c 74 4c 69 62 52 65 defaultLibRe 0001eba0: 66 65 72 65 6e 63 65 52 65 67 45 78 2e 74 65 73 ferenceRegEx.tes 0001ebb0: 74 28 74 65 78 74 53 75 62 53 74 72 29 20 3f 0a t(textSubStr) ?. 0001ebc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0001ebd0: 74 72 75 65 20 3a 20 66 61 6c 73 65 3b 0a 20 20 true : false;. 0001ebe0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 0001ebf0: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 return false;. 0001ec00: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 52 65 63 }. ts.isRec 0001ec10: 6f 67 6e 69 7a 65 64 54 72 69 70 6c 65 53 6c 61 ognizedTripleSla 0001ec20: 73 68 43 6f 6d 6d 65 6e 74 20 3d 20 69 73 52 65 shComment = isRe 0001ec30: 63 6f 67 6e 69 7a 65 64 54 72 69 70 6c 65 53 6c cognizedTripleSl 0001ec40: 61 73 68 43 6f 6d 6d 65 6e 74 3b 0a 20 20 20 20 ashComment;. 0001ec50: 66 75 6e 63 74 69 6f 6e 20 69 73 50 69 6e 6e 65 function isPinne 0001ec60: 64 43 6f 6d 6d 65 6e 74 28 74 65 78 74 2c 20 73 dComment(text, s 0001ec70: 74 61 72 74 29 20 7b 0a 20 20 20 20 20 20 20 20 tart) {. 0001ec80: 72 65 74 75 72 6e 20 74 65 78 74 2e 63 68 61 72 return text.char 0001ec90: 43 6f 64 65 41 74 28 73 74 61 72 74 20 2b 20 31 CodeAt(start + 1 0001eca0: 29 20 3d 3d 3d 20 34 32 20 2f 2a 20 43 68 61 72 ) === 42 /* Char 0001ecb0: 61 63 74 65 72 43 6f 64 65 73 2e 61 73 74 65 72 acterCodes.aster 0001ecc0: 69 73 6b 20 2a 2f 20 26 26 0a 20 20 20 20 20 20 isk */ &&. 0001ecd0: 20 20 20 20 20 20 74 65 78 74 2e 63 68 61 72 43 text.charC 0001ece0: 6f 64 65 41 74 28 73 74 61 72 74 20 2b 20 32 29 odeAt(start + 2) 0001ecf0: 20 3d 3d 3d 20 33 33 20 2f 2a 20 43 68 61 72 61 === 33 /* Chara 0001ed00: 63 74 65 72 43 6f 64 65 73 2e 65 78 63 6c 61 6d cterCodes.exclam 0001ed10: 61 74 69 6f 6e 20 2a 2f 3b 0a 20 20 20 20 7d 0a ation */;. }. 0001ed20: 20 20 20 20 74 73 2e 69 73 50 69 6e 6e 65 64 43 ts.isPinnedC 0001ed30: 6f 6d 6d 65 6e 74 20 3d 20 69 73 50 69 6e 6e 65 omment = isPinne 0001ed40: 64 43 6f 6d 6d 65 6e 74 3b 0a 20 20 20 20 66 75 dComment;. fu 0001ed50: 6e 63 74 69 6f 6e 20 63 72 65 61 74 65 43 6f 6d nction createCom 0001ed60: 6d 65 6e 74 44 69 72 65 63 74 69 76 65 73 4d 61 mentDirectivesMa 0001ed70: 70 28 73 6f 75 72 63 65 46 69 6c 65 2c 20 63 6f p(sourceFile, co 0001ed80: 6d 6d 65 6e 74 44 69 72 65 63 74 69 76 65 73 29 mmentDirectives) 0001ed90: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 64 {. var d 0001eda0: 69 72 65 63 74 69 76 65 73 42 79 4c 69 6e 65 20 irectivesByLine 0001edb0: 3d 20 6e 65 77 20 74 73 2e 4d 61 70 28 63 6f 6d = new ts.Map(com 0001edc0: 6d 65 6e 74 44 69 72 65 63 74 69 76 65 73 2e 6d mentDirectives.m 0001edd0: 61 70 28 66 75 6e 63 74 69 6f 6e 20 28 63 6f 6d ap(function (com 0001ede0: 6d 65 6e 74 44 69 72 65 63 74 69 76 65 29 20 7b mentDirective) { 0001edf0: 20 72 65 74 75 72 6e 20 28 5b 0a 20 20 20 20 20 return ([. 0001ee00: 20 20 20 20 20 20 20 22 22 2e 63 6f 6e 63 61 74 "".concat 0001ee10: 28 74 73 2e 67 65 74 4c 69 6e 65 41 6e 64 43 68 (ts.getLineAndCh 0001ee20: 61 72 61 63 74 65 72 4f 66 50 6f 73 69 74 69 6f aracterOfPositio 0001ee30: 6e 28 73 6f 75 72 63 65 46 69 6c 65 2c 20 63 6f n(sourceFile, co 0001ee40: 6d 6d 65 6e 74 44 69 72 65 63 74 69 76 65 2e 72 mmentDirective.r 0001ee50: 61 6e 67 65 2e 65 6e 64 29 2e 6c 69 6e 65 29 2c ange.end).line), 0001ee60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6d . com 0001ee70: 6d 65 6e 74 44 69 72 65 63 74 69 76 65 2c 0a 20 mentDirective,. 0001ee80: 20 20 20 20 20 20 20 5d 29 3b 20 7d 29 29 3b 0a ]); }));. 0001ee90: 20 20 20 20 20 20 20 20 76 61 72 20 75 73 65 64 var used 0001eea0: 4c 69 6e 65 73 20 3d 20 6e 65 77 20 74 73 2e 4d Lines = new ts.M 0001eeb0: 61 70 28 29 3b 0a 20 20 20 20 20 20 20 20 72 65 ap();. re 0001eec0: 74 75 72 6e 20 7b 20 67 65 74 55 6e 75 73 65 64 turn { getUnused 0001eed0: 45 78 70 65 63 74 61 74 69 6f 6e 73 3a 20 67 65 Expectations: ge 0001eee0: 74 55 6e 75 73 65 64 45 78 70 65 63 74 61 74 69 tUnusedExpectati 0001eef0: 6f 6e 73 2c 20 6d 61 72 6b 55 73 65 64 3a 20 6d ons, markUsed: m 0001ef00: 61 72 6b 55 73 65 64 20 7d 3b 0a 20 20 20 20 20 arkUsed };. 0001ef10: 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 55 function getU 0001ef20: 6e 75 73 65 64 45 78 70 65 63 74 61 74 69 6f 6e nusedExpectation 0001ef30: 73 28 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 s() {. 0001ef40: 20 20 72 65 74 75 72 6e 20 74 73 2e 61 72 72 61 return ts.arra 0001ef50: 79 46 72 6f 6d 28 64 69 72 65 63 74 69 76 65 73 yFrom(directives 0001ef60: 42 79 4c 69 6e 65 2e 65 6e 74 72 69 65 73 28 29 ByLine.entries() 0001ef70: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ). 0001ef80: 20 20 2e 66 69 6c 74 65 72 28 66 75 6e 63 74 69 .filter(functi 0001ef90: 6f 6e 20 28 5f 61 29 20 7b 0a 20 20 20 20 20 20 on (_a) {. 0001efa0: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 6c 69 var li 0001efb0: 6e 65 20 3d 20 5f 61 5b 30 5d 2c 20 64 69 72 65 ne = _a[0], dire 0001efc0: 63 74 69 76 65 20 3d 20 5f 61 5b 31 5d 3b 0a 20 ctive = _a[1];. 0001efd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 0001efe0: 65 74 75 72 6e 20 64 69 72 65 63 74 69 76 65 2e eturn directive. 0001eff0: 74 79 70 65 20 3d 3d 3d 20 30 20 2f 2a 20 43 6f type === 0 /* Co 0001f000: 6d 6d 65 6e 74 44 69 72 65 63 74 69 76 65 54 79 mmentDirectiveTy 0001f010: 70 65 2e 45 78 70 65 63 74 45 72 72 6f 72 20 2a pe.ExpectError * 0001f020: 2f 20 26 26 20 21 75 73 65 64 4c 69 6e 65 73 2e / && !usedLines. 0001f030: 67 65 74 28 6c 69 6e 65 29 3b 0a 20 20 20 20 20 get(line);. 0001f040: 20 20 20 20 20 20 20 7d 29 0a 20 20 20 20 20 20 }). 0001f050: 20 20 20 20 20 20 20 20 20 20 2e 6d 61 70 28 66 .map(f 0001f060: 75 6e 63 74 69 6f 6e 20 28 5f 61 29 20 7b 0a 20 unction (_a) {. 0001f070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 v 0001f080: 61 72 20 5f 20 3d 20 5f 61 5b 30 5d 2c 20 64 69 ar _ = _a[0], di 0001f090: 72 65 63 74 69 76 65 20 3d 20 5f 61 5b 31 5d 3b rective = _a[1]; 0001f0a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0001f0b0: 20 72 65 74 75 72 6e 20 64 69 72 65 63 74 69 76 return directiv 0001f0c0: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d e;. } 0001f0d0: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 );. }. 0001f0e0: 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 6d 61 function ma 0001f0f0: 72 6b 55 73 65 64 28 6c 69 6e 65 29 20 7b 0a 20 rkUsed(line) {. 0001f100: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 if (! 0001f110: 64 69 72 65 63 74 69 76 65 73 42 79 4c 69 6e 65 directivesByLine 0001f120: 2e 68 61 73 28 22 22 2e 63 6f 6e 63 61 74 28 6c .has("".concat(l 0001f130: 69 6e 65 29 29 29 20 7b 0a 20 20 20 20 20 20 20 ine))) {. 0001f140: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 0001f150: 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 20 false;. 0001f160: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 0001f170: 20 75 73 65 64 4c 69 6e 65 73 2e 73 65 74 28 22 usedLines.set(" 0001f180: 22 2e 63 6f 6e 63 61 74 28 6c 69 6e 65 29 2c 20 ".concat(line), 0001f190: 74 72 75 65 29 3b 0a 20 20 20 20 20 20 20 20 20 true);. 0001f1a0: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a return true;. 0001f1b0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a }. }. 0001f1c0: 20 20 20 20 74 73 2e 63 72 65 61 74 65 43 6f 6d ts.createCom 0001f1d0: 6d 65 6e 74 44 69 72 65 63 74 69 76 65 73 4d 61 mentDirectivesMa 0001f1e0: 70 20 3d 20 63 72 65 61 74 65 43 6f 6d 6d 65 6e p = createCommen 0001f1f0: 74 44 69 72 65 63 74 69 76 65 73 4d 61 70 3b 0a tDirectivesMap;. 0001f200: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 function get 0001f210: 54 6f 6b 65 6e 50 6f 73 4f 66 4e 6f 64 65 28 6e TokenPosOfNode(n 0001f220: 6f 64 65 2c 20 73 6f 75 72 63 65 46 69 6c 65 2c ode, sourceFile, 0001f230: 20 69 6e 63 6c 75 64 65 4a 73 44 6f 63 29 20 7b includeJsDoc) { 0001f240: 0a 20 20 20 20 20 20 20 20 2f 2f 20 57 69 74 68 . // With 0001f250: 20 6e 6f 64 65 73 20 74 68 61 74 20 68 61 76 65 nodes that have 0001f260: 20 6e 6f 20 77 69 64 74 68 20 28 69 2e 65 2e 20 no width (i.e. 0001f270: 27 4d 69 73 73 69 6e 67 27 20 6e 6f 64 65 73 29 'Missing' nodes) 0001f280: 2c 20 77 65 20 61 63 74 75 61 6c 6c 79 20 2a 64 , we actually *d 0001f290: 6f 6e 27 74 2a 0a 20 20 20 20 20 20 20 20 2f 2f on't*. // 0001f2a0: 20 77 61 6e 74 20 74 6f 20 73 6b 69 70 20 74 72 want to skip tr 0001f2b0: 69 76 69 61 20 62 65 63 61 75 73 65 20 74 68 69 ivia because thi 0001f2c0: 73 20 77 69 6c 6c 20 6c 61 75 6e 63 68 20 75 73 s will launch us 0001f2d0: 20 66 6f 72 77 61 72 64 20 74 6f 20 74 68 65 20 forward to the 0001f2e0: 6e 65 78 74 20 74 6f 6b 65 6e 2e 0a 20 20 20 20 next token.. 0001f2f0: 20 20 20 20 69 66 20 28 6e 6f 64 65 49 73 4d 69 if (nodeIsMi 0001f300: 73 73 69 6e 67 28 6e 6f 64 65 29 29 20 7b 0a 20 ssing(node)) {. 0001f310: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0001f320: 6e 20 6e 6f 64 65 2e 70 6f 73 3b 0a 20 20 20 20 n node.pos;. 0001f330: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 }. if 0001f340: 20 28 74 73 2e 69 73 4a 53 44 6f 63 4e 6f 64 65 (ts.isJSDocNode 0001f350: 28 6e 6f 64 65 29 20 7c 7c 20 6e 6f 64 65 2e 6b (node) || node.k 0001f360: 69 6e 64 20 3d 3d 3d 20 31 31 20 2f 2a 20 53 79 ind === 11 /* Sy 0001f370: 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 54 65 78 74 ntaxKind.JsxText 0001f380: 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 20 20 */) {. 0001f390: 20 20 20 2f 2f 20 4a 73 78 54 65 78 74 20 63 61 // JsxText ca 0001f3a0: 6e 6e 6f 74 20 61 63 74 75 61 6c 6c 79 20 63 6f nnot actually co 0001f3b0: 6e 74 61 69 6e 20 63 6f 6d 6d 65 6e 74 73 2c 20 ntain comments, 0001f3c0: 65 76 65 6e 20 74 68 6f 75 67 68 20 74 68 65 20 even though the 0001f3d0: 73 63 61 6e 6e 65 72 20 77 69 6c 6c 20 74 68 69 scanner will thi 0001f3e0: 6e 6b 20 69 74 20 73 65 65 73 20 63 6f 6d 6d 65 nk it sees comme 0001f3f0: 6e 74 73 0a 20 20 20 20 20 20 20 20 20 20 20 20 nts. 0001f400: 72 65 74 75 72 6e 20 74 73 2e 73 6b 69 70 54 72 return ts.skipTr 0001f410: 69 76 69 61 28 28 73 6f 75 72 63 65 46 69 6c 65 ivia((sourceFile 0001f420: 20 7c 7c 20 67 65 74 53 6f 75 72 63 65 46 69 6c || getSourceFil 0001f430: 65 4f 66 4e 6f 64 65 28 6e 6f 64 65 29 29 2e 74 eOfNode(node)).t 0001f440: 65 78 74 2c 20 6e 6f 64 65 2e 70 6f 73 2c 20 2f ext, node.pos, / 0001f450: 2a 73 74 6f 70 41 66 74 65 72 4c 69 6e 65 42 72 *stopAfterLineBr 0001f460: 65 61 6b 2a 2f 20 66 61 6c 73 65 2c 20 2f 2a 73 eak*/ false, /*s 0001f470: 74 6f 70 41 74 43 6f 6d 6d 65 6e 74 73 2a 2f 20 topAtComments*/ 0001f480: 74 72 75 65 29 3b 0a 20 20 20 20 20 20 20 20 7d true);. } 0001f490: 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 63 . if (inc 0001f4a0: 6c 75 64 65 4a 73 44 6f 63 20 26 26 20 74 73 2e ludeJsDoc && ts. 0001f4b0: 68 61 73 4a 53 44 6f 63 4e 6f 64 65 73 28 6e 6f hasJSDocNodes(no 0001f4c0: 64 65 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 de)) {. 0001f4d0: 20 20 20 72 65 74 75 72 6e 20 67 65 74 54 6f 6b return getTok 0001f4e0: 65 6e 50 6f 73 4f 66 4e 6f 64 65 28 6e 6f 64 65 enPosOfNode(node 0001f4f0: 2e 6a 73 44 6f 63 5b 30 5d 2c 20 73 6f 75 72 63 .jsDoc[0], sourc 0001f500: 65 46 69 6c 65 29 3b 0a 20 20 20 20 20 20 20 20 eFile);. 0001f510: 7d 0a 20 20 20 20 20 20 20 20 2f 2f 20 46 6f 72 }. // For 0001f520: 20 61 20 73 79 6e 74 61 78 20 6c 69 73 74 2c 20 a syntax list, 0001f530: 69 74 20 69 73 20 70 6f 73 73 69 62 6c 65 20 74 it is possible t 0001f540: 68 61 74 20 6f 6e 65 20 6f 66 20 69 74 73 20 63 hat one of its c 0001f550: 68 69 6c 64 72 65 6e 20 68 61 73 20 4a 53 44 6f hildren has JSDo 0001f560: 63 43 6f 6d 6d 65 6e 74 20 6e 6f 64 65 73 2c 20 cComment nodes, 0001f570: 77 68 69 6c 65 0a 20 20 20 20 20 20 20 20 2f 2f while. // 0001f580: 20 74 68 65 20 73 79 6e 74 61 78 20 6c 69 73 74 the syntax list 0001f590: 20 69 74 73 65 6c 66 20 63 6f 6e 73 69 64 65 72 itself consider 0001f5a0: 73 20 74 68 65 6d 20 61 73 20 6e 6f 72 6d 61 6c s them as normal 0001f5b0: 20 74 72 69 76 69 61 2e 20 54 68 65 72 65 66 6f trivia. Therefo 0001f5c0: 72 65 20 69 66 20 77 65 20 73 69 6d 70 6c 79 20 re if we simply 0001f5d0: 73 6b 69 70 0a 20 20 20 20 20 20 20 20 2f 2f 20 skip. // 0001f5e0: 74 72 69 76 69 61 20 66 6f 72 20 74 68 65 20 6c trivia for the l 0001f5f0: 69 73 74 2c 20 77 65 20 6d 61 79 20 68 61 76 65 ist, we may have 0001f600: 20 73 6b 69 70 70 65 64 20 74 68 65 20 4a 53 44 skipped the JSD 0001f610: 6f 63 43 6f 6d 6d 65 6e 74 20 61 73 20 77 65 6c ocComment as wel 0001f620: 6c 2e 20 53 6f 20 77 65 20 73 68 6f 75 6c 64 20 l. So we should 0001f630: 70 72 6f 63 65 73 73 20 69 74 73 0a 20 20 20 20 process its. 0001f640: 20 20 20 20 2f 2f 20 66 69 72 73 74 20 63 68 69 // first chi 0001f650: 6c 64 20 74 6f 20 64 65 74 65 72 6d 69 6e 65 20 ld to determine 0001f660: 74 68 65 20 61 63 74 75 61 6c 20 70 6f 73 69 74 the actual posit 0001f670: 69 6f 6e 20 6f 66 20 69 74 73 20 66 69 72 73 74 ion of its first 0001f680: 20 74 6f 6b 65 6e 2e 0a 20 20 20 20 20 20 20 20 token.. 0001f690: 69 66 20 28 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d if (node.kind == 0001f6a0: 3d 20 33 34 38 20 2f 2a 20 53 79 6e 74 61 78 4b = 348 /* SyntaxK 0001f6b0: 69 6e 64 2e 53 79 6e 74 61 78 4c 69 73 74 20 2a ind.SyntaxList * 0001f6c0: 2f 20 26 26 20 6e 6f 64 65 2e 5f 63 68 69 6c 64 / && node._child 0001f6d0: 72 65 6e 2e 6c 65 6e 67 74 68 20 3e 20 30 29 20 ren.length > 0) 0001f6e0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 {. re 0001f6f0: 74 75 72 6e 20 67 65 74 54 6f 6b 65 6e 50 6f 73 turn getTokenPos 0001f700: 4f 66 4e 6f 64 65 28 6e 6f 64 65 2e 5f 63 68 69 OfNode(node._chi 0001f710: 6c 64 72 65 6e 5b 30 5d 2c 20 73 6f 75 72 63 65 ldren[0], source 0001f720: 46 69 6c 65 2c 20 69 6e 63 6c 75 64 65 4a 73 44 File, includeJsD 0001f730: 6f 63 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 oc);. }. 0001f740: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 return ts 0001f750: 2e 73 6b 69 70 54 72 69 76 69 61 28 28 73 6f 75 .skipTrivia((sou 0001f760: 72 63 65 46 69 6c 65 20 7c 7c 20 67 65 74 53 6f rceFile || getSo 0001f770: 75 72 63 65 46 69 6c 65 4f 66 4e 6f 64 65 28 6e urceFileOfNode(n 0001f780: 6f 64 65 29 29 2e 74 65 78 74 2c 20 6e 6f 64 65 ode)).text, node 0001f790: 2e 70 6f 73 2c 20 0a 20 20 20 20 20 20 20 20 2f .pos, . / 0001f7a0: 2a 73 74 6f 70 41 66 74 65 72 4c 69 6e 65 42 72 *stopAfterLineBr 0001f7b0: 65 61 6b 2a 2f 20 66 61 6c 73 65 2c 20 0a 20 20 eak*/ false, . 0001f7c0: 20 20 20 20 20 20 2f 2a 73 74 6f 70 41 74 43 6f /*stopAtCo 0001f7d0: 6d 6d 65 6e 74 73 2a 2f 20 66 61 6c 73 65 2c 20 mments*/ false, 0001f7e0: 69 73 49 6e 4a 53 44 6f 63 28 6e 6f 64 65 29 29 isInJSDoc(node)) 0001f7f0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 ;. }. ts.g 0001f800: 65 74 54 6f 6b 65 6e 50 6f 73 4f 66 4e 6f 64 65 etTokenPosOfNode 0001f810: 20 3d 20 67 65 74 54 6f 6b 65 6e 50 6f 73 4f 66 = getTokenPosOf 0001f820: 4e 6f 64 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 Node;. functi 0001f830: 6f 6e 20 67 65 74 4e 6f 6e 44 65 63 6f 72 61 74 on getNonDecorat 0001f840: 6f 72 54 6f 6b 65 6e 50 6f 73 4f 66 4e 6f 64 65 orTokenPosOfNode 0001f850: 28 6e 6f 64 65 2c 20 73 6f 75 72 63 65 46 69 6c (node, sourceFil 0001f860: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 e) {. var 0001f870: 20 6c 61 73 74 44 65 63 6f 72 61 74 6f 72 20 3d lastDecorator = 0001f880: 20 21 6e 6f 64 65 49 73 4d 69 73 73 69 6e 67 28 !nodeIsMissing( 0001f890: 6e 6f 64 65 29 20 26 26 20 74 73 2e 63 61 6e 48 node) && ts.canH 0001f8a0: 61 76 65 4d 6f 64 69 66 69 65 72 73 28 6e 6f 64 aveModifiers(nod 0001f8b0: 65 29 20 3f 20 74 73 2e 66 69 6e 64 4c 61 73 74 e) ? ts.findLast 0001f8c0: 28 6e 6f 64 65 2e 6d 6f 64 69 66 69 65 72 73 2c (node.modifiers, 0001f8d0: 20 74 73 2e 69 73 44 65 63 6f 72 61 74 6f 72 29 ts.isDecorator) 0001f8e0: 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 : undefined;. 0001f8f0: 20 20 20 20 20 20 69 66 20 28 21 6c 61 73 74 44 if (!lastD 0001f900: 65 63 6f 72 61 74 6f 72 29 20 7b 0a 20 20 20 20 ecorator) {. 0001f910: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 return g 0001f920: 65 74 54 6f 6b 65 6e 50 6f 73 4f 66 4e 6f 64 65 etTokenPosOfNode 0001f930: 28 6e 6f 64 65 2c 20 73 6f 75 72 63 65 46 69 6c (node, sourceFil 0001f940: 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 e);. }. 0001f950: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 0001f960: 73 6b 69 70 54 72 69 76 69 61 28 28 73 6f 75 72 skipTrivia((sour 0001f970: 63 65 46 69 6c 65 20 7c 7c 20 67 65 74 53 6f 75 ceFile || getSou 0001f980: 72 63 65 46 69 6c 65 4f 66 4e 6f 64 65 28 6e 6f rceFileOfNode(no 0001f990: 64 65 29 29 2e 74 65 78 74 2c 20 6c 61 73 74 44 de)).text, lastD 0001f9a0: 65 63 6f 72 61 74 6f 72 2e 65 6e 64 29 3b 0a 20 ecorator.end);. 0001f9b0: 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4e }. ts.getN 0001f9c0: 6f 6e 44 65 63 6f 72 61 74 6f 72 54 6f 6b 65 6e onDecoratorToken 0001f9d0: 50 6f 73 4f 66 4e 6f 64 65 20 3d 20 67 65 74 4e PosOfNode = getN 0001f9e0: 6f 6e 44 65 63 6f 72 61 74 6f 72 54 6f 6b 65 6e onDecoratorToken 0001f9f0: 50 6f 73 4f 66 4e 6f 64 65 3b 0a 20 20 20 20 66 PosOfNode;. f 0001fa00: 75 6e 63 74 69 6f 6e 20 67 65 74 53 6f 75 72 63 unction getSourc 0001fa10: 65 54 65 78 74 4f 66 4e 6f 64 65 46 72 6f 6d 53 eTextOfNodeFromS 0001fa20: 6f 75 72 63 65 46 69 6c 65 28 73 6f 75 72 63 65 ourceFile(source 0001fa30: 46 69 6c 65 2c 20 6e 6f 64 65 2c 20 69 6e 63 6c File, node, incl 0001fa40: 75 64 65 54 72 69 76 69 61 29 20 7b 0a 20 20 20 udeTrivia) {. 0001fa50: 20 20 20 20 20 69 66 20 28 69 6e 63 6c 75 64 65 if (include 0001fa60: 54 72 69 76 69 61 20 3d 3d 3d 20 76 6f 69 64 20 Trivia === void 0001fa70: 30 29 20 7b 20 69 6e 63 6c 75 64 65 54 72 69 76 0) { includeTriv 0001fa80: 69 61 20 3d 20 66 61 6c 73 65 3b 20 7d 0a 20 20 ia = false; }. 0001fa90: 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 return get 0001faa0: 54 65 78 74 4f 66 4e 6f 64 65 46 72 6f 6d 53 6f TextOfNodeFromSo 0001fab0: 75 72 63 65 54 65 78 74 28 73 6f 75 72 63 65 46 urceText(sourceF 0001fac0: 69 6c 65 2e 74 65 78 74 2c 20 6e 6f 64 65 2c 20 ile.text, node, 0001fad0: 69 6e 63 6c 75 64 65 54 72 69 76 69 61 29 3b 0a includeTrivia);. 0001fae0: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 }. ts.get 0001faf0: 53 6f 75 72 63 65 54 65 78 74 4f 66 4e 6f 64 65 SourceTextOfNode 0001fb00: 46 72 6f 6d 53 6f 75 72 63 65 46 69 6c 65 20 3d FromSourceFile = 0001fb10: 20 67 65 74 53 6f 75 72 63 65 54 65 78 74 4f 66 getSourceTextOf 0001fb20: 4e 6f 64 65 46 72 6f 6d 53 6f 75 72 63 65 46 69 NodeFromSourceFi 0001fb30: 6c 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e le;. function 0001fb40: 20 69 73 4a 53 44 6f 63 54 79 70 65 45 78 70 72 isJSDocTypeExpr 0001fb50: 65 73 73 69 6f 6e 4f 72 43 68 69 6c 64 28 6e 6f essionOrChild(no 0001fb60: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 de) {. re 0001fb70: 74 75 72 6e 20 21 21 74 73 2e 66 69 6e 64 41 6e turn !!ts.findAn 0001fb80: 63 65 73 74 6f 72 28 6e 6f 64 65 2c 20 74 73 2e cestor(node, ts. 0001fb90: 69 73 4a 53 44 6f 63 54 79 70 65 45 78 70 72 65 isJSDocTypeExpre 0001fba0: 73 73 69 6f 6e 29 3b 0a 20 20 20 20 7d 0a 20 20 ssion);. }. 0001fbb0: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 45 78 70 function isExp 0001fbc0: 6f 72 74 4e 61 6d 65 73 70 61 63 65 41 73 44 65 ortNamespaceAsDe 0001fbd0: 66 61 75 6c 74 44 65 63 6c 61 72 61 74 69 6f 6e faultDeclaration 0001fbe0: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 0001fbf0: 20 72 65 74 75 72 6e 20 21 21 28 74 73 2e 69 73 return !!(ts.is 0001fc00: 45 78 70 6f 72 74 44 65 63 6c 61 72 61 74 69 6f ExportDeclaratio 0001fc10: 6e 28 6e 6f 64 65 29 20 26 26 20 6e 6f 64 65 2e n(node) && node. 0001fc20: 65 78 70 6f 72 74 43 6c 61 75 73 65 20 26 26 20 exportClause && 0001fc30: 74 73 2e 69 73 4e 61 6d 65 73 70 61 63 65 45 78 ts.isNamespaceEx 0001fc40: 70 6f 72 74 28 6e 6f 64 65 2e 65 78 70 6f 72 74 port(node.export 0001fc50: 43 6c 61 75 73 65 29 20 26 26 20 6e 6f 64 65 2e Clause) && node. 0001fc60: 65 78 70 6f 72 74 43 6c 61 75 73 65 2e 6e 61 6d exportClause.nam 0001fc70: 65 2e 65 73 63 61 70 65 64 54 65 78 74 20 3d 3d e.escapedText == 0001fc80: 3d 20 22 64 65 66 61 75 6c 74 22 29 3b 0a 20 20 = "default");. 0001fc90: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 45 78 70 }. ts.isExp 0001fca0: 6f 72 74 4e 61 6d 65 73 70 61 63 65 41 73 44 65 ortNamespaceAsDe 0001fcb0: 66 61 75 6c 74 44 65 63 6c 61 72 61 74 69 6f 6e faultDeclaration 0001fcc0: 20 3d 20 69 73 45 78 70 6f 72 74 4e 61 6d 65 73 = isExportNames 0001fcd0: 70 61 63 65 41 73 44 65 66 61 75 6c 74 44 65 63 paceAsDefaultDec 0001fce0: 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 20 66 75 laration;. fu 0001fcf0: 6e 63 74 69 6f 6e 20 67 65 74 54 65 78 74 4f 66 nction getTextOf 0001fd00: 4e 6f 64 65 46 72 6f 6d 53 6f 75 72 63 65 54 65 NodeFromSourceTe 0001fd10: 78 74 28 73 6f 75 72 63 65 54 65 78 74 2c 20 6e xt(sourceText, n 0001fd20: 6f 64 65 2c 20 69 6e 63 6c 75 64 65 54 72 69 76 ode, includeTriv 0001fd30: 69 61 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 ia) {. if 0001fd40: 20 28 69 6e 63 6c 75 64 65 54 72 69 76 69 61 20 (includeTrivia 0001fd50: 3d 3d 3d 20 76 6f 69 64 20 30 29 20 7b 20 69 6e === void 0) { in 0001fd60: 63 6c 75 64 65 54 72 69 76 69 61 20 3d 20 66 61 cludeTrivia = fa 0001fd70: 6c 73 65 3b 20 7d 0a 20 20 20 20 20 20 20 20 69 lse; }. i 0001fd80: 66 20 28 6e 6f 64 65 49 73 4d 69 73 73 69 6e 67 f (nodeIsMissing 0001fd90: 28 6e 6f 64 65 29 29 20 7b 0a 20 20 20 20 20 20 (node)) {. 0001fda0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 22 22 3b return ""; 0001fdb0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }. 0001fdc0: 20 20 20 76 61 72 20 74 65 78 74 20 3d 20 73 6f var text = so 0001fdd0: 75 72 63 65 54 65 78 74 2e 73 75 62 73 74 72 69 urceText.substri 0001fde0: 6e 67 28 69 6e 63 6c 75 64 65 54 72 69 76 69 61 ng(includeTrivia 0001fdf0: 20 3f 20 6e 6f 64 65 2e 70 6f 73 20 3a 20 74 73 ? node.pos : ts 0001fe00: 2e 73 6b 69 70 54 72 69 76 69 61 28 73 6f 75 72 .skipTrivia(sour 0001fe10: 63 65 54 65 78 74 2c 20 6e 6f 64 65 2e 70 6f 73 ceText, node.pos 0001fe20: 29 2c 20 6e 6f 64 65 2e 65 6e 64 29 3b 0a 20 20 ), node.end);. 0001fe30: 20 20 20 20 20 20 69 66 20 28 69 73 4a 53 44 6f if (isJSDo 0001fe40: 63 54 79 70 65 45 78 70 72 65 73 73 69 6f 6e 4f cTypeExpressionO 0001fe50: 72 43 68 69 6c 64 28 6e 6f 64 65 29 29 20 7b 0a rChild(node)) {. 0001fe60: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 73 // s 0001fe70: 74 72 69 70 20 73 70 61 63 65 20 2b 20 61 73 74 trip space + ast 0001fe80: 65 72 69 73 6b 20 61 74 20 6c 69 6e 65 20 73 74 erisk at line st 0001fe90: 61 72 74 0a 20 20 20 20 20 20 20 20 20 20 20 20 art. 0001fea0: 74 65 78 74 20 3d 20 74 65 78 74 2e 73 70 6c 69 text = text.spli 0001feb0: 74 28 2f 5c 72 5c 6e 7c 5c 6e 7c 5c 72 2f 29 2e t(/\r\n|\n|\r/). 0001fec0: 6d 61 70 28 66 75 6e 63 74 69 6f 6e 20 28 6c 69 map(function (li 0001fed0: 6e 65 29 20 7b 20 72 65 74 75 72 6e 20 74 73 2e ne) { return ts. 0001fee0: 74 72 69 6d 53 74 72 69 6e 67 53 74 61 72 74 28 trimStringStart( 0001fef0: 6c 69 6e 65 2e 72 65 70 6c 61 63 65 28 2f 5e 5c line.replace(/^\ 0001ff00: 73 2a 5c 2a 2f 2c 20 22 22 29 29 3b 20 7d 29 2e s*\*/, "")); }). 0001ff10: 6a 6f 69 6e 28 22 5c 6e 22 29 3b 0a 20 20 20 20 join("\n");. 0001ff20: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 }. re 0001ff30: 74 75 72 6e 20 74 65 78 74 3b 0a 20 20 20 20 7d turn text;. } 0001ff40: 0a 20 20 20 20 74 73 2e 67 65 74 54 65 78 74 4f . ts.getTextO 0001ff50: 66 4e 6f 64 65 46 72 6f 6d 53 6f 75 72 63 65 54 fNodeFromSourceT 0001ff60: 65 78 74 20 3d 20 67 65 74 54 65 78 74 4f 66 4e ext = getTextOfN 0001ff70: 6f 64 65 46 72 6f 6d 53 6f 75 72 63 65 54 65 78 odeFromSourceTex 0001ff80: 74 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 t;. function 0001ff90: 67 65 74 54 65 78 74 4f 66 4e 6f 64 65 28 6e 6f getTextOfNode(no 0001ffa0: 64 65 2c 20 69 6e 63 6c 75 64 65 54 72 69 76 69 de, includeTrivi 0001ffb0: 61 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 a) {. if 0001ffc0: 28 69 6e 63 6c 75 64 65 54 72 69 76 69 61 20 3d (includeTrivia = 0001ffd0: 3d 3d 20 76 6f 69 64 20 30 29 20 7b 20 69 6e 63 == void 0) { inc 0001ffe0: 6c 75 64 65 54 72 69 76 69 61 20 3d 20 66 61 6c ludeTrivia = fal 0001fff0: 73 65 3b 20 7d 0a 20 20 20 20 20 20 20 20 72 65 se; }. re 00020000: 74 75 72 6e 20 67 65 74 53 6f 75 72 63 65 54 65 turn getSourceTe 00020010: 78 74 4f 66 4e 6f 64 65 46 72 6f 6d 53 6f 75 72 xtOfNodeFromSour 00020020: 63 65 46 69 6c 65 28 67 65 74 53 6f 75 72 63 65 ceFile(getSource 00020030: 46 69 6c 65 4f 66 4e 6f 64 65 28 6e 6f 64 65 29 FileOfNode(node) 00020040: 2c 20 6e 6f 64 65 2c 20 69 6e 63 6c 75 64 65 54 , node, includeT 00020050: 72 69 76 69 61 29 3b 0a 20 20 20 20 7d 0a 20 20 rivia);. }. 00020060: 20 20 74 73 2e 67 65 74 54 65 78 74 4f 66 4e 6f ts.getTextOfNo 00020070: 64 65 20 3d 20 67 65 74 54 65 78 74 4f 66 4e 6f de = getTextOfNo 00020080: 64 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e de;. function 00020090: 20 67 65 74 50 6f 73 28 72 61 6e 67 65 29 20 7b getPos(range) { 000200a0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 000200b0: 72 61 6e 67 65 2e 70 6f 73 3b 0a 20 20 20 20 7d range.pos;. } 000200c0: 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 . /**. * 000200d0: 4e 6f 74 65 3a 20 69 74 20 69 73 20 65 78 70 65 Note: it is expe 000200e0: 63 74 65 64 20 74 68 61 74 20 74 68 65 20 60 6e cted that the `n 000200f0: 6f 64 65 41 72 72 61 79 60 20 61 6e 64 20 74 68 odeArray` and th 00020100: 65 20 60 6e 6f 64 65 60 20 61 72 65 20 77 69 74 e `node` are wit 00020110: 68 69 6e 20 74 68 65 20 73 61 6d 65 20 66 69 6c hin the same fil 00020120: 65 2e 0a 20 20 20 20 20 2a 20 46 6f 72 20 65 78 e.. * For ex 00020130: 61 6d 70 6c 65 2c 20 73 65 61 72 63 68 69 6e 67 ample, searching 00020140: 20 66 6f 72 20 61 20 60 53 6f 75 72 63 65 46 69 for a `SourceFi 00020150: 6c 65 60 20 69 6e 20 61 20 60 53 6f 75 72 63 65 le` in a `Source 00020160: 46 69 6c 65 5b 5d 60 20 77 6f 75 6c 64 6e 27 74 File[]` wouldn't 00020170: 20 77 6f 72 6b 2e 0a 20 20 20 20 20 2a 2f 0a 20 work.. */. 00020180: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 6e 64 65 function inde 00020190: 78 4f 66 4e 6f 64 65 28 6e 6f 64 65 41 72 72 61 xOfNode(nodeArra 000201a0: 79 2c 20 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 y, node) {. 000201b0: 20 20 20 72 65 74 75 72 6e 20 74 73 2e 62 69 6e return ts.bin 000201c0: 61 72 79 53 65 61 72 63 68 28 6e 6f 64 65 41 72 arySearch(nodeAr 000201d0: 72 61 79 2c 20 6e 6f 64 65 2c 20 67 65 74 50 6f ray, node, getPo 000201e0: 73 2c 20 74 73 2e 63 6f 6d 70 61 72 65 56 61 6c s, ts.compareVal 000201f0: 75 65 73 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 ues);. }. 00020200: 74 73 2e 69 6e 64 65 78 4f 66 4e 6f 64 65 20 3d ts.indexOfNode = 00020210: 20 69 6e 64 65 78 4f 66 4e 6f 64 65 3b 0a 20 20 indexOfNode;. 00020220: 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 47 65 74 /**. * Get 00020230: 73 20 66 6c 61 67 73 20 74 68 61 74 20 63 6f 6e s flags that con 00020240: 74 72 6f 6c 20 65 6d 69 74 20 62 65 68 61 76 69 trol emit behavi 00020250: 6f 72 20 6f 66 20 61 20 6e 6f 64 65 2e 0a 20 20 or of a node.. 00020260: 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 */. functi 00020270: 6f 6e 20 67 65 74 45 6d 69 74 46 6c 61 67 73 28 on getEmitFlags( 00020280: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 00020290: 76 61 72 20 65 6d 69 74 4e 6f 64 65 20 3d 20 6e var emitNode = n 000202a0: 6f 64 65 2e 65 6d 69 74 4e 6f 64 65 3b 0a 20 20 ode.emitNode;. 000202b0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 6d 69 return emi 000202c0: 74 4e 6f 64 65 20 26 26 20 65 6d 69 74 4e 6f 64 tNode && emitNod 000202d0: 65 2e 66 6c 61 67 73 20 7c 7c 20 30 3b 0a 20 20 e.flags || 0;. 000202e0: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 45 6d }. ts.getEm 000202f0: 69 74 46 6c 61 67 73 20 3d 20 67 65 74 45 6d 69 itFlags = getEmi 00020300: 74 46 6c 61 67 73 3b 0a 20 20 20 20 3b 0a 20 20 tFlags;. ;. 00020310: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 53 63 function getSc 00020320: 72 69 70 74 54 61 72 67 65 74 46 65 61 74 75 72 riptTargetFeatur 00020330: 65 73 28 29 20 7b 0a 20 20 20 20 20 20 20 20 72 es() {. r 00020340: 65 74 75 72 6e 20 7b 0a 20 20 20 20 20 20 20 20 eturn {. 00020350: 20 20 20 20 65 73 32 30 31 35 3a 20 7b 0a 20 20 es2015: {. 00020360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 72 Ar 00020370: 72 61 79 3a 20 5b 22 66 69 6e 64 22 2c 20 22 66 ray: ["find", "f 00020380: 69 6e 64 49 6e 64 65 78 22 2c 20 22 66 69 6c 6c indIndex", "fill 00020390: 22 2c 20 22 63 6f 70 79 57 69 74 68 69 6e 22 2c ", "copyWithin", 000203a0: 20 22 65 6e 74 72 69 65 73 22 2c 20 22 6b 65 79 "entries", "key 000203b0: 73 22 2c 20 22 76 61 6c 75 65 73 22 5d 2c 0a 20 s", "values"],. 000203c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 R 000203d0: 65 67 45 78 70 3a 20 5b 22 66 6c 61 67 73 22 2c egExp: ["flags", 000203e0: 20 22 73 74 69 63 6b 79 22 2c 20 22 75 6e 69 63 "sticky", "unic 000203f0: 6f 64 65 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 ode"],. 00020400: 20 20 20 20 20 20 20 52 65 66 6c 65 63 74 3a 20 Reflect: 00020410: 5b 22 61 70 70 6c 79 22 2c 20 22 63 6f 6e 73 74 ["apply", "const 00020420: 72 75 63 74 22 2c 20 22 64 65 66 69 6e 65 50 72 ruct", "definePr 00020430: 6f 70 65 72 74 79 22 2c 20 22 64 65 6c 65 74 65 operty", "delete 00020440: 50 72 6f 70 65 72 74 79 22 2c 20 22 67 65 74 22 Property", "get" 00020450: 2c 20 22 20 67 65 74 4f 77 6e 50 72 6f 70 65 72 , " getOwnProper 00020460: 74 79 44 65 73 63 72 69 70 74 6f 72 22 2c 20 22 tyDescriptor", " 00020470: 67 65 74 50 72 6f 74 6f 74 79 70 65 4f 66 22 2c getPrototypeOf", 00020480: 20 22 68 61 73 22 2c 20 22 69 73 45 78 74 65 6e "has", "isExten 00020490: 73 69 62 6c 65 22 2c 20 22 6f 77 6e 4b 65 79 73 sible", "ownKeys 000204a0: 22 2c 20 22 70 72 65 76 65 6e 74 45 78 74 65 6e ", "preventExten 000204b0: 73 69 6f 6e 73 22 2c 20 22 73 65 74 22 2c 20 22 sions", "set", " 000204c0: 73 65 74 50 72 6f 74 6f 74 79 70 65 4f 66 22 5d setPrototypeOf"] 000204d0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,. 000204e0: 20 20 41 72 72 61 79 43 6f 6e 73 74 72 75 63 74 ArrayConstruct 000204f0: 6f 72 3a 20 5b 22 66 72 6f 6d 22 2c 20 22 6f 66 or: ["from", "of 00020500: 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 "],. 00020510: 20 20 20 20 4f 62 6a 65 63 74 43 6f 6e 73 74 72 ObjectConstr 00020520: 75 63 74 6f 72 3a 20 5b 22 61 73 73 69 67 6e 22 uctor: ["assign" 00020530: 2c 20 22 67 65 74 4f 77 6e 50 72 6f 70 65 72 74 , "getOwnPropert 00020540: 79 53 79 6d 62 6f 6c 73 22 2c 20 22 6b 65 79 73 ySymbols", "keys 00020550: 22 2c 20 22 69 73 22 2c 20 22 73 65 74 50 72 6f ", "is", "setPro 00020560: 74 6f 74 79 70 65 4f 66 22 5d 2c 0a 20 20 20 20 totypeOf"],. 00020570: 20 20 20 20 20 20 20 20 20 20 20 20 4e 75 6d 62 Numb 00020580: 65 72 43 6f 6e 73 74 72 75 63 74 6f 72 3a 20 5b erConstructor: [ 00020590: 22 69 73 46 69 6e 69 74 65 22 2c 20 22 69 73 49 "isFinite", "isI 000205a0: 6e 74 65 67 65 72 22 2c 20 22 69 73 4e 61 4e 22 nteger", "isNaN" 000205b0: 2c 20 22 69 73 53 61 66 65 49 6e 74 65 67 65 72 , "isSafeInteger 000205c0: 22 2c 20 22 70 61 72 73 65 46 6c 6f 61 74 22 2c ", "parseFloat", 000205d0: 20 22 70 61 72 73 65 49 6e 74 22 5d 2c 0a 20 20 "parseInt"],. 000205e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 Ma 000205f0: 74 68 3a 20 5b 22 63 6c 7a 33 32 22 2c 20 22 69 th: ["clz32", "i 00020600: 6d 75 6c 22 2c 20 22 73 69 67 6e 22 2c 20 22 6c mul", "sign", "l 00020610: 6f 67 31 30 22 2c 20 22 6c 6f 67 32 22 2c 20 22 og10", "log2", " 00020620: 6c 6f 67 31 70 22 2c 20 22 65 78 70 6d 31 22 2c log1p", "expm1", 00020630: 20 22 63 6f 73 68 22 2c 20 22 73 69 6e 68 22 2c "cosh", "sinh", 00020640: 20 22 74 61 6e 68 22 2c 20 22 61 63 6f 73 68 22 "tanh", "acosh" 00020650: 2c 20 22 61 73 69 6e 68 22 2c 20 22 61 74 61 6e , "asinh", "atan 00020660: 68 22 2c 20 22 68 79 70 6f 74 22 2c 20 22 74 72 h", "hypot", "tr 00020670: 75 6e 63 22 2c 20 22 66 72 6f 75 6e 64 22 2c 20 unc", "fround", 00020680: 22 63 62 72 74 22 5d 2c 0a 20 20 20 20 20 20 20 "cbrt"],. 00020690: 20 20 20 20 20 20 20 20 20 4d 61 70 3a 20 5b 22 Map: [" 000206a0: 65 6e 74 72 69 65 73 22 2c 20 22 6b 65 79 73 22 entries", "keys" 000206b0: 2c 20 22 76 61 6c 75 65 73 22 5d 2c 0a 20 20 20 , "values"],. 000206c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 65 74 Set 000206d0: 3a 20 5b 22 65 6e 74 72 69 65 73 22 2c 20 22 6b : ["entries", "k 000206e0: 65 79 73 22 2c 20 22 76 61 6c 75 65 73 22 5d 2c eys", "values"], 000206f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00020700: 20 50 72 6f 6d 69 73 65 3a 20 74 73 2e 65 6d 70 Promise: ts.emp 00020710: 74 79 41 72 72 61 79 2c 0a 20 20 20 20 20 20 20 tyArray,. 00020720: 20 20 20 20 20 20 20 20 20 50 72 6f 6d 69 73 65 Promise 00020730: 43 6f 6e 73 74 72 75 63 74 6f 72 3a 20 5b 22 61 Constructor: ["a 00020740: 6c 6c 22 2c 20 22 72 61 63 65 22 2c 20 22 72 65 ll", "race", "re 00020750: 6a 65 63 74 22 2c 20 22 72 65 73 6f 6c 76 65 22 ject", "resolve" 00020760: 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ],. 00020770: 20 20 20 53 79 6d 62 6f 6c 3a 20 5b 22 66 6f 72 Symbol: ["for 00020780: 22 2c 20 22 6b 65 79 46 6f 72 22 5d 2c 0a 20 20 ", "keyFor"],. 00020790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 57 65 We 000207a0: 61 6b 4d 61 70 3a 20 5b 22 65 6e 74 72 69 65 73 akMap: ["entries 000207b0: 22 2c 20 22 6b 65 79 73 22 2c 20 22 76 61 6c 75 ", "keys", "valu 000207c0: 65 73 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 es"],. 000207d0: 20 20 20 20 20 20 57 65 61 6b 53 65 74 3a 20 5b WeakSet: [ 000207e0: 22 65 6e 74 72 69 65 73 22 2c 20 22 6b 65 79 73 "entries", "keys 000207f0: 22 2c 20 22 76 61 6c 75 65 73 22 5d 2c 0a 20 20 ", "values"],. 00020800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 74 It 00020810: 65 72 61 74 6f 72 3a 20 74 73 2e 65 6d 70 74 79 erator: ts.empty 00020820: 41 72 72 61 79 2c 0a 20 20 20 20 20 20 20 20 20 Array,. 00020830: 20 20 20 20 20 20 20 41 73 79 6e 63 49 74 65 72 AsyncIter 00020840: 61 74 6f 72 3a 20 74 73 2e 65 6d 70 74 79 41 72 ator: ts.emptyAr 00020850: 72 61 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 ray,. 00020860: 20 20 20 20 20 53 74 72 69 6e 67 3a 20 5b 22 63 String: ["c 00020870: 6f 64 65 50 6f 69 6e 74 41 74 22 2c 20 22 69 6e odePointAt", "in 00020880: 63 6c 75 64 65 73 22 2c 20 22 65 6e 64 73 57 69 cludes", "endsWi 00020890: 74 68 22 2c 20 22 6e 6f 72 6d 61 6c 69 7a 65 22 th", "normalize" 000208a0: 2c 20 22 72 65 70 65 61 74 22 2c 20 22 73 74 61 , "repeat", "sta 000208b0: 72 74 73 57 69 74 68 22 2c 20 22 61 6e 63 68 6f rtsWith", "ancho 000208c0: 72 22 2c 20 22 62 69 67 22 2c 20 22 62 6c 69 6e r", "big", "blin 000208d0: 6b 22 2c 20 22 62 6f 6c 64 22 2c 20 22 66 69 78 k", "bold", "fix 000208e0: 65 64 22 2c 20 22 66 6f 6e 74 63 6f 6c 6f 72 22 ed", "fontcolor" 000208f0: 2c 20 22 66 6f 6e 74 73 69 7a 65 22 2c 20 22 69 , "fontsize", "i 00020900: 74 61 6c 69 63 73 22 2c 20 22 6c 69 6e 6b 22 2c talics", "link", 00020910: 20 22 73 6d 61 6c 6c 22 2c 20 22 73 74 72 69 6b "small", "strik 00020920: 65 22 2c 20 22 73 75 62 22 2c 20 22 73 75 70 22 e", "sub", "sup" 00020930: 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ],. 00020940: 20 20 20 53 74 72 69 6e 67 43 6f 6e 73 74 72 75 StringConstru 00020950: 63 74 6f 72 3a 20 5b 22 66 72 6f 6d 43 6f 64 65 ctor: ["fromCode 00020960: 50 6f 69 6e 74 22 2c 20 22 72 61 77 22 5d 0a 20 Point", "raw"]. 00020970: 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 },. 00020980: 20 20 20 20 20 20 20 20 20 20 65 73 32 30 31 36 es2016 00020990: 3a 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 : {. 000209a0: 20 20 20 20 41 72 72 61 79 3a 20 5b 22 69 6e 63 Array: ["inc 000209b0: 6c 75 64 65 73 22 5d 0a 20 20 20 20 20 20 20 20 ludes"]. 000209c0: 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 20 20 20 },. 000209d0: 20 20 20 65 73 32 30 31 37 3a 20 7b 0a 20 20 20 es2017: {. 000209e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 41 74 6f Ato 000209f0: 6d 69 63 73 3a 20 74 73 2e 65 6d 70 74 79 41 72 mics: ts.emptyAr 00020a00: 72 61 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 ray,. 00020a10: 20 20 20 20 20 53 68 61 72 65 64 41 72 72 61 79 SharedArray 00020a20: 42 75 66 66 65 72 3a 20 74 73 2e 65 6d 70 74 79 Buffer: ts.empty 00020a30: 41 72 72 61 79 2c 0a 20 20 20 20 20 20 20 20 20 Array,. 00020a40: 20 20 20 20 20 20 20 53 74 72 69 6e 67 3a 20 5b String: [ 00020a50: 22 70 61 64 53 74 61 72 74 22 2c 20 22 70 61 64 "padStart", "pad 00020a60: 45 6e 64 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 End"],. 00020a70: 20 20 20 20 20 20 20 4f 62 6a 65 63 74 43 6f 6e ObjectCon 00020a80: 73 74 72 75 63 74 6f 72 3a 20 5b 22 76 61 6c 75 structor: ["valu 00020a90: 65 73 22 2c 20 22 65 6e 74 72 69 65 73 22 2c 20 es", "entries", 00020aa0: 22 67 65 74 4f 77 6e 50 72 6f 70 65 72 74 79 44 "getOwnPropertyD 00020ab0: 65 73 63 72 69 70 74 6f 72 73 22 5d 2c 0a 20 20 escriptors"],. 00020ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 61 Da 00020ad0: 74 65 54 69 6d 65 46 6f 72 6d 61 74 3a 20 5b 22 teTimeFormat: [" 00020ae0: 66 6f 72 6d 61 74 54 6f 50 61 72 74 73 22 5d 0a formatToParts"]. 00020af0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 },. 00020b00: 20 20 20 20 20 20 20 20 20 20 20 65 73 32 30 31 es201 00020b10: 38 3a 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 8: {. 00020b20: 20 20 20 20 20 50 72 6f 6d 69 73 65 3a 20 5b 22 Promise: [" 00020b30: 66 69 6e 61 6c 6c 79 22 5d 2c 0a 20 20 20 20 20 finally"],. 00020b40: 20 20 20 20 20 20 20 20 20 20 20 52 65 67 45 78 RegEx 00020b50: 70 4d 61 74 63 68 41 72 72 61 79 3a 20 5b 22 67 pMatchArray: ["g 00020b60: 72 6f 75 70 73 22 5d 2c 0a 20 20 20 20 20 20 20 roups"],. 00020b70: 20 20 20 20 20 20 20 20 20 52 65 67 45 78 70 45 RegExpE 00020b80: 78 65 63 41 72 72 61 79 3a 20 5b 22 67 72 6f 75 xecArray: ["grou 00020b90: 70 73 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 ps"],. 00020ba0: 20 20 20 20 20 20 52 65 67 45 78 70 3a 20 5b 22 RegExp: [" 00020bb0: 64 6f 74 41 6c 6c 22 5d 2c 0a 20 20 20 20 20 20 dotAll"],. 00020bc0: 20 20 20 20 20 20 20 20 20 20 49 6e 74 6c 3a 20 Intl: 00020bd0: 5b 22 50 6c 75 72 61 6c 52 75 6c 65 73 22 5d 2c ["PluralRules"], 00020be0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00020bf0: 20 41 73 79 6e 63 49 74 65 72 61 62 6c 65 3a 20 AsyncIterable: 00020c00: 74 73 2e 65 6d 70 74 79 41 72 72 61 79 2c 0a 20 ts.emptyArray,. 00020c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 A 00020c20: 73 79 6e 63 49 74 65 72 61 62 6c 65 49 74 65 72 syncIterableIter 00020c30: 61 74 6f 72 3a 20 74 73 2e 65 6d 70 74 79 41 72 ator: ts.emptyAr 00020c40: 72 61 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 ray,. 00020c50: 20 20 20 20 20 41 73 79 6e 63 47 65 6e 65 72 61 AsyncGenera 00020c60: 74 6f 72 3a 20 74 73 2e 65 6d 70 74 79 41 72 72 tor: ts.emptyArr 00020c70: 61 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ay,. 00020c80: 20 20 20 20 41 73 79 6e 63 47 65 6e 65 72 61 74 AsyncGenerat 00020c90: 6f 72 46 75 6e 63 74 69 6f 6e 3a 20 74 73 2e 65 orFunction: ts.e 00020ca0: 6d 70 74 79 41 72 72 61 79 2c 0a 20 20 20 20 20 mptyArray,. 00020cb0: 20 20 20 20 20 20 20 20 20 20 20 4e 75 6d 62 65 Numbe 00020cc0: 72 46 6f 72 6d 61 74 3a 20 5b 22 66 6f 72 6d 61 rFormat: ["forma 00020cd0: 74 54 6f 50 61 72 74 73 22 5d 0a 20 20 20 20 20 tToParts"]. 00020ce0: 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 20 20 },. 00020cf0: 20 20 20 20 20 20 65 73 32 30 31 39 3a 20 7b 0a es2019: {. 00020d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00020d10: 41 72 72 61 79 3a 20 5b 22 66 6c 61 74 22 2c 20 Array: ["flat", 00020d20: 22 66 6c 61 74 4d 61 70 22 5d 2c 0a 20 20 20 20 "flatMap"],. 00020d30: 20 20 20 20 20 20 20 20 20 20 20 20 4f 62 6a 65 Obje 00020d40: 63 74 43 6f 6e 73 74 72 75 63 74 6f 72 3a 20 5b ctConstructor: [ 00020d50: 22 66 72 6f 6d 45 6e 74 72 69 65 73 22 5d 2c 0a "fromEntries"],. 00020d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00020d70: 53 74 72 69 6e 67 3a 20 5b 22 74 72 69 6d 53 74 String: ["trimSt 00020d80: 61 72 74 22 2c 20 22 74 72 69 6d 45 6e 64 22 2c art", "trimEnd", 00020d90: 20 22 74 72 69 6d 4c 65 66 74 22 2c 20 22 74 72 "trimLeft", "tr 00020da0: 69 6d 52 69 67 68 74 22 5d 2c 0a 20 20 20 20 20 imRight"],. 00020db0: 20 20 20 20 20 20 20 20 20 20 20 53 79 6d 62 6f Symbo 00020dc0: 6c 3a 20 5b 22 64 65 73 63 72 69 70 74 69 6f 6e l: ["description 00020dd0: 22 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d "]. } 00020de0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 73 ,. es 00020df0: 32 30 32 30 3a 20 7b 0a 20 20 20 20 20 20 20 20 2020: {. 00020e00: 20 20 20 20 20 20 20 20 42 69 67 49 6e 74 3a 20 BigInt: 00020e10: 74 73 2e 65 6d 70 74 79 41 72 72 61 79 2c 0a 20 ts.emptyArray,. 00020e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 42 B 00020e30: 69 67 49 6e 74 36 34 41 72 72 61 79 3a 20 74 73 igInt64Array: ts 00020e40: 2e 65 6d 70 74 79 41 72 72 61 79 2c 0a 20 20 20 .emptyArray,. 00020e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 42 69 67 Big 00020e60: 55 69 6e 74 36 34 41 72 72 61 79 3a 20 74 73 2e Uint64Array: ts. 00020e70: 65 6d 70 74 79 41 72 72 61 79 2c 0a 20 20 20 20 emptyArray,. 00020e80: 20 20 20 20 20 20 20 20 20 20 20 20 50 72 6f 6d Prom 00020e90: 69 73 65 43 6f 6e 73 74 72 75 63 74 6f 72 3a 20 iseConstructor: 00020ea0: 5b 22 61 6c 6c 53 65 74 74 6c 65 64 22 5d 2c 0a ["allSettled"],. 00020eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00020ec0: 53 79 6d 62 6f 6c 43 6f 6e 73 74 72 75 63 74 6f SymbolConstructo 00020ed0: 72 3a 20 5b 22 6d 61 74 63 68 41 6c 6c 22 5d 2c r: ["matchAll"], 00020ee0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00020ef0: 20 53 74 72 69 6e 67 3a 20 5b 22 6d 61 74 63 68 String: ["match 00020f00: 41 6c 6c 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 All"],. 00020f10: 20 20 20 20 20 20 20 44 61 74 61 56 69 65 77 3a DataView: 00020f20: 20 5b 22 73 65 74 42 69 67 49 6e 74 36 34 22 2c ["setBigInt64", 00020f30: 20 22 73 65 74 42 69 67 55 69 6e 74 36 34 22 2c "setBigUint64", 00020f40: 20 22 67 65 74 42 69 67 49 6e 74 36 34 22 2c 20 "getBigInt64", 00020f50: 22 67 65 74 42 69 67 55 69 6e 74 36 34 22 5d 2c "getBigUint64"], 00020f60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00020f70: 20 52 65 6c 61 74 69 76 65 54 69 6d 65 46 6f 72 RelativeTimeFor 00020f80: 6d 61 74 3a 20 5b 22 66 6f 72 6d 61 74 22 2c 20 mat: ["format", 00020f90: 22 66 6f 72 6d 61 74 54 6f 50 61 72 74 73 22 2c "formatToParts", 00020fa0: 20 22 72 65 73 6f 6c 76 65 64 4f 70 74 69 6f 6e "resolvedOption 00020fb0: 73 22 5d 0a 20 20 20 20 20 20 20 20 20 20 20 20 s"]. 00020fc0: 7d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 },. e 00020fd0: 73 32 30 32 31 3a 20 7b 0a 20 20 20 20 20 20 20 s2021: {. 00020fe0: 20 20 20 20 20 20 20 20 20 50 72 6f 6d 69 73 65 Promise 00020ff0: 43 6f 6e 73 74 72 75 63 74 6f 72 3a 20 5b 22 61 Constructor: ["a 00021000: 6e 79 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 ny"],. 00021010: 20 20 20 20 20 20 53 74 72 69 6e 67 3a 20 5b 22 String: [" 00021020: 72 65 70 6c 61 63 65 41 6c 6c 22 5d 0a 20 20 20 replaceAll"]. 00021030: 20 20 20 20 20 20 20 20 20 7d 2c 0a 20 20 20 20 },. 00021040: 20 20 20 20 20 20 20 20 65 73 32 30 32 32 3a 20 es2022: 00021050: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 00021060: 20 20 41 72 72 61 79 3a 20 5b 22 61 74 22 5d 2c Array: ["at"], 00021070: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00021080: 20 53 74 72 69 6e 67 3a 20 5b 22 61 74 22 5d 2c String: ["at"], 00021090: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 000210a0: 20 49 6e 74 38 41 72 72 61 79 3a 20 5b 22 61 74 Int8Array: ["at 000210b0: 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 "],. 000210c0: 20 20 20 20 55 69 6e 74 38 41 72 72 61 79 3a 20 Uint8Array: 000210d0: 5b 22 61 74 22 5d 2c 0a 20 20 20 20 20 20 20 20 ["at"],. 000210e0: 20 20 20 20 20 20 20 20 55 69 6e 74 38 43 6c 61 Uint8Cla 000210f0: 6d 70 65 64 41 72 72 61 79 3a 20 5b 22 61 74 22 mpedArray: ["at" 00021100: 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ],. 00021110: 20 20 20 49 6e 74 31 36 41 72 72 61 79 3a 20 5b Int16Array: [ 00021120: 22 61 74 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 "at"],. 00021130: 20 20 20 20 20 20 20 55 69 6e 74 31 36 41 72 72 Uint16Arr 00021140: 61 79 3a 20 5b 22 61 74 22 5d 2c 0a 20 20 20 20 ay: ["at"],. 00021150: 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 33 Int3 00021160: 32 41 72 72 61 79 3a 20 5b 22 61 74 22 5d 2c 0a 2Array: ["at"],. 00021170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00021180: 55 69 6e 74 33 32 41 72 72 61 79 3a 20 5b 22 61 Uint32Array: ["a 00021190: 74 22 5d 2c 0a 20 20 20 20 20 20 20 20 20 20 20 t"],. 000211a0: 20 20 20 20 20 46 6c 6f 61 74 33 32 41 72 72 61 Float32Arra 000211b0: 79 3a 20 5b 22 61 74 22 5d 2c 0a 20 20 20 20 20 y: ["at"],. 000211c0: 20 20 20 20 20 20 20 20 20 20 20 46 6c 6f 61 74 Float 000211d0: 36 34 41 72 72 61 79 3a 20 5b 22 61 74 22 5d 2c 64Array: ["at"], 000211e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 000211f0: 20 42 69 67 49 6e 74 36 34 41 72 72 61 79 3a 20 BigInt64Array: 00021200: 5b 22 61 74 22 5d 2c 0a 20 20 20 20 20 20 20 20 ["at"],. 00021210: 20 20 20 20 20 20 20 20 42 69 67 55 69 6e 74 36 BigUint6 00021220: 34 41 72 72 61 79 3a 20 5b 22 61 74 22 5d 2c 0a 4Array: ["at"],. 00021230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00021240: 4f 62 6a 65 63 74 43 6f 6e 73 74 72 75 63 74 6f ObjectConstructo 00021250: 72 3a 20 5b 22 68 61 73 4f 77 6e 22 5d 2c 0a 20 r: ["hasOwn"],. 00021260: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 E 00021270: 72 72 6f 72 3a 20 5b 22 63 61 75 73 65 22 5d 0a rror: ["cause"]. 00021280: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. 00021290: 20 20 20 20 20 20 7d 3b 0a 20 20 20 20 7d 0a 20 };. }. 000212a0: 20 20 20 74 73 2e 67 65 74 53 63 72 69 70 74 54 ts.getScriptT 000212b0: 61 72 67 65 74 46 65 61 74 75 72 65 73 20 3d 20 argetFeatures = 000212c0: 67 65 74 53 63 72 69 70 74 54 61 72 67 65 74 46 getScriptTargetF 000212d0: 65 61 74 75 72 65 73 3b 0a 20 20 20 20 76 61 72 eatures;. var 000212e0: 20 47 65 74 4c 69 74 65 72 61 6c 54 65 78 74 46 GetLiteralTextF 000212f0: 6c 61 67 73 3b 0a 20 20 20 20 28 66 75 6e 63 74 lags;. (funct 00021300: 69 6f 6e 20 28 47 65 74 4c 69 74 65 72 61 6c 54 ion (GetLiteralT 00021310: 65 78 74 46 6c 61 67 73 29 20 7b 0a 20 20 20 20 extFlags) {. 00021320: 20 20 20 20 47 65 74 4c 69 74 65 72 61 6c 54 65 GetLiteralTe 00021330: 78 74 46 6c 61 67 73 5b 47 65 74 4c 69 74 65 72 xtFlags[GetLiter 00021340: 61 6c 54 65 78 74 46 6c 61 67 73 5b 22 4e 6f 6e alTextFlags["Non 00021350: 65 22 5d 20 3d 20 30 5d 20 3d 20 22 4e 6f 6e 65 e"] = 0] = "None 00021360: 22 3b 0a 20 20 20 20 20 20 20 20 47 65 74 4c 69 ";. GetLi 00021370: 74 65 72 61 6c 54 65 78 74 46 6c 61 67 73 5b 47 teralTextFlags[G 00021380: 65 74 4c 69 74 65 72 61 6c 54 65 78 74 46 6c 61 etLiteralTextFla 00021390: 67 73 5b 22 4e 65 76 65 72 41 73 63 69 69 45 73 gs["NeverAsciiEs 000213a0: 63 61 70 65 22 5d 20 3d 20 31 5d 20 3d 20 22 4e cape"] = 1] = "N 000213b0: 65 76 65 72 41 73 63 69 69 45 73 63 61 70 65 22 everAsciiEscape" 000213c0: 3b 0a 20 20 20 20 20 20 20 20 47 65 74 4c 69 74 ;. GetLit 000213d0: 65 72 61 6c 54 65 78 74 46 6c 61 67 73 5b 47 65 eralTextFlags[Ge 000213e0: 74 4c 69 74 65 72 61 6c 54 65 78 74 46 6c 61 67 tLiteralTextFlag 000213f0: 73 5b 22 4a 73 78 41 74 74 72 69 62 75 74 65 45 s["JsxAttributeE 00021400: 73 63 61 70 65 22 5d 20 3d 20 32 5d 20 3d 20 22 scape"] = 2] = " 00021410: 4a 73 78 41 74 74 72 69 62 75 74 65 45 73 63 61 JsxAttributeEsca 00021420: 70 65 22 3b 0a 20 20 20 20 20 20 20 20 47 65 74 pe";. Get 00021430: 4c 69 74 65 72 61 6c 54 65 78 74 46 6c 61 67 73 LiteralTextFlags 00021440: 5b 47 65 74 4c 69 74 65 72 61 6c 54 65 78 74 46 [GetLiteralTextF 00021450: 6c 61 67 73 5b 22 54 65 72 6d 69 6e 61 74 65 55 lags["TerminateU 00021460: 6e 74 65 72 6d 69 6e 61 74 65 64 4c 69 74 65 72 nterminatedLiter 00021470: 61 6c 73 22 5d 20 3d 20 34 5d 20 3d 20 22 54 65 als"] = 4] = "Te 00021480: 72 6d 69 6e 61 74 65 55 6e 74 65 72 6d 69 6e 61 rminateUntermina 00021490: 74 65 64 4c 69 74 65 72 61 6c 73 22 3b 0a 20 20 tedLiterals";. 000214a0: 20 20 20 20 20 20 47 65 74 4c 69 74 65 72 61 6c GetLiteral 000214b0: 54 65 78 74 46 6c 61 67 73 5b 47 65 74 4c 69 74 TextFlags[GetLit 000214c0: 65 72 61 6c 54 65 78 74 46 6c 61 67 73 5b 22 41 eralTextFlags["A 000214d0: 6c 6c 6f 77 4e 75 6d 65 72 69 63 53 65 70 61 72 llowNumericSepar 000214e0: 61 74 6f 72 22 5d 20 3d 20 38 5d 20 3d 20 22 41 ator"] = 8] = "A 000214f0: 6c 6c 6f 77 4e 75 6d 65 72 69 63 53 65 70 61 72 llowNumericSepar 00021500: 61 74 6f 72 22 3b 0a 20 20 20 20 7d 29 28 47 65 ator";. })(Ge 00021510: 74 4c 69 74 65 72 61 6c 54 65 78 74 46 6c 61 67 tLiteralTextFlag 00021520: 73 20 3d 20 74 73 2e 47 65 74 4c 69 74 65 72 61 s = ts.GetLitera 00021530: 6c 54 65 78 74 46 6c 61 67 73 20 7c 7c 20 28 74 lTextFlags || (t 00021540: 73 2e 47 65 74 4c 69 74 65 72 61 6c 54 65 78 74 s.GetLiteralText 00021550: 46 6c 61 67 73 20 3d 20 7b 7d 29 29 3b 0a 20 20 Flags = {}));. 00021560: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4c 69 function getLi 00021570: 74 65 72 61 6c 54 65 78 74 28 6e 6f 64 65 2c 20 teralText(node, 00021580: 73 6f 75 72 63 65 46 69 6c 65 2c 20 66 6c 61 67 sourceFile, flag 00021590: 73 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 s) {. var 000215a0: 20 5f 61 3b 0a 20 20 20 20 20 20 20 20 2f 2f 20 _a;. // 000215b0: 49 66 20 77 65 20 64 6f 6e 27 74 20 6e 65 65 64 If we don't need 000215c0: 20 74 6f 20 64 6f 77 6e 6c 65 76 65 6c 20 61 6e to downlevel an 000215d0: 64 20 77 65 20 63 61 6e 20 72 65 61 63 68 20 74 d we can reach t 000215e0: 68 65 20 6f 72 69 67 69 6e 61 6c 20 73 6f 75 72 he original sour 000215f0: 63 65 20 74 65 78 74 20 75 73 69 6e 67 0a 20 20 ce text using. 00021600: 20 20 20 20 20 20 2f 2f 20 74 68 65 20 6e 6f 64 // the nod 00021610: 65 27 73 20 70 61 72 65 6e 74 20 72 65 66 65 72 e's parent refer 00021620: 65 6e 63 65 2c 20 74 68 65 6e 20 73 69 6d 70 6c ence, then simpl 00021630: 79 20 67 65 74 20 74 68 65 20 74 65 78 74 20 61 y get the text a 00021640: 73 20 69 74 20 77 61 73 20 6f 72 69 67 69 6e 61 s it was origina 00021650: 6c 6c 79 20 77 72 69 74 74 65 6e 2e 0a 20 20 20 lly written.. 00021660: 20 20 20 20 20 69 66 20 28 73 6f 75 72 63 65 46 if (sourceF 00021670: 69 6c 65 20 26 26 20 63 61 6e 55 73 65 4f 72 69 ile && canUseOri 00021680: 67 69 6e 61 6c 54 65 78 74 28 6e 6f 64 65 2c 20 ginalText(node, 00021690: 66 6c 61 67 73 29 29 20 7b 0a 20 20 20 20 20 20 flags)) {. 000216a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 return get 000216b0: 53 6f 75 72 63 65 54 65 78 74 4f 66 4e 6f 64 65 SourceTextOfNode 000216c0: 46 72 6f 6d 53 6f 75 72 63 65 46 69 6c 65 28 73 FromSourceFile(s 000216d0: 6f 75 72 63 65 46 69 6c 65 2c 20 6e 6f 64 65 29 ourceFile, node) 000216e0: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 000216f0: 20 20 20 20 2f 2f 20 49 66 20 77 65 20 63 61 6e // If we can 00021700: 27 74 20 72 65 61 63 68 20 74 68 65 20 6f 72 69 't reach the ori 00021710: 67 69 6e 61 6c 20 73 6f 75 72 63 65 20 74 65 78 ginal source tex 00021720: 74 2c 20 75 73 65 20 74 68 65 20 63 61 6e 6f 6e t, use the canon 00021730: 69 63 61 6c 20 66 6f 72 6d 20 69 66 20 69 74 27 ical form if it' 00021740: 73 20 61 20 6e 75 6d 62 65 72 2c 0a 20 20 20 20 s a number,. 00021750: 20 20 20 20 2f 2f 20 6f 72 20 61 20 28 70 6f 73 // or a (pos 00021760: 73 69 62 6c 79 20 65 73 63 61 70 65 64 29 20 71 sibly escaped) q 00021770: 75 6f 74 65 64 20 66 6f 72 6d 20 6f 66 20 74 68 uoted form of th 00021780: 65 20 6f 72 69 67 69 6e 61 6c 20 74 65 78 74 20 e original text 00021790: 69 66 20 69 74 27 73 20 73 74 72 69 6e 67 2d 6c if it's string-l 000217a0: 69 6b 65 2e 0a 20 20 20 20 20 20 20 20 73 77 69 ike.. swi 000217b0: 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 tch (node.kind) 000217c0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 {. ca 000217d0: 73 65 20 31 30 20 2f 2a 20 53 79 6e 74 61 78 4b se 10 /* SyntaxK 000217e0: 69 6e 64 2e 53 74 72 69 6e 67 4c 69 74 65 72 61 ind.StringLitera 000217f0: 6c 20 2a 2f 3a 20 7b 0a 20 20 20 20 20 20 20 20 l */: {. 00021800: 20 20 20 20 20 20 20 20 76 61 72 20 65 73 63 61 var esca 00021810: 70 65 54 65 78 74 20 3d 20 66 6c 61 67 73 20 26 peText = flags & 00021820: 20 32 20 2f 2a 20 47 65 74 4c 69 74 65 72 61 6c 2 /* GetLiteral 00021830: 54 65 78 74 46 6c 61 67 73 2e 4a 73 78 41 74 74 TextFlags.JsxAtt 00021840: 72 69 62 75 74 65 45 73 63 61 70 65 20 2a 2f 20 ributeEscape */ 00021850: 3f 20 65 73 63 61 70 65 4a 73 78 41 74 74 72 69 ? escapeJsxAttri 00021860: 62 75 74 65 53 74 72 69 6e 67 20 3a 0a 20 20 20 buteString :. 00021870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00021880: 20 66 6c 61 67 73 20 26 20 31 20 2f 2a 20 47 65 flags & 1 /* Ge 00021890: 74 4c 69 74 65 72 61 6c 54 65 78 74 46 6c 61 67 tLiteralTextFlag 000218a0: 73 2e 4e 65 76 65 72 41 73 63 69 69 45 73 63 61 s.NeverAsciiEsca 000218b0: 70 65 20 2a 2f 20 7c 7c 20 28 67 65 74 45 6d 69 pe */ || (getEmi 000218c0: 74 46 6c 61 67 73 28 6e 6f 64 65 29 20 26 20 31 tFlags(node) & 1 000218d0: 36 37 37 37 32 31 36 20 2f 2a 20 45 6d 69 74 46 6777216 /* EmitF 000218e0: 6c 61 67 73 2e 4e 6f 41 73 63 69 69 45 73 63 61 lags.NoAsciiEsca 000218f0: 70 69 6e 67 20 2a 2f 29 20 3f 20 65 73 63 61 70 ping */) ? escap 00021900: 65 53 74 72 69 6e 67 20 3a 0a 20 20 20 20 20 20 eString :. 00021910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00021920: 20 20 65 73 63 61 70 65 4e 6f 6e 41 73 63 69 69 escapeNonAscii 00021930: 53 74 72 69 6e 67 3b 0a 20 20 20 20 20 20 20 20 String;. 00021940: 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 if (node 00021950: 2e 73 69 6e 67 6c 65 51 75 6f 74 65 29 20 7b 0a .singleQuote) {. 00021960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00021970: 20 20 20 20 72 65 74 75 72 6e 20 22 27 22 20 2b return "'" + 00021980: 20 65 73 63 61 70 65 54 65 78 74 28 6e 6f 64 65 escapeText(node 00021990: 2e 74 65 78 74 2c 20 33 39 20 2f 2a 20 43 68 61 .text, 39 /* Cha 000219a0: 72 61 63 74 65 72 43 6f 64 65 73 2e 73 69 6e 67 racterCodes.sing 000219b0: 6c 65 51 75 6f 74 65 20 2a 2f 29 20 2b 20 22 27 leQuote */) + "' 000219c0: 22 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ";. 000219d0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 000219e0: 20 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 else {. 000219f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00021a00: 72 65 74 75 72 6e 20 27 22 27 20 2b 20 65 73 63 return '"' + esc 00021a10: 61 70 65 54 65 78 74 28 6e 6f 64 65 2e 74 65 78 apeText(node.tex 00021a20: 74 2c 20 33 34 20 2f 2a 20 43 68 61 72 61 63 74 t, 34 /* Charact 00021a30: 65 72 43 6f 64 65 73 2e 64 6f 75 62 6c 65 51 75 erCodes.doubleQu 00021a40: 6f 74 65 20 2a 2f 29 20 2b 20 27 22 27 3b 0a 20 ote */) + '"';. 00021a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d } 00021a60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 . }. 00021a70: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00021a80: 31 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 14 /* SyntaxKind 00021a90: 2e 4e 6f 53 75 62 73 74 69 74 75 74 69 6f 6e 54 .NoSubstitutionT 00021aa0: 65 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c 20 2a emplateLiteral * 00021ab0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00021ac0: 61 73 65 20 31 35 20 2f 2a 20 53 79 6e 74 61 78 ase 15 /* Syntax 00021ad0: 4b 69 6e 64 2e 54 65 6d 70 6c 61 74 65 48 65 61 Kind.TemplateHea 00021ae0: 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 d */:. 00021af0: 20 20 63 61 73 65 20 31 36 20 2f 2a 20 53 79 6e case 16 /* Syn 00021b00: 74 61 78 4b 69 6e 64 2e 54 65 6d 70 6c 61 74 65 taxKind.Template 00021b10: 4d 69 64 64 6c 65 20 2a 2f 3a 0a 20 20 20 20 20 Middle */:. 00021b20: 20 20 20 20 20 20 20 63 61 73 65 20 31 37 20 2f case 17 / 00021b30: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 65 6d * SyntaxKind.Tem 00021b40: 70 6c 61 74 65 54 61 69 6c 20 2a 2f 3a 20 7b 0a plateTail */: {. 00021b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00021b60: 2f 2f 20 49 66 20 61 20 4e 6f 53 75 62 73 74 69 // If a NoSubsti 00021b70: 74 75 74 69 6f 6e 54 65 6d 70 6c 61 74 65 4c 69 tutionTemplateLi 00021b80: 74 65 72 61 6c 20 61 70 70 65 61 72 73 20 74 6f teral appears to 00021b90: 20 68 61 76 65 20 61 20 73 75 62 73 74 69 74 75 have a substitu 00021ba0: 74 69 6f 6e 20 69 6e 20 69 74 2c 20 74 68 65 20 tion in it, the 00021bb0: 6f 72 69 67 69 6e 61 6c 20 74 65 78 74 0a 20 20 original text. 00021bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f // 00021bd0: 20 68 61 64 20 74 6f 20 69 6e 63 6c 75 64 65 20 had to include 00021be0: 61 20 62 61 63 6b 73 6c 61 73 68 3a 20 60 6e 6f a backslash: `no 00021bf0: 74 20 5c 24 7b 61 7d 20 73 75 62 73 74 69 74 75 t \${a} substitu 00021c00: 74 69 6f 6e 60 2e 0a 20 20 20 20 20 20 20 20 20 tion`.. 00021c10: 20 20 20 20 20 20 20 76 61 72 20 65 73 63 61 70 var escap 00021c20: 65 54 65 78 74 20 3d 20 66 6c 61 67 73 20 26 20 eText = flags & 00021c30: 31 20 2f 2a 20 47 65 74 4c 69 74 65 72 61 6c 54 1 /* GetLiteralT 00021c40: 65 78 74 46 6c 61 67 73 2e 4e 65 76 65 72 41 73 extFlags.NeverAs 00021c50: 63 69 69 45 73 63 61 70 65 20 2a 2f 20 7c 7c 20 ciiEscape */ || 00021c60: 28 67 65 74 45 6d 69 74 46 6c 61 67 73 28 6e 6f (getEmitFlags(no 00021c70: 64 65 29 20 26 20 31 36 37 37 37 32 31 36 20 2f de) & 16777216 / 00021c80: 2a 20 45 6d 69 74 46 6c 61 67 73 2e 4e 6f 41 73 * EmitFlags.NoAs 00021c90: 63 69 69 45 73 63 61 70 69 6e 67 20 2a 2f 29 20 ciiEscaping */) 00021ca0: 3f 20 65 73 63 61 70 65 53 74 72 69 6e 67 20 3a ? escapeString : 00021cb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00021cc0: 20 20 20 20 20 65 73 63 61 70 65 4e 6f 6e 41 73 escapeNonAs 00021cd0: 63 69 69 53 74 72 69 6e 67 3b 0a 20 20 20 20 20 ciiString;. 00021ce0: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 72 var r 00021cf0: 61 77 54 65 78 74 20 3d 20 28 5f 61 20 3d 20 6e awText = (_a = n 00021d00: 6f 64 65 2e 72 61 77 54 65 78 74 29 20 21 3d 3d ode.rawText) !== 00021d10: 20 6e 75 6c 6c 20 26 26 20 5f 61 20 21 3d 3d 20 null && _a !== 00021d20: 76 6f 69 64 20 30 20 3f 20 5f 61 20 3a 20 65 73 void 0 ? _a : es 00021d30: 63 61 70 65 54 65 6d 70 6c 61 74 65 53 75 62 73 capeTemplateSubs 00021d40: 74 69 74 75 74 69 6f 6e 28 65 73 63 61 70 65 54 titution(escapeT 00021d50: 65 78 74 28 6e 6f 64 65 2e 74 65 78 74 2c 20 39 ext(node.text, 9 00021d60: 36 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 6 /* CharacterCo 00021d70: 64 65 73 2e 62 61 63 6b 74 69 63 6b 20 2a 2f 29 des.backtick */) 00021d80: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 );. 00021d90: 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e switch (node. 00021da0: 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 kind) {. 00021db0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00021dc0: 20 31 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 14 /* SyntaxKin 00021dd0: 64 2e 4e 6f 53 75 62 73 74 69 74 75 74 69 6f 6e d.NoSubstitution 00021de0: 54 65 6d 70 6c 61 74 65 4c 69 74 65 72 61 6c 20 TemplateLiteral 00021df0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00021e00: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00021e10: 72 6e 20 22 60 22 20 2b 20 72 61 77 54 65 78 74 rn "`" + rawText 00021e20: 20 2b 20 22 60 22 3b 0a 20 20 20 20 20 20 20 20 + "`";. 00021e30: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00021e40: 20 31 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 15 /* SyntaxKin 00021e50: 64 2e 54 65 6d 70 6c 61 74 65 48 65 61 64 20 2a d.TemplateHead * 00021e60: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 00021e70: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00021e80: 6e 20 22 60 22 20 2b 20 72 61 77 54 65 78 74 20 n "`" + rawText 00021e90: 2b 20 22 24 7b 22 3b 0a 20 20 20 20 20 20 20 20 + "${";. 00021ea0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00021eb0: 20 31 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 16 /* SyntaxKin 00021ec0: 64 2e 54 65 6d 70 6c 61 74 65 4d 69 64 64 6c 65 d.TemplateMiddle 00021ed0: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00021ee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00021ef0: 75 72 6e 20 22 7d 22 20 2b 20 72 61 77 54 65 78 urn "}" + rawTex 00021f00: 74 20 2b 20 22 24 7b 22 3b 0a 20 20 20 20 20 20 t + "${";. 00021f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 00021f20: 73 65 20 31 37 20 2f 2a 20 53 79 6e 74 61 78 4b se 17 /* SyntaxK 00021f30: 69 6e 64 2e 54 65 6d 70 6c 61 74 65 54 61 69 6c ind.TemplateTail 00021f40: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00021f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00021f60: 75 72 6e 20 22 7d 22 20 2b 20 72 61 77 54 65 78 urn "}" + rawTex 00021f70: 74 20 2b 20 22 60 22 3b 0a 20 20 20 20 20 20 20 t + "`";. 00021f80: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 00021f90: 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b break 00021fa0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a ;. }. 00021fb0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00021fc0: 20 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 8 /* SyntaxKind 00021fd0: 2e 4e 75 6d 65 72 69 63 4c 69 74 65 72 61 6c 20 .NumericLiteral 00021fe0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00021ff0: 63 61 73 65 20 39 20 2f 2a 20 53 79 6e 74 61 78 case 9 /* Syntax 00022000: 4b 69 6e 64 2e 42 69 67 49 6e 74 4c 69 74 65 72 Kind.BigIntLiter 00022010: 61 6c 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 al */:. 00022020: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 00022030: 64 65 2e 74 65 78 74 3b 0a 20 20 20 20 20 20 20 de.text;. 00022040: 20 20 20 20 20 63 61 73 65 20 31 33 20 2f 2a 20 case 13 /* 00022050: 53 79 6e 74 61 78 4b 69 6e 64 2e 52 65 67 75 6c SyntaxKind.Regul 00022060: 61 72 45 78 70 72 65 73 73 69 6f 6e 4c 69 74 65 arExpressionLite 00022070: 72 61 6c 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ral */:. 00022080: 20 20 20 20 20 20 20 20 69 66 20 28 66 6c 61 67 if (flag 00022090: 73 20 26 20 34 20 2f 2a 20 47 65 74 4c 69 74 65 s & 4 /* GetLite 000220a0: 72 61 6c 54 65 78 74 46 6c 61 67 73 2e 54 65 72 ralTextFlags.Ter 000220b0: 6d 69 6e 61 74 65 55 6e 74 65 72 6d 69 6e 61 74 minateUnterminat 000220c0: 65 64 4c 69 74 65 72 61 6c 73 20 2a 2f 20 26 26 edLiterals */ && 000220d0: 20 6e 6f 64 65 2e 69 73 55 6e 74 65 72 6d 69 6e node.isUntermin 000220e0: 61 74 65 64 29 20 7b 0a 20 20 20 20 20 20 20 20 ated) {. 000220f0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00022100: 72 6e 20 6e 6f 64 65 2e 74 65 78 74 20 2b 20 28 rn node.text + ( 00022110: 6e 6f 64 65 2e 74 65 78 74 2e 63 68 61 72 43 6f node.text.charCo 00022120: 64 65 41 74 28 6e 6f 64 65 2e 74 65 78 74 2e 6c deAt(node.text.l 00022130: 65 6e 67 74 68 20 2d 20 31 29 20 3d 3d 3d 20 39 ength - 1) === 9 00022140: 32 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 2 /* CharacterCo 00022150: 64 65 73 2e 62 61 63 6b 73 6c 61 73 68 20 2a 2f des.backslash */ 00022160: 20 3f 20 22 20 2f 22 20 3a 20 22 2f 22 29 3b 0a ? " /" : "/");. 00022170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00022180: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 }. 00022190: 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 74 65 return node.te 000221a0: 78 74 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 xt;. }. 000221b0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 000221c0: 44 65 62 75 67 2e 66 61 69 6c 28 22 4c 69 74 65 Debug.fail("Lite 000221d0: 72 61 6c 20 6b 69 6e 64 20 27 22 2e 63 6f 6e 63 ral kind '".conc 000221e0: 61 74 28 6e 6f 64 65 2e 6b 69 6e 64 2c 20 22 27 at(node.kind, "' 000221f0: 20 6e 6f 74 20 61 63 63 6f 75 6e 74 65 64 20 66 not accounted f 00022200: 6f 72 2e 22 29 29 3b 0a 20 20 20 20 7d 0a 20 20 or."));. }. 00022210: 20 20 74 73 2e 67 65 74 4c 69 74 65 72 61 6c 54 ts.getLiteralT 00022220: 65 78 74 20 3d 20 67 65 74 4c 69 74 65 72 61 6c ext = getLiteral 00022230: 54 65 78 74 3b 0a 20 20 20 20 66 75 6e 63 74 69 Text;. functi 00022240: 6f 6e 20 63 61 6e 55 73 65 4f 72 69 67 69 6e 61 on canUseOrigina 00022250: 6c 54 65 78 74 28 6e 6f 64 65 2c 20 66 6c 61 67 lText(node, flag 00022260: 73 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 s) {. if 00022270: 28 6e 6f 64 65 49 73 53 79 6e 74 68 65 73 69 7a (nodeIsSynthesiz 00022280: 65 64 28 6e 6f 64 65 29 20 7c 7c 20 21 6e 6f 64 ed(node) || !nod 00022290: 65 2e 70 61 72 65 6e 74 20 7c 7c 20 28 66 6c 61 e.parent || (fla 000222a0: 67 73 20 26 20 34 20 2f 2a 20 47 65 74 4c 69 74 gs & 4 /* GetLit 000222b0: 65 72 61 6c 54 65 78 74 46 6c 61 67 73 2e 54 65 eralTextFlags.Te 000222c0: 72 6d 69 6e 61 74 65 55 6e 74 65 72 6d 69 6e 61 rminateUntermina 000222d0: 74 65 64 4c 69 74 65 72 61 6c 73 20 2a 2f 20 26 tedLiterals */ & 000222e0: 26 20 6e 6f 64 65 2e 69 73 55 6e 74 65 72 6d 69 & node.isUntermi 000222f0: 6e 61 74 65 64 29 29 20 7b 0a 20 20 20 20 20 20 nated)) {. 00022300: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c return fal 00022310: 73 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 se;. }. 00022320: 20 20 20 20 20 20 69 66 20 28 74 73 2e 69 73 4e if (ts.isN 00022330: 75 6d 65 72 69 63 4c 69 74 65 72 61 6c 28 6e 6f umericLiteral(no 00022340: 64 65 29 20 26 26 20 6e 6f 64 65 2e 6e 75 6d 65 de) && node.nume 00022350: 72 69 63 4c 69 74 65 72 61 6c 46 6c 61 67 73 20 ricLiteralFlags 00022360: 26 20 35 31 32 20 2f 2a 20 54 6f 6b 65 6e 46 6c & 512 /* TokenFl 00022370: 61 67 73 2e 43 6f 6e 74 61 69 6e 73 53 65 70 61 ags.ContainsSepa 00022380: 72 61 74 6f 72 20 2a 2f 29 20 7b 0a 20 20 20 20 rator */) {. 00022390: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 return ! 000223a0: 21 28 66 6c 61 67 73 20 26 20 38 20 2f 2a 20 47 !(flags & 8 /* G 000223b0: 65 74 4c 69 74 65 72 61 6c 54 65 78 74 46 6c 61 etLiteralTextFla 000223c0: 67 73 2e 41 6c 6c 6f 77 4e 75 6d 65 72 69 63 53 gs.AllowNumericS 000223d0: 65 70 61 72 61 74 6f 72 20 2a 2f 29 3b 0a 20 20 eparator */);. 000223e0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 000223f0: 72 65 74 75 72 6e 20 21 74 73 2e 69 73 42 69 67 return !ts.isBig 00022400: 49 6e 74 4c 69 74 65 72 61 6c 28 6e 6f 64 65 29 IntLiteral(node) 00022410: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 ;. }. func 00022420: 74 69 6f 6e 20 67 65 74 54 65 78 74 4f 66 43 6f tion getTextOfCo 00022430: 6e 73 74 61 6e 74 56 61 6c 75 65 28 76 61 6c 75 nstantValue(valu 00022440: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 e) {. ret 00022450: 75 72 6e 20 74 73 2e 69 73 53 74 72 69 6e 67 28 urn ts.isString( 00022460: 76 61 6c 75 65 29 20 3f 20 27 22 27 20 2b 20 65 value) ? '"' + e 00022470: 73 63 61 70 65 4e 6f 6e 41 73 63 69 69 53 74 72 scapeNonAsciiStr 00022480: 69 6e 67 28 76 61 6c 75 65 29 20 2b 20 27 22 27 ing(value) + '"' 00022490: 20 3a 20 22 22 20 2b 20 76 61 6c 75 65 3b 0a 20 : "" + value;. 000224a0: 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 54 }. ts.getT 000224b0: 65 78 74 4f 66 43 6f 6e 73 74 61 6e 74 56 61 6c extOfConstantVal 000224c0: 75 65 20 3d 20 67 65 74 54 65 78 74 4f 66 43 6f ue = getTextOfCo 000224d0: 6e 73 74 61 6e 74 56 61 6c 75 65 3b 0a 20 20 20 nstantValue;. 000224e0: 20 2f 2f 20 4d 61 6b 65 20 61 6e 20 69 64 65 6e // Make an iden 000224f0: 74 69 66 69 65 72 20 66 72 6f 6d 20 61 6e 20 65 tifier from an e 00022500: 78 74 65 72 6e 61 6c 20 6d 6f 64 75 6c 65 20 6e xternal module n 00022510: 61 6d 65 20 62 79 20 65 78 74 72 61 63 74 69 6e ame by extractin 00022520: 67 20 74 68 65 20 73 74 72 69 6e 67 20 61 66 74 g the string aft 00022530: 65 72 20 74 68 65 20 6c 61 73 74 20 22 2f 22 20 er the last "/" 00022540: 61 6e 64 20 72 65 70 6c 61 63 69 6e 67 0a 20 20 and replacing. 00022550: 20 20 2f 2f 20 61 6c 6c 20 6e 6f 6e 2d 61 6c 70 // all non-alp 00022560: 68 61 6e 75 6d 65 72 69 63 20 63 68 61 72 61 63 hanumeric charac 00022570: 74 65 72 73 20 77 69 74 68 20 75 6e 64 65 72 73 ters with unders 00022580: 63 6f 72 65 73 0a 20 20 20 20 66 75 6e 63 74 69 cores. functi 00022590: 6f 6e 20 6d 61 6b 65 49 64 65 6e 74 69 66 69 65 on makeIdentifie 000225a0: 72 46 72 6f 6d 4d 6f 64 75 6c 65 4e 61 6d 65 28 rFromModuleName( 000225b0: 6d 6f 64 75 6c 65 4e 61 6d 65 29 20 7b 0a 20 20 moduleName) {. 000225c0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 000225d0: 67 65 74 42 61 73 65 46 69 6c 65 4e 61 6d 65 28 getBaseFileName( 000225e0: 6d 6f 64 75 6c 65 4e 61 6d 65 29 2e 72 65 70 6c moduleName).repl 000225f0: 61 63 65 28 2f 5e 28 5c 64 29 2f 2c 20 22 5f 24 ace(/^(\d)/, "_$ 00022600: 31 22 29 2e 72 65 70 6c 61 63 65 28 2f 5c 57 2f 1").replace(/\W/ 00022610: 67 2c 20 22 5f 22 29 3b 0a 20 20 20 20 7d 0a 20 g, "_");. }. 00022620: 20 20 20 74 73 2e 6d 61 6b 65 49 64 65 6e 74 69 ts.makeIdenti 00022630: 66 69 65 72 46 72 6f 6d 4d 6f 64 75 6c 65 4e 61 fierFromModuleNa 00022640: 6d 65 20 3d 20 6d 61 6b 65 49 64 65 6e 74 69 66 me = makeIdentif 00022650: 69 65 72 46 72 6f 6d 4d 6f 64 75 6c 65 4e 61 6d ierFromModuleNam 00022660: 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 e;. function 00022670: 69 73 42 6c 6f 63 6b 4f 72 43 61 74 63 68 53 63 isBlockOrCatchSc 00022680: 6f 70 65 64 28 64 65 63 6c 61 72 61 74 69 6f 6e oped(declaration 00022690: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 000226a0: 72 6e 20 28 74 73 2e 67 65 74 43 6f 6d 62 69 6e rn (ts.getCombin 000226b0: 65 64 4e 6f 64 65 46 6c 61 67 73 28 64 65 63 6c edNodeFlags(decl 000226c0: 61 72 61 74 69 6f 6e 29 20 26 20 33 20 2f 2a 20 aration) & 3 /* 000226d0: 4e 6f 64 65 46 6c 61 67 73 2e 42 6c 6f 63 6b 53 NodeFlags.BlockS 000226e0: 63 6f 70 65 64 20 2a 2f 29 20 21 3d 3d 20 30 20 coped */) !== 0 000226f0: 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 ||. i 00022700: 73 43 61 74 63 68 43 6c 61 75 73 65 56 61 72 69 sCatchClauseVari 00022710: 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 4f ableDeclarationO 00022720: 72 42 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 28 rBindingElement( 00022730: 64 65 63 6c 61 72 61 74 69 6f 6e 29 3b 0a 20 20 declaration);. 00022740: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 42 6c 6f }. ts.isBlo 00022750: 63 6b 4f 72 43 61 74 63 68 53 63 6f 70 65 64 20 ckOrCatchScoped 00022760: 3d 20 69 73 42 6c 6f 63 6b 4f 72 43 61 74 63 68 = isBlockOrCatch 00022770: 53 63 6f 70 65 64 3b 0a 20 20 20 20 66 75 6e 63 Scoped;. func 00022780: 74 69 6f 6e 20 69 73 43 61 74 63 68 43 6c 61 75 tion isCatchClau 00022790: 73 65 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 seVariableDeclar 000227a0: 61 74 69 6f 6e 4f 72 42 69 6e 64 69 6e 67 45 6c ationOrBindingEl 000227b0: 65 6d 65 6e 74 28 64 65 63 6c 61 72 61 74 69 6f ement(declaratio 000227c0: 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 n) {. var 000227d0: 20 6e 6f 64 65 20 3d 20 67 65 74 52 6f 6f 74 44 node = getRootD 000227e0: 65 63 6c 61 72 61 74 69 6f 6e 28 64 65 63 6c 61 eclaration(decla 000227f0: 72 61 74 69 6f 6e 29 3b 0a 20 20 20 20 20 20 20 ration);. 00022800: 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 6b 69 6e return node.kin 00022810: 64 20 3d 3d 3d 20 32 35 34 20 2f 2a 20 53 79 6e d === 254 /* Syn 00022820: 74 61 78 4b 69 6e 64 2e 56 61 72 69 61 62 6c 65 taxKind.Variable 00022830: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 20 26 Declaration */ & 00022840: 26 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b 69 & node.parent.ki 00022850: 6e 64 20 3d 3d 3d 20 32 39 32 20 2f 2a 20 53 79 nd === 292 /* Sy 00022860: 6e 74 61 78 4b 69 6e 64 2e 43 61 74 63 68 43 6c ntaxKind.CatchCl 00022870: 61 75 73 65 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 ause */;. }. 00022880: 20 20 20 74 73 2e 69 73 43 61 74 63 68 43 6c 61 ts.isCatchCla 00022890: 75 73 65 56 61 72 69 61 62 6c 65 44 65 63 6c 61 useVariableDecla 000228a0: 72 61 74 69 6f 6e 4f 72 42 69 6e 64 69 6e 67 45 rationOrBindingE 000228b0: 6c 65 6d 65 6e 74 20 3d 20 69 73 43 61 74 63 68 lement = isCatch 000228c0: 43 6c 61 75 73 65 56 61 72 69 61 62 6c 65 44 65 ClauseVariableDe 000228d0: 63 6c 61 72 61 74 69 6f 6e 4f 72 42 69 6e 64 69 clarationOrBindi 000228e0: 6e 67 45 6c 65 6d 65 6e 74 3b 0a 20 20 20 20 66 ngElement;. f 000228f0: 75 6e 63 74 69 6f 6e 20 69 73 41 6d 62 69 65 6e unction isAmbien 00022900: 74 4d 6f 64 75 6c 65 28 6e 6f 64 65 29 20 7b 0a tModule(node) {. 00022910: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 00022920: 73 2e 69 73 4d 6f 64 75 6c 65 44 65 63 6c 61 72 s.isModuleDeclar 00022930: 61 74 69 6f 6e 28 6e 6f 64 65 29 20 26 26 20 28 ation(node) && ( 00022940: 6e 6f 64 65 2e 6e 61 6d 65 2e 6b 69 6e 64 20 3d node.name.kind = 00022950: 3d 3d 20 31 30 20 2f 2a 20 53 79 6e 74 61 78 4b == 10 /* SyntaxK 00022960: 69 6e 64 2e 53 74 72 69 6e 67 4c 69 74 65 72 61 ind.StringLitera 00022970: 6c 20 2a 2f 20 7c 7c 20 69 73 47 6c 6f 62 61 6c l */ || isGlobal 00022980: 53 63 6f 70 65 41 75 67 6d 65 6e 74 61 74 69 6f ScopeAugmentatio 00022990: 6e 28 6e 6f 64 65 29 29 3b 0a 20 20 20 20 7d 0a n(node));. }. 000229a0: 20 20 20 20 74 73 2e 69 73 41 6d 62 69 65 6e 74 ts.isAmbient 000229b0: 4d 6f 64 75 6c 65 20 3d 20 69 73 41 6d 62 69 65 Module = isAmbie 000229c0: 6e 74 4d 6f 64 75 6c 65 3b 0a 20 20 20 20 66 75 ntModule;. fu 000229d0: 6e 63 74 69 6f 6e 20 69 73 4d 6f 64 75 6c 65 57 nction isModuleW 000229e0: 69 74 68 53 74 72 69 6e 67 4c 69 74 65 72 61 6c ithStringLiteral 000229f0: 4e 61 6d 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 Name(node) {. 00022a00: 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 return ts.i 00022a10: 73 4d 6f 64 75 6c 65 44 65 63 6c 61 72 61 74 69 sModuleDeclarati 00022a20: 6f 6e 28 6e 6f 64 65 29 20 26 26 20 6e 6f 64 65 on(node) && node 00022a30: 2e 6e 61 6d 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 .name.kind === 1 00022a40: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 00022a50: 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 20 2a 2f StringLiteral */ 00022a60: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 00022a70: 73 4d 6f 64 75 6c 65 57 69 74 68 53 74 72 69 6e sModuleWithStrin 00022a80: 67 4c 69 74 65 72 61 6c 4e 61 6d 65 20 3d 20 69 gLiteralName = i 00022a90: 73 4d 6f 64 75 6c 65 57 69 74 68 53 74 72 69 6e sModuleWithStrin 00022aa0: 67 4c 69 74 65 72 61 6c 4e 61 6d 65 3b 0a 20 20 gLiteralName;. 00022ab0: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4e 6f 6e function isNon 00022ac0: 47 6c 6f 62 61 6c 41 6d 62 69 65 6e 74 4d 6f 64 GlobalAmbientMod 00022ad0: 75 6c 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ule(node) {. 00022ae0: 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 return ts.is 00022af0: 4d 6f 64 75 6c 65 44 65 63 6c 61 72 61 74 69 6f ModuleDeclaratio 00022b00: 6e 28 6e 6f 64 65 29 20 26 26 20 74 73 2e 69 73 n(node) && ts.is 00022b10: 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 28 6e 6f StringLiteral(no 00022b20: 64 65 2e 6e 61 6d 65 29 3b 0a 20 20 20 20 7d 0a de.name);. }. 00022b30: 20 20 20 20 74 73 2e 69 73 4e 6f 6e 47 6c 6f 62 ts.isNonGlob 00022b40: 61 6c 41 6d 62 69 65 6e 74 4d 6f 64 75 6c 65 20 alAmbientModule 00022b50: 3d 20 69 73 4e 6f 6e 47 6c 6f 62 61 6c 41 6d 62 = isNonGlobalAmb 00022b60: 69 65 6e 74 4d 6f 64 75 6c 65 3b 0a 20 20 20 20 ientModule;. 00022b70: 2f 2a 2a 0a 20 20 20 20 20 2a 20 41 6e 20 65 66 /**. * An ef 00022b80: 66 65 63 74 69 76 65 20 6d 6f 64 75 6c 65 20 28 fective module ( 00022b90: 6e 61 6d 65 73 70 61 63 65 29 20 64 65 63 6c 61 namespace) decla 00022ba0: 72 61 74 69 6f 6e 20 69 73 20 65 69 74 68 65 72 ration is either 00022bb0: 0a 20 20 20 20 20 2a 20 31 2e 20 41 6e 20 61 63 . * 1. An ac 00022bc0: 74 75 61 6c 20 64 65 63 6c 61 72 61 74 69 6f 6e tual declaration 00022bd0: 3a 20 6e 61 6d 65 73 70 61 63 65 20 58 20 7b 20 : namespace X { 00022be0: 2e 2e 2e 20 7d 0a 20 20 20 20 20 2a 20 32 2e 20 ... }. * 2. 00022bf0: 41 20 4a 61 76 61 73 63 72 69 70 74 20 64 65 63 A Javascript dec 00022c00: 6c 61 72 61 74 69 6f 6e 2c 20 77 68 69 63 68 20 laration, which 00022c10: 69 73 3a 0a 20 20 20 20 20 2a 20 20 20 20 41 6e is:. * An 00022c20: 20 69 64 65 6e 74 69 66 69 65 72 20 69 6e 20 61 identifier in a 00022c30: 20 6e 65 73 74 65 64 20 70 72 6f 70 65 72 74 79 nested property 00022c40: 20 61 63 63 65 73 73 20 65 78 70 72 65 73 73 69 access expressi 00022c50: 6f 6e 3a 20 59 20 69 6e 20 60 58 2e 59 2e 5a 20 on: Y in `X.Y.Z 00022c60: 3d 20 7b 20 2e 2e 2e 20 7d 60 0a 20 20 20 20 20 = { ... }`. 00022c70: 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 */. function 00022c80: 69 73 45 66 66 65 63 74 69 76 65 4d 6f 64 75 6c isEffectiveModul 00022c90: 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 eDeclaration(nod 00022ca0: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 e) {. ret 00022cb0: 75 72 6e 20 74 73 2e 69 73 4d 6f 64 75 6c 65 44 urn ts.isModuleD 00022cc0: 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 eclaration(node) 00022cd0: 20 7c 7c 20 74 73 2e 69 73 49 64 65 6e 74 69 66 || ts.isIdentif 00022ce0: 69 65 72 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d ier(node);. } 00022cf0: 0a 20 20 20 20 74 73 2e 69 73 45 66 66 65 63 74 . ts.isEffect 00022d00: 69 76 65 4d 6f 64 75 6c 65 44 65 63 6c 61 72 61 iveModuleDeclara 00022d10: 74 69 6f 6e 20 3d 20 69 73 45 66 66 65 63 74 69 tion = isEffecti 00022d20: 76 65 4d 6f 64 75 6c 65 44 65 63 6c 61 72 61 74 veModuleDeclarat 00022d30: 69 6f 6e 3b 0a 20 20 20 20 2f 2a 2a 20 47 69 76 ion;. /** Giv 00022d40: 65 6e 20 61 20 73 79 6d 62 6f 6c 20 66 6f 72 20 en a symbol for 00022d50: 61 20 6d 6f 64 75 6c 65 2c 20 63 68 65 63 6b 73 a module, checks 00022d60: 20 74 68 61 74 20 69 74 20 69 73 20 61 20 73 68 that it is a sh 00022d70: 6f 72 74 68 61 6e 64 20 61 6d 62 69 65 6e 74 20 orthand ambient 00022d80: 6d 6f 64 75 6c 65 2e 20 2a 2f 0a 20 20 20 20 66 module. */. f 00022d90: 75 6e 63 74 69 6f 6e 20 69 73 53 68 6f 72 74 68 unction isShorth 00022da0: 61 6e 64 41 6d 62 69 65 6e 74 4d 6f 64 75 6c 65 andAmbientModule 00022db0: 53 79 6d 62 6f 6c 28 6d 6f 64 75 6c 65 53 79 6d Symbol(moduleSym 00022dc0: 62 6f 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 72 bol) {. r 00022dd0: 65 74 75 72 6e 20 69 73 53 68 6f 72 74 68 61 6e eturn isShorthan 00022de0: 64 41 6d 62 69 65 6e 74 4d 6f 64 75 6c 65 28 6d dAmbientModule(m 00022df0: 6f 64 75 6c 65 53 79 6d 62 6f 6c 2e 76 61 6c 75 oduleSymbol.valu 00022e00: 65 44 65 63 6c 61 72 61 74 69 6f 6e 29 3b 0a 20 eDeclaration);. 00022e10: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 53 68 }. ts.isSh 00022e20: 6f 72 74 68 61 6e 64 41 6d 62 69 65 6e 74 4d 6f orthandAmbientMo 00022e30: 64 75 6c 65 53 79 6d 62 6f 6c 20 3d 20 69 73 53 duleSymbol = isS 00022e40: 68 6f 72 74 68 61 6e 64 41 6d 62 69 65 6e 74 4d horthandAmbientM 00022e50: 6f 64 75 6c 65 53 79 6d 62 6f 6c 3b 0a 20 20 20 oduleSymbol;. 00022e60: 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 68 6f 72 function isShor 00022e70: 74 68 61 6e 64 41 6d 62 69 65 6e 74 4d 6f 64 75 thandAmbientModu 00022e80: 6c 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 le(node) {. 00022e90: 20 20 20 2f 2f 20 54 68 65 20 6f 6e 6c 79 20 6b // The only k 00022ea0: 69 6e 64 20 6f 66 20 6d 6f 64 75 6c 65 20 74 68 ind of module th 00022eb0: 61 74 20 63 61 6e 20 62 65 20 6d 69 73 73 69 6e at can be missin 00022ec0: 67 20 61 20 62 6f 64 79 20 69 73 20 61 20 73 68 g a body is a sh 00022ed0: 6f 72 74 68 61 6e 64 20 61 6d 62 69 65 6e 74 20 orthand ambient 00022ee0: 6d 6f 64 75 6c 65 2e 0a 20 20 20 20 20 20 20 20 module.. 00022ef0: 72 65 74 75 72 6e 20 21 21 6e 6f 64 65 20 26 26 return !!node && 00022f00: 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 node.kind === 2 00022f10: 36 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 61 /* SyntaxKind 00022f20: 2e 4d 6f 64 75 6c 65 44 65 63 6c 61 72 61 74 69 .ModuleDeclarati 00022f30: 6f 6e 20 2a 2f 20 26 26 20 28 21 6e 6f 64 65 2e on */ && (!node. 00022f40: 62 6f 64 79 29 3b 0a 20 20 20 20 7d 0a 20 20 20 body);. }. 00022f50: 20 66 75 6e 63 74 69 6f 6e 20 69 73 42 6c 6f 63 function isBloc 00022f60: 6b 53 63 6f 70 65 64 43 6f 6e 74 61 69 6e 65 72 kScopedContainer 00022f70: 54 6f 70 4c 65 76 65 6c 28 6e 6f 64 65 29 20 7b TopLevel(node) { 00022f80: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 00022f90: 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 33 30 node.kind === 30 00022fa0: 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 5 /* SyntaxKind. 00022fb0: 53 6f 75 72 63 65 46 69 6c 65 20 2a 2f 20 7c 7c SourceFile */ || 00022fc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 . nod 00022fd0: 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 36 31 20 2f e.kind === 261 / 00022fe0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 * SyntaxKind.Mod 00022ff0: 75 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a uleDeclaration * 00023000: 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 / ||. 00023010: 20 74 73 2e 69 73 46 75 6e 63 74 69 6f 6e 4c 69 ts.isFunctionLi 00023020: 6b 65 4f 72 43 6c 61 73 73 53 74 61 74 69 63 42 keOrClassStaticB 00023030: 6c 6f 63 6b 44 65 63 6c 61 72 61 74 69 6f 6e 28 lockDeclaration( 00023040: 6e 6f 64 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 node);. }. 00023050: 20 74 73 2e 69 73 42 6c 6f 63 6b 53 63 6f 70 65 ts.isBlockScope 00023060: 64 43 6f 6e 74 61 69 6e 65 72 54 6f 70 4c 65 76 dContainerTopLev 00023070: 65 6c 20 3d 20 69 73 42 6c 6f 63 6b 53 63 6f 70 el = isBlockScop 00023080: 65 64 43 6f 6e 74 61 69 6e 65 72 54 6f 70 4c 65 edContainerTopLe 00023090: 76 65 6c 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f vel;. functio 000230a0: 6e 20 69 73 47 6c 6f 62 61 6c 53 63 6f 70 65 41 n isGlobalScopeA 000230b0: 75 67 6d 65 6e 74 61 74 69 6f 6e 28 6d 6f 64 75 ugmentation(modu 000230c0: 6c 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 le) {. re 000230d0: 74 75 72 6e 20 21 21 28 6d 6f 64 75 6c 65 2e 66 turn !!(module.f 000230e0: 6c 61 67 73 20 26 20 31 30 32 34 20 2f 2a 20 4e lags & 1024 /* N 000230f0: 6f 64 65 46 6c 61 67 73 2e 47 6c 6f 62 61 6c 41 odeFlags.GlobalA 00023100: 75 67 6d 65 6e 74 61 74 69 6f 6e 20 2a 2f 29 3b ugmentation */); 00023110: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00023120: 47 6c 6f 62 61 6c 53 63 6f 70 65 41 75 67 6d 65 GlobalScopeAugme 00023130: 6e 74 61 74 69 6f 6e 20 3d 20 69 73 47 6c 6f 62 ntation = isGlob 00023140: 61 6c 53 63 6f 70 65 41 75 67 6d 65 6e 74 61 74 alScopeAugmentat 00023150: 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ion;. functio 00023160: 6e 20 69 73 45 78 74 65 72 6e 61 6c 4d 6f 64 75 n isExternalModu 00023170: 6c 65 41 75 67 6d 65 6e 74 61 74 69 6f 6e 28 6e leAugmentation(n 00023180: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 00023190: 65 74 75 72 6e 20 69 73 41 6d 62 69 65 6e 74 4d eturn isAmbientM 000231a0: 6f 64 75 6c 65 28 6e 6f 64 65 29 20 26 26 20 69 odule(node) && i 000231b0: 73 4d 6f 64 75 6c 65 41 75 67 6d 65 6e 74 61 74 sModuleAugmentat 000231c0: 69 6f 6e 45 78 74 65 72 6e 61 6c 28 6e 6f 64 65 ionExternal(node 000231d0: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 000231e0: 69 73 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 isExternalModule 000231f0: 41 75 67 6d 65 6e 74 61 74 69 6f 6e 20 3d 20 69 Augmentation = i 00023200: 73 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 41 sExternalModuleA 00023210: 75 67 6d 65 6e 74 61 74 69 6f 6e 3b 0a 20 20 20 ugmentation;. 00023220: 20 66 75 6e 63 74 69 6f 6e 20 69 73 4d 6f 64 75 function isModu 00023230: 6c 65 41 75 67 6d 65 6e 74 61 74 69 6f 6e 45 78 leAugmentationEx 00023240: 74 65 72 6e 61 6c 28 6e 6f 64 65 29 20 7b 0a 20 ternal(node) {. 00023250: 20 20 20 20 20 20 20 2f 2f 20 65 78 74 65 72 6e // extern 00023260: 61 6c 20 6d 6f 64 75 6c 65 20 61 75 67 6d 65 6e al module augmen 00023270: 74 61 74 69 6f 6e 20 69 73 20 61 20 61 6d 62 69 tation is a ambi 00023280: 65 6e 74 20 6d 6f 64 75 6c 65 20 64 65 63 6c 61 ent module decla 00023290: 72 61 74 69 6f 6e 20 74 68 61 74 20 69 73 20 65 ration that is e 000232a0: 69 74 68 65 72 3a 0a 20 20 20 20 20 20 20 20 2f ither:. / 000232b0: 2f 20 2d 20 64 65 66 69 6e 65 64 20 69 6e 20 74 / - defined in t 000232c0: 68 65 20 74 6f 70 20 6c 65 76 65 6c 20 73 63 6f he top level sco 000232d0: 70 65 20 61 6e 64 20 73 6f 75 72 63 65 20 66 69 pe and source fi 000232e0: 6c 65 20 69 73 20 61 6e 20 65 78 74 65 72 6e 61 le is an externa 000232f0: 6c 20 6d 6f 64 75 6c 65 0a 20 20 20 20 20 20 20 l module. 00023300: 20 2f 2f 20 2d 20 64 65 66 69 6e 65 64 20 69 6e // - defined in 00023310: 73 69 64 65 20 61 6d 62 69 65 6e 74 20 6d 6f 64 side ambient mod 00023320: 75 6c 65 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 ule declaration 00023330: 6c 6f 63 61 74 65 64 20 69 6e 20 74 68 65 20 74 located in the t 00023340: 6f 70 20 6c 65 76 65 6c 20 73 63 6f 70 65 20 61 op level scope a 00023350: 6e 64 20 73 6f 75 72 63 65 20 66 69 6c 65 20 6e nd source file n 00023360: 6f 74 20 61 6e 20 65 78 74 65 72 6e 61 6c 20 6d ot an external m 00023370: 6f 64 75 6c 65 0a 20 20 20 20 20 20 20 20 73 77 odule. sw 00023380: 69 74 63 68 20 28 6e 6f 64 65 2e 70 61 72 65 6e itch (node.paren 00023390: 74 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 t.kind) {. 000233a0: 20 20 20 20 20 20 63 61 73 65 20 33 30 35 20 2f case 305 / 000233b0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 6f 75 * SyntaxKind.Sou 000233c0: 72 63 65 46 69 6c 65 20 2a 2f 3a 0a 20 20 20 20 rceFile */:. 000233d0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 000233e0: 72 6e 20 74 73 2e 69 73 45 78 74 65 72 6e 61 6c rn ts.isExternal 000233f0: 4d 6f 64 75 6c 65 28 6e 6f 64 65 2e 70 61 72 65 Module(node.pare 00023400: 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 nt);. 00023410: 20 63 61 73 65 20 32 36 32 20 2f 2a 20 53 79 6e case 262 /* Syn 00023420: 74 61 78 4b 69 6e 64 2e 4d 6f 64 75 6c 65 42 6c taxKind.ModuleBl 00023430: 6f 63 6b 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ock */:. 00023440: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 return i 00023450: 73 41 6d 62 69 65 6e 74 4d 6f 64 75 6c 65 28 6e sAmbientModule(n 00023460: 6f 64 65 2e 70 61 72 65 6e 74 2e 70 61 72 65 6e ode.parent.paren 00023470: 74 29 20 26 26 20 74 73 2e 69 73 53 6f 75 72 63 t) && ts.isSourc 00023480: 65 46 69 6c 65 28 6e 6f 64 65 2e 70 61 72 65 6e eFile(node.paren 00023490: 74 2e 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 29 t.parent.parent) 000234a0: 20 26 26 20 21 74 73 2e 69 73 45 78 74 65 72 6e && !ts.isExtern 000234b0: 61 6c 4d 6f 64 75 6c 65 28 6e 6f 64 65 2e 70 61 alModule(node.pa 000234c0: 72 65 6e 74 2e 70 61 72 65 6e 74 2e 70 61 72 65 rent.parent.pare 000234d0: 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 nt);. }. 000234e0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 return fa 000234f0: 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 lse;. }. t 00023500: 73 2e 69 73 4d 6f 64 75 6c 65 41 75 67 6d 65 6e s.isModuleAugmen 00023510: 74 61 74 69 6f 6e 45 78 74 65 72 6e 61 6c 20 3d tationExternal = 00023520: 20 69 73 4d 6f 64 75 6c 65 41 75 67 6d 65 6e 74 isModuleAugment 00023530: 61 74 69 6f 6e 45 78 74 65 72 6e 61 6c 3b 0a 20 ationExternal;. 00023540: 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4e function getN 00023550: 6f 6e 41 75 67 6d 65 6e 74 61 74 69 6f 6e 44 65 onAugmentationDe 00023560: 63 6c 61 72 61 74 69 6f 6e 28 73 79 6d 62 6f 6c claration(symbol 00023570: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 00023580: 5f 61 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 _a;. retu 00023590: 72 6e 20 28 5f 61 20 3d 20 73 79 6d 62 6f 6c 2e rn (_a = symbol. 000235a0: 64 65 63 6c 61 72 61 74 69 6f 6e 73 29 20 3d 3d declarations) == 000235b0: 3d 20 6e 75 6c 6c 20 7c 7c 20 5f 61 20 3d 3d 3d = null || _a === 000235c0: 20 76 6f 69 64 20 30 20 3f 20 76 6f 69 64 20 30 void 0 ? void 0 000235d0: 20 3a 20 5f 61 2e 66 69 6e 64 28 66 75 6e 63 74 : _a.find(funct 000235e0: 69 6f 6e 20 28 64 29 20 7b 20 72 65 74 75 72 6e ion (d) { return 000235f0: 20 21 69 73 45 78 74 65 72 6e 61 6c 4d 6f 64 75 !isExternalModu 00023600: 6c 65 41 75 67 6d 65 6e 74 61 74 69 6f 6e 28 64 leAugmentation(d 00023610: 29 20 26 26 20 21 28 74 73 2e 69 73 4d 6f 64 75 ) && !(ts.isModu 00023620: 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 64 29 leDeclaration(d) 00023630: 20 26 26 20 69 73 47 6c 6f 62 61 6c 53 63 6f 70 && isGlobalScop 00023640: 65 41 75 67 6d 65 6e 74 61 74 69 6f 6e 28 64 29 eAugmentation(d) 00023650: 29 3b 20 7d 29 3b 0a 20 20 20 20 7d 0a 20 20 20 ); });. }. 00023660: 20 74 73 2e 67 65 74 4e 6f 6e 41 75 67 6d 65 6e ts.getNonAugmen 00023670: 74 61 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 6f tationDeclaratio 00023680: 6e 20 3d 20 67 65 74 4e 6f 6e 41 75 67 6d 65 6e n = getNonAugmen 00023690: 74 61 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 6f tationDeclaratio 000236a0: 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 n;. function 000236b0: 69 73 43 6f 6d 6d 6f 6e 4a 53 43 6f 6e 74 61 69 isCommonJSContai 000236c0: 6e 69 6e 67 4d 6f 64 75 6c 65 4b 69 6e 64 28 6b ningModuleKind(k 000236d0: 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ind) {. r 000236e0: 65 74 75 72 6e 20 6b 69 6e 64 20 3d 3d 3d 20 74 eturn kind === t 000236f0: 73 2e 4d 6f 64 75 6c 65 4b 69 6e 64 2e 43 6f 6d s.ModuleKind.Com 00023700: 6d 6f 6e 4a 53 20 7c 7c 20 6b 69 6e 64 20 3d 3d monJS || kind == 00023710: 3d 20 74 73 2e 4d 6f 64 75 6c 65 4b 69 6e 64 2e = ts.ModuleKind. 00023720: 4e 6f 64 65 31 36 20 7c 7c 20 6b 69 6e 64 20 3d Node16 || kind = 00023730: 3d 3d 20 74 73 2e 4d 6f 64 75 6c 65 4b 69 6e 64 == ts.ModuleKind 00023740: 2e 4e 6f 64 65 4e 65 78 74 3b 0a 20 20 20 20 7d .NodeNext;. } 00023750: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 . function is 00023760: 45 66 66 65 63 74 69 76 65 45 78 74 65 72 6e 61 EffectiveExterna 00023770: 6c 4d 6f 64 75 6c 65 28 6e 6f 64 65 2c 20 63 6f lModule(node, co 00023780: 6d 70 69 6c 65 72 4f 70 74 69 6f 6e 73 29 20 7b mpilerOptions) { 00023790: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 000237a0: 74 73 2e 69 73 45 78 74 65 72 6e 61 6c 4d 6f 64 ts.isExternalMod 000237b0: 75 6c 65 28 6e 6f 64 65 29 20 7c 7c 20 63 6f 6d ule(node) || com 000237c0: 70 69 6c 65 72 4f 70 74 69 6f 6e 73 2e 69 73 6f pilerOptions.iso 000237d0: 6c 61 74 65 64 4d 6f 64 75 6c 65 73 20 7c 7c 20 latedModules || 000237e0: 28 69 73 43 6f 6d 6d 6f 6e 4a 53 43 6f 6e 74 61 (isCommonJSConta 000237f0: 69 6e 69 6e 67 4d 6f 64 75 6c 65 4b 69 6e 64 28 iningModuleKind( 00023800: 67 65 74 45 6d 69 74 4d 6f 64 75 6c 65 4b 69 6e getEmitModuleKin 00023810: 64 28 63 6f 6d 70 69 6c 65 72 4f 70 74 69 6f 6e d(compilerOption 00023820: 73 29 29 20 26 26 20 21 21 6e 6f 64 65 2e 63 6f s)) && !!node.co 00023830: 6d 6d 6f 6e 4a 73 4d 6f 64 75 6c 65 49 6e 64 69 mmonJsModuleIndi 00023840: 63 61 74 6f 72 29 3b 0a 20 20 20 20 7d 0a 20 20 cator);. }. 00023850: 20 20 74 73 2e 69 73 45 66 66 65 63 74 69 76 65 ts.isEffective 00023860: 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 20 3d ExternalModule = 00023870: 20 69 73 45 66 66 65 63 74 69 76 65 45 78 74 65 isEffectiveExte 00023880: 72 6e 61 6c 4d 6f 64 75 6c 65 3b 0a 20 20 20 20 rnalModule;. 00023890: 2f 2a 2a 0a 20 20 20 20 20 2a 20 52 65 74 75 72 /**. * Retur 000238a0: 6e 73 20 77 68 65 74 68 65 72 20 74 68 65 20 73 ns whether the s 000238b0: 6f 75 72 63 65 20 66 69 6c 65 20 77 69 6c 6c 20 ource file will 000238c0: 62 65 20 74 72 65 61 74 65 64 20 61 73 20 69 66 be treated as if 000238d0: 20 69 74 20 77 65 72 65 20 69 6e 20 73 74 72 69 it were in stri 000238e0: 63 74 20 6d 6f 64 65 20 61 74 20 72 75 6e 74 69 ct mode at runti 000238f0: 6d 65 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 me.. */. 00023900: 66 75 6e 63 74 69 6f 6e 20 69 73 45 66 66 65 63 function isEffec 00023910: 74 69 76 65 53 74 72 69 63 74 4d 6f 64 65 53 6f tiveStrictModeSo 00023920: 75 72 63 65 46 69 6c 65 28 6e 6f 64 65 2c 20 63 urceFile(node, c 00023930: 6f 6d 70 69 6c 65 72 4f 70 74 69 6f 6e 73 29 20 ompilerOptions) 00023940: 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 57 65 20 {. // We 00023950: 63 61 6e 20 6f 6e 6c 79 20 76 65 72 69 66 79 20 can only verify 00023960: 73 74 72 69 63 74 20 6d 6f 64 65 20 66 6f 72 20 strict mode for 00023970: 4a 53 2f 54 53 20 66 69 6c 65 73 0a 20 20 20 20 JS/TS files. 00023980: 20 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 65 switch (node 00023990: 2e 73 63 72 69 70 74 4b 69 6e 64 29 20 7b 0a 20 .scriptKind) {. 000239a0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 000239b0: 31 20 2f 2a 20 53 63 72 69 70 74 4b 69 6e 64 2e 1 /* ScriptKind. 000239c0: 4a 53 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 JS */:. 000239d0: 20 20 20 63 61 73 65 20 33 20 2f 2a 20 53 63 72 case 3 /* Scr 000239e0: 69 70 74 4b 69 6e 64 2e 54 53 20 2a 2f 3a 0a 20 iptKind.TS */:. 000239f0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00023a00: 32 20 2f 2a 20 53 63 72 69 70 74 4b 69 6e 64 2e 2 /* ScriptKind. 00023a10: 4a 53 58 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 JSX */:. 00023a20: 20 20 20 20 63 61 73 65 20 34 20 2f 2a 20 53 63 case 4 /* Sc 00023a30: 72 69 70 74 4b 69 6e 64 2e 54 53 58 20 2a 2f 3a riptKind.TSX */: 00023a40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00023a50: 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 break;. 00023a60: 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 default:. 00023a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00023a80: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 urn false;. 00023a90: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 2f 2f 20 }. // 00023aa0: 53 74 72 69 63 74 20 6d 6f 64 65 20 64 6f 65 73 Strict mode does 00023ab0: 20 6e 6f 74 20 6d 61 74 74 65 72 20 66 6f 72 20 not matter for 00023ac0: 64 65 63 6c 61 72 61 74 69 6f 6e 20 66 69 6c 65 declaration file 00023ad0: 73 2e 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e s.. if (n 00023ae0: 6f 64 65 2e 69 73 44 65 63 6c 61 72 61 74 69 6f ode.isDeclaratio 00023af0: 6e 46 69 6c 65 29 20 7b 0a 20 20 20 20 20 20 20 nFile) {. 00023b00: 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 return fals 00023b10: 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 e;. }. 00023b20: 20 20 20 20 20 2f 2f 20 49 66 20 60 61 6c 77 61 // If `alwa 00023b30: 79 73 53 74 72 69 63 74 60 20 69 73 20 73 65 74 ysStrict` is set 00023b40: 2c 20 74 68 65 6e 20 74 72 65 61 74 20 74 68 65 , then treat the 00023b50: 20 66 69 6c 65 20 61 73 20 73 74 72 69 63 74 2e file as strict. 00023b60: 0a 20 20 20 20 20 20 20 20 69 66 20 28 67 65 74 . if (get 00023b70: 53 74 72 69 63 74 4f 70 74 69 6f 6e 56 61 6c 75 StrictOptionValu 00023b80: 65 28 63 6f 6d 70 69 6c 65 72 4f 70 74 69 6f 6e e(compilerOption 00023b90: 73 2c 20 22 61 6c 77 61 79 73 53 74 72 69 63 74 s, "alwaysStrict 00023ba0: 22 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 ")) {. 00023bb0: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 return true;. 00023bc0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00023bd0: 20 2f 2f 20 53 74 61 72 74 69 6e 67 20 77 69 74 // Starting wit 00023be0: 68 20 61 20 22 75 73 65 20 73 74 72 69 63 74 22 h a "use strict" 00023bf0: 20 64 69 72 65 63 74 69 76 65 20 69 6e 64 69 63 directive indic 00023c00: 61 74 65 73 20 74 68 65 20 66 69 6c 65 20 69 73 ates the file is 00023c10: 20 73 74 72 69 63 74 2e 0a 20 20 20 20 20 20 20 strict.. 00023c20: 20 69 66 20 28 74 73 2e 73 74 61 72 74 73 57 69 if (ts.startsWi 00023c30: 74 68 55 73 65 53 74 72 69 63 74 28 6e 6f 64 65 thUseStrict(node 00023c40: 2e 73 74 61 74 65 6d 65 6e 74 73 29 29 20 7b 0a .statements)) {. 00023c50: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00023c60: 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 rn true;. 00023c70: 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 }. if (t 00023c80: 73 2e 69 73 45 78 74 65 72 6e 61 6c 4d 6f 64 75 s.isExternalModu 00023c90: 6c 65 28 6e 6f 64 65 29 20 7c 7c 20 63 6f 6d 70 le(node) || comp 00023ca0: 69 6c 65 72 4f 70 74 69 6f 6e 73 2e 69 73 6f 6c ilerOptions.isol 00023cb0: 61 74 65 64 4d 6f 64 75 6c 65 73 29 20 7b 0a 20 atedModules) {. 00023cc0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 45 43 // EC 00023cd0: 4d 41 53 63 72 69 70 74 20 4d 6f 64 75 6c 65 73 MAScript Modules 00023ce0: 20 61 72 65 20 61 6c 77 61 79 73 20 73 74 72 69 are always stri 00023cf0: 63 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 ct.. 00023d00: 69 66 20 28 67 65 74 45 6d 69 74 4d 6f 64 75 6c if (getEmitModul 00023d10: 65 4b 69 6e 64 28 63 6f 6d 70 69 6c 65 72 4f 70 eKind(compilerOp 00023d20: 74 69 6f 6e 73 29 20 3e 3d 20 74 73 2e 4d 6f 64 tions) >= ts.Mod 00023d30: 75 6c 65 4b 69 6e 64 2e 45 53 32 30 31 35 29 20 uleKind.ES2015) 00023d40: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 00023d50: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 return true;. 00023d60: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 00023d70: 20 20 20 20 20 20 20 20 20 2f 2f 20 4f 74 68 65 // Othe 00023d80: 72 20 6d 6f 64 75 6c 65 73 20 61 72 65 20 73 74 r modules are st 00023d90: 72 69 63 74 20 75 6e 6c 65 73 73 20 6f 74 68 65 rict unless othe 00023da0: 72 77 69 73 65 20 73 70 65 63 69 66 69 65 64 2e rwise specified. 00023db0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret 00023dc0: 75 72 6e 20 21 63 6f 6d 70 69 6c 65 72 4f 70 74 urn !compilerOpt 00023dd0: 69 6f 6e 73 2e 6e 6f 49 6d 70 6c 69 63 69 74 55 ions.noImplicitU 00023de0: 73 65 53 74 72 69 63 74 3b 0a 20 20 20 20 20 20 seStrict;. 00023df0: 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 }. retu 00023e00: 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a rn false;. }. 00023e10: 20 20 20 20 74 73 2e 69 73 45 66 66 65 63 74 69 ts.isEffecti 00023e20: 76 65 53 74 72 69 63 74 4d 6f 64 65 53 6f 75 72 veStrictModeSour 00023e30: 63 65 46 69 6c 65 20 3d 20 69 73 45 66 66 65 63 ceFile = isEffec 00023e40: 74 69 76 65 53 74 72 69 63 74 4d 6f 64 65 53 6f tiveStrictModeSo 00023e50: 75 72 63 65 46 69 6c 65 3b 0a 20 20 20 20 66 75 urceFile;. fu 00023e60: 6e 63 74 69 6f 6e 20 69 73 42 6c 6f 63 6b 53 63 nction isBlockSc 00023e70: 6f 70 65 28 6e 6f 64 65 2c 20 70 61 72 65 6e 74 ope(node, parent 00023e80: 4e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 Node) {. 00023e90: 73 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e switch (node.kin 00023ea0: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 d) {. 00023eb0: 20 63 61 73 65 20 33 30 35 20 2f 2a 20 53 79 6e case 305 /* Syn 00023ec0: 74 61 78 4b 69 6e 64 2e 53 6f 75 72 63 65 46 69 taxKind.SourceFi 00023ed0: 6c 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 le */:. 00023ee0: 20 20 20 63 61 73 65 20 32 36 33 20 2f 2a 20 53 case 263 /* S 00023ef0: 79 6e 74 61 78 4b 69 6e 64 2e 43 61 73 65 42 6c yntaxKind.CaseBl 00023f00: 6f 63 6b 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ock */:. 00023f10: 20 20 20 20 63 61 73 65 20 32 39 32 20 2f 2a 20 case 292 /* 00023f20: 53 79 6e 74 61 78 4b 69 6e 64 2e 43 61 74 63 68 SyntaxKind.Catch 00023f30: 43 6c 61 75 73 65 20 2a 2f 3a 0a 20 20 20 20 20 Clause */:. 00023f40: 20 20 20 20 20 20 20 63 61 73 65 20 32 36 31 20 case 261 00023f50: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 6f /* SyntaxKind.Mo 00023f60: 64 75 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 duleDeclaration 00023f70: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00023f80: 63 61 73 65 20 32 34 32 20 2f 2a 20 53 79 6e 74 case 242 /* Synt 00023f90: 61 78 4b 69 6e 64 2e 46 6f 72 53 74 61 74 65 6d axKind.ForStatem 00023fa0: 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ent */:. 00023fb0: 20 20 20 20 63 61 73 65 20 32 34 33 20 2f 2a 20 case 243 /* 00023fc0: 53 79 6e 74 61 78 4b 69 6e 64 2e 46 6f 72 49 6e SyntaxKind.ForIn 00023fd0: 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 Statement */:. 00023fe0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 00023ff0: 34 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 44 /* SyntaxKind 00024000: 2e 46 6f 72 4f 66 53 74 61 74 65 6d 65 6e 74 20 .ForOfStatement 00024010: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00024020: 63 61 73 65 20 31 37 31 20 2f 2a 20 53 79 6e 74 case 171 /* Synt 00024030: 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 72 75 63 74 axKind.Construct 00024040: 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 or */:. 00024050: 20 20 20 63 61 73 65 20 31 36 39 20 2f 2a 20 53 case 169 /* S 00024060: 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 74 68 6f 64 yntaxKind.Method 00024070: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a Declaration */:. 00024080: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00024090: 20 31 37 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 172 /* SyntaxKi 000240a0: 6e 64 2e 47 65 74 41 63 63 65 73 73 6f 72 20 2a nd.GetAccessor * 000240b0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 000240c0: 61 73 65 20 31 37 33 20 2f 2a 20 53 79 6e 74 61 ase 173 /* Synta 000240d0: 78 4b 69 6e 64 2e 53 65 74 41 63 63 65 73 73 6f xKind.SetAccesso 000240e0: 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 r */:. 000240f0: 20 20 63 61 73 65 20 32 35 36 20 2f 2a 20 53 79 case 256 /* Sy 00024100: 6e 74 61 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f ntaxKind.Functio 00024110: 6e 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a nDeclaration */: 00024120: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00024130: 65 20 32 31 33 20 2f 2a 20 53 79 6e 74 61 78 4b e 213 /* SyntaxK 00024140: 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 45 78 70 72 ind.FunctionExpr 00024150: 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ession */:. 00024160: 20 20 20 20 20 20 20 63 61 73 65 20 32 31 34 20 case 214 00024170: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 72 /* SyntaxKind.Ar 00024180: 72 6f 77 46 75 6e 63 74 69 6f 6e 20 2a 2f 3a 0a rowFunction */:. 00024190: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 000241a0: 20 31 36 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 167 /* SyntaxKi 000241b0: 6e 64 2e 50 72 6f 70 65 72 74 79 44 65 63 6c 61 nd.PropertyDecla 000241c0: 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ration */:. 000241d0: 20 20 20 20 20 20 20 63 61 73 65 20 31 37 30 20 case 170 000241e0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6c /* SyntaxKind.Cl 000241f0: 61 73 73 53 74 61 74 69 63 42 6c 6f 63 6b 44 65 assStaticBlockDe 00024200: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 00024210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00024220: 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 turn true;. 00024230: 20 20 20 20 20 20 20 63 61 73 65 20 32 33 35 20 case 235 00024240: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 6c /* SyntaxKind.Bl 00024250: 6f 63 6b 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ock */:. 00024260: 20 20 20 20 20 20 20 20 2f 2f 20 66 75 6e 63 74 // funct 00024270: 69 6f 6e 20 62 6c 6f 63 6b 20 69 73 20 6e 6f 74 ion block is not 00024280: 20 63 6f 6e 73 69 64 65 72 65 64 20 62 6c 6f 63 considered bloc 00024290: 6b 2d 73 63 6f 70 65 20 63 6f 6e 74 61 69 6e 65 k-scope containe 000242a0: 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r. 000242b0: 20 20 2f 2f 20 73 65 65 20 63 6f 6d 6d 65 6e 74 // see comment 000242c0: 20 69 6e 20 62 69 6e 64 65 72 2e 74 73 3a 20 62 in binder.ts: b 000242d0: 69 6e 64 28 2e 2e 2e 29 2c 20 63 61 73 65 20 66 ind(...), case f 000242e0: 6f 72 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 6c or SyntaxKind.Bl 000242f0: 6f 63 6b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ock. 00024300: 20 20 20 20 72 65 74 75 72 6e 20 21 74 73 2e 69 return !ts.i 00024310: 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 4f 72 43 sFunctionLikeOrC 00024320: 6c 61 73 73 53 74 61 74 69 63 42 6c 6f 63 6b 44 lassStaticBlockD 00024330: 65 63 6c 61 72 61 74 69 6f 6e 28 70 61 72 65 6e eclaration(paren 00024340: 74 4e 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 20 tNode);. 00024350: 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e }. return 00024360: 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 20 false;. }. 00024370: 20 20 74 73 2e 69 73 42 6c 6f 63 6b 53 63 6f 70 ts.isBlockScop 00024380: 65 20 3d 20 69 73 42 6c 6f 63 6b 53 63 6f 70 65 e = isBlockScope 00024390: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 000243a0: 73 44 65 63 6c 61 72 61 74 69 6f 6e 57 69 74 68 sDeclarationWith 000243b0: 54 79 70 65 50 61 72 61 6d 65 74 65 72 73 28 6e TypeParameters(n 000243c0: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ode) {. s 000243d0: 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 witch (node.kind 000243e0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 000243f0: 63 61 73 65 20 33 33 38 20 2f 2a 20 53 79 6e 74 case 338 /* Synt 00024400: 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 43 61 6c 6c axKind.JSDocCall 00024410: 62 61 63 6b 54 61 67 20 2a 2f 3a 0a 20 20 20 20 backTag */:. 00024420: 20 20 20 20 20 20 20 20 63 61 73 65 20 33 34 35 case 345 00024430: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a /* SyntaxKind.J 00024440: 53 44 6f 63 54 79 70 65 64 65 66 54 61 67 20 2a SDocTypedefTag * 00024450: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00024460: 61 73 65 20 33 32 33 20 2f 2a 20 53 79 6e 74 61 ase 323 /* Synta 00024470: 78 4b 69 6e 64 2e 4a 53 44 6f 63 53 69 67 6e 61 xKind.JSDocSigna 00024480: 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ture */:. 00024490: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 000244a0: 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 20 20 true;. 000244b0: 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 default:. 000244c0: 20 20 20 20 20 20 20 20 20 20 20 74 73 2e 61 73 ts.as 000244d0: 73 65 72 74 54 79 70 65 28 6e 6f 64 65 29 3b 0a sertType(node);. 000244e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000244f0: 72 65 74 75 72 6e 20 69 73 44 65 63 6c 61 72 61 return isDeclara 00024500: 74 69 6f 6e 57 69 74 68 54 79 70 65 50 61 72 61 tionWithTypePara 00024510: 6d 65 74 65 72 43 68 69 6c 64 72 65 6e 28 6e 6f meterChildren(no 00024520: 64 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 de);. }. 00024530: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 44 65 }. ts.isDe 00024540: 63 6c 61 72 61 74 69 6f 6e 57 69 74 68 54 79 70 clarationWithTyp 00024550: 65 50 61 72 61 6d 65 74 65 72 73 20 3d 20 69 73 eParameters = is 00024560: 44 65 63 6c 61 72 61 74 69 6f 6e 57 69 74 68 54 DeclarationWithT 00024570: 79 70 65 50 61 72 61 6d 65 74 65 72 73 3b 0a 20 ypeParameters;. 00024580: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 44 65 function isDe 00024590: 63 6c 61 72 61 74 69 6f 6e 57 69 74 68 54 79 70 clarationWithTyp 000245a0: 65 50 61 72 61 6d 65 74 65 72 43 68 69 6c 64 72 eParameterChildr 000245b0: 65 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 en(node) {. 000245c0: 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e switch (node. 000245d0: 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 kind) {. 000245e0: 20 20 20 20 63 61 73 65 20 31 37 34 20 2f 2a 20 case 174 /* 000245f0: 53 79 6e 74 61 78 4b 69 6e 64 2e 43 61 6c 6c 53 SyntaxKind.CallS 00024600: 69 67 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 ignature */:. 00024610: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 case 17 00024620: 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 5 /* SyntaxKind. 00024630: 43 6f 6e 73 74 72 75 63 74 53 69 67 6e 61 74 75 ConstructSignatu 00024640: 72 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 re */:. 00024650: 20 20 20 63 61 73 65 20 31 36 38 20 2f 2a 20 53 case 168 /* S 00024660: 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 74 68 6f 64 yntaxKind.Method 00024670: 53 69 67 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 Signature */:. 00024680: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 00024690: 37 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 76 /* SyntaxKind 000246a0: 2e 49 6e 64 65 78 53 69 67 6e 61 74 75 72 65 20 .IndexSignature 000246b0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 000246c0: 63 61 73 65 20 31 37 39 20 2f 2a 20 53 79 6e 74 case 179 /* Synt 000246d0: 61 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 54 axKind.FunctionT 000246e0: 79 70 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ype */:. 000246f0: 20 20 20 20 63 61 73 65 20 31 38 30 20 2f 2a 20 case 180 /* 00024700: 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 SyntaxKind.Const 00024710: 72 75 63 74 6f 72 54 79 70 65 20 2a 2f 3a 0a 20 ructorType */:. 00024720: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00024730: 33 31 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 317 /* SyntaxKin 00024740: 64 2e 4a 53 44 6f 63 46 75 6e 63 74 69 6f 6e 54 d.JSDocFunctionT 00024750: 79 70 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ype */:. 00024760: 20 20 20 20 63 61 73 65 20 32 35 37 20 2f 2a 20 case 257 /* 00024770: 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 SyntaxKind.Class 00024780: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a Declaration */:. 00024790: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 000247a0: 20 32 32 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 226 /* SyntaxKi 000247b0: 6e 64 2e 43 6c 61 73 73 45 78 70 72 65 73 73 69 nd.ClassExpressi 000247c0: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 000247d0: 20 20 20 63 61 73 65 20 32 35 38 20 2f 2a 20 53 case 258 /* S 000247e0: 79 6e 74 61 78 4b 69 6e 64 2e 49 6e 74 65 72 66 yntaxKind.Interf 000247f0: 61 63 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a aceDeclaration * 00024800: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00024810: 61 73 65 20 32 35 39 20 2f 2a 20 53 79 6e 74 61 ase 259 /* Synta 00024820: 78 4b 69 6e 64 2e 54 79 70 65 41 6c 69 61 73 44 xKind.TypeAliasD 00024830: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 00024840: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00024850: 33 34 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 344 /* SyntaxKin 00024860: 64 2e 4a 53 44 6f 63 54 65 6d 70 6c 61 74 65 54 d.JSDocTemplateT 00024870: 61 67 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 ag */:. 00024880: 20 20 20 63 61 73 65 20 32 35 36 20 2f 2a 20 53 case 256 /* S 00024890: 79 6e 74 61 78 4b 69 6e 64 2e 46 75 6e 63 74 69 yntaxKind.Functi 000248a0: 6f 6e 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f onDeclaration */ 000248b0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 000248c0: 73 65 20 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 se 169 /* Syntax 000248d0: 4b 69 6e 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 Kind.MethodDecla 000248e0: 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ration */:. 000248f0: 20 20 20 20 20 20 20 63 61 73 65 20 31 37 31 20 case 171 00024900: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f /* SyntaxKind.Co 00024910: 6e 73 74 72 75 63 74 6f 72 20 2a 2f 3a 0a 20 20 nstructor */:. 00024920: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 00024930: 37 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 72 /* SyntaxKind 00024940: 2e 47 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 3a .GetAccessor */: 00024950: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00024960: 65 20 31 37 33 20 2f 2a 20 53 79 6e 74 61 78 4b e 173 /* SyntaxK 00024970: 69 6e 64 2e 53 65 74 41 63 63 65 73 73 6f 72 20 ind.SetAccessor 00024980: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00024990: 63 61 73 65 20 32 31 33 20 2f 2a 20 53 79 6e 74 case 213 /* Synt 000249a0: 61 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 45 axKind.FunctionE 000249b0: 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 xpression */:. 000249c0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 000249d0: 31 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 14 /* SyntaxKind 000249e0: 2e 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e 20 2a .ArrowFunction * 000249f0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 00024a00: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a return true;. 00024a10: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 defa 00024a20: 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 ult:. 00024a30: 20 20 20 20 20 74 73 2e 61 73 73 65 72 74 54 79 ts.assertTy 00024a40: 70 65 28 6e 6f 64 65 29 3b 0a 20 20 20 20 20 20 pe(node);. 00024a50: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00024a60: 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 false;. 00024a70: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 }. }. ts.i 00024a80: 73 44 65 63 6c 61 72 61 74 69 6f 6e 57 69 74 68 sDeclarationWith 00024a90: 54 79 70 65 50 61 72 61 6d 65 74 65 72 43 68 69 TypeParameterChi 00024aa0: 6c 64 72 65 6e 20 3d 20 69 73 44 65 63 6c 61 72 ldren = isDeclar 00024ab0: 61 74 69 6f 6e 57 69 74 68 54 79 70 65 50 61 72 ationWithTypePar 00024ac0: 61 6d 65 74 65 72 43 68 69 6c 64 72 65 6e 3b 0a ameterChildren;. 00024ad0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 41 function isA 00024ae0: 6e 79 49 6d 70 6f 72 74 53 79 6e 74 61 78 28 6e nyImportSyntax(n 00024af0: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ode) {. s 00024b00: 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 witch (node.kind 00024b10: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 00024b20: 63 61 73 65 20 32 36 36 20 2f 2a 20 53 79 6e 74 case 266 /* Synt 00024b30: 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 44 65 63 axKind.ImportDec 00024b40: 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 laration */:. 00024b50: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 36 case 26 00024b60: 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 5 /* SyntaxKind. 00024b70: 49 6d 70 6f 72 74 45 71 75 61 6c 73 44 65 63 6c ImportEqualsDecl 00024b80: 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 aration */:. 00024b90: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00024ba0: 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 rn true;. 00024bb0: 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 default:. 00024bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00024bd0: 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 turn false;. 00024be0: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 }. }. 00024bf0: 74 73 2e 69 73 41 6e 79 49 6d 70 6f 72 74 53 79 ts.isAnyImportSy 00024c00: 6e 74 61 78 20 3d 20 69 73 41 6e 79 49 6d 70 6f ntax = isAnyImpo 00024c10: 72 74 53 79 6e 74 61 78 3b 0a 20 20 20 20 66 75 rtSyntax;. fu 00024c20: 6e 63 74 69 6f 6e 20 69 73 41 6e 79 49 6d 70 6f nction isAnyImpo 00024c30: 72 74 4f 72 42 61 72 65 4f 72 41 63 63 65 73 73 rtOrBareOrAccess 00024c40: 65 64 52 65 71 75 69 72 65 28 6e 6f 64 65 29 20 edRequire(node) 00024c50: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 00024c60: 20 69 73 41 6e 79 49 6d 70 6f 72 74 53 79 6e 74 isAnyImportSynt 00024c70: 61 78 28 6e 6f 64 65 29 20 7c 7c 20 69 73 56 61 ax(node) || isVa 00024c80: 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f riableDeclaratio 00024c90: 6e 49 6e 69 74 69 61 6c 69 7a 65 64 54 6f 42 61 nInitializedToBa 00024ca0: 72 65 4f 72 41 63 63 65 73 73 65 64 52 65 71 75 reOrAccessedRequ 00024cb0: 69 72 65 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d ire(node);. } 00024cc0: 0a 20 20 20 20 74 73 2e 69 73 41 6e 79 49 6d 70 . ts.isAnyImp 00024cd0: 6f 72 74 4f 72 42 61 72 65 4f 72 41 63 63 65 73 ortOrBareOrAcces 00024ce0: 73 65 64 52 65 71 75 69 72 65 20 3d 20 69 73 41 sedRequire = isA 00024cf0: 6e 79 49 6d 70 6f 72 74 4f 72 42 61 72 65 4f 72 nyImportOrBareOr 00024d00: 41 63 63 65 73 73 65 64 52 65 71 75 69 72 65 3b AccessedRequire; 00024d10: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 . function is 00024d20: 4c 61 74 65 56 69 73 69 62 69 6c 69 74 79 50 61 LateVisibilityPa 00024d30: 69 6e 74 65 64 53 74 61 74 65 6d 65 6e 74 28 6e intedStatement(n 00024d40: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ode) {. s 00024d50: 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 witch (node.kind 00024d60: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 00024d70: 63 61 73 65 20 32 36 36 20 2f 2a 20 53 79 6e 74 case 266 /* Synt 00024d80: 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 44 65 63 axKind.ImportDec 00024d90: 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 laration */:. 00024da0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 36 case 26 00024db0: 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 5 /* SyntaxKind. 00024dc0: 49 6d 70 6f 72 74 45 71 75 61 6c 73 44 65 63 6c ImportEqualsDecl 00024dd0: 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 aration */:. 00024de0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 33 37 case 237 00024df0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 56 /* SyntaxKind.V 00024e00: 61 72 69 61 62 6c 65 53 74 61 74 65 6d 65 6e 74 ariableStatement 00024e10: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00024e20: 20 63 61 73 65 20 32 35 37 20 2f 2a 20 53 79 6e case 257 /* Syn 00024e30: 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 44 65 63 taxKind.ClassDec 00024e40: 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 laration */:. 00024e50: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 35 case 25 00024e60: 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 6 /* SyntaxKind. 00024e70: 46 75 6e 63 74 69 6f 6e 44 65 63 6c 61 72 61 74 FunctionDeclarat 00024e80: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 00024e90: 20 20 20 20 63 61 73 65 20 32 36 31 20 2f 2a 20 case 261 /* 00024ea0: 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 75 6c SyntaxKind.Modul 00024eb0: 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a eDeclaration */: 00024ec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00024ed0: 65 20 32 35 39 20 2f 2a 20 53 79 6e 74 61 78 4b e 259 /* SyntaxK 00024ee0: 69 6e 64 2e 54 79 70 65 41 6c 69 61 73 44 65 63 ind.TypeAliasDec 00024ef0: 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 laration */:. 00024f00: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 35 case 25 00024f10: 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 8 /* SyntaxKind. 00024f20: 49 6e 74 65 72 66 61 63 65 44 65 63 6c 61 72 61 InterfaceDeclara 00024f30: 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 tion */:. 00024f40: 20 20 20 20 20 63 61 73 65 20 32 36 30 20 2f 2a case 260 /* 00024f50: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 6e 75 6d SyntaxKind.Enum 00024f60: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a Declaration */:. 00024f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00024f80: 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 return true;. 00024f90: 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 default 00024fa0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 00024fb0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a return false;. 00024fc0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a }. }. 00024fd0: 20 20 20 20 74 73 2e 69 73 4c 61 74 65 56 69 73 ts.isLateVis 00024fe0: 69 62 69 6c 69 74 79 50 61 69 6e 74 65 64 53 74 ibilityPaintedSt 00024ff0: 61 74 65 6d 65 6e 74 20 3d 20 69 73 4c 61 74 65 atement = isLate 00025000: 56 69 73 69 62 69 6c 69 74 79 50 61 69 6e 74 65 VisibilityPainte 00025010: 64 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 20 20 dStatement;. 00025020: 66 75 6e 63 74 69 6f 6e 20 68 61 73 50 6f 73 73 function hasPoss 00025030: 69 62 6c 65 45 78 74 65 72 6e 61 6c 4d 6f 64 75 ibleExternalModu 00025040: 6c 65 52 65 66 65 72 65 6e 63 65 28 6e 6f 64 65 leReference(node 00025050: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 00025060: 72 6e 20 69 73 41 6e 79 49 6d 70 6f 72 74 4f 72 rn isAnyImportOr 00025070: 52 65 45 78 70 6f 72 74 28 6e 6f 64 65 29 20 7c ReExport(node) | 00025080: 7c 20 74 73 2e 69 73 4d 6f 64 75 6c 65 44 65 63 | ts.isModuleDec 00025090: 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 20 7c laration(node) | 000250a0: 7c 20 74 73 2e 69 73 49 6d 70 6f 72 74 54 79 70 | ts.isImportTyp 000250b0: 65 4e 6f 64 65 28 6e 6f 64 65 29 20 7c 7c 20 69 eNode(node) || i 000250c0: 73 49 6d 70 6f 72 74 43 61 6c 6c 28 6e 6f 64 65 sImportCall(node 000250d0: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 000250e0: 68 61 73 50 6f 73 73 69 62 6c 65 45 78 74 65 72 hasPossibleExter 000250f0: 6e 61 6c 4d 6f 64 75 6c 65 52 65 66 65 72 65 6e nalModuleReferen 00025100: 63 65 20 3d 20 68 61 73 50 6f 73 73 69 62 6c 65 ce = hasPossible 00025110: 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 52 65 ExternalModuleRe 00025120: 66 65 72 65 6e 63 65 3b 0a 20 20 20 20 66 75 6e ference;. fun 00025130: 63 74 69 6f 6e 20 69 73 41 6e 79 49 6d 70 6f 72 ction isAnyImpor 00025140: 74 4f 72 52 65 45 78 70 6f 72 74 28 6e 6f 64 65 tOrReExport(node 00025150: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 00025160: 72 6e 20 69 73 41 6e 79 49 6d 70 6f 72 74 53 79 rn isAnyImportSy 00025170: 6e 74 61 78 28 6e 6f 64 65 29 20 7c 7c 20 74 73 ntax(node) || ts 00025180: 2e 69 73 45 78 70 6f 72 74 44 65 63 6c 61 72 61 .isExportDeclara 00025190: 74 69 6f 6e 28 6e 6f 64 65 29 3b 0a 20 20 20 20 tion(node);. 000251a0: 7d 0a 20 20 20 20 74 73 2e 69 73 41 6e 79 49 6d }. ts.isAnyIm 000251b0: 70 6f 72 74 4f 72 52 65 45 78 70 6f 72 74 20 3d portOrReExport = 000251c0: 20 69 73 41 6e 79 49 6d 70 6f 72 74 4f 72 52 65 isAnyImportOrRe 000251d0: 45 78 70 6f 72 74 3b 0a 20 20 20 20 2f 2f 20 47 Export;. // G 000251e0: 65 74 73 20 74 68 65 20 6e 65 61 72 65 73 74 20 ets the nearest 000251f0: 65 6e 63 6c 6f 73 69 6e 67 20 62 6c 6f 63 6b 20 enclosing block 00025200: 73 63 6f 70 65 20 63 6f 6e 74 61 69 6e 65 72 20 scope container 00025210: 74 68 61 74 20 68 61 73 20 74 68 65 20 70 72 6f that has the pro 00025220: 76 69 64 65 64 20 6e 6f 64 65 0a 20 20 20 20 2f vided node. / 00025230: 2f 20 61 73 20 61 20 64 65 73 63 65 6e 64 61 6e / as a descendan 00025240: 74 2c 20 74 68 61 74 20 69 73 20 6e 6f 74 20 74 t, that is not t 00025250: 68 65 20 70 72 6f 76 69 64 65 64 20 6e 6f 64 65 he provided node 00025260: 2e 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 .. function g 00025270: 65 74 45 6e 63 6c 6f 73 69 6e 67 42 6c 6f 63 6b etEnclosingBlock 00025280: 53 63 6f 70 65 43 6f 6e 74 61 69 6e 65 72 28 6e ScopeContainer(n 00025290: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 000252a0: 65 74 75 72 6e 20 74 73 2e 66 69 6e 64 41 6e 63 eturn ts.findAnc 000252b0: 65 73 74 6f 72 28 6e 6f 64 65 2e 70 61 72 65 6e estor(node.paren 000252c0: 74 2c 20 66 75 6e 63 74 69 6f 6e 20 28 63 75 72 t, function (cur 000252d0: 72 65 6e 74 29 20 7b 20 72 65 74 75 72 6e 20 69 rent) { return i 000252e0: 73 42 6c 6f 63 6b 53 63 6f 70 65 28 63 75 72 72 sBlockScope(curr 000252f0: 65 6e 74 2c 20 63 75 72 72 65 6e 74 2e 70 61 72 ent, current.par 00025300: 65 6e 74 29 3b 20 7d 29 3b 0a 20 20 20 20 7d 0a ent); });. }. 00025310: 20 20 20 20 74 73 2e 67 65 74 45 6e 63 6c 6f 73 ts.getEnclos 00025320: 69 6e 67 42 6c 6f 63 6b 53 63 6f 70 65 43 6f 6e ingBlockScopeCon 00025330: 74 61 69 6e 65 72 20 3d 20 67 65 74 45 6e 63 6c tainer = getEncl 00025340: 6f 73 69 6e 67 42 6c 6f 63 6b 53 63 6f 70 65 43 osingBlockScopeC 00025350: 6f 6e 74 61 69 6e 65 72 3b 0a 20 20 20 20 66 75 ontainer;. fu 00025360: 6e 63 74 69 6f 6e 20 66 6f 72 45 61 63 68 45 6e nction forEachEn 00025370: 63 6c 6f 73 69 6e 67 42 6c 6f 63 6b 53 63 6f 70 closingBlockScop 00025380: 65 43 6f 6e 74 61 69 6e 65 72 28 6e 6f 64 65 2c eContainer(node, 00025390: 20 63 62 29 20 7b 0a 20 20 20 20 20 20 20 20 76 cb) {. v 000253a0: 61 72 20 63 6f 6e 74 61 69 6e 65 72 20 3d 20 67 ar container = g 000253b0: 65 74 45 6e 63 6c 6f 73 69 6e 67 42 6c 6f 63 6b etEnclosingBlock 000253c0: 53 63 6f 70 65 43 6f 6e 74 61 69 6e 65 72 28 6e ScopeContainer(n 000253d0: 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 20 77 68 ode);. wh 000253e0: 69 6c 65 20 28 63 6f 6e 74 61 69 6e 65 72 29 20 ile (container) 000253f0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 62 {. cb 00025400: 28 63 6f 6e 74 61 69 6e 65 72 29 3b 0a 20 20 20 (container);. 00025410: 20 20 20 20 20 20 20 20 20 63 6f 6e 74 61 69 6e contain 00025420: 65 72 20 3d 20 67 65 74 45 6e 63 6c 6f 73 69 6e er = getEnclosin 00025430: 67 42 6c 6f 63 6b 53 63 6f 70 65 43 6f 6e 74 61 gBlockScopeConta 00025440: 69 6e 65 72 28 63 6f 6e 74 61 69 6e 65 72 29 3b iner(container); 00025450: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d . }. } 00025460: 0a 20 20 20 20 74 73 2e 66 6f 72 45 61 63 68 45 . ts.forEachE 00025470: 6e 63 6c 6f 73 69 6e 67 42 6c 6f 63 6b 53 63 6f nclosingBlockSco 00025480: 70 65 43 6f 6e 74 61 69 6e 65 72 20 3d 20 66 6f peContainer = fo 00025490: 72 45 61 63 68 45 6e 63 6c 6f 73 69 6e 67 42 6c rEachEnclosingBl 000254a0: 6f 63 6b 53 63 6f 70 65 43 6f 6e 74 61 69 6e 65 ockScopeContaine 000254b0: 72 3b 0a 20 20 20 20 2f 2f 20 52 65 74 75 72 6e r;. // Return 000254c0: 20 64 69 73 70 6c 61 79 20 6e 61 6d 65 20 6f 66 display name of 000254d0: 20 61 6e 20 69 64 65 6e 74 69 66 69 65 72 0a 20 an identifier. 000254e0: 20 20 20 2f 2f 20 43 6f 6d 70 75 74 65 64 20 70 // Computed p 000254f0: 72 6f 70 65 72 74 79 20 6e 61 6d 65 73 20 77 69 roperty names wi 00025500: 6c 6c 20 6a 75 73 74 20 62 65 20 65 6d 69 74 74 ll just be emitt 00025510: 65 64 20 61 73 20 22 5b 3c 65 78 70 72 3e 5d 22 ed as "[<expr>]" 00025520: 2c 20 77 68 65 72 65 20 3c 65 78 70 72 3e 20 69 , where <expr> i 00025530: 73 20 74 68 65 20 73 6f 75 72 63 65 0a 20 20 20 s the source. 00025540: 20 2f 2f 20 74 65 78 74 20 6f 66 20 74 68 65 20 // text of the 00025550: 65 78 70 72 65 73 73 69 6f 6e 20 69 6e 20 74 68 expression in th 00025560: 65 20 63 6f 6d 70 75 74 65 64 20 70 72 6f 70 65 e computed prope 00025570: 72 74 79 2e 0a 20 20 20 20 66 75 6e 63 74 69 6f rty.. functio 00025580: 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 4e 61 6d n declarationNam 00025590: 65 54 6f 53 74 72 69 6e 67 28 6e 61 6d 65 29 20 eToString(name) 000255a0: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 000255b0: 20 21 6e 61 6d 65 20 7c 7c 20 67 65 74 46 75 6c !name || getFul 000255c0: 6c 57 69 64 74 68 28 6e 61 6d 65 29 20 3d 3d 3d lWidth(name) === 000255d0: 20 30 20 3f 20 22 28 4d 69 73 73 69 6e 67 29 22 0 ? "(Missing)" 000255e0: 20 3a 20 67 65 74 54 65 78 74 4f 66 4e 6f 64 65 : getTextOfNode 000255f0: 28 6e 61 6d 65 29 3b 0a 20 20 20 20 7d 0a 20 20 (name);. }. 00025600: 20 20 74 73 2e 64 65 63 6c 61 72 61 74 69 6f 6e ts.declaration 00025610: 4e 61 6d 65 54 6f 53 74 72 69 6e 67 20 3d 20 64 NameToString = d 00025620: 65 63 6c 61 72 61 74 69 6f 6e 4e 61 6d 65 54 6f eclarationNameTo 00025630: 53 74 72 69 6e 67 3b 0a 20 20 20 20 66 75 6e 63 String;. func 00025640: 74 69 6f 6e 20 67 65 74 4e 61 6d 65 46 72 6f 6d tion getNameFrom 00025650: 49 6e 64 65 78 49 6e 66 6f 28 69 6e 66 6f 29 20 IndexInfo(info) 00025660: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 00025670: 20 69 6e 66 6f 2e 64 65 63 6c 61 72 61 74 69 6f info.declaratio 00025680: 6e 20 3f 20 64 65 63 6c 61 72 61 74 69 6f 6e 4e n ? declarationN 00025690: 61 6d 65 54 6f 53 74 72 69 6e 67 28 69 6e 66 6f ameToString(info 000256a0: 2e 64 65 63 6c 61 72 61 74 69 6f 6e 2e 70 61 72 .declaration.par 000256b0: 61 6d 65 74 65 72 73 5b 30 5d 2e 6e 61 6d 65 29 ameters[0].name) 000256c0: 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 : undefined;. 000256d0: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4e 61 }. ts.getNa 000256e0: 6d 65 46 72 6f 6d 49 6e 64 65 78 49 6e 66 6f 20 meFromIndexInfo 000256f0: 3d 20 67 65 74 4e 61 6d 65 46 72 6f 6d 49 6e 64 = getNameFromInd 00025700: 65 78 49 6e 66 6f 3b 0a 20 20 20 20 66 75 6e 63 exInfo;. func 00025710: 74 69 6f 6e 20 69 73 43 6f 6d 70 75 74 65 64 4e tion isComputedN 00025720: 6f 6e 4c 69 74 65 72 61 6c 4e 61 6d 65 28 6e 61 onLiteralName(na 00025730: 6d 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 me) {. re 00025740: 74 75 72 6e 20 6e 61 6d 65 2e 6b 69 6e 64 20 3d turn name.kind = 00025750: 3d 3d 20 31 36 32 20 2f 2a 20 53 79 6e 74 61 78 == 162 /* Syntax 00025760: 4b 69 6e 64 2e 43 6f 6d 70 75 74 65 64 50 72 6f Kind.ComputedPro 00025770: 70 65 72 74 79 4e 61 6d 65 20 2a 2f 20 26 26 20 pertyName */ && 00025780: 21 69 73 53 74 72 69 6e 67 4f 72 4e 75 6d 65 72 !isStringOrNumer 00025790: 69 63 4c 69 74 65 72 61 6c 4c 69 6b 65 28 6e 61 icLiteralLike(na 000257a0: 6d 65 2e 65 78 70 72 65 73 73 69 6f 6e 29 3b 0a me.expression);. 000257b0: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 43 }. ts.isC 000257c0: 6f 6d 70 75 74 65 64 4e 6f 6e 4c 69 74 65 72 61 omputedNonLitera 000257d0: 6c 4e 61 6d 65 20 3d 20 69 73 43 6f 6d 70 75 74 lName = isComput 000257e0: 65 64 4e 6f 6e 4c 69 74 65 72 61 6c 4e 61 6d 65 edNonLiteralName 000257f0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 74 ;. function t 00025800: 72 79 47 65 74 54 65 78 74 4f 66 50 72 6f 70 65 ryGetTextOfPrope 00025810: 72 74 79 4e 61 6d 65 28 6e 61 6d 65 29 20 7b 0a rtyName(name) {. 00025820: 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 switch ( 00025830: 6e 61 6d 65 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 name.kind) {. 00025840: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 37 39 case 79 00025850: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 /* SyntaxKind.I 00025860: 64 65 6e 74 69 66 69 65 72 20 2a 2f 3a 0a 20 20 dentifier */:. 00025870: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 38 case 8 00025880: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 00025890: 50 72 69 76 61 74 65 49 64 65 6e 74 69 66 69 65 PrivateIdentifie 000258a0: 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 r */:. 000258b0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 61 6d return nam 000258c0: 65 2e 65 73 63 61 70 65 64 54 65 78 74 3b 0a 20 e.escapedText;. 000258d0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 000258e0: 31 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 10 /* SyntaxKind 000258f0: 2e 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 20 2a .StringLiteral * 00025900: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00025910: 61 73 65 20 38 20 2f 2a 20 53 79 6e 74 61 78 4b ase 8 /* SyntaxK 00025920: 69 6e 64 2e 4e 75 6d 65 72 69 63 4c 69 74 65 72 ind.NumericLiter 00025930: 61 6c 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 al */:. 00025940: 20 20 20 63 61 73 65 20 31 34 20 2f 2a 20 53 79 case 14 /* Sy 00025950: 6e 74 61 78 4b 69 6e 64 2e 4e 6f 53 75 62 73 74 ntaxKind.NoSubst 00025960: 69 74 75 74 69 6f 6e 54 65 6d 70 6c 61 74 65 4c itutionTemplateL 00025970: 69 74 65 72 61 6c 20 2a 2f 3a 0a 20 20 20 20 20 iteral */:. 00025980: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00025990: 6e 20 74 73 2e 65 73 63 61 70 65 4c 65 61 64 69 n ts.escapeLeadi 000259a0: 6e 67 55 6e 64 65 72 73 63 6f 72 65 73 28 6e 61 ngUnderscores(na 000259b0: 6d 65 2e 74 65 78 74 29 3b 0a 20 20 20 20 20 20 me.text);. 000259c0: 20 20 20 20 20 20 63 61 73 65 20 31 36 32 20 2f case 162 / 000259d0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6d * SyntaxKind.Com 000259e0: 70 75 74 65 64 50 72 6f 70 65 72 74 79 4e 61 6d putedPropertyNam 000259f0: 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 e */:. 00025a00: 20 20 20 20 20 20 69 66 20 28 69 73 53 74 72 69 if (isStri 00025a10: 6e 67 4f 72 4e 75 6d 65 72 69 63 4c 69 74 65 72 ngOrNumericLiter 00025a20: 61 6c 4c 69 6b 65 28 6e 61 6d 65 2e 65 78 70 72 alLike(name.expr 00025a30: 65 73 73 69 6f 6e 29 29 0a 20 20 20 20 20 20 20 ession)). 00025a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00025a50: 75 72 6e 20 74 73 2e 65 73 63 61 70 65 4c 65 61 urn ts.escapeLea 00025a60: 64 69 6e 67 55 6e 64 65 72 73 63 6f 72 65 73 28 dingUnderscores( 00025a70: 6e 61 6d 65 2e 65 78 70 72 65 73 73 69 6f 6e 2e name.expression. 00025a80: 74 65 78 74 29 3b 0a 20 20 20 20 20 20 20 20 20 text);. 00025a90: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 6e return un 00025aa0: 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 defined;. 00025ab0: 20 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 default:. 00025ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00025ad0: 74 75 72 6e 20 74 73 2e 44 65 62 75 67 2e 61 73 turn ts.Debug.as 00025ae0: 73 65 72 74 4e 65 76 65 72 28 6e 61 6d 65 29 3b sertNever(name); 00025af0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d . }. } 00025b00: 0a 20 20 20 20 74 73 2e 74 72 79 47 65 74 54 65 . ts.tryGetTe 00025b10: 78 74 4f 66 50 72 6f 70 65 72 74 79 4e 61 6d 65 xtOfPropertyName 00025b20: 20 3d 20 74 72 79 47 65 74 54 65 78 74 4f 66 50 = tryGetTextOfP 00025b30: 72 6f 70 65 72 74 79 4e 61 6d 65 3b 0a 20 20 20 ropertyName;. 00025b40: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 54 65 78 function getTex 00025b50: 74 4f 66 50 72 6f 70 65 72 74 79 4e 61 6d 65 28 tOfPropertyName( 00025b60: 6e 61 6d 65 29 20 7b 0a 20 20 20 20 20 20 20 20 name) {. 00025b70: 72 65 74 75 72 6e 20 74 73 2e 44 65 62 75 67 2e return ts.Debug. 00025b80: 63 68 65 63 6b 44 65 66 69 6e 65 64 28 74 72 79 checkDefined(try 00025b90: 47 65 74 54 65 78 74 4f 66 50 72 6f 70 65 72 74 GetTextOfPropert 00025ba0: 79 4e 61 6d 65 28 6e 61 6d 65 29 29 3b 0a 20 20 yName(name));. 00025bb0: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 54 65 }. ts.getTe 00025bc0: 78 74 4f 66 50 72 6f 70 65 72 74 79 4e 61 6d 65 xtOfPropertyName 00025bd0: 20 3d 20 67 65 74 54 65 78 74 4f 66 50 72 6f 70 = getTextOfProp 00025be0: 65 72 74 79 4e 61 6d 65 3b 0a 20 20 20 20 66 75 ertyName;. fu 00025bf0: 6e 63 74 69 6f 6e 20 65 6e 74 69 74 79 4e 61 6d nction entityNam 00025c00: 65 54 6f 53 74 72 69 6e 67 28 6e 61 6d 65 29 20 eToString(name) 00025c10: 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 {. switch 00025c20: 20 28 6e 61 6d 65 2e 6b 69 6e 64 29 20 7b 0a 20 (name.kind) {. 00025c30: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00025c40: 31 30 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 108 /* SyntaxKin 00025c50: 64 2e 54 68 69 73 4b 65 79 77 6f 72 64 20 2a 2f d.ThisKeyword */ 00025c60: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 00025c70: 20 20 72 65 74 75 72 6e 20 22 74 68 69 73 22 3b return "this"; 00025c80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00025c90: 65 20 38 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 e 80 /* SyntaxKi 00025ca0: 6e 64 2e 50 72 69 76 61 74 65 49 64 65 6e 74 69 nd.PrivateIdenti 00025cb0: 66 69 65 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 fier */:. 00025cc0: 20 20 20 20 20 63 61 73 65 20 37 39 20 2f 2a 20 case 79 /* 00025cd0: 53 79 6e 74 61 78 4b 69 6e 64 2e 49 64 65 6e 74 SyntaxKind.Ident 00025ce0: 69 66 69 65 72 20 2a 2f 3a 0a 20 20 20 20 20 20 ifier */:. 00025cf0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00025d00: 20 67 65 74 46 75 6c 6c 57 69 64 74 68 28 6e 61 getFullWidth(na 00025d10: 6d 65 29 20 3d 3d 3d 20 30 20 3f 20 74 73 2e 69 me) === 0 ? ts.i 00025d20: 64 54 65 78 74 28 6e 61 6d 65 29 20 3a 20 67 65 dText(name) : ge 00025d30: 74 54 65 78 74 4f 66 4e 6f 64 65 28 6e 61 6d 65 tTextOfNode(name 00025d40: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 );. c 00025d50: 61 73 65 20 31 36 31 20 2f 2a 20 53 79 6e 74 61 ase 161 /* Synta 00025d60: 78 4b 69 6e 64 2e 51 75 61 6c 69 66 69 65 64 4e xKind.QualifiedN 00025d70: 61 6d 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ame */:. 00025d80: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 return e 00025d90: 6e 74 69 74 79 4e 61 6d 65 54 6f 53 74 72 69 6e ntityNameToStrin 00025da0: 67 28 6e 61 6d 65 2e 6c 65 66 74 29 20 2b 20 22 g(name.left) + " 00025db0: 2e 22 20 2b 20 65 6e 74 69 74 79 4e 61 6d 65 54 ." + entityNameT 00025dc0: 6f 53 74 72 69 6e 67 28 6e 61 6d 65 2e 72 69 67 oString(name.rig 00025dd0: 68 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ht);. 00025de0: 20 63 61 73 65 20 32 30 36 20 2f 2a 20 53 79 6e case 206 /* Syn 00025df0: 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 taxKind.Property 00025e00: 41 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e AccessExpression 00025e10: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00025e20: 20 20 20 20 20 69 66 20 28 74 73 2e 69 73 49 64 if (ts.isId 00025e30: 65 6e 74 69 66 69 65 72 28 6e 61 6d 65 2e 6e 61 entifier(name.na 00025e40: 6d 65 29 20 7c 7c 20 74 73 2e 69 73 50 72 69 76 me) || ts.isPriv 00025e50: 61 74 65 49 64 65 6e 74 69 66 69 65 72 28 6e 61 ateIdentifier(na 00025e60: 6d 65 2e 6e 61 6d 65 29 29 20 7b 0a 20 20 20 20 me.name)) {. 00025e70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00025e80: 72 65 74 75 72 6e 20 65 6e 74 69 74 79 4e 61 6d return entityNam 00025e90: 65 54 6f 53 74 72 69 6e 67 28 6e 61 6d 65 2e 65 eToString(name.e 00025ea0: 78 70 72 65 73 73 69 6f 6e 29 20 2b 20 22 2e 22 xpression) + "." 00025eb0: 20 2b 20 65 6e 74 69 74 79 4e 61 6d 65 54 6f 53 + entityNameToS 00025ec0: 74 72 69 6e 67 28 6e 61 6d 65 2e 6e 61 6d 65 29 tring(name.name) 00025ed0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 00025ee0: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }. 00025ef0: 20 20 20 20 65 6c 73 65 20 7b 0a 20 20 20 20 20 else {. 00025f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 00025f10: 65 74 75 72 6e 20 74 73 2e 44 65 62 75 67 2e 61 eturn ts.Debug.a 00025f20: 73 73 65 72 74 4e 65 76 65 72 28 6e 61 6d 65 2e ssertNever(name. 00025f30: 6e 61 6d 65 29 3b 0a 20 20 20 20 20 20 20 20 20 name);. 00025f40: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00025f50: 20 20 20 20 20 63 61 73 65 20 33 31 31 20 2f 2a case 311 /* 00025f60: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f SyntaxKind.JSDo 00025f70: 63 4d 65 6d 62 65 72 4e 61 6d 65 20 2a 2f 3a 0a cMemberName */:. 00025f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00025f90: 72 65 74 75 72 6e 20 65 6e 74 69 74 79 4e 61 6d return entityNam 00025fa0: 65 54 6f 53 74 72 69 6e 67 28 6e 61 6d 65 2e 6c eToString(name.l 00025fb0: 65 66 74 29 20 2b 20 65 6e 74 69 74 79 4e 61 6d eft) + entityNam 00025fc0: 65 54 6f 53 74 72 69 6e 67 28 6e 61 6d 65 2e 72 eToString(name.r 00025fd0: 69 67 68 74 29 3b 0a 20 20 20 20 20 20 20 20 20 ight);. 00025fe0: 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 default:. 00025ff0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00026000: 72 6e 20 74 73 2e 44 65 62 75 67 2e 61 73 73 65 rn ts.Debug.asse 00026010: 72 74 4e 65 76 65 72 28 6e 61 6d 65 29 3b 0a 20 rtNever(name);. 00026020: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 }. }. 00026030: 20 20 20 74 73 2e 65 6e 74 69 74 79 4e 61 6d 65 ts.entityName 00026040: 54 6f 53 74 72 69 6e 67 20 3d 20 65 6e 74 69 74 ToString = entit 00026050: 79 4e 61 6d 65 54 6f 53 74 72 69 6e 67 3b 0a 20 yNameToString;. 00026060: 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 61 function crea 00026070: 74 65 44 69 61 67 6e 6f 73 74 69 63 46 6f 72 4e teDiagnosticForN 00026080: 6f 64 65 28 6e 6f 64 65 2c 20 6d 65 73 73 61 67 ode(node, messag 00026090: 65 2c 20 61 72 67 30 2c 20 61 72 67 31 2c 20 61 e, arg0, arg1, a 000260a0: 72 67 32 2c 20 61 72 67 33 29 20 7b 0a 20 20 20 rg2, arg3) {. 000260b0: 20 20 20 20 20 76 61 72 20 73 6f 75 72 63 65 46 var sourceF 000260c0: 69 6c 65 20 3d 20 67 65 74 53 6f 75 72 63 65 46 ile = getSourceF 000260d0: 69 6c 65 4f 66 4e 6f 64 65 28 6e 6f 64 65 29 3b ileOfNode(node); 000260e0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 000260f0: 63 72 65 61 74 65 44 69 61 67 6e 6f 73 74 69 63 createDiagnostic 00026100: 46 6f 72 4e 6f 64 65 49 6e 53 6f 75 72 63 65 46 ForNodeInSourceF 00026110: 69 6c 65 28 73 6f 75 72 63 65 46 69 6c 65 2c 20 ile(sourceFile, 00026120: 6e 6f 64 65 2c 20 6d 65 73 73 61 67 65 2c 20 61 node, message, a 00026130: 72 67 30 2c 20 61 72 67 31 2c 20 61 72 67 32 2c rg0, arg1, arg2, 00026140: 20 61 72 67 33 29 3b 0a 20 20 20 20 7d 0a 20 20 arg3);. }. 00026150: 20 20 74 73 2e 63 72 65 61 74 65 44 69 61 67 6e ts.createDiagn 00026160: 6f 73 74 69 63 46 6f 72 4e 6f 64 65 20 3d 20 63 osticForNode = c 00026170: 72 65 61 74 65 44 69 61 67 6e 6f 73 74 69 63 46 reateDiagnosticF 00026180: 6f 72 4e 6f 64 65 3b 0a 20 20 20 20 66 75 6e 63 orNode;. func 00026190: 74 69 6f 6e 20 63 72 65 61 74 65 44 69 61 67 6e tion createDiagn 000261a0: 6f 73 74 69 63 46 6f 72 4e 6f 64 65 41 72 72 61 osticForNodeArra 000261b0: 79 28 73 6f 75 72 63 65 46 69 6c 65 2c 20 6e 6f y(sourceFile, no 000261c0: 64 65 73 2c 20 6d 65 73 73 61 67 65 2c 20 61 72 des, message, ar 000261d0: 67 30 2c 20 61 72 67 31 2c 20 61 72 67 32 2c 20 g0, arg1, arg2, 000261e0: 61 72 67 33 29 20 7b 0a 20 20 20 20 20 20 20 20 arg3) {. 000261f0: 76 61 72 20 73 74 61 72 74 20 3d 20 74 73 2e 73 var start = ts.s 00026200: 6b 69 70 54 72 69 76 69 61 28 73 6f 75 72 63 65 kipTrivia(source 00026210: 46 69 6c 65 2e 74 65 78 74 2c 20 6e 6f 64 65 73 File.text, nodes 00026220: 2e 70 6f 73 29 3b 0a 20 20 20 20 20 20 20 20 72 .pos);. r 00026230: 65 74 75 72 6e 20 63 72 65 61 74 65 46 69 6c 65 eturn createFile 00026240: 44 69 61 67 6e 6f 73 74 69 63 28 73 6f 75 72 63 Diagnostic(sourc 00026250: 65 46 69 6c 65 2c 20 73 74 61 72 74 2c 20 6e 6f eFile, start, no 00026260: 64 65 73 2e 65 6e 64 20 2d 20 73 74 61 72 74 2c des.end - start, 00026270: 20 6d 65 73 73 61 67 65 2c 20 61 72 67 30 2c 20 message, arg0, 00026280: 61 72 67 31 2c 20 61 72 67 32 2c 20 61 72 67 33 arg1, arg2, arg3 00026290: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 000262a0: 63 72 65 61 74 65 44 69 61 67 6e 6f 73 74 69 63 createDiagnostic 000262b0: 46 6f 72 4e 6f 64 65 41 72 72 61 79 20 3d 20 63 ForNodeArray = c 000262c0: 72 65 61 74 65 44 69 61 67 6e 6f 73 74 69 63 46 reateDiagnosticF 000262d0: 6f 72 4e 6f 64 65 41 72 72 61 79 3b 0a 20 20 20 orNodeArray;. 000262e0: 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 61 74 65 function create 000262f0: 44 69 61 67 6e 6f 73 74 69 63 46 6f 72 4e 6f 64 DiagnosticForNod 00026300: 65 49 6e 53 6f 75 72 63 65 46 69 6c 65 28 73 6f eInSourceFile(so 00026310: 75 72 63 65 46 69 6c 65 2c 20 6e 6f 64 65 2c 20 urceFile, node, 00026320: 6d 65 73 73 61 67 65 2c 20 61 72 67 30 2c 20 61 message, arg0, a 00026330: 72 67 31 2c 20 61 72 67 32 2c 20 61 72 67 33 29 rg1, arg2, arg3) 00026340: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 73 {. var s 00026350: 70 61 6e 20 3d 20 67 65 74 45 72 72 6f 72 53 70 pan = getErrorSp 00026360: 61 6e 46 6f 72 4e 6f 64 65 28 73 6f 75 72 63 65 anForNode(source 00026370: 46 69 6c 65 2c 20 6e 6f 64 65 29 3b 0a 20 20 20 File, node);. 00026380: 20 20 20 20 20 72 65 74 75 72 6e 20 63 72 65 61 return crea 00026390: 74 65 46 69 6c 65 44 69 61 67 6e 6f 73 74 69 63 teFileDiagnostic 000263a0: 28 73 6f 75 72 63 65 46 69 6c 65 2c 20 73 70 61 (sourceFile, spa 000263b0: 6e 2e 73 74 61 72 74 2c 20 73 70 61 6e 2e 6c 65 n.start, span.le 000263c0: 6e 67 74 68 2c 20 6d 65 73 73 61 67 65 2c 20 61 ngth, message, a 000263d0: 72 67 30 2c 20 61 72 67 31 2c 20 61 72 67 32 2c rg0, arg1, arg2, 000263e0: 20 61 72 67 33 29 3b 0a 20 20 20 20 7d 0a 20 20 arg3);. }. 000263f0: 20 20 74 73 2e 63 72 65 61 74 65 44 69 61 67 6e ts.createDiagn 00026400: 6f 73 74 69 63 46 6f 72 4e 6f 64 65 49 6e 53 6f osticForNodeInSo 00026410: 75 72 63 65 46 69 6c 65 20 3d 20 63 72 65 61 74 urceFile = creat 00026420: 65 44 69 61 67 6e 6f 73 74 69 63 46 6f 72 4e 6f eDiagnosticForNo 00026430: 64 65 49 6e 53 6f 75 72 63 65 46 69 6c 65 3b 0a deInSourceFile;. 00026440: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 function cre 00026450: 61 74 65 44 69 61 67 6e 6f 73 74 69 63 46 6f 72 ateDiagnosticFor 00026460: 4e 6f 64 65 46 72 6f 6d 4d 65 73 73 61 67 65 43 NodeFromMessageC 00026470: 68 61 69 6e 28 6e 6f 64 65 2c 20 6d 65 73 73 61 hain(node, messa 00026480: 67 65 43 68 61 69 6e 2c 20 72 65 6c 61 74 65 64 geChain, related 00026490: 49 6e 66 6f 72 6d 61 74 69 6f 6e 29 20 7b 0a 20 Information) {. 000264a0: 20 20 20 20 20 20 20 76 61 72 20 73 6f 75 72 63 var sourc 000264b0: 65 46 69 6c 65 20 3d 20 67 65 74 53 6f 75 72 63 eFile = getSourc 000264c0: 65 46 69 6c 65 4f 66 4e 6f 64 65 28 6e 6f 64 65 eFileOfNode(node 000264d0: 29 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 73 );. var s 000264e0: 70 61 6e 20 3d 20 67 65 74 45 72 72 6f 72 53 70 pan = getErrorSp 000264f0: 61 6e 46 6f 72 4e 6f 64 65 28 73 6f 75 72 63 65 anForNode(source 00026500: 46 69 6c 65 2c 20 6e 6f 64 65 29 3b 0a 20 20 20 File, node);. 00026510: 20 20 20 20 20 72 65 74 75 72 6e 20 63 72 65 61 return crea 00026520: 74 65 46 69 6c 65 44 69 61 67 6e 6f 73 74 69 63 teFileDiagnostic 00026530: 46 72 6f 6d 4d 65 73 73 61 67 65 43 68 61 69 6e FromMessageChain 00026540: 28 73 6f 75 72 63 65 46 69 6c 65 2c 20 73 70 61 (sourceFile, spa 00026550: 6e 2e 73 74 61 72 74 2c 20 73 70 61 6e 2e 6c 65 n.start, span.le 00026560: 6e 67 74 68 2c 20 6d 65 73 73 61 67 65 43 68 61 ngth, messageCha 00026570: 69 6e 2c 20 72 65 6c 61 74 65 64 49 6e 66 6f 72 in, relatedInfor 00026580: 6d 61 74 69 6f 6e 29 3b 0a 20 20 20 20 7d 0a 20 mation);. }. 00026590: 20 20 20 74 73 2e 63 72 65 61 74 65 44 69 61 67 ts.createDiag 000265a0: 6e 6f 73 74 69 63 46 6f 72 4e 6f 64 65 46 72 6f nosticForNodeFro 000265b0: 6d 4d 65 73 73 61 67 65 43 68 61 69 6e 20 3d 20 mMessageChain = 000265c0: 63 72 65 61 74 65 44 69 61 67 6e 6f 73 74 69 63 createDiagnostic 000265d0: 46 6f 72 4e 6f 64 65 46 72 6f 6d 4d 65 73 73 61 ForNodeFromMessa 000265e0: 67 65 43 68 61 69 6e 3b 0a 20 20 20 20 66 75 6e geChain;. fun 000265f0: 63 74 69 6f 6e 20 61 73 73 65 72 74 44 69 61 67 ction assertDiag 00026600: 6e 6f 73 74 69 63 4c 6f 63 61 74 69 6f 6e 28 66 nosticLocation(f 00026610: 69 6c 65 2c 20 73 74 61 72 74 2c 20 6c 65 6e 67 ile, start, leng 00026620: 74 68 29 20 7b 0a 20 20 20 20 20 20 20 20 74 73 th) {. ts 00026630: 2e 44 65 62 75 67 2e 61 73 73 65 72 74 47 72 65 .Debug.assertGre 00026640: 61 74 65 72 54 68 61 6e 4f 72 45 71 75 61 6c 28 aterThanOrEqual( 00026650: 73 74 61 72 74 2c 20 30 29 3b 0a 20 20 20 20 20 start, 0);. 00026660: 20 20 20 74 73 2e 44 65 62 75 67 2e 61 73 73 65 ts.Debug.asse 00026670: 72 74 47 72 65 61 74 65 72 54 68 61 6e 4f 72 45 rtGreaterThanOrE 00026680: 71 75 61 6c 28 6c 65 6e 67 74 68 2c 20 30 29 3b qual(length, 0); 00026690: 0a 20 20 20 20 20 20 20 20 69 66 20 28 66 69 6c . if (fil 000266a0: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 e) {. 000266b0: 20 74 73 2e 44 65 62 75 67 2e 61 73 73 65 72 74 ts.Debug.assert 000266c0: 4c 65 73 73 54 68 61 6e 4f 72 45 71 75 61 6c 28 LessThanOrEqual( 000266d0: 73 74 61 72 74 2c 20 66 69 6c 65 2e 74 65 78 74 start, file.text 000266e0: 2e 6c 65 6e 67 74 68 29 3b 0a 20 20 20 20 20 20 .length);. 000266f0: 20 20 20 20 20 20 74 73 2e 44 65 62 75 67 2e 61 ts.Debug.a 00026700: 73 73 65 72 74 4c 65 73 73 54 68 61 6e 4f 72 45 ssertLessThanOrE 00026710: 71 75 61 6c 28 73 74 61 72 74 20 2b 20 6c 65 6e qual(start + len 00026720: 67 74 68 2c 20 66 69 6c 65 2e 74 65 78 74 2e 6c gth, file.text.l 00026730: 65 6e 67 74 68 29 3b 0a 20 20 20 20 20 20 20 20 ength);. 00026740: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 }. }. func 00026750: 74 69 6f 6e 20 63 72 65 61 74 65 46 69 6c 65 44 tion createFileD 00026760: 69 61 67 6e 6f 73 74 69 63 46 72 6f 6d 4d 65 73 iagnosticFromMes 00026770: 73 61 67 65 43 68 61 69 6e 28 66 69 6c 65 2c 20 sageChain(file, 00026780: 73 74 61 72 74 2c 20 6c 65 6e 67 74 68 2c 20 6d start, length, m 00026790: 65 73 73 61 67 65 43 68 61 69 6e 2c 20 72 65 6c essageChain, rel 000267a0: 61 74 65 64 49 6e 66 6f 72 6d 61 74 69 6f 6e 29 atedInformation) 000267b0: 20 7b 0a 20 20 20 20 20 20 20 20 61 73 73 65 72 {. asser 000267c0: 74 44 69 61 67 6e 6f 73 74 69 63 4c 6f 63 61 74 tDiagnosticLocat 000267d0: 69 6f 6e 28 66 69 6c 65 2c 20 73 74 61 72 74 2c ion(file, start, 000267e0: 20 6c 65 6e 67 74 68 29 3b 0a 20 20 20 20 20 20 length);. 000267f0: 20 20 72 65 74 75 72 6e 20 7b 0a 20 20 20 20 20 return {. 00026800: 20 20 20 20 20 20 20 66 69 6c 65 3a 20 66 69 6c file: fil 00026810: 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 e,. s 00026820: 74 61 72 74 3a 20 73 74 61 72 74 2c 0a 20 20 20 tart: start,. 00026830: 20 20 20 20 20 20 20 20 20 6c 65 6e 67 74 68 3a length: 00026840: 20 6c 65 6e 67 74 68 2c 0a 20 20 20 20 20 20 20 length,. 00026850: 20 20 20 20 20 63 6f 64 65 3a 20 6d 65 73 73 61 code: messa 00026860: 67 65 43 68 61 69 6e 2e 63 6f 64 65 2c 0a 20 20 geChain.code,. 00026870: 20 20 20 20 20 20 20 20 20 20 63 61 74 65 67 6f catego 00026880: 72 79 3a 20 6d 65 73 73 61 67 65 43 68 61 69 6e ry: messageChain 00026890: 2e 63 61 74 65 67 6f 72 79 2c 0a 20 20 20 20 20 .category,. 000268a0: 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 54 65 messageTe 000268b0: 78 74 3a 20 6d 65 73 73 61 67 65 43 68 61 69 6e xt: messageChain 000268c0: 2e 6e 65 78 74 20 3f 20 6d 65 73 73 61 67 65 43 .next ? messageC 000268d0: 68 61 69 6e 20 3a 20 6d 65 73 73 61 67 65 43 68 hain : messageCh 000268e0: 61 69 6e 2e 6d 65 73 73 61 67 65 54 65 78 74 2c ain.messageText, 000268f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 6c . rel 00026900: 61 74 65 64 49 6e 66 6f 72 6d 61 74 69 6f 6e 3a atedInformation: 00026910: 20 72 65 6c 61 74 65 64 49 6e 66 6f 72 6d 61 74 relatedInformat 00026920: 69 6f 6e 0a 20 20 20 20 20 20 20 20 7d 3b 0a 20 ion. };. 00026930: 20 20 20 7d 0a 20 20 20 20 74 73 2e 63 72 65 61 }. ts.crea 00026940: 74 65 46 69 6c 65 44 69 61 67 6e 6f 73 74 69 63 teFileDiagnostic 00026950: 46 72 6f 6d 4d 65 73 73 61 67 65 43 68 61 69 6e FromMessageChain 00026960: 20 3d 20 63 72 65 61 74 65 46 69 6c 65 44 69 61 = createFileDia 00026970: 67 6e 6f 73 74 69 63 46 72 6f 6d 4d 65 73 73 61 gnosticFromMessa 00026980: 67 65 43 68 61 69 6e 3b 0a 20 20 20 20 66 75 6e geChain;. fun 00026990: 63 74 69 6f 6e 20 63 72 65 61 74 65 44 69 61 67 ction createDiag 000269a0: 6e 6f 73 74 69 63 46 6f 72 46 69 6c 65 46 72 6f nosticForFileFro 000269b0: 6d 4d 65 73 73 61 67 65 43 68 61 69 6e 28 73 6f mMessageChain(so 000269c0: 75 72 63 65 46 69 6c 65 2c 20 6d 65 73 73 61 67 urceFile, messag 000269d0: 65 43 68 61 69 6e 2c 20 72 65 6c 61 74 65 64 49 eChain, relatedI 000269e0: 6e 66 6f 72 6d 61 74 69 6f 6e 29 20 7b 0a 20 20 nformation) {. 000269f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 7b 0a 20 return {. 00026a00: 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 3a file: 00026a10: 20 73 6f 75 72 63 65 46 69 6c 65 2c 0a 20 20 20 sourceFile,. 00026a20: 20 20 20 20 20 20 20 20 20 73 74 61 72 74 3a 20 start: 00026a30: 30 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 0,. l 00026a40: 65 6e 67 74 68 3a 20 30 2c 0a 20 20 20 20 20 20 ength: 0,. 00026a50: 20 20 20 20 20 20 63 6f 64 65 3a 20 6d 65 73 73 code: mess 00026a60: 61 67 65 43 68 61 69 6e 2e 63 6f 64 65 2c 0a 20 ageChain.code,. 00026a70: 20 20 20 20 20 20 20 20 20 20 20 63 61 74 65 67 categ 00026a80: 6f 72 79 3a 20 6d 65 73 73 61 67 65 43 68 61 69 ory: messageChai 00026a90: 6e 2e 63 61 74 65 67 6f 72 79 2c 0a 20 20 20 20 n.category,. 00026aa0: 20 20 20 20 20 20 20 20 6d 65 73 73 61 67 65 54 messageT 00026ab0: 65 78 74 3a 20 6d 65 73 73 61 67 65 43 68 61 69 ext: messageChai 00026ac0: 6e 2e 6e 65 78 74 20 3f 20 6d 65 73 73 61 67 65 n.next ? message 00026ad0: 43 68 61 69 6e 20 3a 20 6d 65 73 73 61 67 65 43 Chain : messageC 00026ae0: 68 61 69 6e 2e 6d 65 73 73 61 67 65 54 65 78 74 hain.messageText 00026af0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 ,. re 00026b00: 6c 61 74 65 64 49 6e 66 6f 72 6d 61 74 69 6f 6e latedInformation 00026b10: 3a 20 72 65 6c 61 74 65 64 49 6e 66 6f 72 6d 61 : relatedInforma 00026b20: 74 69 6f 6e 0a 20 20 20 20 20 20 20 20 7d 3b 0a tion. };. 00026b30: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 63 72 65 }. ts.cre 00026b40: 61 74 65 44 69 61 67 6e 6f 73 74 69 63 46 6f 72 ateDiagnosticFor 00026b50: 46 69 6c 65 46 72 6f 6d 4d 65 73 73 61 67 65 43 FileFromMessageC 00026b60: 68 61 69 6e 20 3d 20 63 72 65 61 74 65 44 69 61 hain = createDia 00026b70: 67 6e 6f 73 74 69 63 46 6f 72 46 69 6c 65 46 72 gnosticForFileFr 00026b80: 6f 6d 4d 65 73 73 61 67 65 43 68 61 69 6e 3b 0a omMessageChain;. 00026b90: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 function cre 00026ba0: 61 74 65 44 69 61 67 6e 6f 73 74 69 63 4d 65 73 ateDiagnosticMes 00026bb0: 73 61 67 65 43 68 61 69 6e 46 72 6f 6d 44 69 61 sageChainFromDia 00026bc0: 67 6e 6f 73 74 69 63 28 64 69 61 67 6e 6f 73 74 gnostic(diagnost 00026bd0: 69 63 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 ic) {. re 00026be0: 74 75 72 6e 20 74 79 70 65 6f 66 20 64 69 61 67 turn typeof diag 00026bf0: 6e 6f 73 74 69 63 2e 6d 65 73 73 61 67 65 54 65 nostic.messageTe 00026c00: 78 74 20 3d 3d 3d 20 22 73 74 72 69 6e 67 22 20 xt === "string" 00026c10: 3f 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ? {. 00026c20: 63 6f 64 65 3a 20 64 69 61 67 6e 6f 73 74 69 63 code: diagnostic 00026c30: 2e 63 6f 64 65 2c 0a 20 20 20 20 20 20 20 20 20 .code,. 00026c40: 20 20 20 63 61 74 65 67 6f 72 79 3a 20 64 69 61 category: dia 00026c50: 67 6e 6f 73 74 69 63 2e 63 61 74 65 67 6f 72 79 gnostic.category 00026c60: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 ,. me 00026c70: 73 73 61 67 65 54 65 78 74 3a 20 64 69 61 67 6e ssageText: diagn 00026c80: 6f 73 74 69 63 2e 6d 65 73 73 61 67 65 54 65 78 ostic.messageTex 00026c90: 74 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e t,. n 00026ca0: 65 78 74 3a 20 64 69 61 67 6e 6f 73 74 69 63 2e ext: diagnostic. 00026cb0: 6e 65 78 74 2c 0a 20 20 20 20 20 20 20 20 7d 20 next,. } 00026cc0: 3a 20 64 69 61 67 6e 6f 73 74 69 63 2e 6d 65 73 : diagnostic.mes 00026cd0: 73 61 67 65 54 65 78 74 3b 0a 20 20 20 20 7d 0a sageText;. }. 00026ce0: 20 20 20 20 74 73 2e 63 72 65 61 74 65 44 69 61 ts.createDia 00026cf0: 67 6e 6f 73 74 69 63 4d 65 73 73 61 67 65 43 68 gnosticMessageCh 00026d00: 61 69 6e 46 72 6f 6d 44 69 61 67 6e 6f 73 74 69 ainFromDiagnosti 00026d10: 63 20 3d 20 63 72 65 61 74 65 44 69 61 67 6e 6f c = createDiagno 00026d20: 73 74 69 63 4d 65 73 73 61 67 65 43 68 61 69 6e sticMessageChain 00026d30: 46 72 6f 6d 44 69 61 67 6e 6f 73 74 69 63 3b 0a FromDiagnostic;. 00026d40: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 63 72 65 function cre 00026d50: 61 74 65 44 69 61 67 6e 6f 73 74 69 63 46 6f 72 ateDiagnosticFor 00026d60: 52 61 6e 67 65 28 73 6f 75 72 63 65 46 69 6c 65 Range(sourceFile 00026d70: 2c 20 72 61 6e 67 65 2c 20 6d 65 73 73 61 67 65 , range, message 00026d80: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 00026d90: 72 6e 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 rn {. 00026da0: 20 66 69 6c 65 3a 20 73 6f 75 72 63 65 46 69 6c file: sourceFil 00026db0: 65 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 e,. s 00026dc0: 74 61 72 74 3a 20 72 61 6e 67 65 2e 70 6f 73 2c tart: range.pos, 00026dd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 6e . len 00026de0: 67 74 68 3a 20 72 61 6e 67 65 2e 65 6e 64 20 2d gth: range.end - 00026df0: 20 72 61 6e 67 65 2e 70 6f 73 2c 0a 20 20 20 20 range.pos,. 00026e00: 20 20 20 20 20 20 20 20 63 6f 64 65 3a 20 6d 65 code: me 00026e10: 73 73 61 67 65 2e 63 6f 64 65 2c 0a 20 20 20 20 ssage.code,. 00026e20: 20 20 20 20 20 20 20 20 63 61 74 65 67 6f 72 79 category 00026e30: 3a 20 6d 65 73 73 61 67 65 2e 63 61 74 65 67 6f : message.catego 00026e40: 72 79 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ry,. 00026e50: 6d 65 73 73 61 67 65 54 65 78 74 3a 20 6d 65 73 messageText: mes 00026e60: 73 61 67 65 2e 6d 65 73 73 61 67 65 2c 0a 20 20 sage.message,. 00026e70: 20 20 20 20 20 20 7d 3b 0a 20 20 20 20 7d 0a 20 };. }. 00026e80: 20 20 20 74 73 2e 63 72 65 61 74 65 44 69 61 67 ts.createDiag 00026e90: 6e 6f 73 74 69 63 46 6f 72 52 61 6e 67 65 20 3d nosticForRange = 00026ea0: 20 63 72 65 61 74 65 44 69 61 67 6e 6f 73 74 69 createDiagnosti 00026eb0: 63 46 6f 72 52 61 6e 67 65 3b 0a 20 20 20 20 66 cForRange;. f 00026ec0: 75 6e 63 74 69 6f 6e 20 67 65 74 53 70 61 6e 4f unction getSpanO 00026ed0: 66 54 6f 6b 65 6e 41 74 50 6f 73 69 74 69 6f 6e fTokenAtPosition 00026ee0: 28 73 6f 75 72 63 65 46 69 6c 65 2c 20 70 6f 73 (sourceFile, pos 00026ef0: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 00026f00: 73 63 61 6e 6e 65 72 20 3d 20 74 73 2e 63 72 65 scanner = ts.cre 00026f10: 61 74 65 53 63 61 6e 6e 65 72 28 73 6f 75 72 63 ateScanner(sourc 00026f20: 65 46 69 6c 65 2e 6c 61 6e 67 75 61 67 65 56 65 eFile.languageVe 00026f30: 72 73 69 6f 6e 2c 20 2f 2a 73 6b 69 70 54 72 69 rsion, /*skipTri 00026f40: 76 69 61 2a 2f 20 74 72 75 65 2c 20 73 6f 75 72 via*/ true, sour 00026f50: 63 65 46 69 6c 65 2e 6c 61 6e 67 75 61 67 65 56 ceFile.languageV 00026f60: 61 72 69 61 6e 74 2c 20 73 6f 75 72 63 65 46 69 ariant, sourceFi 00026f70: 6c 65 2e 74 65 78 74 2c 20 2f 2a 6f 6e 45 72 72 le.text, /*onErr 00026f80: 6f 72 3a 2a 2f 20 75 6e 64 65 66 69 6e 65 64 2c or:*/ undefined, 00026f90: 20 70 6f 73 29 3b 0a 20 20 20 20 20 20 20 20 73 pos);. s 00026fa0: 63 61 6e 6e 65 72 2e 73 63 61 6e 28 29 3b 0a 20 canner.scan();. 00026fb0: 20 20 20 20 20 20 20 76 61 72 20 73 74 61 72 74 var start 00026fc0: 20 3d 20 73 63 61 6e 6e 65 72 2e 67 65 74 54 6f = scanner.getTo 00026fd0: 6b 65 6e 50 6f 73 28 29 3b 0a 20 20 20 20 20 20 kenPos();. 00026fe0: 20 20 72 65 74 75 72 6e 20 74 73 2e 63 72 65 61 return ts.crea 00026ff0: 74 65 54 65 78 74 53 70 61 6e 46 72 6f 6d 42 6f teTextSpanFromBo 00027000: 75 6e 64 73 28 73 74 61 72 74 2c 20 73 63 61 6e unds(start, scan 00027010: 6e 65 72 2e 67 65 74 54 65 78 74 50 6f 73 28 29 ner.getTextPos() 00027020: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 00027030: 67 65 74 53 70 61 6e 4f 66 54 6f 6b 65 6e 41 74 getSpanOfTokenAt 00027040: 50 6f 73 69 74 69 6f 6e 20 3d 20 67 65 74 53 70 Position = getSp 00027050: 61 6e 4f 66 54 6f 6b 65 6e 41 74 50 6f 73 69 74 anOfTokenAtPosit 00027060: 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ion;. functio 00027070: 6e 20 67 65 74 45 72 72 6f 72 53 70 61 6e 46 6f n getErrorSpanFo 00027080: 72 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e 28 73 rArrowFunction(s 00027090: 6f 75 72 63 65 46 69 6c 65 2c 20 6e 6f 64 65 29 ourceFile, node) 000270a0: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 70 {. var p 000270b0: 6f 73 20 3d 20 74 73 2e 73 6b 69 70 54 72 69 76 os = ts.skipTriv 000270c0: 69 61 28 73 6f 75 72 63 65 46 69 6c 65 2e 74 65 ia(sourceFile.te 000270d0: 78 74 2c 20 6e 6f 64 65 2e 70 6f 73 29 3b 0a 20 xt, node.pos);. 000270e0: 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e if (node. 000270f0: 62 6f 64 79 20 26 26 20 6e 6f 64 65 2e 62 6f 64 body && node.bod 00027100: 79 2e 6b 69 6e 64 20 3d 3d 3d 20 32 33 35 20 2f y.kind === 235 / 00027110: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 6c 6f * SyntaxKind.Blo 00027120: 63 6b 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 ck */) {. 00027130: 20 20 20 20 20 76 61 72 20 73 74 61 72 74 4c 69 var startLi 00027140: 6e 65 20 3d 20 74 73 2e 67 65 74 4c 69 6e 65 41 ne = ts.getLineA 00027150: 6e 64 43 68 61 72 61 63 74 65 72 4f 66 50 6f 73 ndCharacterOfPos 00027160: 69 74 69 6f 6e 28 73 6f 75 72 63 65 46 69 6c 65 ition(sourceFile 00027170: 2c 20 6e 6f 64 65 2e 62 6f 64 79 2e 70 6f 73 29 , node.body.pos) 00027180: 2e 6c 69 6e 65 3b 0a 20 20 20 20 20 20 20 20 20 .line;. 00027190: 20 20 20 76 61 72 20 65 6e 64 4c 69 6e 65 20 3d var endLine = 000271a0: 20 74 73 2e 67 65 74 4c 69 6e 65 41 6e 64 43 68 ts.getLineAndCh 000271b0: 61 72 61 63 74 65 72 4f 66 50 6f 73 69 74 69 6f aracterOfPositio 000271c0: 6e 28 73 6f 75 72 63 65 46 69 6c 65 2c 20 6e 6f n(sourceFile, no 000271d0: 64 65 2e 62 6f 64 79 2e 65 6e 64 29 2e 6c 69 6e de.body.end).lin 000271e0: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 e;. i 000271f0: 66 20 28 73 74 61 72 74 4c 69 6e 65 20 3c 20 65 f (startLine < e 00027200: 6e 64 4c 69 6e 65 29 20 7b 0a 20 20 20 20 20 20 ndLine) {. 00027210: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 54 68 65 // The 00027220: 20 61 72 72 6f 77 20 66 75 6e 63 74 69 6f 6e 20 arrow function 00027230: 73 70 61 6e 73 20 6d 75 6c 74 69 70 6c 65 20 6c spans multiple l 00027240: 69 6e 65 73 2c 0a 20 20 20 20 20 20 20 20 20 20 ines,. 00027250: 20 20 20 20 20 20 2f 2f 20 6d 61 6b 65 20 74 68 // make th 00027260: 65 20 65 72 72 6f 72 20 73 70 61 6e 20 62 65 20 e error span be 00027270: 74 68 65 20 66 69 72 73 74 20 6c 69 6e 65 2c 20 the first line, 00027280: 69 6e 63 6c 75 73 69 76 65 2e 0a 20 20 20 20 20 inclusive.. 00027290: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 000272a0: 6e 20 74 73 2e 63 72 65 61 74 65 54 65 78 74 53 n ts.createTextS 000272b0: 70 61 6e 28 70 6f 73 2c 20 67 65 74 45 6e 64 4c pan(pos, getEndL 000272c0: 69 6e 65 50 6f 73 69 74 69 6f 6e 28 73 74 61 72 inePosition(star 000272d0: 74 4c 69 6e 65 2c 20 73 6f 75 72 63 65 46 69 6c tLine, sourceFil 000272e0: 65 29 20 2d 20 70 6f 73 20 2b 20 31 29 3b 0a 20 e) - pos + 1);. 000272f0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 00027300: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 }. r 00027310: 65 74 75 72 6e 20 74 73 2e 63 72 65 61 74 65 54 eturn ts.createT 00027320: 65 78 74 53 70 61 6e 46 72 6f 6d 42 6f 75 6e 64 extSpanFromBound 00027330: 73 28 70 6f 73 2c 20 6e 6f 64 65 2e 65 6e 64 29 s(pos, node.end) 00027340: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 ;. }. func 00027350: 74 69 6f 6e 20 67 65 74 45 72 72 6f 72 53 70 61 tion getErrorSpa 00027360: 6e 46 6f 72 4e 6f 64 65 28 73 6f 75 72 63 65 46 nForNode(sourceF 00027370: 69 6c 65 2c 20 6e 6f 64 65 29 20 7b 0a 20 20 20 ile, node) {. 00027380: 20 20 20 20 20 76 61 72 20 65 72 72 6f 72 4e 6f var errorNo 00027390: 64 65 20 3d 20 6e 6f 64 65 3b 0a 20 20 20 20 20 de = node;. 000273a0: 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e switch (node. 000273b0: 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 kind) {. 000273c0: 20 20 20 20 63 61 73 65 20 33 30 35 20 2f 2a 20 case 305 /* 000273d0: 53 79 6e 74 61 78 4b 69 6e 64 2e 53 6f 75 72 63 SyntaxKind.Sourc 000273e0: 65 46 69 6c 65 20 2a 2f 3a 0a 20 20 20 20 20 20 eFile */:. 000273f0: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 70 6f var po 00027400: 73 5f 31 20 3d 20 74 73 2e 73 6b 69 70 54 72 69 s_1 = ts.skipTri 00027410: 76 69 61 28 73 6f 75 72 63 65 46 69 6c 65 2e 74 via(sourceFile.t 00027420: 65 78 74 2c 20 30 2c 20 2f 2a 73 74 6f 70 41 66 ext, 0, /*stopAf 00027430: 74 65 72 4c 69 6e 65 42 72 65 61 6b 2a 2f 20 66 terLineBreak*/ f 00027440: 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 20 20 alse);. 00027450: 20 20 20 20 20 20 20 69 66 20 28 70 6f 73 5f 31 if (pos_1 00027460: 20 3d 3d 3d 20 73 6f 75 72 63 65 46 69 6c 65 2e === sourceFile. 00027470: 74 65 78 74 2e 6c 65 6e 67 74 68 29 20 7b 0a 20 text.length) {. 00027480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00027490: 20 20 20 2f 2f 20 66 69 6c 65 20 69 73 20 65 6d // file is em 000274a0: 70 74 79 20 2d 20 72 65 74 75 72 6e 20 73 70 61 pty - return spa 000274b0: 6e 20 66 6f 72 20 74 68 65 20 62 65 67 69 6e 6e n for the beginn 000274c0: 69 6e 67 20 6f 66 20 74 68 65 20 66 69 6c 65 0a ing of the file. 000274d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000274e0: 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 63 72 return ts.cr 000274f0: 65 61 74 65 54 65 78 74 53 70 61 6e 28 30 2c 20 eateTextSpan(0, 00027500: 30 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 0);. 00027510: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }. 00027520: 20 20 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 return get 00027530: 53 70 61 6e 4f 66 54 6f 6b 65 6e 41 74 50 6f 73 SpanOfTokenAtPos 00027540: 69 74 69 6f 6e 28 73 6f 75 72 63 65 46 69 6c 65 ition(sourceFile 00027550: 2c 20 70 6f 73 5f 31 29 3b 0a 20 20 20 20 20 20 , pos_1);. 00027560: 20 20 20 20 20 20 2f 2f 20 54 68 69 73 20 6c 69 // This li 00027570: 73 74 20 69 73 20 61 20 77 6f 72 6b 20 69 6e 20 st is a work in 00027580: 70 72 6f 67 72 65 73 73 2e 20 41 64 64 20 6d 69 progress. Add mi 00027590: 73 73 69 6e 67 20 6e 6f 64 65 20 6b 69 6e 64 73 ssing node kinds 000275a0: 20 74 6f 20 69 6d 70 72 6f 76 65 20 74 68 65 69 to improve thei 000275b0: 72 20 65 72 72 6f 72 0a 20 20 20 20 20 20 20 20 r error. 000275c0: 20 20 20 20 2f 2f 20 73 70 61 6e 73 2e 0a 20 20 // spans.. 000275d0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 000275e0: 35 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 54 /* SyntaxKind 000275f0: 2e 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 .VariableDeclara 00027600: 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 tion */:. 00027610: 20 20 20 20 20 63 61 73 65 20 32 30 33 20 2f 2a case 203 /* 00027620: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 69 6e 64 SyntaxKind.Bind 00027630: 69 6e 67 45 6c 65 6d 65 6e 74 20 2a 2f 3a 0a 20 ingElement */:. 00027640: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00027650: 32 35 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 257 /* SyntaxKin 00027660: 64 2e 43 6c 61 73 73 44 65 63 6c 61 72 61 74 69 d.ClassDeclarati 00027670: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 00027680: 20 20 20 63 61 73 65 20 32 32 36 20 2f 2a 20 53 case 226 /* S 00027690: 79 6e 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 45 yntaxKind.ClassE 000276a0: 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 xpression */:. 000276b0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 000276c0: 35 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 58 /* SyntaxKind 000276d0: 2e 49 6e 74 65 72 66 61 63 65 44 65 63 6c 61 72 .InterfaceDeclar 000276e0: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 000276f0: 20 20 20 20 20 20 63 61 73 65 20 32 36 31 20 2f case 261 / 00027700: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 * SyntaxKind.Mod 00027710: 75 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a uleDeclaration * 00027720: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00027730: 61 73 65 20 32 36 30 20 2f 2a 20 53 79 6e 74 61 ase 260 /* Synta 00027740: 78 4b 69 6e 64 2e 45 6e 75 6d 44 65 63 6c 61 72 xKind.EnumDeclar 00027750: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 00027760: 20 20 20 20 20 20 63 61 73 65 20 32 39 39 20 2f case 299 / 00027770: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 6e 75 * SyntaxKind.Enu 00027780: 6d 4d 65 6d 62 65 72 20 2a 2f 3a 0a 20 20 20 20 mMember */:. 00027790: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 35 36 case 256 000277a0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 /* SyntaxKind.F 000277b0: 75 6e 63 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 unctionDeclarati 000277c0: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 000277d0: 20 20 20 63 61 73 65 20 32 31 33 20 2f 2a 20 53 case 213 /* S 000277e0: 79 6e 74 61 78 4b 69 6e 64 2e 46 75 6e 63 74 69 yntaxKind.Functi 000277f0: 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a onExpression */: 00027800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00027810: 65 20 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 4b e 169 /* SyntaxK 00027820: 69 6e 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 72 ind.MethodDeclar 00027830: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 00027840: 20 20 20 20 20 20 63 61 73 65 20 31 37 32 20 2f case 172 / 00027850: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 47 65 74 * SyntaxKind.Get 00027860: 41 63 63 65 73 73 6f 72 20 2a 2f 3a 0a 20 20 20 Accessor */:. 00027870: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 case 17 00027880: 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 3 /* SyntaxKind. 00027890: 53 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 3a 0a SetAccessor */:. 000278a0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 000278b0: 20 32 35 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 259 /* SyntaxKi 000278c0: 6e 64 2e 54 79 70 65 41 6c 69 61 73 44 65 63 6c nd.TypeAliasDecl 000278d0: 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 aration */:. 000278e0: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 36 37 case 167 000278f0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 /* SyntaxKind.P 00027900: 72 6f 70 65 72 74 79 44 65 63 6c 61 72 61 74 69 ropertyDeclarati 00027910: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 00027920: 20 20 20 63 61 73 65 20 31 36 36 20 2f 2a 20 53 case 166 /* S 00027930: 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 yntaxKind.Proper 00027940: 74 79 53 69 67 6e 61 74 75 72 65 20 2a 2f 3a 0a tySignature */:. 00027950: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00027960: 20 32 36 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 268 /* SyntaxKi 00027970: 6e 64 2e 4e 61 6d 65 73 70 61 63 65 49 6d 70 6f nd.NamespaceImpo 00027980: 72 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 rt */:. 00027990: 20 20 20 20 20 20 20 65 72 72 6f 72 4e 6f 64 65 errorNode 000279a0: 20 3d 20 6e 6f 64 65 2e 6e 61 6d 65 3b 0a 20 20 = node.name;. 000279b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br 000279c0: 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 eak;. 000279d0: 20 63 61 73 65 20 32 31 34 20 2f 2a 20 53 79 6e case 214 /* Syn 000279e0: 74 61 78 4b 69 6e 64 2e 41 72 72 6f 77 46 75 6e taxKind.ArrowFun 000279f0: 63 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ction */:. 00027a00: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00027a10: 20 67 65 74 45 72 72 6f 72 53 70 61 6e 46 6f 72 getErrorSpanFor 00027a20: 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e 28 73 6f ArrowFunction(so 00027a30: 75 72 63 65 46 69 6c 65 2c 20 6e 6f 64 65 29 3b urceFile, node); 00027a40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00027a50: 65 20 32 38 39 20 2f 2a 20 53 79 6e 74 61 78 4b e 289 /* SyntaxK 00027a60: 69 6e 64 2e 43 61 73 65 43 6c 61 75 73 65 20 2a ind.CaseClause * 00027a70: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00027a80: 61 73 65 20 32 39 30 20 2f 2a 20 53 79 6e 74 61 ase 290 /* Synta 00027a90: 78 4b 69 6e 64 2e 44 65 66 61 75 6c 74 43 6c 61 xKind.DefaultCla 00027aa0: 75 73 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 use */:. 00027ab0: 20 20 20 20 20 20 20 20 76 61 72 20 73 74 61 72 var star 00027ac0: 74 20 3d 20 74 73 2e 73 6b 69 70 54 72 69 76 69 t = ts.skipTrivi 00027ad0: 61 28 73 6f 75 72 63 65 46 69 6c 65 2e 74 65 78 a(sourceFile.tex 00027ae0: 74 2c 20 6e 6f 64 65 2e 70 6f 73 29 3b 0a 20 20 t, node.pos);. 00027af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 va 00027b00: 72 20 65 6e 64 20 3d 20 6e 6f 64 65 2e 73 74 61 r end = node.sta 00027b10: 74 65 6d 65 6e 74 73 2e 6c 65 6e 67 74 68 20 3e tements.length > 00027b20: 20 30 20 3f 20 6e 6f 64 65 2e 73 74 61 74 65 6d 0 ? node.statem 00027b30: 65 6e 74 73 5b 30 5d 2e 70 6f 73 20 3a 20 6e 6f ents[0].pos : no 00027b40: 64 65 2e 65 6e 64 3b 0a 20 20 20 20 20 20 20 20 de.end;. 00027b50: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 00027b60: 73 2e 63 72 65 61 74 65 54 65 78 74 53 70 61 6e s.createTextSpan 00027b70: 46 72 6f 6d 42 6f 75 6e 64 73 28 73 74 61 72 74 FromBounds(start 00027b80: 2c 20 65 6e 64 29 3b 0a 20 20 20 20 20 20 20 20 , end);. 00027b90: 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 65 72 }. if (er 00027ba0: 72 6f 72 4e 6f 64 65 20 3d 3d 3d 20 75 6e 64 65 rorNode === unde 00027bb0: 66 69 6e 65 64 29 20 7b 0a 20 20 20 20 20 20 20 fined) {. 00027bc0: 20 20 20 20 20 2f 2f 20 49 66 20 77 65 20 64 6f // If we do 00027bd0: 6e 27 74 20 68 61 76 65 20 61 20 62 65 74 74 65 n't have a bette 00027be0: 72 20 6e 6f 64 65 2c 20 74 68 65 6e 20 6a 75 73 r node, then jus 00027bf0: 74 20 73 65 74 20 74 68 65 20 65 72 72 6f 72 20 t set the error 00027c00: 6f 6e 20 74 68 65 20 66 69 72 73 74 20 74 6f 6b on the first tok 00027c10: 65 6e 20 6f 66 0a 20 20 20 20 20 20 20 20 20 20 en of. 00027c20: 20 20 2f 2f 20 63 6f 6e 73 74 72 75 63 74 2e 0a // construct.. 00027c30: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00027c40: 72 6e 20 67 65 74 53 70 61 6e 4f 66 54 6f 6b 65 rn getSpanOfToke 00027c50: 6e 41 74 50 6f 73 69 74 69 6f 6e 28 73 6f 75 72 nAtPosition(sour 00027c60: 63 65 46 69 6c 65 2c 20 6e 6f 64 65 2e 70 6f 73 ceFile, node.pos 00027c70: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 );. }. 00027c80: 20 20 20 20 20 74 73 2e 44 65 62 75 67 2e 61 73 ts.Debug.as 00027c90: 73 65 72 74 28 21 74 73 2e 69 73 4a 53 44 6f 63 sert(!ts.isJSDoc 00027ca0: 28 65 72 72 6f 72 4e 6f 64 65 29 29 3b 0a 20 20 (errorNode));. 00027cb0: 20 20 20 20 20 20 76 61 72 20 69 73 4d 69 73 73 var isMiss 00027cc0: 69 6e 67 20 3d 20 6e 6f 64 65 49 73 4d 69 73 73 ing = nodeIsMiss 00027cd0: 69 6e 67 28 65 72 72 6f 72 4e 6f 64 65 29 3b 0a ing(errorNode);. 00027ce0: 20 20 20 20 20 20 20 20 76 61 72 20 70 6f 73 20 var pos 00027cf0: 3d 20 69 73 4d 69 73 73 69 6e 67 20 7c 7c 20 74 = isMissing || t 00027d00: 73 2e 69 73 4a 73 78 54 65 78 74 28 6e 6f 64 65 s.isJsxText(node 00027d10: 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 3f 20 ). ? 00027d20: 65 72 72 6f 72 4e 6f 64 65 2e 70 6f 73 0a 20 20 errorNode.pos. 00027d30: 20 20 20 20 20 20 20 20 20 20 3a 20 74 73 2e 73 : ts.s 00027d40: 6b 69 70 54 72 69 76 69 61 28 73 6f 75 72 63 65 kipTrivia(source 00027d50: 46 69 6c 65 2e 74 65 78 74 2c 20 65 72 72 6f 72 File.text, error 00027d60: 4e 6f 64 65 2e 70 6f 73 29 3b 0a 20 20 20 20 20 Node.pos);. 00027d70: 20 20 20 2f 2f 20 54 68 65 73 65 20 61 73 73 65 // These asse 00027d80: 72 74 73 20 73 68 6f 75 6c 64 20 61 6c 6c 20 62 rts should all b 00027d90: 65 20 73 61 74 69 73 66 69 65 64 20 66 6f 72 20 e satisfied for 00027da0: 61 20 70 72 6f 70 65 72 6c 79 20 63 6f 6e 73 74 a properly const 00027db0: 72 75 63 74 65 64 20 60 65 72 72 6f 72 4e 6f 64 ructed `errorNod 00027dc0: 65 60 2e 0a 20 20 20 20 20 20 20 20 69 66 20 28 e`.. if ( 00027dd0: 69 73 4d 69 73 73 69 6e 67 29 20 7b 0a 20 20 20 isMissing) {. 00027de0: 20 20 20 20 20 20 20 20 20 74 73 2e 44 65 62 75 ts.Debu 00027df0: 67 2e 61 73 73 65 72 74 28 70 6f 73 20 3d 3d 3d g.assert(pos === 00027e00: 20 65 72 72 6f 72 4e 6f 64 65 2e 70 6f 73 2c 20 errorNode.pos, 00027e10: 22 54 68 69 73 20 66 61 69 6c 75 72 65 20 63 6f "This failure co 00027e20: 75 6c 64 20 74 72 69 67 67 65 72 20 68 74 74 70 uld trigger http 00027e30: 73 3a 2f 2f 67 69 74 68 75 62 2e 63 6f 6d 2f 4d s://github.com/M 00027e40: 69 63 72 6f 73 6f 66 74 2f 54 79 70 65 53 63 72 icrosoft/TypeScr 00027e50: 69 70 74 2f 69 73 73 75 65 73 2f 32 30 38 30 39 ipt/issues/20809 00027e60: 22 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ");. 00027e70: 74 73 2e 44 65 62 75 67 2e 61 73 73 65 72 74 28 ts.Debug.assert( 00027e80: 70 6f 73 20 3d 3d 3d 20 65 72 72 6f 72 4e 6f 64 pos === errorNod 00027e90: 65 2e 65 6e 64 2c 20 22 54 68 69 73 20 66 61 69 e.end, "This fai 00027ea0: 6c 75 72 65 20 63 6f 75 6c 64 20 74 72 69 67 67 lure could trigg 00027eb0: 65 72 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 er https://githu 00027ec0: 62 2e 63 6f 6d 2f 4d 69 63 72 6f 73 6f 66 74 2f b.com/Microsoft/ 00027ed0: 54 79 70 65 53 63 72 69 70 74 2f 69 73 73 75 65 TypeScript/issue 00027ee0: 73 2f 32 30 38 30 39 22 29 3b 0a 20 20 20 20 20 s/20809");. 00027ef0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 65 6c 73 }. els 00027f00: 65 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 e {. 00027f10: 74 73 2e 44 65 62 75 67 2e 61 73 73 65 72 74 28 ts.Debug.assert( 00027f20: 70 6f 73 20 3e 3d 20 65 72 72 6f 72 4e 6f 64 65 pos >= errorNode 00027f30: 2e 70 6f 73 2c 20 22 54 68 69 73 20 66 61 69 6c .pos, "This fail 00027f40: 75 72 65 20 63 6f 75 6c 64 20 74 72 69 67 67 65 ure could trigge 00027f50: 72 20 68 74 74 70 73 3a 2f 2f 67 69 74 68 75 62 r https://github 00027f60: 2e 63 6f 6d 2f 4d 69 63 72 6f 73 6f 66 74 2f 54 .com/Microsoft/T 00027f70: 79 70 65 53 63 72 69 70 74 2f 69 73 73 75 65 73 ypeScript/issues 00027f80: 2f 32 30 38 30 39 22 29 3b 0a 20 20 20 20 20 20 /20809");. 00027f90: 20 20 20 20 20 20 74 73 2e 44 65 62 75 67 2e 61 ts.Debug.a 00027fa0: 73 73 65 72 74 28 70 6f 73 20 3c 3d 20 65 72 72 ssert(pos <= err 00027fb0: 6f 72 4e 6f 64 65 2e 65 6e 64 2c 20 22 54 68 69 orNode.end, "Thi 00027fc0: 73 20 66 61 69 6c 75 72 65 20 63 6f 75 6c 64 20 s failure could 00027fd0: 74 72 69 67 67 65 72 20 68 74 74 70 73 3a 2f 2f trigger https:// 00027fe0: 67 69 74 68 75 62 2e 63 6f 6d 2f 4d 69 63 72 6f github.com/Micro 00027ff0: 73 6f 66 74 2f 54 79 70 65 53 63 72 69 70 74 2f soft/TypeScript/ 00028000: 69 73 73 75 65 73 2f 32 30 38 30 39 22 29 3b 0a issues/20809");. 00028010: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 00028020: 20 20 72 65 74 75 72 6e 20 74 73 2e 63 72 65 61 return ts.crea 00028030: 74 65 54 65 78 74 53 70 61 6e 46 72 6f 6d 42 6f teTextSpanFromBo 00028040: 75 6e 64 73 28 70 6f 73 2c 20 65 72 72 6f 72 4e unds(pos, errorN 00028050: 6f 64 65 2e 65 6e 64 29 3b 0a 20 20 20 20 7d 0a ode.end);. }. 00028060: 20 20 20 20 74 73 2e 67 65 74 45 72 72 6f 72 53 ts.getErrorS 00028070: 70 61 6e 46 6f 72 4e 6f 64 65 20 3d 20 67 65 74 panForNode = get 00028080: 45 72 72 6f 72 53 70 61 6e 46 6f 72 4e 6f 64 65 ErrorSpanForNode 00028090: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 000280a0: 73 45 78 74 65 72 6e 61 6c 4f 72 43 6f 6d 6d 6f sExternalOrCommo 000280b0: 6e 4a 73 4d 6f 64 75 6c 65 28 66 69 6c 65 29 20 nJsModule(file) 000280c0: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 000280d0: 20 28 66 69 6c 65 2e 65 78 74 65 72 6e 61 6c 4d (file.externalM 000280e0: 6f 64 75 6c 65 49 6e 64 69 63 61 74 6f 72 20 7c oduleIndicator | 000280f0: 7c 20 66 69 6c 65 2e 63 6f 6d 6d 6f 6e 4a 73 4d | file.commonJsM 00028100: 6f 64 75 6c 65 49 6e 64 69 63 61 74 6f 72 29 20 oduleIndicator) 00028110: 21 3d 3d 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 !== undefined;. 00028120: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 45 78 }. ts.isEx 00028130: 74 65 72 6e 61 6c 4f 72 43 6f 6d 6d 6f 6e 4a 73 ternalOrCommonJs 00028140: 4d 6f 64 75 6c 65 20 3d 20 69 73 45 78 74 65 72 Module = isExter 00028150: 6e 61 6c 4f 72 43 6f 6d 6d 6f 6e 4a 73 4d 6f 64 nalOrCommonJsMod 00028160: 75 6c 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ule;. functio 00028170: 6e 20 69 73 4a 73 6f 6e 53 6f 75 72 63 65 46 69 n isJsonSourceFi 00028180: 6c 65 28 66 69 6c 65 29 20 7b 0a 20 20 20 20 20 le(file) {. 00028190: 20 20 20 72 65 74 75 72 6e 20 66 69 6c 65 2e 73 return file.s 000281a0: 63 72 69 70 74 4b 69 6e 64 20 3d 3d 3d 20 36 20 criptKind === 6 000281b0: 2f 2a 20 53 63 72 69 70 74 4b 69 6e 64 2e 4a 53 /* ScriptKind.JS 000281c0: 4f 4e 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 ON */;. }. 000281d0: 20 74 73 2e 69 73 4a 73 6f 6e 53 6f 75 72 63 65 ts.isJsonSource 000281e0: 46 69 6c 65 20 3d 20 69 73 4a 73 6f 6e 53 6f 75 File = isJsonSou 000281f0: 72 63 65 46 69 6c 65 3b 0a 20 20 20 20 66 75 6e rceFile;. fun 00028200: 63 74 69 6f 6e 20 69 73 45 6e 75 6d 43 6f 6e 73 ction isEnumCons 00028210: 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 t(node) {. 00028220: 20 20 72 65 74 75 72 6e 20 21 21 28 74 73 2e 67 return !!(ts.g 00028230: 65 74 43 6f 6d 62 69 6e 65 64 4d 6f 64 69 66 69 etCombinedModifi 00028240: 65 72 46 6c 61 67 73 28 6e 6f 64 65 29 20 26 20 erFlags(node) & 00028250: 32 30 34 38 20 2f 2a 20 4d 6f 64 69 66 69 65 72 2048 /* Modifier 00028260: 46 6c 61 67 73 2e 43 6f 6e 73 74 20 2a 2f 29 3b Flags.Const */); 00028270: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00028280: 45 6e 75 6d 43 6f 6e 73 74 20 3d 20 69 73 45 6e EnumConst = isEn 00028290: 75 6d 43 6f 6e 73 74 3b 0a 20 20 20 20 66 75 6e umConst;. fun 000282a0: 63 74 69 6f 6e 20 69 73 44 65 63 6c 61 72 61 74 ction isDeclarat 000282b0: 69 6f 6e 52 65 61 64 6f 6e 6c 79 28 64 65 63 6c ionReadonly(decl 000282c0: 61 72 61 74 69 6f 6e 29 20 7b 0a 20 20 20 20 20 aration) {. 000282d0: 20 20 20 72 65 74 75 72 6e 20 21 21 28 74 73 2e return !!(ts. 000282e0: 67 65 74 43 6f 6d 62 69 6e 65 64 4d 6f 64 69 66 getCombinedModif 000282f0: 69 65 72 46 6c 61 67 73 28 64 65 63 6c 61 72 61 ierFlags(declara 00028300: 74 69 6f 6e 29 20 26 20 36 34 20 2f 2a 20 4d 6f tion) & 64 /* Mo 00028310: 64 69 66 69 65 72 46 6c 61 67 73 2e 52 65 61 64 difierFlags.Read 00028320: 6f 6e 6c 79 20 2a 2f 20 26 26 20 21 74 73 2e 69 only */ && !ts.i 00028330: 73 50 61 72 61 6d 65 74 65 72 50 72 6f 70 65 72 sParameterProper 00028340: 74 79 44 65 63 6c 61 72 61 74 69 6f 6e 28 64 65 tyDeclaration(de 00028350: 63 6c 61 72 61 74 69 6f 6e 2c 20 64 65 63 6c 61 claration, decla 00028360: 72 61 74 69 6f 6e 2e 70 61 72 65 6e 74 29 29 3b ration.parent)); 00028370: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00028380: 44 65 63 6c 61 72 61 74 69 6f 6e 52 65 61 64 6f DeclarationReado 00028390: 6e 6c 79 20 3d 20 69 73 44 65 63 6c 61 72 61 74 nly = isDeclarat 000283a0: 69 6f 6e 52 65 61 64 6f 6e 6c 79 3b 0a 20 20 20 ionReadonly;. 000283b0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 56 61 72 43 function isVarC 000283c0: 6f 6e 73 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 onst(node) {. 000283d0: 20 20 20 20 20 72 65 74 75 72 6e 20 21 21 28 74 return !!(t 000283e0: 73 2e 67 65 74 43 6f 6d 62 69 6e 65 64 4e 6f 64 s.getCombinedNod 000283f0: 65 46 6c 61 67 73 28 6e 6f 64 65 29 20 26 20 32 eFlags(node) & 2 00028400: 20 2f 2a 20 4e 6f 64 65 46 6c 61 67 73 2e 43 6f /* NodeFlags.Co 00028410: 6e 73 74 20 2a 2f 29 3b 0a 20 20 20 20 7d 0a 20 nst */);. }. 00028420: 20 20 20 74 73 2e 69 73 56 61 72 43 6f 6e 73 74 ts.isVarConst 00028430: 20 3d 20 69 73 56 61 72 43 6f 6e 73 74 3b 0a 20 = isVarConst;. 00028440: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4c 65 function isLe 00028450: 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 t(node) {. 00028460: 20 20 72 65 74 75 72 6e 20 21 21 28 74 73 2e 67 return !!(ts.g 00028470: 65 74 43 6f 6d 62 69 6e 65 64 4e 6f 64 65 46 6c etCombinedNodeFl 00028480: 61 67 73 28 6e 6f 64 65 29 20 26 20 31 20 2f 2a ags(node) & 1 /* 00028490: 20 4e 6f 64 65 46 6c 61 67 73 2e 4c 65 74 20 2a NodeFlags.Let * 000284a0: 2f 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 /);. }. ts 000284b0: 2e 69 73 4c 65 74 20 3d 20 69 73 4c 65 74 3b 0a .isLet = isLet;. 000284c0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 function isS 000284d0: 75 70 65 72 43 61 6c 6c 28 6e 29 20 7b 0a 20 20 uperCall(n) {. 000284e0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 2e 6b return n.k 000284f0: 69 6e 64 20 3d 3d 3d 20 32 30 38 20 2f 2a 20 53 ind === 208 /* S 00028500: 79 6e 74 61 78 4b 69 6e 64 2e 43 61 6c 6c 45 78 yntaxKind.CallEx 00028510: 70 72 65 73 73 69 6f 6e 20 2a 2f 20 26 26 20 6e pression */ && n 00028520: 2e 65 78 70 72 65 73 73 69 6f 6e 2e 6b 69 6e 64 .expression.kind 00028530: 20 3d 3d 3d 20 31 30 36 20 2f 2a 20 53 79 6e 74 === 106 /* Synt 00028540: 61 78 4b 69 6e 64 2e 53 75 70 65 72 4b 65 79 77 axKind.SuperKeyw 00028550: 6f 72 64 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ord */;. }. 00028560: 20 20 74 73 2e 69 73 53 75 70 65 72 43 61 6c 6c ts.isSuperCall 00028570: 20 3d 20 69 73 53 75 70 65 72 43 61 6c 6c 3b 0a = isSuperCall;. 00028580: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 49 function isI 00028590: 6d 70 6f 72 74 43 61 6c 6c 28 6e 29 20 7b 0a 20 mportCall(n) {. 000285a0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 2e return n. 000285b0: 6b 69 6e 64 20 3d 3d 3d 20 32 30 38 20 2f 2a 20 kind === 208 /* 000285c0: 53 79 6e 74 61 78 4b 69 6e 64 2e 43 61 6c 6c 45 SyntaxKind.CallE 000285d0: 78 70 72 65 73 73 69 6f 6e 20 2a 2f 20 26 26 20 xpression */ && 000285e0: 6e 2e 65 78 70 72 65 73 73 69 6f 6e 2e 6b 69 6e n.expression.kin 000285f0: 64 20 3d 3d 3d 20 31 30 30 20 2f 2a 20 53 79 6e d === 100 /* Syn 00028600: 74 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 4b 65 taxKind.ImportKe 00028610: 79 77 6f 72 64 20 2a 2f 3b 0a 20 20 20 20 7d 0a yword */;. }. 00028620: 20 20 20 20 74 73 2e 69 73 49 6d 70 6f 72 74 43 ts.isImportC 00028630: 61 6c 6c 20 3d 20 69 73 49 6d 70 6f 72 74 43 61 all = isImportCa 00028640: 6c 6c 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ll;. function 00028650: 20 69 73 49 6d 70 6f 72 74 4d 65 74 61 28 6e 29 isImportMeta(n) 00028660: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00028670: 6e 20 74 73 2e 69 73 4d 65 74 61 50 72 6f 70 65 n ts.isMetaPrope 00028680: 72 74 79 28 6e 29 0a 20 20 20 20 20 20 20 20 20 rty(n). 00028690: 20 20 20 26 26 20 6e 2e 6b 65 79 77 6f 72 64 54 && n.keywordT 000286a0: 6f 6b 65 6e 20 3d 3d 3d 20 31 30 30 20 2f 2a 20 oken === 100 /* 000286b0: 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 SyntaxKind.Impor 000286c0: 74 4b 65 79 77 6f 72 64 20 2a 2f 0a 20 20 20 20 tKeyword */. 000286d0: 20 20 20 20 20 20 20 20 26 26 20 6e 2e 6e 61 6d && n.nam 000286e0: 65 2e 65 73 63 61 70 65 64 54 65 78 74 20 3d 3d e.escapedText == 000286f0: 3d 20 22 6d 65 74 61 22 3b 0a 20 20 20 20 7d 0a = "meta";. }. 00028700: 20 20 20 20 74 73 2e 69 73 49 6d 70 6f 72 74 4d ts.isImportM 00028710: 65 74 61 20 3d 20 69 73 49 6d 70 6f 72 74 4d 65 eta = isImportMe 00028720: 74 61 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ta;. function 00028730: 20 69 73 4c 69 74 65 72 61 6c 49 6d 70 6f 72 74 isLiteralImport 00028740: 54 79 70 65 4e 6f 64 65 28 6e 29 20 7b 0a 20 20 TypeNode(n) {. 00028750: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 00028760: 69 73 49 6d 70 6f 72 74 54 79 70 65 4e 6f 64 65 isImportTypeNode 00028770: 28 6e 29 20 26 26 20 74 73 2e 69 73 4c 69 74 65 (n) && ts.isLite 00028780: 72 61 6c 54 79 70 65 4e 6f 64 65 28 6e 2e 61 72 ralTypeNode(n.ar 00028790: 67 75 6d 65 6e 74 29 20 26 26 20 74 73 2e 69 73 gument) && ts.is 000287a0: 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 28 6e 2e StringLiteral(n. 000287b0: 61 72 67 75 6d 65 6e 74 2e 6c 69 74 65 72 61 6c argument.literal 000287c0: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 000287d0: 69 73 4c 69 74 65 72 61 6c 49 6d 70 6f 72 74 54 isLiteralImportT 000287e0: 79 70 65 4e 6f 64 65 20 3d 20 69 73 4c 69 74 65 ypeNode = isLite 000287f0: 72 61 6c 49 6d 70 6f 72 74 54 79 70 65 4e 6f 64 ralImportTypeNod 00028800: 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 e;. function 00028810: 69 73 50 72 6f 6c 6f 67 75 65 44 69 72 65 63 74 isPrologueDirect 00028820: 69 76 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ive(node) {. 00028830: 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e return node. 00028840: 6b 69 6e 64 20 3d 3d 3d 20 32 33 38 20 2f 2a 20 kind === 238 /* 00028850: 53 79 6e 74 61 78 4b 69 6e 64 2e 45 78 70 72 65 SyntaxKind.Expre 00028860: 73 73 69 6f 6e 53 74 61 74 65 6d 65 6e 74 20 2a ssionStatement * 00028870: 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 26 26 /. && 00028880: 20 6e 6f 64 65 2e 65 78 70 72 65 73 73 69 6f 6e node.expression 00028890: 2e 6b 69 6e 64 20 3d 3d 3d 20 31 30 20 2f 2a 20 .kind === 10 /* 000288a0: 53 79 6e 74 61 78 4b 69 6e 64 2e 53 74 72 69 6e SyntaxKind.Strin 000288b0: 67 4c 69 74 65 72 61 6c 20 2a 2f 3b 0a 20 20 20 gLiteral */;. 000288c0: 20 7d 0a 20 20 20 20 74 73 2e 69 73 50 72 6f 6c }. ts.isProl 000288d0: 6f 67 75 65 44 69 72 65 63 74 69 76 65 20 3d 20 ogueDirective = 000288e0: 69 73 50 72 6f 6c 6f 67 75 65 44 69 72 65 63 74 isPrologueDirect 000288f0: 69 76 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ive;. functio 00028900: 6e 20 69 73 43 75 73 74 6f 6d 50 72 6f 6c 6f 67 n isCustomProlog 00028910: 75 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 ue(node) {. 00028920: 20 20 20 72 65 74 75 72 6e 20 21 21 28 67 65 74 return !!(get 00028930: 45 6d 69 74 46 6c 61 67 73 28 6e 6f 64 65 29 20 EmitFlags(node) 00028940: 26 20 31 30 34 38 35 37 36 20 2f 2a 20 45 6d 69 & 1048576 /* Emi 00028950: 74 46 6c 61 67 73 2e 43 75 73 74 6f 6d 50 72 6f tFlags.CustomPro 00028960: 6c 6f 67 75 65 20 2a 2f 29 3b 0a 20 20 20 20 7d logue */);. } 00028970: 0a 20 20 20 20 74 73 2e 69 73 43 75 73 74 6f 6d . ts.isCustom 00028980: 50 72 6f 6c 6f 67 75 65 20 3d 20 69 73 43 75 73 Prologue = isCus 00028990: 74 6f 6d 50 72 6f 6c 6f 67 75 65 3b 0a 20 20 20 tomPrologue;. 000289a0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 48 6f 69 73 function isHois 000289b0: 74 65 64 46 75 6e 63 74 69 6f 6e 28 6e 6f 64 65 tedFunction(node 000289c0: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 000289d0: 72 6e 20 69 73 43 75 73 74 6f 6d 50 72 6f 6c 6f rn isCustomProlo 000289e0: 67 75 65 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 gue(node). 000289f0: 20 20 20 20 20 20 26 26 20 74 73 2e 69 73 46 75 && ts.isFu 00028a00: 6e 63 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 6f nctionDeclaratio 00028a10: 6e 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d 0a 20 n(node);. }. 00028a20: 20 20 20 74 73 2e 69 73 48 6f 69 73 74 65 64 46 ts.isHoistedF 00028a30: 75 6e 63 74 69 6f 6e 20 3d 20 69 73 48 6f 69 73 unction = isHois 00028a40: 74 65 64 46 75 6e 63 74 69 6f 6e 3b 0a 20 20 20 tedFunction;. 00028a50: 20 66 75 6e 63 74 69 6f 6e 20 69 73 48 6f 69 73 function isHois 00028a60: 74 65 64 56 61 72 69 61 62 6c 65 28 6e 6f 64 65 tedVariable(node 00028a70: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 00028a80: 72 6e 20 74 73 2e 69 73 49 64 65 6e 74 69 66 69 rn ts.isIdentifi 00028a90: 65 72 28 6e 6f 64 65 2e 6e 61 6d 65 29 0a 20 20 er(node.name). 00028aa0: 20 20 20 20 20 20 20 20 20 20 26 26 20 21 6e 6f && !no 00028ab0: 64 65 2e 69 6e 69 74 69 61 6c 69 7a 65 72 3b 0a de.initializer;. 00028ac0: 20 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 74 69 }. functi 00028ad0: 6f 6e 20 69 73 48 6f 69 73 74 65 64 56 61 72 69 on isHoistedVari 00028ae0: 61 62 6c 65 53 74 61 74 65 6d 65 6e 74 28 6e 6f ableStatement(no 00028af0: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 de) {. re 00028b00: 74 75 72 6e 20 69 73 43 75 73 74 6f 6d 50 72 6f turn isCustomPro 00028b10: 6c 6f 67 75 65 28 6e 6f 64 65 29 0a 20 20 20 20 logue(node). 00028b20: 20 20 20 20 20 20 20 20 26 26 20 74 73 2e 69 73 && ts.is 00028b30: 56 61 72 69 61 62 6c 65 53 74 61 74 65 6d 65 6e VariableStatemen 00028b40: 74 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 20 t(node). 00028b50: 20 20 20 20 26 26 20 74 73 2e 65 76 65 72 79 28 && ts.every( 00028b60: 6e 6f 64 65 2e 64 65 63 6c 61 72 61 74 69 6f 6e node.declaration 00028b70: 4c 69 73 74 2e 64 65 63 6c 61 72 61 74 69 6f 6e List.declaration 00028b80: 73 2c 20 69 73 48 6f 69 73 74 65 64 56 61 72 69 s, isHoistedVari 00028b90: 61 62 6c 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 able);. }. 00028ba0: 20 74 73 2e 69 73 48 6f 69 73 74 65 64 56 61 72 ts.isHoistedVar 00028bb0: 69 61 62 6c 65 53 74 61 74 65 6d 65 6e 74 20 3d iableStatement = 00028bc0: 20 69 73 48 6f 69 73 74 65 64 56 61 72 69 61 62 isHoistedVariab 00028bd0: 6c 65 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 20 leStatement;. 00028be0: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4c 65 61 function getLea 00028bf0: 64 69 6e 67 43 6f 6d 6d 65 6e 74 52 61 6e 67 65 dingCommentRange 00028c00: 73 4f 66 4e 6f 64 65 28 6e 6f 64 65 2c 20 73 6f sOfNode(node, so 00028c10: 75 72 63 65 46 69 6c 65 4f 66 4e 6f 64 65 29 20 urceFileOfNode) 00028c20: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 00028c30: 20 6e 6f 64 65 2e 6b 69 6e 64 20 21 3d 3d 20 31 node.kind !== 1 00028c40: 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 1 /* SyntaxKind. 00028c50: 4a 73 78 54 65 78 74 20 2a 2f 20 3f 20 74 73 2e JsxText */ ? ts. 00028c60: 67 65 74 4c 65 61 64 69 6e 67 43 6f 6d 6d 65 6e getLeadingCommen 00028c70: 74 52 61 6e 67 65 73 28 73 6f 75 72 63 65 46 69 tRanges(sourceFi 00028c80: 6c 65 4f 66 4e 6f 64 65 2e 74 65 78 74 2c 20 6e leOfNode.text, n 00028c90: 6f 64 65 2e 70 6f 73 29 20 3a 20 75 6e 64 65 66 ode.pos) : undef 00028ca0: 69 6e 65 64 3b 0a 20 20 20 20 7d 0a 20 20 20 20 ined;. }. 00028cb0: 74 73 2e 67 65 74 4c 65 61 64 69 6e 67 43 6f 6d ts.getLeadingCom 00028cc0: 6d 65 6e 74 52 61 6e 67 65 73 4f 66 4e 6f 64 65 mentRangesOfNode 00028cd0: 20 3d 20 67 65 74 4c 65 61 64 69 6e 67 43 6f 6d = getLeadingCom 00028ce0: 6d 65 6e 74 52 61 6e 67 65 73 4f 66 4e 6f 64 65 mentRangesOfNode 00028cf0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 ;. function g 00028d00: 65 74 4a 53 44 6f 63 43 6f 6d 6d 65 6e 74 52 61 etJSDocCommentRa 00028d10: 6e 67 65 73 28 6e 6f 64 65 2c 20 74 65 78 74 29 nges(node, text) 00028d20: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 63 {. var c 00028d30: 6f 6d 6d 65 6e 74 52 61 6e 67 65 73 20 3d 20 28 ommentRanges = ( 00028d40: 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 36 node.kind === 16 00028d50: 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4 /* SyntaxKind. 00028d60: 50 61 72 61 6d 65 74 65 72 20 2a 2f 20 7c 7c 0a Parameter */ ||. 00028d70: 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 node 00028d80: 2e 6b 69 6e 64 20 3d 3d 3d 20 31 36 33 20 2f 2a .kind === 163 /* 00028d90: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 SyntaxKind.Type 00028da0: 50 61 72 61 6d 65 74 65 72 20 2a 2f 20 7c 7c 0a Parameter */ ||. 00028db0: 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 node 00028dc0: 2e 6b 69 6e 64 20 3d 3d 3d 20 32 31 33 20 2f 2a .kind === 213 /* 00028dd0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 75 6e 63 SyntaxKind.Func 00028de0: 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 2a tionExpression * 00028df0: 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 / ||. 00028e00: 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 node.kind === 2 00028e10: 31 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 14 /* SyntaxKind 00028e20: 2e 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e 20 2a .ArrowFunction * 00028e30: 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 / ||. 00028e40: 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 node.kind === 2 00028e50: 31 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 12 /* SyntaxKind 00028e60: 2e 50 61 72 65 6e 74 68 65 73 69 7a 65 64 45 78 .ParenthesizedEx 00028e70: 70 72 65 73 73 69 6f 6e 20 2a 2f 20 7c 7c 0a 20 pression */ ||. 00028e80: 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 2e node. 00028e90: 6b 69 6e 64 20 3d 3d 3d 20 32 35 34 20 2f 2a 20 kind === 254 /* 00028ea0: 53 79 6e 74 61 78 4b 69 6e 64 2e 56 61 72 69 61 SyntaxKind.Varia 00028eb0: 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a bleDeclaration * 00028ec0: 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 / ||. 00028ed0: 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 node.kind === 2 00028ee0: 37 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 75 /* SyntaxKind 00028ef0: 2e 45 78 70 6f 72 74 53 70 65 63 69 66 69 65 72 .ExportSpecifier 00028f00: 20 2a 2f 29 20 3f 0a 20 20 20 20 20 20 20 20 20 */) ?. 00028f10: 20 20 20 74 73 2e 63 6f 6e 63 61 74 65 6e 61 74 ts.concatenat 00028f20: 65 28 74 73 2e 67 65 74 54 72 61 69 6c 69 6e 67 e(ts.getTrailing 00028f30: 43 6f 6d 6d 65 6e 74 52 61 6e 67 65 73 28 74 65 CommentRanges(te 00028f40: 78 74 2c 20 6e 6f 64 65 2e 70 6f 73 29 2c 20 74 xt, node.pos), t 00028f50: 73 2e 67 65 74 4c 65 61 64 69 6e 67 43 6f 6d 6d s.getLeadingComm 00028f60: 65 6e 74 52 61 6e 67 65 73 28 74 65 78 74 2c 20 entRanges(text, 00028f70: 6e 6f 64 65 2e 70 6f 73 29 29 20 3a 0a 20 20 20 node.pos)) :. 00028f80: 20 20 20 20 20 20 20 20 20 74 73 2e 67 65 74 4c ts.getL 00028f90: 65 61 64 69 6e 67 43 6f 6d 6d 65 6e 74 52 61 6e eadingCommentRan 00028fa0: 67 65 73 28 74 65 78 74 2c 20 6e 6f 64 65 2e 70 ges(text, node.p 00028fb0: 6f 73 29 3b 0a 20 20 20 20 20 20 20 20 2f 2f 20 os);. // 00028fc0: 54 72 75 65 20 69 66 20 74 68 65 20 63 6f 6d 6d True if the comm 00028fd0: 65 6e 74 20 73 74 61 72 74 73 20 77 69 74 68 20 ent starts with 00028fe0: 27 2f 2a 2a 27 20 62 75 74 20 6e 6f 74 20 69 66 '/**' but not if 00028ff0: 20 69 74 20 69 73 20 27 2f 2a 2a 2f 27 0a 20 20 it is '/**/'. 00029000: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 00029010: 66 69 6c 74 65 72 28 63 6f 6d 6d 65 6e 74 52 61 filter(commentRa 00029020: 6e 67 65 73 2c 20 66 75 6e 63 74 69 6f 6e 20 28 nges, function ( 00029030: 63 6f 6d 6d 65 6e 74 29 20 7b 0a 20 20 20 20 20 comment) {. 00029040: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 65 return te 00029050: 78 74 2e 63 68 61 72 43 6f 64 65 41 74 28 63 6f xt.charCodeAt(co 00029060: 6d 6d 65 6e 74 2e 70 6f 73 20 2b 20 31 29 20 3d mment.pos + 1) = 00029070: 3d 3d 20 34 32 20 2f 2a 20 43 68 61 72 61 63 74 == 42 /* Charact 00029080: 65 72 43 6f 64 65 73 2e 61 73 74 65 72 69 73 6b erCodes.asterisk 00029090: 20 2a 2f 20 26 26 0a 20 20 20 20 20 20 20 20 20 */ &&. 000290a0: 20 20 20 20 20 20 20 74 65 78 74 2e 63 68 61 72 text.char 000290b0: 43 6f 64 65 41 74 28 63 6f 6d 6d 65 6e 74 2e 70 CodeAt(comment.p 000290c0: 6f 73 20 2b 20 32 29 20 3d 3d 3d 20 34 32 20 2f os + 2) === 42 / 000290d0: 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 65 73 * CharacterCodes 000290e0: 2e 61 73 74 65 72 69 73 6b 20 2a 2f 20 26 26 0a .asterisk */ &&. 000290f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00029100: 74 65 78 74 2e 63 68 61 72 43 6f 64 65 41 74 28 text.charCodeAt( 00029110: 63 6f 6d 6d 65 6e 74 2e 70 6f 73 20 2b 20 33 29 comment.pos + 3) 00029120: 20 21 3d 3d 20 34 37 20 2f 2a 20 43 68 61 72 61 !== 47 /* Chara 00029130: 63 74 65 72 43 6f 64 65 73 2e 73 6c 61 73 68 20 cterCodes.slash 00029140: 2a 2f 3b 0a 20 20 20 20 20 20 20 20 7d 29 3b 0a */;. });. 00029150: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 }. ts.get 00029160: 4a 53 44 6f 63 43 6f 6d 6d 65 6e 74 52 61 6e 67 JSDocCommentRang 00029170: 65 73 20 3d 20 67 65 74 4a 53 44 6f 63 43 6f 6d es = getJSDocCom 00029180: 6d 65 6e 74 52 61 6e 67 65 73 3b 0a 20 20 20 20 mentRanges;. 00029190: 74 73 2e 66 75 6c 6c 54 72 69 70 6c 65 53 6c 61 ts.fullTripleSla 000291a0: 73 68 52 65 66 65 72 65 6e 63 65 50 61 74 68 52 shReferencePathR 000291b0: 65 67 45 78 20 3d 20 2f 5e 28 5c 2f 5c 2f 5c 2f egEx = /^(\/\/\/ 000291c0: 5c 73 2a 3c 72 65 66 65 72 65 6e 63 65 5c 73 2b \s*<reference\s+ 000291d0: 70 61 74 68 5c 73 2a 3d 5c 73 2a 29 28 28 27 5b path\s*=\s*)(('[ 000291e0: 5e 27 5d 2a 27 29 7c 28 22 5b 5e 22 5d 2a 22 29 ^']*')|("[^"]*") 000291f0: 29 2e 2a 3f 5c 2f 3e 2f 3b 0a 20 20 20 20 76 61 ).*?\/>/;. va 00029200: 72 20 66 75 6c 6c 54 72 69 70 6c 65 53 6c 61 73 r fullTripleSlas 00029210: 68 52 65 66 65 72 65 6e 63 65 54 79 70 65 52 65 hReferenceTypeRe 00029220: 66 65 72 65 6e 63 65 44 69 72 65 63 74 69 76 65 ferenceDirective 00029230: 52 65 67 45 78 20 3d 20 2f 5e 28 5c 2f 5c 2f 5c RegEx = /^(\/\/\ 00029240: 2f 5c 73 2a 3c 72 65 66 65 72 65 6e 63 65 5c 73 /\s*<reference\s 00029250: 2b 74 79 70 65 73 5c 73 2a 3d 5c 73 2a 29 28 28 +types\s*=\s*)(( 00029260: 27 5b 5e 27 5d 2a 27 29 7c 28 22 5b 5e 22 5d 2a '[^']*')|("[^"]* 00029270: 22 29 29 2e 2a 3f 5c 2f 3e 2f 3b 0a 20 20 20 20 ")).*?\/>/;. 00029280: 74 73 2e 66 75 6c 6c 54 72 69 70 6c 65 53 6c 61 ts.fullTripleSla 00029290: 73 68 41 4d 44 52 65 66 65 72 65 6e 63 65 50 61 shAMDReferencePa 000292a0: 74 68 52 65 67 45 78 20 3d 20 2f 5e 28 5c 2f 5c thRegEx = /^(\/\ 000292b0: 2f 5c 2f 5c 73 2a 3c 61 6d 64 2d 64 65 70 65 6e /\/\s*<amd-depen 000292c0: 64 65 6e 63 79 5c 73 2b 70 61 74 68 5c 73 2a 3d dency\s+path\s*= 000292d0: 5c 73 2a 29 28 28 27 5b 5e 27 5d 2a 27 29 7c 28 \s*)(('[^']*')|( 000292e0: 22 5b 5e 22 5d 2a 22 29 29 2e 2a 3f 5c 2f 3e 2f "[^"]*")).*?\/>/ 000292f0: 3b 0a 20 20 20 20 76 61 72 20 64 65 66 61 75 6c ;. var defaul 00029300: 74 4c 69 62 52 65 66 65 72 65 6e 63 65 52 65 67 tLibReferenceReg 00029310: 45 78 20 3d 20 2f 5e 28 5c 2f 5c 2f 5c 2f 5c 73 Ex = /^(\/\/\/\s 00029320: 2a 3c 72 65 66 65 72 65 6e 63 65 5c 73 2b 6e 6f *<reference\s+no 00029330: 2d 64 65 66 61 75 6c 74 2d 6c 69 62 5c 73 2a 3d -default-lib\s*= 00029340: 5c 73 2a 29 28 28 27 5b 5e 27 5d 2a 27 29 7c 28 \s*)(('[^']*')|( 00029350: 22 5b 5e 22 5d 2a 22 29 29 5c 73 2a 5c 2f 3e 2f "[^"]*"))\s*\/>/ 00029360: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 00029370: 73 50 61 72 74 4f 66 54 79 70 65 4e 6f 64 65 28 sPartOfTypeNode( 00029380: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 00029390: 69 66 20 28 31 37 37 20 2f 2a 20 53 79 6e 74 61 if (177 /* Synta 000293a0: 78 4b 69 6e 64 2e 46 69 72 73 74 54 79 70 65 4e xKind.FirstTypeN 000293b0: 6f 64 65 20 2a 2f 20 3c 3d 20 6e 6f 64 65 2e 6b ode */ <= node.k 000293c0: 69 6e 64 20 26 26 20 6e 6f 64 65 2e 6b 69 6e 64 ind && node.kind 000293d0: 20 3c 3d 20 32 30 30 20 2f 2a 20 53 79 6e 74 61 <= 200 /* Synta 000293e0: 78 4b 69 6e 64 2e 4c 61 73 74 54 79 70 65 4e 6f xKind.LastTypeNo 000293f0: 64 65 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 de */) {. 00029400: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 return true 00029410: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 00029420: 20 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 65 switch (node 00029430: 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 .kind) {. 00029440: 20 20 20 20 20 63 61 73 65 20 31 33 30 20 2f 2a case 130 /* 00029450: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 6e 79 4b SyntaxKind.AnyK 00029460: 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 20 eyword */:. 00029470: 20 20 20 20 20 20 20 63 61 73 65 20 31 35 35 20 case 155 00029480: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 55 6e /* SyntaxKind.Un 00029490: 6b 6e 6f 77 6e 4b 65 79 77 6f 72 64 20 2a 2f 3a knownKeyword */: 000294a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 000294b0: 65 20 31 34 37 20 2f 2a 20 53 79 6e 74 61 78 4b e 147 /* SyntaxK 000294c0: 69 6e 64 2e 4e 75 6d 62 65 72 4b 65 79 77 6f 72 ind.NumberKeywor 000294d0: 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 d */:. 000294e0: 20 20 63 61 73 65 20 31 35 38 20 2f 2a 20 53 79 case 158 /* Sy 000294f0: 6e 74 61 78 4b 69 6e 64 2e 42 69 67 49 6e 74 4b ntaxKind.BigIntK 00029500: 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 20 eyword */:. 00029510: 20 20 20 20 20 20 20 63 61 73 65 20 31 35 30 20 case 150 00029520: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 74 /* SyntaxKind.St 00029530: 72 69 6e 67 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a ringKeyword */:. 00029540: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00029550: 20 31 33 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 133 /* SyntaxKi 00029560: 6e 64 2e 42 6f 6f 6c 65 61 6e 4b 65 79 77 6f 72 nd.BooleanKeywor 00029570: 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 d */:. 00029580: 20 20 63 61 73 65 20 31 35 31 20 2f 2a 20 53 79 case 151 /* Sy 00029590: 6e 74 61 78 4b 69 6e 64 2e 53 79 6d 62 6f 6c 4b ntaxKind.SymbolK 000295a0: 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 20 eyword */:. 000295b0: 20 20 20 20 20 20 20 63 61 73 65 20 31 34 38 20 case 148 000295c0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4f 62 /* SyntaxKind.Ob 000295d0: 6a 65 63 74 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a jectKeyword */:. 000295e0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 000295f0: 20 31 35 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 153 /* SyntaxKi 00029600: 6e 64 2e 55 6e 64 65 66 69 6e 65 64 4b 65 79 77 nd.UndefinedKeyw 00029610: 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ord */:. 00029620: 20 20 20 20 63 61 73 65 20 31 34 33 20 2f 2a 20 case 143 /* 00029630: 53 79 6e 74 61 78 4b 69 6e 64 2e 4e 65 76 65 72 SyntaxKind.Never 00029640: 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 Keyword */:. 00029650: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00029660: 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 rn true;. 00029670: 20 20 20 20 20 63 61 73 65 20 31 31 34 20 2f 2a case 114 /* 00029680: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 56 6f 69 64 SyntaxKind.Void 00029690: 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 Keyword */:. 000296a0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 000296b0: 72 6e 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b rn node.parent.k 000296c0: 69 6e 64 20 21 3d 3d 20 32 31 37 20 2f 2a 20 53 ind !== 217 /* S 000296d0: 79 6e 74 61 78 4b 69 6e 64 2e 56 6f 69 64 45 78 yntaxKind.VoidEx 000296e0: 70 72 65 73 73 69 6f 6e 20 2a 2f 3b 0a 20 20 20 pression */;. 000296f0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 32 case 22 00029700: 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 8 /* SyntaxKind. 00029710: 45 78 70 72 65 73 73 69 6f 6e 57 69 74 68 54 79 ExpressionWithTy 00029720: 70 65 41 72 67 75 6d 65 6e 74 73 20 2a 2f 3a 0a peArguments */:. 00029730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00029740: 72 65 74 75 72 6e 20 74 73 2e 69 73 48 65 72 69 return ts.isHeri 00029750: 74 61 67 65 43 6c 61 75 73 65 28 6e 6f 64 65 2e tageClause(node. 00029760: 70 61 72 65 6e 74 29 20 26 26 20 21 69 73 45 78 parent) && !isEx 00029770: 70 72 65 73 73 69 6f 6e 57 69 74 68 54 79 70 65 pressionWithType 00029780: 41 72 67 75 6d 65 6e 74 73 49 6e 43 6c 61 73 73 ArgumentsInClass 00029790: 45 78 74 65 6e 64 73 43 6c 61 75 73 65 28 6e 6f ExtendsClause(no 000297a0: 64 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 de);. 000297b0: 20 63 61 73 65 20 31 36 33 20 2f 2a 20 53 79 6e case 163 /* Syn 000297c0: 74 61 78 4b 69 6e 64 2e 54 79 70 65 50 61 72 61 taxKind.TypePara 000297d0: 6d 65 74 65 72 20 2a 2f 3a 0a 20 20 20 20 20 20 meter */:. 000297e0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 000297f0: 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b 69 6e node.parent.kin 00029800: 64 20 3d 3d 3d 20 31 39 35 20 2f 2a 20 53 79 6e d === 195 /* Syn 00029810: 74 61 78 4b 69 6e 64 2e 4d 61 70 70 65 64 54 79 taxKind.MappedTy 00029820: 70 65 20 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 70 61 pe */ || node.pa 00029830: 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 31 39 rent.kind === 19 00029840: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 00029850: 49 6e 66 65 72 54 79 70 65 20 2a 2f 3b 0a 20 20 InferType */;. 00029860: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 64 65 // Ide 00029870: 6e 74 69 66 69 65 72 73 20 61 6e 64 20 71 75 61 ntifiers and qua 00029880: 6c 69 66 69 65 64 20 6e 61 6d 65 73 20 6d 61 79 lified names may 00029890: 20 62 65 20 74 79 70 65 20 6e 6f 64 65 73 2c 20 be type nodes, 000298a0: 64 65 70 65 6e 64 69 6e 67 20 6f 6e 20 74 68 65 depending on the 000298b0: 69 72 20 63 6f 6e 74 65 78 74 2e 20 43 6c 69 6d ir context. Clim 000298c0: 62 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f b. // 000298d0: 20 61 62 6f 76 65 20 74 68 65 6d 20 74 6f 20 66 above them to f 000298e0: 69 6e 64 20 74 68 65 20 6c 6f 77 65 73 74 20 63 ind the lowest c 000298f0: 6f 6e 74 61 69 6e 65 72 0a 20 20 20 20 20 20 20 ontainer. 00029900: 20 20 20 20 20 63 61 73 65 20 37 39 20 2f 2a 20 case 79 /* 00029910: 53 79 6e 74 61 78 4b 69 6e 64 2e 49 64 65 6e 74 SyntaxKind.Ident 00029920: 69 66 69 65 72 20 2a 2f 3a 0a 20 20 20 20 20 20 ifier */:. 00029930: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 // If 00029940: 74 68 65 20 69 64 65 6e 74 69 66 69 65 72 20 69 the identifier i 00029950: 73 20 74 68 65 20 52 48 53 20 6f 66 20 61 20 71 s the RHS of a q 00029960: 75 61 6c 69 66 69 65 64 20 6e 61 6d 65 2c 20 74 ualified name, t 00029970: 68 65 6e 20 69 74 27 73 20 61 20 74 79 70 65 20 hen it's a type 00029980: 69 66 66 20 69 74 73 20 70 61 72 65 6e 74 20 69 iff its parent i 00029990: 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 s.. 000299a0: 20 20 20 69 66 20 28 6e 6f 64 65 2e 70 61 72 65 if (node.pare 000299b0: 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 31 36 31 20 nt.kind === 161 000299c0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 51 75 /* SyntaxKind.Qu 000299d0: 61 6c 69 66 69 65 64 4e 61 6d 65 20 2a 2f 20 26 alifiedName */ & 000299e0: 26 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 72 69 & node.parent.ri 000299f0: 67 68 74 20 3d 3d 3d 20 6e 6f 64 65 29 20 7b 0a ght === node) {. 00029a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00029a10: 20 20 20 20 6e 6f 64 65 20 3d 20 6e 6f 64 65 2e node = node. 00029a20: 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 parent;. 00029a30: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 00029a40: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 else i 00029a50: 66 20 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b f (node.parent.k 00029a60: 69 6e 64 20 3d 3d 3d 20 32 30 36 20 2f 2a 20 53 ind === 206 /* S 00029a70: 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 yntaxKind.Proper 00029a80: 74 79 41 63 63 65 73 73 45 78 70 72 65 73 73 69 tyAccessExpressi 00029a90: 6f 6e 20 2a 2f 20 26 26 20 6e 6f 64 65 2e 70 61 on */ && node.pa 00029aa0: 72 65 6e 74 2e 6e 61 6d 65 20 3d 3d 3d 20 6e 6f rent.name === no 00029ab0: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 de) {. 00029ac0: 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d node = 00029ad0: 20 6e 6f 64 65 2e 70 61 72 65 6e 74 3b 0a 20 20 node.parent;. 00029ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }. 00029af0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00029b00: 2f 2f 20 41 74 20 74 68 69 73 20 70 6f 69 6e 74 // At this point 00029b10: 2c 20 6e 6f 64 65 20 69 73 20 65 69 74 68 65 72 , node is either 00029b20: 20 61 20 71 75 61 6c 69 66 69 65 64 20 6e 61 6d a qualified nam 00029b30: 65 20 6f 72 20 61 6e 20 69 64 65 6e 74 69 66 69 e or an identifi 00029b40: 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 er. 00029b50: 20 20 20 74 73 2e 44 65 62 75 67 2e 61 73 73 65 ts.Debug.asse 00029b60: 72 74 28 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d rt(node.kind === 00029b70: 20 37 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 79 /* SyntaxKin 00029b80: 64 2e 49 64 65 6e 74 69 66 69 65 72 20 2a 2f 20 d.Identifier */ 00029b90: 7c 7c 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d || node.kind === 00029ba0: 20 31 36 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 161 /* SyntaxKi 00029bb0: 6e 64 2e 51 75 61 6c 69 66 69 65 64 4e 61 6d 65 nd.QualifiedName 00029bc0: 20 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 6b 69 6e 64 */ || node.kind 00029bd0: 20 3d 3d 3d 20 32 30 36 20 2f 2a 20 53 79 6e 74 === 206 /* Synt 00029be0: 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 41 axKind.PropertyA 00029bf0: 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 20 ccessExpression 00029c00: 2a 2f 2c 20 22 27 6e 6f 64 65 27 20 77 61 73 20 */, "'node' was 00029c10: 65 78 70 65 63 74 65 64 20 74 6f 20 62 65 20 61 expected to be a 00029c20: 20 71 75 61 6c 69 66 69 65 64 20 6e 61 6d 65 2c qualified name, 00029c30: 20 69 64 65 6e 74 69 66 69 65 72 20 6f 72 20 70 identifier or p 00029c40: 72 6f 70 65 72 74 79 20 61 63 63 65 73 73 20 69 roperty access i 00029c50: 6e 20 27 69 73 50 61 72 74 4f 66 54 79 70 65 4e n 'isPartOfTypeN 00029c60: 6f 64 65 27 2e 22 29 3b 0a 20 20 20 20 20 20 20 ode'.");. 00029c70: 20 20 20 20 20 2f 2f 20 66 61 6c 6c 73 20 74 68 // falls th 00029c80: 72 6f 75 67 68 0a 20 20 20 20 20 20 20 20 20 20 rough. 00029c90: 20 20 63 61 73 65 20 31 36 31 20 2f 2a 20 53 79 case 161 /* Sy 00029ca0: 6e 74 61 78 4b 69 6e 64 2e 51 75 61 6c 69 66 69 ntaxKind.Qualifi 00029cb0: 65 64 4e 61 6d 65 20 2a 2f 3a 0a 20 20 20 20 20 edName */:. 00029cc0: 20 20 20 20 20 20 20 63 61 73 65 20 32 30 36 20 case 206 00029cd0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 72 /* SyntaxKind.Pr 00029ce0: 6f 70 65 72 74 79 41 63 63 65 73 73 45 78 70 72 opertyAccessExpr 00029cf0: 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ession */:. 00029d00: 20 20 20 20 20 20 20 63 61 73 65 20 31 30 38 20 case 108 00029d10: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 68 /* SyntaxKind.Th 00029d20: 69 73 4b 65 79 77 6f 72 64 20 2a 2f 3a 20 7b 0a isKeyword */: {. 00029d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00029d40: 76 61 72 20 70 61 72 65 6e 74 20 3d 20 6e 6f 64 var parent = nod 00029d50: 65 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 e.parent;. 00029d60: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 70 61 if (pa 00029d70: 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 31 38 rent.kind === 18 00029d80: 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 1 /* SyntaxKind. 00029d90: 54 79 70 65 51 75 65 72 79 20 2a 2f 29 20 7b 0a TypeQuery */) {. 00029da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00029db0: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 return false 00029dc0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ;. 00029dd0: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }. 00029de0: 20 20 20 20 69 66 20 28 70 61 72 65 6e 74 2e 6b if (parent.k 00029df0: 69 6e 64 20 3d 3d 3d 20 32 30 30 20 2f 2a 20 53 ind === 200 /* S 00029e00: 79 6e 74 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 yntaxKind.Import 00029e10: 54 79 70 65 20 2a 2f 29 20 7b 0a 20 20 20 20 20 Type */) {. 00029e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 00029e30: 65 74 75 72 6e 20 21 70 61 72 65 6e 74 2e 69 73 eturn !parent.is 00029e40: 54 79 70 65 4f 66 3b 0a 20 20 20 20 20 20 20 20 TypeOf;. 00029e50: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 00029e60: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44 6f 20 // Do 00029e70: 6e 6f 74 20 72 65 63 75 72 73 69 76 65 6c 79 20 not recursively 00029e80: 63 61 6c 6c 20 69 73 50 61 72 74 4f 66 54 79 70 call isPartOfTyp 00029e90: 65 4e 6f 64 65 20 6f 6e 20 74 68 65 20 70 61 72 eNode on the par 00029ea0: 65 6e 74 2e 20 49 6e 20 74 68 65 20 65 78 61 6d ent. In the exam 00029eb0: 70 6c 65 3a 0a 20 20 20 20 20 20 20 20 20 20 20 ple:. 00029ec0: 20 20 20 20 20 2f 2f 0a 20 20 20 20 20 20 20 20 //. 00029ed0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 6c // l 00029ee0: 65 74 20 61 3a 20 41 2e 42 2e 43 3b 0a 20 20 20 et a: A.B.C;. 00029ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0a //. 00029f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00029f10: 2f 2f 20 43 61 6c 6c 69 6e 67 20 69 73 50 61 72 // Calling isPar 00029f20: 74 4f 66 54 79 70 65 4e 6f 64 65 20 77 6f 75 6c tOfTypeNode woul 00029f30: 64 20 63 6f 6e 73 69 64 65 72 20 74 68 65 20 71 d consider the q 00029f40: 75 61 6c 69 66 69 65 64 20 6e 61 6d 65 20 41 2e ualified name A. 00029f50: 42 20 61 20 74 79 70 65 20 6e 6f 64 65 2e 0a 20 B a type node.. 00029f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f / 00029f70: 2f 20 4f 6e 6c 79 20 43 20 61 6e 64 20 41 2e 42 / Only C and A.B 00029f80: 2e 43 20 61 72 65 20 74 79 70 65 20 6e 6f 64 65 .C are type node 00029f90: 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 s.. 00029fa0: 20 20 20 69 66 20 28 31 37 37 20 2f 2a 20 53 79 if (177 /* Sy 00029fb0: 6e 74 61 78 4b 69 6e 64 2e 46 69 72 73 74 54 79 ntaxKind.FirstTy 00029fc0: 70 65 4e 6f 64 65 20 2a 2f 20 3c 3d 20 70 61 72 peNode */ <= par 00029fd0: 65 6e 74 2e 6b 69 6e 64 20 26 26 20 70 61 72 65 ent.kind && pare 00029fe0: 6e 74 2e 6b 69 6e 64 20 3c 3d 20 32 30 30 20 2f nt.kind <= 200 / 00029ff0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4c 61 73 * SyntaxKind.Las 0002a000: 74 54 79 70 65 4e 6f 64 65 20 2a 2f 29 20 7b 0a tTypeNode */) {. 0002a010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a020: 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b return true; 0002a030: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002a040: 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 }. 0002a050: 20 20 20 73 77 69 74 63 68 20 28 70 61 72 65 6e switch (paren 0002a060: 74 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 t.kind) {. 0002a070: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 0002a080: 73 65 20 32 32 38 20 2f 2a 20 53 79 6e 74 61 78 se 228 /* Syntax 0002a090: 4b 69 6e 64 2e 45 78 70 72 65 73 73 69 6f 6e 57 Kind.ExpressionW 0002a0a0: 69 74 68 54 79 70 65 41 72 67 75 6d 65 6e 74 73 ithTypeArguments 0002a0b0: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 0002a0c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 0002a0d0: 75 72 6e 20 74 73 2e 69 73 48 65 72 69 74 61 67 urn ts.isHeritag 0002a0e0: 65 43 6c 61 75 73 65 28 70 61 72 65 6e 74 2e 70 eClause(parent.p 0002a0f0: 61 72 65 6e 74 29 20 26 26 20 21 69 73 45 78 70 arent) && !isExp 0002a100: 72 65 73 73 69 6f 6e 57 69 74 68 54 79 70 65 41 ressionWithTypeA 0002a110: 72 67 75 6d 65 6e 74 73 49 6e 43 6c 61 73 73 45 rgumentsInClassE 0002a120: 78 74 65 6e 64 73 43 6c 61 75 73 65 28 70 61 72 xtendsClause(par 0002a130: 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 ent);. 0002a140: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 0002a150: 36 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 63 /* SyntaxKind 0002a160: 2e 54 79 70 65 50 61 72 61 6d 65 74 65 72 20 2a .TypeParameter * 0002a170: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0002a180: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0002a190: 6e 20 6e 6f 64 65 20 3d 3d 3d 20 70 61 72 65 6e n node === paren 0002a1a0: 74 2e 63 6f 6e 73 74 72 61 69 6e 74 3b 0a 20 20 t.constraint;. 0002a1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a1c0: 20 20 63 61 73 65 20 33 34 34 20 2f 2a 20 53 79 case 344 /* Sy 0002a1d0: 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 54 65 ntaxKind.JSDocTe 0002a1e0: 6d 70 6c 61 74 65 54 61 67 20 2a 2f 3a 0a 20 20 mplateTag */:. 0002a1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a200: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 return nod 0002a210: 65 20 3d 3d 3d 20 70 61 72 65 6e 74 2e 63 6f 6e e === parent.con 0002a220: 73 74 72 61 69 6e 74 3b 0a 20 20 20 20 20 20 20 straint;. 0002a230: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 cas 0002a240: 65 20 31 36 37 20 2f 2a 20 53 79 6e 74 61 78 4b e 167 /* SyntaxK 0002a250: 69 6e 64 2e 50 72 6f 70 65 72 74 79 44 65 63 6c ind.PropertyDecl 0002a260: 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 aration */:. 0002a270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a280: 63 61 73 65 20 31 36 36 20 2f 2a 20 53 79 6e 74 case 166 /* Synt 0002a290: 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 53 axKind.PropertyS 0002a2a0: 69 67 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 ignature */:. 0002a2b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a2c0: 20 63 61 73 65 20 31 36 34 20 2f 2a 20 53 79 6e case 164 /* Syn 0002a2d0: 74 61 78 4b 69 6e 64 2e 50 61 72 61 6d 65 74 65 taxKind.Paramete 0002a2e0: 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 r */:. 0002a2f0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 0002a300: 35 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 54 /* SyntaxKind 0002a310: 2e 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 .VariableDeclara 0002a320: 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 tion */:. 0002a330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a340: 20 72 65 74 75 72 6e 20 6e 6f 64 65 20 3d 3d 3d return node === 0002a350: 20 70 61 72 65 6e 74 2e 74 79 70 65 3b 0a 20 20 parent.type;. 0002a360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a370: 20 20 63 61 73 65 20 32 35 36 20 2f 2a 20 53 79 case 256 /* Sy 0002a380: 6e 74 61 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f ntaxKind.Functio 0002a390: 6e 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a nDeclaration */: 0002a3a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002a3b0: 20 20 20 20 20 63 61 73 65 20 32 31 33 20 2f 2a case 213 /* 0002a3c0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 75 6e 63 SyntaxKind.Func 0002a3d0: 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 2a tionExpression * 0002a3e0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0002a3f0: 20 20 20 20 20 20 20 63 61 73 65 20 32 31 34 20 case 214 0002a400: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 72 /* SyntaxKind.Ar 0002a410: 72 6f 77 46 75 6e 63 74 69 6f 6e 20 2a 2f 3a 0a rowFunction */:. 0002a420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a430: 20 20 20 20 63 61 73 65 20 31 37 31 20 2f 2a 20 case 171 /* 0002a440: 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 SyntaxKind.Const 0002a450: 72 75 63 74 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 ructor */:. 0002a460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0002a470: 61 73 65 20 31 36 39 20 2f 2a 20 53 79 6e 74 61 ase 169 /* Synta 0002a480: 78 4b 69 6e 64 2e 4d 65 74 68 6f 64 44 65 63 6c xKind.MethodDecl 0002a490: 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 aration */:. 0002a4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a4b0: 63 61 73 65 20 31 36 38 20 2f 2a 20 53 79 6e 74 case 168 /* Synt 0002a4c0: 61 78 4b 69 6e 64 2e 4d 65 74 68 6f 64 53 69 67 axKind.MethodSig 0002a4d0: 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 20 nature */:. 0002a4e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0002a4f0: 61 73 65 20 31 37 32 20 2f 2a 20 53 79 6e 74 61 ase 172 /* Synta 0002a500: 78 4b 69 6e 64 2e 47 65 74 41 63 63 65 73 73 6f xKind.GetAccesso 0002a510: 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 r */:. 0002a520: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 0002a530: 37 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 73 /* SyntaxKind 0002a540: 2e 53 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 3a .SetAccessor */: 0002a550: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002a560: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 0002a570: 6e 6f 64 65 20 3d 3d 3d 20 70 61 72 65 6e 74 2e node === parent. 0002a580: 74 79 70 65 3b 0a 20 20 20 20 20 20 20 20 20 20 type;. 0002a590: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 0002a5a0: 37 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 74 /* SyntaxKind 0002a5b0: 2e 43 61 6c 6c 53 69 67 6e 61 74 75 72 65 20 2a .CallSignature * 0002a5c0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0002a5d0: 20 20 20 20 20 20 20 63 61 73 65 20 31 37 35 20 case 175 0002a5e0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f /* SyntaxKind.Co 0002a5f0: 6e 73 74 72 75 63 74 53 69 67 6e 61 74 75 72 65 nstructSignature 0002a600: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 0002a610: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 case 17 0002a620: 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 6 /* SyntaxKind. 0002a630: 49 6e 64 65 78 53 69 67 6e 61 74 75 72 65 20 2a IndexSignature * 0002a640: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0002a650: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0002a660: 6e 20 6e 6f 64 65 20 3d 3d 3d 20 70 61 72 65 6e n node === paren 0002a670: 74 2e 74 79 70 65 3b 0a 20 20 20 20 20 20 20 20 t.type;. 0002a680: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0002a690: 20 32 31 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 211 /* SyntaxKi 0002a6a0: 6e 64 2e 54 79 70 65 41 73 73 65 72 74 69 6f 6e nd.TypeAssertion 0002a6b0: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 0002a6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a6d0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 0002a6e0: 64 65 20 3d 3d 3d 20 70 61 72 65 6e 74 2e 74 79 de === parent.ty 0002a6f0: 70 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 pe;. 0002a700: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 38 case 208 0002a710: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 /* SyntaxKind.C 0002a720: 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f allExpression */ 0002a730: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0002a740: 20 20 20 20 20 20 63 61 73 65 20 32 30 39 20 2f case 209 / 0002a750: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e 65 77 * SyntaxKind.New 0002a760: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 0002a770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a780: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 return ts 0002a790: 2e 63 6f 6e 74 61 69 6e 73 28 70 61 72 65 6e 74 .contains(parent 0002a7a0: 2e 74 79 70 65 41 72 67 75 6d 65 6e 74 73 2c 20 .typeArguments, 0002a7b0: 6e 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 20 20 node);. 0002a7c0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0002a7d0: 32 31 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 210 /* SyntaxKin 0002a7e0: 64 2e 54 61 67 67 65 64 54 65 6d 70 6c 61 74 65 d.TaggedTemplate 0002a7f0: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 0002a800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a810: 20 20 20 20 20 20 20 2f 2f 20 54 4f 44 4f 20 28 // TODO ( 0002a820: 64 72 6f 73 65 6e 29 3a 20 54 61 67 67 65 64 54 drosen): TaggedT 0002a830: 65 6d 70 6c 61 74 65 45 78 70 72 65 73 73 69 6f emplateExpressio 0002a840: 6e 73 20 6d 61 79 20 65 76 65 6e 74 75 61 6c 6c ns may eventuall 0002a850: 79 20 73 75 70 70 6f 72 74 20 74 79 70 65 20 61 y support type a 0002a860: 72 67 75 6d 65 6e 74 73 2e 0a 20 20 20 20 20 20 rguments.. 0002a870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a880: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a return false;. 0002a890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a8a0: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }. }. 0002a8b0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0002a8c0: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a return false;. 0002a8d0: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 50 }. ts.isP 0002a8e0: 61 72 74 4f 66 54 79 70 65 4e 6f 64 65 20 3d 20 artOfTypeNode = 0002a8f0: 69 73 50 61 72 74 4f 66 54 79 70 65 4e 6f 64 65 isPartOfTypeNode 0002a900: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 0002a910: 73 43 68 69 6c 64 4f 66 4e 6f 64 65 57 69 74 68 sChildOfNodeWith 0002a920: 4b 69 6e 64 28 6e 6f 64 65 2c 20 6b 69 6e 64 29 Kind(node, kind) 0002a930: 20 7b 0a 20 20 20 20 20 20 20 20 77 68 69 6c 65 {. while 0002a940: 20 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 (node) {. 0002a950: 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e 6b if (node.k 0002a960: 69 6e 64 20 3d 3d 3d 20 6b 69 6e 64 29 20 7b 0a ind === kind) {. 0002a970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002a980: 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 return true;. 0002a990: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 0002a9a0: 20 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 6e 6f node = no 0002a9b0: 64 65 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 de.parent;. 0002a9c0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 }. ret 0002a9d0: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d urn false;. } 0002a9e0: 0a 20 20 20 20 74 73 2e 69 73 43 68 69 6c 64 4f . ts.isChildO 0002a9f0: 66 4e 6f 64 65 57 69 74 68 4b 69 6e 64 20 3d 20 fNodeWithKind = 0002aa00: 69 73 43 68 69 6c 64 4f 66 4e 6f 64 65 57 69 74 isChildOfNodeWit 0002aa10: 68 4b 69 6e 64 3b 0a 20 20 20 20 2f 2f 20 57 61 hKind;. // Wa 0002aa20: 72 6e 69 6e 67 3a 20 54 68 69 73 20 68 61 73 20 rning: This has 0002aa30: 74 68 65 20 73 61 6d 65 20 73 65 6d 61 6e 74 69 the same semanti 0002aa40: 63 73 20 61 73 20 74 68 65 20 66 6f 72 45 61 63 cs as the forEac 0002aa50: 68 20 66 61 6d 69 6c 79 20 6f 66 20 66 75 6e 63 h family of func 0002aa60: 74 69 6f 6e 73 2c 0a 20 20 20 20 2f 2f 20 20 20 tions,. // 0002aa70: 20 20 20 20 20 20 20 69 6e 20 74 68 61 74 20 74 in that t 0002aa80: 72 61 76 65 72 73 61 6c 20 74 65 72 6d 69 6e 61 raversal termina 0002aa90: 74 65 73 20 69 6e 20 74 68 65 20 65 76 65 6e 74 tes in the event 0002aaa0: 20 74 68 61 74 20 27 76 69 73 69 74 6f 72 27 20 that 'visitor' 0002aab0: 73 75 70 70 6c 69 65 73 20 61 20 74 72 75 74 68 supplies a truth 0002aac0: 79 20 76 61 6c 75 65 2e 0a 20 20 20 20 66 75 6e y value.. fun 0002aad0: 63 74 69 6f 6e 20 66 6f 72 45 61 63 68 52 65 74 ction forEachRet 0002aae0: 75 72 6e 53 74 61 74 65 6d 65 6e 74 28 62 6f 64 urnStatement(bod 0002aaf0: 79 2c 20 76 69 73 69 74 6f 72 29 20 7b 0a 20 20 y, visitor) {. 0002ab00: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 61 return tra 0002ab10: 76 65 72 73 65 28 62 6f 64 79 29 3b 0a 20 20 20 verse(body);. 0002ab20: 20 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 74 72 function tr 0002ab30: 61 76 65 72 73 65 28 6e 6f 64 65 29 20 7b 0a 20 averse(node) {. 0002ab40: 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74 63 switc 0002ab50: 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 7b 0a h (node.kind) {. 0002ab60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002ab70: 63 61 73 65 20 32 34 37 20 2f 2a 20 53 79 6e 74 case 247 /* Synt 0002ab80: 61 78 4b 69 6e 64 2e 52 65 74 75 72 6e 53 74 61 axKind.ReturnSta 0002ab90: 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 tement */:. 0002aba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 0002abb0: 65 74 75 72 6e 20 76 69 73 69 74 6f 72 28 6e 6f eturn visitor(no 0002abc0: 64 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 de);. 0002abd0: 20 20 20 20 20 63 61 73 65 20 32 36 33 20 2f 2a case 263 /* 0002abe0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 61 73 65 SyntaxKind.Case 0002abf0: 42 6c 6f 63 6b 20 2a 2f 3a 0a 20 20 20 20 20 20 Block */:. 0002ac00: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 0002ac10: 33 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 35 /* SyntaxKind 0002ac20: 2e 42 6c 6f 63 6b 20 2a 2f 3a 0a 20 20 20 20 20 .Block */:. 0002ac30: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0002ac40: 32 33 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 239 /* SyntaxKin 0002ac50: 64 2e 49 66 53 74 61 74 65 6d 65 6e 74 20 2a 2f d.IfStatement */ 0002ac60: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0002ac70: 20 20 63 61 73 65 20 32 34 30 20 2f 2a 20 53 79 case 240 /* Sy 0002ac80: 6e 74 61 78 4b 69 6e 64 2e 44 6f 53 74 61 74 65 ntaxKind.DoState 0002ac90: 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ment */:. 0002aca0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 34 case 24 0002acb0: 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 1 /* SyntaxKind. 0002acc0: 57 68 69 6c 65 53 74 61 74 65 6d 65 6e 74 20 2a WhileStatement * 0002acd0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0002ace0: 20 20 20 63 61 73 65 20 32 34 32 20 2f 2a 20 53 case 242 /* S 0002acf0: 79 6e 74 61 78 4b 69 6e 64 2e 46 6f 72 53 74 61 yntaxKind.ForSta 0002ad00: 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 tement */:. 0002ad10: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0002ad20: 32 34 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 243 /* SyntaxKin 0002ad30: 64 2e 46 6f 72 49 6e 53 74 61 74 65 6d 65 6e 74 d.ForInStatement 0002ad40: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 0002ad50: 20 20 20 20 20 63 61 73 65 20 32 34 34 20 2f 2a case 244 /* 0002ad60: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 6f 72 4f SyntaxKind.ForO 0002ad70: 66 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 fStatement */:. 0002ad80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0002ad90: 61 73 65 20 32 34 38 20 2f 2a 20 53 79 6e 74 61 ase 248 /* Synta 0002ada0: 78 4b 69 6e 64 2e 57 69 74 68 53 74 61 74 65 6d xKind.WithStatem 0002adb0: 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ent */:. 0002adc0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 34 39 case 249 0002add0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 /* SyntaxKind.S 0002ade0: 77 69 74 63 68 53 74 61 74 65 6d 65 6e 74 20 2a witchStatement * 0002adf0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0002ae00: 20 20 20 63 61 73 65 20 32 38 39 20 2f 2a 20 53 case 289 /* S 0002ae10: 79 6e 74 61 78 4b 69 6e 64 2e 43 61 73 65 43 6c yntaxKind.CaseCl 0002ae20: 61 75 73 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ause */:. 0002ae30: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 39 case 29 0002ae40: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 0002ae50: 44 65 66 61 75 6c 74 43 6c 61 75 73 65 20 2a 2f DefaultClause */ 0002ae60: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0002ae70: 20 20 63 61 73 65 20 32 35 30 20 2f 2a 20 53 79 case 250 /* Sy 0002ae80: 6e 74 61 78 4b 69 6e 64 2e 4c 61 62 65 6c 65 64 ntaxKind.Labeled 0002ae90: 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 Statement */:. 0002aea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 0002aeb0: 73 65 20 32 35 32 20 2f 2a 20 53 79 6e 74 61 78 se 252 /* Syntax 0002aec0: 4b 69 6e 64 2e 54 72 79 53 74 61 74 65 6d 65 6e Kind.TryStatemen 0002aed0: 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 t */:. 0002aee0: 20 20 20 20 20 20 63 61 73 65 20 32 39 32 20 2f case 292 / 0002aef0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 61 74 * SyntaxKind.Cat 0002af00: 63 68 43 6c 61 75 73 65 20 2a 2f 3a 0a 20 20 20 chClause */:. 0002af10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002af20: 20 72 65 74 75 72 6e 20 74 73 2e 66 6f 72 45 61 return ts.forEa 0002af30: 63 68 43 68 69 6c 64 28 6e 6f 64 65 2c 20 74 72 chChild(node, tr 0002af40: 61 76 65 72 73 65 29 3b 0a 20 20 20 20 20 20 20 averse);. 0002af50: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d }. } 0002af60: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 66 6f . }. ts.fo 0002af70: 72 45 61 63 68 52 65 74 75 72 6e 53 74 61 74 65 rEachReturnState 0002af80: 6d 65 6e 74 20 3d 20 66 6f 72 45 61 63 68 52 65 ment = forEachRe 0002af90: 74 75 72 6e 53 74 61 74 65 6d 65 6e 74 3b 0a 20 turnStatement;. 0002afa0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 45 function forE 0002afb0: 61 63 68 59 69 65 6c 64 45 78 70 72 65 73 73 69 achYieldExpressi 0002afc0: 6f 6e 28 62 6f 64 79 2c 20 76 69 73 69 74 6f 72 on(body, visitor 0002afd0: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0002afe0: 72 6e 20 74 72 61 76 65 72 73 65 28 62 6f 64 79 rn traverse(body 0002aff0: 29 3b 0a 20 20 20 20 20 20 20 20 66 75 6e 63 74 );. funct 0002b000: 69 6f 6e 20 74 72 61 76 65 72 73 65 28 6e 6f 64 ion traverse(nod 0002b010: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 e) {. 0002b020: 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 switch (node.ki 0002b030: 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 nd) {. 0002b040: 20 20 20 20 20 20 63 61 73 65 20 32 32 34 20 2f case 224 / 0002b050: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 59 69 65 * SyntaxKind.Yie 0002b060: 6c 64 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a ldExpression */: 0002b070: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002b080: 20 20 20 20 20 76 69 73 69 74 6f 72 28 6e 6f 64 visitor(nod 0002b090: 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 e);. 0002b0a0: 20 20 20 20 20 20 20 20 76 61 72 20 6f 70 65 72 var oper 0002b0b0: 61 6e 64 20 3d 20 6e 6f 64 65 2e 65 78 70 72 65 and = node.expre 0002b0c0: 73 73 69 6f 6e 3b 0a 20 20 20 20 20 20 20 20 20 ssion;. 0002b0d0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f if (o 0002b0e0: 70 65 72 61 6e 64 29 20 7b 0a 20 20 20 20 20 20 perand) {. 0002b0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b100: 20 20 74 72 61 76 65 72 73 65 28 6f 70 65 72 61 traverse(opera 0002b110: 6e 64 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 nd);. 0002b120: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 0002b130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 0002b140: 65 74 75 72 6e 3b 0a 20 20 20 20 20 20 20 20 20 eturn;. 0002b150: 20 20 20 20 20 20 20 63 61 73 65 20 32 36 30 20 case 260 0002b160: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 6e /* SyntaxKind.En 0002b170: 75 6d 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f umDeclaration */ 0002b180: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0002b190: 20 20 63 61 73 65 20 32 35 38 20 2f 2a 20 53 79 case 258 /* Sy 0002b1a0: 6e 74 61 78 4b 69 6e 64 2e 49 6e 74 65 72 66 61 ntaxKind.Interfa 0002b1b0: 63 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f ceDeclaration */ 0002b1c0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0002b1d0: 20 20 63 61 73 65 20 32 36 31 20 2f 2a 20 53 79 case 261 /* Sy 0002b1e0: 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 75 6c 65 44 ntaxKind.ModuleD 0002b1f0: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 0002b200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0002b210: 61 73 65 20 32 35 39 20 2f 2a 20 53 79 6e 74 61 ase 259 /* Synta 0002b220: 78 4b 69 6e 64 2e 54 79 70 65 41 6c 69 61 73 44 xKind.TypeAliasD 0002b230: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 0002b240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b250: 20 20 20 2f 2f 20 54 68 65 73 65 20 61 72 65 20 // These are 0002b260: 6e 6f 74 20 61 6c 6c 6f 77 65 64 20 69 6e 73 69 not allowed insi 0002b270: 64 65 20 61 20 67 65 6e 65 72 61 74 6f 72 20 6e de a generator n 0002b280: 6f 77 2c 20 62 75 74 20 65 76 65 6e 74 75 61 6c ow, but eventual 0002b290: 6c 79 20 74 68 65 79 20 6d 61 79 20 62 65 20 61 ly they may be a 0002b2a0: 6c 6c 6f 77 65 64 0a 20 20 20 20 20 20 20 20 20 llowed. 0002b2b0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 61 73 // as 0002b2c0: 20 6c 6f 63 61 6c 20 74 79 70 65 73 2e 20 52 65 local types. Re 0002b2d0: 67 61 72 64 6c 65 73 73 2c 20 73 6b 69 70 20 74 gardless, skip t 0002b2e0: 68 65 6d 20 74 6f 20 61 76 6f 69 64 20 74 68 65 hem to avoid the 0002b2f0: 20 77 6f 72 6b 2e 0a 20 20 20 20 20 20 20 20 20 work.. 0002b300: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0002b310: 6e 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 n;. 0002b320: 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 default:. 0002b330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b340: 69 66 20 28 74 73 2e 69 73 46 75 6e 63 74 69 6f if (ts.isFunctio 0002b350: 6e 4c 69 6b 65 28 6e 6f 64 65 29 29 20 7b 0a 20 nLike(node)) {. 0002b360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b370: 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e if (node. 0002b380: 6e 61 6d 65 20 26 26 20 6e 6f 64 65 2e 6e 61 6d name && node.nam 0002b390: 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 36 32 20 2f e.kind === 162 / 0002b3a0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6d * SyntaxKind.Com 0002b3b0: 70 75 74 65 64 50 72 6f 70 65 72 74 79 4e 61 6d putedPropertyNam 0002b3c0: 65 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 20 e */) {. 0002b3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b3e0: 20 20 20 20 2f 2f 20 4e 6f 74 65 20 74 68 61 74 // Note that 0002b3f0: 20 77 65 20 77 69 6c 6c 20 6e 6f 74 20 69 6e 63 we will not inc 0002b400: 6c 75 64 65 20 6d 65 74 68 6f 64 73 2f 61 63 63 lude methods/acc 0002b410: 65 73 73 6f 72 73 20 6f 66 20 61 20 63 6c 61 73 essors of a clas 0002b420: 73 20 62 65 63 61 75 73 65 20 74 68 65 79 20 77 s because they w 0002b430: 6f 75 6c 64 20 72 65 71 75 69 72 65 0a 20 20 20 ould require. 0002b440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b450: 20 20 20 20 20 20 20 20 20 2f 2f 20 66 69 72 73 // firs 0002b460: 74 20 64 65 73 63 65 6e 64 69 6e 67 20 69 6e 74 t descending int 0002b470: 6f 20 74 68 65 20 63 6c 61 73 73 2e 20 54 68 69 o the class. Thi 0002b480: 73 20 69 73 20 62 79 20 64 65 73 69 67 6e 2e 0a s is by design.. 0002b490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b4a0: 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 76 trav 0002b4b0: 65 72 73 65 28 6e 6f 64 65 2e 6e 61 6d 65 2e 65 erse(node.name.e 0002b4c0: 78 70 72 65 73 73 69 6f 6e 29 3b 0a 20 20 20 20 xpression);. 0002b4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b4e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0a return;. 0002b4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b500: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0002b510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }. 0002b520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b530: 20 20 20 20 65 6c 73 65 20 69 66 20 28 21 69 73 else if (!is 0002b540: 50 61 72 74 4f 66 54 79 70 65 4e 6f 64 65 28 6e PartOfTypeNode(n 0002b550: 6f 64 65 29 29 20 7b 0a 20 20 20 20 20 20 20 20 ode)) {. 0002b560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b570: 2f 2f 20 54 68 69 73 20 69 73 20 74 68 65 20 67 // This is the g 0002b580: 65 6e 65 72 61 6c 20 63 61 73 65 2c 20 77 68 69 eneral case, whi 0002b590: 63 68 20 73 68 6f 75 6c 64 20 69 6e 63 6c 75 64 ch should includ 0002b5a0: 65 20 6d 6f 73 74 6c 79 20 65 78 70 72 65 73 73 e mostly express 0002b5b0: 69 6f 6e 73 20 61 6e 64 20 73 74 61 74 65 6d 65 ions and stateme 0002b5c0: 6e 74 73 2e 0a 20 20 20 20 20 20 20 20 20 20 20 nts.. 0002b5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 // 0002b5e0: 41 6c 73 6f 20 69 6e 63 6c 75 64 65 73 20 4e 6f Also includes No 0002b5f0: 64 65 41 72 72 61 79 73 2e 0a 20 20 20 20 20 20 deArrays.. 0002b600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002b610: 20 20 74 73 2e 66 6f 72 45 61 63 68 43 68 69 6c ts.forEachChil 0002b620: 64 28 6e 6f 64 65 2c 20 74 72 61 76 65 72 73 65 d(node, traverse 0002b630: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 );. 0002b640: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 0002b650: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d }. } 0002b660: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 66 6f . }. ts.fo 0002b670: 72 45 61 63 68 59 69 65 6c 64 45 78 70 72 65 73 rEachYieldExpres 0002b680: 73 69 6f 6e 20 3d 20 66 6f 72 45 61 63 68 59 69 sion = forEachYi 0002b690: 65 6c 64 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 eldExpression;. 0002b6a0: 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 47 65 /**. * Ge 0002b6b0: 74 73 20 74 68 65 20 6d 6f 73 74 20 6c 69 6b 65 ts the most like 0002b6c0: 6c 79 20 65 6c 65 6d 65 6e 74 20 74 79 70 65 20 ly element type 0002b6d0: 66 6f 72 20 61 20 54 79 70 65 4e 6f 64 65 2e 20 for a TypeNode. 0002b6e0: 54 68 69 73 20 69 73 20 6e 6f 74 20 61 6e 20 65 This is not an e 0002b6f0: 78 68 61 75 73 74 69 76 65 20 74 65 73 74 0a 20 xhaustive test. 0002b700: 20 20 20 20 2a 20 61 73 20 69 74 20 61 73 73 75 * as it assu 0002b710: 6d 65 73 20 61 20 72 65 73 74 20 61 72 67 75 6d mes a rest argum 0002b720: 65 6e 74 20 63 61 6e 20 6f 6e 6c 79 20 62 65 20 ent can only be 0002b730: 61 6e 20 61 72 72 61 79 20 74 79 70 65 20 28 65 an array type (e 0002b740: 69 74 68 65 72 20 54 5b 5d 2c 20 6f 72 20 41 72 ither T[], or Ar 0002b750: 72 61 79 3c 54 3e 29 2e 0a 20 20 20 20 20 2a 0a ray<T>).. *. 0002b760: 20 20 20 20 20 2a 20 40 70 61 72 61 6d 20 6e 6f * @param no 0002b770: 64 65 20 54 68 65 20 74 79 70 65 20 6e 6f 64 65 de The type node 0002b780: 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 .. */. fu 0002b790: 6e 63 74 69 6f 6e 20 67 65 74 52 65 73 74 50 61 nction getRestPa 0002b7a0: 72 61 6d 65 74 65 72 45 6c 65 6d 65 6e 74 54 79 rameterElementTy 0002b7b0: 70 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 pe(node) {. 0002b7c0: 20 20 20 69 66 20 28 6e 6f 64 65 20 26 26 20 6e if (node && n 0002b7d0: 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 38 33 ode.kind === 183 0002b7e0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 /* SyntaxKind.A 0002b7f0: 72 72 61 79 54 79 70 65 20 2a 2f 29 20 7b 0a 20 rrayType */) {. 0002b800: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0002b810: 6e 20 6e 6f 64 65 2e 65 6c 65 6d 65 6e 74 54 79 n node.elementTy 0002b820: 70 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 pe;. }. 0002b830: 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 6e else if (n 0002b840: 6f 64 65 20 26 26 20 6e 6f 64 65 2e 6b 69 6e 64 ode && node.kind 0002b850: 20 3d 3d 3d 20 31 37 38 20 2f 2a 20 53 79 6e 74 === 178 /* Synt 0002b860: 61 78 4b 69 6e 64 2e 54 79 70 65 52 65 66 65 72 axKind.TypeRefer 0002b870: 65 6e 63 65 20 2a 2f 29 20 7b 0a 20 20 20 20 20 ence */) {. 0002b880: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 return ts 0002b890: 2e 73 69 6e 67 6c 65 4f 72 55 6e 64 65 66 69 6e .singleOrUndefin 0002b8a0: 65 64 28 6e 6f 64 65 2e 74 79 70 65 41 72 67 75 ed(node.typeArgu 0002b8b0: 6d 65 6e 74 73 29 3b 0a 20 20 20 20 20 20 20 20 ments);. 0002b8c0: 7d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 20 7b }. else { 0002b8d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret 0002b8e0: 75 72 6e 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 urn undefined;. 0002b8f0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 }. }. 0002b900: 20 20 20 74 73 2e 67 65 74 52 65 73 74 50 61 72 ts.getRestPar 0002b910: 61 6d 65 74 65 72 45 6c 65 6d 65 6e 74 54 79 70 ameterElementTyp 0002b920: 65 20 3d 20 67 65 74 52 65 73 74 50 61 72 61 6d e = getRestParam 0002b930: 65 74 65 72 45 6c 65 6d 65 6e 74 54 79 70 65 3b eterElementType; 0002b940: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 0002b950: 74 4d 65 6d 62 65 72 73 4f 66 44 65 63 6c 61 72 tMembersOfDeclar 0002b960: 61 74 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 ation(node) {. 0002b970: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 6e 6f switch (no 0002b980: 64 65 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 de.kind) {. 0002b990: 20 20 20 20 20 20 20 63 61 73 65 20 32 35 38 20 case 258 0002b9a0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6e /* SyntaxKind.In 0002b9b0: 74 65 72 66 61 63 65 44 65 63 6c 61 72 61 74 69 terfaceDeclarati 0002b9c0: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 0002b9d0: 20 20 20 63 61 73 65 20 32 35 37 20 2f 2a 20 53 case 257 /* S 0002b9e0: 79 6e 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 44 yntaxKind.ClassD 0002b9f0: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 0002ba00: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0002ba10: 32 32 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 226 /* SyntaxKin 0002ba20: 64 2e 43 6c 61 73 73 45 78 70 72 65 73 73 69 6f d.ClassExpressio 0002ba30: 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 n */:. 0002ba40: 20 20 63 61 73 65 20 31 38 32 20 2f 2a 20 53 79 case 182 /* Sy 0002ba50: 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 4c 69 74 ntaxKind.TypeLit 0002ba60: 65 72 61 6c 20 2a 2f 3a 0a 20 20 20 20 20 20 20 eral */:. 0002ba70: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 0002ba80: 6e 6f 64 65 2e 6d 65 6d 62 65 72 73 3b 0a 20 20 node.members;. 0002ba90: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 0002baa0: 30 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 05 /* SyntaxKind 0002bab0: 2e 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 45 78 .ObjectLiteralEx 0002bac0: 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 pression */:. 0002bad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 0002bae0: 75 72 6e 20 6e 6f 64 65 2e 70 72 6f 70 65 72 74 urn node.propert 0002baf0: 69 65 73 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 ies;. }. 0002bb00: 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4d }. ts.getM 0002bb10: 65 6d 62 65 72 73 4f 66 44 65 63 6c 61 72 61 74 embersOfDeclarat 0002bb20: 69 6f 6e 20 3d 20 67 65 74 4d 65 6d 62 65 72 73 ion = getMembers 0002bb30: 4f 66 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 OfDeclaration;. 0002bb40: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 56 61 function isVa 0002bb50: 72 69 61 62 6c 65 4c 69 6b 65 28 6e 6f 64 65 29 riableLike(node) 0002bb60: 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e {. if (n 0002bb70: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ode) {. 0002bb80: 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e switch (node. 0002bb90: 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 kind) {. 0002bba0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 33 case 203 0002bbb0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 /* SyntaxKind.B 0002bbc0: 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 20 2a 2f indingElement */ 0002bbd0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0002bbe0: 20 20 63 61 73 65 20 32 39 39 20 2f 2a 20 53 79 case 299 /* Sy 0002bbf0: 6e 74 61 78 4b 69 6e 64 2e 45 6e 75 6d 4d 65 6d ntaxKind.EnumMem 0002bc00: 62 65 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ber */:. 0002bc10: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 36 34 case 164 0002bc20: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 /* SyntaxKind.P 0002bc30: 61 72 61 6d 65 74 65 72 20 2a 2f 3a 0a 20 20 20 arameter */:. 0002bc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 cas 0002bc50: 65 20 32 39 36 20 2f 2a 20 53 79 6e 74 61 78 4b e 296 /* SyntaxK 0002bc60: 69 6e 64 2e 50 72 6f 70 65 72 74 79 41 73 73 69 ind.PropertyAssi 0002bc70: 67 6e 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 gnment */:. 0002bc80: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0002bc90: 31 36 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 167 /* SyntaxKin 0002bca0: 64 2e 50 72 6f 70 65 72 74 79 44 65 63 6c 61 72 d.PropertyDeclar 0002bcb0: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 0002bcc0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 0002bcd0: 36 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 66 /* SyntaxKind 0002bce0: 2e 50 72 6f 70 65 72 74 79 53 69 67 6e 61 74 75 .PropertySignatu 0002bcf0: 72 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 re */:. 0002bd00: 20 20 20 20 20 20 20 63 61 73 65 20 32 39 37 20 case 297 0002bd10: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 68 /* SyntaxKind.Sh 0002bd20: 6f 72 74 68 61 6e 64 50 72 6f 70 65 72 74 79 41 orthandPropertyA 0002bd30: 73 73 69 67 6e 6d 65 6e 74 20 2a 2f 3a 0a 20 20 ssignment */:. 0002bd40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 0002bd50: 73 65 20 32 35 34 20 2f 2a 20 53 79 6e 74 61 78 se 254 /* Syntax 0002bd60: 4b 69 6e 64 2e 56 61 72 69 61 62 6c 65 44 65 63 Kind.VariableDec 0002bd70: 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 laration */:. 0002bd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002bd90: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 return true;. 0002bda0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 0002bdb0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 }. re 0002bdc0: 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 turn false;. 0002bdd0: 7d 0a 20 20 20 20 74 73 2e 69 73 56 61 72 69 61 }. ts.isVaria 0002bde0: 62 6c 65 4c 69 6b 65 20 3d 20 69 73 56 61 72 69 bleLike = isVari 0002bdf0: 61 62 6c 65 4c 69 6b 65 3b 0a 20 20 20 20 66 75 ableLike;. fu 0002be00: 6e 63 74 69 6f 6e 20 69 73 56 61 72 69 61 62 6c nction isVariabl 0002be10: 65 4c 69 6b 65 4f 72 41 63 63 65 73 73 6f 72 28 eLikeOrAccessor( 0002be20: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 0002be30: 72 65 74 75 72 6e 20 69 73 56 61 72 69 61 62 6c return isVariabl 0002be40: 65 4c 69 6b 65 28 6e 6f 64 65 29 20 7c 7c 20 74 eLike(node) || t 0002be50: 73 2e 69 73 41 63 63 65 73 73 6f 72 28 6e 6f 64 s.isAccessor(nod 0002be60: 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 e);. }. ts 0002be70: 2e 69 73 56 61 72 69 61 62 6c 65 4c 69 6b 65 4f .isVariableLikeO 0002be80: 72 41 63 63 65 73 73 6f 72 20 3d 20 69 73 56 61 rAccessor = isVa 0002be90: 72 69 61 62 6c 65 4c 69 6b 65 4f 72 41 63 63 65 riableLikeOrAcce 0002bea0: 73 73 6f 72 3b 0a 20 20 20 20 66 75 6e 63 74 69 ssor;. functi 0002beb0: 6f 6e 20 69 73 56 61 72 69 61 62 6c 65 44 65 63 on isVariableDec 0002bec0: 6c 61 72 61 74 69 6f 6e 49 6e 56 61 72 69 61 62 larationInVariab 0002bed0: 6c 65 53 74 61 74 65 6d 65 6e 74 28 6e 6f 64 65 leStatement(node 0002bee0: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0002bef0: 72 6e 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b rn node.parent.k 0002bf00: 69 6e 64 20 3d 3d 3d 20 32 35 35 20 2f 2a 20 53 ind === 255 /* S 0002bf10: 79 6e 74 61 78 4b 69 6e 64 2e 56 61 72 69 61 62 yntaxKind.Variab 0002bf20: 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 4c 69 73 leDeclarationLis 0002bf30: 74 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 t */. 0002bf40: 20 26 26 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e && node.parent. 0002bf50: 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 parent.kind === 0002bf60: 32 33 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 237 /* SyntaxKin 0002bf70: 64 2e 56 61 72 69 61 62 6c 65 53 74 61 74 65 6d d.VariableStatem 0002bf80: 65 6e 74 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ent */;. }. 0002bf90: 20 20 74 73 2e 69 73 56 61 72 69 61 62 6c 65 44 ts.isVariableD 0002bfa0: 65 63 6c 61 72 61 74 69 6f 6e 49 6e 56 61 72 69 eclarationInVari 0002bfb0: 61 62 6c 65 53 74 61 74 65 6d 65 6e 74 20 3d 20 ableStatement = 0002bfc0: 69 73 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 isVariableDeclar 0002bfd0: 61 74 69 6f 6e 49 6e 56 61 72 69 61 62 6c 65 53 ationInVariableS 0002bfe0: 74 61 74 65 6d 65 6e 74 3b 0a 20 20 20 20 66 75 tatement;. fu 0002bff0: 6e 63 74 69 6f 6e 20 69 73 43 6f 6d 6d 6f 6e 4a nction isCommonJ 0002c000: 73 45 78 70 6f 72 74 65 64 45 78 70 72 65 73 73 sExportedExpress 0002c010: 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ion(node) {. 0002c020: 20 20 20 20 69 66 20 28 21 69 73 49 6e 4a 53 46 if (!isInJSF 0002c030: 69 6c 65 28 6e 6f 64 65 29 29 0a 20 20 20 20 20 ile(node)). 0002c040: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 return fa 0002c050: 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 72 65 74 lse;. ret 0002c060: 75 72 6e 20 28 74 73 2e 69 73 4f 62 6a 65 63 74 urn (ts.isObject 0002c070: 4c 69 74 65 72 61 6c 45 78 70 72 65 73 73 69 6f LiteralExpressio 0002c080: 6e 28 6e 6f 64 65 2e 70 61 72 65 6e 74 29 20 26 n(node.parent) & 0002c090: 26 20 74 73 2e 69 73 42 69 6e 61 72 79 45 78 70 & ts.isBinaryExp 0002c0a0: 72 65 73 73 69 6f 6e 28 6e 6f 64 65 2e 70 61 72 ression(node.par 0002c0b0: 65 6e 74 2e 70 61 72 65 6e 74 29 20 26 26 20 67 ent.parent) && g 0002c0c0: 65 74 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c etAssignmentDecl 0002c0d0: 61 72 61 74 69 6f 6e 4b 69 6e 64 28 6e 6f 64 65 arationKind(node 0002c0e0: 2e 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 29 20 .parent.parent) 0002c0f0: 3d 3d 3d 20 32 20 2f 2a 20 41 73 73 69 67 6e 6d === 2 /* Assignm 0002c100: 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b 69 entDeclarationKi 0002c110: 6e 64 2e 4d 6f 64 75 6c 65 45 78 70 6f 72 74 73 nd.ModuleExports 0002c120: 20 2a 2f 29 20 7c 7c 0a 20 20 20 20 20 20 20 20 */) ||. 0002c130: 20 20 20 20 69 73 43 6f 6d 6d 6f 6e 4a 73 45 78 isCommonJsEx 0002c140: 70 6f 72 74 50 72 6f 70 65 72 74 79 41 73 73 69 portPropertyAssi 0002c150: 67 6e 6d 65 6e 74 28 6e 6f 64 65 2e 70 61 72 65 gnment(node.pare 0002c160: 6e 74 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 nt);. }. t 0002c170: 73 2e 69 73 43 6f 6d 6d 6f 6e 4a 73 45 78 70 6f s.isCommonJsExpo 0002c180: 72 74 65 64 45 78 70 72 65 73 73 69 6f 6e 20 3d rtedExpression = 0002c190: 20 69 73 43 6f 6d 6d 6f 6e 4a 73 45 78 70 6f 72 isCommonJsExpor 0002c1a0: 74 65 64 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 tedExpression;. 0002c1b0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 43 6f function isCo 0002c1c0: 6d 6d 6f 6e 4a 73 45 78 70 6f 72 74 50 72 6f 70 mmonJsExportProp 0002c1d0: 65 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 28 6e ertyAssignment(n 0002c1e0: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 69 ode) {. i 0002c1f0: 66 20 28 21 69 73 49 6e 4a 53 46 69 6c 65 28 6e f (!isInJSFile(n 0002c200: 6f 64 65 29 29 0a 20 20 20 20 20 20 20 20 20 20 ode)). 0002c210: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a return false;. 0002c220: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 return ( 0002c230: 74 73 2e 69 73 42 69 6e 61 72 79 45 78 70 72 65 ts.isBinaryExpre 0002c240: 73 73 69 6f 6e 28 6e 6f 64 65 29 20 26 26 20 67 ssion(node) && g 0002c250: 65 74 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c etAssignmentDecl 0002c260: 61 72 61 74 69 6f 6e 4b 69 6e 64 28 6e 6f 64 65 arationKind(node 0002c270: 29 20 3d 3d 3d 20 31 20 2f 2a 20 41 73 73 69 67 ) === 1 /* Assig 0002c280: 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e nmentDeclaration 0002c290: 4b 69 6e 64 2e 45 78 70 6f 72 74 73 50 72 6f 70 Kind.ExportsProp 0002c2a0: 65 72 74 79 20 2a 2f 29 3b 0a 20 20 20 20 7d 0a erty */);. }. 0002c2b0: 20 20 20 20 74 73 2e 69 73 43 6f 6d 6d 6f 6e 4a ts.isCommonJ 0002c2c0: 73 45 78 70 6f 72 74 50 72 6f 70 65 72 74 79 41 sExportPropertyA 0002c2d0: 73 73 69 67 6e 6d 65 6e 74 20 3d 20 69 73 43 6f ssignment = isCo 0002c2e0: 6d 6d 6f 6e 4a 73 45 78 70 6f 72 74 50 72 6f 70 mmonJsExportProp 0002c2f0: 65 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 3b 0a ertyAssignment;. 0002c300: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 56 function isV 0002c310: 61 6c 69 64 45 53 53 79 6d 62 6f 6c 44 65 63 6c alidESSymbolDecl 0002c320: 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a aration(node) {. 0002c330: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 return ( 0002c340: 74 73 2e 69 73 56 61 72 69 61 62 6c 65 44 65 63 ts.isVariableDec 0002c350: 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 20 3f laration(node) ? 0002c360: 20 69 73 56 61 72 43 6f 6e 73 74 28 6e 6f 64 65 isVarConst(node 0002c370: 29 20 26 26 20 74 73 2e 69 73 49 64 65 6e 74 69 ) && ts.isIdenti 0002c380: 66 69 65 72 28 6e 6f 64 65 2e 6e 61 6d 65 29 20 fier(node.name) 0002c390: 26 26 20 69 73 56 61 72 69 61 62 6c 65 44 65 63 && isVariableDec 0002c3a0: 6c 61 72 61 74 69 6f 6e 49 6e 56 61 72 69 61 62 larationInVariab 0002c3b0: 6c 65 53 74 61 74 65 6d 65 6e 74 28 6e 6f 64 65 leStatement(node 0002c3c0: 29 20 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) :. 0002c3d0: 74 73 2e 69 73 50 72 6f 70 65 72 74 79 44 65 63 ts.isPropertyDec 0002c3e0: 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 20 3f laration(node) ? 0002c3f0: 20 68 61 73 45 66 66 65 63 74 69 76 65 52 65 61 hasEffectiveRea 0002c400: 64 6f 6e 6c 79 4d 6f 64 69 66 69 65 72 28 6e 6f donlyModifier(no 0002c410: 64 65 29 20 26 26 20 68 61 73 53 74 61 74 69 63 de) && hasStatic 0002c420: 4d 6f 64 69 66 69 65 72 28 6e 6f 64 65 29 20 3a Modifier(node) : 0002c430: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002c440: 20 74 73 2e 69 73 50 72 6f 70 65 72 74 79 53 69 ts.isPropertySi 0002c450: 67 6e 61 74 75 72 65 28 6e 6f 64 65 29 20 26 26 gnature(node) && 0002c460: 20 68 61 73 45 66 66 65 63 74 69 76 65 52 65 61 hasEffectiveRea 0002c470: 64 6f 6e 6c 79 4d 6f 64 69 66 69 65 72 28 6e 6f donlyModifier(no 0002c480: 64 65 29 29 20 7c 7c 20 69 73 43 6f 6d 6d 6f 6e de)) || isCommon 0002c490: 4a 73 45 78 70 6f 72 74 50 72 6f 70 65 72 74 79 JsExportProperty 0002c4a0: 41 73 73 69 67 6e 6d 65 6e 74 28 6e 6f 64 65 29 Assignment(node) 0002c4b0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 0002c4c0: 73 56 61 6c 69 64 45 53 53 79 6d 62 6f 6c 44 65 sValidESSymbolDe 0002c4d0: 63 6c 61 72 61 74 69 6f 6e 20 3d 20 69 73 56 61 claration = isVa 0002c4e0: 6c 69 64 45 53 53 79 6d 62 6f 6c 44 65 63 6c 61 lidESSymbolDecla 0002c4f0: 72 61 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 ration;. func 0002c500: 74 69 6f 6e 20 69 6e 74 72 6f 64 75 63 65 73 41 tion introducesA 0002c510: 72 67 75 6d 65 6e 74 73 45 78 6f 74 69 63 4f 62 rgumentsExoticOb 0002c520: 6a 65 63 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 ject(node) {. 0002c530: 20 20 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 switch (nod 0002c540: 65 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 e.kind) {. 0002c550: 20 20 20 20 20 20 63 61 73 65 20 31 36 39 20 2f case 169 / 0002c560: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 74 * SyntaxKind.Met 0002c570: 68 6f 64 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a hodDeclaration * 0002c580: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 0002c590: 61 73 65 20 31 36 38 20 2f 2a 20 53 79 6e 74 61 ase 168 /* Synta 0002c5a0: 78 4b 69 6e 64 2e 4d 65 74 68 6f 64 53 69 67 6e xKind.MethodSign 0002c5b0: 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 20 20 ature */:. 0002c5c0: 20 20 20 20 20 20 63 61 73 65 20 31 37 31 20 2f case 171 / 0002c5d0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6e * SyntaxKind.Con 0002c5e0: 73 74 72 75 63 74 6f 72 20 2a 2f 3a 0a 20 20 20 structor */:. 0002c5f0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 case 17 0002c600: 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 2 /* SyntaxKind. 0002c610: 47 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 3a 0a GetAccessor */:. 0002c620: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0002c630: 20 31 37 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 173 /* SyntaxKi 0002c640: 6e 64 2e 53 65 74 41 63 63 65 73 73 6f 72 20 2a nd.SetAccessor * 0002c650: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 0002c660: 61 73 65 20 32 35 36 20 2f 2a 20 53 79 6e 74 61 ase 256 /* Synta 0002c670: 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 44 65 xKind.FunctionDe 0002c680: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 0002c690: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 0002c6a0: 31 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 13 /* SyntaxKind 0002c6b0: 2e 46 75 6e 63 74 69 6f 6e 45 78 70 72 65 73 73 .FunctionExpress 0002c6c0: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 0002c6d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 0002c6e0: 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 rue;. }. 0002c6f0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 return fa 0002c700: 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 lse;. }. t 0002c710: 73 2e 69 6e 74 72 6f 64 75 63 65 73 41 72 67 75 s.introducesArgu 0002c720: 6d 65 6e 74 73 45 78 6f 74 69 63 4f 62 6a 65 63 mentsExoticObjec 0002c730: 74 20 3d 20 69 6e 74 72 6f 64 75 63 65 73 41 72 t = introducesAr 0002c740: 67 75 6d 65 6e 74 73 45 78 6f 74 69 63 4f 62 6a gumentsExoticObj 0002c750: 65 63 74 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f ect;. functio 0002c760: 6e 20 75 6e 77 72 61 70 49 6e 6e 65 72 6d 6f 73 n unwrapInnermos 0002c770: 74 53 74 61 74 65 6d 65 6e 74 4f 66 4c 61 62 65 tStatementOfLabe 0002c780: 6c 28 6e 6f 64 65 2c 20 62 65 66 6f 72 65 55 6e l(node, beforeUn 0002c790: 77 72 61 70 4c 61 62 65 6c 43 61 6c 6c 62 61 63 wrapLabelCallbac 0002c7a0: 6b 29 20 7b 0a 20 20 20 20 20 20 20 20 77 68 69 k) {. whi 0002c7b0: 6c 65 20 28 74 72 75 65 29 20 7b 0a 20 20 20 20 le (true) {. 0002c7c0: 20 20 20 20 20 20 20 20 69 66 20 28 62 65 66 6f if (befo 0002c7d0: 72 65 55 6e 77 72 61 70 4c 61 62 65 6c 43 61 6c reUnwrapLabelCal 0002c7e0: 6c 62 61 63 6b 29 20 7b 0a 20 20 20 20 20 20 20 lback) {. 0002c7f0: 20 20 20 20 20 20 20 20 20 62 65 66 6f 72 65 55 beforeU 0002c800: 6e 77 72 61 70 4c 61 62 65 6c 43 61 6c 6c 62 61 nwrapLabelCallba 0002c810: 63 6b 28 6e 6f 64 65 29 3b 0a 20 20 20 20 20 20 ck(node);. 0002c820: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 0002c830: 20 20 20 20 69 66 20 28 6e 6f 64 65 2e 73 74 61 if (node.sta 0002c840: 74 65 6d 65 6e 74 2e 6b 69 6e 64 20 21 3d 3d 20 tement.kind !== 0002c850: 32 35 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 250 /* SyntaxKin 0002c860: 64 2e 4c 61 62 65 6c 65 64 53 74 61 74 65 6d 65 d.LabeledStateme 0002c870: 6e 74 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 nt */) {. 0002c880: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 0002c890: 6e 6f 64 65 2e 73 74 61 74 65 6d 65 6e 74 3b 0a node.statement;. 0002c8a0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. 0002c8b0: 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d node = 0002c8c0: 20 6e 6f 64 65 2e 73 74 61 74 65 6d 65 6e 74 3b node.statement; 0002c8d0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d . }. } 0002c8e0: 0a 20 20 20 20 74 73 2e 75 6e 77 72 61 70 49 6e . ts.unwrapIn 0002c8f0: 6e 65 72 6d 6f 73 74 53 74 61 74 65 6d 65 6e 74 nermostStatement 0002c900: 4f 66 4c 61 62 65 6c 20 3d 20 75 6e 77 72 61 70 OfLabel = unwrap 0002c910: 49 6e 6e 65 72 6d 6f 73 74 53 74 61 74 65 6d 65 InnermostStateme 0002c920: 6e 74 4f 66 4c 61 62 65 6c 3b 0a 20 20 20 20 66 ntOfLabel;. f 0002c930: 75 6e 63 74 69 6f 6e 20 69 73 46 75 6e 63 74 69 unction isFuncti 0002c940: 6f 6e 42 6c 6f 63 6b 28 6e 6f 64 65 29 20 7b 0a onBlock(node) {. 0002c950: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e return n 0002c960: 6f 64 65 20 26 26 20 6e 6f 64 65 2e 6b 69 6e 64 ode && node.kind 0002c970: 20 3d 3d 3d 20 32 33 35 20 2f 2a 20 53 79 6e 74 === 235 /* Synt 0002c980: 61 78 4b 69 6e 64 2e 42 6c 6f 63 6b 20 2a 2f 20 axKind.Block */ 0002c990: 26 26 20 74 73 2e 69 73 46 75 6e 63 74 69 6f 6e && ts.isFunction 0002c9a0: 4c 69 6b 65 28 6e 6f 64 65 2e 70 61 72 65 6e 74 Like(node.parent 0002c9b0: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 0002c9c0: 69 73 46 75 6e 63 74 69 6f 6e 42 6c 6f 63 6b 20 isFunctionBlock 0002c9d0: 3d 20 69 73 46 75 6e 63 74 69 6f 6e 42 6c 6f 63 = isFunctionBloc 0002c9e0: 6b 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 k;. function 0002c9f0: 69 73 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 4d isObjectLiteralM 0002ca00: 65 74 68 6f 64 28 6e 6f 64 65 29 20 7b 0a 20 20 ethod(node) {. 0002ca10: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 return nod 0002ca20: 65 20 26 26 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d e && node.kind = 0002ca30: 3d 3d 20 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 == 169 /* Syntax 0002ca40: 4b 69 6e 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 Kind.MethodDecla 0002ca50: 72 61 74 69 6f 6e 20 2a 2f 20 26 26 20 6e 6f 64 ration */ && nod 0002ca60: 65 2e 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d e.parent.kind == 0002ca70: 3d 20 32 30 35 20 2f 2a 20 53 79 6e 74 61 78 4b = 205 /* SyntaxK 0002ca80: 69 6e 64 2e 4f 62 6a 65 63 74 4c 69 74 65 72 61 ind.ObjectLitera 0002ca90: 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3b 0a lExpression */;. 0002caa0: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4f }. ts.isO 0002cab0: 62 6a 65 63 74 4c 69 74 65 72 61 6c 4d 65 74 68 bjectLiteralMeth 0002cac0: 6f 64 20 3d 20 69 73 4f 62 6a 65 63 74 4c 69 74 od = isObjectLit 0002cad0: 65 72 61 6c 4d 65 74 68 6f 64 3b 0a 20 20 20 20 eralMethod;. 0002cae0: 66 75 6e 63 74 69 6f 6e 20 69 73 4f 62 6a 65 63 function isObjec 0002caf0: 74 4c 69 74 65 72 61 6c 4f 72 43 6c 61 73 73 45 tLiteralOrClassE 0002cb00: 78 70 72 65 73 73 69 6f 6e 4d 65 74 68 6f 64 4f xpressionMethodO 0002cb10: 72 41 63 63 65 73 73 6f 72 28 6e 6f 64 65 29 20 rAccessor(node) 0002cb20: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 0002cb30: 20 28 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 (node.kind === 0002cb40: 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 169 /* SyntaxKin 0002cb50: 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 72 61 74 d.MethodDeclarat 0002cb60: 69 6f 6e 20 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 6b ion */ || node.k 0002cb70: 69 6e 64 20 3d 3d 3d 20 31 37 32 20 2f 2a 20 53 ind === 172 /* S 0002cb80: 79 6e 74 61 78 4b 69 6e 64 2e 47 65 74 41 63 63 yntaxKind.GetAcc 0002cb90: 65 73 73 6f 72 20 2a 2f 20 7c 7c 20 6e 6f 64 65 essor */ || node 0002cba0: 2e 6b 69 6e 64 20 3d 3d 3d 20 31 37 33 20 2f 2a .kind === 173 /* 0002cbb0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 65 74 41 SyntaxKind.SetA 0002cbc0: 63 63 65 73 73 6f 72 20 2a 2f 29 20 26 26 0a 20 ccessor */) &&. 0002cbd0: 20 20 20 20 20 20 20 20 20 20 20 28 6e 6f 64 65 (node 0002cbe0: 2e 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d .parent.kind === 0002cbf0: 20 32 30 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 205 /* SyntaxKi 0002cc00: 6e 64 2e 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c nd.ObjectLiteral 0002cc10: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 20 7c 7c Expression */ || 0002cc20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002cc30: 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b 69 6e node.parent.kin 0002cc40: 64 20 3d 3d 3d 20 32 32 36 20 2f 2a 20 53 79 6e d === 226 /* Syn 0002cc50: 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 45 78 70 taxKind.ClassExp 0002cc60: 72 65 73 73 69 6f 6e 20 2a 2f 29 3b 0a 20 20 20 ression */);. 0002cc70: 20 7d 0a 20 20 20 20 74 73 2e 69 73 4f 62 6a 65 }. ts.isObje 0002cc80: 63 74 4c 69 74 65 72 61 6c 4f 72 43 6c 61 73 73 ctLiteralOrClass 0002cc90: 45 78 70 72 65 73 73 69 6f 6e 4d 65 74 68 6f 64 ExpressionMethod 0002cca0: 4f 72 41 63 63 65 73 73 6f 72 20 3d 20 69 73 4f OrAccessor = isO 0002ccb0: 62 6a 65 63 74 4c 69 74 65 72 61 6c 4f 72 43 6c bjectLiteralOrCl 0002ccc0: 61 73 73 45 78 70 72 65 73 73 69 6f 6e 4d 65 74 assExpressionMet 0002ccd0: 68 6f 64 4f 72 41 63 63 65 73 73 6f 72 3b 0a 20 hodOrAccessor;. 0002cce0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 49 64 function isId 0002ccf0: 65 6e 74 69 66 69 65 72 54 79 70 65 50 72 65 64 entifierTypePred 0002cd00: 69 63 61 74 65 28 70 72 65 64 69 63 61 74 65 29 icate(predicate) 0002cd10: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 0002cd20: 6e 20 70 72 65 64 69 63 61 74 65 20 26 26 20 70 n predicate && p 0002cd30: 72 65 64 69 63 61 74 65 2e 6b 69 6e 64 20 3d 3d redicate.kind == 0002cd40: 3d 20 31 20 2f 2a 20 54 79 70 65 50 72 65 64 69 = 1 /* TypePredi 0002cd50: 63 61 74 65 4b 69 6e 64 2e 49 64 65 6e 74 69 66 cateKind.Identif 0002cd60: 69 65 72 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ier */;. }. 0002cd70: 20 20 74 73 2e 69 73 49 64 65 6e 74 69 66 69 65 ts.isIdentifie 0002cd80: 72 54 79 70 65 50 72 65 64 69 63 61 74 65 20 3d rTypePredicate = 0002cd90: 20 69 73 49 64 65 6e 74 69 66 69 65 72 54 79 70 isIdentifierTyp 0002cda0: 65 50 72 65 64 69 63 61 74 65 3b 0a 20 20 20 20 ePredicate;. 0002cdb0: 66 75 6e 63 74 69 6f 6e 20 69 73 54 68 69 73 54 function isThisT 0002cdc0: 79 70 65 50 72 65 64 69 63 61 74 65 28 70 72 65 ypePredicate(pre 0002cdd0: 64 69 63 61 74 65 29 20 7b 0a 20 20 20 20 20 20 dicate) {. 0002cde0: 20 20 72 65 74 75 72 6e 20 70 72 65 64 69 63 61 return predica 0002cdf0: 74 65 20 26 26 20 70 72 65 64 69 63 61 74 65 2e te && predicate. 0002ce00: 6b 69 6e 64 20 3d 3d 3d 20 30 20 2f 2a 20 54 79 kind === 0 /* Ty 0002ce10: 70 65 50 72 65 64 69 63 61 74 65 4b 69 6e 64 2e pePredicateKind. 0002ce20: 54 68 69 73 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 This */;. }. 0002ce30: 20 20 20 74 73 2e 69 73 54 68 69 73 54 79 70 65 ts.isThisType 0002ce40: 50 72 65 64 69 63 61 74 65 20 3d 20 69 73 54 68 Predicate = isTh 0002ce50: 69 73 54 79 70 65 50 72 65 64 69 63 61 74 65 3b isTypePredicate; 0002ce60: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 0002ce70: 74 50 72 6f 70 65 72 74 79 41 73 73 69 67 6e 6d tPropertyAssignm 0002ce80: 65 6e 74 28 6f 62 6a 65 63 74 4c 69 74 65 72 61 ent(objectLitera 0002ce90: 6c 2c 20 6b 65 79 2c 20 6b 65 79 32 29 20 7b 0a l, key, key2) {. 0002cea0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f return o 0002ceb0: 62 6a 65 63 74 4c 69 74 65 72 61 6c 2e 70 72 6f bjectLiteral.pro 0002cec0: 70 65 72 74 69 65 73 2e 66 69 6c 74 65 72 28 66 perties.filter(f 0002ced0: 75 6e 63 74 69 6f 6e 20 28 70 72 6f 70 65 72 74 unction (propert 0002cee0: 79 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 y) {. 0002cef0: 20 69 66 20 28 70 72 6f 70 65 72 74 79 2e 6b 69 if (property.ki 0002cf00: 6e 64 20 3d 3d 3d 20 32 39 36 20 2f 2a 20 53 79 nd === 296 /* Sy 0002cf10: 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 ntaxKind.Propert 0002cf20: 79 41 73 73 69 67 6e 6d 65 6e 74 20 2a 2f 29 20 yAssignment */) 0002cf30: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 0002cf40: 20 20 76 61 72 20 70 72 6f 70 4e 61 6d 65 20 3d var propName = 0002cf50: 20 74 72 79 47 65 74 54 65 78 74 4f 66 50 72 6f tryGetTextOfPro 0002cf60: 70 65 72 74 79 4e 61 6d 65 28 70 72 6f 70 65 72 pertyName(proper 0002cf70: 74 79 2e 6e 61 6d 65 29 3b 0a 20 20 20 20 20 20 ty.name);. 0002cf80: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 0002cf90: 20 6b 65 79 20 3d 3d 3d 20 70 72 6f 70 4e 61 6d key === propNam 0002cfa0: 65 20 7c 7c 20 28 21 21 6b 65 79 32 20 26 26 20 e || (!!key2 && 0002cfb0: 6b 65 79 32 20 3d 3d 3d 20 70 72 6f 70 4e 61 6d key2 === propNam 0002cfc0: 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 e);. 0002cfd0: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 }. re 0002cfe0: 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 turn false;. 0002cff0: 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d 0a 20 20 });. }. 0002d000: 20 20 74 73 2e 67 65 74 50 72 6f 70 65 72 74 79 ts.getProperty 0002d010: 41 73 73 69 67 6e 6d 65 6e 74 20 3d 20 67 65 74 Assignment = get 0002d020: 50 72 6f 70 65 72 74 79 41 73 73 69 67 6e 6d 65 PropertyAssignme 0002d030: 6e 74 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e nt;. function 0002d040: 20 67 65 74 50 72 6f 70 65 72 74 79 41 72 72 61 getPropertyArra 0002d050: 79 45 6c 65 6d 65 6e 74 56 61 6c 75 65 28 6f 62 yElementValue(ob 0002d060: 6a 65 63 74 4c 69 74 65 72 61 6c 2c 20 70 72 6f jectLiteral, pro 0002d070: 70 4b 65 79 2c 20 65 6c 65 6d 65 6e 74 56 61 6c pKey, elementVal 0002d080: 75 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 ue) {. re 0002d090: 74 75 72 6e 20 74 73 2e 66 69 72 73 74 44 65 66 turn ts.firstDef 0002d0a0: 69 6e 65 64 28 67 65 74 50 72 6f 70 65 72 74 79 ined(getProperty 0002d0b0: 41 73 73 69 67 6e 6d 65 6e 74 28 6f 62 6a 65 63 Assignment(objec 0002d0c0: 74 4c 69 74 65 72 61 6c 2c 20 70 72 6f 70 4b 65 tLiteral, propKe 0002d0d0: 79 29 2c 20 66 75 6e 63 74 69 6f 6e 20 28 70 72 y), function (pr 0002d0e0: 6f 70 65 72 74 79 29 20 7b 0a 20 20 20 20 20 20 operty) {. 0002d0f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 0002d100: 69 73 41 72 72 61 79 4c 69 74 65 72 61 6c 45 78 isArrayLiteralEx 0002d110: 70 72 65 73 73 69 6f 6e 28 70 72 6f 70 65 72 74 pression(propert 0002d120: 79 2e 69 6e 69 74 69 61 6c 69 7a 65 72 29 20 3f y.initializer) ? 0002d130: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002d140: 20 74 73 2e 66 69 6e 64 28 70 72 6f 70 65 72 74 ts.find(propert 0002d150: 79 2e 69 6e 69 74 69 61 6c 69 7a 65 72 2e 65 6c y.initializer.el 0002d160: 65 6d 65 6e 74 73 2c 20 66 75 6e 63 74 69 6f 6e ements, function 0002d170: 20 28 65 6c 65 6d 65 6e 74 29 20 7b 20 72 65 74 (element) { ret 0002d180: 75 72 6e 20 74 73 2e 69 73 53 74 72 69 6e 67 4c urn ts.isStringL 0002d190: 69 74 65 72 61 6c 28 65 6c 65 6d 65 6e 74 29 20 iteral(element) 0002d1a0: 26 26 20 65 6c 65 6d 65 6e 74 2e 74 65 78 74 20 && element.text 0002d1b0: 3d 3d 3d 20 65 6c 65 6d 65 6e 74 56 61 6c 75 65 === elementValue 0002d1c0: 3b 20 7d 29 20 3a 0a 20 20 20 20 20 20 20 20 20 ; }) :. 0002d1d0: 20 20 20 20 20 20 20 75 6e 64 65 66 69 6e 65 64 undefined 0002d1e0: 3b 0a 20 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 ;. });. 0002d1f0: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 50 72 }. ts.getPr 0002d200: 6f 70 65 72 74 79 41 72 72 61 79 45 6c 65 6d 65 opertyArrayEleme 0002d210: 6e 74 56 61 6c 75 65 20 3d 20 67 65 74 50 72 6f ntValue = getPro 0002d220: 70 65 72 74 79 41 72 72 61 79 45 6c 65 6d 65 6e pertyArrayElemen 0002d230: 74 56 61 6c 75 65 3b 0a 20 20 20 20 66 75 6e 63 tValue;. func 0002d240: 74 69 6f 6e 20 67 65 74 54 73 43 6f 6e 66 69 67 tion getTsConfig 0002d250: 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 45 78 70 ObjectLiteralExp 0002d260: 72 65 73 73 69 6f 6e 28 74 73 43 6f 6e 66 69 67 ression(tsConfig 0002d270: 53 6f 75 72 63 65 46 69 6c 65 29 20 7b 0a 20 20 SourceFile) {. 0002d280: 20 20 20 20 20 20 69 66 20 28 74 73 43 6f 6e 66 if (tsConf 0002d290: 69 67 53 6f 75 72 63 65 46 69 6c 65 20 26 26 20 igSourceFile && 0002d2a0: 74 73 43 6f 6e 66 69 67 53 6f 75 72 63 65 46 69 tsConfigSourceFi 0002d2b0: 6c 65 2e 73 74 61 74 65 6d 65 6e 74 73 2e 6c 65 le.statements.le 0002d2c0: 6e 67 74 68 29 20 7b 0a 20 20 20 20 20 20 20 20 ngth) {. 0002d2d0: 20 20 20 20 76 61 72 20 65 78 70 72 65 73 73 69 var expressi 0002d2e0: 6f 6e 20 3d 20 74 73 43 6f 6e 66 69 67 53 6f 75 on = tsConfigSou 0002d2f0: 72 63 65 46 69 6c 65 2e 73 74 61 74 65 6d 65 6e rceFile.statemen 0002d300: 74 73 5b 30 5d 2e 65 78 70 72 65 73 73 69 6f 6e ts[0].expression 0002d310: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 ;. re 0002d320: 74 75 72 6e 20 74 73 2e 74 72 79 43 61 73 74 28 turn ts.tryCast( 0002d330: 65 78 70 72 65 73 73 69 6f 6e 2c 20 74 73 2e 69 expression, ts.i 0002d340: 73 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 45 78 sObjectLiteralEx 0002d350: 70 72 65 73 73 69 6f 6e 29 3b 0a 20 20 20 20 20 pression);. 0002d360: 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 }. }. t 0002d370: 73 2e 67 65 74 54 73 43 6f 6e 66 69 67 4f 62 6a s.getTsConfigObj 0002d380: 65 63 74 4c 69 74 65 72 61 6c 45 78 70 72 65 73 ectLiteralExpres 0002d390: 73 69 6f 6e 20 3d 20 67 65 74 54 73 43 6f 6e 66 sion = getTsConf 0002d3a0: 69 67 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 45 igObjectLiteralE 0002d3b0: 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 20 66 xpression;. f 0002d3c0: 75 6e 63 74 69 6f 6e 20 67 65 74 54 73 43 6f 6e unction getTsCon 0002d3d0: 66 69 67 50 72 6f 70 41 72 72 61 79 45 6c 65 6d figPropArrayElem 0002d3e0: 65 6e 74 56 61 6c 75 65 28 74 73 43 6f 6e 66 69 entValue(tsConfi 0002d3f0: 67 53 6f 75 72 63 65 46 69 6c 65 2c 20 70 72 6f gSourceFile, pro 0002d400: 70 4b 65 79 2c 20 65 6c 65 6d 65 6e 74 56 61 6c pKey, elementVal 0002d410: 75 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 ue) {. re 0002d420: 74 75 72 6e 20 74 73 2e 66 69 72 73 74 44 65 66 turn ts.firstDef 0002d430: 69 6e 65 64 28 67 65 74 54 73 43 6f 6e 66 69 67 ined(getTsConfig 0002d440: 50 72 6f 70 41 72 72 61 79 28 74 73 43 6f 6e 66 PropArray(tsConf 0002d450: 69 67 53 6f 75 72 63 65 46 69 6c 65 2c 20 70 72 igSourceFile, pr 0002d460: 6f 70 4b 65 79 29 2c 20 66 75 6e 63 74 69 6f 6e opKey), function 0002d470: 20 28 70 72 6f 70 65 72 74 79 29 20 7b 0a 20 20 (property) {. 0002d480: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 0002d490: 20 74 73 2e 69 73 41 72 72 61 79 4c 69 74 65 72 ts.isArrayLiter 0002d4a0: 61 6c 45 78 70 72 65 73 73 69 6f 6e 28 70 72 6f alExpression(pro 0002d4b0: 70 65 72 74 79 2e 69 6e 69 74 69 61 6c 69 7a 65 perty.initialize 0002d4c0: 72 29 20 3f 0a 20 20 20 20 20 20 20 20 20 20 20 r) ?. 0002d4d0: 20 20 20 20 20 74 73 2e 66 69 6e 64 28 70 72 6f ts.find(pro 0002d4e0: 70 65 72 74 79 2e 69 6e 69 74 69 61 6c 69 7a 65 perty.initialize 0002d4f0: 72 2e 65 6c 65 6d 65 6e 74 73 2c 20 66 75 6e 63 r.elements, func 0002d500: 74 69 6f 6e 20 28 65 6c 65 6d 65 6e 74 29 20 7b tion (element) { 0002d510: 20 72 65 74 75 72 6e 20 74 73 2e 69 73 53 74 72 return ts.isStr 0002d520: 69 6e 67 4c 69 74 65 72 61 6c 28 65 6c 65 6d 65 ingLiteral(eleme 0002d530: 6e 74 29 20 26 26 20 65 6c 65 6d 65 6e 74 2e 74 nt) && element.t 0002d540: 65 78 74 20 3d 3d 3d 20 65 6c 65 6d 65 6e 74 56 ext === elementV 0002d550: 61 6c 75 65 3b 20 7d 29 20 3a 0a 20 20 20 20 20 alue; }) :. 0002d560: 20 20 20 20 20 20 20 20 20 20 20 75 6e 64 65 66 undef 0002d570: 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 7d 29 ined;. }) 0002d580: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 ;. }. ts.g 0002d590: 65 74 54 73 43 6f 6e 66 69 67 50 72 6f 70 41 72 etTsConfigPropAr 0002d5a0: 72 61 79 45 6c 65 6d 65 6e 74 56 61 6c 75 65 20 rayElementValue 0002d5b0: 3d 20 67 65 74 54 73 43 6f 6e 66 69 67 50 72 6f = getTsConfigPro 0002d5c0: 70 41 72 72 61 79 45 6c 65 6d 65 6e 74 56 61 6c pArrayElementVal 0002d5d0: 75 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ue;. function 0002d5e0: 20 67 65 74 54 73 43 6f 6e 66 69 67 50 72 6f 70 getTsConfigProp 0002d5f0: 41 72 72 61 79 28 74 73 43 6f 6e 66 69 67 53 6f Array(tsConfigSo 0002d600: 75 72 63 65 46 69 6c 65 2c 20 70 72 6f 70 4b 65 urceFile, propKe 0002d610: 79 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 y) {. var 0002d620: 20 6a 73 6f 6e 4f 62 6a 65 63 74 4c 69 74 65 72 jsonObjectLiter 0002d630: 61 6c 20 3d 20 67 65 74 54 73 43 6f 6e 66 69 67 al = getTsConfig 0002d640: 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 45 78 70 ObjectLiteralExp 0002d650: 72 65 73 73 69 6f 6e 28 74 73 43 6f 6e 66 69 67 ression(tsConfig 0002d660: 53 6f 75 72 63 65 46 69 6c 65 29 3b 0a 20 20 20 SourceFile);. 0002d670: 20 20 20 20 20 72 65 74 75 72 6e 20 6a 73 6f 6e return json 0002d680: 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 20 3f 20 ObjectLiteral ? 0002d690: 67 65 74 50 72 6f 70 65 72 74 79 41 73 73 69 67 getPropertyAssig 0002d6a0: 6e 6d 65 6e 74 28 6a 73 6f 6e 4f 62 6a 65 63 74 nment(jsonObject 0002d6b0: 4c 69 74 65 72 61 6c 2c 20 70 72 6f 70 4b 65 79 Literal, propKey 0002d6c0: 29 20 3a 20 74 73 2e 65 6d 70 74 79 41 72 72 61 ) : ts.emptyArra 0002d6d0: 79 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e y;. }. ts. 0002d6e0: 67 65 74 54 73 43 6f 6e 66 69 67 50 72 6f 70 41 getTsConfigPropA 0002d6f0: 72 72 61 79 20 3d 20 67 65 74 54 73 43 6f 6e 66 rray = getTsConf 0002d700: 69 67 50 72 6f 70 41 72 72 61 79 3b 0a 20 20 20 igPropArray;. 0002d710: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 43 6f 6e function getCon 0002d720: 74 61 69 6e 69 6e 67 46 75 6e 63 74 69 6f 6e 28 tainingFunction( 0002d730: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 0002d740: 72 65 74 75 72 6e 20 74 73 2e 66 69 6e 64 41 6e return ts.findAn 0002d750: 63 65 73 74 6f 72 28 6e 6f 64 65 2e 70 61 72 65 cestor(node.pare 0002d760: 6e 74 2c 20 74 73 2e 69 73 46 75 6e 63 74 69 6f nt, ts.isFunctio 0002d770: 6e 4c 69 6b 65 29 3b 0a 20 20 20 20 7d 0a 20 20 nLike);. }. 0002d780: 20 20 74 73 2e 67 65 74 43 6f 6e 74 61 69 6e 69 ts.getContaini 0002d790: 6e 67 46 75 6e 63 74 69 6f 6e 20 3d 20 67 65 74 ngFunction = get 0002d7a0: 43 6f 6e 74 61 69 6e 69 6e 67 46 75 6e 63 74 69 ContainingFuncti 0002d7b0: 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e on;. function 0002d7c0: 20 67 65 74 43 6f 6e 74 61 69 6e 69 6e 67 46 75 getContainingFu 0002d7d0: 6e 63 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 6f nctionDeclaratio 0002d7e0: 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 n(node) {. 0002d7f0: 20 20 72 65 74 75 72 6e 20 74 73 2e 66 69 6e 64 return ts.find 0002d800: 41 6e 63 65 73 74 6f 72 28 6e 6f 64 65 2e 70 61 Ancestor(node.pa 0002d810: 72 65 6e 74 2c 20 74 73 2e 69 73 46 75 6e 63 74 rent, ts.isFunct 0002d820: 69 6f 6e 4c 69 6b 65 44 65 63 6c 61 72 61 74 69 ionLikeDeclarati 0002d830: 6f 6e 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 on);. }. t 0002d840: 73 2e 67 65 74 43 6f 6e 74 61 69 6e 69 6e 67 46 s.getContainingF 0002d850: 75 6e 63 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 unctionDeclarati 0002d860: 6f 6e 20 3d 20 67 65 74 43 6f 6e 74 61 69 6e 69 on = getContaini 0002d870: 6e 67 46 75 6e 63 74 69 6f 6e 44 65 63 6c 61 72 ngFunctionDeclar 0002d880: 61 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 ation;. funct 0002d890: 69 6f 6e 20 67 65 74 43 6f 6e 74 61 69 6e 69 6e ion getContainin 0002d8a0: 67 43 6c 61 73 73 28 6e 6f 64 65 29 20 7b 0a 20 gClass(node) {. 0002d8b0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 return ts 0002d8c0: 2e 66 69 6e 64 41 6e 63 65 73 74 6f 72 28 6e 6f .findAncestor(no 0002d8d0: 64 65 2e 70 61 72 65 6e 74 2c 20 74 73 2e 69 73 de.parent, ts.is 0002d8e0: 43 6c 61 73 73 4c 69 6b 65 29 3b 0a 20 20 20 20 ClassLike);. 0002d8f0: 7d 0a 20 20 20 20 74 73 2e 67 65 74 43 6f 6e 74 }. ts.getCont 0002d900: 61 69 6e 69 6e 67 43 6c 61 73 73 20 3d 20 67 65 ainingClass = ge 0002d910: 74 43 6f 6e 74 61 69 6e 69 6e 67 43 6c 61 73 73 tContainingClass 0002d920: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 ;. function g 0002d930: 65 74 43 6f 6e 74 61 69 6e 69 6e 67 43 6c 61 73 etContainingClas 0002d940: 73 53 74 61 74 69 63 42 6c 6f 63 6b 28 6e 6f 64 sStaticBlock(nod 0002d950: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 e) {. ret 0002d960: 75 72 6e 20 74 73 2e 66 69 6e 64 41 6e 63 65 73 urn ts.findAnces 0002d970: 74 6f 72 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2c tor(node.parent, 0002d980: 20 66 75 6e 63 74 69 6f 6e 20 28 6e 29 20 7b 0a function (n) {. 0002d990: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if ( 0002d9a0: 74 73 2e 69 73 43 6c 61 73 73 4c 69 6b 65 28 6e ts.isClassLike(n 0002d9b0: 29 20 7c 7c 20 74 73 2e 69 73 46 75 6e 63 74 69 ) || ts.isFuncti 0002d9c0: 6f 6e 4c 69 6b 65 28 6e 29 29 20 7b 0a 20 20 20 onLike(n)) {. 0002d9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 0002d9e0: 75 72 6e 20 22 71 75 69 74 22 3b 0a 20 20 20 20 urn "quit";. 0002d9f0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0002da00: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 0002da10: 69 73 43 6c 61 73 73 53 74 61 74 69 63 42 6c 6f isClassStaticBlo 0002da20: 63 6b 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 29 ckDeclaration(n) 0002da30: 3b 0a 20 20 20 20 20 20 20 20 7d 29 3b 0a 20 20 ;. });. 0002da40: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 43 6f }. ts.getCo 0002da50: 6e 74 61 69 6e 69 6e 67 43 6c 61 73 73 53 74 61 ntainingClassSta 0002da60: 74 69 63 42 6c 6f 63 6b 20 3d 20 67 65 74 43 6f ticBlock = getCo 0002da70: 6e 74 61 69 6e 69 6e 67 43 6c 61 73 73 53 74 61 ntainingClassSta 0002da80: 74 69 63 42 6c 6f 63 6b 3b 0a 20 20 20 20 66 75 ticBlock;. fu 0002da90: 6e 63 74 69 6f 6e 20 67 65 74 43 6f 6e 74 61 69 nction getContai 0002daa0: 6e 69 6e 67 46 75 6e 63 74 69 6f 6e 4f 72 43 6c ningFunctionOrCl 0002dab0: 61 73 73 53 74 61 74 69 63 42 6c 6f 63 6b 28 6e assStaticBlock(n 0002dac0: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 0002dad0: 65 74 75 72 6e 20 74 73 2e 66 69 6e 64 41 6e 63 eturn ts.findAnc 0002dae0: 65 73 74 6f 72 28 6e 6f 64 65 2e 70 61 72 65 6e estor(node.paren 0002daf0: 74 2c 20 74 73 2e 69 73 46 75 6e 63 74 69 6f 6e t, ts.isFunction 0002db00: 4c 69 6b 65 4f 72 43 6c 61 73 73 53 74 61 74 69 LikeOrClassStati 0002db10: 63 42 6c 6f 63 6b 44 65 63 6c 61 72 61 74 69 6f cBlockDeclaratio 0002db20: 6e 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 n);. }. ts 0002db30: 2e 67 65 74 43 6f 6e 74 61 69 6e 69 6e 67 46 75 .getContainingFu 0002db40: 6e 63 74 69 6f 6e 4f 72 43 6c 61 73 73 53 74 61 nctionOrClassSta 0002db50: 74 69 63 42 6c 6f 63 6b 20 3d 20 67 65 74 43 6f ticBlock = getCo 0002db60: 6e 74 61 69 6e 69 6e 67 46 75 6e 63 74 69 6f 6e ntainingFunction 0002db70: 4f 72 43 6c 61 73 73 53 74 61 74 69 63 42 6c 6f OrClassStaticBlo 0002db80: 63 6b 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ck;. function 0002db90: 20 67 65 74 54 68 69 73 43 6f 6e 74 61 69 6e 65 getThisContaine 0002dba0: 72 28 6e 6f 64 65 2c 20 69 6e 63 6c 75 64 65 41 r(node, includeA 0002dbb0: 72 72 6f 77 46 75 6e 63 74 69 6f 6e 73 29 20 7b rrowFunctions) { 0002dbc0: 0a 20 20 20 20 20 20 20 20 74 73 2e 44 65 62 75 . ts.Debu 0002dbd0: 67 2e 61 73 73 65 72 74 28 6e 6f 64 65 2e 6b 69 g.assert(node.ki 0002dbe0: 6e 64 20 21 3d 3d 20 33 30 35 20 2f 2a 20 53 79 nd !== 305 /* Sy 0002dbf0: 6e 74 61 78 4b 69 6e 64 2e 53 6f 75 72 63 65 46 ntaxKind.SourceF 0002dc00: 69 6c 65 20 2a 2f 29 3b 0a 20 20 20 20 20 20 20 ile */);. 0002dc10: 20 77 68 69 6c 65 20 28 74 72 75 65 29 20 7b 0a while (true) {. 0002dc20: 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 node 0002dc30: 20 3d 20 6e 6f 64 65 2e 70 61 72 65 6e 74 3b 0a = node.parent;. 0002dc40: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if ( 0002dc50: 21 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 !node) {. 0002dc60: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 0002dc70: 74 73 2e 44 65 62 75 67 2e 66 61 69 6c 28 29 3b ts.Debug.fail(); 0002dc80: 20 2f 2f 20 49 66 20 77 65 20 6e 65 76 65 72 20 // If we never 0002dc90: 70 61 73 73 20 69 6e 20 61 20 53 6f 75 72 63 65 pass in a Source 0002dca0: 46 69 6c 65 2c 20 74 68 69 73 20 73 68 6f 75 6c File, this shoul 0002dcb0: 64 20 62 65 20 75 6e 72 65 61 63 68 61 62 6c 65 d be unreachable 0002dcc0: 2c 20 73 69 6e 63 65 20 77 65 27 6c 6c 20 73 74 , since we'll st 0002dcd0: 6f 70 20 77 68 65 6e 20 77 65 20 72 65 61 63 68 op when we reach 0002dce0: 20 74 68 61 74 2e 0a 20 20 20 20 20 20 20 20 20 that.. 0002dcf0: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 0002dd00: 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 switch (node.ki 0002dd10: 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 nd) {. 0002dd20: 20 20 20 20 20 20 63 61 73 65 20 31 36 32 20 2f case 162 / 0002dd30: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6d * SyntaxKind.Com 0002dd40: 70 75 74 65 64 50 72 6f 70 65 72 74 79 4e 61 6d putedPropertyNam 0002dd50: 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 e */:. 0002dd60: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 // If 0002dd70: 74 68 65 20 67 72 61 6e 64 70 61 72 65 6e 74 20 the grandparent 0002dd80: 6e 6f 64 65 20 69 73 20 61 6e 20 6f 62 6a 65 63 node is an objec 0002dd90: 74 20 6c 69 74 65 72 61 6c 20 28 61 73 20 6f 70 t literal (as op 0002dda0: 70 6f 73 65 64 20 74 6f 20 61 20 63 6c 61 73 73 posed to a class 0002ddb0: 29 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ),. 0002ddc0: 20 20 20 20 20 20 20 2f 2f 20 74 68 65 6e 20 74 // then t 0002ddd0: 68 65 20 63 6f 6d 70 75 74 65 64 20 70 72 6f 70 he computed prop 0002dde0: 65 72 74 79 20 69 73 20 6e 6f 74 20 61 20 27 74 erty is not a 't 0002ddf0: 68 69 73 27 20 63 6f 6e 74 61 69 6e 65 72 2e 0a his' container.. 0002de00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002de10: 20 20 20 20 2f 2f 20 41 20 63 6f 6d 70 75 74 65 // A compute 0002de20: 64 20 70 72 6f 70 65 72 74 79 20 6e 61 6d 65 20 d property name 0002de30: 69 6e 20 61 20 63 6c 61 73 73 20 6e 65 65 64 73 in a class needs 0002de40: 20 74 6f 20 62 65 20 61 20 74 68 69 73 20 63 6f to be a this co 0002de50: 6e 74 61 69 6e 65 72 0a 20 20 20 20 20 20 20 20 ntainer. 0002de60: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 73 // s 0002de70: 6f 20 74 68 61 74 20 77 65 20 63 61 6e 20 65 72 o that we can er 0002de80: 72 6f 72 20 6f 6e 20 69 74 2e 0a 20 20 20 20 20 ror on it.. 0002de90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i 0002dea0: 66 20 28 74 73 2e 69 73 43 6c 61 73 73 4c 69 6b f (ts.isClassLik 0002deb0: 65 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 70 61 e(node.parent.pa 0002dec0: 72 65 6e 74 29 29 20 7b 0a 20 20 20 20 20 20 20 rent)) {. 0002ded0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002dee0: 20 72 65 74 75 72 6e 20 6e 6f 64 65 3b 0a 20 20 return node;. 0002def0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002df00: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }. 0002df10: 20 20 20 20 20 20 20 20 2f 2f 20 49 66 20 74 68 // If th 0002df20: 69 73 20 69 73 20 61 20 63 6f 6d 70 75 74 65 64 is is a computed 0002df30: 20 70 72 6f 70 65 72 74 79 2c 20 74 68 65 6e 20 property, then 0002df40: 74 68 65 20 70 61 72 65 6e 74 20 73 68 6f 75 6c the parent shoul 0002df50: 64 20 6e 6f 74 0a 20 20 20 20 20 20 20 20 20 20 d not. 0002df60: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 6d 61 6b // mak 0002df70: 65 20 69 74 20 61 20 74 68 69 73 20 63 6f 6e 74 e it a this cont 0002df80: 61 69 6e 65 72 2e 20 54 68 65 20 70 61 72 65 6e ainer. The paren 0002df90: 74 20 6d 69 67 68 74 20 62 65 20 61 20 70 72 6f t might be a pro 0002dfa0: 70 65 72 74 79 0a 20 20 20 20 20 20 20 20 20 20 perty. 0002dfb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 69 6e 20 // in 0002dfc0: 61 6e 20 6f 62 6a 65 63 74 20 6c 69 74 65 72 61 an object litera 0002dfd0: 6c 2c 20 6c 69 6b 65 20 61 20 6d 65 74 68 6f 64 l, like a method 0002dfe0: 20 6f 72 20 61 63 63 65 73 73 6f 72 2e 20 42 75 or accessor. Bu 0002dff0: 74 20 69 6e 20 6f 72 64 65 72 20 66 6f 72 0a 20 t in order for. 0002e000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002e010: 20 20 20 2f 2f 20 73 75 63 68 20 61 20 70 61 72 // such a par 0002e020: 65 6e 74 20 74 6f 20 62 65 20 61 20 74 68 69 73 ent to be a this 0002e030: 20 63 6f 6e 74 61 69 6e 65 72 2c 20 74 68 65 20 container, the 0002e040: 72 65 66 65 72 65 6e 63 65 20 6d 75 73 74 20 62 reference must b 0002e050: 65 20 69 6e 0a 20 20 20 20 20 20 20 20 20 20 20 e in. 0002e060: 20 20 20 20 20 20 20 20 20 2f 2f 20 74 68 65 20 // the 0002e070: 2a 62 6f 64 79 2a 20 6f 66 20 74 68 65 20 63 6f *body* of the co 0002e080: 6e 74 61 69 6e 65 72 2e 0a 20 20 20 20 20 20 20 ntainer.. 0002e090: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 nod 0002e0a0: 65 20 3d 20 6e 6f 64 65 2e 70 61 72 65 6e 74 3b e = node.parent; 0002e0b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002e0c0: 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 break;. 0002e0d0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0002e0e0: 20 31 36 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 165 /* SyntaxKi 0002e0f0: 6e 64 2e 44 65 63 6f 72 61 74 6f 72 20 2a 2f 3a nd.Decorator */: 0002e100: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002e110: 20 20 20 20 20 2f 2f 20 44 65 63 6f 72 61 74 6f // Decorato 0002e120: 72 73 20 61 72 65 20 61 6c 77 61 79 73 20 61 70 rs are always ap 0002e130: 70 6c 69 65 64 20 6f 75 74 73 69 64 65 20 6f 66 plied outside of 0002e140: 20 74 68 65 20 62 6f 64 79 20 6f 66 20 61 20 63 the body of a c 0002e150: 6c 61 73 73 20 6f 72 20 6d 65 74 68 6f 64 2e 0a lass or method.. 0002e160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002e170: 20 20 20 20 69 66 20 28 6e 6f 64 65 2e 70 61 72 if (node.par 0002e180: 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 31 36 34 ent.kind === 164 0002e190: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 /* SyntaxKind.P 0002e1a0: 61 72 61 6d 65 74 65 72 20 2a 2f 20 26 26 20 74 arameter */ && t 0002e1b0: 73 2e 69 73 43 6c 61 73 73 45 6c 65 6d 65 6e 74 s.isClassElement 0002e1c0: 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 70 61 72 (node.parent.par 0002e1d0: 65 6e 74 29 29 20 7b 0a 20 20 20 20 20 20 20 20 ent)) {. 0002e1e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002e1f0: 2f 2f 20 49 66 20 74 68 65 20 64 65 63 6f 72 61 // If the decora 0002e200: 74 6f 72 27 73 20 70 61 72 65 6e 74 20 69 73 20 tor's parent is 0002e210: 61 20 50 61 72 61 6d 65 74 65 72 2c 20 77 65 20 a Parameter, we 0002e220: 72 65 73 6f 6c 76 65 20 74 68 65 20 74 68 69 73 resolve the this 0002e230: 20 63 6f 6e 74 61 69 6e 65 72 20 66 72 6f 6d 0a container from. 0002e240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002e250: 20 20 20 20 20 20 20 20 2f 2f 20 74 68 65 20 67 // the g 0002e260: 72 61 6e 64 70 61 72 65 6e 74 20 63 6c 61 73 73 randparent class 0002e270: 20 64 65 63 6c 61 72 61 74 69 6f 6e 2e 0a 20 20 declaration.. 0002e280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002e290: 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 6e 6f 64 node = nod 0002e2a0: 65 2e 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 3b e.parent.parent; 0002e2b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002e2c0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 }. 0002e2d0: 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 else 0002e2e0: 69 66 20 28 74 73 2e 69 73 43 6c 61 73 73 45 6c if (ts.isClassEl 0002e2f0: 65 6d 65 6e 74 28 6e 6f 64 65 2e 70 61 72 65 6e ement(node.paren 0002e300: 74 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 t)) {. 0002e310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f // 0002e320: 20 49 66 20 74 68 65 20 64 65 63 6f 72 61 74 6f If the decorato 0002e330: 72 27 73 20 70 61 72 65 6e 74 20 69 73 20 61 20 r's parent is a 0002e340: 63 6c 61 73 73 20 65 6c 65 6d 65 6e 74 2c 20 77 class element, w 0002e350: 65 20 72 65 73 6f 6c 76 65 20 74 68 65 20 27 74 e resolve the 't 0002e360: 68 69 73 27 20 63 6f 6e 74 61 69 6e 65 72 0a 20 his' container. 0002e370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002e380: 20 20 20 20 20 20 20 2f 2f 20 66 72 6f 6d 20 74 // from t 0002e390: 68 65 20 70 61 72 65 6e 74 20 63 6c 61 73 73 20 he parent class 0002e3a0: 64 65 63 6c 61 72 61 74 69 6f 6e 2e 0a 20 20 20 declaration.. 0002e3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002e3c0: 20 20 20 20 20 6e 6f 64 65 20 3d 20 6e 6f 64 65 node = node 0002e3d0: 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 .parent;. 0002e3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 }. 0002e3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002e400: 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 break;. 0002e410: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 0002e420: 31 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 14 /* SyntaxKind 0002e430: 2e 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e 20 2a .ArrowFunction * 0002e440: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0002e450: 20 20 20 20 20 20 20 69 66 20 28 21 69 6e 63 6c if (!incl 0002e460: 75 64 65 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e udeArrowFunction 0002e470: 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 s) {. 0002e480: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e con 0002e490: 74 69 6e 75 65 3b 0a 20 20 20 20 20 20 20 20 20 tinue;. 0002e4a0: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 0002e4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 // 0002e4c0: 66 61 6c 6c 73 20 74 68 72 6f 75 67 68 0a 20 20 falls through. 0002e4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 0002e4e0: 73 65 20 32 35 36 20 2f 2a 20 53 79 6e 74 61 78 se 256 /* Syntax 0002e4f0: 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 44 65 63 Kind.FunctionDec 0002e500: 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 laration */:. 0002e510: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 cas 0002e520: 65 20 32 31 33 20 2f 2a 20 53 79 6e 74 61 78 4b e 213 /* SyntaxK 0002e530: 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 45 78 70 72 ind.FunctionExpr 0002e540: 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ession */:. 0002e550: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0002e560: 32 36 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 261 /* SyntaxKin 0002e570: 64 2e 4d 6f 64 75 6c 65 44 65 63 6c 61 72 61 74 d.ModuleDeclarat 0002e580: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 0002e590: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 30 case 170 0002e5a0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 /* SyntaxKind.C 0002e5b0: 6c 61 73 73 53 74 61 74 69 63 42 6c 6f 63 6b 44 lassStaticBlockD 0002e5c0: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 0002e5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0002e5e0: 61 73 65 20 31 36 37 20 2f 2a 20 53 79 6e 74 61 ase 167 /* Synta 0002e5f0: 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 44 65 xKind.PropertyDe 0002e600: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 0002e610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 0002e620: 73 65 20 31 36 36 20 2f 2a 20 53 79 6e 74 61 78 se 166 /* Syntax 0002e630: 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 53 69 67 Kind.PropertySig 0002e640: 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 20 nature */:. 0002e650: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0002e660: 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 169 /* SyntaxKin 0002e670: 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 72 61 74 d.MethodDeclarat 0002e680: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 0002e690: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 36 38 case 168 0002e6a0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d /* SyntaxKind.M 0002e6b0: 65 74 68 6f 64 53 69 67 6e 61 74 75 72 65 20 2a ethodSignature * 0002e6c0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0002e6d0: 20 20 20 63 61 73 65 20 31 37 31 20 2f 2a 20 53 case 171 /* S 0002e6e0: 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 72 yntaxKind.Constr 0002e6f0: 75 63 74 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 20 uctor */:. 0002e700: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 0002e710: 37 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 72 /* SyntaxKind 0002e720: 2e 47 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 3a .GetAccessor */: 0002e730: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002e740: 20 63 61 73 65 20 31 37 33 20 2f 2a 20 53 79 6e case 173 /* Syn 0002e750: 74 61 78 4b 69 6e 64 2e 53 65 74 41 63 63 65 73 taxKind.SetAcces 0002e760: 73 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 sor */:. 0002e770: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 34 case 174 0002e780: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 /* SyntaxKind.C 0002e790: 61 6c 6c 53 69 67 6e 61 74 75 72 65 20 2a 2f 3a allSignature */: 0002e7a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002e7b0: 20 63 61 73 65 20 31 37 35 20 2f 2a 20 53 79 6e case 175 /* Syn 0002e7c0: 74 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 72 75 63 taxKind.Construc 0002e7d0: 74 53 69 67 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 tSignature */:. 0002e7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0002e7f0: 61 73 65 20 31 37 36 20 2f 2a 20 53 79 6e 74 61 ase 176 /* Synta 0002e800: 78 4b 69 6e 64 2e 49 6e 64 65 78 53 69 67 6e 61 xKind.IndexSigna 0002e810: 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ture */:. 0002e820: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 36 case 26 0002e830: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 0002e840: 45 6e 75 6d 44 65 63 6c 61 72 61 74 69 6f 6e 20 EnumDeclaration 0002e850: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0002e860: 20 20 20 20 63 61 73 65 20 33 30 35 20 2f 2a 20 case 305 /* 0002e870: 53 79 6e 74 61 78 4b 69 6e 64 2e 53 6f 75 72 63 SyntaxKind.Sourc 0002e880: 65 46 69 6c 65 20 2a 2f 3a 0a 20 20 20 20 20 20 eFile */:. 0002e890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 0002e8a0: 74 75 72 6e 20 6e 6f 64 65 3b 0a 20 20 20 20 20 turn node;. 0002e8b0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 0002e8c0: 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e }. }. ts. 0002e8d0: 67 65 74 54 68 69 73 43 6f 6e 74 61 69 6e 65 72 getThisContainer 0002e8e0: 20 3d 20 67 65 74 54 68 69 73 43 6f 6e 74 61 69 = getThisContai 0002e8f0: 6e 65 72 3b 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 ner;. /**. 0002e900: 20 20 2a 20 40 72 65 74 75 72 6e 73 20 57 68 65 * @returns Whe 0002e910: 74 68 65 72 20 74 68 65 20 6e 6f 64 65 20 63 72 ther the node cr 0002e920: 65 61 74 65 73 20 61 20 6e 65 77 20 27 74 68 69 eates a new 'thi 0002e930: 73 27 20 73 63 6f 70 65 20 66 6f 72 20 69 74 73 s' scope for its 0002e940: 20 63 68 69 6c 64 72 65 6e 2e 0a 20 20 20 20 20 children.. 0002e950: 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 */. function 0002e960: 69 73 54 68 69 73 43 6f 6e 74 61 69 6e 65 72 4f isThisContainerO 0002e970: 72 46 75 6e 63 74 69 6f 6e 42 6c 6f 63 6b 28 6e rFunctionBlock(n 0002e980: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ode) {. s 0002e990: 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 witch (node.kind 0002e9a0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 0002e9b0: 2f 2f 20 41 72 72 6f 77 20 66 75 6e 63 74 69 6f // Arrow functio 0002e9c0: 6e 73 20 75 73 65 20 74 68 65 20 73 61 6d 65 20 ns use the same 0002e9d0: 73 63 6f 70 65 2c 20 62 75 74 20 6d 61 79 20 64 scope, but may d 0002e9e0: 6f 20 73 6f 20 69 6e 20 61 20 22 64 65 6c 61 79 o so in a "delay 0002e9f0: 65 64 22 20 6d 61 6e 6e 65 72 0a 20 20 20 20 20 ed" manner. 0002ea00: 20 20 20 20 20 20 20 2f 2f 20 46 6f 72 20 65 78 // For ex 0002ea10: 61 6d 70 6c 65 2c 20 60 63 6f 6e 73 74 20 67 65 ample, `const ge 0002ea20: 74 54 68 69 73 20 3d 20 28 29 20 3d 3e 20 74 68 tThis = () => th 0002ea30: 69 73 60 20 6d 61 79 20 62 65 20 62 65 66 6f 72 is` may be befor 0002ea40: 65 20 61 20 73 75 70 65 72 28 29 20 63 61 6c 6c e a super() call 0002ea50: 20 69 6e 20 61 20 64 65 72 69 76 65 64 20 63 6f in a derived co 0002ea60: 6e 73 74 72 75 63 74 6f 72 0a 20 20 20 20 20 20 nstructor. 0002ea70: 20 20 20 20 20 20 63 61 73 65 20 32 31 34 20 2f case 214 / 0002ea80: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 72 72 * SyntaxKind.Arr 0002ea90: 6f 77 46 75 6e 63 74 69 6f 6e 20 2a 2f 3a 0a 20 owFunction */:. 0002eaa0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0002eab0: 32 35 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 256 /* SyntaxKin 0002eac0: 64 2e 46 75 6e 63 74 69 6f 6e 44 65 63 6c 61 72 d.FunctionDeclar 0002ead0: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 0002eae0: 20 20 20 20 20 20 63 61 73 65 20 32 31 33 20 2f case 213 / 0002eaf0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 75 6e * SyntaxKind.Fun 0002eb00: 63 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 ctionExpression 0002eb10: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0002eb20: 63 61 73 65 20 31 36 37 20 2f 2a 20 53 79 6e 74 case 167 /* Synt 0002eb30: 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 44 axKind.PropertyD 0002eb40: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 0002eb50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 0002eb60: 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 eturn true;. 0002eb70: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 33 35 case 235 0002eb80: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 /* SyntaxKind.B 0002eb90: 6c 6f 63 6b 20 2a 2f 3a 0a 20 20 20 20 20 20 20 lock */:. 0002eba0: 20 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 switch 0002ebb0: 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b 69 6e (node.parent.kin 0002ebc0: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 d) {. 0002ebd0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 case 17 0002ebe0: 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 1 /* SyntaxKind. 0002ebf0: 43 6f 6e 73 74 72 75 63 74 6f 72 20 2a 2f 3a 0a Constructor */:. 0002ec00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002ec10: 20 20 20 20 63 61 73 65 20 31 36 39 20 2f 2a 20 case 169 /* 0002ec20: 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 74 68 6f SyntaxKind.Metho 0002ec30: 64 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a dDeclaration */: 0002ec40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002ec50: 20 20 20 20 20 63 61 73 65 20 31 37 32 20 2f 2a case 172 /* 0002ec60: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 47 65 74 41 SyntaxKind.GetA 0002ec70: 63 63 65 73 73 6f 72 20 2a 2f 3a 0a 20 20 20 20 ccessor */:. 0002ec80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002ec90: 63 61 73 65 20 31 37 33 20 2f 2a 20 53 79 6e 74 case 173 /* Synt 0002eca0: 61 78 4b 69 6e 64 2e 53 65 74 41 63 63 65 73 73 axKind.SetAccess 0002ecb0: 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 or */:. 0002ecc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f / 0002ecd0: 2f 20 4f 62 6a 65 63 74 20 70 72 6f 70 65 72 74 / Object propert 0002ece0: 69 65 73 20 63 61 6e 20 68 61 76 65 20 63 6f 6d ies can have com 0002ecf0: 70 75 74 65 64 20 6e 61 6d 65 73 3b 20 6f 6e 6c puted names; onl 0002ed00: 79 20 6d 65 74 68 6f 64 2d 6c 69 6b 65 20 62 6f y method-like bo 0002ed10: 64 69 65 73 20 73 74 61 72 74 20 61 20 6e 65 77 dies start a new 0002ed20: 20 73 63 6f 70 65 0a 20 20 20 20 20 20 20 20 20 scope. 0002ed30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 0002ed40: 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 eturn true;. 0002ed50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002ed60: 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 default:. 0002ed70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002ed80: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 return false;. 0002ed90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d } 0002eda0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 65 66 . def 0002edb0: 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 20 ault:. 0002edc0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c return fal 0002edd0: 73 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 se;. }. 0002ede0: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 54 68 69 }. ts.isThi 0002edf0: 73 43 6f 6e 74 61 69 6e 65 72 4f 72 46 75 6e 63 sContainerOrFunc 0002ee00: 74 69 6f 6e 42 6c 6f 63 6b 20 3d 20 69 73 54 68 tionBlock = isTh 0002ee10: 69 73 43 6f 6e 74 61 69 6e 65 72 4f 72 46 75 6e isContainerOrFun 0002ee20: 63 74 69 6f 6e 42 6c 6f 63 6b 3b 0a 20 20 20 20 ctionBlock;. 0002ee30: 66 75 6e 63 74 69 6f 6e 20 69 73 49 6e 54 6f 70 function isInTop 0002ee40: 4c 65 76 65 6c 43 6f 6e 74 65 78 74 28 6e 6f 64 LevelContext(nod 0002ee50: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 e) {. // 0002ee60: 54 68 65 20 6e 61 6d 65 20 6f 66 20 61 20 63 6c The name of a cl 0002ee70: 61 73 73 20 6f 72 20 66 75 6e 63 74 69 6f 6e 20 ass or function 0002ee80: 64 65 63 6c 61 72 61 74 69 6f 6e 20 69 73 20 61 declaration is a 0002ee90: 20 42 69 6e 64 69 6e 67 49 64 65 6e 74 69 66 69 BindingIdentifi 0002eea0: 65 72 20 69 6e 20 69 74 73 20 73 75 72 72 6f 75 er in its surrou 0002eeb0: 6e 64 69 6e 67 20 73 63 6f 70 65 2e 0a 20 20 20 nding scope.. 0002eec0: 20 20 20 20 20 69 66 20 28 74 73 2e 69 73 49 64 if (ts.isId 0002eed0: 65 6e 74 69 66 69 65 72 28 6e 6f 64 65 29 20 26 entifier(node) & 0002eee0: 26 20 28 74 73 2e 69 73 43 6c 61 73 73 44 65 63 & (ts.isClassDec 0002eef0: 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 2e 70 61 laration(node.pa 0002ef00: 72 65 6e 74 29 20 7c 7c 20 74 73 2e 69 73 46 75 rent) || ts.isFu 0002ef10: 6e 63 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 6f nctionDeclaratio 0002ef20: 6e 28 6e 6f 64 65 2e 70 61 72 65 6e 74 29 29 20 n(node.parent)) 0002ef30: 26 26 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6e && node.parent.n 0002ef40: 61 6d 65 20 3d 3d 3d 20 6e 6f 64 65 29 20 7b 0a ame === node) {. 0002ef50: 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 node 0002ef60: 20 3d 20 6e 6f 64 65 2e 70 61 72 65 6e 74 3b 0a = node.parent;. 0002ef70: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0002ef80: 20 20 76 61 72 20 63 6f 6e 74 61 69 6e 65 72 20 var container 0002ef90: 3d 20 67 65 74 54 68 69 73 43 6f 6e 74 61 69 6e = getThisContain 0002efa0: 65 72 28 6e 6f 64 65 2c 20 2f 2a 69 6e 63 6c 75 er(node, /*inclu 0002efb0: 64 65 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e 73 deArrowFunctions 0002efc0: 2a 2f 20 74 72 75 65 29 3b 0a 20 20 20 20 20 20 */ true);. 0002efd0: 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 53 6f return ts.isSo 0002efe0: 75 72 63 65 46 69 6c 65 28 63 6f 6e 74 61 69 6e urceFile(contain 0002eff0: 65 72 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 er);. }. t 0002f000: 73 2e 69 73 49 6e 54 6f 70 4c 65 76 65 6c 43 6f s.isInTopLevelCo 0002f010: 6e 74 65 78 74 20 3d 20 69 73 49 6e 54 6f 70 4c ntext = isInTopL 0002f020: 65 76 65 6c 43 6f 6e 74 65 78 74 3b 0a 20 20 20 evelContext;. 0002f030: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4e 65 77 function getNew 0002f040: 54 61 72 67 65 74 43 6f 6e 74 61 69 6e 65 72 28 TargetContainer( 0002f050: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 0002f060: 76 61 72 20 63 6f 6e 74 61 69 6e 65 72 20 3d 20 var container = 0002f070: 67 65 74 54 68 69 73 43 6f 6e 74 61 69 6e 65 72 getThisContainer 0002f080: 28 6e 6f 64 65 2c 20 2f 2a 69 6e 63 6c 75 64 65 (node, /*include 0002f090: 41 72 72 6f 77 46 75 6e 63 74 69 6f 6e 73 2a 2f ArrowFunctions*/ 0002f0a0: 20 66 61 6c 73 65 29 3b 0a 20 20 20 20 20 20 20 false);. 0002f0b0: 20 69 66 20 28 63 6f 6e 74 61 69 6e 65 72 29 20 if (container) 0002f0c0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 77 {. sw 0002f0d0: 69 74 63 68 20 28 63 6f 6e 74 61 69 6e 65 72 2e itch (container. 0002f0e0: 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 kind) {. 0002f0f0: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 31 case 171 0002f100: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 /* SyntaxKind.C 0002f110: 6f 6e 73 74 72 75 63 74 6f 72 20 2a 2f 3a 0a 20 onstructor */:. 0002f120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0002f130: 61 73 65 20 32 35 36 20 2f 2a 20 53 79 6e 74 61 ase 256 /* Synta 0002f140: 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 44 65 xKind.FunctionDe 0002f150: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 0002f160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 0002f170: 73 65 20 32 31 33 20 2f 2a 20 53 79 6e 74 61 78 se 213 /* Syntax 0002f180: 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 45 78 70 Kind.FunctionExp 0002f190: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 0002f1a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002f1b0: 72 65 74 75 72 6e 20 63 6f 6e 74 61 69 6e 65 72 return container 0002f1c0: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a ;. }. 0002f1d0: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0002f1e0: 20 20 72 65 74 75 72 6e 20 75 6e 64 65 66 69 6e return undefin 0002f1f0: 65 64 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 ed;. }. ts 0002f200: 2e 67 65 74 4e 65 77 54 61 72 67 65 74 43 6f 6e .getNewTargetCon 0002f210: 74 61 69 6e 65 72 20 3d 20 67 65 74 4e 65 77 54 tainer = getNewT 0002f220: 61 72 67 65 74 43 6f 6e 74 61 69 6e 65 72 3b 0a argetContainer;. 0002f230: 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 47 /**. * G 0002f240: 69 76 65 6e 20 61 6e 20 73 75 70 65 72 20 63 61 iven an super ca 0002f250: 6c 6c 2f 70 72 6f 70 65 72 74 79 20 6e 6f 64 65 ll/property node 0002f260: 2c 20 72 65 74 75 72 6e 73 20 74 68 65 20 63 6c , returns the cl 0002f270: 6f 73 65 73 74 20 6e 6f 64 65 20 77 68 65 72 65 osest node where 0002f280: 0a 20 20 20 20 20 2a 20 2d 20 61 20 73 75 70 65 . * - a supe 0002f290: 72 20 63 61 6c 6c 2f 70 72 6f 70 65 72 74 79 20 r call/property 0002f2a0: 61 63 63 65 73 73 20 69 73 20 6c 65 67 61 6c 20 access is legal 0002f2b0: 69 6e 20 74 68 65 20 6e 6f 64 65 20 61 6e 64 20 in the node and 0002f2c0: 6e 6f 74 20 6c 65 67 61 6c 20 69 6e 20 74 68 65 not legal in the 0002f2d0: 20 70 61 72 65 6e 74 20 6e 6f 64 65 20 74 68 65 parent node the 0002f2e0: 20 6e 6f 64 65 2e 0a 20 20 20 20 20 2a 20 20 20 node.. * 0002f2f0: 69 2e 65 2e 20 73 75 70 65 72 20 63 61 6c 6c 20 i.e. super call 0002f300: 69 73 20 6c 65 67 61 6c 20 69 6e 20 63 6f 6e 73 is legal in cons 0002f310: 74 72 75 63 74 6f 72 20 62 75 74 20 6e 6f 74 20 tructor but not 0002f320: 6c 65 67 61 6c 20 69 6e 20 74 68 65 20 63 6c 61 legal in the cla 0002f330: 73 73 20 62 6f 64 79 2e 0a 20 20 20 20 20 2a 20 ss body.. * 0002f340: 2d 20 74 68 65 20 63 6f 6e 74 61 69 6e 65 72 20 - the container 0002f350: 69 73 20 61 6e 20 61 72 72 6f 77 20 66 75 6e 63 is an arrow func 0002f360: 74 69 6f 6e 20 28 73 6f 20 63 61 6c 6c 65 72 20 tion (so caller 0002f370: 6d 69 67 68 74 20 6e 65 65 64 20 74 6f 20 63 61 might need to ca 0002f380: 6c 6c 20 67 65 74 53 75 70 65 72 43 6f 6e 74 61 ll getSuperConta 0002f390: 69 6e 65 72 20 61 67 61 69 6e 20 69 6e 20 63 61 iner again in ca 0002f3a0: 73 65 20 69 74 20 6e 65 65 64 73 20 74 6f 20 63 se it needs to c 0002f3b0: 6c 69 6d 62 20 68 69 67 68 65 72 29 0a 20 20 20 limb higher). 0002f3c0: 20 20 2a 20 2d 20 61 20 73 75 70 65 72 20 63 61 * - a super ca 0002f3d0: 6c 6c 2f 70 72 6f 70 65 72 74 79 20 69 73 20 64 ll/property is d 0002f3e0: 65 66 69 6e 69 74 65 6c 79 20 69 6c 6c 65 67 61 efinitely illega 0002f3f0: 6c 20 69 6e 20 74 68 65 20 63 6f 6e 74 61 69 6e l in the contain 0002f400: 65 72 20 28 62 75 74 20 6d 69 67 68 74 20 62 65 er (but might be 0002f410: 20 6c 65 67 61 6c 20 69 6e 20 73 6f 6d 65 20 73 legal in some s 0002f420: 75 62 6e 6f 64 65 29 0a 20 20 20 20 20 2a 20 20 ubnode). * 0002f430: 20 69 2e 65 2e 20 73 75 70 65 72 20 70 72 6f 70 i.e. super prop 0002f440: 65 72 74 79 20 61 63 63 65 73 73 20 69 73 20 69 erty access is i 0002f450: 6c 6c 65 67 61 6c 20 69 6e 20 66 75 6e 63 74 69 llegal in functi 0002f460: 6f 6e 20 64 65 63 6c 61 72 61 74 69 6f 6e 20 62 on declaration b 0002f470: 75 74 20 63 61 6e 20 62 65 20 6c 65 67 61 6c 20 ut can be legal 0002f480: 69 6e 20 74 68 65 20 73 74 61 74 65 6d 65 6e 74 in the statement 0002f490: 20 6c 69 73 74 0a 20 20 20 20 20 2a 2f 0a 20 20 list. */. 0002f4a0: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 53 75 function getSu 0002f4b0: 70 65 72 43 6f 6e 74 61 69 6e 65 72 28 6e 6f 64 perContainer(nod 0002f4c0: 65 2c 20 73 74 6f 70 4f 6e 46 75 6e 63 74 69 6f e, stopOnFunctio 0002f4d0: 6e 73 29 20 7b 0a 20 20 20 20 20 20 20 20 77 68 ns) {. wh 0002f4e0: 69 6c 65 20 28 74 72 75 65 29 20 7b 0a 20 20 20 ile (true) {. 0002f4f0: 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 node = 0002f500: 6e 6f 64 65 2e 70 61 72 65 6e 74 3b 0a 20 20 20 node.parent;. 0002f510: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 6e 6f if (!no 0002f520: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 de) {. 0002f530: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 return nod 0002f540: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d e;. } 0002f550: 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 77 69 . swi 0002f560: 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 tch (node.kind) 0002f570: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 0002f580: 20 20 63 61 73 65 20 31 36 32 20 2f 2a 20 53 79 case 162 /* Sy 0002f590: 6e 74 61 78 4b 69 6e 64 2e 43 6f 6d 70 75 74 65 ntaxKind.Compute 0002f5a0: 64 50 72 6f 70 65 72 74 79 4e 61 6d 65 20 2a 2f dPropertyName */ 0002f5b0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0002f5c0: 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 6e 6f 64 node = nod 0002f5d0: 65 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 e.parent;. 0002f5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br 0002f5f0: 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 eak;. 0002f600: 20 20 20 20 20 63 61 73 65 20 32 35 36 20 2f 2a case 256 /* 0002f610: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 75 6e 63 SyntaxKind.Func 0002f620: 74 69 6f 6e 44 65 63 6c 61 72 61 74 69 6f 6e 20 tionDeclaration 0002f630: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0002f640: 20 20 20 20 63 61 73 65 20 32 31 33 20 2f 2a 20 case 213 /* 0002f650: 53 79 6e 74 61 78 4b 69 6e 64 2e 46 75 6e 63 74 SyntaxKind.Funct 0002f660: 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f ionExpression */ 0002f670: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0002f680: 20 20 63 61 73 65 20 32 31 34 20 2f 2a 20 53 79 case 214 /* Sy 0002f690: 6e 74 61 78 4b 69 6e 64 2e 41 72 72 6f 77 46 75 ntaxKind.ArrowFu 0002f6a0: 6e 63 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 nction */:. 0002f6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i 0002f6c0: 66 20 28 21 73 74 6f 70 4f 6e 46 75 6e 63 74 69 f (!stopOnFuncti 0002f6d0: 6f 6e 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ons) {. 0002f6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0002f6f0: 6f 6e 74 69 6e 75 65 3b 0a 20 20 20 20 20 20 20 ontinue;. 0002f700: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 }. 0002f710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f / 0002f720: 2f 20 66 61 6c 6c 73 20 74 68 72 6f 75 67 68 0a / falls through. 0002f730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002f740: 63 61 73 65 20 31 36 37 20 2f 2a 20 53 79 6e 74 case 167 /* Synt 0002f750: 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 44 axKind.PropertyD 0002f760: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 0002f770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0002f780: 61 73 65 20 31 36 36 20 2f 2a 20 53 79 6e 74 61 ase 166 /* Synta 0002f790: 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 53 69 xKind.PropertySi 0002f7a0: 67 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 gnature */:. 0002f7b0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0002f7c0: 20 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 169 /* SyntaxKi 0002f7d0: 6e 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 72 61 nd.MethodDeclara 0002f7e0: 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 tion */:. 0002f7f0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 36 case 16 0002f800: 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 8 /* SyntaxKind. 0002f810: 4d 65 74 68 6f 64 53 69 67 6e 61 74 75 72 65 20 MethodSignature 0002f820: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0002f830: 20 20 20 20 63 61 73 65 20 31 37 31 20 2f 2a 20 case 171 /* 0002f840: 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 SyntaxKind.Const 0002f850: 72 75 63 74 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 ructor */:. 0002f860: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0002f870: 31 37 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 172 /* SyntaxKin 0002f880: 64 2e 47 65 74 41 63 63 65 73 73 6f 72 20 2a 2f d.GetAccessor */ 0002f890: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0002f8a0: 20 20 63 61 73 65 20 31 37 33 20 2f 2a 20 53 79 case 173 /* Sy 0002f8b0: 6e 74 61 78 4b 69 6e 64 2e 53 65 74 41 63 63 65 ntaxKind.SetAcce 0002f8c0: 73 73 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ssor */:. 0002f8d0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 37 case 17 0002f8e0: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 0002f8f0: 43 6c 61 73 73 53 74 61 74 69 63 42 6c 6f 63 6b ClassStaticBlock 0002f900: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a Declaration */:. 0002f910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002f920: 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 3b return node; 0002f930: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002f940: 20 63 61 73 65 20 31 36 35 20 2f 2a 20 53 79 6e case 165 /* Syn 0002f950: 74 61 78 4b 69 6e 64 2e 44 65 63 6f 72 61 74 6f taxKind.Decorato 0002f960: 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 r */:. 0002f970: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 44 65 63 // Dec 0002f980: 6f 72 61 74 6f 72 73 20 61 72 65 20 61 6c 77 61 orators are alwa 0002f990: 79 73 20 61 70 70 6c 69 65 64 20 6f 75 74 73 69 ys applied outsi 0002f9a0: 64 65 20 6f 66 20 74 68 65 20 62 6f 64 79 20 6f de of the body o 0002f9b0: 66 20 61 20 63 6c 61 73 73 20 6f 72 20 6d 65 74 f a class or met 0002f9c0: 68 6f 64 2e 0a 20 20 20 20 20 20 20 20 20 20 20 hod.. 0002f9d0: 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 if (nod 0002f9e0: 65 2e 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d e.parent.kind == 0002f9f0: 3d 20 31 36 34 20 2f 2a 20 53 79 6e 74 61 78 4b = 164 /* SyntaxK 0002fa00: 69 6e 64 2e 50 61 72 61 6d 65 74 65 72 20 2a 2f ind.Parameter */ 0002fa10: 20 26 26 20 74 73 2e 69 73 43 6c 61 73 73 45 6c && ts.isClassEl 0002fa20: 65 6d 65 6e 74 28 6e 6f 64 65 2e 70 61 72 65 6e ement(node.paren 0002fa30: 74 2e 70 61 72 65 6e 74 29 29 20 7b 0a 20 20 20 t.parent)) {. 0002fa40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002fa50: 20 20 20 20 20 2f 2f 20 49 66 20 74 68 65 20 64 // If the d 0002fa60: 65 63 6f 72 61 74 6f 72 27 73 20 70 61 72 65 6e ecorator's paren 0002fa70: 74 20 69 73 20 61 20 50 61 72 61 6d 65 74 65 72 t is a Parameter 0002fa80: 2c 20 77 65 20 72 65 73 6f 6c 76 65 20 74 68 65 , we resolve the 0002fa90: 20 74 68 69 73 20 63 6f 6e 74 61 69 6e 65 72 20 this container 0002faa0: 66 72 6f 6d 0a 20 20 20 20 20 20 20 20 20 20 20 from. 0002fab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 // 0002fac0: 74 68 65 20 67 72 61 6e 64 70 61 72 65 6e 74 20 the grandparent 0002fad0: 63 6c 61 73 73 20 64 65 63 6c 61 72 61 74 69 6f class declaratio 0002fae0: 6e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 n.. 0002faf0: 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 node 0002fb00: 3d 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 70 61 = node.parent.pa 0002fb10: 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 20 20 rent;. 0002fb20: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 0002fb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002fb40: 65 6c 73 65 20 69 66 20 28 74 73 2e 69 73 43 6c else if (ts.isCl 0002fb50: 61 73 73 45 6c 65 6d 65 6e 74 28 6e 6f 64 65 2e assElement(node. 0002fb60: 70 61 72 65 6e 74 29 29 20 7b 0a 20 20 20 20 20 parent)) {. 0002fb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002fb80: 20 20 20 2f 2f 20 49 66 20 74 68 65 20 64 65 63 // If the dec 0002fb90: 6f 72 61 74 6f 72 27 73 20 70 61 72 65 6e 74 20 orator's parent 0002fba0: 69 73 20 61 20 63 6c 61 73 73 20 65 6c 65 6d 65 is a class eleme 0002fbb0: 6e 74 2c 20 77 65 20 72 65 73 6f 6c 76 65 20 74 nt, we resolve t 0002fbc0: 68 65 20 27 74 68 69 73 27 20 63 6f 6e 74 61 69 he 'this' contai 0002fbd0: 6e 65 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 ner. 0002fbe0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 66 // f 0002fbf0: 72 6f 6d 20 74 68 65 20 70 61 72 65 6e 74 20 63 rom the parent c 0002fc00: 6c 61 73 73 20 64 65 63 6c 61 72 61 74 69 6f 6e lass declaration 0002fc10: 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .. 0002fc20: 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d node = 0002fc30: 20 6e 6f 64 65 2e 70 61 72 65 6e 74 3b 0a 20 20 node.parent;. 0002fc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0002fc50: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }. 0002fc60: 20 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 break;. 0002fc70: 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. 0002fc80: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 }. }. 0002fc90: 20 74 73 2e 67 65 74 53 75 70 65 72 43 6f 6e 74 ts.getSuperCont 0002fca0: 61 69 6e 65 72 20 3d 20 67 65 74 53 75 70 65 72 ainer = getSuper 0002fcb0: 43 6f 6e 74 61 69 6e 65 72 3b 0a 20 20 20 20 66 Container;. f 0002fcc0: 75 6e 63 74 69 6f 6e 20 67 65 74 49 6d 6d 65 64 unction getImmed 0002fcd0: 69 61 74 65 6c 79 49 6e 76 6f 6b 65 64 46 75 6e iatelyInvokedFun 0002fce0: 63 74 69 6f 6e 45 78 70 72 65 73 73 69 6f 6e 28 ctionExpression( 0002fcf0: 66 75 6e 63 29 20 7b 0a 20 20 20 20 20 20 20 20 func) {. 0002fd00: 69 66 20 28 66 75 6e 63 2e 6b 69 6e 64 20 3d 3d if (func.kind == 0002fd10: 3d 20 32 31 33 20 2f 2a 20 53 79 6e 74 61 78 4b = 213 /* SyntaxK 0002fd20: 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 45 78 70 72 ind.FunctionExpr 0002fd30: 65 73 73 69 6f 6e 20 2a 2f 20 7c 7c 20 66 75 6e ession */ || fun 0002fd40: 63 2e 6b 69 6e 64 20 3d 3d 3d 20 32 31 34 20 2f c.kind === 214 / 0002fd50: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 72 72 * SyntaxKind.Arr 0002fd60: 6f 77 46 75 6e 63 74 69 6f 6e 20 2a 2f 29 20 7b owFunction */) { 0002fd70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var 0002fd80: 20 70 72 65 76 20 3d 20 66 75 6e 63 3b 0a 20 20 prev = func;. 0002fd90: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 70 61 var pa 0002fda0: 72 65 6e 74 20 3d 20 66 75 6e 63 2e 70 61 72 65 rent = func.pare 0002fdb0: 6e 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 nt;. 0002fdc0: 77 68 69 6c 65 20 28 70 61 72 65 6e 74 2e 6b 69 while (parent.ki 0002fdd0: 6e 64 20 3d 3d 3d 20 32 31 32 20 2f 2a 20 53 79 nd === 212 /* Sy 0002fde0: 6e 74 61 78 4b 69 6e 64 2e 50 61 72 65 6e 74 68 ntaxKind.Parenth 0002fdf0: 65 73 69 7a 65 64 45 78 70 72 65 73 73 69 6f 6e esizedExpression 0002fe00: 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 20 20 */) {. 0002fe10: 20 20 20 20 20 20 20 70 72 65 76 20 3d 20 70 61 prev = pa 0002fe20: 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 20 20 rent;. 0002fe30: 20 20 20 20 20 20 70 61 72 65 6e 74 20 3d 20 70 parent = p 0002fe40: 61 72 65 6e 74 2e 70 61 72 65 6e 74 3b 0a 20 20 arent.parent;. 0002fe50: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 0002fe60: 20 20 20 20 20 20 20 20 69 66 20 28 70 61 72 65 if (pare 0002fe70: 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 32 30 38 20 nt.kind === 208 0002fe80: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 61 /* SyntaxKind.Ca 0002fe90: 6c 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 20 llExpression */ 0002fea0: 26 26 20 70 61 72 65 6e 74 2e 65 78 70 72 65 73 && parent.expres 0002feb0: 73 69 6f 6e 20 3d 3d 3d 20 70 72 65 76 29 20 7b sion === prev) { 0002fec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0002fed0: 20 72 65 74 75 72 6e 20 70 61 72 65 6e 74 3b 0a return parent;. 0002fee0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. 0002fef0: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 }. }. 0002ff00: 20 20 74 73 2e 67 65 74 49 6d 6d 65 64 69 61 74 ts.getImmediat 0002ff10: 65 6c 79 49 6e 76 6f 6b 65 64 46 75 6e 63 74 69 elyInvokedFuncti 0002ff20: 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 67 onExpression = g 0002ff30: 65 74 49 6d 6d 65 64 69 61 74 65 6c 79 49 6e 76 etImmediatelyInv 0002ff40: 6f 6b 65 64 46 75 6e 63 74 69 6f 6e 45 78 70 72 okedFunctionExpr 0002ff50: 65 73 73 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 ession;. func 0002ff60: 74 69 6f 6e 20 69 73 53 75 70 65 72 4f 72 53 75 tion isSuperOrSu 0002ff70: 70 65 72 50 72 6f 70 65 72 74 79 28 6e 6f 64 65 perProperty(node 0002ff80: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0002ff90: 72 6e 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d rn node.kind === 0002ffa0: 20 31 30 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 106 /* SyntaxKi 0002ffb0: 6e 64 2e 53 75 70 65 72 4b 65 79 77 6f 72 64 20 nd.SuperKeyword 0002ffc0: 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 20 7c */. | 0002ffd0: 7c 20 69 73 53 75 70 65 72 50 72 6f 70 65 72 74 | isSuperPropert 0002ffe0: 79 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d 0a 20 y(node);. }. 0002fff0: 20 20 20 74 73 2e 69 73 53 75 70 65 72 4f 72 53 ts.isSuperOrS 00030000: 75 70 65 72 50 72 6f 70 65 72 74 79 20 3d 20 69 uperProperty = i 00030010: 73 53 75 70 65 72 4f 72 53 75 70 65 72 50 72 6f sSuperOrSuperPro 00030020: 70 65 72 74 79 3b 0a 20 20 20 20 2f 2a 2a 0a 20 perty;. /**. 00030030: 20 20 20 20 2a 20 44 65 74 65 72 6d 69 6e 65 73 * Determines 00030040: 20 77 68 65 74 68 65 72 20 61 20 6e 6f 64 65 20 whether a node 00030050: 69 73 20 61 20 70 72 6f 70 65 72 74 79 20 6f 72 is a property or 00030060: 20 65 6c 65 6d 65 6e 74 20 61 63 63 65 73 73 20 element access 00030070: 65 78 70 72 65 73 73 69 6f 6e 20 66 6f 72 20 60 expression for ` 00030080: 73 75 70 65 72 60 2e 0a 20 20 20 20 20 2a 2f 0a super`.. */. 00030090: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 function isS 000300a0: 75 70 65 72 50 72 6f 70 65 72 74 79 28 6e 6f 64 uperProperty(nod 000300b0: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 e) {. var 000300c0: 20 6b 69 6e 64 20 3d 20 6e 6f 64 65 2e 6b 69 6e kind = node.kin 000300d0: 64 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 d;. retur 000300e0: 6e 20 28 6b 69 6e 64 20 3d 3d 3d 20 32 30 36 20 n (kind === 206 000300f0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 72 /* SyntaxKind.Pr 00030100: 6f 70 65 72 74 79 41 63 63 65 73 73 45 78 70 72 opertyAccessExpr 00030110: 65 73 73 69 6f 6e 20 2a 2f 20 7c 7c 20 6b 69 6e ession */ || kin 00030120: 64 20 3d 3d 3d 20 32 30 37 20 2f 2a 20 53 79 6e d === 207 /* Syn 00030130: 74 61 78 4b 69 6e 64 2e 45 6c 65 6d 65 6e 74 41 taxKind.ElementA 00030140: 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 20 ccessExpression 00030150: 2a 2f 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 */). 00030160: 26 26 20 6e 6f 64 65 2e 65 78 70 72 65 73 73 69 && node.expressi 00030170: 6f 6e 2e 6b 69 6e 64 20 3d 3d 3d 20 31 30 36 20 on.kind === 106 00030180: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 75 /* SyntaxKind.Su 00030190: 70 65 72 4b 65 79 77 6f 72 64 20 2a 2f 3b 0a 20 perKeyword */;. 000301a0: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 53 75 }. ts.isSu 000301b0: 70 65 72 50 72 6f 70 65 72 74 79 20 3d 20 69 73 perProperty = is 000301c0: 53 75 70 65 72 50 72 6f 70 65 72 74 79 3b 0a 20 SuperProperty;. 000301d0: 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 44 65 /**. * De 000301e0: 74 65 72 6d 69 6e 65 73 20 77 68 65 74 68 65 72 termines whether 000301f0: 20 61 20 6e 6f 64 65 20 69 73 20 61 20 70 72 6f a node is a pro 00030200: 70 65 72 74 79 20 6f 72 20 65 6c 65 6d 65 6e 74 perty or element 00030210: 20 61 63 63 65 73 73 20 65 78 70 72 65 73 73 69 access expressi 00030220: 6f 6e 20 66 6f 72 20 60 74 68 69 73 60 2e 0a 20 on for `this`.. 00030230: 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 */. funct 00030240: 69 6f 6e 20 69 73 54 68 69 73 50 72 6f 70 65 72 ion isThisProper 00030250: 74 79 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 ty(node) {. 00030260: 20 20 20 76 61 72 20 6b 69 6e 64 20 3d 20 6e 6f var kind = no 00030270: 64 65 2e 6b 69 6e 64 3b 0a 20 20 20 20 20 20 20 de.kind;. 00030280: 20 72 65 74 75 72 6e 20 28 6b 69 6e 64 20 3d 3d return (kind == 00030290: 3d 20 32 30 36 20 2f 2a 20 53 79 6e 74 61 78 4b = 206 /* SyntaxK 000302a0: 69 6e 64 2e 50 72 6f 70 65 72 74 79 41 63 63 65 ind.PropertyAcce 000302b0: 73 73 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 20 ssExpression */ 000302c0: 7c 7c 20 6b 69 6e 64 20 3d 3d 3d 20 32 30 37 20 || kind === 207 000302d0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 6c /* SyntaxKind.El 000302e0: 65 6d 65 6e 74 41 63 63 65 73 73 45 78 70 72 65 ementAccessExpre 000302f0: 73 73 69 6f 6e 20 2a 2f 29 0a 20 20 20 20 20 20 ssion */). 00030300: 20 20 20 20 20 20 26 26 20 6e 6f 64 65 2e 65 78 && node.ex 00030310: 70 72 65 73 73 69 6f 6e 2e 6b 69 6e 64 20 3d 3d pression.kind == 00030320: 3d 20 31 30 38 20 2f 2a 20 53 79 6e 74 61 78 4b = 108 /* SyntaxK 00030330: 69 6e 64 2e 54 68 69 73 4b 65 79 77 6f 72 64 20 ind.ThisKeyword 00030340: 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 */;. }. ts 00030350: 2e 69 73 54 68 69 73 50 72 6f 70 65 72 74 79 20 .isThisProperty 00030360: 3d 20 69 73 54 68 69 73 50 72 6f 70 65 72 74 79 = isThisProperty 00030370: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 00030380: 73 54 68 69 73 49 6e 69 74 69 61 6c 69 7a 65 64 sThisInitialized 00030390: 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 Declaration(node 000303a0: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 000303b0: 5f 61 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 _a;. retu 000303c0: 72 6e 20 21 21 6e 6f 64 65 20 26 26 20 74 73 2e rn !!node && ts. 000303d0: 69 73 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 isVariableDeclar 000303e0: 61 74 69 6f 6e 28 6e 6f 64 65 29 20 26 26 20 28 ation(node) && ( 000303f0: 28 5f 61 20 3d 20 6e 6f 64 65 2e 69 6e 69 74 69 (_a = node.initi 00030400: 61 6c 69 7a 65 72 29 20 3d 3d 3d 20 6e 75 6c 6c alizer) === null 00030410: 20 7c 7c 20 5f 61 20 3d 3d 3d 20 76 6f 69 64 20 || _a === void 00030420: 30 20 3f 20 76 6f 69 64 20 30 20 3a 20 5f 61 2e 0 ? void 0 : _a. 00030430: 6b 69 6e 64 29 20 3d 3d 3d 20 31 30 38 20 2f 2a kind) === 108 /* 00030440: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 68 69 73 SyntaxKind.This 00030450: 4b 65 79 77 6f 72 64 20 2a 2f 3b 0a 20 20 20 20 Keyword */;. 00030460: 7d 0a 20 20 20 20 74 73 2e 69 73 54 68 69 73 49 }. ts.isThisI 00030470: 6e 69 74 69 61 6c 69 7a 65 64 44 65 63 6c 61 72 nitializedDeclar 00030480: 61 74 69 6f 6e 20 3d 20 69 73 54 68 69 73 49 6e ation = isThisIn 00030490: 69 74 69 61 6c 69 7a 65 64 44 65 63 6c 61 72 61 itializedDeclara 000304a0: 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 tion;. functi 000304b0: 6f 6e 20 69 73 54 68 69 73 49 6e 69 74 69 61 6c on isThisInitial 000304c0: 69 7a 65 64 4f 62 6a 65 63 74 42 69 6e 64 69 6e izedObjectBindin 000304d0: 67 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 gExpression(node 000304e0: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 000304f0: 72 6e 20 21 21 6e 6f 64 65 0a 20 20 20 20 20 20 rn !!node. 00030500: 20 20 20 20 20 20 26 26 20 28 74 73 2e 69 73 53 && (ts.isS 00030510: 68 6f 72 74 68 61 6e 64 50 72 6f 70 65 72 74 79 horthandProperty 00030520: 41 73 73 69 67 6e 6d 65 6e 74 28 6e 6f 64 65 29 Assignment(node) 00030530: 20 7c 7c 20 74 73 2e 69 73 50 72 6f 70 65 72 74 || ts.isPropert 00030540: 79 41 73 73 69 67 6e 6d 65 6e 74 28 6e 6f 64 65 yAssignment(node 00030550: 29 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 26 )). & 00030560: 26 20 74 73 2e 69 73 42 69 6e 61 72 79 45 78 70 & ts.isBinaryExp 00030570: 72 65 73 73 69 6f 6e 28 6e 6f 64 65 2e 70 61 72 ression(node.par 00030580: 65 6e 74 2e 70 61 72 65 6e 74 29 0a 20 20 20 20 ent.parent). 00030590: 20 20 20 20 20 20 20 20 26 26 20 6e 6f 64 65 2e && node. 000305a0: 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 2e 6f 70 parent.parent.op 000305b0: 65 72 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 6e 64 eratorToken.kind 000305c0: 20 3d 3d 3d 20 36 33 20 2f 2a 20 53 79 6e 74 61 === 63 /* Synta 000305d0: 78 4b 69 6e 64 2e 45 71 75 61 6c 73 54 6f 6b 65 xKind.EqualsToke 000305e0: 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 20 n */. 000305f0: 20 26 26 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e && node.parent. 00030600: 70 61 72 65 6e 74 2e 72 69 67 68 74 2e 6b 69 6e parent.right.kin 00030610: 64 20 3d 3d 3d 20 31 30 38 20 2f 2a 20 53 79 6e d === 108 /* Syn 00030620: 74 61 78 4b 69 6e 64 2e 54 68 69 73 4b 65 79 77 taxKind.ThisKeyw 00030630: 6f 72 64 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ord */;. }. 00030640: 20 20 74 73 2e 69 73 54 68 69 73 49 6e 69 74 69 ts.isThisIniti 00030650: 61 6c 69 7a 65 64 4f 62 6a 65 63 74 42 69 6e 64 alizedObjectBind 00030660: 69 6e 67 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 ingExpression = 00030670: 69 73 54 68 69 73 49 6e 69 74 69 61 6c 69 7a 65 isThisInitialize 00030680: 64 4f 62 6a 65 63 74 42 69 6e 64 69 6e 67 45 78 dObjectBindingEx 00030690: 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 20 66 75 pression;. fu 000306a0: 6e 63 74 69 6f 6e 20 67 65 74 45 6e 74 69 74 79 nction getEntity 000306b0: 4e 61 6d 65 46 72 6f 6d 54 79 70 65 4e 6f 64 65 NameFromTypeNode 000306c0: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 000306d0: 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 switch (node.ki 000306e0: 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 nd) {. 000306f0: 20 20 63 61 73 65 20 31 37 38 20 2f 2a 20 53 79 case 178 /* Sy 00030700: 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 52 65 66 ntaxKind.TypeRef 00030710: 65 72 65 6e 63 65 20 2a 2f 3a 0a 20 20 20 20 20 erence */:. 00030720: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00030730: 6e 20 6e 6f 64 65 2e 74 79 70 65 4e 61 6d 65 3b n node.typeName; 00030740: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00030750: 65 20 32 32 38 20 2f 2a 20 53 79 6e 74 61 78 4b e 228 /* SyntaxK 00030760: 69 6e 64 2e 45 78 70 72 65 73 73 69 6f 6e 57 69 ind.ExpressionWi 00030770: 74 68 54 79 70 65 41 72 67 75 6d 65 6e 74 73 20 thTypeArguments 00030780: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00030790: 20 20 20 20 72 65 74 75 72 6e 20 69 73 45 6e 74 return isEnt 000307a0: 69 74 79 4e 61 6d 65 45 78 70 72 65 73 73 69 6f ityNameExpressio 000307b0: 6e 28 6e 6f 64 65 2e 65 78 70 72 65 73 73 69 6f n(node.expressio 000307c0: 6e 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 n). 000307d0: 20 20 20 20 20 20 20 3f 20 6e 6f 64 65 2e 65 78 ? node.ex 000307e0: 70 72 65 73 73 69 6f 6e 0a 20 20 20 20 20 20 20 pression. 000307f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 75 : u 00030800: 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 ndefined;. 00030810: 20 20 20 20 20 20 2f 2f 20 54 4f 44 4f 28 72 62 // TODO(rb 00030820: 75 63 6b 74 6f 6e 29 3a 20 54 68 65 73 65 20 61 uckton): These a 00030830: 72 65 6e 27 74 20 76 61 6c 69 64 20 54 79 70 65 ren't valid Type 00030840: 4e 6f 64 65 73 2c 20 62 75 74 20 77 65 20 74 72 Nodes, but we tr 00030850: 65 61 74 20 74 68 65 6d 20 61 73 20 73 75 63 68 eat them as such 00030860: 20 62 65 63 61 75 73 65 20 6f 66 20 60 69 73 50 because of `isP 00030870: 61 72 74 4f 66 54 79 70 65 4e 6f 64 65 60 2c 20 artOfTypeNode`, 00030880: 77 68 69 63 68 20 72 65 74 75 72 6e 73 20 60 74 which returns `t 00030890: 72 75 65 60 20 66 6f 72 20 74 68 69 6e 67 73 20 rue` for things 000308a0: 74 68 61 74 20 61 72 65 6e 27 74 20 60 54 79 70 that aren't `Typ 000308b0: 65 4e 6f 64 65 60 73 2e 0a 20 20 20 20 20 20 20 eNode`s.. 000308c0: 20 20 20 20 20 63 61 73 65 20 37 39 20 2f 2a 20 case 79 /* 000308d0: 53 79 6e 74 61 78 4b 69 6e 64 2e 49 64 65 6e 74 SyntaxKind.Ident 000308e0: 69 66 69 65 72 20 2a 2f 3a 0a 20 20 20 20 20 20 ifier */:. 000308f0: 20 20 20 20 20 20 63 61 73 65 20 31 36 31 20 2f case 161 / 00030900: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 51 75 61 * SyntaxKind.Qua 00030910: 6c 69 66 69 65 64 4e 61 6d 65 20 2a 2f 3a 0a 20 lifiedName */:. 00030920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 00030930: 65 74 75 72 6e 20 6e 6f 64 65 3b 0a 20 20 20 20 eturn node;. 00030940: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 }. re 00030950: 74 75 72 6e 20 75 6e 64 65 66 69 6e 65 64 3b 0a turn undefined;. 00030960: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 }. ts.get 00030970: 45 6e 74 69 74 79 4e 61 6d 65 46 72 6f 6d 54 79 EntityNameFromTy 00030980: 70 65 4e 6f 64 65 20 3d 20 67 65 74 45 6e 74 69 peNode = getEnti 00030990: 74 79 4e 61 6d 65 46 72 6f 6d 54 79 70 65 4e 6f tyNameFromTypeNo 000309a0: 64 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e de;. function 000309b0: 20 67 65 74 49 6e 76 6f 6b 65 64 45 78 70 72 65 getInvokedExpre 000309c0: 73 73 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 ssion(node) {. 000309d0: 20 20 20 20 20 20 73 77 69 74 63 68 20 28 6e 6f switch (no 000309e0: 64 65 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 de.kind) {. 000309f0: 20 20 20 20 20 20 20 63 61 73 65 20 32 31 30 20 case 210 00030a00: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 61 /* SyntaxKind.Ta 00030a10: 67 67 65 64 54 65 6d 70 6c 61 74 65 45 78 70 72 ggedTemplateExpr 00030a20: 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ession */:. 00030a30: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00030a40: 6e 20 6e 6f 64 65 2e 74 61 67 3b 0a 20 20 20 20 n node.tag;. 00030a50: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 38 30 case 280 00030a60: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a /* SyntaxKind.J 00030a70: 73 78 4f 70 65 6e 69 6e 67 45 6c 65 6d 65 6e 74 sxOpeningElement 00030a80: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00030a90: 20 63 61 73 65 20 32 37 39 20 2f 2a 20 53 79 6e case 279 /* Syn 00030aa0: 74 61 78 4b 69 6e 64 2e 4a 73 78 53 65 6c 66 43 taxKind.JsxSelfC 00030ab0: 6c 6f 73 69 6e 67 45 6c 65 6d 65 6e 74 20 2a 2f losingElement */ 00030ac0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 00030ad0: 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 74 61 return node.ta 00030ae0: 67 4e 61 6d 65 3b 0a 20 20 20 20 20 20 20 20 20 gName;. 00030af0: 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 default:. 00030b00: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00030b10: 72 6e 20 6e 6f 64 65 2e 65 78 70 72 65 73 73 69 rn node.expressi 00030b20: 6f 6e 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 on;. }. 00030b30: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 49 6e }. ts.getIn 00030b40: 76 6f 6b 65 64 45 78 70 72 65 73 73 69 6f 6e 20 vokedExpression 00030b50: 3d 20 67 65 74 49 6e 76 6f 6b 65 64 45 78 70 72 = getInvokedExpr 00030b60: 65 73 73 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 ession;. func 00030b70: 74 69 6f 6e 20 6e 6f 64 65 43 61 6e 42 65 44 65 tion nodeCanBeDe 00030b80: 63 6f 72 61 74 65 64 28 6e 6f 64 65 2c 20 70 61 corated(node, pa 00030b90: 72 65 6e 74 2c 20 67 72 61 6e 64 70 61 72 65 6e rent, grandparen 00030ba0: 74 29 20 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 t) {. // 00030bb0: 70 72 69 76 61 74 65 20 6e 61 6d 65 73 20 63 61 private names ca 00030bc0: 6e 6e 6f 74 20 62 65 20 75 73 65 64 20 77 69 74 nnot be used wit 00030bd0: 68 20 64 65 63 6f 72 61 74 6f 72 73 20 79 65 74 h decorators yet 00030be0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 73 2e . if (ts. 00030bf0: 69 73 4e 61 6d 65 64 44 65 63 6c 61 72 61 74 69 isNamedDeclarati 00030c00: 6f 6e 28 6e 6f 64 65 29 20 26 26 20 74 73 2e 69 on(node) && ts.i 00030c10: 73 50 72 69 76 61 74 65 49 64 65 6e 74 69 66 69 sPrivateIdentifi 00030c20: 65 72 28 6e 6f 64 65 2e 6e 61 6d 65 29 29 20 7b er(node.name)) { 00030c30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret 00030c40: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 urn false;. 00030c50: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 73 77 69 }. swi 00030c60: 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 tch (node.kind) 00030c70: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 {. ca 00030c80: 73 65 20 32 35 37 20 2f 2a 20 53 79 6e 74 61 78 se 257 /* Syntax 00030c90: 4b 69 6e 64 2e 43 6c 61 73 73 44 65 63 6c 61 72 Kind.ClassDeclar 00030ca0: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 00030cb0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 63 6c 61 // cla 00030cc0: 73 73 65 73 20 61 72 65 20 76 61 6c 69 64 20 74 sses are valid t 00030cd0: 61 72 67 65 74 73 0a 20 20 20 20 20 20 20 20 20 argets. 00030ce0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 return tr 00030cf0: 75 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ue;. 00030d00: 63 61 73 65 20 31 36 37 20 2f 2a 20 53 79 6e 74 case 167 /* Synt 00030d10: 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 44 axKind.PropertyD 00030d20: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 eclaration */:. 00030d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f / 00030d40: 2f 20 70 72 6f 70 65 72 74 79 20 64 65 63 6c 61 / property decla 00030d50: 72 61 74 69 6f 6e 73 20 61 72 65 20 76 61 6c 69 rations are vali 00030d60: 64 20 69 66 20 74 68 65 69 72 20 70 61 72 65 6e d if their paren 00030d70: 74 20 69 73 20 61 20 63 6c 61 73 73 20 64 65 63 t is a class dec 00030d80: 6c 61 72 61 74 69 6f 6e 2e 0a 20 20 20 20 20 20 laration.. 00030d90: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00030da0: 20 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d parent.kind === 00030db0: 20 32 35 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 257 /* SyntaxKi 00030dc0: 6e 64 2e 43 6c 61 73 73 44 65 63 6c 61 72 61 74 nd.ClassDeclarat 00030dd0: 69 6f 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 ion */;. 00030de0: 20 20 20 20 63 61 73 65 20 31 37 32 20 2f 2a 20 case 172 /* 00030df0: 53 79 6e 74 61 78 4b 69 6e 64 2e 47 65 74 41 63 SyntaxKind.GetAc 00030e00: 63 65 73 73 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 cessor */:. 00030e10: 20 20 20 20 20 20 20 63 61 73 65 20 31 37 33 20 case 173 00030e20: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 65 /* SyntaxKind.Se 00030e30: 74 41 63 63 65 73 73 6f 72 20 2a 2f 3a 0a 20 20 tAccessor */:. 00030e40: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 00030e50: 36 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 69 /* SyntaxKind 00030e60: 2e 4d 65 74 68 6f 64 44 65 63 6c 61 72 61 74 69 .MethodDeclarati 00030e70: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 00030e80: 20 20 20 20 20 20 20 2f 2f 20 69 66 20 74 68 69 // if thi 00030e90: 73 20 6d 65 74 68 6f 64 20 68 61 73 20 61 20 62 s method has a b 00030ea0: 6f 64 79 20 61 6e 64 20 69 74 73 20 70 61 72 65 ody and its pare 00030eb0: 6e 74 20 69 73 20 61 20 63 6c 61 73 73 20 64 65 nt is a class de 00030ec0: 63 6c 61 72 61 74 69 6f 6e 2c 20 74 68 69 73 20 claration, this 00030ed0: 69 73 20 61 20 76 61 6c 69 64 20 74 61 72 67 65 is a valid targe 00030ee0: 74 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t.. 00030ef0: 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 62 return node.b 00030f00: 6f 64 79 20 21 3d 3d 20 75 6e 64 65 66 69 6e 65 ody !== undefine 00030f10: 64 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 d. 00030f20: 20 20 20 20 20 20 26 26 20 70 61 72 65 6e 74 2e && parent. 00030f30: 6b 69 6e 64 20 3d 3d 3d 20 32 35 37 20 2f 2a 20 kind === 257 /* 00030f40: 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 SyntaxKind.Class 00030f50: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3b 0a Declaration */;. 00030f60: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00030f70: 20 31 36 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 164 /* SyntaxKi 00030f80: 6e 64 2e 50 61 72 61 6d 65 74 65 72 20 2a 2f 3a nd.Parameter */: 00030f90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00030fa0: 20 2f 2f 20 69 66 20 74 68 65 20 70 61 72 61 6d // if the param 00030fb0: 65 74 65 72 27 73 20 70 61 72 65 6e 74 20 68 61 eter's parent ha 00030fc0: 73 20 61 20 62 6f 64 79 20 61 6e 64 20 69 74 73 s a body and its 00030fd0: 20 67 72 61 6e 64 70 61 72 65 6e 74 20 69 73 20 grandparent is 00030fe0: 61 20 63 6c 61 73 73 20 64 65 63 6c 61 72 61 74 a class declarat 00030ff0: 69 6f 6e 2c 20 74 68 69 73 20 69 73 20 61 20 76 ion, this is a v 00031000: 61 6c 69 64 20 74 61 72 67 65 74 3b 0a 20 20 20 alid target;. 00031010: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00031020: 75 72 6e 20 70 61 72 65 6e 74 2e 62 6f 64 79 20 urn parent.body 00031030: 21 3d 3d 20 75 6e 64 65 66 69 6e 65 64 0a 20 20 !== undefined. 00031040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00031050: 20 20 26 26 20 28 70 61 72 65 6e 74 2e 6b 69 6e && (parent.kin 00031060: 64 20 3d 3d 3d 20 31 37 31 20 2f 2a 20 53 79 6e d === 171 /* Syn 00031070: 74 61 78 4b 69 6e 64 2e 43 6f 6e 73 74 72 75 63 taxKind.Construc 00031080: 74 6f 72 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 tor */. 00031090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c | 000310a0: 7c 20 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d | parent.kind == 000310b0: 3d 20 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 4b = 169 /* SyntaxK 000310c0: 69 6e 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 72 ind.MethodDeclar 000310d0: 61 74 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 20 20 ation */. 000310e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000310f0: 20 7c 7c 20 70 61 72 65 6e 74 2e 6b 69 6e 64 20 || parent.kind 00031100: 3d 3d 3d 20 31 37 33 20 2f 2a 20 53 79 6e 74 61 === 173 /* Synta 00031110: 78 4b 69 6e 64 2e 53 65 74 41 63 63 65 73 73 6f xKind.SetAccesso 00031120: 72 20 2a 2f 29 0a 20 20 20 20 20 20 20 20 20 20 r */). 00031130: 20 20 20 20 20 20 20 20 20 20 26 26 20 67 72 61 && gra 00031140: 6e 64 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d ndparent.kind == 00031150: 3d 20 32 35 37 20 2f 2a 20 53 79 6e 74 61 78 4b = 257 /* SyntaxK 00031160: 69 6e 64 2e 43 6c 61 73 73 44 65 63 6c 61 72 61 ind.ClassDeclara 00031170: 74 69 6f 6e 20 2a 2f 3b 0a 20 20 20 20 20 20 20 tion */;. 00031180: 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 }. retur 00031190: 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 n false;. }. 000311a0: 20 20 20 74 73 2e 6e 6f 64 65 43 61 6e 42 65 44 ts.nodeCanBeD 000311b0: 65 63 6f 72 61 74 65 64 20 3d 20 6e 6f 64 65 43 ecorated = nodeC 000311c0: 61 6e 42 65 44 65 63 6f 72 61 74 65 64 3b 0a 20 anBeDecorated;. 000311d0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 6e 6f 64 65 function node 000311e0: 49 73 44 65 63 6f 72 61 74 65 64 28 6e 6f 64 65 IsDecorated(node 000311f0: 2c 20 70 61 72 65 6e 74 2c 20 67 72 61 6e 64 70 , parent, grandp 00031200: 61 72 65 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 arent) {. 00031210: 20 72 65 74 75 72 6e 20 68 61 73 44 65 63 6f 72 return hasDecor 00031220: 61 74 6f 72 73 28 6e 6f 64 65 29 0a 20 20 20 20 ators(node). 00031230: 20 20 20 20 20 20 20 20 26 26 20 6e 6f 64 65 43 && nodeC 00031240: 61 6e 42 65 44 65 63 6f 72 61 74 65 64 28 6e 6f anBeDecorated(no 00031250: 64 65 2c 20 70 61 72 65 6e 74 2c 20 67 72 61 6e de, parent, gran 00031260: 64 70 61 72 65 6e 74 29 3b 20 2f 2f 20 54 4f 44 dparent); // TOD 00031270: 4f 3a 20 47 48 23 31 38 32 31 37 0a 20 20 20 20 O: GH#18217. 00031280: 7d 0a 20 20 20 20 74 73 2e 6e 6f 64 65 49 73 44 }. ts.nodeIsD 00031290: 65 63 6f 72 61 74 65 64 20 3d 20 6e 6f 64 65 49 ecorated = nodeI 000312a0: 73 44 65 63 6f 72 61 74 65 64 3b 0a 20 20 20 20 sDecorated;. 000312b0: 66 75 6e 63 74 69 6f 6e 20 6e 6f 64 65 4f 72 43 function nodeOrC 000312c0: 68 69 6c 64 49 73 44 65 63 6f 72 61 74 65 64 28 hildIsDecorated( 000312d0: 6e 6f 64 65 2c 20 70 61 72 65 6e 74 2c 20 67 72 node, parent, gr 000312e0: 61 6e 64 70 61 72 65 6e 74 29 20 7b 0a 20 20 20 andparent) {. 000312f0: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 return node 00031300: 49 73 44 65 63 6f 72 61 74 65 64 28 6e 6f 64 65 IsDecorated(node 00031310: 2c 20 70 61 72 65 6e 74 2c 20 67 72 61 6e 64 70 , parent, grandp 00031320: 61 72 65 6e 74 29 20 7c 7c 20 63 68 69 6c 64 49 arent) || childI 00031330: 73 44 65 63 6f 72 61 74 65 64 28 6e 6f 64 65 2c sDecorated(node, 00031340: 20 70 61 72 65 6e 74 29 3b 20 2f 2f 20 54 4f 44 parent); // TOD 00031350: 4f 3a 20 47 48 23 31 38 32 31 37 0a 20 20 20 20 O: GH#18217. 00031360: 7d 0a 20 20 20 20 74 73 2e 6e 6f 64 65 4f 72 43 }. ts.nodeOrC 00031370: 68 69 6c 64 49 73 44 65 63 6f 72 61 74 65 64 20 hildIsDecorated 00031380: 3d 20 6e 6f 64 65 4f 72 43 68 69 6c 64 49 73 44 = nodeOrChildIsD 00031390: 65 63 6f 72 61 74 65 64 3b 0a 20 20 20 20 66 75 ecorated;. fu 000313a0: 6e 63 74 69 6f 6e 20 63 68 69 6c 64 49 73 44 65 nction childIsDe 000313b0: 63 6f 72 61 74 65 64 28 6e 6f 64 65 2c 20 70 61 corated(node, pa 000313c0: 72 65 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 rent) {. 000313d0: 73 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e switch (node.kin 000313e0: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 d) {. 000313f0: 20 63 61 73 65 20 32 35 37 20 2f 2a 20 53 79 6e case 257 /* Syn 00031400: 74 61 78 4b 69 6e 64 2e 43 6c 61 73 73 44 65 63 taxKind.ClassDec 00031410: 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 laration */:. 00031420: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00031430: 75 72 6e 20 74 73 2e 73 6f 6d 65 28 6e 6f 64 65 urn ts.some(node 00031440: 2e 6d 65 6d 62 65 72 73 2c 20 66 75 6e 63 74 69 .members, functi 00031450: 6f 6e 20 28 6d 29 20 7b 20 72 65 74 75 72 6e 20 on (m) { return 00031460: 6e 6f 64 65 4f 72 43 68 69 6c 64 49 73 44 65 63 nodeOrChildIsDec 00031470: 6f 72 61 74 65 64 28 6d 2c 20 6e 6f 64 65 2c 20 orated(m, node, 00031480: 70 61 72 65 6e 74 29 3b 20 7d 29 3b 20 2f 2f 20 parent); }); // 00031490: 54 4f 44 4f 3a 20 47 48 23 31 38 32 31 37 0a 20 TODO: GH#18217. 000314a0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 000314b0: 31 36 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 169 /* SyntaxKin 000314c0: 64 2e 4d 65 74 68 6f 64 44 65 63 6c 61 72 61 74 d.MethodDeclarat 000314d0: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 000314e0: 20 20 20 20 63 61 73 65 20 31 37 33 20 2f 2a 20 case 173 /* 000314f0: 53 79 6e 74 61 78 4b 69 6e 64 2e 53 65 74 41 63 SyntaxKind.SetAc 00031500: 63 65 73 73 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 cessor */:. 00031510: 20 20 20 20 20 20 20 63 61 73 65 20 31 37 31 20 case 171 00031520: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f /* SyntaxKind.Co 00031530: 6e 73 74 72 75 63 74 6f 72 20 2a 2f 3a 0a 20 20 nstructor */:. 00031540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00031550: 74 75 72 6e 20 74 73 2e 73 6f 6d 65 28 6e 6f 64 turn ts.some(nod 00031560: 65 2e 70 61 72 61 6d 65 74 65 72 73 2c 20 66 75 e.parameters, fu 00031570: 6e 63 74 69 6f 6e 20 28 70 29 20 7b 20 72 65 74 nction (p) { ret 00031580: 75 72 6e 20 6e 6f 64 65 49 73 44 65 63 6f 72 61 urn nodeIsDecora 00031590: 74 65 64 28 70 2c 20 6e 6f 64 65 2c 20 70 61 72 ted(p, node, par 000315a0: 65 6e 74 29 3b 20 7d 29 3b 20 2f 2f 20 54 4f 44 ent); }); // TOD 000315b0: 4f 3a 20 47 48 23 31 38 32 31 37 0a 20 20 20 20 O: GH#18217. 000315c0: 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 3a default: 000315d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 000315e0: 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a 20 return false;. 000315f0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 }. }. 00031600: 20 20 20 74 73 2e 63 68 69 6c 64 49 73 44 65 63 ts.childIsDec 00031610: 6f 72 61 74 65 64 20 3d 20 63 68 69 6c 64 49 73 orated = childIs 00031620: 44 65 63 6f 72 61 74 65 64 3b 0a 20 20 20 20 66 Decorated;. f 00031630: 75 6e 63 74 69 6f 6e 20 63 6c 61 73 73 4f 72 43 unction classOrC 00031640: 6f 6e 73 74 72 75 63 74 6f 72 50 61 72 61 6d 65 onstructorParame 00031650: 74 65 72 49 73 44 65 63 6f 72 61 74 65 64 28 6e terIsDecorated(n 00031660: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 69 ode) {. i 00031670: 66 20 28 6e 6f 64 65 49 73 44 65 63 6f 72 61 74 f (nodeIsDecorat 00031680: 65 64 28 6e 6f 64 65 29 29 0a 20 20 20 20 20 20 ed(node)). 00031690: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 return tru 000316a0: 65 3b 0a 20 20 20 20 20 20 20 20 76 61 72 20 63 e;. var c 000316b0: 6f 6e 73 74 72 75 63 74 6f 72 20 3d 20 67 65 74 onstructor = get 000316c0: 46 69 72 73 74 43 6f 6e 73 74 72 75 63 74 6f 72 FirstConstructor 000316d0: 57 69 74 68 42 6f 64 79 28 6e 6f 64 65 29 3b 0a WithBody(node);. 000316e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 return ! 000316f0: 21 63 6f 6e 73 74 72 75 63 74 6f 72 20 26 26 20 !constructor && 00031700: 63 68 69 6c 64 49 73 44 65 63 6f 72 61 74 65 64 childIsDecorated 00031710: 28 63 6f 6e 73 74 72 75 63 74 6f 72 2c 20 6e 6f (constructor, no 00031720: 64 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 de);. }. t 00031730: 73 2e 63 6c 61 73 73 4f 72 43 6f 6e 73 74 72 75 s.classOrConstru 00031740: 63 74 6f 72 50 61 72 61 6d 65 74 65 72 49 73 44 ctorParameterIsD 00031750: 65 63 6f 72 61 74 65 64 20 3d 20 63 6c 61 73 73 ecorated = class 00031760: 4f 72 43 6f 6e 73 74 72 75 63 74 6f 72 50 61 72 OrConstructorPar 00031770: 61 6d 65 74 65 72 49 73 44 65 63 6f 72 61 74 65 ameterIsDecorate 00031780: 64 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 d;. function 00031790: 69 73 4a 53 58 54 61 67 4e 61 6d 65 28 6e 6f 64 isJSXTagName(nod 000317a0: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 e) {. var 000317b0: 20 70 61 72 65 6e 74 20 3d 20 6e 6f 64 65 2e 70 parent = node.p 000317c0: 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 69 arent;. i 000317d0: 66 20 28 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d f (parent.kind = 000317e0: 3d 3d 20 32 38 30 20 2f 2a 20 53 79 6e 74 61 78 == 280 /* Syntax 000317f0: 4b 69 6e 64 2e 4a 73 78 4f 70 65 6e 69 6e 67 45 Kind.JsxOpeningE 00031800: 6c 65 6d 65 6e 74 20 2a 2f 20 7c 7c 0a 20 20 20 lement */ ||. 00031810: 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 2e parent. 00031820: 6b 69 6e 64 20 3d 3d 3d 20 32 37 39 20 2f 2a 20 kind === 279 /* 00031830: 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 53 65 SyntaxKind.JsxSe 00031840: 6c 66 43 6c 6f 73 69 6e 67 45 6c 65 6d 65 6e 74 lfClosingElement 00031850: 20 2a 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 */ ||. 00031860: 20 20 20 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d parent.kind = 00031870: 3d 3d 20 32 38 31 20 2f 2a 20 53 79 6e 74 61 78 == 281 /* Syntax 00031880: 4b 69 6e 64 2e 4a 73 78 43 6c 6f 73 69 6e 67 45 Kind.JsxClosingE 00031890: 6c 65 6d 65 6e 74 20 2a 2f 29 20 7b 0a 20 20 20 lement */) {. 000318a0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 000318b0: 70 61 72 65 6e 74 2e 74 61 67 4e 61 6d 65 20 3d parent.tagName = 000318c0: 3d 3d 20 6e 6f 64 65 3b 0a 20 20 20 20 20 20 20 == node;. 000318d0: 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 }. retur 000318e0: 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 n false;. }. 000318f0: 20 20 20 74 73 2e 69 73 4a 53 58 54 61 67 4e 61 ts.isJSXTagNa 00031900: 6d 65 20 3d 20 69 73 4a 53 58 54 61 67 4e 61 6d me = isJSXTagNam 00031910: 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 e;. function 00031920: 69 73 45 78 70 72 65 73 73 69 6f 6e 4e 6f 64 65 isExpressionNode 00031930: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 00031940: 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 switch (node.ki 00031950: 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 nd) {. 00031960: 20 20 63 61 73 65 20 31 30 36 20 2f 2a 20 53 79 case 106 /* Sy 00031970: 6e 74 61 78 4b 69 6e 64 2e 53 75 70 65 72 4b 65 ntaxKind.SuperKe 00031980: 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 20 20 20 yword */:. 00031990: 20 20 20 20 20 20 63 61 73 65 20 31 30 34 20 2f case 104 / 000319a0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e 75 6c * SyntaxKind.Nul 000319b0: 6c 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a 20 20 20 lKeyword */:. 000319c0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 31 case 11 000319d0: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 000319e0: 54 72 75 65 4b 65 79 77 6f 72 64 20 2a 2f 3a 0a TrueKeyword */:. 000319f0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00031a00: 20 39 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 95 /* SyntaxKin 00031a10: 64 2e 46 61 6c 73 65 4b 65 79 77 6f 72 64 20 2a d.FalseKeyword * 00031a20: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00031a30: 61 73 65 20 31 33 20 2f 2a 20 53 79 6e 74 61 78 ase 13 /* Syntax 00031a40: 4b 69 6e 64 2e 52 65 67 75 6c 61 72 45 78 70 72 Kind.RegularExpr 00031a50: 65 73 73 69 6f 6e 4c 69 74 65 72 61 6c 20 2a 2f essionLiteral */ 00031a60: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 00031a70: 73 65 20 32 30 34 20 2f 2a 20 53 79 6e 74 61 78 se 204 /* Syntax 00031a80: 4b 69 6e 64 2e 41 72 72 61 79 4c 69 74 65 72 61 Kind.ArrayLitera 00031a90: 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a lExpression */:. 00031aa0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00031ab0: 20 32 30 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 205 /* SyntaxKi 00031ac0: 6e 64 2e 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c nd.ObjectLiteral 00031ad0: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 00031ae0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00031af0: 32 30 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 206 /* SyntaxKin 00031b00: 64 2e 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 d.PropertyAccess 00031b10: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 00031b20: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00031b30: 32 30 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 207 /* SyntaxKin 00031b40: 64 2e 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 45 d.ElementAccessE 00031b50: 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 xpression */:. 00031b60: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 00031b70: 30 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 08 /* SyntaxKind 00031b80: 2e 43 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e 20 .CallExpression 00031b90: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00031ba0: 63 61 73 65 20 32 30 39 20 2f 2a 20 53 79 6e 74 case 209 /* Synt 00031bb0: 61 78 4b 69 6e 64 2e 4e 65 77 45 78 70 72 65 73 axKind.NewExpres 00031bc0: 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 sion */:. 00031bd0: 20 20 20 20 20 63 61 73 65 20 32 31 30 20 2f 2a case 210 /* 00031be0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 61 67 67 SyntaxKind.Tagg 00031bf0: 65 64 54 65 6d 70 6c 61 74 65 45 78 70 72 65 73 edTemplateExpres 00031c00: 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 sion */:. 00031c10: 20 20 20 20 20 63 61 73 65 20 32 32 39 20 2f 2a case 229 /* 00031c20: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 73 45 78 SyntaxKind.AsEx 00031c30: 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 pression */:. 00031c40: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 31 case 21 00031c50: 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 1 /* SyntaxKind. 00031c60: 54 79 70 65 41 73 73 65 72 74 69 6f 6e 45 78 70 TypeAssertionExp 00031c70: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 00031c80: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 33 30 case 230 00031c90: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e /* SyntaxKind.N 00031ca0: 6f 6e 4e 75 6c 6c 45 78 70 72 65 73 73 69 6f 6e onNullExpression 00031cb0: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00031cc0: 20 63 61 73 65 20 32 31 32 20 2f 2a 20 53 79 6e case 212 /* Syn 00031cd0: 74 61 78 4b 69 6e 64 2e 50 61 72 65 6e 74 68 65 taxKind.Parenthe 00031ce0: 73 69 7a 65 64 45 78 70 72 65 73 73 69 6f 6e 20 sizedExpression 00031cf0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00031d00: 63 61 73 65 20 32 31 33 20 2f 2a 20 53 79 6e 74 case 213 /* Synt 00031d10: 61 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 45 axKind.FunctionE 00031d20: 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 xpression */:. 00031d30: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 00031d40: 32 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 26 /* SyntaxKind 00031d50: 2e 43 6c 61 73 73 45 78 70 72 65 73 73 69 6f 6e .ClassExpression 00031d60: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00031d70: 20 63 61 73 65 20 32 31 34 20 2f 2a 20 53 79 6e case 214 /* Syn 00031d80: 74 61 78 4b 69 6e 64 2e 41 72 72 6f 77 46 75 6e taxKind.ArrowFun 00031d90: 63 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ction */:. 00031da0: 20 20 20 20 20 20 63 61 73 65 20 32 31 37 20 2f case 217 / 00031db0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 56 6f 69 * SyntaxKind.Voi 00031dc0: 64 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a dExpression */:. 00031dd0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00031de0: 20 32 31 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 215 /* SyntaxKi 00031df0: 6e 64 2e 44 65 6c 65 74 65 45 78 70 72 65 73 73 nd.DeleteExpress 00031e00: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 00031e10: 20 20 20 20 63 61 73 65 20 32 31 36 20 2f 2a 20 case 216 /* 00031e20: 53 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 4f SyntaxKind.TypeO 00031e30: 66 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a fExpression */:. 00031e40: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00031e50: 20 32 31 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 219 /* SyntaxKi 00031e60: 6e 64 2e 50 72 65 66 69 78 55 6e 61 72 79 45 78 nd.PrefixUnaryEx 00031e70: 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 pression */:. 00031e80: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 32 case 22 00031e90: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 00031ea0: 50 6f 73 74 66 69 78 55 6e 61 72 79 45 78 70 72 PostfixUnaryExpr 00031eb0: 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ession */:. 00031ec0: 20 20 20 20 20 20 20 63 61 73 65 20 32 32 31 20 case 221 00031ed0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 69 /* SyntaxKind.Bi 00031ee0: 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e 20 2a naryExpression * 00031ef0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00031f00: 61 73 65 20 32 32 32 20 2f 2a 20 53 79 6e 74 61 ase 222 /* Synta 00031f10: 78 4b 69 6e 64 2e 43 6f 6e 64 69 74 69 6f 6e 61 xKind.Conditiona 00031f20: 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a lExpression */:. 00031f30: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00031f40: 20 32 32 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 225 /* SyntaxKi 00031f50: 6e 64 2e 53 70 72 65 61 64 45 6c 65 6d 65 6e 74 nd.SpreadElement 00031f60: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00031f70: 20 63 61 73 65 20 32 32 33 20 2f 2a 20 53 79 6e case 223 /* Syn 00031f80: 74 61 78 4b 69 6e 64 2e 54 65 6d 70 6c 61 74 65 taxKind.Template 00031f90: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 00031fa0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00031fb0: 32 32 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 227 /* SyntaxKin 00031fc0: 64 2e 4f 6d 69 74 74 65 64 45 78 70 72 65 73 73 d.OmittedExpress 00031fd0: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 00031fe0: 20 20 20 20 63 61 73 65 20 32 37 38 20 2f 2a 20 case 278 /* 00031ff0: 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 45 6c SyntaxKind.JsxEl 00032000: 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 ement */:. 00032010: 20 20 20 20 20 20 63 61 73 65 20 32 37 39 20 2f case 279 / 00032020: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 * SyntaxKind.Jsx 00032030: 53 65 6c 66 43 6c 6f 73 69 6e 67 45 6c 65 6d 65 SelfClosingEleme 00032040: 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 nt */:. 00032050: 20 20 20 63 61 73 65 20 32 38 32 20 2f 2a 20 53 case 282 /* S 00032060: 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 46 72 61 yntaxKind.JsxFra 00032070: 67 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 gment */:. 00032080: 20 20 20 20 20 20 63 61 73 65 20 32 32 34 20 2f case 224 / 00032090: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 59 69 65 * SyntaxKind.Yie 000320a0: 6c 64 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a ldExpression */: 000320b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 000320c0: 65 20 32 31 38 20 2f 2a 20 53 79 6e 74 61 78 4b e 218 /* SyntaxK 000320d0: 69 6e 64 2e 41 77 61 69 74 45 78 70 72 65 73 73 ind.AwaitExpress 000320e0: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 000320f0: 20 20 20 20 63 61 73 65 20 32 33 31 20 2f 2a 20 case 231 /* 00032100: 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 74 61 50 SyntaxKind.MetaP 00032110: 72 6f 70 65 72 74 79 20 2a 2f 3a 0a 20 20 20 20 roperty */:. 00032120: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00032130: 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 rn true;. 00032140: 20 20 20 20 20 63 61 73 65 20 32 32 38 20 2f 2a case 228 /* 00032150: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 78 70 72 SyntaxKind.Expr 00032160: 65 73 73 69 6f 6e 57 69 74 68 54 79 70 65 41 72 essionWithTypeAr 00032170: 67 75 6d 65 6e 74 73 20 2a 2f 3a 0a 20 20 20 20 guments */:. 00032180: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00032190: 72 6e 20 21 74 73 2e 69 73 48 65 72 69 74 61 67 rn !ts.isHeritag 000321a0: 65 43 6c 61 75 73 65 28 6e 6f 64 65 2e 70 61 72 eClause(node.par 000321b0: 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 ent);. 000321c0: 20 20 63 61 73 65 20 31 36 31 20 2f 2a 20 53 79 case 161 /* Sy 000321d0: 6e 74 61 78 4b 69 6e 64 2e 51 75 61 6c 69 66 69 ntaxKind.Qualifi 000321e0: 65 64 4e 61 6d 65 20 2a 2f 3a 0a 20 20 20 20 20 edName */:. 000321f0: 20 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 while 00032200: 20 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b 69 (node.parent.ki 00032210: 6e 64 20 3d 3d 3d 20 31 36 31 20 2f 2a 20 53 79 nd === 161 /* Sy 00032220: 6e 74 61 78 4b 69 6e 64 2e 51 75 61 6c 69 66 69 ntaxKind.Qualifi 00032230: 65 64 4e 61 6d 65 20 2a 2f 29 20 7b 0a 20 20 20 edName */) {. 00032240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00032250: 20 6e 6f 64 65 20 3d 20 6e 6f 64 65 2e 70 61 72 node = node.par 00032260: 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ent;. 00032270: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 }. 00032280: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 00032290: 64 65 2e 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d de.parent.kind = 000322a0: 3d 3d 20 31 38 31 20 2f 2a 20 53 79 6e 74 61 78 == 181 /* Syntax 000322b0: 4b 69 6e 64 2e 54 79 70 65 51 75 65 72 79 20 2a Kind.TypeQuery * 000322c0: 2f 20 7c 7c 20 74 73 2e 69 73 4a 53 44 6f 63 4c / || ts.isJSDocL 000322d0: 69 6e 6b 4c 69 6b 65 28 6e 6f 64 65 2e 70 61 72 inkLike(node.par 000322e0: 65 6e 74 29 20 7c 7c 20 74 73 2e 69 73 4a 53 44 ent) || ts.isJSD 000322f0: 6f 63 4e 61 6d 65 52 65 66 65 72 65 6e 63 65 28 ocNameReference( 00032300: 6e 6f 64 65 2e 70 61 72 65 6e 74 29 20 7c 7c 20 node.parent) || 00032310: 74 73 2e 69 73 4a 53 44 6f 63 4d 65 6d 62 65 72 ts.isJSDocMember 00032320: 4e 61 6d 65 28 6e 6f 64 65 2e 70 61 72 65 6e 74 Name(node.parent 00032330: 29 20 7c 7c 20 69 73 4a 53 58 54 61 67 4e 61 6d ) || isJSXTagNam 00032340: 65 28 6e 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 e(node);. 00032350: 20 20 20 20 20 63 61 73 65 20 33 31 31 20 2f 2a case 311 /* 00032360: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f SyntaxKind.JSDo 00032370: 63 4d 65 6d 62 65 72 4e 61 6d 65 20 2a 2f 3a 0a cMemberName */:. 00032380: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00032390: 77 68 69 6c 65 20 28 74 73 2e 69 73 4a 53 44 6f while (ts.isJSDo 000323a0: 63 4d 65 6d 62 65 72 4e 61 6d 65 28 6e 6f 64 65 cMemberName(node 000323b0: 2e 70 61 72 65 6e 74 29 29 20 7b 0a 20 20 20 20 .parent)) {. 000323c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000323d0: 6e 6f 64 65 20 3d 20 6e 6f 64 65 2e 70 61 72 65 node = node.pare 000323e0: 6e 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 nt;. 000323f0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 }. 00032400: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 return nod 00032410: 65 2e 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d e.parent.kind == 00032420: 3d 20 31 38 31 20 2f 2a 20 53 79 6e 74 61 78 4b = 181 /* SyntaxK 00032430: 69 6e 64 2e 54 79 70 65 51 75 65 72 79 20 2a 2f ind.TypeQuery */ 00032440: 20 7c 7c 20 74 73 2e 69 73 4a 53 44 6f 63 4c 69 || ts.isJSDocLi 00032450: 6e 6b 4c 69 6b 65 28 6e 6f 64 65 2e 70 61 72 65 nkLike(node.pare 00032460: 6e 74 29 20 7c 7c 20 74 73 2e 69 73 4a 53 44 6f nt) || ts.isJSDo 00032470: 63 4e 61 6d 65 52 65 66 65 72 65 6e 63 65 28 6e cNameReference(n 00032480: 6f 64 65 2e 70 61 72 65 6e 74 29 20 7c 7c 20 74 ode.parent) || t 00032490: 73 2e 69 73 4a 53 44 6f 63 4d 65 6d 62 65 72 4e s.isJSDocMemberN 000324a0: 61 6d 65 28 6e 6f 64 65 2e 70 61 72 65 6e 74 29 ame(node.parent) 000324b0: 20 7c 7c 20 69 73 4a 53 58 54 61 67 4e 61 6d 65 || isJSXTagName 000324c0: 28 6e 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 20 (node);. 000324d0: 20 20 20 20 63 61 73 65 20 38 30 20 2f 2a 20 53 case 80 /* S 000324e0: 79 6e 74 61 78 4b 69 6e 64 2e 50 72 69 76 61 74 yntaxKind.Privat 000324f0: 65 49 64 65 6e 74 69 66 69 65 72 20 2a 2f 3a 0a eIdentifier */:. 00032500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00032510: 72 65 74 75 72 6e 20 74 73 2e 69 73 42 69 6e 61 return ts.isBina 00032520: 72 79 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 ryExpression(nod 00032530: 65 2e 70 61 72 65 6e 74 29 20 26 26 20 6e 6f 64 e.parent) && nod 00032540: 65 2e 70 61 72 65 6e 74 2e 6c 65 66 74 20 3d 3d e.parent.left == 00032550: 3d 20 6e 6f 64 65 20 26 26 20 6e 6f 64 65 2e 70 = node && node.p 00032560: 61 72 65 6e 74 2e 6f 70 65 72 61 74 6f 72 54 6f arent.operatorTo 00032570: 6b 65 6e 2e 6b 69 6e 64 20 3d 3d 3d 20 31 30 31 ken.kind === 101 00032580: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 /* SyntaxKind.I 00032590: 6e 4b 65 79 77 6f 72 64 20 2a 2f 3b 0a 20 20 20 nKeyword */;. 000325a0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 37 39 case 79 000325b0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 /* SyntaxKind.I 000325c0: 64 65 6e 74 69 66 69 65 72 20 2a 2f 3a 0a 20 20 dentifier */:. 000325d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 if 000325e0: 20 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b 69 (node.parent.ki 000325f0: 6e 64 20 3d 3d 3d 20 31 38 31 20 2f 2a 20 53 79 nd === 181 /* Sy 00032600: 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 51 75 65 ntaxKind.TypeQue 00032610: 72 79 20 2a 2f 20 7c 7c 20 74 73 2e 69 73 4a 53 ry */ || ts.isJS 00032620: 44 6f 63 4c 69 6e 6b 4c 69 6b 65 28 6e 6f 64 65 DocLinkLike(node 00032630: 2e 70 61 72 65 6e 74 29 20 7c 7c 20 74 73 2e 69 .parent) || ts.i 00032640: 73 4a 53 44 6f 63 4e 61 6d 65 52 65 66 65 72 65 sJSDocNameRefere 00032650: 6e 63 65 28 6e 6f 64 65 2e 70 61 72 65 6e 74 29 nce(node.parent) 00032660: 20 7c 7c 20 74 73 2e 69 73 4a 53 44 6f 63 4d 65 || ts.isJSDocMe 00032670: 6d 62 65 72 4e 61 6d 65 28 6e 6f 64 65 2e 70 61 mberName(node.pa 00032680: 72 65 6e 74 29 20 7c 7c 20 69 73 4a 53 58 54 61 rent) || isJSXTa 00032690: 67 4e 61 6d 65 28 6e 6f 64 65 29 29 20 7b 0a 20 gName(node)) {. 000326a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000326b0: 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a return true;. 000326c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000326d0: 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f }. // 000326e0: 20 66 61 6c 6c 73 20 74 68 72 6f 75 67 68 0a 20 falls through. 000326f0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00032700: 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 8 /* SyntaxKind. 00032710: 4e 75 6d 65 72 69 63 4c 69 74 65 72 61 6c 20 2a NumericLiteral * 00032720: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 00032730: 61 73 65 20 39 20 2f 2a 20 53 79 6e 74 61 78 4b ase 9 /* SyntaxK 00032740: 69 6e 64 2e 42 69 67 49 6e 74 4c 69 74 65 72 61 ind.BigIntLitera 00032750: 6c 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 l */:. 00032760: 20 20 63 61 73 65 20 31 30 20 2f 2a 20 53 79 6e case 10 /* Syn 00032770: 74 61 78 4b 69 6e 64 2e 53 74 72 69 6e 67 4c 69 taxKind.StringLi 00032780: 74 65 72 61 6c 20 2a 2f 3a 0a 20 20 20 20 20 20 teral */:. 00032790: 20 20 20 20 20 20 63 61 73 65 20 31 34 20 2f 2a case 14 /* 000327a0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e 6f 53 75 SyntaxKind.NoSu 000327b0: 62 73 74 69 74 75 74 69 6f 6e 54 65 6d 70 6c 61 bstitutionTempla 000327c0: 74 65 4c 69 74 65 72 61 6c 20 2a 2f 3a 0a 20 20 teLiteral */:. 000327d0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 000327e0: 30 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 08 /* SyntaxKind 000327f0: 2e 54 68 69 73 4b 65 79 77 6f 72 64 20 2a 2f 3a .ThisKeyword */: 00032800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00032810: 20 72 65 74 75 72 6e 20 69 73 49 6e 45 78 70 72 return isInExpr 00032820: 65 73 73 69 6f 6e 43 6f 6e 74 65 78 74 28 6e 6f essionContext(no 00032830: 64 65 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 de);. 00032840: 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 default:. 00032850: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00032860: 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 20 20 20 false;. 00032870: 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 }. }. ts.i 00032880: 73 45 78 70 72 65 73 73 69 6f 6e 4e 6f 64 65 20 sExpressionNode 00032890: 3d 20 69 73 45 78 70 72 65 73 73 69 6f 6e 4e 6f = isExpressionNo 000328a0: 64 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e de;. function 000328b0: 20 69 73 49 6e 45 78 70 72 65 73 73 69 6f 6e 43 isInExpressionC 000328c0: 6f 6e 74 65 78 74 28 6e 6f 64 65 29 20 7b 0a 20 ontext(node) {. 000328d0: 20 20 20 20 20 20 20 76 61 72 20 70 61 72 65 6e var paren 000328e0: 74 20 3d 20 6e 6f 64 65 2e 70 61 72 65 6e 74 3b t = node.parent; 000328f0: 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 . switch 00032900: 28 70 61 72 65 6e 74 2e 6b 69 6e 64 29 20 7b 0a (parent.kind) {. 00032910: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00032920: 20 32 35 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 254 /* SyntaxKi 00032930: 6e 64 2e 56 61 72 69 61 62 6c 65 44 65 63 6c 61 nd.VariableDecla 00032940: 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ration */:. 00032950: 20 20 20 20 20 20 20 63 61 73 65 20 31 36 34 20 case 164 00032960: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 61 /* SyntaxKind.Pa 00032970: 72 61 6d 65 74 65 72 20 2a 2f 3a 0a 20 20 20 20 rameter */:. 00032980: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 36 37 case 167 00032990: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 /* SyntaxKind.P 000329a0: 72 6f 70 65 72 74 79 44 65 63 6c 61 72 61 74 69 ropertyDeclarati 000329b0: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 000329c0: 20 20 20 63 61 73 65 20 31 36 36 20 2f 2a 20 53 case 166 /* S 000329d0: 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 yntaxKind.Proper 000329e0: 74 79 53 69 67 6e 61 74 75 72 65 20 2a 2f 3a 0a tySignature */:. 000329f0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00032a00: 20 32 39 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 299 /* SyntaxKi 00032a10: 6e 64 2e 45 6e 75 6d 4d 65 6d 62 65 72 20 2a 2f nd.EnumMember */ 00032a20: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 00032a30: 73 65 20 32 39 36 20 2f 2a 20 53 79 6e 74 61 78 se 296 /* Syntax 00032a40: 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 41 73 73 Kind.PropertyAss 00032a50: 69 67 6e 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 ignment */:. 00032a60: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 33 case 203 00032a70: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 42 /* SyntaxKind.B 00032a80: 69 6e 64 69 6e 67 45 6c 65 6d 65 6e 74 20 2a 2f indingElement */ 00032a90: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 00032aa0: 20 20 72 65 74 75 72 6e 20 70 61 72 65 6e 74 2e return parent. 00032ab0: 69 6e 69 74 69 61 6c 69 7a 65 72 20 3d 3d 3d 20 initializer === 00032ac0: 6e 6f 64 65 3b 0a 20 20 20 20 20 20 20 20 20 20 node;. 00032ad0: 20 20 63 61 73 65 20 32 33 38 20 2f 2a 20 53 79 case 238 /* Sy 00032ae0: 6e 74 61 78 4b 69 6e 64 2e 45 78 70 72 65 73 73 ntaxKind.Express 00032af0: 69 6f 6e 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a ionStatement */: 00032b00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00032b10: 65 20 32 33 39 20 2f 2a 20 53 79 6e 74 61 78 4b e 239 /* SyntaxK 00032b20: 69 6e 64 2e 49 66 53 74 61 74 65 6d 65 6e 74 20 ind.IfStatement 00032b30: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00032b40: 63 61 73 65 20 32 34 30 20 2f 2a 20 53 79 6e 74 case 240 /* Synt 00032b50: 61 78 4b 69 6e 64 2e 44 6f 53 74 61 74 65 6d 65 axKind.DoStateme 00032b60: 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 nt */:. 00032b70: 20 20 20 63 61 73 65 20 32 34 31 20 2f 2a 20 53 case 241 /* S 00032b80: 79 6e 74 61 78 4b 69 6e 64 2e 57 68 69 6c 65 53 yntaxKind.WhileS 00032b90: 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 tatement */:. 00032ba0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 34 case 24 00032bb0: 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 7 /* SyntaxKind. 00032bc0: 52 65 74 75 72 6e 53 74 61 74 65 6d 65 6e 74 20 ReturnStatement 00032bd0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00032be0: 63 61 73 65 20 32 34 38 20 2f 2a 20 53 79 6e 74 case 248 /* Synt 00032bf0: 61 78 4b 69 6e 64 2e 57 69 74 68 53 74 61 74 65 axKind.WithState 00032c00: 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ment */:. 00032c10: 20 20 20 20 20 63 61 73 65 20 32 34 39 20 2f 2a case 249 /* 00032c20: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 77 69 74 SyntaxKind.Swit 00032c30: 63 68 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a chStatement */:. 00032c40: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 00032c50: 20 32 38 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 289 /* SyntaxKi 00032c60: 6e 64 2e 43 61 73 65 43 6c 61 75 73 65 20 2a 2f nd.CaseClause */ 00032c70: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 00032c80: 73 65 20 32 35 31 20 2f 2a 20 53 79 6e 74 61 78 se 251 /* Syntax 00032c90: 4b 69 6e 64 2e 54 68 72 6f 77 53 74 61 74 65 6d Kind.ThrowStatem 00032ca0: 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ent */:. 00032cb0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 return p 00032cc0: 61 72 65 6e 74 2e 65 78 70 72 65 73 73 69 6f 6e arent.expression 00032cd0: 20 3d 3d 3d 20 6e 6f 64 65 3b 0a 20 20 20 20 20 === node;. 00032ce0: 20 20 20 20 20 20 20 63 61 73 65 20 32 34 32 20 case 242 00032cf0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 6f /* SyntaxKind.Fo 00032d00: 72 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 rStatement */:. 00032d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 76 v 00032d20: 61 72 20 66 6f 72 53 74 61 74 65 6d 65 6e 74 20 ar forStatement 00032d30: 3d 20 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 = parent;. 00032d40: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00032d50: 20 28 66 6f 72 53 74 61 74 65 6d 65 6e 74 2e 69 (forStatement.i 00032d60: 6e 69 74 69 61 6c 69 7a 65 72 20 3d 3d 3d 20 6e nitializer === n 00032d70: 6f 64 65 20 26 26 20 66 6f 72 53 74 61 74 65 6d ode && forStatem 00032d80: 65 6e 74 2e 69 6e 69 74 69 61 6c 69 7a 65 72 2e ent.initializer. 00032d90: 6b 69 6e 64 20 21 3d 3d 20 32 35 35 20 2f 2a 20 kind !== 255 /* 00032da0: 53 79 6e 74 61 78 4b 69 6e 64 2e 56 61 72 69 61 SyntaxKind.Varia 00032db0: 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 4c 69 bleDeclarationLi 00032dc0: 73 74 20 2a 2f 29 20 7c 7c 0a 20 20 20 20 20 20 st */) ||. 00032dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f fo 00032de0: 72 53 74 61 74 65 6d 65 6e 74 2e 63 6f 6e 64 69 rStatement.condi 00032df0: 74 69 6f 6e 20 3d 3d 3d 20 6e 6f 64 65 20 7c 7c tion === node || 00032e00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00032e10: 20 20 20 20 20 66 6f 72 53 74 61 74 65 6d 65 6e forStatemen 00032e20: 74 2e 69 6e 63 72 65 6d 65 6e 74 6f 72 20 3d 3d t.incrementor == 00032e30: 3d 20 6e 6f 64 65 3b 0a 20 20 20 20 20 20 20 20 = node;. 00032e40: 20 20 20 20 63 61 73 65 20 32 34 33 20 2f 2a 20 case 243 /* 00032e50: 53 79 6e 74 61 78 4b 69 6e 64 2e 46 6f 72 49 6e SyntaxKind.ForIn 00032e60: 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 Statement */:. 00032e70: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 00032e80: 34 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 44 /* SyntaxKind 00032e90: 2e 46 6f 72 4f 66 53 74 61 74 65 6d 65 6e 74 20 .ForOfStatement 00032ea0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 00032eb0: 20 20 20 20 76 61 72 20 66 6f 72 49 6e 53 74 61 var forInSta 00032ec0: 74 65 6d 65 6e 74 20 3d 20 70 61 72 65 6e 74 3b tement = parent; 00032ed0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00032ee0: 20 72 65 74 75 72 6e 20 28 66 6f 72 49 6e 53 74 return (forInSt 00032ef0: 61 74 65 6d 65 6e 74 2e 69 6e 69 74 69 61 6c 69 atement.initiali 00032f00: 7a 65 72 20 3d 3d 3d 20 6e 6f 64 65 20 26 26 20 zer === node && 00032f10: 66 6f 72 49 6e 53 74 61 74 65 6d 65 6e 74 2e 69 forInStatement.i 00032f20: 6e 69 74 69 61 6c 69 7a 65 72 2e 6b 69 6e 64 20 nitializer.kind 00032f30: 21 3d 3d 20 32 35 35 20 2f 2a 20 53 79 6e 74 61 !== 255 /* Synta 00032f40: 78 4b 69 6e 64 2e 56 61 72 69 61 62 6c 65 44 65 xKind.VariableDe 00032f50: 63 6c 61 72 61 74 69 6f 6e 4c 69 73 74 20 2a 2f clarationList */ 00032f60: 29 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 ) ||. 00032f70: 20 20 20 20 20 20 20 20 20 66 6f 72 49 6e 53 74 forInSt 00032f80: 61 74 65 6d 65 6e 74 2e 65 78 70 72 65 73 73 69 atement.expressi 00032f90: 6f 6e 20 3d 3d 3d 20 6e 6f 64 65 3b 0a 20 20 20 on === node;. 00032fa0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 31 case 21 00032fb0: 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 1 /* SyntaxKind. 00032fc0: 54 79 70 65 41 73 73 65 72 74 69 6f 6e 45 78 70 TypeAssertionExp 00032fd0: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 00032fe0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 32 39 case 229 00032ff0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 41 /* SyntaxKind.A 00033000: 73 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a sExpression */:. 00033010: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00033020: 72 65 74 75 72 6e 20 6e 6f 64 65 20 3d 3d 3d 20 return node === 00033030: 70 61 72 65 6e 74 2e 65 78 70 72 65 73 73 69 6f parent.expressio 00033040: 6e 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 n;. c 00033050: 61 73 65 20 32 33 33 20 2f 2a 20 53 79 6e 74 61 ase 233 /* Synta 00033060: 78 4b 69 6e 64 2e 54 65 6d 70 6c 61 74 65 53 70 xKind.TemplateSp 00033070: 61 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 an */:. 00033080: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 00033090: 64 65 20 3d 3d 3d 20 70 61 72 65 6e 74 2e 65 78 de === parent.ex 000330a0: 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 20 20 20 pression;. 000330b0: 20 20 20 20 20 20 63 61 73 65 20 31 36 32 20 2f case 162 / 000330c0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 6f 6d * SyntaxKind.Com 000330d0: 70 75 74 65 64 50 72 6f 70 65 72 74 79 4e 61 6d putedPropertyNam 000330e0: 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 e */:. 000330f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 return nod 00033100: 65 20 3d 3d 3d 20 70 61 72 65 6e 74 2e 65 78 70 e === parent.exp 00033110: 72 65 73 73 69 6f 6e 3b 0a 20 20 20 20 20 20 20 ression;. 00033120: 20 20 20 20 20 63 61 73 65 20 31 36 35 20 2f 2a case 165 /* 00033130: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 44 65 63 6f SyntaxKind.Deco 00033140: 72 61 74 6f 72 20 2a 2f 3a 0a 20 20 20 20 20 20 rator */:. 00033150: 20 20 20 20 20 20 63 61 73 65 20 32 38 38 20 2f case 288 / 00033160: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 * SyntaxKind.Jsx 00033170: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 00033180: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00033190: 32 38 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 287 /* SyntaxKin 000331a0: 64 2e 4a 73 78 53 70 72 65 61 64 41 74 74 72 69 d.JsxSpreadAttri 000331b0: 62 75 74 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 bute */:. 000331c0: 20 20 20 20 20 63 61 73 65 20 32 39 38 20 2f 2a case 298 /* 000331d0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 70 72 65 SyntaxKind.Spre 000331e0: 61 64 41 73 73 69 67 6e 6d 65 6e 74 20 2a 2f 3a adAssignment */: 000331f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00033200: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 return true;. 00033210: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 00033220: 32 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 28 /* SyntaxKind 00033230: 2e 45 78 70 72 65 73 73 69 6f 6e 57 69 74 68 54 .ExpressionWithT 00033240: 79 70 65 41 72 67 75 6d 65 6e 74 73 20 2a 2f 3a ypeArguments */: 00033250: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00033260: 20 72 65 74 75 72 6e 20 70 61 72 65 6e 74 2e 65 return parent.e 00033270: 78 70 72 65 73 73 69 6f 6e 20 3d 3d 3d 20 6e 6f xpression === no 00033280: 64 65 20 26 26 20 21 69 73 50 61 72 74 4f 66 54 de && !isPartOfT 00033290: 79 70 65 4e 6f 64 65 28 70 61 72 65 6e 74 29 3b ypeNode(parent); 000332a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 000332b0: 65 20 32 39 37 20 2f 2a 20 53 79 6e 74 61 78 4b e 297 /* SyntaxK 000332c0: 69 6e 64 2e 53 68 6f 72 74 68 61 6e 64 50 72 6f ind.ShorthandPro 000332d0: 70 65 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 20 pertyAssignment 000332e0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 000332f0: 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 65 6e return paren 00033300: 74 2e 6f 62 6a 65 63 74 41 73 73 69 67 6e 6d 65 t.objectAssignme 00033310: 6e 74 49 6e 69 74 69 61 6c 69 7a 65 72 20 3d 3d ntInitializer == 00033320: 3d 20 6e 6f 64 65 3b 0a 20 20 20 20 20 20 20 20 = node;. 00033330: 20 20 20 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 default:. 00033340: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00033350: 75 72 6e 20 69 73 45 78 70 72 65 73 73 69 6f 6e urn isExpression 00033360: 4e 6f 64 65 28 70 61 72 65 6e 74 29 3b 0a 20 20 Node(parent);. 00033370: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 }. }. 00033380: 20 20 74 73 2e 69 73 49 6e 45 78 70 72 65 73 73 ts.isInExpress 00033390: 69 6f 6e 43 6f 6e 74 65 78 74 20 3d 20 69 73 49 ionContext = isI 000333a0: 6e 45 78 70 72 65 73 73 69 6f 6e 43 6f 6e 74 65 nExpressionConte 000333b0: 78 74 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e xt;. function 000333c0: 20 69 73 50 61 72 74 4f 66 54 79 70 65 51 75 65 isPartOfTypeQue 000333d0: 72 79 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 ry(node) {. 000333e0: 20 20 20 77 68 69 6c 65 20 28 6e 6f 64 65 2e 6b while (node.k 000333f0: 69 6e 64 20 3d 3d 3d 20 31 36 31 20 2f 2a 20 53 ind === 161 /* S 00033400: 79 6e 74 61 78 4b 69 6e 64 2e 51 75 61 6c 69 66 yntaxKind.Qualif 00033410: 69 65 64 4e 61 6d 65 20 2a 2f 20 7c 7c 20 6e 6f iedName */ || no 00033420: 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 37 39 20 2f de.kind === 79 / 00033430: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 64 65 * SyntaxKind.Ide 00033440: 6e 74 69 66 69 65 72 20 2a 2f 29 20 7b 0a 20 20 ntifier */) {. 00033450: 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d node = 00033460: 20 6e 6f 64 65 2e 70 61 72 65 6e 74 3b 0a 20 20 node.parent;. 00033470: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 00033480: 72 65 74 75 72 6e 20 6e 6f 64 65 2e 6b 69 6e 64 return node.kind 00033490: 20 3d 3d 3d 20 31 38 31 20 2f 2a 20 53 79 6e 74 === 181 /* Synt 000334a0: 61 78 4b 69 6e 64 2e 54 79 70 65 51 75 65 72 79 axKind.TypeQuery 000334b0: 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 */;. }. t 000334c0: 73 2e 69 73 50 61 72 74 4f 66 54 79 70 65 51 75 s.isPartOfTypeQu 000334d0: 65 72 79 20 3d 20 69 73 50 61 72 74 4f 66 54 79 ery = isPartOfTy 000334e0: 70 65 51 75 65 72 79 3b 0a 20 20 20 20 66 75 6e peQuery;. fun 000334f0: 63 74 69 6f 6e 20 69 73 4e 61 6d 65 73 70 61 63 ction isNamespac 00033500: 65 52 65 65 78 70 6f 72 74 44 65 63 6c 61 72 61 eReexportDeclara 00033510: 74 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 tion(node) {. 00033520: 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 return ts.i 00033530: 73 4e 61 6d 65 73 70 61 63 65 45 78 70 6f 72 74 sNamespaceExport 00033540: 28 6e 6f 64 65 29 20 26 26 20 21 21 6e 6f 64 65 (node) && !!node 00033550: 2e 70 61 72 65 6e 74 2e 6d 6f 64 75 6c 65 53 70 .parent.moduleSp 00033560: 65 63 69 66 69 65 72 3b 0a 20 20 20 20 7d 0a 20 ecifier;. }. 00033570: 20 20 20 74 73 2e 69 73 4e 61 6d 65 73 70 61 63 ts.isNamespac 00033580: 65 52 65 65 78 70 6f 72 74 44 65 63 6c 61 72 61 eReexportDeclara 00033590: 74 69 6f 6e 20 3d 20 69 73 4e 61 6d 65 73 70 61 tion = isNamespa 000335a0: 63 65 52 65 65 78 70 6f 72 74 44 65 63 6c 61 72 ceReexportDeclar 000335b0: 61 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 ation;. funct 000335c0: 69 6f 6e 20 69 73 45 78 74 65 72 6e 61 6c 4d 6f ion isExternalMo 000335d0: 64 75 6c 65 49 6d 70 6f 72 74 45 71 75 61 6c 73 duleImportEquals 000335e0: 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 Declaration(node 000335f0: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 00033600: 72 6e 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d rn node.kind === 00033610: 20 32 36 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 265 /* SyntaxKi 00033620: 6e 64 2e 49 6d 70 6f 72 74 45 71 75 61 6c 73 44 nd.ImportEqualsD 00033630: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 20 26 26 eclaration */ && 00033640: 20 6e 6f 64 65 2e 6d 6f 64 75 6c 65 52 65 66 65 node.moduleRefe 00033650: 72 65 6e 63 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 rence.kind === 2 00033660: 37 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 77 /* SyntaxKind 00033670: 2e 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 52 .ExternalModuleR 00033680: 65 66 65 72 65 6e 63 65 20 2a 2f 3b 0a 20 20 20 eference */;. 00033690: 20 7d 0a 20 20 20 20 74 73 2e 69 73 45 78 74 65 }. ts.isExte 000336a0: 72 6e 61 6c 4d 6f 64 75 6c 65 49 6d 70 6f 72 74 rnalModuleImport 000336b0: 45 71 75 61 6c 73 44 65 63 6c 61 72 61 74 69 6f EqualsDeclaratio 000336c0: 6e 20 3d 20 69 73 45 78 74 65 72 6e 61 6c 4d 6f n = isExternalMo 000336d0: 64 75 6c 65 49 6d 70 6f 72 74 45 71 75 61 6c 73 duleImportEquals 000336e0: 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 Declaration;. 000336f0: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 45 78 74 function getExt 00033700: 65 72 6e 61 6c 4d 6f 64 75 6c 65 49 6d 70 6f 72 ernalModuleImpor 00033710: 74 45 71 75 61 6c 73 44 65 63 6c 61 72 61 74 69 tEqualsDeclarati 00033720: 6f 6e 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 onExpression(nod 00033730: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 74 73 2e e) {. ts. 00033740: 44 65 62 75 67 2e 61 73 73 65 72 74 28 69 73 45 Debug.assert(isE 00033750: 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 49 6d 70 xternalModuleImp 00033760: 6f 72 74 45 71 75 61 6c 73 44 65 63 6c 61 72 61 ortEqualsDeclara 00033770: 74 69 6f 6e 28 6e 6f 64 65 29 29 3b 0a 20 20 20 tion(node));. 00033780: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 return node 00033790: 2e 6d 6f 64 75 6c 65 52 65 66 65 72 65 6e 63 65 .moduleReference 000337a0: 2e 65 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 .expression;. 000337b0: 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 45 78 74 }. ts.getExt 000337c0: 65 72 6e 61 6c 4d 6f 64 75 6c 65 49 6d 70 6f 72 ernalModuleImpor 000337d0: 74 45 71 75 61 6c 73 44 65 63 6c 61 72 61 74 69 tEqualsDeclarati 000337e0: 6f 6e 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 67 onExpression = g 000337f0: 65 74 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 etExternalModule 00033800: 49 6d 70 6f 72 74 45 71 75 61 6c 73 44 65 63 6c ImportEqualsDecl 00033810: 61 72 61 74 69 6f 6e 45 78 70 72 65 73 73 69 6f arationExpressio 00033820: 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 n;. function 00033830: 67 65 74 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c getExternalModul 00033840: 65 52 65 71 75 69 72 65 41 72 67 75 6d 65 6e 74 eRequireArgument 00033850: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 00033860: 20 72 65 74 75 72 6e 20 69 73 56 61 72 69 61 62 return isVariab 00033870: 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 49 6e 69 leDeclarationIni 00033880: 74 69 61 6c 69 7a 65 64 54 6f 42 61 72 65 4f 72 tializedToBareOr 00033890: 41 63 63 65 73 73 65 64 52 65 71 75 69 72 65 28 AccessedRequire( 000338a0: 6e 6f 64 65 29 20 26 26 20 67 65 74 4c 65 66 74 node) && getLeft 000338b0: 6d 6f 73 74 41 63 63 65 73 73 45 78 70 72 65 73 mostAccessExpres 000338c0: 73 69 6f 6e 28 6e 6f 64 65 2e 69 6e 69 74 69 61 sion(node.initia 000338d0: 6c 69 7a 65 72 29 2e 61 72 67 75 6d 65 6e 74 73 lizer).arguments 000338e0: 5b 30 5d 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 [0];. }. t 000338f0: 73 2e 67 65 74 45 78 74 65 72 6e 61 6c 4d 6f 64 s.getExternalMod 00033900: 75 6c 65 52 65 71 75 69 72 65 41 72 67 75 6d 65 uleRequireArgume 00033910: 6e 74 20 3d 20 67 65 74 45 78 74 65 72 6e 61 6c nt = getExternal 00033920: 4d 6f 64 75 6c 65 52 65 71 75 69 72 65 41 72 67 ModuleRequireArg 00033930: 75 6d 65 6e 74 3b 0a 20 20 20 20 66 75 6e 63 74 ument;. funct 00033940: 69 6f 6e 20 69 73 49 6e 74 65 72 6e 61 6c 4d 6f ion isInternalMo 00033950: 64 75 6c 65 49 6d 70 6f 72 74 45 71 75 61 6c 73 duleImportEquals 00033960: 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 Declaration(node 00033970: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 00033980: 72 6e 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d rn node.kind === 00033990: 20 32 36 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 265 /* SyntaxKi 000339a0: 6e 64 2e 49 6d 70 6f 72 74 45 71 75 61 6c 73 44 nd.ImportEqualsD 000339b0: 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 20 26 26 eclaration */ && 000339c0: 20 6e 6f 64 65 2e 6d 6f 64 75 6c 65 52 65 66 65 node.moduleRefe 000339d0: 72 65 6e 63 65 2e 6b 69 6e 64 20 21 3d 3d 20 32 rence.kind !== 2 000339e0: 37 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 77 /* SyntaxKind 000339f0: 2e 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 52 .ExternalModuleR 00033a00: 65 66 65 72 65 6e 63 65 20 2a 2f 3b 0a 20 20 20 eference */;. 00033a10: 20 7d 0a 20 20 20 20 74 73 2e 69 73 49 6e 74 65 }. ts.isInte 00033a20: 72 6e 61 6c 4d 6f 64 75 6c 65 49 6d 70 6f 72 74 rnalModuleImport 00033a30: 45 71 75 61 6c 73 44 65 63 6c 61 72 61 74 69 6f EqualsDeclaratio 00033a40: 6e 20 3d 20 69 73 49 6e 74 65 72 6e 61 6c 4d 6f n = isInternalMo 00033a50: 64 75 6c 65 49 6d 70 6f 72 74 45 71 75 61 6c 73 duleImportEquals 00033a60: 44 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 Declaration;. 00033a70: 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 6f 75 72 function isSour 00033a80: 63 65 46 69 6c 65 4a 53 28 66 69 6c 65 29 20 7b ceFileJS(file) { 00033a90: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 00033aa0: 69 73 49 6e 4a 53 46 69 6c 65 28 66 69 6c 65 29 isInJSFile(file) 00033ab0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 00033ac0: 73 53 6f 75 72 63 65 46 69 6c 65 4a 53 20 3d 20 sSourceFileJS = 00033ad0: 69 73 53 6f 75 72 63 65 46 69 6c 65 4a 53 3b 0a isSourceFileJS;. 00033ae0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 function isS 00033af0: 6f 75 72 63 65 46 69 6c 65 4e 6f 74 4a 53 28 66 ourceFileNotJS(f 00033b00: 69 6c 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ile) {. r 00033b10: 65 74 75 72 6e 20 21 69 73 49 6e 4a 53 46 69 6c eturn !isInJSFil 00033b20: 65 28 66 69 6c 65 29 3b 0a 20 20 20 20 7d 0a 20 e(file);. }. 00033b30: 20 20 20 74 73 2e 69 73 53 6f 75 72 63 65 46 69 ts.isSourceFi 00033b40: 6c 65 4e 6f 74 4a 53 20 3d 20 69 73 53 6f 75 72 leNotJS = isSour 00033b50: 63 65 46 69 6c 65 4e 6f 74 4a 53 3b 0a 20 20 20 ceFileNotJS;. 00033b60: 20 66 75 6e 63 74 69 6f 6e 20 69 73 49 6e 4a 53 function isInJS 00033b70: 46 69 6c 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 File(node) {. 00033b80: 20 20 20 20 20 72 65 74 75 72 6e 20 21 21 6e 6f return !!no 00033b90: 64 65 20 26 26 20 21 21 28 6e 6f 64 65 2e 66 6c de && !!(node.fl 00033ba0: 61 67 73 20 26 20 32 36 32 31 34 34 20 2f 2a 20 ags & 262144 /* 00033bb0: 4e 6f 64 65 46 6c 61 67 73 2e 4a 61 76 61 53 63 NodeFlags.JavaSc 00033bc0: 72 69 70 74 46 69 6c 65 20 2a 2f 29 3b 0a 20 20 riptFile */);. 00033bd0: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 49 6e 4a }. ts.isInJ 00033be0: 53 46 69 6c 65 20 3d 20 69 73 49 6e 4a 53 46 69 SFile = isInJSFi 00033bf0: 6c 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e le;. function 00033c00: 20 69 73 49 6e 4a 73 6f 6e 46 69 6c 65 28 6e 6f isInJsonFile(no 00033c10: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 de) {. re 00033c20: 74 75 72 6e 20 21 21 6e 6f 64 65 20 26 26 20 21 turn !!node && ! 00033c30: 21 28 6e 6f 64 65 2e 66 6c 61 67 73 20 26 20 36 !(node.flags & 6 00033c40: 37 31 30 38 38 36 34 20 2f 2a 20 4e 6f 64 65 46 7108864 /* NodeF 00033c50: 6c 61 67 73 2e 4a 73 6f 6e 46 69 6c 65 20 2a 2f lags.JsonFile */ 00033c60: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 00033c70: 69 73 49 6e 4a 73 6f 6e 46 69 6c 65 20 3d 20 69 isInJsonFile = i 00033c80: 73 49 6e 4a 73 6f 6e 46 69 6c 65 3b 0a 20 20 20 sInJsonFile;. 00033c90: 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 6f 75 72 function isSour 00033ca0: 63 65 46 69 6c 65 4e 6f 74 4a 73 6f 6e 28 66 69 ceFileNotJson(fi 00033cb0: 6c 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 le) {. re 00033cc0: 74 75 72 6e 20 21 69 73 4a 73 6f 6e 53 6f 75 72 turn !isJsonSour 00033cd0: 63 65 46 69 6c 65 28 66 69 6c 65 29 3b 0a 20 20 ceFile(file);. 00033ce0: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 53 6f 75 }. ts.isSou 00033cf0: 72 63 65 46 69 6c 65 4e 6f 74 4a 73 6f 6e 20 3d rceFileNotJson = 00033d00: 20 69 73 53 6f 75 72 63 65 46 69 6c 65 4e 6f 74 isSourceFileNot 00033d10: 4a 73 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 Json;. functi 00033d20: 6f 6e 20 69 73 49 6e 4a 53 44 6f 63 28 6e 6f 64 on isInJSDoc(nod 00033d30: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 e) {. ret 00033d40: 75 72 6e 20 21 21 6e 6f 64 65 20 26 26 20 21 21 urn !!node && !! 00033d50: 28 6e 6f 64 65 2e 66 6c 61 67 73 20 26 20 38 33 (node.flags & 83 00033d60: 38 38 36 30 38 20 2f 2a 20 4e 6f 64 65 46 6c 61 88608 /* NodeFla 00033d70: 67 73 2e 4a 53 44 6f 63 20 2a 2f 29 3b 0a 20 20 gs.JSDoc */);. 00033d80: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 49 6e 4a }. ts.isInJ 00033d90: 53 44 6f 63 20 3d 20 69 73 49 6e 4a 53 44 6f 63 SDoc = isInJSDoc 00033da0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 00033db0: 73 4a 53 44 6f 63 49 6e 64 65 78 53 69 67 6e 61 sJSDocIndexSigna 00033dc0: 74 75 72 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 ture(node) {. 00033dd0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 return ts.i 00033de0: 73 54 79 70 65 52 65 66 65 72 65 6e 63 65 4e 6f sTypeReferenceNo 00033df0: 64 65 28 6e 6f 64 65 29 20 26 26 0a 20 20 20 20 de(node) &&. 00033e00: 20 20 20 20 20 20 20 20 74 73 2e 69 73 49 64 65 ts.isIde 00033e10: 6e 74 69 66 69 65 72 28 6e 6f 64 65 2e 74 79 70 ntifier(node.typ 00033e20: 65 4e 61 6d 65 29 20 26 26 0a 20 20 20 20 20 20 eName) &&. 00033e30: 20 20 20 20 20 20 6e 6f 64 65 2e 74 79 70 65 4e node.typeN 00033e40: 61 6d 65 2e 65 73 63 61 70 65 64 54 65 78 74 20 ame.escapedText 00033e50: 3d 3d 3d 20 22 4f 62 6a 65 63 74 22 20 26 26 0a === "Object" &&. 00033e60: 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 node 00033e70: 2e 74 79 70 65 41 72 67 75 6d 65 6e 74 73 20 26 .typeArguments & 00033e80: 26 20 6e 6f 64 65 2e 74 79 70 65 41 72 67 75 6d & node.typeArgum 00033e90: 65 6e 74 73 2e 6c 65 6e 67 74 68 20 3d 3d 3d 20 ents.length === 00033ea0: 32 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 2 &&. 00033eb0: 20 28 6e 6f 64 65 2e 74 79 70 65 41 72 67 75 6d (node.typeArgum 00033ec0: 65 6e 74 73 5b 30 5d 2e 6b 69 6e 64 20 3d 3d 3d ents[0].kind === 00033ed0: 20 31 35 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 150 /* SyntaxKi 00033ee0: 6e 64 2e 53 74 72 69 6e 67 4b 65 79 77 6f 72 64 nd.StringKeyword 00033ef0: 20 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 74 79 70 65 */ || node.type 00033f00: 41 72 67 75 6d 65 6e 74 73 5b 30 5d 2e 6b 69 6e Arguments[0].kin 00033f10: 64 20 3d 3d 3d 20 31 34 37 20 2f 2a 20 53 79 6e d === 147 /* Syn 00033f20: 74 61 78 4b 69 6e 64 2e 4e 75 6d 62 65 72 4b 65 taxKind.NumberKe 00033f30: 79 77 6f 72 64 20 2a 2f 29 3b 0a 20 20 20 20 7d yword */);. } 00033f40: 0a 20 20 20 20 74 73 2e 69 73 4a 53 44 6f 63 49 . ts.isJSDocI 00033f50: 6e 64 65 78 53 69 67 6e 61 74 75 72 65 20 3d 20 ndexSignature = 00033f60: 69 73 4a 53 44 6f 63 49 6e 64 65 78 53 69 67 6e isJSDocIndexSign 00033f70: 61 74 75 72 65 3b 0a 20 20 20 20 66 75 6e 63 74 ature;. funct 00033f80: 69 6f 6e 20 69 73 52 65 71 75 69 72 65 43 61 6c ion isRequireCal 00033f90: 6c 28 63 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e l(callExpression 00033fa0: 2c 20 72 65 71 75 69 72 65 53 74 72 69 6e 67 4c , requireStringL 00033fb0: 69 74 65 72 61 6c 4c 69 6b 65 41 72 67 75 6d 65 iteralLikeArgume 00033fc0: 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 nt) {. if 00033fd0: 20 28 63 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e (callExpression 00033fe0: 2e 6b 69 6e 64 20 21 3d 3d 20 32 30 38 20 2f 2a .kind !== 208 /* 00033ff0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 61 6c 6c SyntaxKind.Call 00034000: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 29 20 7b Expression */) { 00034010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret 00034020: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 urn false;. 00034030: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 76 61 72 }. var 00034040: 20 5f 61 20 3d 20 63 61 6c 6c 45 78 70 72 65 73 _a = callExpres 00034050: 73 69 6f 6e 2c 20 65 78 70 72 65 73 73 69 6f 6e sion, expression 00034060: 20 3d 20 5f 61 2e 65 78 70 72 65 73 73 69 6f 6e = _a.expression 00034070: 2c 20 61 72 67 73 20 3d 20 5f 61 2e 61 72 67 75 , args = _a.argu 00034080: 6d 65 6e 74 73 3b 0a 20 20 20 20 20 20 20 20 69 ments;. i 00034090: 66 20 28 65 78 70 72 65 73 73 69 6f 6e 2e 6b 69 f (expression.ki 000340a0: 6e 64 20 21 3d 3d 20 37 39 20 2f 2a 20 53 79 6e nd !== 79 /* Syn 000340b0: 74 61 78 4b 69 6e 64 2e 49 64 65 6e 74 69 66 69 taxKind.Identifi 000340c0: 65 72 20 2a 2f 20 7c 7c 20 65 78 70 72 65 73 73 er */ || express 000340d0: 69 6f 6e 2e 65 73 63 61 70 65 64 54 65 78 74 20 ion.escapedText 000340e0: 21 3d 3d 20 22 72 65 71 75 69 72 65 22 29 20 7b !== "require") { 000340f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret 00034100: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 20 urn false;. 00034110: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 }. if 00034120: 28 61 72 67 73 2e 6c 65 6e 67 74 68 20 21 3d 3d (args.length !== 00034130: 20 31 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 1) {. 00034140: 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0a return false;. 00034150: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 00034160: 20 20 76 61 72 20 61 72 67 20 3d 20 61 72 67 73 var arg = args 00034170: 5b 30 5d 3b 0a 20 20 20 20 20 20 20 20 72 65 74 [0];. ret 00034180: 75 72 6e 20 21 72 65 71 75 69 72 65 53 74 72 69 urn !requireStri 00034190: 6e 67 4c 69 74 65 72 61 6c 4c 69 6b 65 41 72 67 ngLiteralLikeArg 000341a0: 75 6d 65 6e 74 20 7c 7c 20 74 73 2e 69 73 53 74 ument || ts.isSt 000341b0: 72 69 6e 67 4c 69 74 65 72 61 6c 4c 69 6b 65 28 ringLiteralLike( 000341c0: 61 72 67 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 arg);. }. 000341d0: 74 73 2e 69 73 52 65 71 75 69 72 65 43 61 6c 6c ts.isRequireCall 000341e0: 20 3d 20 69 73 52 65 71 75 69 72 65 43 61 6c 6c = isRequireCall 000341f0: 3b 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a ;. /**. * 00034200: 20 52 65 74 75 72 6e 73 20 74 72 75 65 20 69 66 Returns true if 00034210: 20 74 68 65 20 6e 6f 64 65 20 69 73 20 61 20 56 the node is a V 00034220: 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 ariableDeclarati 00034230: 6f 6e 20 69 6e 69 74 69 61 6c 69 7a 65 64 20 74 on initialized t 00034240: 6f 20 61 20 72 65 71 75 69 72 65 20 63 61 6c 6c o a require call 00034250: 20 28 73 65 65 20 60 69 73 52 65 71 75 69 72 65 (see `isRequire 00034260: 43 61 6c 6c 60 29 2e 0a 20 20 20 20 20 2a 20 54 Call`).. * T 00034270: 68 69 73 20 66 75 6e 63 74 69 6f 6e 20 64 6f 65 his function doe 00034280: 73 20 6e 6f 74 20 74 65 73 74 20 69 66 20 74 68 s not test if th 00034290: 65 20 6e 6f 64 65 20 69 73 20 69 6e 20 61 20 4a e node is in a J 000342a0: 61 76 61 53 63 72 69 70 74 20 66 69 6c 65 20 6f avaScript file o 000342b0: 72 20 6e 6f 74 2e 0a 20 20 20 20 20 2a 2f 0a 20 r not.. */. 000342c0: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 56 61 function isVa 000342d0: 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f riableDeclaratio 000342e0: 6e 49 6e 69 74 69 61 6c 69 7a 65 64 54 6f 52 65 nInitializedToRe 000342f0: 71 75 69 72 65 28 6e 6f 64 65 29 20 7b 0a 20 20 quire(node) {. 00034300: 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 73 56 return isV 00034310: 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 ariableDeclarati 00034320: 6f 6e 49 6e 69 74 69 61 6c 69 7a 65 64 57 69 74 onInitializedWit 00034330: 68 52 65 71 75 69 72 65 48 65 6c 70 65 72 28 6e hRequireHelper(n 00034340: 6f 64 65 2c 20 2f 2a 61 6c 6c 6f 77 41 63 63 65 ode, /*allowAcce 00034350: 73 73 65 64 52 65 71 75 69 72 65 2a 2f 20 66 61 ssedRequire*/ fa 00034360: 6c 73 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 lse);. }. 00034370: 74 73 2e 69 73 56 61 72 69 61 62 6c 65 44 65 63 ts.isVariableDec 00034380: 6c 61 72 61 74 69 6f 6e 49 6e 69 74 69 61 6c 69 larationInitiali 00034390: 7a 65 64 54 6f 52 65 71 75 69 72 65 20 3d 20 69 zedToRequire = i 000343a0: 73 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 sVariableDeclara 000343b0: 74 69 6f 6e 49 6e 69 74 69 61 6c 69 7a 65 64 54 tionInitializedT 000343c0: 6f 52 65 71 75 69 72 65 3b 0a 20 20 20 20 2f 2a oRequire;. /* 000343d0: 2a 0a 20 20 20 20 20 2a 20 4c 69 6b 65 20 7b 40 *. * Like {@ 000343e0: 6c 69 6e 6b 20 69 73 56 61 72 69 61 62 6c 65 44 link isVariableD 000343f0: 65 63 6c 61 72 61 74 69 6f 6e 49 6e 69 74 69 61 eclarationInitia 00034400: 6c 69 7a 65 64 54 6f 52 65 71 75 69 72 65 7d 20 lizedToRequire} 00034410: 62 75 74 20 61 6c 6c 6f 77 73 20 74 68 69 6e 67 but allows thing 00034420: 73 20 6c 69 6b 65 20 60 72 65 71 75 69 72 65 28 s like `require( 00034430: 22 2e 2e 2e 22 29 2e 66 6f 6f 2e 62 61 72 60 20 "...").foo.bar` 00034440: 6f 72 20 60 72 65 71 75 69 72 65 28 22 2e 2e 2e or `require("... 00034450: 22 29 5b 22 62 61 7a 22 5d 60 2e 0a 20 20 20 20 ")["baz"]`.. 00034460: 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e */. function 00034470: 20 69 73 56 61 72 69 61 62 6c 65 44 65 63 6c 61 isVariableDecla 00034480: 72 61 74 69 6f 6e 49 6e 69 74 69 61 6c 69 7a 65 rationInitialize 00034490: 64 54 6f 42 61 72 65 4f 72 41 63 63 65 73 73 65 dToBareOrAccesse 000344a0: 64 52 65 71 75 69 72 65 28 6e 6f 64 65 29 20 7b dRequire(node) { 000344b0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 000344c0: 69 73 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 isVariableDeclar 000344d0: 61 74 69 6f 6e 49 6e 69 74 69 61 6c 69 7a 65 64 ationInitialized 000344e0: 57 69 74 68 52 65 71 75 69 72 65 48 65 6c 70 65 WithRequireHelpe 000344f0: 72 28 6e 6f 64 65 2c 20 2f 2a 61 6c 6c 6f 77 41 r(node, /*allowA 00034500: 63 63 65 73 73 65 64 52 65 71 75 69 72 65 2a 2f ccessedRequire*/ 00034510: 20 74 72 75 65 29 3b 0a 20 20 20 20 7d 0a 20 20 true);. }. 00034520: 20 20 74 73 2e 69 73 56 61 72 69 61 62 6c 65 44 ts.isVariableD 00034530: 65 63 6c 61 72 61 74 69 6f 6e 49 6e 69 74 69 61 eclarationInitia 00034540: 6c 69 7a 65 64 54 6f 42 61 72 65 4f 72 41 63 63 lizedToBareOrAcc 00034550: 65 73 73 65 64 52 65 71 75 69 72 65 20 3d 20 69 essedRequire = i 00034560: 73 56 61 72 69 61 62 6c 65 44 65 63 6c 61 72 61 sVariableDeclara 00034570: 74 69 6f 6e 49 6e 69 74 69 61 6c 69 7a 65 64 54 tionInitializedT 00034580: 6f 42 61 72 65 4f 72 41 63 63 65 73 73 65 64 52 oBareOrAccessedR 00034590: 65 71 75 69 72 65 3b 0a 20 20 20 20 66 75 6e 63 equire;. func 000345a0: 74 69 6f 6e 20 69 73 56 61 72 69 61 62 6c 65 44 tion isVariableD 000345b0: 65 63 6c 61 72 61 74 69 6f 6e 49 6e 69 74 69 61 eclarationInitia 000345c0: 6c 69 7a 65 64 57 69 74 68 52 65 71 75 69 72 65 lizedWithRequire 000345d0: 48 65 6c 70 65 72 28 6e 6f 64 65 2c 20 61 6c 6c Helper(node, all 000345e0: 6f 77 41 63 63 65 73 73 65 64 52 65 71 75 69 72 owAccessedRequir 000345f0: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 e) {. ret 00034600: 75 72 6e 20 74 73 2e 69 73 56 61 72 69 61 62 6c urn ts.isVariabl 00034610: 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 eDeclaration(nod 00034620: 65 29 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 e) &&. 00034630: 20 20 21 21 6e 6f 64 65 2e 69 6e 69 74 69 61 6c !!node.initial 00034640: 69 7a 65 72 20 26 26 0a 20 20 20 20 20 20 20 20 izer &&. 00034650: 20 20 20 20 69 73 52 65 71 75 69 72 65 43 61 6c isRequireCal 00034660: 6c 28 61 6c 6c 6f 77 41 63 63 65 73 73 65 64 52 l(allowAccessedR 00034670: 65 71 75 69 72 65 20 3f 20 67 65 74 4c 65 66 74 equire ? getLeft 00034680: 6d 6f 73 74 41 63 63 65 73 73 45 78 70 72 65 73 mostAccessExpres 00034690: 73 69 6f 6e 28 6e 6f 64 65 2e 69 6e 69 74 69 61 sion(node.initia 000346a0: 6c 69 7a 65 72 29 20 3a 20 6e 6f 64 65 2e 69 6e lizer) : node.in 000346b0: 69 74 69 61 6c 69 7a 65 72 2c 20 2f 2a 72 65 71 itializer, /*req 000346c0: 75 69 72 65 53 74 72 69 6e 67 4c 69 74 65 72 61 uireStringLitera 000346d0: 6c 4c 69 6b 65 41 72 67 75 6d 65 6e 74 2a 2f 20 lLikeArgument*/ 000346e0: 74 72 75 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 true);. }. 000346f0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 52 65 71 75 function isRequ 00034700: 69 72 65 56 61 72 69 61 62 6c 65 53 74 61 74 65 ireVariableState 00034710: 6d 65 6e 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 ment(node) {. 00034720: 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 return ts.i 00034730: 73 56 61 72 69 61 62 6c 65 53 74 61 74 65 6d 65 sVariableStateme 00034740: 6e 74 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 nt(node). 00034750: 20 20 20 20 20 26 26 20 6e 6f 64 65 2e 64 65 63 && node.dec 00034760: 6c 61 72 61 74 69 6f 6e 4c 69 73 74 2e 64 65 63 larationList.dec 00034770: 6c 61 72 61 74 69 6f 6e 73 2e 6c 65 6e 67 74 68 larations.length 00034780: 20 3e 20 30 0a 20 20 20 20 20 20 20 20 20 20 20 > 0. 00034790: 20 26 26 20 74 73 2e 65 76 65 72 79 28 6e 6f 64 && ts.every(nod 000347a0: 65 2e 64 65 63 6c 61 72 61 74 69 6f 6e 4c 69 73 e.declarationLis 000347b0: 74 2e 64 65 63 6c 61 72 61 74 69 6f 6e 73 2c 20 t.declarations, 000347c0: 66 75 6e 63 74 69 6f 6e 20 28 64 65 63 6c 29 20 function (decl) 000347d0: 7b 20 72 65 74 75 72 6e 20 69 73 56 61 72 69 61 { return isVaria 000347e0: 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 49 6e bleDeclarationIn 000347f0: 69 74 69 61 6c 69 7a 65 64 54 6f 52 65 71 75 69 itializedToRequi 00034800: 72 65 28 64 65 63 6c 29 3b 20 7d 29 3b 0a 20 20 re(decl); });. 00034810: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 52 65 71 }. ts.isReq 00034820: 75 69 72 65 56 61 72 69 61 62 6c 65 53 74 61 74 uireVariableStat 00034830: 65 6d 65 6e 74 20 3d 20 69 73 52 65 71 75 69 72 ement = isRequir 00034840: 65 56 61 72 69 61 62 6c 65 53 74 61 74 65 6d 65 eVariableStateme 00034850: 6e 74 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e nt;. function 00034860: 20 69 73 53 69 6e 67 6c 65 4f 72 44 6f 75 62 6c isSingleOrDoubl 00034870: 65 51 75 6f 74 65 28 63 68 61 72 43 6f 64 65 29 eQuote(charCode) 00034880: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00034890: 6e 20 63 68 61 72 43 6f 64 65 20 3d 3d 3d 20 33 n charCode === 3 000348a0: 39 20 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 9 /* CharacterCo 000348b0: 64 65 73 2e 73 69 6e 67 6c 65 51 75 6f 74 65 20 des.singleQuote 000348c0: 2a 2f 20 7c 7c 20 63 68 61 72 43 6f 64 65 20 3d */ || charCode = 000348d0: 3d 3d 20 33 34 20 2f 2a 20 43 68 61 72 61 63 74 == 34 /* Charact 000348e0: 65 72 43 6f 64 65 73 2e 64 6f 75 62 6c 65 51 75 erCodes.doubleQu 000348f0: 6f 74 65 20 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 ote */;. }. 00034900: 20 20 74 73 2e 69 73 53 69 6e 67 6c 65 4f 72 44 ts.isSingleOrD 00034910: 6f 75 62 6c 65 51 75 6f 74 65 20 3d 20 69 73 53 oubleQuote = isS 00034920: 69 6e 67 6c 65 4f 72 44 6f 75 62 6c 65 51 75 6f ingleOrDoubleQuo 00034930: 74 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e te;. function 00034940: 20 69 73 53 74 72 69 6e 67 44 6f 75 62 6c 65 51 isStringDoubleQ 00034950: 75 6f 74 65 64 28 73 74 72 2c 20 73 6f 75 72 63 uoted(str, sourc 00034960: 65 46 69 6c 65 29 20 7b 0a 20 20 20 20 20 20 20 eFile) {. 00034970: 20 72 65 74 75 72 6e 20 67 65 74 53 6f 75 72 63 return getSourc 00034980: 65 54 65 78 74 4f 66 4e 6f 64 65 46 72 6f 6d 53 eTextOfNodeFromS 00034990: 6f 75 72 63 65 46 69 6c 65 28 73 6f 75 72 63 65 ourceFile(source 000349a0: 46 69 6c 65 2c 20 73 74 72 29 2e 63 68 61 72 43 File, str).charC 000349b0: 6f 64 65 41 74 28 30 29 20 3d 3d 3d 20 33 34 20 odeAt(0) === 34 000349c0: 2f 2a 20 43 68 61 72 61 63 74 65 72 43 6f 64 65 /* CharacterCode 000349d0: 73 2e 64 6f 75 62 6c 65 51 75 6f 74 65 20 2a 2f s.doubleQuote */ 000349e0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 ;. }. ts.i 000349f0: 73 53 74 72 69 6e 67 44 6f 75 62 6c 65 51 75 6f sStringDoubleQuo 00034a00: 74 65 64 20 3d 20 69 73 53 74 72 69 6e 67 44 6f ted = isStringDo 00034a10: 75 62 6c 65 51 75 6f 74 65 64 3b 0a 20 20 20 20 ubleQuoted;. 00034a20: 66 75 6e 63 74 69 6f 6e 20 69 73 41 73 73 69 67 function isAssig 00034a30: 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e nmentDeclaration 00034a40: 28 64 65 63 6c 29 20 7b 0a 20 20 20 20 20 20 20 (decl) {. 00034a50: 20 72 65 74 75 72 6e 20 74 73 2e 69 73 42 69 6e return ts.isBin 00034a60: 61 72 79 45 78 70 72 65 73 73 69 6f 6e 28 64 65 aryExpression(de 00034a70: 63 6c 29 20 7c 7c 20 69 73 41 63 63 65 73 73 45 cl) || isAccessE 00034a80: 78 70 72 65 73 73 69 6f 6e 28 64 65 63 6c 29 20 xpression(decl) 00034a90: 7c 7c 20 74 73 2e 69 73 49 64 65 6e 74 69 66 69 || ts.isIdentifi 00034aa0: 65 72 28 64 65 63 6c 29 20 7c 7c 20 74 73 2e 69 er(decl) || ts.i 00034ab0: 73 43 61 6c 6c 45 78 70 72 65 73 73 69 6f 6e 28 sCallExpression( 00034ac0: 64 65 63 6c 29 3b 0a 20 20 20 20 7d 0a 20 20 20 decl);. }. 00034ad0: 20 74 73 2e 69 73 41 73 73 69 67 6e 6d 65 6e 74 ts.isAssignment 00034ae0: 44 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 69 73 Declaration = is 00034af0: 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 AssignmentDeclar 00034b00: 61 74 69 6f 6e 3b 0a 20 20 20 20 2f 2a 2a 20 47 ation;. /** G 00034b10: 65 74 20 74 68 65 20 69 6e 69 74 69 61 6c 69 7a et the initializ 00034b20: 65 72 2c 20 74 61 6b 69 6e 67 20 69 6e 74 6f 20 er, taking into 00034b30: 61 63 63 6f 75 6e 74 20 64 65 66 61 75 6c 74 65 account defaulte 00034b40: 64 20 4a 61 76 61 73 63 72 69 70 74 20 69 6e 69 d Javascript ini 00034b50: 74 69 61 6c 69 7a 65 72 73 20 2a 2f 0a 20 20 20 tializers */. 00034b60: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 45 66 66 function getEff 00034b70: 65 63 74 69 76 65 49 6e 69 74 69 61 6c 69 7a 65 ectiveInitialize 00034b80: 72 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 r(node) {. 00034b90: 20 20 69 66 20 28 69 73 49 6e 4a 53 46 69 6c 65 if (isInJSFile 00034ba0: 28 6e 6f 64 65 29 20 26 26 20 6e 6f 64 65 2e 69 (node) && node.i 00034bb0: 6e 69 74 69 61 6c 69 7a 65 72 20 26 26 0a 20 20 nitializer &&. 00034bc0: 20 20 20 20 20 20 20 20 20 20 74 73 2e 69 73 42 ts.isB 00034bd0: 69 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e 28 inaryExpression( 00034be0: 6e 6f 64 65 2e 69 6e 69 74 69 61 6c 69 7a 65 72 node.initializer 00034bf0: 29 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 ) &&. 00034c00: 20 28 6e 6f 64 65 2e 69 6e 69 74 69 61 6c 69 7a (node.initializ 00034c10: 65 72 2e 6f 70 65 72 61 74 6f 72 54 6f 6b 65 6e er.operatorToken 00034c20: 2e 6b 69 6e 64 20 3d 3d 3d 20 35 36 20 2f 2a 20 .kind === 56 /* 00034c30: 53 79 6e 74 61 78 4b 69 6e 64 2e 42 61 72 42 61 SyntaxKind.BarBa 00034c40: 72 54 6f 6b 65 6e 20 2a 2f 20 7c 7c 20 6e 6f 64 rToken */ || nod 00034c50: 65 2e 69 6e 69 74 69 61 6c 69 7a 65 72 2e 6f 70 e.initializer.op 00034c60: 65 72 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 6e 64 eratorToken.kind 00034c70: 20 3d 3d 3d 20 36 30 20 2f 2a 20 53 79 6e 74 61 === 60 /* Synta 00034c80: 78 4b 69 6e 64 2e 51 75 65 73 74 69 6f 6e 51 75 xKind.QuestionQu 00034c90: 65 73 74 69 6f 6e 54 6f 6b 65 6e 20 2a 2f 29 20 estionToken */) 00034ca0: 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e &&. n 00034cb0: 6f 64 65 2e 6e 61 6d 65 20 26 26 20 69 73 45 6e ode.name && isEn 00034cc0: 74 69 74 79 4e 61 6d 65 45 78 70 72 65 73 73 69 tityNameExpressi 00034cd0: 6f 6e 28 6e 6f 64 65 2e 6e 61 6d 65 29 20 26 26 on(node.name) && 00034ce0: 20 69 73 53 61 6d 65 45 6e 74 69 74 79 4e 61 6d isSameEntityNam 00034cf0: 65 28 6e 6f 64 65 2e 6e 61 6d 65 2c 20 6e 6f 64 e(node.name, nod 00034d00: 65 2e 69 6e 69 74 69 61 6c 69 7a 65 72 2e 6c 65 e.initializer.le 00034d10: 66 74 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ft)) {. 00034d20: 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 69 return node.i 00034d30: 6e 69 74 69 61 6c 69 7a 65 72 2e 72 69 67 68 74 nitializer.right 00034d40: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 00034d50: 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e return node. 00034d60: 69 6e 69 74 69 61 6c 69 7a 65 72 3b 0a 20 20 20 initializer;. 00034d70: 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 45 66 66 }. ts.getEff 00034d80: 65 63 74 69 76 65 49 6e 69 74 69 61 6c 69 7a 65 ectiveInitialize 00034d90: 72 20 3d 20 67 65 74 45 66 66 65 63 74 69 76 65 r = getEffective 00034da0: 49 6e 69 74 69 61 6c 69 7a 65 72 3b 0a 20 20 20 Initializer;. 00034db0: 20 2f 2a 2a 20 47 65 74 20 74 68 65 20 64 65 63 /** Get the dec 00034dc0: 6c 61 72 61 74 69 6f 6e 20 69 6e 69 74 69 61 6c laration initial 00034dd0: 69 7a 65 72 20 77 68 65 6e 20 69 74 20 69 73 20 izer when it is 00034de0: 63 6f 6e 74 61 69 6e 65 72 2d 6c 69 6b 65 20 28 container-like ( 00034df0: 53 65 65 20 67 65 74 45 78 70 61 6e 64 6f 49 6e See getExpandoIn 00034e00: 69 74 69 61 6c 69 7a 65 72 29 2e 20 2a 2f 0a 20 itializer). */. 00034e10: 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 44 function getD 00034e20: 65 63 6c 61 72 65 64 45 78 70 61 6e 64 6f 49 6e eclaredExpandoIn 00034e30: 69 74 69 61 6c 69 7a 65 72 28 6e 6f 64 65 29 20 itializer(node) 00034e40: 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 69 6e {. var in 00034e50: 69 74 20 3d 20 67 65 74 45 66 66 65 63 74 69 76 it = getEffectiv 00034e60: 65 49 6e 69 74 69 61 6c 69 7a 65 72 28 6e 6f 64 eInitializer(nod 00034e70: 65 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 e);. retu 00034e80: 72 6e 20 69 6e 69 74 20 26 26 20 67 65 74 45 78 rn init && getEx 00034e90: 70 61 6e 64 6f 49 6e 69 74 69 61 6c 69 7a 65 72 pandoInitializer 00034ea0: 28 69 6e 69 74 2c 20 69 73 50 72 6f 74 6f 74 79 (init, isPrototy 00034eb0: 70 65 41 63 63 65 73 73 28 6e 6f 64 65 2e 6e 61 peAccess(node.na 00034ec0: 6d 65 29 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 me));. }. 00034ed0: 74 73 2e 67 65 74 44 65 63 6c 61 72 65 64 45 78 ts.getDeclaredEx 00034ee0: 70 61 6e 64 6f 49 6e 69 74 69 61 6c 69 7a 65 72 pandoInitializer 00034ef0: 20 3d 20 67 65 74 44 65 63 6c 61 72 65 64 45 78 = getDeclaredEx 00034f00: 70 61 6e 64 6f 49 6e 69 74 69 61 6c 69 7a 65 72 pandoInitializer 00034f10: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 68 ;. function h 00034f20: 61 73 45 78 70 61 6e 64 6f 56 61 6c 75 65 50 72 asExpandoValuePr 00034f30: 6f 70 65 72 74 79 28 6e 6f 64 65 2c 20 69 73 50 operty(node, isP 00034f40: 72 6f 74 6f 74 79 70 65 41 73 73 69 67 6e 6d 65 rototypeAssignme 00034f50: 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 nt) {. re 00034f60: 74 75 72 6e 20 74 73 2e 66 6f 72 45 61 63 68 28 turn ts.forEach( 00034f70: 6e 6f 64 65 2e 70 72 6f 70 65 72 74 69 65 73 2c node.properties, 00034f80: 20 66 75 6e 63 74 69 6f 6e 20 28 70 29 20 7b 0a function (p) {. 00034f90: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00034fa0: 72 6e 20 74 73 2e 69 73 50 72 6f 70 65 72 74 79 rn ts.isProperty 00034fb0: 41 73 73 69 67 6e 6d 65 6e 74 28 70 29 20 26 26 Assignment(p) && 00034fc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00034fd0: 20 74 73 2e 69 73 49 64 65 6e 74 69 66 69 65 72 ts.isIdentifier 00034fe0: 28 70 2e 6e 61 6d 65 29 20 26 26 0a 20 20 20 20 (p.name) &&. 00034ff0: 20 20 20 20 20 20 20 20 20 20 20 20 70 2e 6e 61 p.na 00035000: 6d 65 2e 65 73 63 61 70 65 64 54 65 78 74 20 3d me.escapedText = 00035010: 3d 3d 20 22 76 61 6c 75 65 22 20 26 26 0a 20 20 == "value" &&. 00035020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 2e p. 00035030: 69 6e 69 74 69 61 6c 69 7a 65 72 20 26 26 0a 20 initializer &&. 00035040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 g 00035050: 65 74 45 78 70 61 6e 64 6f 49 6e 69 74 69 61 6c etExpandoInitial 00035060: 69 7a 65 72 28 70 2e 69 6e 69 74 69 61 6c 69 7a izer(p.initializ 00035070: 65 72 2c 20 69 73 50 72 6f 74 6f 74 79 70 65 41 er, isPrototypeA 00035080: 73 73 69 67 6e 6d 65 6e 74 29 3b 0a 20 20 20 20 ssignment);. 00035090: 20 20 20 20 7d 29 3b 0a 20 20 20 20 7d 0a 20 20 });. }. 000350a0: 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 47 65 74 /**. * Get 000350b0: 20 74 68 65 20 61 73 73 69 67 6e 6d 65 6e 74 20 the assignment 000350c0: 27 69 6e 69 74 69 61 6c 69 7a 65 72 27 20 2d 2d 'initializer' -- 000350d0: 20 74 68 65 20 72 69 67 68 74 68 61 6e 64 20 73 the righthand s 000350e0: 69 64 65 2d 2d 20 77 68 65 6e 20 74 68 65 20 69 ide-- when the i 000350f0: 6e 69 74 69 61 6c 69 7a 65 72 20 69 73 20 63 6f nitializer is co 00035100: 6e 74 61 69 6e 65 72 2d 6c 69 6b 65 20 28 53 65 ntainer-like (Se 00035110: 65 20 67 65 74 45 78 70 61 6e 64 6f 49 6e 69 74 e getExpandoInit 00035120: 69 61 6c 69 7a 65 72 29 2e 0a 20 20 20 20 20 2a ializer).. * 00035130: 20 57 65 20 74 72 65 61 74 20 74 68 65 20 72 69 We treat the ri 00035140: 67 68 74 20 68 61 6e 64 20 73 69 64 65 20 6f 66 ght hand side of 00035150: 20 61 73 73 69 67 6e 6d 65 6e 74 73 20 77 69 74 assignments wit 00035160: 68 20 63 6f 6e 74 61 69 6e 65 72 2d 6c 69 6b 65 h container-like 00035170: 20 69 6e 69 74 69 61 6c 69 7a 65 72 73 20 61 73 initializers as 00035180: 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 2e 0a 20 declarations.. 00035190: 20 20 20 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 */. funct 000351a0: 69 6f 6e 20 67 65 74 41 73 73 69 67 6e 65 64 45 ion getAssignedE 000351b0: 78 70 61 6e 64 6f 49 6e 69 74 69 61 6c 69 7a 65 xpandoInitialize 000351c0: 72 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 r(node) {. 000351d0: 20 20 69 66 20 28 6e 6f 64 65 20 26 26 20 6e 6f if (node && no 000351e0: 64 65 2e 70 61 72 65 6e 74 20 26 26 20 74 73 2e de.parent && ts. 000351f0: 69 73 42 69 6e 61 72 79 45 78 70 72 65 73 73 69 isBinaryExpressi 00035200: 6f 6e 28 6e 6f 64 65 2e 70 61 72 65 6e 74 29 20 on(node.parent) 00035210: 26 26 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6f && node.parent.o 00035220: 70 65 72 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 6e peratorToken.kin 00035230: 64 20 3d 3d 3d 20 36 33 20 2f 2a 20 53 79 6e 74 d === 63 /* Synt 00035240: 61 78 4b 69 6e 64 2e 45 71 75 61 6c 73 54 6f 6b axKind.EqualsTok 00035250: 65 6e 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 en */) {. 00035260: 20 20 20 20 20 76 61 72 20 69 73 50 72 6f 74 6f var isProto 00035270: 74 79 70 65 41 73 73 69 67 6e 6d 65 6e 74 20 3d typeAssignment = 00035280: 20 69 73 50 72 6f 74 6f 74 79 70 65 41 63 63 65 isPrototypeAcce 00035290: 73 73 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6c ss(node.parent.l 000352a0: 65 66 74 29 3b 0a 20 20 20 20 20 20 20 20 20 20 eft);. 000352b0: 20 20 72 65 74 75 72 6e 20 67 65 74 45 78 70 61 return getExpa 000352c0: 6e 64 6f 49 6e 69 74 69 61 6c 69 7a 65 72 28 6e ndoInitializer(n 000352d0: 6f 64 65 2e 70 61 72 65 6e 74 2e 72 69 67 68 74 ode.parent.right 000352e0: 2c 20 69 73 50 72 6f 74 6f 74 79 70 65 41 73 73 , isPrototypeAss 000352f0: 69 67 6e 6d 65 6e 74 29 20 7c 7c 0a 20 20 20 20 ignment) ||. 00035300: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 44 getD 00035310: 65 66 61 75 6c 74 65 64 45 78 70 61 6e 64 6f 49 efaultedExpandoI 00035320: 6e 69 74 69 61 6c 69 7a 65 72 28 6e 6f 64 65 2e nitializer(node. 00035330: 70 61 72 65 6e 74 2e 6c 65 66 74 2c 20 6e 6f 64 parent.left, nod 00035340: 65 2e 70 61 72 65 6e 74 2e 72 69 67 68 74 2c 20 e.parent.right, 00035350: 69 73 50 72 6f 74 6f 74 79 70 65 41 73 73 69 67 isPrototypeAssig 00035360: 6e 6d 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 nment);. 00035370: 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f }. if (no 00035380: 64 65 20 26 26 20 74 73 2e 69 73 43 61 6c 6c 45 de && ts.isCallE 00035390: 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 xpression(node) 000353a0: 26 26 20 69 73 42 69 6e 64 61 62 6c 65 4f 62 6a && isBindableObj 000353b0: 65 63 74 44 65 66 69 6e 65 50 72 6f 70 65 72 74 ectDefinePropert 000353c0: 79 43 61 6c 6c 28 6e 6f 64 65 29 29 20 7b 0a 20 yCall(node)) {. 000353d0: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 72 var r 000353e0: 65 73 75 6c 74 20 3d 20 68 61 73 45 78 70 61 6e esult = hasExpan 000353f0: 64 6f 56 61 6c 75 65 50 72 6f 70 65 72 74 79 28 doValueProperty( 00035400: 6e 6f 64 65 2e 61 72 67 75 6d 65 6e 74 73 5b 32 node.arguments[2 00035410: 5d 2c 20 6e 6f 64 65 2e 61 72 67 75 6d 65 6e 74 ], node.argument 00035420: 73 5b 31 5d 2e 74 65 78 74 20 3d 3d 3d 20 22 70 s[1].text === "p 00035430: 72 6f 74 6f 74 79 70 65 22 29 3b 0a 20 20 20 20 rototype");. 00035440: 20 20 20 20 20 20 20 20 69 66 20 28 72 65 73 75 if (resu 00035450: 6c 74 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 lt) {. 00035460: 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 return res 00035470: 75 6c 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ult;. 00035480: 20 7d 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 }. }. 00035490: 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 41 73 73 }. ts.getAss 000354a0: 69 67 6e 65 64 45 78 70 61 6e 64 6f 49 6e 69 74 ignedExpandoInit 000354b0: 69 61 6c 69 7a 65 72 20 3d 20 67 65 74 41 73 73 ializer = getAss 000354c0: 69 67 6e 65 64 45 78 70 61 6e 64 6f 49 6e 69 74 ignedExpandoInit 000354d0: 69 61 6c 69 7a 65 72 3b 0a 20 20 20 20 2f 2a 2a ializer;. /** 000354e0: 0a 20 20 20 20 20 2a 20 52 65 63 6f 67 6e 69 7a . * Recogniz 000354f0: 65 64 20 65 78 70 61 6e 64 6f 20 69 6e 69 74 69 ed expando initi 00035500: 61 6c 69 7a 65 72 73 20 61 72 65 3a 0a 20 20 20 alizers are:. 00035510: 20 20 2a 20 31 2e 20 28 66 75 6e 63 74 69 6f 6e * 1. (function 00035520: 28 29 20 7b 7d 29 28 29 20 2d 2d 20 49 49 46 45 () {})() -- IIFE 00035530: 73 0a 20 20 20 20 20 2a 20 32 2e 20 66 75 6e 63 s. * 2. func 00035540: 74 69 6f 6e 28 29 20 7b 20 7d 20 2d 2d 20 46 75 tion() { } -- Fu 00035550: 6e 63 74 69 6f 6e 20 65 78 70 72 65 73 73 69 6f nction expressio 00035560: 6e 73 0a 20 20 20 20 20 2a 20 33 2e 20 63 6c 61 ns. * 3. cla 00035570: 73 73 20 7b 20 7d 20 2d 2d 20 43 6c 61 73 73 20 ss { } -- Class 00035580: 65 78 70 72 65 73 73 69 6f 6e 73 0a 20 20 20 20 expressions. 00035590: 20 2a 20 34 2e 20 7b 7d 20 2d 2d 20 45 6d 70 74 * 4. {} -- Empt 000355a0: 79 20 6f 62 6a 65 63 74 20 6c 69 74 65 72 61 6c y object literal 000355b0: 73 0a 20 20 20 20 20 2a 20 35 2e 20 7b 20 2e 2e s. * 5. { .. 000355c0: 2e 20 7d 20 2d 2d 20 4e 6f 6e 2d 65 6d 70 74 79 . } -- Non-empty 000355d0: 20 6f 62 6a 65 63 74 20 6c 69 74 65 72 61 6c 73 object literals 000355e0: 2c 20 77 68 65 6e 20 75 73 65 64 20 74 6f 20 69 , when used to i 000355f0: 6e 69 74 69 61 6c 69 7a 65 20 61 20 70 72 6f 74 nitialize a prot 00035600: 6f 74 79 70 65 2c 20 6c 69 6b 65 20 60 43 2e 70 otype, like `C.p 00035610: 72 6f 74 6f 74 79 70 65 20 3d 20 7b 20 6d 28 29 rototype = { m() 00035620: 20 7b 20 7d 20 7d 60 0a 20 20 20 20 20 2a 0a 20 { } }`. *. 00035630: 20 20 20 20 2a 20 54 68 69 73 20 66 75 6e 63 74 * This funct 00035640: 69 6f 6e 20 72 65 74 75 72 6e 73 20 74 68 65 20 ion returns the 00035650: 70 72 6f 76 69 64 65 64 20 69 6e 69 74 69 61 6c provided initial 00035660: 69 7a 65 72 2c 20 6f 72 20 75 6e 64 65 66 69 6e izer, or undefin 00035670: 65 64 20 69 66 20 69 74 20 69 73 20 6e 6f 74 20 ed if it is not 00035680: 76 61 6c 69 64 2e 0a 20 20 20 20 20 2a 2f 0a 20 valid.. */. 00035690: 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 45 function getE 000356a0: 78 70 61 6e 64 6f 49 6e 69 74 69 61 6c 69 7a 65 xpandoInitialize 000356b0: 72 28 69 6e 69 74 69 61 6c 69 7a 65 72 2c 20 69 r(initializer, i 000356c0: 73 50 72 6f 74 6f 74 79 70 65 41 73 73 69 67 6e sPrototypeAssign 000356d0: 6d 65 6e 74 29 20 7b 0a 20 20 20 20 20 20 20 20 ment) {. 000356e0: 69 66 20 28 74 73 2e 69 73 43 61 6c 6c 45 78 70 if (ts.isCallExp 000356f0: 72 65 73 73 69 6f 6e 28 69 6e 69 74 69 61 6c 69 ression(initiali 00035700: 7a 65 72 29 29 20 7b 0a 20 20 20 20 20 20 20 20 zer)) {. 00035710: 20 20 20 20 76 61 72 20 65 20 3d 20 73 6b 69 70 var e = skip 00035720: 50 61 72 65 6e 74 68 65 73 65 73 28 69 6e 69 74 Parentheses(init 00035730: 69 61 6c 69 7a 65 72 2e 65 78 70 72 65 73 73 69 ializer.expressi 00035740: 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 on);. 00035750: 20 72 65 74 75 72 6e 20 65 2e 6b 69 6e 64 20 3d return e.kind = 00035760: 3d 3d 20 32 31 33 20 2f 2a 20 53 79 6e 74 61 78 == 213 /* Syntax 00035770: 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 45 78 70 Kind.FunctionExp 00035780: 72 65 73 73 69 6f 6e 20 2a 2f 20 7c 7c 20 65 2e ression */ || e. 00035790: 6b 69 6e 64 20 3d 3d 3d 20 32 31 34 20 2f 2a 20 kind === 214 /* 000357a0: 53 79 6e 74 61 78 4b 69 6e 64 2e 41 72 72 6f 77 SyntaxKind.Arrow 000357b0: 46 75 6e 63 74 69 6f 6e 20 2a 2f 20 3f 20 69 6e Function */ ? in 000357c0: 69 74 69 61 6c 69 7a 65 72 20 3a 20 75 6e 64 65 itializer : unde 000357d0: 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 7d fined;. } 000357e0: 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 6e 69 . if (ini 000357f0: 74 69 61 6c 69 7a 65 72 2e 6b 69 6e 64 20 3d 3d tializer.kind == 00035800: 3d 20 32 31 33 20 2f 2a 20 53 79 6e 74 61 78 4b = 213 /* SyntaxK 00035810: 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 45 78 70 72 ind.FunctionExpr 00035820: 65 73 73 69 6f 6e 20 2a 2f 20 7c 7c 0a 20 20 20 ession */ ||. 00035830: 20 20 20 20 20 20 20 20 20 69 6e 69 74 69 61 6c initial 00035840: 69 7a 65 72 2e 6b 69 6e 64 20 3d 3d 3d 20 32 32 izer.kind === 22 00035850: 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 6 /* SyntaxKind. 00035860: 43 6c 61 73 73 45 78 70 72 65 73 73 69 6f 6e 20 ClassExpression 00035870: 2a 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 */ ||. 00035880: 20 20 69 6e 69 74 69 61 6c 69 7a 65 72 2e 6b 69 initializer.ki 00035890: 6e 64 20 3d 3d 3d 20 32 31 34 20 2f 2a 20 53 79 nd === 214 /* Sy 000358a0: 6e 74 61 78 4b 69 6e 64 2e 41 72 72 6f 77 46 75 ntaxKind.ArrowFu 000358b0: 6e 63 74 69 6f 6e 20 2a 2f 29 20 7b 0a 20 20 20 nction */) {. 000358c0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 000358d0: 69 6e 69 74 69 61 6c 69 7a 65 72 3b 0a 20 20 20 initializer;. 000358e0: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 }. i 000358f0: 66 20 28 74 73 2e 69 73 4f 62 6a 65 63 74 4c 69 f (ts.isObjectLi 00035900: 74 65 72 61 6c 45 78 70 72 65 73 73 69 6f 6e 28 teralExpression( 00035910: 69 6e 69 74 69 61 6c 69 7a 65 72 29 20 26 26 20 initializer) && 00035920: 28 69 6e 69 74 69 61 6c 69 7a 65 72 2e 70 72 6f (initializer.pro 00035930: 70 65 72 74 69 65 73 2e 6c 65 6e 67 74 68 20 3d perties.length = 00035940: 3d 3d 20 30 20 7c 7c 20 69 73 50 72 6f 74 6f 74 == 0 || isProtot 00035950: 79 70 65 41 73 73 69 67 6e 6d 65 6e 74 29 29 20 ypeAssignment)) 00035960: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 {. re 00035970: 74 75 72 6e 20 69 6e 69 74 69 61 6c 69 7a 65 72 turn initializer 00035980: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 00035990: 7d 0a 20 20 20 20 74 73 2e 67 65 74 45 78 70 61 }. ts.getExpa 000359a0: 6e 64 6f 49 6e 69 74 69 61 6c 69 7a 65 72 20 3d ndoInitializer = 000359b0: 20 67 65 74 45 78 70 61 6e 64 6f 49 6e 69 74 69 getExpandoIniti 000359c0: 61 6c 69 7a 65 72 3b 0a 20 20 20 20 2f 2a 2a 0a alizer;. /**. 000359d0: 20 20 20 20 20 2a 20 41 20 64 65 66 61 75 6c 74 * A default 000359e0: 65 64 20 65 78 70 61 6e 64 6f 20 69 6e 69 74 69 ed expando initi 000359f0: 61 6c 69 7a 65 72 20 6d 61 74 63 68 65 73 20 74 alizer matches t 00035a00: 68 65 20 70 61 74 74 65 72 6e 0a 20 20 20 20 20 he pattern. 00035a10: 2a 20 60 4c 68 73 20 3d 20 4c 68 73 20 7c 7c 20 * `Lhs = Lhs || 00035a20: 45 78 70 61 6e 64 6f 49 6e 69 74 69 61 6c 69 7a ExpandoInitializ 00035a30: 65 72 60 0a 20 20 20 20 20 2a 20 6f 72 20 60 76 er`. * or `v 00035a40: 61 72 20 4c 68 73 20 3d 20 4c 68 73 20 7c 7c 20 ar Lhs = Lhs || 00035a50: 45 78 70 61 6e 64 6f 49 6e 69 74 69 61 6c 69 7a ExpandoInitializ 00035a60: 65 72 60 0a 20 20 20 20 20 2a 0a 20 20 20 20 20 er`. *. 00035a70: 2a 20 54 68 65 20 73 65 63 6f 6e 64 20 4c 68 73 * The second Lhs 00035a80: 20 69 73 20 72 65 71 75 69 72 65 64 20 74 6f 20 is required to 00035a90: 62 65 20 74 68 65 20 73 61 6d 65 20 61 73 20 74 be the same as t 00035aa0: 68 65 20 66 69 72 73 74 20 65 78 63 65 70 74 20 he first except 00035ab0: 74 68 61 74 20 69 74 20 6d 61 79 20 62 65 20 70 that it may be p 00035ac0: 72 65 66 69 78 65 64 20 77 69 74 68 0a 20 20 20 refixed with. 00035ad0: 20 20 2a 20 27 77 69 6e 64 6f 77 2e 27 2c 20 27 * 'window.', ' 00035ae0: 67 6c 6f 62 61 6c 2e 27 20 6f 72 20 27 73 65 6c global.' or 'sel 00035af0: 66 2e 27 20 54 68 65 20 73 65 63 6f 6e 64 20 4c f.' The second L 00035b00: 68 73 20 69 73 20 6f 74 68 65 72 77 69 73 65 20 hs is otherwise 00035b10: 69 67 6e 6f 72 65 64 20 62 79 20 74 68 65 20 62 ignored by the b 00035b20: 69 6e 64 65 72 20 61 6e 64 20 63 68 65 63 6b 65 inder and checke 00035b30: 72 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 r.. */. f 00035b40: 75 6e 63 74 69 6f 6e 20 67 65 74 44 65 66 61 75 unction getDefau 00035b50: 6c 74 65 64 45 78 70 61 6e 64 6f 49 6e 69 74 69 ltedExpandoIniti 00035b60: 61 6c 69 7a 65 72 28 6e 61 6d 65 2c 20 69 6e 69 alizer(name, ini 00035b70: 74 69 61 6c 69 7a 65 72 2c 20 69 73 50 72 6f 74 tializer, isProt 00035b80: 6f 74 79 70 65 41 73 73 69 67 6e 6d 65 6e 74 29 otypeAssignment) 00035b90: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 65 {. var e 00035ba0: 20 3d 20 74 73 2e 69 73 42 69 6e 61 72 79 45 78 = ts.isBinaryEx 00035bb0: 70 72 65 73 73 69 6f 6e 28 69 6e 69 74 69 61 6c pression(initial 00035bc0: 69 7a 65 72 29 0a 20 20 20 20 20 20 20 20 20 20 izer). 00035bd0: 20 20 26 26 20 28 69 6e 69 74 69 61 6c 69 7a 65 && (initialize 00035be0: 72 2e 6f 70 65 72 61 74 6f 72 54 6f 6b 65 6e 2e r.operatorToken. 00035bf0: 6b 69 6e 64 20 3d 3d 3d 20 35 36 20 2f 2a 20 53 kind === 56 /* S 00035c00: 79 6e 74 61 78 4b 69 6e 64 2e 42 61 72 42 61 72 yntaxKind.BarBar 00035c10: 54 6f 6b 65 6e 20 2a 2f 20 7c 7c 20 69 6e 69 74 Token */ || init 00035c20: 69 61 6c 69 7a 65 72 2e 6f 70 65 72 61 74 6f 72 ializer.operator 00035c30: 54 6f 6b 65 6e 2e 6b 69 6e 64 20 3d 3d 3d 20 36 Token.kind === 6 00035c40: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 00035c50: 51 75 65 73 74 69 6f 6e 51 75 65 73 74 69 6f 6e QuestionQuestion 00035c60: 54 6f 6b 65 6e 20 2a 2f 29 0a 20 20 20 20 20 20 Token */). 00035c70: 20 20 20 20 20 20 26 26 20 67 65 74 45 78 70 61 && getExpa 00035c80: 6e 64 6f 49 6e 69 74 69 61 6c 69 7a 65 72 28 69 ndoInitializer(i 00035c90: 6e 69 74 69 61 6c 69 7a 65 72 2e 72 69 67 68 74 nitializer.right 00035ca0: 2c 20 69 73 50 72 6f 74 6f 74 79 70 65 41 73 73 , isPrototypeAss 00035cb0: 69 67 6e 6d 65 6e 74 29 3b 0a 20 20 20 20 20 20 ignment);. 00035cc0: 20 20 69 66 20 28 65 20 26 26 20 69 73 53 61 6d if (e && isSam 00035cd0: 65 45 6e 74 69 74 79 4e 61 6d 65 28 6e 61 6d 65 eEntityName(name 00035ce0: 2c 20 69 6e 69 74 69 61 6c 69 7a 65 72 2e 6c 65 , initializer.le 00035cf0: 66 74 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ft)) {. 00035d00: 20 20 20 72 65 74 75 72 6e 20 65 3b 0a 20 20 20 return e;. 00035d10: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 }. }. 00035d20: 20 66 75 6e 63 74 69 6f 6e 20 69 73 44 65 66 61 function isDefa 00035d30: 75 6c 74 65 64 45 78 70 61 6e 64 6f 49 6e 69 74 ultedExpandoInit 00035d40: 69 61 6c 69 7a 65 72 28 6e 6f 64 65 29 20 7b 0a ializer(node) {. 00035d50: 20 20 20 20 20 20 20 20 76 61 72 20 6e 61 6d 65 var name 00035d60: 20 3d 20 74 73 2e 69 73 56 61 72 69 61 62 6c 65 = ts.isVariable 00035d70: 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 Declaration(node 00035d80: 2e 70 61 72 65 6e 74 29 20 3f 20 6e 6f 64 65 2e .parent) ? node. 00035d90: 70 61 72 65 6e 74 2e 6e 61 6d 65 20 3a 0a 20 20 parent.name :. 00035da0: 20 20 20 20 20 20 20 20 20 20 74 73 2e 69 73 42 ts.isB 00035db0: 69 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e 28 inaryExpression( 00035dc0: 6e 6f 64 65 2e 70 61 72 65 6e 74 29 20 26 26 20 node.parent) && 00035dd0: 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6f 70 65 72 node.parent.oper 00035de0: 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 6e 64 20 3d atorToken.kind = 00035df0: 3d 3d 20 36 33 20 2f 2a 20 53 79 6e 74 61 78 4b == 63 /* SyntaxK 00035e00: 69 6e 64 2e 45 71 75 61 6c 73 54 6f 6b 65 6e 20 ind.EqualsToken 00035e10: 2a 2f 20 3f 20 6e 6f 64 65 2e 70 61 72 65 6e 74 */ ? node.parent 00035e20: 2e 6c 65 66 74 20 3a 0a 20 20 20 20 20 20 20 20 .left :. 00035e30: 20 20 20 20 20 20 20 20 75 6e 64 65 66 69 6e 65 undefine 00035e40: 64 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 d;. retur 00035e50: 6e 20 6e 61 6d 65 20 26 26 20 67 65 74 45 78 70 n name && getExp 00035e60: 61 6e 64 6f 49 6e 69 74 69 61 6c 69 7a 65 72 28 andoInitializer( 00035e70: 6e 6f 64 65 2e 72 69 67 68 74 2c 20 69 73 50 72 node.right, isPr 00035e80: 6f 74 6f 74 79 70 65 41 63 63 65 73 73 28 6e 61 ototypeAccess(na 00035e90: 6d 65 29 29 20 26 26 20 69 73 45 6e 74 69 74 79 me)) && isEntity 00035ea0: 4e 61 6d 65 45 78 70 72 65 73 73 69 6f 6e 28 6e NameExpression(n 00035eb0: 61 6d 65 29 20 26 26 20 69 73 53 61 6d 65 45 6e ame) && isSameEn 00035ec0: 74 69 74 79 4e 61 6d 65 28 6e 61 6d 65 2c 20 6e tityName(name, n 00035ed0: 6f 64 65 2e 6c 65 66 74 29 3b 0a 20 20 20 20 7d ode.left);. } 00035ee0: 0a 20 20 20 20 74 73 2e 69 73 44 65 66 61 75 6c . ts.isDefaul 00035ef0: 74 65 64 45 78 70 61 6e 64 6f 49 6e 69 74 69 61 tedExpandoInitia 00035f00: 6c 69 7a 65 72 20 3d 20 69 73 44 65 66 61 75 6c lizer = isDefaul 00035f10: 74 65 64 45 78 70 61 6e 64 6f 49 6e 69 74 69 61 tedExpandoInitia 00035f20: 6c 69 7a 65 72 3b 0a 20 20 20 20 2f 2a 2a 20 47 lizer;. /** G 00035f30: 69 76 65 6e 20 61 6e 20 65 78 70 61 6e 64 6f 20 iven an expando 00035f40: 69 6e 69 74 69 61 6c 69 7a 65 72 2c 20 72 65 74 initializer, ret 00035f50: 75 72 6e 20 69 74 73 20 64 65 63 6c 61 72 61 74 urn its declarat 00035f60: 69 6f 6e 20 6e 61 6d 65 2c 20 6f 72 20 74 68 65 ion name, or the 00035f70: 20 6c 65 66 74 2d 68 61 6e 64 20 73 69 64 65 20 left-hand side 00035f80: 6f 66 20 74 68 65 20 61 73 73 69 67 6e 6d 65 6e of the assignmen 00035f90: 74 20 69 66 20 69 74 27 73 20 70 61 72 74 20 6f t if it's part o 00035fa0: 66 20 61 6e 20 61 73 73 69 67 6e 6d 65 6e 74 20 f an assignment 00035fb0: 64 65 63 6c 61 72 61 74 69 6f 6e 2e 20 2a 2f 0a declaration. */. 00035fc0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 function get 00035fd0: 4e 61 6d 65 4f 66 45 78 70 61 6e 64 6f 28 6e 6f NameOfExpando(no 00035fe0: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 de) {. if 00035ff0: 20 28 74 73 2e 69 73 42 69 6e 61 72 79 45 78 70 (ts.isBinaryExp 00036000: 72 65 73 73 69 6f 6e 28 6e 6f 64 65 2e 70 61 72 ression(node.par 00036010: 65 6e 74 29 29 20 7b 0a 20 20 20 20 20 20 20 20 ent)) {. 00036020: 20 20 20 20 76 61 72 20 70 61 72 65 6e 74 20 3d var parent = 00036030: 20 28 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6f ((node.parent.o 00036040: 70 65 72 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 6e peratorToken.kin 00036050: 64 20 3d 3d 3d 20 35 36 20 2f 2a 20 53 79 6e 74 d === 56 /* Synt 00036060: 61 78 4b 69 6e 64 2e 42 61 72 42 61 72 54 6f 6b axKind.BarBarTok 00036070: 65 6e 20 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 70 61 en */ || node.pa 00036080: 72 65 6e 74 2e 6f 70 65 72 61 74 6f 72 54 6f 6b rent.operatorTok 00036090: 65 6e 2e 6b 69 6e 64 20 3d 3d 3d 20 36 30 20 2f en.kind === 60 / 000360a0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 51 75 65 * SyntaxKind.Que 000360b0: 73 74 69 6f 6e 51 75 65 73 74 69 6f 6e 54 6f 6b stionQuestionTok 000360c0: 65 6e 20 2a 2f 29 20 26 26 20 74 73 2e 69 73 42 en */) && ts.isB 000360d0: 69 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e 28 inaryExpression( 000360e0: 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 70 61 72 65 node.parent.pare 000360f0: 6e 74 29 29 20 3f 20 6e 6f 64 65 2e 70 61 72 65 nt)) ? node.pare 00036100: 6e 74 2e 70 61 72 65 6e 74 20 3a 20 6e 6f 64 65 nt.parent : node 00036110: 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 .parent;. 00036120: 20 20 20 20 20 69 66 20 28 70 61 72 65 6e 74 2e if (parent. 00036130: 6f 70 65 72 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 operatorToken.ki 00036140: 6e 64 20 3d 3d 3d 20 36 33 20 2f 2a 20 53 79 6e nd === 63 /* Syn 00036150: 74 61 78 4b 69 6e 64 2e 45 71 75 61 6c 73 54 6f taxKind.EqualsTo 00036160: 6b 65 6e 20 2a 2f 20 26 26 20 74 73 2e 69 73 49 ken */ && ts.isI 00036170: 64 65 6e 74 69 66 69 65 72 28 70 61 72 65 6e 74 dentifier(parent 00036180: 2e 6c 65 66 74 29 29 20 7b 0a 20 20 20 20 20 20 .left)) {. 00036190: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 000361a0: 20 70 61 72 65 6e 74 2e 6c 65 66 74 3b 0a 20 20 parent.left;. 000361b0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 000361c0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 65 6c }. el 000361d0: 73 65 20 69 66 20 28 74 73 2e 69 73 56 61 72 69 se if (ts.isVari 000361e0: 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 ableDeclaration( 000361f0: 6e 6f 64 65 2e 70 61 72 65 6e 74 29 29 20 7b 0a node.parent)) {. 00036200: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 00036210: 72 6e 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6e rn node.parent.n 00036220: 61 6d 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 ame;. }. 00036230: 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4e }. ts.getN 00036240: 61 6d 65 4f 66 45 78 70 61 6e 64 6f 20 3d 20 67 ameOfExpando = g 00036250: 65 74 4e 61 6d 65 4f 66 45 78 70 61 6e 64 6f 3b etNameOfExpando; 00036260: 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 . /**. * 00036270: 49 73 20 74 68 65 20 27 64 65 63 6c 61 72 65 64 Is the 'declared 00036280: 27 20 6e 61 6d 65 20 74 68 65 20 73 61 6d 65 20 ' name the same 00036290: 61 73 20 74 68 65 20 6f 6e 65 20 69 6e 20 74 68 as the one in th 000362a0: 65 20 69 6e 69 74 69 61 6c 69 7a 65 72 3f 0a 20 e initializer?. 000362b0: 20 20 20 20 2a 20 40 72 65 74 75 72 6e 20 74 72 * @return tr 000362c0: 75 65 20 66 6f 72 20 69 64 65 6e 74 69 63 61 6c ue for identical 000362d0: 20 65 6e 74 69 74 79 20 6e 61 6d 65 73 2c 20 61 entity names, a 000362e0: 73 20 77 65 6c 6c 20 61 73 20 6f 6e 65 73 20 77 s well as ones w 000362f0: 68 65 72 65 20 74 68 65 20 69 6e 69 74 69 61 6c here the initial 00036300: 69 7a 65 72 20 69 73 20 70 72 65 66 69 78 65 64 izer is prefixed 00036310: 20 77 69 74 68 0a 20 20 20 20 20 2a 20 27 77 69 with. * 'wi 00036320: 6e 64 6f 77 27 2c 20 27 73 65 6c 66 27 20 6f 72 ndow', 'self' or 00036330: 20 27 67 6c 6f 62 61 6c 27 2e 20 46 6f 72 20 65 'global'. For e 00036340: 78 61 6d 70 6c 65 3a 0a 20 20 20 20 20 2a 0a 20 xample:. *. 00036350: 20 20 20 20 2a 20 76 61 72 20 6d 79 20 3d 20 6d * var my = m 00036360: 79 20 7c 7c 20 7b 7d 0a 20 20 20 20 20 2a 20 76 y || {}. * v 00036370: 61 72 20 6d 69 6e 20 3d 20 77 69 6e 64 6f 77 2e ar min = window. 00036380: 6d 69 6e 20 7c 7c 20 7b 7d 0a 20 20 20 20 20 2a min || {}. * 00036390: 20 6d 79 2e 61 70 70 20 3d 20 73 65 6c 66 2e 6d my.app = self.m 000363a0: 79 2e 61 70 70 20 7c 7c 20 63 6c 61 73 73 20 7b y.app || class { 000363b0: 20 7d 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 }. */. f 000363c0: 75 6e 63 74 69 6f 6e 20 69 73 53 61 6d 65 45 6e unction isSameEn 000363d0: 74 69 74 79 4e 61 6d 65 28 6e 61 6d 65 2c 20 69 tityName(name, i 000363e0: 6e 69 74 69 61 6c 69 7a 65 72 29 20 7b 0a 20 20 nitializer) {. 000363f0: 20 20 20 20 20 20 69 66 20 28 69 73 50 72 6f 70 if (isProp 00036400: 65 72 74 79 4e 61 6d 65 4c 69 74 65 72 61 6c 28 ertyNameLiteral( 00036410: 6e 61 6d 65 29 20 26 26 20 69 73 50 72 6f 70 65 name) && isPrope 00036420: 72 74 79 4e 61 6d 65 4c 69 74 65 72 61 6c 28 69 rtyNameLiteral(i 00036430: 6e 69 74 69 61 6c 69 7a 65 72 29 29 20 7b 0a 20 nitializer)) {. 00036440: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00036450: 6e 20 67 65 74 54 65 78 74 4f 66 49 64 65 6e 74 n getTextOfIdent 00036460: 69 66 69 65 72 4f 72 4c 69 74 65 72 61 6c 28 6e ifierOrLiteral(n 00036470: 61 6d 65 29 20 3d 3d 3d 20 67 65 74 54 65 78 74 ame) === getText 00036480: 4f 66 49 64 65 6e 74 69 66 69 65 72 4f 72 4c 69 OfIdentifierOrLi 00036490: 74 65 72 61 6c 28 69 6e 69 74 69 61 6c 69 7a 65 teral(initialize 000364a0: 72 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 r);. }. 000364b0: 20 20 20 20 20 20 69 66 20 28 74 73 2e 69 73 4d if (ts.isM 000364c0: 65 6d 62 65 72 4e 61 6d 65 28 6e 61 6d 65 29 20 emberName(name) 000364d0: 26 26 20 69 73 4c 69 74 65 72 61 6c 4c 69 6b 65 && isLiteralLike 000364e0: 41 63 63 65 73 73 28 69 6e 69 74 69 61 6c 69 7a Access(initializ 000364f0: 65 72 29 20 26 26 0a 20 20 20 20 20 20 20 20 20 er) &&. 00036500: 20 20 20 28 69 6e 69 74 69 61 6c 69 7a 65 72 2e (initializer. 00036510: 65 78 70 72 65 73 73 69 6f 6e 2e 6b 69 6e 64 20 expression.kind 00036520: 3d 3d 3d 20 31 30 38 20 2f 2a 20 53 79 6e 74 61 === 108 /* Synta 00036530: 78 4b 69 6e 64 2e 54 68 69 73 4b 65 79 77 6f 72 xKind.ThisKeywor 00036540: 64 20 2a 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 d */ ||. 00036550: 20 20 20 20 20 20 20 20 74 73 2e 69 73 49 64 65 ts.isIde 00036560: 6e 74 69 66 69 65 72 28 69 6e 69 74 69 61 6c 69 ntifier(initiali 00036570: 7a 65 72 2e 65 78 70 72 65 73 73 69 6f 6e 29 20 zer.expression) 00036580: 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 &&. 00036590: 20 20 20 20 20 20 20 28 69 6e 69 74 69 61 6c 69 (initiali 000365a0: 7a 65 72 2e 65 78 70 72 65 73 73 69 6f 6e 2e 65 zer.expression.e 000365b0: 73 63 61 70 65 64 54 65 78 74 20 3d 3d 3d 20 22 scapedText === " 000365c0: 77 69 6e 64 6f 77 22 20 7c 7c 0a 20 20 20 20 20 window" ||. 000365d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000365e0: 20 20 20 69 6e 69 74 69 61 6c 69 7a 65 72 2e 65 initializer.e 000365f0: 78 70 72 65 73 73 69 6f 6e 2e 65 73 63 61 70 65 xpression.escape 00036600: 64 54 65 78 74 20 3d 3d 3d 20 22 73 65 6c 66 22 dText === "self" 00036610: 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ||. 00036620: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 69 74 init 00036630: 69 61 6c 69 7a 65 72 2e 65 78 70 72 65 73 73 69 ializer.expressi 00036640: 6f 6e 2e 65 73 63 61 70 65 64 54 65 78 74 20 3d on.escapedText = 00036650: 3d 3d 20 22 67 6c 6f 62 61 6c 22 29 29 29 20 7b == "global"))) { 00036660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 . ret 00036670: 75 72 6e 20 69 73 53 61 6d 65 45 6e 74 69 74 79 urn isSameEntity 00036680: 4e 61 6d 65 28 6e 61 6d 65 2c 20 67 65 74 4e 61 Name(name, getNa 00036690: 6d 65 4f 72 41 72 67 75 6d 65 6e 74 28 69 6e 69 meOrArgument(ini 000366a0: 74 69 61 6c 69 7a 65 72 29 29 3b 0a 20 20 20 20 tializer));. 000366b0: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 69 66 }. if 000366c0: 20 28 69 73 4c 69 74 65 72 61 6c 4c 69 6b 65 41 (isLiteralLikeA 000366d0: 63 63 65 73 73 28 6e 61 6d 65 29 20 26 26 20 69 ccess(name) && i 000366e0: 73 4c 69 74 65 72 61 6c 4c 69 6b 65 41 63 63 65 sLiteralLikeAcce 000366f0: 73 73 28 69 6e 69 74 69 61 6c 69 7a 65 72 29 29 ss(initializer)) 00036700: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 {. r 00036710: 65 74 75 72 6e 20 67 65 74 45 6c 65 6d 65 6e 74 eturn getElement 00036720: 4f 72 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 OrPropertyAccess 00036730: 4e 61 6d 65 28 6e 61 6d 65 29 20 3d 3d 3d 20 67 Name(name) === g 00036740: 65 74 45 6c 65 6d 65 6e 74 4f 72 50 72 6f 70 65 etElementOrPrope 00036750: 72 74 79 41 63 63 65 73 73 4e 61 6d 65 28 69 6e rtyAccessName(in 00036760: 69 74 69 61 6c 69 7a 65 72 29 0a 20 20 20 20 20 itializer). 00036770: 20 20 20 20 20 20 20 20 20 20 20 26 26 20 69 73 && is 00036780: 53 61 6d 65 45 6e 74 69 74 79 4e 61 6d 65 28 6e SameEntityName(n 00036790: 61 6d 65 2e 65 78 70 72 65 73 73 69 6f 6e 2c 20 ame.expression, 000367a0: 69 6e 69 74 69 61 6c 69 7a 65 72 2e 65 78 70 72 initializer.expr 000367b0: 65 73 73 69 6f 6e 29 3b 0a 20 20 20 20 20 20 20 ession);. 000367c0: 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 }. retur 000367d0: 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 n false;. }. 000367e0: 20 20 20 74 73 2e 69 73 53 61 6d 65 45 6e 74 69 ts.isSameEnti 000367f0: 74 79 4e 61 6d 65 20 3d 20 69 73 53 61 6d 65 45 tyName = isSameE 00036800: 6e 74 69 74 79 4e 61 6d 65 3b 0a 20 20 20 20 66 ntityName;. f 00036810: 75 6e 63 74 69 6f 6e 20 67 65 74 52 69 67 68 74 unction getRight 00036820: 4d 6f 73 74 41 73 73 69 67 6e 65 64 45 78 70 72 MostAssignedExpr 00036830: 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 ession(node) {. 00036840: 20 20 20 20 20 20 20 77 68 69 6c 65 20 28 69 73 while (is 00036850: 41 73 73 69 67 6e 6d 65 6e 74 45 78 70 72 65 73 AssignmentExpres 00036860: 73 69 6f 6e 28 6e 6f 64 65 2c 20 2f 2a 65 78 63 sion(node, /*exc 00036870: 6c 75 64 65 43 6f 6d 70 6f 75 6e 64 41 73 73 69 ludeCompoundAssi 00036880: 67 6e 6d 65 6e 74 73 2a 2f 20 74 72 75 65 29 29 gnments*/ true)) 00036890: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e {. n 000368a0: 6f 64 65 20 3d 20 6e 6f 64 65 2e 72 69 67 68 74 ode = node.right 000368b0: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 000368c0: 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 3b return node; 000368d0: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 . }. ts.ge 000368e0: 74 52 69 67 68 74 4d 6f 73 74 41 73 73 69 67 6e tRightMostAssign 000368f0: 65 64 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 67 edExpression = g 00036900: 65 74 52 69 67 68 74 4d 6f 73 74 41 73 73 69 67 etRightMostAssig 00036910: 6e 65 64 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 nedExpression;. 00036920: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 45 78 function isEx 00036930: 70 6f 72 74 73 49 64 65 6e 74 69 66 69 65 72 28 portsIdentifier( 00036940: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 00036950: 72 65 74 75 72 6e 20 74 73 2e 69 73 49 64 65 6e return ts.isIden 00036960: 74 69 66 69 65 72 28 6e 6f 64 65 29 20 26 26 20 tifier(node) && 00036970: 6e 6f 64 65 2e 65 73 63 61 70 65 64 54 65 78 74 node.escapedText 00036980: 20 3d 3d 3d 20 22 65 78 70 6f 72 74 73 22 3b 0a === "exports";. 00036990: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 45 }. ts.isE 000369a0: 78 70 6f 72 74 73 49 64 65 6e 74 69 66 69 65 72 xportsIdentifier 000369b0: 20 3d 20 69 73 45 78 70 6f 72 74 73 49 64 65 6e = isExportsIden 000369c0: 74 69 66 69 65 72 3b 0a 20 20 20 20 66 75 6e 63 tifier;. func 000369d0: 74 69 6f 6e 20 69 73 4d 6f 64 75 6c 65 49 64 65 tion isModuleIde 000369e0: 6e 74 69 66 69 65 72 28 6e 6f 64 65 29 20 7b 0a ntifier(node) {. 000369f0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 00036a00: 73 2e 69 73 49 64 65 6e 74 69 66 69 65 72 28 6e s.isIdentifier(n 00036a10: 6f 64 65 29 20 26 26 20 6e 6f 64 65 2e 65 73 63 ode) && node.esc 00036a20: 61 70 65 64 54 65 78 74 20 3d 3d 3d 20 22 6d 6f apedText === "mo 00036a30: 64 75 6c 65 22 3b 0a 20 20 20 20 7d 0a 20 20 20 dule";. }. 00036a40: 20 74 73 2e 69 73 4d 6f 64 75 6c 65 49 64 65 6e ts.isModuleIden 00036a50: 74 69 66 69 65 72 20 3d 20 69 73 4d 6f 64 75 6c tifier = isModul 00036a60: 65 49 64 65 6e 74 69 66 69 65 72 3b 0a 20 20 20 eIdentifier;. 00036a70: 20 66 75 6e 63 74 69 6f 6e 20 69 73 4d 6f 64 75 function isModu 00036a80: 6c 65 45 78 70 6f 72 74 73 41 63 63 65 73 73 45 leExportsAccessE 00036a90: 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 xpression(node) 00036aa0: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 00036ab0: 20 28 74 73 2e 69 73 50 72 6f 70 65 72 74 79 41 (ts.isPropertyA 00036ac0: 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 28 ccessExpression( 00036ad0: 6e 6f 64 65 29 20 7c 7c 20 69 73 4c 69 74 65 72 node) || isLiter 00036ae0: 61 6c 4c 69 6b 65 45 6c 65 6d 65 6e 74 41 63 63 alLikeElementAcc 00036af0: 65 73 73 28 6e 6f 64 65 29 29 0a 20 20 20 20 20 ess(node)). 00036b00: 20 20 20 20 20 20 20 26 26 20 69 73 4d 6f 64 75 && isModu 00036b10: 6c 65 49 64 65 6e 74 69 66 69 65 72 28 6e 6f 64 leIdentifier(nod 00036b20: 65 2e 65 78 70 72 65 73 73 69 6f 6e 29 0a 20 20 e.expression). 00036b30: 20 20 20 20 20 20 20 20 20 20 26 26 20 67 65 74 && get 00036b40: 45 6c 65 6d 65 6e 74 4f 72 50 72 6f 70 65 72 74 ElementOrPropert 00036b50: 79 41 63 63 65 73 73 4e 61 6d 65 28 6e 6f 64 65 yAccessName(node 00036b60: 29 20 3d 3d 3d 20 22 65 78 70 6f 72 74 73 22 3b ) === "exports"; 00036b70: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 00036b80: 4d 6f 64 75 6c 65 45 78 70 6f 72 74 73 41 63 63 ModuleExportsAcc 00036b90: 65 73 73 45 78 70 72 65 73 73 69 6f 6e 20 3d 20 essExpression = 00036ba0: 69 73 4d 6f 64 75 6c 65 45 78 70 6f 72 74 73 41 isModuleExportsA 00036bb0: 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 3b ccessExpression; 00036bc0: 0a 20 20 20 20 2f 2f 2f 20 47 69 76 65 6e 20 61 . /// Given a 00036bd0: 20 42 69 6e 61 72 79 45 78 70 72 65 73 73 69 6f BinaryExpressio 00036be0: 6e 2c 20 72 65 74 75 72 6e 73 20 53 70 65 63 69 n, returns Speci 00036bf0: 61 6c 50 72 6f 70 65 72 74 79 41 73 73 69 67 6e alPropertyAssign 00036c00: 6d 65 6e 74 4b 69 6e 64 20 66 6f 72 20 74 68 65 mentKind for the 00036c10: 20 76 61 72 69 6f 75 73 20 6b 69 6e 64 73 20 6f various kinds o 00036c20: 66 20 70 72 6f 70 65 72 74 79 0a 20 20 20 20 2f f property. / 00036c30: 2f 2f 20 61 73 73 69 67 6e 6d 65 6e 74 73 20 77 // assignments w 00036c40: 65 20 74 72 65 61 74 20 61 73 20 73 70 65 63 69 e treat as speci 00036c50: 61 6c 20 69 6e 20 74 68 65 20 62 69 6e 64 65 72 al in the binder 00036c60: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 . function ge 00036c70: 74 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 tAssignmentDecla 00036c80: 72 61 74 69 6f 6e 4b 69 6e 64 28 65 78 70 72 29 rationKind(expr) 00036c90: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 73 {. var s 00036ca0: 70 65 63 69 61 6c 20 3d 20 67 65 74 41 73 73 69 pecial = getAssi 00036cb0: 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 6f gnmentDeclaratio 00036cc0: 6e 4b 69 6e 64 57 6f 72 6b 65 72 28 65 78 70 72 nKindWorker(expr 00036cd0: 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 );. retur 00036ce0: 6e 20 73 70 65 63 69 61 6c 20 3d 3d 3d 20 35 20 n special === 5 00036cf0: 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 /* AssignmentDec 00036d00: 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 50 72 6f larationKind.Pro 00036d10: 70 65 72 74 79 20 2a 2f 20 7c 7c 20 69 73 49 6e perty */ || isIn 00036d20: 4a 53 46 69 6c 65 28 65 78 70 72 29 20 3f 20 73 JSFile(expr) ? s 00036d30: 70 65 63 69 61 6c 20 3a 20 30 20 2f 2a 20 41 73 pecial : 0 /* As 00036d40: 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 signmentDeclarat 00036d50: 69 6f 6e 4b 69 6e 64 2e 4e 6f 6e 65 20 2a 2f 3b ionKind.None */; 00036d60: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 . }. ts.ge 00036d70: 74 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 tAssignmentDecla 00036d80: 72 61 74 69 6f 6e 4b 69 6e 64 20 3d 20 67 65 74 rationKind = get 00036d90: 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 AssignmentDeclar 00036da0: 61 74 69 6f 6e 4b 69 6e 64 3b 0a 20 20 20 20 66 ationKind;. f 00036db0: 75 6e 63 74 69 6f 6e 20 69 73 42 69 6e 64 61 62 unction isBindab 00036dc0: 6c 65 4f 62 6a 65 63 74 44 65 66 69 6e 65 50 72 leObjectDefinePr 00036dd0: 6f 70 65 72 74 79 43 61 6c 6c 28 65 78 70 72 29 opertyCall(expr) 00036de0: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00036df0: 6e 20 74 73 2e 6c 65 6e 67 74 68 28 65 78 70 72 n ts.length(expr 00036e00: 2e 61 72 67 75 6d 65 6e 74 73 29 20 3d 3d 3d 20 .arguments) === 00036e10: 33 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 3 &&. 00036e20: 20 74 73 2e 69 73 50 72 6f 70 65 72 74 79 41 63 ts.isPropertyAc 00036e30: 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 28 65 cessExpression(e 00036e40: 78 70 72 2e 65 78 70 72 65 73 73 69 6f 6e 29 20 xpr.expression) 00036e50: 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 &&. t 00036e60: 73 2e 69 73 49 64 65 6e 74 69 66 69 65 72 28 65 s.isIdentifier(e 00036e70: 78 70 72 2e 65 78 70 72 65 73 73 69 6f 6e 2e 65 xpr.expression.e 00036e80: 78 70 72 65 73 73 69 6f 6e 29 20 26 26 0a 20 20 xpression) &&. 00036e90: 20 20 20 20 20 20 20 20 20 20 74 73 2e 69 64 54 ts.idT 00036ea0: 65 78 74 28 65 78 70 72 2e 65 78 70 72 65 73 73 ext(expr.express 00036eb0: 69 6f 6e 2e 65 78 70 72 65 73 73 69 6f 6e 29 20 ion.expression) 00036ec0: 3d 3d 3d 20 22 4f 62 6a 65 63 74 22 20 26 26 0a === "Object" &&. 00036ed0: 20 20 20 20 20 20 20 20 20 20 20 20 74 73 2e 69 ts.i 00036ee0: 64 54 65 78 74 28 65 78 70 72 2e 65 78 70 72 65 dText(expr.expre 00036ef0: 73 73 69 6f 6e 2e 6e 61 6d 65 29 20 3d 3d 3d 20 ssion.name) === 00036f00: 22 64 65 66 69 6e 65 50 72 6f 70 65 72 74 79 22 "defineProperty" 00036f10: 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 &&. 00036f20: 69 73 53 74 72 69 6e 67 4f 72 4e 75 6d 65 72 69 isStringOrNumeri 00036f30: 63 4c 69 74 65 72 61 6c 4c 69 6b 65 28 65 78 70 cLiteralLike(exp 00036f40: 72 2e 61 72 67 75 6d 65 6e 74 73 5b 31 5d 29 20 r.arguments[1]) 00036f50: 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 &&. i 00036f60: 73 42 69 6e 64 61 62 6c 65 53 74 61 74 69 63 4e sBindableStaticN 00036f70: 61 6d 65 45 78 70 72 65 73 73 69 6f 6e 28 65 78 ameExpression(ex 00036f80: 70 72 2e 61 72 67 75 6d 65 6e 74 73 5b 30 5d 2c pr.arguments[0], 00036f90: 20 2f 2a 65 78 63 6c 75 64 65 54 68 69 73 4b 65 /*excludeThisKe 00036fa0: 79 77 6f 72 64 2a 2f 20 74 72 75 65 29 3b 0a 20 yword*/ true);. 00036fb0: 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 42 69 }. ts.isBi 00036fc0: 6e 64 61 62 6c 65 4f 62 6a 65 63 74 44 65 66 69 ndableObjectDefi 00036fd0: 6e 65 50 72 6f 70 65 72 74 79 43 61 6c 6c 20 3d nePropertyCall = 00036fe0: 20 69 73 42 69 6e 64 61 62 6c 65 4f 62 6a 65 63 isBindableObjec 00036ff0: 74 44 65 66 69 6e 65 50 72 6f 70 65 72 74 79 43 tDefinePropertyC 00037000: 61 6c 6c 3b 0a 20 20 20 20 2f 2a 2a 20 78 2e 79 all;. /** x.y 00037010: 20 4f 52 20 78 5b 30 5d 20 2a 2f 0a 20 20 20 20 OR x[0] */. 00037020: 66 75 6e 63 74 69 6f 6e 20 69 73 4c 69 74 65 72 function isLiter 00037030: 61 6c 4c 69 6b 65 41 63 63 65 73 73 28 6e 6f 64 alLikeAccess(nod 00037040: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 e) {. ret 00037050: 75 72 6e 20 74 73 2e 69 73 50 72 6f 70 65 72 74 urn ts.isPropert 00037060: 79 41 63 63 65 73 73 45 78 70 72 65 73 73 69 6f yAccessExpressio 00037070: 6e 28 6e 6f 64 65 29 20 7c 7c 20 69 73 4c 69 74 n(node) || isLit 00037080: 65 72 61 6c 4c 69 6b 65 45 6c 65 6d 65 6e 74 41 eralLikeElementA 00037090: 63 63 65 73 73 28 6e 6f 64 65 29 3b 0a 20 20 20 ccess(node);. 000370a0: 20 7d 0a 20 20 20 20 74 73 2e 69 73 4c 69 74 65 }. ts.isLite 000370b0: 72 61 6c 4c 69 6b 65 41 63 63 65 73 73 20 3d 20 ralLikeAccess = 000370c0: 69 73 4c 69 74 65 72 61 6c 4c 69 6b 65 41 63 63 isLiteralLikeAcc 000370d0: 65 73 73 3b 0a 20 20 20 20 2f 2a 2a 20 78 5b 30 ess;. /** x[0 000370e0: 5d 20 4f 52 20 78 5b 27 61 27 5d 20 4f 52 20 78 ] OR x['a'] OR x 000370f0: 5b 53 79 6d 62 6f 6c 2e 79 5d 20 2a 2f 0a 20 20 [Symbol.y] */. 00037100: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4c 69 74 function isLit 00037110: 65 72 61 6c 4c 69 6b 65 45 6c 65 6d 65 6e 74 41 eralLikeElementA 00037120: 63 63 65 73 73 28 6e 6f 64 65 29 20 7b 0a 20 20 ccess(node) {. 00037130: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e return ts. 00037140: 69 73 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 45 isElementAccessE 00037150: 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 xpression(node) 00037160: 26 26 20 69 73 53 74 72 69 6e 67 4f 72 4e 75 6d && isStringOrNum 00037170: 65 72 69 63 4c 69 74 65 72 61 6c 4c 69 6b 65 28 ericLiteralLike( 00037180: 6e 6f 64 65 2e 61 72 67 75 6d 65 6e 74 45 78 70 node.argumentExp 00037190: 72 65 73 73 69 6f 6e 29 3b 0a 20 20 20 20 7d 0a ression);. }. 000371a0: 20 20 20 20 74 73 2e 69 73 4c 69 74 65 72 61 6c ts.isLiteral 000371b0: 4c 69 6b 65 45 6c 65 6d 65 6e 74 41 63 63 65 73 LikeElementAcces 000371c0: 73 20 3d 20 69 73 4c 69 74 65 72 61 6c 4c 69 6b s = isLiteralLik 000371d0: 65 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 3b 0a eElementAccess;. 000371e0: 20 20 20 20 2f 2a 2a 20 41 6e 79 20 73 65 72 69 /** Any seri 000371f0: 65 73 20 6f 66 20 70 72 6f 70 65 72 74 79 20 61 es of property a 00037200: 6e 64 20 65 6c 65 6d 65 6e 74 20 61 63 63 65 73 nd element acces 00037210: 73 65 73 2e 20 2a 2f 0a 20 20 20 20 66 75 6e 63 ses. */. func 00037220: 74 69 6f 6e 20 69 73 42 69 6e 64 61 62 6c 65 53 tion isBindableS 00037230: 74 61 74 69 63 41 63 63 65 73 73 45 78 70 72 65 taticAccessExpre 00037240: 73 73 69 6f 6e 28 6e 6f 64 65 2c 20 65 78 63 6c ssion(node, excl 00037250: 75 64 65 54 68 69 73 4b 65 79 77 6f 72 64 29 20 udeThisKeyword) 00037260: 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e {. return 00037270: 20 74 73 2e 69 73 50 72 6f 70 65 72 74 79 41 63 ts.isPropertyAc 00037280: 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 28 6e cessExpression(n 00037290: 6f 64 65 29 20 26 26 20 28 21 65 78 63 6c 75 64 ode) && (!exclud 000372a0: 65 54 68 69 73 4b 65 79 77 6f 72 64 20 26 26 20 eThisKeyword && 000372b0: 6e 6f 64 65 2e 65 78 70 72 65 73 73 69 6f 6e 2e node.expression. 000372c0: 6b 69 6e 64 20 3d 3d 3d 20 31 30 38 20 2f 2a 20 kind === 108 /* 000372d0: 53 79 6e 74 61 78 4b 69 6e 64 2e 54 68 69 73 4b SyntaxKind.ThisK 000372e0: 65 79 77 6f 72 64 20 2a 2f 20 7c 7c 20 74 73 2e eyword */ || ts. 000372f0: 69 73 49 64 65 6e 74 69 66 69 65 72 28 6e 6f 64 isIdentifier(nod 00037300: 65 2e 6e 61 6d 65 29 20 26 26 20 69 73 42 69 6e e.name) && isBin 00037310: 64 61 62 6c 65 53 74 61 74 69 63 4e 61 6d 65 45 dableStaticNameE 00037320: 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 2e 65 xpression(node.e 00037330: 78 70 72 65 73 73 69 6f 6e 2c 20 2f 2a 65 78 63 xpression, /*exc 00037340: 6c 75 64 65 54 68 69 73 4b 65 79 77 6f 72 64 2a ludeThisKeyword* 00037350: 2f 20 74 72 75 65 29 29 0a 20 20 20 20 20 20 20 / true)). 00037360: 20 20 20 20 20 7c 7c 20 69 73 42 69 6e 64 61 62 || isBindab 00037370: 6c 65 53 74 61 74 69 63 45 6c 65 6d 65 6e 74 41 leStaticElementA 00037380: 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 28 ccessExpression( 00037390: 6e 6f 64 65 2c 20 65 78 63 6c 75 64 65 54 68 69 node, excludeThi 000373a0: 73 4b 65 79 77 6f 72 64 29 3b 0a 20 20 20 20 7d sKeyword);. } 000373b0: 0a 20 20 20 20 74 73 2e 69 73 42 69 6e 64 61 62 . ts.isBindab 000373c0: 6c 65 53 74 61 74 69 63 41 63 63 65 73 73 45 78 leStaticAccessEx 000373d0: 70 72 65 73 73 69 6f 6e 20 3d 20 69 73 42 69 6e pression = isBin 000373e0: 64 61 62 6c 65 53 74 61 74 69 63 41 63 63 65 73 dableStaticAcces 000373f0: 73 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 sExpression;. 00037400: 20 2f 2a 2a 20 41 6e 79 20 73 65 72 69 65 73 20 /** Any series 00037410: 6f 66 20 70 72 6f 70 65 72 74 79 20 61 6e 64 20 of property and 00037420: 65 6c 65 6d 65 6e 74 20 61 63 63 65 73 73 65 73 element accesses 00037430: 2c 20 65 6e 64 69 6e 67 20 69 6e 20 61 20 6c 69 , ending in a li 00037440: 74 65 72 61 6c 20 65 6c 65 6d 65 6e 74 20 61 63 teral element ac 00037450: 63 65 73 73 20 2a 2f 0a 20 20 20 20 66 75 6e 63 cess */. func 00037460: 74 69 6f 6e 20 69 73 42 69 6e 64 61 62 6c 65 53 tion isBindableS 00037470: 74 61 74 69 63 45 6c 65 6d 65 6e 74 41 63 63 65 taticElementAcce 00037480: 73 73 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 ssExpression(nod 00037490: 65 2c 20 65 78 63 6c 75 64 65 54 68 69 73 4b 65 e, excludeThisKe 000374a0: 79 77 6f 72 64 29 20 7b 0a 20 20 20 20 20 20 20 yword) {. 000374b0: 20 72 65 74 75 72 6e 20 69 73 4c 69 74 65 72 61 return isLitera 000374c0: 6c 4c 69 6b 65 45 6c 65 6d 65 6e 74 41 63 63 65 lLikeElementAcce 000374d0: 73 73 28 6e 6f 64 65 29 0a 20 20 20 20 20 20 20 ss(node). 000374e0: 20 20 20 20 20 26 26 20 28 28 21 65 78 63 6c 75 && ((!exclu 000374f0: 64 65 54 68 69 73 4b 65 79 77 6f 72 64 20 26 26 deThisKeyword && 00037500: 20 6e 6f 64 65 2e 65 78 70 72 65 73 73 69 6f 6e node.expression 00037510: 2e 6b 69 6e 64 20 3d 3d 3d 20 31 30 38 20 2f 2a .kind === 108 /* 00037520: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 68 69 73 SyntaxKind.This 00037530: 4b 65 79 77 6f 72 64 20 2a 2f 29 20 7c 7c 0a 20 Keyword */) ||. 00037540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 i 00037550: 73 45 6e 74 69 74 79 4e 61 6d 65 45 78 70 72 65 sEntityNameExpre 00037560: 73 73 69 6f 6e 28 6e 6f 64 65 2e 65 78 70 72 65 ssion(node.expre 00037570: 73 73 69 6f 6e 29 20 7c 7c 0a 20 20 20 20 20 20 ssion) ||. 00037580: 20 20 20 20 20 20 20 20 20 20 69 73 42 69 6e 64 isBind 00037590: 61 62 6c 65 53 74 61 74 69 63 41 63 63 65 73 73 ableStaticAccess 000375a0: 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 2e Expression(node. 000375b0: 65 78 70 72 65 73 73 69 6f 6e 2c 20 2f 2a 65 78 expression, /*ex 000375c0: 63 6c 75 64 65 54 68 69 73 4b 65 79 77 6f 72 64 cludeThisKeyword 000375d0: 2a 2f 20 74 72 75 65 29 29 3b 0a 20 20 20 20 7d */ true));. } 000375e0: 0a 20 20 20 20 74 73 2e 69 73 42 69 6e 64 61 62 . ts.isBindab 000375f0: 6c 65 53 74 61 74 69 63 45 6c 65 6d 65 6e 74 41 leStaticElementA 00037600: 63 63 65 73 73 45 78 70 72 65 73 73 69 6f 6e 20 ccessExpression 00037610: 3d 20 69 73 42 69 6e 64 61 62 6c 65 53 74 61 74 = isBindableStat 00037620: 69 63 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 45 icElementAccessE 00037630: 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 20 66 xpression;. f 00037640: 75 6e 63 74 69 6f 6e 20 69 73 42 69 6e 64 61 62 unction isBindab 00037650: 6c 65 53 74 61 74 69 63 4e 61 6d 65 45 78 70 72 leStaticNameExpr 00037660: 65 73 73 69 6f 6e 28 6e 6f 64 65 2c 20 65 78 63 ession(node, exc 00037670: 6c 75 64 65 54 68 69 73 4b 65 79 77 6f 72 64 29 ludeThisKeyword) 00037680: 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 {. retur 00037690: 6e 20 69 73 45 6e 74 69 74 79 4e 61 6d 65 45 78 n isEntityNameEx 000376a0: 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 7c pression(node) | 000376b0: 7c 20 69 73 42 69 6e 64 61 62 6c 65 53 74 61 74 | isBindableStat 000376c0: 69 63 41 63 63 65 73 73 45 78 70 72 65 73 73 69 icAccessExpressi 000376d0: 6f 6e 28 6e 6f 64 65 2c 20 65 78 63 6c 75 64 65 on(node, exclude 000376e0: 54 68 69 73 4b 65 79 77 6f 72 64 29 3b 0a 20 20 ThisKeyword);. 000376f0: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 42 69 6e }. ts.isBin 00037700: 64 61 62 6c 65 53 74 61 74 69 63 4e 61 6d 65 45 dableStaticNameE 00037710: 78 70 72 65 73 73 69 6f 6e 20 3d 20 69 73 42 69 xpression = isBi 00037720: 6e 64 61 62 6c 65 53 74 61 74 69 63 4e 61 6d 65 ndableStaticName 00037730: 45 78 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 20 Expression;. 00037740: 66 75 6e 63 74 69 6f 6e 20 67 65 74 4e 61 6d 65 function getName 00037750: 4f 72 41 72 67 75 6d 65 6e 74 28 65 78 70 72 29 OrArgument(expr) 00037760: 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 {. if (t 00037770: 73 2e 69 73 50 72 6f 70 65 72 74 79 41 63 63 65 s.isPropertyAcce 00037780: 73 73 45 78 70 72 65 73 73 69 6f 6e 28 65 78 70 ssExpression(exp 00037790: 72 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 r)) {. 000377a0: 20 20 72 65 74 75 72 6e 20 65 78 70 72 2e 6e 61 return expr.na 000377b0: 6d 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 me;. }. 000377c0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 65 78 70 return exp 000377d0: 72 2e 61 72 67 75 6d 65 6e 74 45 78 70 72 65 73 r.argumentExpres 000377e0: 73 69 6f 6e 3b 0a 20 20 20 20 7d 0a 20 20 20 20 sion;. }. 000377f0: 74 73 2e 67 65 74 4e 61 6d 65 4f 72 41 72 67 75 ts.getNameOrArgu 00037800: 6d 65 6e 74 20 3d 20 67 65 74 4e 61 6d 65 4f 72 ment = getNameOr 00037810: 41 72 67 75 6d 65 6e 74 3b 0a 20 20 20 20 66 75 Argument;. fu 00037820: 6e 63 74 69 6f 6e 20 67 65 74 41 73 73 69 67 6e nction getAssign 00037830: 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b mentDeclarationK 00037840: 69 6e 64 57 6f 72 6b 65 72 28 65 78 70 72 29 20 indWorker(expr) 00037850: 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 74 73 {. if (ts 00037860: 2e 69 73 43 61 6c 6c 45 78 70 72 65 73 73 69 6f .isCallExpressio 00037870: 6e 28 65 78 70 72 29 29 20 7b 0a 20 20 20 20 20 n(expr)) {. 00037880: 20 20 20 20 20 20 20 69 66 20 28 21 69 73 42 69 if (!isBi 00037890: 6e 64 61 62 6c 65 4f 62 6a 65 63 74 44 65 66 69 ndableObjectDefi 000378a0: 6e 65 50 72 6f 70 65 72 74 79 43 61 6c 6c 28 65 nePropertyCall(e 000378b0: 78 70 72 29 29 20 7b 0a 20 20 20 20 20 20 20 20 xpr)) {. 000378c0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 return 0 000378d0: 20 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 /* AssignmentDe 000378e0: 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 4e 6f clarationKind.No 000378f0: 6e 65 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 20 ne */;. 00037900: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 }. 00037910: 20 76 61 72 20 65 6e 74 69 74 79 4e 61 6d 65 20 var entityName 00037920: 3d 20 65 78 70 72 2e 61 72 67 75 6d 65 6e 74 73 = expr.arguments 00037930: 5b 30 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 [0];. 00037940: 20 69 66 20 28 69 73 45 78 70 6f 72 74 73 49 64 if (isExportsId 00037950: 65 6e 74 69 66 69 65 72 28 65 6e 74 69 74 79 4e entifier(entityN 00037960: 61 6d 65 29 20 7c 7c 20 69 73 4d 6f 64 75 6c 65 ame) || isModule 00037970: 45 78 70 6f 72 74 73 41 63 63 65 73 73 45 78 70 ExportsAccessExp 00037980: 72 65 73 73 69 6f 6e 28 65 6e 74 69 74 79 4e 61 ression(entityNa 00037990: 6d 65 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 me)) {. 000379a0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 38 20 return 8 000379b0: 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 /* AssignmentDec 000379c0: 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 4f 62 6a larationKind.Obj 000379d0: 65 63 74 44 65 66 69 6e 65 50 72 6f 70 65 72 74 ectDefinePropert 000379e0: 79 45 78 70 6f 72 74 73 20 2a 2f 3b 0a 20 20 20 yExports */;. 000379f0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 00037a00: 20 20 20 20 20 20 20 69 66 20 28 69 73 42 69 6e if (isBin 00037a10: 64 61 62 6c 65 53 74 61 74 69 63 41 63 63 65 73 dableStaticAcces 00037a20: 73 45 78 70 72 65 73 73 69 6f 6e 28 65 6e 74 69 sExpression(enti 00037a30: 74 79 4e 61 6d 65 29 20 26 26 20 67 65 74 45 6c tyName) && getEl 00037a40: 65 6d 65 6e 74 4f 72 50 72 6f 70 65 72 74 79 41 ementOrPropertyA 00037a50: 63 63 65 73 73 4e 61 6d 65 28 65 6e 74 69 74 79 ccessName(entity 00037a60: 4e 61 6d 65 29 20 3d 3d 3d 20 22 70 72 6f 74 6f Name) === "proto 00037a70: 74 79 70 65 22 29 20 7b 0a 20 20 20 20 20 20 20 type") {. 00037a80: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 return 00037a90: 39 20 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 9 /* AssignmentD 00037aa0: 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 4f eclarationKind.O 00037ab0: 62 6a 65 63 74 44 65 66 69 6e 65 50 72 6f 74 6f bjectDefineProto 00037ac0: 74 79 70 65 50 72 6f 70 65 72 74 79 20 2a 2f 3b typeProperty */; 00037ad0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 . }. 00037ae0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00037af0: 6e 20 37 20 2f 2a 20 41 73 73 69 67 6e 6d 65 6e n 7 /* Assignmen 00037b00: 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 tDeclarationKind 00037b10: 2e 4f 62 6a 65 63 74 44 65 66 69 6e 65 50 72 6f .ObjectDefinePro 00037b20: 70 65 72 74 79 56 61 6c 75 65 20 2a 2f 3b 0a 20 pertyValue */;. 00037b30: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00037b40: 20 69 66 20 28 65 78 70 72 2e 6f 70 65 72 61 74 if (expr.operat 00037b50: 6f 72 54 6f 6b 65 6e 2e 6b 69 6e 64 20 21 3d 3d orToken.kind !== 00037b60: 20 36 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 63 /* SyntaxKin 00037b70: 64 2e 45 71 75 61 6c 73 54 6f 6b 65 6e 20 2a 2f d.EqualsToken */ 00037b80: 20 7c 7c 20 21 69 73 41 63 63 65 73 73 45 78 70 || !isAccessExp 00037b90: 72 65 73 73 69 6f 6e 28 65 78 70 72 2e 6c 65 66 ression(expr.lef 00037ba0: 74 29 20 7c 7c 20 69 73 56 6f 69 64 5a 65 72 6f t) || isVoidZero 00037bb0: 28 67 65 74 52 69 67 68 74 4d 6f 73 74 41 73 73 (getRightMostAss 00037bc0: 69 67 6e 65 64 45 78 70 72 65 73 73 69 6f 6e 28 ignedExpression( 00037bd0: 65 78 70 72 29 29 29 20 7b 0a 20 20 20 20 20 20 expr))) {. 00037be0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 20 2f return 0 / 00037bf0: 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c * AssignmentDecl 00037c00: 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 4e 6f 6e 65 arationKind.None 00037c10: 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 */;. }. 00037c20: 20 20 20 20 20 20 20 69 66 20 28 69 73 42 69 6e if (isBin 00037c30: 64 61 62 6c 65 53 74 61 74 69 63 4e 61 6d 65 45 dableStaticNameE 00037c40: 78 70 72 65 73 73 69 6f 6e 28 65 78 70 72 2e 6c xpression(expr.l 00037c50: 65 66 74 2e 65 78 70 72 65 73 73 69 6f 6e 2c 20 eft.expression, 00037c60: 2f 2a 65 78 63 6c 75 64 65 54 68 69 73 4b 65 79 /*excludeThisKey 00037c70: 77 6f 72 64 2a 2f 20 74 72 75 65 29 20 26 26 20 word*/ true) && 00037c80: 67 65 74 45 6c 65 6d 65 6e 74 4f 72 50 72 6f 70 getElementOrProp 00037c90: 65 72 74 79 41 63 63 65 73 73 4e 61 6d 65 28 65 ertyAccessName(e 00037ca0: 78 70 72 2e 6c 65 66 74 29 20 3d 3d 3d 20 22 70 xpr.left) === "p 00037cb0: 72 6f 74 6f 74 79 70 65 22 20 26 26 20 74 73 2e rototype" && ts. 00037cc0: 69 73 4f 62 6a 65 63 74 4c 69 74 65 72 61 6c 45 isObjectLiteralE 00037cd0: 78 70 72 65 73 73 69 6f 6e 28 67 65 74 49 6e 69 xpression(getIni 00037ce0: 74 69 61 6c 69 7a 65 72 4f 66 42 69 6e 61 72 79 tializerOfBinary 00037cf0: 45 78 70 72 65 73 73 69 6f 6e 28 65 78 70 72 29 Expression(expr) 00037d00: 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 )) {. 00037d10: 20 2f 2f 20 46 2e 70 72 6f 74 6f 74 79 70 65 20 // F.prototype 00037d20: 3d 20 7b 20 2e 2e 2e 20 7d 0a 20 20 20 20 20 20 = { ... }. 00037d30: 20 20 20 20 20 20 72 65 74 75 72 6e 20 36 20 2f return 6 / 00037d40: 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c * AssignmentDecl 00037d50: 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 50 72 6f 74 arationKind.Prot 00037d60: 6f 74 79 70 65 20 2a 2f 3b 0a 20 20 20 20 20 20 otype */;. 00037d70: 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 }. retu 00037d80: 72 6e 20 67 65 74 41 73 73 69 67 6e 6d 65 6e 74 rn getAssignment 00037d90: 44 65 63 6c 61 72 61 74 69 6f 6e 50 72 6f 70 65 DeclarationPrope 00037da0: 72 74 79 41 63 63 65 73 73 4b 69 6e 64 28 65 78 rtyAccessKind(ex 00037db0: 70 72 2e 6c 65 66 74 29 3b 0a 20 20 20 20 7d 0a pr.left);. }. 00037dc0: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 56 function isV 00037dd0: 6f 69 64 5a 65 72 6f 28 6e 6f 64 65 29 20 7b 0a oidZero(node) {. 00037de0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 00037df0: 73 2e 69 73 56 6f 69 64 45 78 70 72 65 73 73 69 s.isVoidExpressi 00037e00: 6f 6e 28 6e 6f 64 65 29 20 26 26 20 74 73 2e 69 on(node) && ts.i 00037e10: 73 4e 75 6d 65 72 69 63 4c 69 74 65 72 61 6c 28 sNumericLiteral( 00037e20: 6e 6f 64 65 2e 65 78 70 72 65 73 73 69 6f 6e 29 node.expression) 00037e30: 20 26 26 20 6e 6f 64 65 2e 65 78 70 72 65 73 73 && node.express 00037e40: 69 6f 6e 2e 74 65 78 74 20 3d 3d 3d 20 22 30 22 ion.text === "0" 00037e50: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 2f 2a 2a 0a ;. }. /**. 00037e60: 20 20 20 20 20 2a 20 44 6f 65 73 20 6e 6f 74 20 * Does not 00037e70: 68 61 6e 64 6c 65 20 73 69 67 6e 65 64 20 6e 75 handle signed nu 00037e80: 6d 65 72 69 63 20 6e 61 6d 65 73 20 6c 69 6b 65 meric names like 00037e90: 20 60 61 5b 2b 30 5d 60 20 2d 20 68 61 6e 64 6c `a[+0]` - handl 00037ea0: 69 6e 67 20 74 68 6f 73 65 20 77 6f 75 6c 64 20 ing those would 00037eb0: 72 65 71 75 69 72 65 20 68 61 6e 64 6c 69 6e 67 require handling 00037ec0: 20 70 72 65 66 69 78 20 75 6e 61 72 79 20 65 78 prefix unary ex 00037ed0: 70 72 65 73 73 69 6f 6e 73 0a 20 20 20 20 20 2a pressions. * 00037ee0: 20 74 68 72 6f 75 67 68 6f 75 74 20 6c 61 74 65 throughout late 00037ef0: 20 62 69 6e 64 69 6e 67 20 68 61 6e 64 6c 69 6e binding handlin 00037f00: 67 20 61 73 20 77 65 6c 6c 2c 20 77 68 69 63 68 g as well, which 00037f10: 20 69 73 20 61 77 6b 77 61 72 64 20 28 62 75 74 is awkward (but 00037f20: 20 75 6c 74 69 6d 61 74 65 6c 79 20 70 72 6f 62 ultimately prob 00037f30: 61 62 6c 79 20 64 6f 61 62 6c 65 20 69 66 20 74 ably doable if t 00037f40: 68 65 72 65 20 69 73 20 64 65 6d 61 6e 64 29 0a here is demand). 00037f50: 20 20 20 20 20 2a 2f 0a 20 20 20 20 2f 2a 20 40 */. /* @ 00037f60: 69 6e 74 65 72 6e 61 6c 20 2a 2f 0a 20 20 20 20 internal */. 00037f70: 66 75 6e 63 74 69 6f 6e 20 67 65 74 45 6c 65 6d function getElem 00037f80: 65 6e 74 4f 72 50 72 6f 70 65 72 74 79 41 63 63 entOrPropertyAcc 00037f90: 65 73 73 41 72 67 75 6d 65 6e 74 45 78 70 72 65 essArgumentExpre 00037fa0: 73 73 69 6f 6e 4f 72 4e 61 6d 65 28 6e 6f 64 65 ssionOrName(node 00037fb0: 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 ) {. if ( 00037fc0: 74 73 2e 69 73 50 72 6f 70 65 72 74 79 41 63 63 ts.isPropertyAcc 00037fd0: 65 73 73 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f essExpression(no 00037fe0: 64 65 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 de)) {. 00037ff0: 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 6e return node.n 00038000: 61 6d 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 ame;. }. 00038010: 20 20 20 20 20 20 20 76 61 72 20 61 72 67 20 3d var arg = 00038020: 20 73 6b 69 70 50 61 72 65 6e 74 68 65 73 65 73 skipParentheses 00038030: 28 6e 6f 64 65 2e 61 72 67 75 6d 65 6e 74 45 78 (node.argumentEx 00038040: 70 72 65 73 73 69 6f 6e 29 3b 0a 20 20 20 20 20 pression);. 00038050: 20 20 20 69 66 20 28 74 73 2e 69 73 4e 75 6d 65 if (ts.isNume 00038060: 72 69 63 4c 69 74 65 72 61 6c 28 61 72 67 29 20 ricLiteral(arg) 00038070: 7c 7c 20 74 73 2e 69 73 53 74 72 69 6e 67 4c 69 || ts.isStringLi 00038080: 74 65 72 61 6c 4c 69 6b 65 28 61 72 67 29 29 20 teralLike(arg)) 00038090: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 {. re 000380a0: 74 75 72 6e 20 61 72 67 3b 0a 20 20 20 20 20 20 turn arg;. 000380b0: 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 }. retu 000380c0: 72 6e 20 6e 6f 64 65 3b 0a 20 20 20 20 7d 0a 20 rn node;. }. 000380d0: 20 20 20 74 73 2e 67 65 74 45 6c 65 6d 65 6e 74 ts.getElement 000380e0: 4f 72 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 OrPropertyAccess 000380f0: 41 72 67 75 6d 65 6e 74 45 78 70 72 65 73 73 69 ArgumentExpressi 00038100: 6f 6e 4f 72 4e 61 6d 65 20 3d 20 67 65 74 45 6c onOrName = getEl 00038110: 65 6d 65 6e 74 4f 72 50 72 6f 70 65 72 74 79 41 ementOrPropertyA 00038120: 63 63 65 73 73 41 72 67 75 6d 65 6e 74 45 78 70 ccessArgumentExp 00038130: 72 65 73 73 69 6f 6e 4f 72 4e 61 6d 65 3b 0a 20 ressionOrName;. 00038140: 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 45 function getE 00038150: 6c 65 6d 65 6e 74 4f 72 50 72 6f 70 65 72 74 79 lementOrProperty 00038160: 41 63 63 65 73 73 4e 61 6d 65 28 6e 6f 64 65 29 AccessName(node) 00038170: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 6e {. var n 00038180: 61 6d 65 20 3d 20 67 65 74 45 6c 65 6d 65 6e 74 ame = getElement 00038190: 4f 72 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 OrPropertyAccess 000381a0: 41 72 67 75 6d 65 6e 74 45 78 70 72 65 73 73 69 ArgumentExpressi 000381b0: 6f 6e 4f 72 4e 61 6d 65 28 6e 6f 64 65 29 3b 0a onOrName(node);. 000381c0: 20 20 20 20 20 20 20 20 69 66 20 28 6e 61 6d 65 if (name 000381d0: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 000381e0: 69 66 20 28 74 73 2e 69 73 49 64 65 6e 74 69 66 if (ts.isIdentif 000381f0: 69 65 72 28 6e 61 6d 65 29 29 20 7b 0a 20 20 20 ier(name)) {. 00038200: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00038210: 75 72 6e 20 6e 61 6d 65 2e 65 73 63 61 70 65 64 urn name.escaped 00038220: 54 65 78 74 3b 0a 20 20 20 20 20 20 20 20 20 20 Text;. 00038230: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }. 00038240: 69 66 20 28 74 73 2e 69 73 53 74 72 69 6e 67 4c if (ts.isStringL 00038250: 69 74 65 72 61 6c 4c 69 6b 65 28 6e 61 6d 65 29 iteralLike(name) 00038260: 20 7c 7c 20 74 73 2e 69 73 4e 75 6d 65 72 69 63 || ts.isNumeric 00038270: 4c 69 74 65 72 61 6c 28 6e 61 6d 65 29 29 20 7b Literal(name)) { 00038280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 00038290: 20 72 65 74 75 72 6e 20 74 73 2e 65 73 63 61 70 return ts.escap 000382a0: 65 4c 65 61 64 69 6e 67 55 6e 64 65 72 73 63 6f eLeadingUndersco 000382b0: 72 65 73 28 6e 61 6d 65 2e 74 65 78 74 29 3b 0a res(name.text);. 000382c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. 000382d0: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 000382e0: 72 65 74 75 72 6e 20 75 6e 64 65 66 69 6e 65 64 return undefined 000382f0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 ;. }. ts.g 00038300: 65 74 45 6c 65 6d 65 6e 74 4f 72 50 72 6f 70 65 etElementOrPrope 00038310: 72 74 79 41 63 63 65 73 73 4e 61 6d 65 20 3d 20 rtyAccessName = 00038320: 67 65 74 45 6c 65 6d 65 6e 74 4f 72 50 72 6f 70 getElementOrProp 00038330: 65 72 74 79 41 63 63 65 73 73 4e 61 6d 65 3b 0a ertyAccessName;. 00038340: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 function get 00038350: 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 AssignmentDeclar 00038360: 61 74 69 6f 6e 50 72 6f 70 65 72 74 79 41 63 63 ationPropertyAcc 00038370: 65 73 73 4b 69 6e 64 28 6c 68 73 29 20 7b 0a 20 essKind(lhs) {. 00038380: 20 20 20 20 20 20 20 69 66 20 28 6c 68 73 2e 65 if (lhs.e 00038390: 78 70 72 65 73 73 69 6f 6e 2e 6b 69 6e 64 20 3d xpression.kind = 000383a0: 3d 3d 20 31 30 38 20 2f 2a 20 53 79 6e 74 61 78 == 108 /* Syntax 000383b0: 4b 69 6e 64 2e 54 68 69 73 4b 65 79 77 6f 72 64 Kind.ThisKeyword 000383c0: 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 20 20 */) {. 000383d0: 20 20 20 72 65 74 75 72 6e 20 34 20 2f 2a 20 41 return 4 /* A 000383e0: 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 ssignmentDeclara 000383f0: 74 69 6f 6e 4b 69 6e 64 2e 54 68 69 73 50 72 6f tionKind.ThisPro 00038400: 70 65 72 74 79 20 2a 2f 3b 0a 20 20 20 20 20 20 perty */;. 00038410: 20 20 7d 0a 20 20 20 20 20 20 20 20 65 6c 73 65 }. else 00038420: 20 69 66 20 28 69 73 4d 6f 64 75 6c 65 45 78 70 if (isModuleExp 00038430: 6f 72 74 73 41 63 63 65 73 73 45 78 70 72 65 73 ortsAccessExpres 00038440: 73 69 6f 6e 28 6c 68 73 29 29 20 7b 0a 20 20 20 sion(lhs)) {. 00038450: 20 20 20 20 20 20 20 20 20 2f 2f 20 6d 6f 64 75 // modu 00038460: 6c 65 2e 65 78 70 6f 72 74 73 20 3d 20 65 78 70 le.exports = exp 00038470: 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 r. re 00038480: 74 75 72 6e 20 32 20 2f 2a 20 41 73 73 69 67 6e turn 2 /* Assign 00038490: 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b mentDeclarationK 000384a0: 69 6e 64 2e 4d 6f 64 75 6c 65 45 78 70 6f 72 74 ind.ModuleExport 000384b0: 73 20 2a 2f 3b 0a 20 20 20 20 20 20 20 20 7d 0a s */;. }. 000384c0: 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 else if 000384d0: 28 69 73 42 69 6e 64 61 62 6c 65 53 74 61 74 69 (isBindableStati 000384e0: 63 4e 61 6d 65 45 78 70 72 65 73 73 69 6f 6e 28 cNameExpression( 000384f0: 6c 68 73 2e 65 78 70 72 65 73 73 69 6f 6e 2c 20 lhs.expression, 00038500: 2f 2a 65 78 63 6c 75 64 65 54 68 69 73 4b 65 79 /*excludeThisKey 00038510: 77 6f 72 64 2a 2f 20 74 72 75 65 29 29 20 7b 0a word*/ true)) {. 00038520: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if ( 00038530: 69 73 50 72 6f 74 6f 74 79 70 65 41 63 63 65 73 isPrototypeAcces 00038540: 73 28 6c 68 73 2e 65 78 70 72 65 73 73 69 6f 6e s(lhs.expression 00038550: 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 )) {. 00038560: 20 20 20 20 20 2f 2f 20 46 2e 47 2e 2e 2e 2e 70 // F.G....p 00038570: 72 6f 74 6f 74 79 70 65 2e 78 20 3d 20 65 78 70 rototype.x = exp 00038580: 72 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 r. 00038590: 20 20 72 65 74 75 72 6e 20 33 20 2f 2a 20 41 73 return 3 /* As 000385a0: 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 signmentDeclarat 000385b0: 69 6f 6e 4b 69 6e 64 2e 50 72 6f 74 6f 74 79 70 ionKind.Prototyp 000385c0: 65 50 72 6f 70 65 72 74 79 20 2a 2f 3b 0a 20 20 eProperty */;. 000385d0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 000385e0: 20 20 20 20 20 20 20 20 76 61 72 20 6e 65 78 74 var next 000385f0: 54 6f 4c 61 73 74 20 3d 20 6c 68 73 3b 0a 20 20 ToLast = lhs;. 00038600: 20 20 20 20 20 20 20 20 20 20 77 68 69 6c 65 20 while 00038610: 28 21 74 73 2e 69 73 49 64 65 6e 74 69 66 69 65 (!ts.isIdentifie 00038620: 72 28 6e 65 78 74 54 6f 4c 61 73 74 2e 65 78 70 r(nextToLast.exp 00038630: 72 65 73 73 69 6f 6e 29 29 20 7b 0a 20 20 20 20 ression)) {. 00038640: 20 20 20 20 20 20 20 20 20 20 20 20 6e 65 78 74 next 00038650: 54 6f 4c 61 73 74 20 3d 20 6e 65 78 74 54 6f 4c ToLast = nextToL 00038660: 61 73 74 2e 65 78 70 72 65 73 73 69 6f 6e 3b 0a ast.expression;. 00038670: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 }. 00038680: 20 20 20 20 20 20 20 20 20 20 76 61 72 20 69 64 var id 00038690: 20 3d 20 6e 65 78 74 54 6f 4c 61 73 74 2e 65 78 = nextToLast.ex 000386a0: 70 72 65 73 73 69 6f 6e 3b 0a 20 20 20 20 20 20 pression;. 000386b0: 20 20 20 20 20 20 69 66 20 28 28 69 64 2e 65 73 if ((id.es 000386c0: 63 61 70 65 64 54 65 78 74 20 3d 3d 3d 20 22 65 capedText === "e 000386d0: 78 70 6f 72 74 73 22 20 7c 7c 0a 20 20 20 20 20 xports" ||. 000386e0: 20 20 20 20 20 20 20 20 20 20 20 69 64 2e 65 73 id.es 000386f0: 63 61 70 65 64 54 65 78 74 20 3d 3d 3d 20 22 6d capedText === "m 00038700: 6f 64 75 6c 65 22 20 26 26 20 67 65 74 45 6c 65 odule" && getEle 00038710: 6d 65 6e 74 4f 72 50 72 6f 70 65 72 74 79 41 63 mentOrPropertyAc 00038720: 63 65 73 73 4e 61 6d 65 28 6e 65 78 74 54 6f 4c cessName(nextToL 00038730: 61 73 74 29 20 3d 3d 3d 20 22 65 78 70 6f 72 74 ast) === "export 00038740: 73 22 29 20 26 26 0a 20 20 20 20 20 20 20 20 20 s") &&. 00038750: 20 20 20 20 20 20 20 2f 2f 20 45 78 70 6f 72 74 // Export 00038760: 73 50 72 6f 70 65 72 74 79 20 64 6f 65 73 20 6e sProperty does n 00038770: 6f 74 20 73 75 70 70 6f 72 74 20 62 69 6e 64 69 ot support bindi 00038780: 6e 67 20 77 69 74 68 20 63 6f 6d 70 75 74 65 64 ng with computed 00038790: 20 6e 61 6d 65 73 0a 20 20 20 20 20 20 20 20 20 names. 000387a0: 20 20 20 20 20 20 20 69 73 42 69 6e 64 61 62 6c isBindabl 000387b0: 65 53 74 61 74 69 63 41 63 63 65 73 73 45 78 70 eStaticAccessExp 000387c0: 72 65 73 73 69 6f 6e 28 6c 68 73 29 29 20 7b 0a ression(lhs)) {. 000387d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 000387e0: 2f 2f 20 65 78 70 6f 72 74 73 2e 6e 61 6d 65 20 // exports.name 000387f0: 3d 20 65 78 70 72 20 4f 52 20 6d 6f 64 75 6c 65 = expr OR module 00038800: 2e 65 78 70 6f 72 74 73 2e 6e 61 6d 65 20 3d 20 .exports.name = 00038810: 65 78 70 72 20 4f 52 20 65 78 70 6f 72 74 73 5b expr OR exports[ 00038820: 22 6e 61 6d 65 22 5d 20 3d 20 65 78 70 72 20 2e "name"] = expr . 00038830: 2e 2e 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 ... 00038840: 20 20 20 72 65 74 75 72 6e 20 31 20 2f 2a 20 41 return 1 /* A 00038850: 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 ssignmentDeclara 00038860: 74 69 6f 6e 4b 69 6e 64 2e 45 78 70 6f 72 74 73 tionKind.Exports 00038870: 50 72 6f 70 65 72 74 79 20 2a 2f 3b 0a 20 20 20 Property */;. 00038880: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 00038890: 20 20 20 20 20 20 20 69 66 20 28 69 73 42 69 6e if (isBin 000388a0: 64 61 62 6c 65 53 74 61 74 69 63 4e 61 6d 65 45 dableStaticNameE 000388b0: 78 70 72 65 73 73 69 6f 6e 28 6c 68 73 2c 20 2f xpression(lhs, / 000388c0: 2a 65 78 63 6c 75 64 65 54 68 69 73 4b 65 79 77 *excludeThisKeyw 000388d0: 6f 72 64 2a 2f 20 74 72 75 65 29 20 7c 7c 20 28 ord*/ true) || ( 000388e0: 74 73 2e 69 73 45 6c 65 6d 65 6e 74 41 63 63 65 ts.isElementAcce 000388f0: 73 73 45 78 70 72 65 73 73 69 6f 6e 28 6c 68 73 ssExpression(lhs 00038900: 29 20 26 26 20 69 73 44 79 6e 61 6d 69 63 4e 61 ) && isDynamicNa 00038910: 6d 65 28 6c 68 73 29 29 29 20 7b 0a 20 20 20 20 me(lhs))) {. 00038920: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 46 // F 00038930: 2e 47 2e 2e 2e 78 20 3d 20 65 78 70 72 0a 20 20 .G...x = expr. 00038940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00038950: 74 75 72 6e 20 35 20 2f 2a 20 41 73 73 69 67 6e turn 5 /* Assign 00038960: 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b mentDeclarationK 00038970: 69 6e 64 2e 50 72 6f 70 65 72 74 79 20 2a 2f 3b ind.Property */; 00038980: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 . }. 00038990: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 000389a0: 20 72 65 74 75 72 6e 20 30 20 2f 2a 20 41 73 73 return 0 /* Ass 000389b0: 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 ignmentDeclarati 000389c0: 6f 6e 4b 69 6e 64 2e 4e 6f 6e 65 20 2a 2f 3b 0a onKind.None */;. 000389d0: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 }. ts.get 000389e0: 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 AssignmentDeclar 000389f0: 61 74 69 6f 6e 50 72 6f 70 65 72 74 79 41 63 63 ationPropertyAcc 00038a00: 65 73 73 4b 69 6e 64 20 3d 20 67 65 74 41 73 73 essKind = getAss 00038a10: 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 ignmentDeclarati 00038a20: 6f 6e 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 onPropertyAccess 00038a30: 4b 69 6e 64 3b 0a 20 20 20 20 66 75 6e 63 74 69 Kind;. functi 00038a40: 6f 6e 20 67 65 74 49 6e 69 74 69 61 6c 69 7a 65 on getInitialize 00038a50: 72 4f 66 42 69 6e 61 72 79 45 78 70 72 65 73 73 rOfBinaryExpress 00038a60: 69 6f 6e 28 65 78 70 72 29 20 7b 0a 20 20 20 20 ion(expr) {. 00038a70: 20 20 20 20 77 68 69 6c 65 20 28 74 73 2e 69 73 while (ts.is 00038a80: 42 69 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e BinaryExpression 00038a90: 28 65 78 70 72 2e 72 69 67 68 74 29 29 20 7b 0a (expr.right)) {. 00038aa0: 20 20 20 20 20 20 20 20 20 20 20 20 65 78 70 72 expr 00038ab0: 20 3d 20 65 78 70 72 2e 72 69 67 68 74 3b 0a 20 = expr.right;. 00038ac0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 00038ad0: 20 72 65 74 75 72 6e 20 65 78 70 72 2e 72 69 67 return expr.rig 00038ae0: 68 74 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 ht;. }. ts 00038af0: 2e 67 65 74 49 6e 69 74 69 61 6c 69 7a 65 72 4f .getInitializerO 00038b00: 66 42 69 6e 61 72 79 45 78 70 72 65 73 73 69 6f fBinaryExpressio 00038b10: 6e 20 3d 20 67 65 74 49 6e 69 74 69 61 6c 69 7a n = getInitializ 00038b20: 65 72 4f 66 42 69 6e 61 72 79 45 78 70 72 65 73 erOfBinaryExpres 00038b30: 73 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 sion;. functi 00038b40: 6f 6e 20 69 73 50 72 6f 74 6f 74 79 70 65 50 72 on isPrototypePr 00038b50: 6f 70 65 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 opertyAssignment 00038b60: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 00038b70: 20 72 65 74 75 72 6e 20 74 73 2e 69 73 42 69 6e return ts.isBin 00038b80: 61 72 79 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f aryExpression(no 00038b90: 64 65 29 20 26 26 20 67 65 74 41 73 73 69 67 6e de) && getAssign 00038ba0: 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b mentDeclarationK 00038bb0: 69 6e 64 28 6e 6f 64 65 29 20 3d 3d 3d 20 33 20 ind(node) === 3 00038bc0: 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 /* AssignmentDec 00038bd0: 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 2e 50 72 6f larationKind.Pro 00038be0: 74 6f 74 79 70 65 50 72 6f 70 65 72 74 79 20 2a totypeProperty * 00038bf0: 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e /;. }. ts. 00038c00: 69 73 50 72 6f 74 6f 74 79 70 65 50 72 6f 70 65 isPrototypePrope 00038c10: 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 20 3d 20 rtyAssignment = 00038c20: 69 73 50 72 6f 74 6f 74 79 70 65 50 72 6f 70 65 isPrototypePrope 00038c30: 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 3b 0a 20 rtyAssignment;. 00038c40: 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 53 70 function isSp 00038c50: 65 63 69 61 6c 50 72 6f 70 65 72 74 79 44 65 63 ecialPropertyDec 00038c60: 6c 61 72 61 74 69 6f 6e 28 65 78 70 72 29 20 7b laration(expr) { 00038c70: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 00038c80: 69 73 49 6e 4a 53 46 69 6c 65 28 65 78 70 72 29 isInJSFile(expr) 00038c90: 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 &&. 00038ca0: 65 78 70 72 2e 70 61 72 65 6e 74 20 26 26 20 65 expr.parent && e 00038cb0: 78 70 72 2e 70 61 72 65 6e 74 2e 6b 69 6e 64 20 xpr.parent.kind 00038cc0: 3d 3d 3d 20 32 33 38 20 2f 2a 20 53 79 6e 74 61 === 238 /* Synta 00038cd0: 78 4b 69 6e 64 2e 45 78 70 72 65 73 73 69 6f 6e xKind.Expression 00038ce0: 53 74 61 74 65 6d 65 6e 74 20 2a 2f 20 26 26 0a Statement */ &&. 00038cf0: 20 20 20 20 20 20 20 20 20 20 20 20 28 21 74 73 (!ts 00038d00: 2e 69 73 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 .isElementAccess 00038d10: 45 78 70 72 65 73 73 69 6f 6e 28 65 78 70 72 29 Expression(expr) 00038d20: 20 7c 7c 20 69 73 4c 69 74 65 72 61 6c 4c 69 6b || isLiteralLik 00038d30: 65 45 6c 65 6d 65 6e 74 41 63 63 65 73 73 28 65 eElementAccess(e 00038d40: 78 70 72 29 29 20 26 26 0a 20 20 20 20 20 20 20 xpr)) &&. 00038d50: 20 20 20 20 20 21 21 74 73 2e 67 65 74 4a 53 44 !!ts.getJSD 00038d60: 6f 63 54 79 70 65 54 61 67 28 65 78 70 72 2e 70 ocTypeTag(expr.p 00038d70: 61 72 65 6e 74 29 3b 0a 20 20 20 20 7d 0a 20 20 arent);. }. 00038d80: 20 20 74 73 2e 69 73 53 70 65 63 69 61 6c 50 72 ts.isSpecialPr 00038d90: 6f 70 65 72 74 79 44 65 63 6c 61 72 61 74 69 6f opertyDeclaratio 00038da0: 6e 20 3d 20 69 73 53 70 65 63 69 61 6c 50 72 6f n = isSpecialPro 00038db0: 70 65 72 74 79 44 65 63 6c 61 72 61 74 69 6f 6e pertyDeclaration 00038dc0: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 73 ;. function s 00038dd0: 65 74 56 61 6c 75 65 44 65 63 6c 61 72 61 74 69 etValueDeclarati 00038de0: 6f 6e 28 73 79 6d 62 6f 6c 2c 20 6e 6f 64 65 29 on(symbol, node) 00038df0: 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 76 {. var v 00038e00: 61 6c 75 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 alueDeclaration 00038e10: 3d 20 73 79 6d 62 6f 6c 2e 76 61 6c 75 65 44 65 = symbol.valueDe 00038e20: 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 20 20 claration;. 00038e30: 20 20 20 69 66 20 28 21 76 61 6c 75 65 44 65 63 if (!valueDec 00038e40: 6c 61 72 61 74 69 6f 6e 20 7c 7c 0a 20 20 20 20 laration ||. 00038e50: 20 20 20 20 20 20 20 20 21 28 6e 6f 64 65 2e 66 !(node.f 00038e60: 6c 61 67 73 20 26 20 31 36 37 37 37 32 31 36 20 lags & 16777216 00038e70: 2f 2a 20 4e 6f 64 65 46 6c 61 67 73 2e 41 6d 62 /* NodeFlags.Amb 00038e80: 69 65 6e 74 20 2a 2f 20 26 26 20 21 28 76 61 6c ient */ && !(val 00038e90: 75 65 44 65 63 6c 61 72 61 74 69 6f 6e 2e 66 6c ueDeclaration.fl 00038ea0: 61 67 73 20 26 20 31 36 37 37 37 32 31 36 20 2f ags & 16777216 / 00038eb0: 2a 20 4e 6f 64 65 46 6c 61 67 73 2e 41 6d 62 69 * NodeFlags.Ambi 00038ec0: 65 6e 74 20 2a 2f 29 29 20 26 26 0a 20 20 20 20 ent */)) &&. 00038ed0: 20 20 20 20 20 20 20 20 20 20 20 20 28 69 73 41 (isA 00038ee0: 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 ssignmentDeclara 00038ef0: 74 69 6f 6e 28 76 61 6c 75 65 44 65 63 6c 61 72 tion(valueDeclar 00038f00: 61 74 69 6f 6e 29 20 26 26 20 21 69 73 41 73 73 ation) && !isAss 00038f10: 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 69 ignmentDeclarati 00038f20: 6f 6e 28 6e 6f 64 65 29 29 20 7c 7c 0a 20 20 20 on(node)) ||. 00038f30: 20 20 20 20 20 20 20 20 20 28 76 61 6c 75 65 44 (valueD 00038f40: 65 63 6c 61 72 61 74 69 6f 6e 2e 6b 69 6e 64 20 eclaration.kind 00038f50: 21 3d 3d 20 6e 6f 64 65 2e 6b 69 6e 64 20 26 26 !== node.kind && 00038f60: 20 69 73 45 66 66 65 63 74 69 76 65 4d 6f 64 75 isEffectiveModu 00038f70: 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 76 61 leDeclaration(va 00038f80: 6c 75 65 44 65 63 6c 61 72 61 74 69 6f 6e 29 29 lueDeclaration)) 00038f90: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 00038fa0: 2f 2f 20 6f 74 68 65 72 20 6b 69 6e 64 73 20 6f // other kinds o 00038fb0: 66 20 76 61 6c 75 65 20 64 65 63 6c 61 72 61 74 f value declarat 00038fc0: 69 6f 6e 73 20 74 61 6b 65 20 70 72 65 63 65 64 ions take preced 00038fd0: 65 6e 63 65 20 6f 76 65 72 20 6d 6f 64 75 6c 65 ence over module 00038fe0: 73 20 61 6e 64 20 61 73 73 69 67 6e 6d 65 6e 74 s and assignment 00038ff0: 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 0a 20 20 declarations. 00039000: 20 20 20 20 20 20 20 20 20 20 73 79 6d 62 6f 6c symbol 00039010: 2e 76 61 6c 75 65 44 65 63 6c 61 72 61 74 69 6f .valueDeclaratio 00039020: 6e 20 3d 20 6e 6f 64 65 3b 0a 20 20 20 20 20 20 n = node;. 00039030: 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 }. }. ts 00039040: 2e 73 65 74 56 61 6c 75 65 44 65 63 6c 61 72 61 .setValueDeclara 00039050: 74 69 6f 6e 20 3d 20 73 65 74 56 61 6c 75 65 44 tion = setValueD 00039060: 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 20 eclaration;. 00039070: 66 75 6e 63 74 69 6f 6e 20 69 73 46 75 6e 63 74 function isFunct 00039080: 69 6f 6e 53 79 6d 62 6f 6c 28 73 79 6d 62 6f 6c ionSymbol(symbol 00039090: 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 ) {. if ( 000390a0: 21 73 79 6d 62 6f 6c 20 7c 7c 20 21 73 79 6d 62 !symbol || !symb 000390b0: 6f 6c 2e 76 61 6c 75 65 44 65 63 6c 61 72 61 74 ol.valueDeclarat 000390c0: 69 6f 6e 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ion) {. 000390d0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b return false; 000390e0: 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 . }. 000390f0: 20 20 20 76 61 72 20 64 65 63 6c 20 3d 20 73 79 var decl = sy 00039100: 6d 62 6f 6c 2e 76 61 6c 75 65 44 65 63 6c 61 72 mbol.valueDeclar 00039110: 61 74 69 6f 6e 3b 0a 20 20 20 20 20 20 20 20 72 ation;. r 00039120: 65 74 75 72 6e 20 64 65 63 6c 2e 6b 69 6e 64 20 eturn decl.kind 00039130: 3d 3d 3d 20 32 35 36 20 2f 2a 20 53 79 6e 74 61 === 256 /* Synta 00039140: 78 4b 69 6e 64 2e 46 75 6e 63 74 69 6f 6e 44 65 xKind.FunctionDe 00039150: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 20 7c 7c 20 claration */ || 00039160: 74 73 2e 69 73 56 61 72 69 61 62 6c 65 44 65 63 ts.isVariableDec 00039170: 6c 61 72 61 74 69 6f 6e 28 64 65 63 6c 29 20 26 laration(decl) & 00039180: 26 20 64 65 63 6c 2e 69 6e 69 74 69 61 6c 69 7a & decl.initializ 00039190: 65 72 20 26 26 20 74 73 2e 69 73 46 75 6e 63 74 er && ts.isFunct 000391a0: 69 6f 6e 4c 69 6b 65 28 64 65 63 6c 2e 69 6e 69 ionLike(decl.ini 000391b0: 74 69 61 6c 69 7a 65 72 29 3b 0a 20 20 20 20 7d tializer);. } 000391c0: 0a 20 20 20 20 74 73 2e 69 73 46 75 6e 63 74 69 . ts.isFuncti 000391d0: 6f 6e 53 79 6d 62 6f 6c 20 3d 20 69 73 46 75 6e onSymbol = isFun 000391e0: 63 74 69 6f 6e 53 79 6d 62 6f 6c 3b 0a 20 20 20 ctionSymbol;. 000391f0: 20 66 75 6e 63 74 69 6f 6e 20 74 72 79 47 65 74 function tryGet 00039200: 4d 6f 64 75 6c 65 53 70 65 63 69 66 69 65 72 46 ModuleSpecifierF 00039210: 72 6f 6d 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e romDeclaration(n 00039220: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 ode) {. v 00039230: 61 72 20 5f 61 2c 20 5f 62 3b 0a 20 20 20 20 20 ar _a, _b;. 00039240: 20 20 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e switch (node. 00039250: 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 kind) {. 00039260: 20 20 20 20 63 61 73 65 20 32 35 34 20 2f 2a 20 case 254 /* 00039270: 53 79 6e 74 61 78 4b 69 6e 64 2e 56 61 72 69 61 SyntaxKind.Varia 00039280: 62 6c 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a bleDeclaration * 00039290: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 000392a0: 20 20 20 72 65 74 75 72 6e 20 28 5f 61 20 3d 20 return (_a = 000392b0: 74 73 2e 66 69 6e 64 41 6e 63 65 73 74 6f 72 28 ts.findAncestor( 000392c0: 6e 6f 64 65 2e 69 6e 69 74 69 61 6c 69 7a 65 72 node.initializer 000392d0: 2c 20 66 75 6e 63 74 69 6f 6e 20 28 6e 6f 64 65 , function (node 000392e0: 29 20 7b 20 72 65 74 75 72 6e 20 69 73 52 65 71 ) { return isReq 000392f0: 75 69 72 65 43 61 6c 6c 28 6e 6f 64 65 2c 20 2f uireCall(node, / 00039300: 2a 72 65 71 75 69 72 65 53 74 72 69 6e 67 4c 69 *requireStringLi 00039310: 74 65 72 61 6c 4c 69 6b 65 41 72 67 75 6d 65 6e teralLikeArgumen 00039320: 74 2a 2f 20 74 72 75 65 29 3b 20 7d 29 29 20 3d t*/ true); })) = 00039330: 3d 3d 20 6e 75 6c 6c 20 7c 7c 20 5f 61 20 3d 3d == null || _a == 00039340: 3d 20 76 6f 69 64 20 30 20 3f 20 76 6f 69 64 20 = void 0 ? void 00039350: 30 20 3a 20 5f 61 2e 61 72 67 75 6d 65 6e 74 73 0 : _a.arguments 00039360: 5b 30 5d 3b 0a 20 20 20 20 20 20 20 20 20 20 20 [0];. 00039370: 20 63 61 73 65 20 32 36 36 20 2f 2a 20 53 79 6e case 266 /* Syn 00039380: 74 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 44 65 taxKind.ImportDe 00039390: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 000393a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 000393b0: 74 75 72 6e 20 74 73 2e 74 72 79 43 61 73 74 28 turn ts.tryCast( 000393c0: 6e 6f 64 65 2e 6d 6f 64 75 6c 65 53 70 65 63 69 node.moduleSpeci 000393d0: 66 69 65 72 2c 20 74 73 2e 69 73 53 74 72 69 6e fier, ts.isStrin 000393e0: 67 4c 69 74 65 72 61 6c 4c 69 6b 65 29 3b 0a 20 gLiteralLike);. 000393f0: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 00039400: 32 36 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 265 /* SyntaxKin 00039410: 64 2e 49 6d 70 6f 72 74 45 71 75 61 6c 73 44 65 d.ImportEqualsDe 00039420: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 00039430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00039440: 74 75 72 6e 20 74 73 2e 74 72 79 43 61 73 74 28 turn ts.tryCast( 00039450: 28 5f 62 20 3d 20 74 73 2e 74 72 79 43 61 73 74 (_b = ts.tryCast 00039460: 28 6e 6f 64 65 2e 6d 6f 64 75 6c 65 52 65 66 65 (node.moduleRefe 00039470: 72 65 6e 63 65 2c 20 74 73 2e 69 73 45 78 74 65 rence, ts.isExte 00039480: 72 6e 61 6c 4d 6f 64 75 6c 65 52 65 66 65 72 65 rnalModuleRefere 00039490: 6e 63 65 29 29 20 3d 3d 3d 20 6e 75 6c 6c 20 7c nce)) === null | 000394a0: 7c 20 5f 62 20 3d 3d 3d 20 76 6f 69 64 20 30 20 | _b === void 0 000394b0: 3f 20 76 6f 69 64 20 30 20 3a 20 5f 62 2e 65 78 ? void 0 : _b.ex 000394c0: 70 72 65 73 73 69 6f 6e 2c 20 74 73 2e 69 73 53 pression, ts.isS 000394d0: 74 72 69 6e 67 4c 69 74 65 72 61 6c 4c 69 6b 65 tringLiteralLike 000394e0: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 );. d 000394f0: 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 efault:. 00039500: 20 20 20 20 20 20 20 20 74 73 2e 44 65 62 75 67 ts.Debug 00039510: 2e 61 73 73 65 72 74 4e 65 76 65 72 28 6e 6f 64 .assertNever(nod 00039520: 65 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 e);. }. 00039530: 20 20 7d 0a 20 20 20 20 74 73 2e 74 72 79 47 65 }. ts.tryGe 00039540: 74 4d 6f 64 75 6c 65 53 70 65 63 69 66 69 65 72 tModuleSpecifier 00039550: 46 72 6f 6d 44 65 63 6c 61 72 61 74 69 6f 6e 20 FromDeclaration 00039560: 3d 20 74 72 79 47 65 74 4d 6f 64 75 6c 65 53 70 = tryGetModuleSp 00039570: 65 63 69 66 69 65 72 46 72 6f 6d 44 65 63 6c 61 ecifierFromDecla 00039580: 72 61 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 ration;. func 00039590: 74 69 6f 6e 20 69 6d 70 6f 72 74 46 72 6f 6d 4d tion importFromM 000395a0: 6f 64 75 6c 65 53 70 65 63 69 66 69 65 72 28 6e oduleSpecifier(n 000395b0: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 72 ode) {. r 000395c0: 65 74 75 72 6e 20 74 72 79 47 65 74 49 6d 70 6f eturn tryGetImpo 000395d0: 72 74 46 72 6f 6d 4d 6f 64 75 6c 65 53 70 65 63 rtFromModuleSpec 000395e0: 69 66 69 65 72 28 6e 6f 64 65 29 20 7c 7c 20 74 ifier(node) || t 000395f0: 73 2e 44 65 62 75 67 2e 66 61 69 6c 42 61 64 53 s.Debug.failBadS 00039600: 79 6e 74 61 78 4b 69 6e 64 28 6e 6f 64 65 2e 70 yntaxKind(node.p 00039610: 61 72 65 6e 74 29 3b 0a 20 20 20 20 7d 0a 20 20 arent);. }. 00039620: 20 20 74 73 2e 69 6d 70 6f 72 74 46 72 6f 6d 4d ts.importFromM 00039630: 6f 64 75 6c 65 53 70 65 63 69 66 69 65 72 20 3d oduleSpecifier = 00039640: 20 69 6d 70 6f 72 74 46 72 6f 6d 4d 6f 64 75 6c importFromModul 00039650: 65 53 70 65 63 69 66 69 65 72 3b 0a 20 20 20 20 eSpecifier;. 00039660: 66 75 6e 63 74 69 6f 6e 20 74 72 79 47 65 74 49 function tryGetI 00039670: 6d 70 6f 72 74 46 72 6f 6d 4d 6f 64 75 6c 65 53 mportFromModuleS 00039680: 70 65 63 69 66 69 65 72 28 6e 6f 64 65 29 20 7b pecifier(node) { 00039690: 0a 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 . switch 000396a0: 28 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6b 69 6e (node.parent.kin 000396b0: 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 d) {. 000396c0: 20 63 61 73 65 20 32 36 36 20 2f 2a 20 53 79 6e case 266 /* Syn 000396d0: 74 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 44 65 taxKind.ImportDe 000396e0: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 000396f0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 00039700: 37 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 72 /* SyntaxKind 00039710: 2e 45 78 70 6f 72 74 44 65 63 6c 61 72 61 74 69 .ExportDeclarati 00039720: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 00039730: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 00039740: 64 65 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 de.parent;. 00039750: 20 20 20 20 20 20 20 63 61 73 65 20 32 37 37 20 case 277 00039760: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 78 /* SyntaxKind.Ex 00039770: 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 52 65 66 65 ternalModuleRefe 00039780: 72 65 6e 63 65 20 2a 2f 3a 0a 20 20 20 20 20 20 rence */:. 00039790: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 000397a0: 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 70 61 72 node.parent.par 000397b0: 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ent;. 000397c0: 20 63 61 73 65 20 32 30 38 20 2f 2a 20 53 79 6e case 208 /* Syn 000397d0: 74 61 78 4b 69 6e 64 2e 43 61 6c 6c 45 78 70 72 taxKind.CallExpr 000397e0: 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 ession */:. 000397f0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 00039800: 6e 20 69 73 49 6d 70 6f 72 74 43 61 6c 6c 28 6e n isImportCall(n 00039810: 6f 64 65 2e 70 61 72 65 6e 74 29 20 7c 7c 20 69 ode.parent) || i 00039820: 73 52 65 71 75 69 72 65 43 61 6c 6c 28 6e 6f 64 sRequireCall(nod 00039830: 65 2e 70 61 72 65 6e 74 2c 20 2f 2a 63 68 65 63 e.parent, /*chec 00039840: 6b 41 72 67 2a 2f 20 66 61 6c 73 65 29 20 3f 20 kArg*/ false) ? 00039850: 6e 6f 64 65 2e 70 61 72 65 6e 74 20 3a 20 75 6e node.parent : un 00039860: 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 defined;. 00039870: 20 20 20 20 20 63 61 73 65 20 31 39 36 20 2f 2a case 196 /* 00039880: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4c 69 74 65 SyntaxKind.Lite 00039890: 72 61 6c 54 79 70 65 20 2a 2f 3a 0a 20 20 20 20 ralType */:. 000398a0: 20 20 20 20 20 20 20 20 20 20 20 20 74 73 2e 44 ts.D 000398b0: 65 62 75 67 2e 61 73 73 65 72 74 28 74 73 2e 69 ebug.assert(ts.i 000398c0: 73 53 74 72 69 6e 67 4c 69 74 65 72 61 6c 28 6e sStringLiteral(n 000398d0: 6f 64 65 29 29 3b 0a 20 20 20 20 20 20 20 20 20 ode));. 000398e0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 return ts 000398f0: 2e 74 72 79 43 61 73 74 28 6e 6f 64 65 2e 70 61 .tryCast(node.pa 00039900: 72 65 6e 74 2e 70 61 72 65 6e 74 2c 20 74 73 2e rent.parent, ts. 00039910: 69 73 49 6d 70 6f 72 74 54 79 70 65 4e 6f 64 65 isImportTypeNode 00039920: 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 64 );. d 00039930: 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 20 20 efault:. 00039940: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 return u 00039950: 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 ndefined;. 00039960: 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 }. }. ts 00039970: 2e 74 72 79 47 65 74 49 6d 70 6f 72 74 46 72 6f .tryGetImportFro 00039980: 6d 4d 6f 64 75 6c 65 53 70 65 63 69 66 69 65 72 mModuleSpecifier 00039990: 20 3d 20 74 72 79 47 65 74 49 6d 70 6f 72 74 46 = tryGetImportF 000399a0: 72 6f 6d 4d 6f 64 75 6c 65 53 70 65 63 69 66 69 romModuleSpecifi 000399b0: 65 72 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e er;. function 000399c0: 20 67 65 74 45 78 74 65 72 6e 61 6c 4d 6f 64 75 getExternalModu 000399d0: 6c 65 4e 61 6d 65 28 6e 6f 64 65 29 20 7b 0a 20 leName(node) {. 000399e0: 20 20 20 20 20 20 20 73 77 69 74 63 68 20 28 6e switch (n 000399f0: 6f 64 65 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 ode.kind) {. 00039a00: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 36 36 case 266 00039a10: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 /* SyntaxKind.I 00039a20: 6d 70 6f 72 74 44 65 63 6c 61 72 61 74 69 6f 6e mportDeclaration 00039a30: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 00039a40: 20 63 61 73 65 20 32 37 32 20 2f 2a 20 53 79 6e case 272 /* Syn 00039a50: 74 61 78 4b 69 6e 64 2e 45 78 70 6f 72 74 44 65 taxKind.ExportDe 00039a60: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 00039a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00039a80: 74 75 72 6e 20 6e 6f 64 65 2e 6d 6f 64 75 6c 65 turn node.module 00039a90: 53 70 65 63 69 66 69 65 72 3b 0a 20 20 20 20 20 Specifier;. 00039aa0: 20 20 20 20 20 20 20 63 61 73 65 20 32 36 35 20 case 265 00039ab0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d /* SyntaxKind.Im 00039ac0: 70 6f 72 74 45 71 75 61 6c 73 44 65 63 6c 61 72 portEqualsDeclar 00039ad0: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 00039ae0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00039af0: 20 6e 6f 64 65 2e 6d 6f 64 75 6c 65 52 65 66 65 node.moduleRefe 00039b00: 72 65 6e 63 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 rence.kind === 2 00039b10: 37 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 77 /* SyntaxKind 00039b20: 2e 45 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 52 .ExternalModuleR 00039b30: 65 66 65 72 65 6e 63 65 20 2a 2f 20 3f 20 6e 6f eference */ ? no 00039b40: 64 65 2e 6d 6f 64 75 6c 65 52 65 66 65 72 65 6e de.moduleReferen 00039b50: 63 65 2e 65 78 70 72 65 73 73 69 6f 6e 20 3a 20 ce.expression : 00039b60: 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 undefined;. 00039b70: 20 20 20 20 20 20 20 63 61 73 65 20 32 30 30 20 case 200 00039b80: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d /* SyntaxKind.Im 00039b90: 70 6f 72 74 54 79 70 65 20 2a 2f 3a 0a 20 20 20 portType */:. 00039ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00039bb0: 75 72 6e 20 69 73 4c 69 74 65 72 61 6c 49 6d 70 urn isLiteralImp 00039bc0: 6f 72 74 54 79 70 65 4e 6f 64 65 28 6e 6f 64 65 ortTypeNode(node 00039bd0: 29 20 3f 20 6e 6f 64 65 2e 61 72 67 75 6d 65 6e ) ? node.argumen 00039be0: 74 2e 6c 69 74 65 72 61 6c 20 3a 20 75 6e 64 65 t.literal : unde 00039bf0: 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 20 fined;. 00039c00: 20 20 20 63 61 73 65 20 32 30 38 20 2f 2a 20 53 case 208 /* S 00039c10: 79 6e 74 61 78 4b 69 6e 64 2e 43 61 6c 6c 45 78 yntaxKind.CallEx 00039c20: 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 pression */:. 00039c30: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 00039c40: 75 72 6e 20 6e 6f 64 65 2e 61 72 67 75 6d 65 6e urn node.argumen 00039c50: 74 73 5b 30 5d 3b 0a 20 20 20 20 20 20 20 20 20 ts[0];. 00039c60: 20 20 20 63 61 73 65 20 32 36 31 20 2f 2a 20 53 case 261 /* S 00039c70: 79 6e 74 61 78 4b 69 6e 64 2e 4d 6f 64 75 6c 65 yntaxKind.Module 00039c80: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a Declaration */:. 00039c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00039ca0: 72 65 74 75 72 6e 20 6e 6f 64 65 2e 6e 61 6d 65 return node.name 00039cb0: 2e 6b 69 6e 64 20 3d 3d 3d 20 31 30 20 2f 2a 20 .kind === 10 /* 00039cc0: 53 79 6e 74 61 78 4b 69 6e 64 2e 53 74 72 69 6e SyntaxKind.Strin 00039cd0: 67 4c 69 74 65 72 61 6c 20 2a 2f 20 3f 20 6e 6f gLiteral */ ? no 00039ce0: 64 65 2e 6e 61 6d 65 20 3a 20 75 6e 64 65 66 69 de.name : undefi 00039cf0: 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ned;. 00039d00: 20 64 65 66 61 75 6c 74 3a 0a 20 20 20 20 20 20 default:. 00039d10: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00039d20: 20 74 73 2e 44 65 62 75 67 2e 61 73 73 65 72 74 ts.Debug.assert 00039d30: 4e 65 76 65 72 28 6e 6f 64 65 29 3b 0a 20 20 20 Never(node);. 00039d40: 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 }. }. 00039d50: 20 74 73 2e 67 65 74 45 78 74 65 72 6e 61 6c 4d ts.getExternalM 00039d60: 6f 64 75 6c 65 4e 61 6d 65 20 3d 20 67 65 74 45 oduleName = getE 00039d70: 78 74 65 72 6e 61 6c 4d 6f 64 75 6c 65 4e 61 6d xternalModuleNam 00039d80: 65 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 e;. function 00039d90: 67 65 74 4e 61 6d 65 73 70 61 63 65 44 65 63 6c getNamespaceDecl 00039da0: 61 72 61 74 69 6f 6e 4e 6f 64 65 28 6e 6f 64 65 arationNode(node 00039db0: 29 20 7b 0a 20 20 20 20 20 20 20 20 73 77 69 74 ) {. swit 00039dc0: 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 7b ch (node.kind) { 00039dd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 00039de0: 65 20 32 36 36 20 2f 2a 20 53 79 6e 74 61 78 4b e 266 /* SyntaxK 00039df0: 69 6e 64 2e 49 6d 70 6f 72 74 44 65 63 6c 61 72 ind.ImportDeclar 00039e00: 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 ation */:. 00039e10: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 00039e20: 20 6e 6f 64 65 2e 69 6d 70 6f 72 74 43 6c 61 75 node.importClau 00039e30: 73 65 20 26 26 20 74 73 2e 74 72 79 43 61 73 74 se && ts.tryCast 00039e40: 28 6e 6f 64 65 2e 69 6d 70 6f 72 74 43 6c 61 75 (node.importClau 00039e50: 73 65 2e 6e 61 6d 65 64 42 69 6e 64 69 6e 67 73 se.namedBindings 00039e60: 2c 20 74 73 2e 69 73 4e 61 6d 65 73 70 61 63 65 , ts.isNamespace 00039e70: 49 6d 70 6f 72 74 29 3b 0a 20 20 20 20 20 20 20 Import);. 00039e80: 20 20 20 20 20 63 61 73 65 20 32 36 35 20 2f 2a case 265 /* 00039e90: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d 70 6f SyntaxKind.Impo 00039ea0: 72 74 45 71 75 61 6c 73 44 65 63 6c 61 72 61 74 rtEqualsDeclarat 00039eb0: 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ion */:. 00039ec0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e return n 00039ed0: 6f 64 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 ode;. 00039ee0: 20 63 61 73 65 20 32 37 32 20 2f 2a 20 53 79 6e case 272 /* Syn 00039ef0: 74 61 78 4b 69 6e 64 2e 45 78 70 6f 72 74 44 65 taxKind.ExportDe 00039f00: 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 3a 0a 20 20 claration */:. 00039f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 00039f20: 74 75 72 6e 20 6e 6f 64 65 2e 65 78 70 6f 72 74 turn node.export 00039f30: 43 6c 61 75 73 65 20 26 26 20 74 73 2e 74 72 79 Clause && ts.try 00039f40: 43 61 73 74 28 6e 6f 64 65 2e 65 78 70 6f 72 74 Cast(node.export 00039f50: 43 6c 61 75 73 65 2c 20 74 73 2e 69 73 4e 61 6d Clause, ts.isNam 00039f60: 65 73 70 61 63 65 45 78 70 6f 72 74 29 3b 0a 20 espaceExport);. 00039f70: 20 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 defau 00039f80: 6c 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 lt:. 00039f90: 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 44 65 return ts.De 00039fa0: 62 75 67 2e 61 73 73 65 72 74 4e 65 76 65 72 28 bug.assertNever( 00039fb0: 6e 6f 64 65 29 3b 0a 20 20 20 20 20 20 20 20 7d node);. } 00039fc0: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 . }. ts.ge 00039fd0: 74 4e 61 6d 65 73 70 61 63 65 44 65 63 6c 61 72 tNamespaceDeclar 00039fe0: 61 74 69 6f 6e 4e 6f 64 65 20 3d 20 67 65 74 4e ationNode = getN 00039ff0: 61 6d 65 73 70 61 63 65 44 65 63 6c 61 72 61 74 amespaceDeclarat 0003a000: 69 6f 6e 4e 6f 64 65 3b 0a 20 20 20 20 66 75 6e ionNode;. fun 0003a010: 63 74 69 6f 6e 20 69 73 44 65 66 61 75 6c 74 49 ction isDefaultI 0003a020: 6d 70 6f 72 74 28 6e 6f 64 65 29 20 7b 0a 20 20 mport(node) {. 0003a030: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 return nod 0003a040: 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 36 36 20 2f e.kind === 266 / 0003a050: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d 70 * SyntaxKind.Imp 0003a060: 6f 72 74 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a ortDeclaration * 0003a070: 2f 20 26 26 20 21 21 6e 6f 64 65 2e 69 6d 70 6f / && !!node.impo 0003a080: 72 74 43 6c 61 75 73 65 20 26 26 20 21 21 6e 6f rtClause && !!no 0003a090: 64 65 2e 69 6d 70 6f 72 74 43 6c 61 75 73 65 2e de.importClause. 0003a0a0: 6e 61 6d 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 name;. }. 0003a0b0: 74 73 2e 69 73 44 65 66 61 75 6c 74 49 6d 70 6f ts.isDefaultImpo 0003a0c0: 72 74 20 3d 20 69 73 44 65 66 61 75 6c 74 49 6d rt = isDefaultIm 0003a0d0: 70 6f 72 74 3b 0a 20 20 20 20 66 75 6e 63 74 69 port;. functi 0003a0e0: 6f 6e 20 66 6f 72 45 61 63 68 49 6d 70 6f 72 74 on forEachImport 0003a0f0: 43 6c 61 75 73 65 44 65 63 6c 61 72 61 74 69 6f ClauseDeclaratio 0003a100: 6e 28 6e 6f 64 65 2c 20 61 63 74 69 6f 6e 29 20 n(node, action) 0003a110: 7b 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f {. if (no 0003a120: 64 65 2e 6e 61 6d 65 29 20 7b 0a 20 20 20 20 20 de.name) {. 0003a130: 20 20 20 20 20 20 20 76 61 72 20 72 65 73 75 6c var resul 0003a140: 74 20 3d 20 61 63 74 69 6f 6e 28 6e 6f 64 65 29 t = action(node) 0003a150: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 69 66 ;. if 0003a160: 20 28 72 65 73 75 6c 74 29 0a 20 20 20 20 20 20 (result). 0003a170: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 0003a180: 20 72 65 73 75 6c 74 3b 0a 20 20 20 20 20 20 20 result;. 0003a190: 20 7d 0a 20 20 20 20 20 20 20 20 69 66 20 28 6e }. if (n 0003a1a0: 6f 64 65 2e 6e 61 6d 65 64 42 69 6e 64 69 6e 67 ode.namedBinding 0003a1b0: 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 s) {. 0003a1c0: 20 76 61 72 20 72 65 73 75 6c 74 20 3d 20 74 73 var result = ts 0003a1d0: 2e 69 73 4e 61 6d 65 73 70 61 63 65 49 6d 70 6f .isNamespaceImpo 0003a1e0: 72 74 28 6e 6f 64 65 2e 6e 61 6d 65 64 42 69 6e rt(node.namedBin 0003a1f0: 64 69 6e 67 73 29 0a 20 20 20 20 20 20 20 20 20 dings). 0003a200: 20 20 20 20 20 20 20 3f 20 61 63 74 69 6f 6e 28 ? action( 0003a210: 6e 6f 64 65 2e 6e 61 6d 65 64 42 69 6e 64 69 6e node.namedBindin 0003a220: 67 73 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 gs). 0003a230: 20 20 20 20 3a 20 74 73 2e 66 6f 72 45 61 63 68 : ts.forEach 0003a240: 28 6e 6f 64 65 2e 6e 61 6d 65 64 42 69 6e 64 69 (node.namedBindi 0003a250: 6e 67 73 2e 65 6c 65 6d 65 6e 74 73 2c 20 61 63 ngs.elements, ac 0003a260: 74 69 6f 6e 29 3b 0a 20 20 20 20 20 20 20 20 20 tion);. 0003a270: 20 20 20 69 66 20 28 72 65 73 75 6c 74 29 0a 20 if (result). 0003a280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 0003a290: 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0a 20 20 eturn result;. 0003a2a0: 20 20 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 }. }. 0003a2b0: 20 20 74 73 2e 66 6f 72 45 61 63 68 49 6d 70 6f ts.forEachImpo 0003a2c0: 72 74 43 6c 61 75 73 65 44 65 63 6c 61 72 61 74 rtClauseDeclarat 0003a2d0: 69 6f 6e 20 3d 20 66 6f 72 45 61 63 68 49 6d 70 ion = forEachImp 0003a2e0: 6f 72 74 43 6c 61 75 73 65 44 65 63 6c 61 72 61 ortClauseDeclara 0003a2f0: 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 tion;. functi 0003a300: 6f 6e 20 68 61 73 51 75 65 73 74 69 6f 6e 54 6f on hasQuestionTo 0003a310: 6b 65 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ken(node) {. 0003a320: 20 20 20 20 69 66 20 28 6e 6f 64 65 29 20 7b 0a if (node) {. 0003a330: 20 20 20 20 20 20 20 20 20 20 20 20 73 77 69 74 swit 0003a340: 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 29 20 7b ch (node.kind) { 0003a350: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0003a360: 20 63 61 73 65 20 31 36 34 20 2f 2a 20 53 79 6e case 164 /* Syn 0003a370: 74 61 78 4b 69 6e 64 2e 50 61 72 61 6d 65 74 65 taxKind.Paramete 0003a380: 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 r */:. 0003a390: 20 20 20 20 20 20 63 61 73 65 20 31 36 39 20 2f case 169 / 0003a3a0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 74 * SyntaxKind.Met 0003a3b0: 68 6f 64 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a hodDeclaration * 0003a3c0: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0003a3d0: 20 20 20 63 61 73 65 20 31 36 38 20 2f 2a 20 53 case 168 /* S 0003a3e0: 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 74 68 6f 64 yntaxKind.Method 0003a3f0: 53 69 67 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 Signature */:. 0003a400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 ca 0003a410: 73 65 20 32 39 37 20 2f 2a 20 53 79 6e 74 61 78 se 297 /* Syntax 0003a420: 4b 69 6e 64 2e 53 68 6f 72 74 68 61 6e 64 50 72 Kind.ShorthandPr 0003a430: 6f 70 65 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 opertyAssignment 0003a440: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 0003a450: 20 20 20 20 20 63 61 73 65 20 32 39 36 20 2f 2a case 296 /* 0003a460: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 SyntaxKind.Prop 0003a470: 65 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 20 2a ertyAssignment * 0003a480: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 /:. 0003a490: 20 20 20 63 61 73 65 20 31 36 37 20 2f 2a 20 53 case 167 /* S 0003a4a0: 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 yntaxKind.Proper 0003a4b0: 74 79 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f tyDeclaration */ 0003a4c0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0003a4d0: 20 20 63 61 73 65 20 31 36 36 20 2f 2a 20 53 79 case 166 /* Sy 0003a4e0: 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 ntaxKind.Propert 0003a4f0: 79 53 69 67 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 ySignature */:. 0003a500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003a510: 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 71 return node.q 0003a520: 75 65 73 74 69 6f 6e 54 6f 6b 65 6e 20 21 3d 3d uestionToken !== 0003a530: 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 undefined;. 0003a540: 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 }. 0003a550: 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 }. retu 0003a560: 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a rn false;. }. 0003a570: 20 20 20 20 74 73 2e 68 61 73 51 75 65 73 74 69 ts.hasQuesti 0003a580: 6f 6e 54 6f 6b 65 6e 20 3d 20 68 61 73 51 75 65 onToken = hasQue 0003a590: 73 74 69 6f 6e 54 6f 6b 65 6e 3b 0a 20 20 20 20 stionToken;. 0003a5a0: 66 75 6e 63 74 69 6f 6e 20 69 73 4a 53 44 6f 63 function isJSDoc 0003a5b0: 43 6f 6e 73 74 72 75 63 74 53 69 67 6e 61 74 75 ConstructSignatu 0003a5c0: 72 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 re(node) {. 0003a5d0: 20 20 20 76 61 72 20 70 61 72 61 6d 20 3d 20 74 var param = t 0003a5e0: 73 2e 69 73 4a 53 44 6f 63 46 75 6e 63 74 69 6f s.isJSDocFunctio 0003a5f0: 6e 54 79 70 65 28 6e 6f 64 65 29 20 3f 20 74 73 nType(node) ? ts 0003a600: 2e 66 69 72 73 74 4f 72 55 6e 64 65 66 69 6e 65 .firstOrUndefine 0003a610: 64 28 6e 6f 64 65 2e 70 61 72 61 6d 65 74 65 72 d(node.parameter 0003a620: 73 29 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b 0a s) : undefined;. 0003a630: 20 20 20 20 20 20 20 20 76 61 72 20 6e 61 6d 65 var name 0003a640: 20 3d 20 74 73 2e 74 72 79 43 61 73 74 28 70 61 = ts.tryCast(pa 0003a650: 72 61 6d 20 26 26 20 70 61 72 61 6d 2e 6e 61 6d ram && param.nam 0003a660: 65 2c 20 74 73 2e 69 73 49 64 65 6e 74 69 66 69 e, ts.isIdentifi 0003a670: 65 72 29 3b 0a 20 20 20 20 20 20 20 20 72 65 74 er);. ret 0003a680: 75 72 6e 20 21 21 6e 61 6d 65 20 26 26 20 6e 61 urn !!name && na 0003a690: 6d 65 2e 65 73 63 61 70 65 64 54 65 78 74 20 3d me.escapedText = 0003a6a0: 3d 3d 20 22 6e 65 77 22 3b 0a 20 20 20 20 7d 0a == "new";. }. 0003a6b0: 20 20 20 20 74 73 2e 69 73 4a 53 44 6f 63 43 6f ts.isJSDocCo 0003a6c0: 6e 73 74 72 75 63 74 53 69 67 6e 61 74 75 72 65 nstructSignature 0003a6d0: 20 3d 20 69 73 4a 53 44 6f 63 43 6f 6e 73 74 72 = isJSDocConstr 0003a6e0: 75 63 74 53 69 67 6e 61 74 75 72 65 3b 0a 20 20 uctSignature;. 0003a6f0: 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4a 53 44 function isJSD 0003a700: 6f 63 54 79 70 65 41 6c 69 61 73 28 6e 6f 64 65 ocTypeAlias(node 0003a710: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0003a720: 72 6e 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d rn node.kind === 0003a730: 20 33 34 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 345 /* SyntaxKi 0003a740: 6e 64 2e 4a 53 44 6f 63 54 79 70 65 64 65 66 54 nd.JSDocTypedefT 0003a750: 61 67 20 2a 2f 20 7c 7c 20 6e 6f 64 65 2e 6b 69 ag */ || node.ki 0003a760: 6e 64 20 3d 3d 3d 20 33 33 38 20 2f 2a 20 53 79 nd === 338 /* Sy 0003a770: 6e 74 61 78 4b 69 6e 64 2e 4a 53 44 6f 63 43 61 ntaxKind.JSDocCa 0003a780: 6c 6c 62 61 63 6b 54 61 67 20 2a 2f 20 7c 7c 20 llbackTag */ || 0003a790: 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 33 33 node.kind === 33 0003a7a0: 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 9 /* SyntaxKind. 0003a7b0: 4a 53 44 6f 63 45 6e 75 6d 54 61 67 20 2a 2f 3b JSDocEnumTag */; 0003a7c0: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 . }. ts.is 0003a7d0: 4a 53 44 6f 63 54 79 70 65 41 6c 69 61 73 20 3d JSDocTypeAlias = 0003a7e0: 20 69 73 4a 53 44 6f 63 54 79 70 65 41 6c 69 61 isJSDocTypeAlia 0003a7f0: 73 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 s;. function 0003a800: 69 73 54 79 70 65 41 6c 69 61 73 28 6e 6f 64 65 isTypeAlias(node 0003a810: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0003a820: 72 6e 20 69 73 4a 53 44 6f 63 54 79 70 65 41 6c rn isJSDocTypeAl 0003a830: 69 61 73 28 6e 6f 64 65 29 20 7c 7c 20 74 73 2e ias(node) || ts. 0003a840: 69 73 54 79 70 65 41 6c 69 61 73 44 65 63 6c 61 isTypeAliasDecla 0003a850: 72 61 74 69 6f 6e 28 6e 6f 64 65 29 3b 0a 20 20 ration(node);. 0003a860: 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 54 79 70 }. ts.isTyp 0003a870: 65 41 6c 69 61 73 20 3d 20 69 73 54 79 70 65 41 eAlias = isTypeA 0003a880: 6c 69 61 73 3b 0a 20 20 20 20 66 75 6e 63 74 69 lias;. functi 0003a890: 6f 6e 20 67 65 74 53 6f 75 72 63 65 4f 66 41 73 on getSourceOfAs 0003a8a0: 73 69 67 6e 6d 65 6e 74 28 6e 6f 64 65 29 20 7b signment(node) { 0003a8b0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 0003a8c0: 74 73 2e 69 73 45 78 70 72 65 73 73 69 6f 6e 53 ts.isExpressionS 0003a8d0: 74 61 74 65 6d 65 6e 74 28 6e 6f 64 65 29 20 26 tatement(node) & 0003a8e0: 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 74 73 &. ts 0003a8f0: 2e 69 73 42 69 6e 61 72 79 45 78 70 72 65 73 73 .isBinaryExpress 0003a900: 69 6f 6e 28 6e 6f 64 65 2e 65 78 70 72 65 73 73 ion(node.express 0003a910: 69 6f 6e 29 20 26 26 0a 20 20 20 20 20 20 20 20 ion) &&. 0003a920: 20 20 20 20 6e 6f 64 65 2e 65 78 70 72 65 73 73 node.express 0003a930: 69 6f 6e 2e 6f 70 65 72 61 74 6f 72 54 6f 6b 65 ion.operatorToke 0003a940: 6e 2e 6b 69 6e 64 20 3d 3d 3d 20 36 33 20 2f 2a n.kind === 63 /* 0003a950: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 71 75 61 SyntaxKind.Equa 0003a960: 6c 73 54 6f 6b 65 6e 20 2a 2f 0a 20 20 20 20 20 lsToken */. 0003a970: 20 20 20 20 20 20 20 3f 20 67 65 74 52 69 67 68 ? getRigh 0003a980: 74 4d 6f 73 74 41 73 73 69 67 6e 65 64 45 78 70 tMostAssignedExp 0003a990: 72 65 73 73 69 6f 6e 28 6e 6f 64 65 2e 65 78 70 ression(node.exp 0003a9a0: 72 65 73 73 69 6f 6e 29 0a 20 20 20 20 20 20 20 ression). 0003a9b0: 20 20 20 20 20 3a 20 75 6e 64 65 66 69 6e 65 64 : undefined 0003a9c0: 3b 0a 20 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 ;. }. func 0003a9d0: 74 69 6f 6e 20 67 65 74 53 6f 75 72 63 65 4f 66 tion getSourceOf 0003a9e0: 44 65 66 61 75 6c 74 65 64 41 73 73 69 67 6e 6d DefaultedAssignm 0003a9f0: 65 6e 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 ent(node) {. 0003aa00: 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 73 return ts.is 0003aa10: 45 78 70 72 65 73 73 69 6f 6e 53 74 61 74 65 6d ExpressionStatem 0003aa20: 65 6e 74 28 6e 6f 64 65 29 20 26 26 0a 20 20 20 ent(node) &&. 0003aa30: 20 20 20 20 20 20 20 20 20 74 73 2e 69 73 42 69 ts.isBi 0003aa40: 6e 61 72 79 45 78 70 72 65 73 73 69 6f 6e 28 6e naryExpression(n 0003aa50: 6f 64 65 2e 65 78 70 72 65 73 73 69 6f 6e 29 20 ode.expression) 0003aa60: 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 67 &&. g 0003aa70: 65 74 41 73 73 69 67 6e 6d 65 6e 74 44 65 63 6c etAssignmentDecl 0003aa80: 61 72 61 74 69 6f 6e 4b 69 6e 64 28 6e 6f 64 65 arationKind(node 0003aa90: 2e 65 78 70 72 65 73 73 69 6f 6e 29 20 21 3d 3d .expression) !== 0003aaa0: 20 30 20 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 0 /* Assignment 0003aab0: 44 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 2e DeclarationKind. 0003aac0: 4e 6f 6e 65 20 2a 2f 20 26 26 0a 20 20 20 20 20 None */ &&. 0003aad0: 20 20 20 20 20 20 20 74 73 2e 69 73 42 69 6e 61 ts.isBina 0003aae0: 72 79 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 ryExpression(nod 0003aaf0: 65 2e 65 78 70 72 65 73 73 69 6f 6e 2e 72 69 67 e.expression.rig 0003ab00: 68 74 29 20 26 26 0a 20 20 20 20 20 20 20 20 20 ht) &&. 0003ab10: 20 20 20 28 6e 6f 64 65 2e 65 78 70 72 65 73 73 (node.express 0003ab20: 69 6f 6e 2e 72 69 67 68 74 2e 6f 70 65 72 61 74 ion.right.operat 0003ab30: 6f 72 54 6f 6b 65 6e 2e 6b 69 6e 64 20 3d 3d 3d orToken.kind === 0003ab40: 20 35 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 56 /* SyntaxKin 0003ab50: 64 2e 42 61 72 42 61 72 54 6f 6b 65 6e 20 2a 2f d.BarBarToken */ 0003ab60: 20 7c 7c 20 6e 6f 64 65 2e 65 78 70 72 65 73 73 || node.express 0003ab70: 69 6f 6e 2e 72 69 67 68 74 2e 6f 70 65 72 61 74 ion.right.operat 0003ab80: 6f 72 54 6f 6b 65 6e 2e 6b 69 6e 64 20 3d 3d 3d orToken.kind === 0003ab90: 20 36 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 60 /* SyntaxKin 0003aba0: 64 2e 51 75 65 73 74 69 6f 6e 51 75 65 73 74 69 d.QuestionQuesti 0003abb0: 6f 6e 54 6f 6b 65 6e 20 2a 2f 29 0a 20 20 20 20 onToken */). 0003abc0: 20 20 20 20 20 20 20 20 3f 20 6e 6f 64 65 2e 65 ? node.e 0003abd0: 78 70 72 65 73 73 69 6f 6e 2e 72 69 67 68 74 2e xpression.right. 0003abe0: 72 69 67 68 74 0a 20 20 20 20 20 20 20 20 20 20 right. 0003abf0: 20 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 : undefined;. 0003ac00: 20 20 20 7d 0a 20 20 20 20 66 75 6e 63 74 69 6f }. functio 0003ac10: 6e 20 67 65 74 53 69 6e 67 6c 65 49 6e 69 74 69 n getSingleIniti 0003ac20: 61 6c 69 7a 65 72 4f 66 56 61 72 69 61 62 6c 65 alizerOfVariable 0003ac30: 53 74 61 74 65 6d 65 6e 74 4f 72 50 72 6f 70 65 StatementOrPrope 0003ac40: 72 74 79 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e rtyDeclaration(n 0003ac50: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ode) {. s 0003ac60: 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b 69 6e 64 witch (node.kind 0003ac70: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 0003ac80: 63 61 73 65 20 32 33 37 20 2f 2a 20 53 79 6e 74 case 237 /* Synt 0003ac90: 61 78 4b 69 6e 64 2e 56 61 72 69 61 62 6c 65 53 axKind.VariableS 0003aca0: 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 tatement */:. 0003acb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 var 0003acc0: 20 76 20 3d 20 67 65 74 53 69 6e 67 6c 65 56 61 v = getSingleVa 0003acd0: 72 69 61 62 6c 65 4f 66 56 61 72 69 61 62 6c 65 riableOfVariable 0003ace0: 53 74 61 74 65 6d 65 6e 74 28 6e 6f 64 65 29 3b Statement(node); 0003acf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0003ad00: 20 72 65 74 75 72 6e 20 76 20 26 26 20 76 2e 69 return v && v.i 0003ad10: 6e 69 74 69 61 6c 69 7a 65 72 3b 0a 20 20 20 20 nitializer;. 0003ad20: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 36 37 case 167 0003ad30: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 /* SyntaxKind.P 0003ad40: 72 6f 70 65 72 74 79 44 65 63 6c 61 72 61 74 69 ropertyDeclarati 0003ad50: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 0003ad60: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 6f return no 0003ad70: 64 65 2e 69 6e 69 74 69 61 6c 69 7a 65 72 3b 0a de.initializer;. 0003ad80: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0003ad90: 20 32 39 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 296 /* SyntaxKi 0003ada0: 6e 64 2e 50 72 6f 70 65 72 74 79 41 73 73 69 67 nd.PropertyAssig 0003adb0: 6e 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 nment */:. 0003adc0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 0003add0: 20 6e 6f 64 65 2e 69 6e 69 74 69 61 6c 69 7a 65 node.initialize 0003ade0: 72 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 r;. }. 0003adf0: 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 53 69 6e }. ts.getSin 0003ae00: 67 6c 65 49 6e 69 74 69 61 6c 69 7a 65 72 4f 66 gleInitializerOf 0003ae10: 56 61 72 69 61 62 6c 65 53 74 61 74 65 6d 65 6e VariableStatemen 0003ae20: 74 4f 72 50 72 6f 70 65 72 74 79 44 65 63 6c 61 tOrPropertyDecla 0003ae30: 72 61 74 69 6f 6e 20 3d 20 67 65 74 53 69 6e 67 ration = getSing 0003ae40: 6c 65 49 6e 69 74 69 61 6c 69 7a 65 72 4f 66 56 leInitializerOfV 0003ae50: 61 72 69 61 62 6c 65 53 74 61 74 65 6d 65 6e 74 ariableStatement 0003ae60: 4f 72 50 72 6f 70 65 72 74 79 44 65 63 6c 61 72 OrPropertyDeclar 0003ae70: 61 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 ation;. funct 0003ae80: 69 6f 6e 20 67 65 74 53 69 6e 67 6c 65 56 61 72 ion getSingleVar 0003ae90: 69 61 62 6c 65 4f 66 56 61 72 69 61 62 6c 65 53 iableOfVariableS 0003aea0: 74 61 74 65 6d 65 6e 74 28 6e 6f 64 65 29 20 7b tatement(node) { 0003aeb0: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 0003aec0: 74 73 2e 69 73 56 61 72 69 61 62 6c 65 53 74 61 ts.isVariableSta 0003aed0: 74 65 6d 65 6e 74 28 6e 6f 64 65 29 20 3f 20 74 tement(node) ? t 0003aee0: 73 2e 66 69 72 73 74 4f 72 55 6e 64 65 66 69 6e s.firstOrUndefin 0003aef0: 65 64 28 6e 6f 64 65 2e 64 65 63 6c 61 72 61 74 ed(node.declarat 0003af00: 69 6f 6e 4c 69 73 74 2e 64 65 63 6c 61 72 61 74 ionList.declarat 0003af10: 69 6f 6e 73 29 20 3a 20 75 6e 64 65 66 69 6e 65 ions) : undefine 0003af20: 64 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e d;. }. ts. 0003af30: 67 65 74 53 69 6e 67 6c 65 56 61 72 69 61 62 6c getSingleVariabl 0003af40: 65 4f 66 56 61 72 69 61 62 6c 65 53 74 61 74 65 eOfVariableState 0003af50: 6d 65 6e 74 20 3d 20 67 65 74 53 69 6e 67 6c 65 ment = getSingle 0003af60: 56 61 72 69 61 62 6c 65 4f 66 56 61 72 69 61 62 VariableOfVariab 0003af70: 6c 65 53 74 61 74 65 6d 65 6e 74 3b 0a 20 20 20 leStatement;. 0003af80: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 4e 65 73 function getNes 0003af90: 74 65 64 4d 6f 64 75 6c 65 44 65 63 6c 61 72 61 tedModuleDeclara 0003afa0: 74 69 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 tion(node) {. 0003afb0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 73 2e 69 return ts.i 0003afc0: 73 4d 6f 64 75 6c 65 44 65 63 6c 61 72 61 74 69 sModuleDeclarati 0003afd0: 6f 6e 28 6e 6f 64 65 29 20 26 26 0a 20 20 20 20 on(node) &&. 0003afe0: 20 20 20 20 20 20 20 20 6e 6f 64 65 2e 62 6f 64 node.bod 0003aff0: 79 20 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 y &&. 0003b000: 20 6e 6f 64 65 2e 62 6f 64 79 2e 6b 69 6e 64 20 node.body.kind 0003b010: 3d 3d 3d 20 32 36 31 20 2f 2a 20 53 79 6e 74 61 === 261 /* Synta 0003b020: 78 4b 69 6e 64 2e 4d 6f 64 75 6c 65 44 65 63 6c xKind.ModuleDecl 0003b030: 61 72 61 74 69 6f 6e 20 2a 2f 0a 20 20 20 20 20 aration */. 0003b040: 20 20 20 20 20 20 20 3f 20 6e 6f 64 65 2e 62 6f ? node.bo 0003b050: 64 79 0a 20 20 20 20 20 20 20 20 20 20 20 20 3a dy. : 0003b060: 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 undefined;. 0003b070: 7d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 67 }. function g 0003b080: 65 74 4a 53 44 6f 63 43 6f 6d 6d 65 6e 74 73 41 etJSDocCommentsA 0003b090: 6e 64 54 61 67 73 28 68 6f 73 74 4e 6f 64 65 2c ndTags(hostNode, 0003b0a0: 20 6e 6f 43 61 63 68 65 29 20 7b 0a 20 20 20 20 noCache) {. 0003b0b0: 20 20 20 20 76 61 72 20 72 65 73 75 6c 74 3b 0a var result;. 0003b0c0: 20 20 20 20 20 20 20 20 2f 2f 20 50 75 6c 6c 20 // Pull 0003b0d0: 70 61 72 61 6d 65 74 65 72 20 63 6f 6d 6d 65 6e parameter commen 0003b0e0: 74 73 20 66 72 6f 6d 20 64 65 63 6c 61 72 69 6e ts from declarin 0003b0f0: 67 20 66 75 6e 63 74 69 6f 6e 20 61 73 20 77 65 g function as we 0003b100: 6c 6c 0a 20 20 20 20 20 20 20 20 69 66 20 28 69 ll. if (i 0003b110: 73 56 61 72 69 61 62 6c 65 4c 69 6b 65 28 68 6f sVariableLike(ho 0003b120: 73 74 4e 6f 64 65 29 20 26 26 20 74 73 2e 68 61 stNode) && ts.ha 0003b130: 73 49 6e 69 74 69 61 6c 69 7a 65 72 28 68 6f 73 sInitializer(hos 0003b140: 74 4e 6f 64 65 29 20 26 26 20 74 73 2e 68 61 73 tNode) && ts.has 0003b150: 4a 53 44 6f 63 4e 6f 64 65 73 28 68 6f 73 74 4e JSDocNodes(hostN 0003b160: 6f 64 65 2e 69 6e 69 74 69 61 6c 69 7a 65 72 29 ode.initializer) 0003b170: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 0003b180: 72 65 73 75 6c 74 20 3d 20 74 73 2e 61 64 64 52 result = ts.addR 0003b190: 61 6e 67 65 28 72 65 73 75 6c 74 2c 20 66 69 6c ange(result, fil 0003b1a0: 74 65 72 4f 77 6e 65 64 4a 53 44 6f 63 54 61 67 terOwnedJSDocTag 0003b1b0: 73 28 68 6f 73 74 4e 6f 64 65 2c 20 74 73 2e 6c s(hostNode, ts.l 0003b1c0: 61 73 74 28 68 6f 73 74 4e 6f 64 65 2e 69 6e 69 ast(hostNode.ini 0003b1d0: 74 69 61 6c 69 7a 65 72 2e 6a 73 44 6f 63 29 29 tializer.jsDoc)) 0003b1e0: 29 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 );. }. 0003b1f0: 20 20 20 20 20 76 61 72 20 6e 6f 64 65 20 3d 20 var node = 0003b200: 68 6f 73 74 4e 6f 64 65 3b 0a 20 20 20 20 20 20 hostNode;. 0003b210: 20 20 77 68 69 6c 65 20 28 6e 6f 64 65 20 26 26 while (node && 0003b220: 20 6e 6f 64 65 2e 70 61 72 65 6e 74 29 20 7b 0a node.parent) {. 0003b230: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 if ( 0003b240: 74 73 2e 68 61 73 4a 53 44 6f 63 4e 6f 64 65 73 ts.hasJSDocNodes 0003b250: 28 6e 6f 64 65 29 29 20 7b 0a 20 20 20 20 20 20 (node)) {. 0003b260: 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 result 0003b270: 20 3d 20 74 73 2e 61 64 64 52 61 6e 67 65 28 72 = ts.addRange(r 0003b280: 65 73 75 6c 74 2c 20 66 69 6c 74 65 72 4f 77 6e esult, filterOwn 0003b290: 65 64 4a 53 44 6f 63 54 61 67 73 28 68 6f 73 74 edJSDocTags(host 0003b2a0: 4e 6f 64 65 2c 20 74 73 2e 6c 61 73 74 28 6e 6f Node, ts.last(no 0003b2b0: 64 65 2e 6a 73 44 6f 63 29 29 29 3b 0a 20 20 20 de.jsDoc)));. 0003b2c0: 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 }. 0003b2d0: 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e if (node. 0003b2e0: 6b 69 6e 64 20 3d 3d 3d 20 31 36 34 20 2f 2a 20 kind === 164 /* 0003b2f0: 53 79 6e 74 61 78 4b 69 6e 64 2e 50 61 72 61 6d SyntaxKind.Param 0003b300: 65 74 65 72 20 2a 2f 29 20 7b 0a 20 20 20 20 20 eter */) {. 0003b310: 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c resul 0003b320: 74 20 3d 20 74 73 2e 61 64 64 52 61 6e 67 65 28 t = ts.addRange( 0003b330: 72 65 73 75 6c 74 2c 20 28 6e 6f 43 61 63 68 65 result, (noCache 0003b340: 20 3f 20 74 73 2e 67 65 74 4a 53 44 6f 63 50 61 ? ts.getJSDocPa 0003b350: 72 61 6d 65 74 65 72 54 61 67 73 4e 6f 43 61 63 rameterTagsNoCac 0003b360: 68 65 20 3a 20 74 73 2e 67 65 74 4a 53 44 6f 63 he : ts.getJSDoc 0003b370: 50 61 72 61 6d 65 74 65 72 54 61 67 73 29 28 6e ParameterTags)(n 0003b380: 6f 64 65 29 29 3b 0a 20 20 20 20 20 20 20 20 20 ode));. 0003b390: 20 20 20 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 break;. 0003b3a0: 20 20 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 }. 0003b3b0: 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 if (node 0003b3c0: 2e 6b 69 6e 64 20 3d 3d 3d 20 31 36 33 20 2f 2a .kind === 163 /* 0003b3d0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 54 79 70 65 SyntaxKind.Type 0003b3e0: 50 61 72 61 6d 65 74 65 72 20 2a 2f 29 20 7b 0a Parameter */) {. 0003b3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003b400: 72 65 73 75 6c 74 20 3d 20 74 73 2e 61 64 64 52 result = ts.addR 0003b410: 61 6e 67 65 28 72 65 73 75 6c 74 2c 20 28 6e 6f ange(result, (no 0003b420: 43 61 63 68 65 20 3f 20 74 73 2e 67 65 74 4a 53 Cache ? ts.getJS 0003b430: 44 6f 63 54 79 70 65 50 61 72 61 6d 65 74 65 72 DocTypeParameter 0003b440: 54 61 67 73 4e 6f 43 61 63 68 65 20 3a 20 74 73 TagsNoCache : ts 0003b450: 2e 67 65 74 4a 53 44 6f 63 54 79 70 65 50 61 72 .getJSDocTypePar 0003b460: 61 6d 65 74 65 72 54 61 67 73 29 28 6e 6f 64 65 ameterTags)(node 0003b470: 29 29 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ));. 0003b480: 20 20 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 break;. 0003b490: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 0003b4a0: 20 20 20 20 20 6e 6f 64 65 20 3d 20 67 65 74 4e node = getN 0003b4b0: 65 78 74 4a 53 44 6f 63 43 6f 6d 6d 65 6e 74 4c extJSDocCommentL 0003b4c0: 6f 63 61 74 69 6f 6e 28 6e 6f 64 65 29 3b 0a 20 ocation(node);. 0003b4d0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 0003b4e0: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 20 7c return result | 0003b4f0: 7c 20 74 73 2e 65 6d 70 74 79 41 72 72 61 79 3b | ts.emptyArray; 0003b500: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 . }. ts.ge 0003b510: 74 4a 53 44 6f 63 43 6f 6d 6d 65 6e 74 73 41 6e tJSDocCommentsAn 0003b520: 64 54 61 67 73 20 3d 20 67 65 74 4a 53 44 6f 63 dTags = getJSDoc 0003b530: 43 6f 6d 6d 65 6e 74 73 41 6e 64 54 61 67 73 3b CommentsAndTags; 0003b540: 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 66 69 . function fi 0003b550: 6c 74 65 72 4f 77 6e 65 64 4a 53 44 6f 63 54 61 lterOwnedJSDocTa 0003b560: 67 73 28 68 6f 73 74 4e 6f 64 65 2c 20 6a 73 44 gs(hostNode, jsD 0003b570: 6f 63 29 20 7b 0a 20 20 20 20 20 20 20 20 69 66 oc) {. if 0003b580: 20 28 74 73 2e 69 73 4a 53 44 6f 63 28 6a 73 44 (ts.isJSDoc(jsD 0003b590: 6f 63 29 29 20 7b 0a 20 20 20 20 20 20 20 20 20 oc)) {. 0003b5a0: 20 20 20 76 61 72 20 6f 77 6e 65 64 54 61 67 73 var ownedTags 0003b5b0: 20 3d 20 74 73 2e 66 69 6c 74 65 72 28 6a 73 44 = ts.filter(jsD 0003b5c0: 6f 63 2e 74 61 67 73 2c 20 66 75 6e 63 74 69 6f oc.tags, functio 0003b5d0: 6e 20 28 74 61 67 29 20 7b 20 72 65 74 75 72 6e n (tag) { return 0003b5e0: 20 6f 77 6e 73 4a 53 44 6f 63 54 61 67 28 68 6f ownsJSDocTag(ho 0003b5f0: 73 74 4e 6f 64 65 2c 20 74 61 67 29 3b 20 7d 29 stNode, tag); }) 0003b600: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 ;. re 0003b610: 74 75 72 6e 20 6a 73 44 6f 63 2e 74 61 67 73 20 turn jsDoc.tags 0003b620: 3d 3d 3d 20 6f 77 6e 65 64 54 61 67 73 20 3f 20 === ownedTags ? 0003b630: 5b 6a 73 44 6f 63 5d 20 3a 20 6f 77 6e 65 64 54 [jsDoc] : ownedT 0003b640: 61 67 73 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 ags;. }. 0003b650: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6f 77 return ow 0003b660: 6e 73 4a 53 44 6f 63 54 61 67 28 68 6f 73 74 4e nsJSDocTag(hostN 0003b670: 6f 64 65 2c 20 6a 73 44 6f 63 29 20 3f 20 5b 6a ode, jsDoc) ? [j 0003b680: 73 44 6f 63 5d 20 3a 20 75 6e 64 65 66 69 6e 65 sDoc] : undefine 0003b690: 64 3b 0a 20 20 20 20 7d 0a 20 20 20 20 2f 2a 2a d;. }. /** 0003b6a0: 0a 20 20 20 20 20 2a 20 44 65 74 65 72 6d 69 6e . * Determin 0003b6b0: 65 73 20 77 68 65 74 68 65 72 20 61 20 68 6f 73 es whether a hos 0003b6c0: 74 20 6e 6f 64 65 20 6f 77 6e 73 20 61 20 6a 73 t node owns a js 0003b6d0: 44 6f 63 20 74 61 67 2e 20 41 20 60 40 74 79 70 Doc tag. A `@typ 0003b6e0: 65 60 20 74 61 67 20 61 74 74 61 63 68 65 64 20 e` tag attached 0003b6f0: 74 6f 20 61 0a 20 20 20 20 20 2a 20 61 20 50 61 to a. * a Pa 0003b700: 72 65 6e 74 68 65 73 69 7a 65 64 45 78 70 72 65 renthesizedExpre 0003b710: 73 73 69 6f 6e 20 62 65 6c 6f 6e 67 73 20 6f 6e ssion belongs on 0003b720: 6c 79 20 74 6f 20 74 68 65 20 50 61 72 65 6e 74 ly to the Parent 0003b730: 68 65 73 69 7a 65 64 45 78 70 72 65 73 73 69 6f hesizedExpressio 0003b740: 6e 2e 0a 20 20 20 20 20 2a 2f 0a 20 20 20 20 66 n.. */. f 0003b750: 75 6e 63 74 69 6f 6e 20 6f 77 6e 73 4a 53 44 6f unction ownsJSDo 0003b760: 63 54 61 67 28 68 6f 73 74 4e 6f 64 65 2c 20 74 cTag(hostNode, t 0003b770: 61 67 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 ag) {. re 0003b780: 74 75 72 6e 20 21 74 73 2e 69 73 4a 53 44 6f 63 turn !ts.isJSDoc 0003b790: 54 79 70 65 54 61 67 28 74 61 67 29 0a 20 20 20 TypeTag(tag). 0003b7a0: 20 20 20 20 20 20 20 20 20 7c 7c 20 21 74 61 67 || !tag 0003b7b0: 2e 70 61 72 65 6e 74 0a 20 20 20 20 20 20 20 20 .parent. 0003b7c0: 20 20 20 20 7c 7c 20 21 74 73 2e 69 73 4a 53 44 || !ts.isJSD 0003b7d0: 6f 63 28 74 61 67 2e 70 61 72 65 6e 74 29 0a 20 oc(tag.parent). 0003b7e0: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 21 74 || !t 0003b7f0: 73 2e 69 73 50 61 72 65 6e 74 68 65 73 69 7a 65 s.isParenthesize 0003b800: 64 45 78 70 72 65 73 73 69 6f 6e 28 74 61 67 2e dExpression(tag. 0003b810: 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 29 0a 20 parent.parent). 0003b820: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 74 61 || ta 0003b830: 67 2e 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 20 g.parent.parent 0003b840: 3d 3d 3d 20 68 6f 73 74 4e 6f 64 65 3b 0a 20 20 === hostNode;. 0003b850: 20 20 7d 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e }. function 0003b860: 20 67 65 74 4e 65 78 74 4a 53 44 6f 63 43 6f 6d getNextJSDocCom 0003b870: 6d 65 6e 74 4c 6f 63 61 74 69 6f 6e 28 6e 6f 64 mentLocation(nod 0003b880: 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 e) {. var 0003b890: 20 70 61 72 65 6e 74 20 3d 20 6e 6f 64 65 2e 70 parent = node.p 0003b8a0: 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 69 arent;. i 0003b8b0: 66 20 28 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d f (parent.kind = 0003b8c0: 3d 3d 20 32 39 36 20 2f 2a 20 53 79 6e 74 61 78 == 296 /* Syntax 0003b8d0: 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 41 73 73 Kind.PropertyAss 0003b8e0: 69 67 6e 6d 65 6e 74 20 2a 2f 20 7c 7c 0a 20 20 ignment */ ||. 0003b8f0: 20 20 20 20 20 20 20 20 20 20 70 61 72 65 6e 74 parent 0003b900: 2e 6b 69 6e 64 20 3d 3d 3d 20 32 37 31 20 2f 2a .kind === 271 /* 0003b910: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 45 78 70 6f SyntaxKind.Expo 0003b920: 72 74 41 73 73 69 67 6e 6d 65 6e 74 20 2a 2f 20 rtAssignment */ 0003b930: 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 ||. p 0003b940: 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 31 arent.kind === 1 0003b950: 36 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 67 /* SyntaxKind 0003b960: 2e 50 72 6f 70 65 72 74 79 44 65 63 6c 61 72 61 .PropertyDeclara 0003b970: 74 69 6f 6e 20 2a 2f 20 7c 7c 0a 20 20 20 20 20 tion */ ||. 0003b980: 20 20 20 20 20 20 20 70 61 72 65 6e 74 2e 6b 69 parent.ki 0003b990: 6e 64 20 3d 3d 3d 20 32 33 38 20 2f 2a 20 53 79 nd === 238 /* Sy 0003b9a0: 6e 74 61 78 4b 69 6e 64 2e 45 78 70 72 65 73 73 ntaxKind.Express 0003b9b0: 69 6f 6e 53 74 61 74 65 6d 65 6e 74 20 2a 2f 20 ionStatement */ 0003b9c0: 26 26 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d && node.kind === 0003b9d0: 20 32 30 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 206 /* SyntaxKi 0003b9e0: 6e 64 2e 50 72 6f 70 65 72 74 79 41 63 63 65 73 nd.PropertyAcces 0003b9f0: 73 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 20 7c sExpression */ | 0003ba00: 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 61 |. pa 0003ba10: 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d 20 32 34 rent.kind === 24 0003ba20: 37 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 7 /* SyntaxKind. 0003ba30: 52 65 74 75 72 6e 53 74 61 74 65 6d 65 6e 74 20 ReturnStatement 0003ba40: 2a 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 */ ||. 0003ba50: 20 20 67 65 74 4e 65 73 74 65 64 4d 6f 64 75 6c getNestedModul 0003ba60: 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 70 61 72 eDeclaration(par 0003ba70: 65 6e 74 29 20 7c 7c 0a 20 20 20 20 20 20 20 20 ent) ||. 0003ba80: 20 20 20 20 74 73 2e 69 73 42 69 6e 61 72 79 45 ts.isBinaryE 0003ba90: 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 xpression(node) 0003baa0: 26 26 20 6e 6f 64 65 2e 6f 70 65 72 61 74 6f 72 && node.operator 0003bab0: 54 6f 6b 65 6e 2e 6b 69 6e 64 20 3d 3d 3d 20 36 Token.kind === 6 0003bac0: 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 3 /* SyntaxKind. 0003bad0: 45 71 75 61 6c 73 54 6f 6b 65 6e 20 2a 2f 29 20 EqualsToken */) 0003bae0: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 {. re 0003baf0: 74 75 72 6e 20 70 61 72 65 6e 74 3b 0a 20 20 20 turn parent;. 0003bb00: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 2f }. / 0003bb10: 2f 20 54 72 79 20 74 6f 20 72 65 63 6f 67 6e 69 / Try to recogni 0003bb20: 7a 65 20 74 68 69 73 20 70 61 74 74 65 72 6e 20 ze this pattern 0003bb30: 77 68 65 6e 20 6e 6f 64 65 20 69 73 20 69 6e 69 when node is ini 0003bb40: 74 69 61 6c 69 7a 65 72 20 6f 66 20 76 61 72 69 tializer of vari 0003bb50: 61 62 6c 65 20 64 65 63 6c 61 72 61 74 69 6f 6e able declaration 0003bb60: 20 61 6e 64 20 4a 53 44 6f 63 20 63 6f 6d 6d 65 and JSDoc comme 0003bb70: 6e 74 73 20 61 72 65 20 6f 6e 20 63 6f 6e 74 61 nts are on conta 0003bb80: 69 6e 69 6e 67 20 76 61 72 69 61 62 6c 65 20 73 ining variable s 0003bb90: 74 61 74 65 6d 65 6e 74 2e 0a 20 20 20 20 20 20 tatement.. 0003bba0: 20 20 2f 2f 20 2f 2a 2a 0a 20 20 20 20 20 20 20 // /**. 0003bbb0: 20 2f 2f 20 20 20 2a 20 40 70 61 72 61 6d 20 7b // * @param { 0003bbc0: 6e 75 6d 62 65 72 7d 20 6e 61 6d 65 0a 20 20 20 number} name. 0003bbd0: 20 20 20 20 20 2f 2f 20 20 20 2a 20 40 72 65 74 // * @ret 0003bbe0: 75 72 6e 73 20 7b 6e 75 6d 62 65 72 7d 0a 20 20 urns {number}. 0003bbf0: 20 20 20 20 20 20 2f 2f 20 20 20 2a 2f 0a 20 20 // */. 0003bc00: 20 20 20 20 20 20 2f 2f 20 76 61 72 20 78 20 3d // var x = 0003bc10: 20 66 75 6e 63 74 69 6f 6e 28 6e 61 6d 65 29 20 function(name) 0003bc20: 7b 20 72 65 74 75 72 6e 20 6e 61 6d 65 2e 6c 65 { return name.le 0003bc30: 6e 67 74 68 3b 20 7d 0a 20 20 20 20 20 20 20 20 ngth; }. 0003bc40: 65 6c 73 65 20 69 66 20 28 70 61 72 65 6e 74 2e else if (parent. 0003bc50: 70 61 72 65 6e 74 20 26 26 0a 20 20 20 20 20 20 parent &&. 0003bc60: 20 20 20 20 20 20 28 67 65 74 53 69 6e 67 6c 65 (getSingle 0003bc70: 56 61 72 69 61 62 6c 65 4f 66 56 61 72 69 61 62 VariableOfVariab 0003bc80: 6c 65 53 74 61 74 65 6d 65 6e 74 28 70 61 72 65 leStatement(pare 0003bc90: 6e 74 2e 70 61 72 65 6e 74 29 20 3d 3d 3d 20 6e nt.parent) === n 0003bca0: 6f 64 65 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 ode ||. 0003bcb0: 20 20 20 20 20 20 20 74 73 2e 69 73 42 69 6e 61 ts.isBina 0003bcc0: 72 79 45 78 70 72 65 73 73 69 6f 6e 28 70 61 72 ryExpression(par 0003bcd0: 65 6e 74 29 20 26 26 20 70 61 72 65 6e 74 2e 6f ent) && parent.o 0003bce0: 70 65 72 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 6e peratorToken.kin 0003bcf0: 64 20 3d 3d 3d 20 36 33 20 2f 2a 20 53 79 6e 74 d === 63 /* Synt 0003bd00: 61 78 4b 69 6e 64 2e 45 71 75 61 6c 73 54 6f 6b axKind.EqualsTok 0003bd10: 65 6e 20 2a 2f 29 29 20 7b 0a 20 20 20 20 20 20 en */)) {. 0003bd20: 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 return par 0003bd30: 65 6e 74 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 ent.parent;. 0003bd40: 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 65 6c }. el 0003bd50: 73 65 20 69 66 20 28 70 61 72 65 6e 74 2e 70 61 se if (parent.pa 0003bd60: 72 65 6e 74 20 26 26 20 70 61 72 65 6e 74 2e 70 rent && parent.p 0003bd70: 61 72 65 6e 74 2e 70 61 72 65 6e 74 20 26 26 0a arent.parent &&. 0003bd80: 20 20 20 20 20 20 20 20 20 20 20 20 28 67 65 74 (get 0003bd90: 53 69 6e 67 6c 65 56 61 72 69 61 62 6c 65 4f 66 SingleVariableOf 0003bda0: 56 61 72 69 61 62 6c 65 53 74 61 74 65 6d 65 6e VariableStatemen 0003bdb0: 74 28 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 2e t(parent.parent. 0003bdc0: 70 61 72 65 6e 74 29 20 7c 7c 0a 20 20 20 20 20 parent) ||. 0003bdd0: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 53 69 getSi 0003bde0: 6e 67 6c 65 49 6e 69 74 69 61 6c 69 7a 65 72 4f ngleInitializerO 0003bdf0: 66 56 61 72 69 61 62 6c 65 53 74 61 74 65 6d 65 fVariableStateme 0003be00: 6e 74 4f 72 50 72 6f 70 65 72 74 79 44 65 63 6c ntOrPropertyDecl 0003be10: 61 72 61 74 69 6f 6e 28 70 61 72 65 6e 74 2e 70 aration(parent.p 0003be20: 61 72 65 6e 74 2e 70 61 72 65 6e 74 29 20 3d 3d arent.parent) == 0003be30: 3d 20 6e 6f 64 65 20 7c 7c 0a 20 20 20 20 20 20 = node ||. 0003be40: 20 20 20 20 20 20 20 20 20 20 67 65 74 53 6f 75 getSou 0003be50: 72 63 65 4f 66 44 65 66 61 75 6c 74 65 64 41 73 rceOfDefaultedAs 0003be60: 73 69 67 6e 6d 65 6e 74 28 70 61 72 65 6e 74 2e signment(parent. 0003be70: 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 29 29 29 parent.parent))) 0003be80: 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 {. r 0003be90: 65 74 75 72 6e 20 70 61 72 65 6e 74 2e 70 61 72 eturn parent.par 0003bea0: 65 6e 74 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 ent.parent;. 0003beb0: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 }. }. 0003bec0: 74 73 2e 67 65 74 4e 65 78 74 4a 53 44 6f 63 43 ts.getNextJSDocC 0003bed0: 6f 6d 6d 65 6e 74 4c 6f 63 61 74 69 6f 6e 20 3d ommentLocation = 0003bee0: 20 67 65 74 4e 65 78 74 4a 53 44 6f 63 43 6f 6d getNextJSDocCom 0003bef0: 6d 65 6e 74 4c 6f 63 61 74 69 6f 6e 3b 0a 20 20 mentLocation;. 0003bf00: 20 20 2f 2a 2a 20 44 6f 65 73 20 74 68 65 20 6f /** Does the o 0003bf10: 70 70 6f 73 69 74 65 20 6f 66 20 60 67 65 74 4a pposite of `getJ 0003bf20: 53 44 6f 63 50 61 72 61 6d 65 74 65 72 54 61 67 SDocParameterTag 0003bf30: 73 60 3a 20 67 69 76 65 6e 20 61 20 4a 53 44 6f s`: given a JSDo 0003bf40: 63 20 70 61 72 61 6d 65 74 65 72 2c 20 66 69 6e c parameter, fin 0003bf50: 64 73 20 74 68 65 20 70 61 72 61 6d 65 74 65 72 ds the parameter 0003bf60: 20 63 6f 72 72 65 73 70 6f 6e 64 69 6e 67 20 74 corresponding t 0003bf70: 6f 20 69 74 2e 20 2a 2f 0a 20 20 20 20 66 75 6e o it. */. fun 0003bf80: 63 74 69 6f 6e 20 67 65 74 50 61 72 61 6d 65 74 ction getParamet 0003bf90: 65 72 53 79 6d 62 6f 6c 46 72 6f 6d 4a 53 44 6f erSymbolFromJSDo 0003bfa0: 63 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 c(node) {. 0003bfb0: 20 20 69 66 20 28 6e 6f 64 65 2e 73 79 6d 62 6f if (node.symbo 0003bfc0: 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 l) {. 0003bfd0: 20 72 65 74 75 72 6e 20 6e 6f 64 65 2e 73 79 6d return node.sym 0003bfe0: 62 6f 6c 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 bol;. }. 0003bff0: 20 20 20 20 20 20 20 69 66 20 28 21 74 73 2e 69 if (!ts.i 0003c000: 73 49 64 65 6e 74 69 66 69 65 72 28 6e 6f 64 65 sIdentifier(node 0003c010: 2e 6e 61 6d 65 29 29 20 7b 0a 20 20 20 20 20 20 .name)) {. 0003c020: 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 6e 64 return und 0003c030: 65 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 efined;. 0003c040: 7d 0a 20 20 20 20 20 20 20 20 76 61 72 20 6e 61 }. var na 0003c050: 6d 65 20 3d 20 6e 6f 64 65 2e 6e 61 6d 65 2e 65 me = node.name.e 0003c060: 73 63 61 70 65 64 54 65 78 74 3b 0a 20 20 20 20 scapedText;. 0003c070: 20 20 20 20 76 61 72 20 64 65 63 6c 20 3d 20 67 var decl = g 0003c080: 65 74 48 6f 73 74 53 69 67 6e 61 74 75 72 65 46 etHostSignatureF 0003c090: 72 6f 6d 4a 53 44 6f 63 28 6e 6f 64 65 29 3b 0a romJSDoc(node);. 0003c0a0: 20 20 20 20 20 20 20 20 69 66 20 28 21 64 65 63 if (!dec 0003c0b0: 6c 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 l) {. 0003c0c0: 20 72 65 74 75 72 6e 20 75 6e 64 65 66 69 6e 65 return undefine 0003c0d0: 64 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 d;. }. 0003c0e0: 20 20 20 20 20 76 61 72 20 70 61 72 61 6d 65 74 var paramet 0003c0f0: 65 72 20 3d 20 74 73 2e 66 69 6e 64 28 64 65 63 er = ts.find(dec 0003c100: 6c 2e 70 61 72 61 6d 65 74 65 72 73 2c 20 66 75 l.parameters, fu 0003c110: 6e 63 74 69 6f 6e 20 28 70 29 20 7b 20 72 65 74 nction (p) { ret 0003c120: 75 72 6e 20 70 2e 6e 61 6d 65 2e 6b 69 6e 64 20 urn p.name.kind 0003c130: 3d 3d 3d 20 37 39 20 2f 2a 20 53 79 6e 74 61 78 === 79 /* Syntax 0003c140: 4b 69 6e 64 2e 49 64 65 6e 74 69 66 69 65 72 20 Kind.Identifier 0003c150: 2a 2f 20 26 26 20 70 2e 6e 61 6d 65 2e 65 73 63 */ && p.name.esc 0003c160: 61 70 65 64 54 65 78 74 20 3d 3d 3d 20 6e 61 6d apedText === nam 0003c170: 65 3b 20 7d 29 3b 0a 20 20 20 20 20 20 20 20 72 e; });. r 0003c180: 65 74 75 72 6e 20 70 61 72 61 6d 65 74 65 72 20 eturn parameter 0003c190: 26 26 20 70 61 72 61 6d 65 74 65 72 2e 73 79 6d && parameter.sym 0003c1a0: 62 6f 6c 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 bol;. }. t 0003c1b0: 73 2e 67 65 74 50 61 72 61 6d 65 74 65 72 53 79 s.getParameterSy 0003c1c0: 6d 62 6f 6c 46 72 6f 6d 4a 53 44 6f 63 20 3d 20 mbolFromJSDoc = 0003c1d0: 67 65 74 50 61 72 61 6d 65 74 65 72 53 79 6d 62 getParameterSymb 0003c1e0: 6f 6c 46 72 6f 6d 4a 53 44 6f 63 3b 0a 20 20 20 olFromJSDoc;. 0003c1f0: 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 45 66 66 function getEff 0003c200: 65 63 74 69 76 65 43 6f 6e 74 61 69 6e 65 72 46 ectiveContainerF 0003c210: 6f 72 4a 53 44 6f 63 54 65 6d 70 6c 61 74 65 54 orJSDocTemplateT 0003c220: 61 67 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 ag(node) {. 0003c230: 20 20 20 69 66 20 28 74 73 2e 69 73 4a 53 44 6f if (ts.isJSDo 0003c240: 63 28 6e 6f 64 65 2e 70 61 72 65 6e 74 29 20 26 c(node.parent) & 0003c250: 26 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 74 61 & node.parent.ta 0003c260: 67 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 gs) {. 0003c270: 20 20 2f 2f 20 41 20 40 74 65 6d 70 6c 61 74 65 // A @template 0003c280: 20 74 61 67 20 62 65 6c 6f 6e 67 73 20 74 6f 20 tag belongs to 0003c290: 61 6e 79 20 40 74 79 70 65 64 65 66 2c 20 40 63 any @typedef, @c 0003c2a0: 61 6c 6c 62 61 63 6b 2c 20 6f 72 20 40 65 6e 75 allback, or @enu 0003c2b0: 6d 20 74 61 67 73 20 69 6e 20 74 68 65 20 73 61 m tags in the sa 0003c2c0: 6d 65 20 63 6f 6d 6d 65 6e 74 20 62 6c 6f 63 6b me comment block 0003c2d0: 2c 20 69 66 20 74 68 65 79 20 65 78 69 73 74 2e , if they exist. 0003c2e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 76 61 72 . var 0003c2f0: 20 74 79 70 65 41 6c 69 61 73 20 3d 20 74 73 2e typeAlias = ts. 0003c300: 66 69 6e 64 28 6e 6f 64 65 2e 70 61 72 65 6e 74 find(node.parent 0003c310: 2e 74 61 67 73 2c 20 69 73 4a 53 44 6f 63 54 79 .tags, isJSDocTy 0003c320: 70 65 41 6c 69 61 73 29 3b 0a 20 20 20 20 20 20 peAlias);. 0003c330: 20 20 20 20 20 20 69 66 20 28 74 79 70 65 41 6c if (typeAl 0003c340: 69 61 73 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ias) {. 0003c350: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 79 return ty 0003c360: 70 65 41 6c 69 61 73 3b 0a 20 20 20 20 20 20 20 peAlias;. 0003c370: 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 7d }. } 0003c380: 0a 20 20 20 20 20 20 20 20 2f 2f 20 6f 74 68 65 . // othe 0003c390: 72 77 69 73 65 20 69 74 20 62 65 6c 6f 6e 67 73 rwise it belongs 0003c3a0: 20 74 6f 20 74 68 65 20 68 6f 73 74 20 69 74 20 to the host it 0003c3b0: 61 6e 6e 6f 74 61 74 65 73 0a 20 20 20 20 20 20 annotates. 0003c3c0: 20 20 72 65 74 75 72 6e 20 67 65 74 48 6f 73 74 return getHost 0003c3d0: 53 69 67 6e 61 74 75 72 65 46 72 6f 6d 4a 53 44 SignatureFromJSD 0003c3e0: 6f 63 28 6e 6f 64 65 29 3b 0a 20 20 20 20 7d 0a oc(node);. }. 0003c3f0: 20 20 20 20 74 73 2e 67 65 74 45 66 66 65 63 74 ts.getEffect 0003c400: 69 76 65 43 6f 6e 74 61 69 6e 65 72 46 6f 72 4a iveContainerForJ 0003c410: 53 44 6f 63 54 65 6d 70 6c 61 74 65 54 61 67 20 SDocTemplateTag 0003c420: 3d 20 67 65 74 45 66 66 65 63 74 69 76 65 43 6f = getEffectiveCo 0003c430: 6e 74 61 69 6e 65 72 46 6f 72 4a 53 44 6f 63 54 ntainerForJSDocT 0003c440: 65 6d 70 6c 61 74 65 54 61 67 3b 0a 20 20 20 20 emplateTag;. 0003c450: 66 75 6e 63 74 69 6f 6e 20 67 65 74 48 6f 73 74 function getHost 0003c460: 53 69 67 6e 61 74 75 72 65 46 72 6f 6d 4a 53 44 SignatureFromJSD 0003c470: 6f 63 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 oc(node) {. 0003c480: 20 20 20 76 61 72 20 68 6f 73 74 20 3d 20 67 65 var host = ge 0003c490: 74 45 66 66 65 63 74 69 76 65 4a 53 44 6f 63 48 tEffectiveJSDocH 0003c4a0: 6f 73 74 28 6e 6f 64 65 29 3b 0a 20 20 20 20 20 ost(node);. 0003c4b0: 20 20 20 69 66 20 28 68 6f 73 74 29 20 7b 0a 20 if (host) {. 0003c4c0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0003c4d0: 6e 20 74 73 2e 69 73 50 72 6f 70 65 72 74 79 53 n ts.isPropertyS 0003c4e0: 69 67 6e 61 74 75 72 65 28 68 6f 73 74 29 20 26 ignature(host) & 0003c4f0: 26 20 68 6f 73 74 2e 74 79 70 65 20 26 26 20 74 & host.type && t 0003c500: 73 2e 69 73 46 75 6e 63 74 69 6f 6e 4c 69 6b 65 s.isFunctionLike 0003c510: 28 68 6f 73 74 2e 74 79 70 65 29 20 3f 20 68 6f (host.type) ? ho 0003c520: 73 74 2e 74 79 70 65 20 3a 0a 20 20 20 20 20 20 st.type :. 0003c530: 20 20 20 20 20 20 20 20 20 20 74 73 2e 69 73 46 ts.isF 0003c540: 75 6e 63 74 69 6f 6e 4c 69 6b 65 28 68 6f 73 74 unctionLike(host 0003c550: 29 20 3f 20 68 6f 73 74 20 3a 20 75 6e 64 65 66 ) ? host : undef 0003c560: 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 7d 0a ined;. }. 0003c570: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 75 return u 0003c580: 6e 64 65 66 69 6e 65 64 3b 0a 20 20 20 20 7d 0a ndefined;. }. 0003c590: 20 20 20 20 74 73 2e 67 65 74 48 6f 73 74 53 69 ts.getHostSi 0003c5a0: 67 6e 61 74 75 72 65 46 72 6f 6d 4a 53 44 6f 63 gnatureFromJSDoc 0003c5b0: 20 3d 20 67 65 74 48 6f 73 74 53 69 67 6e 61 74 = getHostSignat 0003c5c0: 75 72 65 46 72 6f 6d 4a 53 44 6f 63 3b 0a 20 20 ureFromJSDoc;. 0003c5d0: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 45 66 function getEf 0003c5e0: 66 65 63 74 69 76 65 4a 53 44 6f 63 48 6f 73 74 fectiveJSDocHost 0003c5f0: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 0003c600: 20 76 61 72 20 68 6f 73 74 20 3d 20 67 65 74 4a var host = getJ 0003c610: 53 44 6f 63 48 6f 73 74 28 6e 6f 64 65 29 3b 0a SDocHost(node);. 0003c620: 20 20 20 20 20 20 20 20 69 66 20 28 68 6f 73 74 if (host 0003c630: 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ) {. 0003c640: 72 65 74 75 72 6e 20 67 65 74 53 6f 75 72 63 65 return getSource 0003c650: 4f 66 44 65 66 61 75 6c 74 65 64 41 73 73 69 67 OfDefaultedAssig 0003c660: 6e 6d 65 6e 74 28 68 6f 73 74 29 0a 20 20 20 20 nment(host). 0003c670: 20 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 67 || g 0003c680: 65 74 53 6f 75 72 63 65 4f 66 41 73 73 69 67 6e etSourceOfAssign 0003c690: 6d 65 6e 74 28 68 6f 73 74 29 0a 20 20 20 20 20 ment(host). 0003c6a0: 20 20 20 20 20 20 20 20 20 20 20 7c 7c 20 67 65 || ge 0003c6b0: 74 53 69 6e 67 6c 65 49 6e 69 74 69 61 6c 69 7a tSingleInitializ 0003c6c0: 65 72 4f 66 56 61 72 69 61 62 6c 65 53 74 61 74 erOfVariableStat 0003c6d0: 65 6d 65 6e 74 4f 72 50 72 6f 70 65 72 74 79 44 ementOrPropertyD 0003c6e0: 65 63 6c 61 72 61 74 69 6f 6e 28 68 6f 73 74 29 eclaration(host) 0003c6f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0003c700: 20 7c 7c 20 67 65 74 53 69 6e 67 6c 65 56 61 72 || getSingleVar 0003c710: 69 61 62 6c 65 4f 66 56 61 72 69 61 62 6c 65 53 iableOfVariableS 0003c720: 74 61 74 65 6d 65 6e 74 28 68 6f 73 74 29 0a 20 tatement(host). 0003c730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7c | 0003c740: 7c 20 67 65 74 4e 65 73 74 65 64 4d 6f 64 75 6c | getNestedModul 0003c750: 65 44 65 63 6c 61 72 61 74 69 6f 6e 28 68 6f 73 eDeclaration(hos 0003c760: 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t). 0003c770: 20 20 20 7c 7c 20 68 6f 73 74 3b 0a 20 20 20 20 || host;. 0003c780: 20 20 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 }. }. 0003c790: 74 73 2e 67 65 74 45 66 66 65 63 74 69 76 65 4a ts.getEffectiveJ 0003c7a0: 53 44 6f 63 48 6f 73 74 20 3d 20 67 65 74 45 66 SDocHost = getEf 0003c7b0: 66 65 63 74 69 76 65 4a 53 44 6f 63 48 6f 73 74 fectiveJSDocHost 0003c7c0: 3b 0a 20 20 20 20 2f 2a 2a 20 55 73 65 20 67 65 ;. /** Use ge 0003c7d0: 74 45 66 66 65 63 74 69 76 65 4a 53 44 6f 63 48 tEffectiveJSDocH 0003c7e0: 6f 73 74 20 69 66 20 79 6f 75 20 61 64 64 69 74 ost if you addit 0003c7f0: 69 6f 6e 61 6c 6c 79 20 6e 65 65 64 20 74 6f 20 ionally need to 0003c800: 6c 6f 6f 6b 20 66 6f 72 20 6a 73 64 6f 63 20 6f look for jsdoc o 0003c810: 6e 20 70 61 72 65 6e 74 20 6e 6f 64 65 73 2c 20 n parent nodes, 0003c820: 6c 69 6b 65 20 61 73 73 69 67 6e 6d 65 6e 74 73 like assignments 0003c830: 2e 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f . */. functio 0003c840: 6e 20 67 65 74 4a 53 44 6f 63 48 6f 73 74 28 6e n getJSDocHost(n 0003c850: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 ode) {. v 0003c860: 61 72 20 6a 73 44 6f 63 20 3d 20 67 65 74 4a 53 ar jsDoc = getJS 0003c870: 44 6f 63 52 6f 6f 74 28 6e 6f 64 65 29 3b 0a 20 DocRoot(node);. 0003c880: 20 20 20 20 20 20 20 69 66 20 28 21 6a 73 44 6f if (!jsDo 0003c890: 63 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 20 c) {. 0003c8a0: 20 72 65 74 75 72 6e 20 75 6e 64 65 66 69 6e 65 return undefine 0003c8b0: 64 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 d;. }. 0003c8c0: 20 20 20 20 20 76 61 72 20 68 6f 73 74 20 3d 20 var host = 0003c8d0: 6a 73 44 6f 63 2e 70 61 72 65 6e 74 3b 0a 20 20 jsDoc.parent;. 0003c8e0: 20 20 20 20 20 20 69 66 20 28 68 6f 73 74 20 26 if (host & 0003c8f0: 26 20 68 6f 73 74 2e 6a 73 44 6f 63 20 26 26 20 & host.jsDoc && 0003c900: 6a 73 44 6f 63 20 3d 3d 3d 20 74 73 2e 6c 61 73 jsDoc === ts.las 0003c910: 74 4f 72 55 6e 64 65 66 69 6e 65 64 28 68 6f 73 tOrUndefined(hos 0003c920: 74 2e 6a 73 44 6f 63 29 29 20 7b 0a 20 20 20 20 t.jsDoc)) {. 0003c930: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 68 return h 0003c940: 6f 73 74 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 ost;. }. 0003c950: 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 4a }. ts.getJ 0003c960: 53 44 6f 63 48 6f 73 74 20 3d 20 67 65 74 4a 53 SDocHost = getJS 0003c970: 44 6f 63 48 6f 73 74 3b 0a 20 20 20 20 66 75 6e DocHost;. fun 0003c980: 63 74 69 6f 6e 20 67 65 74 4a 53 44 6f 63 52 6f ction getJSDocRo 0003c990: 6f 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 ot(node) {. 0003c9a0: 20 20 20 72 65 74 75 72 6e 20 74 73 2e 66 69 6e return ts.fin 0003c9b0: 64 41 6e 63 65 73 74 6f 72 28 6e 6f 64 65 2e 70 dAncestor(node.p 0003c9c0: 61 72 65 6e 74 2c 20 74 73 2e 69 73 4a 53 44 6f arent, ts.isJSDo 0003c9d0: 63 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 c);. }. ts 0003c9e0: 2e 67 65 74 4a 53 44 6f 63 52 6f 6f 74 20 3d 20 .getJSDocRoot = 0003c9f0: 67 65 74 4a 53 44 6f 63 52 6f 6f 74 3b 0a 20 20 getJSDocRoot;. 0003ca00: 20 20 66 75 6e 63 74 69 6f 6e 20 67 65 74 54 79 function getTy 0003ca10: 70 65 50 61 72 61 6d 65 74 65 72 46 72 6f 6d 4a peParameterFromJ 0003ca20: 73 44 6f 63 28 6e 6f 64 65 29 20 7b 0a 20 20 20 sDoc(node) {. 0003ca30: 20 20 20 20 20 76 61 72 20 6e 61 6d 65 20 3d 20 var name = 0003ca40: 6e 6f 64 65 2e 6e 61 6d 65 2e 65 73 63 61 70 65 node.name.escape 0003ca50: 64 54 65 78 74 3b 0a 20 20 20 20 20 20 20 20 76 dText;. v 0003ca60: 61 72 20 74 79 70 65 50 61 72 61 6d 65 74 65 72 ar typeParameter 0003ca70: 73 20 3d 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e s = node.parent. 0003ca80: 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 2e 74 79 parent.parent.ty 0003ca90: 70 65 50 61 72 61 6d 65 74 65 72 73 3b 0a 20 20 peParameters;. 0003caa0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 79 70 return typ 0003cab0: 65 50 61 72 61 6d 65 74 65 72 73 20 26 26 20 74 eParameters && t 0003cac0: 73 2e 66 69 6e 64 28 74 79 70 65 50 61 72 61 6d s.find(typeParam 0003cad0: 65 74 65 72 73 2c 20 66 75 6e 63 74 69 6f 6e 20 eters, function 0003cae0: 28 70 29 20 7b 20 72 65 74 75 72 6e 20 70 2e 6e (p) { return p.n 0003caf0: 61 6d 65 2e 65 73 63 61 70 65 64 54 65 78 74 20 ame.escapedText 0003cb00: 3d 3d 3d 20 6e 61 6d 65 3b 20 7d 29 3b 0a 20 20 === name; });. 0003cb10: 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 54 79 }. ts.getTy 0003cb20: 70 65 50 61 72 61 6d 65 74 65 72 46 72 6f 6d 4a peParameterFromJ 0003cb30: 73 44 6f 63 20 3d 20 67 65 74 54 79 70 65 50 61 sDoc = getTypePa 0003cb40: 72 61 6d 65 74 65 72 46 72 6f 6d 4a 73 44 6f 63 rameterFromJsDoc 0003cb50: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 68 ;. function h 0003cb60: 61 73 54 79 70 65 41 72 67 75 6d 65 6e 74 73 28 asTypeArguments( 0003cb70: 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 node) {. 0003cb80: 72 65 74 75 72 6e 20 21 21 6e 6f 64 65 2e 74 79 return !!node.ty 0003cb90: 70 65 41 72 67 75 6d 65 6e 74 73 3b 0a 20 20 20 peArguments;. 0003cba0: 20 7d 0a 20 20 20 20 74 73 2e 68 61 73 54 79 70 }. ts.hasTyp 0003cbb0: 65 41 72 67 75 6d 65 6e 74 73 20 3d 20 68 61 73 eArguments = has 0003cbc0: 54 79 70 65 41 72 67 75 6d 65 6e 74 73 3b 0a 20 TypeArguments;. 0003cbd0: 20 20 20 76 61 72 20 41 73 73 69 67 6e 6d 65 6e var Assignmen 0003cbe0: 74 4b 69 6e 64 3b 0a 20 20 20 20 28 66 75 6e 63 tKind;. (func 0003cbf0: 74 69 6f 6e 20 28 41 73 73 69 67 6e 6d 65 6e 74 tion (Assignment 0003cc00: 4b 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 Kind) {. 0003cc10: 41 73 73 69 67 6e 6d 65 6e 74 4b 69 6e 64 5b 41 AssignmentKind[A 0003cc20: 73 73 69 67 6e 6d 65 6e 74 4b 69 6e 64 5b 22 4e ssignmentKind["N 0003cc30: 6f 6e 65 22 5d 20 3d 20 30 5d 20 3d 20 22 4e 6f one"] = 0] = "No 0003cc40: 6e 65 22 3b 0a 20 20 20 20 20 20 20 20 41 73 73 ne";. Ass 0003cc50: 69 67 6e 6d 65 6e 74 4b 69 6e 64 5b 41 73 73 69 ignmentKind[Assi 0003cc60: 67 6e 6d 65 6e 74 4b 69 6e 64 5b 22 44 65 66 69 gnmentKind["Defi 0003cc70: 6e 69 74 65 22 5d 20 3d 20 31 5d 20 3d 20 22 44 nite"] = 1] = "D 0003cc80: 65 66 69 6e 69 74 65 22 3b 0a 20 20 20 20 20 20 efinite";. 0003cc90: 20 20 41 73 73 69 67 6e 6d 65 6e 74 4b 69 6e 64 AssignmentKind 0003cca0: 5b 41 73 73 69 67 6e 6d 65 6e 74 4b 69 6e 64 5b [AssignmentKind[ 0003ccb0: 22 43 6f 6d 70 6f 75 6e 64 22 5d 20 3d 20 32 5d "Compound"] = 2] 0003ccc0: 20 3d 20 22 43 6f 6d 70 6f 75 6e 64 22 3b 0a 20 = "Compound";. 0003ccd0: 20 20 20 7d 29 28 41 73 73 69 67 6e 6d 65 6e 74 })(Assignment 0003cce0: 4b 69 6e 64 20 3d 20 74 73 2e 41 73 73 69 67 6e Kind = ts.Assign 0003ccf0: 6d 65 6e 74 4b 69 6e 64 20 7c 7c 20 28 74 73 2e mentKind || (ts. 0003cd00: 41 73 73 69 67 6e 6d 65 6e 74 4b 69 6e 64 20 3d AssignmentKind = 0003cd10: 20 7b 7d 29 29 3b 0a 20 20 20 20 66 75 6e 63 74 {}));. funct 0003cd20: 69 6f 6e 20 67 65 74 41 73 73 69 67 6e 6d 65 6e ion getAssignmen 0003cd30: 74 54 61 72 67 65 74 4b 69 6e 64 28 6e 6f 64 65 tTargetKind(node 0003cd40: 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 72 20 ) {. var 0003cd50: 70 61 72 65 6e 74 20 3d 20 6e 6f 64 65 2e 70 61 parent = node.pa 0003cd60: 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 77 68 rent;. wh 0003cd70: 69 6c 65 20 28 74 72 75 65 29 20 7b 0a 20 20 20 ile (true) {. 0003cd80: 20 20 20 20 20 20 20 20 20 73 77 69 74 63 68 20 switch 0003cd90: 28 70 61 72 65 6e 74 2e 6b 69 6e 64 29 20 7b 0a (parent.kind) {. 0003cda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003cdb0: 63 61 73 65 20 32 32 31 20 2f 2a 20 53 79 6e 74 case 221 /* Synt 0003cdc0: 61 78 4b 69 6e 64 2e 42 69 6e 61 72 79 45 78 70 axKind.BinaryExp 0003cdd0: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 0003cde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003cdf0: 76 61 72 20 62 69 6e 61 72 79 4f 70 65 72 61 74 var binaryOperat 0003ce00: 6f 72 20 3d 20 70 61 72 65 6e 74 2e 6f 70 65 72 or = parent.oper 0003ce10: 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 6e 64 3b 0a atorToken.kind;. 0003ce20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003ce30: 20 20 20 20 72 65 74 75 72 6e 20 69 73 41 73 73 return isAss 0003ce40: 69 67 6e 6d 65 6e 74 4f 70 65 72 61 74 6f 72 28 ignmentOperator( 0003ce50: 62 69 6e 61 72 79 4f 70 65 72 61 74 6f 72 29 20 binaryOperator) 0003ce60: 26 26 20 70 61 72 65 6e 74 2e 6c 65 66 74 20 3d && parent.left = 0003ce70: 3d 3d 20 6e 6f 64 65 20 3f 0a 20 20 20 20 20 20 == node ?. 0003ce80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003ce90: 20 20 62 69 6e 61 72 79 4f 70 65 72 61 74 6f 72 binaryOperator 0003cea0: 20 3d 3d 3d 20 36 33 20 2f 2a 20 53 79 6e 74 61 === 63 /* Synta 0003ceb0: 78 4b 69 6e 64 2e 45 71 75 61 6c 73 54 6f 6b 65 xKind.EqualsToke 0003cec0: 6e 20 2a 2f 20 7c 7c 20 69 73 4c 6f 67 69 63 61 n */ || isLogica 0003ced0: 6c 4f 72 43 6f 61 6c 65 73 63 69 6e 67 41 73 73 lOrCoalescingAss 0003cee0: 69 67 6e 6d 65 6e 74 4f 70 65 72 61 74 6f 72 28 ignmentOperator( 0003cef0: 62 69 6e 61 72 79 4f 70 65 72 61 74 6f 72 29 20 binaryOperator) 0003cf00: 3f 20 31 20 2f 2a 20 41 73 73 69 67 6e 6d 65 6e ? 1 /* Assignmen 0003cf10: 74 4b 69 6e 64 2e 44 65 66 69 6e 69 74 65 20 2a tKind.Definite * 0003cf20: 2f 20 3a 20 32 20 2f 2a 20 41 73 73 69 67 6e 6d / : 2 /* Assignm 0003cf30: 65 6e 74 4b 69 6e 64 2e 43 6f 6d 70 6f 75 6e 64 entKind.Compound 0003cf40: 20 2a 2f 20 3a 0a 20 20 20 20 20 20 20 20 20 20 */ :. 0003cf50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 30 20 0 0003cf60: 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 4b 69 6e /* AssignmentKin 0003cf70: 64 2e 4e 6f 6e 65 20 2a 2f 3b 0a 20 20 20 20 20 d.None */;. 0003cf80: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0003cf90: 32 31 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 219 /* SyntaxKin 0003cfa0: 64 2e 50 72 65 66 69 78 55 6e 61 72 79 45 78 70 d.PrefixUnaryExp 0003cfb0: 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 20 ression */:. 0003cfc0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0003cfd0: 20 32 32 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 220 /* SyntaxKi 0003cfe0: 6e 64 2e 50 6f 73 74 66 69 78 55 6e 61 72 79 45 nd.PostfixUnaryE 0003cff0: 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 xpression */:. 0003d000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003d010: 20 20 76 61 72 20 75 6e 61 72 79 4f 70 65 72 61 var unaryOpera 0003d020: 74 6f 72 20 3d 20 70 61 72 65 6e 74 2e 6f 70 65 tor = parent.ope 0003d030: 72 61 74 6f 72 3b 0a 20 20 20 20 20 20 20 20 20 rator;. 0003d040: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0003d050: 6e 20 75 6e 61 72 79 4f 70 65 72 61 74 6f 72 20 n unaryOperator 0003d060: 3d 3d 3d 20 34 35 20 2f 2a 20 53 79 6e 74 61 78 === 45 /* Syntax 0003d070: 4b 69 6e 64 2e 50 6c 75 73 50 6c 75 73 54 6f 6b Kind.PlusPlusTok 0003d080: 65 6e 20 2a 2f 20 7c 7c 20 75 6e 61 72 79 4f 70 en */ || unaryOp 0003d090: 65 72 61 74 6f 72 20 3d 3d 3d 20 34 36 20 2f 2a erator === 46 /* 0003d0a0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 69 6e 75 SyntaxKind.Minu 0003d0b0: 73 4d 69 6e 75 73 54 6f 6b 65 6e 20 2a 2f 20 3f sMinusToken */ ? 0003d0c0: 20 32 20 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 2 /* Assignment 0003d0d0: 4b 69 6e 64 2e 43 6f 6d 70 6f 75 6e 64 20 2a 2f Kind.Compound */ 0003d0e0: 20 3a 20 30 20 2f 2a 20 41 73 73 69 67 6e 6d 65 : 0 /* Assignme 0003d0f0: 6e 74 4b 69 6e 64 2e 4e 6f 6e 65 20 2a 2f 3b 0a ntKind.None */;. 0003d100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003d110: 63 61 73 65 20 32 34 33 20 2f 2a 20 53 79 6e 74 case 243 /* Synt 0003d120: 61 78 4b 69 6e 64 2e 46 6f 72 49 6e 53 74 61 74 axKind.ForInStat 0003d130: 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 ement */:. 0003d140: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 0003d150: 34 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 44 /* SyntaxKind 0003d160: 2e 46 6f 72 4f 66 53 74 61 74 65 6d 65 6e 74 20 .ForOfStatement 0003d170: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0003d180: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 return p 0003d190: 61 72 65 6e 74 2e 69 6e 69 74 69 61 6c 69 7a 65 arent.initialize 0003d1a0: 72 20 3d 3d 3d 20 6e 6f 64 65 20 3f 20 31 20 2f r === node ? 1 / 0003d1b0: 2a 20 41 73 73 69 67 6e 6d 65 6e 74 4b 69 6e 64 * AssignmentKind 0003d1c0: 2e 44 65 66 69 6e 69 74 65 20 2a 2f 20 3a 20 30 .Definite */ : 0 0003d1d0: 20 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 4b 69 /* AssignmentKi 0003d1e0: 6e 64 2e 4e 6f 6e 65 20 2a 2f 3b 0a 20 20 20 20 nd.None */;. 0003d1f0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0003d200: 20 32 31 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 212 /* SyntaxKi 0003d210: 6e 64 2e 50 61 72 65 6e 74 68 65 73 69 7a 65 64 nd.Parenthesized 0003d220: 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 Expression */:. 0003d230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 c 0003d240: 61 73 65 20 32 30 34 20 2f 2a 20 53 79 6e 74 61 ase 204 /* Synta 0003d250: 78 4b 69 6e 64 2e 41 72 72 61 79 4c 69 74 65 72 xKind.ArrayLiter 0003d260: 61 6c 45 78 70 72 65 73 73 69 6f 6e 20 2a 2f 3a alExpression */: 0003d270: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0003d280: 20 63 61 73 65 20 32 32 35 20 2f 2a 20 53 79 6e case 225 /* Syn 0003d290: 74 61 78 4b 69 6e 64 2e 53 70 72 65 61 64 45 6c taxKind.SpreadEl 0003d2a0: 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 ement */:. 0003d2b0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 0003d2c0: 33 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 30 /* SyntaxKind 0003d2d0: 2e 4e 6f 6e 4e 75 6c 6c 45 78 70 72 65 73 73 69 .NonNullExpressi 0003d2e0: 6f 6e 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 on */:. 0003d2f0: 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 node 0003d300: 3d 20 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 = parent;. 0003d310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 br 0003d320: 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 eak;. 0003d330: 20 20 20 20 20 63 61 73 65 20 32 39 38 20 2f 2a case 298 /* 0003d340: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 70 72 65 SyntaxKind.Spre 0003d350: 61 64 41 73 73 69 67 6e 6d 65 6e 74 20 2a 2f 3a adAssignment */: 0003d360: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0003d370: 20 20 20 20 20 6e 6f 64 65 20 3d 20 70 61 72 65 node = pare 0003d380: 6e 74 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 nt.parent;. 0003d390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 b 0003d3a0: 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 reak;. 0003d3b0: 20 20 20 20 20 20 63 61 73 65 20 32 39 37 20 2f case 297 / 0003d3c0: 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 53 68 6f * SyntaxKind.Sho 0003d3d0: 72 74 68 61 6e 64 50 72 6f 70 65 72 74 79 41 73 rthandPropertyAs 0003d3e0: 73 69 67 6e 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 signment */:. 0003d3f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003d400: 20 69 66 20 28 70 61 72 65 6e 74 2e 6e 61 6d 65 if (parent.name 0003d410: 20 21 3d 3d 20 6e 6f 64 65 29 20 7b 0a 20 20 20 !== node) {. 0003d420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003d430: 20 20 20 20 20 72 65 74 75 72 6e 20 30 20 2f 2a return 0 /* 0003d440: 20 41 73 73 69 67 6e 6d 65 6e 74 4b 69 6e 64 2e AssignmentKind. 0003d450: 4e 6f 6e 65 20 2a 2f 3b 0a 20 20 20 20 20 20 20 None */;. 0003d460: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a 20 }. 0003d470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003d480: 20 20 20 6e 6f 64 65 20 3d 20 70 61 72 65 6e 74 node = parent 0003d490: 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 .parent;. 0003d4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 bre 0003d4b0: 61 6b 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 ak;. 0003d4c0: 20 20 20 20 63 61 73 65 20 32 39 36 20 2f 2a 20 case 296 /* 0003d4d0: 53 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 SyntaxKind.Prope 0003d4e0: 72 74 79 41 73 73 69 67 6e 6d 65 6e 74 20 2a 2f rtyAssignment */ 0003d4f0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0003d500: 20 20 20 20 20 20 69 66 20 28 70 61 72 65 6e 74 if (parent 0003d510: 2e 6e 61 6d 65 20 3d 3d 3d 20 6e 6f 64 65 29 20 .name === node) 0003d520: 7b 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 {. 0003d530: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 0003d540: 20 30 20 2f 2a 20 41 73 73 69 67 6e 6d 65 6e 74 0 /* Assignment 0003d550: 4b 69 6e 64 2e 4e 6f 6e 65 20 2a 2f 3b 0a 20 20 Kind.None */;. 0003d560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003d570: 20 20 7d 0a 20 20 20 20 20 20 20 20 20 20 20 20 }. 0003d580: 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 70 node = p 0003d590: 61 72 65 6e 74 2e 70 61 72 65 6e 74 3b 0a 20 20 arent.parent;. 0003d5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003d5b0: 20 20 62 72 65 61 6b 3b 0a 20 20 20 20 20 20 20 break;. 0003d5c0: 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c 74 default 0003d5d0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0003d5e0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 30 20 2f return 0 / 0003d5f0: 2a 20 41 73 73 69 67 6e 6d 65 6e 74 4b 69 6e 64 * AssignmentKind 0003d600: 2e 4e 6f 6e 65 20 2a 2f 3b 0a 20 20 20 20 20 20 .None */;. 0003d610: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 0003d620: 20 20 20 20 70 61 72 65 6e 74 20 3d 20 6e 6f 64 parent = nod 0003d630: 65 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 e.parent;. 0003d640: 20 20 7d 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 }. }. ts 0003d650: 2e 67 65 74 41 73 73 69 67 6e 6d 65 6e 74 54 61 .getAssignmentTa 0003d660: 72 67 65 74 4b 69 6e 64 20 3d 20 67 65 74 41 73 rgetKind = getAs 0003d670: 73 69 67 6e 6d 65 6e 74 54 61 72 67 65 74 4b 69 signmentTargetKi 0003d680: 6e 64 3b 0a 20 20 20 20 2f 2f 20 41 20 6e 6f 64 nd;. // A nod 0003d690: 65 20 69 73 20 61 6e 20 61 73 73 69 67 6e 6d 65 e is an assignme 0003d6a0: 6e 74 20 74 61 72 67 65 74 20 69 66 20 69 74 20 nt target if it 0003d6b0: 69 73 20 6f 6e 20 74 68 65 20 6c 65 66 74 20 68 is on the left h 0003d6c0: 61 6e 64 20 73 69 64 65 20 6f 66 20 61 6e 20 27 and side of an ' 0003d6d0: 3d 27 20 74 6f 6b 65 6e 2c 20 69 66 20 69 74 20 =' token, if it 0003d6e0: 69 73 20 70 61 72 65 6e 74 65 64 20 62 79 20 61 is parented by a 0003d6f0: 20 70 72 6f 70 65 72 74 79 0a 20 20 20 20 2f 2f property. // 0003d700: 20 61 73 73 69 67 6e 6d 65 6e 74 20 69 6e 20 61 assignment in a 0003d710: 6e 20 6f 62 6a 65 63 74 20 6c 69 74 65 72 61 6c n object literal 0003d720: 20 74 68 61 74 20 69 73 20 61 6e 20 61 73 73 69 that is an assi 0003d730: 67 6e 6d 65 6e 74 20 74 61 72 67 65 74 2c 20 6f gnment target, o 0003d740: 72 20 69 66 20 69 74 20 69 73 20 70 61 72 65 6e r if it is paren 0003d750: 74 65 64 20 62 79 20 61 6e 20 61 72 72 61 79 20 ted by an array 0003d760: 6c 69 74 65 72 61 6c 20 74 68 61 74 20 69 73 0a literal that is. 0003d770: 20 20 20 20 2f 2f 20 61 6e 20 61 73 73 69 67 6e // an assign 0003d780: 6d 65 6e 74 20 74 61 72 67 65 74 2e 20 45 78 61 ment target. Exa 0003d790: 6d 70 6c 65 73 20 69 6e 63 6c 75 64 65 20 27 61 mples include 'a 0003d7a0: 20 3d 20 78 78 78 27 2c 20 27 7b 20 70 3a 20 61 = xxx', '{ p: a 0003d7b0: 20 7d 20 3d 20 78 78 78 27 2c 20 27 5b 7b 20 61 } = xxx', '[{ a 0003d7c0: 20 7d 5d 20 3d 20 78 78 78 27 2e 0a 20 20 20 20 }] = xxx'.. 0003d7d0: 2f 2f 20 28 4e 6f 74 65 20 74 68 61 74 20 60 70 // (Note that `p 0003d7e0: 60 20 69 73 20 6e 6f 74 20 61 20 74 61 72 67 65 ` is not a targe 0003d7f0: 74 20 69 6e 20 74 68 65 20 61 62 6f 76 65 20 65 t in the above e 0003d800: 78 61 6d 70 6c 65 73 2c 20 6f 6e 6c 79 20 60 61 xamples, only `a 0003d810: 60 2e 29 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e `.). function 0003d820: 20 69 73 41 73 73 69 67 6e 6d 65 6e 74 54 61 72 isAssignmentTar 0003d830: 67 65 74 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 get(node) {. 0003d840: 20 20 20 20 72 65 74 75 72 6e 20 67 65 74 41 73 return getAs 0003d850: 73 69 67 6e 6d 65 6e 74 54 61 72 67 65 74 4b 69 signmentTargetKi 0003d860: 6e 64 28 6e 6f 64 65 29 20 21 3d 3d 20 30 20 2f nd(node) !== 0 / 0003d870: 2a 20 41 73 73 69 67 6e 6d 65 6e 74 4b 69 6e 64 * AssignmentKind 0003d880: 2e 4e 6f 6e 65 20 2a 2f 3b 0a 20 20 20 20 7d 0a .None */;. }. 0003d890: 20 20 20 20 74 73 2e 69 73 41 73 73 69 67 6e 6d ts.isAssignm 0003d8a0: 65 6e 74 54 61 72 67 65 74 20 3d 20 69 73 41 73 entTarget = isAs 0003d8b0: 73 69 67 6e 6d 65 6e 74 54 61 72 67 65 74 3b 0a signmentTarget;. 0003d8c0: 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a 20 49 /**. * I 0003d8d0: 6e 64 69 63 61 74 65 73 20 77 68 65 74 68 65 72 ndicates whether 0003d8e0: 20 61 20 6e 6f 64 65 20 63 6f 75 6c 64 20 63 6f a node could co 0003d8f0: 6e 74 61 69 6e 20 61 20 60 76 61 72 60 20 56 61 ntain a `var` Va 0003d900: 72 69 61 62 6c 65 44 65 63 6c 61 72 61 74 69 6f riableDeclaratio 0003d910: 6e 4c 69 73 74 20 74 68 61 74 20 63 6f 6e 74 72 nList that contr 0003d920: 69 62 75 74 65 73 20 74 6f 0a 20 20 20 20 20 2a ibutes to. * 0003d930: 20 74 68 65 20 73 61 6d 65 20 60 76 61 72 60 20 the same `var` 0003d940: 64 65 63 6c 61 72 61 74 69 6f 6e 20 73 63 6f 70 declaration scop 0003d950: 65 20 61 73 20 74 68 65 20 6e 6f 64 65 27 73 20 e as the node's 0003d960: 70 61 72 65 6e 74 2e 0a 20 20 20 20 20 2a 2f 0a parent.. */. 0003d970: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 4e function isN 0003d980: 6f 64 65 57 69 74 68 50 6f 73 73 69 62 6c 65 48 odeWithPossibleH 0003d990: 6f 69 73 74 65 64 44 65 63 6c 61 72 61 74 69 6f oistedDeclaratio 0003d9a0: 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 n(node) {. 0003d9b0: 20 20 73 77 69 74 63 68 20 28 6e 6f 64 65 2e 6b switch (node.k 0003d9c0: 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ind) {. 0003d9d0: 20 20 20 63 61 73 65 20 32 33 35 20 2f 2a 20 53 case 235 /* S 0003d9e0: 79 6e 74 61 78 4b 69 6e 64 2e 42 6c 6f 63 6b 20 yntaxKind.Block 0003d9f0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0003da00: 63 61 73 65 20 32 33 37 20 2f 2a 20 53 79 6e 74 case 237 /* Synt 0003da10: 61 78 4b 69 6e 64 2e 56 61 72 69 61 62 6c 65 53 axKind.VariableS 0003da20: 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 tatement */:. 0003da30: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 34 case 24 0003da40: 38 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 8 /* SyntaxKind. 0003da50: 57 69 74 68 53 74 61 74 65 6d 65 6e 74 20 2a 2f WithStatement */ 0003da60: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 0003da70: 73 65 20 32 33 39 20 2f 2a 20 53 79 6e 74 61 78 se 239 /* Syntax 0003da80: 4b 69 6e 64 2e 49 66 53 74 61 74 65 6d 65 6e 74 Kind.IfStatement 0003da90: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 0003daa0: 20 63 61 73 65 20 32 34 39 20 2f 2a 20 53 79 6e case 249 /* Syn 0003dab0: 74 61 78 4b 69 6e 64 2e 53 77 69 74 63 68 53 74 taxKind.SwitchSt 0003dac0: 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 atement */:. 0003dad0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 36 33 case 263 0003dae0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 /* SyntaxKind.C 0003daf0: 61 73 65 42 6c 6f 63 6b 20 2a 2f 3a 0a 20 20 20 aseBlock */:. 0003db00: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 38 case 28 0003db10: 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 9 /* SyntaxKind. 0003db20: 43 61 73 65 43 6c 61 75 73 65 20 2a 2f 3a 0a 20 CaseClause */:. 0003db30: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0003db40: 32 39 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 290 /* SyntaxKin 0003db50: 64 2e 44 65 66 61 75 6c 74 43 6c 61 75 73 65 20 d.DefaultClause 0003db60: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0003db70: 63 61 73 65 20 32 35 30 20 2f 2a 20 53 79 6e 74 case 250 /* Synt 0003db80: 61 78 4b 69 6e 64 2e 4c 61 62 65 6c 65 64 53 74 axKind.LabeledSt 0003db90: 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 atement */:. 0003dba0: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 34 32 case 242 0003dbb0: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 46 /* SyntaxKind.F 0003dbc0: 6f 72 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a orStatement */:. 0003dbd0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0003dbe0: 20 32 34 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 243 /* SyntaxKi 0003dbf0: 6e 64 2e 46 6f 72 49 6e 53 74 61 74 65 6d 65 6e nd.ForInStatemen 0003dc00: 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 t */:. 0003dc10: 20 20 63 61 73 65 20 32 34 34 20 2f 2a 20 53 79 case 244 /* Sy 0003dc20: 6e 74 61 78 4b 69 6e 64 2e 46 6f 72 4f 66 53 74 ntaxKind.ForOfSt 0003dc30: 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 atement */:. 0003dc40: 20 20 20 20 20 20 20 20 63 61 73 65 20 32 34 30 case 240 0003dc50: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 44 /* SyntaxKind.D 0003dc60: 6f 53 74 61 74 65 6d 65 6e 74 20 2a 2f 3a 0a 20 oStatement */:. 0003dc70: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0003dc80: 32 34 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 241 /* SyntaxKin 0003dc90: 64 2e 57 68 69 6c 65 53 74 61 74 65 6d 65 6e 74 d.WhileStatement 0003dca0: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 0003dcb0: 20 63 61 73 65 20 32 35 32 20 2f 2a 20 53 79 6e case 252 /* Syn 0003dcc0: 74 61 78 4b 69 6e 64 2e 54 72 79 53 74 61 74 65 taxKind.TryState 0003dcd0: 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ment */:. 0003dce0: 20 20 20 20 20 63 61 73 65 20 32 39 32 20 2f 2a case 292 /* 0003dcf0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 43 61 74 63 SyntaxKind.Catc 0003dd00: 68 43 6c 61 75 73 65 20 2a 2f 3a 0a 20 20 20 20 hClause */:. 0003dd10: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 retu 0003dd20: 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 rn true;. 0003dd30: 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 }. retur 0003dd40: 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 n false;. }. 0003dd50: 20 20 20 74 73 2e 69 73 4e 6f 64 65 57 69 74 68 ts.isNodeWith 0003dd60: 50 6f 73 73 69 62 6c 65 48 6f 69 73 74 65 64 44 PossibleHoistedD 0003dd70: 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 69 73 4e eclaration = isN 0003dd80: 6f 64 65 57 69 74 68 50 6f 73 73 69 62 6c 65 48 odeWithPossibleH 0003dd90: 6f 69 73 74 65 64 44 65 63 6c 61 72 61 74 69 6f oistedDeclaratio 0003dda0: 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 n;. function 0003ddb0: 69 73 56 61 6c 75 65 53 69 67 6e 61 74 75 72 65 isValueSignature 0003ddc0: 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 Declaration(node 0003ddd0: 29 20 7b 0a 20 20 20 20 20 20 20 20 72 65 74 75 ) {. retu 0003dde0: 72 6e 20 74 73 2e 69 73 46 75 6e 63 74 69 6f 6e rn ts.isFunction 0003ddf0: 45 78 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 Expression(node) 0003de00: 20 7c 7c 20 74 73 2e 69 73 41 72 72 6f 77 46 75 || ts.isArrowFu 0003de10: 6e 63 74 69 6f 6e 28 6e 6f 64 65 29 20 7c 7c 20 nction(node) || 0003de20: 74 73 2e 69 73 4d 65 74 68 6f 64 4f 72 41 63 63 ts.isMethodOrAcc 0003de30: 65 73 73 6f 72 28 6e 6f 64 65 29 20 7c 7c 20 74 essor(node) || t 0003de40: 73 2e 69 73 46 75 6e 63 74 69 6f 6e 44 65 63 6c s.isFunctionDecl 0003de50: 61 72 61 74 69 6f 6e 28 6e 6f 64 65 29 20 7c 7c aration(node) || 0003de60: 20 74 73 2e 69 73 43 6f 6e 73 74 72 75 63 74 6f ts.isConstructo 0003de70: 72 44 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 rDeclaration(nod 0003de80: 65 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 e);. }. ts 0003de90: 2e 69 73 56 61 6c 75 65 53 69 67 6e 61 74 75 72 .isValueSignatur 0003dea0: 65 44 65 63 6c 61 72 61 74 69 6f 6e 20 3d 20 69 eDeclaration = i 0003deb0: 73 56 61 6c 75 65 53 69 67 6e 61 74 75 72 65 44 sValueSignatureD 0003dec0: 65 63 6c 61 72 61 74 69 6f 6e 3b 0a 20 20 20 20 eclaration;. 0003ded0: 66 75 6e 63 74 69 6f 6e 20 77 61 6c 6b 55 70 28 function walkUp( 0003dee0: 6e 6f 64 65 2c 20 6b 69 6e 64 29 20 7b 0a 20 20 node, kind) {. 0003def0: 20 20 20 20 20 20 77 68 69 6c 65 20 28 6e 6f 64 while (nod 0003df00: 65 20 26 26 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d e && node.kind = 0003df10: 3d 3d 20 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 == kind) {. 0003df20: 20 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 6e 6f node = no 0003df30: 64 65 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 de.parent;. 0003df40: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 }. ret 0003df50: 75 72 6e 20 6e 6f 64 65 3b 0a 20 20 20 20 7d 0a urn node;. }. 0003df60: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 77 61 6c function wal 0003df70: 6b 55 70 50 61 72 65 6e 74 68 65 73 69 7a 65 64 kUpParenthesized 0003df80: 54 79 70 65 73 28 6e 6f 64 65 29 20 7b 0a 20 20 Types(node) {. 0003df90: 20 20 20 20 20 20 72 65 74 75 72 6e 20 77 61 6c return wal 0003dfa0: 6b 55 70 28 6e 6f 64 65 2c 20 31 39 31 20 2f 2a kUp(node, 191 /* 0003dfb0: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 50 61 72 65 SyntaxKind.Pare 0003dfc0: 6e 74 68 65 73 69 7a 65 64 54 79 70 65 20 2a 2f nthesizedType */ 0003dfd0: 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e );. }. ts. 0003dfe0: 77 61 6c 6b 55 70 50 61 72 65 6e 74 68 65 73 69 walkUpParenthesi 0003dff0: 7a 65 64 54 79 70 65 73 20 3d 20 77 61 6c 6b 55 zedTypes = walkU 0003e000: 70 50 61 72 65 6e 74 68 65 73 69 7a 65 64 54 79 pParenthesizedTy 0003e010: 70 65 73 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f pes;. functio 0003e020: 6e 20 77 61 6c 6b 55 70 50 61 72 65 6e 74 68 65 n walkUpParenthe 0003e030: 73 69 7a 65 64 45 78 70 72 65 73 73 69 6f 6e 73 sizedExpressions 0003e040: 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 (node) {. 0003e050: 20 72 65 74 75 72 6e 20 77 61 6c 6b 55 70 28 6e return walkUp(n 0003e060: 6f 64 65 2c 20 32 31 32 20 2f 2a 20 53 79 6e 74 ode, 212 /* Synt 0003e070: 61 78 4b 69 6e 64 2e 50 61 72 65 6e 74 68 65 73 axKind.Parenthes 0003e080: 69 7a 65 64 45 78 70 72 65 73 73 69 6f 6e 20 2a izedExpression * 0003e090: 2f 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 /);. }. ts 0003e0a0: 2e 77 61 6c 6b 55 70 50 61 72 65 6e 74 68 65 73 .walkUpParenthes 0003e0b0: 69 7a 65 64 45 78 70 72 65 73 73 69 6f 6e 73 20 izedExpressions 0003e0c0: 3d 20 77 61 6c 6b 55 70 50 61 72 65 6e 74 68 65 = walkUpParenthe 0003e0d0: 73 69 7a 65 64 45 78 70 72 65 73 73 69 6f 6e 73 sizedExpressions 0003e0e0: 3b 0a 20 20 20 20 2f 2a 2a 0a 20 20 20 20 20 2a ;. /**. * 0003e0f0: 20 57 61 6c 6b 73 20 75 70 20 70 61 72 65 6e 74 Walks up parent 0003e100: 68 65 73 69 7a 65 64 20 74 79 70 65 73 2e 0a 20 hesized types.. 0003e110: 20 20 20 20 2a 20 49 74 20 72 65 74 75 72 6e 73 * It returns 0003e120: 20 62 6f 74 68 20 74 68 65 20 6f 75 74 65 72 6d both the outerm 0003e130: 6f 73 74 20 70 61 72 65 6e 74 68 65 73 69 7a 65 ost parenthesize 0003e140: 64 20 74 79 70 65 20 61 6e 64 20 69 74 73 20 70 d type and its p 0003e150: 61 72 65 6e 74 2e 0a 20 20 20 20 20 2a 20 49 66 arent.. * If 0003e160: 20 67 69 76 65 6e 20 6e 6f 64 65 20 69 73 20 6e given node is n 0003e170: 6f 74 20 61 20 70 61 72 65 6e 74 68 65 73 69 65 ot a parenthesie 0003e180: 7a 64 20 74 79 70 65 2c 20 75 6e 64 65 66 69 6e zd type, undefin 0003e190: 65 64 20 69 73 20 72 65 74 75 72 6e 20 61 73 20 ed is return as 0003e1a0: 74 68 65 20 66 6f 72 6d 65 72 2e 0a 20 20 20 20 the former.. 0003e1b0: 20 2a 2f 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e */. function 0003e1c0: 20 77 61 6c 6b 55 70 50 61 72 65 6e 74 68 65 73 walkUpParenthes 0003e1d0: 69 7a 65 64 54 79 70 65 73 41 6e 64 47 65 74 50 izedTypesAndGetP 0003e1e0: 61 72 65 6e 74 41 6e 64 43 68 69 6c 64 28 6e 6f arentAndChild(no 0003e1f0: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 de) {. va 0003e200: 72 20 63 68 69 6c 64 3b 0a 20 20 20 20 20 20 20 r child;. 0003e210: 20 77 68 69 6c 65 20 28 6e 6f 64 65 20 26 26 20 while (node && 0003e220: 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 31 39 node.kind === 19 0003e230: 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 1 /* SyntaxKind. 0003e240: 50 61 72 65 6e 74 68 65 73 69 7a 65 64 54 79 70 ParenthesizedTyp 0003e250: 65 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 20 e */) {. 0003e260: 20 20 20 20 63 68 69 6c 64 20 3d 20 6e 6f 64 65 child = node 0003e270: 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f ;. no 0003e280: 64 65 20 3d 20 6e 6f 64 65 2e 70 61 72 65 6e 74 de = node.parent 0003e290: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 0003e2a0: 20 20 20 20 72 65 74 75 72 6e 20 5b 63 68 69 6c return [chil 0003e2b0: 64 2c 20 6e 6f 64 65 5d 3b 0a 20 20 20 20 7d 0a d, node];. }. 0003e2c0: 20 20 20 20 74 73 2e 77 61 6c 6b 55 70 50 61 72 ts.walkUpPar 0003e2d0: 65 6e 74 68 65 73 69 7a 65 64 54 79 70 65 73 41 enthesizedTypesA 0003e2e0: 6e 64 47 65 74 50 61 72 65 6e 74 41 6e 64 43 68 ndGetParentAndCh 0003e2f0: 69 6c 64 20 3d 20 77 61 6c 6b 55 70 50 61 72 65 ild = walkUpPare 0003e300: 6e 74 68 65 73 69 7a 65 64 54 79 70 65 73 41 6e nthesizedTypesAn 0003e310: 64 47 65 74 50 61 72 65 6e 74 41 6e 64 43 68 69 dGetParentAndChi 0003e320: 6c 64 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e ld;. function 0003e330: 20 73 6b 69 70 54 79 70 65 50 61 72 65 6e 74 68 skipTypeParenth 0003e340: 65 73 65 73 28 6e 6f 64 65 29 20 7b 0a 20 20 20 eses(node) {. 0003e350: 20 20 20 20 20 77 68 69 6c 65 20 28 74 73 2e 69 while (ts.i 0003e360: 73 50 61 72 65 6e 74 68 65 73 69 7a 65 64 54 79 sParenthesizedTy 0003e370: 70 65 4e 6f 64 65 28 6e 6f 64 65 29 29 0a 20 20 peNode(node)). 0003e380: 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 20 3d node = 0003e390: 20 6e 6f 64 65 2e 74 79 70 65 3b 0a 20 20 20 20 node.type;. 0003e3a0: 20 20 20 20 72 65 74 75 72 6e 20 6e 6f 64 65 3b return node; 0003e3b0: 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 73 6b . }. ts.sk 0003e3c0: 69 70 54 79 70 65 50 61 72 65 6e 74 68 65 73 65 ipTypeParenthese 0003e3d0: 73 20 3d 20 73 6b 69 70 54 79 70 65 50 61 72 65 s = skipTypePare 0003e3e0: 6e 74 68 65 73 65 73 3b 0a 20 20 20 20 66 75 6e ntheses;. fun 0003e3f0: 63 74 69 6f 6e 20 73 6b 69 70 50 61 72 65 6e 74 ction skipParent 0003e400: 68 65 73 65 73 28 6e 6f 64 65 2c 20 65 78 63 6c heses(node, excl 0003e410: 75 64 65 4a 53 44 6f 63 54 79 70 65 41 73 73 65 udeJSDocTypeAsse 0003e420: 72 74 69 6f 6e 73 29 20 7b 0a 20 20 20 20 20 20 rtions) {. 0003e430: 20 20 76 61 72 20 66 6c 61 67 73 20 3d 20 65 78 var flags = ex 0003e440: 63 6c 75 64 65 4a 53 44 6f 63 54 79 70 65 41 73 cludeJSDocTypeAs 0003e450: 73 65 72 74 69 6f 6e 73 20 3f 0a 20 20 20 20 20 sertions ?. 0003e460: 20 20 20 20 20 20 20 31 20 2f 2a 20 4f 75 74 65 1 /* Oute 0003e470: 72 45 78 70 72 65 73 73 69 6f 6e 4b 69 6e 64 73 rExpressionKinds 0003e480: 2e 50 61 72 65 6e 74 68 65 73 65 73 20 2a 2f 20 .Parentheses */ 0003e490: 7c 20 31 36 20 2f 2a 20 4f 75 74 65 72 45 78 70 | 16 /* OuterExp 0003e4a0: 72 65 73 73 69 6f 6e 4b 69 6e 64 73 2e 45 78 63 ressionKinds.Exc 0003e4b0: 6c 75 64 65 4a 53 44 6f 63 54 79 70 65 41 73 73 ludeJSDocTypeAss 0003e4c0: 65 72 74 69 6f 6e 20 2a 2f 20 3a 0a 20 20 20 20 ertion */ :. 0003e4d0: 20 20 20 20 20 20 20 20 31 20 2f 2a 20 4f 75 74 1 /* Out 0003e4e0: 65 72 45 78 70 72 65 73 73 69 6f 6e 4b 69 6e 64 erExpressionKind 0003e4f0: 73 2e 50 61 72 65 6e 74 68 65 73 65 73 20 2a 2f s.Parentheses */ 0003e500: 3b 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e ;. return 0003e510: 20 74 73 2e 73 6b 69 70 4f 75 74 65 72 45 78 70 ts.skipOuterExp 0003e520: 72 65 73 73 69 6f 6e 73 28 6e 6f 64 65 2c 20 66 ressions(node, f 0003e530: 6c 61 67 73 29 3b 0a 20 20 20 20 7d 0a 20 20 20 lags);. }. 0003e540: 20 74 73 2e 73 6b 69 70 50 61 72 65 6e 74 68 65 ts.skipParenthe 0003e550: 73 65 73 20 3d 20 73 6b 69 70 50 61 72 65 6e 74 ses = skipParent 0003e560: 68 65 73 65 73 3b 0a 20 20 20 20 2f 2f 20 61 20 heses;. // a 0003e570: 6e 6f 64 65 20 69 73 20 64 65 6c 65 74 65 20 74 node is delete t 0003e580: 61 72 67 65 74 20 69 66 66 2e 20 69 74 20 69 73 arget iff. it is 0003e590: 20 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 45 PropertyAccessE 0003e5a0: 78 70 72 65 73 73 69 6f 6e 2f 45 6c 65 6d 65 6e xpression/Elemen 0003e5b0: 74 41 63 63 65 73 73 45 78 70 72 65 73 73 69 6f tAccessExpressio 0003e5c0: 6e 20 77 69 74 68 20 70 61 72 65 6e 74 68 65 73 n with parenthes 0003e5d0: 65 73 20 73 6b 69 70 70 65 64 0a 20 20 20 20 66 es skipped. f 0003e5e0: 75 6e 63 74 69 6f 6e 20 69 73 44 65 6c 65 74 65 unction isDelete 0003e5f0: 54 61 72 67 65 74 28 6e 6f 64 65 29 20 7b 0a 20 Target(node) {. 0003e600: 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 2e if (node. 0003e610: 6b 69 6e 64 20 21 3d 3d 20 32 30 36 20 2f 2a 20 kind !== 206 /* 0003e620: 53 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 SyntaxKind.Prope 0003e630: 72 74 79 41 63 63 65 73 73 45 78 70 72 65 73 73 rtyAccessExpress 0003e640: 69 6f 6e 20 2a 2f 20 26 26 20 6e 6f 64 65 2e 6b ion */ && node.k 0003e650: 69 6e 64 20 21 3d 3d 20 32 30 37 20 2f 2a 20 53 ind !== 207 /* S 0003e660: 79 6e 74 61 78 4b 69 6e 64 2e 45 6c 65 6d 65 6e yntaxKind.Elemen 0003e670: 74 41 63 63 65 73 73 45 78 70 72 65 73 73 69 6f tAccessExpressio 0003e680: 6e 20 2a 2f 29 20 7b 0a 20 20 20 20 20 20 20 20 n */) {. 0003e690: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 return false 0003e6a0: 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 20 20 20 ;. }. 0003e6b0: 20 20 20 20 6e 6f 64 65 20 3d 20 77 61 6c 6b 55 node = walkU 0003e6c0: 70 50 61 72 65 6e 74 68 65 73 69 7a 65 64 45 78 pParenthesizedEx 0003e6d0: 70 72 65 73 73 69 6f 6e 73 28 6e 6f 64 65 2e 70 pressions(node.p 0003e6e0: 61 72 65 6e 74 29 3b 0a 20 20 20 20 20 20 20 20 arent);. 0003e6f0: 72 65 74 75 72 6e 20 6e 6f 64 65 20 26 26 20 6e return node && n 0003e700: 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 31 35 ode.kind === 215 0003e710: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 44 /* SyntaxKind.D 0003e720: 65 6c 65 74 65 45 78 70 72 65 73 73 69 6f 6e 20 eleteExpression 0003e730: 2a 2f 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 */;. }. ts 0003e740: 2e 69 73 44 65 6c 65 74 65 54 61 72 67 65 74 20 .isDeleteTarget 0003e750: 3d 20 69 73 44 65 6c 65 74 65 54 61 72 67 65 74 = isDeleteTarget 0003e760: 3b 0a 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 ;. function i 0003e770: 73 4e 6f 64 65 44 65 73 63 65 6e 64 61 6e 74 4f sNodeDescendantO 0003e780: 66 28 6e 6f 64 65 2c 20 61 6e 63 65 73 74 6f 72 f(node, ancestor 0003e790: 29 20 7b 0a 20 20 20 20 20 20 20 20 77 68 69 6c ) {. whil 0003e7a0: 65 20 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 e (node) {. 0003e7b0: 20 20 20 20 20 20 20 69 66 20 28 6e 6f 64 65 20 if (node 0003e7c0: 3d 3d 3d 20 61 6e 63 65 73 74 6f 72 29 0a 20 20 === ancestor). 0003e7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 re 0003e7e0: 74 75 72 6e 20 74 72 75 65 3b 0a 20 20 20 20 20 turn true;. 0003e7f0: 20 20 20 20 20 20 20 6e 6f 64 65 20 3d 20 6e 6f node = no 0003e800: 64 65 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 de.parent;. 0003e810: 20 20 20 7d 0a 20 20 20 20 20 20 20 20 72 65 74 }. ret 0003e820: 75 72 6e 20 66 61 6c 73 65 3b 0a 20 20 20 20 7d urn false;. } 0003e830: 0a 20 20 20 20 74 73 2e 69 73 4e 6f 64 65 44 65 . ts.isNodeDe 0003e840: 73 63 65 6e 64 61 6e 74 4f 66 20 3d 20 69 73 4e scendantOf = isN 0003e850: 6f 64 65 44 65 73 63 65 6e 64 61 6e 74 4f 66 3b odeDescendantOf; 0003e860: 0a 20 20 20 20 2f 2f 20 54 72 75 65 20 69 66 20 . // True if 0003e870: 60 6e 61 6d 65 60 20 69 73 20 74 68 65 20 6e 61 `name` is the na 0003e880: 6d 65 20 6f 66 20 61 20 64 65 63 6c 61 72 61 74 me of a declarat 0003e890: 69 6f 6e 20 6e 6f 64 65 0a 20 20 20 20 66 75 6e ion node. fun 0003e8a0: 63 74 69 6f 6e 20 69 73 44 65 63 6c 61 72 61 74 ction isDeclarat 0003e8b0: 69 6f 6e 4e 61 6d 65 28 6e 61 6d 65 29 20 7b 0a ionName(name) {. 0003e8c0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 21 return ! 0003e8d0: 74 73 2e 69 73 53 6f 75 72 63 65 46 69 6c 65 28 ts.isSourceFile( 0003e8e0: 6e 61 6d 65 29 20 26 26 20 21 74 73 2e 69 73 42 name) && !ts.isB 0003e8f0: 69 6e 64 69 6e 67 50 61 74 74 65 72 6e 28 6e 61 indingPattern(na 0003e900: 6d 65 29 20 26 26 20 74 73 2e 69 73 44 65 63 6c me) && ts.isDecl 0003e910: 61 72 61 74 69 6f 6e 28 6e 61 6d 65 2e 70 61 72 aration(name.par 0003e920: 65 6e 74 29 20 26 26 20 6e 61 6d 65 2e 70 61 72 ent) && name.par 0003e930: 65 6e 74 2e 6e 61 6d 65 20 3d 3d 3d 20 6e 61 6d ent.name === nam 0003e940: 65 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 2e e;. }. ts. 0003e950: 69 73 44 65 63 6c 61 72 61 74 69 6f 6e 4e 61 6d isDeclarationNam 0003e960: 65 20 3d 20 69 73 44 65 63 6c 61 72 61 74 69 6f e = isDeclaratio 0003e970: 6e 4e 61 6d 65 3b 0a 20 20 20 20 2f 2f 20 53 65 nName;. // Se 0003e980: 65 20 47 48 23 31 36 30 33 30 0a 20 20 20 20 66 e GH#16030. f 0003e990: 75 6e 63 74 69 6f 6e 20 67 65 74 44 65 63 6c 61 unction getDecla 0003e9a0: 72 61 74 69 6f 6e 46 72 6f 6d 4e 61 6d 65 28 6e rationFromName(n 0003e9b0: 61 6d 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 ame) {. v 0003e9c0: 61 72 20 70 61 72 65 6e 74 20 3d 20 6e 61 6d 65 ar parent = name 0003e9d0: 2e 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 .parent;. 0003e9e0: 20 73 77 69 74 63 68 20 28 6e 61 6d 65 2e 6b 69 switch (name.ki 0003e9f0: 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 20 nd) {. 0003ea00: 20 20 63 61 73 65 20 31 30 20 2f 2a 20 53 79 6e case 10 /* Syn 0003ea10: 74 61 78 4b 69 6e 64 2e 53 74 72 69 6e 67 4c 69 taxKind.StringLi 0003ea20: 74 65 72 61 6c 20 2a 2f 3a 0a 20 20 20 20 20 20 teral */:. 0003ea30: 20 20 20 20 20 20 63 61 73 65 20 31 34 20 2f 2a case 14 /* 0003ea40: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e 6f 53 75 SyntaxKind.NoSu 0003ea50: 62 73 74 69 74 75 74 69 6f 6e 54 65 6d 70 6c 61 bstitutionTempla 0003ea60: 74 65 4c 69 74 65 72 61 6c 20 2a 2f 3a 0a 20 20 teLiteral */:. 0003ea70: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 38 case 8 0003ea80: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e /* SyntaxKind.N 0003ea90: 75 6d 65 72 69 63 4c 69 74 65 72 61 6c 20 2a 2f umericLiteral */ 0003eaa0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 :. 0003eab0: 20 20 69 66 20 28 74 73 2e 69 73 43 6f 6d 70 75 if (ts.isCompu 0003eac0: 74 65 64 50 72 6f 70 65 72 74 79 4e 61 6d 65 28 tedPropertyName( 0003ead0: 70 61 72 65 6e 74 29 29 0a 20 20 20 20 20 20 20 parent)). 0003eae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 ret 0003eaf0: 75 72 6e 20 70 61 72 65 6e 74 2e 70 61 72 65 6e urn parent.paren 0003eb00: 74 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f t;. / 0003eb10: 2f 20 66 61 6c 6c 73 20 74 68 72 6f 75 67 68 0a / falls through. 0003eb20: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 case 0003eb30: 20 37 39 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 79 /* SyntaxKin 0003eb40: 64 2e 49 64 65 6e 74 69 66 69 65 72 20 2a 2f 3a d.Identifier */: 0003eb50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0003eb60: 20 69 66 20 28 74 73 2e 69 73 44 65 63 6c 61 72 if (ts.isDeclar 0003eb70: 61 74 69 6f 6e 28 70 61 72 65 6e 74 29 29 20 7b ation(parent)) { 0003eb80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0003eb90: 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 65 return pare 0003eba0: 6e 74 2e 6e 61 6d 65 20 3d 3d 3d 20 6e 61 6d 65 nt.name === name 0003ebb0: 20 3f 20 70 61 72 65 6e 74 20 3a 20 75 6e 64 65 ? parent : unde 0003ebc0: 66 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 20 fined;. 0003ebd0: 20 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 }. 0003ebe0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 else if 0003ebf0: 20 28 74 73 2e 69 73 51 75 61 6c 69 66 69 65 64 (ts.isQualified 0003ec00: 4e 61 6d 65 28 70 61 72 65 6e 74 29 29 20 7b 0a Name(parent)) {. 0003ec10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003ec20: 20 20 20 20 76 61 72 20 74 61 67 20 3d 20 70 61 var tag = pa 0003ec30: 72 65 6e 74 2e 70 61 72 65 6e 74 3b 0a 20 20 20 rent.parent;. 0003ec40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003ec50: 20 72 65 74 75 72 6e 20 74 73 2e 69 73 4a 53 44 return ts.isJSD 0003ec60: 6f 63 50 61 72 61 6d 65 74 65 72 54 61 67 28 74 ocParameterTag(t 0003ec70: 61 67 29 20 26 26 20 74 61 67 2e 6e 61 6d 65 20 ag) && tag.name 0003ec80: 3d 3d 3d 20 70 61 72 65 6e 74 20 3f 20 74 61 67 === parent ? tag 0003ec90: 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 : undefined;. 0003eca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0a }. 0003ecb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003ecc0: 65 6c 73 65 20 7b 0a 20 20 20 20 20 20 20 20 20 else {. 0003ecd0: 20 20 20 20 20 20 20 20 20 20 20 76 61 72 20 62 var b 0003ece0: 69 6e 45 78 70 20 3d 20 70 61 72 65 6e 74 2e 70 inExp = parent.p 0003ecf0: 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 20 arent;. 0003ed00: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 retur 0003ed10: 6e 20 74 73 2e 69 73 42 69 6e 61 72 79 45 78 70 n ts.isBinaryExp 0003ed20: 72 65 73 73 69 6f 6e 28 62 69 6e 45 78 70 29 20 ression(binExp) 0003ed30: 26 26 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 &&. 0003ed40: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 41 73 getAs 0003ed50: 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 signmentDeclarat 0003ed60: 69 6f 6e 4b 69 6e 64 28 62 69 6e 45 78 70 29 20 ionKind(binExp) 0003ed70: 21 3d 3d 20 30 20 2f 2a 20 41 73 73 69 67 6e 6d !== 0 /* Assignm 0003ed80: 65 6e 74 44 65 63 6c 61 72 61 74 69 6f 6e 4b 69 entDeclarationKi 0003ed90: 6e 64 2e 4e 6f 6e 65 20 2a 2f 20 26 26 0a 20 20 nd.None */ &&. 0003eda0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003edb0: 20 20 20 20 20 20 28 62 69 6e 45 78 70 2e 6c 65 (binExp.le 0003edc0: 66 74 2e 73 79 6d 62 6f 6c 20 7c 7c 20 62 69 6e ft.symbol || bin 0003edd0: 45 78 70 2e 73 79 6d 62 6f 6c 29 20 26 26 0a 20 Exp.symbol) &&. 0003ede0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003edf0: 20 20 20 20 20 20 20 74 73 2e 67 65 74 4e 61 6d ts.getNam 0003ee00: 65 4f 66 44 65 63 6c 61 72 61 74 69 6f 6e 28 62 eOfDeclaration(b 0003ee10: 69 6e 45 78 70 29 20 3d 3d 3d 20 6e 61 6d 65 0a inExp) === name. 0003ee20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003ee30: 20 20 20 20 20 20 20 20 3f 20 62 69 6e 45 78 70 ? binExp 0003ee40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0003ee50: 20 20 20 20 20 20 20 20 20 3a 20 75 6e 64 65 66 : undef 0003ee60: 69 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 20 20 ined;. 0003ee70: 20 20 20 20 20 20 7d 0a 20 20 20 20 20 20 20 20 }. 0003ee80: 20 20 20 20 63 61 73 65 20 38 30 20 2f 2a 20 53 case 80 /* S 0003ee90: 79 6e 74 61 78 4b 69 6e 64 2e 50 72 69 76 61 74 yntaxKind.Privat 0003eea0: 65 49 64 65 6e 74 69 66 69 65 72 20 2a 2f 3a 0a eIdentifier */:. 0003eeb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003eec0: 72 65 74 75 72 6e 20 74 73 2e 69 73 44 65 63 6c return ts.isDecl 0003eed0: 61 72 61 74 69 6f 6e 28 70 61 72 65 6e 74 29 20 aration(parent) 0003eee0: 26 26 20 70 61 72 65 6e 74 2e 6e 61 6d 65 20 3d && parent.name = 0003eef0: 3d 3d 20 6e 61 6d 65 20 3f 20 70 61 72 65 6e 74 == name ? parent 0003ef00: 20 3a 20 75 6e 64 65 66 69 6e 65 64 3b 0a 20 20 : undefined;. 0003ef10: 20 20 20 20 20 20 20 20 20 20 64 65 66 61 75 6c defaul 0003ef20: 74 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t:. 0003ef30: 20 20 20 72 65 74 75 72 6e 20 75 6e 64 65 66 69 return undefi 0003ef40: 6e 65 64 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 ned;. }. 0003ef50: 20 20 20 7d 0a 20 20 20 20 74 73 2e 67 65 74 44 }. ts.getD 0003ef60: 65 63 6c 61 72 61 74 69 6f 6e 46 72 6f 6d 4e 61 eclarationFromNa 0003ef70: 6d 65 20 3d 20 67 65 74 44 65 63 6c 61 72 61 74 me = getDeclarat 0003ef80: 69 6f 6e 46 72 6f 6d 4e 61 6d 65 3b 0a 20 20 20 ionFromName;. 0003ef90: 20 66 75 6e 63 74 69 6f 6e 20 69 73 4c 69 74 65 function isLite 0003efa0: 72 61 6c 43 6f 6d 70 75 74 65 64 50 72 6f 70 65 ralComputedPrope 0003efb0: 72 74 79 44 65 63 6c 61 72 61 74 69 6f 6e 4e 61 rtyDeclarationNa 0003efc0: 6d 65 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 me(node) {. 0003efd0: 20 20 20 72 65 74 75 72 6e 20 69 73 53 74 72 69 return isStri 0003efe0: 6e 67 4f 72 4e 75 6d 65 72 69 63 4c 69 74 65 72 ngOrNumericLiter 0003eff0: 61 6c 4c 69 6b 65 28 6e 6f 64 65 29 20 26 26 0a alLike(node) &&. 0003f000: 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 node 0003f010: 2e 70 61 72 65 6e 74 2e 6b 69 6e 64 20 3d 3d 3d .parent.kind === 0003f020: 20 31 36 32 20 2f 2a 20 53 79 6e 74 61 78 4b 69 162 /* SyntaxKi 0003f030: 6e 64 2e 43 6f 6d 70 75 74 65 64 50 72 6f 70 65 nd.ComputedPrope 0003f040: 72 74 79 4e 61 6d 65 20 2a 2f 20 26 26 0a 20 20 rtyName */ &&. 0003f050: 20 20 20 20 20 20 20 20 20 20 74 73 2e 69 73 44 ts.isD 0003f060: 65 63 6c 61 72 61 74 69 6f 6e 28 6e 6f 64 65 2e eclaration(node. 0003f070: 70 61 72 65 6e 74 2e 70 61 72 65 6e 74 29 3b 0a parent.parent);. 0003f080: 20 20 20 20 7d 0a 20 20 20 20 74 73 2e 69 73 4c }. ts.isL 0003f090: 69 74 65 72 61 6c 43 6f 6d 70 75 74 65 64 50 72 iteralComputedPr 0003f0a0: 6f 70 65 72 74 79 44 65 63 6c 61 72 61 74 69 6f opertyDeclaratio 0003f0b0: 6e 4e 61 6d 65 20 3d 20 69 73 4c 69 74 65 72 61 nName = isLitera 0003f0c0: 6c 43 6f 6d 70 75 74 65 64 50 72 6f 70 65 72 74 lComputedPropert 0003f0d0: 79 44 65 63 6c 61 72 61 74 69 6f 6e 4e 61 6d 65 yDeclarationName 0003f0e0: 3b 0a 20 20 20 20 2f 2f 20 52 65 74 75 72 6e 20 ;. // Return 0003f0f0: 74 72 75 65 20 69 66 20 74 68 65 20 67 69 76 65 true if the give 0003f100: 6e 20 69 64 65 6e 74 69 66 69 65 72 20 69 73 20 n identifier is 0003f110: 63 6c 61 73 73 69 66 69 65 64 20 61 73 20 61 6e classified as an 0003f120: 20 49 64 65 6e 74 69 66 69 65 72 4e 61 6d 65 0a IdentifierName. 0003f130: 20 20 20 20 66 75 6e 63 74 69 6f 6e 20 69 73 49 function isI 0003f140: 64 65 6e 74 69 66 69 65 72 4e 61 6d 65 28 6e 6f dentifierName(no 0003f150: 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 76 61 de) {. va 0003f160: 72 20 70 61 72 65 6e 74 20 3d 20 6e 6f 64 65 2e r parent = node. 0003f170: 70 61 72 65 6e 74 3b 0a 20 20 20 20 20 20 20 20 parent;. 0003f180: 73 77 69 74 63 68 20 28 70 61 72 65 6e 74 2e 6b switch (parent.k 0003f190: 69 6e 64 29 20 7b 0a 20 20 20 20 20 20 20 20 20 ind) {. 0003f1a0: 20 20 20 63 61 73 65 20 31 36 37 20 2f 2a 20 53 case 167 /* S 0003f1b0: 79 6e 74 61 78 4b 69 6e 64 2e 50 72 6f 70 65 72 yntaxKind.Proper 0003f1c0: 74 79 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f tyDeclaration */ 0003f1d0: 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 :. ca 0003f1e0: 73 65 20 31 36 36 20 2f 2a 20 53 79 6e 74 61 78 se 166 /* Syntax 0003f1f0: 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 53 69 67 Kind.PropertySig 0003f200: 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 20 nature */:. 0003f210: 20 20 20 20 20 20 20 63 61 73 65 20 31 36 39 20 case 169 0003f220: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4d 65 /* SyntaxKind.Me 0003f230: 74 68 6f 64 44 65 63 6c 61 72 61 74 69 6f 6e 20 thodDeclaration 0003f240: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0003f250: 63 61 73 65 20 31 36 38 20 2f 2a 20 53 79 6e 74 case 168 /* Synt 0003f260: 61 78 4b 69 6e 64 2e 4d 65 74 68 6f 64 53 69 67 axKind.MethodSig 0003f270: 6e 61 74 75 72 65 20 2a 2f 3a 0a 20 20 20 20 20 nature */:. 0003f280: 20 20 20 20 20 20 20 63 61 73 65 20 31 37 32 20 case 172 0003f290: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 47 65 /* SyntaxKind.Ge 0003f2a0: 74 41 63 63 65 73 73 6f 72 20 2a 2f 3a 0a 20 20 tAccessor */:. 0003f2b0: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 31 case 1 0003f2c0: 37 33 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 73 /* SyntaxKind 0003f2d0: 2e 53 65 74 41 63 63 65 73 73 6f 72 20 2a 2f 3a .SetAccessor */: 0003f2e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 61 73 . cas 0003f2f0: 65 20 32 39 39 20 2f 2a 20 53 79 6e 74 61 78 4b e 299 /* SyntaxK 0003f300: 69 6e 64 2e 45 6e 75 6d 4d 65 6d 62 65 72 20 2a ind.EnumMember * 0003f310: 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 /:. c 0003f320: 61 73 65 20 32 39 36 20 2f 2a 20 53 79 6e 74 61 ase 296 /* Synta 0003f330: 78 4b 69 6e 64 2e 50 72 6f 70 65 72 74 79 41 73 xKind.PropertyAs 0003f340: 73 69 67 6e 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 signment */:. 0003f350: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 30 case 20 0003f360: 36 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 6 /* SyntaxKind. 0003f370: 50 72 6f 70 65 72 74 79 41 63 63 65 73 73 45 78 PropertyAccessEx 0003f380: 70 72 65 73 73 69 6f 6e 20 2a 2f 3a 0a 20 20 20 pression */:. 0003f390: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 // 0003f3a0: 4e 61 6d 65 20 69 6e 20 6d 65 6d 62 65 72 20 64 Name in member d 0003f3b0: 65 63 6c 61 72 61 74 69 6f 6e 20 6f 72 20 70 72 eclaration or pr 0003f3c0: 6f 70 65 72 74 79 20 6e 61 6d 65 20 69 6e 20 70 operty name in p 0003f3d0: 72 6f 70 65 72 74 79 20 61 63 63 65 73 73 0a 20 roperty access. 0003f3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 r 0003f3f0: 65 74 75 72 6e 20 70 61 72 65 6e 74 2e 6e 61 6d eturn parent.nam 0003f400: 65 20 3d 3d 3d 20 6e 6f 64 65 3b 0a 20 20 20 20 e === node;. 0003f410: 20 20 20 20 20 20 20 20 63 61 73 65 20 31 36 31 case 161 0003f420: 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 51 /* SyntaxKind.Q 0003f430: 75 61 6c 69 66 69 65 64 4e 61 6d 65 20 2a 2f 3a ualifiedName */: 0003f440: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 . 0003f450: 20 2f 2f 20 4e 61 6d 65 20 6f 6e 20 72 69 67 68 // Name on righ 0003f460: 74 20 68 61 6e 64 20 73 69 64 65 20 6f 66 20 64 t hand side of d 0003f470: 6f 74 20 69 6e 20 61 20 74 79 70 65 20 71 75 65 ot in a type que 0003f480: 72 79 20 6f 72 20 74 79 70 65 20 72 65 66 65 72 ry or type refer 0003f490: 65 6e 63 65 0a 20 20 20 20 20 20 20 20 20 20 20 ence. 0003f4a0: 20 20 20 20 20 72 65 74 75 72 6e 20 70 61 72 65 return pare 0003f4b0: 6e 74 2e 72 69 67 68 74 20 3d 3d 3d 20 6e 6f 64 nt.right === nod 0003f4c0: 65 3b 0a 20 20 20 20 20 20 20 20 20 20 20 20 63 e;. c 0003f4d0: 61 73 65 20 32 30 33 20 2f 2a 20 53 79 6e 74 61 ase 203 /* Synta 0003f4e0: 78 4b 69 6e 64 2e 42 69 6e 64 69 6e 67 45 6c 65 xKind.BindingEle 0003f4f0: 6d 65 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 ment */:. 0003f500: 20 20 20 20 20 63 61 73 65 20 32 37 30 20 2f 2a case 270 /* 0003f510: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d 70 6f SyntaxKind.Impo 0003f520: 72 74 53 70 65 63 69 66 69 65 72 20 2a 2f 3a 0a rtSpecifier */:. 0003f530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003f540: 2f 2f 20 50 72 6f 70 65 72 74 79 20 6e 61 6d 65 // Property name 0003f550: 20 69 6e 20 62 69 6e 64 69 6e 67 20 65 6c 65 6d in binding elem 0003f560: 65 6e 74 20 6f 72 20 69 6d 70 6f 72 74 20 73 70 ent or import sp 0003f570: 65 63 69 66 69 65 72 0a 20 20 20 20 20 20 20 20 ecifier. 0003f580: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 return p 0003f590: 61 72 65 6e 74 2e 70 72 6f 70 65 72 74 79 4e 61 arent.propertyNa 0003f5a0: 6d 65 20 3d 3d 3d 20 6e 6f 64 65 3b 0a 20 20 20 me === node;. 0003f5b0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 37 case 27 0003f5c0: 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 5 /* SyntaxKind. 0003f5d0: 45 78 70 6f 72 74 53 70 65 63 69 66 69 65 72 20 ExportSpecifier 0003f5e0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0003f5f0: 63 61 73 65 20 32 38 35 20 2f 2a 20 53 79 6e 74 case 285 /* Synt 0003f600: 61 78 4b 69 6e 64 2e 4a 73 78 41 74 74 72 69 62 axKind.JsxAttrib 0003f610: 75 74 65 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 ute */:. 0003f620: 20 20 20 20 63 61 73 65 20 32 37 39 20 2f 2a 20 case 279 /* 0003f630: 53 79 6e 74 61 78 4b 69 6e 64 2e 4a 73 78 53 65 SyntaxKind.JsxSe 0003f640: 6c 66 43 6c 6f 73 69 6e 67 45 6c 65 6d 65 6e 74 lfClosingElement 0003f650: 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 */:. 0003f660: 20 63 61 73 65 20 32 38 30 20 2f 2a 20 53 79 6e case 280 /* Syn 0003f670: 74 61 78 4b 69 6e 64 2e 4a 73 78 4f 70 65 6e 69 taxKind.JsxOpeni 0003f680: 6e 67 45 6c 65 6d 65 6e 74 20 2a 2f 3a 0a 20 20 ngElement */:. 0003f690: 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 case 2 0003f6a0: 38 31 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 81 /* SyntaxKind 0003f6b0: 2e 4a 73 78 43 6c 6f 73 69 6e 67 45 6c 65 6d 65 .JsxClosingEleme 0003f6c0: 6e 74 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 nt */:. 0003f6d0: 20 20 20 20 20 20 20 2f 2f 20 41 6e 79 20 6e 61 // Any na 0003f6e0: 6d 65 20 69 6e 20 61 6e 20 65 78 70 6f 72 74 20 me in an export 0003f6f0: 73 70 65 63 69 66 69 65 72 20 6f 72 20 4a 53 58 specifier or JSX 0003f700: 20 41 74 74 72 69 62 75 74 65 20 6f 72 20 4a 73 Attribute or Js 0003f710: 78 20 45 6c 65 6d 65 6e 74 0a 20 20 20 20 20 20 x Element. 0003f720: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e return 0003f730: 20 74 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d true;. } 0003f740: 0a 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 . return 0003f750: 66 61 6c 73 65 3b 0a 20 20 20 20 7d 0a 20 20 20 false;. }. 0003f760: 20 74 73 2e 69 73 49 64 65 6e 74 69 66 69 65 72 ts.isIdentifier 0003f770: 4e 61 6d 65 20 3d 20 69 73 49 64 65 6e 74 69 66 Name = isIdentif 0003f780: 69 65 72 4e 61 6d 65 3b 0a 20 20 20 20 2f 2f 20 ierName;. // 0003f790: 41 6e 20 61 6c 69 61 73 20 73 79 6d 62 6f 6c 20 An alias symbol 0003f7a0: 69 73 20 63 72 65 61 74 65 64 20 62 79 20 6f 6e is created by on 0003f7b0: 65 20 6f 66 20 74 68 65 20 66 6f 6c 6c 6f 77 69 e of the followi 0003f7c0: 6e 67 20 64 65 63 6c 61 72 61 74 69 6f 6e 73 3a ng declarations: 0003f7d0: 0a 20 20 20 20 2f 2f 20 69 6d 70 6f 72 74 20 3c . // import < 0003f7e0: 73 79 6d 62 6f 6c 3e 20 3d 20 2e 2e 2e 0a 20 20 symbol> = .... 0003f7f0: 20 20 2f 2f 20 69 6d 70 6f 72 74 20 3c 73 79 6d // import <sym 0003f800: 62 6f 6c 3e 20 66 72 6f 6d 20 2e 2e 2e 0a 20 20 bol> from .... 0003f810: 20 20 2f 2f 20 69 6d 70 6f 72 74 20 2a 20 61 73 // import * as 0003f820: 20 3c 73 79 6d 62 6f 6c 3e 20 66 72 6f 6d 20 2e <symbol> from . 0003f830: 2e 2e 0a 20 20 20 20 2f 2f 20 69 6d 70 6f 72 74 ... // import 0003f840: 20 7b 20 78 20 61 73 20 3c 73 79 6d 62 6f 6c 3e { x as <symbol> 0003f850: 20 7d 20 66 72 6f 6d 20 2e 2e 2e 0a 20 20 20 20 } from .... 0003f860: 2f 2f 20 65 78 70 6f 72 74 20 7b 20 78 20 61 73 // export { x as 0003f870: 20 3c 73 79 6d 62 6f 6c 3e 20 7d 20 66 72 6f 6d <symbol> } from 0003f880: 20 2e 2e 2e 0a 20 20 20 20 2f 2f 20 65 78 70 6f .... // expo 0003f890: 72 74 20 2a 20 61 73 20 6e 73 20 3c 73 79 6d 62 rt * as ns <symb 0003f8a0: 6f 6c 3e 20 66 72 6f 6d 20 2e 2e 2e 0a 20 20 20 ol> from .... 0003f8b0: 20 2f 2f 20 65 78 70 6f 72 74 20 3d 20 3c 45 6e // export = <En 0003f8c0: 74 69 74 79 4e 61 6d 65 45 78 70 72 65 73 73 69 tityNameExpressi 0003f8d0: 6f 6e 3e 0a 20 20 20 20 2f 2f 20 65 78 70 6f 72 on>. // expor 0003f8e0: 74 20 64 65 66 61 75 6c 74 20 3c 45 6e 74 69 74 t default <Entit 0003f8f0: 79 4e 61 6d 65 45 78 70 72 65 73 73 69 6f 6e 3e yNameExpression> 0003f900: 0a 20 20 20 20 2f 2f 20 6d 6f 64 75 6c 65 2e 65 . // module.e 0003f910: 78 70 6f 72 74 73 20 3d 20 3c 45 6e 74 69 74 79 xports = <Entity 0003f920: 4e 61 6d 65 45 78 70 72 65 73 73 69 6f 6e 3e 0a NameExpression>. 0003f930: 20 20 20 20 2f 2f 20 6d 6f 64 75 6c 65 2e 65 78 // module.ex 0003f940: 70 6f 72 74 73 2e 78 20 3d 20 3c 45 6e 74 69 74 ports.x = <Entit 0003f950: 79 4e 61 6d 65 45 78 70 72 65 73 73 69 6f 6e 3e yNameExpression> 0003f960: 0a 20 20 20 20 2f 2f 20 63 6f 6e 73 74 20 78 20 . // const x 0003f970: 3d 20 72 65 71 75 69 72 65 28 22 2e 2e 2e 22 29 = require("...") 0003f980: 0a 20 20 20 20 2f 2f 20 63 6f 6e 73 74 20 7b 20 . // const { 0003f990: 78 20 7d 20 3d 20 72 65 71 75 69 72 65 28 22 2e x } = require(". 0003f9a0: 2e 2e 22 29 0a 20 20 20 20 2f 2f 20 63 6f 6e 73 .."). // cons 0003f9b0: 74 20 78 20 3d 20 72 65 71 75 69 72 65 28 22 2e t x = require(". 0003f9c0: 2e 2e 22 29 2e 79 0a 20 20 20 20 2f 2f 20 63 6f ..").y. // co 0003f9d0: 6e 73 74 20 7b 20 78 20 7d 20 3d 20 72 65 71 75 nst { x } = requ 0003f9e0: 69 72 65 28 22 2e 2e 2e 22 29 2e 79 0a 20 20 20 ire("...").y. 0003f9f0: 20 66 75 6e 63 74 69 6f 6e 20 69 73 41 6c 69 61 function isAlia 0003fa00: 73 53 79 6d 62 6f 6c 44 65 63 6c 61 72 61 74 69 sSymbolDeclarati 0003fa10: 6f 6e 28 6e 6f 64 65 29 20 7b 0a 20 20 20 20 20 on(node) {. 0003fa20: 20 20 20 69 66 20 28 6e 6f 64 65 2e 6b 69 6e 64 if (node.kind 0003fa30: 20 3d 3d 3d 20 32 36 35 20 2f 2a 20 53 79 6e 74 === 265 /* Synt 0003fa40: 61 78 4b 69 6e 64 2e 49 6d 70 6f 72 74 45 71 75 axKind.ImportEqu 0003fa50: 61 6c 73 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a alsDeclaration * 0003fa60: 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 / ||. 0003fa70: 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 node.kind === 2 0003fa80: 36 34 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 64 /* SyntaxKind 0003fa90: 2e 4e 61 6d 65 73 70 61 63 65 45 78 70 6f 72 74 .NamespaceExport 0003faa0: 44 65 63 6c 61 72 61 74 69 6f 6e 20 2a 2f 20 7c Declaration */ | 0003fab0: 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f |. no 0003fac0: 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 36 37 20 de.kind === 267 0003fad0: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d /* SyntaxKind.Im 0003fae0: 70 6f 72 74 43 6c 61 75 73 65 20 2a 2f 20 26 26 portClause */ && 0003faf0: 20 21 21 6e 6f 64 65 2e 6e 61 6d 65 20 7c 7c 0a !!node.name ||. 0003fb00: 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f 64 65 node 0003fb10: 2e 6b 69 6e 64 20 3d 3d 3d 20 32 36 38 20 2f 2a .kind === 268 /* 0003fb20: 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e 61 6d 65 SyntaxKind.Name 0003fb30: 73 70 61 63 65 49 6d 70 6f 72 74 20 2a 2f 20 7c spaceImport */ | 0003fb40: 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 6e 6f |. no 0003fb50: 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 37 34 20 de.kind === 274 0003fb60: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 4e 61 /* SyntaxKind.Na 0003fb70: 6d 65 73 70 61 63 65 45 78 70 6f 72 74 20 2a 2f mespaceExport */ 0003fb80: 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 20 20 ||. 0003fb90: 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 32 37 node.kind === 27 0003fba0: 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 0 /* SyntaxKind. 0003fbb0: 49 6d 70 6f 72 74 53 70 65 63 69 66 69 65 72 20 ImportSpecifier 0003fbc0: 2a 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 20 20 */ ||. 0003fbd0: 20 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d 3d 20 node.kind === 0003fbe0: 32 37 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 275 /* SyntaxKin 0003fbf0: 64 2e 45 78 70 6f 72 74 53 70 65 63 69 66 69 65 d.ExportSpecifie 0003fc00: 72 20 2a 2f 20 7c 7c 0a 20 20 20 20 20 20 20 20 r */ ||. 0003fc10: 20 20 20 20 6e 6f 64 65 2e 6b 69 6e 64 20 3d 3d node.kind == 0003fc20: 3d 20 32 37 31 20 2f 2a 20 53 79 6e 74 61 78 4b = 271 /* SyntaxK 0003fc30: 69 6e 64 2e 45 78 70 6f 72 74 41 73 73 69 67 6e ind.ExportAssign 0003fc40: 6d 65 6e 74 20 2a 2f 20 26 26 20 65 78 70 6f 72 ment */ && expor 0003fc50: 74 41 73 73 69 67 6e 6d 65 6e 74 49 73 41 6c 69 tAssignmentIsAli 0003fc60: 61 73 28 6e 6f 64 65 29 29 20 7b 0a 20 20 20 20 as(node)) {. 0003fc70: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 return t 0003fc80: 72 75 65 3b 0a 20 20 20 20 20 20 20 20 7d 0a 20 rue;. }. 0003fc90: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 69 73 return is 0003fca0: 49 6e 4a 53 46 69 6c 65 28 6e 6f 64 65 29 20 26 InJSFile(node) & 0003fcb0: 26 20 28 74 73 2e 69 73 42 69 6e 61 72 79 45 78 & (ts.isBinaryEx 0003fcc0: 70 72 65 73 73 69 6f 6e 28 6e 6f 64 65 29 20 26 pression(node) & 0003fcd0: 26 20 67 65 74 41 73 73 69 67 6e 6d 65 6e 74 44 & getAssignmentD 0003fce0: 65 63 6c 61 72 61 74 69 6f 6e 4b 69 6e 64 28 6e eclarationKind(n 0003fcf0: 6f 64 65 29 20 3d 3d 3d 20 32 20 2f 2a 20 41 73 ode) === 2 /* As 0003fd00: 73 69 67 6e 6d 65 6e 74 44 65 63 6c 61 72 61 74 signmentDeclarat 0003fd10: 69 6f 6e 4b 69 6e 64 2e 4d 6f 64 75 6c 65 45 78 ionKind.ModuleEx 0003fd20: 70 6f 72 74 73 20 2a 2f 20 26 26 20 65 78 70 6f ports */ && expo 0003fd30: 72 74 41 73 73 69 67 6e 6d 65 6e 74 49 73 41 6c rtAssignmentIsAl 0003fd40: 69 61 73 28 6e 6f 64 65 29 20 7c 7c 0a 20 20 20 ias(node) ||. 0003fd50: 20 20 20 20 20 20 20 20 20 74 73 2e 69 73 50 72 ts.isPr 0003fd60: 6f 70 65 72 74 79 41 63 63 65 73 73 45 78 70 72 opertyAccessExpr 0003fd70: 65 73 73 69 6f 6e 28 6e 6f 64 65 29 0a 20 20 20 ession(node). 0003fd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 26 26 20 && 0003fd90: 74 73 2e 69 73 42 69 6e 61 72 79 45 78 70 72 65 ts.isBinaryExpre 0003fda0: 73 73 69 6f 6e 28 6e 6f 64 65 2e 70 61 72 65 6e ssion(node.paren 0003fdb0: 74 29 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 t). 0003fdc0: 20 20 20 26 26 20 6e 6f 64 65 2e 70 61 72 65 6e && node.paren 0003fdd0: 74 2e 6c 65 66 74 20 3d 3d 3d 20 6e 6f 64 65 0a t.left === node. 0003fde0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0003fdf0: 26 26 20 6e 6f 64 65 2e 70 61 72 65 6e 74 2e 6f && node.parent.o 0003fe00: 70 65 72 61 74 6f 72 54 6f 6b 65 6e 2e 6b 69 6e peratorToken.kin 0003fe10: 64 20 3d 3d 3d 20 36 33 20 2f 2a 20 53 79 6e 74 d === 63 /* Synt 0003fe20: 61 78 4b 69 6e 64 2e 45 71 75 61 6c 73 54 6f 6b axKind.EqualsTok 0003fe30: 65 6e 20 2a 2f 0a 20 20 20 20 20 20 20 20 20 20 en */. 0003fe40: 20 20 20 20 20 20 26 26 20 69 73 41 6c 69 61 73 && isAlias 0003fe50: 61 62 6c 65 45 78 70 72 65 73 73 69 6f 6e 28 6e ableExpression(n 0003fe60: 6f 64 65 2e 70 61 72 65 6e 74 2e 72 69 67 68 74 ode.parent.right 0003fe70: 29 29 3b 0a 20 20 20 20 7d 0a 20 20 20 20 74 73 ));. }. ts 0003fe80: 2e 69 73 41 6c 69 61 73 53 79 6d 62 6f 6c 44 65 .isAliasSymbolDe 0003fe90: 63 6c 61 72 61 74 69 6f 6e 20 3d 20 69 73 41 6c claration = isAl 0003fea0: 69 61 73 53 79 6d 62 6f 6c 44 65 63 6c 61 72 61 iasSymbolDeclara 0003feb0: 74 69 6f 6e 3b 0a 20 20 20 20 66 75 6e 63 74 69 tion;. functi 0003fec0: 6f 6e 20 67 65 74 41 6c 69 61 73 44 65 63 6c 61 on getAliasDecla 0003fed0: 72 61 74 69 6f 6e 46 72 6f 6d 4e 61 6d 65 28 6e rationFromName(n 0003fee0: 6f 64 65 29 20 7b 0a 20 20 20 20 20 20 20 20 73 ode) {. s 0003fef0: 77 69 74 63 68 20 28 6e 6f 64 65 2e 70 61 72 65 witch (node.pare 0003ff00: 6e 74 2e 6b 69 6e 64 29 20 7b 0a 20 20 20 20 20 nt.kind) {. 0003ff10: 20 20 20 20 20 20 20 63 61 73 65 20 32 36 37 20 case 267 0003ff20: 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 49 6d /* SyntaxKind.Im 0003ff30: 70 6f 72 74 43 6c 61 75 73 65 20 2a 2f 3a 0a 20 portClause */:. 0003ff40: 20 20 20 20 20 20 20 20 20 20 20 63 61 73 65 20 case 0003ff50: 32 37 30 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 270 /* SyntaxKin 0003ff60: 64 2e 49 6d 70 6f 72 74 53 70 65 63 69 66 69 65 d.ImportSpecifie 0003ff70: 72 20 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 r */:. 0003ff80: 20 20 63 61 73 65 20 32 36 38 20 2f 2a 20 53 79 case 268 /* Sy 0003ff90: 6e 74 61 78 4b 69 6e 64 2e 4e 61 6d 65 73 70 61 ntaxKind.Namespa 0003ffa0: 63 65 49 6d 70 6f 72 74 20 2a 2f 3a 0a 20 20 20 ceImport */:. 0003ffb0: 20 20 20 20 20 20 20 20 20 63 61 73 65 20 32 37 case 27 0003ffc0: 35 20 2f 2a 20 53 79 6e 74 61 78 4b 69 6e 64 2e 5 /* SyntaxKind. 0003ffd0: 45 78 70 6f 72 74 53 70 65 63 69 66 69 65 72 20 ExportSpecifier 0003ffe0: 2a 2f 3a 0a 20 20 20 20 20 20 20 20 20 20 20 20 */:. 0003fff0: 63 61 73 65 20 32 37 31 20 2f 2a 20 53 79 6e 74 case 271 /* Synt
Failure:
{
  "type": "action",
  "error": {
    "type": "functionCallError",
    "error": {
      "type": "compilationError",
      "error": {
        "type": "codeDoesNotExist",
        "accountId": "crans.near"
      }
    }
  }
}
No logs
Receipt:
Predecessor ID:
Receiver ID:
Gas Burned:
223 Ggas
Tokens Burned:
0 
Transferred 0.00361  to crans.near
Empty result
No logs