Handle warnings, and add a warning if a function parameter has an unknown type

This commit is contained in:
2018-11-28 10:56:35 +01:00
parent 14e30d0855
commit 7ee230e20c
4 changed files with 44 additions and 14 deletions

View File

@@ -27,13 +27,13 @@ namespace Ycicle
? Executor.ParseInput(input, options)
: Executor.ContinueWith(script, input);
if (script.Diagnostics.Messages.Count > 0)
if (script.Diagnostics.Errors.Count > 0)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Errors were found during parsing");
foreach (var diagnosticsMessage in script.Diagnostics.Messages)
foreach (var diagnosticsMessage in script.Diagnostics.Errors)
{
LogError(diagnosticsMessage);
LogMessage(DiagnosticLevel.Error, diagnosticsMessage);
}
Console.ResetColor();
continue;
@@ -41,18 +41,24 @@ namespace Ycicle
//Console.WriteLine(script.PrettyPrintSyntaxTree());
var evaluate = script.Evaluate();
if (script.Diagnostics.Messages.Count > 0)
if (script.Diagnostics.Errors.Count > 0)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("Errors were found during evaluating");
foreach (var diagnosticsMessage in script.Diagnostics.Messages)
foreach (var diagnosticsMessage in script.Diagnostics.Errors)
{
LogError(diagnosticsMessage);
LogMessage(DiagnosticLevel.Error, diagnosticsMessage);
}
Console.ResetColor();
}
else
{
foreach (var diagnosticsMessage in script.Diagnostics.Warnings)
{
LogMessage(DiagnosticLevel.Warning, diagnosticsMessage);
}
Console.ResetColor();
if (evaluate == null)
continue;
Console.ForegroundColor = ConsoleColor.Cyan;
@@ -63,16 +69,24 @@ namespace Ycicle
}
}
private static void LogError(DiagnosticsMessage message)
private static void LogMessage(DiagnosticLevel level, DiagnosticsMessage message)
{
Console.ForegroundColor = ConsoleColor.Red;
if (level == DiagnosticLevel.Error)
Console.ForegroundColor = ConsoleColor.Red;
else if (level == DiagnosticLevel.Warning)
Console.ForegroundColor = ConsoleColor.DarkYellow;
Console.WriteLine(message.Message);
Console.ForegroundColor = ConsoleColor.Gray;
Console.Write(message.GetDiagnosticPosition() + " ");
Console.Write(message.LineBeforeError());
Console.ForegroundColor = ConsoleColor.Red;
if (level == DiagnosticLevel.Error)
Console.ForegroundColor = ConsoleColor.Red;
else if (level == DiagnosticLevel.Warning)
Console.ForegroundColor = ConsoleColor.DarkYellow;
Console.Write(message.AtError());
Console.ForegroundColor = ConsoleColor.Gray;