diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java index 9187d41d2f..0af84d64d1 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java +++ b/src/main/java/com/google/devtools/build/lib/rules/objc/ProtobufSupport.java @@ -24,6 +24,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSetMultimap; import com.google.common.collect.Ordering; +import com.google.common.collect.Sets; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.RuleConfiguredTarget.Mode; import com.google.devtools.build.lib.analysis.RuleContext; @@ -40,6 +41,7 @@ import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.PathFragment; import java.util.ArrayList; import java.util.HashMap; +import java.util.Set; /** * Support for generating Objective C proto static libraries that registers actions which generate @@ -330,8 +332,7 @@ final class ProtobufSupport { protoSets.add(protoProvider.getTransitiveProtoSources()); } - HashMap<Artifact, ImmutableSet<Artifact>> protoToGroupMap = - new HashMap<Artifact, ImmutableSet<Artifact>>(); + HashMap<Artifact, Set<Artifact>> protoToGroupMap = new HashMap<>(); // For each proto in each proto group, store the smallest group in which it is contained. This // group will be considered the smallest input group with which the proto can be generated. @@ -343,9 +344,10 @@ final class ProtobufSupport { if (attributes.isProtoWellKnown(proto)) { continue; } - if (!protoToGroupMap.containsKey(proto) - || protoToGroupMap.get(proto).size() > protoSet.size()) { + if (!protoToGroupMap.containsKey(proto)) { protoToGroupMap.put(proto, protoSet); + } else { + protoToGroupMap.put(proto, Sets.intersection(protoSet, protoToGroupMap.get(proto))); } } } @@ -361,7 +363,7 @@ final class ProtobufSupport { ImmutableSetMultimap.builder(); for (Artifact proto : protoToGroupMap.keySet()) { - inputsToOutputsMapBuilder.put(protoToGroupMap.get(proto), proto); + inputsToOutputsMapBuilder.put(ImmutableSet.copyOf(protoToGroupMap.get(proto)), proto); } return inputsToOutputsMapBuilder.build(); } |