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