MCPcopy Index your code
hub / github.com/nodejs/node / isStartOfStatement

Function isStartOfStatement

test/fixtures/snapshot/typescript.js:36202–36255  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

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 */;

Callers 2

isListElementFunction · 0.85

Calls 4

isStartOfDeclarationFunction · 0.85
lookAheadFunction · 0.85
isStartOfExpressionFunction · 0.85
tokenFunction · 0.70

Tested by

no test coverage detected