diff options
Diffstat (limited to 'src')
4 files changed, 9 insertions, 11 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java index c209e61a1a..ff3d0dae83 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/BuildOptions.java @@ -141,12 +141,10 @@ public final class BuildOptions implements Cloneable, Serializable { /** * Returns the actual instance of a FragmentOptions class. */ - @SuppressWarnings("unchecked") public <T extends FragmentOptions> T get(Class<T> optionsClass) { FragmentOptions options = fragmentOptionsMap.get(optionsClass); Preconditions.checkNotNull(options); - Preconditions.checkArgument(optionsClass.isAssignableFrom(options.getClass())); - return (T) options; + return optionsClass.cast(options); } /** diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java index 63ff4ff41e..7ae7beb171 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfiguration.java @@ -359,7 +359,7 @@ public class CppConfiguration extends BuildConfiguration.Fragment { protected CppConfiguration(CppConfigurationParameters params) throws InvalidConfigurationException { CrosstoolConfig.CToolchain toolchain = params.toolchain; - cppOptions = params.buildOptions.get(CppOptions.class); + cppOptions = params.cppOptions; this.hostSystemName = toolchain.getHostSystemName(); this.compiler = toolchain.getCompiler(); this.targetCpu = toolchain.getTargetCpu(); @@ -368,8 +368,7 @@ public class CppConfiguration extends BuildConfiguration.Fragment { this.targetLibc = toolchain.getTargetLibc(); this.crosstoolTop = params.crosstoolTop; this.ccToolchainLabel = params.ccToolchainLabel; - this.compilationMode = - params.buildOptions.get(BuildConfiguration.Options.class).compilationMode; + this.compilationMode = params.commonOptions.compilationMode; this.lipoContextCollector = cppOptions.lipoCollector; this.execRoot = params.execRoot; @@ -411,7 +410,7 @@ public class CppConfiguration extends BuildConfiguration.Fragment { } this.fdoSupport = new FdoSupport( - params.buildOptions.get(CppOptions.class).fdoInstrument, params.fdoZip, + cppOptions.fdoInstrument, params.fdoZip, cppOptions.lipoMode, execRoot); this.stripBinaries = diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfigurationLoader.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfigurationLoader.java index a68b800bd4..2b200f9ef4 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfigurationLoader.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppConfigurationLoader.java @@ -88,7 +88,8 @@ public class CppConfigurationLoader implements ConfigurationFragmentFactory { public static class CppConfigurationParameters { protected final CrosstoolConfig.CToolchain toolchain; protected final String cacheKeySuffix; - protected final BuildOptions buildOptions; + protected final BuildConfiguration.Options commonOptions; + protected final CppOptions cppOptions; protected final Label crosstoolTop; protected final Label ccToolchainLabel; protected final Path fdoZip; @@ -103,7 +104,8 @@ public class CppConfigurationLoader implements ConfigurationFragmentFactory { Label ccToolchainLabel) { this.toolchain = toolchain; this.cacheKeySuffix = cacheKeySuffix; - this.buildOptions = buildOptions; + this.commonOptions = buildOptions.get(BuildConfiguration.Options.class); + this.cppOptions = buildOptions.get(CppOptions.class); this.fdoZip = fdoZip; this.execRoot = execRoot; this.crosstoolTop = crosstoolTop; diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageLoaderWithValueEnvironment.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageLoaderWithValueEnvironment.java index 95ff677240..95bd400795 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageLoaderWithValueEnvironment.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframePackageLoaderWithValueEnvironment.java @@ -72,7 +72,6 @@ class SkyframePackageLoaderWithValueEnvironment implements PackageProviderForCon } } - @SuppressWarnings("unchecked") @Override public <T extends Fragment> T getFragment(BuildOptions buildOptions, Class<T> fragmentType) throws InvalidConfigurationException { @@ -82,7 +81,7 @@ class SkyframePackageLoaderWithValueEnvironment implements PackageProviderForCon if (fragmentNode == null) { return null; } - return (T) fragmentNode.getFragment(); + return fragmentType.cast(fragmentNode.getFragment()); } @Override |