aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java57
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoSemantics.java2
-rw-r--r--src/main/java/com/google/devtools/build/lib/ideinfo/BazelAndroidStudioInfoSemantics.java5
-rw-r--r--src/main/protobuf/android_studio_ide_info.proto1
-rw-r--r--src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java16
-rw-r--r--src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTestBase.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/ideinfo/intellij_info.bzl8
7 files changed, 51 insertions, 42 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
index d0421fb559..5562b2e24f 100644
--- a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
+++ b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspect.java
@@ -344,26 +344,31 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
}
// C rules
- CppCompilationContext cppCompilationContext = base.getProvider(CppCompilationContext.class);
- if (cppCompilationContext != null) {
- CRuleIdeInfo cRuleIdeInfo =
- makeCRuleIdeInfo(base, ruleContext, cppCompilationContext, ideResolveArtifacts);
- outputBuilder.setCRuleIdeInfo(cRuleIdeInfo);
+ if (isCppRule(base)) {
+ CppCompilationContext cppCompilationContext = base.getProvider(CppCompilationContext.class);
+ if (cppCompilationContext != null) {
+ CRuleIdeInfo cRuleIdeInfo =
+ makeCRuleIdeInfo(base, ruleContext, cppCompilationContext, ideResolveArtifacts);
+ outputBuilder.setCRuleIdeInfo(cRuleIdeInfo);
+ }
}
// CCToolchain rule
- CppConfiguration cppConfiguration = getCppConfiguration(base);
- if (cppConfiguration != null) {
- CToolchainIdeInfo cToolchainIdeInfo = makeCToolchainIdeInfo(ruleContext, cppConfiguration);
- if (cToolchainIdeInfo != null) {
- outputBuilder.setCToolchainIdeInfo(cToolchainIdeInfo);
+ CcToolchainProvider ccToolchainProvider = base.getProvider(CcToolchainProvider.class);
+ if (ccToolchainProvider != null) {
+ CppConfiguration cppConfiguration = ccToolchainProvider.getCppConfiguration();
+ if (cppConfiguration != null) {
+ CToolchainIdeInfo cToolchainIdeInfo = makeCToolchainIdeInfo(ruleContext, cppConfiguration);
+ if (cToolchainIdeInfo != null) {
+ outputBuilder.setCToolchainIdeInfo(cToolchainIdeInfo);
+ }
}
}
// Android rules
AndroidIdeInfoProvider androidIdeInfoProvider = base.getProvider(AndroidIdeInfoProvider.class);
if (androidIdeInfoProvider != null) {
- outputBuilder.setAndroidRuleIdeInfo(makeAndroidRuleIdeInfo(base,
+ outputBuilder.setAndroidRuleIdeInfo(makeAndroidRuleIdeInfo(
androidIdeInfoProvider, dependenciesResult, ideResolveArtifacts));
}
@@ -394,6 +399,20 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
return provider;
}
+ private boolean isCppRule(ConfiguredTarget base) {
+ String ruleClass = base.getTarget().getAssociatedRule().getRuleClass();
+ switch (ruleClass) {
+ case "cc_library":
+ case "cc_binary":
+ case "cc_test":
+ case "cc_inc_library:":
+ return true;
+ default:
+ // Fall through
+ }
+ return androidStudioInfoSemantics.checkForAdditionalCppRules(ruleClass);
+ }
+
@Nullable private static Artifact createPackageManifest(ConfiguredTarget base,
RuleContext ruleContext) {
Collection<Artifact> sourceFiles = getJavaSources(ruleContext);
@@ -455,7 +474,6 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
}
private static AndroidRuleIdeInfo makeAndroidRuleIdeInfo(
- ConfiguredTarget base,
AndroidIdeInfoProvider androidIdeInfoProvider,
DependenciesResult dependenciesResult,
NestedSetBuilder<Artifact> ideResolveArtifacts) {
@@ -597,11 +615,6 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
builder.addSource(makeArtifactLocation(sourceFile));
}
- Collection<Artifact> exportedHeaderFiles = getExportedHeaders(ruleContext);
- for (Artifact exportedHeaderFile : exportedHeaderFiles) {
- builder.addExportedHeader(makeArtifactLocation(exportedHeaderFile));
- }
-
builder.addAllRuleInclude(getIncludes(ruleContext));
builder.addAllRuleDefine(getDefines(ruleContext));
builder.addAllRuleCopt(getCopts(ruleContext));
@@ -739,10 +752,6 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
return getTargetListAttribute(ruleContext, "srcs");
}
- private static Collection<Artifact> getExportedHeaders(RuleContext ruleContext) {
- return getTargetListAttribute(ruleContext, "hdrs");
- }
-
private static Collection<String> getIncludes(RuleContext ruleContext) {
return getStringListAttribute(ruleContext, "includes");
}
@@ -786,12 +795,6 @@ public class AndroidStudioInfoAspect extends NativeAspectClass implements Config
}
}
- @Nullable
- private static CppConfiguration getCppConfiguration(ConfiguredTarget base) {
- CcToolchainProvider ccToolchainProvider = base.getProvider(CcToolchainProvider.class);
- return ccToolchainProvider != null ? ccToolchainProvider.getCppConfiguration() : null;
- }
-
@Deprecated
private RuleIdeInfo.Kind getRuleKind(Rule rule, ConfiguredTarget base) {
switch (rule.getRuleClassObject().getName()) {
diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoSemantics.java b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoSemantics.java
index 4e6639c966..01234f2abb 100644
--- a/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoSemantics.java
@@ -34,4 +34,6 @@ public interface AndroidStudioInfoSemantics {
NestedSetBuilder<Artifact> ideResolveArtifacts);
void augmentPrerequisiteAttrs(Builder<PrerequisiteAttr> builder);
+
+ boolean checkForAdditionalCppRules(String ruleClass);
}
diff --git a/src/main/java/com/google/devtools/build/lib/ideinfo/BazelAndroidStudioInfoSemantics.java b/src/main/java/com/google/devtools/build/lib/ideinfo/BazelAndroidStudioInfoSemantics.java
index f055405b48..1aa3dc9590 100644
--- a/src/main/java/com/google/devtools/build/lib/ideinfo/BazelAndroidStudioInfoSemantics.java
+++ b/src/main/java/com/google/devtools/build/lib/ideinfo/BazelAndroidStudioInfoSemantics.java
@@ -39,4 +39,9 @@ public class BazelAndroidStudioInfoSemantics implements AndroidStudioInfoSemanti
@Override
public void augmentPrerequisiteAttrs(ImmutableList.Builder<PrerequisiteAttr> builder) {
}
+
+ @Override
+ public boolean checkForAdditionalCppRules(String ruleClass) {
+ return false;
+ }
}
diff --git a/src/main/protobuf/android_studio_ide_info.proto b/src/main/protobuf/android_studio_ide_info.proto
index baedca7cdd..6d873c79f6 100644
--- a/src/main/protobuf/android_studio_ide_info.proto
+++ b/src/main/protobuf/android_studio_ide_info.proto
@@ -48,7 +48,6 @@ message JavaRuleIdeInfo {
message CRuleIdeInfo {
repeated ArtifactLocation source = 1;
- repeated ArtifactLocation exported_header = 2;
repeated string transitive_include_directory = 3;
repeated string transitive_quote_include_directory = 4;
diff --git a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java
index 42a1e8bd29..f9a1b49e83 100644
--- a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java
+++ b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTest.java
@@ -1038,8 +1038,6 @@ public class AndroidStudioInfoAspectTest extends AndroidStudioInfoAspectTestBase
assertThat(relativePathsForCSourcesOf(ruleIdeInfo))
.containsExactly("com/google/example/simple/simple.cc");
- assertThat(relativePathsForExportedCHeadersOf(ruleIdeInfo))
- .containsExactly("com/google/example/simple/simple.h");
assertThat(ruleIdeInfo.hasCRuleIdeInfo()).isTrue();
assertThat(ruleIdeInfo.hasJavaRuleIdeInfo()).isFalse();
@@ -1508,6 +1506,20 @@ public class AndroidStudioInfoAspectTest extends AndroidStudioInfoAspectTestBase
assertThat(toolchainInfo.hasCToolchainIdeInfo()).isTrue();
}
+ @Test
+ public void testJavaLibraryDoesNotHaveCInfo() throws Exception {
+ scratch.file(
+ "com/google/example/BUILD",
+ "java_library(",
+ " name = 'simple',",
+ " srcs = ['simple/Simple.java']",
+ ")");
+ Map<String, RuleIdeInfo> ruleIdeInfos = buildRuleIdeInfo("//com/google/example:simple");
+ RuleIdeInfo ruleIdeInfo = getRuleInfoAndVerifyLabel(
+ "//com/google/example:simple", ruleIdeInfos);
+ assertThat(ruleIdeInfo.hasCRuleIdeInfo()).isFalse();
+ }
+
/**
* Returns true if we are testing the native aspect, not the Skylark one.
* Eventually Skylark aspect will be equivalent to a native one, and this method
diff --git a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTestBase.java b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTestBase.java
index 291b6be9e3..dfff8a8da6 100644
--- a/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTestBase.java
+++ b/src/test/java/com/google/devtools/build/lib/ideinfo/AndroidStudioInfoAspectTestBase.java
@@ -122,10 +122,6 @@ abstract class AndroidStudioInfoAspectTestBase extends BuildViewTestCase {
return relativePathsForSources(ruleIdeInfo.getCRuleIdeInfo().getSourceList());
}
- protected static Iterable<String> relativePathsForExportedCHeadersOf(RuleIdeInfo ruleIdeInfo) {
- return relativePathsForSources(ruleIdeInfo.getCRuleIdeInfo().getExportedHeaderList());
- }
-
private static Iterable<String> relativePathsForSources(List<ArtifactLocation> sourcesList) {
return transform(sourcesList, ARTIFACT_TO_RELATIVE_PATH);
}
diff --git a/src/test/java/com/google/devtools/build/lib/ideinfo/intellij_info.bzl b/src/test/java/com/google/devtools/build/lib/ideinfo/intellij_info.bzl
index 6d6eab6409..9648cba3e9 100644
--- a/src/test/java/com/google/devtools/build/lib/ideinfo/intellij_info.bzl
+++ b/src/test/java/com/google/devtools/build/lib/ideinfo/intellij_info.bzl
@@ -164,13 +164,6 @@ def c_rule_ide_info(target, ctx):
sources = getSourcesFromRule(ctx)
- if hasattr(ctx.rule.attr, "hdrs"):
- exported_headers = [artifact_location(file)
- for hdr in ctx.rule.attr.hdrs
- for file in hdr.files]
- else:
- exported_headers = []
-
rule_includes = []
if hasattr(ctx.rule.attr, "includes"):
rule_includes = ctx.rule.attr.includes
@@ -187,7 +180,6 @@ def c_rule_ide_info(target, ctx):
return (struct_omit_none(
source = sources,
- exported_header = exported_headers,
rule_include = rule_includes,
rule_define = rule_defines,
rule_copt = rule_copts,