diff --git a/src/fable-library-py/fable_library/System.Text.fs b/src/fable-library-py/fable_library/System.Text.fs index 1fa48be009..debe8a2cf1 100644 --- a/src/fable-library-py/fable_library/System.Text.fs +++ b/src/fable-library-py/fable_library/System.Text.fs @@ -31,10 +31,42 @@ type StringBuilder(value: string, capacity: int) = buf.Add(s) x + member x.Append(o: int8) = + buf.Add(string o) + x + + member x.Append(o: byte) = + buf.Add(string o) + x + + member x.Append(o: int16) = + buf.Add(string o) + x + + member x.Append(o: uint16) = + buf.Add(string o) + x + member x.Append(o: int) = buf.Add(string o) x + member x.Append(o: uint32) = + buf.Add(string o) + x + + member x.Append(o: int64) = + buf.Add(string o) + x + + member x.Append(o: uint64) = + buf.Add(string o) + x + + member x.Append(o: float32) = + buf.Add(string o) + x + member x.Append(o: float) = buf.Add(string o) x diff --git a/src/fable-library-ts/System.Text.fs b/src/fable-library-ts/System.Text.fs index fd1b6f47ea..685cc1df3d 100644 --- a/src/fable-library-ts/System.Text.fs +++ b/src/fable-library-ts/System.Text.fs @@ -28,10 +28,42 @@ type StringBuilder(value: string, capacity: int) = buf.Add(s) x + member x.Append(o: int8) = + buf.Add(string o) + x + + member x.Append(o: byte) = + buf.Add(string o) + x + + member x.Append(o: int16) = + buf.Add(string o) + x + + member x.Append(o: uint16) = + buf.Add(string o) + x + member x.Append(o: int) = buf.Add(string o) x + member x.Append(o: uint32) = + buf.Add(string o) + x + + member x.Append(o: int64) = + buf.Add(string o) + x + + member x.Append(o: uint64) = + buf.Add(string o) + x + + member x.Append(o: float32) = + buf.Add(string o) + x + member x.Append(o: float) = buf.Add(string o) x diff --git a/tests/Js/Main/StringTests.fs b/tests/Js/Main/StringTests.fs index 8f430baf86..220c747093 100644 --- a/tests/Js/Main/StringTests.fs +++ b/tests/Js/Main/StringTests.fs @@ -110,6 +110,18 @@ let tests = testList "Strings" [ let actual = sb.ToString().Replace(",", ".").ToLower() actual |> equal "aaabcd/true5.234xxxx" + testCase "StringBuilder.Append works with numeric type overloads" <| fun () -> + let sb = System.Text.StringBuilder() + sb.Append(1y) |> ignore // int8 + sb.Append(2uy) |> ignore // byte + sb.Append(3s) |> ignore // int16 + sb.Append(4us) |> ignore // uint16 + sb.Append(5u) |> ignore // uint32 + sb.Append(6L) |> ignore // int64 + sb.Append(7UL) |> ignore // uint64 + sb.Append(8.0f) |> ignore // float32 + sb.ToString().Replace(",", ".") |> equal "12345678" + testCase "StringBuilder.AppendFormat works" <| fun () -> let sb = System.Text.StringBuilder() sb.AppendFormat("Hello{0}World{1}", " ", "!") |> ignore diff --git a/tests/Python/TestString.fs b/tests/Python/TestString.fs index 65a4cb0139..d24644b914 100644 --- a/tests/Python/TestString.fs +++ b/tests/Python/TestString.fs @@ -261,6 +261,19 @@ let ``test StringBuilder.Append works with various overloads`` () = let actual = sb.ToString().ToLower() actual |> equal "aaabcd/true5.234xxxx" +[] +let ``test StringBuilder.Append works with numeric type overloads`` () = + let sb = System.Text.StringBuilder() + sb.Append(1y) |> ignore // int8 + sb.Append(2uy) |> ignore // byte + sb.Append(3s) |> ignore // int16 + sb.Append(4us) |> ignore // uint16 + sb.Append(5u) |> ignore // uint32 + sb.Append(6L) |> ignore // int64 + sb.Append(7UL) |> ignore // uint64 + sb.Append(8.0f) |> ignore // float32 + sb.ToString() |> equal "12345678" + [] let ``test StringBuilder.AppendFormat works`` () = let sb = System.Text.StringBuilder()