Skip to content

Commit 279a4b9

Browse files
author
Dart CI
committed
Version 2.10.0-19.0.dev
Merge commit '78250735aafd8a71356995328ffdffdbb1aaf94e' into 'dev'
2 parents abdfa80 + 7825073 commit 279a4b9

File tree

201 files changed

+4076
-2170
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

201 files changed

+4076
-2170
lines changed

.dart_tool/package_config.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
"constraint, update this by running tools/generate_package_config.dart."
1212
],
1313
"configVersion": 2,
14-
"generated": "2020-08-11T10:59:54.661195",
14+
"generated": "2020-08-12T09:00:03.727658",
1515
"generator": "tools/generate_package_config.dart",
1616
"packages": [
1717
{
@@ -298,6 +298,11 @@
298298
"rootUri": "../pkg/front_end/testcases/nonfunction_type_aliases",
299299
"packageUri": ".nonexisting/"
300300
},
301+
{
302+
"name": "front_end_value_class",
303+
"rootUri": "../pkg/front_end/testcases/value_class",
304+
"packageUri": ".nonexisting/"
305+
},
301306
{
302307
"name": "frontend_server",
303308
"rootUri": "../pkg/frontend_server",

DEPS

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ vars = {
137137
"shelf_static_rev": "v0.2.8",
138138
"shelf_packages_handler_tag": "2.0.0",
139139
"shelf_proxy_tag": "0.1.0+7",
140-
"shelf_tag": "0.7.3+3",
140+
"shelf_rev": "289309adc6c39aab0a63db676d550c517fc1cc2d",
141141
"shelf_web_socket_tag": "0.2.2+3",
142142
"source_map_stack_trace_rev": "1c3026f69d9771acf2f8c176a1ab750463309cce",
143143
"source_maps-0.9.4_rev": "38524",
@@ -394,7 +394,7 @@ deps = {
394394
Var("dart_root") + "/third_party/pkg/resource":
395395
Var("dart_git") + "resource.git" + "@" + Var("resource_rev"),
396396
Var("dart_root") + "/third_party/pkg/shelf":
397-
Var("dart_git") + "shelf.git" + "@" + Var("shelf_tag"),
397+
Var("dart_git") + "shelf.git" + "@" + Var("shelf_rev"),
398398
Var("dart_root") + "/third_party/pkg/shelf_packages_handler":
399399
Var("dart_git") + "shelf_packages_handler.git"
400400
+ "@" + Var("shelf_packages_handler_tag"),

pkg/analysis_server/lib/src/services/completion/dart/local_reference_contributor.dart

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,6 +203,10 @@ class _LocalVisitor extends LocalDeclarationVisitor {
203203
/// A flag indicating whether local fields should be suggested.
204204
final bool suggestLocalFields;
205205

206+
/// A flag indicating whether suggestions are being made inside an `extends`
207+
/// clause.
208+
bool inExtendsClause = false;
209+
206210
/// Only used when [useNewRelevance] is `false`.
207211
int privateMemberRelevance = DART_RELEVANCE_DEFAULT;
208212

@@ -404,7 +408,8 @@ class _LocalVisitor extends LocalDeclarationVisitor {
404408

405409
@override
406410
void declaredMixin(MixinDeclaration declaration) {
407-
if (visibilityTracker._isVisible(declaration.declaredElement) &&
411+
if (!inExtendsClause &&
412+
visibilityTracker._isVisible(declaration.declaredElement) &&
408413
opType.includeTypeNameSuggestions) {
409414
builder.suggestClass(declaration.declaredElement, kind: _defaultKind);
410415
}
@@ -445,6 +450,12 @@ class _LocalVisitor extends LocalDeclarationVisitor {
445450
}
446451
}
447452

453+
@override
454+
void visitExtendsClause(ExtendsClause node) {
455+
inExtendsClause = true;
456+
return super.visitExtendsClause(node);
457+
}
458+
448459
/// Return `true` if the [identifier] is composed of one or more underscore
449460
/// characters and nothing else.
450461
bool _isUnused(String identifier) => RegExp(r'^_+$').hasMatch(identifier);

pkg/analysis_server/lib/src/services/correction/bulk_fix_processor.dart

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import 'package:analysis_server/src/services/correction/dart/convert_conditional
1515
import 'package:analysis_server/src/services/correction/dart/convert_documentation_into_line.dart';
1616
import 'package:analysis_server/src/services/correction/dart/convert_quotes.dart';
1717
import 'package:analysis_server/src/services/correction/dart/convert_to_contains.dart';
18+
import 'package:analysis_server/src/services/correction/dart/convert_to_generic_function_syntax.dart';
19+
import 'package:analysis_server/src/services/correction/dart/convert_to_if_null.dart';
1820
import 'package:analysis_server/src/services/correction/dart/create_method.dart';
1921
import 'package:analysis_server/src/services/correction/dart/make_final.dart';
2022
import 'package:analysis_server/src/services/correction/dart/remove_argument.dart';
@@ -81,8 +83,11 @@ class BulkFixProcessor {
8183
LintNames.prefer_equal_for_default_values:
8284
ReplaceColonWithEquals.newInstance,
8385
LintNames.prefer_final_fields: MakeFinal.newInstance,
86+
LintNames.prefer_generic_function_type_aliases:
87+
ConvertToGenericFunctionSyntax.newInstance,
8488
LintNames.prefer_if_elements_to_conditional_expressions:
8589
ConvertConditionalExpressionToIfElement.newInstance,
90+
LintNames.prefer_if_null_operators: ConvertToIfNull.newInstance,
8691
LintNames.prefer_is_empty: ReplaceWithIsEmpty.newInstance,
8792
LintNames.prefer_is_not_empty: UesIsNotEmpty.newInstance,
8893
LintNames.prefer_single_quotes: ConvertToSingleQuotes.newInstance,

pkg/analysis_server/lib/src/services/correction/dart/data_driven.dart

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,22 @@ class DataDriven extends MultiCorrectionProducer {
4242
return <TransformSet>[];
4343
}
4444

45-
/// Return the name that was changed.
45+
/// Return the name of the element that was changed.
4646
String get _name {
4747
var node = this.node;
4848
if (node is SimpleIdentifier) {
4949
return node.name;
5050
} else if (node is ConstructorName) {
5151
return node.name.name;
52+
} else if (node is NamedType) {
53+
return node.name.name;
54+
} else if (node is TypeArgumentList) {
55+
var parent = node.parent;
56+
if (parent is MethodInvocation) {
57+
return parent.methodName.name;
58+
} else if (parent is ExtensionOverride) {
59+
return parent.extensionName.name;
60+
}
5261
}
5362
return null;
5463
}
Lines changed: 178 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,178 @@
1+
// Copyright (c) 2020, the Dart project authors. Please see the AUTHORS file
2+
// for details. All rights reserved. Use of this source code is governed by a
3+
// BSD-style license that can be found in the LICENSE file.
4+
5+
import 'package:analysis_server/src/services/correction/dart/data_driven.dart';
6+
import 'package:analysis_server/src/services/correction/fix/data_driven/change.dart';
7+
import 'package:analysis_server/src/services/correction/fix/data_driven/value_extractor.dart';
8+
import 'package:analyzer/dart/ast/ast.dart';
9+
import 'package:analyzer_plugin/utilities/change_builder/change_builder_dart.dart';
10+
import 'package:meta/meta.dart';
11+
12+
/// The data related to a type parameter that was added to either a function or
13+
/// a type.
14+
class AddTypeParameterChange extends Change<_Data> {
15+
/// The index of the type parameter that was added.
16+
final int index;
17+
18+
/// The name of the type parameter that was added.
19+
final String name;
20+
21+
/// The name of the type that the type parameter extends, or `null` if the
22+
/// type parameter doesn't have a bound.
23+
final String extendedType;
24+
25+
/// The value extractor used to compute the value of the type argument.
26+
final ValueExtractor value;
27+
28+
/// Initialize a newly created change to describe adding a type parameter to a
29+
/// type or a function.
30+
// TODO(brianwilkerson) Support adding multiple type parameters.
31+
AddTypeParameterChange(
32+
{@required this.index,
33+
@required this.name,
34+
@required this.value,
35+
this.extendedType})
36+
: assert(index >= 0),
37+
assert(name != null),
38+
assert(value != null);
39+
40+
@override
41+
void apply(DartFileEditBuilder builder, DataDrivenFix fix, _Data data) {
42+
if (data is _TypeArgumentData) {
43+
_applyToTypeArguments(builder, data);
44+
} else {
45+
_applyToTypeParameters(builder, data as _TypeParameterData);
46+
}
47+
}
48+
49+
@override
50+
_Data validate(DataDrivenFix fix) {
51+
var node = fix.node;
52+
if (node is NamedType) {
53+
// wrong_number_of_type_arguments
54+
// wrong_number_of_type_arguments_constructor
55+
var argument = value.from(node, fix.utils);
56+
if (argument == null) {
57+
return null;
58+
}
59+
var typeArguments = node.typeArguments;
60+
if (_isInvalidIndex(typeArguments?.arguments)) {
61+
return null;
62+
}
63+
return _TypeArgumentData(typeArguments, argument, node.name.end);
64+
}
65+
var parent = node.parent;
66+
if (parent is InvocationExpression) {
67+
// wrong_number_of_type_arguments_method
68+
var argument = value.from(parent, fix.utils);
69+
if (argument == null) {
70+
return null;
71+
}
72+
var typeArguments = parent.typeArguments;
73+
if (_isInvalidIndex(typeArguments?.arguments)) {
74+
return null;
75+
}
76+
return _TypeArgumentData(
77+
typeArguments, argument, parent.argumentList.offset);
78+
} else if (parent is MethodDeclaration) {
79+
// invalid_override
80+
var typeParameters = parent.typeParameters;
81+
if (_isInvalidIndex(typeParameters?.typeParameters)) {
82+
return null;
83+
}
84+
return _TypeParameterData(typeParameters, parent.name.end);
85+
} else if (node is TypeArgumentList && parent is ExtensionOverride) {
86+
// wrong_number_of_type_arguments_extension
87+
var argument = value.from(node, fix.utils);
88+
if (argument == null) {
89+
return null;
90+
}
91+
if (_isInvalidIndex(node?.arguments)) {
92+
return null;
93+
}
94+
return _TypeArgumentData(node, argument, parent.extensionName.end);
95+
}
96+
return null;
97+
}
98+
99+
void _applyToTypeArguments(
100+
DartFileEditBuilder builder, _TypeArgumentData data) {
101+
var typeArguments = data.typeArguments;
102+
var argumentValue = data.argumentValue;
103+
if (typeArguments == null) {
104+
// Adding the first type argument.
105+
builder.addSimpleInsertion(data.newListOffset, '<$argumentValue>');
106+
} else {
107+
if (index == 0) {
108+
// Inserting the type argument at the beginning of the list.
109+
builder.addSimpleInsertion(
110+
typeArguments.leftBracket.end, '$argumentValue, ');
111+
} else {
112+
// Inserting the type argument after an existing type argument.
113+
var previous = typeArguments.arguments[index - 1];
114+
builder.addSimpleInsertion(previous.end, ', $argumentValue');
115+
}
116+
}
117+
}
118+
119+
void _applyToTypeParameters(
120+
DartFileEditBuilder builder, _TypeParameterData data) {
121+
var argumentValue =
122+
extendedType == null ? name : '$name extends $extendedType';
123+
var typeParameters = data.typeParameters;
124+
if (typeParameters == null) {
125+
// Adding the first type argument.
126+
builder.addSimpleInsertion(data.newListOffset, '<$argumentValue>');
127+
} else {
128+
if (index == 0) {
129+
// Inserting the type argument at the beginning of the list.
130+
builder.addSimpleInsertion(
131+
typeParameters.leftBracket.end, '$argumentValue, ');
132+
} else {
133+
// Inserting the type argument after an existing type argument.
134+
var previous = typeParameters.typeParameters[index - 1];
135+
builder.addSimpleInsertion(previous.end, ', $argumentValue');
136+
}
137+
}
138+
}
139+
140+
bool _isInvalidIndex(List<AstNode> list) {
141+
var length = list == null ? 0 : list.length;
142+
return index > length;
143+
}
144+
}
145+
146+
/// The data returned when adding a type parameter.
147+
class _Data {}
148+
149+
/// The data returned when updating a type argument list.
150+
class _TypeArgumentData extends _Data {
151+
/// The list of type arguments to which a new type argument is being added, or
152+
/// `null` if the first type argument is being added.
153+
final TypeArgumentList typeArguments;
154+
155+
/// The value of the type argument being added.
156+
final String argumentValue;
157+
158+
/// The offset at which the type argument list should be inserted if
159+
/// [typeArguments] is `null`.
160+
final int newListOffset;
161+
162+
/// Initialize newly created data.
163+
_TypeArgumentData(this.typeArguments, this.argumentValue, this.newListOffset);
164+
}
165+
166+
/// The data returned when updating a type parameter list.
167+
class _TypeParameterData extends _Data {
168+
/// The list of type parameters to which a new type paramete is being added,
169+
/// or `null` if the first type parameter is being added.
170+
final TypeParameterList typeParameters;
171+
172+
/// The offset at which the type parameter list should be inserted if
173+
/// [typeParameters] is `null`.
174+
final int newListOffset;
175+
176+
/// Initialize newly created data.
177+
_TypeParameterData(this.typeParameters, this.newListOffset);
178+
}

pkg/analysis_server/lib/src/services/correction/fix/data_driven/convert_argument_to_type_argument_change.dart

Lines changed: 0 additions & 97 deletions
This file was deleted.

0 commit comments

Comments
 (0)