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

UnexpectedValue exception is thrown for scenario in Microsoft.CodeAnalysis.CSharp.UnitTests.DiagnosticTest.GetDiagnosticsCalledTwice unit-test #39992

Closed
AlekseyTs opened this issue Nov 23, 2019 · 0 comments · Fixed by #39990
Assignees
Milestone

Comments

@AlekseyTs
Copy link
Contributor

For the Microsoft.CodeAnalysis.CSharp.UnitTests.DiagnosticTest.GetDiagnosticsCalledTwice unit-test:

  • Add
compilation.GetDiagnostics();
compilation.GetEmitDiagnostics();

right after creation of the compilation.

  • Run the test

Observed UnexpectedValue exception is thrown during GetEmitDiagnostics call (doesn't repro without calling GetDiagnostics before it):

 	Microsoft.CodeAnalysis.dll!Roslyn.Utilities.ExceptionUtilities.UnexpectedValue(object o) Line 20	C#
>	Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.IteratorRewriter.Rewrite(Microsoft.CodeAnalysis.CSharp.BoundStatement body, Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol method, int methodOrdinal, Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator slotAllocatorOpt, Microsoft.CodeAnalysis.CSharp.TypeCompilationState compilationState, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, out Microsoft.CodeAnalysis.CSharp.IteratorStateMachine stateMachineType) Line 73	C#
 	Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.LowerBodyOrInitializer(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol method, int methodOrdinal, Microsoft.CodeAnalysis.CSharp.BoundStatement body, Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields previousSubmissionFields, Microsoft.CodeAnalysis.CSharp.TypeCompilationState compilationState, bool instrumentForDynamicAnalysis, Microsoft.CodeAnalysis.CodeGen.DebugDocumentProvider debugDocumentProvider, ref System.Collections.Immutable.ImmutableArray<Microsoft.CodeAnalysis.CodeGen.SourceSpan> dynamicAnalysisSpans, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, ref Microsoft.CodeAnalysis.CodeGen.VariableSlotAllocator lazyVariableSlotAllocator, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder<Microsoft.CodeAnalysis.CodeGen.LambdaDebugInfo> lambdaDebugInfoBuilder, Microsoft.CodeAnalysis.PooledObjects.ArrayBuilder<Microsoft.CodeAnalysis.CodeGen.ClosureDebugInfo> closureDebugInfoBuilder, out Microsoft.CodeAnalysis.CSharp.StateMachineTypeSymbol stateMachineTypeOpt) Line 1380	C#
 	Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethod(Microsoft.CodeAnalysis.CSharp.Symbols.MethodSymbol methodSymbol, int methodOrdinal, ref Microsoft.CodeAnalysis.CSharp.Binder.ProcessedFieldInitializers processedInitializers, Microsoft.CodeAnalysis.CSharp.SynthesizedSubmissionFields previousSubmissionFields, Microsoft.CodeAnalysis.CSharp.TypeCompilationState compilationState) Line 1138	C#
 	Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol containingType) Line 518	C#
 	Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.VisitNamedType(Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol symbol, Microsoft.CodeAnalysis.CSharp.TypeCompilationState arg) Line 396	C#
 	Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.Symbols.NamedTypeSymbol.Accept<Microsoft.CodeAnalysis.CSharp.TypeCompilationState, object>(Microsoft.CodeAnalysis.CSharp.CSharpSymbolVisitor<Microsoft.CodeAnalysis.CSharp.TypeCompilationState, object> visitor, Microsoft.CodeAnalysis.CSharp.TypeCompilationState argument) Line 572	C#
 	Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileNamespace(Microsoft.CodeAnalysis.CSharp.Symbols.NamespaceSymbol symbol) Line 375	C#
 	Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.MethodCompiler.CompileMethodBodies(Microsoft.CodeAnalysis.CSharp.CSharpCompilation compilation, Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder moduleBeingBuiltOpt, bool emittingPdb, bool emitTestCoverageData, bool hasDeclarationErrors, bool emitMethodBodies, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, System.Predicate<Microsoft.CodeAnalysis.CSharp.Symbol> filterOpt, System.Threading.CancellationToken cancellationToken) Line 156	C#
 	Microsoft.CodeAnalysis.CSharp.dll!Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CompileMethods(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder moduleBuilder, bool emittingPdb, bool emitMetadataOnly, bool emitTestCoverageData, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, System.Predicate<Microsoft.CodeAnalysis.Symbols.ISymbolInternal> filterOpt, System.Threading.CancellationToken cancellationToken) Line 2771	C#
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.Compilation.Emit(System.IO.Stream peStream, System.IO.Stream metadataPEStream, System.IO.Stream pdbStream, System.IO.Stream xmlDocumentationStream, System.IO.Stream win32Resources, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.ResourceDescription> manifestResources, Microsoft.CodeAnalysis.Emit.EmitOptions options, Microsoft.CodeAnalysis.IMethodSymbol debugEntryPoint, System.IO.Stream sourceLinkStream, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.EmbeddedText> embeddedTexts, Microsoft.CodeAnalysis.CodeGen.CompilationTestData testData, System.Threading.CancellationToken cancellationToken) Line 2497	C#
 	Microsoft.CodeAnalysis.dll!Microsoft.CodeAnalysis.Compilation.Emit(System.IO.Stream peStream, System.IO.Stream pdbStream, System.IO.Stream xmlDocumentationStream, System.IO.Stream win32Resources, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.ResourceDescription> manifestResources, Microsoft.CodeAnalysis.Emit.EmitOptions options, Microsoft.CodeAnalysis.IMethodSymbol debugEntryPoint, System.IO.Stream sourceLinkStream, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.EmbeddedText> embeddedTexts, System.IO.Stream metadataPEStream, System.Threading.CancellationToken cancellationToken) Line 2441	C#
 	Roslyn.Test.Utilities.dll!Microsoft.CodeAnalysis.DiagnosticExtensions.GetEmitDiagnostics<Microsoft.CodeAnalysis.CSharp.CSharpCompilation>(Microsoft.CodeAnalysis.CSharp.CSharpCompilation c, Microsoft.CodeAnalysis.Emit.EmitOptions options, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.ResourceDescription> manifestResources) Line 376	C#
 	Roslyn.Test.Utilities.dll!Microsoft.CodeAnalysis.DiagnosticExtensions.GetEmitDiagnostics<Microsoft.CodeAnalysis.CSharp.CSharpCompilation>(Microsoft.CodeAnalysis.CSharp.CSharpCompilation c) Line 388	C#
 	Microsoft.CodeAnalysis.CSharp.Test.Utilities.dll!Microsoft.CodeAnalysis.CSharp.Test.Utilities.CSharpTestBase.VerifyUsedAssemblyReferences(System.Func<Microsoft.CodeAnalysis.CSharp.CSharpCompilation> createCompilationLambda) Line 1062	C#
 	Microsoft.CodeAnalysis.CSharp.Test.Utilities.dll!Microsoft.CodeAnalysis.CSharp.Test.Utilities.CSharpTestBase.CreateCompilationCore(Microsoft.CodeAnalysis.CSharp.Test.Utilities.CSharpTestSource source, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.MetadataReference> references, Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions options, Microsoft.CodeAnalysis.CSharp.CSharpParseOptions parseOptions, string assemblyName, string sourceFileName, bool skipUsesIsNullable, Microsoft.CodeAnalysis.CSharp.MessageID? experimentalFeature) Line 1051	C#
 	Microsoft.CodeAnalysis.CSharp.Test.Utilities.dll!Microsoft.CodeAnalysis.CSharp.Test.Utilities.CSharpTestBase.CreateEmptyCompilation(Microsoft.CodeAnalysis.CSharp.Test.Utilities.CSharpTestSource source, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.MetadataReference> references, Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions options, Microsoft.CodeAnalysis.CSharp.CSharpParseOptions parseOptions, string assemblyName, string sourceFileName, bool skipUsesIsNullable) Line 1009	C#
 	Microsoft.CodeAnalysis.CSharp.Test.Utilities.dll!Microsoft.CodeAnalysis.CSharp.Test.Utilities.CSharpTestBase.CreateCompilation(Microsoft.CodeAnalysis.CSharp.Test.Utilities.CSharpTestSource source, System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.MetadataReference> references, Microsoft.CodeAnalysis.CSharp.CSharpCompilationOptions options, Microsoft.CodeAnalysis.CSharp.CSharpParseOptions parseOptions, Roslyn.Test.Utilities.TargetFramework targetFramework, string assemblyName, string sourceFileName, bool skipUsesIsNullable) Line 1000	C#
 	Microsoft.CodeAnalysis.CSharp.Syntax.UnitTests.dll!Microsoft.CodeAnalysis.CSharp.UnitTests.DiagnosticTest.GetDiagnosticsCalledTwice() Line 2245	C#
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Archived in project
Development

Successfully merging a pull request may close this issue.

2 participants