summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build.xml1
-rw-r--r--src/clj/clojure/string.clj5
-rw-r--r--test/clojure/test_clojure/string.clj1
3 files changed, 5 insertions, 2 deletions
diff --git a/build.xml b/build.xml
index 0d88a3b5..8bef017f 100644
--- a/build.xml
+++ b/build.xml
@@ -111,6 +111,7 @@
<arg value="clojure.java.javadoc"/>
<arg value="clojure.java.shell"/>
<arg value="clojure.java.browse-ui"/>
+ <arg value="clojure.string"/>
</java>
</target>
diff --git a/src/clj/clojure/string.clj b/src/clj/clojure/string.clj
index 76ac2d6d..dc061631 100644
--- a/src/clj/clojure/string.clj
+++ b/src/clj/clojure/string.clj
@@ -64,8 +64,9 @@ clojure.string adheres to the following design principles:
(cond
(instance? Character match) (.replace s ^Character match ^Character replacement)
(instance? CharSequence match) (.replace s ^CharSequence match ^CharSequence replacement)
- (instance? Pattern match) (if (string? replacement)
- (.replaceAll (re-matcher ^Pattern match s) ^CharSequence replacement)
+ (instance? Pattern match) (if (instance? CharSequence replacement)
+ (.replaceAll (re-matcher ^Pattern match s)
+ (.toString replacement))
(replace-by s match replacement))
:else (throw (IllegalArgumentException. (str "Invalid match arg: " match))))))
diff --git a/test/clojure/test_clojure/string.clj b/test/clojure/test_clojure/string.clj
index bacaaa7f..ac5f5d1a 100644
--- a/test/clojure/test_clojure/string.clj
+++ b/test/clojure/test_clojure/string.clj
@@ -81,6 +81,7 @@
"paz" s/reverse ["zap"]
"foo:bar" s/replace ["foo-bar" \- \:]
"ABC" s/replace ["abc" #"\w" s/upper-case]
+ "faa" s/replace ["foo" #"o" (StringBuffer. "a")]
"baz::quux" s/replace-first ["baz--quux" #"--" "::"]
"baz::quux" s/replace-first ["baz--quux" (StringBuffer. "--") (StringBuffer. "::")]
"zim-zam" s/replace-first ["zim zam" #" " (StringBuffer. "-")]