I will make these suggested changes regarding white space, diff context, and renames (an artifact of the dev process, but unnecessary), but be warned, the bulk of this change needs to be in the same patch. This is a major refactor which needs to touch a lot of code all at once, or else we end up with invalid headers, typelibs, etc.
I can extract the actual fixes for duplicate type detection and a missing inline specifier (which depend on this refactor), but they are very few lines compared to the rest.
Anyway, I'm pospeselr on #winehackers if you wish to discuss in real-time.
best, -Richard
On 5/14/19 11:56 PM, Dmitry Timoshkov wrote:
Richard Pospesel richard@torproject.org wrote:
Duplicated types made it impossible to avoid multiply defining user- defined types (structs, enums, unions). The duptype function has been removed and the remaining code refactored to no longer require it. User-define types are now no longer duplicated in typetree.c However, there is a bit of fallout from this:
Various type attributes (ATTR_EXTERN, ATTR_CONST, and ATTR_INLINE) had to be removed from a type_t's attributes and placed on a new struct _decl_type which itself owned a type_t. This decl_type_t is now passed around in many functions previously expecting type_t.
The _type struct now includes a struct typedef_details in its details union which has the type qualifier (const) info.
The bitfield_details struct also contains a decl_type_t rather than a raw type_t pointer to correctly handle const bits.
You should try to split the patch into smaller parts and avoid unnecessary renaming things and white space changes. At the existing state the patch is absolutely not manageable. Also it looks like that you have some strange 'git diff' setting that makes the patch alomost 40% larger because of huge diff contexts.