diff options
author | 2016-03-21 07:25:31 +0000 | |
---|---|---|
committer | 2016-03-21 09:37:11 +0000 | |
commit | 6eda3f2f8893ce74159380ef50928703a5b6d029 (patch) | |
tree | 9e296b35c557c422ee537985dbf17590fd0a5885 /src/main/java/com/google/devtools/build/lib | |
parent | 1a42801a5f2654fb85bdbe446e05b596b3979f38 (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.java | 25 |
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(); |