// Copyright (c) 2010 AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) // This code is distributed under MIT X11 license (for details please see \doc\license.txt) using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using ICSharpCode.NRefactory.TypeSystem; namespace ICSharpCode.NRefactory.CSharp.Resolver { /// /// Represents an unknown member. /// public class UnknownMemberResolveResult : ResolveResult { readonly IType targetType; readonly string memberName; readonly ReadOnlyCollection typeArguments; public UnknownMemberResolveResult(IType targetType, string memberName, IEnumerable typeArguments) : base(SharedTypes.UnknownType) { if (targetType == null) throw new ArgumentNullException("targetType"); this.targetType = targetType; this.memberName = memberName; this.typeArguments = new ReadOnlyCollection(typeArguments.ToArray()); } /// /// The type on which the method is being called. /// public IType TargetType { get { return targetType; } } public string MemberName { get { return memberName; } } public ReadOnlyCollection TypeArguments { get { return typeArguments; } } public override bool IsError { get { return true; } } public override string ToString() { return string.Format("[{0} {1}.{2}]", GetType().Name, targetType, memberName); } } /// /// Represents an unknown method. /// public class UnknownMethodResolveResult : UnknownMemberResolveResult { readonly ReadOnlyCollection parameters; public UnknownMethodResolveResult(IType targetType, string methodName, IEnumerable typeArguments, IEnumerable parameters) : base(targetType, methodName, typeArguments) { this.parameters = new ReadOnlyCollection(parameters.ToArray()); } public ReadOnlyCollection Parameters { get { return parameters; } } } /// /// Represents an unknown identifier. /// public class UnknownIdentifierResolveResult : ResolveResult { readonly string identifier; public UnknownIdentifierResolveResult(string identifier) : base(SharedTypes.UnknownType) { this.identifier = identifier; } public string Identifier { get { return identifier; } } public override bool IsError { get { return true; } } public override string ToString() { return string.Format("[{0} {1}]", GetType().Name, identifier); } } }