diff options
author | 2018-04-11 11:09:17 -0700 | |
---|---|---|
committer | 2018-04-11 11:11:22 -0700 | |
commit | 4baafaca73cee2d3237999048acfc0d5f5f59a5b (patch) | |
tree | f67e4fa76f74c9458c579f4bec0e09d892cbb7da /src/test/java | |
parent | 51ae67a626aae45163175a1eee518b9e96e33fbc (diff) |
Introduce Param.legacyNamed() to handle migration from @SkylarkSignature to @SkylarkCallable.
@SkylarkSignature.parameters() treat named()=true for parameters regardless of whether named() was actually set to true, and thus for ease of migration we mark migrated parameters as legacyNamed() = true, which is currently semantically equivalent to named() = true.
We make a distinction so that it's easier to bulk fix these later.
RELNOTES: None.
PiperOrigin-RevId: 192477405
Diffstat (limited to 'src/test/java')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java index ab2245bcae..7657ced3bb 100644 --- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java +++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java @@ -164,6 +164,24 @@ public class SkylarkEvaluationTest extends EvaluationTest { return ImmutableMap.of("a", ImmutableList.of("b", "c")); } + @SkylarkCallable( + name = "legacy_method", + documented = false, + parameters = { + @Param(name = "pos", positional = true, type = Boolean.class), + @Param(name = "legacyNamed", type = Boolean.class, positional = true, named = false, + legacyNamed = true), + @Param(name = "named", type = Boolean.class, positional = false, named = true), + }) + public String legacyMethod(Boolean pos, Boolean legacyNamed, Boolean named) { + return "legacy_method(" + + pos + + ", " + + legacyNamed + + ", " + + named + + ")"; + } @SkylarkCallable( name = "with_params", @@ -1020,6 +1038,36 @@ public class SkylarkEvaluationTest extends EvaluationTest { .testLookup("b", "with_params(1, true, false, true, false, a)"); } + @Test + public void testLegacyNamed() throws Exception { + new SkylarkTest() + .update("mock", new Mock()) + .setUp( + "b = mock.legacy_method(True, legacyNamed=True, named=True)") + .testLookup("b", "legacy_method(true, true, true)"); + + new SkylarkTest() + .update("mock", new Mock()) + .setUp( + "b = mock.legacy_method(True, True, named=True)") + .testLookup("b", "legacy_method(true, true, true)"); + + // Verify legacyNamed also works with proxy method objects. + new SkylarkTest() + .update("mock", new Mock()) + .setUp( + "m = mock.proxy_methods_object()", + "b = m.legacy_method(True, legacyNamed=True, named=True)") + .testLookup("b", "legacy_method(true, true, true)"); + + new SkylarkTest() + .update("mock", new Mock()) + .setUp( + "m = mock.proxy_methods_object()", + "b = m.legacy_method(True, True, named=True)") + .testLookup("b", "legacy_method(true, true, true)"); + } + /** * This test verifies an error is raised when a method parameter is set both positionally and * by name. @@ -1758,6 +1806,7 @@ public class SkylarkEvaluationTest extends EvaluationTest { "dir(mock)", "function", "is_empty", + "legacy_method", "nullfunc_failing", "nullfunc_working", "proxy_methods_object", |