From 507451ab5ae51c909a53a6c345ba76ad6f09c41a Mon Sep 17 00:00:00 2001 From: Christopher Granade Date: Fri, 5 Mar 2021 07:58:13 -0800 Subject: [PATCH 1/3] Handle nullability of diagnostic severities. --- src/Core/Loggers/QsharpLogger.cs | 32 +++++++++++++++++--------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/src/Core/Loggers/QsharpLogger.cs b/src/Core/Loggers/QsharpLogger.cs index 9808080066..513585f6b2 100644 --- a/src/Core/Loggers/QsharpLogger.cs +++ b/src/Core/Loggers/QsharpLogger.cs @@ -32,22 +32,24 @@ public QSharpLogger(ILogger logger, int lineNrOffset = 0) : this.Logs = new List(); } - public static LogLevel MapLevel(LSP.DiagnosticSeverity original) - { - switch (original) + // NB: We define both a method which takes a + // Nullable and a plain DiagnosticSeverity + // value directly, as different versions of the LSP client API + // vary in their handling of nullablity of diagnostic severity. + // This allows IQ# to build with both different versions. + // At some point, the non-nullable overload should be removed. + public static LogLevel MapLevel(LSP.DiagnosticSeverity? original) => + original switch { - case LSP.DiagnosticSeverity.Error: - return LogLevel.Error; - case LSP.DiagnosticSeverity.Warning: - return LogLevel.Warning; - case LSP.DiagnosticSeverity.Information: - return LogLevel.Information; - case LSP.DiagnosticSeverity.Hint: - return LogLevel.Debug; - default: - return LogLevel.Trace; - } - } + LSP.DiagnosticSeverity.Error => LogLevel.Error, + LSP.DiagnosticSeverity.Warning => LogLevel.Warning, + LSP.DiagnosticSeverity.Information => LogLevel.Information, + LSP.DiagnosticSeverity.Hint => LogLevel.Debug, + _ => LogLevel.Trace + }; + + public static LogLevel MapLevel(LSP.DiagnosticSeverity original) => + MapLevel((LSP.DiagnosticSeverity?)original); public bool HasErrors => Logs From dbf05f342962b396e39484f3703128b5db0a9e92 Mon Sep 17 00:00:00 2001 From: Christopher Granade Date: Fri, 5 Mar 2021 09:22:28 -0800 Subject: [PATCH 2/3] Ensure that LSP.Diagnostic.Range is not null. --- src/Core/Loggers/QsharpLogger.cs | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Core/Loggers/QsharpLogger.cs b/src/Core/Loggers/QsharpLogger.cs index 513585f6b2..92ee304f77 100644 --- a/src/Core/Loggers/QsharpLogger.cs +++ b/src/Core/Loggers/QsharpLogger.cs @@ -25,6 +25,8 @@ public class QSharpLogger : QsCompiler.Diagnostics.LogTracker public List ErrorCodesToIgnore { get; } = new List(); public List WarningCodesToIgnore { get; } = new List(); + private static readonly LSP.Range EmptyRange = new LSP.Range { Start = new LSP.Position(0, 0), End = new LSP.Position(0, 0) }; + public QSharpLogger(ILogger logger, int lineNrOffset = 0) : base(lineNrOffset : lineNrOffset) { @@ -90,7 +92,8 @@ public virtual void LogInfo(string message) Log(new LSP.Diagnostic { Severity = LSP.DiagnosticSeverity.Information, - Message = message + Message = message, + Range = EmptyRange }); } @@ -99,7 +102,8 @@ public virtual void LogDebug(string message) Log(new LSP.Diagnostic { Severity = LSP.DiagnosticSeverity.Hint, - Message = message + Message = message, + Range = EmptyRange }); } @@ -109,7 +113,8 @@ public virtual void LogWarning(string code, string message) { Code = code, Severity = LSP.DiagnosticSeverity.Warning, - Message = message + Message = message, + Range = EmptyRange }); } @@ -119,7 +124,8 @@ public virtual void LogError(string code, string message) { Code = code, Severity = LSP.DiagnosticSeverity.Error, - Message = message + Message = message, + Range = EmptyRange }); } From 2deeeebf87f1d82279e0baf32a739e16910fc134 Mon Sep 17 00:00:00 2001 From: Christopher Granade Date: Fri, 5 Mar 2021 10:36:18 -0800 Subject: [PATCH 3/3] Revert "Ensure that LSP.Diagnostic.Range is not null." This reverts commit dbf05f342962b396e39484f3703128b5db0a9e92. --- src/Core/Loggers/QsharpLogger.cs | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/src/Core/Loggers/QsharpLogger.cs b/src/Core/Loggers/QsharpLogger.cs index 92ee304f77..513585f6b2 100644 --- a/src/Core/Loggers/QsharpLogger.cs +++ b/src/Core/Loggers/QsharpLogger.cs @@ -25,8 +25,6 @@ public class QSharpLogger : QsCompiler.Diagnostics.LogTracker public List ErrorCodesToIgnore { get; } = new List(); public List WarningCodesToIgnore { get; } = new List(); - private static readonly LSP.Range EmptyRange = new LSP.Range { Start = new LSP.Position(0, 0), End = new LSP.Position(0, 0) }; - public QSharpLogger(ILogger logger, int lineNrOffset = 0) : base(lineNrOffset : lineNrOffset) { @@ -92,8 +90,7 @@ public virtual void LogInfo(string message) Log(new LSP.Diagnostic { Severity = LSP.DiagnosticSeverity.Information, - Message = message, - Range = EmptyRange + Message = message }); } @@ -102,8 +99,7 @@ public virtual void LogDebug(string message) Log(new LSP.Diagnostic { Severity = LSP.DiagnosticSeverity.Hint, - Message = message, - Range = EmptyRange + Message = message }); } @@ -113,8 +109,7 @@ public virtual void LogWarning(string code, string message) { Code = code, Severity = LSP.DiagnosticSeverity.Warning, - Message = message, - Range = EmptyRange + Message = message }); } @@ -124,8 +119,7 @@ public virtual void LogError(string code, string message) { Code = code, Severity = LSP.DiagnosticSeverity.Error, - Message = message, - Range = EmptyRange + Message = message }); }