@@ -79,6 +79,8 @@ void functionInvocationWithStringArgument() {
79
79
80
80
@ Test
81
81
void functionWithVarargs () {
82
+ // static String varargsFunction(String... strings) -> Arrays.toString(strings)
83
+
82
84
evaluate ("#varargsFunction()" , "[]" , String .class );
83
85
evaluate ("#varargsFunction(new String[0])" , "[]" , String .class );
84
86
evaluate ("#varargsFunction('a')" , "[a]" , String .class );
@@ -241,6 +243,27 @@ void functionFromMethodHandleWithListConvertedToVarargsArray() {
241
243
evaluate ("#formatObjectVarargs('x -> %s %s %s', {'a', 'b', 'c'})" , expected , String .class );
242
244
}
243
245
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
+
244
267
@ Test
245
268
void functionMethodMustBeStatic () throws Exception {
246
269
SpelExpressionParser parser = new SpelExpressionParser ();
0 commit comments