Browse Source

Use AddRange for Arguments of expressions.

pull/191/merge
Eusebiu Marcu 15 years ago
parent
commit
e21dfe2a78
  1. 12
      Debugger/Debugger.Core/NRefactory/Ast/ExpressionExtensionMethods.cs
  2. 4
      Debugger/ILSpy.Debugger/Services/Debugger/DebuggerHelper.cs

12
Debugger/Debugger.Core/NRefactory/Ast/ExpressionExtensionMethods.cs

@ -108,9 +108,7 @@ namespace ICSharpCode.NRefactory.Ast
if (memberInfo is MethodInfo) { if (memberInfo is MethodInfo) {
var mre = new MemberReferenceExpression() { Target = target, MemberName = memberInfo.Name }; var mre = new MemberReferenceExpression() { Target = target, MemberName = memberInfo.Name };
var ie = new InvocationExpression() { Target = mre.Clone() }; var ie = new InvocationExpression() { Target = mre.Clone() };
foreach (var element in AddExplicitTypes((MethodInfo)memberInfo, args)) { ie.Arguments.AddRange(AddExplicitTypes((MethodInfo)memberInfo, args));
ie.AddChild(element, AstNode.Roles.Argument);
}
return ie.SetStaticType(memberInfo.MemberType); return ie.SetStaticType(memberInfo.MemberType);
} }
@ -121,13 +119,13 @@ namespace ICSharpCode.NRefactory.Ast
if (memberInfo.Name != "Item") if (memberInfo.Name != "Item")
throw new DebuggerException("Arguments expected only for the Item property"); throw new DebuggerException("Arguments expected only for the Item property");
var ie = new IndexerExpression() { Target = target.Clone() }; var ie = new IndexerExpression() { Target = target.Clone() };
ie.Arguments.AddRange(AddExplicitTypes(propInfo.GetGetMethod() ?? propInfo.GetSetMethod(), args));
foreach (var element in AddExplicitTypes(propInfo.GetGetMethod() ?? propInfo.GetSetMethod(), args)) {
ie.AddChild(element, AstNode.Roles.Argument);
}
return ie.SetStaticType(memberInfo.MemberType); return ie.SetStaticType(memberInfo.MemberType);
} else { } else {
return (new MemberReferenceExpression() { Target = target.Clone(), MemberName = memberInfo.Name }).SetStaticType(memberInfo.MemberType); return (new MemberReferenceExpression() {
Target = target.Clone(),
MemberName = memberInfo.Name }).SetStaticType(memberInfo.MemberType);
} }
} }

4
Debugger/ILSpy.Debugger/Services/Debugger/DebuggerHelper.cs

@ -30,9 +30,7 @@ namespace ILSpy.Debugger.Services.Debugger
Expression iEnumerableVariableExplicitCast = new CastExpression { Expression = iEnumerableVariable.Clone() , Type = iEnumerableType.GetTypeReference() }; Expression iEnumerableVariableExplicitCast = new CastExpression { Expression = iEnumerableVariable.Clone() , Type = iEnumerableType.GetTypeReference() };
var obj = new ObjectCreateExpression() { Type = listType.GetTypeReference() }; var obj = new ObjectCreateExpression() { Type = listType.GetTypeReference() };
foreach (var element in iEnumerableVariableExplicitCast.ToList()) { obj.Arguments.AddRange(iEnumerableVariableExplicitCast.ToList());
obj.AddChild(element, AstNode.Roles.Argument);
}
return obj; return obj;
} }

Loading…
Cancel
Save