Add FindNode.methodInvocations, use in BaseRangeFactoryTest.

Change-Id: I3c4749bca79004f800a74d84a9c3ae5c5b63f7bc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/216961
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
Konstantin Shcheglov 2021-10-15 16:01:50 +00:00 committed by commit-bot@chromium.org
parent e898eef6a2
commit c7138fe8cd
3 changed files with 22 additions and 4 deletions

View file

@ -22,10 +22,7 @@ abstract class BaseRangeFactoryTest extends AbstractSingleUnitTest {
/// Assuming that the test code starts with a function whose block body starts
/// with a method invocation, return the list of arguments in that invocation.
NodeList<Expression> get _argumentList {
var f = testUnit.declarations[0] as FunctionDeclaration;
var body = f.functionExpression.body as BlockFunctionBody;
var statement = body.block.statements[0] as ExpressionStatement;
var invocation = statement.expression as MethodInvocation;
var invocation = findNode.methodInvocations.single;
return invocation.argumentList.arguments;
}

View file

@ -4,6 +4,7 @@
import 'package:analyzer/dart/ast/ast.dart';
import 'package:analyzer/src/dart/ast/utilities.dart';
import 'package:analyzer/src/test_utilities/function_ast_visitor.dart';
class FindNode {
final String content;
@ -16,6 +17,16 @@ class FindNode {
as LibraryDirective;
}
List<MethodInvocation> get methodInvocations {
var result = <MethodInvocation>[];
unit.accept(
FunctionAstVisitor(
methodInvocation: result.add,
),
);
return result;
}
Annotation annotation(String search) {
return _node(search, (n) => n is Annotation);
}

View file

@ -12,6 +12,7 @@ class FunctionAstVisitor extends RecursiveAstVisitor<void> {
functionDeclarationStatement;
final void Function(FunctionExpression, bool)? functionExpression;
final void Function(Label)? label;
final void Function(MethodInvocation)? methodInvocation;
final void Function(SimpleIdentifier)? simpleIdentifier;
final void Function(VariableDeclaration)? variableDeclaration;
@ -20,6 +21,7 @@ class FunctionAstVisitor extends RecursiveAstVisitor<void> {
this.functionDeclarationStatement,
this.functionExpression,
this.label,
this.methodInvocation,
this.simpleIdentifier,
this.variableDeclaration,
});
@ -58,6 +60,14 @@ class FunctionAstVisitor extends RecursiveAstVisitor<void> {
super.visitLabel(node);
}
@override
void visitMethodInvocation(MethodInvocation node) {
if (methodInvocation != null) {
methodInvocation!(node);
}
super.visitMethodInvocation(node);
}
@override
void visitSimpleIdentifier(SimpleIdentifier node) {
if (simpleIdentifier != null) {