diff --git a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
index 9a86fe0f22..da23c53160 100644
--- a/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
+++ b/ICSharpCode.NRefactory.CSharp/Completion/CSharpCompletionEngine.cs
@@ -1,4 +1,4 @@
-//
+//
// CSharpCompletionEngine.cs
//
// Author:
@@ -2570,7 +2570,7 @@ namespace ICSharpCode.NRefactory.CSharp.Completion
foreach (var m in meths) {
if (!lookup.IsAccessible(m, isProtectedAllowed))
continue;
- result.AddMember(new ReducedExtensionMethod (m));
+ result.AddMember(new InvocatedExtensionMethod (m));
}
}
}
diff --git a/ICSharpCode.NRefactory.CSharp/ICSharpCode.NRefactory.CSharp.csproj b/ICSharpCode.NRefactory.CSharp/ICSharpCode.NRefactory.CSharp.csproj
index ca27cbff2f..99711e8435 100644
--- a/ICSharpCode.NRefactory.CSharp/ICSharpCode.NRefactory.CSharp.csproj
+++ b/ICSharpCode.NRefactory.CSharp/ICSharpCode.NRefactory.CSharp.csproj
@@ -512,7 +512,7 @@
-
+
diff --git a/ICSharpCode.NRefactory.CSharp/Resolver/ReducedExtensionMethod.cs b/ICSharpCode.NRefactory.CSharp/Resolver/InvocatedExtensionMethod.cs
similarity index 83%
rename from ICSharpCode.NRefactory.CSharp/Resolver/ReducedExtensionMethod.cs
rename to ICSharpCode.NRefactory.CSharp/Resolver/InvocatedExtensionMethod.cs
index 8561e6030a..dfd298110b 100644
--- a/ICSharpCode.NRefactory.CSharp/Resolver/ReducedExtensionMethod.cs
+++ b/ICSharpCode.NRefactory.CSharp/Resolver/InvocatedExtensionMethod.cs
@@ -1,5 +1,5 @@
//
-// ReducedExtensionMethod.cs
+// InvocatedExtensionMethod.cs
//
// Author:
// Mike Krüger
@@ -35,64 +35,26 @@ namespace ICSharpCode.NRefactory.CSharp
/// It's used to hide the internals of extension method invocation in certain situation to simulate the
/// syntactic way of writing extension methods on semantic level.
///
- public class ReducedExtensionMethod : IMethod
+ public class InvocatedExtensionMethod : IMethod
{
readonly IMethod baseMethod;
- public ReducedExtensionMethod(IMethod baseMethod)
- {
- this.baseMethod = baseMethod;
- }
-
- public override bool Equals(object obj)
- {
- var other = obj as ReducedExtensionMethod;
- if (other == null)
- return false;
- return baseMethod.Equals(other.baseMethod);
- }
-
- public override int GetHashCode()
- {
- unchecked {
- return baseMethod.GetHashCode() + 1;
+ public IMethod InvocatedMethod {
+ get {
+ return baseMethod;
}
}
- public override string ToString()
+ public InvocatedExtensionMethod(IMethod baseMethod)
{
- return string.Format("[ReducedExtensionMethod: ReducedFrom={0}]", ReducedFrom);
+ this.baseMethod = baseMethod;
}
#region IMember implementation
- [Serializable]
- public sealed class ReducedExtensionMethodMemberReference : IMemberReference
- {
- readonly IMethod baseMethod;
-
- public ReducedExtensionMethodMemberReference (IMethod baseMethod)
- {
- this.baseMethod = baseMethod;
- }
-
- #region IMemberReference implementation
- public IMember Resolve(ITypeResolveContext context)
- {
- return new ReducedExtensionMethod ((IMethod)baseMethod.ToMemberReference ().Resolve (context));
- }
-
- public ITypeReference DeclaringTypeReference {
- get {
- return baseMethod.ToMemberReference ().DeclaringTypeReference;
- }
- }
- #endregion
- }
-
public IMemberReference ToMemberReference()
{
- return new ReducedExtensionMethodMemberReference (baseMethod);
+ return baseMethod.ToMemberReference ();
}
public IMember MemberDefinition {
@@ -167,7 +129,7 @@ namespace ICSharpCode.NRefactory.CSharp
public bool IsExtensionMethod {
get {
- return false;
+ return baseMethod.IsExtensionMethod;
}
}
@@ -219,10 +181,6 @@ namespace ICSharpCode.NRefactory.CSharp
}
}
- public IMethod ReducedFrom {
- get { return baseMethod; }
- }
-
#endregion
#region IParameterizedMember implementation
diff --git a/ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs b/ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs
index 59e6974130..e96f534af3 100644
--- a/ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs
+++ b/ICSharpCode.NRefactory.CSharp/Resolver/OverloadResolution.cs
@@ -1,4 +1,4 @@
-// Copyright (c) AlphaSierraPapa for the SharpDevelop Team
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
@@ -951,7 +951,7 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
throw new InvalidOperationException();
if (this.IsExtensionMethodInvocation && member is IMethod)
- member =new ReducedExtensionMethod ((IMethod)member);
+ member =new InvocatedExtensionMethod ((IMethod)member);
return new CSharpInvocationResolveResult(
this.IsExtensionMethodInvocation ? new TypeResolveResult(member.DeclaringType) : targetResolveResult,
member,
diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ExtensionMethodTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ExtensionMethodTests.cs
index 047e3da60c..8e46e12c9c 100644
--- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ExtensionMethodTests.cs
+++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/ExtensionMethodTests.cs
@@ -1,4 +1,4 @@
-// Copyright (c) AlphaSierraPapa for the SharpDevelop Team
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
@@ -54,12 +54,12 @@ namespace XN {
InvocationResolveResult mrr;
mrr = Resolve(program.Replace("$", "$a.F(1)$"));
- var member = ((IMethod)mrr.Member).ReducedFrom;
+ var member = ((InvocatedExtensionMethod)mrr.Member).InvocatedMethod;
Assert.AreEqual("XN.XC.F", member.FullName);
Assert.AreEqual("System.Int32", member.Parameters [1].Type.FullName);
mrr = Resolve(program.Replace("$", "$a.F(\"text\")$"));
- member = ((IMethod)mrr.Member).ReducedFrom;
+ member = ((InvocatedExtensionMethod)mrr.Member).InvocatedMethod;
Assert.AreEqual("XN.XC.F", member.FullName);
Assert.AreEqual("System.String", member.Parameters[1].Type.FullName);
@@ -67,7 +67,7 @@ namespace XN {
Assert.AreEqual("B.F", mrr.Member.FullName);
mrr = Resolve(program.Replace("$", "$b.F(\"text\")$"));
- member = ((IMethod)mrr.Member).ReducedFrom;
+ member = ((InvocatedExtensionMethod)mrr.Member).InvocatedMethod;
Assert.AreEqual("XN.XC.F", member.FullName);
Assert.AreEqual("System.String", member.Parameters[1].Type.FullName);
@@ -146,7 +146,7 @@ public static class XC {
";
var rr = Resolve(program);
Assert.AreEqual("A[]", rr.Type.ReflectionName);
- var member = ((IMethod)rr.Member).ReducedFrom;
+ var member = ((InvocatedExtensionMethod)rr.Member).InvocatedMethod;
Assert.AreEqual("System.Linq.Enumerable.ToArray", member.FullName);
Assert.AreEqual("A", ((SpecializedMethod)member).TypeArguments.Single().ReflectionName);
}
diff --git a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/LinqTests.cs b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/LinqTests.cs
index beffba026b..e8d161adaa 100644
--- a/ICSharpCode.NRefactory.Tests/CSharp/Resolver/LinqTests.cs
+++ b/ICSharpCode.NRefactory.Tests/CSharp/Resolver/LinqTests.cs
@@ -1,4 +1,4 @@
-// Copyright (c) AlphaSierraPapa for the SharpDevelop Team
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
// software and associated documentation files (the "Software"), to deal in the Software
@@ -349,7 +349,7 @@ class TestClass
}";
var rr = Resolve(program);
Assert.IsFalse(rr.IsError);
- var member = ((IMethod)rr.Member).ReducedFrom;
+ var member = ((InvocatedExtensionMethod)rr.Member).InvocatedMethod;
Assert.AreEqual("SelectMany", member.Name);
Assert.AreEqual(3, member.Parameters.Count);
var typeArguments = ((SpecializedMethod)member).TypeArguments;
@@ -372,7 +372,7 @@ class TestClass
}";
var rr = Resolve(program);
Assert.IsFalse(rr.IsError);
- var member = ((IMethod)rr.Member).ReducedFrom;
+ var member = ((InvocatedExtensionMethod)rr.Member).InvocatedMethod;
Assert.AreEqual("SelectMany", member.Name);
Assert.AreEqual(3, member.Parameters.Count);
var typeArguments = ((SpecializedMethod)member).TypeArguments;
diff --git a/ICSharpCode.NRefactory/TypeSystem/IMethod.cs b/ICSharpCode.NRefactory/TypeSystem/IMethod.cs
index 201acfb94f..310d09d3fb 100644
--- a/ICSharpCode.NRefactory/TypeSystem/IMethod.cs
+++ b/ICSharpCode.NRefactory/TypeSystem/IMethod.cs
@@ -132,10 +132,5 @@ namespace ICSharpCode.NRefactory.TypeSystem
/// Otherwise, returns null.
///
IMember AccessorOwner { get; }
-
- ///
- /// If this method is reduced from an extension method return the original method, null otherwhise.
- ///
- IMethod ReducedFrom { get; }
}
}
diff --git a/ICSharpCode.NRefactory/TypeSystem/Implementation/DefaultResolvedMethod.cs b/ICSharpCode.NRefactory/TypeSystem/Implementation/DefaultResolvedMethod.cs
index 30493ed15a..480007c94d 100644
--- a/ICSharpCode.NRefactory/TypeSystem/Implementation/DefaultResolvedMethod.cs
+++ b/ICSharpCode.NRefactory/TypeSystem/Implementation/DefaultResolvedMethod.cs
@@ -208,11 +208,7 @@ namespace ICSharpCode.NRefactory.TypeSystem.Implementation
public bool IsAccessor {
get { return ((IUnresolvedMethod)unresolved).AccessorOwner != null; }
}
-
- public IMethod ReducedFrom {
- get { return null; }
- }
-
+
public IMember AccessorOwner {
get {
var reference = ((IUnresolvedMethod)unresolved).AccessorOwner;
diff --git a/ICSharpCode.NRefactory/TypeSystem/Implementation/SpecializedMethod.cs b/ICSharpCode.NRefactory/TypeSystem/Implementation/SpecializedMethod.cs
index 415043e78d..87b50fc9c6 100644
--- a/ICSharpCode.NRefactory/TypeSystem/Implementation/SpecializedMethod.cs
+++ b/ICSharpCode.NRefactory/TypeSystem/Implementation/SpecializedMethod.cs
@@ -136,11 +136,7 @@ namespace ICSharpCode.NRefactory.TypeSystem.Implementation
public bool IsAccessor {
get { return methodDefinition.IsAccessor; }
}
-
- public IMethod ReducedFrom {
- get { return null; }
- }
-
+
IMember accessorOwner;
public IMember AccessorOwner {