Browse Source

Fixed completion bug.

newNRvisualizers
Mike Krüger 14 years ago
parent
commit
8ff1e4c5b0
  1. 12
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
  2. 25
      ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs

12
ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs

@ -2257,7 +2257,13 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -2257,7 +2257,13 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
//var typeDef = resolveResult.Type.GetDefinition();
var result = new CompletionDataWrapper(this);
bool includeStaticMembers = false;
var lookup = new MemberLookup(
ctx.CurrentTypeDefinition,
Compilation.MainAssembly
);
if (resolveResult is LocalResolveResult) {
if (resolvedNode is IdentifierExpression) {
var mrr = (LocalResolveResult)resolveResult;
@ -2266,6 +2272,8 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -2266,6 +2272,8 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
}
if (resolveResult is TypeResolveResult && type.Kind == TypeKind.Enum) {
foreach (var field in type.GetFields ()) {
if (!lookup.IsAccessible(field, false))
continue;
result.AddMember(field);
}
foreach (var m in type.GetMethods ()) {
@ -2276,10 +2284,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -2276,10 +2284,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
return result.Result;
}
var lookup = new MemberLookup(
ctx.CurrentTypeDefinition,
Compilation.MainAssembly
);
bool isProtectedAllowed = resolveResult is ThisResolveResult ? true : lookup.IsProtectedAccessAllowed(type);
bool skipNonStaticMembers = (resolveResult is TypeResolveResult);

25
ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionBugTests.cs

@ -5187,5 +5187,30 @@ public class TestFoo @@ -5187,5 +5187,30 @@ public class TestFoo
Assert.IsNotNull(provider.Find("String"), "'String'not found.");
});
}
/// <summary>
/// Bug 4808 - Enums have an unknown 'split_char' member included in them.
/// </summary>
[Test()]
public void TestBug4808()
{
var provider = CreateProvider(
@"using System;
enum Foo { A, B }
public class TestFoo
{
void Bar ()
{
$Foo.$
}
}
"
);
Assert.IsNotNull(provider.Find("A"));
Assert.IsNotNull(provider.Find("B"));
Assert.IsNull(provider.Find("split_char"), "'split_char' found.");
}
}
}

Loading…
Cancel
Save