diff --git a/lib/core/text/flat.nit b/lib/core/text/flat.nit index 45ad144d4a..9f5659ad68 100644 --- a/lib/core/text/flat.nit +++ b/lib/core/text/flat.nit @@ -991,15 +991,10 @@ class FlatBuffer init from(s: Text) do _items = new NativeString(s.bytelen) - if s isa FlatText then - _items = s._items - else - for i in substrings do i.as(FlatString)._items.copy_to(_items, i._bytelen, 0, 0) - end + for i in s.substrings do i._items.copy_to(_items, i._bytelen, first_byte, 0) _bytelen = s.bytelen _length = s.length _capacity = _bytelen - written = true end # Create a new empty string with a given capacity. diff --git a/tests/sav/test_flatbuf_from.res b/tests/sav/test_flatbuf_from.res new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/sav/test_flatbuf_from_alt1.res b/tests/sav/test_flatbuf_from_alt1.res new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/sav/test_flatbuf_from_alt2.res b/tests/sav/test_flatbuf_from_alt2.res new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/test_flatbuf_from.nit b/tests/test_flatbuf_from.nit new file mode 100644 index 0000000000..a91883f601 --- /dev/null +++ b/tests/test_flatbuf_from.nit @@ -0,0 +1,25 @@ +# This file is part of NIT ( http://www.nitlanguage.org ). +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +#alt2 intrude import core::text::ropes + +var a = "String" + +var s: Text = a +#alt1 s = new FlatBuffer +#alt1 s.append(a) +#alt2 var b = a +#alt2 s = new Concat(a, b) + +var buf = new FlatBuffer.from(s)