diff --git a/lib/src/model/comment_referable.dart b/lib/src/model/comment_referable.dart index 1b86636b3d..0a0015e15d 100644 --- a/lib/src/model/comment_referable.dart +++ b/lib/src/model/comment_referable.dart @@ -7,12 +7,14 @@ library; import 'dart:core'; +import 'package:analyzer/dart/analysis/features.dart'; import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/scope.dart'; import 'package:collection/collection.dart'; import 'package:dartdoc/src/model/library.dart'; import 'package:dartdoc/src/model/model_element.dart'; import 'package:dartdoc/src/model/nameable.dart'; +import 'package:dartdoc/src/model/prefix.dart'; import 'package:meta/meta.dart'; class _ReferenceChildrenLookup { @@ -55,6 +57,12 @@ mixin CommentReferable implements Nameable { // First attempt: Ask analyzer's `Scope.lookup` API. var result = _lookupViaScope(referenceLookup, filter: filter); if (result != null) { + if (result is Prefix && + result.name == '_' && + library!.element.featureSet.isEnabled(Feature.wildcard_variables)) { + // A wildcard import prefix is non-binding. + continue; + } return result; } diff --git a/lib/src/model/library.dart b/lib/src/model/library.dart index ac8a50d31b..0cb9045858 100644 --- a/lib/src/model/library.dart +++ b/lib/src/model/library.dart @@ -2,6 +2,7 @@ // 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:analyzer/dart/analysis/features.dart'; import 'package:analyzer/dart/element/element.dart'; import 'package:analyzer/dart/element/scope.dart'; import 'package:analyzer/source/line_info.dart'; @@ -442,6 +443,11 @@ class Library extends ModelElement // ambiguous. dart-lang/dartdoc#2683. for (var MapEntry(key: prefix, value: libraries) in _prefixToLibrary.entries) { + if (prefix == '_' && + element.featureSet.isEnabled(Feature.wildcard_variables)) { + // A wildcard import prefix is non-binding. + continue; + } referenceChildrenBuilder.putIfAbsent(prefix, () => libraries.first); } return referenceChildrenBuilder; diff --git a/test/dartdoc_test_base.dart b/test/dartdoc_test_base.dart index d6d974ebb6..15b2af7786 100644 --- a/test/dartdoc_test_base.dart +++ b/test/dartdoc_test_base.dart @@ -41,7 +41,7 @@ abstract class DartdocTestBase { String get dartCoreUrlPrefix => 'https://api.dart.dev/stable/3.2.0/dart-core'; - String get sdkConstraint => '>=3.3.0 <4.0.0'; + String get sdkConstraint => '>=3.6.0 <4.0.0'; List get experiments => ['wildcard-variables']; diff --git a/test/prefixes_test.dart b/test/prefixes_test.dart index 6ce9b05252..e6f4de8e7c 100644 --- a/test/prefixes_test.dart +++ b/test/prefixes_test.dart @@ -36,7 +36,6 @@ int x = 0; ); } - @FailingTest(issue: 'https://github.com/dart-lang/dartdoc/issues/3769') void test_referenced_wildcard() async { var library = await bootPackageWithLibrary( '''