diff options
author | 2017-06-07 11:59:04 -0400 | |
---|---|---|
committer | 2017-06-08 10:51:40 -0400 | |
commit | e34439cb73cb61b3e22741b0acc4e05568338f0c (patch) | |
tree | d29b7c4ce5a1bd349cba5eece49d462e8f1df947 /src | |
parent | e2225497760baa280da579267f52a456d0f55056 (diff) |
PiperOrigin-RevId: 158274860
Diffstat (limited to 'src')
3 files changed, 20 insertions, 12 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/LanguageDependentFragment.java b/src/main/java/com/google/devtools/build/lib/analysis/LanguageDependentFragment.java index 38f163fc3a..43667c475b 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/LanguageDependentFragment.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/LanguageDependentFragment.java @@ -18,7 +18,6 @@ import com.google.common.collect.ImmutableSet; import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable; - import java.util.Set; /** @@ -82,27 +81,35 @@ public final class LanguageDependentFragment implements TransitiveInfoProvider { * Routines for verifying that dependency provide the right output. */ public static final class Checker { - /** - * Checks that given dep supports the given language. - */ + /** Checks that given dep supports the given language. */ public static boolean depSupportsLanguage( - RuleContext context, LanguageDependentFragment dep, LibraryLanguage language) { + RuleContext context, + LanguageDependentFragment dep, + LibraryLanguage language, + String attrName) { if (dep.getSupportedLanguages().contains(language)) { return true; } else { context.attributeError( - "deps", String.format("'%s' does not produce output for %s", dep.getLabel(), language)); + attrName, + String.format("'%s' does not produce output for %s", dep.getLabel(), language)); return false; } } /** * Checks that all LanguageDependentFragment support the given language. + * + * @param attrNames names of attributes whose contents should be checked for supported + * languages, e.g., "deps". */ - public static void depsSupportsLanguage(RuleContext context, LibraryLanguage language) { - for (LanguageDependentFragment dep : - context.getPrerequisites("deps", Mode.TARGET, LanguageDependentFragment.class)) { - depSupportsLanguage(context, dep, language); + public static void depsSupportsLanguage( + RuleContext context, LibraryLanguage language, Iterable<String> attrNames) { + for (String attrName : attrNames) { + for (LanguageDependentFragment dep : + context.getPrerequisites(attrName, Mode.TARGET, LanguageDependentFragment.class)) { + depSupportsLanguage(context, dep, language, attrName); + } } } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java index abb218d4d0..ffdacd353d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java @@ -942,7 +942,7 @@ public final class CcLibraryHelper { for (LanguageDependentFragment dep : AnalysisUtils.getProviders(deps, LanguageDependentFragment.class)) { LanguageDependentFragment.Checker.depSupportsLanguage( - ruleContext, dep, CppRuleClasses.LANGUAGE); + ruleContext, dep, CppRuleClasses.LANGUAGE, "deps"); } } diff --git a/src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java b/src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java index 3ea0849634..5ffa4dc610 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java +++ b/src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java @@ -212,7 +212,8 @@ public final class PyCommon { } } - LanguageDependentFragment.Checker.depsSupportsLanguage(ruleContext, PyRuleClasses.LANGUAGE); + LanguageDependentFragment.Checker.depsSupportsLanguage( + ruleContext, PyRuleClasses.LANGUAGE, ImmutableList.of("deps")); return convertedFiles != null ? ImmutableList.copyOf(convertedFiles.values()) : sourceFiles; |