1 import java.lang.runtime.CodeReflection;
 2 
 3 /*
 4  * @test
 5  * @build StringConcatTest
 6  * @build CodeReflectionTester
 7  * @run main CodeReflectionTester StringConcatTest
 8  */
 9 public class StringConcatTest {
10 
11     @IR("""
12             func @"test1" (%0 : java.lang.String, %1 : int)java.lang.String -> {
13                 %2 : Var<java.lang.String> = var %0 @"a";
14                 %3 : Var<int> = var %1 @"b";
15                 %4 : java.lang.String = var.load %2;
16                 %5 : int = var.load %3;
17                 %6 : java.lang.String = concat %4 %5;
18                 return %6;
19             };
20             """)
21     @CodeReflection
22     static String test1(String a, int b) {
23         return a + b;
24     }
25 
26     @IR("""
27             func @"test2" (%0 : java.lang.String, %1 : char)java.lang.String -> {
28                 %2 : Var<java.lang.String> = var %0 @"a";
29                 %3 : Var<char> = var %1 @"b";
30                 %4 : java.lang.String = var.load %2;
31                 %5 : char = var.load %3;
32                 %6 : java.lang.String = concat %4 %5;
33                 var.store %2 %6;
34                 %7 : java.lang.String = var.load %2;
35                 return %7;
36             };
37             """)
38     @CodeReflection
39     static String test2(String a, char b) {
40         a += b;
41         return a;
42     }
43 
44     @IR("""
45             func @"test3" (%0 : java.lang.String, %1 : float)java.lang.String -> {
46                 %2 : Var<java.lang.String> = var %0 @"a";
47                 %3 : Var<float> = var %1 @"b";
48                 %4 : java.lang.String = var.load %2;
49                 %5 : float = var.load %3;
50                 %6 : java.lang.String = concat %4 %5;
51                 var.store %2 %6;
52                 %7 : java.lang.String = var.load %2;
53                 return %7;
54             };
55             """)
56     @CodeReflection
57     static String test3(String a, float b) {
58         a = a + b;
59         return a;
60     }
61 }