dca8eb4ae6
Changes the logic for deciding whether to output details about a top level element. Previously, details would be output if the library containing the element's declaration was in `lib` but not `lib/src`. This led to a bug: if a top level element was declared in `lib/src` but exported by an `export` directive in `lib`, no details would be output, and the API summary would just show `(non-public)` after the exported name. This bug was mostly benign because we were working around it with an analyzer-specific hack: when analyzing the `analyzer` package, top level elements with an annotation of type `AnalyzerPublicApi` would have their details output regardless of where they were declared. But it wasn't completely benign: the tool was failing to output details of `DartDocumentLinkVisitor` and `DocumentLink` (from `package:analyzer_plugin`), as well as `PackageBuilder` (from `package:analyzer_testing`). The new logic is: details are output if the element appears in the export namespace of any library in `lib` but not `lib/src`. I've re-run the API summary tool so the `api.txt` files in `package:analyzer_plugin` and `package:analyzer_testing` now include the details they were missing. The analyzer-specific hack is left in place, though, because there are some analyzer classes that aren't exported, but still considered part of the analyzer public API. In a follow-up CL, I will make the API summary tool extensible so that this analyzer-specific logic can be injected by the analyzer when generating its `api.txt` file, and it won't pollute the incipient `api_summary` tool. Change-Id: I6a6a69641d656caa4f8e6361557c13fa7485e422 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/482440 Reviewed-by: Brian Wilkerson <brianwilkerson@google.com> Commit-Queue: Paul Berry <paulberry@google.com> Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
A set of utilities used by the tools in several analyzer-related packages.
Not meant to be published.