mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-18 02:43:40 +00:00
When a user writes a clause for a predicate (or function) that does not exist
with that arity, but does exist with one or more other arities, report not
just the list of the other arity/arities, but, for each such other arity,
a diff between the declared arg types and the inferred arg types.
After this diff, we generate output like this:
bad_pred_arity.m:027: Error: clause for predicate `bad_pred_arity.p'/4
bad_pred_arity.m:027: without corresponding `:- pred' declaration.
bad_pred_arity.m:027: However, predicates of that name do exist with arities
bad_pred_arity.m:027: 3 and 5.
bad_pred_arity.m:027: Inferred :- pred p(int, string, int, string).
bad_pred_arity.m:027: The argument list difference from the arity 3 version
bad_pred_arity.m:027: is
bad_pred_arity.m:027: pred(
bad_pred_arity.m:027: int,
bad_pred_arity.m:027: + string,
bad_pred_arity.m:027: int,
bad_pred_arity.m:027: string
bad_pred_arity.m:027: )
bad_pred_arity.m:027: The argument list difference from the arity 5 version
bad_pred_arity.m:027: is
bad_pred_arity.m:027: pred(
bad_pred_arity.m:027: int,
bad_pred_arity.m:027: - float,
bad_pred_arity.m:027: string,
bad_pred_arity.m:027: int,
bad_pred_arity.m:027: string
bad_pred_arity.m:027: )
compiler/typecheck_errors.m:
Generate the diff part of the message above.
compiler/typecheck.m:
Invoke typecheck_errors.m when relevant.
compiler/error_util.m:
When comparing two error_specs, switch from a two-level comparison
(first the contexts of error_msgs, then everything else) to three levels
first the contexts of error_msgs, then their error_msg_components,
then everything else). This is needed to allow the error message from
make_hlds_error.m (which reports the error and mentions the arities
with which the named predicate or function does exist) come out before
the informational message from typecheck.m that prints the inferred
arg types and their differences from the other arities. (With the old
comparison, the difference in severity would trump the invisible order
components that this diff includes in both specs to force the desire
order.)
Base the code comparing error_specs on the code for comparing error_msgs.
Move the two previously separate pieces code for those tasks next to each
other.
compiler/make_hlds_error.m:
Add the invisble ordering component.
When we see clauses with two or more wrong arities for a given predicate
or function, don't list the automatically created pred declaration
for an *earlier* wrong-arity clause as a real declaration whose arity
is to be listed in the error messages we generate for *later* wrong-arity
clauses.
Add some documentation.
compiler/add_pred.m:
Factor out some common code.
library/edit_seq.m:
A new module for computing diffs.
library/library.m:
library/MODULES_DOC:
Add the new module to the standard library.
tests/hard_coded/edit_seq_test.{m,exp}:
A new test case for the diff algorithm.
tests/invalid/bad_pred_arity.{m,err_exp}:
A new test case for the new error message.
tests/hard_coded/Mmakefile:
tests/invalid/Mmakefile:
Enable the new test cases.
tests/invalid/bigtest.err_exp:
tests/invalid/bug197.err_exp:
tests/invalid/bug278.err_exp:
tests/invalid/errors2.err_exp:
tests/invalid/invalid_binary_literal.err_exp:
tests/invalid/invalid_float_literal.err_exp:
tests/invalid/invalid_hex_literal.err_exp:
tests/invalid/invalid_main.err_exp:
tests/invalid/invalid_octal_literal.err_exp:
tests/invalid/multimode_dcg.err_exp:
tests/invalid/multisoln_func.err_exp:
tests/invalid/null_char.err_exp:
tests/invalid/state_vars_test3.err_exp:
tests/invalid/try_detism.err_exp2:
tests/invalid/typeclass_test_5.err_exp:
tests/invalid/typeclass_test_8.err_exp:
tests/invalid/unsatisfiable_constraint.err_exp:
tests/invalid_purity/impure_func_t3.err_exp:
Update these files to expect error messages in the new order.
samples/diff/*.m:
Fix comments, mostly by moving them to where our programming style
wants them.
1101 lines
15 KiB
Plaintext
1101 lines
15 KiB
Plaintext
|
|
------------------
|
|
|
|
SeqA: []
|
|
SeqB: []
|
|
Params: replace
|
|
Edits: []
|
|
Diff:
|
|
|
|
------------------
|
|
|
|
SeqA: []
|
|
SeqB: []
|
|
Params: delete/insert
|
|
Edits: []
|
|
Diff:
|
|
|
|
------------------
|
|
|
|
SeqA: []
|
|
SeqB: [3]
|
|
Params: replace
|
|
Edits: [insert(1, 3)]
|
|
Diff:
|
|
+ 3
|
|
|
|
------------------
|
|
|
|
SeqA: []
|
|
SeqB: [3]
|
|
Params: delete/insert
|
|
Edits: [insert(1, 3)]
|
|
Diff:
|
|
+ 3
|
|
|
|
------------------
|
|
|
|
SeqA: []
|
|
SeqB: [42]
|
|
Params: replace
|
|
Edits: [insert(1, 42)]
|
|
Diff:
|
|
+ 42
|
|
|
|
------------------
|
|
|
|
SeqA: []
|
|
SeqB: [42]
|
|
Params: delete/insert
|
|
Edits: [insert(1, 42)]
|
|
Diff:
|
|
+ 42
|
|
|
|
------------------
|
|
|
|
SeqA: []
|
|
SeqB: [3, 4, 5, 12, 13]
|
|
Params: replace
|
|
Edits: [insert(1, 3), insert(1, 4), insert(1, 5), insert(1, 12), insert(1, 13)]
|
|
Diff:
|
|
+ 3
|
|
+ 4
|
|
+ 5
|
|
+ 12
|
|
+ 13
|
|
|
|
------------------
|
|
|
|
SeqA: []
|
|
SeqB: [3, 4, 5, 12, 13]
|
|
Params: delete/insert
|
|
Edits: [insert(1, 3), insert(1, 4), insert(1, 5), insert(1, 12), insert(1, 13)]
|
|
Diff:
|
|
+ 3
|
|
+ 4
|
|
+ 5
|
|
+ 12
|
|
+ 13
|
|
|
|
------------------
|
|
|
|
SeqA: []
|
|
SeqB: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
Params: replace
|
|
Edits: [insert(1, 1), insert(1, 2), insert(1, 3), insert(1, 4), insert(1, 11), insert(1, 12), insert(1, 13), insert(1, 14)]
|
|
Diff:
|
|
+ 1
|
|
+ 2
|
|
+ 3
|
|
+ 4
|
|
+ 11
|
|
+ 12
|
|
+ 13
|
|
+ 14
|
|
|
|
------------------
|
|
|
|
SeqA: []
|
|
SeqB: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
Params: delete/insert
|
|
Edits: [insert(1, 1), insert(1, 2), insert(1, 3), insert(1, 4), insert(1, 11), insert(1, 12), insert(1, 13), insert(1, 14)]
|
|
Diff:
|
|
+ 1
|
|
+ 2
|
|
+ 3
|
|
+ 4
|
|
+ 11
|
|
+ 12
|
|
+ 13
|
|
+ 14
|
|
|
|
------------------
|
|
|
|
SeqA: []
|
|
SeqB: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
Params: replace
|
|
Edits: [insert(1, 1), insert(1, 19), insert(1, 2), insert(1, 29), insert(1, 3), insert(1, 38), insert(1, 39), insert(1, 4), insert(1, 12), insert(1, 11), insert(1, 13), insert(1, 14)]
|
|
Diff:
|
|
+ 1
|
|
+ 19
|
|
+ 2
|
|
+ 29
|
|
+ 3
|
|
+ 38
|
|
+ 39
|
|
+ 4
|
|
+ 12
|
|
+ 11
|
|
+ 13
|
|
+ 14
|
|
|
|
------------------
|
|
|
|
SeqA: []
|
|
SeqB: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
Params: delete/insert
|
|
Edits: [insert(1, 1), insert(1, 19), insert(1, 2), insert(1, 29), insert(1, 3), insert(1, 38), insert(1, 39), insert(1, 4), insert(1, 12), insert(1, 11), insert(1, 13), insert(1, 14)]
|
|
Diff:
|
|
+ 1
|
|
+ 19
|
|
+ 2
|
|
+ 29
|
|
+ 3
|
|
+ 38
|
|
+ 39
|
|
+ 4
|
|
+ 12
|
|
+ 11
|
|
+ 13
|
|
+ 14
|
|
|
|
------------------
|
|
|
|
SeqA: [3]
|
|
SeqB: []
|
|
Params: replace
|
|
Edits: [delete(1)]
|
|
Diff:
|
|
- 3
|
|
|
|
------------------
|
|
|
|
SeqA: [3]
|
|
SeqB: []
|
|
Params: delete/insert
|
|
Edits: [delete(1)]
|
|
Diff:
|
|
- 3
|
|
|
|
------------------
|
|
|
|
SeqA: [3]
|
|
SeqB: [3]
|
|
Params: replace
|
|
Edits: []
|
|
Diff:
|
|
3
|
|
|
|
------------------
|
|
|
|
SeqA: [3]
|
|
SeqB: [3]
|
|
Params: delete/insert
|
|
Edits: []
|
|
Diff:
|
|
3
|
|
|
|
------------------
|
|
|
|
SeqA: [3]
|
|
SeqB: [42]
|
|
Params: replace
|
|
Edits: [replace(1, 42)]
|
|
Diff:
|
|
- 3
|
|
+ 42
|
|
|
|
------------------
|
|
|
|
SeqA: [3]
|
|
SeqB: [42]
|
|
Params: delete/insert
|
|
Edits: [delete(1), insert(1, 42)]
|
|
Diff:
|
|
- 3
|
|
+ 42
|
|
|
|
------------------
|
|
|
|
SeqA: [3]
|
|
SeqB: [3, 4, 5, 12, 13]
|
|
Params: replace
|
|
Edits: [insert(1, 4), insert(1, 5), insert(1, 12), insert(1, 13)]
|
|
Diff:
|
|
3
|
|
+ 4
|
|
+ 5
|
|
+ 12
|
|
+ 13
|
|
|
|
------------------
|
|
|
|
SeqA: [3]
|
|
SeqB: [3, 4, 5, 12, 13]
|
|
Params: delete/insert
|
|
Edits: [insert(1, 4), insert(1, 5), insert(1, 12), insert(1, 13)]
|
|
Diff:
|
|
3
|
|
+ 4
|
|
+ 5
|
|
+ 12
|
|
+ 13
|
|
|
|
------------------
|
|
|
|
SeqA: [3]
|
|
SeqB: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
Params: replace
|
|
Edits: [insert(1, 1), insert(1, 2), insert(1, 4), insert(1, 11), insert(1, 12), insert(1, 13), insert(1, 14)]
|
|
Diff:
|
|
3
|
|
+ 1
|
|
+ 2
|
|
+ 4
|
|
+ 11
|
|
+ 12
|
|
+ 13
|
|
+ 14
|
|
|
|
------------------
|
|
|
|
SeqA: [3]
|
|
SeqB: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
Params: delete/insert
|
|
Edits: [insert(1, 1), insert(1, 2), insert(1, 4), insert(1, 11), insert(1, 12), insert(1, 13), insert(1, 14)]
|
|
Diff:
|
|
3
|
|
+ 1
|
|
+ 2
|
|
+ 4
|
|
+ 11
|
|
+ 12
|
|
+ 13
|
|
+ 14
|
|
|
|
------------------
|
|
|
|
SeqA: [3]
|
|
SeqB: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
Params: replace
|
|
Edits: [insert(1, 1), insert(1, 19), insert(1, 2), insert(1, 29), insert(1, 38), insert(1, 39), insert(1, 4), insert(1, 12), insert(1, 11), insert(1, 13), insert(1, 14)]
|
|
Diff:
|
|
3
|
|
+ 1
|
|
+ 19
|
|
+ 2
|
|
+ 29
|
|
+ 38
|
|
+ 39
|
|
+ 4
|
|
+ 12
|
|
+ 11
|
|
+ 13
|
|
+ 14
|
|
|
|
------------------
|
|
|
|
SeqA: [3]
|
|
SeqB: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
Params: delete/insert
|
|
Edits: [insert(1, 1), insert(1, 19), insert(1, 2), insert(1, 29), insert(1, 38), insert(1, 39), insert(1, 4), insert(1, 12), insert(1, 11), insert(1, 13), insert(1, 14)]
|
|
Diff:
|
|
3
|
|
+ 1
|
|
+ 19
|
|
+ 2
|
|
+ 29
|
|
+ 38
|
|
+ 39
|
|
+ 4
|
|
+ 12
|
|
+ 11
|
|
+ 13
|
|
+ 14
|
|
|
|
------------------
|
|
|
|
SeqA: [42]
|
|
SeqB: []
|
|
Params: replace
|
|
Edits: [delete(1)]
|
|
Diff:
|
|
- 42
|
|
|
|
------------------
|
|
|
|
SeqA: [42]
|
|
SeqB: []
|
|
Params: delete/insert
|
|
Edits: [delete(1)]
|
|
Diff:
|
|
- 42
|
|
|
|
------------------
|
|
|
|
SeqA: [42]
|
|
SeqB: [3]
|
|
Params: replace
|
|
Edits: [replace(1, 3)]
|
|
Diff:
|
|
- 42
|
|
+ 3
|
|
|
|
------------------
|
|
|
|
SeqA: [42]
|
|
SeqB: [3]
|
|
Params: delete/insert
|
|
Edits: [delete(1), insert(1, 3)]
|
|
Diff:
|
|
- 42
|
|
+ 3
|
|
|
|
------------------
|
|
|
|
SeqA: [42]
|
|
SeqB: [42]
|
|
Params: replace
|
|
Edits: []
|
|
Diff:
|
|
42
|
|
|
|
------------------
|
|
|
|
SeqA: [42]
|
|
SeqB: [42]
|
|
Params: delete/insert
|
|
Edits: []
|
|
Diff:
|
|
42
|
|
|
|
------------------
|
|
|
|
SeqA: [42]
|
|
SeqB: [3, 4, 5, 12, 13]
|
|
Params: replace
|
|
Edits: [replace(1, 3), insert(1, 4), insert(1, 5), insert(1, 12), insert(1, 13)]
|
|
Diff:
|
|
- 42
|
|
+ 3
|
|
+ 4
|
|
+ 5
|
|
+ 12
|
|
+ 13
|
|
|
|
------------------
|
|
|
|
SeqA: [42]
|
|
SeqB: [3, 4, 5, 12, 13]
|
|
Params: delete/insert
|
|
Edits: [delete(1), insert(1, 3), insert(1, 4), insert(1, 5), insert(1, 12), insert(1, 13)]
|
|
Diff:
|
|
- 42
|
|
+ 3
|
|
+ 4
|
|
+ 5
|
|
+ 12
|
|
+ 13
|
|
|
|
------------------
|
|
|
|
SeqA: [42]
|
|
SeqB: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
Params: replace
|
|
Edits: [replace(1, 1), insert(1, 2), insert(1, 3), insert(1, 4), insert(1, 11), insert(1, 12), insert(1, 13), insert(1, 14)]
|
|
Diff:
|
|
- 42
|
|
+ 1
|
|
+ 2
|
|
+ 3
|
|
+ 4
|
|
+ 11
|
|
+ 12
|
|
+ 13
|
|
+ 14
|
|
|
|
------------------
|
|
|
|
SeqA: [42]
|
|
SeqB: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
Params: delete/insert
|
|
Edits: [delete(1), insert(1, 1), insert(1, 2), insert(1, 3), insert(1, 4), insert(1, 11), insert(1, 12), insert(1, 13), insert(1, 14)]
|
|
Diff:
|
|
- 42
|
|
+ 1
|
|
+ 2
|
|
+ 3
|
|
+ 4
|
|
+ 11
|
|
+ 12
|
|
+ 13
|
|
+ 14
|
|
|
|
------------------
|
|
|
|
SeqA: [42]
|
|
SeqB: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
Params: replace
|
|
Edits: [replace(1, 1), insert(1, 19), insert(1, 2), insert(1, 29), insert(1, 3), insert(1, 38), insert(1, 39), insert(1, 4), insert(1, 12), insert(1, 11), insert(1, 13), insert(1, 14)]
|
|
Diff:
|
|
- 42
|
|
+ 1
|
|
+ 19
|
|
+ 2
|
|
+ 29
|
|
+ 3
|
|
+ 38
|
|
+ 39
|
|
+ 4
|
|
+ 12
|
|
+ 11
|
|
+ 13
|
|
+ 14
|
|
|
|
------------------
|
|
|
|
SeqA: [42]
|
|
SeqB: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
Params: delete/insert
|
|
Edits: [delete(1), insert(1, 1), insert(1, 19), insert(1, 2), insert(1, 29), insert(1, 3), insert(1, 38), insert(1, 39), insert(1, 4), insert(1, 12), insert(1, 11), insert(1, 13), insert(1, 14)]
|
|
Diff:
|
|
- 42
|
|
+ 1
|
|
+ 19
|
|
+ 2
|
|
+ 29
|
|
+ 3
|
|
+ 38
|
|
+ 39
|
|
+ 4
|
|
+ 12
|
|
+ 11
|
|
+ 13
|
|
+ 14
|
|
|
|
------------------
|
|
|
|
SeqA: [3, 4, 5, 12, 13]
|
|
SeqB: []
|
|
Params: replace
|
|
Edits: [delete(1), delete(2), delete(3), delete(4), delete(5)]
|
|
Diff:
|
|
- 3
|
|
- 4
|
|
- 5
|
|
- 12
|
|
- 13
|
|
|
|
------------------
|
|
|
|
SeqA: [3, 4, 5, 12, 13]
|
|
SeqB: []
|
|
Params: delete/insert
|
|
Edits: [delete(1), delete(2), delete(3), delete(4), delete(5)]
|
|
Diff:
|
|
- 3
|
|
- 4
|
|
- 5
|
|
- 12
|
|
- 13
|
|
|
|
------------------
|
|
|
|
SeqA: [3, 4, 5, 12, 13]
|
|
SeqB: [3]
|
|
Params: replace
|
|
Edits: [delete(2), delete(3), delete(4), delete(5)]
|
|
Diff:
|
|
3
|
|
- 4
|
|
- 5
|
|
- 12
|
|
- 13
|
|
|
|
------------------
|
|
|
|
SeqA: [3, 4, 5, 12, 13]
|
|
SeqB: [3]
|
|
Params: delete/insert
|
|
Edits: [delete(2), delete(3), delete(4), delete(5)]
|
|
Diff:
|
|
3
|
|
- 4
|
|
- 5
|
|
- 12
|
|
- 13
|
|
|
|
------------------
|
|
|
|
SeqA: [3, 4, 5, 12, 13]
|
|
SeqB: [42]
|
|
Params: replace
|
|
Edits: [replace(1, 42), delete(2), delete(3), delete(4), delete(5)]
|
|
Diff:
|
|
- 3
|
|
- 4
|
|
- 5
|
|
- 12
|
|
- 13
|
|
+ 42
|
|
|
|
------------------
|
|
|
|
SeqA: [3, 4, 5, 12, 13]
|
|
SeqB: [42]
|
|
Params: delete/insert
|
|
Edits: [delete(1), delete(2), delete(3), delete(4), delete(5), insert(5, 42)]
|
|
Diff:
|
|
- 3
|
|
- 4
|
|
- 5
|
|
- 12
|
|
- 13
|
|
+ 42
|
|
|
|
------------------
|
|
|
|
SeqA: [3, 4, 5, 12, 13]
|
|
SeqB: [3, 4, 5, 12, 13]
|
|
Params: replace
|
|
Edits: []
|
|
Diff:
|
|
3
|
|
4
|
|
5
|
|
12
|
|
13
|
|
|
|
------------------
|
|
|
|
SeqA: [3, 4, 5, 12, 13]
|
|
SeqB: [3, 4, 5, 12, 13]
|
|
Params: delete/insert
|
|
Edits: []
|
|
Diff:
|
|
3
|
|
4
|
|
5
|
|
12
|
|
13
|
|
|
|
------------------
|
|
|
|
SeqA: [3, 4, 5, 12, 13]
|
|
SeqB: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
Params: replace
|
|
Edits: [insert(1, 1), insert(1, 2), replace(3, 11), insert(5, 14)]
|
|
Diff:
|
|
3
|
|
+ 1
|
|
+ 2
|
|
4
|
|
- 5
|
|
+ 11
|
|
12
|
|
13
|
|
+ 14
|
|
|
|
------------------
|
|
|
|
SeqA: [3, 4, 5, 12, 13]
|
|
SeqB: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
Params: delete/insert
|
|
Edits: [insert(1, 1), insert(1, 2), delete(3), insert(3, 11), insert(5, 14)]
|
|
Diff:
|
|
3
|
|
+ 1
|
|
+ 2
|
|
4
|
|
- 5
|
|
+ 11
|
|
12
|
|
13
|
|
+ 14
|
|
|
|
------------------
|
|
|
|
SeqA: [3, 4, 5, 12, 13]
|
|
SeqB: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
Params: replace
|
|
Edits: [insert(1, 1), insert(1, 19), insert(1, 2), insert(1, 29), replace(2, 38), replace(3, 39), insert(3, 4), insert(4, 11), insert(5, 14)]
|
|
Diff:
|
|
3
|
|
- 4
|
|
- 5
|
|
+ 1
|
|
+ 19
|
|
+ 2
|
|
+ 29
|
|
+ 38
|
|
+ 39
|
|
+ 4
|
|
12
|
|
+ 11
|
|
13
|
|
+ 14
|
|
|
|
------------------
|
|
|
|
SeqA: [3, 4, 5, 12, 13]
|
|
SeqB: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
Params: delete/insert
|
|
Edits: [insert(1, 1), insert(1, 19), insert(1, 2), insert(1, 29), insert(1, 38), insert(1, 39), delete(3), insert(4, 11), insert(5, 14)]
|
|
Diff:
|
|
3
|
|
+ 1
|
|
+ 19
|
|
+ 2
|
|
+ 29
|
|
+ 38
|
|
+ 39
|
|
4
|
|
- 5
|
|
12
|
|
+ 11
|
|
13
|
|
+ 14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
SeqB: []
|
|
Params: replace
|
|
Edits: [delete(1), delete(2), delete(3), delete(4), delete(5), delete(6), delete(7), delete(8)]
|
|
Diff:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
- 4
|
|
- 11
|
|
- 12
|
|
- 13
|
|
- 14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
SeqB: []
|
|
Params: delete/insert
|
|
Edits: [delete(1), delete(2), delete(3), delete(4), delete(5), delete(6), delete(7), delete(8)]
|
|
Diff:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
- 4
|
|
- 11
|
|
- 12
|
|
- 13
|
|
- 14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
SeqB: [3]
|
|
Params: replace
|
|
Edits: [delete(1), delete(2), delete(4), delete(5), delete(6), delete(7), delete(8)]
|
|
Diff:
|
|
- 1
|
|
- 2
|
|
3
|
|
- 4
|
|
- 11
|
|
- 12
|
|
- 13
|
|
- 14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
SeqB: [3]
|
|
Params: delete/insert
|
|
Edits: [delete(1), delete(2), delete(4), delete(5), delete(6), delete(7), delete(8)]
|
|
Diff:
|
|
- 1
|
|
- 2
|
|
3
|
|
- 4
|
|
- 11
|
|
- 12
|
|
- 13
|
|
- 14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
SeqB: [42]
|
|
Params: replace
|
|
Edits: [replace(1, 42), delete(2), delete(3), delete(4), delete(5), delete(6), delete(7), delete(8)]
|
|
Diff:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
- 4
|
|
- 11
|
|
- 12
|
|
- 13
|
|
- 14
|
|
+ 42
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
SeqB: [42]
|
|
Params: delete/insert
|
|
Edits: [delete(1), delete(2), delete(3), delete(4), delete(5), delete(6), delete(7), delete(8), insert(8, 42)]
|
|
Diff:
|
|
- 1
|
|
- 2
|
|
- 3
|
|
- 4
|
|
- 11
|
|
- 12
|
|
- 13
|
|
- 14
|
|
+ 42
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
SeqB: [3, 4, 5, 12, 13]
|
|
Params: replace
|
|
Edits: [delete(1), delete(2), replace(5, 5), delete(8)]
|
|
Diff:
|
|
- 1
|
|
- 2
|
|
3
|
|
4
|
|
- 11
|
|
+ 5
|
|
12
|
|
13
|
|
- 14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
SeqB: [3, 4, 5, 12, 13]
|
|
Params: delete/insert
|
|
Edits: [delete(1), delete(2), delete(5), insert(5, 5), delete(8)]
|
|
Diff:
|
|
- 1
|
|
- 2
|
|
3
|
|
4
|
|
- 11
|
|
+ 5
|
|
12
|
|
13
|
|
- 14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
SeqB: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
Params: replace
|
|
Edits: []
|
|
Diff:
|
|
1
|
|
2
|
|
3
|
|
4
|
|
11
|
|
12
|
|
13
|
|
14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
SeqB: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
Params: delete/insert
|
|
Edits: []
|
|
Diff:
|
|
1
|
|
2
|
|
3
|
|
4
|
|
11
|
|
12
|
|
13
|
|
14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
SeqB: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
Params: replace
|
|
Edits: [insert(1, 19), insert(2, 29), replace(4, 38), replace(5, 39), insert(5, 4), insert(6, 11)]
|
|
Diff:
|
|
1
|
|
+ 19
|
|
2
|
|
+ 29
|
|
3
|
|
- 4
|
|
- 11
|
|
+ 38
|
|
+ 39
|
|
+ 4
|
|
12
|
|
+ 11
|
|
13
|
|
14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
SeqB: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
Params: delete/insert
|
|
Edits: [insert(1, 19), insert(2, 29), insert(3, 38), insert(3, 39), delete(5), insert(6, 11)]
|
|
Diff:
|
|
1
|
|
+ 19
|
|
2
|
|
+ 29
|
|
3
|
|
+ 38
|
|
+ 39
|
|
4
|
|
- 11
|
|
12
|
|
+ 11
|
|
13
|
|
14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
SeqB: []
|
|
Params: replace
|
|
Edits: [delete(1), delete(2), delete(3), delete(4), delete(5), delete(6), delete(7), delete(8), delete(9), delete(10), delete(11), delete(12)]
|
|
Diff:
|
|
- 1
|
|
- 19
|
|
- 2
|
|
- 29
|
|
- 3
|
|
- 38
|
|
- 39
|
|
- 4
|
|
- 12
|
|
- 11
|
|
- 13
|
|
- 14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
SeqB: []
|
|
Params: delete/insert
|
|
Edits: [delete(1), delete(2), delete(3), delete(4), delete(5), delete(6), delete(7), delete(8), delete(9), delete(10), delete(11), delete(12)]
|
|
Diff:
|
|
- 1
|
|
- 19
|
|
- 2
|
|
- 29
|
|
- 3
|
|
- 38
|
|
- 39
|
|
- 4
|
|
- 12
|
|
- 11
|
|
- 13
|
|
- 14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
SeqB: [3]
|
|
Params: replace
|
|
Edits: [delete(1), delete(2), delete(3), delete(4), delete(6), delete(7), delete(8), delete(9), delete(10), delete(11), delete(12)]
|
|
Diff:
|
|
- 1
|
|
- 19
|
|
- 2
|
|
- 29
|
|
3
|
|
- 38
|
|
- 39
|
|
- 4
|
|
- 12
|
|
- 11
|
|
- 13
|
|
- 14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
SeqB: [3]
|
|
Params: delete/insert
|
|
Edits: [delete(1), delete(2), delete(3), delete(4), delete(6), delete(7), delete(8), delete(9), delete(10), delete(11), delete(12)]
|
|
Diff:
|
|
- 1
|
|
- 19
|
|
- 2
|
|
- 29
|
|
3
|
|
- 38
|
|
- 39
|
|
- 4
|
|
- 12
|
|
- 11
|
|
- 13
|
|
- 14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
SeqB: [42]
|
|
Params: replace
|
|
Edits: [replace(1, 42), delete(2), delete(3), delete(4), delete(5), delete(6), delete(7), delete(8), delete(9), delete(10), delete(11), delete(12)]
|
|
Diff:
|
|
- 1
|
|
- 19
|
|
- 2
|
|
- 29
|
|
- 3
|
|
- 38
|
|
- 39
|
|
- 4
|
|
- 12
|
|
- 11
|
|
- 13
|
|
- 14
|
|
+ 42
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
SeqB: [42]
|
|
Params: delete/insert
|
|
Edits: [delete(1), delete(2), delete(3), delete(4), delete(5), delete(6), delete(7), delete(8), delete(9), delete(10), delete(11), delete(12), insert(12, 42)]
|
|
Diff:
|
|
- 1
|
|
- 19
|
|
- 2
|
|
- 29
|
|
- 3
|
|
- 38
|
|
- 39
|
|
- 4
|
|
- 12
|
|
- 11
|
|
- 13
|
|
- 14
|
|
+ 42
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
SeqB: [3, 4, 5, 12, 13]
|
|
Params: replace
|
|
Edits: [delete(1), delete(2), delete(3), delete(4), delete(6), delete(7), insert(8, 5), delete(10), delete(12)]
|
|
Diff:
|
|
- 1
|
|
- 19
|
|
- 2
|
|
- 29
|
|
3
|
|
- 38
|
|
- 39
|
|
4
|
|
+ 5
|
|
12
|
|
- 11
|
|
13
|
|
- 14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
SeqB: [3, 4, 5, 12, 13]
|
|
Params: delete/insert
|
|
Edits: [delete(1), delete(2), delete(3), delete(4), delete(6), delete(7), insert(8, 5), delete(10), delete(12)]
|
|
Diff:
|
|
- 1
|
|
- 19
|
|
- 2
|
|
- 29
|
|
3
|
|
- 38
|
|
- 39
|
|
4
|
|
+ 5
|
|
12
|
|
- 11
|
|
13
|
|
- 14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
SeqB: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
Params: replace
|
|
Edits: [delete(2), delete(4), delete(6), delete(7), delete(9), insert(10, 12)]
|
|
Diff:
|
|
1
|
|
- 19
|
|
2
|
|
- 29
|
|
3
|
|
- 38
|
|
- 39
|
|
4
|
|
- 12
|
|
11
|
|
+ 12
|
|
13
|
|
14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
SeqB: [1, 2, 3, 4, 11, 12, 13, 14]
|
|
Params: delete/insert
|
|
Edits: [delete(2), delete(4), delete(6), delete(7), delete(9), insert(10, 12)]
|
|
Diff:
|
|
1
|
|
- 19
|
|
2
|
|
- 29
|
|
3
|
|
- 38
|
|
- 39
|
|
4
|
|
- 12
|
|
11
|
|
+ 12
|
|
13
|
|
14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
SeqB: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
Params: replace
|
|
Edits: []
|
|
Diff:
|
|
1
|
|
19
|
|
2
|
|
29
|
|
3
|
|
38
|
|
39
|
|
4
|
|
12
|
|
11
|
|
13
|
|
14
|
|
|
|
------------------
|
|
|
|
SeqA: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
SeqB: [1, 19, 2, 29, 3, 38, 39, 4, 12, 11, 13, 14]
|
|
Params: delete/insert
|
|
Edits: []
|
|
Diff:
|
|
1
|
|
19
|
|
2
|
|
29
|
|
3
|
|
38
|
|
39
|
|
4
|
|
12
|
|
11
|
|
13
|
|
14
|