aboutsummaryrefslogtreecommitdiffhomepage
path: root/tools
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-04-26 20:33:24 +0200
committerGravatar Vladimir Moskva <vladmos@google.com>2017-04-26 21:02:14 +0200
commitfd1140bf699eebcd1bb520e28a427e62d3540f76 (patch)
treecd7805d73c5fbf35b6adf3bf0daf7c65d1e9bb71 /tools
parentf91c00879f1fece1f88ec65240cf385be15a0006 (diff)
Add Scala IDE info to Intellij aspect.
RELNOTES: None. PiperOrigin-RevId: 154322648
Diffstat (limited to 'tools')
-rw-r--r--tools/ide/intellij_info_impl.bzl49
1 files changed, 49 insertions, 0 deletions
diff --git a/tools/ide/intellij_info_impl.bzl b/tools/ide/intellij_info_impl.bzl
index e375288a96..96ac7d4250 100644
--- a/tools/ide/intellij_info_impl.bzl
+++ b/tools/ide/intellij_info_impl.bzl
@@ -23,6 +23,12 @@ DEPS = [
"_robolectric", # From android_robolectric_test
"_android_sdk", # from android rules
"aidl_lib", # from android_sdk
+ "_scalalib", # From scala rules
+ "_scalacompiler", # From scala rules
+ "_scalareflect", # From scala rules
+ "_scalatest", # From scala_test rules
+ "_scalatest_reporter", # From scala_test rules
+ "_scalaxml", # From scala_test rules
]
# Run-time dependency attributes, grouped by type.
@@ -498,6 +504,42 @@ 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):
@@ -596,6 +638,12 @@ 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)
@@ -626,6 +674,7 @@ 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,