| Index: utils/dartdoc/dartdoc.dart
|
| diff --git a/utils/dartdoc/dartdoc.dart b/utils/dartdoc/dartdoc.dart
|
| index 42040dcbddd7ba7c6c3a40b5017db7e80c031200..e4cb83a48cb368c1d30d4969841a4988c2a65fb4 100644
|
| --- a/utils/dartdoc/dartdoc.dart
|
| +++ b/utils/dartdoc/dartdoc.dart
|
| @@ -794,8 +794,8 @@ class Dartdoc {
|
| return anchor;
|
| }
|
|
|
| - findMember(Type type) {
|
| - final member = type.members[name];
|
| + findMember(Type type, String memberName) {
|
| + final member = type.members[memberName];
|
| if (member == null) return null;
|
|
|
| // Special case: if the member we've resolved is a property (i.e. it wraps
|
| @@ -821,21 +821,47 @@ class Dartdoc {
|
|
|
| // See if it's another member of the current type.
|
| if (type != null) {
|
| - final member = findMember(type);
|
| + final member = findMember(type, name);
|
| if (member != null) {
|
| return makeLink(memberUrl(member));
|
| }
|
| }
|
|
|
| - // See if it's another type in the current library.
|
| + // See if it's another type or a member of another type in the current
|
| + // library.
|
| if (library != null) {
|
| + // See if it's a constructor
|
| + final constructorLink = (() {
|
| + final match = new RegExp(@'new (\w+)(?:\.(\w+))?').firstMatch(name);
|
| + if (match == null) return;
|
| + final type = library.types[match[1]];
|
| + if (type == null) return;
|
| + final constructor = type.getConstructor(
|
| + match[2] == null ? '' : match[2]);
|
| + if (constructor == null) return;
|
| + return makeLink(memberUrl(constructor));
|
| + })();
|
| + if (constructorLink != null) return constructorLink;
|
| +
|
| + // See if it's a member of another type
|
| + final foreignMemberLink = (() {
|
| + final match = new RegExp(@'(\w+)\.(\w+)').firstMatch(name);
|
| + if (match == null) return;
|
| + final type = library.types[match[1]];
|
| + if (type == null) return;
|
| + final member = findMember(type, match[2]);
|
| + if (member == null) return;
|
| + return makeLink(memberUrl(member));
|
| + })();
|
| + if (foreignMemberLink != null) return foreignMemberLink;
|
| +
|
| final type = library.types[name];
|
| if (type != null) {
|
| return makeLink(typeUrl(type));
|
| }
|
|
|
| // See if it's a top-level member in the current library.
|
| - final member = findMember(library.topType);
|
| + final member = findMember(library.topType, name);
|
| if (member != null) {
|
| return makeLink(memberUrl(member));
|
| }
|
|
|