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