Skip to content

MakeLocalFunctionStaticCodeRefactoringProvider crashes casting LocalFunctionSymbol to SynthesizedSimpleProgramEntryPointSymbol #53179

@jnm2

Description

@jnm2

Version Used: 16.10-p2.1

void M<SomeTypeParameter>(
    SomeClass a,
    SomeStruct b,
    SomeRecord c,
    SomeEnum d,
    SomeInterface e,
    SomeDelegate f,
    SomeTypeParameter g)
{
}

class SomeClass { }
struct SomeStruct { }
record SomeRecord;
enum SomeEnum { }
interface SomeInterface { }
delegate void SomeDelegate();
<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

</Project>

image

System.InvalidCastException : Unable to cast object of type 'Microsoft.CodeAnalysis.CSharp.Symbols.LocalFunctionSymbol' to type 'Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedSimpleProgramEntryPointSymbol'.

   at Microsoft.CodeAnalysis.CSharp.Binder.BindSimpleProgram(CompilationUnitSyntax compilationUnit,BindingDiagnosticBag diagnostics)
   at Microsoft.CodeAnalysis.CSharp.Binder.BindMethodBody(CSharpSyntaxNode syntax,BindingDiagnosticBag diagnostics)
   at Microsoft.CodeAnalysis.CSharp.MemberSemanticModel.IncrementalBinder.BindMethodBody(CSharpSyntaxNode node,BindingDiagnosticBag diagnostics)
   at Microsoft.CodeAnalysis.CSharp.MethodBodySemanticModel.Bind(Binder binder,CSharpSyntaxNode node,BindingDiagnosticBag diagnostics)
   at Microsoft.CodeAnalysis.CSharp.MemberSemanticModel.GetBoundNodes(CSharpSyntaxNode node)
   at Microsoft.CodeAnalysis.CSharp.MemberSemanticModel.GetUpperBoundNode(CSharpSyntaxNode node,Boolean promoteToBindable)
   at Microsoft.CodeAnalysis.CSharp.MemberSemanticModel.GetBoundRoot()
   at Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel.RegionAnalysisContext(StatementSyntax firstStatement,StatementSyntax lastStatement)
   at Microsoft.CodeAnalysis.CSharp.SyntaxTreeSemanticModel.AnalyzeDataFlow(StatementSyntax firstStatement,StatementSyntax lastStatement)
   at Microsoft.CodeAnalysis.CSharp.CSharpSemanticModel.AnalyzeDataFlow(StatementSyntax statement)
   at Microsoft.CodeAnalysis.CSharp.MakeLocalFunctionStatic.MakeLocalFunctionStaticHelper.TryGetDataFlowAnalysis(LocalFunctionStatementSyntax localFunction,SemanticModel semanticModel,DataFlowAnalysis& dataFlow)
   at Microsoft.CodeAnalysis.CSharp.MakeLocalFunctionStatic.MakeLocalFunctionStaticHelper.CanMakeLocalFunctionStaticByRefactoringCaptures(LocalFunctionStatementSyntax localFunction,SemanticModel semanticModel,ImmutableArray`1& captures)
   at async Microsoft.CodeAnalysis.CSharp.MakeLocalFunctionStatic.MakeLocalFunctionStaticCodeRefactoringProvider.ComputeRefactoringsAsync(<Unknown Parameters>)
   at async Microsoft.CodeAnalysis.CodeRefactorings.CodeRefactoringService.GetRefactoringFromProviderAsync(<Unknown Parameters>)
   at Microsoft.VisualStudio.Telemetry.WindowsErrorReporting.WatsonReport.GetClrWatsonExceptionInfo(Exception exceptionObject)

Metadata

Metadata

Assignees

Labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions