Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Logging Source Generator fails to compile using keyword parameters with @ prefixes #60968

Closed
Tracked by #64015
martincostello opened this issue Oct 28, 2021 · 9 comments · Fixed by #64663
Closed
Tracked by #64015
Assignees
Milestone

Comments

@martincostello
Copy link
Member

martincostello commented Oct 28, 2021

Description

If a C# keyword is used as a parameter name for a [LoggerMessage] method using the logging source generator prefixed with an @, such as the example below, the application will fail to compile due to the source generator creating invalid C#.

[LoggerMessage(1, LogLevel.Information, "Event: {event}")]
public static partial void LogEvent(ILogger logger, object @event);

If the @ is included in the template to match the parameter, it will also fail to compile.

Reproduction Steps

Attempt to run the following program using .NET 6 RC2:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0-rc.2.21480.5" /> 
    <PackageReference Include="Microsoft.Extensions.Logging" Version="6.0.0-rc.2.21480.5" />
    <PackageReference Include="Microsoft.Extensions.Logging.Console" Version="6.0.0-rc.2.21480.5" />
  </ItemGroup>
</Project>
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;

using var serviceProvider = new ServiceCollection()
    .AddLogging(builder => builder.AddConsole())
    .BuildServiceProvider();

var loggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>();
var logger = loggerFactory.CreateLogger("MyLogger");

Log.LogEvent(logger, new { foo = "bar" });

internal static partial class Log
{
    [LoggerMessage(1, LogLevel.Information, "Event: {event}")]
    public static partial void LogEvent(ILogger logger, object @event);
}

Expected behavior

The following text is printed to the console:

info: MyLogger[1]
      Event: { foo = bar }

Actual behavior

The application fails to compile:

C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(11,125): error CS0065: 'Log.': event property must have both add and remove accessors [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(15,49): error CS0065: 'Log.': event property must have both add and remove accessors [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(11,36): error CS0756: A partial method may not have multiple defining declarations [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Program.cs(16,32): error CS8795: Partial method 'Log.LogEvent(ILogger, object)' must have an implementation part because it has accessibility modifiers. [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(11,36): error CS0111: Type 'Log' already defines a member called 'LogEvent' with the same parameter types [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(15,49): error CS0102: The type 'Log' already contains a definition for '' [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(11,125): error CS0708: '': cannot declare instance members in a static class [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(15,49): error CS0708: '': cannot declare instance members in a static class [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]

The build failed. Fix the build errors and run again

It also fails to compile if the code is changed to include the @ in the template:

C:\Coding\martincostello\LoggerMessageKeywords\Program.cs(16,64): warning SYSLIB1015: Argument 'event' is not referenced from the logging message [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Program.cs(15,6): error SYSLIB1014: Template '@event' is not provided as argument to the logging method [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(50,125): error CS0065: 'Log.': event property must have both add and remove accessors [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(57,47): error CS0065: 'Log.': event property must have both add and remove accessors [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(50,36): error CS0756: A partial method may not have multiple defining declarations [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Program.cs(16,32): error CS8795: Partial method 'Log.LogEvent(ILogger, object)' must have an implementation part because it has accessibility modifiers. [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(11,20): error CS0501: 'Log.__LogEventStruct.__LogEventStruct(object)' must declare a body because it is not marked abstract, extern, or partial [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(11,64): error CS0065: 'Log.__LogEventStruct.': event property must have both add and remove accessors [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(13,36): error CS0065: 'Log.__LogEventStruct.': event property must have both add and remove accessors [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(50,36): error CS0111: Type 'Log' already defines a member called 'LogEvent' with the same parameter types [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(57,47): error CS0102: The type 'Log' already contains a definition for '' [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(50,125): error CS0708: '': cannot declare instance members in a static class [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(57,47): error CS0708: '': cannot declare instance members in a static class [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(13,36): error CS0102: The type 'Log.__LogEventStruct' already contains a definition for '' [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]

The build failed. Fix the build errors and run again.

Regression?

No.

Known Workarounds

Do not use a C# identifier prefixed with @ as a logger message method parameter.

Configuration

Output from dotnet --info:

.NET SDK (reflecting any global.json):
 Version:   6.0.100-rc.2.21505.57
 Commit:    ab39070116

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.19043
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\6.0.100-rc.2.21505.57\

Host (useful for support):
  Version: 6.0.0-rc.2.21480.5
  Commit:  6b11d64e7e

Other information

No response

@dotnet-issue-labeler dotnet-issue-labeler bot added area-Extensions-Logging untriaged New issue has not been triaged by the area owner labels Oct 28, 2021
@ghost
Copy link

ghost commented Oct 28, 2021

Tagging subscribers to this area: @maryamariyan
See info in area-owners.md if you want to be subscribed.

Issue Details

Description

If a C# keyword is used as a parameter name for a [LoggerMessage] method using the logging source generator prefixed with an @, such as the example below, the application will fail to compile due to the source generator creating invalid C#.

[LoggerMessage(1, LogLevel.Information, "Event: {event}")]
public static partial void LogEvent(ILogger logger, object @event);

If the @ is included in the template to match the parameter, it will also fail to compile.

Reproduction Steps

Attempt to run the following program using .NET 6 RC2:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
	<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.0-rc.2.21480.5" />
	<PackageReference Include="Microsoft.Extensions.Logging" Version="6.0.0-rc.2.21480.5" />
	<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="6.0.0-rc.2.21480.5" />
  </ItemGroup>
</Project>
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;

using var serviceProvider = new ServiceCollection()
    .AddLogging(builder => builder.AddConsole())
    .BuildServiceProvider();

var loggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>();
var logger = loggerFactory.CreateLogger("MyLogger");

Log.LogEvent(logger, new { foo = "bar" });

internal static partial class Log
{
    [LoggerMessage(1, LogLevel.Information, "Event: {event}")]
    public static partial void LogEvent(ILogger logger, object @event);
}

Expected behavior

The following text is printed to the console:

info: MyLogger[1]
      Event: { foo = bar }

Actual behavior

The application fails to compile:

C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(11,125): error CS0065: 'Log.': event property must have both add and remove accessors [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(15,49): error CS0065: 'Log.': event property must have both add and remove accessors [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(11,36): error CS0756: A partial method may not have multiple defining declarations [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Program.cs(16,32): error CS8795: Partial method 'Log.LogEvent(ILogger, object)' must have an implementation part because it has accessibility modifiers. [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(11,36): error CS0111: Type 'Log' already defines a member called 'LogEvent' with the same parameter types [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(15,49): error CS0102: The type 'Log' already contains a definition for '' [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(11,125): error CS0708: '': cannot declare instance members in a static class [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(15,49): error CS0708: '': cannot declare instance members in a static class [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]

The build failed. Fix the build errors and run again

It also fails to compile if the code is changed to include the @ in the template:

C:\Coding\martincostello\LoggerMessageKeywords\Program.cs(16,64): warning SYSLIB1015: Argument 'event' is not referenced from the logging message [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Program.cs(15,6): error SYSLIB1014: Template '@event' is not provided as argument to the logging method [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(50,125): error CS0065: 'Log.': event property must have both add and remove accessors [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(57,47): error CS0065: 'Log.': event property must have both add and remove accessors [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(50,36): error CS0756: A partial method may not have multiple defining declarations [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Program.cs(16,32): error CS8795: Partial method 'Log.LogEvent(ILogger, object)' must have an implementation part because it has accessibility modifiers. [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(11,20): error CS0501: 'Log.__LogEventStruct.__LogEventStruct(object)' must declare a body because it is not marked abstract, extern, or partial [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(11,64): error CS0065: 'Log.__LogEventStruct.': event property must have both add and remove accessors [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(13,36): error CS0065: 'Log.__LogEventStruct.': event property must have both add and remove accessors [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(50,36): error CS0111: Type 'Log' already defines a member called 'LogEvent' with the same parameter types [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(57,47): error CS0102: The type 'Log' already contains a definition for '' [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(50,125): error CS0708: '': cannot declare instance members in a static class [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(57,47): error CS0708: '': cannot declare instance members in a static class [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]
C:\Coding\martincostello\LoggerMessageKeywords\Microsoft.Extensions.Logging.Generators\Microsoft.Extensions.Logging.Generators.LoggerMessageGenerator\LoggerMessage.g.cs(13,36): error CS0102: The type 'Log.__LogEventStruct' already contains a definition for '' [C:\Coding\martincostello\LoggerMessageKeywords\LoggerMessageKeywords.csproj]

The build failed. Fix the build errors and run again.

Regression?

No.

Known Workarounds

Do not use a C# identifier prefixed with @ as a logger message method parameter.

Configuration

Output from dotnet --info:

.NET SDK (reflecting any global.json):
 Version:   6.0.100-rc.2.21505.57
 Commit:    ab39070116

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.19043
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\6.0.100-rc.2.21505.57\

Host (useful for support):
  Version: 6.0.0-rc.2.21480.5
  Commit:  6b11d64e7e

Other information

No response

Author: martincostello
Assignees: -
Labels:

untriaged, area-Extensions-Logging

Milestone: -

@maryamariyan maryamariyan added this to the 7.0.0 milestone Oct 28, 2021
@maryamariyan maryamariyan removed the untriaged New issue has not been triaged by the area owner label Oct 28, 2021
@MichalBrylka
Copy link
Contributor

MichalBrylka commented Nov 8, 2021

I had similar issue. Seems that message template parser fails to recognize special meaning of "@" where it's well-known standard:
https://messagetemplates.org/

Tested with
<PackageReference Include="Microsoft.Extensions.Logging" Version="6.0.0" />

@MichalBrylka
Copy link
Contributor

MichalBrylka commented Nov 8, 2021

moreover it seems that @ is generally not supported well MS.Extensions.Logging
iLogger.LogInformation("TestController.Hello {@Person}", new Person("Mike", 30));
this simply calls ToString on Person class:
TestController.Hello Person { Name = Mike, Age = 30 }
Whereas Serilog handles that more nicely:

using Serilog;
Log.Logger = new LoggerConfiguration()
    .Enrich.FromLogContext()
    .WriteTo.Console()
    .CreateLogger();
Log.Logger.Warning("Person {Person}", new Person("Mike", 30));
//ToString is called: Person Person { Name = Mike, Age = 30 }


Log.Logger.Warning("Person properties {@Person}", new Person("Mike", 30));
//properties are being unpacked: Person properties {"Name": "Mike", "Age": 30, "$type": "Person"}

@sakno
Copy link
Contributor

sakno commented Nov 19, 2021

Related issue: serilog/serilog-extensions-logging#197
Related discussion: #61813

@MichalBrylka
Copy link
Contributor

@maryamariyan can this issue be addresses in current version or we need to wait till NET 7.0 ?

@sakno
Copy link
Contributor

sakno commented Nov 19, 2021

@maryamariyan , I'm ready fix this in two steps:

  • Servicing update for .NET 6 to correctly handle parameter names matching keywords in C#
  • The second part requires to write a proposal and start API approval process

@maryamariyan
Copy link
Member

This would be fixed in 7.0

@maryamariyan
Copy link
Member

Closed #62572 as dupe of this. Would also need to consider support for parameter name prefixed with $ as mentioned in that issue.

@maryamariyan maryamariyan self-assigned this Jan 19, 2022
maryamariyan added a commit to maryamariyan/runtime that referenced this issue Feb 2, 2022
@ghost ghost added the in-pr There is an active PR which will close this issue when it is merged label Feb 2, 2022
maryamariyan added a commit that referenced this issue Feb 3, 2022
…ters (#64663)

* Adds support to `@` signed prefixed parameters

Fixes #60968

* Move repetitive logic to a new property

* Remove NeedsAtSign
@ghost ghost removed the in-pr There is an active PR which will close this issue when it is merged label Feb 3, 2022
maryamariyan added a commit to maryamariyan/runtime that referenced this issue Feb 4, 2022
…ters (dotnet#64663)

* Adds support to `@` signed prefixed parameters

Fixes dotnet#60968

* Move repetitive logic to a new property

* Remove NeedsAtSign
@maryamariyan
Copy link
Member

This would be fixed in 7.0

The bugfix was included in the main branch for 7.0. As part of PR #64779, we're also considering this for servicing for 6.0.

@ghost ghost locked as resolved and limited conversation to collaborators Mar 6, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants