fix(library/vm/vm_string): bug at string.iterator.insert VM builtin implementation
This commit is contained in:
parent
e30f2f6604
commit
f8ce142da7
3 changed files with 26 additions and 1 deletions
|
|
@ -291,7 +291,7 @@ vm_obj string_iterator_insert(vm_obj const & it, vm_obj const & s) {
|
|||
return it;
|
||||
} else {
|
||||
std::string new_s = s_0.m_value;
|
||||
new_s.insert(1, s_1.m_value);
|
||||
new_s.insert(i, s_1.m_value);
|
||||
return mk_vm_pair(to_obj(new_s, s_0.m_length + s_1.m_length), mk_vm_nat(i));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,11 @@ let it₁ := s.mk_iterator.to_end in
|
|||
let it₂ := it₁.prev in
|
||||
it₁.prev_to_string ++ "-" ++ it₂.prev_to_string
|
||||
|
||||
def s (s : string) : string :=
|
||||
let it₁ := s.mk_iterator.to_end in
|
||||
let it₂ := it₁.prev in
|
||||
(it₁.insert "abc").to_string ++ (it₂.insert "de").to_string
|
||||
|
||||
#eval "hello" ++ "hello"
|
||||
#eval f "hello"
|
||||
#eval (f "αβ").length
|
||||
|
|
@ -48,3 +53,13 @@ it₁.prev_to_string ++ "-" ++ it₂.prev_to_string
|
|||
#eval (("a".push (char.of_nat 0)) ++ "αb").length
|
||||
#eval r "abc"
|
||||
#eval "abc".mk_iterator.to_end.prev_to_string
|
||||
#eval "".mk_iterator.has_next
|
||||
#eval "a".mk_iterator.has_next
|
||||
#eval "a".mk_iterator.next.has_next
|
||||
#eval "".mk_iterator.has_prev
|
||||
#eval "a".mk_iterator.next.has_prev
|
||||
#eval "αβ".mk_iterator.next.has_prev
|
||||
#eval "αβ".mk_iterator.next.prev.has_prev
|
||||
#eval ("αβ".mk_iterator.to_end.insert "abc").to_string
|
||||
#eval ("αβ".mk_iterator.next.insert "abc").to_string
|
||||
#eval s "αβ"
|
||||
|
|
|
|||
|
|
@ -32,3 +32,13 @@
|
|||
4
|
||||
"abc-ab"
|
||||
"abc"
|
||||
ff
|
||||
tt
|
||||
ff
|
||||
ff
|
||||
tt
|
||||
tt
|
||||
ff
|
||||
"αβabc"
|
||||
"αabcβ"
|
||||
"αβabcαdeβ"
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue