Rémi Bernon (@rbernon) commented about tools/widl/parser.y:
} }
- if (!is_attr(iface->attrs, ATTR_LOCAL) && !is_attr(iface->attrs, ATTR_UUID) && !is_attr(iface->attrs, ATTR_VERSION))
- {
statement_list_t* methods = type_iface_get_stmts(iface);
if (methods)
{
int method_count = 0;
STATEMENTS_FOR_EACH_FUNC( stmt, methods )
{
method_count++;
}
if (method_count)
error_at( &iface->where, "Can't omit both local and uuid keyword" );
}
- }
I believe the check should be:
1) `[object]` interfaces are required to have a `[uuid]`, empty or not.
2) `[local]` interfaces are allowed to not have a `[uuid]`, empty or not.
3) remote (non-`[object]`, non-`[local]`) interfaces must have an `[uuid]`, unless they are empty, but they aren't supposed to be empty and there's a separate warning.