Skip to content

Commit 6b619e0

Browse files
Deactivate preprocessing of charAt and substring
We provide functions CProverString.charAt and CProverString.substring. The reason we deactivate these is that the internal modelling differs from the real Java implementation because it lacks the ability to throw exceptions, in particular for the out of bounds case.
1 parent bcfaaa4 commit 6b619e0

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/java_bytecode/java_string_library_preprocess.cpp

+9-3
Original file line numberDiff line numberDiff line change
@@ -1890,8 +1890,10 @@ void java_string_library_preprocesst::initialize_conversion_table()
18901890
["java::java.lang.String.<init>:()V"]=
18911891
ID_cprover_string_empty_string_func;
18921892

1893+
// CProverString.charAt differs from the Java String.charAt in that no
1894+
// exception is raised for the out of bounds case.
18931895
cprover_equivalent_to_java_function
1894-
["java::java.lang.String.charAt:(I)C"]=
1896+
["java::org.cprover.CProverString.charAt:(Ljava/lang/String;I)C"]=
18951897
ID_cprover_string_char_at_func;
18961898
cprover_equivalent_to_java_function
18971899
["java::java.lang.String.codePointAt:(I)I"]=
@@ -1999,11 +2001,15 @@ void java_string_library_preprocesst::initialize_conversion_table()
19992001
cprover_equivalent_to_java_string_returning_function
20002002
["java::java.lang.String.subSequence:(II)Ljava/lang/CharSequence;"]=
20012003
ID_cprover_string_substring_func;
2004+
// CProverString.substring differs from the Java String.substring in that no
2005+
// exception is raised for the out of bounds case.
20022006
cprover_equivalent_to_java_string_returning_function
2003-
["java::java.lang.String.substring:(II)Ljava/lang/String;"]=
2007+
["java::org.cprover.CProverString.substring:(Ljava/lang/String;II)"
2008+
"Ljava/lang/String;"]=
20042009
ID_cprover_string_substring_func;
20052010
cprover_equivalent_to_java_string_returning_function
2006-
["java::java.lang.String.substring:(I)Ljava/lang/String;"]=
2011+
["java::org.cprover.CProverString.substring:(Ljava/lang/String;I)"
2012+
"Ljava/lang/String;"]=
20072013
ID_cprover_string_substring_func;
20082014
cprover_equivalent_to_java_string_returning_function
20092015
["java::java.lang.String.toLowerCase:()Ljava/lang/String;"]=

0 commit comments

Comments
 (0)