aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar Janak Ramakrishnan <janakr@google.com>2016-03-21 07:25:31 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-03-21 09:37:11 +0000
commit6eda3f2f8893ce74159380ef50928703a5b6d029 (patch)
tree9e296b35c557c422ee537985dbf17590fd0a5885 /src/main/java/com/google/devtools/build/lib
parent1a42801a5f2654fb85bdbe446e05b596b3979f38 (diff)
Don't keep implicit reference to ProtoCompileAction.Builder after build() is called.
-- MOS_MIGRATED_REVID=117689886
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileAction.java25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileAction.java b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileAction.java
index ce5a6d3c6e..4c3b3dbb7b 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/proto/ProtoCompileAction.java
@@ -125,6 +125,22 @@ public final class ProtoCompileAction {
this.outputs = outputs;
}
+ /** Static class to avoid keeping a reference to this builder after build() is called. */
+ private static class LazyLangPluginFlag extends LazyString {
+ private final String langPrefix;
+ private final Supplier<String> langPluginParameter1;
+
+ LazyLangPluginFlag(String langPrefix, Supplier<String> langPluginParameter1) {
+ this.langPrefix = langPrefix;
+ this.langPluginParameter1 = langPluginParameter1;
+ }
+
+ @Override
+ public String toString() {
+ return String.format("--%s_out=%s", langPrefix, langPluginParameter1.get());
+ }
+ }
+
public Optional<ProtoCompileAction> build() {
checkState(langPluginParameter == null || langPluginParameterSupplier == null,
"Only one of {langPluginParameter, langPluginParameterSupplier} should be set.");
@@ -148,20 +164,13 @@ public final class ProtoCompileAction {
if (ruleContext.hasErrors()) {
return absent();
}
- LazyString lazyLangPlugingFlag =
- new LazyString() {
- @Override
- public String toString() {
- return String.format("--%s_out=%s", langPrefix, langPluginParameter1.get());
- }
- };
prefixArguments =
ImmutableList.of(
String.format(
"--plugin=protoc-gen-%s=%s",
langPrefix,
langPluginTarget.getExecutable().getExecPathString()),
- lazyLangPlugingFlag);
+ new LazyLangPluginFlag(langPrefix, langPluginParameter1));
} else {
prefixArguments =
(langParameter != null) ? ImmutableList.of(langParameter) : ImmutableList.<String>of();