From c91a38861592eb0babdc59ab9b4acc0942720427 Mon Sep 17 00:00:00 2001 From: Janice Collins Date: Fri, 21 Apr 2023 13:24:10 -0700 Subject: [PATCH 1/5] recommit --- test/dartdoc_test_base.dart | 69 +++++++++++++++++++++++++ test/extension_methods_test.dart | 86 ++++++++++++++++++++++++++++++++ 2 files changed, 155 insertions(+) create mode 100644 test/extension_methods_test.dart diff --git a/test/dartdoc_test_base.dart b/test/dartdoc_test_base.dart index ad4dca0909..e2b2241718 100644 --- a/test/dartdoc_test_base.dart +++ b/test/dartdoc_test_base.dart @@ -11,6 +11,16 @@ import 'package:meta/meta.dart'; import 'src/test_descriptor_utils.dart' as d; import 'src/utils.dart'; +/// Exception thrown for invalid use of [DartdocTestBase]'s api/ +class DartdocTestBaseFailure implements Exception { + final String message; + + DartdocTestBaseFailure(this.message); + + @override + String toString() => message; +} + abstract class DartdocTestBase { late final PackageMetaProvider packageMetaProvider; late final MemoryResourceProvider resourceProvider; @@ -65,6 +75,65 @@ analyzer: d.file('lib.dart', ''' library $libraryName; +$libraryContent +'''), + ]).createInMemory(resourceProvider, packagePath); + + var packageGraph = await bootBasicPackage( + packagePath, + packageMetaProvider, + packageConfigProvider, + ); + return packageGraph.libraries.named(libraryName); + } + + /// Similar to [bootPackageWithLibrary], but allows for more complex + /// cases to test the edges of canonicalization. + /// + /// - Puts [reexportedContent] in a library named [libraryName]_src in + /// `lib/src` (if [reexportPrivate] is true), or 'lib/subdir'. + /// - Creates a reexporting library named [libraryName]_lib in `lib` that + /// reexports [libraryName]_src. + /// - Creates [libraryName] containing [libraryContent] that can optionally + /// import 'lib.dart' to import the reexporting library. + /// + /// Optionally, specify [show] or [hide] to change whether the reexport + /// gives access to the full namespace. + Future bootPackageWithReexportedLibrary( + String reexportedContent, String libraryContent, + {bool reexportPrivate = false, + List show = const [], + List hide = const []}) async { + + final subdir = reexportPrivate ? 'src' : 'subdir'; + await d.dir('lib', [ + d.dir(subdir, [ + d.file('lib.dart', ''' +library ${libraryName}_src; + +$reexportedContent +'''), + ]) + ]).createInMemory(resourceProvider, packagePath); + + if (show.isNotEmpty && hide.isNotEmpty) { + throw DartdocTestBaseFailure('Can not specify show and hide'); + } + + final showHideString = '${show.isNotEmpty ? 'show ${show.join(', ')}' : ''}' + '${hide.isNotEmpty ? 'hide ${hide.join(', ')}' : ''}'; + await d.dir('lib', [ + d.file('lib.dart', ''' +library ${libraryName}_lib; + +export '$subdir/lib.dart' $showHideString; +'''), + ]).createInMemory(resourceProvider, packagePath); + + await d.dir('lib', [ + d.file('importing_lib.dart', ''' +library $libraryName; + $libraryContent '''), ]).createInMemory(resourceProvider, packagePath); diff --git a/test/extension_methods_test.dart b/test/extension_methods_test.dart new file mode 100644 index 0000000000..7aefdc33a9 --- /dev/null +++ b/test/extension_methods_test.dart @@ -0,0 +1,86 @@ +// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:dartdoc/src/markdown_processor.dart'; +import 'package:dartdoc/src/model/extension.dart'; +import 'package:dartdoc/src/model/method.dart'; +import 'package:test/test.dart'; +import 'package:test_reflective_loader/test_reflective_loader.dart'; + +import 'dartdoc_test_base.dart'; +import 'src/utils.dart'; + +void main() { + defineReflectiveSuite(() { + if (classModifiersAllowed) { + defineReflectiveTests(ExtensionMethodsTest); + } + }); +} + +@reflectiveTest +class ExtensionMethodsTest extends DartdocTestBase { + @override + String get libraryName => 'extension_methods'; + + static const String reexportedContent = ''' +class AClassNotNeedingExtending {} + +class AClassNeedingExtending {} + +extension AnExtension on AClassNeedingExtending { + void aMethod() {} +} +'''; + + static const String libraryContent = ''' +/// This is an amazing public function. +var aPublicFunction() {} +'''; + + void test_reexportWithShow() async { + var library = await bootPackageWithReexportedLibrary(reexportedContent, libraryContent, reexportPrivate: true, show: ['AClassNeedingExtending', 'AnExtension']); + var aPublicFunction = library.functions.named('aPublicFunction'); + var anExtension = library.package.publicLibraries.named('${libraryName}_lib').extensions.named('AnExtension'); + var anExtensionMethod = anExtension.instanceMethods.named('aMethod'); + var anExtensionReference = getMatchingLinkElement('AnExtension', aPublicFunction).commentReferable as Extension; + expect(anExtensionReference.href, endsWith('%extension_methods_lib/AnExtension.html')); + expect(identical(anExtensionReference.canonicalModelElement, anExtension), isTrue); + expect(anExtension.isCanonical, isTrue); + var anExtensionReferenceMethod = getMatchingLinkElement('AnExtension.aMethod', aPublicFunction).commentReferable as Method; + expect(identical(anExtensionReferenceMethod.canonicalModelElement, anExtensionMethod), isTrue); + expect(anExtensionMethod.isCanonical, isTrue); + expect(anExtensionReferenceMethod.href, endsWith('%extension_methods_lib/AnExtension/aMethod.html')); + } + + /*void test_reexportWithHide() async { + var library = await bootPackageWithReexportedLibrary(reexportedContent, libraryContent, reexportPrivate: true, hide: ['AClassNotNeedingExtending']); + var aPublicFunction = library.functions.named('aPublicFunction'); + var anExtension = library.package.publicLibraries.named('${libraryName}_lib').extensions.named('AnExtension'); + var anExtensionMethod = anExtension.instanceMethods.named('aMethod'); + var anExtensionReference = getMatchingLinkElement('AnExtension', aPublicFunction).commentReferable as Extension; + expect(anExtensionReference.href, endsWith('%extension_methods_lib/AnExtension.html')); + expect(identical(anExtensionReference.canonicalModelElement, anExtension), isTrue); + expect(anExtension.isCanonical, isTrue); + var anExtensionReferenceMethod = getMatchingLinkElement('AnExtension.aMethod', aPublicFunction).commentReferable as Method; + expect(anExtensionReferenceMethod.href, endsWith('%extension_methods_lib/AnExtension/aMethod.html')); + expect(identical(anExtensionReferenceMethod.canonicalModelElement, anExtensionMethod), isTrue); + expect(anExtensionMethod.isCanonical, isTrue); + } + + void test_reexportFull() async { + var library = await bootPackageWithReexportedLibrary(reexportedContent, libraryContent, reexportPrivate: true); + var aPublicFunction = library.functions.named('aPublicFunction'); + var anExtension = library.package.publicLibraries.named('${libraryName}_lib').extensions.named('AnExtension'); + var anExtensionMethod = anExtension.instanceMethods.named('aMethod'); + var anExtensionReference = getMatchingLinkElement('AnExtension', aPublicFunction).commentReferable as Extension; + expect(anExtensionReference.href, endsWith('%extension_methods_lib/AnExtension.html')); + expect(identical(anExtensionReference.canonicalModelElement, anExtension), isTrue); + expect(anExtension.isCanonical, isTrue); + var anExtensionReferenceMethod = getMatchingLinkElement('AnExtension.aMethod', aPublicFunction).commentReferable as Method; + expect(anExtensionReferenceMethod.href, endsWith('%extension_methods_lib/AnExtension/aMethod.html')); + expect(identical(anExtensionReferenceMethod.canonicalModelElement, anExtensionMethod), isTrue); + expect(anExtensionMethod.isCanonical, isTrue); + }*/ +} \ No newline at end of file From 865610d35f4e81a4e12540a0e5da2390ba6722fe Mon Sep 17 00:00:00 2001 From: Janice Collins Date: Fri, 21 Apr 2023 13:31:11 -0700 Subject: [PATCH 2/5] this works. but did it break anything else --- lib/src/model/container_member.dart | 7 ++----- lib/src/model/inheritable.dart | 4 ---- test/extension_methods_test.dart | 14 +++++++------- 3 files changed, 9 insertions(+), 16 deletions(-) diff --git a/lib/src/model/container_member.dart b/lib/src/model/container_member.dart index e91c1f7a8d..49d4b03b27 100644 --- a/lib/src/model/container_member.dart +++ b/lib/src/model/container_member.dart @@ -43,11 +43,8 @@ mixin ContainerMember on ModelElement implements EnclosedElement { as Container?; } // TODO(jcollins-g): move Extension specific code to [Extendable] - if (enclosingElement.isDocumented) { - return packageGraph.findCanonicalModelElementFor(enclosingElement.element) - as Container?; - } - return null; + return packageGraph.findCanonicalModelElementFor(enclosingElement.element) + as Container?; } @override diff --git a/lib/src/model/inheritable.dart b/lib/src/model/inheritable.dart index ac454cc355..be1998c97d 100644 --- a/lib/src/model/inheritable.dart +++ b/lib/src/model/inheritable.dart @@ -48,10 +48,6 @@ mixin Inheritable on ContainerMember { if (canonicalEnclosingContainer == null) { return null; } - // TODO(jcollins-g): factor out extension logic into [Extendable] - if (canonicalEnclosingContainer is Extension) { - return this; - } return canonicalEnclosingContainer.allCanonicalModelElements .firstWhereOrNull((m) => m.name == name && diff --git a/test/extension_methods_test.dart b/test/extension_methods_test.dart index 7aefdc33a9..0541199605 100644 --- a/test/extension_methods_test.dart +++ b/test/extension_methods_test.dart @@ -45,28 +45,28 @@ var aPublicFunction() {} var anExtension = library.package.publicLibraries.named('${libraryName}_lib').extensions.named('AnExtension'); var anExtensionMethod = anExtension.instanceMethods.named('aMethod'); var anExtensionReference = getMatchingLinkElement('AnExtension', aPublicFunction).commentReferable as Extension; - expect(anExtensionReference.href, endsWith('%extension_methods_lib/AnExtension.html')); expect(identical(anExtensionReference.canonicalModelElement, anExtension), isTrue); expect(anExtension.isCanonical, isTrue); + expect(anExtensionReference.href, endsWith('%extension_methods_lib/AnExtension.html')); var anExtensionReferenceMethod = getMatchingLinkElement('AnExtension.aMethod', aPublicFunction).commentReferable as Method; expect(identical(anExtensionReferenceMethod.canonicalModelElement, anExtensionMethod), isTrue); expect(anExtensionMethod.isCanonical, isTrue); expect(anExtensionReferenceMethod.href, endsWith('%extension_methods_lib/AnExtension/aMethod.html')); } - /*void test_reexportWithHide() async { + void test_reexportWithHide() async { var library = await bootPackageWithReexportedLibrary(reexportedContent, libraryContent, reexportPrivate: true, hide: ['AClassNotNeedingExtending']); var aPublicFunction = library.functions.named('aPublicFunction'); var anExtension = library.package.publicLibraries.named('${libraryName}_lib').extensions.named('AnExtension'); var anExtensionMethod = anExtension.instanceMethods.named('aMethod'); var anExtensionReference = getMatchingLinkElement('AnExtension', aPublicFunction).commentReferable as Extension; - expect(anExtensionReference.href, endsWith('%extension_methods_lib/AnExtension.html')); expect(identical(anExtensionReference.canonicalModelElement, anExtension), isTrue); expect(anExtension.isCanonical, isTrue); + expect(anExtensionReference.href, endsWith('%extension_methods_lib/AnExtension.html')); var anExtensionReferenceMethod = getMatchingLinkElement('AnExtension.aMethod', aPublicFunction).commentReferable as Method; - expect(anExtensionReferenceMethod.href, endsWith('%extension_methods_lib/AnExtension/aMethod.html')); expect(identical(anExtensionReferenceMethod.canonicalModelElement, anExtensionMethod), isTrue); expect(anExtensionMethod.isCanonical, isTrue); + expect(anExtensionReferenceMethod.href, endsWith('%extension_methods_lib/AnExtension/aMethod.html')); } void test_reexportFull() async { @@ -75,12 +75,12 @@ var aPublicFunction() {} var anExtension = library.package.publicLibraries.named('${libraryName}_lib').extensions.named('AnExtension'); var anExtensionMethod = anExtension.instanceMethods.named('aMethod'); var anExtensionReference = getMatchingLinkElement('AnExtension', aPublicFunction).commentReferable as Extension; - expect(anExtensionReference.href, endsWith('%extension_methods_lib/AnExtension.html')); expect(identical(anExtensionReference.canonicalModelElement, anExtension), isTrue); expect(anExtension.isCanonical, isTrue); + expect(anExtensionReference.href, endsWith('%extension_methods_lib/AnExtension.html')); var anExtensionReferenceMethod = getMatchingLinkElement('AnExtension.aMethod', aPublicFunction).commentReferable as Method; - expect(anExtensionReferenceMethod.href, endsWith('%extension_methods_lib/AnExtension/aMethod.html')); expect(identical(anExtensionReferenceMethod.canonicalModelElement, anExtensionMethod), isTrue); expect(anExtensionMethod.isCanonical, isTrue); - }*/ + expect(anExtensionReferenceMethod.href, endsWith('%extension_methods_lib/AnExtension/aMethod.html')); + } } \ No newline at end of file From 8d991db2a18169cb5b52348710cdb210f9c16ac7 Mon Sep 17 00:00:00 2001 From: Janice Collins Date: Fri, 21 Apr 2023 13:52:52 -0700 Subject: [PATCH 3/5] fix up test --- test/extension_methods_test.dart | 37 ++++++++++++++------------------ 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/test/extension_methods_test.dart b/test/extension_methods_test.dart index 0541199605..31f3e4e42b 100644 --- a/test/extension_methods_test.dart +++ b/test/extension_methods_test.dart @@ -5,6 +5,7 @@ import 'package:dartdoc/src/markdown_processor.dart'; import 'package:dartdoc/src/model/extension.dart'; import 'package:dartdoc/src/model/method.dart'; +import 'package:dartdoc/src/model/model_element.dart'; import 'package:test/test.dart'; import 'package:test_reflective_loader/test_reflective_loader.dart'; @@ -39,19 +40,21 @@ extension AnExtension on AClassNeedingExtending { var aPublicFunction() {} '''; + void expectReferenceValid(ModelElement reference, ModelElement expected, String href) { + expect(identical(reference.canonicalModelElement, expected), isTrue); + expect(expected.isCanonical, isTrue); + expect(expected.href, endsWith(href)); + } + void test_reexportWithShow() async { var library = await bootPackageWithReexportedLibrary(reexportedContent, libraryContent, reexportPrivate: true, show: ['AClassNeedingExtending', 'AnExtension']); var aPublicFunction = library.functions.named('aPublicFunction'); var anExtension = library.package.publicLibraries.named('${libraryName}_lib').extensions.named('AnExtension'); var anExtensionMethod = anExtension.instanceMethods.named('aMethod'); var anExtensionReference = getMatchingLinkElement('AnExtension', aPublicFunction).commentReferable as Extension; - expect(identical(anExtensionReference.canonicalModelElement, anExtension), isTrue); - expect(anExtension.isCanonical, isTrue); - expect(anExtensionReference.href, endsWith('%extension_methods_lib/AnExtension.html')); - var anExtensionReferenceMethod = getMatchingLinkElement('AnExtension.aMethod', aPublicFunction).commentReferable as Method; - expect(identical(anExtensionReferenceMethod.canonicalModelElement, anExtensionMethod), isTrue); - expect(anExtensionMethod.isCanonical, isTrue); - expect(anExtensionReferenceMethod.href, endsWith('%extension_methods_lib/AnExtension/aMethod.html')); + expectReferenceValid(anExtensionReference, anExtension, '%extension_methods_lib/AnExtension.html'); + var anExtensionMethodReference = getMatchingLinkElement('AnExtension.aMethod', aPublicFunction).commentReferable as Method; + expectReferenceValid(anExtensionMethodReference, anExtensionMethod, '%extension_methods_lib/AnExtension/aMethod.html'); } void test_reexportWithHide() async { @@ -60,13 +63,9 @@ var aPublicFunction() {} var anExtension = library.package.publicLibraries.named('${libraryName}_lib').extensions.named('AnExtension'); var anExtensionMethod = anExtension.instanceMethods.named('aMethod'); var anExtensionReference = getMatchingLinkElement('AnExtension', aPublicFunction).commentReferable as Extension; - expect(identical(anExtensionReference.canonicalModelElement, anExtension), isTrue); - expect(anExtension.isCanonical, isTrue); - expect(anExtensionReference.href, endsWith('%extension_methods_lib/AnExtension.html')); - var anExtensionReferenceMethod = getMatchingLinkElement('AnExtension.aMethod', aPublicFunction).commentReferable as Method; - expect(identical(anExtensionReferenceMethod.canonicalModelElement, anExtensionMethod), isTrue); - expect(anExtensionMethod.isCanonical, isTrue); - expect(anExtensionReferenceMethod.href, endsWith('%extension_methods_lib/AnExtension/aMethod.html')); + expectReferenceValid(anExtensionReference, anExtension, '%extension_methods_lib/AnExtension.html'); + var anExtensionMethodReference = getMatchingLinkElement('AnExtension.aMethod', aPublicFunction).commentReferable as Method; + expectReferenceValid(anExtensionMethodReference, anExtensionMethod, '%extension_methods_lib/AnExtension/aMethod.html'); } void test_reexportFull() async { @@ -75,12 +74,8 @@ var aPublicFunction() {} var anExtension = library.package.publicLibraries.named('${libraryName}_lib').extensions.named('AnExtension'); var anExtensionMethod = anExtension.instanceMethods.named('aMethod'); var anExtensionReference = getMatchingLinkElement('AnExtension', aPublicFunction).commentReferable as Extension; - expect(identical(anExtensionReference.canonicalModelElement, anExtension), isTrue); - expect(anExtension.isCanonical, isTrue); - expect(anExtensionReference.href, endsWith('%extension_methods_lib/AnExtension.html')); - var anExtensionReferenceMethod = getMatchingLinkElement('AnExtension.aMethod', aPublicFunction).commentReferable as Method; - expect(identical(anExtensionReferenceMethod.canonicalModelElement, anExtensionMethod), isTrue); - expect(anExtensionMethod.isCanonical, isTrue); - expect(anExtensionReferenceMethod.href, endsWith('%extension_methods_lib/AnExtension/aMethod.html')); + expectReferenceValid(anExtensionReference, anExtension, '%extension_methods_lib/AnExtension.html'); + var anExtensionMethodReference = getMatchingLinkElement('AnExtension.aMethod', aPublicFunction).commentReferable as Method; + expectReferenceValid(anExtensionMethodReference, anExtensionMethod, '%extension_methods_lib/AnExtension/aMethod.html'); } } \ No newline at end of file From 17ca6e8292fc0434cc5c5db9d1317e2abc2d86cb Mon Sep 17 00:00:00 2001 From: Janice Collins Date: Fri, 21 Apr 2023 14:04:05 -0700 Subject: [PATCH 4/5] cleanup --- test/dartdoc_test_base.dart | 1 - test/extension_methods_test.dart | 76 +++++++++++++++++++++++--------- 2 files changed, 55 insertions(+), 22 deletions(-) diff --git a/test/dartdoc_test_base.dart b/test/dartdoc_test_base.dart index e2b2241718..4586bc92d7 100644 --- a/test/dartdoc_test_base.dart +++ b/test/dartdoc_test_base.dart @@ -104,7 +104,6 @@ $libraryContent {bool reexportPrivate = false, List show = const [], List hide = const []}) async { - final subdir = reexportPrivate ? 'src' : 'subdir'; await d.dir('lib', [ d.dir(subdir, [ diff --git a/test/extension_methods_test.dart b/test/extension_methods_test.dart index 31f3e4e42b..dc290d1a35 100644 --- a/test/extension_methods_test.dart +++ b/test/extension_methods_test.dart @@ -40,42 +40,76 @@ extension AnExtension on AClassNeedingExtending { var aPublicFunction() {} '''; - void expectReferenceValid(ModelElement reference, ModelElement expected, String href) { + void expectReferenceValid( + ModelElement reference, ModelElement expected, String href) { expect(identical(reference.canonicalModelElement, expected), isTrue); expect(expected.isCanonical, isTrue); - expect(expected.href, endsWith(href)); + expect(expected.href, endsWith(href)); } void test_reexportWithShow() async { - var library = await bootPackageWithReexportedLibrary(reexportedContent, libraryContent, reexportPrivate: true, show: ['AClassNeedingExtending', 'AnExtension']); + var library = await bootPackageWithReexportedLibrary( + reexportedContent, libraryContent, + reexportPrivate: true, show: ['AClassNeedingExtending', 'AnExtension']); var aPublicFunction = library.functions.named('aPublicFunction'); - var anExtension = library.package.publicLibraries.named('${libraryName}_lib').extensions.named('AnExtension'); + var anExtension = library.package.publicLibraries + .named('${libraryName}_lib') + .extensions + .named('AnExtension'); var anExtensionMethod = anExtension.instanceMethods.named('aMethod'); - var anExtensionReference = getMatchingLinkElement('AnExtension', aPublicFunction).commentReferable as Extension; - expectReferenceValid(anExtensionReference, anExtension, '%extension_methods_lib/AnExtension.html'); - var anExtensionMethodReference = getMatchingLinkElement('AnExtension.aMethod', aPublicFunction).commentReferable as Method; - expectReferenceValid(anExtensionMethodReference, anExtensionMethod, '%extension_methods_lib/AnExtension/aMethod.html'); + var anExtensionReference = + getMatchingLinkElement('AnExtension', aPublicFunction).commentReferable + as Extension; + expectReferenceValid(anExtensionReference, anExtension, + '%extension_methods_lib/AnExtension.html'); + var anExtensionMethodReference = + getMatchingLinkElement('AnExtension.aMethod', aPublicFunction) + .commentReferable as Method; + expectReferenceValid(anExtensionMethodReference, anExtensionMethod, + '%extension_methods_lib/AnExtension/aMethod.html'); } void test_reexportWithHide() async { - var library = await bootPackageWithReexportedLibrary(reexportedContent, libraryContent, reexportPrivate: true, hide: ['AClassNotNeedingExtending']); + var library = await bootPackageWithReexportedLibrary( + reexportedContent, libraryContent, + reexportPrivate: true, hide: ['AClassNotNeedingExtending']); var aPublicFunction = library.functions.named('aPublicFunction'); - var anExtension = library.package.publicLibraries.named('${libraryName}_lib').extensions.named('AnExtension'); + var anExtension = library.package.publicLibraries + .named('${libraryName}_lib') + .extensions + .named('AnExtension'); var anExtensionMethod = anExtension.instanceMethods.named('aMethod'); - var anExtensionReference = getMatchingLinkElement('AnExtension', aPublicFunction).commentReferable as Extension; - expectReferenceValid(anExtensionReference, anExtension, '%extension_methods_lib/AnExtension.html'); - var anExtensionMethodReference = getMatchingLinkElement('AnExtension.aMethod', aPublicFunction).commentReferable as Method; - expectReferenceValid(anExtensionMethodReference, anExtensionMethod, '%extension_methods_lib/AnExtension/aMethod.html'); + var anExtensionReference = + getMatchingLinkElement('AnExtension', aPublicFunction).commentReferable + as Extension; + expectReferenceValid(anExtensionReference, anExtension, + '%extension_methods_lib/AnExtension.html'); + var anExtensionMethodReference = + getMatchingLinkElement('AnExtension.aMethod', aPublicFunction) + .commentReferable as Method; + expectReferenceValid(anExtensionMethodReference, anExtensionMethod, + '%extension_methods_lib/AnExtension/aMethod.html'); } void test_reexportFull() async { - var library = await bootPackageWithReexportedLibrary(reexportedContent, libraryContent, reexportPrivate: true); + var library = await bootPackageWithReexportedLibrary( + reexportedContent, libraryContent, + reexportPrivate: true); var aPublicFunction = library.functions.named('aPublicFunction'); - var anExtension = library.package.publicLibraries.named('${libraryName}_lib').extensions.named('AnExtension'); + var anExtension = library.package.publicLibraries + .named('${libraryName}_lib') + .extensions + .named('AnExtension'); var anExtensionMethod = anExtension.instanceMethods.named('aMethod'); - var anExtensionReference = getMatchingLinkElement('AnExtension', aPublicFunction).commentReferable as Extension; - expectReferenceValid(anExtensionReference, anExtension, '%extension_methods_lib/AnExtension.html'); - var anExtensionMethodReference = getMatchingLinkElement('AnExtension.aMethod', aPublicFunction).commentReferable as Method; - expectReferenceValid(anExtensionMethodReference, anExtensionMethod, '%extension_methods_lib/AnExtension/aMethod.html'); + var anExtensionReference = + getMatchingLinkElement('AnExtension', aPublicFunction).commentReferable + as Extension; + expectReferenceValid(anExtensionReference, anExtension, + '%extension_methods_lib/AnExtension.html'); + var anExtensionMethodReference = + getMatchingLinkElement('AnExtension.aMethod', aPublicFunction) + .commentReferable as Method; + expectReferenceValid(anExtensionMethodReference, anExtensionMethod, + '%extension_methods_lib/AnExtension/aMethod.html'); } -} \ No newline at end of file +} From daa845430098e4a4aa04ea2548ccd5c37f2e5f20 Mon Sep 17 00:00:00 2001 From: Janice Collins Date: Mon, 24 Apr 2023 09:21:02 -0700 Subject: [PATCH 5/5] period instead of slash --- test/dartdoc_test_base.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/dartdoc_test_base.dart b/test/dartdoc_test_base.dart index 4586bc92d7..d4a492fe06 100644 --- a/test/dartdoc_test_base.dart +++ b/test/dartdoc_test_base.dart @@ -11,7 +11,7 @@ import 'package:meta/meta.dart'; import 'src/test_descriptor_utils.dart' as d; import 'src/utils.dart'; -/// Exception thrown for invalid use of [DartdocTestBase]'s api/ +/// Exception thrown for invalid use of [DartdocTestBase]'s api. class DartdocTestBaseFailure implements Exception { final String message;