-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Closed
Closed
Copy link
Labels
Milestone
Description
As of 10.0.100-preview.4.25169.12 SDK toolset, this snippet of code crashes Roslyn, I've simplified it as most as I can. If I only use 1 field, or others are e.g. auto props, it works fine. Also in a class it works fine.
This did previously work on e.g. 10.0.100-preview.3.25125.5.
Version Used: 10.0.100-preview.4.25169.12
Sample code that crashes:
public struct CrashMe
{
public uint Value1
{
get => field;
set => field = value;
}
public uint Value2
{
get => field;
set => field = value;
}
}Stack trace:
Application: csc.exe
Framework Version: v4.0.30319
Description: The application requested process termination through System.Environment.FailFast(string message).
Message: System.InvalidOperationException: Unexpected value 'ConsoleApp3.CrashMe.Value2.field' of type 'Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedBackingFieldSymbol'
at Microsoft.CodeAnalysis.CSharp.NullableWalker.GetTypeOrReturnTypeWithAnnotations(Symbol symbol)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.InheritNullableStateOfMember(Int32 targetContainerSlot, Int32 valueContainerSlot, Symbol member, Boolean isDefaultValue, Int32 skipSlot)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.InheritNullableStateOfTrackableStruct(TypeSymbol targetType, Int32 targetSlot, Int32 valueSlot, Boolean isDefaultValue, Int32 skipSlot)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.EnterParameter(ParameterSymbol parameter, TypeWithAnnotations parameterType)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.Scan(Boolean& badRegion)
at Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2.Analyze(Boolean& badRegion, Optional`1 initialState)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.Analyze(NullableWalker walker, Symbol symbol, DiagnosticBag diagnostics, Optional`1 initialState, Builder snapshotBuilderOpt, Boolean requiresAnalysis)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.Analyze(CSharpCompilation compilation, Symbol symbol, BoundNode node, Binder binder, Conversions conversions, DiagnosticBag diagnostics, Boolean useConstructorExitWarnings, Nullable`1 getterNullResilienceData, Boolean useDelegateInvokeParameterTypes, Boolean useDelegateInvokeReturnType, MethodSymbol delegateInvokeMethodOpt, VariableState initialState, MethodSymbol baseOrThisInitializer, Builder analyzedNullabilityMapOpt, Builder snapshotBuilderOpt, ArrayBuilder`1 returnTypesOpt, Boolean getFinalNullableState, VariableState& finalNullableState, Boolean requiresAnalysis)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.AnalyzeIfNeeded(Binder binder, BoundNode node, SyntaxNode syntax, DiagnosticBag diagnostics, Nullable`1 getterNullResilienceData)
at Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedBackingFieldSymbol.<ComputeInferredNullableAnnotation>g__nullableAnalyzeAndFilterDiagnostics|23_0(NullableAnnotation assumedNullableAnnotation, <>c__DisplayClass23_0& )
at Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedBackingFieldSymbol.ComputeInferredNullableAnnotation()
at Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedBackingFieldSymbol.GetInferredNullableAnnotation()
at Microsoft.CodeAnalysis.CSharp.NullableWalker.GetTypeOrReturnTypeWithAnnotations(Symbol symbol)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.InheritNullableStateOfMember(Int32 targetContainerSlot, Int32 valueContainerSlot, Symbol member, Boolean isDefaultValue, Int32 skipSlot)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.InheritNullableStateOfTrackableStruct(TypeSymbol targetType, Int32 targetSlot, Int32 valueSlot, Boolean isDefaultValue, Int32 skipSlot)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.EnterParameter(ParameterSymbol parameter, TypeWithAnnotations parameterType)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.Scan(Boolean& badRegion)
at Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2.Analyze(Boolean& badRegion, Optional`1 initialState)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.Analyze(NullableWalker walker, Symbol symbol, DiagnosticBag diagnostics, Optional`1 initialState, Builder snapshotBuilderOpt, Boolean requiresAnalysis)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.Analyze(CSharpCompilation compilation, Symbol symbol, BoundNode node, Binder binder, Conversions conversions, DiagnosticBag diagnostics, Boolean useConstructorExitWarnings, Nullable`1 getterNullResilienceData, Boolean useDelegateInvokeParameterTypes, Boolean useDelegateInvokeReturnType, MethodSymbol delegateInvokeMethodOpt, VariableState initialState, MethodSymbol baseOrThisInitializer, Builder analyzedNullabilityMapOpt, Builder snapshotBuilderOpt, ArrayBuilder`1 returnTypesOpt, Boolean getFinalNullableState, VariableState& finalNullableState, Boolean requiresAnalysis)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.AnalyzeWithSemanticInfo(CSharpCompilation compilation, Symbol symbol, BoundNode node, Binder binder, VariableState initialState, DiagnosticBag diagnostics, Boolean createSnapshots, Boolean requiresAnalysis)
at Microsoft.CodeAnalysis.CSharp.MethodCompiler.BindMethodBody(MethodSymbol method, TypeCompilationState compilationState, BindingDiagnosticBag diagnostics, Boolean includeInitializersInBody, BoundNode initializersBody, Boolean reportNullableDiagnostics, ImportChain& importChain, Boolean& originalBodyNested, Boolean& prependedDefaultValueTypeConstructorInitializer, InitialState& forSemanticModel)
at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(MethodSymbol methodSymbol, Int32 methodOrdinal, ProcessedFieldInitializers& processedInitializers, SynthesizedSubmissionFields previousSubmissionFields, TypeCompilationState compilationState)
at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(NamedTypeSymbol containingType)
at Microsoft.CodeAnalysis.CSharp.MethodCompiler.<>c__DisplayClass25_0.<CompileNamedTypeAsync>b__0()
Stack:
at System.Environment.FailFast(System.String, System.Exception)
at Microsoft.CodeAnalysis.FailFast.OnFatalException(System.Exception)
at Microsoft.CodeAnalysis.ErrorReporting.FatalError.Report(System.Exception, Microsoft.CodeAnalysis.ErrorReporting.ErrorSeverity, Boolean)
at Microsoft.CodeAnalysis.ErrorReporting.FatalError.ReportAndPropagateUnlessCanceled(System.Exception, Microsoft.CodeAnalysis.ErrorReporting.ErrorSeverity)
at Microsoft.CodeAnalysis.CSharp.MethodCompiler+<>c__DisplayClass25_0.<CompileNamedTypeAsync>b__0()
at Microsoft.CodeAnalysis.CSharp.NullableWalker.GetTypeOrReturnTypeWithAnnotations(Microsoft.CodeAnalysis.CSharp.Symbol)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.InheritNullableStateOfMember(Int32, Int32, Microsoft.CodeAnalysis.CSharp.Symbol, Boolean, Int32)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.InheritNullableStateOfTrackableStruct(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, Int32, Int32, Boolean, Int32)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.EnterParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol, Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.Scan(Boolean ByRef)
at Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState, Microsoft.CodeAnalysis.CSharp, Version=4.14.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Analyze(Boolean ByRef, Microsoft.CodeAnalysis.Optional`1<LocalState>)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.Analyze(Microsoft.CodeAnalysis.CSharp.NullableWalker, Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.DiagnosticBag, Microsoft.CodeAnalysis.Optional`1<LocalState>, Builder, Boolean)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.Analyze(Microsoft.CodeAnalysis.CSharp.CSharpCompilation, Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp.BoundNode, Microsoft.CodeAnalysis.CSharp.Binder, Microsoft.CodeAnalysis.CSharp.Conversions, Microsoft.CodeAnalysis.DiagnosticBag, Boolean, System.Nullable`1<System.ValueTuple`2<Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedBackingFieldSymbol,Microsoft.CodeAnalysis.CSharp.NullableAnnotation>>, Boolean, Boolean, Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, VariableState, Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, Builder<Microsoft.CodeAnalysis.CSharp.BoundExpression,System.ValueTuple`2<Microsoft.CodeAnalysis.NullabilityInfo,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>>, Builder, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1<System.ValueTuple`2<Microsoft.CodeAnalysis.CSharp.BoundReturnStatement,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>>, Boolean, VariableState ByRef, Boolean)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.AnalyzeIfNeeded(Microsoft.CodeAnalysis.CSharp.Binder, Microsoft.CodeAnalysis.CSharp.BoundNode, Microsoft.CodeAnalysis.SyntaxNode, Microsoft.CodeAnalysis.DiagnosticBag, System.Nullable`1<System.ValueTuple`3<Microsoft.CodeAnalysis.CSharp.Symbols.SourcePropertyAccessorSymbol,Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedBackingFieldSymbol,Microsoft.CodeAnalysis.CSharp.NullableAnnotation>>)
at Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedBackingFieldSymbol.<ComputeInferredNullableAnnotation>g__nullableAnalyzeAndFilterDiagnostics|23_0(Microsoft.CodeAnalysis.CSharp.NullableAnnotation, <>c__DisplayClass23_0 ByRef)
at Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedBackingFieldSymbol.ComputeInferredNullableAnnotation()
at Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedBackingFieldSymbol.GetInferredNullableAnnotation()
at Microsoft.CodeAnalysis.CSharp.NullableWalker.GetTypeOrReturnTypeWithAnnotations(Microsoft.CodeAnalysis.CSharp.Symbol)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.InheritNullableStateOfMember(Int32, Int32, Microsoft.CodeAnalysis.CSharp.Symbol, Boolean, Int32)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.InheritNullableStateOfTrackableStruct(Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol, Int32, Int32, Boolean, Int32)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.EnterParameter(Microsoft.CodeAnalysis.CSharp.Symbols.ParameterSymbol, Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.Scan(Boolean ByRef)
at Microsoft.CodeAnalysis.CSharp.AbstractFlowPass`2[[Microsoft.CodeAnalysis.CSharp.NullableWalker+LocalState, Microsoft.CodeAnalysis.CSharp, Version=4.14.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35],[System.__Canon, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]].Analyze(Boolean ByRef, Microsoft.CodeAnalysis.Optional`1<LocalState>)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.Analyze(Microsoft.CodeAnalysis.CSharp.NullableWalker, Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.DiagnosticBag, Microsoft.CodeAnalysis.Optional`1<LocalState>, Builder, Boolean)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.Analyze(Microsoft.CodeAnalysis.CSharp.CSharpCompilation, Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp.BoundNode, Microsoft.CodeAnalysis.CSharp.Binder, Microsoft.CodeAnalysis.CSharp.Conversions, Microsoft.CodeAnalysis.DiagnosticBag, Boolean, System.Nullable`1<System.ValueTuple`2<Microsoft.CodeAnalysis.CSharp.Symbols.SynthesizedBackingFieldSymbol,Microsoft.CodeAnalysis.CSharp.NullableAnnotation>>, Boolean, Boolean, Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, VariableState, Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, Builder<Microsoft.CodeAnalysis.CSharp.BoundExpression,System.ValueTuple`2<Microsoft.CodeAnalysis.NullabilityInfo,Microsoft.CodeAnalysis.CSharp.Symbols.TypeSymbol>>, Builder, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder`1<System.ValueTuple`2<Microsoft.CodeAnalysis.CSharp.BoundReturnStatement,Microsoft.CodeAnalysis.CSharp.Symbols.TypeWithAnnotations>>, Boolean, VariableState ByRef, Boolean)
at Microsoft.CodeAnalysis.CSharp.NullableWalker.AnalyzeWithSemanticInfo(Microsoft.CodeAnalysis.CSharp.CSharpCompilation, Microsoft.CodeAnalysis.CSharp.Symbol, Microsoft.CodeAnalysis.CSharp.BoundNode, Microsoft.CodeAnalysis.CSharp.Binder, VariableState, Microsoft.CodeAnalysis.DiagnosticBag, Boolean, Boolean)
at Microsoft.CodeAnalysis.CSharp.MethodCompiler.BindMethodBody(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, Microsoft.CodeAnalysis.CSharp.TypeCompilationState, Microsoft.CodeAnalysis.CSharp.BindingDiagnosticBag, Boolean, Microsoft.CodeAnalysis.CSharp.BoundNode, Boolean, Microsoft.CodeAnalysis.CSharp.ImportChain ByRef, Boolean ByRef, Boolean ByRef, InitialState ByRef)
at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol, Int32, ProcessedFieldInitializers ByRef, Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields, Microsoft.CodeAnalysis.CSharp.TypeCompilationState)
at Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol)
at Microsoft.CodeAnalysis.CSharp.MethodCompiler+<>c__DisplayClass25_0.<CompileNamedTypeAsync>b__0()
at Roslyn.Utilities.UICultureUtilities+<>c__DisplayClass5_0.<WithCurrentUICulture>b__0()
at System.Threading.Tasks.Task.Execute()
at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef)
at System.Threading.Tasks.Task.ExecuteEntry(Boolean)
at System.Threading.ThreadPoolWorkQueue.Dispatch()
Reactions are currently unavailable