# Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE.md file.

# Status file for the strong_suite.dart test suite. This is testing generating
# Kernel ASTs directly, that is, code in pkg/fasta/lib/src/kernel/ with
# strong-mode enabled.

dart2js/flutter_issue94561/main: SemiFuzzFailure
dart2js/flutter_issue94561/main.no_link: SemiFuzzFailure
dart2js/late_fields: SemiFuzzFailure
dart2js/late_from_dill/main: SemiFuzzFailure
dart2js/late_statics: SemiFuzzFailure
static_field_lowering/opt_in: SemiFuzzFailure

dart2js/mixin_super/main: SemiFuzzFailure # https://github.com/dart-lang/sdk/issues/49339

const_functions/const_functions_list: SemiFuzzCrash
generic_metadata/typedef_generic_types_in_arguments_and_bounds: SemiFuzzCrash

dart2js/mixin_from_opt_in/main: SemiFuzzFailure # seems like the difference between normal and no-link version: it goes from InstanceInvocation to InvalidExpression
dart2js/mixin_from_opt_in/main.no_link: SemiFuzzFailure # seems like the difference between normal and no-link version: it goes from InstanceInvocation to InvalidExpression
late_lowering/private_members: SemiFuzzFailure # Reproduced in https://dart-review.googlesource.com/c/sdk/+/242285
macros/multiple_imports: SemiFuzzFailure # probably augment imports that isn't split correctly.
nnbd/constants: SemiFuzzFailure # Reproduced in https://dart-review.googlesource.com/c/sdk/+/242441

# These tests have "privacy issues" and isn't compatiable with splitting files (fuzzing):
dart2js/mixin_default_values/main: semiFuzzFailureOnForceRebuildBodies # private method
dartdevc/factory_patch/main: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
dartdevc/private_covariant: semiFuzzFailureOnForceRebuildBodies # private method in class
late_lowering/injected_late_field_checks/main: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
late_lowering/issue41436/issue41436: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
late_lowering/issue41922: semiFuzzFailureOnForceRebuildBodies # private field
late_lowering/private_members: semiFuzzFailureOnForceRebuildBodies # private class
macros/inject_constructor: semiFuzzFailureOnForceRebuildBodies # Macro injection --- think it might introduce a class in a file?
nnbd/injected_late_field_checks/main: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here
nnbd/issue42504: semiFuzzFailureOnForceRebuildBodies # private class
nnbd/issue43918: semiFuzzFailureOnForceRebuildBodies # private class
nnbd/issue44595: semiFuzzFailureOnForceRebuildBodies # unnamed extension
nnbd/nullable_extension: semiFuzzFailureOnForceRebuildBodies # unnamed extension
nnbd/nullable_setter: semiFuzzFailureOnForceRebuildBodies # unnamed extension
none/mixin_super: semiFuzzFailureOnForceRebuildBodies # has private name mixin
dart2js/tear_off_patch/main: semiFuzzFailureOnForceRebuildBodies # needs custom libraries.json (and platform?) not setup here

constructor_tearoffs/call_instantiation: TypeCheckError
constructor_tearoffs/lowering/invalid_redirect: VerificationError
enhanced_enums/declared_hashcode: TypeCheckError
enhanced_enums/declared_index: TypeCheckError
enhanced_enums/simple_mixins: RuntimeError
extension_types/access_setter_as_getter: ExpectationFileMismatchSerialized # Expected.
extension_types/call_not_get: ExpectationFileMismatchSerialized # Expected.
extension_types/extension_on_nullable: ExpectationFileMismatchSerialized # Expected.
extension_types/issue45775: ExpectationFileMismatchSerialized # Expected.
extension_types/show_and_run_ceil: ExpectationFileMismatchSerialized # Expected.
extension_types/simple: ExpectationFileMismatchSerialized # Expected.
extension_types/simple_getter_resolution: ExpectationFileMismatchSerialized # Expected.
extension_types/simple_method_resolution: ExpectationFileMismatchSerialized # Expected.
extension_types/simple_operator_resolution: ExpectationFileMismatchSerialized # Expected.
extension_types/simple_setter_resolution: ExpectationFileMismatchSerialized # Expected.
extension_types/simple_show_hide: ExpectationFileMismatchSerialized # Expected.
extension_types/type_variable_in_static_context: ExpectationFileMismatchSerialized # Expected.
late_lowering/covariant_late_field: TypeCheckError
nnbd/covariant_late_field: TypeCheckError
nnbd/getter_vs_setter_type: TypeCheckError
nnbd/issue42603: TypeCheckError
nnbd/no_support_for_old_null_aware_index_access_syntax: RuntimeError # Expected.
value_class/copy_with_call_sites: RuntimeError # Expected
value_class/simple: RuntimeError # Expected
value_class/value_extends_non_value: RuntimeError # Expected
value_class/value_implements_non_value: RuntimeError # Expected
