private static bool IsSameBase(FunctionMemberBase m1, FunctionMemberBase m2) { if (!Enumerable.SequenceEqual(m1.GenericParameters, m2.GenericParameters, new GenericParameterEqualityComparer())) { return(false); } if (HasSameParameters(m1, m2)) { return(false); } return(m1.Accessibility == m2.Accessibility && m1.Comment == m2.Comment && m1.ResultType.IsSame(m2.ResultType)); }
public static bool IsSame(this FunctionMemberBase m1, FunctionMemberBase m2) { if (m1 == null || m2 == null) { return(m1 == m2); } if (m1.GetType() != m2.GetType()) { return(false); } if (m1 is FunctionDeclarationMember) { return(IsSame((FunctionDeclarationMember)m1, (FunctionDeclarationMember)m2)); } if (m1 is FunctionMember) { return(IsSame((FunctionMember)m1, (FunctionMember)m2)); } throw new NotImplementedException(); }
private void Generate(FunctionMemberBase fn) { Generate(fn.Accessibility); Formatter.Write(fn.Name); if (fn.IsGeneric) { Formatter.Write("<"); Formatter.WriteSeparated(", ", fn.GenericParameters, Generate); Formatter.Write(">"); } Formatter.Write("("); Formatter.WriteSeparated(", ", fn.Parameters, Generate); Formatter.Write(")"); if (fn.ResultType != null) { Formatter.Write(": "); Generate(fn.ResultType); } if (fn is FunctionDeclarationMember) { Formatter.Write(";"); } else if (fn is FunctionMember) { Formatter.Write(" {"); Formatter.WriteLine(); Formatter.PushIndent(); var fnm = (FunctionMember)fn; if (fnm.Body != null) { Generate(fnm.Body); } Formatter.PopIndent(); Formatter.WriteEndOfLine(); Formatter.Write("}"); } else { throw new ArgumentOutOfRangeException(); } }
public static bool HasSameParameters(this FunctionMemberBase m1, FunctionMemberBase m2) { return(!Enumerable.SequenceEqual(m1.Parameters, m2.Parameters, new FunctionParameterEqualityComparer())); }