private Parser recordFeatureUsed(Feature feature) { features = features.with(feature); return this; } }
FeatureSet used = FeatureSet.ES3; for (Node script : root.children()) { used = used.with(getScriptFeatures(script));
private Es6RewriteDestructuring(Builder builder) { this.compiler = builder.compiler; this.rewriteMode = builder.rewriteMode; this.astFactory = compiler.createAstFactory(); switch (this.rewriteMode) { case REWRITE_ALL_OBJECT_PATTERNS: this.featuresToTriggerRunningPass = FeatureSet.BARE_MINIMUM.with( Feature.DEFAULT_PARAMETERS, Feature.ARRAY_DESTRUCTURING, Feature.ARRAY_PATTERN_REST, Feature.OBJECT_DESTRUCTURING); // If OBJECT_PATTERN_REST were to be present in featuresToTriggerRunningPass and not the // input language featureSet (such as ES6=>ES5) the pass would be skipped. this.featuresToMarkAsRemoved = featuresToTriggerRunningPass.with(Feature.OBJECT_PATTERN_REST); break; case REWRITE_OBJECT_REST: // TODO(bradfordcsmith): We shouldn't really need to remove default parameters for this // case. this.featuresToTriggerRunningPass = FeatureSet.BARE_MINIMUM.with(Feature.OBJECT_PATTERN_REST); this.featuresToMarkAsRemoved = this.featuresToTriggerRunningPass; break; default: throw new AssertionError( "Es6RewriteDestructuring cannot handle ObjectDestructuringRewriteMode " + this.rewriteMode); } }
/** Adds the given features to a SCRIPT node's FeatureSet property. */ static void addFeatureToScript(Node scriptNode, Feature feature) { checkState(scriptNode.isScript(), scriptNode); FeatureSet currentFeatures = getFeatureSetOfScript(scriptNode); FeatureSet newFeatures = currentFeatures != null ? currentFeatures.with(feature) : FeatureSet.BARE_MINIMUM.with(feature); scriptNode.putProp(Node.FEATURE_SET, newFeatures); } }
/** Reports an illegal getter and returns true if the language mode is too low. */ boolean maybeReportGetter(ParseTree node) { features = features.with(Feature.GETTER); if (config.languageMode() == LanguageMode.ECMASCRIPT3) { errorReporter.error( GETTER_ERROR_MESSAGE, sourceName, lineno(node), 0); return true; } return false; }
/** Reports an illegal setter and returns true if the language mode is too low. */ boolean maybeReportSetter(ParseTree node) { features = features.with(Feature.SETTER); if (config.languageMode() == LanguageMode.ECMASCRIPT3) { errorReporter.error( SETTER_ERROR_MESSAGE, sourceName, lineno(node), 0); return true; } return false; }
private void maybeWarnReservedKeyword(IdentifierToken token) { String identifier = token.value; boolean isIdentifier = false; if (TokenStream.isKeyword(identifier)) { features = features.with(Feature.ES3_KEYWORDS_AS_IDENTIFIERS); isIdentifier = config.languageMode() == LanguageMode.ECMASCRIPT3; } if (reservedKeywords != null && reservedKeywords.contains(identifier)) { features = features.with(Feature.KEYWORDS_AS_PROPERTIES); isIdentifier = config.languageMode() == LanguageMode.ECMASCRIPT3; } if (isIdentifier) { errorReporter.error( "identifier is a reserved word", sourceName, lineno(token.location.start), charno(token.location.start)); } }
void maybeWarnForFeature(Node node, Feature feature) { features = features.with(feature); if (!isSupportedForInputLanguageMode(feature)) { errorReporter.warning( languageFeatureWarningMessage(feature), sourceName, node.getLineno(), node.getCharno()); } }
void maybeWarnForFeature( com.google.javascript.jscomp.parsing.parser.Token token, Feature feature) { features = features.with(feature); if (!isSupportedForInputLanguageMode(feature)) { errorReporter.warning( languageFeatureWarningMessage(feature), sourceName, lineno(token), charno(token)); } }
void maybeWarnForFeature(ParseTree node, Feature feature) { features = features.with(feature); if (!isSupportedForInputLanguageMode(feature)) { errorReporter.warning( languageFeatureWarningMessage(feature), sourceName, lineno(node), charno(node)); } }
void maybeWarnTypeSyntax(ParseTree node, Feature feature) { if (config.languageMode() != LanguageMode.TYPESCRIPT) { errorReporter.warning( "type syntax is only supported in ES6 typed mode: " + feature, sourceName, lineno(node), charno(node)); } features = features.with(feature); recordTypeSyntax(node.location); }
private void maybeWarnKeywordProperty(Node node) { if (TokenStream.isKeyword(node.getString())) { features = features.with(Feature.KEYWORDS_AS_PROPERTIES); if (config.languageMode() == LanguageMode.ECMASCRIPT3) { errorReporter.warning(INVALID_ES3_PROP_NAME, sourceName, node.getLineno(), node.getCharno()); } } }