diff --git a/lib/src/model/class.dart b/lib/src/model/class.dart index f320658dfb..d63299d32a 100644 --- a/lib/src/model/class.dart +++ b/lib/src/model/class.dart @@ -179,12 +179,12 @@ class Class extends Container var result = {}; var seen = {}; - // Recursively adds [implementor] if public, or the impelentors of + // Recursively adds [implementor] if public, or the implementors of // [implementor] if not. void addToResult(Class implementor) { if (seen.contains(implementor)) return; seen.add(implementor); - if (implementor.isPublic) { + if (implementor.isPublicAndPackageDocumented) { result.add(implementor); } else { model_utils diff --git a/lib/src/model/model_element.dart b/lib/src/model/model_element.dart index 6d54836906..6bae86e41d 100644 --- a/lib/src/model/model_element.dart +++ b/lib/src/model/model_element.dart @@ -1036,8 +1036,7 @@ abstract class ModelElement extends Canonicalization @override Package get package => library?.package; - bool get isPublicAndPackageDocumented => - isPublic && library.packageGraph.packageDocumentedFor(this); + bool get isPublicAndPackageDocumented => isPublic && package.isDocumented; List _allParameters; diff --git a/lib/src/model/package.dart b/lib/src/model/package.dart index c001c1c1db..4879ba116c 100644 --- a/lib/src/model/package.dart +++ b/lib/src/model/package.dart @@ -188,7 +188,10 @@ class Package extends LibraryContainer _documentedWhere = DocumentLocation.local; } } else { - if (config.linkToRemote && config.linkToUrl.isNotEmpty && isPublic) { + if (config.linkToRemote && + config.linkToUrl.isNotEmpty && + isPublic && + !packageGraph.config.isPackageExcluded(name)) { _documentedWhere = DocumentLocation.remote; } else { _documentedWhere = DocumentLocation.missing; diff --git a/lib/src/model/package_graph.dart b/lib/src/model/package_graph.dart index cca0940719..2b39258ead 100644 --- a/lib/src/model/package_graph.dart +++ b/lib/src/model/package_graph.dart @@ -277,20 +277,6 @@ class PackageGraph { bool allLibrariesAdded = false; bool _localDocumentationBuilt = false; - Set _allRootDirs; - - /// Returns true if there's at least one library documented in the package - /// that has the same package path as the library for the given element. - /// - /// Usable as a cross-check for dartdoc's canonicalization to generate - /// warnings for ModelElement.isPublicAndPackageDocumented. - bool packageDocumentedFor(ModelElement element) { - _allRootDirs ??= { - ...(publicLibraries.map((l) => l.packageMeta?.resolvedDir)) - }; - return _allRootDirs.contains(element.library.packageMeta?.resolvedDir); - } - PackageWarningCounter get packageWarningCounter => _packageWarningCounter; final Set> _warnAlreadySeen = {}; diff --git a/test/end2end/dartdoc_test.dart b/test/end2end/dartdoc_test.dart index c6f1a572f3..2e83fa242b 100644 --- a/test/end2end/dartdoc_test.dart +++ b/test/end2end/dartdoc_test.dart @@ -206,10 +206,12 @@ void main() { }); test('basic interlinking test', () async { - var dartdoc = await buildDartdoc([], _testPackageDir, tempDir); + var dartdoc = await buildDartdoc( + ['--exclude-packages=args'], _testPackageDir, tempDir); var results = await dartdoc.generateDocs(); var p = results.packageGraph; var meta = p.publicPackages.firstWhere((p) => p.name == 'meta'); + var args = p.publicPackages.firstWhere((p) => p.name == 'args'); var useSomethingInAnotherPackage = p.publicLibraries .firstWhere((l) => l.name == 'fake') .properties @@ -219,6 +221,7 @@ void main() { .properties .firstWhere((p) => p.name == 'useSomethingInTheSdk'); expect(meta.documentedWhere, equals(DocumentLocation.remote)); + expect(args.documentedWhere, equals(DocumentLocation.missing)); expect( useSomethingInAnotherPackage.modelType.linkedName, matches( diff --git a/test/end2end/model_test.dart b/test/end2end/model_test.dart index 50bcf175a6..8fc70e982d 100644 --- a/test/end2end/model_test.dart +++ b/test/end2end/model_test.dart @@ -1513,7 +1513,7 @@ void main() { }); test('correctly finds all the classes', () { - expect(classes, hasLength(37)); + expect(classes, hasLength(38)); }); test('abstract', () { diff --git a/testing/test_package/lib/example.dart b/testing/test_package/lib/example.dart index b28352dc51..1bcc2b4226 100644 --- a/testing/test_package/lib/example.dart +++ b/testing/test_package/lib/example.dart @@ -8,6 +8,7 @@ import 'dart:math'; import 'src/mylib.dart' show Helper; import 'package:test_package_imported/main.dart'; +export 'package:args/args.dart' show ArgParser; export 'dart:core' show deprecated, Deprecated; import 'package:meta/meta.dart' show protected, factory; diff --git a/tool/grind.dart b/tool/grind.dart index 1058600696..635a53d8fb 100644 --- a/tool/grind.dart +++ b/tool/grind.dart @@ -1106,8 +1106,6 @@ Future _buildDartdocFlutterPluginDocs() async { [ '--enable-asserts', path.join(Directory.current.path, 'bin', 'dartdoc.dart'), - '--exclude-packages', - 'Dart', // TODO(jcollins-g): dart-lang/dartdoc#1431 '--json', '--link-to-remote', '--output',