From b7e7ea4da27f989f7670d6087a25f14312ac2dd7 Mon Sep 17 00:00:00 2001 From: Cal Peyser Date: Mon, 30 Jan 2017 17:18:19 +0000 Subject: Split transitions that return an empty list of options do not suppress dynamic ruleclass transitions. -- PiperOrigin-RevId: 146000375 MOS_MIGRATED_REVID=146000375 --- .../build/lib/analysis/config/ComposingSplitTransition.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/main/java/com/google/devtools/build') diff --git a/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingSplitTransition.java b/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingSplitTransition.java index c4287d8ea9..8a33e233d4 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingSplitTransition.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/config/ComposingSplitTransition.java @@ -14,6 +14,7 @@ package com.google.devtools.build.lib.analysis.config; +import com.google.common.base.Verify; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition; import com.google.devtools.build.lib.packages.Attribute.SplitTransition; @@ -50,7 +51,14 @@ public class ComposingSplitTransition implements SplitTransition { } else if (transition instanceof PatchTransition) { return ImmutableList.of(((PatchTransition) transition).apply(patchedOptions)); } else if (transition instanceof SplitTransition) { - return ((SplitTransition) transition).split(patchedOptions); + SplitTransition split = (SplitTransition) transition; + List splitOptions = split.split(patchedOptions); + if (splitOptions.isEmpty()) { + Verify.verify(split.defaultsToSelf()); + return ImmutableList.of(patchedOptions); + } else { + return splitOptions; + } } else { throw new IllegalStateException( String.format("Unsupported composite transition type: %s", -- cgit v1.2.3