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

github.com/xamarin/NRefactory.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Grunwald <daniel@danielgrunwald.de>2014-03-10 22:50:34 +0400
committerDaniel Grunwald <daniel@danielgrunwald.de>2014-03-10 22:50:34 +0400
commit30823172df52c6c6d34c440ae65ee27b45667075 (patch)
tree78aed752c11fe828bf7cdb25832dfa1e280d9c34 /ICSharpCode.NRefactory.CSharp.Refactoring
parentb92f50582f86d1ad5d592fd1b28920b7c9be2570 (diff)
Fix NullReferenceException in AddArgumentNameAction.
Diffstat (limited to 'ICSharpCode.NRefactory.CSharp.Refactoring')
-rw-r--r--ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/AddArgumentNameAction.cs57
1 files changed, 29 insertions, 28 deletions
diff --git a/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/AddArgumentNameAction.cs b/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/AddArgumentNameAction.cs
index 78ce7663..2cf1b70d 100644
--- a/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/AddArgumentNameAction.cs
+++ b/ICSharpCode.NRefactory.CSharp.Refactoring/CodeActions/AddArgumentNameAction.cs
@@ -23,12 +23,13 @@
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
+
+using System;
+using System.Collections.Generic;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.Semantics;
-using ICSharpCode.NRefactory.Refactoring;
using System.Linq;
-using System.Text;
using ICSharpCode.NRefactory.CSharp.Resolver;
namespace ICSharpCode.NRefactory.CSharp.Refactoring
@@ -36,9 +37,6 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
/// <summary>
/// Add name for argument
/// </summary>
- using System;
- using System.Collections.Generic;
-
[ContextAction("Add name for argument", Description = "Add name for argument including method, indexer invocation and Attibute Usage")]
public class AddArgumentNameAction : SpecializedCodeAction<Expression>
{
@@ -73,12 +71,13 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
if (!(parent is CSharp.Attribute) && !(parent is IndexerExpression) && !(parent is InvocationExpression))
return null;
- if (parent is CSharp.Attribute) {
- var resolvedResult = context.Resolve(parent as CSharp.Attribute);
- if (resolvedResult.IsError)
+ var attribute = parent as CSharp.Attribute;
+ if (attribute != null) {
+ var resolvedResult = context.Resolve(attribute) as CSharpInvocationResolveResult;
+ if (resolvedResult == null || resolvedResult.IsError)
return null;
- var arguments = (parent as CSharp.Attribute).Arguments;
- IMember member = (resolvedResult as CSharpInvocationResolveResult).Member;
+ var arguments = attribute.Arguments;
+ IMember member = resolvedResult.Member;
int index = 0;
int temp = 0;
@@ -97,17 +96,17 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
if (method == null || method.Parameters.Count == 0 || method.Parameters.Last().IsParams)
return null;
- var parameterMap = (resolvedResult as CSharpInvocationResolveResult).GetArgumentToParameterMap();
+ var parameterMap = resolvedResult.GetArgumentToParameterMap();
var parameters = method.Parameters;
if (index >= parameterMap.Count)
return null;
- var name = parameters.ElementAt(parameterMap [index]).Name;
+ var name = parameters[parameterMap[index]].Name;
return new CodeAction(string.Format(context.TranslateString("Add argument name '{0}'"), name), script => {
for (int i = 0; i < nodes.Count; i++) {
int p = index + i;
if (p >= parameterMap.Count)
break;
- name = parameters.ElementAt(parameterMap [p]).Name;
+ name = parameters[parameterMap[p]].Name;
var namedArgument = new NamedArgumentExpression(name, arguments.ElementAt(p).Clone());
script.Replace(arguments.ElementAt(p), namedArgument);
}},
@@ -115,12 +114,13 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
);
}
- if (parent is IndexerExpression) {
- var resolvedResult = context.Resolve(parent as IndexerExpression);
- if (resolvedResult.IsError)
+ var indexerExpression = parent as IndexerExpression;
+ if (indexerExpression != null) {
+ var resolvedResult = context.Resolve(indexerExpression) as CSharpInvocationResolveResult;
+ if (resolvedResult == null || resolvedResult.IsError)
return null;
- var arguments = (parent as IndexerExpression).Arguments;
- IMember member = (resolvedResult as CSharpInvocationResolveResult).Member;
+ var arguments = indexerExpression.Arguments;
+ IMember member = resolvedResult.Member;
int index = 0;
int temp = 0;
@@ -139,17 +139,17 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
if (property == null || property.Parameters.Count == 0 || property.Parameters.Last().IsParams) {
return null;
}
- var parameterMap = (resolvedResult as CSharpInvocationResolveResult).GetArgumentToParameterMap();
+ var parameterMap = resolvedResult.GetArgumentToParameterMap();
var parameters = property.Parameters;
if (index >= parameterMap.Count)
return null;
- var name = parameters.ElementAt(parameterMap [index]).Name;
+ var name = parameters[parameterMap[index]].Name;
return new CodeAction(string.Format(context.TranslateString("Add argument name '{0}'"), name), script => {
for (int i = 0; i< nodes.Count; i++) {
int p = index + i;
if (p >= parameterMap.Count)
break;
- name = parameters.ElementAt(parameterMap [p]).Name;
+ name = parameters[parameterMap[p]].Name;
var namedArgument = new NamedArgumentExpression(name, arguments.ElementAt(p).Clone());
script.Replace(arguments.ElementAt(p), namedArgument);
}},
@@ -157,12 +157,13 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
);
}
- if (parent is InvocationExpression) {
- var resolvedResult = context.Resolve(parent as InvocationExpression);
- if (resolvedResult.IsError)
+ var invocationExpression = parent as InvocationExpression;
+ if (invocationExpression != null) {
+ var resolvedResult = context.Resolve(invocationExpression) as CSharpInvocationResolveResult;
+ if (resolvedResult == null || resolvedResult.IsError)
return null;
- var arguments = (parent as InvocationExpression).Arguments;
- IMember member = (resolvedResult as CSharpInvocationResolveResult).Member;
+ var arguments = invocationExpression.Arguments;
+ IMember member = resolvedResult.Member;
int index = 0;
int temp = 0;
@@ -186,13 +187,13 @@ namespace ICSharpCode.NRefactory.CSharp.Refactoring
var parameters = method.Parameters;
if (index >= parameterMap.Count)
return null;
- var name = parameters.ElementAt(parameterMap [index]).Name;
+ var name = parameters[parameterMap[index]].Name;
return new CodeAction(string.Format(context.TranslateString("Add argument name '{0}'"), name), script => {
for (int i = 0; i< nodes.Count; i++) {
int p = index + i;
if (p >= parameterMap.Count)
break;
- name = parameters.ElementAt(parameterMap [p]).Name;
+ name = parameters[parameterMap[p]].Name;
var namedArgument = new NamedArgumentExpression(name, arguments.ElementAt(p).Clone());
script.Replace(arguments.ElementAt(p), namedArgument);
}},