Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(402)

Side by Side Diff: pkg/dartdoc/lib/dartdoc.dart

Issue 11341037: Rename InterfaceMirror to ClassMirror (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 8 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | pkg/dartdoc/lib/mirrors.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 /** 5 /**
6 * To generate docs for a library, run this script with the path to an 6 * To generate docs for a library, run this script with the path to an
7 * entrypoint .dart file, like: 7 * entrypoint .dart file, like:
8 * 8 *
9 * $ dart dartdoc.dart foo.dart 9 * $ dart dartdoc.dart foo.dart
10 * 10 *
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 * This list contains the libraries sorted in by the library name. 220 * This list contains the libraries sorted in by the library name.
221 */ 221 */
222 List<LibraryMirror> _sortedLibraries; 222 List<LibraryMirror> _sortedLibraries;
223 223
224 CommentMap _comments; 224 CommentMap _comments;
225 225
226 /** The library that we're currently generating docs for. */ 226 /** The library that we're currently generating docs for. */
227 LibraryMirror _currentLibrary; 227 LibraryMirror _currentLibrary;
228 228
229 /** The type that we're currently generating docs for. */ 229 /** The type that we're currently generating docs for. */
230 InterfaceMirror _currentType; 230 ClassMirror _currentType;
231 231
232 /** The member that we're currently generating docs for. */ 232 /** The member that we're currently generating docs for. */
233 MemberMirror _currentMember; 233 MemberMirror _currentMember;
234 234
235 /** The path to the file currently being written to, relative to [outdir]. */ 235 /** The path to the file currently being written to, relative to [outdir]. */
236 Path _filePath; 236 Path _filePath;
237 237
238 /** The file currently being written to. */ 238 /** The file currently being written to. */
239 StringBuffer _file; 239 StringBuffer _file;
240 240
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
579 579
580 void docLibraryNavigationJson(LibraryMirror library, List libraryList) { 580 void docLibraryNavigationJson(LibraryMirror library, List libraryList) {
581 var libraryInfo = {}; 581 var libraryInfo = {};
582 libraryInfo[NAME] = displayName(library); 582 libraryInfo[NAME] = displayName(library);
583 final List members = docMembersJson(library.declaredMembers); 583 final List members = docMembersJson(library.declaredMembers);
584 if (!members.isEmpty) { 584 if (!members.isEmpty) {
585 libraryInfo[MEMBERS] = members; 585 libraryInfo[MEMBERS] = members;
586 } 586 }
587 587
588 final types = []; 588 final types = [];
589 for (InterfaceMirror type in orderByName(library.types.values)) { 589 for (ClassMirror type in orderByName(library.types.values)) {
590 if (!showPrivate && type.isPrivate) continue; 590 if (!showPrivate && type.isPrivate) continue;
591 591
592 var typeInfo = {}; 592 var typeInfo = {};
593 typeInfo[NAME] = type.displayName; 593 typeInfo[NAME] = type.displayName;
594 if (type.isClass) { 594 if (type.isClass) {
595 typeInfo[KIND] = CLASS; 595 typeInfo[KIND] = CLASS;
596 } else if (type.isInterface) { 596 } else if (type.isInterface) {
597 typeInfo[KIND] = INTERFACE; 597 typeInfo[KIND] = INTERFACE;
598 } else { 598 } else {
599 assert(type.isTypedef); 599 assert(type.isTypedef);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 if (_currentLibrary == library) docLibraryNavigation(library); 674 if (_currentLibrary == library) docLibraryNavigation(library);
675 } 675 }
676 } 676 }
677 677
678 writeln('</div>'); 678 writeln('</div>');
679 } 679 }
680 680
681 /** Writes the navigation for the types contained by the given library. */ 681 /** Writes the navigation for the types contained by the given library. */
682 void docLibraryNavigation(LibraryMirror library) { 682 void docLibraryNavigation(LibraryMirror library) {
683 // Show the exception types separately. 683 // Show the exception types separately.
684 final types = <InterfaceMirror>[]; 684 final types = <ClassMirror>[];
685 final exceptions = <InterfaceMirror>[]; 685 final exceptions = <ClassMirror>[];
686 686
687 for (InterfaceMirror type in orderByName(library.types.values)) { 687 for (ClassMirror type in orderByName(library.types.values)) {
688 if (!showPrivate && type.isPrivate) continue; 688 if (!showPrivate && type.isPrivate) continue;
689 689
690 if (isException(type)) { 690 if (isException(type)) {
691 exceptions.add(type); 691 exceptions.add(type);
692 } else { 692 } else {
693 types.add(type); 693 types.add(type);
694 } 694 }
695 } 695 }
696 696
697 if ((types.length == 0) && (exceptions.length == 0)) return; 697 if ((types.length == 0) && (exceptions.length == 0)) return;
698 698
699 writeln('<ul class="icon">'); 699 writeln('<ul class="icon">');
700 types.forEach(docTypeNavigation); 700 types.forEach(docTypeNavigation);
701 exceptions.forEach(docTypeNavigation); 701 exceptions.forEach(docTypeNavigation);
702 writeln('</ul>'); 702 writeln('</ul>');
703 } 703 }
704 704
705 /** Writes a linked navigation list item for the given type. */ 705 /** Writes a linked navigation list item for the given type. */
706 void docTypeNavigation(InterfaceMirror type) { 706 void docTypeNavigation(ClassMirror type) {
707 var icon = 'interface'; 707 var icon = 'interface';
708 if (type.simpleName.endsWith('Exception')) { 708 if (type.simpleName.endsWith('Exception')) {
709 icon = 'exception'; 709 icon = 'exception';
710 } else if (type.isClass) { 710 } else if (type.isClass) {
711 icon = 'class'; 711 icon = 'class';
712 } 712 }
713 713
714 write('<li>'); 714 write('<li>');
715 if (_currentType == type) { 715 if (_currentType == type) {
716 write( 716 write(
(...skipping 21 matching lines...) Expand all
738 // Look for a comment for the entire library. 738 // Look for a comment for the entire library.
739 final comment = getLibraryComment(library); 739 final comment = getLibraryComment(library);
740 if (comment != null) { 740 if (comment != null) {
741 writeln('<div class="doc">${comment.html}</div>'); 741 writeln('<div class="doc">${comment.html}</div>');
742 } 742 }
743 743
744 // Document the top-level members. 744 // Document the top-level members.
745 docMembers(library); 745 docMembers(library);
746 746
747 // Document the types. 747 // Document the types.
748 final classes = <InterfaceMirror>[]; 748 final classes = <ClassMirror>[];
749 final interfaces = <InterfaceMirror>[]; 749 final interfaces = <ClassMirror>[];
750 final typedefs = <TypedefMirror>[]; 750 final typedefs = <TypedefMirror>[];
751 final exceptions = <InterfaceMirror>[]; 751 final exceptions = <ClassMirror>[];
752 752
753 for (InterfaceMirror type in orderByName(library.types.values)) { 753 for (ClassMirror type in orderByName(library.types.values)) {
754 if (!showPrivate && type.isPrivate) continue; 754 if (!showPrivate && type.isPrivate) continue;
755 755
756 if (isException(type)) { 756 if (isException(type)) {
757 exceptions.add(type); 757 exceptions.add(type);
758 } else if (type.isClass) { 758 } else if (type.isClass) {
759 classes.add(type); 759 classes.add(type);
760 } else if (type.isInterface){ 760 } else if (type.isInterface){
761 interfaces.add(type); 761 interfaces.add(type);
762 } else if (type is TypedefMirror) { 762 } else if (type is TypedefMirror) {
763 typedefs.add(type); 763 typedefs.add(type);
(...skipping 29 matching lines...) Expand all
793 <div class="type"> 793 <div class="type">
794 <h4> 794 <h4>
795 ${a(typeUrl(type), "<strong>${typeName(type)}</strong>")} 795 ${a(typeUrl(type), "<strong>${typeName(type)}</strong>")}
796 </h4> 796 </h4>
797 </div> 797 </div>
798 '''); 798 ''');
799 } 799 }
800 writeln('</div>'); 800 writeln('</div>');
801 } 801 }
802 802
803 void docType(InterfaceMirror type) { 803 void docType(ClassMirror type) {
804 if (verbose) { 804 if (verbose) {
805 print('- ${type.simpleName}'); 805 print('- ${type.simpleName}');
806 } 806 }
807 _totalTypes++; 807 _totalTypes++;
808 _currentType = type; 808 _currentType = type;
809 809
810 startFile(typeUrl(type)); 810 startFile(typeUrl(type));
811 811
812 var kind = 'interface'; 812 var kind = 'interface';
813 if (type.isTypedef) { 813 if (type.isTypedef) {
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 /** Override this to write additional content at the end of a type's page. */ 852 /** Override this to write additional content at the end of a type's page. */
853 void writeTypeFooter() { 853 void writeTypeFooter() {
854 // Do nothing. 854 // Do nothing.
855 } 855 }
856 856
857 /** 857 /**
858 * Writes an inline type span for the given type. This is a little box with 858 * Writes an inline type span for the given type. This is a little box with
859 * an icon and the type's name. It's similar to how types appear in the 859 * an icon and the type's name. It's similar to how types appear in the
860 * navigation, but is suitable for inline (as opposed to in a `<ul>`) use. 860 * navigation, but is suitable for inline (as opposed to in a `<ul>`) use.
861 */ 861 */
862 void typeSpan(InterfaceMirror type) { 862 void typeSpan(ClassMirror type) {
863 var icon = 'interface'; 863 var icon = 'interface';
864 if (type.simpleName.endsWith('Exception')) { 864 if (type.simpleName.endsWith('Exception')) {
865 icon = 'exception'; 865 icon = 'exception';
866 } else if (type.isClass) { 866 } else if (type.isClass) {
867 icon = 'class'; 867 icon = 'class';
868 } 868 }
869 869
870 write('<span class="type-box"><span class="icon-$icon"></span>'); 870 write('<span class="type-box"><span class="icon-$icon"></span>');
871 if (_currentType == type) { 871 if (_currentType == type) {
872 write('<strong>${typeName(type)}</strong>'); 872 write('<strong>${typeName(type)}</strong>');
873 } else { 873 } else {
874 write(a(typeUrl(type), typeName(type))); 874 write(a(typeUrl(type), typeName(type)));
875 } 875 }
876 write('</span>'); 876 write('</span>');
877 } 877 }
878 878
879 /** 879 /**
880 * Document the other types that touch [Type] in the inheritance hierarchy: 880 * Document the other types that touch [Type] in the inheritance hierarchy:
881 * subclasses, superclasses, subinterfaces, superinferfaces, and default 881 * subclasses, superclasses, subinterfaces, superinferfaces, and default
882 * class. 882 * class.
883 */ 883 */
884 void docInheritance(InterfaceMirror type) { 884 void docInheritance(ClassMirror type) {
885 // Don't show the inheritance details for Object. It doesn't have any base 885 // Don't show the inheritance details for Object. It doesn't have any base
886 // class (obviously) and it has too many subclasses to be useful. 886 // class (obviously) and it has too many subclasses to be useful.
887 if (type.isObject) return; 887 if (type.isObject) return;
888 888
889 // Writes an unordered list of references to types with an optional header. 889 // Writes an unordered list of references to types with an optional header.
890 listTypes(types, header) { 890 listTypes(types, header) {
891 if (types == null) return; 891 if (types == null) return;
892 892
893 var publicTypes; 893 var publicTypes;
894 if (showPrivate) { 894 if (showPrivate) {
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
1034 staticSetters[member.displayName] = member; 1034 staticSetters[member.displayName] = member;
1035 } else { 1035 } else {
1036 staticMethods.add(member); 1036 staticMethods.add(member);
1037 } 1037 }
1038 } else if (member is FieldMirror) { 1038 } else if (member is FieldMirror) {
1039 staticGetters[member.displayName] = member; 1039 staticGetters[member.displayName] = member;
1040 } 1040 }
1041 } 1041 }
1042 }); 1042 });
1043 1043
1044 if (host is InterfaceMirror) { 1044 if (host is ClassMirror) {
1045 var iterable = new HierarchyIterable(host, includeType: true); 1045 var iterable = new HierarchyIterable(host, includeType: true);
1046 for (InterfaceMirror type in iterable) { 1046 for (ClassMirror type in iterable) {
1047 if (!host.isObject && !inheritFromObject && type.isObject) continue; 1047 if (!host.isObject && !inheritFromObject && type.isObject) continue;
1048 1048
1049 type.declaredMembers.forEach((_, MemberMirror member) { 1049 type.declaredMembers.forEach((_, MemberMirror member) {
1050 if (member.isStatic) return; 1050 if (member.isStatic) return;
1051 if (!showPrivate && member.isPrivate) return; 1051 if (!showPrivate && member.isPrivate) return;
1052 1052
1053 bool inherit = true; 1053 bool inherit = true;
1054 if (type !== host) { 1054 if (type !== host) {
1055 if (member.isPrivate) { 1055 if (member.isPrivate) {
1056 // Don't inherit private members. 1056 // Don't inherit private members.
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after
1440 * Documents the source code contained within [location]. 1440 * Documents the source code contained within [location].
1441 */ 1441 */
1442 void docCode(Location location) { 1442 void docCode(Location location) {
1443 if (includeSource) { 1443 if (includeSource) {
1444 writeln('<pre class="source">'); 1444 writeln('<pre class="source">');
1445 writeln(md.escapeHtml(unindentCode(location))); 1445 writeln(md.escapeHtml(unindentCode(location)));
1446 writeln('</pre>'); 1446 writeln('</pre>');
1447 } 1447 }
1448 } 1448 }
1449 1449
1450 DocComment createDocComment(String text, [InterfaceMirror inheritedFrom]) => 1450 DocComment createDocComment(String text, [ClassMirror inheritedFrom]) =>
1451 new DocComment(text, inheritedFrom); 1451 new DocComment(text, inheritedFrom);
1452 1452
1453 1453
1454 /** Get the doc comment associated with the given library. */ 1454 /** Get the doc comment associated with the given library. */
1455 DocComment getLibraryComment(LibraryMirror library) { 1455 DocComment getLibraryComment(LibraryMirror library) {
1456 // Look for a comment for the entire library. 1456 // Look for a comment for the entire library.
1457 final comment = _comments.findLibrary(library.location.source); 1457 final comment = _comments.findLibrary(library.location.source);
1458 if (comment == null) return null; 1458 if (comment == null) return null;
1459 return createDocComment(comment); 1459 return createDocComment(comment);
1460 } 1460 }
1461 1461
1462 /** Get the doc comment associated with the given type. */ 1462 /** Get the doc comment associated with the given type. */
1463 DocComment getTypeComment(TypeMirror type) { 1463 DocComment getTypeComment(TypeMirror type) {
1464 String comment = _comments.find(type.location); 1464 String comment = _comments.find(type.location);
1465 if (comment == null) return null; 1465 if (comment == null) return null;
1466 return createDocComment(comment); 1466 return createDocComment(comment);
1467 } 1467 }
1468 1468
1469 /** 1469 /**
1470 * Get the doc comment associated with the given member. 1470 * Get the doc comment associated with the given member.
1471 * 1471 *
1472 * If no comment was found on the member, the hierarchy is traversed to find 1472 * If no comment was found on the member, the hierarchy is traversed to find
1473 * an inherited comment, favouring comments inherited from classes over 1473 * an inherited comment, favouring comments inherited from classes over
1474 * comments inherited from interfaces. 1474 * comments inherited from interfaces.
1475 */ 1475 */
1476 DocComment getMemberComment(MemberMirror member) { 1476 DocComment getMemberComment(MemberMirror member) {
1477 String comment = _comments.find(member.location); 1477 String comment = _comments.find(member.location);
1478 InterfaceMirror inheritedFrom = null; 1478 ClassMirror inheritedFrom = null;
1479 if (comment == null) { 1479 if (comment == null) {
1480 if (member.surroundingDeclaration is InterfaceMirror) { 1480 if (member.surroundingDeclaration is ClassMirror) {
1481 var iterable = 1481 var iterable =
1482 new HierarchyIterable(member.surroundingDeclaration, 1482 new HierarchyIterable(member.surroundingDeclaration,
1483 includeType: false); 1483 includeType: false);
1484 for (InterfaceMirror type in iterable) { 1484 for (ClassMirror type in iterable) {
1485 var inheritedMember = type.declaredMembers[member.simpleName]; 1485 var inheritedMember = type.declaredMembers[member.simpleName];
1486 if (inheritedMember is MemberMirror) { 1486 if (inheritedMember is MemberMirror) {
1487 comment = _comments.find(inheritedMember.location); 1487 comment = _comments.find(inheritedMember.location);
1488 if (comment != null) { 1488 if (comment != null) {
1489 inheritedFrom = type; 1489 inheritedFrom = type;
1490 break; 1490 break;
1491 } 1491 }
1492 } 1492 }
1493 } 1493 }
1494 } 1494 }
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
1600 return; 1600 return;
1601 } 1601 }
1602 1602
1603 if (type.isTypeVariable) { 1603 if (type.isTypeVariable) {
1604 // If we're using a type parameter within the body of a generic class then 1604 // If we're using a type parameter within the body of a generic class then
1605 // just link back up to the class. 1605 // just link back up to the class.
1606 write(a(typeUrl(enclosingType), type.simpleName)); 1606 write(a(typeUrl(enclosingType), type.simpleName));
1607 return; 1607 return;
1608 } 1608 }
1609 1609
1610 assert(type is InterfaceMirror); 1610 assert(type is ClassMirror);
1611 1611
1612 // Link to the type. 1612 // Link to the type.
1613 if (shouldLinkToPublicApi(type.library)) { 1613 if (shouldLinkToPublicApi(type.library)) {
1614 write('<a href="$API_LOCATION${typeUrl(type)}">${type.simpleName}</a>'); 1614 write('<a href="$API_LOCATION${typeUrl(type)}">${type.simpleName}</a>');
1615 } else if (shouldIncludeLibrary(type.library)) { 1615 } else if (shouldIncludeLibrary(type.library)) {
1616 write(a(typeUrl(type), type.simpleName)); 1616 write(a(typeUrl(type), type.simpleName));
1617 } else { 1617 } else {
1618 write(type.simpleName); 1618 write(type.simpleName);
1619 } 1619 }
1620 1620
(...skipping 10 matching lines...) Expand all
1631 for (final arg in typeArgs) { 1631 for (final arg in typeArgs) {
1632 if (!first) write(', '); 1632 if (!first) write(', ');
1633 first = false; 1633 first = false;
1634 linkToType(enclosingType, arg); 1634 linkToType(enclosingType, arg);
1635 } 1635 }
1636 write('&gt;'); 1636 write('&gt;');
1637 } 1637 }
1638 } 1638 }
1639 1639
1640 /** Creates a linked cross reference to [type]. */ 1640 /** Creates a linked cross reference to [type]. */
1641 typeReference(InterfaceMirror type) { 1641 typeReference(ClassMirror type) {
1642 // TODO(rnystrom): Do we need to handle ParameterTypes here like 1642 // TODO(rnystrom): Do we need to handle ParameterTypes here like
1643 // annotation() does? 1643 // annotation() does?
1644 return a(typeUrl(type), typeName(type), css: 'crossref'); 1644 return a(typeUrl(type), typeName(type), css: 'crossref');
1645 } 1645 }
1646 1646
1647 /** Generates a human-friendly string representation for a type. */ 1647 /** Generates a human-friendly string representation for a type. */
1648 typeName(TypeMirror type, {bool showBounds: false}) { 1648 typeName(TypeMirror type, {bool showBounds: false}) {
1649 if (type.isVoid) { 1649 if (type.isVoid) {
1650 return 'void'; 1650 return 'void';
1651 } 1651 }
1652 if (type is TypeVariableMirror) { 1652 if (type is TypeVariableMirror) {
1653 return type.simpleName; 1653 return type.simpleName;
1654 } 1654 }
1655 assert(type is InterfaceMirror); 1655 assert(type is ClassMirror);
1656 1656
1657 // See if it's a generic type. 1657 // See if it's a generic type.
1658 if (type.isDeclaration) { 1658 if (type.isDeclaration) {
1659 final typeParams = []; 1659 final typeParams = [];
1660 for (final typeParam in type.declaration.typeVariables) { 1660 for (final typeParam in type.declaration.typeVariables) {
1661 if (showBounds && 1661 if (showBounds &&
1662 (typeParam.bound != null) && 1662 (typeParam.bound != null) &&
1663 !typeParam.bound.isObject) { 1663 !typeParam.bound.isObject) {
1664 final bound = typeName(typeParam.bound, showBounds: true); 1664 final bound = typeName(typeParam.bound, showBounds: true);
1665 typeParams.add('${typeParam.simpleName} extends $bound'); 1665 typeParams.add('${typeParam.simpleName} extends $bound');
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
1747 1747
1748 // See if it's another type or a member of another type in the current 1748 // See if it's another type or a member of another type in the current
1749 // library. 1749 // library.
1750 if (currentLibrary != null) { 1750 if (currentLibrary != null) {
1751 // See if it's a constructor 1751 // See if it's a constructor
1752 final constructorLink = (() { 1752 final constructorLink = (() {
1753 final match = 1753 final match =
1754 new RegExp(r'new ([\w$]+)(?:\.([\w$]+))?').firstMatch(name); 1754 new RegExp(r'new ([\w$]+)(?:\.([\w$]+))?').firstMatch(name);
1755 if (match == null) return; 1755 if (match == null) return;
1756 String typeName = match[1]; 1756 String typeName = match[1];
1757 InterfaceMirror foundtype = currentLibrary.types[typeName]; 1757 ClassMirror foundtype = currentLibrary.types[typeName];
1758 if (foundtype == null) return; 1758 if (foundtype == null) return;
1759 String constructorName = 1759 String constructorName =
1760 (match[2] == null) ? typeName : '$typeName.${match[2]}'; 1760 (match[2] == null) ? typeName : '$typeName.${match[2]}';
1761 final constructor = 1761 final constructor =
1762 foundtype.constructors[constructorName]; 1762 foundtype.constructors[constructorName];
1763 if (constructor == null) return; 1763 if (constructor == null) return;
1764 return makeLink(memberUrl(constructor)); 1764 return makeLink(memberUrl(constructor));
1765 })(); 1765 })();
1766 if (constructorLink != null) return constructorLink; 1766 if (constructorLink != null) return constructorLink;
1767 1767
1768 // See if it's a member of another type 1768 // See if it's a member of another type
1769 final foreignMemberLink = (() { 1769 final foreignMemberLink = (() {
1770 final match = new RegExp(r'([\w$]+)\.([\w$]+)').firstMatch(name); 1770 final match = new RegExp(r'([\w$]+)\.([\w$]+)').firstMatch(name);
1771 if (match == null) return; 1771 if (match == null) return;
1772 InterfaceMirror foundtype = currentLibrary.types[match[1]]; 1772 ClassMirror foundtype = currentLibrary.types[match[1]];
1773 if (foundtype == null) return; 1773 if (foundtype == null) return;
1774 MemberMirror foundMember = foundtype.declaredMembers[match[2]]; 1774 MemberMirror foundMember = foundtype.declaredMembers[match[2]];
1775 if (foundMember == null) return; 1775 if (foundMember == null) return;
1776 return makeLink(memberUrl(foundMember)); 1776 return makeLink(memberUrl(foundMember));
1777 })(); 1777 })();
1778 if (foreignMemberLink != null) return foreignMemberLink; 1778 if (foreignMemberLink != null) return foreignMemberLink;
1779 1779
1780 InterfaceMirror foundType = currentLibrary.types[name]; 1780 ClassMirror foundType = currentLibrary.types[name];
1781 if (foundType != null) { 1781 if (foundType != null) {
1782 return makeLink(typeUrl(foundType)); 1782 return makeLink(typeUrl(foundType));
1783 } 1783 }
1784 1784
1785 // See if it's a top-level member in the current library. 1785 // See if it's a top-level member in the current library.
1786 MemberMirror foundMember = currentLibrary.declaredMembers[name]; 1786 MemberMirror foundMember = currentLibrary.declaredMembers[name];
1787 if (foundMember != null) { 1787 if (foundMember != null) {
1788 return makeLink(memberUrl(foundMember)); 1788 return makeLink(memberUrl(foundMember));
1789 } 1789 }
1790 } 1790 }
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1847 const InternalError(this.message); 1847 const InternalError(this.message);
1848 String toString() => "InternalError: '$message'"; 1848 String toString() => "InternalError: '$message'";
1849 } 1849 }
1850 1850
1851 class DocComment { 1851 class DocComment {
1852 final String text; 1852 final String text;
1853 1853
1854 /** 1854 /**
1855 * Non-null if the comment is inherited from another declaration. 1855 * Non-null if the comment is inherited from another declaration.
1856 */ 1856 */
1857 final InterfaceMirror inheritedFrom; 1857 final ClassMirror inheritedFrom;
1858 1858
1859 DocComment(this.text, [this.inheritedFrom = null]) { 1859 DocComment(this.text, [this.inheritedFrom = null]) {
1860 assert(text != null && !text.trim().isEmpty); 1860 assert(text != null && !text.trim().isEmpty);
1861 } 1861 }
1862 1862
1863 String get html => md.markdownToHtml(text); 1863 String get html => md.markdownToHtml(text);
1864 1864
1865 String toString() => text; 1865 String toString() => text;
1866 } 1866 }
OLDNEW
« no previous file with comments | « no previous file | pkg/dartdoc/lib/mirrors.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698