diff options
author | Googler <noreply@google.com> | 2017-05-01 19:17:32 +0200 |
---|---|---|
committer | Damien Martin-Guillerez <dmarting@google.com> | 2017-05-02 11:26:05 +0200 |
commit | 906373a52313b3ec5308bcb6d327b771b0571077 (patch) | |
tree | 77f8e4d10e60756cc14869252c3240471b211cb7 /tools | |
parent | 5da0dd559885e3175e28b9d4b11fc6408939f211 (diff) |
Remove Scala IDE info, and use Java IDE info instead.
Scala IDE info is a subset of Java IDE info anyway, and would make
reusing Java-specific utilities easier in the sync plugin.
RELNOTES: None.
PiperOrigin-RevId: 154728036
Diffstat (limited to 'tools')
-rw-r--r-- | tools/ide/intellij_info_impl.bzl | 75 |
1 files changed, 25 insertions, 50 deletions
diff --git a/tools/ide/intellij_info_impl.bzl b/tools/ide/intellij_info_impl.bzl index 96ac7d4250..9a396400af 100644 --- a/tools/ide/intellij_info_impl.bzl +++ b/tools/ide/intellij_info_impl.bzl @@ -137,6 +137,11 @@ def build_file_artifact_location(ctx): is_external_artifact(ctx.label) ) +def get_source_jar(output): + if hasattr(output, "source_jar"): + return output.source_jar + return None + def library_artifact(java_output): """Creates a LibraryArtifact representing a given java_output.""" if java_output == None or java_output.class_jar == None: @@ -144,7 +149,7 @@ def library_artifact(java_output): return struct_omit_none( jar = artifact_location(java_output.class_jar), interface_jar = artifact_location(java_output.ijar), - source_jar = artifact_location(java_output.source_jar), + source_jar = artifact_location(get_source_jar(java_output)), ) def annotation_processing_jars(annotation_processing): @@ -159,7 +164,7 @@ def jars_from_output(output): if output == None: return [] return [jar - for jar in [output.class_jar, output.ijar, output.source_jar] + for jar in [output.class_jar, output.ijar, get_source_jar(output)] if jar != None and not jar.is_source] # TODO(salguarnieri) Remove once skylark provides the path safe string from a PathFragment. @@ -317,8 +322,17 @@ def get_java_provider(target): return target.proto_java if hasattr(target, "java"): return target.java + if hasattr(target, "scala"): + return target.scala return None +def get_java_jars(outputs): + """Handle both Java (java.outputs.jars list) and Scala (single scala.outputs) targets.""" + if hasattr(outputs, "jars"): + return outputs.jars + if hasattr(outputs, "class_jar"): + return [outputs] + def build_java_ide_info(target, ctx, semantics): """Build JavaIdeInfo.""" java = get_java_provider(target) @@ -331,20 +345,24 @@ def build_java_ide_info(target, ctx, semantics): ide_info_files = set() sources = sources_from_target(ctx) - - jars = [library_artifact(output) for output in java.outputs.jars] - output_jars = [jar for output in java.outputs.jars for jar in jars_from_output(output)] + java_jars = get_java_jars(java.outputs) + jars = [library_artifact(output) for output in java_jars] + output_jars = [jar for output in java_jars for jar in jars_from_output(output)] intellij_resolve_files = set(output_jars) gen_jars = [] - if java.annotation_processing and java.annotation_processing.enabled: + if (hasattr(java, "annotation_processing") and + java.annotation_processing and + java.annotation_processing.enabled): gen_jars = [annotation_processing_jars(java.annotation_processing)] intellij_resolve_files = intellij_resolve_files | set([ jar for jar in [java.annotation_processing.class_jar, java.annotation_processing.source_jar] if jar != None and not jar.is_source]) - jdeps = artifact_location(java.outputs.jdeps) + jdeps = None + if hasattr(java.outputs, "jdeps"): + jdeps = artifact_location(java.outputs.jdeps) java_sources, gen_java_sources, srcjars = divide_java_sources(ctx) @@ -504,42 +522,6 @@ def build_android_sdk_ide_info(ctx): android_jar = artifact_location(android_jar_file), ) -def build_scala_ide_info(target, ctx): - """Build ScalaIdeInfo.""" - if not hasattr(target, "scala"): - return (None, set(), set()) - - ide_info_files = set() - scala_sources = [] - if hasattr(ctx.rule.attr, "srcs"): - scala_sources = [f for src in ctx.rule.attr.srcs for f in src.files if f.is_source] - - package_manifest = None - if scala_sources: - package_manifest = build_java_package_manifest(ctx, target, scala_sources, ".scala-manifest") - ide_info_files = ide_info_files | set([package_manifest]) - - scala = target.scala - class_jar = None - ijar = None - intellij_resolve_files = set() - if scala.outputs: - class_jar = scala.outputs.class_jar - ijar = scala.outputs.ijar - intellij_resolve_files = set([class_jar, ijar]) - - scala_ide_info = struct_omit_none( - sources = sources_from_target(ctx), - jars = [struct_omit_none( - jar = artifact_location(class_jar), - interface_jar = artifact_location(ijar), - )], - package_manifest = artifact_location(package_manifest), - main_class = ctx.rule.attr.main_class if hasattr(ctx.rule.attr, "main_class") else None, - ) - return (scala_ide_info, ide_info_files, intellij_resolve_files) - - def build_test_info(ctx): """Build TestInfo.""" if not is_test_rule(ctx): @@ -638,12 +620,6 @@ def intellij_info_aspect_impl(target, ctx, semantics): intellij_resolve_files = intellij_resolve_files | android_resolve_files android_sdk_ide_info = build_android_sdk_ide_info(ctx) - # Collect Scala-specific information - (scala_ide_info, scala_ide_info_files, scala_resolve_files) = build_scala_ide_info( - target, ctx) - intellij_info_text = intellij_info_text | scala_ide_info_files - intellij_resolve_files = intellij_resolve_files | scala_resolve_files - # java_toolchain java_toolchain_ide_info = build_java_toolchain_ide_info(target) @@ -674,7 +650,6 @@ def intellij_info_aspect_impl(target, ctx, semantics): java_ide_info = java_ide_info, android_ide_info = android_ide_info, android_sdk_ide_info = android_sdk_ide_info, - scala_ide_info = scala_ide_info, tags = tags, test_info = test_info, java_toolchain_ide_info = java_toolchain_ide_info, |