From 85d4742a0199e4e704056246f4da66ad90ae10e7 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 13 Sep 2022 13:29:25 +0200 Subject: [PATCH] Java: Add dispatch test showing lack of union types. --- .../dispatch/ViableCallable4.java | 23 +++++++++++++++++++ .../dispatch/viableCallable.expected | 12 ++++++++++ 2 files changed, 35 insertions(+) create mode 100644 java/ql/test/library-tests/dispatch/ViableCallable4.java diff --git a/java/ql/test/library-tests/dispatch/ViableCallable4.java b/java/ql/test/library-tests/dispatch/ViableCallable4.java new file mode 100644 index 00000000000..bb1a5f4a678 --- /dev/null +++ b/java/ql/test/library-tests/dispatch/ViableCallable4.java @@ -0,0 +1,23 @@ +public class ViableCallable4 { + static class Sup { + void f() { } + } + static class A1 extends Sup { + @Override void f() { } + } + static class A2 extends Sup { + @Override void f() { } + } + static class A3 extends Sup { + @Override void f() { } + } + + void foo(Sup s, boolean b) { + s.f(); + if (s instanceof A1 || s instanceof A2) { + s.f(); + } + Sup s2 = b ? new A3() : new Sup(); + s2.f(); + } +} diff --git a/java/ql/test/library-tests/dispatch/viableCallable.expected b/java/ql/test/library-tests/dispatch/viableCallable.expected index 7490e4693b9..032bac595ac 100644 --- a/java/ql/test/library-tests/dispatch/viableCallable.expected +++ b/java/ql/test/library-tests/dispatch/viableCallable.expected @@ -7,6 +7,18 @@ | ViableCallable3.java:12:5:12:9 | h(...) | h | 1 | ViableCallable3 | | ViableCallable3.java:17:9:17:17 | get(...) | get | 9 | new Func(...) { ... } | | ViableCallable3.java:18:9:18:18 | get(...) | get | 10 | new Func(...) { ... } | +| ViableCallable4.java:16:5:16:9 | f(...) | f | 2 | Sup | +| ViableCallable4.java:16:5:16:9 | f(...) | f | 5 | A1 | +| ViableCallable4.java:16:5:16:9 | f(...) | f | 8 | A2 | +| ViableCallable4.java:16:5:16:9 | f(...) | f | 11 | A3 | +| ViableCallable4.java:18:7:18:11 | f(...) | f | 2 | Sup | +| ViableCallable4.java:18:7:18:11 | f(...) | f | 5 | A1 | +| ViableCallable4.java:18:7:18:11 | f(...) | f | 8 | A2 | +| ViableCallable4.java:18:7:18:11 | f(...) | f | 11 | A3 | +| ViableCallable4.java:21:5:21:10 | f(...) | f | 2 | Sup | +| ViableCallable4.java:21:5:21:10 | f(...) | f | 5 | A1 | +| ViableCallable4.java:21:5:21:10 | f(...) | f | 8 | A2 | +| ViableCallable4.java:21:5:21:10 | f(...) | f | 11 | A3 | | ViableCallable.java:5:3:5:13 | M(...) | M | 81 | C2 | | ViableCallable.java:5:3:5:13 | M(...) | M | 86 | C3 | | ViableCallable.java:5:3:5:13 | M(...) | M | 91 | C4 |