aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar dannark <dannark@google.com>2018-04-30 09:27:58 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-30 09:29:19 -0700
commit25d5efc1b1e51a618c6fc81f6e987cf416322fb8 (patch)
treeae1cae9474687893bf38072f9a1d403bf827750c /src/main/java/com/google/devtools
parent493a4b10fbe558715cda5b5b468a04f8c5218801 (diff)
Change LocationFunction to not extend Function.
This is necessary for subsequent changes to the apply method for diamond splitting, which will require apply() to take more than one argument. But it seems like the only reason LocationFunction ever extended Function was for tests and so this is an improvement on its own. RELNOTES: None PiperOrigin-RevId: 194796136
Diffstat (limited to 'src/main/java/com/google/devtools')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/LocationExpander.java18
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/LocationTemplateContext.java6
2 files changed, 14 insertions, 10 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/LocationExpander.java b/src/main/java/com/google/devtools/build/lib/analysis/LocationExpander.java
index 01b97a6a0c..06842e5770 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/LocationExpander.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/LocationExpander.java
@@ -38,7 +38,6 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeSet;
-import java.util.function.Function;
import javax.annotation.Nullable;
/**
@@ -67,12 +66,12 @@ public final class LocationExpander {
private static final boolean USE_EXEC_PATHS = true;
private final RuleErrorConsumer ruleErrorConsumer;
- private final ImmutableMap<String, Function<String, String>> functions;
+ private final ImmutableMap<String, LocationFunction> functions;
@VisibleForTesting
LocationExpander(
RuleErrorConsumer ruleErrorConsumer,
- Map<String, Function<String, String>> functions) {
+ Map<String, LocationFunction> functions) {
this.ruleErrorConsumer = ruleErrorConsumer;
this.functions = ImmutableMap.copyOf(functions);
}
@@ -223,7 +222,7 @@ public final class LocationExpander {
}
@VisibleForTesting
- static final class LocationFunction implements Function<String, String> {
+ static final class LocationFunction {
private static final int MAX_PATHS_SHOWN = 5;
private final Label root;
@@ -242,7 +241,12 @@ public final class LocationExpander {
this.multiple = multiple;
}
- @Override
+ /**
+ * Looks up the label-like string in the locationMap and returns the resolved path string.
+ *
+ * @param arg The label-like string to be expanded, e.g. ":foo" or "//foo:bar"
+ * @return The expanded value
+ */
public String apply(String arg) {
Label label;
try {
@@ -327,9 +331,9 @@ public final class LocationExpander {
}
}
- static ImmutableMap<String, Function<String, String>> allLocationFunctions(
+ static ImmutableMap<String, LocationFunction> allLocationFunctions(
Label root, Supplier<Map<Label, Collection<Artifact>>> locationMap, boolean execPaths) {
- return new ImmutableMap.Builder<String, Function<String, String>>()
+ return new ImmutableMap.Builder<String, LocationFunction>()
.put("location", new LocationFunction(root, locationMap, execPaths, EXACTLY_ONE))
.put("locations", new LocationFunction(root, locationMap, execPaths, ALLOW_MULTIPLE))
.put("rootpath", new LocationFunction(root, locationMap, USE_ROOT_PATHS, EXACTLY_ONE))
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/LocationTemplateContext.java b/src/main/java/com/google/devtools/build/lib/analysis/LocationTemplateContext.java
index 3deee31c50..faa5dff18e 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/LocationTemplateContext.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/LocationTemplateContext.java
@@ -19,12 +19,12 @@ import com.google.common.base.Suppliers;
import com.google.common.collect.ImmutableCollection;
import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.analysis.LocationExpander.LocationFunction;
import com.google.devtools.build.lib.analysis.stringtemplate.ExpansionException;
import com.google.devtools.build.lib.analysis.stringtemplate.TemplateContext;
import com.google.devtools.build.lib.cmdline.Label;
import java.util.Collection;
import java.util.Map;
-import java.util.function.Function;
import javax.annotation.Nullable;
/**
@@ -46,7 +46,7 @@ import javax.annotation.Nullable;
*/
final class LocationTemplateContext implements TemplateContext {
private final TemplateContext delegate;
- private final ImmutableMap<String, Function<String, String>> functions;
+ private final ImmutableMap<String, LocationFunction> functions;
private LocationTemplateContext(
TemplateContext delegate,
@@ -80,7 +80,7 @@ final class LocationTemplateContext implements TemplateContext {
@Override
public String lookupFunction(String name, String param) throws ExpansionException {
try {
- Function<String, String> f = functions.get(name);
+ LocationFunction f = functions.get(name);
if (f != null) {
return f.apply(param);
}