@@ -2968,32 +2968,13 @@ public String replaceFirst(String regex, String replacement) {
2968
2968
* @since 1.4
2969
2969
* @spec JSR-51
2970
2970
*
2971
- * @diffblue.limitedSupport
2972
- * We enforce the regex argument is a string literal without any special
2973
- * characters used in regular expressions:
2974
- * '[', ']','.', '\\', '?', '^', '$', '*', '+', '{', '}', '|', '(', ')',
2975
- * hence PatternSyntaxException will never be thrown.
2971
+ * @diffblue.noSupport
2976
2972
*/
2977
2973
public String replaceAll (String regex , String replacement )
2978
2974
{
2975
+ CProver .notModelled ();
2976
+ return CProver .nondetWithNullForNotModelled ();
2979
2977
// return Pattern.compile(regex).matcher(this).replaceAll(replacement);
2980
- // DIFFBLUE MODELS LIBRARY: we assume the expression is just a string literal
2981
- CProver .assume (
2982
- regex .indexOf ('[' ) == -1 &&
2983
- regex .indexOf (']' ) == -1 &&
2984
- regex .indexOf ('.' ) == -1 &&
2985
- regex .indexOf ('\\' ) == -1 &&
2986
- regex .indexOf ('?' ) == -1 &&
2987
- regex .indexOf ('^' ) == -1 &&
2988
- regex .indexOf ('$' ) == -1 &&
2989
- regex .indexOf ('*' ) == -1 &&
2990
- regex .indexOf ('+' ) == -1 &&
2991
- regex .indexOf ('{' ) == -1 &&
2992
- regex .indexOf ('}' ) == -1 &&
2993
- regex .indexOf ('|' ) == -1 &&
2994
- regex .indexOf ('(' ) == -1 &&
2995
- regex .indexOf (')' ) == -1 );
2996
- return replace (regex , replacement );
2997
2978
}
2998
2979
2999
2980
/**
@@ -3008,14 +2989,10 @@ public String replaceAll(String regex, String replacement)
3008
2989
* @return The resulting string
3009
2990
* @since 1.5
3010
2991
*
3011
- * @diffblue.limitedSupport
3012
- * Only works for arguments that are constant strings with only 1 character.
3013
- * For instance, we can generate tests for s.replace("a", "b") but not
3014
- * s.replace("a", "bc") or s.replace(arg, "b").
3015
- * @diffblue.untested
2992
+ * @diffblue.noSupport
3016
2993
*/
3017
2994
public String replace (CharSequence target , CharSequence replacement ) {
3018
- // DIFFBLUE MODEL LIBRARY This is treated internally in CBMC
2995
+ CProver . notModelled ();
3019
2996
return CProver .nondetWithNullForNotModelled ();
3020
2997
// return Pattern.compile(target.toString(), Pattern.LITERAL).matcher(
3021
2998
// this).replaceAll(Matcher.quoteReplacement(replacement.toString()));
0 commit comments