|
|
|
@ -43,6 +43,12 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring |
|
|
|
yield break; |
|
|
|
yield break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var visitor = new DeclareLocalVariableAction.SearchNodeVisitior(pexpr); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var node = context.GetNode <BlockStatement>(); |
|
|
|
|
|
|
|
if (node != null) |
|
|
|
|
|
|
|
node.AcceptVisitor(visitor); |
|
|
|
|
|
|
|
|
|
|
|
var resolveResult = context.Resolve(pexpr); |
|
|
|
var resolveResult = context.Resolve(pexpr); |
|
|
|
|
|
|
|
|
|
|
|
yield return new CodeAction(context.TranslateString("Create local constant"), script => { |
|
|
|
yield return new CodeAction(context.TranslateString("Create local constant"), script => { |
|
|
|
@ -83,6 +89,57 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring |
|
|
|
// script.Link(initializer.NameToken, variableUsage);
|
|
|
|
// script.Link(initializer.NameToken, variableUsage);
|
|
|
|
script.InsertWithCursor(context.TranslateString("Create constant"), Script.InsertPosition.Before, decl); |
|
|
|
script.InsertWithCursor(context.TranslateString("Create constant"), Script.InsertPosition.Before, decl); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (visitor.Matches.Count > 1) { |
|
|
|
|
|
|
|
yield return new CodeAction(string.Format(context.TranslateString("Create local constant (replace '{0}' occurrences)"), visitor.Matches.Count), script => { |
|
|
|
|
|
|
|
string name = CreateMethodDeclarationAction.CreateBaseName(pexpr, resolveResult.Type); |
|
|
|
|
|
|
|
var service = (NamingConventionService)context.GetService(typeof(NamingConventionService)); |
|
|
|
|
|
|
|
if (service != null) |
|
|
|
|
|
|
|
name = service.CheckName(context, name, AffectedEntity.LocalConstant); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var initializer = new VariableInitializer(name, pexpr.Clone()); |
|
|
|
|
|
|
|
var decl = new VariableDeclarationStatement() { |
|
|
|
|
|
|
|
Type = context.CreateShortType(resolveResult.Type), |
|
|
|
|
|
|
|
Modifiers = Modifiers.Const, |
|
|
|
|
|
|
|
Variables = { initializer } |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
script.InsertBefore(statement, decl); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var linkedNodes = new List<AstNode>(); |
|
|
|
|
|
|
|
linkedNodes.Add(initializer.NameToken); |
|
|
|
|
|
|
|
for (int i = 0; i < visitor.Matches.Count; i++) { |
|
|
|
|
|
|
|
var identifierExpression = new IdentifierExpression(name); |
|
|
|
|
|
|
|
linkedNodes.Add(identifierExpression); |
|
|
|
|
|
|
|
script.Replace(visitor.Matches [i], identifierExpression); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
script.Link(linkedNodes.ToArray ()); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
yield return new CodeAction(string.Format(context.TranslateString("Create constant field (replace '{0}' occurrences)"), visitor.Matches.Count), script => { |
|
|
|
|
|
|
|
string name = CreateMethodDeclarationAction.CreateBaseName(pexpr, resolveResult.Type); |
|
|
|
|
|
|
|
var service = (NamingConventionService)context.GetService(typeof(NamingConventionService)); |
|
|
|
|
|
|
|
if (service != null) |
|
|
|
|
|
|
|
name = service.CheckName(context, name, AffectedEntity.ConstantField); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var initializer = new VariableInitializer(name, pexpr.Clone()); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var decl = new FieldDeclaration() { |
|
|
|
|
|
|
|
ReturnType = context.CreateShortType(resolveResult.Type), |
|
|
|
|
|
|
|
Modifiers = Modifiers.Const, |
|
|
|
|
|
|
|
Variables = { initializer } |
|
|
|
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var linkedNodes = new List<AstNode>(); |
|
|
|
|
|
|
|
linkedNodes.Add(initializer.NameToken); |
|
|
|
|
|
|
|
for (int i = 0; i < visitor.Matches.Count; i++) { |
|
|
|
|
|
|
|
var identifierExpression = new IdentifierExpression(name); |
|
|
|
|
|
|
|
linkedNodes.Add(identifierExpression); |
|
|
|
|
|
|
|
script.Replace(visitor.Matches [i], identifierExpression); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
script.InsertWithCursor(context.TranslateString("Create constant"), Script.InsertPosition.Before, decl); |
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|