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; }