dart-sdk/tests/language/inference_update_2
Paul Berry 5db0c2b546 Test some more corner cases of field promotion.
While rereading the analyzer logic that decides whether to suppress
field promotion due to the presence of a `noSuchMethod` forwarder, I
found a few corner cases that aren't handled correctly:

- The logic for deciding which fields are included in a class's
  implementation currently doesn't understand that an abstract field
  is abstract; it treats it as a concrete field, therefore if a
  concrete subclass implements of `noSuchMethod`, but fails to
  implement the field, the analyzer fails to detect that there will be
  a `noSuchMethod` forwarder (and thus fails to suppress promotion).

- The logic for collecting the set of fields (and getters) that are
  included in a class's interface (or implementation) currently stops
  at a library boundary, so it doesn't properly handle the situation
  where there is a library cycle, and two classes in one library are
  related through an intermediate class in some other library.

- The logic for collecting the set of getters that are included in a
  class's interface currently ignores the `on` clauses of mixins.

This CL includes tests for all these corner cases; I will fix them in
a follow-up CL.

Change-Id: I92d73c0643f1ab89144feefab68779418a2c7a35
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/313840
Reviewed-by: Erik Ernst <eernst@google.com>
Reviewed-by: Lasse Nielsen <lrn@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2023-07-17 18:06:16 +00:00
..
abstract_field_test.dart Field type promotion: fix CFE handling of abstract fields. 2022-11-21 15:25:03 +00:00
basic_field_promotion_test.dart Field promotion: distinguish between this. and super. accesses. 2023-05-19 18:29:49 +00:00
cascaded_field_promotion_null_aware_test.dart Flow analysis: add field promotion support for cascades. 2023-06-17 08:13:20 +00:00
cascaded_field_promotion_test.dart Flow analysis: add field promotion support for cascades. 2023-06-17 08:13:20 +00:00
cascaded_field_promotion_unnecessary_null_aware_error_test.dart Flow analysis: add field promotion support for cascades. 2023-06-17 08:13:20 +00:00
cascaded_field_promotion_unstable_target_test.dart Field promotion: add a test case to repro #52728. 2023-07-11 23:25:43 +00:00
disabled_test.dart Front end logic for field promotion. 2022-10-19 14:53:51 +00:00
do_not_promote_abstract_getters_test.dart Field type promotion: fix CFE handling of abstract fields. 2022-11-21 15:25:03 +00:00
do_not_promote_methods_test.dart Field type promotion: fix CFE handling of abstract fields. 2022-11-21 15:25:03 +00:00
field_invocation_promotion_test.dart Implement field promotion for the analyzer. 2022-10-30 20:02:49 +00:00
field_promotion_and_no_such_method_abstract_field_test.dart Test some more corner cases of field promotion. 2023-07-17 18:06:16 +00:00
field_promotion_and_no_such_method_inherited_abstract_field_test.dart Test some more corner cases of field promotion. 2023-07-17 18:06:16 +00:00
field_promotion_and_no_such_method_lib.dart Front end logic for field promotion. 2022-10-19 14:53:51 +00:00
field_promotion_and_no_such_method_library_cycle_lib.dart Test some more corner cases of field promotion. 2023-07-17 18:06:16 +00:00
field_promotion_and_no_such_method_library_cycle_test.dart Test some more corner cases of field promotion. 2023-07-17 18:06:16 +00:00
field_promotion_and_no_such_method_on_clause_test.dart Test some more corner cases of field promotion. 2023-07-17 18:06:16 +00:00
field_promotion_and_no_such_method_test.dart Implement field promotion for the analyzer. 2022-10-30 20:02:49 +00:00
field_promotion_name_conflicts_part.dart Implement field promotion for the analyzer. 2022-10-30 20:02:49 +00:00
field_promotion_name_conflicts_test.dart Implement field promotion for the analyzer. 2022-10-30 20:02:49 +00:00
no_such_method_restriction_disabled_lib.dart
no_such_method_restriction_disabled_test.dart
no_such_method_restriction_enabled_lib.dart
no_such_method_restriction_enabled_test.dart
no_such_method_restriction_stack_trace_lib1.dart
no_such_method_restriction_stack_trace_lib2.dart
no_such_method_restriction_stack_trace_test.dart Spelling pkg dev compiler 2023-01-26 09:12:41 +00:00
promotion_makes_new_extension_available_test.dart Field promotion: more thorough language tests, plus a CFE bug fix. 2022-11-18 14:54:48 +00:00
promotion_makes_new_extension_available_via_non_nullability_test.dart Field promotion: more thorough language tests, plus a CFE bug fix. 2022-11-18 14:54:48 +00:00
promotion_makes_new_interface_available_test.dart Field promotion: more thorough language tests, plus a CFE bug fix. 2022-11-18 14:54:48 +00:00
promotion_narrows_interface_test.dart Field promotion: more thorough language tests, plus a CFE bug fix. 2022-11-18 14:54:48 +00:00
super_this_distinction_error_test.dart Field promotion: distinguish between this. and super. accesses. 2023-05-19 18:29:49 +00:00
super_this_distinction_generic_error_test.dart Field promotion: distinguish between this. and super. accesses. 2023-05-19 18:29:49 +00:00
super_this_distinction_generic_test.dart Field promotion: distinguish between this. and super. accesses. 2023-05-19 18:29:49 +00:00
super_this_distinction_test.dart Field promotion: distinguish between this. and super. accesses. 2023-05-19 18:29:49 +00:00
top_level_type_inference_test.dart Test field promotion during top level inference. 2022-11-21 17:20:55 +00:00