@@ -79,6 +79,8 @@ void functionInvocationWithStringArgument() {
7979
8080 @ Test
8181 void functionWithVarargs () {
82+ // static String varargsFunction(String... strings) -> Arrays.toString(strings)
83+
8284 evaluate ("#varargsFunction()" , "[]" , String .class );
8385 evaluate ("#varargsFunction(new String[0])" , "[]" , String .class );
8486 evaluate ("#varargsFunction('a')" , "[a]" , String .class );
@@ -241,6 +243,27 @@ void functionFromMethodHandleWithListConvertedToVarargsArray() {
241243 evaluate ("#formatObjectVarargs('x -> %s %s %s', {'a', 'b', 'c'})" , expected , String .class );
242244 }
243245
246+ @ Test // gh-34109
247+ void functionViaMethodHandleForStaticMethodThatAcceptsOnlyVarargs () {
248+ // #varargsFunctionHandle: static String varargsFunction(String... strings) -> Arrays.toString(strings)
249+
250+ evaluate ("#varargsFunctionHandle()" , "[]" , String .class );
251+ evaluate ("#varargsFunctionHandle(new String[0])" , "[]" , String .class );
252+ evaluate ("#varargsFunctionHandle('a')" , "[a]" , String .class );
253+ evaluate ("#varargsFunctionHandle('a','b','c')" , "[a, b, c]" , String .class );
254+ evaluate ("#varargsFunctionHandle(new String[]{'a','b','c'})" , "[a, b, c]" , String .class );
255+ // Conversion from int to String
256+ evaluate ("#varargsFunctionHandle(25)" , "[25]" , String .class );
257+ evaluate ("#varargsFunctionHandle('b',25)" , "[b, 25]" , String .class );
258+ evaluate ("#varargsFunctionHandle(new int[]{1, 2, 3})" , "[1, 2, 3]" , String .class );
259+ // Strings that contain a comma
260+ evaluate ("#varargsFunctionHandle('a,b')" , "[a,b]" , String .class );
261+ evaluate ("#varargsFunctionHandle('a', 'x,y', 'd')" , "[a, x,y, d]" , String .class );
262+ // null values
263+ evaluate ("#varargsFunctionHandle(null)" , "[null]" , String .class );
264+ evaluate ("#varargsFunctionHandle('a',null,'b')" , "[a, null, b]" , String .class );
265+ }
266+
244267 @ Test
245268 void functionMethodMustBeStatic () throws Exception {
246269 SpelExpressionParser parser = new SpelExpressionParser ();
0 commit comments