aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tests/qapi-schema/flat-union-array-branch.err2
-rw-r--r--tests/qapi-schema/flat-union-bad-base.err2
-rw-r--r--tests/qapi-schema/flat-union-bad-discriminator.err2
-rw-r--r--tests/qapi-schema/flat-union-base-any.err2
-rw-r--r--tests/qapi-schema/flat-union-base-union.err2
-rw-r--r--tests/qapi-schema/flat-union-clash-member.err2
-rw-r--r--tests/qapi-schema/flat-union-discriminator-bad-name.err2
-rw-r--r--tests/qapi-schema/flat-union-empty.err2
-rw-r--r--tests/qapi-schema/flat-union-inline-invalid-dict.err2
-rw-r--r--tests/qapi-schema/flat-union-int-branch.err2
-rw-r--r--tests/qapi-schema/flat-union-invalid-branch-key.err2
-rw-r--r--tests/qapi-schema/flat-union-invalid-discriminator.err2
-rw-r--r--tests/qapi-schema/flat-union-invalid-if-discriminator.err2
-rw-r--r--tests/qapi-schema/flat-union-no-base.err2
-rw-r--r--tests/qapi-schema/flat-union-optional-discriminator.err2
-rw-r--r--tests/qapi-schema/flat-union-string-discriminator.err2
-rw-r--r--tests/qapi-schema/meson.build32
-rw-r--r--tests/qapi-schema/union-array-branch.err2
-rw-r--r--tests/qapi-schema/union-array-branch.json (renamed from tests/qapi-schema/flat-union-array-branch.json)0
-rw-r--r--tests/qapi-schema/union-array-branch.out (renamed from tests/qapi-schema/flat-union-array-branch.out)0
-rw-r--r--tests/qapi-schema/union-bad-base.err2
-rw-r--r--tests/qapi-schema/union-bad-base.json (renamed from tests/qapi-schema/flat-union-bad-base.json)0
-rw-r--r--tests/qapi-schema/union-bad-base.out (renamed from tests/qapi-schema/flat-union-bad-base.out)0
-rw-r--r--tests/qapi-schema/union-bad-discriminator.err2
-rw-r--r--tests/qapi-schema/union-bad-discriminator.json (renamed from tests/qapi-schema/flat-union-bad-discriminator.json)0
-rw-r--r--tests/qapi-schema/union-bad-discriminator.out (renamed from tests/qapi-schema/flat-union-bad-discriminator.out)0
-rw-r--r--tests/qapi-schema/union-base-any.err2
-rw-r--r--tests/qapi-schema/union-base-any.json (renamed from tests/qapi-schema/flat-union-base-any.json)0
-rw-r--r--tests/qapi-schema/union-base-any.out (renamed from tests/qapi-schema/flat-union-base-any.out)0
-rw-r--r--tests/qapi-schema/union-base-union.err2
-rw-r--r--tests/qapi-schema/union-base-union.json (renamed from tests/qapi-schema/flat-union-base-union.json)0
-rw-r--r--tests/qapi-schema/union-base-union.out (renamed from tests/qapi-schema/flat-union-base-union.out)0
-rw-r--r--tests/qapi-schema/union-clash-member.err2
-rw-r--r--tests/qapi-schema/union-clash-member.json (renamed from tests/qapi-schema/flat-union-clash-member.json)0
-rw-r--r--tests/qapi-schema/union-clash-member.out (renamed from tests/qapi-schema/flat-union-clash-member.out)0
-rw-r--r--tests/qapi-schema/union-discriminator-bad-name.err2
-rw-r--r--tests/qapi-schema/union-discriminator-bad-name.json (renamed from tests/qapi-schema/flat-union-discriminator-bad-name.json)0
-rw-r--r--tests/qapi-schema/union-discriminator-bad-name.out (renamed from tests/qapi-schema/flat-union-discriminator-bad-name.out)0
-rw-r--r--tests/qapi-schema/union-empty.err2
-rw-r--r--tests/qapi-schema/union-empty.json (renamed from tests/qapi-schema/flat-union-empty.json)0
-rw-r--r--tests/qapi-schema/union-empty.out (renamed from tests/qapi-schema/flat-union-empty.out)0
-rw-r--r--tests/qapi-schema/union-inline-invalid-dict.err2
-rw-r--r--tests/qapi-schema/union-inline-invalid-dict.json (renamed from tests/qapi-schema/flat-union-inline-invalid-dict.json)0
-rw-r--r--tests/qapi-schema/union-inline-invalid-dict.out (renamed from tests/qapi-schema/flat-union-inline-invalid-dict.out)0
-rw-r--r--tests/qapi-schema/union-int-branch.err2
-rw-r--r--tests/qapi-schema/union-int-branch.json (renamed from tests/qapi-schema/flat-union-int-branch.json)0
-rw-r--r--tests/qapi-schema/union-int-branch.out (renamed from tests/qapi-schema/flat-union-int-branch.out)0
-rw-r--r--tests/qapi-schema/union-invalid-branch-key.err2
-rw-r--r--tests/qapi-schema/union-invalid-branch-key.json (renamed from tests/qapi-schema/flat-union-invalid-branch-key.json)0
-rw-r--r--tests/qapi-schema/union-invalid-branch-key.out (renamed from tests/qapi-schema/flat-union-invalid-branch-key.out)0
-rw-r--r--tests/qapi-schema/union-invalid-discriminator.err2
-rw-r--r--tests/qapi-schema/union-invalid-discriminator.json (renamed from tests/qapi-schema/flat-union-invalid-discriminator.json)0
-rw-r--r--tests/qapi-schema/union-invalid-discriminator.out (renamed from tests/qapi-schema/flat-union-invalid-discriminator.out)0
-rw-r--r--tests/qapi-schema/union-invalid-if-discriminator.err2
-rw-r--r--tests/qapi-schema/union-invalid-if-discriminator.json (renamed from tests/qapi-schema/flat-union-invalid-if-discriminator.json)0
-rw-r--r--tests/qapi-schema/union-invalid-if-discriminator.out (renamed from tests/qapi-schema/flat-union-invalid-if-discriminator.out)0
-rw-r--r--tests/qapi-schema/union-no-base.err2
-rw-r--r--tests/qapi-schema/union-no-base.json (renamed from tests/qapi-schema/flat-union-no-base.json)0
-rw-r--r--tests/qapi-schema/union-no-base.out (renamed from tests/qapi-schema/flat-union-no-base.out)0
-rw-r--r--tests/qapi-schema/union-optional-discriminator.err2
-rw-r--r--tests/qapi-schema/union-optional-discriminator.json (renamed from tests/qapi-schema/flat-union-optional-discriminator.json)0
-rw-r--r--tests/qapi-schema/union-optional-discriminator.out (renamed from tests/qapi-schema/flat-union-optional-discriminator.out)0
-rw-r--r--tests/qapi-schema/union-string-discriminator.err2
-rw-r--r--tests/qapi-schema/union-string-discriminator.json (renamed from tests/qapi-schema/flat-union-string-discriminator.json)0
-rw-r--r--tests/qapi-schema/union-string-discriminator.out (renamed from tests/qapi-schema/flat-union-string-discriminator.out)0
65 files changed, 48 insertions, 48 deletions
diff --git a/tests/qapi-schema/flat-union-array-branch.err b/tests/qapi-schema/flat-union-array-branch.err
deleted file mode 100644
index 20a8ef1406..0000000000
--- a/tests/qapi-schema/flat-union-array-branch.err
+++ /dev/null
@@ -1,2 +0,0 @@
-flat-union-array-branch.json: In union 'TestUnion':
-flat-union-array-branch.json:8: 'data' member 'value1' cannot be an array
diff --git a/tests/qapi-schema/flat-union-bad-base.err b/tests/qapi-schema/flat-union-bad-base.err
deleted file mode 100644
index e0a205a58c..0000000000
--- a/tests/qapi-schema/flat-union-bad-base.err
+++ /dev/null
@@ -1,2 +0,0 @@
-flat-union-bad-base.json: In union 'TestUnion':
-flat-union-bad-base.json:8: member 'string' of type 'TestTypeA' collides with base member 'string'
diff --git a/tests/qapi-schema/flat-union-bad-discriminator.err b/tests/qapi-schema/flat-union-bad-discriminator.err
deleted file mode 100644
index b705439bd9..0000000000
--- a/tests/qapi-schema/flat-union-bad-discriminator.err
+++ /dev/null
@@ -1,2 +0,0 @@
-flat-union-bad-discriminator.json: In union 'TestUnion':
-flat-union-bad-discriminator.json:11: 'discriminator' requires a string name
diff --git a/tests/qapi-schema/flat-union-base-any.err b/tests/qapi-schema/flat-union-base-any.err
deleted file mode 100644
index c2d4de6a5d..0000000000
--- a/tests/qapi-schema/flat-union-base-any.err
+++ /dev/null
@@ -1,2 +0,0 @@
-flat-union-base-any.json: In union 'TestUnion':
-flat-union-base-any.json:8: 'base' requires a struct type, built-in type 'any' isn't
diff --git a/tests/qapi-schema/flat-union-base-union.err b/tests/qapi-schema/flat-union-base-union.err
deleted file mode 100644
index 3563e8777e..0000000000
--- a/tests/qapi-schema/flat-union-base-union.err
+++ /dev/null
@@ -1,2 +0,0 @@
-flat-union-base-union.json: In union 'TestUnion':
-flat-union-base-union.json:17: 'base' requires a struct type, union type 'UnionBase' isn't
diff --git a/tests/qapi-schema/flat-union-clash-member.err b/tests/qapi-schema/flat-union-clash-member.err
deleted file mode 100644
index 07551e6ef5..0000000000
--- a/tests/qapi-schema/flat-union-clash-member.err
+++ /dev/null
@@ -1,2 +0,0 @@
-flat-union-clash-member.json: In union 'TestUnion':
-flat-union-clash-member.json:11: member 'name' of type 'Branch1' collides with member 'name' of type 'Base'
diff --git a/tests/qapi-schema/flat-union-discriminator-bad-name.err b/tests/qapi-schema/flat-union-discriminator-bad-name.err
deleted file mode 100644
index 28be49c31a..0000000000
--- a/tests/qapi-schema/flat-union-discriminator-bad-name.err
+++ /dev/null
@@ -1,2 +0,0 @@
-flat-union-discriminator-bad-name.json: In union 'MyUnion':
-flat-union-discriminator-bad-name.json:6: discriminator '*switch' is not a member of 'base'
diff --git a/tests/qapi-schema/flat-union-empty.err b/tests/qapi-schema/flat-union-empty.err
deleted file mode 100644
index 89b0f25cb0..0000000000
--- a/tests/qapi-schema/flat-union-empty.err
+++ /dev/null
@@ -1,2 +0,0 @@
-flat-union-empty.json: In union 'Union':
-flat-union-empty.json:4: union has no branches
diff --git a/tests/qapi-schema/flat-union-inline-invalid-dict.err b/tests/qapi-schema/flat-union-inline-invalid-dict.err
deleted file mode 100644
index 53e5416707..0000000000
--- a/tests/qapi-schema/flat-union-inline-invalid-dict.err
+++ /dev/null
@@ -1,2 +0,0 @@
-flat-union-inline-invalid-dict.json: In union 'TestUnion':
-flat-union-inline-invalid-dict.json:7: 'data' member 'value1' misses key 'type'
diff --git a/tests/qapi-schema/flat-union-int-branch.err b/tests/qapi-schema/flat-union-int-branch.err
deleted file mode 100644
index ae7f800603..0000000000
--- a/tests/qapi-schema/flat-union-int-branch.err
+++ /dev/null
@@ -1,2 +0,0 @@
-flat-union-int-branch.json: In union 'TestUnion':
-flat-union-int-branch.json:8: branch 'value1' cannot use built-in type 'int'
diff --git a/tests/qapi-schema/flat-union-invalid-branch-key.err b/tests/qapi-schema/flat-union-invalid-branch-key.err
deleted file mode 100644
index 5576a25f9b..0000000000
--- a/tests/qapi-schema/flat-union-invalid-branch-key.err
+++ /dev/null
@@ -1,2 +0,0 @@
-flat-union-invalid-branch-key.json: In union 'TestUnion':
-flat-union-invalid-branch-key.json:13: branch 'value_wrong' is not a value of enum type 'TestEnum'
diff --git a/tests/qapi-schema/flat-union-invalid-discriminator.err b/tests/qapi-schema/flat-union-invalid-discriminator.err
deleted file mode 100644
index 99bca2ddab..0000000000
--- a/tests/qapi-schema/flat-union-invalid-discriminator.err
+++ /dev/null
@@ -1,2 +0,0 @@
-flat-union-invalid-discriminator.json: In union 'TestUnion':
-flat-union-invalid-discriminator.json:10: discriminator 'enum_wrong' is not a member of 'base'
diff --git a/tests/qapi-schema/flat-union-invalid-if-discriminator.err b/tests/qapi-schema/flat-union-invalid-if-discriminator.err
deleted file mode 100644
index 350f28da9d..0000000000
--- a/tests/qapi-schema/flat-union-invalid-if-discriminator.err
+++ /dev/null
@@ -1,2 +0,0 @@
-flat-union-invalid-if-discriminator.json: In union 'TestUnion':
-flat-union-invalid-if-discriminator.json:10: discriminator member 'enum1' of 'base' must not be conditional
diff --git a/tests/qapi-schema/flat-union-no-base.err b/tests/qapi-schema/flat-union-no-base.err
deleted file mode 100644
index c60482f96b..0000000000
--- a/tests/qapi-schema/flat-union-no-base.err
+++ /dev/null
@@ -1,2 +0,0 @@
-flat-union-no-base.json: In union 'TestUnion':
-flat-union-no-base.json:8: union misses key 'base'
diff --git a/tests/qapi-schema/flat-union-optional-discriminator.err b/tests/qapi-schema/flat-union-optional-discriminator.err
deleted file mode 100644
index 3d60a1b496..0000000000
--- a/tests/qapi-schema/flat-union-optional-discriminator.err
+++ /dev/null
@@ -1,2 +0,0 @@
-flat-union-optional-discriminator.json: In union 'MyUnion':
-flat-union-optional-discriminator.json:6: discriminator member 'switch' of base type 'Base' must not be optional
diff --git a/tests/qapi-schema/flat-union-string-discriminator.err b/tests/qapi-schema/flat-union-string-discriminator.err
deleted file mode 100644
index ff42c9728b..0000000000
--- a/tests/qapi-schema/flat-union-string-discriminator.err
+++ /dev/null
@@ -1,2 +0,0 @@
-flat-union-string-discriminator.json: In union 'TestUnion':
-flat-union-string-discriminator.json:13: discriminator member 'kind' of base type 'TestBase' must be of enum type
diff --git a/tests/qapi-schema/meson.build b/tests/qapi-schema/meson.build
index 85d3de1481..6187efbd58 100644
--- a/tests/qapi-schema/meson.build
+++ b/tests/qapi-schema/meson.build
@@ -107,22 +107,6 @@ schemas = [
'features-name-bad-type.json',
'features-no-list.json',
'features-unknown-key.json',
- 'flat-union-array-branch.json',
- 'flat-union-bad-base.json',
- 'flat-union-bad-discriminator.json',
- 'flat-union-base-any.json',
- 'flat-union-base-union.json',
- 'flat-union-clash-member.json',
- 'flat-union-discriminator-bad-name.json',
- 'flat-union-empty.json',
- 'flat-union-inline-invalid-dict.json',
- 'flat-union-int-branch.json',
- 'flat-union-invalid-branch-key.json',
- 'flat-union-invalid-discriminator.json',
- 'flat-union-invalid-if-discriminator.json',
- 'flat-union-no-base.json',
- 'flat-union-optional-discriminator.json',
- 'flat-union-string-discriminator.json',
'funny-char.json',
'funny-word.json',
'ident-with-escape.json',
@@ -190,12 +174,28 @@ schemas = [
'unclosed-list.json',
'unclosed-object.json',
'unclosed-string.json',
+ 'union-array-branch.json',
+ 'union-bad-base.json',
+ 'union-bad-discriminator.json',
+ 'union-base-any.json',
'union-base-empty.json',
'union-base-no-discriminator.json',
+ 'union-base-union.json',
'union-branch-if-invalid.json',
'union-branch-invalid-dict.json',
+ 'union-clash-member.json',
+ 'union-discriminator-bad-name.json',
+ 'union-empty.json',
+ 'union-inline-invalid-dict.json',
+ 'union-int-branch.json',
'union-invalid-base.json',
+ 'union-invalid-branch-key.json',
'union-invalid-data.json',
+ 'union-invalid-discriminator.json',
+ 'union-invalid-if-discriminator.json',
+ 'union-no-base.json',
+ 'union-optional-discriminator.json',
+ 'union-string-discriminator.json',
'union-unknown.json',
'unknown-escape.json',
'unknown-expr-key.json',
diff --git a/tests/qapi-schema/union-array-branch.err b/tests/qapi-schema/union-array-branch.err
new file mode 100644
index 0000000000..5db9c17481
--- /dev/null
+++ b/tests/qapi-schema/union-array-branch.err
@@ -0,0 +1,2 @@
+union-array-branch.json: In union 'TestUnion':
+union-array-branch.json:8: 'data' member 'value1' cannot be an array
diff --git a/tests/qapi-schema/flat-union-array-branch.json b/tests/qapi-schema/union-array-branch.json
index 6dda7ec379..6dda7ec379 100644
--- a/tests/qapi-schema/flat-union-array-branch.json
+++ b/tests/qapi-schema/union-array-branch.json
diff --git a/tests/qapi-schema/flat-union-array-branch.out b/tests/qapi-schema/union-array-branch.out
index e69de29bb2..e69de29bb2 100644
--- a/tests/qapi-schema/flat-union-array-branch.out
+++ b/tests/qapi-schema/union-array-branch.out
diff --git a/tests/qapi-schema/union-bad-base.err b/tests/qapi-schema/union-bad-base.err
new file mode 100644
index 0000000000..42b2ed1dda
--- /dev/null
+++ b/tests/qapi-schema/union-bad-base.err
@@ -0,0 +1,2 @@
+union-bad-base.json: In union 'TestUnion':
+union-bad-base.json:8: member 'string' of type 'TestTypeA' collides with base member 'string'
diff --git a/tests/qapi-schema/flat-union-bad-base.json b/tests/qapi-schema/union-bad-base.json
index 74dd421708..74dd421708 100644
--- a/tests/qapi-schema/flat-union-bad-base.json
+++ b/tests/qapi-schema/union-bad-base.json
diff --git a/tests/qapi-schema/flat-union-bad-base.out b/tests/qapi-schema/union-bad-base.out
index e69de29bb2..e69de29bb2 100644
--- a/tests/qapi-schema/flat-union-bad-base.out
+++ b/tests/qapi-schema/union-bad-base.out
diff --git a/tests/qapi-schema/union-bad-discriminator.err b/tests/qapi-schema/union-bad-discriminator.err
new file mode 100644
index 0000000000..7cfd470f58
--- /dev/null
+++ b/tests/qapi-schema/union-bad-discriminator.err
@@ -0,0 +1,2 @@
+union-bad-discriminator.json: In union 'TestUnion':
+union-bad-discriminator.json:11: 'discriminator' requires a string name
diff --git a/tests/qapi-schema/flat-union-bad-discriminator.json b/tests/qapi-schema/union-bad-discriminator.json
index cd10b9d901..cd10b9d901 100644
--- a/tests/qapi-schema/flat-union-bad-discriminator.json
+++ b/tests/qapi-schema/union-bad-discriminator.json
diff --git a/tests/qapi-schema/flat-union-bad-discriminator.out b/tests/qapi-schema/union-bad-discriminator.out
index e69de29bb2..e69de29bb2 100644
--- a/tests/qapi-schema/flat-union-bad-discriminator.out
+++ b/tests/qapi-schema/union-bad-discriminator.out
diff --git a/tests/qapi-schema/union-base-any.err b/tests/qapi-schema/union-base-any.err
new file mode 100644
index 0000000000..82b48bc1c8
--- /dev/null
+++ b/tests/qapi-schema/union-base-any.err
@@ -0,0 +1,2 @@
+union-base-any.json: In union 'TestUnion':
+union-base-any.json:8: 'base' requires a struct type, built-in type 'any' isn't
diff --git a/tests/qapi-schema/flat-union-base-any.json b/tests/qapi-schema/union-base-any.json
index fe66b713ef..fe66b713ef 100644
--- a/tests/qapi-schema/flat-union-base-any.json
+++ b/tests/qapi-schema/union-base-any.json
diff --git a/tests/qapi-schema/flat-union-base-any.out b/tests/qapi-schema/union-base-any.out
index e69de29bb2..e69de29bb2 100644
--- a/tests/qapi-schema/flat-union-base-any.out
+++ b/tests/qapi-schema/union-base-any.out
diff --git a/tests/qapi-schema/union-base-union.err b/tests/qapi-schema/union-base-union.err
new file mode 100644
index 0000000000..2bddaf6a84
--- /dev/null
+++ b/tests/qapi-schema/union-base-union.err
@@ -0,0 +1,2 @@
+union-base-union.json: In union 'TestUnion':
+union-base-union.json:17: 'base' requires a struct type, union type 'UnionBase' isn't
diff --git a/tests/qapi-schema/flat-union-base-union.json b/tests/qapi-schema/union-base-union.json
index 82d4c96e57..82d4c96e57 100644
--- a/tests/qapi-schema/flat-union-base-union.json
+++ b/tests/qapi-schema/union-base-union.json
diff --git a/tests/qapi-schema/flat-union-base-union.out b/tests/qapi-schema/union-base-union.out
index e69de29bb2..e69de29bb2 100644
--- a/tests/qapi-schema/flat-union-base-union.out
+++ b/tests/qapi-schema/union-base-union.out
diff --git a/tests/qapi-schema/union-clash-member.err b/tests/qapi-schema/union-clash-member.err
new file mode 100644
index 0000000000..c1f3a02552
--- /dev/null
+++ b/tests/qapi-schema/union-clash-member.err
@@ -0,0 +1,2 @@
+union-clash-member.json: In union 'TestUnion':
+union-clash-member.json:11: member 'name' of type 'Branch1' collides with member 'name' of type 'Base'
diff --git a/tests/qapi-schema/flat-union-clash-member.json b/tests/qapi-schema/union-clash-member.json
index 9efc7719b8..9efc7719b8 100644
--- a/tests/qapi-schema/flat-union-clash-member.json
+++ b/tests/qapi-schema/union-clash-member.json
diff --git a/tests/qapi-schema/flat-union-clash-member.out b/tests/qapi-schema/union-clash-member.out
index e69de29bb2..e69de29bb2 100644
--- a/tests/qapi-schema/flat-union-clash-member.out
+++ b/tests/qapi-schema/union-clash-member.out
diff --git a/tests/qapi-schema/union-discriminator-bad-name.err b/tests/qapi-schema/union-discriminator-bad-name.err
new file mode 100644
index 0000000000..5793e9af66
--- /dev/null
+++ b/tests/qapi-schema/union-discriminator-bad-name.err
@@ -0,0 +1,2 @@
+union-discriminator-bad-name.json: In union 'MyUnion':
+union-discriminator-bad-name.json:6: discriminator '*switch' is not a member of 'base'
diff --git a/tests/qapi-schema/flat-union-discriminator-bad-name.json b/tests/qapi-schema/union-discriminator-bad-name.json
index 3ae8c06a89..3ae8c06a89 100644
--- a/tests/qapi-schema/flat-union-discriminator-bad-name.json
+++ b/tests/qapi-schema/union-discriminator-bad-name.json
diff --git a/tests/qapi-schema/flat-union-discriminator-bad-name.out b/tests/qapi-schema/union-discriminator-bad-name.out
index e69de29bb2..e69de29bb2 100644
--- a/tests/qapi-schema/flat-union-discriminator-bad-name.out
+++ b/tests/qapi-schema/union-discriminator-bad-name.out
diff --git a/tests/qapi-schema/union-empty.err b/tests/qapi-schema/union-empty.err
new file mode 100644
index 0000000000..d428439962
--- /dev/null
+++ b/tests/qapi-schema/union-empty.err
@@ -0,0 +1,2 @@
+union-empty.json: In union 'Union':
+union-empty.json:4: union has no branches
diff --git a/tests/qapi-schema/flat-union-empty.json b/tests/qapi-schema/union-empty.json
index 584ed6098c..584ed6098c 100644
--- a/tests/qapi-schema/flat-union-empty.json
+++ b/tests/qapi-schema/union-empty.json
diff --git a/tests/qapi-schema/flat-union-empty.out b/tests/qapi-schema/union-empty.out
index e69de29bb2..e69de29bb2 100644
--- a/tests/qapi-schema/flat-union-empty.out
+++ b/tests/qapi-schema/union-empty.out
diff --git a/tests/qapi-schema/union-inline-invalid-dict.err b/tests/qapi-schema/union-inline-invalid-dict.err
new file mode 100644
index 0000000000..25ddf7c765
--- /dev/null
+++ b/tests/qapi-schema/union-inline-invalid-dict.err
@@ -0,0 +1,2 @@
+union-inline-invalid-dict.json: In union 'TestUnion':
+union-inline-invalid-dict.json:7: 'data' member 'value1' misses key 'type'
diff --git a/tests/qapi-schema/flat-union-inline-invalid-dict.json b/tests/qapi-schema/union-inline-invalid-dict.json
index 1779712795..1779712795 100644
--- a/tests/qapi-schema/flat-union-inline-invalid-dict.json
+++ b/tests/qapi-schema/union-inline-invalid-dict.json
diff --git a/tests/qapi-schema/flat-union-inline-invalid-dict.out b/tests/qapi-schema/union-inline-invalid-dict.out
index e69de29bb2..e69de29bb2 100644
--- a/tests/qapi-schema/flat-union-inline-invalid-dict.out
+++ b/tests/qapi-schema/union-inline-invalid-dict.out
diff --git a/tests/qapi-schema/union-int-branch.err b/tests/qapi-schema/union-int-branch.err
new file mode 100644
index 0000000000..8fdc81edd1
--- /dev/null
+++ b/tests/qapi-schema/union-int-branch.err
@@ -0,0 +1,2 @@
+union-int-branch.json: In union 'TestUnion':
+union-int-branch.json:8: branch 'value1' cannot use built-in type 'int'
diff --git a/tests/qapi-schema/flat-union-int-branch.json b/tests/qapi-schema/union-int-branch.json
index 567043d9d2..567043d9d2 100644
--- a/tests/qapi-schema/flat-union-int-branch.json
+++ b/tests/qapi-schema/union-int-branch.json
diff --git a/tests/qapi-schema/flat-union-int-branch.out b/tests/qapi-schema/union-int-branch.out
index e69de29bb2..e69de29bb2 100644
--- a/tests/qapi-schema/flat-union-int-branch.out
+++ b/tests/qapi-schema/union-int-branch.out
diff --git a/tests/qapi-schema/union-invalid-branch-key.err b/tests/qapi-schema/union-invalid-branch-key.err
new file mode 100644
index 0000000000..bf58800507
--- /dev/null
+++ b/tests/qapi-schema/union-invalid-branch-key.err
@@ -0,0 +1,2 @@
+union-invalid-branch-key.json: In union 'TestUnion':
+union-invalid-branch-key.json:13: branch 'value_wrong' is not a value of enum type 'TestEnum'
diff --git a/tests/qapi-schema/flat-union-invalid-branch-key.json b/tests/qapi-schema/union-invalid-branch-key.json
index 95ff7746bf..95ff7746bf 100644
--- a/tests/qapi-schema/flat-union-invalid-branch-key.json
+++ b/tests/qapi-schema/union-invalid-branch-key.json
diff --git a/tests/qapi-schema/flat-union-invalid-branch-key.out b/tests/qapi-schema/union-invalid-branch-key.out
index e69de29bb2..e69de29bb2 100644
--- a/tests/qapi-schema/flat-union-invalid-branch-key.out
+++ b/tests/qapi-schema/union-invalid-branch-key.out
diff --git a/tests/qapi-schema/union-invalid-discriminator.err b/tests/qapi-schema/union-invalid-discriminator.err
new file mode 100644
index 0000000000..38efb24b98
--- /dev/null
+++ b/tests/qapi-schema/union-invalid-discriminator.err
@@ -0,0 +1,2 @@
+union-invalid-discriminator.json: In union 'TestUnion':
+union-invalid-discriminator.json:10: discriminator 'enum_wrong' is not a member of 'base'
diff --git a/tests/qapi-schema/flat-union-invalid-discriminator.json b/tests/qapi-schema/union-invalid-discriminator.json
index c4fce97362..c4fce97362 100644
--- a/tests/qapi-schema/flat-union-invalid-discriminator.json
+++ b/tests/qapi-schema/union-invalid-discriminator.json
diff --git a/tests/qapi-schema/flat-union-invalid-discriminator.out b/tests/qapi-schema/union-invalid-discriminator.out
index e69de29bb2..e69de29bb2 100644
--- a/tests/qapi-schema/flat-union-invalid-discriminator.out
+++ b/tests/qapi-schema/union-invalid-discriminator.out
diff --git a/tests/qapi-schema/union-invalid-if-discriminator.err b/tests/qapi-schema/union-invalid-if-discriminator.err
new file mode 100644
index 0000000000..3f41d03f8e
--- /dev/null
+++ b/tests/qapi-schema/union-invalid-if-discriminator.err
@@ -0,0 +1,2 @@
+union-invalid-if-discriminator.json: In union 'TestUnion':
+union-invalid-if-discriminator.json:10: discriminator member 'enum1' of 'base' must not be conditional
diff --git a/tests/qapi-schema/flat-union-invalid-if-discriminator.json b/tests/qapi-schema/union-invalid-if-discriminator.json
index e49992b798..e49992b798 100644
--- a/tests/qapi-schema/flat-union-invalid-if-discriminator.json
+++ b/tests/qapi-schema/union-invalid-if-discriminator.json
diff --git a/tests/qapi-schema/flat-union-invalid-if-discriminator.out b/tests/qapi-schema/union-invalid-if-discriminator.out
index e69de29bb2..e69de29bb2 100644
--- a/tests/qapi-schema/flat-union-invalid-if-discriminator.out
+++ b/tests/qapi-schema/union-invalid-if-discriminator.out
diff --git a/tests/qapi-schema/union-no-base.err b/tests/qapi-schema/union-no-base.err
new file mode 100644
index 0000000000..cbf12ac526
--- /dev/null
+++ b/tests/qapi-schema/union-no-base.err
@@ -0,0 +1,2 @@
+union-no-base.json: In union 'TestUnion':
+union-no-base.json:8: union misses key 'base'
diff --git a/tests/qapi-schema/flat-union-no-base.json b/tests/qapi-schema/union-no-base.json
index f6fe12da3b..f6fe12da3b 100644
--- a/tests/qapi-schema/flat-union-no-base.json
+++ b/tests/qapi-schema/union-no-base.json
diff --git a/tests/qapi-schema/flat-union-no-base.out b/tests/qapi-schema/union-no-base.out
index e69de29bb2..e69de29bb2 100644
--- a/tests/qapi-schema/flat-union-no-base.out
+++ b/tests/qapi-schema/union-no-base.out
diff --git a/tests/qapi-schema/union-optional-discriminator.err b/tests/qapi-schema/union-optional-discriminator.err
new file mode 100644
index 0000000000..8d980bd2ac
--- /dev/null
+++ b/tests/qapi-schema/union-optional-discriminator.err
@@ -0,0 +1,2 @@
+union-optional-discriminator.json: In union 'MyUnion':
+union-optional-discriminator.json:6: discriminator member 'switch' of base type 'Base' must not be optional
diff --git a/tests/qapi-schema/flat-union-optional-discriminator.json b/tests/qapi-schema/union-optional-discriminator.json
index 2e7f766f60..2e7f766f60 100644
--- a/tests/qapi-schema/flat-union-optional-discriminator.json
+++ b/tests/qapi-schema/union-optional-discriminator.json
diff --git a/tests/qapi-schema/flat-union-optional-discriminator.out b/tests/qapi-schema/union-optional-discriminator.out
index e69de29bb2..e69de29bb2 100644
--- a/tests/qapi-schema/flat-union-optional-discriminator.out
+++ b/tests/qapi-schema/union-optional-discriminator.out
diff --git a/tests/qapi-schema/union-string-discriminator.err b/tests/qapi-schema/union-string-discriminator.err
new file mode 100644
index 0000000000..eccbe681bd
--- /dev/null
+++ b/tests/qapi-schema/union-string-discriminator.err
@@ -0,0 +1,2 @@
+union-string-discriminator.json: In union 'TestUnion':
+union-string-discriminator.json:13: discriminator member 'kind' of base type 'TestBase' must be of enum type
diff --git a/tests/qapi-schema/flat-union-string-discriminator.json b/tests/qapi-schema/union-string-discriminator.json
index 8af60333b6..8af60333b6 100644
--- a/tests/qapi-schema/flat-union-string-discriminator.json
+++ b/tests/qapi-schema/union-string-discriminator.json
diff --git a/tests/qapi-schema/flat-union-string-discriminator.out b/tests/qapi-schema/union-string-discriminator.out
index e69de29bb2..e69de29bb2 100644
--- a/tests/qapi-schema/flat-union-string-discriminator.out
+++ b/tests/qapi-schema/union-string-discriminator.out