d810c7d0c0
This commit was generated by the following steps: - Manually change the SDK constraint in `pkg/front_end/pubspec.yaml` - Run `gclient sync` - Run `find pkg/front_end/benchmarks pkg/front_end/lib pkg/front_end/presubmit_helper.dart pkg/front_end/presubmit_helper_spawn.dart pkg/front_end/test pkg/front_end/tool -iname '*.dart' | xargs tools/sdks/dart-sdk/bin/dart format` - Manually fix remaining long lines and add dead code ignore comments. - Fix coverage by running `dart --enable-asserts pkg/front_end/test/coverage_suite.dart --tasks=5 --add-and-remove-comments` - Fix `pkg/front_end/test/coverage_merger/assert_message_auto_ignored` by running `dart pkg/front_end/test/unit_test_suites.dart -p pkg/front_end/test/coverage_merger/assert_message_auto_ignored -DupdateExpectations=true` The diff is large because the version bump causes the formatter to switch into "tall mode". Change-Id: I6a6a696410da8b168060acfe0e4d6e91e294c4f0 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/447628 Auto-Submit: Paul Berry <paulberry@google.com> Reviewed-by: Johnni Winther <johnniwinther@google.com> Commit-Queue: Johnni Winther <johnniwinther@google.com>
38 lines
1.4 KiB
Dart
38 lines
1.4 KiB
Dart
// 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:front_end/src/testing/analysis_helper.dart';
|
|
import 'package:kernel/kernel.dart';
|
|
|
|
Future<void> main(List<String> arguments) async {
|
|
await runAnalysis(
|
|
cfeAndBackendsEntryPoints,
|
|
performGeneralAnalysis(cfeAndBackends, (
|
|
TreeNode node,
|
|
AnalysisInterface interface,
|
|
) {
|
|
// Use 'analyze.dart' to perform advanced analysis/code search by
|
|
// replacing the "example analysis" with a custom analysis.
|
|
|
|
// Example analysis:
|
|
if (node is InstanceInvocation && node.name.text == 'toList') {
|
|
TreeNode receiver = node.receiver;
|
|
if (receiver is InstanceInvocation &&
|
|
receiver.name.text == 'map' &&
|
|
receiver.arguments.types.length == 1) {
|
|
InterfaceType expressionType = interface.createInterfaceType(
|
|
'Expression',
|
|
uri: 'package:kernel/ast.dart',
|
|
);
|
|
DartType typeArgument = receiver.arguments.types.single;
|
|
if (interface.isSubtypeOf(typeArgument, expressionType) &&
|
|
typeArgument != expressionType) {
|
|
interface.reportMessage(node, "map().toList()");
|
|
}
|
|
}
|
|
}
|
|
}),
|
|
);
|
|
}
|