From 96e11d51bae0ef323c32fd0ba1668be0d0283092 Mon Sep 17 00:00:00 2001 From: Zebediah Figura Date: Wed, 21 Aug 2019 11:18:08 -0500 Subject: [PATCH] widl: Write public typedefs into the typelib if they are referenced directly. I.e. write "apple_t" into the typelib given the following snippet: typedef [public] struct { ... } apple_t; library { interface IFoo { HRESULT a(apple_t arg); } } Based on a patch by Richard Pospesel. Signed-off-by: Zebediah Figura Signed-off-by: Alexandre Julliard --- tools/widl/write_msft.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tools/widl/write_msft.c b/tools/widl/write_msft.c index 5d5fd891d4d..e972a26b591 100644 --- a/tools/widl/write_msft.c +++ b/tools/widl/write_msft.c @@ -763,6 +763,7 @@ static void add_enum_typeinfo(msft_typelib_t *typelib, type_t *enumeration); static void add_union_typeinfo(msft_typelib_t *typelib, type_t *tunion); static void add_coclass_typeinfo(msft_typelib_t *typelib, type_t *cls); static void add_dispinterface_typeinfo(msft_typelib_t *typelib, type_t *dispinterface); +static void add_typedef_typeinfo(msft_typelib_t *typelib, type_t *dispinterface); /**************************************************************************** @@ -973,7 +974,7 @@ static int encode_type( chat("encode_type: VT_USERDEFINED - adding new type %s, real type %d\n", type->name, type_get_type(type)); - switch (type_get_type(type)) + switch (type_get_type_detect_alias(type)) { case TYPE_STRUCT: case TYPE_ENCAPSULATED_UNION: @@ -991,6 +992,9 @@ static int encode_type( case TYPE_COCLASS: add_coclass_typeinfo(typelib, type); break; + case TYPE_ALIAS: + add_typedef_typeinfo(typelib, type); + break; default: error("encode_type: VT_USERDEFINED - unhandled type %d\n", type_get_type(type));