Skip to content

Commit 039a030

Browse files
authored
[DocumentationEnumerator] Support global alias matching (#641)
The tooling is currently unable to match existing documentation with a member that was updated to include a global alias. Fix this by adding a a type lookup attempt that prefixes `global::` to the documentation member name.
1 parent f71d2ec commit 039a030

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

mdoc/Mono.Documentation/Updater/DocumentationEnumerator.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,8 @@ private static IEnumerable<MemberReference> GetReflectionMembersCore (TypeDefini
256256
// 1. "Normal" (non-generic) member names: GetEnumerator
257257
// - Lookup as-is.
258258
// 2. Explicitly-implemented interface member names: System.Collections.IEnumerable.Current
259-
// - try as-is, and try type.member (due to "kludge" for property
260-
// support.
259+
// - try as-is, try global::namespace.type.member, and try
260+
// type.member (due to "kludge" for property support.
261261
// 3. "Normal" Generic member names: Sort<T> (CSC)
262262
// - need to remove generic parameters --> "Sort"
263263
// 4. Explicitly-implemented interface members for generic interfaces:
@@ -294,6 +294,13 @@ private static IEnumerable<MemberReference> GetReflectionMembersCore (TypeDefini
294294
};
295295

296296

297+
// An explicitly-implemented interface member may have been updated to use a global alias.
298+
foreach (MemberReference mi in type.GetMembers ($"global::{docName}"))
299+
{
300+
memberCount++;
301+
yield return mi;
302+
}
303+
297304
// might be a property; try only type.member instead of
298305
// namespace.type.member.
299306
var typeMember = DocUtils.GetTypeDotMember (docName);

0 commit comments

Comments
 (0)