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