Version 2.18.0-15.0.dev Merge commit '03fd724529edcc2cf20c145e62bbb3430a8aff1c' into 'dev'
diff --git a/pkg/_fe_analyzer_shared/lib/src/deferred_closure_heuristic.dart b/pkg/_fe_analyzer_shared/lib/src/deferred_function_literal_heuristic.dart similarity index 77% rename from pkg/_fe_analyzer_shared/lib/src/deferred_closure_heuristic.dart rename to pkg/_fe_analyzer_shared/lib/src/deferred_function_literal_heuristic.dart index 9bff8c0..7102e1b 100644 --- a/pkg/_fe_analyzer_shared/lib/src/deferred_closure_heuristic.dart +++ b/pkg/_fe_analyzer_shared/lib/src/deferred_function_literal_heuristic.dart
@@ -10,26 +10,27 @@ /// [planReconciliationStages] is used as part of support for /// https://github.com/dart-lang/language/issues/731 (improved inference for /// fold etc.) to choose the proper order in which to recursively analyze -/// closures passed as invocation arguments. -abstract class ClosureDependencies<TypeVariable, ParamInfo, +/// function literals passed as invocation arguments. +abstract class FunctionLiteralDependencies<TypeVariable, ParamInfo, DeferredParamInfo extends ParamInfo> { final List<_Node<ParamInfo>> _paramNodes = []; - /// Construct a [ClosureDependencies] object that's prepared to determine the - /// order to resolve [deferredParams] for a generic invocation involving the - /// given [typeVariables]. + /// Construct a [FunctionLiteralDependencies] object that's prepared to + /// determine the order to resolve [deferredParams] for a generic invocation + /// involving the given [typeVariables]. /// /// [unDeferredParams] should contain information about any parameters /// corresponding to arguments that have already been type inferred. - ClosureDependencies( + FunctionLiteralDependencies( Iterable<DeferredParamInfo> deferredParams, Iterable<TypeVariable> typeVariables, Iterable<ParamInfo> unDeferredParams) { Map<TypeVariable, Set<_Node<ParamInfo>>> paramsDependingOnTypeVar = {}; Map<TypeVariable, Set<_Node<ParamInfo>>> paramsConstrainingTypeVar = {}; + int deferredParamIndex = 0; for (DeferredParamInfo param in deferredParams) { _Node<ParamInfo> paramNode = - new _Node<ParamInfo>(param, isDeferred: true); + new _Node<ParamInfo>(param, deferredParamIndex: deferredParamIndex++); _paramNodes.add(paramNode); for (TypeVariable v in typeVarsFreeInParamParams(param)) { (paramsDependingOnTypeVar[v] ??= {}).add(paramNode); @@ -40,7 +41,7 @@ } for (ParamInfo param in unDeferredParams) { _Node<ParamInfo> paramNode = - new _Node<ParamInfo>(param, isDeferred: false); + new _Node<ParamInfo>(param, deferredParamIndex: null); _paramNodes.add(paramNode); // Note: for un-deferred parameters, we only care about // typeVarsFreeInParamReturns, because these parameters have already been @@ -64,10 +65,12 @@ /// Each entry in the returned list represents the set of parameters whose /// corresponding arguments should be visited during a single stage of /// resolution; after each stage, the assignment of actual types to type - /// variables should be refined. + /// variables should be refined. The list of parameters in each stage is + /// sorted to match the order of the `deferredParams` node passed to the + /// constructor. /// /// So, for example, if the parameters in question are A, B, and C, and the - /// returned list is `[{A, B}, {C}]`, then first parameters A and B should be + /// returned list is `[[A, B], [C]]`, then first parameters A and B should be /// resolved, then the assignment of actual types to type variables should be /// refined, and then C should be resolved, and then the final assignment of /// actual types to type variables should be computed. @@ -75,13 +78,24 @@ /// Note that the first stage may be empty; when this happens, it means that /// the assignment of actual types to type variables should be refined before /// doing any visiting. - List<Set<DeferredParamInfo>> planReconciliationStages() { + List<List<DeferredParamInfo>> planReconciliationStages() { _DependencyWalker<ParamInfo, DeferredParamInfo> walker = new _DependencyWalker<ParamInfo, DeferredParamInfo>(); for (_Node<ParamInfo> paramNode in _paramNodes) { walker.walk(paramNode); } - return walker.reconciliationStages; + List<_Node<ParamInfo>> _sortStage(List<_Node<ParamInfo>> stage) { + stage.sort((a, b) => a.deferredParamIndex! - b.deferredParamIndex!); + return stage; + } + + return [ + for (List<_Node<ParamInfo>> stage in walker.reconciliationStages) + [ + for (_Node<ParamInfo> node in _sortStage(stage)) + node.param as DeferredParamInfo + ] + ]; } /// If the type of the parameter corresponding to [param] is a function type, @@ -107,7 +121,7 @@ class _DependencyWalker<ParamInfo, DeferredParamInfo extends ParamInfo> extends DependencyWalker<_Node<ParamInfo>> { /// The set of reconciliation stages accumulated so far. - final List<Set<DeferredParamInfo>> reconciliationStages = []; + final List<List<_Node<ParamInfo>>> reconciliationStages = []; @override void evaluate(_Node<ParamInfo> v) => evaluateScc([v]); @@ -124,17 +138,17 @@ } } if (reconciliationStages.length <= stageNum) { - reconciliationStages.add({}); + reconciliationStages.add([]); // `stageNum` can't grow by more than 1 each time `evaluateScc` is called, // so adding one stage is sufficient to make sure the list is now long // enough. assert(stageNum < reconciliationStages.length); } - Set<DeferredParamInfo> stage = reconciliationStages[stageNum]; + List<_Node<ParamInfo>> stage = reconciliationStages[stageNum]; for (_Node<ParamInfo> node in nodes) { node.stageNum = stageNum; - if (node.isDeferred) { - stage.add(node.param as DeferredParamInfo); + if (node.deferredParamIndex != null) { + stage.add(node); } } } @@ -153,10 +167,11 @@ /// The nodes for the parameters depended on by this parameter. final List<_Node<ParamInfo>> dependencies = []; - /// Indicates whether this node represents a deferred parameter. - final bool isDeferred; + /// If this node represents a deferred parameter, the index of it in the list + /// of deferred parameters used to construct [FunctionLiteralDependencies]. + final int? deferredParamIndex; - _Node(this.param, {required this.isDeferred}); + _Node(this.param, {required this.deferredParamIndex}); @override bool get isEvaluated => stageNum != null;
diff --git a/pkg/_fe_analyzer_shared/test/deferred_closure_heuristic_test.dart b/pkg/_fe_analyzer_shared/test/deferred_closure_heuristic_test.dart deleted file mode 100644 index 41ec79e..0000000 --- a/pkg/_fe_analyzer_shared/test/deferred_closure_heuristic_test.dart +++ /dev/null
@@ -1,154 +0,0 @@ -// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file -// for details. All rights reserved. Use of this source code is governed by a -// BSD-style license that can be found in the LICENSE file. - -import 'package:_fe_analyzer_shared/src/deferred_closure_heuristic.dart'; -import 'package:test/test.dart'; - -main() { - test('single', () { - // If there is just a single closure and no type variables, it is selected. - var f = Param('f'); - expect( - _TestClosureDeps(typeVars: [], closures: [f]) - .planReconciliationStages(), - [ - {f} - ]); - }); - - test('simple dependency', () { - // If f depends on g, then g is selected first, and then f. - var f = Param('f', argTypes: ['T']); - var g = Param('g', retTypes: ['T']); - expect( - _TestClosureDeps(typeVars: ['T'], closures: [f, g]) - .planReconciliationStages(), - [ - {g}, - {f} - ]); - }); - - test('long chain', () { - // If f depends on g and g depends on h, then we do three separate stages: - // h, then g, then f. - var f = Param('f', argTypes: ['T']); - var g = Param('g', argTypes: ['U'], retTypes: ['T']); - var h = Param('h', retTypes: ['U']); - expect( - _TestClosureDeps(typeVars: ['T', 'U'], closures: [f, g, h]) - .planReconciliationStages(), - [ - {h}, - {g}, - {f} - ]); - }); - - test('unrelated closure', () { - // Closures that are independent of all the others are inferred during the - // first stage. - var f = Param('f', argTypes: ['T']); - var g = Param('g', retTypes: ['T']); - var h = Param('h'); - expect( - _TestClosureDeps(typeVars: ['T', 'U'], closures: [f, g, h]) - .planReconciliationStages(), - [ - {g, h}, - {f} - ]); - }); - - test('independent chains', () { - // If f depends on g, and h depends on i, then g and i are selected first, - // and then f and h. - var f = Param('f', argTypes: ['T']); - var g = Param('g', retTypes: ['T']); - var h = Param('h', argTypes: ['U']); - var i = Param('i', retTypes: ['U']); - expect( - _TestClosureDeps(typeVars: ['T', 'U'], closures: [f, g, h, i]) - .planReconciliationStages(), - [ - {g, i}, - {f, h} - ]); - }); - - test('diamond', () { - // Test a diamond dependency shape: f depends on g and h; g and h both - // depend on i. - var f = Param('f', argTypes: ['T', 'U']); - var g = Param('g', argTypes: ['V'], retTypes: ['T']); - var h = Param('h', argTypes: ['V'], retTypes: ['U']); - var i = Param('i', retTypes: ['V']); - expect( - _TestClosureDeps(typeVars: ['T', 'U', 'V'], closures: [f, g, h, i]) - .planReconciliationStages(), - [ - {i}, - {g, h}, - {f} - ]); - }); - - test('cycle', () { - // A dependency cycle is inferred all at once. - var f = Param('f', argTypes: ['T']); - var g = Param('g', argTypes: ['U']); - var h = Param('h', argTypes: ['U'], retTypes: ['T']); - var i = Param('i', argTypes: ['T'], retTypes: ['U']); - expect( - _TestClosureDeps(typeVars: ['T', 'U'], closures: [f, g, h, i]) - .planReconciliationStages(), - [ - {h, i}, - {f, g} - ]); - }); - - test('dependency on undeferred param', () { - var f = Param('f', argTypes: ['T']); - var x = Param('x', retTypes: ['T']); - expect( - _TestClosureDeps(typeVars: ['T'], closures: [f], undeferredParams: [x]) - .planReconciliationStages(), - [ - <Param>{}, - {f} - ]); - }); -} - -class Param { - final String name; - final List<String> argTypes; - final List<String> retTypes; - - Param(this.name, {this.argTypes = const [], this.retTypes = const []}); - - @override - String toString() => name; -} - -class _TestClosureDeps extends ClosureDependencies<String, Param, Param> { - final List<String> typeVars; - final List<Param> closures; - final List<Param> undeferredParams; - - _TestClosureDeps( - {required this.typeVars, - required this.closures, - this.undeferredParams = const []}) - : super(closures, typeVars, undeferredParams); - - @override - Set<String> typeVarsFreeInParamParams(Param closure) => - closure.argTypes.toSet(); - - @override - Set<String> typeVarsFreeInParamReturns(Param closure) => - closure.retTypes.toSet(); -}
diff --git a/pkg/_fe_analyzer_shared/test/deferred_function_literal_heuristic_test.dart b/pkg/_fe_analyzer_shared/test/deferred_function_literal_heuristic_test.dart new file mode 100644 index 0000000..ad5434b --- /dev/null +++ b/pkg/_fe_analyzer_shared/test/deferred_function_literal_heuristic_test.dart
@@ -0,0 +1,161 @@ +// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file +// for details. All rights reserved. Use of this source code is governed by a +// BSD-style license that can be found in the LICENSE file. + +import 'package:_fe_analyzer_shared/src/deferred_function_literal_heuristic.dart'; +import 'package:test/test.dart'; + +main() { + test('single', () { + // If there is just a single function literal and no type variables, it is + // selected. + var f = Param('f'); + expect( + _TestFunctionLiteralDeps(typeVars: [], functionLiterals: [f]) + .planReconciliationStages(), + [ + [f] + ]); + }); + + test('simple dependency', () { + // If f depends on g, then g is selected first, and then f. + var f = Param('f', argTypes: ['T']); + var g = Param('g', retTypes: ['T']); + expect( + _TestFunctionLiteralDeps(typeVars: ['T'], functionLiterals: [f, g]) + .planReconciliationStages(), + [ + [g], + [f] + ]); + }); + + test('long chain', () { + // If f depends on g and g depends on h, then we do three separate stages: + // h, then g, then f. + var f = Param('f', argTypes: ['T']); + var g = Param('g', argTypes: ['U'], retTypes: ['T']); + var h = Param('h', retTypes: ['U']); + expect( + _TestFunctionLiteralDeps( + typeVars: ['T', 'U'], + functionLiterals: [f, g, h]).planReconciliationStages(), + [ + [h], + [g], + [f] + ]); + }); + + test('unrelated function literal', () { + // Function literals that are independent of all the others are inferred + // during the first stage. + var f = Param('f', argTypes: ['T']); + var g = Param('g', retTypes: ['T']); + var h = Param('h'); + expect( + _TestFunctionLiteralDeps( + typeVars: ['T', 'U'], + functionLiterals: [f, g, h]).planReconciliationStages(), + [ + [g, h], + [f] + ]); + }); + + test('independent chains', () { + // If f depends on g, and h depends on i, then g and i are selected first, + // and then f and h. + var f = Param('f', argTypes: ['T']); + var g = Param('g', retTypes: ['T']); + var h = Param('h', argTypes: ['U']); + var i = Param('i', retTypes: ['U']); + expect( + _TestFunctionLiteralDeps( + typeVars: ['T', 'U'], + functionLiterals: [f, g, h, i]).planReconciliationStages(), + [ + [g, i], + [f, h] + ]); + }); + + test('diamond', () { + // Test a diamond dependency shape: f depends on g and h; g and h both + // depend on i. + var f = Param('f', argTypes: ['T', 'U']); + var g = Param('g', argTypes: ['V'], retTypes: ['T']); + var h = Param('h', argTypes: ['V'], retTypes: ['U']); + var i = Param('i', retTypes: ['V']); + expect( + _TestFunctionLiteralDeps( + typeVars: ['T', 'U', 'V'], + functionLiterals: [f, g, h, i]).planReconciliationStages(), + [ + [i], + [g, h], + [f] + ]); + }); + + test('cycle', () { + // A dependency cycle is inferred all at once. + var f = Param('f', argTypes: ['T']); + var g = Param('g', argTypes: ['U']); + var h = Param('h', argTypes: ['U'], retTypes: ['T']); + var i = Param('i', argTypes: ['T'], retTypes: ['U']); + expect( + _TestFunctionLiteralDeps( + typeVars: ['T', 'U'], + functionLiterals: [f, g, h, i]).planReconciliationStages(), + [ + [h, i], + [f, g] + ]); + }); + + test('dependency on undeferred param', () { + var f = Param('f', argTypes: ['T']); + var x = Param('x', retTypes: ['T']); + expect( + _TestFunctionLiteralDeps( + typeVars: ['T'], + functionLiterals: [f], + undeferredParams: [x]).planReconciliationStages(), + [ + <Param>[], + [f] + ]); + }); +} + +class Param { + final String name; + final List<String> argTypes; + final List<String> retTypes; + + Param(this.name, {this.argTypes = const [], this.retTypes = const []}); + + @override + String toString() => name; +} + +class _TestFunctionLiteralDeps + extends FunctionLiteralDependencies<String, Param, Param> { + final List<String> typeVars; + final List<Param> functionLiterals; + final List<Param> undeferredParams; + + _TestFunctionLiteralDeps( + {required this.typeVars, + required this.functionLiterals, + this.undeferredParams = const []}) + : super(functionLiterals, typeVars, undeferredParams); + + @override + Set<String> typeVarsFreeInParamParams(Param param) => param.argTypes.toSet(); + + @override + Set<String> typeVarsFreeInParamReturns(Param param) => param.retTypes.toSet(); +}
diff --git a/pkg/analysis_server/analysis_options.yaml b/pkg/analysis_server/analysis_options.yaml index fdda3f2..5d8f3e7 100644 --- a/pkg/analysis_server/analysis_options.yaml +++ b/pkg/analysis_server/analysis_options.yaml
@@ -1,4 +1,4 @@ -include: package:pedantic/analysis_options.1.9.0.yaml +include: package:lints/recommended.yaml analyzer: language: @@ -8,21 +8,26 @@ errors: # Increase the severity of the unused_import hint. unused_import: warning - # TODO(srawlins): At the time of writing, 20 violations in lib/. The fix - # is not mechanical; each violation probably needs to be scrutinized. - unawaited_futures: ignore + + # Lints from the recommended set that conflict w/ analyzer style or will + # require some work to reach compliance. + # See: https://github.com/dart-lang/sdk/issues/48785 + avoid_renaming_method_parameters: ignore + camel_case_types: ignore + constant_identifier_names: ignore + file_names: ignore + hash_and_equals: ignore + implementation_imports: ignore + library_private_types_in_public_api: ignore + non_constant_identifier_names: ignore + overridden_fields: ignore + prefer_function_declarations_over_variables: ignore + # todo: add ignore to `protocol_generated.dart` + prefer_interpolation_to_compose_strings: ignore + prefer_void_to_null: ignore + provide_deprecation_message: ignore linter: rules: - - await_only_futures - - avoid_single_cascade_in_expression_statements - depend_on_referenced_packages - - empty_statements - - iterable_contains_unrelated_type - - list_remove_unrelated_type - - prefer_initializing_formals - - prefer_typing_uninitialized_variables - - unnecessary_brace_in_string_interps - - unnecessary_overrides - unnecessary_parenthesis - - void_checks
diff --git a/pkg/analysis_server/benchmark/integration/main.dart b/pkg/analysis_server/benchmark/integration/main.dart index 07ce8bb..32908ae 100644 --- a/pkg/analysis_server/benchmark/integration/main.dart +++ b/pkg/analysis_server/benchmark/integration/main.dart
@@ -61,7 +61,7 @@ const VERBOSE_CMDLINE_OPTION = 'verbose'; const VERY_VERBOSE_CMDLINE_OPTION = 'vv'; -late final ArgParser argParser = () { +final ArgParser argParser = () { var argParser = ArgParser(); argParser.addOption(INPUT_CMDLINE_OPTION,
diff --git a/pkg/analysis_server/benchmark/perf/benchmarks_impl.dart b/pkg/analysis_server/benchmark/perf/benchmarks_impl.dart index d394ef0..501fb8d 100644 --- a/pkg/analysis_server/benchmark/perf/benchmarks_impl.dart +++ b/pkg/analysis_server/benchmark/perf/benchmarks_impl.dart
@@ -95,9 +95,8 @@ if (i + 1 < kGroupCount) { // mutate index = contents.indexOf(';', index); - contents = contents.substring(0, index + 1) + - ' ' + - contents.substring(index + 1); + contents = + '${contents.substring(0, index + 1)} ${contents.substring(index + 1)}'; await test.updateFile(filePath, contents); } } @@ -124,9 +123,8 @@ for (var i = 0; i < kGroupCount; i++) { var startIndex = i * (contents.length ~/ (kGroupCount + 2)); var index = contents.indexOf(';', startIndex); - contents = contents.substring(0, index + 1) + - ' ' + - contents.substring(index + 1); + contents = + '${contents.substring(0, index + 1)} ${contents.substring(index + 1)}'; await test.updateFile(filePath, contents); await test.analysisFinished; }
diff --git a/pkg/analysis_server/lib/lsp_protocol/protocol_custom_generated.dart b/pkg/analysis_server/lib/lsp_protocol/protocol_custom_generated.dart index 8475456..d3218a8 100644 --- a/pkg/analysis_server/lib/lsp_protocol/protocol_custom_generated.dart +++ b/pkg/analysis_server/lib/lsp_protocol/protocol_custom_generated.dart
@@ -7,6 +7,8 @@ // "pkg/analysis_server/tool/lsp_spec/generate_all.dart". // ignore_for_file: annotate_overrides +// ignore_for_file: no_leading_underscores_for_local_identifiers +// ignore_for_file: prefer_is_not_operator // ignore_for_file: unnecessary_parenthesis import 'dart:core' hide deprecated;
diff --git a/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart b/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart index 3222ce8..dfb5f9c 100644 --- a/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart +++ b/pkg/analysis_server/lib/lsp_protocol/protocol_generated.dart
@@ -7,6 +7,8 @@ // "pkg/analysis_server/tool/lsp_spec/generate_all.dart". // ignore_for_file: annotate_overrides +// ignore_for_file: no_leading_underscores_for_local_identifiers +// ignore_for_file: prefer_is_not_operator // ignore_for_file: unnecessary_parenthesis import 'dart:core' hide deprecated;
diff --git a/pkg/analysis_server/lib/plugin/protocol/protocol_dart.dart b/pkg/analysis_server/lib/plugin/protocol/protocol_dart.dart index 5e3a9c5..3f7c863 100644 --- a/pkg/analysis_server/lib/plugin/protocol/protocol_dart.dart +++ b/pkg/analysis_server/lib/plugin/protocol/protocol_dart.dart
@@ -179,7 +179,7 @@ parameter.appendToWithoutDelimiters(sb, withNullability: withNullability); } sb.write(closeOptionalString); - return '(' + sb.toString() + ')'; + return '($sb)'; } String? _getTypeParametersString(engine.Element element) {
diff --git a/pkg/analysis_server/lib/src/analysis_server.dart b/pkg/analysis_server/lib/src/analysis_server.dart index ef379b2..c248c2f 100644 --- a/pkg/analysis_server/lib/src/analysis_server.dart +++ b/pkg/analysis_server/lib/src/analysis_server.dart
@@ -547,9 +547,9 @@ priorityFiles.clear(); priorityFiles.addAll(files); // Set priority files in drivers. - driverMap.values.forEach((driver) { + for (var driver in driverMap.values) { driver.priorityFiles = files; - }); + } } @override @@ -696,15 +696,15 @@ var files = <String>{}; if (analysis) { - analysisServices.values.forEach((serviceFiles) { + for (var serviceFiles in analysisServices.values) { files.addAll(serviceFiles); - }); + } } if (flutter) { - flutterServices.values.forEach((serviceFiles) { + for (var serviceFiles in flutterServices.values) { files.addAll(serviceFiles); - }); + } } for (var file in files) {
diff --git a/pkg/analysis_server/lib/src/channel/byte_stream_channel.dart b/pkg/analysis_server/lib/src/channel/byte_stream_channel.dart index 955e547..390647f 100644 --- a/pkg/analysis_server/lib/src/channel/byte_stream_channel.dart +++ b/pkg/analysis_server/lib/src/channel/byte_stream_channel.dart
@@ -62,7 +62,7 @@ @override Future<Response> sendRequest(Request request) async { var id = request.id; - output.write(json.encode(request.toJson()) + '\n'); + output.write('${json.encode(request.toJson())}\n'); return await responseStream .firstWhere((Response response) => response.id == id); }
diff --git a/pkg/analysis_server/lib/src/cider/rename.dart b/pkg/analysis_server/lib/src/cider/rename.dart index 84ef2e3..a306461 100644 --- a/pkg/analysis_server/lib/src/cider/rename.dart +++ b/pkg/analysis_server/lib/src/cider/rename.dart
@@ -55,16 +55,16 @@ FlutterWidgetState? _findFlutterStateClass(Element element, String newName) { if (Flutter.instance.isStatefulWidgetDeclaration(element)) { - var oldStateName = element.displayName + 'State'; + var oldStateName = '${element.displayName}State'; var library = element.library!; var state = - library.getType(oldStateName) ?? library.getType('_' + oldStateName); + library.getType(oldStateName) ?? library.getType('_$oldStateName'); if (state != null) { - var flutterWidgetStateNewName = newName + 'State'; + var flutterWidgetStateNewName = '${newName}State'; // If the State was private, ensure that it stays private. if (state.name.startsWith('_') && !flutterWidgetStateNewName.startsWith('_')) { - flutterWidgetStateNewName = '_' + flutterWidgetStateNewName; + flutterWidgetStateNewName = '_$flutterWidgetStateNewName'; } return FlutterWidgetState(state, flutterWidgetStateNewName); }
diff --git a/pkg/analysis_server/lib/src/computer/computer_highlights.dart b/pkg/analysis_server/lib/src/computer/computer_highlights.dart index 299f79a..aa3e93e 100644 --- a/pkg/analysis_server/lib/src/computer/computer_highlights.dart +++ b/pkg/analysis_server/lib/src/computer/computer_highlights.dart
@@ -1014,7 +1014,7 @@ if (type != null) { if (type.isDynamic && node.name.name == 'dynamic') { computer._addRegion_node(node, HighlightRegionType.TYPE_NAME_DYNAMIC); - return null; + return; } } super.visitNamedType(node);
diff --git a/pkg/analysis_server/lib/src/computer/computer_overrides.dart b/pkg/analysis_server/lib/src/computer/computer_overrides.dart index 41e8088..eff224d 100644 --- a/pkg/analysis_server/lib/src/computer/computer_overrides.dart +++ b/pkg/analysis_server/lib/src/computer/computer_overrides.dart
@@ -207,7 +207,7 @@ } // setter if (_kinds.contains(ElementKind.SETTER)) { - member = classElement.lookUpSetter(_name + '=', _library); + member = classElement.lookUpSetter('$_name=', _library); if (member != null) { return member; }
diff --git a/pkg/analysis_server/lib/src/computer/computer_signature.dart b/pkg/analysis_server/lib/src/computer/computer_signature.dart index 0e852c2..3adfbbe 100644 --- a/pkg/analysis_server/lib/src/computer/computer_signature.dart +++ b/pkg/analysis_server/lib/src/computer/computer_signature.dart
@@ -18,10 +18,9 @@ final AstNode? _node; late ArgumentList _argumentList; final bool _isNonNullableByDefault; - DartUnitSignatureComputer( - this._dartdocInfo, CompilationUnit _unit, int _offset) - : _node = NodeLocator(_offset).searchWithin(_unit), - _isNonNullableByDefault = _unit.isNonNullableByDefault; + DartUnitSignatureComputer(this._dartdocInfo, CompilationUnit unit, int offset) + : _node = NodeLocator(offset).searchWithin(unit), + _isNonNullableByDefault = unit.isNonNullableByDefault; /// The [ArgumentList] node located by [compute]. ArgumentList get argumentList => _argumentList;
diff --git a/pkg/analysis_server/lib/src/computer/computer_type_arguments_signature.dart b/pkg/analysis_server/lib/src/computer/computer_type_arguments_signature.dart index 3c3d68b..800ff38 100644 --- a/pkg/analysis_server/lib/src/computer/computer_type_arguments_signature.dart +++ b/pkg/analysis_server/lib/src/computer/computer_type_arguments_signature.dart
@@ -24,11 +24,11 @@ final bool _isNonNullableByDefault; DartTypeArgumentsSignatureComputer( this._dartdocInfo, - CompilationUnit _unit, - int _offset, + CompilationUnit unit, + int offset, this.preferredFormats, - ) : _node = NodeLocator(_offset).searchWithin(_unit), - _isNonNullableByDefault = _unit.isNonNullableByDefault; + ) : _node = NodeLocator(offset).searchWithin(unit), + _isNonNullableByDefault = unit.isNonNullableByDefault; /// The [TypeArgumentList] node located by [compute]. TypeArgumentList get argumentList => _argumentList;
diff --git a/pkg/analysis_server/lib/src/domains/execution/completion.dart b/pkg/analysis_server/lib/src/domains/execution/completion.dart index 4fc64eb..257ef02 100644 --- a/pkg/analysis_server/lib/src/domains/execution/completion.dart +++ b/pkg/analysis_server/lib/src/domains/execution/completion.dart
@@ -32,7 +32,7 @@ var session = contextResult.session; - const codeMarker = '__code_\_'; + const codeMarker = '__code__'; // Insert the code being completed at the context offset. var changeBuilder = ChangeBuilder(session: session);
diff --git a/pkg/analysis_server/lib/src/edit/edit_domain.dart b/pkg/analysis_server/lib/src/edit/edit_domain.dart index 3210578..dd858f1 100644 --- a/pkg/analysis_server/lib/src/edit/edit_domain.dart +++ b/pkg/analysis_server/lib/src/edit/edit_domain.dart
@@ -273,16 +273,16 @@ _reset(); } - void getRefactoring(Request _request, CancellationToken cancellationToken) { + void getRefactoring(Request request, CancellationToken cancellationToken) { // prepare for processing the request - request = _request; + this.request = request; final result = this.result = EditGetRefactoringResult( EMPTY_PROBLEM_LIST, EMPTY_PROBLEM_LIST, EMPTY_PROBLEM_LIST); // process the request - var params = EditGetRefactoringParams.fromRequest(_request); + var params = EditGetRefactoringParams.fromRequest(request); var file = params.file; - if (server.sendResponseErrorIfInvalidFilePath(_request, file)) { + if (server.sendResponseErrorIfInvalidFilePath(request, file)) { return; } @@ -343,8 +343,8 @@ cancel(); } else { server.instrumentationService.logException(exception, stackTrace); - server.sendResponse( - Response.serverError(_request, exception, stackTrace)); + server + .sendResponse(Response.serverError(request, exception, stackTrace)); } _reset(); });
diff --git a/pkg/analysis_server/lib/src/handler/legacy/edit_get_fixes.dart b/pkg/analysis_server/lib/src/handler/legacy/edit_get_fixes.dart index 7abcecb..c1ad910 100644 --- a/pkg/analysis_server/lib/src/handler/legacy/edit_get_fixes.dart +++ b/pkg/analysis_server/lib/src/handler/legacy/edit_get_fixes.dart
@@ -141,9 +141,9 @@ var serverError = newAnalysisError_fromEngine(result, error); var errorFixes = AnalysisErrorFixes(serverError); errorFixesList.add(errorFixes); - fixes.forEach((fix) { + for (var fix in fixes) { errorFixes.fixes.add(fix.change); - }); + } } } return errorFixesList; @@ -190,9 +190,9 @@ var serverError = newAnalysisError_fromEngine(result, error); var errorFixes = AnalysisErrorFixes(serverError); errorFixesList.add(errorFixes); - fixes.forEach((fix) { + for (var fix in fixes) { errorFixes.fixes.add(fix.change); - }); + } } } } @@ -230,9 +230,9 @@ var serverError = newAnalysisError_fromEngine(result, error); var errorFixes = AnalysisErrorFixes(serverError); errorFixesList.add(errorFixes); - fixes.forEach((fix) { + for (var fix in fixes) { errorFixes.fixes.add(fix.change); - }); + } } } return errorFixesList; @@ -278,9 +278,9 @@ var serverError = newAnalysisError_fromEngine(result, error); var errorFixes = AnalysisErrorFixes(serverError); errorFixesList.add(errorFixes); - fixes.forEach((fix) { + for (var fix in fixes) { errorFixes.fixes.add(fix.change); - }); + } } } return errorFixesList;
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart index fd5c2d1..f922482 100644 --- a/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart +++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_completion.dart
@@ -415,16 +415,17 @@ // duplicates. final alreadyImportedSymbols = _buildLookupOfImportedSymbols(unit); - includedSuggestionSets.forEach((includedSet) { + for (var includedSet in includedSuggestionSets) { final library = declarationsTracker.getLibrary(includedSet.id); if (library == null) { - return; + break; } // Make a fast lookup for tag relevance. final tagBoosts = <String, int>{}; - includedSuggestionRelevanceTags! - .forEach((t) => tagBoosts[t.tag] = t.relevanceBoost); + for (var t in includedSuggestionRelevanceTags) { + tagBoosts[t.tag] = t.relevanceBoost; + } // Only specific types of child declarations should be included. // This list matches what's in _protocolAvailableSuggestion in @@ -493,7 +494,7 @@ completeFunctionCalls: completeFunctionCalls, )); results.addAll(setResults); - }); + } } // Add in any snippets.
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_exit.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_exit.dart index ca28963..a5850a5 100644 --- a/pkg/analysis_server/lib/src/lsp/handlers/handler_exit.dart +++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_exit.dart
@@ -9,7 +9,7 @@ import 'package:analysis_server/src/lsp/handlers/handlers.dart'; import 'package:analysis_server/src/lsp/lsp_analysis_server.dart'; -class ExitMessageHandler extends MessageHandler<Null, Null> { +class ExitMessageHandler extends MessageHandler<void, void> { final bool clientDidCallShutdown; ExitMessageHandler( @@ -21,10 +21,10 @@ Method get handlesMessage => Method.exit; @override - LspJsonHandler<Null> get jsonHandler => NullJsonHandler; + LspJsonHandler<void> get jsonHandler => NullJsonHandler; @override - Future<ErrorOr<Null>> handle(Null _, CancellationToken token) async { + Future<ErrorOr<void>> handle(void _, CancellationToken token) async { // Set a flag that the server shutdown is being controlled here to ensure // that the normal code that shuts down the server when the channel closes // does not fire.
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_initialize.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_initialize.dart index 290bdc4..2c1d7b5 100644 --- a/pkg/analysis_server/lib/src/lsp/handlers/handler_initialize.dart +++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_initialize.dart
@@ -38,14 +38,14 @@ // based only on the open files. if (!server.initializationOptions.onlyAnalyzeProjectsWithOpenFiles) { if (workspaceFolders != null) { - workspaceFolders.forEach((wf) { + for (var wf in workspaceFolders) { final uri = Uri.parse(wf.uri); // Only file URIs are supported, but there's no way to signal this to // the LSP client (and certainly not before initialization). if (uri.isScheme('file')) { unnormalisedWorkspacePaths.add(uri.toFilePath()); } - }); + } } if (rootUri != null) { final uri = Uri.parse(rootUri);
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_reject.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_reject.dart index 6e82230..67d2685 100644 --- a/pkg/analysis_server/lib/src/lsp/handlers/handler_reject.dart +++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_reject.dart
@@ -9,7 +9,7 @@ /// A [MessageHandler] that rejects specific tpyes of messages with a given /// error code/message. -class RejectMessageHandler extends MessageHandler<Object?, Null> { +class RejectMessageHandler extends MessageHandler<Object?, void> { @override final Method handlesMessage; final ErrorCodes errorCode; @@ -19,10 +19,10 @@ : super(server); @override - LspJsonHandler<Null> get jsonHandler => NullJsonHandler; + LspJsonHandler<void> get jsonHandler => NullJsonHandler; @override - ErrorOr<Null> handle(Object? _, CancellationToken token) { + ErrorOr<void> handle(Object? _, CancellationToken token) { return error(errorCode, errorMessage, null); } }
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_shutdown.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_shutdown.dart index df1ff6c..b226c29 100644 --- a/pkg/analysis_server/lib/src/lsp/handlers/handler_shutdown.dart +++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_shutdown.dart
@@ -8,16 +8,16 @@ import 'package:analysis_server/src/lsp/handlers/handlers.dart'; import 'package:analysis_server/src/lsp/lsp_analysis_server.dart'; -class ShutdownMessageHandler extends MessageHandler<Null, Null> { +class ShutdownMessageHandler extends MessageHandler<void, void> { ShutdownMessageHandler(LspAnalysisServer server) : super(server); @override Method get handlesMessage => Method.shutdown; @override - LspJsonHandler<Null> get jsonHandler => NullJsonHandler; + LspJsonHandler<void> get jsonHandler => NullJsonHandler; @override - ErrorOr<Null> handle(void _, CancellationToken token) { + ErrorOr<void> handle(void _, CancellationToken token) { // Move to the Shutting Down state so we won't process any more // requests and the Exit notification will know it was a clean shutdown. server.messageHandler = ShuttingDownStateMessageHandler(server);
diff --git a/pkg/analysis_server/lib/src/lsp/handlers/handler_text_document_changes.dart b/pkg/analysis_server/lib/src/lsp/handlers/handler_text_document_changes.dart index 8e5f7c6..079161a 100644 --- a/pkg/analysis_server/lib/src/lsp/handlers/handler_text_document_changes.dart +++ b/pkg/analysis_server/lib/src/lsp/handlers/handler_text_document_changes.dart
@@ -23,13 +23,13 @@ DidChangeTextDocumentParams.jsonHandler; @override - FutureOr<ErrorOr<Null>> handle( + FutureOr<ErrorOr<void>> handle( DidChangeTextDocumentParams params, CancellationToken token) { final path = pathOfDoc(params.textDocument); return path.mapResult((path) => _changeFile(path, params)); } - FutureOr<ErrorOr<Null>> _changeFile( + FutureOr<ErrorOr<void>> _changeFile( String path, DidChangeTextDocumentParams params) { String? oldContents; if (server.resourceProvider.hasOverlay(path)) { @@ -67,7 +67,7 @@ DidCloseTextDocumentParams.jsonHandler; @override - FutureOr<ErrorOr<Null>> handle( + FutureOr<ErrorOr<void>> handle( DidCloseTextDocumentParams params, CancellationToken token) { final path = pathOfDoc(params.textDocument); return path.mapResult((path) async { @@ -92,7 +92,7 @@ DidOpenTextDocumentParams.jsonHandler; @override - FutureOr<ErrorOr<Null>> handle( + FutureOr<ErrorOr<void>> handle( DidOpenTextDocumentParams params, CancellationToken token) { final doc = params.textDocument; final path = pathOfDocItem(doc);
diff --git a/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart b/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart index 6674c4c..c2cc293 100644 --- a/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart +++ b/pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart
@@ -726,7 +726,9 @@ } void _afterOverlayChanged(String path, plugin.HasToJson changeForPlugins) { - driverMap.values.forEach((driver) => driver.changeFile(path)); + for (var driver in driverMap.values) { + driver.changeFile(path); + } pluginManager.setAnalysisUpdateContentParams( plugin.AnalysisUpdateContentParams({path: changeForPlugins}), ); @@ -795,9 +797,9 @@ void _updateDriversAndPluginsPriorityFiles() { final priorityFilesList = priorityFiles.toList(); - driverMap.values.forEach((driver) { + for (var driver in driverMap.values) { driver.priorityFiles = priorityFilesList; - }); + } final pluginPriorities = plugin.AnalysisSetPriorityFilesParams(priorityFilesList);
diff --git a/pkg/analysis_server/lib/src/lsp/mapping.dart b/pkg/analysis_server/lib/src/lsp/mapping.dart index fa6a104..3bbb8c3 100644 --- a/pkg/analysis_server/lib/src/lsp/mapping.dart +++ b/pkg/analysis_server/lib/src/lsp/mapping.dart
@@ -367,8 +367,9 @@ capabilities.completionItemKinds, declaration.kind); var relevanceBoost = 0; - declaration.relevanceTags - .forEach((t) => relevanceBoost = max(relevanceBoost, tagBoosts[t] ?? 0)); + for (var t in declaration.relevanceTags) { + relevanceBoost = max(relevanceBoost, tagBoosts[t] ?? 0); + } final itemRelevance = includedSuggestionSet.relevance + relevanceBoost; // Because we potentially send thousands of these items, we should minimise @@ -1305,17 +1306,13 @@ label: outline.label, className: outline.className, variableName: outline.variableName, - attributes: attributes != null - ? attributes - .map((attribute) => toFlutterOutlineAttribute(lineInfo, attribute)) - .toList() - : null, + attributes: attributes + ?.map((attribute) => toFlutterOutlineAttribute(lineInfo, attribute)) + .toList(), dartElement: dartElement != null ? toElement(lineInfo, dartElement) : null, range: toRange(lineInfo, outline.offset, outline.length), codeRange: toRange(lineInfo, outline.codeOffset, outline.codeLength), - children: children != null - ? children.map((c) => toFlutterOutline(lineInfo, c)).toList() - : null, + children: children?.map((c) => toFlutterOutline(lineInfo, c)).toList(), ); } @@ -1402,9 +1399,7 @@ element: toElement(lineInfo, outline.element), range: toRange(lineInfo, outline.offset, outline.length), codeRange: toRange(lineInfo, outline.codeOffset, outline.codeLength), - children: children != null - ? children.map((c) => toOutline(lineInfo, c)).toList() - : null, + children: children?.map((c) => toOutline(lineInfo, c)).toList(), ); } @@ -1458,10 +1453,10 @@ params.add(positionalRequired.map(getParamLabel).join(', ')); } if (positionalOptional.isNotEmpty) { - params.add('[' + positionalOptional.map(getParamLabel).join(', ') + ']'); + params.add('[${positionalOptional.map(getParamLabel).join(', ')}]'); } if (named.isNotEmpty) { - params.add('{' + named.map(getParamLabel).join(', ') + '}'); + params.add('{${named.map(getParamLabel).join(', ')}}'); } return '${resp.name}(${params.join(", ")})'; }
diff --git a/pkg/analysis_server/lib/src/plugin/notification_manager.dart b/pkg/analysis_server/lib/src/plugin/notification_manager.dart index b8de615..caaa088 100644 --- a/pkg/analysis_server/lib/src/plugin/notification_manager.dart +++ b/pkg/analysis_server/lib/src/plugin/notification_manager.dart
@@ -243,7 +243,7 @@ Set<server.AnalysisService> services = HashSet<server.AnalysisService>(); services.addAll(currentSubscriptions.keys); services.addAll(newSubscriptions.keys); - services.forEach((server.AnalysisService service) { + for (var service in services) { var collector = collectorFor(service); if (collector != null) { var currentPaths = currentSubscriptions[service]; @@ -254,29 +254,29 @@ return; } // All of the [newPaths] need to be added. - newPaths.forEach((String filePath) { + for (var filePath in newPaths) { collector.startCollectingFor(filePath); - }); + } } else if (newPaths == null) { // All of the [currentPaths] need to be removed. - currentPaths.forEach((String filePath) { + for (var filePath in currentPaths) { collector.stopCollectingFor(filePath); - }); + } } else { // Compute the difference of the two sets. - newPaths.forEach((String filePath) { + for (var filePath in newPaths) { if (!currentPaths.contains(filePath)) { collector.startCollectingFor(filePath); } - }); - currentPaths.forEach((String filePath) { + } + for (var filePath in currentPaths) { if (!newPaths.contains(filePath)) { collector.stopCollectingFor(filePath); } - }); + } } } - }); + } currentSubscriptions = newSubscriptions; }
diff --git a/pkg/analysis_server/lib/src/protocol/protocol_internal.dart b/pkg/analysis_server/lib/src/protocol/protocol_internal.dart index e84109e..a481ee2 100644 --- a/pkg/analysis_server/lib/src/protocol/protocol_internal.dart +++ b/pkg/analysis_server/lib/src/protocol/protocol_internal.dart
@@ -21,9 +21,9 @@ /// are applied in the order they appear in [edits]. Access via /// SourceEdit.applySequence(). String applySequenceOfEdits(String code, Iterable<SourceEdit> edits) { - edits.forEach((SourceEdit edit) { + for (var edit in edits) { code = edit.apply(code); - }); + } return code; }
diff --git a/pkg/analysis_server/lib/src/search/type_hierarchy.dart b/pkg/analysis_server/lib/src/search/type_hierarchy.dart index 4877ec5..d555525 100644 --- a/pkg/analysis_server/lib/src/search/type_hierarchy.dart +++ b/pkg/analysis_server/lib/src/search/type_hierarchy.dart
@@ -136,7 +136,7 @@ .map((type) => type.getDisplayString(withNullability: _isNonNullableByDefault)) .join(', '); - displayName = classElement.displayName + '<' + typeArgumentsStr + '>'; + displayName = '${classElement.displayName}<$typeArgumentsStr>'; } var memberElement = _findMemberElement(classElement); var memberElementDeclared = memberElement?.nonSynthetic; @@ -164,15 +164,15 @@ } } // mixins - classElement.mixins.forEach((InterfaceType type) { + for (var type in classElement.mixins) { var id = _createSuperItem(type.element, type.typeArguments); item.mixins.add(id); - }); + } // interfaces - classElement.interfaces.forEach((InterfaceType type) { + for (var type in classElement.interfaces) { var id = _createSuperItem(type.element, type.typeArguments); item.interfaces.add(id); - }); + } // done return itemId; }
diff --git a/pkg/analysis_server/lib/src/server/driver.dart b/pkg/analysis_server/lib/src/server/driver.dart index ba94d24..5f05388 100644 --- a/pkg/analysis_server/lib/src/server/driver.dart +++ b/pkg/analysis_server/lib/src/server/driver.dart
@@ -195,7 +195,7 @@ analytics.setSessionValue('cd1', analysisServerOptions.clientVersion); } - var shouldSendCallback = () { + bool shouldSendCallback() { // Check sdkConfig to optionally force reporting on. if (sdkConfig.crashReportingForceEnabled == true) { return true; @@ -203,7 +203,7 @@ // TODO(devoncarew): Replace with a real enablement check. return false; - }; + } // Crash reporting @@ -216,7 +216,7 @@ if (results.wasParsed(ANALYTICS_FLAG)) { analytics.enabled = results[ANALYTICS_FLAG] as bool; print(telemetry.createAnalyticsStatusMessage(analytics.enabled)); - return null; + return; } } @@ -234,7 +234,7 @@ if (results[HELP_OPTION] as bool) { _printUsage(parser, analytics, fromHelp: true); - return null; + return; } final defaultSdkPath = _getSdkPath(results); @@ -287,7 +287,7 @@ print(''); _printUsage(parser, analytics); exitCode = 1; - return null; + return; } } @@ -335,7 +335,7 @@ if (!FileSystemEntity.isDirectorySync(trainDirectory)) { print("Training directory '$trainDirectory' not found.\n"); exitCode = 1; - return null; + return; } } //
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/documentation_cache.dart b/pkg/analysis_server/lib/src/services/completion/dart/documentation_cache.dart index 8411094..9ceca57 100644 --- a/pkg/analysis_server/lib/src/services/completion/dart/documentation_cache.dart +++ b/pkg/analysis_server/lib/src/services/completion/dart/documentation_cache.dart
@@ -180,7 +180,7 @@ Element member) { var name = member.name; if (name == null) { - return null; + return; } cacheElement(dartdocDirectiveInfo, '$parentKey.$name', member); }
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart index 94c4ede..66b007f 100644 --- a/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart +++ b/pkg/analysis_server/lib/src/services/completion/dart/keyword_contributor.dart
@@ -1037,9 +1037,9 @@ } void _addSuggestions(List<Keyword> keywords) { - keywords.forEach((Keyword keyword) { + for (var keyword in keywords) { _addSuggestion(keyword); - }); + } } bool _isEntityAfterIfWithoutElse(AstNode node) {
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart index aeb07b2..bf2dee5 100644 --- a/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart +++ b/pkg/analysis_server/lib/src/services/completion/dart/suggestion_builder.dart
@@ -1295,7 +1295,7 @@ if (prefix != null) { completion ??= elementData.completion; - completion = prefix + '.' + completion; + completion = '$prefix.$completion'; } return CompletionSuggestionBuilderImpl(
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart b/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart index 279afd7..ebab076 100644 --- a/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart +++ b/pkg/analysis_server/lib/src/services/completion/dart/utilities.dart
@@ -208,7 +208,7 @@ if (type.isDynamic) { return ''; } else { - return type.getDisplayString(withNullability: withNullability) + ' '; + return '${type.getDisplayString(withNullability: withNullability)} '; } }
diff --git a/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart b/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart index 1de638f..b86c7e0 100644 --- a/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart +++ b/pkg/analysis_server/lib/src/services/completion/dart/variable_name_contributor.dart
@@ -77,7 +77,7 @@ for (var varName in variableNameSuggestions) { _createNameSuggestion(builder, varName); if (doIncludePrivateVersion) { - _createNameSuggestion(builder, '_' + varName); + _createNameSuggestion(builder, '_$varName'); } } }
diff --git a/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart b/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart index 2da4819..076cc4f 100644 --- a/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart +++ b/pkg/analysis_server/lib/src/services/completion/statement/statement_completion.dart
@@ -312,7 +312,7 @@ var loc = expr.offset + src.length; if (src.contains(eol)) { var indent = utils.getNodePrefix(node); - _addInsertEdit(loc, ',' + eol + indent + ']'); + _addInsertEdit(loc, ',$eol$indent]'); } else { _addInsertEdit(loc, ']'); } @@ -1183,8 +1183,9 @@ assert(exitPosition != null); change.selection = exitPosition; change.message = formatList(kind.message, args); - linkedPositionGroups.values - .forEach((group) => change.addLinkedEditGroup(group)); + for (var group in linkedPositionGroups.values) { + change.addLinkedEditGroup(group); + } completion = StatementCompletion(kind, change); }
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart index efb33d2..79ac1aa 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/add_diagnostic_property_reference.dart
@@ -174,7 +174,7 @@ } } if (propertiesBuilderName == null) { - return null; + return; } final final_propertiesBuilderName = propertiesBuilderName;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/add_return_type.dart b/pkg/analysis_server/lib/src/services/correction/dart/add_return_type.dart index fecc01d..82c63b7 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/add_return_type.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/add_return_type.dart
@@ -69,7 +69,7 @@ var returnType = _inferReturnType(body); if (returnType == null) { - return null; + return; } final insertBeforeEntity_final = insertBeforeEntity;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_add_all_to_spread.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_add_all_to_spread.dart index 0d3aa94..23a4405 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/convert_add_all_to_spread.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_add_all_to_spread.dart
@@ -107,7 +107,7 @@ // TODO(brianwilkerson) Consider adding a cleanup for the empty list // case. We can essentially remove the whole invocation because it does // nothing. - return null; + return; } var startOffset = elements.first.offset; var endOffset = elements.last.end;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_conditional_expression_to_if_element.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_conditional_expression_to_if_element.dart index b686773..656ff6b3 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/convert_conditional_expression_to_if_element.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_conditional_expression_to_if_element.dart
@@ -31,7 +31,7 @@ Future<void> compute(ChangeBuilder builder) async { var conditional = node.thisOrAncestorOfType<ConditionalExpression>(); if (conditional == null) { - return null; + return; } AstNode nodeToReplace = conditional;
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_documentation_into_line.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_documentation_into_line.dart index 659f521..64e21d8 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/convert_documentation_into_line.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_documentation_into_line.dart
@@ -34,11 +34,11 @@ if (comment == null || !comment.isDocumentation || comment.tokens.length != 1) { - return null; + return; } var token = comment.tokens.first; if (token.type != TokenType.MULTI_LINE_COMMENT) { - return null; + return; } var text = token.lexeme; var lines = text.split(eol); @@ -51,7 +51,7 @@ firstLine = false; var expectedPrefix = '/**'; if (!line.startsWith(expectedPrefix)) { - return null; + return; } line = line.substring(expectedPrefix.length).trim(); if (line.isNotEmpty) { @@ -59,12 +59,12 @@ linePrefix = eol + prefix; } } else { - if (line.startsWith(prefix + ' */')) { + if (line.startsWith('$prefix */')) { break; } - var expectedPrefix = prefix + ' *'; + var expectedPrefix = '$prefix *'; if (!line.startsWith(expectedPrefix)) { - return null; + return; } line = line.substring(expectedPrefix.length); if (line.isEmpty) {
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_into_final_field.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_into_final_field.dart index c16bfeb..26e9f45 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/convert_into_final_field.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_into_final_field.dart
@@ -74,11 +74,11 @@ var returnType = getter.returnType; var code = 'final'; if (returnType != null) { - code += ' ' + utils.getNodeText(returnType); + code += ' ${utils.getNodeText(returnType)}'; } - code += ' ' + utils.getNodeText(getter.name); + code += ' ${utils.getNodeText(getter.name)}'; if (expression is! NullLiteral) { - code += ' = ' + utils.getNodeText(expression); + code += ' = ${utils.getNodeText(expression)}'; } code += ';'; var replacementRange =
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_into_getter.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_into_getter.dart index bb9bebd..6677e5f 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/convert_into_getter.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_into_getter.dart
@@ -51,11 +51,11 @@ var code = ''; var typeAnnotation = fieldList.type; if (typeAnnotation != null) { - code += utils.getNodeText(typeAnnotation) + ' '; + code += '${utils.getNodeText(typeAnnotation)} '; } code += 'get'; - code += ' ' + utils.getNodeText(field.name); - code += ' => ' + utils.getNodeText(initializer); + code += ' ${utils.getNodeText(field.name)}'; + code += ' => ${utils.getNodeText(initializer)}'; code += ';'; var replacementRange = range.startEnd(finalKeyword, fieldDeclaration); await builder.addDartFileEdit(file, (builder) {
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_map_from_iterable_to_for_literal.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_map_from_iterable_to_for_literal.dart index 4039211..68c1434 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/convert_map_from_iterable_to_for_literal.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_map_from_iterable_to_for_literal.dart
@@ -36,20 +36,20 @@ // var creation = node.thisOrAncestorOfType<InstanceCreationExpression>(); if (creation == null) { - return null; + return; } var element = creation.constructorName.staticElement; if (element == null || element.name != 'fromIterable' || element.enclosingElement != typeProvider.mapElement) { - return null; + return; } // // Ensure that the arguments have the right form. // var arguments = creation.argumentList.arguments; if (arguments.length != 3) { - return null; + return; } var iterator = arguments[0].unParenthesized; var secondArg = arguments[1]; @@ -60,7 +60,7 @@ var valueClosure = _extractClosure('value', thirdArg) ?? _extractClosure('value', secondArg); if (keyClosure == null || valueClosure == null) { - return null; + return; } // // Compute the loop variable name and convert the key and value closures if
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_function_declaration.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_function_declaration.dart index 8f8cbc3..9266180 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_function_declaration.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_function_declaration.dart
@@ -84,7 +84,7 @@ replacement += '$keyword '; } if (type != null) { - replacement += utils.getNodeText(type) + ' '; + replacement += '${utils.getNodeText(type)} '; } replaceWithNewLine(r, after: replacement); }
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_generic_function_syntax.dart b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_generic_function_syntax.dart index e899a17..1cc03ee 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/convert_to_generic_function_syntax.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/convert_to_generic_function_syntax.dart
@@ -40,7 +40,7 @@ } else if (node is FormalParameterList) { // It would be confusing for this assist to alter a surrounding context // when the selection is inside a parameter list. - return null; + return; } } }
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_class.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_class.dart index 95dc29b..00cbb7d 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/create_class.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/create_class.dart
@@ -81,8 +81,8 @@ try { offset = targetSource.contents.data.length; filePath = targetSource.fullName; - prefix = '$eol'; - suffix = '$eol'; + prefix = eol; + suffix = eol; } on FileSystemException { // If we can't read the file to get the offset, then we can't // create a fix.
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_method_or_function.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_method_or_function.dart index ba94cc0..9eb4968 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/create_method_or_function.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/create_method_or_function.dart
@@ -129,7 +129,7 @@ var insertOffset = unit.end; // prepare prefix var prefix = ''; - var sourcePrefix = '$eol'; + var sourcePrefix = eol; var sourceSuffix = eol; await _createExecutable(builder, functionType, name, file, insertOffset, false, prefix, sourcePrefix, sourceSuffix, unit.declaredElement!);
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/create_mixin.dart b/pkg/analysis_server/lib/src/services/correction/dart/create_mixin.dart index 1bbc953..01698d0 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/create_mixin.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/create_mixin.dart
@@ -80,8 +80,8 @@ offset = targetSource.contents.data.length; filePath = targetSource.fullName; } - prefix = '$eol'; - suffix = '$eol'; + prefix = eol; + suffix = eol; } on FileSystemException { // If we can't read the file to get the offset, then we can't // create a fix.
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/encapsulate_field.dart b/pkg/analysis_server/lib/src/services/correction/dart/encapsulate_field.dart index a714bcd..b9c9d5c 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/encapsulate_field.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/encapsulate_field.dart
@@ -87,7 +87,7 @@ var typeCode = ''; var typeAnnotation = variableList.type; if (typeAnnotation != null) { - typeCode = utils.getNodeText(typeAnnotation) + ' '; + typeCode = '${utils.getNodeText(typeAnnotation)} '; } // Write getter.
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/flutter_swap_with_child.dart b/pkg/analysis_server/lib/src/services/correction/dart/flutter_swap_with_child.dart index 9e95655..c624414e 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/flutter_swap_with_child.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/flutter_swap_with_child.dart
@@ -29,7 +29,7 @@ utils.getRangeText(range.startStart(parent, parentArgs)); var parentIndent = utils.getLinePrefix(parent.offset); - var childIndent = parentIndent + ' '; + var childIndent = '$parentIndent '; // Write the beginning of the child. builder.write(childText);
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/flutter_wrap_generic.dart b/pkg/analysis_server/lib/src/services/correction/dart/flutter_wrap_generic.dart index 72b790f..bd3fe0c 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/flutter_wrap_generic.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/flutter_wrap_generic.dart
@@ -44,7 +44,7 @@ // Linked editing not needed since arg is always a list. builder.write('children: '); builder.write(literalSrc.replaceAll( - RegExp('^$indentOld', multiLine: true), '$indentList')); + RegExp('^$indentOld', multiLine: true), indentList)); builder.write(','); builder.write(eol); builder.write(indentArg);
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/replace_conditional_with_if_else.dart b/pkg/analysis_server/lib/src/services/correction/dart/replace_conditional_with_if_else.dart index 215b32e..c752866 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/replace_conditional_with_if_else.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/replace_conditional_with_if_else.dart
@@ -59,11 +59,11 @@ var elseSrc = utils.getNodeText(conditional.elseExpression); var name = utils.getNodeText(leftSide); var src = ''; - src += 'if ($conditionSrc) {' + eol; - src += prefix + indent + '$name = $thenSrc;' + eol; - src += prefix + '} else {' + eol; - src += prefix + indent + '$name = $elseSrc;' + eol; - src += prefix + '}'; + src += 'if ($conditionSrc) {$eol'; + src += '$prefix$indent$name = $thenSrc;$eol'; + src += '$prefix} else {$eol'; + src += '$prefix$indent$name = $elseSrc;$eol'; + src += '$prefix}'; builder.addSimpleReplacement(range.node(statement), src); }); } @@ -83,11 +83,11 @@ var thenSrc = utils.getNodeText(conditional.thenExpression); var elseSrc = utils.getNodeText(conditional.elseExpression); var src = ''; - src += 'if ($conditionSrc) {' + eol; - src += prefix + indent + 'return $thenSrc;' + eol; - src += prefix + '} else {' + eol; - src += prefix + indent + 'return $elseSrc;' + eol; - src += prefix + '}'; + src += 'if ($conditionSrc) {$eol'; + src += '$prefix${indent}return $thenSrc;$eol'; + src += '$prefix} else {$eol'; + src += '$prefix${indent}return $elseSrc;$eol'; + src += '$prefix}'; builder.addSimpleReplacement(range.node(statement), src); }); } @@ -126,11 +126,11 @@ var elseSrc = utils.getNodeText(conditional.elseExpression); var name = variable.name.name; var src = eol; - src += prefix + 'if ($conditionSrc) {' + eol; - src += prefix + indent + '$name = $thenSrc;' + eol; - src += prefix + '} else {' + eol; - src += prefix + indent + '$name = $elseSrc;' + eol; - src += prefix + '}'; + src += '${prefix}if ($conditionSrc) {$eol'; + src += '$prefix$indent$name = $thenSrc;$eol'; + src += '$prefix} else {$eol'; + src += '$prefix$indent$name = $elseSrc;$eol'; + src += '$prefix}'; builder.addSimpleReplacement(range.endLength(statement, 0), src); }); }
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/replace_with_eight_digit_hex.dart b/pkg/analysis_server/lib/src/services/correction/dart/replace_with_eight_digit_hex.dart index 17a4ab6..c6cba84 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/replace_with_eight_digit_hex.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/replace_with_eight_digit_hex.dart
@@ -40,7 +40,7 @@ if (value == null) { return; } - _replacement = '0x' + value.toRadixString(16).padLeft(8, '0'); + _replacement = '0x${value.toRadixString(16).padLeft(8, '0')}'; // // Build the edit. //
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/split_variable_declaration.dart b/pkg/analysis_server/lib/src/services/correction/dart/split_variable_declaration.dart index 8233e82..98ddb5b 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/split_variable_declaration.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/split_variable_declaration.dart
@@ -65,7 +65,7 @@ var indent = utils.getNodePrefix(statement); var name = variable.name.name; - builder.addSimpleInsertion(variable.name.end, ';' + eol + indent + name); + builder.addSimpleInsertion(variable.name.end, ';$eol$indent$name'); }); } }
diff --git a/pkg/analysis_server/lib/src/services/correction/dart/use_curly_braces.dart b/pkg/analysis_server/lib/src/services/correction/dart/use_curly_braces.dart index 7a08f4c..ac592ae 100644 --- a/pkg/analysis_server/lib/src/services/correction/dart/use_curly_braces.dart +++ b/pkg/analysis_server/lib/src/services/correction/dart/use_curly_braces.dart
@@ -61,7 +61,7 @@ Future<void> _doStatement(ChangeBuilder builder, DoStatement node) async { var body = node.body; - if (body is Block) return null; + if (body is Block) return; var prefix = utils.getLinePrefix(node.offset); var indent = prefix + utils.getIndent(1); @@ -80,7 +80,7 @@ Future<void> _forStatement(ChangeBuilder builder, ForStatement node) async { var body = node.body; - if (body is Block) return null; + if (body is Block) return; var prefix = utils.getLinePrefix(node.offset); var indent = prefix + utils.getIndent(1); @@ -135,7 +135,7 @@ Future<void> _whileStatement( ChangeBuilder builder, WhileStatement node) async { var body = node.body; - if (body is Block) return null; + if (body is Block) return; var prefix = utils.getLinePrefix(node.offset); var indent = prefix + utils.getIndent(1);
diff --git a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart index 29913b3..c3ea6b4 100644 --- a/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart +++ b/pkg/analysis_server/lib/src/services/correction/fix/data_driven/transform_set_parser.dart
@@ -812,7 +812,7 @@ var parameterSpecKey = _singleKey(node, const [_nameKey, _indexKey], node); if (parameterSpecKey == null) { // The error has already been reported. - return null; + return; } ParameterReference reference; if (parameterSpecKey == _indexKey) { @@ -820,7 +820,7 @@ ErrorContext(key: _indexKey, parentNode: node)); if (index == null) { // The error has already been reported. - return null; + return; } reference = PositionalParameterReference(index); } else {
diff --git a/pkg/analysis_server/lib/src/services/correction/levenshtein.dart b/pkg/analysis_server/lib/src/services/correction/levenshtein.dart index 8f0e934..22b0bf9 100644 --- a/pkg/analysis_server/lib/src/services/correction/levenshtein.dart +++ b/pkg/analysis_server/lib/src/services/correction/levenshtein.dart
@@ -61,7 +61,7 @@ // cost array, horizontally var d = List<int>.filled(s_len + 1, 0); // placeholder to assist in swapping p and d - List<int> _d; + List<int> holder; // fill in starting table values var boundary = math.min(s_len, threshold) + 1; @@ -106,9 +106,9 @@ } // copy current distance counts to 'previous row' distance counts - _d = p; + holder = p; p = d; - d = _d; + d = holder; } // if p[n] is greater than the threshold,
diff --git a/pkg/analysis_server/lib/src/services/correction/util.dart b/pkg/analysis_server/lib/src/services/correction/util.dart index bdb7b99..fd87a5d 100644 --- a/pkg/analysis_server/lib/src/services/correction/util.dart +++ b/pkg/analysis_server/lib/src/services/correction/util.dart
@@ -1021,7 +1021,7 @@ var lastConstant = enumDeclaration.constants.last; return ClassMemberLocation( - ';' + endOfLine + endOfLine + indent, + ';$endOfLine$endOfLine$indent', lastConstant.end, '', );
diff --git a/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart b/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart index e70ddb4..4b72c5e 100644 --- a/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart +++ b/pkg/analysis_server/lib/src/services/kythe/kythe_visitors.dart
@@ -31,7 +31,7 @@ var name = element.enclosingElement.name; var constructorName = element.name; if (constructorName.isNotEmpty) { - name = name + '.' + constructorName; + name = '$name.$constructorName'; } return name; }
diff --git a/pkg/analysis_server/lib/src/services/kythe/schema.dart b/pkg/analysis_server/lib/src/services/kythe/schema.dart index 3016742..c646373 100644 --- a/pkg/analysis_server/lib/src/services/kythe/schema.dart +++ b/pkg/analysis_server/lib/src/services/kythe/schema.dart
@@ -65,18 +65,18 @@ const EDGE_PREFIX = '/kythe/edge/'; /// Kythe edge kinds -const ANNOTATED_BY_EDGE = EDGE_PREFIX + 'annotatedby'; -const CHILD_OF_EDGE = EDGE_PREFIX + 'childof'; -const EXTENDS_EDGE = EDGE_PREFIX + 'extends'; -const INSTANTIATES_EDGE = EDGE_PREFIX + 'instantiates'; -const OVERRIDES_EDGE = EDGE_PREFIX + 'overrides'; -const PARAM_EDGE = EDGE_PREFIX + 'param'; -const TYPED_EDGE = EDGE_PREFIX + 'typed'; +const ANNOTATED_BY_EDGE = '${EDGE_PREFIX}annotatedby'; +const CHILD_OF_EDGE = '${EDGE_PREFIX}childof'; +const EXTENDS_EDGE = '${EDGE_PREFIX}extends'; +const INSTANTIATES_EDGE = '${EDGE_PREFIX}instantiates'; +const OVERRIDES_EDGE = '${EDGE_PREFIX}overrides'; +const PARAM_EDGE = '${EDGE_PREFIX}param'; +const TYPED_EDGE = '${EDGE_PREFIX}typed'; /// Kythe edge kinds associated with anchors -const DEFINES_EDGE = EDGE_PREFIX + 'defines'; -const DEFINES_BINDING_EDGE = EDGE_PREFIX + 'defines/binding'; -const DOCUMENTS_EDGE = EDGE_PREFIX + 'documents'; -const REF_EDGE = EDGE_PREFIX + 'ref'; -const REF_CALL_EDGE = EDGE_PREFIX + 'ref/call'; -const REF_IMPORTS_EDGE = EDGE_PREFIX + 'ref/imports'; +const DEFINES_EDGE = '${EDGE_PREFIX}defines'; +const DEFINES_BINDING_EDGE = '${EDGE_PREFIX}defines/binding'; +const DOCUMENTS_EDGE = '${EDGE_PREFIX}documents'; +const REF_EDGE = '${EDGE_PREFIX}ref'; +const REF_CALL_EDGE = '${EDGE_PREFIX}ref/call'; +const REF_IMPORTS_EDGE = '${EDGE_PREFIX}ref/imports';
diff --git a/pkg/analysis_server/lib/src/services/pub/pub_command.dart b/pkg/analysis_server/lib/src/services/pub/pub_command.dart index 234d5ee..1c4e758 100644 --- a/pkg/analysis_server/lib/src/services/pub/pub_command.dart +++ b/pkg/analysis_server/lib/src/services/pub/pub_command.dart
@@ -43,11 +43,11 @@ PubCommand(this._instrumentationService, this._processRunner) { // When calling the `pub` command, we must add an identifier to the // PUB_ENVIRONMENT environment variable (joined with colons). - const _pubEnvString = 'analysis_server.pub_api'; + const pubEnvString = 'analysis_server.pub_api'; final existingPubEnv = Platform.environment[_pubEnvironmentKey]; _pubEnvironmentValue = [ if (existingPubEnv?.isNotEmpty ?? false) existingPubEnv, - _pubEnvString, + pubEnvString, ].join(':'); } @@ -86,10 +86,10 @@ /// Terminates any in-process commands with [ProcessSignal.sigterm]. void shutdown() { - _activeProcesses.forEach((process) { + for (var process in _activeProcesses) { _instrumentationService.logInfo('Terminating process ${process.pid}'); process.kill(); - }); + } } /// Runs a pub command and decodes JSON from `stdout`.
diff --git a/pkg/analysis_server/lib/src/services/refactoring/extract_local.dart b/pkg/analysis_server/lib/src/services/refactoring/extract_local.dart index 4afc45f..5867145 100644 --- a/pkg/analysis_server/lib/src/services/refactoring/extract_local.dart +++ b/pkg/analysis_server/lib/src/services/refactoring/extract_local.dart
@@ -177,21 +177,18 @@ var indent = utils.getIndent(1); var expr = target.expression; { - var code = '{' + eol + prefix + indent; + var code = '{$eol$prefix$indent'; addPosition( target.offset + code.length + nameOffsetInDeclarationCode); code += declarationCode + eol; - code += prefix + indent + 'return '; + code += '$prefix${indent}return '; var edit = SourceEdit(target.offset, expr.offset - target.offset, code); occurrencesShift = target.offset + code.length - expr.offset; doSourceChange_addElementEdit(change, unitElement, edit); } - doSourceChange_addElementEdit( - change, - unitElement, - SourceEdit( - expr.end, target.end - expr.end, ';' + eol + prefix + '}')); + doSourceChange_addElementEdit(change, unitElement, + SourceEdit(expr.end, target.end - expr.end, ';$eol$prefix}')); } } // prepare replacement
diff --git a/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart b/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart index b33e29a..cbdcd00 100644 --- a/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart +++ b/pkg/analysis_server/lib/src/services/refactoring/extract_method.dart
@@ -364,7 +364,7 @@ // statements if (_selectionStatements != null) { if (returnType.isNotEmpty) { - annotations += returnType + ' '; + annotations += '$returnType '; } declarationSource = '$annotations$signature$asyncKeyword {$eol'; declarationSource += returnExpressionSource; @@ -613,7 +613,7 @@ if (parameterType is FunctionType) { var typeCode = _getTypeCode(parameterType.returnType); if (typeCode != 'dynamic') { - return typeCode + ' '; + return '$typeCode '; } } } @@ -653,7 +653,7 @@ final selectionStatements = _selectionStatements; if (selectionStatements != null) { var selectionIndent = utils.getNodePrefix(selectionStatements[0]); - var targetIndent = utils.getNodePrefix(_parentMember!) + ' '; + var targetIndent = '${utils.getNodePrefix(_parentMember!)} '; source = utils.replaceSourceIndent(source, selectionIndent, targetIndent); } // done @@ -682,9 +682,9 @@ if (_selectionExpression != null) { _selectionExpression!.accept(visitor); } else if (_selectionStatements != null) { - _selectionStatements!.forEach((statement) { + for (var statement in _selectionStatements!) { statement.accept(visitor); - }); + } } _hasAwait = visitor.result; } @@ -735,9 +735,9 @@ if (selectionStatements != null) { var typeSystem = resolveResult.typeSystem; var returnTypeComputer = _ReturnTypeComputer(typeSystem); - selectionStatements.forEach((statement) { + for (var statement in selectionStatements) { statement.accept(returnTypeComputer); - }); + } _returnType = returnTypeComputer.returnType; } // maybe single variable to return
diff --git a/pkg/analysis_server/lib/src/services/refactoring/extract_widget.dart b/pkg/analysis_server/lib/src/services/refactoring/extract_widget.dart index 6fe4778..d807a1d 100644 --- a/pkg/analysis_server/lib/src/services/refactoring/extract_widget.dart +++ b/pkg/analysis_server/lib/src/services/refactoring/extract_widget.dart
@@ -650,9 +650,10 @@ bool _isMemberOfEnclosingClass(Element element) { final enclosingClass = this.enclosingClass; if (enclosingClass != null) { - final enclosingClasses = this.enclosingClasses ??= <ClassElement>[] - ..add(enclosingClass) - ..addAll(enclosingClass.allSupertypes.map((t) => t.element)); + final enclosingClasses = this.enclosingClasses ??= <ClassElement>[ + enclosingClass, + ...enclosingClass.allSupertypes.map((t) => t.element) + ]; return enclosingClasses.contains(element.enclosingElement); } return false;
diff --git a/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart b/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart index 8a99365..00cd08f 100644 --- a/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart +++ b/pkg/analysis_server/lib/src/services/refactoring/inline_method.dart
@@ -98,7 +98,7 @@ part._implicitClassNameOffsets.forEach((String className, List<int> offsets) { for (var offset in offsets) { // edits.add(newSourceEdit_range(range, className + '.')); - edits.add(SourceEdit(offset, 0, className + '.')); + edits.add(SourceEdit(offset, 0, '$className.')); } }); // replace "this" references with invocation target @@ -765,7 +765,7 @@ void visitNode(AstNode node) { var nodeRange = range.node(node); if (!bodyRange.intersects(nodeRange)) { - return null; + return; } super.visitNode(node); }
diff --git a/pkg/analysis_server/lib/src/services/refactoring/move_file.dart b/pkg/analysis_server/lib/src/services/refactoring/move_file.dart index c8cd8e6..bdb68b6 100644 --- a/pkg/analysis_server/lib/src/services/refactoring/move_file.dart +++ b/pkg/analysis_server/lib/src/services/refactoring/move_file.dart
@@ -130,11 +130,11 @@ if (partOfs.isNotEmpty) { await changeBuilder.addDartFileEdit( result.unit.declaredElement!.source.fullName, (builder) { - partOfs.forEach((uri) { + for (var uri in partOfs) { var newUri = _getRelativeUri(newPath, oldDir); builder.addSimpleReplacement( SourceRange(uri.offset, uri.length), "'$newUri'"); - }); + } }); } } @@ -159,12 +159,12 @@ if (partOfs.isNotEmpty) { await changeBuilder.addDartFileEdit(element.source.fullName, (builder) { - partOfs.forEach((uri) { + for (var uri in partOfs) { var oldLocation = pathContext.join(oldDir, uri.stringValue); var newUri = _getRelativeUri(oldLocation, newDir); builder.addSimpleReplacement( SourceRange(uri.offset, uri.length), "'$newUri'"); - }); + } }); } }
diff --git a/pkg/analysis_server/lib/src/services/refactoring/rename_unit_member.dart b/pkg/analysis_server/lib/src/services/refactoring/rename_unit_member.dart index 113f8d8..91d1722 100644 --- a/pkg/analysis_server/lib/src/services/refactoring/rename_unit_member.dart +++ b/pkg/analysis_server/lib/src/services/refactoring/rename_unit_member.dart
@@ -142,21 +142,21 @@ void _findFlutterStateClass() { if (Flutter.instance.isStatefulWidgetDeclaration(element)) { - var oldStateName = oldName + 'State'; + var oldStateName = '${oldName}State'; var library = element.library!; _flutterWidgetState = - library.getType(oldStateName) ?? library.getType('_' + oldStateName); + library.getType(oldStateName) ?? library.getType('_$oldStateName'); } } void _updateFlutterWidgetStateName() { final flutterWidgetState = _flutterWidgetState; if (flutterWidgetState != null) { - var flutterWidgetStateNewName = newName + 'State'; + var flutterWidgetStateNewName = '${newName}State'; // If the State was private, ensure that it stays private. if (flutterWidgetState.name.startsWith('_') && !flutterWidgetStateNewName.startsWith('_')) { - flutterWidgetStateNewName = '_' + flutterWidgetStateNewName; + flutterWidgetStateNewName = '_$flutterWidgetStateNewName'; } _flutterWidgetStateNewName = flutterWidgetStateNewName; }
diff --git a/pkg/analysis_server/lib/src/status/ast_writer.dart b/pkg/analysis_server/lib/src/status/ast_writer.dart index d3917ce..b9f610a 100644 --- a/pkg/analysis_server/lib/src/status/ast_writer.dart +++ b/pkg/analysis_server/lib/src/status/ast_writer.dart
@@ -157,7 +157,7 @@ if (name == null) { return node.returnType.name; } else { - return node.returnType.name + '.' + name.name; + return '${node.returnType.name}.${name.name}'; } } else if (node is ConstructorName) { return node.toSource();
diff --git a/pkg/analysis_server/lib/src/utilities/flutter.dart b/pkg/analysis_server/lib/src/utilities/flutter.dart index 4cb6d42..7132231 100644 --- a/pkg/analysis_server/lib/src/utilities/flutter.dart +++ b/pkg/analysis_server/lib/src/utilities/flutter.dart
@@ -107,7 +107,7 @@ builder.addSimpleInsertion(listLoc, '['); } var newChildArgSrc = childArgSrc.replaceAll( - RegExp('^$indentOld', multiLine: true), '$indentNew'); + RegExp('^$indentOld', multiLine: true), indentNew); newChildArgSrc = '$prefix$newChildArgSrc,$eol$indentOld]'; builder.addSimpleReplacement(rangeNode(childArg), newChildArgSrc); }
diff --git a/pkg/analysis_server/lib/src/utilities/mocks.dart b/pkg/analysis_server/lib/src/utilities/mocks.dart index 494b98c..d51c9a5 100644 --- a/pkg/analysis_server/lib/src/utilities/mocks.dart +++ b/pkg/analysis_server/lib/src/utilities/mocks.dart
@@ -229,7 +229,7 @@ @override Future<void> restartPlugins() async { // Nothing to restart. - return null; + return; } @override
diff --git a/pkg/analysis_server/lib/src/utilities/stream.dart b/pkg/analysis_server/lib/src/utilities/stream.dart index 5ac8669..868dd67 100644 --- a/pkg/analysis_server/lib/src/utilities/stream.dart +++ b/pkg/analysis_server/lib/src/utilities/stream.dart
@@ -30,21 +30,21 @@ } var local_onPause = onPause; if (local_onPause != null) { - pauseData = local_onPause(listenData!); + pauseData = local_onPause(listenData as ListenData); } }, onResume: () { var local_onResume = onResume; if (local_onResume != null) { - var local_pauseData = pauseData!; + var local_pauseData = pauseData as PauseData; pauseData = null; - local_onResume(listenData!, local_pauseData); + local_onResume(listenData as ListenData, local_pauseData); } }, onCancel: () { var local_onCancel = onCancel; if (local_onCancel != null) { - var local_listenData = listenData!; + var local_listenData = listenData as ListenData; listenData = null; local_onCancel(local_listenData); }
diff --git a/pkg/analysis_server/lib/src/utilities/strings.dart b/pkg/analysis_server/lib/src/utilities/strings.dart index e13bfae..7ad635a 100644 --- a/pkg/analysis_server/lib/src/utilities/strings.dart +++ b/pkg/analysis_server/lib/src/utilities/strings.dart
@@ -159,9 +159,7 @@ if (text.length > limit) { var headLength = limit ~/ 2 - 1; var tailLength = limit - headLength - 3; - return text.substring(0, headLength) + - '...' + - text.substring(text.length - tailLength); + return '${text.substring(0, headLength)}...${text.substring(text.length - tailLength)}'; } return text; }
diff --git a/pkg/analysis_server/pubspec.yaml b/pkg/analysis_server/pubspec.yaml index e1680a0..20795bf 100644 --- a/pkg/analysis_server/pubspec.yaml +++ b/pkg/analysis_server/pubspec.yaml
@@ -33,9 +33,9 @@ dev_dependencies: analyzer_utilities: path: ../analyzer_utilities + lints: ^2.0.0 logging: any matcher: any - pedantic: ^1.9.0 test_reflective_loader: any dependency_overrides:
diff --git a/pkg/analysis_server/test/analysis/notification_navigation_test.dart b/pkg/analysis_server/test/analysis/notification_navigation_test.dart index b657168..f4b8b23 100644 --- a/pkg/analysis_server/test/analysis/notification_navigation_test.dart +++ b/pkg/analysis_server/test/analysis/notification_navigation_test.dart
@@ -140,7 +140,7 @@ for (var region in regions) { var offset = region.offset; if (offset < lastEnd) { - fail('$lastEnd was expected to be > $offset in\n' + regions.join('\n')); + fail('$lastEnd was expected to be > $offset in\n${regions.join('\n')}'); } lastEnd = offset + region.length; }
diff --git a/pkg/analysis_server/test/client/impl/expect_mixin.dart b/pkg/analysis_server/test/client/impl/expect_mixin.dart index 67cdc1c..295bfd5 100644 --- a/pkg/analysis_server/test/client/impl/expect_mixin.dart +++ b/pkg/analysis_server/test/client/impl/expect_mixin.dart
@@ -27,7 +27,7 @@ } else if (x is _Predicate<Object>) { // x is already a predicate that can handle anything return predicate(x); - } else if (x is _Predicate<Null>) { + } else if (x is _Predicate<void>) { // x is a unary predicate, but expects a specific type // so wrap it. return predicate((a) => (x as dynamic)(a) as bool);
diff --git a/pkg/analysis_server/test/completion_test.dart b/pkg/analysis_server/test/completion_test.dart index 894f8d4..e031aa1 100644 --- a/pkg/analysis_server/test/completion_test.dart +++ b/pkg/analysis_server/test/completion_test.dart
@@ -2130,9 +2130,9 @@ !4part 'x';''', <String>[ '1+library', - "2+import \'\';", - "3+export \'\';", - "4+part \'\';", + "2+import '';", + "3+export '';", + "4+part '';", '5+as', '6+hide', '7+show',
diff --git a/pkg/analysis_server/test/completion_test_support.dart b/pkg/analysis_server/test/completion_test_support.dart index de59784..7de6d30 100644 --- a/pkg/analysis_server/test/completion_test_support.dart +++ b/pkg/analysis_server/test/completion_test_support.dart
@@ -154,11 +154,11 @@ modifiedSource.substring(index + n); } if (modifiedSource == originalSource) { - throw StateError('No tests in source: ' + originalSource); + throw StateError('No tests in source: $originalSource'); } for (var result in validationStrings) { if (result.length < 3) { - throw StateError('Invalid location result: ' + result); + throw StateError('Invalid location result: $result'); } var id = result.substring(0, 1); var sign = result.substring(1, 2);
diff --git a/pkg/analysis_server/test/domain_completion_test.dart b/pkg/analysis_server/test/domain_completion_test.dart index 03ec19a..7503258 100644 --- a/pkg/analysis_server/test/domain_completion_test.dart +++ b/pkg/analysis_server/test/domain_completion_test.dart
@@ -2391,9 +2391,8 @@ // Wait for analysis then edit the content await waitForTasksFinished(); - var revisedContent = testCode.substring(0, completionOffset) + - 'i' + - testCode.substring(completionOffset); + var revisedContent = + '${testCode.substring(0, completionOffset)}i${testCode.substring(completionOffset)}'; ++completionOffset; server.handleRequest(AnalysisUpdateContentParams( {testFile: AddContentOverlay(revisedContent)}).toRequest('add1'));
diff --git a/pkg/analysis_server/test/domain_completion_util.dart b/pkg/analysis_server/test/domain_completion_util.dart index 9e64bec..1d02ab8 100644 --- a/pkg/analysis_server/test/domain_completion_util.dart +++ b/pkg/analysis_server/test/domain_completion_util.dart
@@ -47,7 +47,7 @@ int? replacementLength, ElementKind? elementKind}) { CompletionSuggestion? cs; - suggestions.forEach((s) { + for (var s in suggestions) { if (elementKind != null && s.element?.kind != elementKind) { return; } @@ -58,7 +58,7 @@ fail('expected exactly one $completion but found > 1'); } } - }); + } if (cs == null) { var completions = suggestions.map((s) => s.completion).toList(); @@ -69,7 +69,7 @@ fail('expected $expectationText, but found\n $completions'); } - var suggestion = cs!; + var suggestion = cs; expect(suggestion.kind, equals(kind)); expect(suggestion.selectionOffset, selectionOffset ?? completion.length); expect(suggestion.selectionLength, equals(0));
diff --git a/pkg/analysis_server/test/edit/assists_test.dart b/pkg/analysis_server/test/edit/assists_test.dart index e7ee0e0..7ba7566 100644 --- a/pkg/analysis_server/test/edit/assists_test.dart +++ b/pkg/analysis_server/test/edit/assists_test.dart
@@ -147,6 +147,6 @@ return; } } - fail('Expected to find |$message| in\n' + changes.join('\n')); + fail('Expected to find |$message| in\n${changes.join('\n')}'); } }
diff --git a/pkg/analysis_server/test/edit/postfix_completion_test.dart b/pkg/analysis_server/test/edit/postfix_completion_test.dart index 5a49b9a..656aa00 100644 --- a/pkg/analysis_server/test/edit/postfix_completion_test.dart +++ b/pkg/analysis_server/test/edit/postfix_completion_test.dart
@@ -75,7 +75,7 @@ } return; } - fail('Expected to find |$message| but got: ' + change.message); + fail('Expected to find |$message| but got: ${change.message}'); } Future<void> _prepareCompletion(String key) async {
diff --git a/pkg/analysis_server/test/edit/refactoring_test.dart b/pkg/analysis_server/test/edit/refactoring_test.dart index 8f47785..910154e 100644 --- a/pkg/analysis_server/test/edit/refactoring_test.dart +++ b/pkg/analysis_server/test/edit/refactoring_test.dart
@@ -2270,13 +2270,13 @@ SourceEdit? _findEditWithId(SourceChange change, String id) { SourceEdit? potentialEdit; - change.edits.forEach((fileEdit) { - fileEdit.edits.forEach((edit) { + for (var fileEdit in change.edits) { + for (var edit in fileEdit.edits) { if (edit.id == id) { potentialEdit = edit; } - }); - }); + } + } return potentialEdit; }
diff --git a/pkg/analysis_server/test/edit/statement_completion_test.dart b/pkg/analysis_server/test/edit/statement_completion_test.dart index 6676f45..7fa58d1 100644 --- a/pkg/analysis_server/test/edit/statement_completion_test.dart +++ b/pkg/analysis_server/test/edit/statement_completion_test.dart
@@ -119,7 +119,7 @@ } return; } - fail('Expected to find |$message| but got: ' + change.message); + fail('Expected to find |$message| but got: ${change.message}'); } Future<void> _prepareCompletion(String search,
diff --git a/pkg/analysis_server/test/integration/server/bazel_changes_test.dart b/pkg/analysis_server/test/integration/server/bazel_changes_test.dart index da935af..3a64173 100644 --- a/pkg/analysis_server/test/integration/server/bazel_changes_test.dart +++ b/pkg/analysis_server/test/integration/server/bazel_changes_test.dart
@@ -109,7 +109,7 @@ processedNotification.complete(); } }); - var resetCompleterAndErrors = () async { + resetCompleterAndErrors() async { // This is necessary because our polling uses modification timestamps // whose resolution seems to be too small for a test like this (i.e., we // write to the `command.log` file, but if the modification timestamp @@ -117,7 +117,7 @@ await Future.delayed(Duration(seconds: 1)); errors.clear(); processedNotification = Completer(); - }; + } writeFile(testFile, r''' import 'generated.dart';
diff --git a/pkg/analysis_server/test/lsp/code_actions_fixes_test.dart b/pkg/analysis_server/test/lsp/code_actions_fixes_test.dart index c4664f7..4184735 100644 --- a/pkg/analysis_server/test/lsp/code_actions_fixes_test.dart +++ b/pkg/analysis_server/test/lsp/code_actions_fixes_test.dart
@@ -145,7 +145,7 @@ newFile2(mainFilePath, withoutMarkers(content)); await initialize(); - final ofKind = (CodeActionKind kind) => getCodeActions( + ofKind(CodeActionKind kind) => getCodeActions( mainFileUri.toString(), range: rangeFromMarkers(content), kinds: [kind],
diff --git a/pkg/analysis_server/test/lsp/code_actions_refactor_test.dart b/pkg/analysis_server/test/lsp/code_actions_refactor_test.dart index 10690ba..a175f49 100644 --- a/pkg/analysis_server/test/lsp/code_actions_refactor_test.dart +++ b/pkg/analysis_server/test/lsp/code_actions_refactor_test.dart
@@ -250,7 +250,7 @@ ), ); - final ofKind = (CodeActionKind kind) => getCodeActions( + ofKind(CodeActionKind kind) => getCodeActions( mainFileUri.toString(), range: rangeFromMarkers(content), kinds: [kind],
diff --git a/pkg/analysis_server/test/lsp/code_actions_source_test.dart b/pkg/analysis_server/test/lsp/code_actions_source_test.dart index 76fb7a9..ecdfe3a 100644 --- a/pkg/analysis_server/test/lsp/code_actions_source_test.dart +++ b/pkg/analysis_server/test/lsp/code_actions_source_test.dart
@@ -166,7 +166,7 @@ workspaceCapabilities: withApplyEditSupport(emptyWorkspaceClientCapabilities)); - final ofKind = (CodeActionKind kind) => getCodeActions( + ofKind(CodeActionKind kind) => getCodeActions( mainFileUri.toString(), kinds: [kind], );
diff --git a/pkg/analysis_server/test/lsp/completion_dart_test.dart b/pkg/analysis_server/test/lsp/completion_dart_test.dart index 484434a..b91f9e7 100644 --- a/pkg/analysis_server/test/lsp/completion_dart_test.dart +++ b/pkg/analysis_server/test/lsp/completion_dart_test.dart
@@ -803,9 +803,9 @@ expect(getter.detail, equals('String')); expect(setter.detail, equals('String')); expect(both.detail, equals('String')); - [getter, setter, both].forEach((item) { + for (var item in [getter, setter, both]) { expect(item.kind, equals(CompletionItemKind.Property)); - }); + } } Future<void> test_insertReplaceRanges() async {
diff --git a/pkg/analysis_server/test/lsp/implementation_test.dart b/pkg/analysis_server/test/lsp/implementation_test.dart index dabf3ec..ab2593d 100644 --- a/pkg/analysis_server/test/lsp/implementation_test.dart +++ b/pkg/analysis_server/test/lsp/implementation_test.dart
@@ -178,6 +178,7 @@ if (shouldMatch) { expect(res, equals(expectedLocations)); } else { + // ignore: avoid_function_literals_in_foreach_calls expectedLocations.forEach((l) => expect(res, isNot(contains(res)))); } }
diff --git a/pkg/analysis_server/test/lsp/initialization_test.dart b/pkg/analysis_server/test/lsp/initialization_test.dart index 2f693e4..3949a70 100644 --- a/pkg/analysis_server/test/lsp/initialization_test.dart +++ b/pkg/analysis_server/test/lsp/initialization_test.dart
@@ -562,9 +562,9 @@ // adding to priority files, but if that's done before the file is in an // analysis root it will not occur. // https://github.com/dart-lang/sdk/issues/37338 - server.driverMap.values.forEach((driver) { + for (var driver in server.driverMap.values) { expect(driver.getCachedResult(nestedFilePath), isNotNull); - }); + } // Closing the file should remove it. await closeFile(nestedFileUri); @@ -856,9 +856,9 @@ // adding to priority files, but if that's done before the file is in an // analysis root it will not occur. // https://github.com/dart-lang/sdk/issues/37338 - server.driverMap.values.forEach((driver) { + for (var driver in server.driverMap.values) { expect(driver.getCachedResult(nestedFilePath), isNotNull); - }); + } // Closing the file should remove it. await closeFile(nestedFileUri);
diff --git a/pkg/analysis_server/test/lsp/priority_files_test.dart b/pkg/analysis_server/test/lsp/priority_files_test.dart index 028f903..21b041e 100644 --- a/pkg/analysis_server/test/lsp/priority_files_test.dart +++ b/pkg/analysis_server/test/lsp/priority_files_test.dart
@@ -21,9 +21,9 @@ await closeFile(mainFileUri); expect(server.priorityFiles, isNot(contains(mainFilePath))); - server.driverMap.values.forEach((driver) { + for (var driver in server.driverMap.values) { expect(driver.priorityFiles, isNot(contains(mainFilePath))); - }); + } } Future<void> test_open() async { @@ -31,8 +31,8 @@ await openFile(mainFileUri, ''); expect(server.priorityFiles, contains(mainFilePath)); - server.driverMap.values.forEach((driver) { + for (var driver in server.driverMap.values) { expect(driver.priorityFiles, contains(mainFilePath)); - }); + } } }
diff --git a/pkg/analysis_server/test/lsp/server_abstract.dart b/pkg/analysis_server/test/lsp/server_abstract.dart index fd2d8b2..0873411 100644 --- a/pkg/analysis_server/test/lsp/server_abstract.dart +++ b/pkg/analysis_server/test/lsp/server_abstract.dart
@@ -261,7 +261,7 @@ } void mergeJson(Map<String, dynamic> source, Map<String, dynamic> dest) { - source.keys.forEach((key) { + for (var key in source.keys) { var sourceValue = source[key]; var destValue = dest[key]; if (sourceValue is Map<String, dynamic> && @@ -270,7 +270,7 @@ } else { dest[key] = source[key]; } - }); + } } TextDocumentClientCapabilities @@ -739,14 +739,14 @@ void applyTextDocumentEdits( Map<String, String> oldFileContent, List<TextDocumentEdit> edits) { - edits.forEach((edit) { + for (var edit in edits) { final path = Uri.parse(edit.textDocument.uri).toFilePath(); if (!oldFileContent.containsKey(path)) { throw 'Recieved edits for $path which was not provided as a file to be edited. ' 'Perhaps a CreateFile change was missing from the edits?'; } oldFileContent[path] = applyTextDocumentEdit(oldFileContent[path]!, edit); - }); + } } String applyTextEdit(String content, @@ -910,18 +910,23 @@ ) { documentChanges.map( // Validate versions on simple doc edits - (edits) => edits - .forEach((edit) => expectDocumentVersion(edit, expectedVersions)), + (edits) { + for (var edit in edits) { + expectDocumentVersion(edit, expectedVersions); + } + }, // For resource changes, we only need to validate changes since // creates/renames/deletes do not supply versions. - (changes) => changes.forEach((change) { - change.map( - (edit) => expectDocumentVersion(edit, expectedVersions), - (create) => {}, - (rename) {}, - (delete) {}, - ); - }), + (changes) { + for (var change in changes) { + change.map( + (edit) => expectDocumentVersion(edit, expectedVersions), + (create) => {}, + (rename) {}, + (delete) {}, + ); + } + }, ); }
diff --git a/pkg/analysis_server/test/mocks.dart b/pkg/analysis_server/test/mocks.dart index 60c1114..a3bfbb5 100644 --- a/pkg/analysis_server/test/mocks.dart +++ b/pkg/analysis_server/test/mocks.dart
@@ -57,8 +57,8 @@ final _exitCodeCompleter = Completer<int>(); final String _stdout, _stderr; - MockProcess(this._pid, FutureOr<int> _exitCode, this._stdout, this._stderr) { - Future.value(_exitCode).then(_exitCodeCompleter.complete); + MockProcess(this._pid, FutureOr<int> exitCode, this._stdout, this._stderr) { + Future.value(exitCode).then(_exitCodeCompleter.complete); } @override
diff --git a/pkg/analysis_server/test/mocks_lsp.dart b/pkg/analysis_server/test/mocks_lsp.dart index 3888981..8478ce4 100644 --- a/pkg/analysis_server/test/mocks_lsp.dart +++ b/pkg/analysis_server/test/mocks_lsp.dart
@@ -28,12 +28,12 @@ /// Warning popups sent to the user. final shownWarnings = <lsp.ShowMessageParams>[]; - MockLspServerChannel(bool _printMessages) { - if (_printMessages) { + MockLspServerChannel(bool printMessages) { + if (printMessages) { _serverToClient.stream - .listen((message) => print('<== ' + jsonEncode(message))); + .listen((message) => print('<== ${jsonEncode(message)}')); _clientToServer.stream - .listen((message) => print('==> ' + jsonEncode(message))); + .listen((message) => print('==> ${jsonEncode(message)}')); } // Keep track of any errors/warnings that are sent to the user with
diff --git a/pkg/analysis_server/test/search/abstract_search_domain.dart b/pkg/analysis_server/test/search/abstract_search_domain.dart index 54b8990..15cba77 100644 --- a/pkg/analysis_server/test/search/abstract_search_domain.dart +++ b/pkg/analysis_server/test/search/abstract_search_domain.dart
@@ -38,7 +38,7 @@ location.offset == offset && location.length == length) { if (!expected) { - fail('Unexpected result $result in\n' + results.join('\n')); + fail('Unexpected result $result in\n${results.join('\n')}'); } this.result = result; return; @@ -46,8 +46,7 @@ } if (expected) { fail( - 'Not found: "search" kind=$kind offset=$offset length=$length\nin\n' + - results.join('\n')); + 'Not found: "search" kind=$kind offset=$offset length=$length\nin\n${results.join('\n')}'); } }
diff --git a/pkg/analysis_server/test/search/member_declarations_test.dart b/pkg/analysis_server/test/search/member_declarations_test.dart index 29e27c9..42be69a 100644 --- a/pkg/analysis_server/test/search/member_declarations_test.dart +++ b/pkg/analysis_server/test/search/member_declarations_test.dart
@@ -20,7 +20,7 @@ void assertHasDeclaration(ElementKind kind, String className) { var result = findTopLevelResult(kind, className); if (result == null) { - fail('Not found: kind=$kind in="$className"\nin\n' + results.join('\n')); + fail('Not found: kind=$kind in="$className"\nin\n${results.join('\n')}'); } this.result = result; }
diff --git a/pkg/analysis_server/test/search/top_level_declarations_test.dart b/pkg/analysis_server/test/search/top_level_declarations_test.dart index 977f966..6fd2959 100644 --- a/pkg/analysis_server/test/search/top_level_declarations_test.dart +++ b/pkg/analysis_server/test/search/top_level_declarations_test.dart
@@ -20,7 +20,7 @@ void assertHasDeclaration(ElementKind kind, String name) { var result = findTopLevelResult(kind, name); if (result == null) { - fail('Not found: kind=$kind name="$name"\nin\n' + results.join('\n')); + fail('Not found: kind=$kind name="$name"\nin\n${results.join('\n')}'); } this.result = result; } @@ -28,7 +28,7 @@ void assertNoDeclaration(ElementKind kind, String name) { var result = findTopLevelResult(kind, name); if (result != null) { - fail('Unexpected: kind=$kind name="$name"\nin\n' + results.join('\n')); + fail('Unexpected: kind=$kind name="$name"\nin\n${results.join('\n')}'); } }
diff --git a/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart b/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart index 371d0a0..4c5f292 100644 --- a/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart +++ b/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart
@@ -607,17 +607,17 @@ CompletionSuggestionKind? csKind, ElementKind? elemKind}) { CompletionSuggestion? cs; - suggestions.forEach((CompletionSuggestion s) { + for (var s in suggestions) { if (completion != null && completion != s.completion) { - return; + continue; } if (csKind != null && csKind != s.kind) { - return; + continue; } if (elemKind != null) { var element = s.element; if (element == null || elemKind != element.kind) { - return; + continue; } } if (cs == null) { @@ -626,7 +626,7 @@ failedCompletion('expected exactly one $cs', suggestions.where((s) => s.completion == completion)); } - }); + } return cs; }
diff --git a/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart index 1918e2d..3043a0d 100644 --- a/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart +++ b/pkg/analysis_server/test/services/completion/dart/keyword_contributor_test.dart
@@ -2346,8 +2346,9 @@ StringBuffer msg, Iterable<String> completions, Iterable<String> other) { var sorted = completions.toList(); sorted.sort((c1, c2) => c1.compareTo(c2)); - sorted.forEach( - (c) => msg.writeln(' $c, ${other.contains(c) ? '' : '<<<<<<<<<<<'}')); + for (var c in sorted) { + msg.writeln(' $c, ${other.contains(c) ? '' : '<<<<<<<<<<<'}'); + } } bool _equalSets(Iterable<String> iter1, Iterable<String> iter2) {
diff --git a/pkg/analysis_server/test/services/completion/postfix/postfix_completion_test.dart b/pkg/analysis_server/test/services/completion/postfix/postfix_completion_test.dart index 7676492..fa81e8d 100644 --- a/pkg/analysis_server/test/services/completion/postfix/postfix_completion_test.dart +++ b/pkg/analysis_server/test/services/completion/postfix/postfix_completion_test.dart
@@ -47,7 +47,7 @@ } return; } - fail('Expected to find |$message| but got: ' + change.message); + fail('Expected to find |$message| but got: ${change.message}'); } Future<void> _assertNotApplicable(String key, String code) async {
diff --git a/pkg/analysis_server/test/services/completion/statement/statement_completion_test.dart b/pkg/analysis_server/test/services/completion/statement/statement_completion_test.dart index ad27bcd..f2bece5 100644 --- a/pkg/analysis_server/test/services/completion/statement/statement_completion_test.dart +++ b/pkg/analysis_server/test/services/completion/statement/statement_completion_test.dart
@@ -57,7 +57,7 @@ } return; } - fail('Expected to find |$message| but got: ' + change.message); + fail('Expected to find |$message| but got: ${change.message}'); } Future<void> _computeCompletion(int offset) async {
diff --git a/pkg/analysis_server/test/services/refactoring/naming_conventions_test.dart b/pkg/analysis_server/test/services/refactoring/naming_conventions_test.dart index 50ccb48..05be8f8 100644 --- a/pkg/analysis_server/test/services/refactoring/naming_conventions_test.dart +++ b/pkg/analysis_server/test/services/refactoring/naming_conventions_test.dart
@@ -575,7 +575,7 @@ void test_validateTypeAliasName_invalidCharacters() { assertRefactoringStatus( validateTypeAliasName('New-Name'), RefactoringProblemSeverity.FATAL, - expectedMessage: "Type alias name must not contain \'-\'."); + expectedMessage: "Type alias name must not contain '-'."); } void test_validateTypeAliasName_leadingBlanks() {
diff --git a/pkg/analysis_server/test/services/snippets/dart/dart_snippet_producers_test.dart b/pkg/analysis_server/test/services/snippets/dart/dart_snippet_producers_test.dart index 70374d3..4c00dfa 100644 --- a/pkg/analysis_server/test/services/snippets/dart/dart_snippet_producers_test.dart +++ b/pkg/analysis_server/test/services/snippets/dart/dart_snippet_producers_test.dart
@@ -51,8 +51,9 @@ expect(snippet.label, label); expect(snippet.change.edits, hasLength(1)); code = withoutMarkers(code); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' class A {} @@ -96,8 +97,9 @@ expect(snippet.label, label); expect(snippet.change.edits, hasLength(1)); code = withoutMarkers(code); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' void f() { do { @@ -139,8 +141,9 @@ expect(snippet.label, label); expect(snippet.change.edits, hasLength(1)); code = withoutMarkers(code); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' void f() { for (var element in collection) { @@ -189,8 +192,9 @@ expect(snippet.label, label); expect(snippet.change.edits, hasLength(1)); code = withoutMarkers(code); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' void f() { for (var i = 0; i < count; i++) { @@ -232,8 +236,9 @@ expect(snippet.label, label); expect(snippet.change.edits, hasLength(1)); code = withoutMarkers(code); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' void f() { if (condition) { @@ -267,8 +272,9 @@ expect(snippet.label, label); expect(snippet.change.edits, hasLength(1)); code = withoutMarkers(code); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' void f() { if (true) { @@ -314,8 +320,9 @@ expect(snippet.label, label); expect(snippet.change.edits, hasLength(1)); code = withoutMarkers(code); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' void f() { if (condition) { @@ -347,8 +354,9 @@ expect(snippet.label, label); expect(snippet.change.edits, hasLength(1)); code = withoutMarkers(code); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' void f() { if (true) { @@ -419,8 +427,9 @@ expect(snippet.label, label); expect(snippet.change.edits, hasLength(1)); code = withoutMarkers(code); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } final expectedParams = expectArgsParameter ? 'List<String> args' : ''; expect(code, ''' void main($expectedParams) { @@ -492,8 +501,9 @@ expect(snippet.label, label); expect(snippet.change.edits, hasLength(1)); code = withoutMarkers(code); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' void f() { switch (expression) { @@ -537,8 +547,9 @@ expect(snippet.label, label); expect(snippet.change.edits, hasLength(1)); code = withoutMarkers(code); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' void f() { if (true) { @@ -595,8 +606,9 @@ expect(snippet.label, label); expect(snippet.change.edits, hasLength(1)); code = withoutMarkers(code); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' void f() { test('test name', () { @@ -647,8 +659,9 @@ expect(snippet.label, label); expect(snippet.change.edits, hasLength(1)); code = withoutMarkers(code); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' void f() { group('group name', () { @@ -698,8 +711,9 @@ expect(snippet.label, label); expect(snippet.change.edits, hasLength(1)); code = withoutMarkers(code); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' void f() { try { @@ -733,8 +747,9 @@ expect(snippet.label, label); expect(snippet.change.edits, hasLength(1)); code = withoutMarkers(code); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' void f() { if (true) { @@ -780,8 +795,9 @@ expect(snippet.label, label); expect(snippet.change.edits, hasLength(1)); code = withoutMarkers(code); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' void f() { while (condition) {
diff --git a/pkg/analysis_server/test/services/snippets/dart/flutter_snippet_producers_test.dart b/pkg/analysis_server/test/services/snippets/dart/flutter_snippet_producers_test.dart index 8cd7dbc..16423ce 100644 --- a/pkg/analysis_server/test/services/snippets/dart/flutter_snippet_producers_test.dart +++ b/pkg/analysis_server/test/services/snippets/dart/flutter_snippet_producers_test.dart
@@ -86,8 +86,9 @@ expect(snippet.label, label); var code = ''; expect(snippet.change.edits, hasLength(1)); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' import 'package:flutter/src/foundation/key.dart'; import 'package:flutter/src/widgets/framework.dart'; @@ -121,8 +122,9 @@ expect(snippet.label, label); var code = ''; expect(snippet.change.edits, hasLength(1)); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' import 'package:flutter/src/widgets/framework.dart'; @@ -181,8 +183,9 @@ expect(snippet.label, label); var code = ''; expect(snippet.change.edits, hasLength(1)); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' import 'package:flutter/src/animation/animation_controller.dart'; import 'package:flutter/src/foundation/key.dart'; @@ -233,8 +236,9 @@ expect(snippet.label, label); var code = ''; expect(snippet.change.edits, hasLength(1)); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' import 'package:flutter/src/animation/animation_controller.dart'; import 'package:flutter/src/widgets/framework.dart'; @@ -307,8 +311,9 @@ expect(snippet.label, label); var code = ''; expect(snippet.change.edits, hasLength(1)); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' import 'package:flutter/src/foundation/key.dart'; import 'package:flutter/src/widgets/framework.dart'; @@ -337,8 +342,9 @@ expect(snippet.label, label); var code = ''; expect(snippet.change.edits, hasLength(1)); - snippet.change.edits - .forEach((edit) => code = SourceEdit.applySequence(code, edit.edits)); + for (var edit in snippet.change.edits) { + code = SourceEdit.applySequence(code, edit.edits); + } expect(code, ''' import 'package:flutter/src/widgets/framework.dart';
diff --git a/pkg/analysis_server/test/src/computer/closing_labels_computer_test.dart b/pkg/analysis_server/test/src/computer/closing_labels_computer_test.dart index 307a91f..0aa5e78 100644 --- a/pkg/analysis_server/test/src/computer/closing_labels_computer_test.dart +++ b/pkg/analysis_server/test/src/computer/closing_labels_computer_test.dart
@@ -381,7 +381,7 @@ // Go through each marker, find the expected label/end and // ensure it's in the results. - expectedLabels.forEach((m) { + for (var m in expectedLabels) { var i = m.group(1); // Find the end marker. var endMatch = RegExp('/\\*$i:(.+?)\\*/').firstMatch(content)!; @@ -392,7 +392,7 @@ expect(labels, contains(ClosingLabel(expectedStart, expectedLength, expectedLabel))); - }); + } } Future<List<ClosingLabel>> _computeElements(String sourceContent) async {
diff --git a/pkg/analysis_server/test/src/computer/folding_computer_test.dart b/pkg/analysis_server/test/src/computer/folding_computer_test.dart index 09c90df..7ee425d 100644 --- a/pkg/analysis_server/test/src/computer/folding_computer_test.dart +++ b/pkg/analysis_server/test/src/computer/folding_computer_test.dart
@@ -555,7 +555,7 @@ // Go through each marker, find the expected region start/end and // ensure it's in the results. - expectedRegions.forEach((m) { + for (var m in expectedRegions) { final i = m.group(1); final inclusiveStart = m.group(2) == 'INC'; // Find the end marker. @@ -576,7 +576,7 @@ expect(regions, contains(FoldingRegion(expectedKind, expectedStart, expectedLength))); - }); + } } Future<List<FoldingRegion>> _computeRegions(String sourceContent) async {
diff --git a/pkg/analysis_server/test/src/lsp/lsp_packet_transformer_test.dart b/pkg/analysis_server/test/src/lsp/lsp_packet_transformer_test.dart index d25328e..61c0d1b 100644 --- a/pkg/analysis_server/test/src/lsp/lsp_packet_transformer_test.dart +++ b/pkg/analysis_server/test/src/lsp/lsp_packet_transformer_test.dart
@@ -85,9 +85,8 @@ List<int> makeLspPacket(String json, [String? contentType]) { final utf8EncodedBody = utf8.encode(json); - final header = 'Content-Length: ${utf8EncodedBody.length}' + - (contentType != null ? '\r\nContent-Type: $contentType' : '') + - '\r\n\r\n'; + final header = + 'Content-Length: ${utf8EncodedBody.length}${contentType != null ? '\r\nContent-Type: $contentType' : ''}\r\n\r\n'; final asciiEncodedHeader = ascii.encode(header); return asciiEncodedHeader.followedBy(utf8EncodedBody).toList();
diff --git a/pkg/analysis_server/test/src/plugin/plugin_watcher_test.dart b/pkg/analysis_server/test/src/plugin/plugin_watcher_test.dart index 7d12566..358bb99 100644 --- a/pkg/analysis_server/test/src/plugin/plugin_watcher_test.dart +++ b/pkg/analysis_server/test/src/plugin/plugin_watcher_test.dart
@@ -114,7 +114,7 @@ Future<void> addPluginToContextRoot( ContextRoot contextRoot, String path) async { addedContextRoots.add(contextRoot); - return null; + return; } @override
diff --git a/pkg/analysis_server/test/src/services/completion/filtering/fuzzy_matcher_test.dart b/pkg/analysis_server/test/src/services/completion/filtering/fuzzy_matcher_test.dart index e1cda4a..c4916c9 100644 --- a/pkg/analysis_server/test/src/services/completion/filtering/fuzzy_matcher_test.dart +++ b/pkg/analysis_server/test/src/services/completion/filtering/fuzzy_matcher_test.dart
@@ -26,10 +26,8 @@ var index = 0; var result = ''; for (var i = 0; i < matches.length - 1; i += 2) { - result += str.substring(index, matches[i]) + - '[' + - str.substring(matches[i], matches[i + 1]) + - ']'; + result += + '${str.substring(index, matches[i])}[${str.substring(matches[i], matches[i + 1])}]'; index = matches[i + 1]; } return result + str.substring(index);
diff --git a/pkg/analysis_server/test/stress/replay/replay.dart b/pkg/analysis_server/test/stress/replay/replay.dart index 2cbad2f..fbfe0e1 100644 --- a/pkg/analysis_server/test/stress/replay/replay.dart +++ b/pkg/analysis_server/test/stress/replay/replay.dart
@@ -100,7 +100,7 @@ // Process the command-line arguments. // if (!_processCommandLine(args)) { - return null; + return; } if (verbose) { stdout.writeln();
diff --git a/pkg/analysis_server/test/stress/utilities/server.dart b/pkg/analysis_server/test/stress/utilities/server.dart index 68ef712..93daac0 100644 --- a/pkg/analysis_server/test/stress/utilities/server.dart +++ b/pkg/analysis_server/test/stress/utilities/server.dart
@@ -231,11 +231,11 @@ stdout.writeln(' none'); } else { var requestsByMethod = <String, List<RequestData>>{}; - _requestDataMap.values.forEach((RequestData requestData) { + for (var requestData in _requestDataMap.values) { requestsByMethod .putIfAbsent(requestData.method, () => <RequestData>[]) .add(requestData); - }); + } var keys = requestsByMethod.keys.toList(); keys.sort(); var maxCount = requestsByMethod.values @@ -248,7 +248,7 @@ var minTime = -1; var maxTime = -1; var totalTime = 0; - requests.forEach((RequestData data) { + for (var data in requests) { if (data.responseTime == null) { noResponseCount++; } else { @@ -258,7 +258,7 @@ maxTime = math.max(maxTime, time); totalTime += time; } - }); + } var count = requests.length.toString(); writeSpaces(countWidth - count.length); stdout.write(' '); @@ -745,7 +745,7 @@ /// Handle a [line] of input read from stderr. void _handleStdErr(String line) { var trimmedLine = line.trim(); - logger?.log(fromStderr, '$trimmedLine'); + logger?.log(fromStderr, trimmedLine); throw StateError('Message received on stderr: "$trimmedLine"'); } @@ -765,7 +765,7 @@ trimmedLine.startsWith('The Dart VM service is listening on ')) { return; } - logger?.log(fromServer, '$trimmedLine'); + logger?.log(fromServer, trimmedLine); var message = asMap(json.decoder.convert(trimmedLine) as Object); if (message.containsKey('id')) { // The message is a response. @@ -807,7 +807,7 @@ } var line = json.encode(command); _process!.stdin.add(utf8.encoder.convert('$line\n')); - logger?.log(fromClient, '$line'); + logger?.log(fromClient, line); return requestData; } }
diff --git a/pkg/analysis_server/test/tool/lsp_spec/json_test.dart b/pkg/analysis_server/test/tool/lsp_spec/json_test.dart index 04a78a6..2ecc605 100644 --- a/pkg/analysis_server/test/tool/lsp_spec/json_test.dart +++ b/pkg/analysis_server/test/tool/lsp_spec/json_test.dart
@@ -12,10 +12,10 @@ void main() { group('toJson', () { test('returns correct JSON for a union', () { - final _num = Either2.t1(1); - final _string = Either2.t2('Test'); - expect(json.encode(_num.toJson()), equals('1')); - expect(json.encode(_string.toJson()), equals('"Test"')); + final num = Either2.t1(1); + final string = Either2.t2('Test'); + expect(json.encode(num.toJson()), equals('1')); + expect(json.encode(string.toJson()), equals('"Test"')); }); test('returns correct output for union types', () {
diff --git a/pkg/analysis_server/test/tool/lsp_spec/typescript_test.dart b/pkg/analysis_server/test/tool/lsp_spec/typescript_test.dart index 2fbe495..990d952 100644 --- a/pkg/analysis_server/test/tool/lsp_spec/typescript_test.dart +++ b/pkg/analysis_server/test/tool/lsp_spec/typescript_test.dart
@@ -92,12 +92,12 @@ expect(output[0], const TypeMatcher<Interface>()); final interface = output[0] as Interface; expect(interface.members, hasLength(2)); - [0, 1].forEach((i) { + for (var i in [0, 1]) { expect(interface.members[i], const TypeMatcher<Field>()); final field = interface.members[i] as Field; expect(field.name, equals('options$i')); expect(field.commentText, equals('''Options$i used by something.''')); - }); + } }); test('parses an interface with type args', () { @@ -176,7 +176,9 @@ final output = parseString(input); final interface = output[0] as Interface; expect(interface.members, hasLength(4)); - interface.members.forEach((m) => expect(m, const TypeMatcher<Field>())); + for (var m in interface.members) { + expect(m, const TypeMatcher<Field>()); + } final canBeBoth = interface.members[0] as Field, canBeNeither = interface.members[1] as Field, canBeNull = interface.members[2] as Field, @@ -299,7 +301,9 @@ expect(output[0], const TypeMatcher<Namespace>()); final namespace = output[0] as Namespace; expect(namespace.members, hasLength(3)); - namespace.members.forEach((m) => expect(m, const TypeMatcher<Const>())); + for (var m in namespace.members) { + expect(m, const TypeMatcher<Const>()); + } final create = namespace.members[0] as Const, delete = namespace.members[1] as Const, rename = namespace.members[2] as Const;
diff --git a/pkg/analysis_server/tool/code_completion/completion_metrics.dart b/pkg/analysis_server/tool/code_completion/completion_metrics.dart index d6f8764..fcc4650 100644 --- a/pkg/analysis_server/tool/code_completion/completion_metrics.dart +++ b/pkg/analysis_server/tool/code_completion/completion_metrics.dart
@@ -1051,7 +1051,7 @@ var columnHeaders = [' ', targetMetrics[0].name]; for (var i = 1; i < targetMetrics.length; i++) { columnHeaders.add('|'); - columnHeaders.add('${targetMetrics[i].name}'); + columnHeaders.add(targetMetrics[i].name); columnHeaders.add('delta'); } var blankRow = [for (int i = 0; i < columnHeaders.length; i++) ''];
diff --git a/pkg/analysis_server/tool/code_completion/implicit_type_declarations.dart b/pkg/analysis_server/tool/code_completion/implicit_type_declarations.dart index 83be746..647850c 100644 --- a/pkg/analysis_server/tool/code_completion/implicit_type_declarations.dart +++ b/pkg/analysis_server/tool/code_completion/implicit_type_declarations.dart
@@ -122,7 +122,7 @@ for (var varDecl in node.variables) { handleVariableDeclaration(varDecl, node.type?.type); } - return null; + return; } }
diff --git a/pkg/analysis_server/tool/code_completion/relevance_metrics.dart b/pkg/analysis_server/tool/code_completion/relevance_metrics.dart index 97f3c5c..34b7f53 100644 --- a/pkg/analysis_server/tool/code_completion/relevance_metrics.dart +++ b/pkg/analysis_server/tool/code_completion/relevance_metrics.dart
@@ -1521,9 +1521,9 @@ {List<Keyword> allowedKeywords = noKeywords}) { _recordElementKind(context, node); if (inGenericContext) { - _recordElementKind(context + ' - generic', node); + _recordElementKind('$context - generic', node); } else { - _recordElementKind(context + ' - non-generic', node); + _recordElementKind('$context - non-generic', node); } _recordReferenceDepth(node); _recordTokenDistance(node); @@ -1807,10 +1807,10 @@ String descriptor, DartType parameterType, DartType argumentType, {bool isContextType = false}) { if (argumentType == parameterType) { - data.recordTypeMatch('$descriptor', 'exact'); + data.recordTypeMatch(descriptor, 'exact'); data.recordTypeMatch('all', 'exact'); } else if (typeSystem.isSubtypeOf(argumentType, parameterType)) { - data.recordTypeMatch('$descriptor', 'subtype'); + data.recordTypeMatch(descriptor, 'subtype'); data.recordTypeMatch('all', 'subtype'); if (isContextType && argumentType is InterfaceType && @@ -1835,10 +1835,10 @@ data.recordDistance('Subtype of context type (all)', distance); } } else if (typeSystem.isSubtypeOf(parameterType, argumentType)) { - data.recordTypeMatch('$descriptor', 'supertype'); + data.recordTypeMatch(descriptor, 'supertype'); data.recordTypeMatch('all', 'supertype'); } else { - data.recordTypeMatch('$descriptor', 'unrelated'); + data.recordTypeMatch(descriptor, 'unrelated'); data.recordTypeMatch('all', 'unrelated'); } }
diff --git a/pkg/analysis_server/tool/instrumentation/log/log.dart b/pkg/analysis_server/tool/instrumentation/log/log.dart index 4ede5ea..11643d6 100644 --- a/pkg/analysis_server/tool/instrumentation/log/log.dart +++ b/pkg/analysis_server/tool/instrumentation/log/log.dart
@@ -450,12 +450,12 @@ buffer.write('}'); } else if (object is List) { buffer.write('[<br>'); - object.forEach((element) { + for (var element in object) { var newIndent = indent + singleIndent; buffer.write(newIndent); _format(buffer, newIndent, element as Object); buffer.write('<br>'); - }); + } buffer.write(indent); buffer.write(']'); }
diff --git a/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart b/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart index ba060b9..12998d6 100644 --- a/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart +++ b/pkg/analysis_server/tool/lsp_spec/codegen_dart.dart
@@ -39,7 +39,7 @@ final buffer = IndentableStringBuffer(); _getSortedUnique(types).forEach((t) => _writeType(buffer, t)); final formattedCode = _formatCode(buffer.toString()); - return formattedCode.trim() + '\n'; // Ensure a single trailing newline. + return '${formattedCode.trim()}\n'; // Ensure a single trailing newline. } void recordTypes(List<AstNode> types) { @@ -50,10 +50,10 @@ _interfaces[interface.name] = interface; // Keep track of our base classes so they can look up their super classes // later in their fromJson() to deserialise into the most specific type. - interface.baseTypes.forEach((base) { + for (var base in interface.baseTypes) { final subTypes = _subtypes[base.dartType] ??= <String>[]; subTypes.add(interface.name); - }); + } }); types .whereType<Namespace>() @@ -108,7 +108,7 @@ /// Returns a copy of the list sorted by name with duplicates (by name+type) removed. List<N> _getSortedUnique<N extends AstNode>(List<N> items) { final uniqueByName = <String, N>{}; - items.forEach((item) { + for (var item in items) { // It's fine to have the same name used for different types (eg. namespace + // type alias) but some types are just duplicated entirely in the spec in // different positions which should not be emitted twice. @@ -124,7 +124,7 @@ // Keep the last one as in some cases the first definition is less specific. uniqueByName[nameTypeKey] = item; - }); + } final sortedList = uniqueByName.values.toList(); sortedList.sort((item1, item2) => item1.name.compareTo(item2.name)); return sortedList; @@ -348,7 +348,9 @@ // Wrap at 80 - 4 ('/// ') - indent characters. var wrappedLines = _wrapLines(originalLines, (80 - 4 - buffer.totalIndent).clamp(0, 80)); - wrappedLines.forEach((l) => buffer.writeIndentedln('/// $l'.trim())); + for (var l in wrappedLines) { + buffer.writeIndentedln('/// $l'.trim()); + } } // Marking LSP-deprecated fields as deprecated in Dart results in a lot // of warnings because we still often populate these fields for clients that @@ -392,9 +394,9 @@ buffer ..writeIndentedln('switch (obj) {') ..indent(); - consts.forEach((cons) { + for (var cons in consts) { buffer.writeIndentedln('case ${cons.valueAsLiteral}:'); - }); + } buffer ..indent() ..writeIndentedln('return true;')
diff --git a/pkg/analysis_server/tool/lsp_spec/generate_all.dart b/pkg/analysis_server/tool/lsp_spec/generate_all.dart index f050549..b25b7c7 100644 --- a/pkg/analysis_server/tool/lsp_spec/generate_all.dart +++ b/pkg/analysis_server/tool/lsp_spec/generate_all.dart
@@ -162,6 +162,8 @@ // "pkg/analysis_server/tool/lsp_spec/generate_all.dart". // ignore_for_file: annotate_overrides +// ignore_for_file: no_leading_underscores_for_local_identifiers +// ignore_for_file: prefer_is_not_operator // ignore_for_file: unnecessary_parenthesis import 'dart:core' hide deprecated;
diff --git a/pkg/analysis_server/tool/lsp_spec/typescript.dart b/pkg/analysis_server/tool/lsp_spec/typescript.dart index e0b3812..82ac9c2 100644 --- a/pkg/analysis_server/tool/lsp_spec/typescript.dart +++ b/pkg/analysis_server/tool/lsp_spec/typescript.dart
@@ -27,33 +27,33 @@ comment = comment.substring(2); } - final _commentLinePrefixes = RegExp(r'\n\s*\* ?'); - final _nonConcurrentNewlines = RegExp(r'\n(?![\n\s\-*])'); - final _newLinesThatRequireReinserting = RegExp(r'\n (\w)'); + final commentLinePrefixes = RegExp(r'\n\s*\* ?'); + final nonConcurrentNewlines = RegExp(r'\n(?![\n\s\-*])'); + final newLinesThatRequireReinserting = RegExp(r'\n (\w)'); // Remove any Windows newlines from the source. comment = comment.replaceAll('\r', ''); // Remove the * prefixes. - comment = comment.replaceAll(_commentLinePrefixes, '\n'); + comment = comment.replaceAll(commentLinePrefixes, '\n'); // Remove and newlines that look like wrapped text. - comment = comment.replaceAll(_nonConcurrentNewlines, ' '); + comment = comment.replaceAll(nonConcurrentNewlines, ' '); // The above will remove one of the newlines when there are two, so we need // to re-insert newlines for any block that starts immediately after a newline. comment = comment.replaceAllMapped( - _newLinesThatRequireReinserting, (m) => '\n\n${m.group(1)}'); + newLinesThatRequireReinserting, (m) => '\n\n${m.group(1)}'); return comment.trim(); } /// Improves comments in generated code to support where types may have been /// altered (for ex. with [getImprovedType] above). String? getImprovedComment(String interfaceName, String fieldName) { - const _improvedComments = <String, Map<String, String>>{ + const improvedComments = <String, Map<String, String>>{ 'ResponseError': { 'data': '// A string that contains additional information about the error. Can be omitted.', }, }; - final interface = _improvedComments[interfaceName]; + final interface = improvedComments[interfaceName]; return interface != null ? interface[fieldName] : null; } @@ -68,7 +68,7 @@ /// and we know we always use a specific type. This avoids wrapping a lot /// of code in `EitherX<Y,Z>.tX()` and simplifies the testing of them. String? getImprovedType(String interfaceName, String? fieldName) { - const _improvedTypeMappings = <String, Map<String, String>>{ + const improvedTypeMappings = <String, Map<String, String>>{ 'Diagnostic': { 'severity': 'DiagnosticSeverity', 'code': 'String', @@ -129,7 +129,7 @@ } }; - final interface = _improvedTypeMappings[interfaceName]; + final interface = improvedTypeMappings[interfaceName]; return interface != null ? interface[fieldName] : null; }
diff --git a/pkg/analysis_server/tool/lsp_spec/typescript_parser.dart b/pkg/analysis_server/tool/lsp_spec/typescript_parser.dart index d897d0b..d35dc51 100644 --- a/pkg/analysis_server/tool/lsp_spec/typescript_parser.dart +++ b/pkg/analysis_server/tool/lsp_spec/typescript_parser.dart
@@ -367,12 +367,12 @@ // marked with number. final commentText = leadingComment?.text; if (commentText != null) { - final _linkTypePattern = RegExp(r'See \{@link (\w+)\}\.?'); - final linkTypeMatch = _linkTypePattern.firstMatch(commentText); + final linkTypePattern = RegExp(r'See \{@link (\w+)\}\.?'); + final linkTypeMatch = linkTypePattern.firstMatch(commentText); if (linkTypeMatch != null) { type = Type.identifier(linkTypeMatch.group(1)!); leadingComment = Comment(Token(TokenType.COMMENT, - '// ' + commentText.replaceAll(_linkTypePattern, ''))); + '// ${commentText.replaceAll(linkTypePattern, '')}')); } }
diff --git a/pkg/analysis_server/tool/spec/codegen_java_types.dart b/pkg/analysis_server/tool/spec/codegen_java_types.dart index cd11d2c..d48acf3 100644 --- a/pkg/analysis_server/tool/spec/codegen_java_types.dart +++ b/pkg/analysis_server/tool/spec/codegen_java_types.dart
@@ -250,7 +250,7 @@ toHtmlVisitor.translateHtml(value.html); })); writeln( - 'public static final String ${value.value} = \"${value.value}\";'); + 'public static final String ${value.value} = "${value.value}";'); }); } }); @@ -421,7 +421,7 @@ javadocComment(toHtmlVisitor.collectHtml(() { toHtmlVisitor.translateHtml(field.html); })); - var setterName = 'set' + capitalize(name); + var setterName = 'set${capitalize(name)}'; writeln('public void $setterName($type $name) {'); writeln(' this.$name = $name;'); writeln('}'); @@ -505,7 +505,7 @@ for (var field in fields) { if (!_isTypeFieldInUpdateContentUnionType( className, field.name)) { - parameters.add('${javaName(field.name)}'); + parameters.add(javaName(field.name)); } } write(parameters.join(', ')); @@ -692,17 +692,17 @@ writeln('public String toString() {'); indent(() { writeln('StringBuilder builder = new StringBuilder();'); - writeln('builder.append(\"[\");'); + writeln('builder.append("[");'); for (var i = 0; i < fields.length; i++) { - writeln('builder.append(\"${javaName(fields[i].name)}=\");'); + writeln('builder.append("${javaName(fields[i].name)}=");'); write('builder.append(${_getToStringForField(fields[i])}'); if (i + 1 != fields.length) { // this is not the last field - write(' + \", \"'); + write(' + ", "'); } writeln(');'); } - writeln('builder.append(\"]\");'); + writeln('builder.append("]");'); writeln('return builder.toString();'); }); writeln('}');
diff --git a/pkg/analysis_server/tool/spec/codegen_protocol_constants.dart b/pkg/analysis_server/tool/spec/codegen_protocol_constants.dart index 3c16118..45116ed 100644 --- a/pkg/analysis_server/tool/spec/codegen_protocol_constants.dart +++ b/pkg/analysis_server/tool/spec/codegen_protocol_constants.dart
@@ -143,13 +143,13 @@ if (type == null) { return; } - type.fields.forEach((TypeObjectField field) { + for (var field in type.fields) { var name = field.name; var components = <String>[]; components.add(parentName); components.addAll(_split(name)); var fieldConstantName = _fromComponents(components); constants.add(_Constant(fieldConstantName, "'$name'")); - }); + } } }
diff --git a/pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart b/pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart index 2c82679..1ee2156 100644 --- a/pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart +++ b/pkg/analyzer/lib/src/dart/resolver/invocation_inferrer.dart
@@ -3,7 +3,7 @@ // BSD-style license that can be found in the LICENSE file. import 'package:_fe_analyzer_shared/src/base/errors.dart'; -import 'package:_fe_analyzer_shared/src/deferred_closure_heuristic.dart'; +import 'package:_fe_analyzer_shared/src/deferred_function_literal_heuristic.dart'; import 'package:_fe_analyzer_shared/src/flow_analysis/flow_analysis.dart'; import 'package:analyzer/dart/ast/ast.dart'; import 'package:analyzer/dart/element/element.dart'; @@ -217,26 +217,26 @@ List<EqualityInfo<PromotableElement, DartType>?>? identicalInfo = _isIdentical ? [] : null; var parameterMap = _computeParameterMap(rawType?.parameters ?? const []); - var deferredClosures = _visitArguments( + var deferredFunctionLiterals = _visitArguments( parameterMap: parameterMap, identicalInfo: identicalInfo, substitution: substitution, inferrer: inferrer); - if (deferredClosures != null) { + if (deferredFunctionLiterals != null) { bool isFirstStage = true; - for (var stage in _ClosureDependencies( + for (var stage in _FunctionLiteralDependencies( resolver.typeSystem, - deferredClosures, + deferredFunctionLiterals, rawType?.typeFormals.toSet() ?? const {}, _computeUndeferredParamInfo( - rawType, parameterMap, deferredClosures)) + rawType, parameterMap, deferredFunctionLiterals)) .planReconciliationStages()) { if (inferrer != null && !isFirstStage) { substitution = Substitution.fromPairs( rawType!.typeFormals, inferrer.partialInfer()); } - _resolveDeferredClosures( - deferredClosures: stage, + _resolveDeferredFunctionLiterals( + deferredFunctionLiterals: stage, identicalInfo: identicalInfo, substitution: substitution, inferrer: inferrer); @@ -271,10 +271,11 @@ List<_ParamInfo> _computeUndeferredParamInfo( FunctionType? rawType, Map<Object, ParameterElement> parameterMap, - List<_DeferredParamInfo> deferredClosures) { + List<_DeferredParamInfo> deferredFunctionLiterals) { if (rawType == null) return const []; var parameterKeysAlreadyCovered = { - for (var closure in deferredClosures) closure.parameterKey + for (var functionLiteral in deferredFunctionLiterals) + functionLiteral.parameterKey }; return [ for (var entry in parameterMap.entries) @@ -443,10 +444,11 @@ /// the type of the function the invocation is resolved to (with type /// arguments not applied yet). void resolveInvocation({required FunctionType? rawType}) { - var deferredClosures = _visitArguments( + var deferredFunctionLiterals = _visitArguments( parameterMap: _computeParameterMap(rawType?.parameters ?? const [])); - if (deferredClosures != null) { - _resolveDeferredClosures(deferredClosures: deferredClosures); + if (deferredFunctionLiterals != null) { + _resolveDeferredFunctionLiterals( + deferredFunctionLiterals: deferredFunctionLiterals); } } @@ -467,15 +469,15 @@ } } - /// Resolves any closures that were deferred by [_visitArguments]. - void _resolveDeferredClosures( - {required Iterable<_DeferredParamInfo> deferredClosures, + /// Resolves any function literals that were deferred by [_visitArguments]. + void _resolveDeferredFunctionLiterals( + {required List<_DeferredParamInfo> deferredFunctionLiterals, List<EqualityInfo<PromotableElement, DartType>?>? identicalInfo, Substitution? substitution, GenericInferrer? inferrer}) { var flow = resolver.flowAnalysis.flow; var arguments = argumentList.arguments; - for (var deferredArgument in deferredClosures) { + for (var deferredArgument in deferredFunctionLiterals) { var parameter = deferredArgument.parameter; DartType? parameterContextType; if (parameter != null) { @@ -509,7 +511,7 @@ Substitution? substitution, GenericInferrer? inferrer}) { assert(whyNotPromotedList.isEmpty); - List<_DeferredParamInfo>? deferredClosures; + List<_DeferredParamInfo>? deferredFunctionLiterals; resolver.checkUnreachableNode(argumentList); var flow = resolver.flowAnalysis.flow; var unnamedArgumentIndex = 0; @@ -529,12 +531,12 @@ parameter = parameterMap[parameterKey]; if (resolver.isInferenceUpdate1Enabled && value is FunctionExpressionImpl) { - (deferredClosures ??= []) + (deferredFunctionLiterals ??= []) .add(_DeferredParamInfo(parameter, value, i, parameterKey)); identicalInfo?.add(null); - // The "why not promoted" list isn't really relevant for closures - // because promoting a closure doesn't even make sense. So we store an - // innocuous value in the list. + // The "why not promoted" list isn't really relevant for function + // literals because promoting a function literal doesn't even make + // sense. So we store an innocuous value in the list. whyNotPromotedList.add(() => const {}); } else { DartType? parameterContextType; @@ -559,7 +561,7 @@ } } } - return deferredClosures; + return deferredFunctionLiterals; } /// Computes the return type of the method or function represented by the @@ -629,13 +631,30 @@ } } -class _ClosureDependencies extends ClosureDependencies<TypeParameterElement, - _ParamInfo, _DeferredParamInfo> { +/// Information about an invocation argument that needs to be resolved later due +/// to the fact that it's a function literal and the `inference-update-1` +/// feature is enabled. +class _DeferredParamInfo extends _ParamInfo { + /// The function literal expression. + final FunctionExpression value; + + /// The index into the argument list of the function literal expression. + final int index; + + final Object parameterKey; + + _DeferredParamInfo( + ParameterElement? parameter, this.value, this.index, this.parameterKey) + : super(parameter); +} + +class _FunctionLiteralDependencies extends FunctionLiteralDependencies< + TypeParameterElement, _ParamInfo, _DeferredParamInfo> { final TypeSystemImpl _typeSystem; final Set<TypeParameterElement> _typeVariables; - _ClosureDependencies( + _FunctionLiteralDependencies( this._typeSystem, Iterable<_DeferredParamInfo> deferredParamInfo, this._typeVariables, @@ -680,23 +699,6 @@ } } -/// Information about an invocation argument that needs to be resolved later due -/// to the fact that it's a closure and the `inference-update-1` feature is -/// enabled. -class _DeferredParamInfo extends _ParamInfo { - /// The closure expression. - final FunctionExpression value; - - /// The index into the argument list of the closure expression. - final int index; - - final Object parameterKey; - - _DeferredParamInfo( - ParameterElement? parameter, this.value, this.index, this.parameterKey) - : super(parameter); -} - /// Information about an invocation argument that may or may not have already /// been resolved, as part of the deferred resolution mechanism for the /// `inference-update-1` feature.
diff --git a/sdk/lib/io/file_system_entity.dart b/sdk/lib/io/file_system_entity.dart index 738c40b..573457d 100644 --- a/sdk/lib/io/file_system_entity.dart +++ b/sdk/lib/io/file_system_entity.dart
@@ -500,7 +500,7 @@ /// On Windows, a path is absolute if it starts with `\\` /// (two backslashes or representing a UNC path) or with a drive letter /// between `a` and `z` (upper or lower case) followed by `:\` or `:/`. - /// The makes, for example, `\file.ext` a non-absolute path + /// This makes, for example, `\file.ext` a non-absolute path /// because it depends on the current drive letter. /// /// On non-Windows, a path is absolute if it starts with `/`. @@ -699,7 +699,7 @@ static Future<bool> isFile(String path) => _getType(_toUtf8Array(path), true) .then((type) => (type == FileSystemEntityType.file)); - /// Whether [path]] refers to a directory. + /// Whether [path] refers to a directory. /// /// Checks whether `type(path)` returns [FileSystemEntityType.directory]. static Future<bool> isDirectory(String path) =>
diff --git a/tools/VERSION b/tools/VERSION index fda6b19..37c54e9 100644 --- a/tools/VERSION +++ b/tools/VERSION
@@ -27,5 +27,5 @@ MAJOR 2 MINOR 18 PATCH 0 -PRERELEASE 14 +PRERELEASE 15 PRERELEASE_PATCH 0 \ No newline at end of file