Fix CanCastTo behavior (#39915)
authorDavid Wrighton <davidwr@microsoft.com>
Sat, 25 Jul 2020 03:31:58 +0000 (20:31 -0700)
committerGitHub <noreply@github.com>
Sat, 25 Jul 2020 03:31:58 +0000 (20:31 -0700)
* Fix missing cases in CanCastTo

* Update issues.targets to start running the previously broken tests

src/coreclr/src/tools/Common/TypeSystem/Common/CastingHelper.cs
src/coreclr/tests/issues.targets

index d10a2dc..e10782e 100644 (file)
@@ -166,6 +166,17 @@ namespace Internal.TypeSystem
                 case TypeFlags.SzArray:
                     return ((ArrayType)thisType).CanCastArrayTo(otherType, protect);
 
+                case TypeFlags.ByRef:
+                case TypeFlags.Pointer:
+                    if (otherType.Category == thisType.Category)
+                    {
+                        return ((ParameterizedType)thisType).CanCastParamTo(((ParameterizedType)otherType).ParameterType, protect);
+                    }
+                    return false;
+
+                case TypeFlags.FunctionPointer:
+                    return false;
+
                 default:
                     Debug.Assert(thisType.IsDefType);
                     return thisType.CanCastToClassOrInterface(otherType, protect);
index c6c0b01..e33de4d 100644 (file)
         <ExcludeList Include="$(XunitTestBinBase)/JIT/Generics/Arrays/TypeParameters/MultiDim/**/*">
             <Issue>https://github.com/dotnet/runtime/issues/38260</Issue>
         </ExcludeList>
-        <ExcludeList Include="$(XunitTestBinBase)/JIT/Intrinsics/TypeIntrinsics_r/*">
-            <Issue>https://github.com/dotnet/runtime/issues/32725</Issue>
-        </ExcludeList>
-        <ExcludeList Include="$(XunitTestBinBase)/JIT/Intrinsics/TypeIntrinsics_ro/*">
-            <Issue>https://github.com/dotnet/runtime/issues/32725</Issue>
-        </ExcludeList>
         <ExcludeList Include="$(XunitTestBinBase)/JIT/Methodical/tailcall_v4/hijacking/*">
             <Issue>https://github.com/dotnet/runtime/issues/7597</Issue>
         </ExcludeList>
         <ExcludeList Include="$(XunitTestBinBase)/JIT/SIMD/SimpleSIMDProgram/*">
             <Issue>https://github.com/dotnet/runtime/issues/35724</Issue>
         </ExcludeList>
-        <ExcludeList Include="$(XunitTestBinBase)/JIT/Stress/ABI/**/*">
-            <Issue>https://github.com/dotnet/runtime/issues/32725</Issue>
-        </ExcludeList>
         <ExcludeList Include="$(XunitTestBinBase)/JIT/superpmi/superpmicollect/*">
             <Issue>Not compatible with crossgen2</Issue>
         </ExcludeList>