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.type:"java.lang.String", %1 : java.type:"int")java.type:"java.lang.String" -> {
14 %2 : Var<java.type:"java.lang.String"> = var %0 @"a";
15 %3 : Var<java.type:"int"> = var %1 @"b";
16 %4 : java.type:"java.lang.String" = var.load %2;
17 %5 : java.type:"int" = var.load %3;
18 %6 : java.type:"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.type:"java.lang.String", %1 : java.type:"char")java.type:"java.lang.String" -> {
29 %2 : Var<java.type:"java.lang.String"> = var %0 @"a";
30 %3 : Var<java.type:"char"> = var %1 @"b";
31 %4 : java.type:"java.lang.String" = var.load %2;
32 %5 : java.type:"char" = var.load %3;
33 %6 : java.type:"java.lang.String" = concat %4 %5;
34 var.store %2 %6;
35 %7 : java.type:"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.type:"java.lang.String", %1 : java.type:"float")java.type:"java.lang.String" -> {
47 %2 : Var<java.type:"java.lang.String"> = var %0 @"a";
48 %3 : Var<java.type:"float"> = var %1 @"b";
49 %4 : java.type:"java.lang.String" = var.load %2;
50 %5 : java.type:"float" = var.load %3;
51 %6 : java.type:"java.lang.String" = concat %4 %5;
52 var.store %2 %6;
53 %7 : java.type:"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 }