Adapt control-flow graph to record patterns

This commit is contained in:
Chris Smowton
2023-11-01 18:22:25 +00:00
parent 556feb31f0
commit 05addde957
5 changed files with 89 additions and 17 deletions

View File

@@ -84,6 +84,23 @@ public class Test {
break;
}
switch(thing) {
case A(B(int x, String y), float z):
break;
default:
break;
}
switch(thing) {
case A(B(var x, var y), var z):
break;
default:
break;
}
}
}
record A(B b, float field3) { }
record B(int field1, String field2) { }

View File

@@ -1,6 +1,6 @@
| Test.java:1:14:1:17 | super(...) | Test.java:1:14:1:17 | Test |
| Test.java:1:14:1:17 | { ... } | Test.java:1:14:1:17 | super(...) |
| Test.java:3:41:87:3 | { ... } | Test.java:5:6:5:19 | switch (...) |
| Test.java:3:41:101:3 | { ... } | Test.java:5:6:5:19 | switch (...) |
| Test.java:5:6:5:19 | switch (...) | Test.java:5:14:5:18 | thing |
| Test.java:5:14:5:18 | thing | Test.java:6:8:6:23 | case T t ... |
| Test.java:6:8:6:23 | case T t ... | Test.java:6:20:6:20 | s |
@@ -199,13 +199,13 @@
| Test.java:75:10:75:30 | println(...) | Test.java:76:10:76:15 | break |
| Test.java:75:10:75:31 | <Expr>; | Test.java:75:10:75:19 | System.out |
| Test.java:75:29:75:29 | s | Test.java:75:10:75:30 | println(...) |
| Test.java:76:10:76:15 | break | Test.java:3:22:3:25 | test |
| Test.java:76:10:76:15 | break | Test.java:87:6:87:18 | switch (...) |
| Test.java:77:8:77:17 | case ... | Test.java:78:10:78:41 | <Expr>; |
| Test.java:78:10:78:19 | System.out | Test.java:78:29:78:39 | "It's null" |
| Test.java:78:10:78:40 | println(...) | Test.java:79:10:79:15 | break |
| Test.java:78:10:78:41 | <Expr>; | Test.java:78:10:78:19 | System.out |
| Test.java:78:29:78:39 | "It's null" | Test.java:78:10:78:40 | println(...) |
| Test.java:79:10:79:15 | break | Test.java:3:22:3:25 | test |
| Test.java:79:10:79:15 | break | Test.java:87:6:87:18 | switch (...) |
| Test.java:80:8:80:22 | case T t ... | Test.java:80:21:80:21 | i |
| Test.java:80:8:80:22 | case T t ... | Test.java:83:8:83:15 | default |
| Test.java:80:21:80:21 | i | Test.java:81:10:81:47 | <Expr>; |
@@ -215,6 +215,50 @@
| Test.java:81:29:81:41 | "An integer:" | Test.java:81:45:81:45 | i |
| Test.java:81:29:81:45 | ... + ... | Test.java:81:10:81:46 | println(...) |
| Test.java:81:45:81:45 | i | Test.java:81:29:81:45 | ... + ... |
| Test.java:82:10:82:15 | break | Test.java:3:22:3:25 | test |
| Test.java:82:10:82:15 | break | Test.java:87:6:87:18 | switch (...) |
| Test.java:83:8:83:15 | default | Test.java:84:10:84:15 | break |
| Test.java:84:10:84:15 | break | Test.java:3:22:3:25 | test |
| Test.java:84:10:84:15 | break | Test.java:87:6:87:18 | switch (...) |
| Test.java:87:6:87:18 | switch (...) | Test.java:87:13:87:17 | thing |
| Test.java:87:13:87:17 | thing | Test.java:88:8:88:43 | case T t ... |
| Test.java:88:8:88:43 | case T t ... | Test.java:88:21:88:21 | x |
| Test.java:88:8:88:43 | case T t ... | Test.java:90:8:90:15 | default |
| Test.java:88:13:88:42 | A(...) | Test.java:89:10:89:15 | break |
| Test.java:88:15:88:32 | B(...) | Test.java:88:41:88:41 | z |
| Test.java:88:21:88:21 | x | Test.java:88:31:88:31 | y |
| Test.java:88:31:88:31 | y | Test.java:88:15:88:32 | B(...) |
| Test.java:88:41:88:41 | z | Test.java:88:13:88:42 | A(...) |
| Test.java:89:10:89:15 | break | Test.java:94:6:94:18 | switch (...) |
| Test.java:90:8:90:15 | default | Test.java:91:10:91:15 | break |
| Test.java:91:10:91:15 | break | Test.java:94:6:94:18 | switch (...) |
| Test.java:94:6:94:18 | switch (...) | Test.java:94:13:94:17 | thing |
| Test.java:94:13:94:17 | thing | Test.java:95:8:95:38 | case T t ... |
| Test.java:95:8:95:38 | case T t ... | Test.java:95:21:95:21 | x |
| Test.java:95:8:95:38 | case T t ... | Test.java:97:8:97:15 | default |
| Test.java:95:13:95:37 | A(...) | Test.java:96:10:96:15 | break |
| Test.java:95:15:95:29 | B(...) | Test.java:95:36:95:36 | z |
| Test.java:95:21:95:21 | x | Test.java:95:28:95:28 | y |
| Test.java:95:28:95:28 | y | Test.java:95:15:95:29 | B(...) |
| Test.java:95:36:95:36 | z | Test.java:95:13:95:37 | A(...) |
| Test.java:96:10:96:15 | break | Test.java:3:22:3:25 | test |
| Test.java:97:8:97:15 | default | Test.java:98:10:98:15 | break |
| Test.java:98:10:98:15 | break | Test.java:3:22:3:25 | test |
| Test.java:105:8:105:8 | ...=... | Test.java:105:8:105:8 | <Expr>; |
| Test.java:105:8:105:8 | ...=... | Test.java:105:8:105:8 | A |
| Test.java:105:8:105:8 | <Expr>; | Test.java:105:8:105:8 | this |
| Test.java:105:8:105:8 | <Expr>; | Test.java:105:8:105:8 | this |
| Test.java:105:8:105:8 | b | Test.java:105:8:105:8 | ...=... |
| Test.java:105:8:105:8 | field3 | Test.java:105:8:105:8 | ...=... |
| Test.java:105:8:105:8 | super(...) | Test.java:105:8:105:8 | <Expr>; |
| Test.java:105:8:105:8 | this | Test.java:105:8:105:8 | b |
| Test.java:105:8:105:8 | this | Test.java:105:8:105:8 | field3 |
| Test.java:105:8:105:8 | { ... } | Test.java:105:8:105:8 | super(...) |
| Test.java:106:8:106:8 | ...=... | Test.java:106:8:106:8 | <Expr>; |
| Test.java:106:8:106:8 | ...=... | Test.java:106:8:106:8 | B |
| Test.java:106:8:106:8 | <Expr>; | Test.java:106:8:106:8 | this |
| Test.java:106:8:106:8 | <Expr>; | Test.java:106:8:106:8 | this |
| Test.java:106:8:106:8 | field1 | Test.java:106:8:106:8 | ...=... |
| Test.java:106:8:106:8 | field2 | Test.java:106:8:106:8 | ...=... |
| Test.java:106:8:106:8 | super(...) | Test.java:106:8:106:8 | <Expr>; |
| Test.java:106:8:106:8 | this | Test.java:106:8:106:8 | field1 |
| Test.java:106:8:106:8 | this | Test.java:106:8:106:8 | field2 |
| Test.java:106:8:106:8 | { ... } | Test.java:106:8:106:8 | super(...) |