aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar carmi <carmi@google.com>2017-06-07 11:59:04 -0400
committerGravatar John Cater <jcater@google.com>2017-06-08 10:51:40 -0400
commite34439cb73cb61b3e22741b0acc4e05568338f0c (patch)
treed29b7c4ce5a1bd349cba5eece49d462e8f1df947 /src/main/java/com/google/devtools
parente2225497760baa280da579267f52a456d0f55056 (diff)
PiperOrigin-RevId: 158274860
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/LanguageDependentFragment.java27
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/cpp/CcLibraryHelper.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/python/PyCommon.java3
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;