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