Update Intellij libraries to 2019.3, for compatibility.
This ballooned the plugin size to 4MB, so add jarjar, which strips unused classes. The result is 1.8MB.
It also exposed a small bug in icon loading, where a leading '/' was required.
This is mostly done with the hope that Jeremy will stop getting nag mails from JetBrains.
Change-Id: I1a3bf92ac3a216bbcaaa80d40aa0a2887732612c
diff --git a/BUILD b/BUILD
index 3c30561..5580248 100644
--- a/BUILD
+++ b/BUILD
@@ -11,6 +11,11 @@
],
)
+filegroup(
+ name = "jarjar_rules",
+ srcs = ["jarjar_rules.txt"],
+)
+
# Need to include config files at appropriate paths in JAR
genrule(
name = "fidlplugin",
@@ -30,10 +35,17 @@
OUT=`absolutify $(@D)`;
PLUGIN=`absolutify $(location :fidlplugin_jar_deploy.jar)`;
CONFIG=`absolutify $(locations :config)`;
+ JARJAR=`absolutify $(location //jarjar:jarjar_bin)`;
+ RULES_LOC=`absolutify $(location :jarjar_rules)`;
cd $${TMP};
$${JAR} xf $${PLUGIN};
cp $${CONFIG} META-INF/;
rm -rf build-data.properties;
- $${JAR} --create --file=$${OUT}/$$(basename $(@)) *; """,
+ $${JAR} --create --file=$${OUT}/$$(basename $(@)).full *;
+ $${JARJAR} process $${RULES_LOC} $${OUT}/$$(basename $(@)).full $${OUT}/$$(basename $(@)) """,
toolchains = ["@bazel_tools//tools/jdk:current_host_java_runtime"],
+ tools = [
+ ":jarjar_rules",
+ "//jarjar:jarjar_bin",
+ ],
)
diff --git a/WORKSPACE b/WORKSPACE
index acfef70..8d2f20d 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -2,19 +2,19 @@
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
-# The plugin api for IntelliJ 2018.3.
+# The plugin api for IntelliJ 2019.3.3.
http_archive(
- name = "intellij_ce_2018_3",
+ name = "intellij_ce_2019_3_3",
build_file = "//:intellij_platform_sdk/BUILD.idea",
- sha256 = "0124028014d6bd5dd392114f0cd42f094239528d0da06c4c9dba4ef8921f4f35",
- url = "https://download.jetbrains.com/idea/ideaIC-2018.3.5-no-jdk.tar.gz",
+ sha256 = "c40536791c754c30dbf378bd6b59e0524b0588f26ddb4d85a9f260cf13454d14",
+ url = "https://download.jetbrains.com/idea/ideaIC-2019.3.3-no-jbr.tar.gz",
)
http_archive(
name = "grammar_kit",
build_file = "//:grammar_kit/BUILD.grammar_kit",
- sha256 = "de61e6c9b645b8401f37b65f248c0df20da6c151a61d720a806f6894b38dfc84",
- url = "https://github.com/JetBrains/Grammar-Kit/releases/download/2019.1/grammar-kit-2019.1.zip",
+ sha256 = "a33f9732b8bed61e509a8282e9a9ae72130ab5e7e18a449eb60cf00bb142018d",
+ url = "https://github.com/JetBrains/Grammar-Kit/releases/download/2019.3/grammar-kit-2019.3.zip",
)
http_archive(
@@ -27,3 +27,21 @@
load("@google_bazel_common//:workspace_defs.bzl", "google_common_workspace_rules")
google_common_workspace_rules()
+
+http_archive(
+ name = "rules_jvm_external",
+ sha256 = "f1203ce04e232ab6fdd81897cf0ff76f2c04c0741424d192f28e65ae752ce2d6",
+ strip_prefix = "rules_jvm_external-2.2",
+ url = "https://github.com/bazelbuild/rules_jvm_external/archive/2.2.zip",
+)
+
+load("@rules_jvm_external//:defs.bzl", "maven_install")
+
+maven_install(
+ artifacts = [
+ "org.pantsbuild:jarjar:1.7.2",
+ "org.ow2.asm:asm:7.0",
+ "org.ow2.asm:asm-commons:7.0",
+ ],
+ repositories = ["https://repo1.maven.org/maven2"],
+)
diff --git a/grammar_kit/BUILD.grammar_kit b/grammar_kit/BUILD.grammar_kit
index 6b96a93..e71fd46 100644
--- a/grammar_kit/BUILD.grammar_kit
+++ b/grammar_kit/BUILD.grammar_kit
@@ -1,7 +1,6 @@
-
package(default_visibility = ["//visibility:public"])
java_import(
name = "grammar_kit",
- jars = ["grammar-kit/lib/grammar-kit-2019.1.jar"],
+ jars = ["grammar-kit/lib/grammar-kit-2019.3.jar"],
)
diff --git a/intellij_platform_sdk/BUILD.idea b/intellij_platform_sdk/BUILD.idea
index 900f4b5..84445cb 100644
--- a/intellij_platform_sdk/BUILD.idea
+++ b/intellij_platform_sdk/BUILD.idea
@@ -17,14 +17,24 @@
java_import(
name = "util",
- jars = glob(["idea-*/lib/util.jar"]),
+ jars = glob([
+ "idea-*/lib/util.jar",
+ ]) + glob([
+ "idea-*/lib/platform-util-ui.jar",
+ ]),
neverlink = 1,
tags = ["intellij-provided-by-sdk"],
)
java_import(
name = "platform-api",
- jars = glob(["idea-*/lib/platform-api.jar"]) + glob(["idea-*/lib/platform-impl.jar"]),
+ jars = glob([
+ "idea-*/lib/platform-api.jar",
+ ]) + glob([
+ "idea-*/lib/platform-impl.jar",
+ ]) + glob([
+ "idea-*/lib/spellchecker.jar",
+ ]),
neverlink = 1,
tags = ["intellij-provided-by-sdk"],
)
diff --git a/jarjar/BUILD b/jarjar/BUILD
new file mode 100644
index 0000000..9f0da46
--- /dev/null
+++ b/jarjar/BUILD
@@ -0,0 +1,14 @@
+# JarJar, a JAR shrinker / shader
+
+package(default_visibility = ["//visibility:public"])
+
+java_binary(
+ name = "jarjar_bin",
+ main_class = "org.pantsbuild.jarjar.Main",
+ visibility = ["//visibility:public"],
+ runtime_deps = [
+ "@maven//:org_ow2_asm_asm",
+ "@maven//:org_ow2_asm_asm_commons",
+ "@maven//:org_pantsbuild_jarjar",
+ ],
+)
diff --git a/jarjar_rules.txt b/jarjar_rules.txt
new file mode 100644
index 0000000..22c4986
--- /dev/null
+++ b/jarjar_rules.txt
@@ -0,0 +1,2 @@
+keep fuchsia.developer.plugin.fidl.**
+rule com.google.** fuchsia.developer.plugin.fidl.com.google.@0
diff --git a/resources/META-INF/plugin.xml b/resources/META-INF/plugin.xml
index e237944..a6ae9b2 100644
--- a/resources/META-INF/plugin.xml
+++ b/resources/META-INF/plugin.xml
@@ -23,6 +23,7 @@
<li>Add flexible keyword, allow strict on more declarations </li>
<li>Support union ordinals and remove xunion.</li>
<li>Support service declarations.</li>
+ <li>Improve compatibility with IJ 2019.3, and shrink JAR size</li>
</ul>
</li>
<li><b>0.13</b>
diff --git a/src/fuchsia/developer/plugin/fidl/BUILD b/src/fuchsia/developer/plugin/fidl/BUILD
index 8e42f29..dd15b03 100644
--- a/src/fuchsia/developer/plugin/fidl/BUILD
+++ b/src/fuchsia/developer/plugin/fidl/BUILD
@@ -19,7 +19,7 @@
main_class = "org.intellij.grammar.Main",
runtime_deps = [
"@grammar_kit",
- "@intellij_ce_2018_3//:sdk",
+ "@intellij_ce_2019_3_3//:sdk",
],
)
@@ -149,9 +149,9 @@
deps = [
"@google_bazel_common//third_party/java/guava",
"@grammar_kit",
- "@intellij_ce_2018_3//:annotations",
- "@intellij_ce_2018_3//:platform-api",
- "@intellij_ce_2018_3//:util",
+ "@intellij_ce_2019_3_3//:annotations",
+ "@intellij_ce_2019_3_3//:platform-api",
+ "@intellij_ce_2019_3_3//:util",
],
)
diff --git a/src/fuchsia/developer/plugin/fidl/psi/FidlNamedElementImpl.java b/src/fuchsia/developer/plugin/fidl/psi/FidlNamedElementImpl.java
index 7ec809e..70dead2 100644
--- a/src/fuchsia/developer/plugin/fidl/psi/FidlNamedElementImpl.java
+++ b/src/fuchsia/developer/plugin/fidl/psi/FidlNamedElementImpl.java
@@ -33,7 +33,7 @@
private static final Map<Class<? extends FidlNamedElementImpl>, Icon> icons;
static {
- String path = "fuchsia/developer/plugin/fidl/icons/";
+ String path = "/fuchsia/developer/plugin/fidl/icons/";
icons =
ImmutableMap.<Class<? extends FidlNamedElementImpl>, Icon>builder()
.put(FidlBitsDeclarationImpl.class, IconLoader.getIcon(path + "B.png"))