Browse Source

[Refactoring] Fixed some bugs in create code actions in conjunction

with enums.
newNRvisualizers
Mike Krüger 14 years ago
parent
commit
1852a3d43a
  1. 2
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/CreateIndexerAction.cs
  2. 9
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/CreateMethodDeclarationAction.cs
  3. 2
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/CreatePropertyAction.cs
  4. 16
      ICSharpCode.NRefactory.Tests/CSharp/CodeActions/CreateFieldTests.cs
  5. 17
      ICSharpCode.NRefactory.Tests/CSharp/CodeActions/CreateIndexerTests.cs
  6. 14
      ICSharpCode.NRefactory.Tests/CSharp/CodeActions/CreateMethodDeclarationTests.cs
  7. 15
      ICSharpCode.NRefactory.Tests/CSharp/CodeActions/CreatePropertyTests.cs
  8. 1
      ICSharpCode.NRefactory.Tests/CSharp/CodeActions/GenerateGetterTests.cs
  9. 1
      ICSharpCode.NRefactory.Tests/CSharp/CodeActions/GeneratePropertyTests.cs

2
ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/CreateIndexerAction.cs

@ -57,7 +57,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -57,7 +57,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
if (targetResolveResult.Type.GetDefinition() == null || targetResolveResult.Type.GetDefinition().Region.IsEmpty)
yield break;
isStatic = targetResolveResult is TypeResolveResult;
if (isStatic && targetResolveResult.Type.Kind == TypeKind.Interface)
if (isStatic && targetResolveResult.Type.Kind == TypeKind.Interface || targetResolveResult.Type.Kind == TypeKind.Enum)
yield break;
} else {
isStatic = indexer.Target is IdentifierExpression && state.CurrentMember.IsStatic;

9
ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/CreateMethodDeclarationAction.cs

@ -54,14 +54,13 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -54,14 +54,13 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
IEnumerable<CodeAction> GetActionsFromMemberReferenceExpression(RefactoringContext context, MemberReferenceExpression invocation)
{
if (!(context.Resolve(invocation).IsError))
yield break;
yield break;
var methodName = invocation.MemberName;
var guessedType = CreateFieldAction.GuessType(context, invocation);
if (guessedType.Kind != TypeKind.Delegate)
yield break;
yield break;
var invocationMethod = guessedType.GetDelegateInvokeMethod();
var state = context.GetResolverStateBefore(invocation);
if (state.CurrentTypeDefinition == null)
yield break;
@ -73,7 +72,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -73,7 +72,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
if (targetResolveResult.Type.GetDefinition() == null || targetResolveResult.Type.GetDefinition().Region.IsEmpty)
yield break;
isStatic = targetResolveResult is TypeResolveResult;
if (isStatic && targetResolveResult.Type.Kind == TypeKind.Interface)
if (isStatic && targetResolveResult.Type.Kind == TypeKind.Interface || targetResolveResult.Type.Kind == TypeKind.Enum)
yield break;
} else {
if (state.CurrentMember == null)
@ -153,7 +152,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -153,7 +152,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
if (targetResolveResult.Type.GetDefinition() == null || targetResolveResult.Type.GetDefinition().Region.IsEmpty)
yield break;
isStatic = targetResolveResult is TypeResolveResult;
if (isStatic && targetResolveResult.Type.Kind == TypeKind.Interface)
if (isStatic && targetResolveResult.Type.Kind == TypeKind.Interface || targetResolveResult.Type.Kind == TypeKind.Enum)
yield break;
} else {
isStatic = state.CurrentMember.IsStatic || state.CurrentTypeDefinition.IsStatic;

2
ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/CreatePropertyAction.cs

@ -68,7 +68,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -68,7 +68,7 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
bool isStatic = targetResolveResult is TypeResolveResult;
if (createInOtherType) {
if (isStatic && targetResolveResult.Type.Kind == TypeKind.Interface)
if (isStatic && targetResolveResult.Type.Kind == TypeKind.Interface || targetResolveResult.Type.Kind == TypeKind.Enum)
yield break;
} else {
if (state.CurrentMember == null)

16
ICSharpCode.NRefactory.Tests/CSharp/CodeActions/CreateFieldTests.cs

@ -170,7 +170,21 @@ namespace ICSharpCode.NRefactory.CSharp.CodeActions @@ -170,7 +170,21 @@ namespace ICSharpCode.NRefactory.CSharp.CodeActions
}");
}
[Test]
public void TestEnumCase()
{
TestWrongContext<CreateFieldAction>(@"
enum AEnum { A }
class Foo
{
public void Test ()
{
AEnum e;
e.$foo = 2;
}
}
");
}
}
}

17
ICSharpCode.NRefactory.Tests/CSharp/CodeActions/CreateIndexerTests.cs

@ -167,7 +167,22 @@ class TestClass @@ -167,7 +167,22 @@ class TestClass
}
");
}
[Test]
public void TestEnumCase()
{
TestWrongContext<CreateIndexerAction>(@"
enum AEnum { A }
class Foo
{
public void Test ()
{
AEnum e;
$e[0] = 2;
}
}
");
}
}
}

14
ICSharpCode.NRefactory.Tests/CSharp/CodeActions/CreateMethodDeclarationTests.cs

@ -699,6 +699,20 @@ class Test @@ -699,6 +699,20 @@ class Test
}");
}
[Test]
public void TestEnumCase()
{
TestWrongContext<CreateMethodDeclarationAction>(@"
enum AEnum { A }
class Foo
{
public void Test ()
{
AEnum e = AEnum.B$ar ();
}
}
");
}
}

15
ICSharpCode.NRefactory.Tests/CSharp/CodeActions/CreatePropertyTests.cs

@ -263,5 +263,20 @@ class TestClass @@ -263,5 +263,20 @@ class TestClass
}
}");
}
[Test]
public void TestEnumCase()
{
TestWrongContext<CreatePropertyAction>(@"
enum AEnum { A }
class Foo
{
public void Test ()
{
AEnum e = AEnum.B$ar;
}
}
");
}
}
}

1
ICSharpCode.NRefactory.Tests/CSharp/CodeActions/GenerateGetterTests.cs

@ -33,7 +33,6 @@ namespace ICSharpCode.NRefactory.CSharp.CodeActions @@ -33,7 +33,6 @@ namespace ICSharpCode.NRefactory.CSharp.CodeActions
[TestFixture]
public class GenerateGetterTests : ContextActionTestBase
{
[Ignore("NotImplemented")]
[Test()]
public void Test ()
{

1
ICSharpCode.NRefactory.Tests/CSharp/CodeActions/GeneratePropertyTests.cs

@ -32,7 +32,6 @@ namespace ICSharpCode.NRefactory.CSharp.CodeActions @@ -32,7 +32,6 @@ namespace ICSharpCode.NRefactory.CSharp.CodeActions
[TestFixture]
public class GeneratePropertyTests : ContextActionTestBase
{
[Ignore("NotImplemented")]
[Test()]
public void Test ()
{

Loading…
Cancel
Save