diff options
author | Marek Safar <marek.safar@gmail.com> | 2011-10-25 12:17:34 +0400 |
---|---|---|
committer | Marek Safar <marek.safar@gmail.com> | 2011-10-25 12:17:34 +0400 |
commit | 06f6083d687325f92a9b5f80c3d1b1f38f286e4e (patch) | |
tree | c68598a8840714bc127e364be4d34cdde3fa7cf6 /gui-compare | |
parent | 7550daf6cf6b9b6d859685b91671e8c2484d2866 (diff) |
Show differences in property accessors
Diffstat (limited to 'gui-compare')
-rw-r--r-- | gui-compare/CompareContext.cs | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gui-compare/CompareContext.cs b/gui-compare/CompareContext.cs index e4b50ec2..708150f3 100644 --- a/gui-compare/CompareContext.cs +++ b/gui-compare/CompareContext.cs @@ -455,6 +455,29 @@ namespace GuiCompare { } else if (reference_list[m] is CompProperty) { var m1 = ((CompProperty) reference_list[m]).GetMethods (); var m2 = ((CompProperty) target_list[a]).GetMethods (); + if (m1.Count != m2.Count) { + comparison.AddError (String.Format ("Expected {0} accessors but found {1}", m1.Count, m2.Count)); + comparison.Status = ComparisonStatus.Error; + } else { + for (int i = 0; i < m1.Count; ++i) { + string reference_access = ((CompMember) m1[i]).GetMemberAccess(); + string target_access = ((CompMember) m2[i]).GetMemberAccess(); + if (reference_access != target_access) { + // Try to give some hints to the developer, best we can do with + // strings. + string extra_msg = ""; + if (reference_access.IndexOf ("Private, Final, Virtual, HideBySig") != -1 && + target_access.IndexOf ("Public, HideBySig") != -1){ + extra_msg = "\n\t\t<b>Hint:</b> reference uses an explicit interface implementation, target doesn't"; + } + + comparison.AddError (String.Format ("reference access is '<i>{0}</i>', target access is '<i>{1}</i>'{2}", + reference_access, target_access, extra_msg)); + comparison.Status = ComparisonStatus.Error; + break; + } + } + } // Compare indexer parameters CompareParameters (comparison, (ICompParameters) m1[0], (ICompParameters) m2[0]); |