diff --git a/src/com/google/javascript/jscomp/PolymerClassRewriter.java b/src/com/google/javascript/jscomp/PolymerClassRewriter.java index 434cee05a52..07f56fc00bc 100644 --- a/src/com/google/javascript/jscomp/PolymerClassRewriter.java +++ b/src/com/google/javascript/jscomp/PolymerClassRewriter.java @@ -143,7 +143,7 @@ void rewritePolymerCall( if (this.polymerVersion == 1 && !isInGlobalScope && !cls.target.isGetProp()) { Node scriptNode = NodeUtil.getEnclosingScript(parent); scriptNode.addChildrenToFront(statements); - compiler.reportChangeToEnclosingScope(scriptNode); + compiler.reportChangeToChangeScope(scriptNode); } else { Node beforeRoot = exprRoot.getPrevious(); if (beforeRoot == null) { @@ -155,14 +155,16 @@ void rewritePolymerCall( } compiler.reportChangeToEnclosingScope(statements); - // Since behavior files might contain more language features than the class file, we need to - // update the feature sets. - FeatureSet newFeatures = cls.features; - if (newFeatures != null) { + // Since behavior files might contain language features that aren't present in the class file, + // we might need to update the FeatureSet. + if (cls.features != null) { Node scriptNode = NodeUtil.getEnclosingScript(parent); FeatureSet oldFeatures = (FeatureSet) scriptNode.getProp(Node.FEATURE_SET); - scriptNode.putProp(Node.FEATURE_SET, oldFeatures.union(newFeatures)); - compiler.reportChangeToEnclosingScope(scriptNode); + FeatureSet newFeatures = oldFeatures.union(cls.features); + if (!newFeatures.equals(oldFeatures)) { + scriptNode.putProp(Node.FEATURE_SET, newFeatures); + compiler.reportChangeToChangeScope(scriptNode); + } } if (NodeUtil.isNameDeclaration(exprRoot)) { diff --git a/src/com/google/javascript/jscomp/PolymerPassStaticUtils.java b/src/com/google/javascript/jscomp/PolymerPassStaticUtils.java index 846ce38aaef..b928c1d7d87 100644 --- a/src/com/google/javascript/jscomp/PolymerPassStaticUtils.java +++ b/src/com/google/javascript/jscomp/PolymerPassStaticUtils.java @@ -91,8 +91,10 @@ static void quoteListenerAndHostAttributeKeys(Node objLit, AbstractCompiler comp continue; } for (Node keyToQuote : keyNode.getFirstChild().children()) { - keyToQuote.setQuotedString(); - compiler.reportChangeToEnclosingScope(keyToQuote); + if (!keyToQuote.isQuotedString()) { + keyToQuote.setQuotedString(); + compiler.reportChangeToEnclosingScope(keyToQuote); + } } } }