diff options
author | cparsons <cparsons@google.com> | 2018-07-13 15:23:46 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-07-13 15:24:58 -0700 |
commit | 1771054491bcaa8bc5f2dacdb66381519e4ae29a (patch) | |
tree | de6006bb43b5e4d44911db90e88d3b0904bfc78c /src/main/java/com/google/devtools/build/skydoc | |
parent | ea410646981448956dd2f1ae2c1c9714347b6711 (diff) |
Improve build API support in the fakebuildapi, allowing Skydoc to run on files which define new provider types and instantiate Labels.
Also improve docstring usage in attr definitions by doing whitespace trimming.
RELNOTES: None.
PiperOrigin-RevId: 204537623
Diffstat (limited to 'src/main/java/com/google/devtools/build/skydoc')
3 files changed, 30 insertions, 5 deletions
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java index cdf8ef1f6e..01b64c1b4d 100644 --- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java +++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java @@ -16,11 +16,28 @@ package com.google.devtools.build.skydoc.fakebuildapi; import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi; import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; +import com.google.devtools.build.lib.syntax.BaseFunction; +import com.google.devtools.build.lib.syntax.Environment; +import com.google.devtools.build.lib.syntax.EvalException; +import com.google.devtools.build.lib.syntax.FuncallExpression; +import com.google.devtools.build.lib.syntax.FunctionSignature; +import javax.annotation.Nullable; /** - * Fake implementation of {@link ProviderApi}. + * Fake implementation of {@link ProviderApi}. This fake is a subclass of {@link BaseFunction}, + * as providers are themselves callable. */ -public class FakeProviderApi implements ProviderApi { +public class FakeProviderApi extends BaseFunction implements ProviderApi { + + public FakeProviderApi() { + super("ProviderFunction", FunctionSignature.WithValues.create(FunctionSignature.KWARGS)); + } + + @Override + protected Object call(Object[] args, @Nullable FuncallExpression ast, Environment env) + throws EvalException, InterruptedException { + return new FakeStructApi(); + } @Override public void repr(SkylarkPrinter printer) {} diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java index e75a483829..f86c455f45 100644 --- a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java +++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkRuleFunctionsApi.java @@ -16,6 +16,7 @@ package com.google.devtools.build.skydoc.fakebuildapi; import com.google.common.collect.ImmutableMap; import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.cmdline.LabelSyntaxException; import com.google.devtools.build.lib.events.Location; import com.google.devtools.build.lib.skylarkbuildapi.FileApi; import com.google.devtools.build.lib.skylarkbuildapi.FileTypeApi; @@ -61,7 +62,7 @@ public class FakeSkylarkRuleFunctionsApi implements SkylarkRuleFunctionsApi<File @Override public ProviderApi provider(String doc, Object fields, Location location) throws EvalException { - return null; + return new FakeProviderApi(); } @Override @@ -97,7 +98,14 @@ public class FakeSkylarkRuleFunctionsApi implements SkylarkRuleFunctionsApi<File @Override public Label label(String labelString, Boolean relativeToCallerRepository, Location loc, Environment env) throws EvalException { - return null; + try { + return Label.parseAbsolute( + labelString, + /* defaultToMain= */ false, + /* repositoryMapping= */ ImmutableMap.of()); + } catch (LabelSyntaxException e) { + throw new EvalException(loc, "Illegal absolute label syntax: " + labelString); + } } @Override diff --git a/src/main/java/com/google/devtools/build/skydoc/rendering/AttributeInfo.java b/src/main/java/com/google/devtools/build/skydoc/rendering/AttributeInfo.java index 696fe2deb6..3824696527 100644 --- a/src/main/java/com/google/devtools/build/skydoc/rendering/AttributeInfo.java +++ b/src/main/java/com/google/devtools/build/skydoc/rendering/AttributeInfo.java @@ -26,7 +26,7 @@ public class AttributeInfo { public AttributeInfo(String name, String docString, String typeString, boolean mandatory) { this.name = name; - this.docString = docString; + this.docString = docString.trim(); this.typeString = typeString; this.mandatory = mandatory; } |