private static com.google.javascript.jscomp.parsing.parser.Parser.Config newParserConfig( Config config) { LanguageMode languageMode = config.languageMode(); boolean isStrictMode = config.strictMode().isStrict(); Mode parserConfigLanguageMode = null; switch (languageMode) { case TYPESCRIPT: parserConfigLanguageMode = Mode.TYPESCRIPT; break; case ECMASCRIPT3: parserConfigLanguageMode = Mode.ES3; break; case ECMASCRIPT5: parserConfigLanguageMode = Mode.ES5; break; case ECMASCRIPT6: case ECMASCRIPT7: parserConfigLanguageMode = Mode.ES6_OR_ES7; break; case ECMASCRIPT8: case ECMASCRIPT_2018: parserConfigLanguageMode = Mode.ES8_OR_GREATER; break; case ES_NEXT: parserConfigLanguageMode = Mode.ES_NEXT; break; } return new com.google.javascript.jscomp.parsing.parser.Parser.Config( checkNotNull(parserConfigLanguageMode), isStrictMode); }
private IRFactory(String sourceString, StaticSourceFile sourceFile, Config config, ErrorReporter errorReporter, ImmutableList<Comment> comments) { this.sourceString = sourceString; this.nextCommentIter = comments.iterator(); this.currentComment = skipNonJsDoc(nextCommentIter); this.sourceFile = sourceFile; // The template node properties are applied to all nodes in this transform. this.templateNode = createTemplateNode(); this.fileLevelJsDocBuilder = new JSDocInfoBuilder(config.jsDocParsingMode().shouldParseDescriptions()); // Sometimes this will be null in tests. this.sourceName = sourceFile == null ? null : sourceFile.getName(); this.config = config; this.errorReporter = errorReporter; this.transformDispatcher = new TransformDispatcher(); if (config.strictMode().isStrict()) { reservedKeywords = ES5_STRICT_RESERVED_KEYWORDS; } else if (config.languageMode() == LanguageMode.ECMASCRIPT3) { reservedKeywords = null; // use TokenStream.isKeyword instead } else { reservedKeywords = ES5_RESERVED_KEYWORDS; } }
private boolean inStrictContext() { // TODO(johnlenz): in ECMASCRIPT5/6 is a "mixed" mode and we should track the context // that we are in, if we want to support it. return config.strictMode().isStrict(); }