# copyright (c) 2020, 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 file.

# Status file for the textual_outline_suite.dart test suite. This is testing
# the textual outline used for better incremental compilation.

# These tests have errors in them which isn't reported by the parser but the
# formatter still sees as syntax errors and thus won't format.
regress/annotation_on_type_parameter_name_clash_on_constructor: FormatterCrash
regress/annotation_on_type_parameter_name_extension_type_constructor: FormatterCrash
enhanced_enums/external_constructor: FormatterCrash
extension_types/const_constructor_body: FormatterCrash
extension_types/field_access: FormatterCrash
extension_types/issue52119: FormatterCrash
extension_types/issue53212: FormatterCrash
extension_types/issue53625: FormatterCrash
extension_types/representation: FormatterCrash
general/constants/non_const_constructor: FormatterCrash
general/constants/various: FormatterCrash
general/invalid_operator: FormatterCrash
general/invalid_super_initializer: FormatterCrash
general/issue45700.crash: FormatterCrash
general/issue48919: FormatterCrash
nnbd_mixed/issue41597: FormatterCrash
regress/issue_30994: FormatterCrash
regress/issue_31198: FormatterCrash
super_parameters/var_before_super: FormatterCrash
triple_shift/invalid_operator: FormatterCrash

general/error_recovery/issue_38415.crash: EmptyOutput
general/error_recovery/issue_39024.crash: EmptyOutput
general/error_recovery/issue_39058.crash: EmptyOutput
general/issue49357a: EmptyOutput
rasta/bad_interpolation: EmptyOutput
rasta/issue_000035: EmptyOutput
rasta/issue_000035a: EmptyOutput
rasta/issue_000045: EmptyOutput
regress/issue_29976: EmptyOutput
regress/issue_29982: EmptyOutput
regress/issue_29985: EmptyOutput
regress/issue_35900: EmptyOutput
regress/issue_39035.crash: EmptyOutput
regress/issue_39091_2: EmptyOutput
regress/utf_16_le_content.crash: EmptyOutput

extension_types/with_dependencies/issue53209_2/main: UnknownChunk
general/error_recovery/constructor_recovery_operator.crash: UnknownChunk # Test has parser errors
general/error_recovery/issue_39058_prime.crash: UnknownChunk # Test has parser errors
general/error_recovery/issue_39202.crash: UnknownChunk # Test has parser errors
general/factory_var: UnknownChunk # Test has parser errors
general/issue41842: UnknownChunk # Test has parser errors
general/issue43363: UnknownChunk # Test has parser errors
general/issue54006: UnknownChunk # Test has parser errors
rasta/issue_000046: UnknownChunk # Test has parser errors
rasta/malformed_const_constructor: UnknownChunk # Test has parser errors
regress/ambiguous_builder_01: UnknownChunk # Test has parser errors
regress/issue_34850: UnknownChunk # Test has parser errors

coverage/external_test: FormatterCrash
coverage/operator_unsupported_test: EmptyOutput
coverage/syntax_get_set_syntax_test: UnknownChunk

null_aware_elements/constant_collections: FormatterCrash
null_aware_elements/constant_null_aware_map_entry_shorting: FormatterCrash
null_aware_elements/constant_null_aware_map_entry_shorting_erroneous: FormatterCrash
null_aware_elements/simple_positive: FormatterCrash
