|
|
@ -2296,7 +2296,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion |
|
|
|
var lookup = new MemberLookup( |
|
|
|
var lookup = new MemberLookup( |
|
|
|
ctx.CurrentTypeDefinition, |
|
|
|
ctx.CurrentTypeDefinition, |
|
|
|
Compilation.MainAssembly |
|
|
|
Compilation.MainAssembly |
|
|
|
); |
|
|
|
); |
|
|
|
|
|
|
|
|
|
|
|
if (resolveResult is NamespaceResolveResult) { |
|
|
|
if (resolveResult is NamespaceResolveResult) { |
|
|
|
var nr = (NamespaceResolveResult)resolveResult; |
|
|
|
var nr = (NamespaceResolveResult)resolveResult; |
|
|
@ -2315,10 +2315,9 @@ namespace ICSharpCode.NRefactory.CSharp.Completion |
|
|
|
} |
|
|
|
} |
|
|
|
return namespaceContents.Result; |
|
|
|
return namespaceContents.Result; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
IType type = resolveResult.Type; |
|
|
|
IType type = resolveResult.Type; |
|
|
|
if (resolvedNode.Parent is PointerReferenceExpression && (type is PointerType)) { |
|
|
|
if (resolvedNode.Parent is PointerReferenceExpression && (type is PointerType)) { |
|
|
|
type = ((PointerType)type).ElementType; |
|
|
|
resolveResult = new OperatorResolveResult (((PointerType)type).ElementType, System.Linq.Expressions.ExpressionType.Extension, resolveResult); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
//var typeDef = resolveResult.Type.GetDefinition();
|
|
|
|
//var typeDef = resolveResult.Type.GetDefinition();
|
|
|
@ -2352,7 +2351,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion |
|
|
|
resolveResult, |
|
|
|
resolveResult, |
|
|
|
((IdentifierExpression)resolvedNode).Identifier, |
|
|
|
((IdentifierExpression)resolvedNode).Identifier, |
|
|
|
out trr |
|
|
|
out trr |
|
|
|
)) { |
|
|
|
)) { |
|
|
|
if (currentMember != null && mrr.Member.IsStatic ^ currentMember.IsStatic) { |
|
|
|
if (currentMember != null && mrr.Member.IsStatic ^ currentMember.IsStatic) { |
|
|
|
skipNonStaticMembers = true; |
|
|
|
skipNonStaticMembers = true; |
|
|
|
|
|
|
|
|
|
|
@ -2396,20 +2395,21 @@ namespace ICSharpCode.NRefactory.CSharp.Completion |
|
|
|
|
|
|
|
|
|
|
|
if (resolvedNode.Annotation<ObjectCreateExpression>() == null) { |
|
|
|
if (resolvedNode.Annotation<ObjectCreateExpression>() == null) { |
|
|
|
//tags the created expression as part of an object create expression.
|
|
|
|
//tags the created expression as part of an object create expression.
|
|
|
|
|
|
|
|
/* |
|
|
|
var filteredList = new List<IMember>(); |
|
|
|
var filteredList = new List<IMember>(); |
|
|
|
foreach (var member in type.GetMembers ()) { |
|
|
|
foreach (var member in type.GetMembers ()) { |
|
|
|
|
|
|
|
filteredList.Add(member); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var member in filteredList) { |
|
|
|
|
|
|
|
// Console.WriteLine ("add:" + member + "/" + member.IsStatic);
|
|
|
|
|
|
|
|
result.AddMember(member); |
|
|
|
|
|
|
|
}*/ |
|
|
|
|
|
|
|
foreach (var member in lookup.GetAccessibleMembers (resolveResult)) { |
|
|
|
|
|
|
|
|
|
|
|
if (member.EntityType == EntityType.Indexer || member.EntityType == EntityType.Operator || member.EntityType == EntityType.Constructor || member.EntityType == EntityType.Destructor) { |
|
|
|
if (member.EntityType == EntityType.Indexer || member.EntityType == EntityType.Operator || member.EntityType == EntityType.Constructor || member.EntityType == EntityType.Destructor) { |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
if (member.IsExplicitInterfaceImplementation) { |
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// Console.WriteLine ("member:" + member + member.IsShadowing);
|
|
|
|
|
|
|
|
if (!lookup.IsAccessible(member, isProtectedAllowed)) { |
|
|
|
|
|
|
|
// Console.WriteLine ("skip access: " + member.FullName);
|
|
|
|
|
|
|
|
continue; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if (resolvedNode is BaseReferenceExpression && member.IsAbstract) { |
|
|
|
if (resolvedNode is BaseReferenceExpression && member.IsAbstract) { |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
@ -2433,18 +2433,13 @@ namespace ICSharpCode.NRefactory.CSharp.Completion |
|
|
|
if (member.EntityType == EntityType.Operator) { |
|
|
|
if (member.EntityType == EntityType.Operator) { |
|
|
|
continue; |
|
|
|
continue; |
|
|
|
} |
|
|
|
} |
|
|
|
if (member.IsExplicitInterfaceImplementation) { |
|
|
|
|
|
|
|
continue; |
|
|
|
if (member is IMember) { |
|
|
|
} |
|
|
|
result.AddMember ((IMember)member); |
|
|
|
if (member.IsShadowing) { |
|
|
|
} else { |
|
|
|
filteredList.RemoveAll(m => m.Name == member.Name); |
|
|
|
if (resolveResult is TypeResolveResult || includeStaticMembers) |
|
|
|
|
|
|
|
result.AddType ((IType)member, member.Name); |
|
|
|
} |
|
|
|
} |
|
|
|
filteredList.Add(member); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foreach (var member in filteredList) { |
|
|
|
|
|
|
|
// Console.WriteLine ("add:" + member + "/" + member.IsStatic);
|
|
|
|
|
|
|
|
result.AddMember(member); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -2490,7 +2485,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion |
|
|
|
|
|
|
|
|
|
|
|
return result.Result; |
|
|
|
return result.Result; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
IEnumerable<ICompletionData> CreateCaseCompletionData(TextLocation location) |
|
|
|
IEnumerable<ICompletionData> CreateCaseCompletionData(TextLocation location) |
|
|
|
{ |
|
|
|
{ |
|
|
|
var unit = ParseStub("a: break;"); |
|
|
|
var unit = ParseStub("a: break;"); |
|
|
|