@@ -367,6 +367,102 @@ SCENARIO(
367
367
validate_member_variable_lambda_assignment (
368
368
symbol_table, instructions, test_data, " simpleLambda" );
369
369
}
370
+ THEN (
371
+ " The local variable should be assigned a temp object implementing "
372
+ " ParameterLambda" )
373
+ {
374
+ lambda_assignment_test_datat test_data;
375
+ test_data.lambda_interface = " java::ParameterLambda" ;
376
+ test_data.lambda_interface_method_descriptor =
377
+ " .Execute:(ILjava/lang/Object;LDummyGeneric;)V" ;
378
+ test_data.lambda_function_id =
379
+ " java::MemberLambdas.lambda$new$1:"
380
+ " (ILjava/lang/Object;LDummyGeneric;)V" ;
381
+
382
+ symbol_exprt integer_param{" primitive" , java_int_type ()};
383
+ symbol_exprt ref_param{" reference" ,
384
+ java_type_from_string (" Ljava/lang/Object;" )};
385
+ symbol_exprt generic_param{
386
+ " specalisedGeneric" ,
387
+ java_type_from_string (" LDummyGeneric<Ljava/lang/Interger;>;" )};
388
+ test_data.expected_params = {integer_param, ref_param, generic_param};
389
+
390
+ test_data.should_return_value = false ;
391
+ validate_member_variable_lambda_assignment (
392
+ symbol_table, instructions, test_data, " paramLambda" );
393
+ }
394
+ THEN (
395
+ " The local variable should be assigned a non-null pointer to a "
396
+ " array parameter interface implementor" )
397
+ {
398
+ lambda_assignment_test_datat test_data;
399
+ test_data.lambda_interface = " java::ArrayParameterLambda" ;
400
+ test_data.lambda_interface_method_descriptor =
401
+ " .Execute:([I[Ljava/lang/Object;[LDummyGeneric;)V" ;
402
+ test_data.lambda_function_id =
403
+ " java::MemberLambdas.lambda$new$2:"
404
+ " ([I[Ljava/lang/Object;[LDummyGeneric;)V" ;
405
+
406
+ symbol_exprt integer_param{" primitive" , java_type_from_string (" [I" )};
407
+ symbol_exprt ref_param{" reference" ,
408
+ java_type_from_string (" [Ljava/lang/Object;" )};
409
+ symbol_exprt generic_param{
410
+ " specalisedGeneric" ,
411
+ java_type_from_string (" [LDummyGeneric<Ljava/lang/Interger;>;" )};
412
+ test_data.expected_params = {integer_param, ref_param, generic_param};
413
+ test_data.should_return_value = false ;
414
+
415
+ validate_member_variable_lambda_assignment (
416
+ symbol_table, instructions, test_data, " arrayParamLambda" );
417
+ }
418
+ THEN (
419
+ " The local variable should be assigned a temp object implementing "
420
+ " ReturningLambdaPrimitive" )
421
+ {
422
+ lambda_assignment_test_datat test_data;
423
+ test_data.lambda_interface = " java::ReturningLambdaPrimitive" ;
424
+ test_data.lambda_interface_method_descriptor = " .Execute:()I" ;
425
+ test_data.lambda_function_id = " java::MemberLambdas.lambda$new$3:()I" ;
426
+ test_data.expected_params = {};
427
+ test_data.should_return_value = true ;
428
+ validate_member_variable_lambda_assignment (
429
+ symbol_table, instructions, test_data, " returnPrimitiveLambda" );
430
+ }
431
+ THEN (
432
+ " The local variable should be assigned a temp object implementing "
433
+ " ReturningLambdaReference" )
434
+ {
435
+ lambda_assignment_test_datat test_data;
436
+ test_data.lambda_interface = " java::ReturningLambdaReference" ;
437
+ test_data.lambda_interface_method_descriptor =
438
+ " .Execute:()Ljava/lang/Object;" ;
439
+ test_data.lambda_function_id =
440
+ " java::MemberLambdas.lambda$new$4:()Ljava/lang/Object;" ;
441
+ test_data.expected_params = {};
442
+ test_data.should_return_value = true ;
443
+ validate_member_variable_lambda_assignment (
444
+ symbol_table, instructions, test_data, " returnReferenceLambda" );
445
+ }
446
+ THEN (
447
+ " The local variable should be assigned a temp object implementing "
448
+ " ReturningLambdaSpecalisedGeneric" )
449
+ {
450
+ lambda_assignment_test_datat test_data;
451
+ test_data.lambda_interface = " java::ReturningLambdaSpecalisedGeneric" ;
452
+ test_data.lambda_interface_method_descriptor =
453
+ " .Execute:()LDummyGeneric;" ;
454
+ test_data.lambda_function_id =
455
+ " java::MemberLambdas.lambda$new$5:()LDummyGeneric;" ;
456
+ test_data.expected_params = {};
457
+ test_data.should_return_value = true ;
458
+ validate_member_variable_lambda_assignment (
459
+ symbol_table,
460
+ instructions,
461
+ test_data,
462
+ " returningSpecalisedGenericLambda" );
463
+ }
464
+
465
+ // TODO[TG-2486]: Tests for member lambdas that capture member variables
370
466
}
371
467
}
372
468
});
0 commit comments