And split the dispinterface case, which is not supported in WinRT mode.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com --- include/windows.media.speechsynthesis.idl | 2 +- tools/widl/parser.y | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-)
diff --git a/include/windows.media.speechsynthesis.idl b/include/windows.media.speechsynthesis.idl index 71c51b74c0c..502261f79c6 100644 --- a/include/windows.media.speechsynthesis.idl +++ b/include/windows.media.speechsynthesis.idl @@ -64,7 +64,7 @@ namespace Windows { ] runtimeclass VoiceInformation { - [default] interface IVoiceInformation; + [default] interface Windows.Media.SpeechSynthesis.IVoiceInformation; } } } diff --git a/tools/widl/parser.y b/tools/widl/parser.y index bbf71a2e3ef..b43a1cdd5f2 100644 --- a/tools/widl/parser.y +++ b/tools/widl/parser.y @@ -282,6 +282,7 @@ static typelib_t *current_typelib; %type <declspec> decl_spec unqualified_decl_spec decl_spec_no_type m_decl_spec_no_type %type <type> inherit interface interfacedef %type <type> interfaceref +%type <type> dispinterfaceref %type <type> dispinterface dispinterfacedef %type <type> module moduledef %type <str> namespacedef @@ -926,6 +927,7 @@ class_interfaces: { $$ = NULL; }
class_interface: m_attributes interfaceref ';' { $$ = make_ifref($2); $$->attrs = $1; } + | m_attributes dispinterfaceref ';' { $$ = make_ifref($2); $$->attrs = $1; } ;
dispinterface: tDISPINTERFACE typename { $$ = type_dispinterface_declare($2); } @@ -965,7 +967,11 @@ interfacedef: attributes interface inherit
interfaceref: tINTERFACE typename { $$ = get_type(TYPE_INTERFACE, $2, current_namespace, 0); } - | tDISPINTERFACE typename { $$ = get_type(TYPE_INTERFACE, $2, current_namespace, 0); } + | tINTERFACE namespace_pfx typename { $$ = get_type(TYPE_INTERFACE, $3, $2, 0); } + ; + +dispinterfaceref: + tDISPINTERFACE typename { $$ = get_type(TYPE_INTERFACE, $2, current_namespace, 0); } ;
module: tMODULE typename { $$ = type_module_declare($2); }