diff --git a/jbmc/regression/jbmc/lambda-unhandled-types/ChildInterface.class b/jbmc/regression/jbmc/lambda-unhandled-types/ChildInterface.class new file mode 100644 index 00000000000..12ad2ceb0d3 Binary files /dev/null and b/jbmc/regression/jbmc/lambda-unhandled-types/ChildInterface.class differ diff --git a/jbmc/regression/jbmc/lambda-unhandled-types/ChildInterface.java b/jbmc/regression/jbmc/lambda-unhandled-types/ChildInterface.java new file mode 100644 index 00000000000..a3ed0d666bd --- /dev/null +++ b/jbmc/regression/jbmc/lambda-unhandled-types/ChildInterface.java @@ -0,0 +1 @@ +interface ChildInterface extends ParentInterface {} diff --git a/jbmc/regression/jbmc/lambda-unhandled-types/ParentInterface.class b/jbmc/regression/jbmc/lambda-unhandled-types/ParentInterface.class new file mode 100644 index 00000000000..d6746f9f5cd Binary files /dev/null and b/jbmc/regression/jbmc/lambda-unhandled-types/ParentInterface.class differ diff --git a/jbmc/regression/jbmc/lambda-unhandled-types/ParentInterface.java b/jbmc/regression/jbmc/lambda-unhandled-types/ParentInterface.java new file mode 100644 index 00000000000..42a03ceb9b1 --- /dev/null +++ b/jbmc/regression/jbmc/lambda-unhandled-types/ParentInterface.java @@ -0,0 +1,3 @@ +interface ParentInterface { + public int f(int x); +} diff --git a/jbmc/regression/jbmc/lambda-unhandled-types/Test.class b/jbmc/regression/jbmc/lambda-unhandled-types/Test.class index a764627b92e..b7890fb2249 100644 Binary files a/jbmc/regression/jbmc/lambda-unhandled-types/Test.class and b/jbmc/regression/jbmc/lambda-unhandled-types/Test.class differ diff --git a/jbmc/regression/jbmc/lambda-unhandled-types/Test.java b/jbmc/regression/jbmc/lambda-unhandled-types/Test.java index b688b04f92f..e6199202dc6 100644 --- a/jbmc/regression/jbmc/lambda-unhandled-types/Test.java +++ b/jbmc/regression/jbmc/lambda-unhandled-types/Test.java @@ -6,5 +6,6 @@ public static void main() { StubSuperinterface stubSuperinterface = (x -> x); InterfaceDeclaringEquals interfaceDeclaringEquals = (x -> x); InterfaceWithDefaults interfaceWithDefaults = (x -> x); + ChildInterface inheritedInterface = x -> x; } } diff --git a/jbmc/regression/jbmc/lambda-unhandled-types/test.desc b/jbmc/regression/jbmc/lambda-unhandled-types/test.desc index 1e072030e68..0cb256f8775 100644 --- a/jbmc/regression/jbmc/lambda-unhandled-types/test.desc +++ b/jbmc/regression/jbmc/lambda-unhandled-types/test.desc @@ -8,9 +8,11 @@ Test.class ^ignoring invokedynamic at java::Test.main:\(\)V address 6 which produces type java::StubSuperinterface which should have exactly one abstract method but actually has 0. ^ignoring invokedynamic at java::Test.main:\(\)V address 12 which produces type java::InterfaceDeclaringEquals which should have exactly one abstract method but actually has 2. ^ignoring invokedynamic at java::Test.main:\(\)V address 18 which produces type java::InterfaceWithDefaults which should have exactly one abstract method but actually has 2. +^ignoring invokedynamic at java::Test.main:\(\)V address \d+ which produces type java::ChildInterface which should have exactly one abstract method but actually has 0. -- -- -This exercises four cases that aren't currently supported: stub interfaces, stub +This exercises five cases that aren't currently supported: stub interfaces, stub superinterfaces, interfaces that declare methods also declared on -java.lang.Object, and interfaces that provide default methods. All we require at -this point is that jbmc shouldn't crash when these are seen. +java.lang.Object, interfaces that provide default methods, interfaces that +inherit their one method. All we require at this point is that jbmc shouldn't +crash when these are seen.