public bool TryGetSymbol(TArgumentSyntax argument, out IParameterSymbol parameter) { parameter = null; if (!argumentList.Contains(argument) || MethodSymbol == null || MethodSymbol.IsVararg) { return(false); } var nameColonArgumentIdenfitier = GetNameColonArgumentIdentifier(argument); if (nameColonArgumentIdenfitier != null) { parameter = MethodSymbol.Parameters .FirstOrDefault(symbol => symbol.Name == nameColonArgumentIdenfitier.Value.ValueText); return(parameter != null); } var argumentIndex = argumentList.IndexOf(argument); var parameterIndex = argumentIndex; if (parameterIndex >= MethodSymbol.Parameters.Length) { var lastParameter = MethodSymbol.Parameters.Last(); parameter = lastParameter.IsParams ? lastParameter : null; return(parameter != null); } parameter = MethodSymbol.Parameters[parameterIndex]; return(true); }
public override bool Contains(TNode node) => syntaxList.Contains(SyntaxWrapper.Unwrap(node));