Browse Source

Fixed create static field/property.

newNRvisualizers
Mike Krüger 14 years ago
parent
commit
402e1124a2
  1. 15
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/CreateFieldAction.cs
  2. 2
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/CreateMethodDeclarationAction.cs
  3. 9
      ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/CreatePropertyAction.cs
  4. 28
      ICSharpCode.NRefactory.Tests/CSharp/CodeActions/CreateFieldTests.cs
  5. 31
      ICSharpCode.NRefactory.Tests/CSharp/CodeActions/CreatePropertyTests.cs

15
ICSharpCode.NRefactory.CSharp/Refactoring/CodeActions/CreateFieldAction.cs

@ -56,15 +56,22 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -56,15 +56,22 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
if (guessedType == null) {
yield break;
}
var state = context.GetResolverStateBefore(identifier);
bool isStatic = state.CurrentMember.IsStatic;
var service = (NamingConventionService)context.GetService(typeof(NamingConventionService));
if (service != null && !service.IsValidName(identifier.Identifier, AffectedEntity.Field))
if (service != null && !service.IsValidName(identifier.Identifier, AffectedEntity.Field, Modifiers.Private, isStatic)) {
yield break;
}
yield return new CodeAction(context.TranslateString("Create field"), script => {
var decl = new FieldDeclaration() {
ReturnType = guessedType,
Variables = { new VariableInitializer(identifier.Identifier) }
};
ReturnType = guessedType,
Variables = { new VariableInitializer(identifier.Identifier) }
};
if (isStatic) {
decl.Modifiers |= Modifiers.Static;
}
script.InsertWithCursor(context.TranslateString("Create field"), decl, Script.InsertPosition.Before);
});

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

@ -54,12 +54,12 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -54,12 +54,12 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
yield break;
}
var methodName = identifier.Identifier;
var state = context.GetResolverStateBefore(identifier);
var guessedType = CreateFieldAction.GuessType(context, identifier);
if (guessedType.Kind != TypeKind.Delegate) {
yield break;
}
var invocationMethod = guessedType.GetDelegateInvokeMethod();
var state = context.GetResolverStateBefore(identifier);
bool isStatic = state.CurrentMember.IsStatic;
var service = (NamingConventionService)context.GetService(typeof(NamingConventionService));

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

@ -52,9 +52,11 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -52,9 +52,11 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
if (guessedType == null) {
yield break;
}
var state = context.GetResolverStateBefore(identifier);
bool isStatic = state.CurrentMember.IsStatic;
var service = (NamingConventionService)context.GetService(typeof(NamingConventionService));
if (service != null && !service.IsValidName(identifier.Identifier, AffectedEntity.Property)) {
if (service != null && !service.IsValidName(identifier.Identifier, AffectedEntity.Property, Modifiers.Private, isStatic)) {
yield break;
}
@ -65,6 +67,9 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring @@ -65,6 +67,9 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
Getter = new Accessor(),
Setter = new Accessor()
};
if (isStatic) {
decl.Modifiers |= Modifiers.Static;
}
script.InsertWithCursor(context.TranslateString("Create property"), decl, Script.InsertPosition.Before);
});
}

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

@ -149,5 +149,33 @@ namespace ICSharpCode.NRefactory.CSharp.CodeActions @@ -149,5 +149,33 @@ namespace ICSharpCode.NRefactory.CSharp.CodeActions
" }" + Environment.NewLine +
"}", result);
}
[Test()]
public void TestStaticField ()
{
string result = RunContextAction (
new CreateFieldAction (),
"using System;" + Environment.NewLine +
"class TestClass" + Environment.NewLine +
"{" + Environment.NewLine +
" static void Test ()" + Environment.NewLine +
" {" + Environment.NewLine +
" $foo = 0x10;" + Environment.NewLine +
" }" + Environment.NewLine +
"}"
);
Assert.AreEqual (
"using System;" + Environment.NewLine +
"class TestClass" + Environment.NewLine +
"{" + Environment.NewLine +
" static int foo;" + Environment.NewLine +
"" + Environment.NewLine +
" static void Test ()" + Environment.NewLine +
" {" + Environment.NewLine +
" foo = 0x10;" + Environment.NewLine +
" }" + Environment.NewLine +
"}", result);
}
}
}

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

@ -122,5 +122,36 @@ namespace ICSharpCode.NRefactory.CSharp.CodeActions @@ -122,5 +122,36 @@ namespace ICSharpCode.NRefactory.CSharp.CodeActions
" }" + Environment.NewLine +
"}", result);
}
[Test()]
public void TestStaticProperty ()
{
string result = RunContextAction (
new CreatePropertyAction (),
"using System;" + Environment.NewLine +
"class TestClass" + Environment.NewLine +
"{" + Environment.NewLine +
" static void Test ()" + Environment.NewLine +
" {" + Environment.NewLine +
" $Foo = 0x10;" + Environment.NewLine +
" }" + Environment.NewLine +
"}"
);
Assert.AreEqual (
"using System;" + Environment.NewLine +
"class TestClass" + Environment.NewLine +
"{" + Environment.NewLine +
" static int Foo {" + Environment.NewLine +
" get;" + Environment.NewLine +
" set;" + Environment.NewLine +
" }" + Environment.NewLine +
" static void Test ()" + Environment.NewLine +
" {" + Environment.NewLine +
" Foo = 0x10;" + Environment.NewLine +
" }" + Environment.NewLine +
"}", result);
}
}
}
Loading…
Cancel
Save