diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_inline_value.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_inline_value.dart index 58816cd9b6c..2492c3c1e09 100644 --- a/pkg/analysis_server/lib/src/lsp/handlers/handler_inline_value.dart +++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_inline_value.dart @@ -335,6 +335,12 @@ class _InlineValueVisitor extends GeneralizingAstVisitor { super.visitFunctionExpression(node); } + @override + void visitGenericFunctionType(GenericFunctionType node) { + // Don't descent into function types or we may generate values + // for their parameters. + } + @override void visitPrefixedIdentifier(PrefixedIdentifier node) { if (experimentalInlineValuesProperties) { diff --git a/pkg/analysis_server/test/lsp/inline_value_test.dart b/pkg/analysis_server/test/lsp/inline_value_test.dart index 5a8004f4acd..b6c275e830b 100644 --- a/pkg/analysis_server/test/lsp/inline_value_test.dart +++ b/pkg/analysis_server/test/lsp/inline_value_test.dart @@ -120,6 +120,20 @@ void f(List list1, List /*[0*/list2/*0]*/, Iterable iterable1, Iterable ite await verify_values(code, ofType: InlineValueVariableLookup); } + Future test_parameter_nestedInFunctionType() async { + // A parameter nested inside a function type should not produce a value. + code = TestCode.parse(r''' +void f( + int /*[0*/value/*0]*/, { + required void Function(int value) /*[1*/func/*1]*/, +}) { + ^ +} +'''); + + await verify_values(code, ofType: InlineValueVariableLookup); + } + Future test_parameter_read() async { code = TestCode.parse(r''' void f(int aaa, int bbb) {