The synthetic default constructor should have reference.

We use ElementImpl.reference to store references to elements.
So, all elements must have one, even synthetic.

R=brianwilkerson@google.com

Change-Id: I29932449d97816108a6c1fca6db3fe7162baa1ce
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99781
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
diff --git a/pkg/analyzer/lib/src/dart/element/element.dart b/pkg/analyzer/lib/src/dart/element/element.dart
index 2159a8a..2750b66 100644
--- a/pkg/analyzer/lib/src/dart/element/element.dart
+++ b/pkg/analyzer/lib/src/dart/element/element.dart
@@ -560,6 +560,19 @@
         }
         return ConstructorElementImpl.forLinkedNode(this, reference, node);
       }).toList();
+
+      if (_constructors.isEmpty) {
+        return _constructors = [
+          ConstructorElementImpl.forLinkedNode(
+            this,
+            containerRef.getChild(''),
+            null,
+          )
+            ..isSynthetic = true
+            ..name = ''
+            ..nameOffset = -1,
+        ];
+      }
     }
 
     if (_unlinkedClass != null) {
diff --git a/pkg/analyzer/lib/src/summary2/linking_bundle_context.dart b/pkg/analyzer/lib/src/summary2/linking_bundle_context.dart
index 06d86ce..8ab18a5 100644
--- a/pkg/analyzer/lib/src/summary2/linking_bundle_context.dart
+++ b/pkg/analyzer/lib/src/summary2/linking_bundle_context.dart
@@ -46,15 +46,12 @@
 
   int indexOfElement(Element element) {
     if (element == null) return 0;
+    assert(element is! Member);
 
     if (identical(element, DynamicElementImpl.instance)) {
       return indexOfReference(dynamicReference);
     }
 
-    if (element is Member) {
-      element = (element as Member).baseElement;
-    }
-
     var reference = (element as ElementImpl).reference;
     return indexOfReference(reference);
   }