Fix crash when invalid default field formal parameter has annotation.

Change-Id: Iabb329f850195be981d80b0589d9f7851596c680
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/166740
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
index 81255f6..858f235 100644
--- a/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
+++ b/pkg/analyzer/lib/src/dart/resolver/resolution_visitor.dart
@@ -462,11 +462,11 @@
         element.isFinal = node.isFinal;
         element.parameterKind = node.kind;
         _setCodeRange(element, node);
-        element.metadata = _createElementAnnotations(node.metadata);
       }
       nameNode.staticElement = element;
     }
 
+    element.metadata = _createElementAnnotations(node.metadata);
     node.metadata.accept(this);
     _setElementAnnotations(node.metadata, element.metadata);
 
diff --git a/pkg/analyzer/test/generated/invalid_code_test.dart b/pkg/analyzer/test/generated/invalid_code_test.dart
index 5f397fd..a116216 100644
--- a/pkg/analyzer/test/generated/invalid_code_test.dart
+++ b/pkg/analyzer/test/generated/invalid_code_test.dart
@@ -326,6 +326,17 @@
 ''');
   }
 
+  test_localFunction_defaultFieldFormalParameter_metadata() async {
+    await _assertCanBeAnalyzed(r'''
+const my = 0;
+
+void foo() {
+  // ignore:unused_element
+  void bar({@my this.x}) {}
+}
+''');
+  }
+
   test_typeBeforeAnnotation() async {
     await _assertCanBeAnalyzed('''
 class A {