Browse Source

[Completion] Fixed enum completion bug.

newNRvisualizers
Mike Krüger 14 years ago
parent
commit
9e7c9be52b
  1. 18
      ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
  2. 8
      ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionAccessibleTests.cs

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

@ -640,7 +640,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -640,7 +640,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
// May happen in variable names
return controlSpace ? DefaultControlSpaceItems(identifierStart) : null;
}
if (identifierStart.Node is VariableInitializer && location <= ((VariableInitializer)identifierStart.Node).NameToken.EndLocation) {
return controlSpace ? HandleAccessorContext() ?? DefaultControlSpaceItems(identifierStart) : null;
}
@ -1118,15 +1117,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -1118,15 +1117,6 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
rr = ResolveExpression(node, unit);
}
if (node is Expression) {
var astResolver = new CSharpAstResolver(GetState(), xp.Unit, CSharpParsedFile);
foreach (var type in CreateFieldAction.GetValidTypes(astResolver, (Expression)node)) {
if (type.Kind == TypeKind.Enum) {
AddEnumMembers(wrapper, type, rr.Item2);
}
}
}
if (node is Identifier && node.Parent is ForeachStatement) {
var foreachStmt = (ForeachStatement)node.Parent;
foreach (var possibleName in GenerateNameProposals (foreachStmt.VariableType)) {
@ -1290,6 +1280,14 @@ namespace ICSharpCode.NRefactory.CSharp.Completion @@ -1290,6 +1280,14 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
}
}
if (node is Expression) {
var astResolver = new CSharpAstResolver(state, unit, CSharpParsedFile);
foreach (var type in CreateFieldAction.GetValidTypes(astResolver, (Expression)node)) {
if (type.Kind == TypeKind.Enum) {
AddEnumMembers(wrapper, type, state);
}
}
}
}
static bool IsInSwitchContext(AstNode node)

8
ICSharpCode.NRefactory.Tests/CSharp/CodeCompletion/CodeCompletionAccessibleTests.cs

@ -1181,7 +1181,7 @@ class TestClass @@ -1181,7 +1181,7 @@ class TestClass
[Test()]
public void TestEnumInBinaryOperatorExpression ()
{
CompletionDataList provider = CodeCompletionBugTests.CreateCtrlSpaceProvider (
CodeCompletionBugTests.CombinedProviderTest (
@"
[Flags]
public enum TestEnum { A, B, C}
@ -1190,14 +1190,14 @@ class TestClass @@ -1190,14 +1190,14 @@ class TestClass
{
public void Foo ()
{
$TestEnum test = TestEnum.A | $
$TestEnum test = TestEnum.A | T$
}
}");
Assert.IsNotNull (provider, "provider not found.");
}", provider => {
Assert.IsNotNull (provider.Find ("TestEnum"), "enum 'TestEnum' not found.");
Assert.IsNotNull (provider.Find ("TestEnum.A"), "enum 'TestEnum.A' not found.");
Assert.IsNotNull (provider.Find ("TestEnum.B"), "enum 'TestEnum.B' not found.");
Assert.IsNotNull (provider.Find ("TestEnum.C"), "enum 'TestEnum.C' not found.");
});
}
[Test()]

Loading…
Cancel
Save