/
githubmirror
/
babel
Обзор
Документация
Войти
/
githubmirror
/
babel
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
packages/babel-parser/src/parser/index.ts
92 строки
3 KB
liuxingbaoyu
Remove `locations: "packed"` (#18034)
01 июн 2026, 00:36
Не верифицирован
01 июн 2026, 00:36
05eb4be
Код
Авторство
О чём код?
import type * as N from "../types.ts"; import { getOptions, OptionFlags } from "../options.ts"; import StatementParser from "./statement.ts"; import ScopeHandler from "../util/scope.ts"; import type { ParserOptions, ParseResult, File } from "@babel/parser"; export type PluginsMap = Map<string, Record<string, any>>; export default class Parser extends StatementParser { constructor( options: ParserOptions | undefined | null, input: string, pluginsMap: PluginsMap, ) { const normalizedOptions = getOptions(options); super(normalizedOptions, input); this.options = normalizedOptions; this.initializeScopes(); this.plugins = pluginsMap; this.filename = normalizedOptions.sourceFilename; this.startIndex = normalizedOptions.startIndex; let optionFlags = 0; if (normalizedOptions.allowAwaitOutsideFunction) { optionFlags |= OptionFlags.AllowAwaitOutsideFunction; } if (normalizedOptions.allowReturnOutsideFunction) { optionFlags |= OptionFlags.AllowReturnOutsideFunction; } if (normalizedOptions.allowImportExportEverywhere) { optionFlags |= OptionFlags.AllowImportExportEverywhere; } if (normalizedOptions.allowSuperOutsideMethod) { optionFlags |= OptionFlags.AllowSuperOutsideMethod; } if (normalizedOptions.allowUndeclaredExports) { optionFlags |= OptionFlags.AllowUndeclaredExports; } if (normalizedOptions.allowNewTargetOutsideFunction) { optionFlags |= OptionFlags.AllowNewTargetOutsideFunction; } if (normalizedOptions.allowYieldOutsideFunction) { optionFlags |= OptionFlags.AllowYieldOutsideFunction; } if (normalizedOptions.ranges) { optionFlags |= OptionFlags.Ranges; } if (normalizedOptions.locations === true) { optionFlags |= OptionFlags.Locations; } if (normalizedOptions.tokens) { optionFlags |= OptionFlags.Tokens; } if (normalizedOptions.createImportExpressions) { optionFlags |= OptionFlags.CreateImportExpressions; } if (normalizedOptions.createParenthesizedExpressions) { optionFlags |= OptionFlags.CreateParenthesizedExpressions; } if (normalizedOptions.errorRecovery) { optionFlags |= OptionFlags.ErrorRecovery; } if (normalizedOptions.attachComment) { optionFlags |= OptionFlags.AttachComment; } if (normalizedOptions.annexB) { optionFlags |= OptionFlags.AnnexB; } this.optionFlags = optionFlags; } // This can be overwritten, for example, by the TypeScript plugin. getScopeHandler(): new (...args: any) => ScopeHandler { return ScopeHandler; } parse(): ParseResult<File> { this.enterInitialScopes(); const file = this.startNode<N.File>(); const program = this.startNode<N.Program>(); this.nextToken(); // @ts-expect-error "errors" does not exist on type "File" file.errors = []; const result = this.parseTopLevel(file, program) as ParseResult<File>; result.errors = this.state.errors; // @ts-expect-error todo: check if comments exist when `options.attachComment` is false result.comments.length = this.state.commentsLen; return result; } }