Eric Blake <ebl...@redhat.com> writes: > On 07/01/2015 02:22 PM, Markus Armbruster wrote: >> New methods c_name(), c_type(), c_null(), json_type(), >> alternate_qtype(). >> >> Signed-off-by: Markus Armbruster <arm...@redhat.com> >> --- >> scripts/qapi.py | 72 >> +++++++++++++++++++++++++++++++++++++++++++++++++++------ >> 1 file changed, 65 insertions(+), 7 deletions(-) >> > > I just noticed: > >> @@ -779,6 +811,12 @@ class QAPISchemaEnumType(QAPISchemaType): >> for v in values: >> assert isinstance(v, str) >> self.values = values >> + def c_type(self, is_param=False): >> + return c_name(self.name) >> + def c_null(self): >> + return c_enum_const(self.name, self.values[0]) > > What does this return for an empty enum, as in { 'enum':'Empty', > 'data':[] }?
I suspect self.values will be [] then, and self.values[0] will bomb. Possible fixes: * Outlaw empty enums * Add the implicit MAX member to self.values[] (other code may have to skip it) * Catch the special case here, and return the implicit MAX member. > Our testsuite proves we can do that, even if our normal > .json code doesn't use it. tests/qapi-schema/enum-empty.json:{ 'enum': 'MyEnum', 'data': [ ] }