-- v2: widl: Require runtimeclass contracts to be defined. widl: Require composition interfaces to be defined. widl: Require activation interfaces to be defined. widl: Require static interfaces to be defined. include: Define ISystemMediaTransportControlsStatics. include: Define IRandomAccessStreamStatics. include: Comment references to undefined static interfaces.
From: Hans Leidekker hans@codeweavers.com
--- include/windows.data.json.idl | 6 +++--- ...s.devices.bluetooth.genericattributeprofile.idl | 4 ++-- include/windows.devices.bluetooth.idl | 4 ++-- include/windows.devices.bluetooth.rfcomm.idl | 4 ++-- include/windows.graphics.holographic.idl | 2 +- include/windows.media.mediaproperties.idl | 14 +++++++------- include/windows.media.speechsynthesis.idl | 2 +- include/windows.storage.idl | 12 ++++++------ include/windows.system.idl | 2 +- include/windows.system.profile.idl | 2 +- include/windows.system.userprofile.idl | 6 +++--- include/windows.ui.composition.idl | 6 +++--- 12 files changed, 32 insertions(+), 32 deletions(-)
diff --git a/include/windows.data.json.idl b/include/windows.data.json.idl index c37c0a59b88..c38e5929bba 100644 --- a/include/windows.data.json.idl +++ b/include/windows.data.json.idl @@ -132,7 +132,7 @@ namespace Windows.Data.Json { activatable(Windows.Foundation.UniversalApiContract, 1.0), contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), - static(Windows.Data.Json.IJsonArrayStatics, Windows.Foundation.UniversalApiContract, 1.0), + /* static(Windows.Data.Json.IJsonArrayStatics, Windows.Foundation.UniversalApiContract, 1.0), */ threading(both) ] runtimeclass JsonArray @@ -148,7 +148,7 @@ namespace Windows.Data.Json { activatable(Windows.Foundation.UniversalApiContract, 1.0), contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), - static(Windows.Data.Json.IJsonObjectStatics, Windows.Foundation.UniversalApiContract, 1.0), + /* static(Windows.Data.Json.IJsonObjectStatics, Windows.Foundation.UniversalApiContract, 1.0), */ threading(both) ] runtimeclass JsonObject @@ -165,7 +165,7 @@ namespace Windows.Data.Json { contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), static(Windows.Data.Json.IJsonValueStatics, Windows.Foundation.UniversalApiContract, 1.0), - static(Windows.Data.Json.IJsonValueStatics2, Windows.Foundation.UniversalApiContract, 1.0), + /* static(Windows.Data.Json.IJsonValueStatics2, Windows.Foundation.UniversalApiContract, 1.0), */ threading(both) ] runtimeclass JsonValue diff --git a/include/windows.devices.bluetooth.genericattributeprofile.idl b/include/windows.devices.bluetooth.genericattributeprofile.idl index e71645486e8..b545bcca23b 100644 --- a/include/windows.devices.bluetooth.genericattributeprofile.idl +++ b/include/windows.devices.bluetooth.genericattributeprofile.idl @@ -753,8 +753,8 @@ namespace Windows.Devices.Bluetooth.GenericAttributeProfile { [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), - static(Windows.Devices.Bluetooth.GenericAttributeProfile.IGattPresentationFormatStatics, Windows.Foundation.UniversalApiContract, 1.0), - static(Windows.Devices.Bluetooth.GenericAttributeProfile.IGattPresentationFormatStatics2, Windows.Foundation.UniversalApiContract, 4.0), + /* static(Windows.Devices.Bluetooth.GenericAttributeProfile.IGattPresentationFormatStatics, Windows.Foundation.UniversalApiContract, 1.0), */ + /* static(Windows.Devices.Bluetooth.GenericAttributeProfile.IGattPresentationFormatStatics2, Windows.Foundation.UniversalApiContract, 4.0), */ threading(both) ] runtimeclass GattPresentationFormat diff --git a/include/windows.devices.bluetooth.idl b/include/windows.devices.bluetooth.idl index 9e27db46ca2..bca654db074 100644 --- a/include/windows.devices.bluetooth.idl +++ b/include/windows.devices.bluetooth.idl @@ -384,7 +384,7 @@ namespace Windows.Devices.Bluetooth { contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), static(Windows.Devices.Bluetooth.IBluetoothDeviceStatics, Windows.Foundation.UniversalApiContract, 1.0), - static(Windows.Devices.Bluetooth.IBluetoothDeviceStatics2, Windows.Foundation.UniversalApiContract, 2.0), + /* static(Windows.Devices.Bluetooth.IBluetoothDeviceStatics2, Windows.Foundation.UniversalApiContract, 2.0), */ threading(both) ] runtimeclass BluetoothDevice @@ -474,7 +474,7 @@ namespace Windows.Devices.Bluetooth { contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), static(Windows.Devices.Bluetooth.IBluetoothLEDeviceStatics, Windows.Foundation.UniversalApiContract, 1.0), - static(Windows.Devices.Bluetooth.IBluetoothLEDeviceStatics2, Windows.Foundation.UniversalApiContract, 2.0), + /* static(Windows.Devices.Bluetooth.IBluetoothLEDeviceStatics2, Windows.Foundation.UniversalApiContract, 2.0), */ threading(both) ] runtimeclass BluetoothLEDevice diff --git a/include/windows.devices.bluetooth.rfcomm.idl b/include/windows.devices.bluetooth.rfcomm.idl index 14f9acae489..ed56864d712 100644 --- a/include/windows.devices.bluetooth.rfcomm.idl +++ b/include/windows.devices.bluetooth.rfcomm.idl @@ -88,7 +88,7 @@ namespace Windows.Devices.Bluetooth.Rfcomm { contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), static(Windows.Devices.Bluetooth.Rfcomm.IRfcommDeviceServiceStatics, Windows.Foundation.UniversalApiContract, 1.0), - static(Windows.Devices.Bluetooth.Rfcomm.IRfcommDeviceServiceStatics2, Windows.Foundation.UniversalApiContract, 3.0), + /* static(Windows.Devices.Bluetooth.Rfcomm.IRfcommDeviceServiceStatics2, Windows.Foundation.UniversalApiContract, 3.0), */ threading(both) ] runtimeclass RfcommDeviceService @@ -102,7 +102,7 @@ namespace Windows.Devices.Bluetooth.Rfcomm { [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), - static(Windows.Devices.Bluetooth.Rfcomm.IRfcommServiceIdStatics, Windows.Foundation.UniversalApiContract, 1.0), + /* static(Windows.Devices.Bluetooth.Rfcomm.IRfcommServiceIdStatics, Windows.Foundation.UniversalApiContract, 1.0), */ threading(both) ] runtimeclass RfcommServiceId diff --git a/include/windows.graphics.holographic.idl b/include/windows.graphics.holographic.idl index 88a7aa914b8..204b1fd4886 100644 --- a/include/windows.graphics.holographic.idl +++ b/include/windows.graphics.holographic.idl @@ -153,7 +153,7 @@ namespace Windows.Graphics.Holographic { [ contract(Windows.Foundation.UniversalApiContract, 2.0), marshaling_behavior(agile), - static(Windows.Graphics.Holographic.IHolographicSpaceStatics, Windows.Foundation.UniversalApiContract, 2.0), + /* static(Windows.Graphics.Holographic.IHolographicSpaceStatics, Windows.Foundation.UniversalApiContract, 2.0), */ static(Windows.Graphics.Holographic.IHolographicSpaceStatics2, Windows.Foundation.UniversalApiContract, 4.0), static(Windows.Graphics.Holographic.IHolographicSpaceStatics3, Windows.Foundation.UniversalApiContract, 5.0), threading(both) diff --git a/include/windows.media.mediaproperties.idl b/include/windows.media.mediaproperties.idl index 904090937eb..9fa810f58db 100644 --- a/include/windows.media.mediaproperties.idl +++ b/include/windows.media.mediaproperties.idl @@ -138,8 +138,8 @@ namespace Windows.Media.MediaProperties { activatable(Windows.Foundation.UniversalApiContract, 1.0), contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), - static(Windows.Media.MediaProperties.IAudioEncodingPropertiesStatics, Windows.Foundation.UniversalApiContract, 1.0), - static(Windows.Media.MediaProperties.IAudioEncodingPropertiesStatics2, Windows.Foundation.UniversalApiContract, 4.0), + /* static(Windows.Media.MediaProperties.IAudioEncodingPropertiesStatics, Windows.Foundation.UniversalApiContract, 1.0), */ + /* static(Windows.Media.MediaProperties.IAudioEncodingPropertiesStatics2, Windows.Foundation.UniversalApiContract, 4.0), */ threading(both) ] runtimeclass AudioEncodingProperties @@ -168,9 +168,9 @@ namespace Windows.Media.MediaProperties { activatable(Windows.Foundation.UniversalApiContract, 1.0), contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), - static(Windows.Media.MediaProperties.IMediaEncodingProfileStatics, Windows.Foundation.UniversalApiContract, 1.0), - static(Windows.Media.MediaProperties.IMediaEncodingProfileStatics2, Windows.Foundation.UniversalApiContract, 1.0), - static(Windows.Media.MediaProperties.IMediaEncodingProfileStatics3, Windows.Foundation.UniversalApiContract, 4.0), + /* static(Windows.Media.MediaProperties.IMediaEncodingProfileStatics, Windows.Foundation.UniversalApiContract, 1.0), */ + /* static(Windows.Media.MediaProperties.IMediaEncodingProfileStatics2, Windows.Foundation.UniversalApiContract, 1.0), */ + /* static(Windows.Media.MediaProperties.IMediaEncodingProfileStatics3, Windows.Foundation.UniversalApiContract, 4.0), */ threading(mta) ] runtimeclass MediaEncodingProfile @@ -194,8 +194,8 @@ namespace Windows.Media.MediaProperties { activatable(Windows.Foundation.UniversalApiContract, 1.0), contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), - static(Windows.Media.MediaProperties.IVideoEncodingPropertiesStatics, Windows.Foundation.UniversalApiContract, 1.0), - static(Windows.Media.MediaProperties.IVideoEncodingPropertiesStatics2, Windows.Foundation.UniversalApiContract, 4.0), + /* static(Windows.Media.MediaProperties.IVideoEncodingPropertiesStatics, Windows.Foundation.UniversalApiContract, 1.0), */ + /* static(Windows.Media.MediaProperties.IVideoEncodingPropertiesStatics2, Windows.Foundation.UniversalApiContract, 4.0), */ threading(both) ] runtimeclass VideoEncodingProperties diff --git a/include/windows.media.speechsynthesis.idl b/include/windows.media.speechsynthesis.idl index 135cc8f3765..3800fe43beb 100644 --- a/include/windows.media.speechsynthesis.idl +++ b/include/windows.media.speechsynthesis.idl @@ -226,7 +226,7 @@ namespace Windows.Media.SpeechSynthesis contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), static(Windows.Media.SpeechSynthesis.IInstalledVoicesStatic, Windows.Foundation.UniversalApiContract, 1.0), - static(Windows.Media.SpeechSynthesis.IInstalledVoicesStatic2, Windows.Foundation.UniversalApiContract, 5.0) + /* static(Windows.Media.SpeechSynthesis.IInstalledVoicesStatic2, Windows.Foundation.UniversalApiContract, 5.0) */ ] runtimeclass SpeechSynthesizer { diff --git a/include/windows.storage.idl b/include/windows.storage.idl index b5344fdb95c..1f4741ac8b9 100644 --- a/include/windows.storage.idl +++ b/include/windows.storage.idl @@ -60,11 +60,11 @@ namespace Windows.Storage { interface IKnownFoldersStatics4; interface ISetVersionDeferral; interface ISetVersionRequest; + interface IStorageFileStatics; + interface IStorageFileStatics2; interface IStorageFolder; interface IStorageFolderStatics; interface IStorageFolderStatics2; - interface IStorageFileStatics; - interface IStorageFileStatics2; interface IStorageItem;
runtimeclass ApplicationData; @@ -663,8 +663,8 @@ namespace Windows.Storage {
[ contract(Windows.Foundation.UniversalApiContract, 1.0), - static(Windows.Storage.IStorageFileStatics, Windows.Foundation.UniversalApiContract, 1.0), - static(Windows.Storage.IStorageFileStatics2, Windows.Foundation.UniversalApiContract, 10.0) + /* static(Windows.Storage.IStorageFileStatics, Windows.Foundation.UniversalApiContract, 1.0), */ + /* static(Windows.Storage.IStorageFileStatics2, Windows.Foundation.UniversalApiContract, 10.0) */ ] runtimeclass StorageFile { @@ -682,8 +682,8 @@ namespace Windows.Storage {
[ contract(Windows.Foundation.UniversalApiContract, 1.0), - static(Windows.Storage.IStorageFolderStatics, Windows.Foundation.UniversalApiContract, 1.0), - static(Windows.Storage.IStorageFolderStatics2, Windows.Foundation.UniversalApiContract, 10.0) + /* static(Windows.Storage.IStorageFolderStatics, Windows.Foundation.UniversalApiContract, 1.0), */ + /* static(Windows.Storage.IStorageFolderStatics2, Windows.Foundation.UniversalApiContract, 10.0) */ ] runtimeclass StorageFolder { diff --git a/include/windows.system.idl b/include/windows.system.idl index 152d4b6d901..954fe5fcfb0 100644 --- a/include/windows.system.idl +++ b/include/windows.system.idl @@ -466,7 +466,7 @@ namespace Windows.System [ contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), - static(Windows.System.IUserStatics, Windows.Foundation.UniversalApiContract, 1.0), + /* static(Windows.System.IUserStatics, Windows.Foundation.UniversalApiContract, 1.0), */ threading(both), ] runtimeclass User diff --git a/include/windows.system.profile.idl b/include/windows.system.profile.idl index 9e0b0ed8411..70322745168 100644 --- a/include/windows.system.profile.idl +++ b/include/windows.system.profile.idl @@ -113,7 +113,7 @@ namespace Windows.System.Profile { contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), static(Windows.System.Profile.IAnalyticsInfoStatics, Windows.Foundation.UniversalApiContract, 1.0), - static(Windows.System.Profile.IAnalyticsInfoStatics2, Windows.Foundation.UniversalApiContract, 6.0), + /* static(Windows.System.Profile.IAnalyticsInfoStatics2, Windows.Foundation.UniversalApiContract, 6.0), */ threading(both) ] runtimeclass AnalyticsInfo diff --git a/include/windows.system.userprofile.idl b/include/windows.system.userprofile.idl index 756302d4887..41b3797dc26 100644 --- a/include/windows.system.userprofile.idl +++ b/include/windows.system.userprofile.idl @@ -69,8 +69,8 @@ namespace Windows.System.UserProfile { contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(agile), static(Windows.System.UserProfile.IGlobalizationPreferencesStatics, Windows.Foundation.UniversalApiContract, 1.0), - static(Windows.System.UserProfile.IGlobalizationPreferencesStatics2, Windows.Foundation.UniversalApiContract, 5.0), - static(Windows.System.UserProfile.IGlobalizationPreferencesStatics3, Windows.Foundation.UniversalApiContract, 6.0), + /* static(Windows.System.UserProfile.IGlobalizationPreferencesStatics2, Windows.Foundation.UniversalApiContract, 5.0), */ + /* static(Windows.System.UserProfile.IGlobalizationPreferencesStatics3, Windows.Foundation.UniversalApiContract, 6.0), */ ] runtimeclass GlobalizationPreferences { @@ -82,7 +82,7 @@ namespace Windows.System.UserProfile { contract(Windows.Foundation.UniversalApiContract, 1.0), marshaling_behavior(standard), static(Windows.System.UserProfile.IAdvertisingManagerStatics, Windows.Foundation.UniversalApiContract, 1.0), - static(Windows.System.UserProfile.IAdvertisingManagerStatics2, Windows.Foundation.UniversalApiContract, 3.0), + /* static(Windows.System.UserProfile.IAdvertisingManagerStatics2, Windows.Foundation.UniversalApiContract, 3.0), */ ] runtimeclass AdvertisingManager { diff --git a/include/windows.ui.composition.idl b/include/windows.ui.composition.idl index 92ca136c05a..a8a8594370e 100644 --- a/include/windows.ui.composition.idl +++ b/include/windows.ui.composition.idl @@ -994,7 +994,7 @@ namespace Windows.UI.Composition { composable(Windows.UI.Composition.ICompositionEasingFunctionFactory, public, Windows.Foundation.UniversalApiContract, 2.0), contract(Windows.Foundation.UniversalApiContract, 2.0), marshaling_behavior(agile), - static(Windows.UI.Composition.ICompositionEasingFunctionStatics, Windows.Foundation.UniversalApiContract, 12.0), + /* static(Windows.UI.Composition.ICompositionEasingFunctionStatics, Windows.Foundation.UniversalApiContract, 12.0), */ threading(both) ] runtimeclass CompositionEasingFunction : Windows.UI.Composition.CompositionObject @@ -1039,7 +1039,7 @@ namespace Windows.UI.Composition { composable(Windows.UI.Composition.ICompositionObjectFactory, public, Windows.Foundation.UniversalApiContract, 2.0), contract(Windows.Foundation.UniversalApiContract, 2.0), marshaling_behavior(agile), - static(Windows.UI.Composition.ICompositionObjectStatics, Windows.Foundation.UniversalApiContract, 7.0), + /* static(Windows.UI.Composition.ICompositionObjectStatics, Windows.Foundation.UniversalApiContract, 7.0), */ threading(both) ] runtimeclass CompositionObject @@ -1100,7 +1100,7 @@ namespace Windows.UI.Composition { activatable(Windows.Foundation.UniversalApiContract, 2.0), contract(Windows.Foundation.UniversalApiContract, 2.0), marshaling_behavior(agile), - static(Windows.UI.Composition.ICompositorStatics, Windows.Foundation.UniversalApiContract, 6.0), + /* static(Windows.UI.Composition.ICompositorStatics, Windows.Foundation.UniversalApiContract, 6.0), */ threading(both) ] runtimeclass Compositor
From: Hans Leidekker hans@codeweavers.com
--- include/windows.storage.streams.idl | 15 +++++++++++++++ 1 file changed, 15 insertions(+)
diff --git a/include/windows.storage.streams.idl b/include/windows.storage.streams.idl index 6c0dde02f5c..35340895215 100644 --- a/include/windows.storage.streams.idl +++ b/include/windows.storage.streams.idl @@ -73,11 +73,14 @@ namespace Windows.Storage.Streams { interface Windows.Foundation.AsyncOperationCompletedHandler<Windows.Storage.Streams.IRandomAccessStreamReference *>; interface Windows.Foundation.AsyncOperationCompletedHandler<Windows.Storage.Streams.IRandomAccessStreamWithContentType *>; interface Windows.Foundation.AsyncOperationCompletedHandler<Windows.Storage.Streams.RandomAccessStreamReference *>; + interface Windows.Foundation.AsyncOperationProgressHandler<UINT64,UINT64>; + interface Windows.Foundation.AsyncOperationWithProgressCompletedHandler<UINT64,UINT64>; interface Windows.Foundation.IAsyncOperation<Windows.Foundation.Collections.IMapView<HSTRING, Windows.Storage.Streams.RandomAccessStreamReference *> *>; interface Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IRandomAccessStream *>; interface Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IRandomAccessStreamReference *>; interface Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.IRandomAccessStreamWithContentType *>; interface Windows.Foundation.IAsyncOperation<Windows.Storage.Streams.RandomAccessStreamReference *>; + interface Windows.Foundation.IAsyncOperationWithProgress<UINT64,UINT64>; #endif }
@@ -196,6 +199,18 @@ namespace Windows.Storage.Streams { }
#ifndef _WINTYPES + [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + exclusiveto(Windows.Storage.Streams.RandomAccessStream), + uuid(524cedcf-6e29-4ce5-9573-6b753db66c3a) + ] + interface IRandomAccessStreamStatics : IInspectable + { + [overload("CopyAsync")] HRESULT CopyAsync([in] Windows.Storage.Streams.IInputStream *source, [in] Windows.Storage.Streams.IOutputStream *dest, [out, retval] Windows.Foundation.IAsyncOperationWithProgress<UINT64, UINT64> **operation); + [overload("CopyAsync")] HRESULT CopySizeAsync([in] Windows.Storage.Streams.IInputStream *source, [in] Windows.Storage.Streams.IOutputStream *dest, [in] UINT64 bytesToCopy, [out, retval] Windows.Foundation.IAsyncOperationWithProgress<UINT64, UINT64> **operation); + HRESULT CopyAndCloseAsync([in] Windows.Storage.Streams.IInputStream *source, [in] Windows.Storage.Streams.IOutputStream *dest, [out, retval] Windows.Foundation.IAsyncOperationWithProgress<UINT64, UINT64> **operation); + } + [ contract(Windows.Foundation.UniversalApiContract, 1.0), uuid(905a0fe1-bc53-11df-8c49-001e4fc686da),
From: Hans Leidekker hans@codeweavers.com
--- include/windows.media.idl | 10 ++++++++++ 1 file changed, 10 insertions(+)
diff --git a/include/windows.media.idl b/include/windows.media.idl index 87ccc75d06b..d908ede5265 100644 --- a/include/windows.media.idl +++ b/include/windows.media.idl @@ -361,6 +361,16 @@ namespace Windows.Media [propget] HRESULT Property([out, retval] Windows.Media.SystemMediaTransportControlsProperty *value); }
+ [ + contract(Windows.Foundation.UniversalApiContract, 1.0), + exclusiveto(Windows.Media.SystemMediaTransportControls), + uuid(43ba380a-eca4-4832-91ab-d415fae484c6) + ] + interface ISystemMediaTransportControlsStatics : IInspectable + { + HRESULT GetForCurrentView([out, retval] Windows.Media.SystemMediaTransportControls **controls); + } + [ contract(Windows.Foundation.UniversalApiContract, 1.0), exclusiveto(Windows.Media.SystemMediaTransportControlsTimelineProperties),
From: Hans Leidekker hans@codeweavers.com
--- tools/widl/parser.y | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/tools/widl/parser.y b/tools/widl/parser.y index 749331ef425..7cb42184520 100644 --- a/tools/widl/parser.y +++ b/tools/widl/parser.y @@ -2993,6 +2993,11 @@ static void check_constructor_interfaces( const type_t *runtimeclass ) { check_composition_interface( value->u.var->declspec.type ); } + else if (attr->type == ATTR_STATIC) + { + if (!value->u.var->declspec.type->defined) + error_at( &attr->where, "static interface %s is undefined\n", value->u.var->declspec.type->name ); + } } }
From: Hans Leidekker hans@codeweavers.com
--- tools/widl/parser.y | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/tools/widl/parser.y b/tools/widl/parser.y index 7cb42184520..1e69892ba25 100644 --- a/tools/widl/parser.y +++ b/tools/widl/parser.y @@ -2987,6 +2987,10 @@ static void check_constructor_interfaces( const type_t *runtimeclass ) if (attr->type == ATTR_ACTIVATABLE) { if (value->type != EXPR_MEMBER) continue; + + if (!value->u.var->declspec.type->defined) + error_at( &attr->where, "activation interface %s is undefined\n", value->u.var->declspec.type->name ); + check_activation_interface( value->u.var->declspec.type ); } else if (attr->type == ATTR_COMPOSABLE)
From: Hans Leidekker hans@codeweavers.com
--- tools/widl/parser.y | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/tools/widl/parser.y b/tools/widl/parser.y index 1e69892ba25..d687a46f0e1 100644 --- a/tools/widl/parser.y +++ b/tools/widl/parser.y @@ -2995,6 +2995,9 @@ static void check_constructor_interfaces( const type_t *runtimeclass ) } else if (attr->type == ATTR_COMPOSABLE) { + if (!value->u.var->declspec.type->defined) + error_at( &attr->where, "composition interface %s is undefined\n", value->u.var->declspec.type->name ); + check_composition_interface( value->u.var->declspec.type ); } else if (attr->type == ATTR_STATIC)
From: Hans Leidekker hans@codeweavers.com
--- tools/widl/parser.y | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/tools/widl/parser.y b/tools/widl/parser.y index d687a46f0e1..91ac325be82 100644 --- a/tools/widl/parser.y +++ b/tools/widl/parser.y @@ -2976,7 +2976,7 @@ static void check_composition_interface( const type_t *iface ) } }
-static void check_constructor_interfaces( const type_t *runtimeclass ) +static void check_runtimeclass( const type_t *runtimeclass ) { const attr_t *attr;
@@ -3005,6 +3005,11 @@ static void check_constructor_interfaces( const type_t *runtimeclass ) if (!value->u.var->declspec.type->defined) error_at( &attr->where, "static interface %s is undefined\n", value->u.var->declspec.type->name ); } + else if (attr->type == ATTR_CONTRACT) + { + if (!value->u.var->declspec.type->defined) + error_at( &attr->where, "apicontract %s is undefined\n", value->u.var->declspec.type->name ); + } } }
@@ -3028,7 +3033,7 @@ static void check_statements(const statement_list_t *stmts, int is_inside_librar error_loc("coclass is not allowed in Windows Runtime mode\n"); break; case TYPE_RUNTIMECLASS: - check_constructor_interfaces( stmt->u.type ); + check_runtimeclass( stmt->u.type ); default: break; }