diff --git a/src/com/google/javascript/jscomp/ChromeCodingConvention.java b/src/com/google/javascript/jscomp/ChromeCodingConvention.java index 59c857d6bda..31b84ada1ea 100644 --- a/src/com/google/javascript/jscomp/ChromeCodingConvention.java +++ b/src/com/google/javascript/jscomp/ChromeCodingConvention.java @@ -17,15 +17,16 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; +import com.google.errorprone.annotations.Immutable; import com.google.javascript.jscomp.ClosureCodingConvention.AssertInstanceofSpec; import com.google.javascript.rhino.Node; import com.google.javascript.rhino.jstype.FunctionType; import com.google.javascript.rhino.jstype.ObjectType; import java.util.Collection; -import java.util.Set; -public class ChromeCodingConvention extends CodingConventions.Proxy { - private final Set indirectlyDeclaredProperties; +@Immutable +public final class ChromeCodingConvention extends CodingConventions.Proxy { + private final ImmutableSet indirectlyDeclaredProperties; public ChromeCodingConvention() { this(CodingConventions.getDefault()); diff --git a/src/com/google/javascript/jscomp/ClosureCodingConvention.java b/src/com/google/javascript/jscomp/ClosureCodingConvention.java index d3e0417ae80..b4b0285f585 100644 --- a/src/com/google/javascript/jscomp/ClosureCodingConvention.java +++ b/src/com/google/javascript/jscomp/ClosureCodingConvention.java @@ -19,6 +19,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; +import com.google.errorprone.annotations.Immutable; import com.google.javascript.jscomp.newtypes.DeclaredTypeRegistry; import com.google.javascript.jscomp.newtypes.JSType; import com.google.javascript.jscomp.newtypes.QualifiedName; @@ -32,12 +33,12 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.Set; /** * This describes the Closure-specific JavaScript coding conventions. * */ +@Immutable public final class ClosureCodingConvention extends CodingConventions.Proxy { private static final long serialVersionUID = 1L; @@ -46,7 +47,7 @@ public final class ClosureCodingConvention extends CodingConventions.Proxy { "JSC_REFLECT_OBJECTLIT_EXPECTED", "Object literal expected as second argument"); - private final Set indirectlyDeclaredProperties; + private final ImmutableSet indirectlyDeclaredProperties; public ClosureCodingConvention() { this(CodingConventions.getDefault()); @@ -345,7 +346,7 @@ public boolean isAliasingGlobalThis(Node n) { return CodingConventions.isAliasingGlobalThis(this, n); } - private final Set propertyTestFunctions = ImmutableSet.of( + private final ImmutableSet propertyTestFunctions = ImmutableSet.of( "goog.isDef", "goog.isNull", "goog.isDefAndNotNull", "goog.isString", "goog.isNumber", "goog.isBoolean", "goog.isFunction", "goog.isArray", "goog.isArrayLike", "goog.isObject"); diff --git a/src/com/google/javascript/jscomp/CodingConvention.java b/src/com/google/javascript/jscomp/CodingConvention.java index 1ff54d5be48..fa08d172de6 100644 --- a/src/com/google/javascript/jscomp/CodingConvention.java +++ b/src/com/google/javascript/jscomp/CodingConvention.java @@ -15,6 +15,7 @@ */ package com.google.javascript.jscomp; +import com.google.errorprone.annotations.Immutable; import com.google.javascript.jscomp.newtypes.DeclaredTypeRegistry; import com.google.javascript.jscomp.newtypes.JSType; import com.google.javascript.jscomp.newtypes.RawNominalType; @@ -35,6 +36,7 @@ * Compiler for a specific team/company. * */ +@Immutable public interface CodingConvention extends Serializable { /** diff --git a/src/com/google/javascript/jscomp/CodingConventions.java b/src/com/google/javascript/jscomp/CodingConventions.java index 79c86eddf30..3382322cdea 100644 --- a/src/com/google/javascript/jscomp/CodingConventions.java +++ b/src/com/google/javascript/jscomp/CodingConventions.java @@ -18,6 +18,7 @@ import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; +import com.google.errorprone.annotations.Immutable; import com.google.javascript.jscomp.newtypes.JSType; import com.google.javascript.jscomp.newtypes.RawNominalType; import com.google.javascript.rhino.Node; @@ -83,6 +84,7 @@ static boolean isAliasingGlobalThis(CodingConvention convention, Node n) { * coding convention by creating a jQueryCodingConvention that delegates * to a ClosureCodingConvention that delegates to a DefaultCodingConvention. */ + @Immutable public static class Proxy implements CodingConvention { protected final CodingConvention nextConvention; @@ -330,6 +332,7 @@ public Collection getIndirectlyDeclaredProperties() { * The default coding convention. * Should be at the bottom of all proxy chains. */ + @Immutable private static class DefaultCodingConvention implements CodingConvention { private static final long serialVersionUID = 1L; diff --git a/src/com/google/javascript/jscomp/GoogleCodingConvention.java b/src/com/google/javascript/jscomp/GoogleCodingConvention.java index b543fd9f0f9..6cb2068e911 100644 --- a/src/com/google/javascript/jscomp/GoogleCodingConvention.java +++ b/src/com/google/javascript/jscomp/GoogleCodingConvention.java @@ -16,6 +16,7 @@ package com.google.javascript.jscomp; +import com.google.errorprone.annotations.Immutable; import com.google.javascript.rhino.Node; import com.google.javascript.rhino.StaticSourceFile; import java.util.regex.Matcher; @@ -26,7 +27,8 @@ * Within Google, variable names are semantically significant. * */ -public class GoogleCodingConvention extends CodingConventions.Proxy { +@Immutable +public final class GoogleCodingConvention extends CodingConventions.Proxy { private static final long serialVersionUID = 1L;