[PATCH 6/6] widl: Support referencing qualified interface names.
Rémi Bernon
rbernon at codeweavers.com
Mon Feb 8 02:30:48 CST 2021
And split the dispinterface case, which is not supported in WinRT mode.
Signed-off-by: Rémi Bernon <rbernon at 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); }
--
2.30.0
More information about the wine-devel
mailing list