analyzer_testing: Move Spelunker into this package

The Spelunker class is only used by analyzer_testing's
PubPackageResolutionTest class, and by a utility script. So I believe
the best place for this class is in analyzer_testing, for two reasons:

* Would we also move the utility script
  (`pkg/linter/tool/spelunk.dart`)? This is a script that lets you see
  a visual tree of the syntax nodes of a Dart script. It has been
  helpful to people writing lint rules, as it helps you understand how
  you need to walk up or down the tree to check conditions. Therefore,
  it will be at least as helpful to people writing analysis rules in
  analyzer plugins (the primary consumers of PubPackageResolutionTest).
  It doesn't need to live in `bin` (though that's one possibility). It
  can live in `analyzer_testing/tool`.
* Then if the utility script lives in analyzer_testing, and
  PubPackageResolutionTest lives in analyzer_testing, and these are the
  sole consumers of Spelunker, it makes sense to move it into
  analyzer_testing. It does not need to be public API; just live in the
  source code.

Change-Id: Id607091b35ab83c96b8cd73f0ece63923c934fb4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/444240
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
This commit is contained in:
Sam Rawlins
2025-08-07 12:29:10 -07:00
committed by Commit Queue
parent c3ddf2ebdf
commit 8546b2e4e6
4 changed files with 4 additions and 3 deletions
@@ -13,12 +13,12 @@ import 'package:analyzer/src/dart/analysis/byte_store.dart'; // ignore: implemen
import 'package:analyzer/src/dart/analysis/driver_based_analysis_context.dart'; // ignore: implementation_imports
import 'package:analyzer/src/dart/analysis/experiments.dart'; // ignore: implementation_imports
import 'package:analyzer/src/error/codes.dart'; // ignore: implementation_imports
import 'package:analyzer/src/lint/util.dart'; // ignore: implementation_imports
import 'package:analyzer/src/test_utilities/mock_sdk.dart'; // ignore: implementation_imports
import 'package:analyzer/utilities/package_config_file_builder.dart';
import 'package:analyzer_testing/experiments/experiments.dart';
import 'package:analyzer_testing/mock_packages/mock_packages.dart';
import 'package:analyzer_testing/resource_provider_mixin.dart';
import 'package:analyzer_testing/src/spelunker.dart';
import 'package:analyzer_testing/utilities/utilities.dart';
import 'package:meta/meta.dart';
import 'package:test/test.dart';
@@ -27,7 +27,7 @@ final class Spelunker {
}
}
class _SourceVisitor extends GeneralizingAstVisitor {
class _SourceVisitor extends GeneralizingAstVisitor<void> {
int indent = 0;
final StringSink sink;
+1
View File
@@ -22,4 +22,5 @@ dependencies:
# See also https://dart.dev/tools/pub/dependencies.
dev_dependencies:
analyzer_utilities: any
args: any
lints: any
@@ -4,7 +4,7 @@
import 'dart:io';
import 'package:analyzer/src/lint/util.dart' show Spelunker;
import 'package:analyzer_testing/src/spelunker.dart';
import 'package:args/args.dart';
/// AST Spelunker