diff options
Diffstat (limited to 'src/tests/JIT/Intrinsics/TypeIntrinsics.IsAssignableFrom.cs')
-rw-r--r-- | src/tests/JIT/Intrinsics/TypeIntrinsics.IsAssignableFrom.cs | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/tests/JIT/Intrinsics/TypeIntrinsics.IsAssignableFrom.cs b/src/tests/JIT/Intrinsics/TypeIntrinsics.IsAssignableFrom.cs index d6520d30f9b..706cae6a8e8 100644 --- a/src/tests/JIT/Intrinsics/TypeIntrinsics.IsAssignableFrom.cs +++ b/src/tests/JIT/Intrinsics/TypeIntrinsics.IsAssignableFrom.cs @@ -71,7 +71,7 @@ public partial class Program IsFalse(typeof(float).IsAssignableFrom(typeof(SimpleEnum_uint))); IsFalse(typeof(SimpleEnum_uint).IsAssignableFrom(typeof(ValueType))); - // Covariance/Contravariance + // Covariance/Contravariance IsTrue (typeof(IEnumerable<object>).IsAssignableFrom(typeof(List<string>))); IsTrue (typeof(IEnumerable<ClassA>).IsAssignableFrom(typeof(List<ClassB>))); IsTrue (typeof(IEnumerable<ClassA>).IsAssignableFrom(typeof(IList<ClassB>))); @@ -166,6 +166,20 @@ public partial class Program IsFalse(typeof(Vector128<float>).IsAssignableFrom(typeof(Vector<float>))); IsFalse(typeof(Vector256<float>).IsAssignableFrom(typeof(Vector<float>))); + // null type + IsFalse(typeof(int).IsAssignableFrom(null)); + IsFalse(typeof(object).IsAssignableFrom(null)); + ThrowsNRE(() => { _ = ((Type)null).IsAssignableFrom(typeof(int)); }); + ThrowsNRE(() => { _ = ((Type)null).IsAssignableFrom(typeof(object)); }); + ThrowsNRE(() => { _ = ((Type)null).IsAssignableFrom(null); }); + ThrowsNRE(() => { _ = ((Type)null).IsAssignableFrom(null); }); + IsFalse(typeof(int).IsAssignableFrom(__reftype(default))); + IsFalse(typeof(object).IsAssignableFrom(__reftype(default))); + ThrowsNRE(() => { _ = __reftype(default).IsAssignableFrom(typeof(int)); }); + ThrowsNRE(() => { _ = __reftype(default).IsAssignableFrom(typeof(object)); }); + ThrowsNRE(() => { _ = __reftype(default).IsAssignableFrom(__reftype(default)); }); + ThrowsNRE(() => { _ = __reftype(default).IsAssignableFrom(__reftype(default)); }); + // System.__Canon IsTrue (IsAssignableFrom<KeyValuePair<IDisposable, IDisposable>, KeyValuePair<IDisposable, IDisposable>>()); IsTrue (IsAssignableFrom<KeyValuePair<IDisposable, object>, KeyValuePair<IDisposable, object>>()); |