public void TestErrors(string code, params string[] errors) { var compilation = CreateCompilationWithMscorlib(code); var method = (SourceMethodSymbol)compilation.GlobalNamespace.GetTypeMembers("C").Single().GetMembers("M").Single(); var factory = compilation.GetBinderFactory(method.SyntaxTree); var bodyBlock = (BlockSyntax)method.BodySyntax; var parameterBinderContext = factory.GetBinder(bodyBlock); var binder = new ExecutableCodeBinder(bodyBlock.Parent, method, parameterBinderContext); var diagnostics = new DiagnosticBag(); var block = binder.BindEmbeddedBlock(bodyBlock, diagnostics); AssertEx.SetEqual(errors, diagnostics.AsEnumerable().Select(DumpDiagnostic)); }
public void TestWarnings(string code, params string[] expectedWarnings) { var compilation = CreateCompilation(code); var method = (SourceMemberMethodSymbol)compilation.GlobalNamespace.GetTypeMembers("C").Single().GetMembers("M").Single(); var factory = compilation.GetBinderFactory(method.SyntaxTree); var bodyBlock = (BlockSyntax)method.BodySyntax; var parameterBinderContext = factory.GetBinder(bodyBlock); var binder = new ExecutableCodeBinder(bodyBlock.Parent, method, parameterBinderContext); var block = binder.BindEmbeddedBlock(bodyBlock, new DiagnosticBag()); var actualWarnings = new DiagnosticBag(); DiagnosticsPass.IssueDiagnostics(compilation, block, actualWarnings, method); AssertEx.SetEqual(expectedWarnings, actualWarnings.AsEnumerable().Select(DumpDiagnostic)); }