diff options
author | 2017-09-29 08:59:44 -0400 | |
---|---|---|
committer | 2017-09-29 12:14:52 -0400 | |
commit | 078601363a2b814ce20c24ec0451e70214b92078 (patch) | |
tree | 8e264a50882957c3a623d079aa2b0987dfef214f /src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java | |
parent | 3dc2f544d8362091ed33c1c486d64d201e65ee7e (diff) |
Move expansion functionality to a new class
Progress on #2475.
PiperOrigin-RevId: 170473111
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java | 29 |
1 files changed, 15 insertions, 14 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java index e5c871ef8a..6a21ba0b9d 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java +++ b/src/main/java/com/google/devtools/build/lib/rules/cpp/CppHelper.java @@ -27,6 +27,7 @@ import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.MiddlemanFactory; import com.google.devtools.build.lib.actions.ParameterFile; import com.google.devtools.build.lib.analysis.AnalysisUtils; +import com.google.devtools.build.lib.analysis.Expander; import com.google.devtools.build.lib.analysis.FileProvider; import com.google.devtools.build.lib.analysis.PlatformConfiguration; import com.google.devtools.build.lib.analysis.RuleConfiguredTargetBuilder; @@ -155,23 +156,22 @@ public class CppHelper { !ruleContext.getFeatures().contains("no_copts_tokenization"); List<String> tokens = new ArrayList<>(); + Expander expander = ruleContext.getExpander().withDataExecLocations(); for (String token : input) { - try { - // Legacy behavior: tokenize all items. - if (tokenization) { - ruleContext.tokenizeAndExpandMakeVars(tokens, attributeName, token); - } else { - String exp = - ruleContext.expandSingleMakeVariable(attributeName, token); - if (exp != null) { + // Legacy behavior: tokenize all items. + if (tokenization) { + expander.tokenizeAndExpandMakeVars(tokens, attributeName, token); + } else { + String exp = expander.expandSingleMakeVariable(attributeName, token); + if (exp != null) { + try { ShellUtils.tokenize(tokens, exp); - } else { - tokens.add( - ruleContext.expandMakeVariables(attributeName, token)); + } catch (ShellUtils.TokenizationException e) { + ruleContext.attributeError(attributeName, e.getMessage()); } + } else { + tokens.add(expander.expand(attributeName, token)); } - } catch (ShellUtils.TokenizationException e) { - ruleContext.attributeError(attributeName, e.getMessage()); } } return ImmutableList.copyOf(tokens); @@ -202,13 +202,14 @@ public class CppHelper { public static List<String> expandLinkopts( RuleContext ruleContext, String attrName, Iterable<String> values) { List<String> result = new ArrayList<>(); + Expander expander = ruleContext.getExpander().withDataExecLocations(); for (String value : values) { if (isLinkoptLabel(value)) { if (!expandLabel(ruleContext, result, value)) { ruleContext.attributeError(attrName, "could not resolve label '" + value + "'"); } } else { - ruleContext + expander .tokenizeAndExpandMakeVars( result, attrName, |