Nullable: Addition COM types (#24032)
authorStephen Toub <stoub@microsoft.com>
Tue, 16 Apr 2019 17:24:31 +0000 (13:24 -0400)
committerGitHub <noreply@github.com>
Tue, 16 Apr 2019 17:24:31 +0000 (13:24 -0400)
Somehow these slipped through previous rounds of annotating.

18 files changed:
src/System.Private.CoreLib/shared/System/Numerics/Vector_Operations.cs
src/System.Private.CoreLib/shared/System/Runtime/InteropServices/ComTypes/IEnumConnections.cs
src/System.Private.CoreLib/shared/System/Runtime/InteropServices/ComTypes/IEnumMoniker.cs
src/System.Private.CoreLib/shared/System/Runtime/InteropServices/ComTypes/IEnumString.cs
src/System.Private.CoreLib/shared/System/Runtime/InteropServices/ComTypes/IEnumVARIANT.cs
src/System.Private.CoreLib/shared/System/Runtime/InteropServices/ComTypes/IMoniker.cs
src/System.Private.CoreLib/shared/System/Runtime/InteropServices/ComTypes/IPersistFile.cs
src/System.Private.CoreLib/shared/System/Runtime/InteropServices/ComTypes/IRunningObjectTable.cs
src/System.Private.CoreLib/shared/System/Runtime/InteropServices/ComTypes/IStream.cs
src/System.Private.CoreLib/shared/System/Runtime/InteropServices/ComTypes/ITypeComp.cs
src/System.Private.CoreLib/shared/System/Runtime/InteropServices/ComTypes/ITypeInfo.cs
src/System.Private.CoreLib/shared/System/Runtime/InteropServices/ComTypes/ITypeInfo2.cs
src/System.Private.CoreLib/shared/System/Runtime/InteropServices/ComTypes/ITypeLib.cs
src/System.Private.CoreLib/shared/System/Runtime/InteropServices/ComTypes/ITypeLib2.cs
src/System.Private.CoreLib/src/Internal/Runtime/InteropServices/ComActivator.cs
src/System.Private.CoreLib/src/System/Runtime/InteropServices/IException.cs
src/System.Private.CoreLib/src/System/Runtime/InteropServices/WindowsRuntime/CLRIPropertyValueImpl.cs
src/System.Private.CoreLib/src/System/Runtime/InteropServices/WindowsRuntime/CLRIReferenceImpl.cs

index 567a0a7..5e7bc60 100644 (file)
@@ -2,6 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
+#nullable enable
 using System.Runtime.CompilerServices;
 
 namespace System.Numerics
index 951685b..6220c9b 100644 (file)
@@ -2,6 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
+#nullable enable
 namespace System.Runtime.InteropServices.ComTypes
 {
     [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
index 9a63ba0..514cb94 100644 (file)
@@ -2,6 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
+#nullable enable
 namespace System.Runtime.InteropServices.ComTypes
 {
     [Guid("00000102-0000-0000-C000-000000000046")]
index 57fc591..ff050d4 100644 (file)
@@ -2,6 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
+#nullable enable
 namespace System.Runtime.InteropServices.ComTypes
 {
     [Guid("00000101-0000-0000-C000-000000000046")]
index 8440c06..6b970b8 100644 (file)
@@ -2,6 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
+#nullable enable
 namespace System.Runtime.InteropServices.ComTypes
 {
     [Guid("00020404-0000-0000-C000-000000000046")]
@@ -10,7 +11,7 @@ namespace System.Runtime.InteropServices.ComTypes
     public interface IEnumVARIANT
     {
         [PreserveSig]
-        int Next(int celt, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0), Out] object[] rgVar, IntPtr pceltFetched);
+        int Next(int celt, [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 0), Out] object?[] rgVar, IntPtr pceltFetched);
 
         [PreserveSig]
         int Skip(int celt);
index 7a2dd57..49cbe05 100644 (file)
@@ -2,6 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
+#nullable enable
 namespace System.Runtime.InteropServices.ComTypes
 {
     [StructLayout(LayoutKind.Sequential)]
@@ -27,21 +28,21 @@ namespace System.Runtime.InteropServices.ComTypes
         void GetSizeMax(out long pcbSize);
 
         // IMoniker portion
-        void BindToObject(IBindCtx pbc, IMoniker pmkToLeft, [In()] ref Guid riidResult, [MarshalAs(UnmanagedType.Interface)] out object ppvResult);
-        void BindToStorage(IBindCtx pbc, IMoniker pmkToLeft, [In()] ref Guid riid, [MarshalAs(UnmanagedType.Interface)] out object ppvObj);
-        void Reduce(IBindCtx pbc, int dwReduceHowFar, ref IMoniker ppmkToLeft, out IMoniker ppmkReduced);
-        void ComposeWith(IMoniker pmkRight, [MarshalAs(UnmanagedType.Bool)] bool fOnlyIfNotGeneric, out IMoniker ppmkComposite);
-        void Enum([MarshalAs(UnmanagedType.Bool)] bool fForward, out IEnumMoniker ppenumMoniker);
+        void BindToObject(IBindCtx pbc, IMoniker? pmkToLeft, [In()] ref Guid riidResult, [MarshalAs(UnmanagedType.Interface)] out object ppvResult);
+        void BindToStorage(IBindCtx pbc, IMoniker? pmkToLeft, [In()] ref Guid riid, [MarshalAs(UnmanagedType.Interface)] out object ppvObj);
+        void Reduce(IBindCtx pbc, int dwReduceHowFar, ref IMoniker? ppmkToLeft, out IMoniker? ppmkReduced);
+        void ComposeWith(IMoniker pmkRight, [MarshalAs(UnmanagedType.Bool)] bool fOnlyIfNotGeneric, out IMoniker? ppmkComposite);
+        void Enum([MarshalAs(UnmanagedType.Bool)] bool fForward, out IEnumMoniker? ppenumMoniker);
         [PreserveSig]
         int IsEqual(IMoniker pmkOtherMoniker);
         void Hash(out int pdwHash);
         [PreserveSig]
-        int IsRunning(IBindCtx pbc, IMoniker pmkToLeft, IMoniker pmkNewlyRunning);
-        void GetTimeOfLastChange(IBindCtx pbc, IMoniker pmkToLeft, out FILETIME pFileTime);
+        int IsRunning(IBindCtx pbc, IMoniker? pmkToLeft, IMoniker? pmkNewlyRunning);
+        void GetTimeOfLastChange(IBindCtx pbc, IMoniker? pmkToLeft, out FILETIME pFileTime);
         void Inverse(out IMoniker ppmk);
-        void CommonPrefixWith(IMoniker pmkOther, out IMoniker ppmkPrefix);
-        void RelativePathTo(IMoniker pmkOther, out IMoniker ppmkRelPath);
-        void GetDisplayName(IBindCtx pbc, IMoniker pmkToLeft, [MarshalAs(UnmanagedType.LPWStr)] out string ppszDisplayName);
+        void CommonPrefixWith(IMoniker pmkOther, out IMoniker? ppmkPrefix);
+        void RelativePathTo(IMoniker pmkOther, out IMoniker? ppmkRelPath);
+        void GetDisplayName(IBindCtx pbc, IMoniker? pmkToLeft, [MarshalAs(UnmanagedType.LPWStr)] out string ppszDisplayName);
         void ParseDisplayName(IBindCtx pbc, IMoniker pmkToLeft, [MarshalAs(UnmanagedType.LPWStr)] string pszDisplayName, out int pchEaten, out IMoniker ppmkOut);
         [PreserveSig]
         int IsSystemMoniker(out int pdwMksys);
index cb24d98..6fa3f80 100644 (file)
@@ -2,6 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
+#nullable enable
 namespace System.Runtime.InteropServices.ComTypes
 {
     [Guid("0000010b-0000-0000-C000-000000000046")]
@@ -16,7 +17,7 @@ namespace System.Runtime.InteropServices.ComTypes
         [PreserveSig]
         int IsDirty();
         void Load([MarshalAs(UnmanagedType.LPWStr)] string pszFileName, int dwMode);
-        void Save([MarshalAs(UnmanagedType.LPWStr)] string pszFileName, [MarshalAs(UnmanagedType.Bool)] bool fRemember);
+        void Save([MarshalAs(UnmanagedType.LPWStr)] string? pszFileName, [MarshalAs(UnmanagedType.Bool)] bool fRemember);
         void SaveCompleted([MarshalAs(UnmanagedType.LPWStr)] string pszFileName);
         void GetCurFile([MarshalAs(UnmanagedType.LPWStr)] out string ppszFileName);
     }
index 1884fcc..49078da 100644 (file)
@@ -2,6 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
+#nullable enable
 namespace System.Runtime.InteropServices.ComTypes
 {
     [Guid("00000010-0000-0000-C000-000000000046")]
index 09b2840..d15a09f 100644 (file)
@@ -2,6 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
+#nullable enable
 namespace System.Runtime.InteropServices.ComTypes
 {
     [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
index 7e63793..aea9a82 100644 (file)
@@ -2,6 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
+#nullable enable
 namespace System.Runtime.InteropServices.ComTypes
 {
     public enum DESCKIND
index 61776e4..a48d38d 100644 (file)
@@ -2,6 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
+#nullable enable
 namespace System.Runtime.InteropServices.ComTypes
 {
     public enum TYPEKIND
@@ -290,8 +291,8 @@ namespace System.Runtime.InteropServices.ComTypes
         void GetDllEntry(int memid, INVOKEKIND invKind, IntPtr pBstrDllName, IntPtr pBstrName, IntPtr pwOrdinal);
         void GetRefTypeInfo(int hRef, out ITypeInfo ppTI);
         void AddressOfMember(int memid, INVOKEKIND invKind, out IntPtr ppv);
-        void CreateInstance([MarshalAs(UnmanagedType.IUnknown)] object pUnkOuter, [In] ref Guid riid, [MarshalAs(UnmanagedType.IUnknown), Out] out object ppvObj);
-        void GetMops(int memid, out string pBstrMops);
+        void CreateInstance([MarshalAs(UnmanagedType.IUnknown)] object? pUnkOuter, [In] ref Guid riid, [MarshalAs(UnmanagedType.IUnknown), Out] out object ppvObj);
+        void GetMops(int memid, out string? pBstrMops);
         void GetContainingTypeLib(out ITypeLib ppTLB, out int pIndex);
         [PreserveSig]
         void ReleaseTypeAttr(IntPtr pTypeAttr);
index bad4f6c..e8918f5 100644 (file)
@@ -2,6 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
+#nullable enable
 namespace System.Runtime.InteropServices.ComTypes
 {
     [Guid("00020412-0000-0000-C000-000000000046")]
@@ -22,8 +23,8 @@ namespace System.Runtime.InteropServices.ComTypes
         new void GetDllEntry(int memid, INVOKEKIND invKind, IntPtr pBstrDllName, IntPtr pBstrName, IntPtr pwOrdinal);
         new void GetRefTypeInfo(int hRef, out ITypeInfo ppTI);
         new void AddressOfMember(int memid, INVOKEKIND invKind, out IntPtr ppv);
-        new void CreateInstance([MarshalAs(UnmanagedType.IUnknown)] object pUnkOuter, [In] ref Guid riid, [MarshalAs(UnmanagedType.IUnknown), Out] out object ppvObj);
-        new void GetMops(int memid, out string pBstrMops);
+        new void CreateInstance([MarshalAs(UnmanagedType.IUnknown)] object? pUnkOuter, [In] ref Guid riid, [MarshalAs(UnmanagedType.IUnknown), Out] out object ppvObj);
+        new void GetMops(int memid, out string? pBstrMops);
         new void GetContainingTypeLib(out ITypeLib ppTLB, out int pIndex);
         [PreserveSig]
         new void ReleaseTypeAttr(IntPtr pTypeAttr);
index 6cab58e..4e390c2 100644 (file)
@@ -2,6 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
+#nullable enable
 namespace System.Runtime.InteropServices.ComTypes
 {
     public enum SYSKIND
index 61703d1..ba0d8f9 100644 (file)
@@ -2,6 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
+#nullable enable
 namespace System.Runtime.InteropServices.ComTypes
 {
     [Guid("00020411-0000-0000-C000-000000000046")]
index d1c6aa9..60feb64 100644 (file)
@@ -2,6 +2,7 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
+#nullable enable
 using System;
 using System.Collections.Generic;
 using System.Diagnostics;
@@ -23,9 +24,9 @@ namespace Internal.Runtime.InteropServices
     public interface IClassFactory
     {
         void CreateInstance(
-            [MarshalAs(UnmanagedType.Interface)] object pUnkOuter,
+            [MarshalAs(UnmanagedType.Interface)] object? pUnkOuter,
             ref Guid riid,
-            [MarshalAs(UnmanagedType.Interface)] out object ppvObject);
+            [MarshalAs(UnmanagedType.Interface)] out object? ppvObject);
 
         void LockServer([MarshalAs(UnmanagedType.Bool)] bool fLock);
     }
@@ -49,9 +50,9 @@ namespace Internal.Runtime.InteropServices
     internal interface IClassFactory2 : IClassFactory
     {
         new void CreateInstance(
-            [MarshalAs(UnmanagedType.Interface)] object pUnkOuter,
+            [MarshalAs(UnmanagedType.Interface)] object? pUnkOuter,
             ref Guid riid,
-            [MarshalAs(UnmanagedType.Interface)] out object ppvObject);
+            [MarshalAs(UnmanagedType.Interface)] out object? ppvObject);
 
         new void LockServer([MarshalAs(UnmanagedType.Bool)] bool fLock);
 
@@ -62,8 +63,8 @@ namespace Internal.Runtime.InteropServices
             [MarshalAs(UnmanagedType.BStr)] out string pBstrKey);
 
         void CreateInstanceLic(
-            [MarshalAs(UnmanagedType.Interface)] object pUnkOuter,
-            [MarshalAs(UnmanagedType.Interface)] object pUnkReserved,
+            [MarshalAs(UnmanagedType.Interface)] object? pUnkOuter,
+            [MarshalAs(UnmanagedType.Interface)] object? pUnkReserved,
             ref Guid riid,
             [MarshalAs(UnmanagedType.BStr)] string bstrKey,
             [MarshalAs(UnmanagedType.Interface)] out object ppvObject);
@@ -95,7 +96,7 @@ namespace Internal.Runtime.InteropServices
     {
         // Collection of all ALCs used for COM activation. In the event we want to support
         // unloadable COM server ALCs, this will need to be changed.
-        private static Dictionary<string, AssemblyLoadContext> s_AssemblyLoadContexts = new Dictionary<string, AssemblyLoadContext>(StringComparer.InvariantCultureIgnoreCase);
+        private static readonly Dictionary<string, AssemblyLoadContext> s_AssemblyLoadContexts = new Dictionary<string, AssemblyLoadContext>(StringComparer.InvariantCultureIgnoreCase);
 
         /// <summary>
         /// Entry point for unmanaged COM activation API from managed code
@@ -149,9 +150,9 @@ $@"{nameof(GetClassFactoryForTypeInternal)} arguments:
                 {
                     ClassId = cxtInt.ClassId,
                     InterfaceId = cxtInt.InterfaceId,
-                    AssemblyPath = Marshal.PtrToStringUni(new IntPtr(cxtInt.AssemblyPathBuffer)),
-                    AssemblyName = Marshal.PtrToStringUni(new IntPtr(cxtInt.AssemblyNameBuffer)),
-                    TypeName = Marshal.PtrToStringUni(new IntPtr(cxtInt.TypeNameBuffer))
+                    AssemblyPath = Marshal.PtrToStringUni(new IntPtr(cxtInt.AssemblyPathBuffer))!,
+                    AssemblyName = Marshal.PtrToStringUni(new IntPtr(cxtInt.AssemblyNameBuffer))!,
+                    TypeName = Marshal.PtrToStringUni(new IntPtr(cxtInt.TypeNameBuffer))!
                 };
 
                 object cf = GetClassFactoryForType(cxt);
@@ -235,7 +236,7 @@ $@"{nameof(GetClassFactoryForTypeInternal)} arguments:
                 _classType = classType;
             }
 
-            public static void ValidateInterfaceRequest(Type classType, ref Guid riid, object outer)
+            public static void ValidateInterfaceRequest(Type classType, ref Guid riid, object? outer)
             {
                 Debug.Assert(classType != null);
                 if (riid == Marshal.IID_IUnknown)
@@ -287,13 +288,13 @@ $@"{nameof(GetClassFactoryForTypeInternal)} arguments:
             }
 
             public void CreateInstance(
-                [MarshalAs(UnmanagedType.Interface)] object pUnkOuter,
+                [MarshalAs(UnmanagedType.Interface)] object? pUnkOuter,
                 ref Guid riid,
-                [MarshalAs(UnmanagedType.Interface)] out object ppvObject)
+                [MarshalAs(UnmanagedType.Interface)] out object? ppvObject)
             {
                 BasicClassFactory.ValidateInterfaceRequest(_classType, ref riid, pUnkOuter);
 
-                ppvObject = Activator.CreateInstance(_classType);
+                ppvObject = Activator.CreateInstance(_classType)!;
                 if (pUnkOuter != null)
                 {
                     ppvObject = BasicClassFactory.CreateAggregatedObject(pUnkOuter, ppvObject);
@@ -320,9 +321,9 @@ $@"{nameof(GetClassFactoryForTypeInternal)} arguments:
             }
 
             public void CreateInstance(
-                [MarshalAs(UnmanagedType.Interface)] object pUnkOuter,
+                [MarshalAs(UnmanagedType.Interface)] object? pUnkOuter,
                 ref Guid riid,
-                [MarshalAs(UnmanagedType.Interface)] out object ppvObject)
+                [MarshalAs(UnmanagedType.Interface)] out object? ppvObject)
             {
                 CreateInstanceInner(pUnkOuter, ref riid, key: null, isDesignTime: true, out ppvObject);
             }
@@ -351,8 +352,8 @@ $@"{nameof(GetClassFactoryForTypeInternal)} arguments:
             }
 
             public void CreateInstanceLic(
-                [MarshalAs(UnmanagedType.Interface)] object pUnkOuter,
-                [MarshalAs(UnmanagedType.Interface)] object pUnkReserved,
+                [MarshalAs(UnmanagedType.Interface)] object? pUnkOuter,
+                [MarshalAs(UnmanagedType.Interface)] object? pUnkReserved,
                 ref Guid riid,
                 [MarshalAs(UnmanagedType.BStr)] string bstrKey,
                 [MarshalAs(UnmanagedType.Interface)] out object ppvObject)
@@ -362,9 +363,9 @@ $@"{nameof(GetClassFactoryForTypeInternal)} arguments:
             }
 
             private void CreateInstanceInner(
-                object pUnkOuter,
+                object? pUnkOuter,
                 ref Guid riid,
-                string key,
+                string? key,
                 bool isDesignTime,
                 out object ppvObject)
             {
@@ -408,8 +409,8 @@ $@"{nameof(GetClassFactoryForTypeInternal)} arguments:
         private MethodInfo _licInfoHelperContains;
 
         // RCW Activation
-        private object _licContext;
-        private Type _targetRcwType;
+        private object? _licContext;
+        private Type? _targetRcwType;
 
         static LicenseInteropProxy()
         {
@@ -468,15 +469,15 @@ $@"{nameof(GetClassFactoryForTypeInternal)} arguments:
 
             // Types are as follows:
             // LicenseContext, Type, out License, out string
-            object licContext = Activator.CreateInstance(_licInfoHelper);
-            var parameters = new object[] { licContext, type, /* out */ null, /* out */ null };
+            object licContext = Activator.CreateInstance(_licInfoHelper)!;
+            var parameters = new object?[] { licContext, type, /* out */ null, /* out */ null };
             bool isValid = (bool)_validateTypeAndReturnDetails.Invoke(null, BindingFlags.DoNotWrapExceptions, binder: null, parameters: parameters, culture: null);
             if (!isValid)
             {
                 return;
             }
 
-            var license = (IDisposable)parameters[2];
+            var license = (IDisposable?)parameters[2];
             if (license != null)
             {
                 license.Dispose();
@@ -500,20 +501,20 @@ $@"{nameof(GetClassFactoryForTypeInternal)} arguments:
 
             // Types are as follows:
             // LicenseContext, Type, out License, out string
-            var parameters = new object[] { /* use global LicenseContext */ null, type, /* out */ null, /* out */ null };
+            var parameters = new object?[] { /* use global LicenseContext */ null, type, /* out */ null, /* out */ null };
             bool isValid = (bool)_validateTypeAndReturnDetails.Invoke(null, BindingFlags.DoNotWrapExceptions, binder: null, parameters: parameters, culture: null);
             if (!isValid)
             {
                 throw new COMException(); //E_FAIL
             }
 
-            var license = (IDisposable)parameters[2];
+            var license = (IDisposable?)parameters[2];
             if (license != null)
             {
                 license.Dispose();
             }
 
-            string licenseKey = (string)parameters[3];
+            var licenseKey = (string?)parameters[3];
             if (licenseKey == null)
             {
                 throw new COMException(); //E_FAIL
@@ -532,9 +533,9 @@ $@"{nameof(GetClassFactoryForTypeInternal)} arguments:
         // If we are being entered because of a call to ICF::CreateInstanceLic(),
         // "isDesignTime" will be "false" and "key" will point to a non-null
         // license key.
-        public object AllocateAndValidateLicense(Type type, string key, bool isDesignTime)
+        public object AllocateAndValidateLicense(Type type, string? key, bool isDesignTime)
         {
-            object[] parameters;
+            object?[] parameters;
             object licContext;
             if (isDesignTime)
             {
@@ -543,7 +544,7 @@ $@"{nameof(GetClassFactoryForTypeInternal)} arguments:
             }
             else
             {
-                parameters = new object[] { type, key };
+                parameters = new object?[] { type, key };
                 licContext = _createRuntimeContext.Invoke(null, BindingFlags.DoNotWrapExceptions, binder: null, parameters: parameters, culture: null);
             }
 
@@ -566,12 +567,12 @@ $@"{nameof(GetClassFactoryForTypeInternal)} arguments:
 
             // Types are as follows:
             // Type, out bool, out string -> LicenseContext
-            var parameters = new object[] { targetRcwTypeMaybe, /* out */ null, /* out */ null };
+            var parameters = new object[] { targetRcwTypeMaybe, /* out */ null!, /* out */ null! };
             _licContext = _getCurrentContextInfo.Invoke(null, BindingFlags.DoNotWrapExceptions, binder: null, parameters: parameters, culture: null);
 
             _targetRcwType = targetRcwTypeMaybe;
             isDesignTime = (bool)parameters[1];
-            bstrKey = Marshal.StringToBSTR((string)parameters[2]);
+            bstrKey = Marshal.StringToBSTR((string?)parameters[2]);
         }
 
         // The CLR invokes this when instantiating a licensed COM
@@ -586,7 +587,7 @@ $@"{nameof(GetClassFactoryForTypeInternal)} arguments:
             }
 
             string key = Marshal.PtrToStringBSTR(bstrKey);
-            var parameters = new object[] { _targetRcwType, key };
+            var parameters = new object?[] { _targetRcwType, key };
             _setSavedLicenseKey.Invoke(_licContext, BindingFlags.DoNotWrapExceptions, binder: null, parameters: parameters, culture: null);
         }
     }
index 895aa54..012f0c7 100644 (file)
@@ -13,6 +13,7 @@
 **
 =============================================================================*/
 
+#nullable enable
 namespace System.Runtime.InteropServices {
     using System;
     using System.Reflection;
@@ -29,7 +30,7 @@ namespace System.Runtime.InteropServices {
         // implementations of get_InnerException to be provided by the base class. It works only if Exception.get_InnerException
         // is virtual.
         //
-        Exception InnerException {
+        Exception? InnerException {
             get;
         }
    }
index 6771151..b02365e 100644 (file)
@@ -2,12 +2,9 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
-//
-
-using System;
+#nullable enable
 using System.Diagnostics;
 using System.Runtime.CompilerServices;
-using System.Security;
 
 using Internal.Runtime.CompilerServices;
 
@@ -65,7 +62,7 @@ namespace System.Runtime.InteropServices.WindowsRuntime
             }
         }
 
-        public override string ToString()
+        public override string? ToString()
         {
             if (_data != null)
             {
@@ -326,7 +323,7 @@ namespace System.Runtime.InteropServices.WindowsRuntime
             {
                 try
                 {
-                    coercedArray[i] = CoerceScalarValue<T>(scalarType, dataArray.GetValue(i));
+                    coercedArray[i] = CoerceScalarValue<T>(scalarType, dataArray.GetValue(i)!);
                 }
                 catch (InvalidCastException elementCastException)
                 {
@@ -379,7 +376,7 @@ namespace System.Runtime.InteropServices.WindowsRuntime
                     {
                         if (numericScalar.Item1 == typeof(T))
                         {
-                            return (T)Convert.ChangeType(value, typeof(T), System.Globalization.CultureInfo.InvariantCulture);
+                            return (T)Convert.ChangeType(value, typeof(T), System.Globalization.CultureInfo.InvariantCulture)!;
                         }
                     }
                 }
index 8b9e7f1..e1061bd 100644 (file)
@@ -2,13 +2,9 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
-//
-
-using System;
+#nullable enable
 using System.Collections;
 using System.Diagnostics;
-using System.Reflection;
-using System.Security;
 
 namespace System.Runtime.InteropServices.WindowsRuntime
 {
@@ -17,7 +13,7 @@ namespace System.Runtime.InteropServices.WindowsRuntime
         private T _value;
 
         public CLRIReferenceImpl(PropertyType type, T obj)
-            : base(type, obj)
+            : base(type, obj!)
         {
             Debug.Assert(obj != null, "Must not be null");
             _value = obj;
@@ -28,7 +24,7 @@ namespace System.Runtime.InteropServices.WindowsRuntime
             get { return _value; }
         }
 
-        public override string ToString()
+        public override string? ToString()
         {
             if (_value != null)
             {
@@ -42,7 +38,7 @@ namespace System.Runtime.InteropServices.WindowsRuntime
 
         object IGetProxyTarget.GetTarget()
         {
-            return (object)_value;
+            return _value!; // TODO-NULLABLE-GENERIC
         }
 
         // We have T in an IReference<T>.  Need to QI for IReference<T> with the appropriate GUID, call
@@ -55,7 +51,7 @@ namespace System.Runtime.InteropServices.WindowsRuntime
             Debug.Assert(wrapper != null);
             IReference<T> reference = (IReference<T>)wrapper;
             Debug.Assert(reference != null, "CLRIReferenceImpl::UnboxHelper - QI'ed for IReference<" + typeof(T) + ">, but that failed.");
-            return reference.Value;
+            return reference.Value!; // TODO-NULLABLE-GENERIC
         }
     }
 
@@ -83,7 +79,7 @@ namespace System.Runtime.InteropServices.WindowsRuntime
             get { return _value; }
         }
 
-        public override string ToString()
+        public override string? ToString()
         {
             if (_value != null)
             {
@@ -296,11 +292,11 @@ namespace System.Runtime.InteropServices.WindowsRuntime
             if (propType.HasValue)
             {
                 Type specificType = typeof(CLRIReferenceImpl<>).MakeGenericType(type);
-                return Activator.CreateInstance(specificType, new object[] { propType.GetValueOrDefault(), obj });
+                return Activator.CreateInstance(specificType, new object[] { propType.GetValueOrDefault(), obj })!;
             }
 
             Debug.Fail("We should not see non-WinRT type here");
-            return null;
+            return null!;
         }
 
         internal static object CreateIReferenceArray(Array obj)
@@ -367,7 +363,7 @@ namespace System.Runtime.InteropServices.WindowsRuntime
                 if (type.IsGenericType &&
                     type.GetGenericTypeDefinition() == typeof(System.Collections.Generic.KeyValuePair<,>))
                 {
-                    object[] objArray = new object[obj.Length];
+                    object?[] objArray = new object?[obj.Length];
                     for (int i = 0; i < objArray.Length; i++)
                     {
                         objArray[i] = obj.GetValue(i);
@@ -389,7 +385,7 @@ namespace System.Runtime.InteropServices.WindowsRuntime
             {
                 // All WinRT value type will be Property.Other
                 Type specificType = typeof(CLRIReferenceArrayImpl<>).MakeGenericType(type);
-                return Activator.CreateInstance(specificType, new object[] { propType.GetValueOrDefault(), obj });
+                return Activator.CreateInstance(specificType, new object[] { propType.GetValueOrDefault(), obj })!;
             }
             else
             {