public void BrokenPDBStream() { string source = @"class Foo {}"; var compilation = CreateCompilationWithMscorlib(source, null, OptionsDll.WithDebugInformationKind(DebugInformationKind.Full)); var output = new MemoryStream(); var pdb = new BrokenStream(); pdb.BreakHow = 2; var result = compilation.Emit(output, GetUniqueName(), GetUniqueName(), pdb); result.Diagnostics.Verify( Diagnostic(ErrorCode.FTL_DebugEmitFailure).WithArguments("Exception from HRESULT: 0x806D0004") ); Func<EmitResult> f = () => compilation.Emit(output, GetUniqueName(), GetUniqueName(), pdb); pdb.Dispose(); result = f(); result.Diagnostics.Verify( Diagnostic(ErrorCode.FTL_DebugEmitFailure).WithArguments("Exception from HRESULT: 0x806D0004") ); }
public void BrokenPDBStream() { string source = @"class Foo {}"; var compilation = CreateCompilationWithMscorlib(source, null, TestOptions.DebugDll); var output = new MemoryStream(); var pdb = new BrokenStream(); pdb.BreakHow = 2; var result = compilation.Emit(output, pdb); // error CS0041: Unexpected error writing debug information -- 'Exception from HRESULT: 0x806D0004' var err = result.Diagnostics.Single(); Assert.Equal((int)ErrorCode.FTL_DebugEmitFailure, err.Code); Assert.Equal(1, err.Arguments.Count); var ioExceptionMessage = new IOException().Message; Assert.Equal(ioExceptionMessage, (string)err.Arguments[0]); pdb.Dispose(); result = compilation.Emit(output, pdb); // error CS0041: Unexpected error writing debug information -- 'Exception from HRESULT: 0x806D0004' err = result.Diagnostics.Single(); Assert.Equal((int)ErrorCode.FTL_DebugEmitFailure, err.Code); Assert.Equal(1, err.Arguments.Count); Assert.Equal(ioExceptionMessage, (string)err.Arguments[0]); }