diff options
author | cparsons <cparsons@google.com> | 2018-06-28 10:12:05 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-06-28 10:13:26 -0700 |
commit | e661f88e58ab73e1f21f16531e8cc78ff7d2cad9 (patch) | |
tree | ddf209e5e2bc9a61277c38e2f8a15fafe49b1dd4 /src/test/java/com | |
parent | 178e6cc5dd31a8b9748f9263eea6bcba5f2c7f31 (diff) |
Require @SkylarkCallable parameters to be explicitly specified.
This will be enforced by annotation processor.
This will be followed up, along with turndown of mandatoryPositionals, by
removing the intepreter code which infers the correct number and type of parameters.
RELNOTES: None.
PiperOrigin-RevId: 202499089
Diffstat (limited to 'src/test/java/com')
7 files changed, 56 insertions, 17 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/EnvironmentMissing.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/EnvironmentMissing.java index 405dc6dfb4..1a803714b9 100644 --- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/EnvironmentMissing.java +++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/EnvironmentMissing.java @@ -14,6 +14,7 @@ package com.google.devtools.build.lib.skylarkinterface.processor.testsources; +import com.google.devtools.build.lib.skylarkinterface.Param; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; /** @@ -22,8 +23,13 @@ import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; */ public class EnvironmentMissing { - @SkylarkCallable(name = "three_arg_method_missing_env", documented = false, useEnvironment = true) - public String threeArgMethod(String one, Integer two, String three) { + @SkylarkCallable(name = "three_arg_method_missing_env", documented = false, + parameters = { + @Param(name = "one", type = String.class, named = true), + @Param(name = "two", type = Integer.class, named = true), + }, + useEnvironment = true) + public String threeArgMethod(String one, Integer two, String shouldBeEnv) { return "bar"; } } diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java index 6df1d649a9..579c7e2347 100644 --- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java +++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/GoldenCase.java @@ -76,14 +76,15 @@ public class GoldenCase { return 0; } - @SkylarkCallable( - name = "three_arg_method", - documented = false) - public String threeArgMethod(String one, Integer two, String three) { - return "bar"; - } - - @SkylarkCallable(name = "three_arg_method_with_ast", documented = false, useAst = true) + @SkylarkCallable(name = "three_arg_method_with_ast", + documented = false, + parameters = { + @Param(name = "one", type = String.class, named = true), + @Param(name = "two", type = Integer.class, named = true), + @Param(name = "three", type = String.class, named = true, + defaultValue = "None", noneable = true), + }, + useAst = true) public String threeArgMethod(String one, Integer two, String three, FuncallExpression ast) { return "bar"; } @@ -101,7 +102,7 @@ public class GoldenCase { }, named = true, defaultValue = "None", noneable = true), }) - public String threeArgMethodWithParams(String one, Integer two, Object three) { + public String threeArgMethod(String one, Integer two, Object three) { return "baz"; } diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/LocationMissing.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/LocationMissing.java index ee92215d82..34ba818d59 100644 --- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/LocationMissing.java +++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/LocationMissing.java @@ -14,6 +14,7 @@ package com.google.devtools.build.lib.skylarkinterface.processor.testsources; +import com.google.devtools.build.lib.skylarkinterface.Param; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import com.google.devtools.build.lib.syntax.Environment; @@ -26,10 +27,15 @@ public class LocationMissing { @SkylarkCallable( name = "three_arg_method_missing_location", documented = false, + parameters = { + @Param(name = "one", type = String.class, named = true), + @Param(name = "two", type = Integer.class, named = true), + }, useLocation = true, useEnvironment = true ) - public String threeArgMethod(String one, Integer two, String three, Environment environment) { + public String threeArgMethod(String one, Integer two, String shouldBeLoc, + Environment environment) { return "bar"; } } diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoBeforeParams.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoBeforeParams.java index 0f093d83eb..5f9bc3872d 100644 --- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoBeforeParams.java +++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoBeforeParams.java @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.skylarkinterface.processor.testsources; import com.google.devtools.build.lib.events.Location; +import com.google.devtools.build.lib.skylarkinterface.Param; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import com.google.devtools.build.lib.syntax.Environment; @@ -27,6 +28,11 @@ public class SkylarkInfoBeforeParams { @SkylarkCallable( name = "skylark_info_wrong_order", documented = false, + parameters = { + @Param(name = "one", type = String.class, named = true), + @Param(name = "two", type = Integer.class, named = true), + @Param(name = "three", type = String.class, named = true) + }, useLocation = true, useEnvironment = true ) diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoParamsWrongOrder.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoParamsWrongOrder.java index 56710113f7..1edf5e015d 100644 --- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoParamsWrongOrder.java +++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/SkylarkInfoParamsWrongOrder.java @@ -15,6 +15,7 @@ package com.google.devtools.build.lib.skylarkinterface.processor.testsources; import com.google.devtools.build.lib.events.Location; +import com.google.devtools.build.lib.skylarkinterface.Param; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; import com.google.devtools.build.lib.syntax.Environment; @@ -27,6 +28,9 @@ public class SkylarkInfoParamsWrongOrder { @SkylarkCallable( name = "skylark_info_params_wrong_order", documented = false, + parameters = { + @Param(name = "some_param", type = String.class, named = true) + }, useLocation = true, useEnvironment = true ) diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithArguments.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithArguments.java index c2124c01be..9ec6166081 100644 --- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithArguments.java +++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/testsources/StructFieldWithArguments.java @@ -14,6 +14,7 @@ package com.google.devtools.build.lib.skylarkinterface.processor.testsources; +import com.google.devtools.build.lib.skylarkinterface.Param; import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; /** @@ -21,7 +22,11 @@ import com.google.devtools.build.lib.skylarkinterface.SkylarkCallable; */ public class StructFieldWithArguments { - @SkylarkCallable(name = "struct_field_method", structField = true, doc = "A private method") + @SkylarkCallable(name = "struct_field_method", + parameters = { + @Param(name = "foo", type = String.class, named = true), + }, + structField = true, doc = "A private method") public String structFieldMethod(String foo) { return "puppy"; } 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 c31cd277b6..e70a9c5a6e 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 @@ -120,11 +120,15 @@ public class SkylarkEvaluationTest extends EvaluationTest { return "I'm a mock named " + myName; } - @SkylarkCallable(name = "value_of", documented = false) + @SkylarkCallable(name = "value_of", + parameters = { @Param(name = "str", type = String.class) }, + documented = false) public static Integer valueOf(String str) { return Integer.valueOf(str); } - @SkylarkCallable(name = "is_empty", documented = false) + @SkylarkCallable(name = "is_empty", + parameters = { @Param(name = "str", type = String.class) }, + documented = false) public Boolean isEmpty(String str) { return str.isEmpty(); } @@ -155,7 +159,12 @@ public class SkylarkEvaluationTest extends EvaluationTest { return "a"; } @SuppressWarnings("unused") - @SkylarkCallable(name = "nullfunc_failing", documented = false, allowReturnNones = false) + @SkylarkCallable(name = "nullfunc_failing", + parameters = { + @Param(name = "p1", type = String.class), + @Param(name = "p2", type = Integer.class), + }, + documented = false, allowReturnNones = false) public SkylarkValue nullfuncFailing(String p1, Integer p2) { return null; } @@ -482,7 +491,9 @@ public class SkylarkEvaluationTest extends EvaluationTest { @SkylarkModule(name = "MockInterface", doc = "") static interface MockInterface { - @SkylarkCallable(name = "is_empty_interface", documented = false) + @SkylarkCallable(name = "is_empty_interface", + parameters = { @Param(name = "str", type = String.class) }, + documented = false) public Boolean isEmptyInterface(String str); } |