()
| 36200 | return lookAhead(isDeclaration); |
| 36201 | } |
| 36202 | function isStartOfStatement() { |
| 36203 | switch (token()) { |
| 36204 | case 59 /* SyntaxKind.AtToken */: |
| 36205 | case 26 /* SyntaxKind.SemicolonToken */: |
| 36206 | case 18 /* SyntaxKind.OpenBraceToken */: |
| 36207 | case 113 /* SyntaxKind.VarKeyword */: |
| 36208 | case 119 /* SyntaxKind.LetKeyword */: |
| 36209 | case 98 /* SyntaxKind.FunctionKeyword */: |
| 36210 | case 84 /* SyntaxKind.ClassKeyword */: |
| 36211 | case 92 /* SyntaxKind.EnumKeyword */: |
| 36212 | case 99 /* SyntaxKind.IfKeyword */: |
| 36213 | case 90 /* SyntaxKind.DoKeyword */: |
| 36214 | case 115 /* SyntaxKind.WhileKeyword */: |
| 36215 | case 97 /* SyntaxKind.ForKeyword */: |
| 36216 | case 86 /* SyntaxKind.ContinueKeyword */: |
| 36217 | case 81 /* SyntaxKind.BreakKeyword */: |
| 36218 | case 105 /* SyntaxKind.ReturnKeyword */: |
| 36219 | case 116 /* SyntaxKind.WithKeyword */: |
| 36220 | case 107 /* SyntaxKind.SwitchKeyword */: |
| 36221 | case 109 /* SyntaxKind.ThrowKeyword */: |
| 36222 | case 111 /* SyntaxKind.TryKeyword */: |
| 36223 | case 87 /* SyntaxKind.DebuggerKeyword */: |
| 36224 | // 'catch' and 'finally' do not actually indicate that the code is part of a statement, |
| 36225 | // however, we say they are here so that we may gracefully parse them and error later. |
| 36226 | // falls through |
| 36227 | case 83 /* SyntaxKind.CatchKeyword */: |
| 36228 | case 96 /* SyntaxKind.FinallyKeyword */: |
| 36229 | return true; |
| 36230 | case 100 /* SyntaxKind.ImportKeyword */: |
| 36231 | return isStartOfDeclaration() || lookAhead(nextTokenIsOpenParenOrLessThanOrDot); |
| 36232 | case 85 /* SyntaxKind.ConstKeyword */: |
| 36233 | case 93 /* SyntaxKind.ExportKeyword */: |
| 36234 | return isStartOfDeclaration(); |
| 36235 | case 131 /* SyntaxKind.AsyncKeyword */: |
| 36236 | case 135 /* SyntaxKind.DeclareKeyword */: |
| 36237 | case 118 /* SyntaxKind.InterfaceKeyword */: |
| 36238 | case 141 /* SyntaxKind.ModuleKeyword */: |
| 36239 | case 142 /* SyntaxKind.NamespaceKeyword */: |
| 36240 | case 152 /* SyntaxKind.TypeKeyword */: |
| 36241 | case 157 /* SyntaxKind.GlobalKeyword */: |
| 36242 | // When these don't start a declaration, they're an identifier in an expression statement |
| 36243 | return true; |
| 36244 | case 123 /* SyntaxKind.PublicKeyword */: |
| 36245 | case 121 /* SyntaxKind.PrivateKeyword */: |
| 36246 | case 122 /* SyntaxKind.ProtectedKeyword */: |
| 36247 | case 124 /* SyntaxKind.StaticKeyword */: |
| 36248 | case 145 /* SyntaxKind.ReadonlyKeyword */: |
| 36249 | // When these don't start a declaration, they may be the start of a class member if an identifier |
| 36250 | // immediately follows. Otherwise they're an identifier in an expression statement. |
| 36251 | return isStartOfDeclaration() || !lookAhead(nextTokenIsIdentifierOrKeywordOnSameLine); |
| 36252 | default: |
| 36253 | return isStartOfExpression(); |
| 36254 | } |
| 36255 | } |
| 36256 | function nextTokenIsBindingIdentifierOrStartOfDestructuring() { |
| 36257 | nextToken(); |
| 36258 | return isBindingIdentifier() || token() === 18 /* SyntaxKind.OpenBraceToken */ || token() === 22 /* SyntaxKind.OpenBracketToken */; |
no test coverage detected