From eecf03ba128029e296ef681c1ade863b1eec0aca Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Tue, 20 May 2025 16:58:08 +0200 Subject: [PATCH 1/2] Java: Add test showing missing dispatch for incomplete parameterised type. --- java/ql/test/library-tests/errortype/Dispatch.expected | 1 + java/ql/test/library-tests/errortype/Dispatch.ql | 6 ++++++ java/ql/test/library-tests/errortype/Test.java | 10 ++++++++++ 3 files changed, 17 insertions(+) create mode 100644 java/ql/test/library-tests/errortype/Dispatch.expected create mode 100644 java/ql/test/library-tests/errortype/Dispatch.ql diff --git a/java/ql/test/library-tests/errortype/Dispatch.expected b/java/ql/test/library-tests/errortype/Dispatch.expected new file mode 100644 index 000000000000..68990d0c3bba --- /dev/null +++ b/java/ql/test/library-tests/errortype/Dispatch.expected @@ -0,0 +1 @@ +| Test.java:16:5:16:15 | method(...) | Test.java:11:17:11:22 | method | diff --git a/java/ql/test/library-tests/errortype/Dispatch.ql b/java/ql/test/library-tests/errortype/Dispatch.ql new file mode 100644 index 000000000000..2c9af37602c4 --- /dev/null +++ b/java/ql/test/library-tests/errortype/Dispatch.ql @@ -0,0 +1,6 @@ +import java +import semmle.code.java.dispatch.VirtualDispatch + +from MethodCall mc, Method m +where viableImpl(mc) = m +select mc, m diff --git a/java/ql/test/library-tests/errortype/Test.java b/java/ql/test/library-tests/errortype/Test.java index c393faf75990..645d358b2394 100644 --- a/java/ql/test/library-tests/errortype/Test.java +++ b/java/ql/test/library-tests/errortype/Test.java @@ -7,6 +7,16 @@ public NoSuchClass test() { return nsc; } + static class GenericClass { + public void method() { } + } + + public testDispatch() { + GenericClass g1 = new GenericClass<>(); + g1.method(); + GenericClass g2 = new GenericClass<>(); + g2.method(); + } } // Diagnostic Matches: Unexpected symbol for constructor: new NoSuchClass() From 81ebf9d9f04a2e0dbf8361eac088c1332e4db455 Mon Sep 17 00:00:00 2001 From: Anders Schack-Mulligen Date: Wed, 21 May 2025 13:38:29 +0200 Subject: [PATCH 2/2] Update java/ql/test/library-tests/errortype/Test.java Co-authored-by: Chris Smowton --- java/ql/test/library-tests/errortype/Test.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/ql/test/library-tests/errortype/Test.java b/java/ql/test/library-tests/errortype/Test.java index 645d358b2394..2999994b3cae 100644 --- a/java/ql/test/library-tests/errortype/Test.java +++ b/java/ql/test/library-tests/errortype/Test.java @@ -11,7 +11,7 @@ static class GenericClass { public void method() { } } - public testDispatch() { + public void testDispatch() { GenericClass g1 = new GenericClass<>(); g1.method(); GenericClass g2 = new GenericClass<>();