From 6afa932e9632f8520ef32cd0de36b3606f87de28 Mon Sep 17 00:00:00 2001 From: Michael Tautschnig Date: Sat, 29 Nov 2025 19:53:11 +0100 Subject: [PATCH] Java bytecode front-end: fix main method detection When parsing Java classes with just a class name (without method signature), JBMC was incorrectly using `resolve_friendly_method_name` which could report 'main method is ambiguous' errors. This fix checks if `config.main` contains a method signature (has a colon) and handles simple class names separately by looking for the standard main method signature directly. This aligns the Java front-end with Java's specification, where only `public static void main(String[] args)` is recognized as a valid program entry point. Fixes: #759 --- .../jbmc/main-method-ambiguity/Test.class | Bin 0 -> 616 bytes .../jbmc/main-method-ambiguity/Test.java | 20 +++++++ .../jbmc/main-method-ambiguity/test.desc | 8 +++ jbmc/src/java_bytecode/java_entry_point.cpp | 53 ++++++++++++++---- 4 files changed, 69 insertions(+), 12 deletions(-) create mode 100644 jbmc/regression/jbmc/main-method-ambiguity/Test.class create mode 100644 jbmc/regression/jbmc/main-method-ambiguity/Test.java create mode 100644 jbmc/regression/jbmc/main-method-ambiguity/test.desc diff --git a/jbmc/regression/jbmc/main-method-ambiguity/Test.class b/jbmc/regression/jbmc/main-method-ambiguity/Test.class new file mode 100644 index 0000000000000000000000000000000000000000..b88e1234be96e2a524edc55b56f7eb11e7216147 GIT binary patch literal 616 zcmZvZ%TB^T6o&t43x!fBiWl%26Bp=0H|{h><7MS#0Wncm1tw$=ikTK4#usp{CYorX zdmqYpP6Kp-Z8Dvi^PlfO=k(|I;|stcRvj2HZCEZ+NDCA@{)4~W^@H~IWuqgTkwAJ+ z1uEJXFsmC^S!9s4;kd}b6|m|uBuQ!A4@0RV)epjB75a^?Yzc@P8wG)Kf;=3lPPFc8 z2YHwdrZ8=zJn67t|ddIWow*Ui~MLn0V?N)Dmd!5B;}o{Kwb=b4XNvF zPl2AV0!pvmo+Zp$q*c(~-MA9S6Q_B1?%xmfv(^7~nZ0IrH~^>CALyn$Rm{(F>syS* z8V$vuaf)J@$3nXl1kaP!IXW%VSMcrTJH#^!F;6RpdCj6cmR9J7p9z^0%PN$@#2xbE zWbXy`BXXa}U%$iqX0{Qt`L_ZEdOa-A&V(q$gvB9&jhHZDRH9~<#`WyPB4BDd^M>Lh aZ0iY@`3gI+8nwYTDH!enH@i#+11o