|
|
|
@ -2327,37 +2327,44 @@ namespace ICSharpCode.NRefactory.CSharp.Completion |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
IEnumerable<ICompletionData> CreateParameterCompletion(MethodGroupResolveResult resolveResult, CSharpResolver state, AstNode invocation, SyntaxTree unit, int parameter, bool controlSpace) |
|
|
|
void CreateParameterForInvocation(CompletionDataWrapper result, IMethod method, CSharpResolver state, int parameter, HashSet<string> addedEnums, HashSet<string> addedDelegates) |
|
|
|
{ |
|
|
|
{ |
|
|
|
var result = new CompletionDataWrapper(this); |
|
|
|
|
|
|
|
var addedEnums = new HashSet<string>(); |
|
|
|
|
|
|
|
var addedDelegates = new HashSet<string>(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var method in resolveResult.Methods) { |
|
|
|
|
|
|
|
if (method.Parameters.Count <= parameter) { |
|
|
|
if (method.Parameters.Count <= parameter) { |
|
|
|
continue; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
var resolvedType = method.Parameters[parameter].Type; |
|
|
|
var resolvedType = method.Parameters[parameter].Type; |
|
|
|
if (resolvedType.Kind == TypeKind.Enum) { |
|
|
|
if (resolvedType.Kind == TypeKind.Enum) { |
|
|
|
if (addedEnums.Contains(resolvedType.ReflectionName)) { |
|
|
|
if (addedEnums.Contains(resolvedType.ReflectionName)) { |
|
|
|
continue; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
|
addedEnums.Add(resolvedType.ReflectionName); |
|
|
|
addedEnums.Add(resolvedType.ReflectionName); |
|
|
|
AddEnumMembers(result, resolvedType, state); |
|
|
|
AddEnumMembers(result, resolvedType, state); |
|
|
|
} else if (resolvedType.Kind == TypeKind.Delegate) { |
|
|
|
return; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (resolvedType.Kind == TypeKind.Delegate) { |
|
|
|
if (addedDelegates.Contains(resolvedType.ReflectionName)) |
|
|
|
if (addedDelegates.Contains(resolvedType.ReflectionName)) |
|
|
|
continue; |
|
|
|
return; |
|
|
|
string parameterDefinition = AddDelegateHandlers(result, resolvedType, false); |
|
|
|
string parameterDefinition = AddDelegateHandlers(result, resolvedType, false); |
|
|
|
string varName = "Handle" + method.Parameters[parameter].Type.Name + method.Parameters[parameter].Name; |
|
|
|
string varName = "Handle" + method.Parameters[parameter].Type.Name + method.Parameters[parameter].Name; |
|
|
|
result.Result.Add( |
|
|
|
result.Result.Add(factory.CreateEventCreationCompletionData(varName, resolvedType, null, parameterDefinition, currentMember, currentType)); |
|
|
|
factory.CreateEventCreationCompletionData( |
|
|
|
} |
|
|
|
varName, |
|
|
|
} |
|
|
|
resolvedType, |
|
|
|
|
|
|
|
null, |
|
|
|
IEnumerable<ICompletionData> CreateParameterCompletion(MethodGroupResolveResult resolveResult, CSharpResolver state, AstNode invocation, SyntaxTree unit, int parameter, bool controlSpace) |
|
|
|
parameterDefinition, |
|
|
|
{ |
|
|
|
currentMember, |
|
|
|
var result = new CompletionDataWrapper(this); |
|
|
|
currentType) |
|
|
|
var addedEnums = new HashSet<string>(); |
|
|
|
); |
|
|
|
var addedDelegates = new HashSet<string>(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var method in resolveResult.Methods) { |
|
|
|
|
|
|
|
CreateParameterForInvocation(result, method, state, parameter, addedEnums, addedDelegates); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
foreach (var methods in resolveResult.GetEligibleExtensionMethods (true)) { |
|
|
|
|
|
|
|
foreach (var method in methods) { |
|
|
|
|
|
|
|
if (resolveResult.Methods.Contains (method)) |
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
CreateParameterForInvocation(result, new ReducedExtensionMethod (method), state, parameter, addedEnums, addedDelegates); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|