Skip to content

Commit e0eeffa

Browse files
danrubelcommit-bot@chromium.org
authored andcommitted
update NodeBuilder parameter tracking when visiting executable declarations
This updates NodeBuilder so that when it visits a method declaration, it does not count any parameters defined in body statements as part of the parameters defined in the method signature. Change-Id: I4da3989eb2bc65c422d94fa264885910850b0ed2 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107921 Reviewed-by: Paul Berry <paulberry@google.com> Commit-Queue: Dan Rubel <danrubel@google.com>
1 parent 182a59c commit e0eeffa

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

pkg/nnbd_migration/lib/src/node_builder.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,12 +372,12 @@ $stackTrace''');
372372
DecoratedType decoratedFunctionType;
373373
try {
374374
parameters?.accept(this);
375-
body?.accept(this);
376375
redirectedConstructor?.accept(this);
377376
decoratedFunctionType = DecoratedType(functionType, _graph.never,
378377
returnType: decoratedReturnType,
379378
positionalParameters: _positionalParameters,
380379
namedParameters: _namedParameters);
380+
body?.accept(this);
381381
} finally {
382382
_positionalParameters = previousPositionalParameters;
383383
_namedParameters = previousNamedParameters;

pkg/nnbd_migration/test/node_builder_test.dart

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -955,6 +955,15 @@ class C extends B {
955955
expect(decoratedType.node, same(always));
956956
}
957957

958+
test_parameters() async {
959+
await analyze('''
960+
void foo({List<int> values}) {
961+
values.where((i) => true);
962+
}
963+
''');
964+
// No assertions; just checking that it doesn't crash.
965+
}
966+
958967
test_topLevelFunction_parameterType_implicit_dynamic() async {
959968
await analyze('''
960969
void f(x) {}

0 commit comments

Comments
 (0)