diff options
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java index 69a2725e7d..016fe30704 100644 --- a/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java +++ b/src/test/java/com/google/devtools/build/lib/skylarkinterface/processor/SkylarkCallableProcessorTest.java @@ -74,7 +74,29 @@ public final class SkylarkCallableProcessorTest { .failsToCompile() .withErrorContaining( "@SkylarkCallable-annotated methods with structField=true may not also specify " - + "useAst, useEnvironment, or useLocation"); + + "useAst, useEnvironment, useLocation, extraPositionals, or extraKeywords"); + } + + @Test + public void testStructFieldWithExtraArgs() throws Exception { + assertAbout(javaSource()) + .that(getFile("StructFieldWithExtraArgs.java")) + .processedWith(new SkylarkCallableProcessor()) + .failsToCompile() + .withErrorContaining( + "@SkylarkCallable-annotated methods with structField=true may not also specify " + + "useAst, useEnvironment, useLocation, extraPositionals, or extraKeywords"); + } + + @Test + public void testStructFieldWithExtraKeywords() throws Exception { + assertAbout(javaSource()) + .that(getFile("StructFieldWithExtraKeywords.java")) + .processedWith(new SkylarkCallableProcessor()) + .failsToCompile() + .withErrorContaining( + "@SkylarkCallable-annotated methods with structField=true may not also specify " + + "useAst, useEnvironment, useLocation, extraPositionals, or extraKeywords"); } @Test @@ -220,4 +242,27 @@ public final class SkylarkCallableProcessorTest { .withErrorContaining( "Positional-only parameter 'two' is specified after one or more named parameters"); } + + @Test + public void testExtraKeywordsOutOfOrder() throws Exception { + assertAbout(javaSource()) + .that(getFile("ExtraKeywordsOutOfOrder.java")) + .processedWith(new SkylarkCallableProcessor()) + .failsToCompile() + .withErrorContaining( + "Expected parameter index 1 to be the " + + "com.google.devtools.build.lib.syntax.SkylarkDict<?,?> type, matching " + + "extraKeywords, but was java.lang.String"); + } + + @Test + public void testExtraPositionalsMissing() throws Exception { + assertAbout(javaSource()) + .that(getFile("ExtraPositionalsMissing.java")) + .processedWith(new SkylarkCallableProcessor()) + .failsToCompile() + .withErrorContaining( + "@SkylarkCallable annotated method has 3 parameters, but annotation declared " + + "1 user-supplied parameters and 3 extra interpreter parameters."); + } } |