Triage language tests for void in DDC and analyzer

Change-Id: Ib72fa4515ac29b66d90b237739f97219b98acda2
Reviewed-on: https://dart-review.googlesource.com/67282
Commit-Queue: Leaf Petersen <leafp@google.com>
Reviewed-by: Mike Fairhurst <mfairhurst@google.com>
diff --git a/pkg/analyzer/lib/src/generated/error_verifier.dart b/pkg/analyzer/lib/src/generated/error_verifier.dart
index 9b6f9cf..3cd2978 100644
--- a/pkg/analyzer/lib/src/generated/error_verifier.dart
+++ b/pkg/analyzer/lib/src/generated/error_verifier.dart
@@ -5258,20 +5258,18 @@
       return;
     }
 
-    // Anything can be returned to `dynamic`, or to `Future<dynamic>` in
-    // an async function.
-    if (toType.isDynamic) {
-      return;
-    }
-
-    // Anything can be return to `Future<Null>` in an async function
-    if (_inAsync && toType.isDartCoreNull) {
-      return;
-    }
-
-    // If we're not in one of the `void` related special cases
-    // just check assignability.
-    if (!expectedType.isVoid && !fromType.isVoid) {
+    if (toType.isVoid) {
+      if (fromType.isVoid ||
+          fromType.isDynamic ||
+          fromType.isDartCoreNull ||
+          fromType.isBottom) {
+        return;
+      }
+    } else if (fromType.isVoid) {
+      if (toType.isDynamic || toType.isDartCoreNull || toType.isBottom) {
+        return;
+      }
+    } else {
       var checkWithType = (!_inAsync)
           ? fromType
           : _typeProvider.futureType.instantiate(<DartType>[fromType]);
@@ -5281,31 +5279,6 @@
       }
     }
 
-    // Void related special cases.  If the expression type flattens
-    // to `void`, and the expected type doesn't, then it's an error.
-    // Otherwise:
-    if (toType.isVoid) {
-      // In the case that the expected type is `void`
-      if (expectedType.isVoid) {
-        // Valid if the expression type is void, dynamic or Null
-        if (expressionType.isVoid ||
-            expressionType.isDynamic ||
-            expressionType.isDartCoreNull ||
-            expressionType.isBottom) {
-          return;
-        }
-      } else {
-        // The expected type is Future<void> or FutureOr<void>,
-        // and the return is valid if the expression type flattens
-        // to void, dynamic, or Null.
-        if (fromType.isVoid ||
-            fromType.isDynamic ||
-            fromType.isDartCoreNull ||
-            fromType.isBottom) {
-          return;
-        }
-      }
-    }
     reportTypeError();
   }
 
diff --git a/tests/language_2/language_2.status b/tests/language_2/language_2.status
index 493ee91..8a767d0 100644
--- a/tests/language_2/language_2.status
+++ b/tests/language_2/language_2.status
@@ -7,15 +7,15 @@
 mixin_constructor_forwarding/optional_named_parameters_test/none: CompileTimeError # Issue 31543
 mixin_constructor_forwarding/optional_positional_parameters_test/none: CompileTimeError # Issue 31543
 
-[ $compiler == dart2analyzer ]
-void/*: Skip  # https://github.com/dart-lang/sdk/issues/34010
-invalid_returns/*: Skip  # https://github.com/dart-lang/sdk/issues/34010
+[ $compiler == dart2analyzer && $fasta ]
+void/*: Skip  # https://github.com/dart-lang/sdk/issues/34011
+invalid_returns/*: Skip  # https://github.com/dart-lang/sdk/issues/34011
 
 [ $compiler == dart2js ]
 void/*: Skip  # https://github.com/dart-lang/sdk/issues/34011
 invalid_returns/*: Skip  # https://github.com/dart-lang/sdk/issues/34011
 
-[ $compiler == dartdevc || $compiler == dartdevk ]
+[ $compiler == dartdevk ]
 void/*: Skip # https://github.com/dart-lang/sdk/issues/34012
 invalid_returns/*: Skip  # https://github.com/dart-lang/sdk/issues/34012
 
diff --git a/tests/language_2/language_2_analyzer.status b/tests/language_2/language_2_analyzer.status
index 32596e6..2fca5c6 100644
--- a/tests/language_2/language_2_analyzer.status
+++ b/tests/language_2/language_2_analyzer.status
@@ -592,11 +592,31 @@
 void/void_type_usage_test/async_use_in_await: CompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/async_use_in_yield: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/async_use_in_yield_star: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/call_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/call_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/call_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/call_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/final_local_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/final_local_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/final_local_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/final_local_for_in2: MissingCompileTimeError
+void/void_type_usage_test/final_local_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/global_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/global_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/global_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/global_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/local_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/local_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/local_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/local_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/param_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/param_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/param_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/param_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/paren_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/paren_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/paren_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/paren_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/sync_use_in_yield: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/sync_use_in_yield_star: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 web_int_literals_test/01: MissingCompileTimeError
diff --git a/tests/language_2/language_2_dartdevc.status b/tests/language_2/language_2_dartdevc.status
index 30ee5da..a9e587e 100644
--- a/tests/language_2/language_2_dartdevc.status
+++ b/tests/language_2/language_2_dartdevc.status
@@ -190,12 +190,38 @@
 type_promotion_functions_test/14: CompileTimeError # Issue 30895
 type_promotion_functions_test/none: CompileTimeError # Issue 30895
 type_variable_scope_test/none: CompileTimeError
+void/generalized_void_syntax_test: CompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_function_types_test/none: CompileTimeError # Issue 30177
+void/void_type_usage_test/async_use_in_await: CompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/async_use_in_yield: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/async_use_in_yield_star: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/call_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/call_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/call_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/call_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/final_local_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/final_local_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/final_local_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/final_local_for_in2: MissingCompileTimeError
+void/void_type_usage_test/final_local_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/global_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/global_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/global_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/global_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/local_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/local_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/local_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/local_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/param_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/param_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/param_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 void/void_type_usage_test/param_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/paren_boolean_and_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/paren_boolean_negation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/paren_boolean_or_right: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/paren_use_in_string_interpolation: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/sync_use_in_yield: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
+void/void_type_usage_test/sync_use_in_yield_star: MissingCompileTimeError # https://github.com/dart-lang/sdk/issues/30177
 
 [ $compiler == dartdevk ]
 additional_interface_adds_optional_args_concrete_subclass_test: MissingCompileTimeError
diff --git a/tests/language_2/void/void_type_usage_test.dart b/tests/language_2/void/void_type_usage_test.dart
index bdfeca3..a49a34a 100644
--- a/tests/language_2/void/void_type_usage_test.dart
+++ b/tests/language_2/void/void_type_usage_test.dart
@@ -125,7 +125,7 @@
   f() ??= 3; //# call_use_in_conditional_assignment_left: compile-time error
   Object xx;  xx ??= f(); //# call_use_in_conditional_assignment_right: compile-time error
   var ll = <int>[3]; ll[f()]; //# call_use_in_list_subscript: compile-time error
-  var mm = <void, void>{}; mm[f()]; //# call_use_in_map_lookup: ok
+  var mm = <void, void>{}; mm[f()]; //# call_use_in_map_lookup: compile-time error
 }
 
 dynamic testVoidCallDynamic(void f()) {
@@ -179,7 +179,7 @@
   x ??= 3; //# local_use_in_conditional_assignment_left: compile-time error
   Object xx;  xx ??= x; //# local_use_in_conditional_assignment_right: compile-time error
   var ll = <int>[3]; ll[x]; //# local_use_in_list_subscript: compile-time error
-  var mm = <void, void>{}; mm[x]; //# local_use_in_map_lookup: ok
+  var mm = <void, void>{}; mm[x]; //# local_use_in_map_lookup: compile-time error
 }
 
 dynamic testVoidLocalDynamic() {
@@ -234,7 +234,7 @@
   x ??= 3; //# final_local_use_in_conditional_assignment_left: compile-time error
   Object xx;  xx ??= x; //# final_local_use_in_conditional_assignment_right: compile-time error
   var ll = <int>[3]; ll[x]; //# final_local_use_in_list_subscript: compile-time error
-  var mm = <void, void>{}; mm[x]; //# final_local_use_in_map_lookup: ok
+  var mm = <void, void>{}; mm[x]; //# final_local_use_in_map_lookup: compile-time error
 }
 
 dynamic testVoidFinalLocalDynamic() {
@@ -288,7 +288,7 @@
   global ??= 3; //# global_use_in_conditional_assignment_left: compile-time error
   Object xx;  xx ??= global; //# global_use_in_conditional_assignment_right: compile-time error
   var ll = <int>[3]; ll[global]; //# global_use_in_list_subscript: compile-time error
-  var mm = <void, void>{}; mm[global]; //# global_use_in_map_lookup: ok
+  var mm = <void, void>{}; mm[global]; //# global_use_in_map_lookup: compile-time error
 }
 
 dynamic testVoidGlobalDynamic() {
@@ -540,7 +540,7 @@
   (x) ??= 3; //# paren_use_in_conditional_assignment_left: compile-time error
   Object xx;  xx ??= (x); //# paren_use_in_conditional_assignment_right: compile-time error
   var ll = <int>[3]; ll[(x)]; //# paren_use_in_list_subscript: compile-time error
-  var mm = <void, void>{}; mm[(x)]; //# paren_use_in_map_lookup: ok
+  var mm = <void, void>{}; mm[(x)]; //# paren_use_in_map_lookup: compile-time error
 }
 
 dynamic testParenthesizedDynamic() {