diff --git a/src/Features/CSharp/Portable/UsePatternMatching/CSharpAsAndNullCheckDiagnosticAnalyzer.cs b/src/Features/CSharp/Portable/UsePatternMatching/CSharpAsAndNullCheckDiagnosticAnalyzer.cs index 9e3f842cc71cac935d72b0816c87510d0656987e..fba52ca3f627d714ede1049fc138e0d0e5171564 100644 --- a/src/Features/CSharp/Portable/UsePatternMatching/CSharpAsAndNullCheckDiagnosticAnalyzer.cs +++ b/src/Features/CSharp/Portable/UsePatternMatching/CSharpAsAndNullCheckDiagnosticAnalyzer.cs @@ -284,7 +284,7 @@ private void SyntaxNodeAction(SyntaxNodeAnalysisContext syntaxContext) { localSymbol = semanticModel.GetSymbolInfo(identifier).Symbol as ILocalSymbol; declarator = localSymbol?.DeclaringSyntaxReferences.FirstOrDefault()?.GetSyntax() as VariableDeclaratorSyntax; - return declarator != null; + return localSymbol != null && declarator != null; } private static ExpressionSyntax? GetNullCheckOperand(ExpressionSyntax left, SyntaxKind comparisonKind, SyntaxNode right) diff --git a/src/Features/CSharp/Portable/Wrapping/SeparatedSyntaxList/CSharpParameterWrapper.cs b/src/Features/CSharp/Portable/Wrapping/SeparatedSyntaxList/CSharpParameterWrapper.cs index e59d6631871097954023a250ab519cc6d7cff0fc..7a704eeb0dea95da653456aabaf2e43eae784457 100644 --- a/src/Features/CSharp/Portable/Wrapping/SeparatedSyntaxList/CSharpParameterWrapper.cs +++ b/src/Features/CSharp/Portable/Wrapping/SeparatedSyntaxList/CSharpParameterWrapper.cs @@ -29,7 +29,7 @@ internal partial class CSharpParameterWrapper protected override SeparatedSyntaxList GetListItems(BaseParameterListSyntax listSyntax) => listSyntax.Parameters; - protected override BaseParameterListSyntax TryGetApplicableList(SyntaxNode node) + protected override BaseParameterListSyntax? TryGetApplicableList(SyntaxNode node) => node.GetParameterList(); protected override bool PositionIsApplicable( diff --git a/src/Features/Core/Portable/Wrapping/SeparatedSyntaxList/AbstractSeparatedSyntaxListWrapper.cs b/src/Features/Core/Portable/Wrapping/SeparatedSyntaxList/AbstractSeparatedSyntaxListWrapper.cs index c76b1a9387a95d04e6c3e0a49a769791b96f27c3..51015ad05e4191c5ffc93702b83d8216535f2e49 100644 --- a/src/Features/Core/Portable/Wrapping/SeparatedSyntaxList/AbstractSeparatedSyntaxListWrapper.cs +++ b/src/Features/Core/Portable/Wrapping/SeparatedSyntaxList/AbstractSeparatedSyntaxListWrapper.cs @@ -2,12 +2,15 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +#nullable enable + using System.Threading; using System.Threading.Tasks; namespace Microsoft.CodeAnalysis.Wrapping.SeparatedSyntaxList { using Microsoft.CodeAnalysis.Indentation; + using Microsoft.CodeAnalysis.Shared.Extensions; /// /// Base type for all wrappers that involve wrapping a comma-separated list of items. @@ -39,12 +42,12 @@ protected AbstractSeparatedSyntaxListWrapper(IIndentationService indentationServ { } - protected abstract TListSyntax TryGetApplicableList(SyntaxNode node); + protected abstract TListSyntax? TryGetApplicableList(SyntaxNode node); protected abstract SeparatedSyntaxList GetListItems(TListSyntax listSyntax); protected abstract bool PositionIsApplicable( SyntaxNode root, int position, SyntaxNode declaration, TListSyntax listSyntax); - public override async Task TryCreateComputerAsync( + public override async Task TryCreateComputerAsync( Document document, int position, SyntaxNode declaration, CancellationToken cancellationToken) { var listSyntax = TryGetApplicableList(declaration); @@ -53,7 +56,7 @@ protected AbstractSeparatedSyntaxListWrapper(IIndentationService indentationServ return null; } - var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false); + var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false); if (!PositionIsApplicable(root, position, declaration, listSyntax)) { return null;