private void AssertDiagnostics(string text, string diagnosticText) { var annotatedText = AnnotatedText.Parse(text); var syntaxTree = SyntaxTree.Parse(annotatedText.Text); var compilation = Compilation.CreateScript(null, syntaxTree); var result = compilation.Evaluate(new Dictionary <VariableSymbol, object>()); var expectedDiagnostics = AnnotatedText.UnindentLines(diagnosticText); if (annotatedText.Spans.Length != expectedDiagnostics.Length) { throw new Exception("ERROR: Must mark as many spans as there are expected diagnostics"); } Assert.Equal(expectedDiagnostics.Length, result.Diagnostics.Length); for (var i = 0; i < expectedDiagnostics.Length; i++) { var expectedMessage = expectedDiagnostics[i]; var actualMessage = result.Diagnostics[i].Message; Assert.Equal(expectedMessage, actualMessage); var expectedSpan = annotatedText.Spans[i]; var actualSpan = result.Diagnostics[i].Location.Span; Assert.Equal(expectedSpan, actualSpan); } }
private void AssertDiagnostics(string text, string diagnosticText) { var annotatedText = AnnotatedText.Parse(text); var syntaxTree = SyntaxTree.Parse(annotatedText.Text); var compilation = Compilation.Create(syntaxTree); var diagnostics = compilation.Validate(); var expectedDiagnostics = AnnotatedText.UnindentLines(diagnosticText); if (annotatedText.Spans.Length != expectedDiagnostics.Length) { throw new Exception("ERROR: Must mark as many spans as there are expected diagnostics"); } Assert.Equal(expectedDiagnostics.Length, diagnostics.Length); for (var i = 0; i < expectedDiagnostics.Length; i++) { var expectedMessage = expectedDiagnostics[i]; var actualMessage = diagnostics[i].Message; Assert.Equal(expectedMessage, actualMessage); var expectedSpan = annotatedText.Spans[i]; var actualSpan = diagnostics[i].Location.Span; Assert.Equal(expectedSpan, actualSpan); } }