Skip to content

Commit 99970d6

Browse files
author
Dart CI
committed
Version 2.10.0-138.0.dev
Merge commit '122f07c7bb1ae8e7076de09e1deab9f7fd7ab85a' into 'dev'
2 parents eb24e33 + 122f07c commit 99970d6

File tree

6 files changed

+109
-9
lines changed

6 files changed

+109
-9
lines changed

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -800,7 +800,9 @@ class SuggestionBuilder {
800800
var element = parameter.enclosingElement;
801801
if (element is ConstructorElement) {
802802
if (Flutter.instance.isWidget(element.enclosingElement)) {
803-
var defaultValue = getDefaultStringParameterValue(parameter);
803+
// Don't bother with nullability. It won't affect default list values.
804+
var defaultValue =
805+
getDefaultStringParameterValue(parameter, withNullability: false);
804806
// TODO(devoncarew): Should we remove the check here? We would then
805807
// suggest values for param types like closures.
806808
if (defaultValue != null && defaultValue.text == '[]') {

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import 'package:analyzer/src/dart/ast/token.dart';
1515
import 'package:analyzer/src/generated/source.dart';
1616
import 'package:analyzer_plugin/protocol/protocol_common.dart' as protocol
1717
show Element, ElementKind;
18+
import 'package:meta/meta.dart';
1819

1920
/// The name of the type `dynamic`;
2021
const DYNAMIC = 'dynamic';
@@ -169,7 +170,8 @@ protocol.Element createLocalElement(
169170
}
170171

171172
/// Return a default argument value for the given [parameter].
172-
DefaultArgument getDefaultStringParameterValue(ParameterElement parameter) {
173+
DefaultArgument getDefaultStringParameterValue(ParameterElement parameter,
174+
{@required bool withNullability}) {
173175
if (parameter != null) {
174176
var type = parameter.type;
175177
if (type is InterfaceType) {
@@ -182,7 +184,8 @@ DefaultArgument getDefaultStringParameterValue(ParameterElement parameter) {
182184
}
183185
} else if (type is FunctionType) {
184186
var params = type.parameters
185-
.map((p) => '${getTypeString(p.type)}${p.name}')
187+
.map((p) =>
188+
'${getTypeString(p.type, withNullability: withNullability)}${p.name}')
186189
.join(', ');
187190
// TODO(devoncarew): Support having this method return text with newlines.
188191
var text = '($params) { }';
@@ -209,11 +212,11 @@ String getRequestLineIndent(DartCompletionRequest request) {
209212
return content.substring(lineStartOffset, notWhitespaceOffset);
210213
}
211214

212-
String getTypeString(DartType type) {
215+
String getTypeString(DartType type, {@required bool withNullability}) {
213216
if (type.isDynamic) {
214217
return '';
215218
} else {
216-
return type.getDisplayString(withNullability: false) + ' ';
219+
return type.getDisplayString(withNullability: withNullability) + ' ';
217220
}
218221
}
219222

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,9 @@ class AddMissingRequiredArgument extends CorrectionProducer {
7878
}
7979
}
8080
}
81-
var defaultValue = getDefaultStringParameterValue(missingParameter);
81+
var defaultValue = getDefaultStringParameterValue(missingParameter,
82+
withNullability: libraryElement.isNonNullableByDefault &&
83+
missingParameter.library.isNonNullableByDefault);
8284

8385
await builder.addDartFileEdit(file, (builder) {
8486
builder.addInsertion(offset, (builder) {

pkg/analysis_server/test/src/services/correction/fix/add_missing_required_argument_test.dart

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,99 @@ main() {
250250
''');
251251
}
252252

253+
Future<void> test_constructor_single_closure_nnbd() async {
254+
createAnalysisOptionsFile(experiments: [EnableString.non_nullable]);
255+
addMetaPackage();
256+
addSource('/home/test/lib/a.dart', r'''
257+
import 'package:meta/meta.dart';
258+
259+
typedef int Callback(int? a);
260+
261+
class A {
262+
A({@required Callback callback}) {}
263+
}
264+
''');
265+
await resolveTestUnit('''
266+
import 'package:test/a.dart';
267+
268+
main() {
269+
A a = new A();
270+
print(a);
271+
}
272+
''');
273+
await assertHasFix('''
274+
import 'package:test/a.dart';
275+
276+
main() {
277+
A a = new A(callback: (int? a) { });
278+
print(a);
279+
}
280+
''');
281+
}
282+
283+
Future<void> test_constructor_single_closure_nnbd_from_legacy() async {
284+
createAnalysisOptionsFile(experiments: [EnableString.non_nullable]);
285+
addMetaPackage();
286+
addSource('/home/test/lib/a.dart', r'''
287+
// @dart = 2.8
288+
import 'package:meta/meta.dart';
289+
290+
typedef int Callback(int a);
291+
292+
class A {
293+
A({@required Callback callback}) {}
294+
}
295+
''');
296+
await resolveTestUnit('''
297+
import 'package:test/a.dart';
298+
299+
main() {
300+
A a = new A();
301+
print(a);
302+
}
303+
''');
304+
await assertHasFix('''
305+
import 'package:test/a.dart';
306+
307+
main() {
308+
A a = new A(callback: (int a) { });
309+
print(a);
310+
}
311+
''');
312+
}
313+
314+
Future<void> test_constructor_single_closure_nnbd_into_legacy() async {
315+
createAnalysisOptionsFile(experiments: [EnableString.non_nullable]);
316+
addMetaPackage();
317+
addSource('/home/test/lib/a.dart', r'''
318+
import 'package:meta/meta.dart';
319+
320+
typedef int Callback(int? a);
321+
322+
class A {
323+
A({@required Callback callback}) {}
324+
}
325+
''');
326+
await resolveTestUnit('''
327+
// @dart = 2.8
328+
import 'package:test/a.dart';
329+
330+
main() {
331+
A a = new A();
332+
print(a);
333+
}
334+
''');
335+
await assertHasFix('''
336+
// @dart = 2.8
337+
import 'package:test/a.dart';
338+
339+
main() {
340+
A a = new A(callback: (int a) { });
341+
print(a);
342+
}
343+
''');
344+
}
345+
253346
Future<void> test_constructor_single_list() async {
254347
addMetaPackage();
255348
addSource('/home/test/lib/a.dart', r'''

tests/language/variance/variance_downwards_inference_test.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ class A<out T> {
1010
final T _x;
1111
A(T x):_x = x;
1212
T get x => _x;
13-
void set x(Object value) {}
13+
void set x(Object? value) {}
1414
}
1515

1616
class B<in T> {
@@ -22,7 +22,7 @@ class C<out T, S> {
2222
final T _x;
2323
C(T x, S y):_x = x;
2424
T get x => _x;
25-
void set x(Object value) {}
25+
void set x(Object? value) {}
2626
void set y(S _value) {}
2727
}
2828

tools/VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,5 @@ CHANNEL dev
2727
MAJOR 2
2828
MINOR 10
2929
PATCH 0
30-
PRERELEASE 137
30+
PRERELEASE 138
3131
PRERELEASE_PATCH 0

0 commit comments

Comments
 (0)