dotnet/roslyn
Improve CS8893 when CallConvX is not defined in corelib
Aperta
#49.638 aperta il 26 nov 2020
Area-CompilersConcept-Diagnostic Clarityhelp wanted
Metriche repository
- Star
- (20.414 stelle)
- Metriche merge PR
- (Merge medio 6g 17h) (256 PR mergiate in 30 g)
Descrizione
Version Used: .NET CORE SDK 5.0.100
Steps to Reproduce:
- Create a new library that targets netcoreapp3.1.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
</Project>
- Attempt to compile the following code:
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
namespace MyNamespace
{
public class Class1
{
[UnmanagedCallersOnly(CallConvs = new[] { typeof(CallConvStdcall) })]
public static void TestImpl() { }
}
}
#if !NET5_0
namespace System.Runtime.InteropServices
{
[AttributeUsage(AttributeTargets.Method, Inherited = false)]
public sealed class UnmanagedCallersOnlyAttribute : Attribute
{
public UnmanagedCallersOnlyAttribute() { }
public Type[] CallConvs;
public string EntryPoint;
}
}
#endif
Expected Behavior:
Build succeeded. 0 Warning(s) 0 Error(s)
Actual Behavior:
error CS8893: 'CallConvStdcall' is not a valid calling convention type for 'UnmanagedCallersOnly'.
Notes: This code compiles fine for net45, netstandard2.0, netstandard2.1.