Check that conflicts among array alternates are detected correctly.
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
tests/qapi-schema/alternate-conflict-lists.err | 2 ++
tests/qapi-schema/alternate-conflict-lists.json | 6 +++++
tests/qapi-schema/alternate-conflict-lists.out | 0
tests/qapi-schema/meson.build | 1 +
4 files changed, 8 insertions(+)
create mode 100644 tests/qapi-schema/alternate-conflict-lists.err
create mode 100644 tests/qapi-schema/alternate-conflict-lists.json
create mode 100644 tests/qapi-schema/alternate-conflict-lists.out
diff --git a/tests/qapi-schema/alternate-conflict-lists.err b/tests/qapi-schema/alternate-conflict-lists.err
new file mode 100644
index 0000000000..288b75a2ff
--- /dev/null
+++ b/tests/qapi-schema/alternate-conflict-lists.err
@@ -0,0 +1,2 @@
+alternate-conflict-lists.json: In alternate 'Alt':
+alternate-conflict-lists.json:5: branch 'two' can't be distinguished from 'one'
diff --git a/tests/qapi-schema/alternate-conflict-lists.json b/tests/qapi-schema/alternate-conflict-lists.json
new file mode 100644
index 0000000000..90710da115
--- /dev/null
+++ b/tests/qapi-schema/alternate-conflict-lists.json
@@ -0,0 +1,6 @@
+# Two lists conflict even if their inner types would be compatible
+{ 'struct': 'One',
+ 'data': { 'name': 'str' } }
+{ 'alternate': 'Alt',
+ 'data': { 'one': [ 'int' ],
+ 'two': [ 'str' ] } }
diff --git a/tests/qapi-schema/alternate-conflict-lists.out b/tests/qapi-schema/alternate-conflict-lists.out
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/qapi-schema/meson.build b/tests/qapi-schema/meson.build
index caf0791ba8..c18dd7d02f 100644
--- a/tests/qapi-schema/meson.build
+++ b/tests/qapi-schema/meson.build
@@ -11,6 +11,7 @@ schemas = [
'alternate-conflict-dict.json',
'alternate-conflict-enum-bool.json',
'alternate-conflict-enum-int.json',
+ 'alternate-conflict-lists.json',
'alternate-conflict-string.json',
'alternate-conflict-bool-string.json',
'alternate-conflict-num-string.json',
--
2.35.1
Paolo Bonzini <pbonzini@redhat.com> writes:
> Check that conflicts among array alternates are detected correctly.
>
> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
> ---
> tests/qapi-schema/alternate-conflict-lists.err | 2 ++
> tests/qapi-schema/alternate-conflict-lists.json | 6 +++++
> tests/qapi-schema/alternate-conflict-lists.out | 0
> tests/qapi-schema/meson.build | 1 +
> 4 files changed, 8 insertions(+)
> create mode 100644 tests/qapi-schema/alternate-conflict-lists.err
> create mode 100644 tests/qapi-schema/alternate-conflict-lists.json
> create mode 100644 tests/qapi-schema/alternate-conflict-lists.out
>
> diff --git a/tests/qapi-schema/alternate-conflict-lists.err b/tests/qapi-schema/alternate-conflict-lists.err
> new file mode 100644
> index 0000000000..288b75a2ff
> --- /dev/null
> +++ b/tests/qapi-schema/alternate-conflict-lists.err
> @@ -0,0 +1,2 @@
> +alternate-conflict-lists.json: In alternate 'Alt':
> +alternate-conflict-lists.json:5: branch 'two' can't be distinguished from 'one'
Needs a trivial fixup:
-alternate-conflict-lists.json:5: branch 'two' can't be distinguished from 'one'
+alternate-conflict-lists.json:4: branch 'two' can't be distinguished from 'one'
Happy to apply it in my tree.
> diff --git a/tests/qapi-schema/alternate-conflict-lists.json b/tests/qapi-schema/alternate-conflict-lists.json
> new file mode 100644
> index 0000000000..90710da115
> --- /dev/null
> +++ b/tests/qapi-schema/alternate-conflict-lists.json
> @@ -0,0 +1,6 @@
> +# Two lists conflict even if their inner types would be compatible
> +{ 'struct': 'One',
> + 'data': { 'name': 'str' } }
> +{ 'alternate': 'Alt',
> + 'data': { 'one': [ 'int' ],
> + 'two': [ 'str' ] } }
> diff --git a/tests/qapi-schema/alternate-conflict-lists.out b/tests/qapi-schema/alternate-conflict-lists.out
> new file mode 100644
> index 0000000000..e69de29bb2
> diff --git a/tests/qapi-schema/meson.build b/tests/qapi-schema/meson.build
> index caf0791ba8..c18dd7d02f 100644
> --- a/tests/qapi-schema/meson.build
> +++ b/tests/qapi-schema/meson.build
> @@ -11,6 +11,7 @@ schemas = [
> 'alternate-conflict-dict.json',
> 'alternate-conflict-enum-bool.json',
> 'alternate-conflict-enum-int.json',
> + 'alternate-conflict-lists.json',
> 'alternate-conflict-string.json',
> 'alternate-conflict-bool-string.json',
> 'alternate-conflict-num-string.json',
With the fixup:
Reviewed-by: Markus Armbruster <armbru@redhat.com>
© 2016 - 2026 Red Hat, Inc.