Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 2b8d00a

Browse files
author
Dart CI
committed
Version 2.10.0-156.0.dev
Merge commit '5a120eae40e63116912bac7453ee8dc3e584da5b' into 'dev'
2 parents c61a081 + 5a120ea commit 2b8d00a

File tree

64 files changed

+1157
-2320
lines changed

Some content is hidden

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

64 files changed

+1157
-2320
lines changed

.dart_tool/package_config.json

Lines changed: 11 additions & 7 deletions
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-09-18T09:56:27.880444",
14+
"generated": "2020-08-18T15:38:52.410101",
1515
"generator": "tools/generate_package_config.dart",
1616
"packages": [
1717
{
@@ -184,7 +184,7 @@
184184
"name": "dart2js_info",
185185
"rootUri": "../third_party/pkg/dart2js_info",
186186
"packageUri": "lib/",
187-
"languageVersion": "2.3"
187+
"languageVersion": "2.0"
188188
},
189189
{
190190
"name": "dart2js_tools",
@@ -207,7 +207,8 @@
207207
{
208208
"name": "dart_style",
209209
"rootUri": "../third_party/pkg_tested/dart_style",
210-
"packageUri": "lib/"
210+
"packageUri": "lib/",
211+
"languageVersion": "2.7"
211212
},
212213
{
213214
"name": "dartdev",
@@ -347,7 +348,8 @@
347348
{
348349
"name": "js_runtime",
349350
"rootUri": "../sdk/lib/_internal/js_runtime",
350-
"packageUri": "lib/"
351+
"packageUri": "lib/",
352+
"languageVersion": "2.10"
351353
},
352354
{
353355
"name": "json_rpc_2",
@@ -482,7 +484,8 @@
482484
{
483485
"name": "pub",
484486
"rootUri": "../third_party/pkg/pub",
485-
"packageUri": "lib/"
487+
"packageUri": "lib/",
488+
"languageVersion": "2.3"
486489
},
487490
{
488491
"name": "pub_semver",
@@ -505,7 +508,8 @@
505508
{
506509
"name": "sdk_library_metadata",
507510
"rootUri": "../sdk/lib/_internal/sdk_library_metadata",
508-
"packageUri": "lib/"
511+
"packageUri": "lib/",
512+
"languageVersion": "2.10"
509513
},
510514
{
511515
"name": "shelf",
@@ -748,4 +752,4 @@
748752
"languageVersion": "2.4"
749753
}
750754
]
751-
}
755+
}

DEPS

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ vars = {
6666

6767
# Revisions of /third_party/* dependencies.
6868
"args_tag": "1.6.0",
69-
"async_rev": "128c461a97dbdbd9336ba000ba5a5c02e79b8651",
69+
"async_rev": "3fedad22c6940650526a86adebbf2872b81c2805",
7070
"bazel_worker_rev": "26680d5e249b249c7216ab2fed0ac8ed4ee285c5",
7171
"benchmark_harness_rev": "ec6b646f5443faa871e126ac1ba248c94ca06257",
7272
"boolean_selector_rev": "665e6921ab246569420376f827bff4585dff0b14",
@@ -76,7 +76,7 @@ vars = {
7676
"charcode_rev": "4a685faba42d86ebd9d661eadd1e79d0a1c34c43",
7777
"chrome_rev" : "19997",
7878
"cli_util_tag" : "0.2.0",
79-
"collection_rev": "583693680fc067e34ca5b72503df25e8b80579f9",
79+
"collection_rev": "65d3e58ee5289528ec280d361a67a631d65b3d7f",
8080
"convert_rev": "c1b01f832835d3d8a06b0b246a361c0eaab35d3c",
8181
"crypto_rev": "f7c48b334b1386bc5ab0f706fbcd6df8496a87fc",
8282
"csslib_rev": "681a6603f86bbbe64e8af42d722aef63b028d241",

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

Lines changed: 25 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,9 @@ class AddTypeParameter extends Change<_Data> {
3939
@override
4040
void apply(DartFileEditBuilder builder, DataDrivenFix fix, _Data data) {
4141
if (data is _TypeArgumentData) {
42-
_applyToTypeArguments(builder, data);
42+
_applyToTypeArguments(builder, fix, data);
4343
} else if (data is _TypeParameterData) {
44-
_applyToTypeParameters(builder, data);
44+
_applyToTypeParameters(builder, fix, data);
4545
} else {
4646
throw StateError('Unsupported class of data: ${data.runtimeType}');
4747
}
@@ -50,84 +50,82 @@ class AddTypeParameter extends Change<_Data> {
5050
@override
5151
_Data validate(DataDrivenFix fix) {
5252
var node = fix.node;
53+
var context = TemplateContext(node, fix.utils);
5354
if (node is NamedType) {
5455
// wrong_number_of_type_arguments
5556
// wrong_number_of_type_arguments_constructor
56-
var argument = argumentValue.generate(node, fix.utils);
57-
if (argument == null) {
57+
if (!argumentValue.validate(context)) {
5858
return null;
5959
}
6060
var typeArguments = node.typeArguments;
6161
if (_isInvalidIndex(typeArguments?.arguments)) {
6262
return null;
6363
}
64-
return _TypeArgumentData(typeArguments, argument, node.name.end);
64+
return _TypeArgumentData(typeArguments, node.name.end);
6565
}
6666
var parent = node.parent;
6767
if (parent is InvocationExpression) {
6868
// wrong_number_of_type_arguments_method
69-
var argument = argumentValue.generate(parent, fix.utils);
69+
var argument = argumentValue.validate(context);
7070
if (argument == null) {
7171
return null;
7272
}
7373
var typeArguments = parent.typeArguments;
7474
if (_isInvalidIndex(typeArguments?.arguments)) {
7575
return null;
7676
}
77-
return _TypeArgumentData(
78-
typeArguments, argument, parent.argumentList.offset);
77+
return _TypeArgumentData(typeArguments, parent.argumentList.offset);
7978
} else if (parent is MethodDeclaration) {
8079
// invalid_override
81-
String bound;
82-
if (extendedType != null) {
83-
bound = extendedType.generate(node, fix.utils);
84-
if (bound == null) {
85-
return null;
86-
}
80+
if (extendedType != null && !extendedType.validate(context)) {
81+
return null;
8782
}
8883
var typeParameters = parent.typeParameters;
8984
if (_isInvalidIndex(typeParameters?.typeParameters)) {
9085
return null;
9186
}
92-
return _TypeParameterData(typeParameters, bound, parent.name.end);
87+
return _TypeParameterData(typeParameters, parent.name.end);
9388
} else if (node is TypeArgumentList && parent is ExtensionOverride) {
9489
// wrong_number_of_type_arguments_extension
95-
var argument = argumentValue.generate(node, fix.utils);
90+
var argument = argumentValue.validate(context);
9691
if (argument == null) {
9792
return null;
9893
}
9994
if (_isInvalidIndex(node?.arguments)) {
10095
return null;
10196
}
102-
return _TypeArgumentData(node, argument, parent.extensionName.end);
97+
return _TypeArgumentData(node, parent.extensionName.end);
10398
}
10499
return null;
105100
}
106101

107102
void _applyToTypeArguments(
108-
DartFileEditBuilder builder, _TypeArgumentData data) {
103+
DartFileEditBuilder builder, DataDrivenFix fix, _TypeArgumentData data) {
109104
var typeArguments = data.typeArguments;
110-
var argumentValue = data.argumentValue;
105+
var argumentValueText = argumentValue.generate(fix.node, fix.utils);
111106
if (typeArguments == null) {
112107
// Adding the first type argument.
113-
builder.addSimpleInsertion(data.newListOffset, '<$argumentValue>');
108+
builder.addSimpleInsertion(data.newListOffset, '<$argumentValueText>');
114109
} else {
115110
if (index == 0) {
116111
// Inserting the type argument at the beginning of the list.
117112
builder.addSimpleInsertion(
118-
typeArguments.leftBracket.end, '$argumentValue, ');
113+
typeArguments.leftBracket.end, '$argumentValueText, ');
119114
} else {
120115
// Inserting the type argument after an existing type argument.
121116
var previous = typeArguments.arguments[index - 1];
122-
builder.addSimpleInsertion(previous.end, ', $argumentValue');
117+
builder.addSimpleInsertion(previous.end, ', $argumentValueText');
123118
}
124119
}
125120
}
126121

127122
void _applyToTypeParameters(
128-
DartFileEditBuilder builder, _TypeParameterData data) {
129-
var argumentValue =
130-
data.bound == null ? name : '$name extends ${data.bound}';
123+
DartFileEditBuilder builder, DataDrivenFix fix, _TypeParameterData data) {
124+
var extendsClause = '';
125+
if (extendedType != null) {
126+
extendsClause = ' extends ${extendedType.generate(fix.node, fix.utils)}';
127+
}
128+
var argumentValue = '$name$extendsClause';
131129
var typeParameters = data.typeParameters;
132130
if (typeParameters == null) {
133131
// Adding the first type argument.
@@ -160,15 +158,12 @@ class _TypeArgumentData extends _Data {
160158
/// `null` if the first type argument is being added.
161159
final TypeArgumentList typeArguments;
162160

163-
/// The value of the type argument being added.
164-
final String argumentValue;
165-
166161
/// The offset at which the type argument list should be inserted if
167162
/// [typeArguments] is `null`.
168163
final int newListOffset;
169164

170165
/// Initialize newly created data.
171-
_TypeArgumentData(this.typeArguments, this.argumentValue, this.newListOffset);
166+
_TypeArgumentData(this.typeArguments, this.newListOffset);
172167
}
173168

174169
/// The data returned when updating a type parameter list.
@@ -177,14 +172,10 @@ class _TypeParameterData extends _Data {
177172
/// or `null` if the first type parameter is being added.
178173
final TypeParameterList typeParameters;
179174

180-
/// The bound of the type parameter being added, or `null` if there is no
181-
/// bound.
182-
final String bound;
183-
184175
/// The offset at which the type parameter list should be inserted if
185176
/// [typeParameters] is `null`.
186177
final int newListOffset;
187178

188179
/// Initialize newly created data.
189-
_TypeParameterData(this.typeParameters, this.bound, this.newListOffset);
180+
_TypeParameterData(this.typeParameters, this.newListOffset);
190181
}

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

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
// for details. All rights reserved. Use of this source code is governed by a
33
// BSD-style license that can be found in the LICENSE file.
44

5-
import 'package:analysis_server/src/services/correction/fix/data_driven/value_extractor.dart';
5+
import 'package:analysis_server/src/services/correction/fix/data_driven/value_generator.dart';
66
import 'package:analysis_server/src/services/correction/util.dart';
77
import 'package:analyzer/dart/ast/ast.dart';
88

@@ -26,6 +26,17 @@ class CodeTemplate {
2626
}
2727
return buffer.toString();
2828
}
29+
30+
/// Use the [context] to validate that this template will be able to generate
31+
/// a value.
32+
bool validate(TemplateContext context) {
33+
for (var component in components) {
34+
if (!component.validate(context)) {
35+
return false;
36+
}
37+
}
38+
return true;
39+
}
2940
}
3041

3142
/// The kinds of code that can be generated by a template.
@@ -40,6 +51,10 @@ abstract class TemplateComponent {
4051
/// the [context] to access needed information that isn't already known to
4152
/// this component.
4253
void appendTo(StringSink sink, TemplateContext context);
54+
55+
/// Use the [context] to validate that this component will be able to generate
56+
/// a value.
57+
bool validate(TemplateContext context);
4358
}
4459

4560
/// The context in which a template is being evaluated.
@@ -59,9 +74,9 @@ class TemplateContext {
5974
TemplateContext(this.node, this.utils);
6075

6176
/// Return the value of the variable with the given [name].
62-
String valueOf(ValueGenerator extractor) {
63-
return _variableValues.putIfAbsent(extractor, () {
64-
return extractor.from(this);
77+
String valueOf(ValueGenerator generator) {
78+
return _variableValues.putIfAbsent(generator, () {
79+
return generator.from(this);
6580
});
6681
}
6782
}
@@ -78,18 +93,28 @@ class TemplateText extends TemplateComponent {
7893
void appendTo(StringSink sink, TemplateContext context) {
7994
sink.write(text);
8095
}
96+
97+
@override
98+
bool validate(TemplateContext context) {
99+
return true;
100+
}
81101
}
82102

83103
/// A reference to a variable within a template.
84104
class TemplateVariable extends TemplateComponent {
85-
/// The extractor used to compute the value of the variable.
86-
final ValueGenerator extractor;
105+
/// The generator used to compute the value of the variable.
106+
final ValueGenerator generator;
87107

88-
/// Initialize a newly created template variable with the given [name].
89-
TemplateVariable(this.extractor);
108+
/// Initialize a newly created template variable with the given [generator].
109+
TemplateVariable(this.generator);
90110

91111
@override
92112
void appendTo(StringSink sink, TemplateContext context) {
93-
sink.write(context.valueOf(extractor));
113+
sink.write(context.valueOf(generator));
114+
}
115+
116+
@override
117+
bool validate(TemplateContext context) {
118+
return generator.validate(context);
94119
}
95120
}

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import 'package:analysis_server/src/services/correction/fix/data_driven/rename.d
1212
import 'package:analysis_server/src/services/correction/fix/data_driven/transform.dart';
1313
import 'package:analysis_server/src/services/correction/fix/data_driven/transform_set.dart';
1414
import 'package:analysis_server/src/services/correction/fix/data_driven/transform_set_error_code.dart';
15-
import 'package:analysis_server/src/services/correction/fix/data_driven/value_extractor.dart';
15+
import 'package:analysis_server/src/services/correction/fix/data_driven/value_generator.dart';
1616
import 'package:analysis_server/src/utilities/extensions/yaml.dart';
1717
import 'package:analyzer/error/listener.dart';
1818
import 'package:meta/meta.dart';
@@ -127,9 +127,9 @@ class TransformSetParser {
127127
}
128128

129129
/// Convert the given [template] into a list of components. Variable
130-
/// references in the template are looked up in the map of [extractors].
130+
/// references in the template are looked up in the map of [generators].
131131
List<TemplateComponent> _extractTemplateComponents(String template,
132-
Map<String, ValueGenerator> extractors, int templateOffset) {
132+
Map<String, ValueGenerator> generators, int templateOffset) {
133133
var components = <TemplateComponent>[];
134134
var textStart = 0;
135135
var variableStart = template.indexOf(_openComponent);
@@ -148,7 +148,7 @@ class TransformSetParser {
148148
return null;
149149
} else {
150150
var name = template.substring(variableStart + 2, endIndex).trim();
151-
var extractor = extractors[name];
151+
var extractor = generators[name];
152152
if (extractor == null) {
153153
errorReporter.reportErrorForOffset(
154154
TransformSetErrorCode.undefinedVariable,
@@ -662,18 +662,18 @@ class TransformSetParser {
662662
Map<String, ValueGenerator> _translateTemplateVariables(
663663
YamlNode node, ErrorContext context) {
664664
if (node is YamlMap) {
665-
var extractors = <String, ValueGenerator>{};
665+
var generators = <String, ValueGenerator>{};
666666
for (var entry in node.nodes.entries) {
667667
var name = _translateKey(entry.key);
668668
if (name != null) {
669669
var value = _translateValueExtractor(
670670
entry.value, ErrorContext(key: name, parentNode: node));
671671
if (value != null) {
672-
extractors[name] = value;
672+
generators[name] = value;
673673
}
674674
}
675675
}
676-
return extractors;
676+
return generators;
677677
} else if (node == null) {
678678
return const {};
679679
} else {

0 commit comments

Comments
 (0)