From 3a89745e34dde07a2cd4edc41fa9131f8ae8645b Mon Sep 17 00:00:00 2001 From: Sam Harwell Date: Wed, 4 Mar 2020 07:52:39 -0800 Subject: [PATCH 1/2] Update Microsoft.Net.Compilers to 3.5.0-beta4-20153-05 --- eng/Versions.props | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eng/Versions.props b/eng/Versions.props index 97883bd399..3b9ede193e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -22,7 +22,7 @@ 3.0.0 3.5.0-beta2-20056-01 - 3.4.0-beta2-final + 3.5.0-beta4-20153-05 3.0.0-beta2.19529.2+e119d9cf $(DogfoodAnalyzersVersion) $(DogfoodAnalyzersVersion) From ec4ed0d46c4ad64ec0631337a13bd008aa687bfe Mon Sep 17 00:00:00 2001 From: Sam Harwell Date: Wed, 4 Mar 2020 10:19:08 -0800 Subject: [PATCH 2/2] Fix nullability warnings --- src/Utilities/Compiler/Options/AnalyzerOptionsExtensions.cs | 1 + src/Utilities/Compiler/Options/SymbolNamesWithValueOption.cs | 3 ++- .../Analysis/DisposeAnalysis/DisposeAnalysisHelper.cs | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Utilities/Compiler/Options/AnalyzerOptionsExtensions.cs b/src/Utilities/Compiler/Options/AnalyzerOptionsExtensions.cs index 2a4906cb3a..c63b35a62e 100644 --- a/src/Utilities/Compiler/Options/AnalyzerOptionsExtensions.cs +++ b/src/Utilities/Compiler/Options/AnalyzerOptionsExtensions.cs @@ -252,6 +252,7 @@ private static SymbolNamesWithValueOption GetSymbolNamesWithValueOption< Compilation compilation, CancellationToken cancellationToken, Func.NameParts>? getTypeAndSuffixFunc = null) + where TValue : notnull { var analyzerConfigOptions = options.GetOrComputeCategorizedAnalyzerConfigOptions(cancellationToken); return analyzerConfigOptions.GetOptionValue(optionName, rule, TryParse, defaultValue: SymbolNamesWithValueOption.Empty); diff --git a/src/Utilities/Compiler/Options/SymbolNamesWithValueOption.cs b/src/Utilities/Compiler/Options/SymbolNamesWithValueOption.cs index ecf545375e..0ac2455cf8 100644 --- a/src/Utilities/Compiler/Options/SymbolNamesWithValueOption.cs +++ b/src/Utilities/Compiler/Options/SymbolNamesWithValueOption.cs @@ -11,6 +11,7 @@ namespace Analyzer.Utilities { internal sealed class SymbolNamesWithValueOption : IEquatable?> + where TValue : notnull { public static readonly SymbolNamesWithValueOption Empty = new SymbolNamesWithValueOption(); @@ -116,7 +117,7 @@ public bool Contains(ISymbol symbol) /// /// Gets the value associated with the specified symbol in the option specification. /// - public bool TryGetValue(ISymbol symbol, [NotNullWhen(true)] out TValue value) => + public bool TryGetValue(ISymbol symbol, [MaybeNullWhen(false)] out TValue value) => _symbols.TryGetValue(symbol, out value) || _names.TryGetValue(symbol.Name, out value); public override bool Equals(object obj) => Equals(obj as SymbolNamesWithValueOption); diff --git a/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/DisposeAnalysis/DisposeAnalysisHelper.cs b/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/DisposeAnalysis/DisposeAnalysisHelper.cs index 11781657fd..706ac5e30c 100644 --- a/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/DisposeAnalysis/DisposeAnalysisHelper.cs +++ b/src/Utilities/FlowAnalysis/FlowAnalysis/Analysis/DisposeAnalysis/DisposeAnalysisHelper.cs @@ -121,6 +121,7 @@ public bool TryGetOrComputeResult( defaultDisposeOwnershipTransferAtConstructor: defaultDisposeOwnershipTransferAtConstructor); if (disposeAnalysisResult != null) { + RoslynDebug.Assert(pointsToAnalysisResult is object); return true; } }