From bbba3c9788787f4c9c6fbc74aeb2ded75643f43b Mon Sep 17 00:00:00 2001 From: Robert Nystrom Date: Wed, 1 Mar 2023 16:08:40 +0000 Subject: [PATCH] Roll the latest dart_style into the SDK. This includes support for records, patterns, sealed classes, and class modifiers. It also includes a fairly small number of style changes. The one that will be most noticeable is more compact switch statements. Change-Id: I9e89ba82d52bfa451fc54f9dd59048d72db48377 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/285460 Reviewed-by: Alexander Thomas Reviewed-by: Johnni Winther Commit-Queue: Bob Nystrom Auto-Submit: Bob Nystrom --- CHANGELOG.md | 9 + DEPS | 2 +- .../lib/protocol/protocol_generated.dart | 156 ++++-------- .../lib/src/protocol/protocol_common.dart | 228 ++++++------------ .../lib/src/protocol/protocol_generated.dart | 156 ++++-------- .../lib/protocol/protocol_common.dart | 228 ++++++------------ .../lib/protocol/protocol_generated.dart | 36 +-- ...nonymous_mixin.dart.textual_outline.expect | 9 +- ...mixin.dart.textual_outline_modelled.expect | 11 + ...ss_declaration.dart.textual_outline.expect | 5 +- ...ation.dart.textual_outline_modelled.expect | 7 + ...ss_declaration.dart.textual_outline.expect | 5 +- ...ation.dart.textual_outline_modelled.expect | 7 + ...ss_declaration.dart.textual_outline.expect | 5 +- ...ation.dart.textual_outline_modelled.expect | 7 + ...ss_declaration.dart.textual_outline.expect | 7 + ...ation.dart.textual_outline_modelled.expect | 17 ++ ...ve_constructor.dart.textual_outline.expect | 10 +- ...uctor.dart.textual_outline_modelled.expect | 49 ++++ ...ass_not_object.dart.textual_outline.expect | 4 + ...bject.dart.textual_outline_modelled.expect | 10 + ...ss_declaration.dart.textual_outline.expect | 5 +- ...ation.dart.textual_outline_modelled.expect | 8 + ...ss_declaration.dart.textual_outline.expect | 2 + ...ation.dart.textual_outline_modelled.expect | 7 + ...cords.dart.textual_outline_modelled.expect | 6 + .../issue41102.dart.textual_outline.expect | 3 +- ...41102.dart.textual_outline_modelled.expect | 3 +- ...rrors.dart.textual_outline_modelled.expect | 4 + ...ttern_matching.dart.textual_outline.expect | 8 +- ...ching.dart.textual_outline_modelled.expect | 21 ++ .../pattern_types.dart.textual_outline.expect | 19 +- ...types.dart.textual_outline_modelled.expect | 53 ++++ ...uring.dart.textual_outline_modelled.expect | 3 + ..._case.dart.textual_outline_modelled.expect | 5 + ...lists.dart.textual_outline_modelled.expect | 6 + ...tries.dart.textual_outline_modelled.expect | 6 + ...pression_empty.dart.textual_outline.expect | 4 +- ...empty.dart.textual_outline_modelled.expect | 5 + ...attern_guarded.dart.textual_outline.expect | 4 +- ...arded.dart.textual_outline_modelled.expect | 5 + ...oTrailingComma.dart.textual_outline.expect | 4 +- ...Comma.dart.textual_outline_modelled.expect | 5 + ..._trailingComma.dart.textual_outline.expect | 4 +- ...Comma.dart.textual_outline_modelled.expect | 5 + ...on_twoPatterns.dart.textual_outline.expect | 4 +- ...terns.dart.textual_outline_modelled.expect | 5 + ...riable_capture.dart.textual_outline.expect | 10 +- ...pture.dart.textual_outline_modelled.expect | 19 ++ ...iable.dart.textual_outline_modelled.expect | 14 ++ ...ine_statements.dart.textual_outline.expect | 5 +- ...ments.dart.textual_outline_modelled.expect | 6 + ...t_local_access.dart.textual_outline.expect | 3 +- ...ccess.dart.textual_outline_modelled.expect | 7 + ...teral.dart.textual_outline_modelled.expect | 16 ++ ...rrors.dart.textual_outline_modelled.expect | 8 + .../issue50132.dart.textual_outline.expect | 1 + ...50132.dart.textual_outline_modelled.expect | 6 + ...50133.dart.textual_outline_modelled.expect | 3 + .../issue50157.dart.textual_outline.expect | 4 + ...50157.dart.textual_outline_modelled.expect | 14 ++ .../issue50182.dart.textual_outline.expect | 3 + ...50182.dart.textual_outline_modelled.expect | 12 + .../issue50514.dart.textual_outline.expect | 3 +- ...50514.dart.textual_outline_modelled.expect | 5 + .../issue50515.dart.textual_outline.expect | 5 +- ...50515.dart.textual_outline_modelled.expect | 6 + ...ional.dart.textual_outline_modelled.expect | 13 + .../null_shorting.dart.textual_outline.expect | 7 +- ...rting.dart.textual_outline_modelled.expect | 18 ++ ...ullable_access.dart.textual_outline.expect | 2 +- ...ccess.dart.textual_outline_modelled.expect | 1 + ...cess_extension.dart.textual_outline.expect | 3 +- ...nsion.dart.textual_outline_modelled.expect | 6 + ...names.dart.textual_outline_modelled.expect | 4 + ..._type.dart.textual_outline_modelled.expect | 6 + ...names.dart.textual_outline_modelled.expect | 13 + ...mple_inference.dart.textual_outline.expect | 9 +- ...rence.dart.textual_outline_modelled.expect | 20 ++ ...stant.dart.textual_outline_modelled.expect | 2 + .../type_record.dart.textual_outline.expect | 9 + ...ecord.dart.textual_outline_modelled.expect | 40 +++ ...29983.dart.textual_outline_modelled.expect | 4 + ...ss_declaration.dart.textual_outline.expect | 1 + ...ation.dart.textual_outline_modelled.expect | 5 + ...in_declaration.dart.textual_outline.expect | 3 +- ...ation.dart.textual_outline_modelled.expect | 4 + .../testcases/textual_outline.status | 47 ---- 88 files changed, 900 insertions(+), 639 deletions(-) create mode 100644 pkg/front_end/testcases/class_modifiers/anonymous_mixin.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/class_modifiers/base/base_class_declaration.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/class_modifiers/final/final_class_declaration.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/class_modifiers/interface/interface_class_declaration.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/class_modifiers/mixin/mixin_class_declaration.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/class_modifiers/mixin/mixin_class_generative_constructor.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/class_modifiers/mixin/mixin_class_superclass_not_object.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/general/final_class_declaration.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/general/mixin_class_declaration.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/general/records.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/patterns/if_else_in_collections_errors.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/patterns/pattern_matching.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/patterns/pattern_types.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/patterns/records/destructuring.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/patterns/records/record_pattern_inside_if_case.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/patterns/simple_if_case_in_lists.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/patterns/simple_if_case_map_entries.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/patterns/switchExpression_empty.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/patterns/switchExpression_onePattern_guarded.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/patterns/switchExpression_onePattern_noTrailingComma.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/patterns/switchExpression_onePattern_trailingComma.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/patterns/switchExpression_twoPatterns.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/patterns/switch_expressions_variable_capture.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/access_through_type_variable.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/block_combine_statements.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/const_local_access.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/const_record_literal.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/duplicated_name_errors.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/issue50132.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/issue50133.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/issue50157.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/issue50182.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/issue50514.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/issue50515.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/named_fields_clashing_with_positional.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/null_shorting.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/nullable_access.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/nullable_access_extension.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/private_field_names.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/record_type.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/restricted_object_member_names.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/simple_inference.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/structurally_constant.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/records/type_record.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/regress/issue_29983.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/sealed_class/sealed_class_declaration.dart.textual_outline_modelled.expect create mode 100644 pkg/front_end/testcases/sealed_class/sealed_mixin_declaration.dart.textual_outline_modelled.expect diff --git a/CHANGELOG.md b/CHANGELOG.md index e7d333794ca..35c8e1bda42 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -137,6 +137,15 @@ #### Web Dev Compiler (DDC) - Removed deprecated command line flags `-k`, `--kernel`, and `--dart-sdk`. +#### Formatter + +* Allow switch case bodies on the same line as the `case:` or `default:` if all + case bodies fit. +* Format `sync*` and `async*` functions with `=>` bodies. +* Don't split after `<` in collection literals. +* Better indentation of multiline function types inside type argument lists. +* Fix bug where parameter metadata wouldn't always split when it should. + #### Linter Updates the Linter to `1.34.0-dev`, which includes changes that diff --git a/DEPS b/DEPS index b4e4703fa40..38f48b2c32f 100644 --- a/DEPS +++ b/DEPS @@ -134,7 +134,7 @@ vars = { # and land the review. # # For more details, see https://github.com/dart-lang/sdk/issues/30164. - "dart_style_rev": "d0c6b1da52c9f80679a7aaa05e5935ef5c6bb52f", # manually rev'd + "dart_style_rev": "4aebeb3bcce2a62c1d37fd48decf6e90259a4715", # manually rev'd "dartdoc_rev": "e4cdbd6f349ecbc420d33cca69a02fb287a7edf5", "ffi_rev": "32f5eefea59d4461e8ab40e83f157e49d5abe0da", "file_rev": "72a67c33f90bfb7e10057e286e06d2fe3baa4d98", diff --git a/pkg/analysis_server/lib/protocol/protocol_generated.dart b/pkg/analysis_server/lib/protocol/protocol_generated.dart index de575704669..1aabcd63a82 100644 --- a/pkg/analysis_server/lib/protocol/protocol_generated.dart +++ b/pkg/analysis_server/lib/protocol/protocol_generated.dart @@ -2489,24 +2489,15 @@ class AnalysisService implements Enum { factory AnalysisService(String name) { switch (name) { - case 'CLOSING_LABELS': - return CLOSING_LABELS; - case 'FOLDING': - return FOLDING; - case 'HIGHLIGHTS': - return HIGHLIGHTS; - case 'IMPLEMENTED': - return IMPLEMENTED; - case 'INVALIDATE': - return INVALIDATE; - case 'NAVIGATION': - return NAVIGATION; - case 'OCCURRENCES': - return OCCURRENCES; - case 'OUTLINE': - return OUTLINE; - case 'OVERRIDES': - return OVERRIDES; + case 'CLOSING_LABELS': return CLOSING_LABELS; + case 'FOLDING': return FOLDING; + case 'HIGHLIGHTS': return HIGHLIGHTS; + case 'IMPLEMENTED': return IMPLEMENTED; + case 'INVALIDATE': return INVALIDATE; + case 'NAVIGATION': return NAVIGATION; + case 'OCCURRENCES': return OCCURRENCES; + case 'OUTLINE': return OUTLINE; + case 'OVERRIDES': return OVERRIDES; } throw Exception('Illegal enum value: $name'); } @@ -4168,12 +4159,9 @@ class CompletionCaseMatchingMode implements Enum { factory CompletionCaseMatchingMode(String name) { switch (name) { - case 'FIRST_CHAR': - return FIRST_CHAR; - case 'ALL_CHARS': - return ALL_CHARS; - case 'NONE': - return NONE; + case 'FIRST_CHAR': return FIRST_CHAR; + case 'ALL_CHARS': return ALL_CHARS; + case 'NONE': return NONE; } throw Exception('Illegal enum value: $name'); } @@ -5124,10 +5112,8 @@ class CompletionMode implements Enum { factory CompletionMode(String name) { switch (name) { - case 'BASIC': - return BASIC; - case 'SMART': - return SMART; + case 'BASIC': return BASIC; + case 'SMART': return SMART; } throw Exception('Illegal enum value: $name'); } @@ -5512,8 +5498,7 @@ class CompletionService implements Enum { factory CompletionService(String name) { switch (name) { - case 'AVAILABLE_SUGGESTION_SETS': - return AVAILABLE_SUGGESTION_SETS; + case 'AVAILABLE_SUGGESTION_SETS': return AVAILABLE_SUGGESTION_SETS; } throw Exception('Illegal enum value: $name'); } @@ -8577,14 +8562,10 @@ class ExecutableKind implements Enum { factory ExecutableKind(String name) { switch (name) { - case 'CLIENT': - return CLIENT; - case 'EITHER': - return EITHER; - case 'NOT_EXECUTABLE': - return NOT_EXECUTABLE; - case 'SERVER': - return SERVER; + case 'CLIENT': return CLIENT; + case 'EITHER': return EITHER; + case 'NOT_EXECUTABLE': return NOT_EXECUTABLE; + case 'SERVER': return SERVER; } throw Exception('Illegal enum value: $name'); } @@ -9385,8 +9366,7 @@ class ExecutionService implements Enum { factory ExecutionService(String name) { switch (name) { - case 'LAUNCH_DATA': - return LAUNCH_DATA; + case 'LAUNCH_DATA': return LAUNCH_DATA; } throw Exception('Illegal enum value: $name'); } @@ -10269,10 +10249,8 @@ class FileKind implements Enum { factory FileKind(String name) { switch (name) { - case 'LIBRARY': - return LIBRARY; - case 'PART': - return PART; + case 'LIBRARY': return LIBRARY; + case 'PART': return PART; } throw Exception('Illegal enum value: $name'); } @@ -10910,18 +10888,12 @@ class FlutterOutlineKind implements Enum { factory FlutterOutlineKind(String name) { switch (name) { - case 'DART_ELEMENT': - return DART_ELEMENT; - case 'GENERIC': - return GENERIC; - case 'NEW_INSTANCE': - return NEW_INSTANCE; - case 'INVOCATION': - return INVOCATION; - case 'VARIABLE': - return VARIABLE; - case 'PLACEHOLDER': - return PLACEHOLDER; + case 'DART_ELEMENT': return DART_ELEMENT; + case 'GENERIC': return GENERIC; + case 'NEW_INSTANCE': return NEW_INSTANCE; + case 'INVOCATION': return INVOCATION; + case 'VARIABLE': return VARIABLE; + case 'PLACEHOLDER': return PLACEHOLDER; } throw Exception('Illegal enum value: $name'); } @@ -11039,8 +11011,7 @@ class FlutterService implements Enum { factory FlutterService(String name) { switch (name) { - case 'OUTLINE': - return OUTLINE; + case 'OUTLINE': return OUTLINE; } throw Exception('Illegal enum value: $name'); } @@ -11648,18 +11619,12 @@ class FlutterWidgetPropertyEditorKind implements Enum { factory FlutterWidgetPropertyEditorKind(String name) { switch (name) { - case 'BOOL': - return BOOL; - case 'DOUBLE': - return DOUBLE; - case 'ENUM': - return ENUM; - case 'ENUM_LIKE': - return ENUM_LIKE; - case 'INT': - return INT; - case 'STRING': - return STRING; + case 'BOOL': return BOOL; + case 'DOUBLE': return DOUBLE; + case 'ENUM': return ENUM; + case 'ENUM_LIKE': return ENUM_LIKE; + case 'INT': return INT; + case 'STRING': return STRING; } throw Exception('Illegal enum value: $name'); } @@ -11947,8 +11912,7 @@ class GeneralAnalysisService implements Enum { factory GeneralAnalysisService(String name) { switch (name) { - case 'ANALYZED_FILES': - return ANALYZED_FILES; + case 'ANALYZED_FILES': return ANALYZED_FILES; } throw Exception('Illegal enum value: $name'); } @@ -14319,12 +14283,9 @@ class RuntimeCompletionExpressionTypeKind implements Enum { factory RuntimeCompletionExpressionTypeKind(String name) { switch (name) { - case 'DYNAMIC': - return DYNAMIC; - case 'FUNCTION': - return FUNCTION; - case 'INTERFACE': - return INTERFACE; + case 'DYNAMIC': return DYNAMIC; + case 'FUNCTION': return FUNCTION; + case 'INTERFACE': return INTERFACE; } throw Exception('Illegal enum value: $name'); } @@ -15495,20 +15456,13 @@ class SearchResultKind implements Enum { factory SearchResultKind(String name) { switch (name) { - case 'DECLARATION': - return DECLARATION; - case 'INVOCATION': - return INVOCATION; - case 'READ': - return READ; - case 'READ_WRITE': - return READ_WRITE; - case 'REFERENCE': - return REFERENCE; - case 'UNKNOWN': - return UNKNOWN; - case 'WRITE': - return WRITE; + case 'DECLARATION': return DECLARATION; + case 'INVOCATION': return INVOCATION; + case 'READ': return READ; + case 'READ_WRITE': return READ_WRITE; + case 'REFERENCE': return REFERENCE; + case 'UNKNOWN': return UNKNOWN; + case 'WRITE': return WRITE; } throw Exception('Illegal enum value: $name'); } @@ -16094,14 +16048,10 @@ class ServerLogEntryKind implements Enum { factory ServerLogEntryKind(String name) { switch (name) { - case 'NOTIFICATION': - return NOTIFICATION; - case 'RAW': - return RAW; - case 'REQUEST': - return REQUEST; - case 'RESPONSE': - return RESPONSE; + case 'NOTIFICATION': return NOTIFICATION; + case 'RAW': return RAW; + case 'REQUEST': return REQUEST; + case 'RESPONSE': return RESPONSE; } throw Exception('Illegal enum value: $name'); } @@ -16207,10 +16157,8 @@ class ServerService implements Enum { factory ServerService(String name) { switch (name) { - case 'LOG': - return LOG; - case 'STATUS': - return STATUS; + case 'LOG': return LOG; + case 'STATUS': return STATUS; } throw Exception('Illegal enum value: $name'); } diff --git a/pkg/analysis_server_client/lib/src/protocol/protocol_common.dart b/pkg/analysis_server_client/lib/src/protocol/protocol_common.dart index 01225fef6cd..3e5d210239e 100644 --- a/pkg/analysis_server_client/lib/src/protocol/protocol_common.dart +++ b/pkg/analysis_server_client/lib/src/protocol/protocol_common.dart @@ -293,12 +293,9 @@ class AnalysisErrorSeverity implements Enum { factory AnalysisErrorSeverity(String name) { switch (name) { - case 'INFO': - return INFO; - case 'WARNING': - return WARNING; - case 'ERROR': - return ERROR; + case 'INFO': return INFO; + case 'WARNING': return WARNING; + case 'ERROR': return ERROR; } throw Exception('Illegal enum value: $name'); } @@ -1076,26 +1073,16 @@ class CompletionSuggestionKind implements Enum { factory CompletionSuggestionKind(String name) { switch (name) { - case 'ARGUMENT_LIST': - return ARGUMENT_LIST; - case 'IMPORT': - return IMPORT; - case 'IDENTIFIER': - return IDENTIFIER; - case 'INVOCATION': - return INVOCATION; - case 'KEYWORD': - return KEYWORD; - case 'NAMED_ARGUMENT': - return NAMED_ARGUMENT; - case 'OPTIONAL_ARGUMENT': - return OPTIONAL_ARGUMENT; - case 'OVERRIDE': - return OVERRIDE; - case 'PARAMETER': - return PARAMETER; - case 'PACKAGE_NAME': - return PACKAGE_NAME; + case 'ARGUMENT_LIST': return ARGUMENT_LIST; + case 'IMPORT': return IMPORT; + case 'IDENTIFIER': return IDENTIFIER; + case 'INVOCATION': return INVOCATION; + case 'KEYWORD': return KEYWORD; + case 'NAMED_ARGUMENT': return NAMED_ARGUMENT; + case 'OPTIONAL_ARGUMENT': return OPTIONAL_ARGUMENT; + case 'OVERRIDE': return OVERRIDE; + case 'PARAMETER': return PARAMETER; + case 'PACKAGE_NAME': return PACKAGE_NAME; } throw Exception('Illegal enum value: $name'); } @@ -1532,62 +1519,34 @@ class ElementKind implements Enum { factory ElementKind(String name) { switch (name) { - case 'CLASS': - return CLASS; - case 'CLASS_TYPE_ALIAS': - return CLASS_TYPE_ALIAS; - case 'COMPILATION_UNIT': - return COMPILATION_UNIT; - case 'CONSTRUCTOR': - return CONSTRUCTOR; - case 'CONSTRUCTOR_INVOCATION': - return CONSTRUCTOR_INVOCATION; - case 'ENUM': - return ENUM; - case 'ENUM_CONSTANT': - return ENUM_CONSTANT; - case 'EXTENSION': - return EXTENSION; - case 'FIELD': - return FIELD; - case 'FILE': - return FILE; - case 'FUNCTION': - return FUNCTION; - case 'FUNCTION_INVOCATION': - return FUNCTION_INVOCATION; - case 'FUNCTION_TYPE_ALIAS': - return FUNCTION_TYPE_ALIAS; - case 'GETTER': - return GETTER; - case 'LABEL': - return LABEL; - case 'LIBRARY': - return LIBRARY; - case 'LOCAL_VARIABLE': - return LOCAL_VARIABLE; - case 'METHOD': - return METHOD; - case 'MIXIN': - return MIXIN; - case 'PARAMETER': - return PARAMETER; - case 'PREFIX': - return PREFIX; - case 'SETTER': - return SETTER; - case 'TOP_LEVEL_VARIABLE': - return TOP_LEVEL_VARIABLE; - case 'TYPE_ALIAS': - return TYPE_ALIAS; - case 'TYPE_PARAMETER': - return TYPE_PARAMETER; - case 'UNIT_TEST_GROUP': - return UNIT_TEST_GROUP; - case 'UNIT_TEST_TEST': - return UNIT_TEST_TEST; - case 'UNKNOWN': - return UNKNOWN; + case 'CLASS': return CLASS; + case 'CLASS_TYPE_ALIAS': return CLASS_TYPE_ALIAS; + case 'COMPILATION_UNIT': return COMPILATION_UNIT; + case 'CONSTRUCTOR': return CONSTRUCTOR; + case 'CONSTRUCTOR_INVOCATION': return CONSTRUCTOR_INVOCATION; + case 'ENUM': return ENUM; + case 'ENUM_CONSTANT': return ENUM_CONSTANT; + case 'EXTENSION': return EXTENSION; + case 'FIELD': return FIELD; + case 'FILE': return FILE; + case 'FUNCTION': return FUNCTION; + case 'FUNCTION_INVOCATION': return FUNCTION_INVOCATION; + case 'FUNCTION_TYPE_ALIAS': return FUNCTION_TYPE_ALIAS; + case 'GETTER': return GETTER; + case 'LABEL': return LABEL; + case 'LIBRARY': return LIBRARY; + case 'LOCAL_VARIABLE': return LOCAL_VARIABLE; + case 'METHOD': return METHOD; + case 'MIXIN': return MIXIN; + case 'PARAMETER': return PARAMETER; + case 'PREFIX': return PREFIX; + case 'SETTER': return SETTER; + case 'TOP_LEVEL_VARIABLE': return TOP_LEVEL_VARIABLE; + case 'TYPE_ALIAS': return TYPE_ALIAS; + case 'TYPE_PARAMETER': return TYPE_PARAMETER; + case 'UNIT_TEST_GROUP': return UNIT_TEST_GROUP; + case 'UNIT_TEST_TEST': return UNIT_TEST_TEST; + case 'UNKNOWN': return UNKNOWN; } throw Exception('Illegal enum value: $name'); } @@ -1673,28 +1632,17 @@ class FoldingKind implements Enum { factory FoldingKind(String name) { switch (name) { - case 'ANNOTATIONS': - return ANNOTATIONS; - case 'BLOCK': - return BLOCK; - case 'CLASS_BODY': - return CLASS_BODY; - case 'COMMENT': - return COMMENT; - case 'DIRECTIVES': - return DIRECTIVES; - case 'DOCUMENTATION_COMMENT': - return DOCUMENTATION_COMMENT; - case 'FILE_HEADER': - return FILE_HEADER; - case 'FUNCTION_BODY': - return FUNCTION_BODY; - case 'INVOCATION': - return INVOCATION; - case 'LITERAL': - return LITERAL; - case 'PARAMETERS': - return PARAMETERS; + case 'ANNOTATIONS': return ANNOTATIONS; + case 'BLOCK': return BLOCK; + case 'CLASS_BODY': return CLASS_BODY; + case 'COMMENT': return COMMENT; + case 'DIRECTIVES': return DIRECTIVES; + case 'DOCUMENTATION_COMMENT': return DOCUMENTATION_COMMENT; + case 'FILE_HEADER': return FILE_HEADER; + case 'FUNCTION_BODY': return FUNCTION_BODY; + case 'INVOCATION': return INVOCATION; + case 'LITERAL': return LITERAL; + case 'PARAMETERS': return PARAMETERS; } throw Exception('Illegal enum value: $name'); } @@ -2698,14 +2646,10 @@ class LinkedEditSuggestionKind implements Enum { factory LinkedEditSuggestionKind(String name) { switch (name) { - case 'METHOD': - return METHOD; - case 'PARAMETER': - return PARAMETER; - case 'TYPE': - return TYPE; - case 'VARIABLE': - return VARIABLE; + case 'METHOD': return METHOD; + case 'PARAMETER': return PARAMETER; + case 'TYPE': return TYPE; + case 'VARIABLE': return VARIABLE; } throw Exception('Illegal enum value: $name'); } @@ -3464,14 +3408,10 @@ class ParameterKind implements Enum { factory ParameterKind(String name) { switch (name) { - case 'OPTIONAL_NAMED': - return OPTIONAL_NAMED; - case 'OPTIONAL_POSITIONAL': - return OPTIONAL_POSITIONAL; - case 'REQUIRED_NAMED': - return REQUIRED_NAMED; - case 'REQUIRED_POSITIONAL': - return REQUIRED_POSITIONAL; + case 'OPTIONAL_NAMED': return OPTIONAL_NAMED; + case 'OPTIONAL_POSITIONAL': return OPTIONAL_POSITIONAL; + case 'REQUIRED_NAMED': return REQUIRED_NAMED; + case 'REQUIRED_POSITIONAL': return REQUIRED_POSITIONAL; } throw Exception('Illegal enum value: $name'); } @@ -3620,24 +3560,15 @@ class RefactoringKind implements Enum { factory RefactoringKind(String name) { switch (name) { - case 'CONVERT_GETTER_TO_METHOD': - return CONVERT_GETTER_TO_METHOD; - case 'CONVERT_METHOD_TO_GETTER': - return CONVERT_METHOD_TO_GETTER; - case 'EXTRACT_LOCAL_VARIABLE': - return EXTRACT_LOCAL_VARIABLE; - case 'EXTRACT_METHOD': - return EXTRACT_METHOD; - case 'EXTRACT_WIDGET': - return EXTRACT_WIDGET; - case 'INLINE_LOCAL_VARIABLE': - return INLINE_LOCAL_VARIABLE; - case 'INLINE_METHOD': - return INLINE_METHOD; - case 'MOVE_FILE': - return MOVE_FILE; - case 'RENAME': - return RENAME; + case 'CONVERT_GETTER_TO_METHOD': return CONVERT_GETTER_TO_METHOD; + case 'CONVERT_METHOD_TO_GETTER': return CONVERT_METHOD_TO_GETTER; + case 'EXTRACT_LOCAL_VARIABLE': return EXTRACT_LOCAL_VARIABLE; + case 'EXTRACT_METHOD': return EXTRACT_METHOD; + case 'EXTRACT_WIDGET': return EXTRACT_WIDGET; + case 'INLINE_LOCAL_VARIABLE': return INLINE_LOCAL_VARIABLE; + case 'INLINE_METHOD': return INLINE_METHOD; + case 'MOVE_FILE': return MOVE_FILE; + case 'RENAME': return RENAME; } throw Exception('Illegal enum value: $name'); } @@ -3805,12 +3736,9 @@ class RefactoringMethodParameterKind implements Enum { factory RefactoringMethodParameterKind(String name) { switch (name) { - case 'REQUIRED': - return REQUIRED; - case 'POSITIONAL': - return POSITIONAL; - case 'NAMED': - return NAMED; + case 'REQUIRED': return REQUIRED; + case 'POSITIONAL': return POSITIONAL; + case 'NAMED': return NAMED; } throw Exception('Illegal enum value: $name'); } @@ -3970,14 +3898,10 @@ class RefactoringProblemSeverity implements Enum { factory RefactoringProblemSeverity(String name) { switch (name) { - case 'INFO': - return INFO; - case 'WARNING': - return WARNING; - case 'ERROR': - return ERROR; - case 'FATAL': - return FATAL; + case 'INFO': return INFO; + case 'WARNING': return WARNING; + case 'ERROR': return ERROR; + case 'FATAL': return FATAL; } throw Exception('Illegal enum value: $name'); } diff --git a/pkg/analysis_server_client/lib/src/protocol/protocol_generated.dart b/pkg/analysis_server_client/lib/src/protocol/protocol_generated.dart index 2076786bcfd..0a6b6064008 100644 --- a/pkg/analysis_server_client/lib/src/protocol/protocol_generated.dart +++ b/pkg/analysis_server_client/lib/src/protocol/protocol_generated.dart @@ -2489,24 +2489,15 @@ class AnalysisService implements Enum { factory AnalysisService(String name) { switch (name) { - case 'CLOSING_LABELS': - return CLOSING_LABELS; - case 'FOLDING': - return FOLDING; - case 'HIGHLIGHTS': - return HIGHLIGHTS; - case 'IMPLEMENTED': - return IMPLEMENTED; - case 'INVALIDATE': - return INVALIDATE; - case 'NAVIGATION': - return NAVIGATION; - case 'OCCURRENCES': - return OCCURRENCES; - case 'OUTLINE': - return OUTLINE; - case 'OVERRIDES': - return OVERRIDES; + case 'CLOSING_LABELS': return CLOSING_LABELS; + case 'FOLDING': return FOLDING; + case 'HIGHLIGHTS': return HIGHLIGHTS; + case 'IMPLEMENTED': return IMPLEMENTED; + case 'INVALIDATE': return INVALIDATE; + case 'NAVIGATION': return NAVIGATION; + case 'OCCURRENCES': return OCCURRENCES; + case 'OUTLINE': return OUTLINE; + case 'OVERRIDES': return OVERRIDES; } throw Exception('Illegal enum value: $name'); } @@ -4168,12 +4159,9 @@ class CompletionCaseMatchingMode implements Enum { factory CompletionCaseMatchingMode(String name) { switch (name) { - case 'FIRST_CHAR': - return FIRST_CHAR; - case 'ALL_CHARS': - return ALL_CHARS; - case 'NONE': - return NONE; + case 'FIRST_CHAR': return FIRST_CHAR; + case 'ALL_CHARS': return ALL_CHARS; + case 'NONE': return NONE; } throw Exception('Illegal enum value: $name'); } @@ -5124,10 +5112,8 @@ class CompletionMode implements Enum { factory CompletionMode(String name) { switch (name) { - case 'BASIC': - return BASIC; - case 'SMART': - return SMART; + case 'BASIC': return BASIC; + case 'SMART': return SMART; } throw Exception('Illegal enum value: $name'); } @@ -5512,8 +5498,7 @@ class CompletionService implements Enum { factory CompletionService(String name) { switch (name) { - case 'AVAILABLE_SUGGESTION_SETS': - return AVAILABLE_SUGGESTION_SETS; + case 'AVAILABLE_SUGGESTION_SETS': return AVAILABLE_SUGGESTION_SETS; } throw Exception('Illegal enum value: $name'); } @@ -8577,14 +8562,10 @@ class ExecutableKind implements Enum { factory ExecutableKind(String name) { switch (name) { - case 'CLIENT': - return CLIENT; - case 'EITHER': - return EITHER; - case 'NOT_EXECUTABLE': - return NOT_EXECUTABLE; - case 'SERVER': - return SERVER; + case 'CLIENT': return CLIENT; + case 'EITHER': return EITHER; + case 'NOT_EXECUTABLE': return NOT_EXECUTABLE; + case 'SERVER': return SERVER; } throw Exception('Illegal enum value: $name'); } @@ -9385,8 +9366,7 @@ class ExecutionService implements Enum { factory ExecutionService(String name) { switch (name) { - case 'LAUNCH_DATA': - return LAUNCH_DATA; + case 'LAUNCH_DATA': return LAUNCH_DATA; } throw Exception('Illegal enum value: $name'); } @@ -10269,10 +10249,8 @@ class FileKind implements Enum { factory FileKind(String name) { switch (name) { - case 'LIBRARY': - return LIBRARY; - case 'PART': - return PART; + case 'LIBRARY': return LIBRARY; + case 'PART': return PART; } throw Exception('Illegal enum value: $name'); } @@ -10910,18 +10888,12 @@ class FlutterOutlineKind implements Enum { factory FlutterOutlineKind(String name) { switch (name) { - case 'DART_ELEMENT': - return DART_ELEMENT; - case 'GENERIC': - return GENERIC; - case 'NEW_INSTANCE': - return NEW_INSTANCE; - case 'INVOCATION': - return INVOCATION; - case 'VARIABLE': - return VARIABLE; - case 'PLACEHOLDER': - return PLACEHOLDER; + case 'DART_ELEMENT': return DART_ELEMENT; + case 'GENERIC': return GENERIC; + case 'NEW_INSTANCE': return NEW_INSTANCE; + case 'INVOCATION': return INVOCATION; + case 'VARIABLE': return VARIABLE; + case 'PLACEHOLDER': return PLACEHOLDER; } throw Exception('Illegal enum value: $name'); } @@ -11039,8 +11011,7 @@ class FlutterService implements Enum { factory FlutterService(String name) { switch (name) { - case 'OUTLINE': - return OUTLINE; + case 'OUTLINE': return OUTLINE; } throw Exception('Illegal enum value: $name'); } @@ -11648,18 +11619,12 @@ class FlutterWidgetPropertyEditorKind implements Enum { factory FlutterWidgetPropertyEditorKind(String name) { switch (name) { - case 'BOOL': - return BOOL; - case 'DOUBLE': - return DOUBLE; - case 'ENUM': - return ENUM; - case 'ENUM_LIKE': - return ENUM_LIKE; - case 'INT': - return INT; - case 'STRING': - return STRING; + case 'BOOL': return BOOL; + case 'DOUBLE': return DOUBLE; + case 'ENUM': return ENUM; + case 'ENUM_LIKE': return ENUM_LIKE; + case 'INT': return INT; + case 'STRING': return STRING; } throw Exception('Illegal enum value: $name'); } @@ -11947,8 +11912,7 @@ class GeneralAnalysisService implements Enum { factory GeneralAnalysisService(String name) { switch (name) { - case 'ANALYZED_FILES': - return ANALYZED_FILES; + case 'ANALYZED_FILES': return ANALYZED_FILES; } throw Exception('Illegal enum value: $name'); } @@ -14319,12 +14283,9 @@ class RuntimeCompletionExpressionTypeKind implements Enum { factory RuntimeCompletionExpressionTypeKind(String name) { switch (name) { - case 'DYNAMIC': - return DYNAMIC; - case 'FUNCTION': - return FUNCTION; - case 'INTERFACE': - return INTERFACE; + case 'DYNAMIC': return DYNAMIC; + case 'FUNCTION': return FUNCTION; + case 'INTERFACE': return INTERFACE; } throw Exception('Illegal enum value: $name'); } @@ -15495,20 +15456,13 @@ class SearchResultKind implements Enum { factory SearchResultKind(String name) { switch (name) { - case 'DECLARATION': - return DECLARATION; - case 'INVOCATION': - return INVOCATION; - case 'READ': - return READ; - case 'READ_WRITE': - return READ_WRITE; - case 'REFERENCE': - return REFERENCE; - case 'UNKNOWN': - return UNKNOWN; - case 'WRITE': - return WRITE; + case 'DECLARATION': return DECLARATION; + case 'INVOCATION': return INVOCATION; + case 'READ': return READ; + case 'READ_WRITE': return READ_WRITE; + case 'REFERENCE': return REFERENCE; + case 'UNKNOWN': return UNKNOWN; + case 'WRITE': return WRITE; } throw Exception('Illegal enum value: $name'); } @@ -16094,14 +16048,10 @@ class ServerLogEntryKind implements Enum { factory ServerLogEntryKind(String name) { switch (name) { - case 'NOTIFICATION': - return NOTIFICATION; - case 'RAW': - return RAW; - case 'REQUEST': - return REQUEST; - case 'RESPONSE': - return RESPONSE; + case 'NOTIFICATION': return NOTIFICATION; + case 'RAW': return RAW; + case 'REQUEST': return REQUEST; + case 'RESPONSE': return RESPONSE; } throw Exception('Illegal enum value: $name'); } @@ -16207,10 +16157,8 @@ class ServerService implements Enum { factory ServerService(String name) { switch (name) { - case 'LOG': - return LOG; - case 'STATUS': - return STATUS; + case 'LOG': return LOG; + case 'STATUS': return STATUS; } throw Exception('Illegal enum value: $name'); } diff --git a/pkg/analyzer_plugin/lib/protocol/protocol_common.dart b/pkg/analyzer_plugin/lib/protocol/protocol_common.dart index 7f6bb07134a..cb2511ff667 100644 --- a/pkg/analyzer_plugin/lib/protocol/protocol_common.dart +++ b/pkg/analyzer_plugin/lib/protocol/protocol_common.dart @@ -293,12 +293,9 @@ class AnalysisErrorSeverity implements Enum { factory AnalysisErrorSeverity(String name) { switch (name) { - case 'INFO': - return INFO; - case 'WARNING': - return WARNING; - case 'ERROR': - return ERROR; + case 'INFO': return INFO; + case 'WARNING': return WARNING; + case 'ERROR': return ERROR; } throw Exception('Illegal enum value: $name'); } @@ -1076,26 +1073,16 @@ class CompletionSuggestionKind implements Enum { factory CompletionSuggestionKind(String name) { switch (name) { - case 'ARGUMENT_LIST': - return ARGUMENT_LIST; - case 'IMPORT': - return IMPORT; - case 'IDENTIFIER': - return IDENTIFIER; - case 'INVOCATION': - return INVOCATION; - case 'KEYWORD': - return KEYWORD; - case 'NAMED_ARGUMENT': - return NAMED_ARGUMENT; - case 'OPTIONAL_ARGUMENT': - return OPTIONAL_ARGUMENT; - case 'OVERRIDE': - return OVERRIDE; - case 'PARAMETER': - return PARAMETER; - case 'PACKAGE_NAME': - return PACKAGE_NAME; + case 'ARGUMENT_LIST': return ARGUMENT_LIST; + case 'IMPORT': return IMPORT; + case 'IDENTIFIER': return IDENTIFIER; + case 'INVOCATION': return INVOCATION; + case 'KEYWORD': return KEYWORD; + case 'NAMED_ARGUMENT': return NAMED_ARGUMENT; + case 'OPTIONAL_ARGUMENT': return OPTIONAL_ARGUMENT; + case 'OVERRIDE': return OVERRIDE; + case 'PARAMETER': return PARAMETER; + case 'PACKAGE_NAME': return PACKAGE_NAME; } throw Exception('Illegal enum value: $name'); } @@ -1532,62 +1519,34 @@ class ElementKind implements Enum { factory ElementKind(String name) { switch (name) { - case 'CLASS': - return CLASS; - case 'CLASS_TYPE_ALIAS': - return CLASS_TYPE_ALIAS; - case 'COMPILATION_UNIT': - return COMPILATION_UNIT; - case 'CONSTRUCTOR': - return CONSTRUCTOR; - case 'CONSTRUCTOR_INVOCATION': - return CONSTRUCTOR_INVOCATION; - case 'ENUM': - return ENUM; - case 'ENUM_CONSTANT': - return ENUM_CONSTANT; - case 'EXTENSION': - return EXTENSION; - case 'FIELD': - return FIELD; - case 'FILE': - return FILE; - case 'FUNCTION': - return FUNCTION; - case 'FUNCTION_INVOCATION': - return FUNCTION_INVOCATION; - case 'FUNCTION_TYPE_ALIAS': - return FUNCTION_TYPE_ALIAS; - case 'GETTER': - return GETTER; - case 'LABEL': - return LABEL; - case 'LIBRARY': - return LIBRARY; - case 'LOCAL_VARIABLE': - return LOCAL_VARIABLE; - case 'METHOD': - return METHOD; - case 'MIXIN': - return MIXIN; - case 'PARAMETER': - return PARAMETER; - case 'PREFIX': - return PREFIX; - case 'SETTER': - return SETTER; - case 'TOP_LEVEL_VARIABLE': - return TOP_LEVEL_VARIABLE; - case 'TYPE_ALIAS': - return TYPE_ALIAS; - case 'TYPE_PARAMETER': - return TYPE_PARAMETER; - case 'UNIT_TEST_GROUP': - return UNIT_TEST_GROUP; - case 'UNIT_TEST_TEST': - return UNIT_TEST_TEST; - case 'UNKNOWN': - return UNKNOWN; + case 'CLASS': return CLASS; + case 'CLASS_TYPE_ALIAS': return CLASS_TYPE_ALIAS; + case 'COMPILATION_UNIT': return COMPILATION_UNIT; + case 'CONSTRUCTOR': return CONSTRUCTOR; + case 'CONSTRUCTOR_INVOCATION': return CONSTRUCTOR_INVOCATION; + case 'ENUM': return ENUM; + case 'ENUM_CONSTANT': return ENUM_CONSTANT; + case 'EXTENSION': return EXTENSION; + case 'FIELD': return FIELD; + case 'FILE': return FILE; + case 'FUNCTION': return FUNCTION; + case 'FUNCTION_INVOCATION': return FUNCTION_INVOCATION; + case 'FUNCTION_TYPE_ALIAS': return FUNCTION_TYPE_ALIAS; + case 'GETTER': return GETTER; + case 'LABEL': return LABEL; + case 'LIBRARY': return LIBRARY; + case 'LOCAL_VARIABLE': return LOCAL_VARIABLE; + case 'METHOD': return METHOD; + case 'MIXIN': return MIXIN; + case 'PARAMETER': return PARAMETER; + case 'PREFIX': return PREFIX; + case 'SETTER': return SETTER; + case 'TOP_LEVEL_VARIABLE': return TOP_LEVEL_VARIABLE; + case 'TYPE_ALIAS': return TYPE_ALIAS; + case 'TYPE_PARAMETER': return TYPE_PARAMETER; + case 'UNIT_TEST_GROUP': return UNIT_TEST_GROUP; + case 'UNIT_TEST_TEST': return UNIT_TEST_TEST; + case 'UNKNOWN': return UNKNOWN; } throw Exception('Illegal enum value: $name'); } @@ -1673,28 +1632,17 @@ class FoldingKind implements Enum { factory FoldingKind(String name) { switch (name) { - case 'ANNOTATIONS': - return ANNOTATIONS; - case 'BLOCK': - return BLOCK; - case 'CLASS_BODY': - return CLASS_BODY; - case 'COMMENT': - return COMMENT; - case 'DIRECTIVES': - return DIRECTIVES; - case 'DOCUMENTATION_COMMENT': - return DOCUMENTATION_COMMENT; - case 'FILE_HEADER': - return FILE_HEADER; - case 'FUNCTION_BODY': - return FUNCTION_BODY; - case 'INVOCATION': - return INVOCATION; - case 'LITERAL': - return LITERAL; - case 'PARAMETERS': - return PARAMETERS; + case 'ANNOTATIONS': return ANNOTATIONS; + case 'BLOCK': return BLOCK; + case 'CLASS_BODY': return CLASS_BODY; + case 'COMMENT': return COMMENT; + case 'DIRECTIVES': return DIRECTIVES; + case 'DOCUMENTATION_COMMENT': return DOCUMENTATION_COMMENT; + case 'FILE_HEADER': return FILE_HEADER; + case 'FUNCTION_BODY': return FUNCTION_BODY; + case 'INVOCATION': return INVOCATION; + case 'LITERAL': return LITERAL; + case 'PARAMETERS': return PARAMETERS; } throw Exception('Illegal enum value: $name'); } @@ -2698,14 +2646,10 @@ class LinkedEditSuggestionKind implements Enum { factory LinkedEditSuggestionKind(String name) { switch (name) { - case 'METHOD': - return METHOD; - case 'PARAMETER': - return PARAMETER; - case 'TYPE': - return TYPE; - case 'VARIABLE': - return VARIABLE; + case 'METHOD': return METHOD; + case 'PARAMETER': return PARAMETER; + case 'TYPE': return TYPE; + case 'VARIABLE': return VARIABLE; } throw Exception('Illegal enum value: $name'); } @@ -3464,14 +3408,10 @@ class ParameterKind implements Enum { factory ParameterKind(String name) { switch (name) { - case 'OPTIONAL_NAMED': - return OPTIONAL_NAMED; - case 'OPTIONAL_POSITIONAL': - return OPTIONAL_POSITIONAL; - case 'REQUIRED_NAMED': - return REQUIRED_NAMED; - case 'REQUIRED_POSITIONAL': - return REQUIRED_POSITIONAL; + case 'OPTIONAL_NAMED': return OPTIONAL_NAMED; + case 'OPTIONAL_POSITIONAL': return OPTIONAL_POSITIONAL; + case 'REQUIRED_NAMED': return REQUIRED_NAMED; + case 'REQUIRED_POSITIONAL': return REQUIRED_POSITIONAL; } throw Exception('Illegal enum value: $name'); } @@ -3620,24 +3560,15 @@ class RefactoringKind implements Enum { factory RefactoringKind(String name) { switch (name) { - case 'CONVERT_GETTER_TO_METHOD': - return CONVERT_GETTER_TO_METHOD; - case 'CONVERT_METHOD_TO_GETTER': - return CONVERT_METHOD_TO_GETTER; - case 'EXTRACT_LOCAL_VARIABLE': - return EXTRACT_LOCAL_VARIABLE; - case 'EXTRACT_METHOD': - return EXTRACT_METHOD; - case 'EXTRACT_WIDGET': - return EXTRACT_WIDGET; - case 'INLINE_LOCAL_VARIABLE': - return INLINE_LOCAL_VARIABLE; - case 'INLINE_METHOD': - return INLINE_METHOD; - case 'MOVE_FILE': - return MOVE_FILE; - case 'RENAME': - return RENAME; + case 'CONVERT_GETTER_TO_METHOD': return CONVERT_GETTER_TO_METHOD; + case 'CONVERT_METHOD_TO_GETTER': return CONVERT_METHOD_TO_GETTER; + case 'EXTRACT_LOCAL_VARIABLE': return EXTRACT_LOCAL_VARIABLE; + case 'EXTRACT_METHOD': return EXTRACT_METHOD; + case 'EXTRACT_WIDGET': return EXTRACT_WIDGET; + case 'INLINE_LOCAL_VARIABLE': return INLINE_LOCAL_VARIABLE; + case 'INLINE_METHOD': return INLINE_METHOD; + case 'MOVE_FILE': return MOVE_FILE; + case 'RENAME': return RENAME; } throw Exception('Illegal enum value: $name'); } @@ -3805,12 +3736,9 @@ class RefactoringMethodParameterKind implements Enum { factory RefactoringMethodParameterKind(String name) { switch (name) { - case 'REQUIRED': - return REQUIRED; - case 'POSITIONAL': - return POSITIONAL; - case 'NAMED': - return NAMED; + case 'REQUIRED': return REQUIRED; + case 'POSITIONAL': return POSITIONAL; + case 'NAMED': return NAMED; } throw Exception('Illegal enum value: $name'); } @@ -3970,14 +3898,10 @@ class RefactoringProblemSeverity implements Enum { factory RefactoringProblemSeverity(String name) { switch (name) { - case 'INFO': - return INFO; - case 'WARNING': - return WARNING; - case 'ERROR': - return ERROR; - case 'FATAL': - return FATAL; + case 'INFO': return INFO; + case 'WARNING': return WARNING; + case 'ERROR': return ERROR; + case 'FATAL': return FATAL; } throw Exception('Illegal enum value: $name'); } diff --git a/pkg/analyzer_plugin/lib/protocol/protocol_generated.dart b/pkg/analyzer_plugin/lib/protocol/protocol_generated.dart index c43369cbb34..7f6be0fec41 100644 --- a/pkg/analyzer_plugin/lib/protocol/protocol_generated.dart +++ b/pkg/analyzer_plugin/lib/protocol/protocol_generated.dart @@ -930,16 +930,11 @@ class AnalysisService implements Enum { factory AnalysisService(String name) { switch (name) { - case 'FOLDING': - return FOLDING; - case 'HIGHLIGHTS': - return HIGHLIGHTS; - case 'NAVIGATION': - return NAVIGATION; - case 'OCCURRENCES': - return OCCURRENCES; - case 'OUTLINE': - return OUTLINE; + case 'FOLDING': return FOLDING; + case 'HIGHLIGHTS': return HIGHLIGHTS; + case 'NAVIGATION': return NAVIGATION; + case 'OCCURRENCES': return OCCURRENCES; + case 'OUTLINE': return OUTLINE; } throw Exception('Illegal enum value: $name'); } @@ -4035,14 +4030,10 @@ class RequestErrorCode implements Enum { factory RequestErrorCode(String name) { switch (name) { - case 'INVALID_OVERLAY_CHANGE': - return INVALID_OVERLAY_CHANGE; - case 'INVALID_PARAMETER': - return INVALID_PARAMETER; - case 'PLUGIN_ERROR': - return PLUGIN_ERROR; - case 'UNKNOWN_REQUEST': - return UNKNOWN_REQUEST; + case 'INVALID_OVERLAY_CHANGE': return INVALID_OVERLAY_CHANGE; + case 'INVALID_PARAMETER': return INVALID_PARAMETER; + case 'PLUGIN_ERROR': return PLUGIN_ERROR; + case 'UNKNOWN_REQUEST': return UNKNOWN_REQUEST; } throw Exception('Illegal enum value: $name'); } @@ -4164,12 +4155,9 @@ class WatchEventType implements Enum { factory WatchEventType(String name) { switch (name) { - case 'ADD': - return ADD; - case 'MODIFY': - return MODIFY; - case 'REMOVE': - return REMOVE; + case 'ADD': return ADD; + case 'MODIFY': return MODIFY; + case 'REMOVE': return REMOVE; } throw Exception('Illegal enum value: $name'); } diff --git a/pkg/front_end/testcases/class_modifiers/anonymous_mixin.dart.textual_outline.expect b/pkg/front_end/testcases/class_modifiers/anonymous_mixin.dart.textual_outline.expect index e2c842316bb..51bc4379bd7 100644 --- a/pkg/front_end/testcases/class_modifiers/anonymous_mixin.dart.textual_outline.expect +++ b/pkg/front_end/testcases/class_modifiers/anonymous_mixin.dart.textual_outline.expect @@ -1,7 +1,8 @@ -final -mixin M1 {} -sealed -mixin M2 {} +final mixin M1 {} +sealed mixin M2 {} + base class S {} + final class C extends S with M1, M2 {} + final class D = S with M1, M2; diff --git a/pkg/front_end/testcases/class_modifiers/anonymous_mixin.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/class_modifiers/anonymous_mixin.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..29b38d5ceac --- /dev/null +++ b/pkg/front_end/testcases/class_modifiers/anonymous_mixin.dart.textual_outline_modelled.expect @@ -0,0 +1,11 @@ +---- unknown chunk starts ---- +final +---- unknown chunk ends ---- +mixin M1 {} +---- unknown chunk starts ---- +sealed +---- unknown chunk ends ---- +base class S {} +final class C extends S with M1, M2 {} +final class D = S with M1, M2; +mixin M2 {} diff --git a/pkg/front_end/testcases/class_modifiers/base/base_class_declaration.dart.textual_outline.expect b/pkg/front_end/testcases/class_modifiers/base/base_class_declaration.dart.textual_outline.expect index 2cc0c148851..fd09b9bb271 100644 --- a/pkg/front_end/testcases/class_modifiers/base/base_class_declaration.dart.textual_outline.expect +++ b/pkg/front_end/testcases/class_modifiers/base/base_class_declaration.dart.textual_outline.expect @@ -1,5 +1,6 @@ base class A {} + abstract base class B {} -base -mixin M {} + +base mixin M {} base class C = Object with M; diff --git a/pkg/front_end/testcases/class_modifiers/base/base_class_declaration.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/class_modifiers/base/base_class_declaration.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..468d8f05a57 --- /dev/null +++ b/pkg/front_end/testcases/class_modifiers/base/base_class_declaration.dart.textual_outline_modelled.expect @@ -0,0 +1,7 @@ +abstract base class B {} +base class A {} +---- unknown chunk starts ---- +base +---- unknown chunk ends ---- +base class C = Object with M; +mixin M {} diff --git a/pkg/front_end/testcases/class_modifiers/final/final_class_declaration.dart.textual_outline.expect b/pkg/front_end/testcases/class_modifiers/final/final_class_declaration.dart.textual_outline.expect index 04658a45519..eb349489cb1 100644 --- a/pkg/front_end/testcases/class_modifiers/final/final_class_declaration.dart.textual_outline.expect +++ b/pkg/front_end/testcases/class_modifiers/final/final_class_declaration.dart.textual_outline.expect @@ -1,5 +1,6 @@ final class A {} + abstract final class B {} -final -mixin M {} + +final mixin M {} final class C = Object with M; diff --git a/pkg/front_end/testcases/class_modifiers/final/final_class_declaration.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/class_modifiers/final/final_class_declaration.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..8c733fd97e5 --- /dev/null +++ b/pkg/front_end/testcases/class_modifiers/final/final_class_declaration.dart.textual_outline_modelled.expect @@ -0,0 +1,7 @@ +abstract final class B {} +final class A {} +---- unknown chunk starts ---- +final +---- unknown chunk ends ---- +final class C = Object with M; +mixin M {} diff --git a/pkg/front_end/testcases/class_modifiers/interface/interface_class_declaration.dart.textual_outline.expect b/pkg/front_end/testcases/class_modifiers/interface/interface_class_declaration.dart.textual_outline.expect index 4459d3714df..edb72038d40 100644 --- a/pkg/front_end/testcases/class_modifiers/interface/interface_class_declaration.dart.textual_outline.expect +++ b/pkg/front_end/testcases/class_modifiers/interface/interface_class_declaration.dart.textual_outline.expect @@ -1,5 +1,6 @@ interface class A {} + abstract interface class B {} -interface -mixin M {} + +interface mixin M {} interface class C = Object with M; diff --git a/pkg/front_end/testcases/class_modifiers/interface/interface_class_declaration.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/class_modifiers/interface/interface_class_declaration.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..e0d0cbb54cb --- /dev/null +++ b/pkg/front_end/testcases/class_modifiers/interface/interface_class_declaration.dart.textual_outline_modelled.expect @@ -0,0 +1,7 @@ +abstract interface class B {} +interface class A {} +---- unknown chunk starts ---- +interface +---- unknown chunk ends ---- +interface class C = Object with M; +mixin M {} diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_declaration.dart.textual_outline.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_declaration.dart.textual_outline.expect index b6d6cbaa7d9..f9622143d73 100644 --- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_declaration.dart.textual_outline.expect +++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_declaration.dart.textual_outline.expect @@ -1,9 +1,16 @@ mixin class A {} + abstract mixin class B {} + mixin M {} mixin class C = Object with M; + class AWith with A {} + class BWith with B {} + class CWith with C {} + class MultipleWithMixin with A, M {} + class MultipleWithAnotherClass with A, B {} diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_declaration.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_declaration.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..3558bde9f09 --- /dev/null +++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_declaration.dart.textual_outline_modelled.expect @@ -0,0 +1,17 @@ +abstract mixin class B {} + +class AWith with A {} + +class BWith with B {} + +class CWith with C {} + +class MultipleWithAnotherClass with A, B {} + +class MultipleWithMixin with A, M {} + +mixin M {} + +mixin class A {} + +mixin class C = Object with M; diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_generative_constructor.dart.textual_outline.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_generative_constructor.dart.textual_outline.expect index 1d0eb16c569..38b766e9a8c 100644 --- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_generative_constructor.dart.textual_outline.expect +++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_generative_constructor.dart.textual_outline.expect @@ -2,35 +2,43 @@ mixin class ErrorMixinClass { final int foo; ErrorMixinClass(this.foo); } + mixin class ErrorMixinClassNamed { final int foo; ErrorMixinClassNamed.named(this.foo); } + mixin class ErrorMixinClassRedirect { int foo = 0; ErrorMixinClassRedirect.named(int f) {} ErrorMixinClassRedirect.x(int f) : this.named(f); ErrorMixinClassRedirect() {} } + mixin class ErrorMixinClassExternal { external ErrorMixinClassExternal(); } + mixin class ErrorMixinClassSuper { - ErrorMixinClassSuper(): super(); + ErrorMixinClassSuper() : super(); } + mixin class ErrorMixinClassBody { ErrorMixinClassBody() {} } + mixin class MixinClassConstructor { int foo = 0; MixinClassConstructor(); MixinClassConstructor.named(); } + mixin class ConstMixinClassConstructor { final int foo = 0; const ConstMixinClassConstructor(); const ConstMixinClassConstructor.named(); } + mixin class MixinClassFactory { int foo = 0; MixinClassFactory(); diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_generative_constructor.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_generative_constructor.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..558b5cc7b99 --- /dev/null +++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_generative_constructor.dart.textual_outline_modelled.expect @@ -0,0 +1,49 @@ +mixin class ConstMixinClassConstructor { + const ConstMixinClassConstructor(); + const ConstMixinClassConstructor.named(); + final int foo = 0; +} + +mixin class ErrorMixinClass { + ErrorMixinClass(this.foo); + final int foo; +} + +mixin class ErrorMixinClassBody { + ErrorMixinClassBody() {} +} + +mixin class ErrorMixinClassExternal { + external ErrorMixinClassExternal(); +} + +mixin class ErrorMixinClassNamed { + ErrorMixinClassNamed.named(this.foo); + final int foo; +} + +mixin class ErrorMixinClassRedirect { + ErrorMixinClassRedirect() {} + ErrorMixinClassRedirect.named(int f) {} + ErrorMixinClassRedirect.x(int f) : this.named(f); + int foo = 0; +} + +mixin class ErrorMixinClassSuper { + ErrorMixinClassSuper() : super(); +} + +mixin class MixinClassConstructor { + MixinClassConstructor(); + MixinClassConstructor.named(); + int foo = 0; +} + +mixin class MixinClassFactory { + MixinClassFactory(); + MixinClassFactory.named(); + factory MixinClassFactory.x() = MixinClassFactory.named; + factory MixinClassFactory.y() = MixinClassFactory; + factory MixinClassFactory.z() {} + int foo = 0; +} diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_superclass_not_object.dart.textual_outline.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_superclass_not_object.dart.textual_outline.expect index afa61cfc417..fe250caf3d1 100644 --- a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_superclass_not_object.dart.textual_outline.expect +++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_superclass_not_object.dart.textual_outline.expect @@ -1,6 +1,10 @@ mixin class NotObject {} + mixin class AlsoNotObject {} + mixin class A extends NotObject {} + mixin class B extends Object with NotObject {} + mixin class C = Object with NotObject; mixin class D = Object with AlsoNotObject, NotObject; diff --git a/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_superclass_not_object.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_superclass_not_object.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..297d4c650ba --- /dev/null +++ b/pkg/front_end/testcases/class_modifiers/mixin/mixin_class_superclass_not_object.dart.textual_outline_modelled.expect @@ -0,0 +1,10 @@ +mixin class A extends NotObject {} + +mixin class AlsoNotObject {} + +mixin class B extends Object with NotObject {} + +mixin class C = Object with NotObject; +mixin class D = Object with AlsoNotObject, NotObject; + +mixin class NotObject {} diff --git a/pkg/front_end/testcases/general/final_class_declaration.dart.textual_outline.expect b/pkg/front_end/testcases/general/final_class_declaration.dart.textual_outline.expect index f7a9ed45906..c06a8a3aa0c 100644 --- a/pkg/front_end/testcases/general/final_class_declaration.dart.textual_outline.expect +++ b/pkg/front_end/testcases/general/final_class_declaration.dart.textual_outline.expect @@ -1,6 +1,7 @@ // @dart = 2.19 final class A {} + abstract final class B {} -final -mixin M {} + +final mixin M {} final class C = Object with M; diff --git a/pkg/front_end/testcases/general/final_class_declaration.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/final_class_declaration.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..ab1352163f6 --- /dev/null +++ b/pkg/front_end/testcases/general/final_class_declaration.dart.textual_outline_modelled.expect @@ -0,0 +1,8 @@ +// @dart = 2.19 +abstract final class B {} +final class A {} +---- unknown chunk starts ---- +final +---- unknown chunk ends ---- +final class C = Object with M; +mixin M {} diff --git a/pkg/front_end/testcases/general/mixin_class_declaration.dart.textual_outline.expect b/pkg/front_end/testcases/general/mixin_class_declaration.dart.textual_outline.expect index ce18449f0e6..0cc7865b4c0 100644 --- a/pkg/front_end/testcases/general/mixin_class_declaration.dart.textual_outline.expect +++ b/pkg/front_end/testcases/general/mixin_class_declaration.dart.textual_outline.expect @@ -1,4 +1,6 @@ mixin class A {} + abstract mixin class B {} + mixin M {} mixin class C = Object with M; diff --git a/pkg/front_end/testcases/general/mixin_class_declaration.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/mixin_class_declaration.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..02b0ae06607 --- /dev/null +++ b/pkg/front_end/testcases/general/mixin_class_declaration.dart.textual_outline_modelled.expect @@ -0,0 +1,7 @@ +abstract mixin class B {} + +mixin M {} + +mixin class A {} + +mixin class C = Object with M; diff --git a/pkg/front_end/testcases/general/records.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/general/records.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..113c511591a --- /dev/null +++ b/pkg/front_end/testcases/general/records.dart.textual_outline_modelled.expect @@ -0,0 +1,6 @@ +(int, String) method1(int a, String b) => (a, b); +({int a, String b}) method4(int a, String b) => (a: a, b: b); +String method3([(int, String) record = const (0, '')]) => record.$2; +String method6([({int a, String b}) record = const (a: 0, b: '')]) => record.b; +int method2([(int, String) record = const (0, '')]) => record.$1; +int method5([({int a, String b}) record = const (a: 0, b: '')]) => record.a; diff --git a/pkg/front_end/testcases/nnbd/issue41102.dart.textual_outline.expect b/pkg/front_end/testcases/nnbd/issue41102.dart.textual_outline.expect index a88004ff60d..87d2d447162 100644 --- a/pkg/front_end/testcases/nnbd/issue41102.dart.textual_outline.expect +++ b/pkg/front_end/testcases/nnbd/issue41102.dart.textual_outline.expect @@ -11,8 +11,7 @@ final s3 = new List.filled(2, null); final s4 = () { var e = 0; switch (e) { - case 0: - print('fallthrough'); + case 0: print('fallthrough'); case 1: case '': } diff --git a/pkg/front_end/testcases/nnbd/issue41102.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/nnbd/issue41102.dart.textual_outline_modelled.expect index 30f3e1d1e88..d2924f7009b 100644 --- a/pkg/front_end/testcases/nnbd/issue41102.dart.textual_outline_modelled.expect +++ b/pkg/front_end/testcases/nnbd/issue41102.dart.textual_outline_modelled.expect @@ -13,8 +13,7 @@ final s3 = new List.filled(2, null); final s4 = () { var e = 0; switch (e) { - case 0: - print('fallthrough'); + case 0: print('fallthrough'); case 1: case '': } diff --git a/pkg/front_end/testcases/patterns/if_else_in_collections_errors.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/patterns/if_else_in_collections_errors.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..6f85647cd42 --- /dev/null +++ b/pkg/front_end/testcases/patterns/if_else_in_collections_errors.dart.textual_outline_modelled.expect @@ -0,0 +1,4 @@ +main() {} +test1(dynamic x) => [1, if (x case int y) 2 else y, 3]; +test2(dynamic x) => {1, if (x case int y) 2 else y, 3}; +test3(dynamic x) => {1: 1, if (x case int y) 2: 2 else 2: y, 3: 3}; diff --git a/pkg/front_end/testcases/patterns/pattern_matching.dart.textual_outline.expect b/pkg/front_end/testcases/patterns/pattern_matching.dart.textual_outline.expect index 21787e1ab1c..8e20c5c9059 100644 --- a/pkg/front_end/testcases/patterns/pattern_matching.dart.textual_outline.expect +++ b/pkg/front_end/testcases/patterns/pattern_matching.dart.textual_outline.expect @@ -1,19 +1,21 @@ import 'dart:math' as math; + sealed class Shape { double calculateArea(); } + class Square implements Shape { final double length; Square(this.length); double calculateArea() => length * length; } + class Circle implements Shape { final double radius; Circle(this.radius); double calculateArea() => math.pi * radius * radius; } -double calculateArea(Shape shape) => -switch (shape) {} -; + +double calculateArea(Shape shape) => switch (shape) { }; main() {} expect(expected, actual) {} diff --git a/pkg/front_end/testcases/patterns/pattern_matching.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/patterns/pattern_matching.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..059bee46e59 --- /dev/null +++ b/pkg/front_end/testcases/patterns/pattern_matching.dart.textual_outline_modelled.expect @@ -0,0 +1,21 @@ +import 'dart:math' as math; +class Circle implements Shape { + Circle(this.radius); + double calculateArea() => math.pi * radius * radius; + final double radius; +} +class Square implements Shape { + Square(this.length); + double calculateArea() => length * length; + final double length; +} +double calculateArea(Shape shape) => +sealed class Shape { + double calculateArea(); +} +switch (shape) {} +---- unknown chunk starts ---- +; +---- unknown chunk ends ---- +expect(expected, actual) {} +main() {} diff --git a/pkg/front_end/testcases/patterns/pattern_types.dart.textual_outline.expect b/pkg/front_end/testcases/patterns/pattern_types.dart.textual_outline.expect index 463e6392df0..5e61eba533c 100644 --- a/pkg/front_end/testcases/patterns/pattern_types.dart.textual_outline.expect +++ b/pkg/front_end/testcases/patterns/pattern_types.dart.textual_outline.expect @@ -1,11 +1,13 @@ import 'pattern_types_lib1.dart'; import 'pattern_types_lib2.dart'; + typedef Dynamic = dynamic; typedef Function1 = void Function(); typedef Function1_ = Function1?; typedef Record1 = (int, {String named}); typedef Record1_ = Record1?; typedef Class_ = Class?; + class Class { var field; void method() {} @@ -13,10 +15,12 @@ class Class { int operator >(int i) => 0; operator ==(other) => true; } + class Class2 { bool operator <(Class2 i) => true; operator ==(covariant Class2 other) => true; } + extension on Class { int get extensionGetter => 42; void extensionMethod() {} @@ -24,14 +28,27 @@ extension on Class { int operator >=(int i) => 0; int get ambiguousField => 42; } + extension on Class { String get ambiguousField => '42'; } + extension on String { bool operator <=(other) => true; } + extension on String { bool operator <=(other) => true; } + objectPattern(o) {} -relationalPattern(dynamic dyn, Never never, Class cls, Class? cls_, Invalid invalid, String string, Class2 cls2, Class2? cls2_, ) {} +relationalPattern( + dynamic dyn, + Never never, + Class cls, + Class? cls_, + Invalid invalid, + String string, + Class2 cls2, + Class2? cls2_, +) {} diff --git a/pkg/front_end/testcases/patterns/pattern_types.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/patterns/pattern_types.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..f32154bd8aa --- /dev/null +++ b/pkg/front_end/testcases/patterns/pattern_types.dart.textual_outline_modelled.expect @@ -0,0 +1,53 @@ +import 'pattern_types_lib1.dart'; +import 'pattern_types_lib2.dart'; + +class Class { + bool operator <(int i) => true; + int operator >(int i) => 0; + operator ==(other) => true; + var field; + void method() {} +} + +class Class2 { + bool operator <(Class2 i) => true; + operator ==(covariant Class2 other) => true; +} + +extension on Class { + String get ambiguousField => '42'; +} + +extension on Class { + bool operator <=(int i) => true; + int get ambiguousField => 42; + int get extensionGetter => 42; + int operator >=(int i) => 0; + void extensionMethod() {} +} + +extension on String { + bool operator <=(other) => true; +} + +extension on String { + bool operator <=(other) => true; +} + +objectPattern(o) {} +relationalPattern( + dynamic dyn, + Never never, + Class cls, + Class? cls_, + Invalid invalid, + String string, + Class2 cls2, + Class2? cls2_, +) {} +typedef Class_ = Class?; +typedef Dynamic = dynamic; +typedef Function1 = void Function(); +typedef Function1_ = Function1?; +typedef Record1 = (int, {String named}); +typedef Record1_ = Record1?; diff --git a/pkg/front_end/testcases/patterns/records/destructuring.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/patterns/records/destructuring.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..8850c88fa31 --- /dev/null +++ b/pkg/front_end/testcases/patterns/records/destructuring.dart.textual_outline_modelled.expect @@ -0,0 +1,3 @@ +(double lat, double long) getLocation(String name) {} +expect(expected, actual) {} +void main(List arguments) {} diff --git a/pkg/front_end/testcases/patterns/records/record_pattern_inside_if_case.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/patterns/records/record_pattern_inside_if_case.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..44733ca3e6d --- /dev/null +++ b/pkg/front_end/testcases/patterns/records/record_pattern_inside_if_case.dart.textual_outline_modelled.expect @@ -0,0 +1,5 @@ +test1(Record x) {} +test2((int, int) x) {} +test3((int, {int a}) x) {} +test4(({int a, int b}) x) {} +test5((int, double, {String foo, dynamic bar}) x) {} diff --git a/pkg/front_end/testcases/patterns/simple_if_case_in_lists.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/patterns/simple_if_case_in_lists.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..c68881e1e74 --- /dev/null +++ b/pkg/front_end/testcases/patterns/simple_if_case_in_lists.dart.textual_outline_modelled.expect @@ -0,0 +1,6 @@ +expectEquals(x, y) {} +listToString(List list) {} +main() {} +test1(dynamic x) => [1, if (x case [int y, ...]) y, 1]; +test2(dynamic x) => [2, if (x case String y) y else null, 2]; +test3(dynamic x) => [3, if (x case bool b when b) b, 3]; diff --git a/pkg/front_end/testcases/patterns/simple_if_case_map_entries.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/patterns/simple_if_case_map_entries.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..708ee4df41d --- /dev/null +++ b/pkg/front_end/testcases/patterns/simple_if_case_map_entries.dart.textual_outline_modelled.expect @@ -0,0 +1,6 @@ +expectEquals(x, y) {} +main() {} +mapToString(Map map) {} +test1(dynamic x) => {1: 1, if (x case int y) 2: y, 3: 3}; +test2(dynamic x) => {1: 1, if (x case String y) 2: y else 2: null, 3: 3}; +test3(dynamic x) => {1: 1, if (x case bool b when b) 2: b, 3: 3}; diff --git a/pkg/front_end/testcases/patterns/switchExpression_empty.dart.textual_outline.expect b/pkg/front_end/testcases/patterns/switchExpression_empty.dart.textual_outline.expect index ca2e55830ce..87152acc0ff 100644 --- a/pkg/front_end/testcases/patterns/switchExpression_empty.dart.textual_outline.expect +++ b/pkg/front_end/testcases/patterns/switchExpression_empty.dart.textual_outline.expect @@ -1,3 +1 @@ -f(x) => -switch(x) {} -; +f(x) => switch (x) { }; diff --git a/pkg/front_end/testcases/patterns/switchExpression_empty.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/patterns/switchExpression_empty.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..88db7319212 --- /dev/null +++ b/pkg/front_end/testcases/patterns/switchExpression_empty.dart.textual_outline_modelled.expect @@ -0,0 +1,5 @@ +f(x) => +switch(x) {} +---- unknown chunk starts ---- +; +---- unknown chunk ends ---- diff --git a/pkg/front_end/testcases/patterns/switchExpression_onePattern_guarded.dart.textual_outline.expect b/pkg/front_end/testcases/patterns/switchExpression_onePattern_guarded.dart.textual_outline.expect index ca2e55830ce..87152acc0ff 100644 --- a/pkg/front_end/testcases/patterns/switchExpression_onePattern_guarded.dart.textual_outline.expect +++ b/pkg/front_end/testcases/patterns/switchExpression_onePattern_guarded.dart.textual_outline.expect @@ -1,3 +1 @@ -f(x) => -switch(x) {} -; +f(x) => switch (x) { }; diff --git a/pkg/front_end/testcases/patterns/switchExpression_onePattern_guarded.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/patterns/switchExpression_onePattern_guarded.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..88db7319212 --- /dev/null +++ b/pkg/front_end/testcases/patterns/switchExpression_onePattern_guarded.dart.textual_outline_modelled.expect @@ -0,0 +1,5 @@ +f(x) => +switch(x) {} +---- unknown chunk starts ---- +; +---- unknown chunk ends ---- diff --git a/pkg/front_end/testcases/patterns/switchExpression_onePattern_noTrailingComma.dart.textual_outline.expect b/pkg/front_end/testcases/patterns/switchExpression_onePattern_noTrailingComma.dart.textual_outline.expect index ca2e55830ce..87152acc0ff 100644 --- a/pkg/front_end/testcases/patterns/switchExpression_onePattern_noTrailingComma.dart.textual_outline.expect +++ b/pkg/front_end/testcases/patterns/switchExpression_onePattern_noTrailingComma.dart.textual_outline.expect @@ -1,3 +1 @@ -f(x) => -switch(x) {} -; +f(x) => switch (x) { }; diff --git a/pkg/front_end/testcases/patterns/switchExpression_onePattern_noTrailingComma.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/patterns/switchExpression_onePattern_noTrailingComma.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..88db7319212 --- /dev/null +++ b/pkg/front_end/testcases/patterns/switchExpression_onePattern_noTrailingComma.dart.textual_outline_modelled.expect @@ -0,0 +1,5 @@ +f(x) => +switch(x) {} +---- unknown chunk starts ---- +; +---- unknown chunk ends ---- diff --git a/pkg/front_end/testcases/patterns/switchExpression_onePattern_trailingComma.dart.textual_outline.expect b/pkg/front_end/testcases/patterns/switchExpression_onePattern_trailingComma.dart.textual_outline.expect index ca2e55830ce..87152acc0ff 100644 --- a/pkg/front_end/testcases/patterns/switchExpression_onePattern_trailingComma.dart.textual_outline.expect +++ b/pkg/front_end/testcases/patterns/switchExpression_onePattern_trailingComma.dart.textual_outline.expect @@ -1,3 +1 @@ -f(x) => -switch(x) {} -; +f(x) => switch (x) { }; diff --git a/pkg/front_end/testcases/patterns/switchExpression_onePattern_trailingComma.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/patterns/switchExpression_onePattern_trailingComma.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..88db7319212 --- /dev/null +++ b/pkg/front_end/testcases/patterns/switchExpression_onePattern_trailingComma.dart.textual_outline_modelled.expect @@ -0,0 +1,5 @@ +f(x) => +switch(x) {} +---- unknown chunk starts ---- +; +---- unknown chunk ends ---- diff --git a/pkg/front_end/testcases/patterns/switchExpression_twoPatterns.dart.textual_outline.expect b/pkg/front_end/testcases/patterns/switchExpression_twoPatterns.dart.textual_outline.expect index ca2e55830ce..87152acc0ff 100644 --- a/pkg/front_end/testcases/patterns/switchExpression_twoPatterns.dart.textual_outline.expect +++ b/pkg/front_end/testcases/patterns/switchExpression_twoPatterns.dart.textual_outline.expect @@ -1,3 +1 @@ -f(x) => -switch(x) {} -; +f(x) => switch (x) { }; diff --git a/pkg/front_end/testcases/patterns/switchExpression_twoPatterns.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/patterns/switchExpression_twoPatterns.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..88db7319212 --- /dev/null +++ b/pkg/front_end/testcases/patterns/switchExpression_twoPatterns.dart.textual_outline_modelled.expect @@ -0,0 +1,5 @@ +f(x) => +switch(x) {} +---- unknown chunk starts ---- +; +---- unknown chunk ends ---- diff --git a/pkg/front_end/testcases/patterns/switch_expressions_variable_capture.dart.textual_outline.expect b/pkg/front_end/testcases/patterns/switch_expressions_variable_capture.dart.textual_outline.expect index af255f78a4a..265b6228a9f 100644 --- a/pkg/front_end/testcases/patterns/switch_expressions_variable_capture.dart.textual_outline.expect +++ b/pkg/front_end/testcases/patterns/switch_expressions_variable_capture.dart.textual_outline.expect @@ -1,15 +1,13 @@ import 'dart:math' as math; + class Circle { final double radius; Circle(this.radius); } -test1(dynamic x) => -switch (x) {} -; + +test1(dynamic x) => switch (x) { }; dynamic Function(dynamic)? captured; -test2(dynamic x) => -switch (x) {} -; +test2(dynamic x) => switch (x) { }; test3(dynamic x) {} main() {} expectEquals(x, y) {} diff --git a/pkg/front_end/testcases/patterns/switch_expressions_variable_capture.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/patterns/switch_expressions_variable_capture.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..be29a538c29 --- /dev/null +++ b/pkg/front_end/testcases/patterns/switch_expressions_variable_capture.dart.textual_outline_modelled.expect @@ -0,0 +1,19 @@ +import 'dart:math' as math; +class Circle { + Circle(this.radius); + final double radius; +} +switch (x) {} +test1(dynamic x) => +---- unknown chunk starts ---- +; +---- unknown chunk ends ---- +dynamic Function(dynamic)? captured; +switch (x) {} +test2(dynamic x) => +---- unknown chunk starts ---- +; +---- unknown chunk ends ---- +expectEquals(x, y) {} +main() {} +test3(dynamic x) {} diff --git a/pkg/front_end/testcases/records/access_through_type_variable.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/access_through_type_variable.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..c7eb178fa13 --- /dev/null +++ b/pkg/front_end/testcases/records/access_through_type_variable.dart.textual_outline_modelled.expect @@ -0,0 +1,14 @@ +method1a(T t) => t.$1; +method1b(T t) => t.$2; +method1c(T t) => t.$3; +method1d(T t) => t.a; +method2a(T t) => t.$1; +method2b(T t) => t.a; +method2c(T t) => t.$2; +method2d(T t) => t.b; +method3a(S t) => t.$1; +method3b(S t) => t.$2; +method3c(S t) => t.$3; +method3d(S t) => t.a; +void method1(T t) {} +void method2(Object t) {} diff --git a/pkg/front_end/testcases/records/block_combine_statements.dart.textual_outline.expect b/pkg/front_end/testcases/records/block_combine_statements.dart.textual_outline.expect index a929c5c8539..73c09afa0af 100644 --- a/pkg/front_end/testcases/records/block_combine_statements.dart.textual_outline.expect +++ b/pkg/front_end/testcases/records/block_combine_statements.dart.textual_outline.expect @@ -1,4 +1,3 @@ void main() {} -Iterable<(Iterable, Iterable)> split(Iterable it) => -switch (it) {} -; +Iterable<(Iterable, Iterable)> split(Iterable it) => + switch (it) { }; diff --git a/pkg/front_end/testcases/records/block_combine_statements.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/block_combine_statements.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..ad3c4fbd499 --- /dev/null +++ b/pkg/front_end/testcases/records/block_combine_statements.dart.textual_outline_modelled.expect @@ -0,0 +1,6 @@ +Iterable<(Iterable, Iterable)> split(Iterable it) => +switch (it) {} +void main() {} +---- unknown chunk starts ---- +; +---- unknown chunk ends ---- diff --git a/pkg/front_end/testcases/records/const_local_access.dart.textual_outline.expect b/pkg/front_end/testcases/records/const_local_access.dart.textual_outline.expect index 2445a18ecc9..88c8f3db29c 100644 --- a/pkg/front_end/testcases/records/const_local_access.dart.textual_outline.expect +++ b/pkg/front_end/testcases/records/const_local_access.dart.textual_outline.expect @@ -1,6 +1,7 @@ class C { final (num, {String name}) r; - const C(int i, String s): r = (i + 1, name: s + "!"); + const C(int i, String s) : r = (i + 1, name: s + "!"); } + main() {} expect(expected, actual) {} diff --git a/pkg/front_end/testcases/records/const_local_access.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/const_local_access.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..b8e5f80d001 --- /dev/null +++ b/pkg/front_end/testcases/records/const_local_access.dart.textual_outline_modelled.expect @@ -0,0 +1,7 @@ +class C { + const C(int i, String s) : r = (i + 1, name: s + "!"); + final (num, {String name}) r; +} + +expect(expected, actual) {} +main() {} diff --git a/pkg/front_end/testcases/records/const_record_literal.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/const_record_literal.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..769adb843dd --- /dev/null +++ b/pkg/front_end/testcases/records/const_record_literal.dart.textual_outline_modelled.expect @@ -0,0 +1,16 @@ +const dynamic a = (1, 2); +const dynamic b1 = (a: 1, b: 2); +const dynamic b2 = (b: 2, a: 1); +const dynamic b3 = (b: 2, 1); +const dynamic c1 = (a: a, b: b1); +const dynamic c2 = (b: b2, a: a); +const dynamic c3 = (b: b3, a); +const dynamic d = (c1, (1, 2)); +dynamic e = const (1, 2); +dynamic f1 = const (a: 1, b: 2); +dynamic f2 = const (b: 2, a: 1); +dynamic f3 = const (b: 2, 1); +dynamic g1 = const (a: a, b: b1); +dynamic g2 = const (b: b2, a: a); +dynamic g3 = const (b: b3, a); +dynamic h = const (c1, (1, 2)); diff --git a/pkg/front_end/testcases/records/duplicated_name_errors.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/duplicated_name_errors.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..7d3f46a29b9 --- /dev/null +++ b/pkg/front_end/testcases/records/duplicated_name_errors.dart.textual_outline_modelled.expect @@ -0,0 +1,8 @@ +(int x, String x) foo2() => throw 0; +(int x, int x) foo1() => throw 0; +(int x, int x, int x) foo7() => throw 0; +(int x, {String x}) foo4() => throw 0; +(int x, {int x}) foo3() => throw 0; +({int x, String x}) foo6() => throw 0; +({int x, int x}) foo5() => throw 0; +main() {} diff --git a/pkg/front_end/testcases/records/issue50132.dart.textual_outline.expect b/pkg/front_end/testcases/records/issue50132.dart.textual_outline.expect index 86faf0eb9ca..d2ff871e460 100644 --- a/pkg/front_end/testcases/records/issue50132.dart.textual_outline.expect +++ b/pkg/front_end/testcases/records/issue50132.dart.textual_outline.expect @@ -2,4 +2,5 @@ class A { final (int, int) pair; const A(int x, int y) : pair = (x, y); } + void main() {} diff --git a/pkg/front_end/testcases/records/issue50132.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/issue50132.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..57b2596b9f7 --- /dev/null +++ b/pkg/front_end/testcases/records/issue50132.dart.textual_outline_modelled.expect @@ -0,0 +1,6 @@ +class A { + const A(int x, int y) : pair = (x, y); + final (int, int) pair; +} + +void main() {} diff --git a/pkg/front_end/testcases/records/issue50133.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/issue50133.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..bc705c60746 --- /dev/null +++ b/pkg/front_end/testcases/records/issue50133.dart.textual_outline_modelled.expect @@ -0,0 +1,3 @@ +main() {} +test() {} +typedef Foo = (int, int); diff --git a/pkg/front_end/testcases/records/issue50157.dart.textual_outline.expect b/pkg/front_end/testcases/records/issue50157.dart.textual_outline.expect index fa8f17cb5be..62ed6a45e1f 100644 --- a/pkg/front_end/testcases/records/issue50157.dart.textual_outline.expect +++ b/pkg/front_end/testcases/records/issue50157.dart.textual_outline.expect @@ -1,11 +1,15 @@ class A { int get foo => 0; } + extension on A { void set foo(int value) {} } + typedef R = ({int foo}); + extension on R { void set foo(int value) {} } + test(A a, R r) {} diff --git a/pkg/front_end/testcases/records/issue50157.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/issue50157.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..8dee229d828 --- /dev/null +++ b/pkg/front_end/testcases/records/issue50157.dart.textual_outline_modelled.expect @@ -0,0 +1,14 @@ +class A { + int get foo => 0; +} + +extension on A { + void set foo(int value) {} +} + +extension on R { + void set foo(int value) {} +} + +test(A a, R r) {} +typedef R = ({int foo}); diff --git a/pkg/front_end/testcases/records/issue50182.dart.textual_outline.expect b/pkg/front_end/testcases/records/issue50182.dart.textual_outline.expect index 8fa931e5438..beea8b19dac 100644 --- a/pkg/front_end/testcases/records/issue50182.dart.textual_outline.expect +++ b/pkg/front_end/testcases/records/issue50182.dart.textual_outline.expect @@ -1,10 +1,13 @@ void main() {} + class MyClass { MyClass(this.myField); final Value>? Function() myField; } + class Value { Value(this.value); final T value; } + typedef Hello = (T, {T name}); diff --git a/pkg/front_end/testcases/records/issue50182.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/issue50182.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..4dde7299400 --- /dev/null +++ b/pkg/front_end/testcases/records/issue50182.dart.textual_outline_modelled.expect @@ -0,0 +1,12 @@ +class MyClass { + MyClass(this.myField); + final Value>? Function() myField; +} + +class Value { + Value(this.value); + final T value; +} + +typedef Hello = (T, {T name}); +void main() {} diff --git a/pkg/front_end/testcases/records/issue50514.dart.textual_outline.expect b/pkg/front_end/testcases/records/issue50514.dart.textual_outline.expect index fe618e9c0b4..f7af2e96d8d 100644 --- a/pkg/front_end/testcases/records/issue50514.dart.textual_outline.expect +++ b/pkg/front_end/testcases/records/issue50514.dart.textual_outline.expect @@ -1,4 +1,5 @@ class A { const A(); } -test() => const { const (1, 2, A()), const (1, 2, A()) }; + +test() => const {const (1, 2, A()), const (1, 2, A())}; diff --git a/pkg/front_end/testcases/records/issue50514.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/issue50514.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..f7af2e96d8d --- /dev/null +++ b/pkg/front_end/testcases/records/issue50514.dart.textual_outline_modelled.expect @@ -0,0 +1,5 @@ +class A { + const A(); +} + +test() => const {const (1, 2, A()), const (1, 2, A())}; diff --git a/pkg/front_end/testcases/records/issue50515.dart.textual_outline.expect b/pkg/front_end/testcases/records/issue50515.dart.textual_outline.expect index 4628a88ebb2..88080334863 100644 --- a/pkg/front_end/testcases/records/issue50515.dart.textual_outline.expect +++ b/pkg/front_end/testcases/records/issue50515.dart.textual_outline.expect @@ -1,5 +1,6 @@ class A { const A(); - bool operator==(Object other) => false; + bool operator ==(Object other) => false; } -test() => const <(A,)>{ (A(),) }; + +test() => const <(A,)>{(A(),)}; diff --git a/pkg/front_end/testcases/records/issue50515.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/issue50515.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..c272963b505 --- /dev/null +++ b/pkg/front_end/testcases/records/issue50515.dart.textual_outline_modelled.expect @@ -0,0 +1,6 @@ +class A { + bool operator ==(Object other) => false; + const A(); +} + +test() => const <(A,)>{(A(),)}; diff --git a/pkg/front_end/testcases/records/named_fields_clashing_with_positional.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/named_fields_clashing_with_positional.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..462c5aa899b --- /dev/null +++ b/pkg/front_end/testcases/records/named_fields_clashing_with_positional.dart.textual_outline_modelled.expect @@ -0,0 +1,13 @@ +(int, double, num, {String $3}) test12() => throw 0; +(int, {String $1}) test4() => throw 0; +(num, bool, {double $01}) test9() => throw 0; +(num, {double $01}) test7() => throw 0; +(num, {double $0x1}) test8() => throw 0; +(num, {double $2}) test6() => throw 0; +({String $1, bool $01, int $0x1}) test10() => throw 0; +({bool $1}) test5() => throw 0; +main() {} +test1() => (0, $1: 0); +test11() => (10, 11, 12, $3: 13); +test2() => ($1: 0); +test3() => (0, $2: 1); diff --git a/pkg/front_end/testcases/records/null_shorting.dart.textual_outline.expect b/pkg/front_end/testcases/records/null_shorting.dart.textual_outline.expect index a7a43a21f65..18a10202396 100644 --- a/pkg/front_end/testcases/records/null_shorting.dart.textual_outline.expect +++ b/pkg/front_end/testcases/records/null_shorting.dart.textual_outline.expect @@ -1,13 +1,18 @@ -test((int, String, {double d, void Function() f, Class c})? record, List<(int, String, {double d, void Function() f, Class c})>? list) {} +test((int, String, {double d, void Function() f, Class c})? record, + List<(int, String, {double d, void Function() f, Class c})>? list) {} + extension on int { void call() {} } + extension on String { void call() {} } + extension on double { void call() {} } + class Class { void call() {} } diff --git a/pkg/front_end/testcases/records/null_shorting.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/null_shorting.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..dd6e260ea39 --- /dev/null +++ b/pkg/front_end/testcases/records/null_shorting.dart.textual_outline_modelled.expect @@ -0,0 +1,18 @@ +class Class { + void call() {} +} + +extension on String { + void call() {} +} + +extension on double { + void call() {} +} + +extension on int { + void call() {} +} + +test((int, String, {double d, void Function() f, Class c})? record, + List<(int, String, {double d, void Function() f, Class c})>? list) {} diff --git a/pkg/front_end/testcases/records/nullable_access.dart.textual_outline.expect b/pkg/front_end/testcases/records/nullable_access.dart.textual_outline.expect index c4fd1feb161..c71aa49e9d2 100644 --- a/pkg/front_end/testcases/records/nullable_access.dart.textual_outline.expect +++ b/pkg/front_end/testcases/records/nullable_access.dart.textual_outline.expect @@ -1 +1 @@ -method((int,{String a})? r) {} +method((int, {String a})? r) {} diff --git a/pkg/front_end/testcases/records/nullable_access.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/nullable_access.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..c71aa49e9d2 --- /dev/null +++ b/pkg/front_end/testcases/records/nullable_access.dart.textual_outline_modelled.expect @@ -0,0 +1 @@ +method((int, {String a})? r) {} diff --git a/pkg/front_end/testcases/records/nullable_access_extension.dart.textual_outline.expect b/pkg/front_end/testcases/records/nullable_access_extension.dart.textual_outline.expect index bae46246a36..4f1b14a5ae3 100644 --- a/pkg/front_end/testcases/records/nullable_access_extension.dart.textual_outline.expect +++ b/pkg/front_end/testcases/records/nullable_access_extension.dart.textual_outline.expect @@ -1,4 +1,5 @@ -method((int,{String a})? r) {} +method((int, {String a})? r) {} + extension on (int, {String a})? { int get $1 => 0; String get a => ''; diff --git a/pkg/front_end/testcases/records/nullable_access_extension.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/nullable_access_extension.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..839fdb3bdaf --- /dev/null +++ b/pkg/front_end/testcases/records/nullable_access_extension.dart.textual_outline_modelled.expect @@ -0,0 +1,6 @@ +extension on (int, {String a})? { + String get a => ''; + int get $1 => 0; +} + +method((int, {String a})? r) {} diff --git a/pkg/front_end/testcases/records/private_field_names.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/private_field_names.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..00491df5d43 --- /dev/null +++ b/pkg/front_end/testcases/records/private_field_names.dart.textual_outline_modelled.expect @@ -0,0 +1,4 @@ +(int _foo,) foo1() => throw 0; +({int _foo}) foo2() => throw 0; +foo3() => (_foo: 1); +main() {} diff --git a/pkg/front_end/testcases/records/record_type.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/record_type.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..26274da83da --- /dev/null +++ b/pkg/front_end/testcases/records/record_type.dart.textual_outline_modelled.expect @@ -0,0 +1,6 @@ +(int, String b) topLevelFieldType = throw ''; +(int, {String b}) topLevelMethodReturnType() => throw ''; +const annotation = 1; +void method() {} +void topLevelMethodParameterType((String, @annotation int) o) {} +void topLevelSetterType(({@annotation int a, String b}) value) {} diff --git a/pkg/front_end/testcases/records/restricted_object_member_names.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/restricted_object_member_names.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..f144b255216 --- /dev/null +++ b/pkg/front_end/testcases/records/restricted_object_member_names.dart.textual_outline_modelled.expect @@ -0,0 +1,13 @@ +(int hashCode,) foo1() => throw 0; +(int noSuchMethod,) foo3() => throw 0; +(int runtimeType,) foo2() => throw 0; +(int toString,) foo4() => throw 0; +({int hashCode}) foo5() => throw 0; +({int noSuchMethod}) foo7() => throw 0; +({int runtimeType}) foo6() => throw 0; +({int toString}) foo8() => throw 0; +foo10() => (runtimeType: 1); +foo11() => (noSuchMethod: 1); +foo12() => (toString: 1); +foo9() => (hashCode: 1); +main() {} diff --git a/pkg/front_end/testcases/records/simple_inference.dart.textual_outline.expect b/pkg/front_end/testcases/records/simple_inference.dart.textual_outline.expect index d214e2e7768..9ab0a992f12 100644 --- a/pkg/front_end/testcases/records/simple_inference.dart.textual_outline.expect +++ b/pkg/front_end/testcases/records/simple_inference.dart.textual_outline.expect @@ -4,12 +4,19 @@ foo3() {} foo4() {} foo5((int, String?) r, (int, X) Function() f) {} foo6((X, Y) Function(X x, Y y) f, int x, String y) {} -foo7((X, (Y, Z)) Function(X x, Y y, Z z) f, int x, String y, bool? z) {} +foo7( + (X, (Y, Z)) Function(X x, Y y, Z z) f, int x, String y, bool? z) {} + class A8 {} + foo8(A8 a) {} + class A9 {} + foo9(A9 a) {} + class A10 {} + A10<(T, T), T> foo10() => throw 0; bar10() {} main() {} diff --git a/pkg/front_end/testcases/records/simple_inference.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/simple_inference.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..9eba5221f21 --- /dev/null +++ b/pkg/front_end/testcases/records/simple_inference.dart.textual_outline_modelled.expect @@ -0,0 +1,20 @@ +A10<(T, T), T> foo10() => throw 0; +bar10() {} + +class A10 {} + +class A8 {} + +class A9 {} + +foo1((int, String?) r) {} +foo2((int, String?) r, X Function() f) {} +foo3() {} +foo4() {} +foo5((int, String?) r, (int, X) Function() f) {} +foo6((X, Y) Function(X x, Y y) f, int x, String y) {} +foo7( + (X, (Y, Z)) Function(X x, Y y, Z z) f, int x, String y, bool? z) {} +foo8(A8 a) {} +foo9(A9 a) {} +main() {} diff --git a/pkg/front_end/testcases/records/structurally_constant.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/structurally_constant.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..567ec32fee9 --- /dev/null +++ b/pkg/front_end/testcases/records/structurally_constant.dart.textual_outline_modelled.expect @@ -0,0 +1,2 @@ +void method1([a = (0, 1), b = (const [], c: 'foo')]) {} +void method2({a = (0, 1), b = (const [], c: 'foo')}) {} diff --git a/pkg/front_end/testcases/records/type_record.dart.textual_outline.expect b/pkg/front_end/testcases/records/type_record.dart.textual_outline.expect index 20ec198ec30..d2523282e98 100644 --- a/pkg/front_end/testcases/records/type_record.dart.textual_outline.expect +++ b/pkg/front_end/testcases/records/type_record.dart.textual_outline.expect @@ -1,4 +1,5 @@ abstract class A {} + typedef R = Record; typedef AR = A; typedef RR = R; @@ -19,13 +20,21 @@ RR foo11() => throw ''; dynamic foo12(R r) => null; dynamic foo13(AR l) => null; dynamic foo14(RR l) => null; + abstract class A1 extends A {} + abstract class A2 implements A {} + abstract class A3 with A {} + abstract class A4 extends AR {} + abstract class A5 extends AR2 {} + abstract class A6 extends AR3 {} + abstract class A7 extends AR4 {} + foo((int, String) record) {} bar(Record record) {} main() {} diff --git a/pkg/front_end/testcases/records/type_record.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/records/type_record.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..6c07bf33cf5 --- /dev/null +++ b/pkg/front_end/testcases/records/type_record.dart.textual_outline_modelled.expect @@ -0,0 +1,40 @@ +AR foo10() => throw ''; +List foo7() => throw ''; +R foo9() => throw ''; +RR foo11() => throw ''; +Record foo1() => throw ''; + +abstract class A {} + +abstract class A1 extends A {} + +abstract class A2 implements A {} + +abstract class A3 with A {} + +abstract class A4 extends AR {} + +abstract class A5 extends AR2 {} + +abstract class A6 extends AR3 {} + +abstract class A7 extends AR4 {} + +bar(Record record) {} +dynamic foo12(R r) => null; +dynamic foo13(AR l) => null; +dynamic foo14(RR l) => null; +dynamic foo2() => []; +dynamic foo3() => Record; +dynamic foo4() => List; +dynamic foo5(Record r) => null; +dynamic foo6({required Record r}) => null; +dynamic foo8(List l) => null; +foo((int, String) record) {} +main() {} +typedef AR = A; +typedef AR2 = A; +typedef AR3 = A; +typedef AR4 = A; +typedef R = Record; +typedef RR = R; diff --git a/pkg/front_end/testcases/regress/issue_29983.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/regress/issue_29983.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..352a7fdd943 --- /dev/null +++ b/pkg/front_end/testcases/regress/issue_29983.dart.textual_outline_modelled.expect @@ -0,0 +1,4 @@ +f() sync* {} +g() sync* => dummy; +h() sync* {} +main() {} diff --git a/pkg/front_end/testcases/sealed_class/sealed_class_declaration.dart.textual_outline.expect b/pkg/front_end/testcases/sealed_class/sealed_class_declaration.dart.textual_outline.expect index 592166b8704..8784c82fbd8 100644 --- a/pkg/front_end/testcases/sealed_class/sealed_class_declaration.dart.textual_outline.expect +++ b/pkg/front_end/testcases/sealed_class/sealed_class_declaration.dart.textual_outline.expect @@ -1,3 +1,4 @@ sealed class A {} + mixin M {} sealed class B = Object with M; diff --git a/pkg/front_end/testcases/sealed_class/sealed_class_declaration.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/sealed_class/sealed_class_declaration.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..55a89ed3d1b --- /dev/null +++ b/pkg/front_end/testcases/sealed_class/sealed_class_declaration.dart.textual_outline_modelled.expect @@ -0,0 +1,5 @@ +mixin M {} + +sealed class A {} + +sealed class B = Object with M; diff --git a/pkg/front_end/testcases/sealed_class/sealed_mixin_declaration.dart.textual_outline.expect b/pkg/front_end/testcases/sealed_class/sealed_mixin_declaration.dart.textual_outline.expect index 86582b2f2c6..3305ced14ad 100644 --- a/pkg/front_end/testcases/sealed_class/sealed_mixin_declaration.dart.textual_outline.expect +++ b/pkg/front_end/testcases/sealed_class/sealed_mixin_declaration.dart.textual_outline.expect @@ -1,2 +1 @@ -sealed -mixin M {} +sealed mixin M {} diff --git a/pkg/front_end/testcases/sealed_class/sealed_mixin_declaration.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/sealed_class/sealed_mixin_declaration.dart.textual_outline_modelled.expect new file mode 100644 index 00000000000..faaac108094 --- /dev/null +++ b/pkg/front_end/testcases/sealed_class/sealed_mixin_declaration.dart.textual_outline_modelled.expect @@ -0,0 +1,4 @@ +---- unknown chunk starts ---- +sealed +---- unknown chunk ends ---- +mixin M {} diff --git a/pkg/front_end/testcases/textual_outline.status b/pkg/front_end/testcases/textual_outline.status index 23f0b791bce..b80cdcd602d 100644 --- a/pkg/front_end/testcases/textual_outline.status +++ b/pkg/front_end/testcases/textual_outline.status @@ -21,14 +21,7 @@ regress/issue_39035.crash: EmptyOutput regress/issue_39091_2: EmptyOutput regress/utf_16_le_content.crash: EmptyOutput -class_modifiers/anonymous_mixin: FormatterCrash -class_modifiers/base/base_class_declaration: FormatterCrash -class_modifiers/final/final_class_declaration: FormatterCrash -class_modifiers/interface/interface_class_declaration: FormatterCrash -class_modifiers/mixin/mixin_class_declaration: FormatterCrash -class_modifiers/mixin/mixin_class_generative_constructor: FormatterCrash class_modifiers/mixin/mixin_class_invalid_modifiers: FormatterCrash -class_modifiers/mixin/mixin_class_superclass_not_object: FormatterCrash const_functions/const_functions_const_ctor: FormatterCrash const_functions/const_functions_const_ctor_error: FormatterCrash const_functions/const_functions_const_factory: FormatterCrash @@ -92,7 +85,6 @@ general/error_recovery/issue_39230.crash: FormatterCrash general/error_recovery/issue_39958_01: FormatterCrash general/error_recovery/issue_43090.crash: FormatterCrash general/extension_types_feature_not_enabled: FormatterCrash -general/final_class_declaration: FormatterCrash general/function_type_default_value: FormatterCrash general/incomplete_field_formal_parameter: FormatterCrash general/inline_class_declaration: FormatterCrash @@ -118,12 +110,10 @@ general/macro_class: FormatterCrash general/many_errors2: FormatterCrash general/many_errors: FormatterCrash general/missing_prefix_name: FormatterCrash -general/mixin_class_declaration: FormatterCrash general/new_as_selector: FormatterCrash general/null_aware_super: FormatterCrash general/null_safety_invalid_experiment: FormatterCrash general/null_safety_invalid_experiment_and_language_version: FormatterCrash -general/records: FormatterCrash general/records_opt_out: FormatterCrash general/sealed_class_declaration: FormatterCrash general/type_parameters_on_void: FormatterCrash @@ -166,21 +156,8 @@ nnbd_mixed/inheritance_from_opt_in: FormatterCrash nnbd_mixed/issue41597: FormatterCrash nnbd_mixed/null_safety_invalid_language_version: FormatterCrash nonfunction_type_aliases/old_version: FormatterCrash -patterns/if_else_in_collections_errors: FormatterCrash patterns/issue51489: FormatterCrash -patterns/pattern_matching: FormatterCrash -patterns/pattern_types: FormatterCrash -patterns/records/destructuring: FormatterCrash -patterns/records/record_pattern_inside_if_case: FormatterCrash patterns/simple_c_style_pattern_for_in_collections: FormatterCrash -patterns/simple_if_case_in_lists: FormatterCrash -patterns/simple_if_case_map_entries: FormatterCrash -patterns/switchExpression_empty: FormatterCrash -patterns/switchExpression_onePattern_guarded: FormatterCrash -patterns/switchExpression_onePattern_noTrailingComma: FormatterCrash -patterns/switchExpression_onePattern_trailingComma: FormatterCrash -patterns/switchExpression_twoPatterns: FormatterCrash -patterns/switch_expressions_variable_capture: FormatterCrash rasta/bad_redirection: FormatterCrash rasta/issue_000032: FormatterCrash rasta/issue_000034: FormatterCrash @@ -190,37 +167,15 @@ rasta/issue_000046: FormatterCrash rasta/issue_000047: FormatterCrash rasta/malformed_const_constructor: FormatterCrash rasta/mandatory_parameter_initializer: FormatterCrash -records/access_through_type_variable: FormatterCrash -records/block_combine_statements: FormatterCrash -records/const_local_access: FormatterCrash -records/const_record_literal: FormatterCrash -records/duplicated_name_errors: FormatterCrash records/for_in_without_variable: FormatterCrash -records/issue50132: FormatterCrash -records/issue50133: FormatterCrash -records/issue50157: FormatterCrash -records/issue50182: FormatterCrash -records/issue50514: FormatterCrash -records/issue50515: FormatterCrash records/metadata: FormatterCrash -records/named_fields_clashing_with_positional: FormatterCrash records/names_of_positional_fields_same_as_object_members: FormatterCrash -records/null_shorting: FormatterCrash -records/nullable_access: FormatterCrash -records/nullable_access_extension: FormatterCrash -records/private_field_names: FormatterCrash records/record_literal_errors: FormatterCrash -records/record_type: FormatterCrash records/record_type_errors: FormatterCrash records/record_type_unsupported: FormatterCrash -records/restricted_object_member_names: FormatterCrash -records/simple_inference: FormatterCrash -records/structurally_constant: FormatterCrash -records/type_record: FormatterCrash regress/ambiguous_builder_01: FormatterCrash regress/issue_29942: FormatterCrash regress/issue_29944: FormatterCrash -regress/issue_29983: FormatterCrash regress/issue_29986: FormatterCrash regress/issue_30834: FormatterCrash regress/issue_30981: FormatterCrash @@ -244,8 +199,6 @@ regress/issue_41265.crash: Crash regress/issue_41265.crash: FormatterCrash sealed_class/sealed_abstract_class_declaration: FormatterCrash sealed_class/sealed_class_as_mixin: FormatterCrash -sealed_class/sealed_class_declaration: FormatterCrash -sealed_class/sealed_mixin_declaration: FormatterCrash super_parameters/issue47741: FormatterCrash super_parameters/issue47922: FormatterCrash super_parameters/issue48714: FormatterCrash