Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Krüger <mkrueger@xamarin.com>2011-11-04 15:55:43 +0400
committerMike Krüger <mkrueger@xamarin.com>2011-11-04 15:55:43 +0400
commit7c97e6d93cc6be3cd11baa2c24c58a282d241ba0 (patch)
tree82e9d33fbc840fdc730b6dbe88e13cc1f987148b /main/contrib
parente65640bc4ab2c853691b60db76c4997dbd10cefe (diff)
Synced with nrefactory.
Diffstat (limited to 'main/contrib')
-rw-r--r--main/contrib/ICSharpCode.NRefactory.CSharp/Refactoring/ContextAction/UseExplicitType.cs38
-rw-r--r--main/contrib/ICSharpCode.NRefactory.CSharp/Refactoring/ContextAction/UseVarKeyword.cs24
2 files changed, 49 insertions, 13 deletions
diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Refactoring/ContextAction/UseExplicitType.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Refactoring/ContextAction/UseExplicitType.cs
index b31bf78cb3..22e9ff2131 100644
--- a/main/contrib/ICSharpCode.NRefactory.CSharp/Refactoring/ContextAction/UseExplicitType.cs
+++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Refactoring/ContextAction/UseExplicitType.cs
@@ -36,32 +36,54 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
public bool IsValid (RefactoringContext context)
{
var varDecl = GetVariableDeclarationStatement (context);
- if (varDecl == null)
- return false;
- var type = context.Resolve (varDecl.Variables.First ().Initializer).Type;
+ IType type;
+ if (varDecl != null) {
+ type = context.Resolve (varDecl.Variables.First ().Initializer).Type;
+ } else {
+ var foreachStatement = GetForeachStatement (context);
+ if (foreachStatement == null)
+ return false;
+ type = context.Resolve (foreachStatement.VariableType).Type;
+ }
+
return !type.Equals (SharedTypes.Null) && !type.Equals (SharedTypes.UnknownType);
}
public void Run (RefactoringContext context)
{
- var varDecl = GetVariableDeclarationStatement (context);
-
using (var script = context.StartScript ()) {
- var type = context.Resolve (varDecl.Variables.First ().Initializer).Type;
- script.Replace (varDecl.Type, context.CreateShortType (type));
+ var varDecl = GetVariableDeclarationStatement (context);
+ if (varDecl != null) {
+ var type = context.Resolve (varDecl.Variables.First ().Initializer).Type;
+ script.Replace (varDecl.Type, context.CreateShortType (type));
+ } else {
+ var foreachStatement = GetForeachStatement (context);
+ var type = context.Resolve (foreachStatement.VariableType).Type;
+ script.Replace (foreachStatement.VariableType, context.CreateShortType (type));
+ }
}
}
+ static readonly AstType varType = new SimpleType ("var");
+
static VariableDeclarationStatement GetVariableDeclarationStatement (RefactoringContext context)
{
var result = context.GetNode<VariableDeclarationStatement> ();
- if (result != null && result.Variables.Count == 1 && !result.Variables.First ().Initializer.IsNull && result.Type.Contains (context.Location.Line, context.Location.Column) && result.Type.IsMatch (new SimpleType ("var"))) {
+ if (result != null && result.Variables.Count == 1 && !result.Variables.First ().Initializer.IsNull && result.Type.Contains (context.Location.Line, context.Location.Column) && result.Type.IsMatch (varType)) {
if (context.Resolve (result.Variables.First ().Initializer) == null)
return null;
return result;
}
return null;
}
+
+ static ForeachStatement GetForeachStatement (RefactoringContext context)
+ {
+ var result = context.GetNode<ForeachStatement> ();
+ if (result != null && result.VariableType.Contains (context.Location) && result.VariableType.IsMatch (varType))
+ return result;
+ return null;
+ }
}
}
diff --git a/main/contrib/ICSharpCode.NRefactory.CSharp/Refactoring/ContextAction/UseVarKeyword.cs b/main/contrib/ICSharpCode.NRefactory.CSharp/Refactoring/ContextAction/UseVarKeyword.cs
index 8aa9c8b66e..049034005e 100644
--- a/main/contrib/ICSharpCode.NRefactory.CSharp/Refactoring/ContextAction/UseVarKeyword.cs
+++ b/main/contrib/ICSharpCode.NRefactory.CSharp/Refactoring/ContextAction/UseVarKeyword.cs
@@ -29,25 +29,39 @@ using ICSharpCode.NRefactory.PatternMatching;
namespace ICSharpCode.NRefactory.CSharp.Refactoring
{
- public class UseVarKeyword: IContextAction
+ public class UseVarKeyword : IContextAction
{
public bool IsValid (RefactoringContext context)
{
- return GetVariableDeclarationStatement (context) != null;
+ return GetVariableDeclarationStatement (context) != null || GetForeachStatement (context) != null;
}
public void Run (RefactoringContext context)
{
- var varDecl = GetVariableDeclarationStatement (context);
using (var script = context.StartScript ()) {
- script.Replace (varDecl.Type, new SimpleType ("var"));
+ var varDecl = GetVariableDeclarationStatement (context);
+ if (varDecl != null) {
+ script.Replace (varDecl.Type, new SimpleType ("var"));
+ } else {
+ script.Replace (GetForeachStatement (context).VariableType, new SimpleType ("var"));
+ }
}
}
+ static readonly AstType varType = new SimpleType ("var");
+
static VariableDeclarationStatement GetVariableDeclarationStatement (RefactoringContext context)
{
var result = context.GetNode<VariableDeclarationStatement> ();
- if (result != null && result.Variables.Count == 1 && !result.Variables.First ().Initializer.IsNull && result.Type.Contains (context.Location.Line, context.Location.Column) && !result.Type.IsMatch (new SimpleType ("var")))
+ if (result != null && result.Variables.Count == 1 && !result.Variables.First ().Initializer.IsNull && result.Type.Contains (context.Location) && !result.Type.IsMatch (varType))
+ return result;
+ return null;
+ }
+
+ static ForeachStatement GetForeachStatement (RefactoringContext context)
+ {
+ var result = context.GetNode<ForeachStatement> ();
+ if (result != null && result.VariableType.Contains (context.Location) && !result.VariableType.IsMatch (varType))
return result;
return null;
}