private void rpUseNamedParameters_CheckAvailability(object sender, CheckContentAvailabilityEventArgs ea) { LanguageElement methodCall = GetMethodCall(ea.Element); if (methodCall == null) { return; } IHasArguments hasArguments = methodCall as IHasArguments; if (hasArguments == null) { return; } IWithParameters declaration = GetValidDeclaration(methodCall); if (declaration == null) { return; } ExpressionCollection arguments = hasArguments.Arguments; if (arguments == null || arguments.Count <= 0) { return; } bool hasAttributeVarInitializer = false; foreach (Expression arg in arguments) { if (arg is AttributeVariableInitializer) { hasAttributeVarInitializer = true; break; } if (arg is AnonymousMethodExpression) { return; } } if (!hasAttributeVarInitializer) { ea.Available = true; } }
public static bool AttemptFill(string[] input, IHasArguments item, VText textItem) { if (input.Length < item.Arguments.Count) { WriteError(textItem + Text(" needs at least " + item.Arguments.Count + " arguments! (received " + input.Length + ")")); return(false); } if (input.Length > item.Arguments.Count + item.OptionalArguments.Count) { WriteError(textItem + Text(" receives at most " + item.Arguments.Count + " arguments! (received " + input.Length + ")")); return(false); } var count = 0; foreach (var part in input) { bool success; if (count < item.Arguments.Count) { success = item.Arguments[count].Fill(part); } else { success = item.OptionalArguments[count - item.Arguments.Count].Fill(part); } count++; if (!success) { return(false); } } return(true); }