qemu/scripts/qapi
John Snow f4c05aaf14 qapi/parser: Introduce NullSection
Here's the weird bit. QAPIDoc generally expects -- virtually everywhere
-- that it will always have a current section. The sole exception to
this is in the case that end_comment() is called, which leaves us with
*no* section. However, in this case, we also don't expect to actually
ever mutate the comment contents ever again.

NullSection is just a Null-object that allows us to maintain the
invariant that we *always* have a current section, enforced by static
typing -- allowing us to type that field as QAPIDoc.Section instead of
the more ambiguous Optional[QAPIDoc.Section].

end_section is renamed to switch_section and now accepts as an argument
the new section to activate, clarifying that no callers ever just
unilaterally end a section; they only do so when starting a new section.

Signed-off-by: John Snow <jsnow@redhat.com>

Message-Id: <20210930205716.1148693-8-jsnow@redhat.com>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Markus Armbruster <armbru@redhat.com>
2021-10-02 07:33:42 +02:00
..
__init__.py
.flake8 qapi: delint using flake8 2020-10-10 11:37:47 +02:00
.isort.cfg qapi: enforce import order/styling with isort 2020-10-10 11:37:47 +02:00
commands.py qapi: wrap Sequence[str] in an object 2021-08-26 13:53:56 +02:00
common.py qapi: Bury some unused code in class Indentation 2021-09-08 15:30:10 +02:00
error.py qapi/error: Add type hints 2021-04-30 12:59:54 +02:00
events.py qapi: wrap Sequence[str] in an object 2021-08-26 13:53:56 +02:00
expr.py qapi: Drop simple unions 2021-09-27 08:23:25 +02:00
gen.py qapi/gen: use dict.items() to iterate over _modules 2021-10-02 07:33:41 +02:00
introspect.py qapi: Simplify QAPISchemaIfCond's interface for generating C 2021-09-03 17:06:40 +02:00
main.py qapi: add must_match helper 2021-05-20 11:28:28 +02:00
mypy.ini qapi/error.py: enable mypy checks 2021-04-30 12:59:54 +02:00
parser.py qapi/parser: Introduce NullSection 2021-10-02 07:33:42 +02:00
pylintrc qapi/pylintrc: ignore 'consider-using-f-string' warning 2021-10-02 07:33:41 +02:00
schema.py qapi: Drop simple unions 2021-09-27 08:23:25 +02:00
source.py qapi/source: Remove line number from QAPISourceInfo initializer 2021-05-20 11:28:27 +02:00
types.py qapi: Simplify QAPISchemaIfCond's interface for generating C 2021-09-03 17:06:40 +02:00
visit.py qapi: Simplify QAPISchemaIfCond's interface for generating C 2021-09-03 17:06:40 +02:00