qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v10 24/30] qapi: Factor out QAPISchemaObjectType


From: Markus Armbruster
Subject: Re: [Qemu-devel] [PATCH v10 24/30] qapi: Factor out QAPISchemaObjectType.check_clash()
Date: Mon, 09 Nov 2015 14:00:16 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux)

Eric Blake <address@hidden> writes:

> Consolidate two common sequences of clash detection into a
> new QAPISchemaObjectType.check_clash() helper method.
>
> No change to generated code.
>
> Signed-off-by: Eric Blake <address@hidden>
>
> ---
> v10: rebase on new Variants.check_clash()
> v9: new patch, split off from v8 7/17
> ---
>  scripts/qapi.py | 19 ++++++++-----------
>  1 file changed, 8 insertions(+), 11 deletions(-)
>
> diff --git a/scripts/qapi.py b/scripts/qapi.py
> index 4c56935..6d8c4c7 100644
> --- a/scripts/qapi.py
> +++ b/scripts/qapi.py
> @@ -980,11 +980,7 @@ class QAPISchemaObjectType(QAPISchemaType):
>          seen = OrderedDict()
>          if self._base_name:
>              self.base = schema.lookup_type(self._base_name)
> -            assert isinstance(self.base, QAPISchemaObjectType)

This assertion is lost.

> -            assert not self.base.variants       # not implemented
> -            self.base.check(schema)
> -            for m in self.base.members:
> -                m.check_clash(seen)
> +            self.base.check_clash(schema, seen)
>          for m in self.local_members:
>              m.check(schema)
>              m.check_clash(seen)
> @@ -994,6 +990,12 @@ class QAPISchemaObjectType(QAPISchemaType):
>              assert self.variants.tag_member in self.members
>              self.variants.check_clash(schema, seen)
>
> +    def check_clash(self, schema, seen):
> +        self.check(schema)
> +        assert not self.variants       # not implemented
> +        for m in self.members:
> +            m.check_clash(seen)
> +
>      def is_implicit(self):
>          # See QAPISchema._make_implicit_object_type()
>          return self.name[0] == ':'
> @@ -1062,12 +1064,7 @@ class QAPISchemaObjectTypeVariants(object):
>          for v in self.variants:
>              # Reset seen map for each variant, since qapi names from one
>              # branch do not affect another branch
> -            vseen = dict(seen)
> -            assert isinstance(v.type, QAPISchemaObjectType)

This assertion is lost.

> -            assert not v.type.variants       # not implemented
> -            v.type.check(schema)
> -            for m in v.type.members:
> -                m.check_clash(vseen)
> +            v.type.check_clash(schema, dict(seen))
>
>
>  class QAPISchemaObjectTypeVariant(QAPISchemaObjectTypeMember):



reply via email to

[Prev in Thread] Current Thread [Next in Thread]