aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2015-11-19 15:14:15 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-11-19 16:47:58 +0000
commit8b1a0947bfd9a059a886c4cc45242ddc2ccec003 (patch)
tree00e5d0ed814126693ac18bf0a11c125342568a94 /src/main/java/com/google
parentd30ae4daafba3d1aad7dd15f988116ecf43a2d7f (diff)
Workaround javac 1.7 bug
-- MOS_MIGRATED_REVID=108243881
Diffstat (limited to 'src/main/java/com/google')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/AnalysisPhaseCompleteEvent.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoCollection.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java6
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/buildevent/ExecutionStartingEvent.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestFilteringCompleteEvent.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/graph/Digraph.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/packages/Attribute.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java4
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java9
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java118
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java3
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/Type.java3
14 files changed, 108 insertions, 69 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisPhaseCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisPhaseCompleteEvent.java
index a876bf0e7c..ab8019ac55 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AnalysisPhaseCompleteEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AnalysisPhaseCompleteEvent.java
@@ -34,7 +34,8 @@ public class AnalysisPhaseCompleteEvent {
public AnalysisPhaseCompleteEvent(Collection<? extends ConfiguredTarget> targets,
int targetsVisited, long timeInMs) {
this.timeInMs = timeInMs;
- this.targets = ImmutableList.copyOf(targets);
+ // Do not remove <ConfiguredTarget>: workaround for Java 7 type inference.
+ this.targets = ImmutableList.<ConfiguredTarget>copyOf(targets);
this.targetsVisited = targetsVisited;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index 53c484c147..85a5555fed 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -546,8 +546,10 @@ public class BuildView {
Collection<ConfiguredTarget> allTargetsToTest = null;
if (testsToRun != null) {
// Determine the subset of configured targets that are meant to be run as tests.
- allTargetsToTest = Lists.newArrayList(
- filterTestsByTargets(configuredTargets, Sets.newHashSet(testsToRun)));
+ // Do not remove <ConfiguredTarget>: workaround for Java 7 type inference.
+ allTargetsToTest =
+ Lists.<ConfiguredTarget>newArrayList(
+ filterTestsByTargets(configuredTargets, Sets.newHashSet(testsToRun)));
}
Set<Artifact> artifactsToBuild = new HashSet<>();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoCollection.java
index 3c988d3c2a..39b1d96f94 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoCollection.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/buildinfo/BuildInfoCollection.java
@@ -29,7 +29,8 @@ public final class BuildInfoCollection {
public BuildInfoCollection(List<? extends Action> actions, List<Artifact> stampedBuildInfo,
List<Artifact> redactedBuildInfo) {
- this.actions = ImmutableList.copyOf(actions);
+ // Do not remove <Action>: workaround for Java 7 type inference.
+ this.actions = ImmutableList.<Action>copyOf(actions);
this.stampedBuildInfo = ImmutableList.copyOf(stampedBuildInfo);
this.redactedBuildInfo = ImmutableList.copyOf(redactedBuildInfo);
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java
index 00cb6f694b..4478e72548 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationCollection.java
@@ -167,7 +167,11 @@ public final class BuildConfigurationCollection {
ListMultimap<? extends SplitTransition<?>, BuildConfiguration> splitTransitionTable) {
this.configuration = configuration;
this.transitionTable = ImmutableMap.copyOf(transitionTable);
- this.splitTransitionTable = ImmutableListMultimap.copyOf(splitTransitionTable);
+ // Do not remove <SplitTransition<?>, BuildConfiguration>:
+ // workaround for Java 7 type inference.
+ this.splitTransitionTable =
+ ImmutableListMultimap.<SplitTransition<?>, BuildConfiguration>copyOf(
+ splitTransitionTable);
}
public Map<? extends Transition, ConfigurationHolder> getTransitionTable() {
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/ExecutionStartingEvent.java b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/ExecutionStartingEvent.java
index 1ebc5e8d3d..14f3e2b3e3 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/ExecutionStartingEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/ExecutionStartingEvent.java
@@ -31,7 +31,8 @@ public class ExecutionStartingEvent {
* @param targets Remaining active targets.
*/
public ExecutionStartingEvent(Collection<? extends TransitiveInfoCollection> targets) {
- this.targets = ImmutableList.copyOf(targets);
+ // Do not remove <TransitiveInfoCollection>: workaround for Java 7 type inference.
+ this.targets = ImmutableList.<TransitiveInfoCollection>copyOf(targets);
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestFilteringCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestFilteringCompleteEvent.java
index dc8415d52c..30e3b253aa 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestFilteringCompleteEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/buildevent/TestFilteringCompleteEvent.java
@@ -42,8 +42,13 @@ public class TestFilteringCompleteEvent {
public TestFilteringCompleteEvent(
Collection<? extends ConfiguredTarget> targets,
Collection<? extends ConfiguredTarget> testTargets) {
- this.targets = ImmutableList.copyOf(targets);
- this.testTargets = testTargets == null ? null : ImmutableList.copyOf(testTargets);
+ // Do not remove <ConfiguredTarget>: workaround for Java 7 type inference.
+ this.targets = ImmutableList.<ConfiguredTarget>copyOf(targets);
+ this.testTargets =
+ testTargets == null
+ ? null
+ // Do not remove <ConfiguredTarget>: workaround for Java 7 type inference.
+ : ImmutableList.<ConfiguredTarget>copyOf(testTargets);
if (testTargets == null) {
return;
}
diff --git a/src/main/java/com/google/devtools/build/lib/graph/Digraph.java b/src/main/java/com/google/devtools/build/lib/graph/Digraph.java
index bc87c9f2a8..c2e7d0d378 100644
--- a/src/main/java/com/google/devtools/build/lib/graph/Digraph.java
+++ b/src/main/java/com/google/devtools/build/lib/graph/Digraph.java
@@ -1060,7 +1060,9 @@ public final class Digraph<T> implements Cloneable {
return unordered;
}
List<Node<T>> result = new ArrayList<>(unordered);
- Collections.sort(result, makeNodeComparator(comparator));
+ // Do not inline this variable: a workaround for Java 7 type inference.
+ Comparator<Node<T>> nodeComparator = makeNodeComparator(comparator);
+ Collections.sort(result, nodeComparator);
return result;
}
diff --git a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
index 06dc3404ce..c2b3eea933 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/Attribute.java
@@ -260,7 +260,8 @@ public final class Attribute implements Comparable<Attribute> {
public AllowedValueSet(Iterable<?> values) {
Preconditions.checkNotNull(values);
Preconditions.checkArgument(!Iterables.isEmpty(values));
- allowedValues = ImmutableSet.copyOf(values);
+ // Do not remove <Object>: workaround for Java 7 type inference.
+ allowedValues = ImmutableSet.<Object>copyOf(values);
}
@Override
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
index ff5ef6089c..87d45b9c92 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java
@@ -75,7 +75,9 @@ public class JavaBinary implements RuleConfiguredTargetFactory {
ruleContext.checkSrcsSamePackage(true);
boolean createExecutable = ruleContext.attributes().get("create_executable", Type.BOOLEAN);
List<TransitiveInfoCollection> deps =
- Lists.newArrayList(common.targetsTreatedAsDeps(ClasspathType.COMPILE_ONLY));
+ // Do not remove <TransitiveInfoCollection>: workaround for Java 7 type inference.
+ Lists.<TransitiveInfoCollection>newArrayList(
+ common.targetsTreatedAsDeps(ClasspathType.COMPILE_ONLY));
semantics.checkRule(ruleContext, common);
String mainClass = semantics.getMainClass(ruleContext, common);
String originalMainClass = mainClass;
diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
index 1612da6c8a..11d0167575 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaCommon.java
@@ -272,7 +272,10 @@ public class JavaCommon {
// We need to check here because there are classes inheriting from this class that implement
// rules that don't have this attribute.
if (ruleContext.attributes().has("exports", BuildType.LABEL_LIST)) {
- return ImmutableList.copyOf(ruleContext.getPrerequisites("exports", Mode.TARGET));
+ // Do not remove <SplitTransition<?>, BuildConfiguration>:
+ // workaround for Java 7 type inference.
+ return ImmutableList.<TransitiveInfoCollection>copyOf(
+ ruleContext.getPrerequisites("exports", Mode.TARGET));
} else {
return ImmutableList.of();
}
@@ -468,7 +471,9 @@ public class JavaCommon {
// We need to check here because there are classes inheriting from this class that implement
// rules that don't have this attribute.
if (ruleContext.attributes().has("runtime_deps", BuildType.LABEL_LIST)) {
- return ImmutableList.copyOf(ruleContext.getPrerequisites("runtime_deps", Mode.TARGET));
+ // Do not remove <TransitiveInfoCollection>: workaround for Java 7 type inference.
+ return ImmutableList.<TransitiveInfoCollection>copyOf(
+ ruleContext.getPrerequisites("runtime_deps", Mode.TARGET));
} else {
return ImmutableList.of();
}
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
index dbbb46ff47..43939049d3 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
@@ -1193,62 +1193,74 @@ public class MethodLibrary {
}
};
- @SkylarkSignature(name = "dict", returnType = Map.class,
- doc =
- "Creates a <a href=\"#modules.dict\">dictionary</a> from an optional positional "
- + "argument and an optional set of keyword arguments. Values from the keyword argument "
- + "will overwrite values from the positional argument if a key appears multiple times. "
- + "Dictionaries are always sorted by their keys",
- optionalPositionals = {
- @Param(name = "args", type = Object.class, defaultValue = "[]",
- doc =
- "Either a dictionary or a list of entries. Entries must be tuples or lists with "
- + "exactly two elements: key, value"),
- },
- extraKeywords = {@Param(name = "kwargs", doc = "Dictionary of additional entries.")},
- useLocation = true)
- private static final BuiltinFunction dict = new BuiltinFunction("dict") {
- @SuppressWarnings("unused")
- public Map<Object, Object> invoke(Object args, Map<Object, Object> kwargs, Location loc)
- throws EvalException {
- Map<Object, Object> result =
- (args instanceof Map<?, ?>)
- ? new LinkedHashMap<>((Map<?, ?>) args) : getMapFromArgs(args, loc);
- result.putAll(kwargs);
- return result;
- }
+ @SkylarkSignature(
+ name = "dict",
+ returnType = Map.class,
+ doc =
+ "Creates a <a href=\"#modules.dict\">dictionary</a> from an optional positional "
+ + "argument and an optional set of keyword arguments. Values from the keyword argument "
+ + "will overwrite values from the positional argument if a key appears multiple times. "
+ + "Dictionaries are always sorted by their keys",
+ optionalPositionals = {
+ @Param(
+ name = "args",
+ type = Object.class,
+ defaultValue = "[]",
+ doc =
+ "Either a dictionary or a list of entries. Entries must be tuples or lists with "
+ + "exactly two elements: key, value"
+ ),
+ },
+ extraKeywords = {@Param(name = "kwargs", doc = "Dictionary of additional entries.")},
+ useLocation = true
+ )
+ private static final BuiltinFunction dict =
+ new BuiltinFunction("dict") {
+ @SuppressWarnings("unused")
+ public Map<Object, Object> invoke(Object args, Map<Object, Object> kwargs, Location loc)
+ throws EvalException {
+ Map<Object, Object> result =
+ (args instanceof Map<?, ?>)
+ // Do not remove <Object, Object>: workaround for Java 7 type inference.
+ ? new LinkedHashMap<Object, Object>((Map<?, ?>) args)
+ : getMapFromArgs(args, loc);
+ result.putAll(kwargs);
+ return result;
+ }
- private Map<Object, Object> getMapFromArgs(Object args, Location loc) throws EvalException {
- Map<Object, Object> result = new LinkedHashMap<>();
- int pos = 0;
- for (Object element : Type.OBJECT_LIST.convert(args, "parameter args in dict()")) {
- List<Object> pair = convertToPair(element, pos, loc);
- result.put(pair.get(0), pair.get(1));
- ++pos;
- }
- return result;
- }
+ private Map<Object, Object> getMapFromArgs(Object args, Location loc) throws EvalException {
+ Map<Object, Object> result = new LinkedHashMap<>();
+ int pos = 0;
+ for (Object element : Type.OBJECT_LIST.convert(args, "parameter args in dict()")) {
+ List<Object> pair = convertToPair(element, pos, loc);
+ result.put(pair.get(0), pair.get(1));
+ ++pos;
+ }
+ return result;
+ }
- private List<Object> convertToPair(Object element, int pos, Location loc)
- throws EvalException {
- try {
- List<Object> tuple = Type.OBJECT_LIST.convert(element, "");
- int numElements = tuple.size();
- if (numElements != 2) {
- throw new EvalException(
- location,
- String.format("Sequence #%d has length %d, but exactly two elements are required",
- pos, numElements));
+ private List<Object> convertToPair(Object element, int pos, Location loc)
+ throws EvalException {
+ try {
+ List<Object> tuple = Type.OBJECT_LIST.convert(element, "");
+ int numElements = tuple.size();
+ if (numElements != 2) {
+ throw new EvalException(
+ location,
+ String.format(
+ "Sequence #%d has length %d, but exactly two elements are required",
+ pos,
+ numElements));
+ }
+ return tuple;
+ } catch (ConversionException e) {
+ throw new EvalException(
+ loc,
+ String.format(
+ "Cannot convert dictionary update sequence element #%d to a sequence", pos));
+ }
}
- return tuple;
- } catch (ConversionException e) {
- throw new EvalException(
- loc,
- String.format(
- "Cannot convert dictionary update sequence element #%d to a sequence", pos));
- }
- }
- };
+ };
@SkylarkSignature(name = "union", objectType = SkylarkNestedSet.class,
returnType = SkylarkNestedSet.class,
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java
index 0ac292854e..547fd3e5b7 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkList.java
@@ -403,7 +403,8 @@ public abstract class SkylarkList implements Iterable<Object>, SkylarkValue {
* Creates a Tuple from an Iterable.
*/
public static Tuple copyOf(Iterable<?> contents) {
- return create(ImmutableList.copyOf(contents));
+ // Do not remove <Object>: workaround for Java 7 type inference.
+ return create(ImmutableList.<Object>copyOf(contents));
}
/**
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java
index b488bcfbf5..678834b760 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkNestedSet.java
@@ -228,7 +228,8 @@ public final class SkylarkNestedSet implements Iterable<Object>, SkylarkValue {
}
public Collection<Object> toCollection() {
- return ImmutableList.copyOf(set.toCollection());
+ // Do not remove <Object>: workaround for Java 7 type inference.
+ return ImmutableList.<Object>copyOf(set.toCollection());
}
public boolean isEmpty() {
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/Type.java b/src/main/java/com/google/devtools/build/lib/syntax/Type.java
index a3d348cd9d..342c9006e1 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/Type.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/Type.java
@@ -622,7 +622,8 @@ public abstract class Type<T> {
} else if (x instanceof List) {
return (List<Object>) x;
} else if (x instanceof Iterable) {
- return ImmutableList.copyOf((Iterable<?>) x);
+ // Do not remove <Object>: workaround for Java 7 type inference.
+ return ImmutableList.<Object>copyOf((Iterable<?>) x);
} else {
throw new ConversionException(this, x, what);
}