dotnet/roslyn
View on GitHubImprove CS8893 when CallConvX is not defined in corelib
Open
#49,638 opened on Nov 26, 2020
Area-CompilersConcept-Diagnostic Clarityhelp wanted
Repository metrics
- Stars
- (20,414 stars)
- PR merge metrics
- (Avg merge 6d 17h) (256 merged PRs in 30d)
Description
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.