bazel: turn unchecked/rawtypes warnings into errors
...in analysis, packages, skyframe directories.
Also, fix or suppress all existing violations.
See[]
PiperOrigin-RevId: 278441648
diff --git a/src/main/java/com/google/devtools/build/lib/actions/Actions.java b/src/main/java/com/google/devtools/build/lib/actions/Actions.java
index 1726fc9..ca6c2d2 100644
--- a/src/main/java/com/google/devtools/build/lib/actions/Actions.java
+++ b/src/main/java/com/google/devtools/build/lib/actions/Actions.java
@@ -327,7 +327,7 @@
}
// Keep deterministic ordering of bad actions.
- Map<ActionAnalysisMetadata, ArtifactPrefixConflictException> badActions = new LinkedHashMap();
+ Map<ActionAnalysisMetadata, ArtifactPrefixConflictException> badActions = new LinkedHashMap<>();
Iterator<PathFragment> iter = artifactPathMap.keySet().iterator();
// Report an error for every derived artifact which is a prefix of another.
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AspectCompleteEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/AspectCompleteEvent.java
index 007531e..a93111c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AspectCompleteEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AspectCompleteEvent.java
@@ -57,7 +57,7 @@
this.aspectValue = aspectValue;
this.rootCauses =
(rootCauses == null) ? NestedSetBuilder.<Cause>emptySet(Order.STABLE_ORDER) : rootCauses;
- ImmutableList.Builder postedAfterBuilder = ImmutableList.builder();
+ ImmutableList.Builder<BuildEventId> postedAfterBuilder = ImmutableList.builder();
for (Cause cause : getRootCauses()) {
postedAfterBuilder.add(BuildEventId.fromCause(cause));
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/AspectConfiguredEvent.java b/src/main/java/com/google/devtools/build/lib/analysis/AspectConfiguredEvent.java
index ffee316..e54b211 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/AspectConfiguredEvent.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/AspectConfiguredEvent.java
@@ -58,7 +58,7 @@
@Override
public Collection<BuildEventId> getChildrenEvents() {
- ImmutableList.Builder childrenBuilder = ImmutableList.builder();
+ ImmutableList.Builder<BuildEventId> childrenBuilder = ImmutableList.builder();
for (BuildConfiguration config : configurations) {
if (config != null) {
childrenBuilder.add(BuildEventId.targetCompleted(target, config.getEventId()));
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java b/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java
index 778c20b..a168439 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/DefaultInfo.java
@@ -19,7 +19,6 @@
import com.google.devtools.build.lib.packages.BuiltinProvider;
import com.google.devtools.build.lib.packages.NativeInfo;
import com.google.devtools.build.lib.skylarkbuildapi.DefaultInfoApi;
-import com.google.devtools.build.lib.skylarkbuildapi.FilesToRunProviderApi;
import com.google.devtools.build.lib.syntax.EvalException;
import com.google.devtools.build.lib.syntax.Runtime;
import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
@@ -83,7 +82,7 @@
}
@Override
- public FilesToRunProviderApi getFilesToRun() {
+ public FilesToRunProvider getFilesToRun() {
return filesToRunProvider;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderEffectiveClassHelper.java b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderEffectiveClassHelper.java
index bc3ef54..d572e82 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderEffectiveClassHelper.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderEffectiveClassHelper.java
@@ -53,7 +53,7 @@
} else if (TransitiveInfoProvider.class.isAssignableFrom(clazz)) {
result.addAll(
getDirectImplementations(
- (Class<? extends TransitiveInfoProvider>) clazz));
+ clazz.asSubclass(TransitiveInfoProvider.class)));
}
}
@@ -62,7 +62,7 @@
&& TransitiveInfoProvider.class.isAssignableFrom(superclass)) {
result.addAll(
getDirectImplementations(
- (Class<? extends TransitiveInfoProvider>) superclass));
+ superclass.asSubclass(TransitiveInfoProvider.class)));
}
return result;
}
@@ -83,10 +83,12 @@
});
// TODO(arielb): see if these can be made private?
+ @SuppressWarnings("unchecked")
static <T extends TransitiveInfoProvider> Class<T> get(T provider) {
return get((Class<T>) provider.getClass());
}
+ @SuppressWarnings("unchecked")
static <T extends TransitiveInfoProvider> Class<T> get(Class<T> providerClass) {
return (Class<T>) EFFECTIVE_PROVIDER_CLASS_CACHE.getUnchecked(providerClass);
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapBuilder.java b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapBuilder.java
index 1eb6640..3d87e47 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapBuilder.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/TransitiveInfoProviderMapBuilder.java
@@ -101,7 +101,7 @@
@Nullable
public <P extends TransitiveInfoProvider> P getProvider(Class<P> providerClass) {
- return (P) providers.get(providerClass);
+ return providerClass.cast(providers.get(providerClass));
}
@Nullable
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/ProtoDeterministicWriter.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/ProtoDeterministicWriter.java
index 41a4fa2..39ad794 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/ProtoDeterministicWriter.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/ProtoDeterministicWriter.java
@@ -24,7 +24,7 @@
private final MessageSupplier messageSupplier;
/** Constructs a {@link ProtoDeterministicWriter} with an eagerly constructed message. */
- public ProtoDeterministicWriter(AbstractMessageLite message) {
+ public ProtoDeterministicWriter(AbstractMessageLite<?, ?> message) {
this.messageSupplier = () -> message;
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/StarlarkDefinedConfigTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/StarlarkDefinedConfigTransition.java
index dd9f39c..539dd82 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/StarlarkDefinedConfigTransition.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/StarlarkDefinedConfigTransition.java
@@ -204,6 +204,7 @@
*/
// TODO(bazel-team): integrate dict-of-dicts return type with ctx.split_attr
@Override
+ @SuppressWarnings("rawtypes")
public ImmutableList<Map<String, Object>> evaluate(
Map<String, Object> previousSettings, StructImpl attributeMapper)
throws EvalException, InterruptedException {
@@ -214,8 +215,8 @@
throw new EvalException(impl.getLocation(), e.getMessage());
}
- if (result instanceof SkylarkDict<?, ?>) {
- // If we're recieving an empty dictionary, it's an error. Even if a
+ if (result instanceof SkylarkDict) {
+ // If we're receiving an empty dictionary, it's an error. Even if a
// transition function sometimes evaluates to a no-op, it needs to return the passed in
// settings. Return early for now since better error reporting will happen in
// {@link FunctionTransitionUtil#validateFunctionOutputsMatchesDeclaredOutputs}
@@ -225,14 +226,16 @@
// TODO(bazel-team): integrate keys with ctx.split_attr. Currently ctx.split_attr always
// keys on cpu value - we should be able to key on the keys returned here.
try {
+ @SuppressWarnings("rawtypes")
Map<String, SkylarkDict> dictOfDict =
((SkylarkDict<?, ?>) result)
.getContents(
String.class, SkylarkDict.class, "dictionary of options dictionaries");
ImmutableList.Builder<Map<String, Object>> builder = ImmutableList.builder();
- for (Map.Entry<String, SkylarkDict> entry : dictOfDict.entrySet()) {
+ for (Map.Entry<String, SkylarkDict> entry : dictOfDict.entrySet()) { // rawtypes error
Map<String, Object> dict =
- entry.getValue().getContents(String.class, Object.class, "an option dictionary");
+ ((SkylarkDict<?, ?>) entry.getValue())
+ .getContents(String.class, Object.class, "an option dictionary");
builder.add(dict);
}
return builder.build();
@@ -246,7 +249,7 @@
} catch (EvalException e) {
throw new EvalException(impl.getLocation(), e.getMessage());
}
- } else if (result instanceof SkylarkList<?>) {
+ } else if (result instanceof SkylarkList) {
ImmutableList.Builder<Map<String, Object>> builder = ImmutableList.builder();
try {
for (SkylarkDict<?, ?> toOptions :
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionFactories.java b/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionFactories.java
index f5db821..38e5e01 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionFactories.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/TransitionFactories.java
@@ -38,7 +38,7 @@
} else if (transition instanceof SplitTransition) {
return split((SplitTransition) transition);
}
- return new AutoValue_TransitionFactories_IdentityFactory(transition);
+ return new AutoValue_TransitionFactories_IdentityFactory<T>(transition);
}
/** Returns a {@link TransitionFactory} that wraps a static split transition. */
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingTransitionFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingTransitionFactory.java
index bf9f3e9..c550d45 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingTransitionFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/config/transitions/ComposingTransitionFactory.java
@@ -74,7 +74,7 @@
private static <T> TransitionFactory<T> create(
TransitionFactory<T> transitionFactory1, TransitionFactory<T> transitionFactory2) {
- return new AutoValue_ComposingTransitionFactory(transitionFactory1, transitionFactory2);
+ return new AutoValue_ComposingTransitionFactory<T>(transitionFactory1, transitionFactory2);
}
abstract TransitionFactory<T> transitionFactory1();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/PackageGroupConfiguredTarget.java b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/PackageGroupConfiguredTarget.java
index 4efadf6..bf5df35 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/PackageGroupConfiguredTarget.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/configuredtargets/PackageGroupConfiguredTarget.java
@@ -98,7 +98,7 @@
@Override
public <P extends TransitiveInfoProvider> P getProvider(Class<P> provider) {
if (provider == FileProvider.class) {
- return (P) NO_FILES;
+ return provider.cast(NO_FILES); // can't fail
} else {
return super.getProvider(provider);
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
index 9299346..9988ca8 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkActionFactory.java
@@ -281,7 +281,7 @@
@Override
public void run(
- SkylarkList outputs,
+ SkylarkList<?> outputs,
Object inputs,
Object unusedInputsList,
Object executableUnchecked,
@@ -298,7 +298,7 @@
context.checkMutable("actions.run");
StarlarkAction.Builder builder = new StarlarkAction.Builder();
- SkylarkList argumentsList = ((SkylarkList) arguments);
+ SkylarkList<?> argumentsList = ((SkylarkList) arguments);
buildCommandLine(builder, argumentsList);
if (executableUnchecked instanceof Artifact) {
Artifact executable = (Artifact) executableUnchecked;
@@ -367,7 +367,7 @@
@Override
public void runShell(
- SkylarkList outputs,
+ SkylarkList<?> outputs,
Object inputs,
Object toolsUnchecked,
Object arguments,
@@ -383,7 +383,7 @@
throws EvalException {
context.checkMutable("actions.run_shell");
- SkylarkList argumentList = (SkylarkList) arguments;
+ SkylarkList<?> argumentList = (SkylarkList) arguments;
StarlarkAction.Builder builder = new StarlarkAction.Builder();
buildCommandLine(builder, argumentList);
@@ -416,12 +416,11 @@
+ " is deprecated. To temporarily disable this check,"
+ " set --incompatible_objc_framework_cleanup=false.");
}
- SkylarkList commandList = (SkylarkList) commandUnchecked;
+ SkylarkList<?> commandList = (SkylarkList) commandUnchecked;
if (argumentList.size() > 0) {
throw new EvalException(location,
"'arguments' must be empty if 'command' is a sequence of strings");
}
- @SuppressWarnings("unchecked")
List<String> command = commandList.getContents(String.class, "command");
builder.setShellCommand(command);
} else {
@@ -452,7 +451,7 @@
builder);
}
- private void buildCommandLine(SpawnAction.Builder builder, SkylarkList argumentsList)
+ private static void buildCommandLine(SpawnAction.Builder builder, SkylarkList<?> argumentsList)
throws EvalException {
List<String> stringArgs = new ArrayList<>();
for (Object value : argumentsList) {
@@ -484,7 +483,7 @@
* <p>{@code builder} should have either executable or a command set.
*/
private void registerStarlarkAction(
- SkylarkList outputs,
+ SkylarkList<?> outputs,
Object inputs,
Object unusedInputsList,
Object toolsUnchecked,
@@ -499,7 +498,7 @@
throws EvalException {
Iterable<Artifact> inputArtifacts;
if (inputs instanceof SkylarkList) {
- inputArtifacts = ((SkylarkList) inputs).getContents(Artifact.class, "inputs");
+ inputArtifacts = ((SkylarkList<?>) inputs).getContents(Artifact.class, "inputs");
builder.addInputs(inputArtifacts);
} else {
NestedSet<Artifact> inputSet =
@@ -508,7 +507,6 @@
inputArtifacts = inputSet;
}
- @SuppressWarnings("unchecked")
List<Artifact> outputArtifacts = outputs.getContents(Artifact.class, "outputs");
if (outputArtifacts.isEmpty()) {
throw new EvalException(location, "param 'outputs' may not be empty");
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
index ef2a8c2..7a16632 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttr.java
@@ -31,6 +31,7 @@
import com.google.devtools.build.lib.packages.Attribute.AllowedValueSet;
import com.google.devtools.build.lib.packages.Attribute.ImmutableAttributeFactory;
import com.google.devtools.build.lib.packages.Attribute.SkylarkComputedDefaultTemplate;
+import com.google.devtools.build.lib.packages.AttributeTransitionData;
import com.google.devtools.build.lib.packages.AttributeValueSource;
import com.google.devtools.build.lib.packages.BazelStarlarkContext;
import com.google.devtools.build.lib.packages.BuildType;
@@ -116,6 +117,7 @@
return createAttribute(type, doc, arguments, ast, thread, name).buildPartial();
}
+ @SuppressWarnings("unchecked")
private static Attribute.Builder<?> createAttribute(
Type<?> type,
String doc,
@@ -144,7 +146,7 @@
new SkylarkComputedDefaultTemplate(
type, callback.getParameterNames(), callback, ast.getLocation()));
} else if (defaultValue instanceof SkylarkLateBoundDefault) {
- builder.value((SkylarkLateBoundDefault) defaultValue);
+ builder.value((SkylarkLateBoundDefault) defaultValue); // unchecked cast
} else {
builder.defaultValue(
defaultValue,
@@ -271,7 +273,7 @@
} else if (trans instanceof SplitTransition) {
builder.cfg(TransitionFactories.of((SplitTransition) trans));
} else if (trans instanceof TransitionFactory) {
- builder.cfg((TransitionFactory) trans);
+ builder.cfg((TransitionFactory<AttributeTransitionData>) trans); // unchecked cast
} else if (trans instanceof StarlarkDefinedConfigTransition) {
StarlarkDefinedConfigTransition starlarkDefinedTransition =
(StarlarkDefinedConfigTransition) trans;
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttributesCollection.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttributesCollection.java
index 558b6a2..5077f53 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttributesCollection.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkAttributesCollection.java
@@ -146,6 +146,7 @@
this.context = ruleContext;
}
+ @SuppressWarnings("unchecked")
public void addAttribute(Attribute a, Object val) {
Type<?> type = a.getType();
String skyname = a.getPublicName();
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCustomCommandLine.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCustomCommandLine.java
index bfacc14..03d961f 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCustomCommandLine.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkCustomCommandLine.java
@@ -192,6 +192,7 @@
BaseFunction mapEach =
((features & HAS_MAP_EACH) != 0) ? (BaseFunction) arguments.get(argi++) : null;
if ((features & IS_NESTED_SET) != 0) {
+ @SuppressWarnings("unchecked")
NestedSet<Object> nestedSet = (NestedSet<Object>) arguments.get(argi++);
originalValues = nestedSet.toList();
} else {
@@ -218,7 +219,7 @@
location,
null));
}
- List resultAsList = (List) result;
+ List<?> resultAsList = (List) result;
if (resultAsList.size() != expandedValues.size()) {
throw new CommandLineExpansionException(
errorMessage(
@@ -382,7 +383,7 @@
BaseFunction mapEach =
((features & HAS_MAP_EACH) != 0) ? (BaseFunction) arguments.get(argi++) : null;
if ((features & IS_NESTED_SET) != 0) {
- NestedSet<Object> values = (NestedSet<Object>) arguments.get(argi++);
+ NestedSet<?> values = (NestedSet) arguments.get(argi++);
if (mapEach != null) {
CommandLineItem.MapFn<Object> commandLineItemMapFn =
new CommandLineItemMapEachAdaptor(mapEach, location, starlarkSemantics);
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkLateBoundDefault.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkLateBoundDefault.java
index 63bd132..8c26b50 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkLateBoundDefault.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkLateBoundDefault.java
@@ -58,7 +58,6 @@
@Override
public Label resolve(Rule rule, AttributeMap attributes, FragmentT config) {
- Class<?> fragmentClass = config.getClass();
try {
Object result = method.invoke(config);
return (Label) result;
@@ -224,26 +223,24 @@
});
/**
- * Returns a {@link LateBoundDefault} which obtains a late-bound attribute value
- * (of type 'label') specifically by skylark configuration fragment name and field name, as
- * registered by {@link SkylarkConfigurationField}.
+ * Returns a {@link LateBoundDefault} which obtains a late-bound attribute value (of type 'label')
+ * specifically by skylark configuration fragment name and field name, as registered by {@link
+ * SkylarkConfigurationField}.
*
* @param fragmentClass the configuration fragment class, which must have a valid skylark name
- * @param fragmentFieldName the configuration field name, as registered by
- * {@link SkylarkConfigurationField} annotation
+ * @param fragmentFieldName the configuration field name, as registered by {@link
+ * SkylarkConfigurationField} annotation
* @param toolsRepository the Bazel tools repository path fragment
- *
* @throws InvalidConfigurationFieldException if there is no valid configuration field with the
* given fragment class and field name
*/
+ @SuppressWarnings("unchecked")
public static <FragmentT> SkylarkLateBoundDefault<FragmentT> forConfigurationField(
- Class<FragmentT> fragmentClass,
- String fragmentFieldName,
- String toolsRepository) throws InvalidConfigurationFieldException {
+ Class<FragmentT> fragmentClass, String fragmentFieldName, String toolsRepository)
+ throws InvalidConfigurationFieldException {
try {
CacheKey cacheKey = new CacheKey(fragmentClass, toolsRepository);
- SkylarkLateBoundDefault resolver =
- fieldCache.get(cacheKey).get(fragmentFieldName);
+ SkylarkLateBoundDefault<?> resolver = fieldCache.get(cacheKey).get(fragmentFieldName);
if (resolver == null) {
SkylarkModule moduleAnnotation = SkylarkInterfaceUtils.getSkylarkModule(fragmentClass);
if (moduleAnnotation == null) {
@@ -253,7 +250,7 @@
String.format("invalid configuration field name '%s' on fragment '%s'",
fragmentFieldName, moduleAnnotation.name()));
}
- return resolver;
+ return (SkylarkLateBoundDefault<FragmentT>) resolver; // unchecked cast
} catch (ExecutionException e) {
throw new IllegalStateException("method invocation failed: " + e);
}
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
index 52a5c8b..a481b98 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleClassFunctions.java
@@ -270,8 +270,6 @@
// TODO(bazel-team): implement attribute copy and other rule properties
@Override
- @SuppressWarnings({"rawtypes", "unchecked"}) // castMap produces
- // an Attribute.Builder instead of a Attribute.Builder<?> but it's OK.
public BaseFunction rule(
StarlarkFunction implementation,
Boolean test,
@@ -663,6 +661,7 @@
}
}
+ @SuppressWarnings("unchecked")
BuildLangTypedAttributeValuesMap attributeValues =
new BuildLangTypedAttributeValuesMap((Map<String, Object>) args[0]);
try {
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java
index 1cd9136..afb841c 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleConfiguredTargetUtil.java
@@ -349,7 +349,7 @@
oldStyleProviders = struct;
if (struct.hasField("providers")) {
- Iterable iterable = cast("providers", struct, Iterable.class, loc);
+ Iterable<?> iterable = cast("providers", struct, Iterable.class, loc);
for (Object o : iterable) {
InfoInterface declaredProvider =
SkylarkType.cast(
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
index 63d4a71..5196387 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/SkylarkRuleContext.java
@@ -783,7 +783,7 @@
private static <T> T assertTypeForNewFile(Object obj, Class<T> type, Location loc,
String errorMessage) throws EvalException {
if (type.isInstance(obj)) {
- return (T) obj;
+ return type.cast(obj);
} else {
throw new EvalException(loc, errorMessage);
}
@@ -876,7 +876,7 @@
*/
@Override
public Runtime.NoneType action(
- SkylarkList outputs,
+ SkylarkList<?> outputs,
Object inputs,
Object executableUnchecked,
Object toolsUnchecked,
@@ -937,7 +937,8 @@
@Override
public String expandLocation(
- String input, SkylarkList targets, Location loc, StarlarkThread thread) throws EvalException {
+ String input, SkylarkList<?> targets, Location loc, StarlarkThread thread)
+ throws EvalException {
checkMutable("expand_location");
try {
return LocationExpander.withExecPaths(
@@ -986,7 +987,7 @@
@Override
public Runfiles runfiles(
- SkylarkList files,
+ SkylarkList<?> files,
Object transitiveFiles,
Boolean collectData,
Boolean collectDefault,
@@ -1040,7 +1041,7 @@
Object attributeUnchecked,
Boolean expandLocations,
Object makeVariablesUnchecked,
- SkylarkList tools,
+ SkylarkList<?> tools,
SkylarkDict<?, ?> labelDictUnchecked,
SkylarkDict<?, ?> executionRequirementsUnchecked,
Location loc,
@@ -1095,7 +1096,7 @@
}
@Override
- public Tuple<Object> resolveTools(SkylarkList tools) throws ConversionException, EvalException {
+ public Tuple<Object> resolveTools(SkylarkList<?> tools) throws EvalException {
checkMutable("resolve_tools");
CommandHelper helper =
CommandHelper.builder(getRuleContext())
@@ -1116,7 +1117,6 @@
* Returns a corresponding map where any sets are replaced by iterables.
*/
// TODO(bazel-team): find a better way to typecheck this argument.
- @SuppressWarnings("unchecked")
private static Map<Label, Iterable<Artifact>> checkLabelDict(
Map<?, ?> labelDict, Location loc, StarlarkThread thread) throws EvalException {
Map<Label, Iterable<Artifact>> convertedMap = new HashMap<>();
diff --git a/src/main/java/com/google/devtools/build/lib/collect/compacthashmap/CompactHashMap.java b/src/main/java/com/google/devtools/build/lib/collect/compacthashmap/CompactHashMap.java
index 2cf2a62..ce13579 100644
--- a/src/main/java/com/google/devtools/build/lib/collect/compacthashmap/CompactHashMap.java
+++ b/src/main/java/com/google/devtools/build/lib/collect/compacthashmap/CompactHashMap.java
@@ -563,6 +563,7 @@
}
@Override
+ @SuppressWarnings("unchecked") // keys/values only contains Ks/Vs
public void replaceAll(BiFunction<? super K, ? super V, ? extends V> function) {
checkNotNull(function);
for (int i = 0; i < size; i++) {
@@ -641,6 +642,7 @@
}
@Override
+ @SuppressWarnings("unchecked") // keys/values contains only Ks/Vs
public void forEach(BiConsumer<? super K, ? super V> action) {
checkNotNull(action);
for (int i = firstEntryIndex(); i >= 0; i = getSuccessor(i)) {
@@ -817,6 +819,7 @@
}
@Override
+ @SuppressWarnings("unchecked") // values contains only Vs
public void forEach(Consumer<? super V> action) {
checkNotNull(action);
for (int i = firstEntryIndex(); i >= 0; i = getSuccessor(i)) {
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 79a5ec5..89201b3 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
@@ -2204,7 +2204,7 @@
*/
public ImmutableList<Aspect> getAspects(Rule rule) {
ImmutableList.Builder<Aspect> builder = null;
- for (RuleAspect aspect : aspects) {
+ for (RuleAspect<?> aspect : aspects) {
Aspect a = aspect.getAspect(rule);
if (a != null) {
if (builder == null) {
diff --git a/src/main/java/com/google/devtools/build/lib/packages/ConfiguredAttributeMapper.java b/src/main/java/com/google/devtools/build/lib/packages/ConfiguredAttributeMapper.java
index ffa6b65..b8c59f9 100644
--- a/src/main/java/com/google/devtools/build/lib/packages/ConfiguredAttributeMapper.java
+++ b/src/main/java/com/google/devtools/build/lib/packages/ConfiguredAttributeMapper.java
@@ -89,10 +89,11 @@
}
/**
- * Variation of {@link #get} that throws an informative exception if the attribute
- * can't be resolved due to intrinsic contradictions in the configuration.
+ * Variation of {@link #get} that throws an informative exception if the attribute can't be
+ * resolved due to intrinsic contradictions in the configuration.
*/
- private <T> T getAndValidate(String attributeName, Type<T> type) throws EvalException {
+ @SuppressWarnings("unchecked")
+ private <T> T getAndValidate(String attributeName, Type<T> type) throws EvalException {
SelectorList<T> selectorList = getSelectorList(attributeName, type);
if (selectorList == null) {
// This is a normal attribute.
@@ -109,7 +110,7 @@
// do that anyway, so that isn't a loss.
Attribute attr = getAttributeDefinition(attributeName);
Verify.verify(attr.getCondition() == Predicates.<AttributeMap>alwaysTrue());
- resolvedList.add((T) attr.getDefaultValue(null));
+ resolvedList.add((T) attr.getDefaultValue(null)); // unchecked cast
} else {
resolvedList.add(resolvedPath.value);
}
diff --git a/src/main/java/com/google/devtools/build/lib/rules/repository/ResolvedFileFunction.java b/src/main/java/com/google/devtools/build/lib/rules/repository/ResolvedFileFunction.java
index 7068a15..58a0ae0 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/repository/ResolvedFileFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/repository/ResolvedFileFunction.java
@@ -106,7 +106,7 @@
}
ImmutableMap.Builder<String, Object> entryBuilder
= new ImmutableMap.Builder<String, Object>();
- for (Map.Entry<Object, Object> keyValue : ((Map<Object, Object>) entry).entrySet()) {
+ for (Map.Entry<?, ?> keyValue : ((Map<?, ?>) entry).entrySet()) {
Object attribute = keyValue.getKey();
if (!(attribute instanceof String)) {
throw resolvedValueError(
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/PerBuildSyscallCache.java b/src/main/java/com/google/devtools/build/lib/skyframe/PerBuildSyscallCache.java
index 335d6eb..7afb652 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/PerBuildSyscallCache.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/PerBuildSyscallCache.java
@@ -95,12 +95,13 @@
}
@Override
+ @SuppressWarnings("unchecked")
public Collection<Dirent> readdir(Path path) throws IOException {
Object result = readdirCache.getUnchecked(path);
if (result instanceof IOException) {
throw (IOException) result;
}
- return (Collection<Dirent>) result;
+ return (Collection<Dirent>) result; // unchecked cast
}
@Override
@@ -114,12 +115,13 @@
}
@Override
+ @SuppressWarnings("unchecked")
public Dirent.Type getType(Path path, Symlinks symlinks) throws IOException {
// Use a cached stat call if we have one. This is done first so that we don't need to iterate
// over a list of directory entries as we do for cached readdir() entries. We don't ever expect
// to get a cache hit if symlinks == Symlinks.NOFOLLOW and so we don't bother to check.
if (symlinks == Symlinks.FOLLOW) {
- Pair key = Pair.of(path, symlinks);
+ Pair<Path, Symlinks> key = Pair.of(path, symlinks);
Object result = statCache.getIfPresent(key);
if (result != null && !(result instanceof IOException)) {
if (result == NO_STATUS) {
@@ -144,7 +146,7 @@
// stat.
Object result = readdirCache.getIfPresent(parent);
if (result != null && !(result instanceof IOException)) {
- for (Dirent dirent : (Collection<Dirent>) result) {
+ for (Dirent dirent : (Collection<Dirent>) result) { // unchecked cast
// TODO(djasper): Dealing with filesystem case is a bit of a code smell. Figure out a better
// way to store Dirents, e.g. with names normalized.
if (path.getFileSystem().isFilePathCaseSensitive()
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValueRootPackageExtractor.java b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValueRootPackageExtractor.java
index b5e4821..990a39e 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValueRootPackageExtractor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/RecursivePkgValueRootPackageExtractor.java
@@ -42,7 +42,7 @@
ImmutableSet<PathFragment> blacklistedSubdirectories,
ImmutableSet<PathFragment> excludedSubdirectories)
throws InterruptedException {
- ImmutableSet filteredBlacklistedSubdirectories =
+ ImmutableSet<PathFragment> filteredBlacklistedSubdirectories =
ImmutableSet.copyOf(
Iterables.filter(
blacklistedSubdirectories,
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
index b9a54a9..d753cdc 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java
@@ -726,7 +726,7 @@
// We evaluate in keepGoing mode because in the case that the graph does not store its
// edges, nokeepGoing builds are not allowed, whereas keepGoing builds are always
// permitted.
- EvaluationResult result =
+ EvaluationResult<?> result =
evaluate(
ImmutableList.of(key), true, ResourceUsage.getAvailableProcessors(), eventHandler);
if (!result.hasError()) {
@@ -1409,7 +1409,6 @@
return starlarkSemanticsOptions.toSkylarkSemantics();
}
- @SuppressWarnings("unchecked")
private void setPackageLocator(PathPackageLocator pkgLocator) {
EventBus eventBus = this.eventBus.get();
if (eventBus != null) {
@@ -3023,4 +3022,3 @@
return buildDriver.evaluate(roots, evaluationContext);
}
}
-
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java
index 8563e38..9b9129b 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkAspectFactory.java
@@ -147,7 +147,7 @@
addOutputGroups(struct.getValue(field), loc, builder);
} else if (field.equals("providers")) {
Object value = struct.getValue(field);
- Iterable providers =
+ Iterable<?> providers =
SkylarkType.cast(
value,
Iterable.class,
@@ -170,8 +170,8 @@
return configuredAspect;
}
- private void addDeclaredProviders(ConfiguredAspect.Builder builder, Iterable aspectSkylarkObject)
- throws EvalException {
+ private void addDeclaredProviders(
+ ConfiguredAspect.Builder builder, Iterable<?> aspectSkylarkObject) throws EvalException {
int i = 0;
for (Object o : aspectSkylarkObject) {
Location loc = skylarkAspect.getImplementation().getLocation();
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkModuleCycleReporter.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkModuleCycleReporter.java
index a3d0a4d..416ddd1 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkModuleCycleReporter.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkylarkModuleCycleReporter.java
@@ -93,7 +93,7 @@
|| IS_SKYLARK_MODULE_SKY_KEY.apply(lastPathElement)
|| IS_WORKSPACE_FILE.apply(lastPathElement))) {
- Function printer =
+ Function<SkyKey, String> printer =
new Function<SkyKey, String>() {
@Override
public String apply(SkyKey input) {
@@ -138,7 +138,7 @@
StringBuilder cycleMessage =
new StringBuilder().append("Circular definition of repositories:");
Iterable<SkyKey> repos = Iterables.filter(cycle, IS_REPOSITORY);
- Function printer =
+ Function<SkyKey, String> printer =
new Function<SkyKey, String>() {
@Override
public String apply(SkyKey input) {
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java
index e840c47..51c5d76 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TransitiveTargetFunction.java
@@ -130,8 +130,9 @@
}
@Override
- public SkyValue computeSkyValue(TargetAndErrorIfAny targetAndErrorIfAny,
- TransitiveTargetValueBuilder builder) {
+ @SuppressWarnings("unchecked")
+ public SkyValue computeSkyValue(
+ TargetAndErrorIfAny targetAndErrorIfAny, TransitiveTargetValueBuilder builder) {
Target target = targetAndErrorIfAny.getTarget();
NoSuchTargetException errorLoadingTarget = targetAndErrorIfAny.getErrorLoadingTarget();
@@ -159,7 +160,7 @@
attr.getLateBoundDefault().getFragmentClass())) {
addFragmentIfNew(
builder,
- (Class<? extends BuildConfiguration.Fragment>)
+ (Class<? extends BuildConfiguration.Fragment>) // unchecked cast
attr.getLateBoundDefault().getFragmentClass());
}
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTFunction.java
index 96d3c4c..a8c429d 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/WorkspaceASTFunction.java
@@ -179,7 +179,7 @@
.append(symbol)
.append("\")\n");
builder.append(symbol).append("(\n");
- for (Map.Entry<Object, Object> arg : ((Map<Object, Object>) args).entrySet()) {
+ for (Map.Entry<?, ?> arg : ((Map<?, ?>) args).entrySet()) {
Object key = arg.getKey();
if (!(key instanceof String)) {
throw resolvedValueError(
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/actiongraph/KnownNestedSets.java b/src/main/java/com/google/devtools/build/lib/skyframe/actiongraph/KnownNestedSets.java
index 59e49eb..73bbfc2 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/actiongraph/KnownNestedSets.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/actiongraph/KnownNestedSets.java
@@ -31,7 +31,7 @@
@Override
protected Object transformToKey(Object nestedSetViewObject) {
- NestedSetView<Artifact> nestedSetView = (NestedSetView<Artifact>) nestedSetViewObject;
+ NestedSetView<?> nestedSetView = (NestedSetView<?>) nestedSetViewObject;
// The NestedSet is identified by their raw 'children' object since multiple NestedSetViews
// can point to the same object.
return nestedSetView.identifier();
@@ -39,15 +39,15 @@
@Override
AnalysisProtos.DepSetOfFiles createProto(Object nestedSetViewObject, String id) {
- NestedSetView<Artifact> nestedSetView = (NestedSetView<Artifact>) nestedSetViewObject;
+ NestedSetView<?> nestedSetView = (NestedSetView) nestedSetViewObject;
AnalysisProtos.DepSetOfFiles.Builder depSetBuilder = AnalysisProtos.DepSetOfFiles
.newBuilder()
.setId(id);
- for (NestedSetView<Artifact> transitiveNestedSet : nestedSetView.transitives()) {
+ for (NestedSetView<?> transitiveNestedSet : nestedSetView.transitives()) {
depSetBuilder.addTransitiveDepSetIds(this.dataToId(transitiveNestedSet));
}
- for (Artifact directArtifact : nestedSetView.directs()) {
- depSetBuilder.addDirectArtifactIds(knownArtifacts.dataToId(directArtifact));
+ for (Object directArtifact : nestedSetView.directs()) {
+ depSetBuilder.addDirectArtifactIds(knownArtifacts.dataToId((Artifact) directArtifact));
}
return depSetBuilder.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/DeserializationContext.java b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/DeserializationContext.java
index ebea05d..e8b156d 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/serialization/DeserializationContext.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/serialization/DeserializationContext.java
@@ -69,7 +69,7 @@
return deserializeInternal(codedIn, memoizationStrategy);
}
- @SuppressWarnings({"TypeParameterUnusedInFormals"})
+ @SuppressWarnings({"TypeParameterUnusedInFormals", "unchecked"})
private <T> T deserializeInternal(
CodedInputStream codedIn, @Nullable MemoizationStrategy customMemoizationStrategy)
throws IOException, SerializationException {
@@ -79,7 +79,7 @@
}
if (tag < 0) {
// Subtract 1 to undo transformation from SerializationContext to avoid null.
- return (T) deserializer.getMemoized(-tag - 1);
+ return (T) deserializer.getMemoized(-tag - 1); // unchecked cast
}
T constant = (T) registry.maybeGetConstantByTag(tag);
if (constant != null) {
@@ -87,7 +87,7 @@
}
CodecDescriptor codecDescriptor = registry.getCodecDescriptorByTag(tag);
if (deserializer == null) {
- return (T) codecDescriptor.deserialize(this, codedIn);
+ return (T) codecDescriptor.deserialize(this, codedIn); // unchecked cast
} else {
@SuppressWarnings("unchecked")
ObjectCodec<T> castCodec = (ObjectCodec<T>) codecDescriptor.getCodec();
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkActionFactoryApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkActionFactoryApi.java
index 03c1186..618bba3 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkActionFactoryApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkActionFactoryApi.java
@@ -349,7 +349,7 @@
},
useLocation = true)
public void run(
- SkylarkList outputs,
+ SkylarkList<?> outputs,
Object inputs,
Object unusedInputsList,
Object executableUnchecked,
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java
index 43cf590..dd2c6b2 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/SkylarkRuleContextApi.java
@@ -688,7 +688,7 @@
useLocation = true,
useStarlarkThread = true)
public Runtime.NoneType action(
- SkylarkList outputs,
+ SkylarkList<?> outputs,
Object inputs,
Object executableUnchecked,
Object toolsUnchecked,
@@ -736,7 +736,8 @@
useLocation = true,
useStarlarkThread = true)
public String expandLocation(
- String input, SkylarkList targets, Location loc, StarlarkThread thread) throws EvalException;
+ String input, SkylarkList<?> targets, Location loc, StarlarkThread thread)
+ throws EvalException;
@SkylarkCallable(
name = "file_action",
@@ -897,7 +898,7 @@
},
useLocation = true)
public RunfilesApi runfiles(
- SkylarkList files,
+ SkylarkList<?> files,
Object transitiveFiles,
Boolean collectData,
Boolean collectDefault,
@@ -985,7 +986,7 @@
Object attributeUnchecked,
Boolean expandLocations,
Object makeVariablesUnchecked,
- SkylarkList tools,
+ SkylarkList<?> tools,
SkylarkDict<?, ?> labelDictUnchecked,
SkylarkDict<?, ?> executionRequirementsUnchecked,
Location loc,
@@ -1013,5 +1014,5 @@
},
useLocation = false,
useStarlarkThread = false)
- public Tuple<Object> resolveTools(SkylarkList tools) throws EvalException;
+ public Tuple<Object> resolveTools(SkylarkList<?> tools) throws EvalException;
}