private static SyntaxNode TryGetParentMethod(SyntaxNode syntaxNode) { if (syntaxNode?.Parent == null) { return((SyntaxNode)null); } switch (syntaxNode.Parent.Kind) { case SyntaxKind.TriggerDeclaration: case SyntaxKind.MethodDeclaration: return(syntaxNode.Parent); default: return(IdentifierUtilities.TryGetParentMethod(syntaxNode.Parent)); } }
internal static bool IdentifierIsLocalVariable(IdentifierNameSyntax identifier) { SyntaxNode parentMethod = IdentifierUtilities.TryGetParentMethod(identifier.Parent); SyntaxKind?kind = parentMethod?.Kind; if (kind.HasValue) { switch (kind.GetValueOrDefault()) { case SyntaxKind.TriggerDeclaration: return(IdentifierUtilities.VerifyIdentifierIsInMethodTriggerVarParamList <TriggerDeclarationSyntax>((TriggerDeclarationSyntax)parentMethod, identifier)); case SyntaxKind.MethodDeclaration: return(IdentifierUtilities.VerifyIdentifierIsInMethodTriggerVarParamList <MethodDeclarationSyntax>((MethodDeclarationSyntax)parentMethod, identifier)); } } return(false); }