private static bool IsPossiblyByRefTypeParameter(TypeSymbol type) { if (type.IsTypeParameter()) { return(true); } if (type.IsErrorType()) { //var byRefReturnType = type as ByRefReturnErrorTypeSymbol; //return ((object)byRefReturnType != null) && byRefReturnType.ReferencedType.IsTypeParameter(); throw new NotImplementedException(); } return(false); }
/// <summary> /// Returns true if this type derives from a given type. /// </summary> internal bool IsDerivedFrom(TypeSymbol type, bool ignoreDynamic, ref HashSet <DiagnosticInfo> useSiteDiagnostics) { Debug.Assert((object)type != null); Debug.Assert(!type.IsTypeParameter()); if ((object)this == (object)type) { return(false); } var t = this.BaseTypeWithDefinitionUseSiteDiagnostics(ref useSiteDiagnostics); while ((object)t != null) { if (type.Equals(t, ignoreDynamic: ignoreDynamic)) { return(true); } t = t.BaseTypeWithDefinitionUseSiteDiagnostics(ref useSiteDiagnostics); } return(false); }