Guard against an NPE in incomplete code (issue 37150)

Change-Id: Idd5a0936ccd435c12ac9b4f36151204a2b01127a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/107307
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
diff --git a/pkg/analysis_server/lib/src/services/correction/assist_internal.dart b/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
index b465c69..34dc4bb 100644
--- a/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
+++ b/pkg/analysis_server/lib/src/services/correction/assist_internal.dart
@@ -971,7 +971,8 @@
       return;
     }
     ConstructorElement element = creation.staticElement;
-    if (element.name != 'fromIterable' ||
+    if (element == null ||
+        element.name != 'fromIterable' ||
         element.enclosingElement != typeProvider.mapType.element) {
       _coverageMarker();
       return;
diff --git a/pkg/analysis_server/test/src/services/correction/assist/convert_to_for_element_test.dart b/pkg/analysis_server/test/src/services/correction/assist/convert_to_for_element_test.dart
index 597c353..0a53680 100644
--- a/pkg/analysis_server/test/src/services/correction/assist/convert_to_for_element_test.dart
+++ b/pkg/analysis_server/test/src/services/correction/assist/convert_to_for_element_test.dart
@@ -187,4 +187,14 @@
 }
 ''');
   }
+
+  test_undefinedConstructor() async {
+    verifyNoTestUnitErrors = false;
+    await resolveTestUnit('''
+f() {
+  return new Unde/*caret*/fined();
+}
+''');
+    await assertNoAssist();
+  }
 }