Support constructor declarations (issue 37196)
Change-Id: I276e897a02c999c7c1ab08d12f51e5bd9676bb0a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/105543
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/nnbd_migration/lib/src/node_builder.dart b/pkg/nnbd_migration/lib/src/node_builder.dart
index e7c5778..44a7475 100644
--- a/pkg/nnbd_migration/lib/src/node_builder.dart
+++ b/pkg/nnbd_migration/lib/src/node_builder.dart
@@ -61,6 +61,13 @@
}
@override
+ DecoratedType visitConstructorDeclaration(ConstructorDeclaration node) {
+ _handleExecutableDeclaration(
+ node.declaredElement, null, node.parameters, node.body, node);
+ return null;
+ }
+
+ @override
DecoratedType visitDefaultFormalParameter(DefaultFormalParameter node) {
var decoratedType = node.parameter.accept(this);
if (node.declaredElement.hasRequired || node.defaultValue != null) {
diff --git a/pkg/nnbd_migration/test/api_test.dart b/pkg/nnbd_migration/test/api_test.dart
index a7f3966..8f3e7d7 100644
--- a/pkg/nnbd_migration/test/api_test.dart
+++ b/pkg/nnbd_migration/test/api_test.dart
@@ -224,6 +224,22 @@
await _checkSingleFileChanges(content, expected);
}
+ test_constructorDeclaration_namedParameter() async {
+ var content = '''
+class C {
+ C({Key key});
+}
+class Key {}
+''';
+ var expected = '''
+class C {
+ C({Key? key});
+}
+class Key {}
+''';
+ await _checkSingleFileChanges(content, expected);
+ }
+
test_data_flow_assignment_field() async {
var content = '''
class C {