Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/runtime.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/JIT/Intrinsics/TypeIntrinsics.IsAssignableFrom.cs')
-rw-r--r--src/tests/JIT/Intrinsics/TypeIntrinsics.IsAssignableFrom.cs16
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>>());