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 <athom@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Bob Nystrom <rnystrom@google.com>
Auto-Submit: Bob Nystrom <rnystrom@google.com>
This commit is contained in:
Robert Nystrom 2023-03-01 16:08:40 +00:00 committed by Commit Queue
parent 7ca5ad46ce
commit bbba3c9788
88 changed files with 900 additions and 639 deletions

View file

@ -137,6 +137,15 @@
#### Web Dev Compiler (DDC) #### Web Dev Compiler (DDC)
- Removed deprecated command line flags `-k`, `--kernel`, and `--dart-sdk`. - 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 #### Linter
Updates the Linter to `1.34.0-dev`, which includes changes that Updates the Linter to `1.34.0-dev`, which includes changes that

2
DEPS
View file

@ -134,7 +134,7 @@ vars = {
# and land the review. # and land the review.
# #
# For more details, see https://github.com/dart-lang/sdk/issues/30164. # 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", "dartdoc_rev": "e4cdbd6f349ecbc420d33cca69a02fb287a7edf5",
"ffi_rev": "32f5eefea59d4461e8ab40e83f157e49d5abe0da", "ffi_rev": "32f5eefea59d4461e8ab40e83f157e49d5abe0da",
"file_rev": "72a67c33f90bfb7e10057e286e06d2fe3baa4d98", "file_rev": "72a67c33f90bfb7e10057e286e06d2fe3baa4d98",

View file

@ -2489,24 +2489,15 @@ class AnalysisService implements Enum {
factory AnalysisService(String name) { factory AnalysisService(String name) {
switch (name) { switch (name) {
case 'CLOSING_LABELS': case 'CLOSING_LABELS': return CLOSING_LABELS;
return CLOSING_LABELS; case 'FOLDING': return FOLDING;
case 'FOLDING': case 'HIGHLIGHTS': return HIGHLIGHTS;
return FOLDING; case 'IMPLEMENTED': return IMPLEMENTED;
case 'HIGHLIGHTS': case 'INVALIDATE': return INVALIDATE;
return HIGHLIGHTS; case 'NAVIGATION': return NAVIGATION;
case 'IMPLEMENTED': case 'OCCURRENCES': return OCCURRENCES;
return IMPLEMENTED; case 'OUTLINE': return OUTLINE;
case 'INVALIDATE': case 'OVERRIDES': return OVERRIDES;
return INVALIDATE;
case 'NAVIGATION':
return NAVIGATION;
case 'OCCURRENCES':
return OCCURRENCES;
case 'OUTLINE':
return OUTLINE;
case 'OVERRIDES':
return OVERRIDES;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -4168,12 +4159,9 @@ class CompletionCaseMatchingMode implements Enum {
factory CompletionCaseMatchingMode(String name) { factory CompletionCaseMatchingMode(String name) {
switch (name) { switch (name) {
case 'FIRST_CHAR': case 'FIRST_CHAR': return FIRST_CHAR;
return FIRST_CHAR; case 'ALL_CHARS': return ALL_CHARS;
case 'ALL_CHARS': case 'NONE': return NONE;
return ALL_CHARS;
case 'NONE':
return NONE;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -5124,10 +5112,8 @@ class CompletionMode implements Enum {
factory CompletionMode(String name) { factory CompletionMode(String name) {
switch (name) { switch (name) {
case 'BASIC': case 'BASIC': return BASIC;
return BASIC; case 'SMART': return SMART;
case 'SMART':
return SMART;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -5512,8 +5498,7 @@ class CompletionService implements Enum {
factory CompletionService(String name) { factory CompletionService(String name) {
switch (name) { switch (name) {
case 'AVAILABLE_SUGGESTION_SETS': case 'AVAILABLE_SUGGESTION_SETS': return AVAILABLE_SUGGESTION_SETS;
return AVAILABLE_SUGGESTION_SETS;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -8577,14 +8562,10 @@ class ExecutableKind implements Enum {
factory ExecutableKind(String name) { factory ExecutableKind(String name) {
switch (name) { switch (name) {
case 'CLIENT': case 'CLIENT': return CLIENT;
return CLIENT; case 'EITHER': return EITHER;
case 'EITHER': case 'NOT_EXECUTABLE': return NOT_EXECUTABLE;
return EITHER; case 'SERVER': return SERVER;
case 'NOT_EXECUTABLE':
return NOT_EXECUTABLE;
case 'SERVER':
return SERVER;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -9385,8 +9366,7 @@ class ExecutionService implements Enum {
factory ExecutionService(String name) { factory ExecutionService(String name) {
switch (name) { switch (name) {
case 'LAUNCH_DATA': case 'LAUNCH_DATA': return LAUNCH_DATA;
return LAUNCH_DATA;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -10269,10 +10249,8 @@ class FileKind implements Enum {
factory FileKind(String name) { factory FileKind(String name) {
switch (name) { switch (name) {
case 'LIBRARY': case 'LIBRARY': return LIBRARY;
return LIBRARY; case 'PART': return PART;
case 'PART':
return PART;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -10910,18 +10888,12 @@ class FlutterOutlineKind implements Enum {
factory FlutterOutlineKind(String name) { factory FlutterOutlineKind(String name) {
switch (name) { switch (name) {
case 'DART_ELEMENT': case 'DART_ELEMENT': return DART_ELEMENT;
return DART_ELEMENT; case 'GENERIC': return GENERIC;
case 'GENERIC': case 'NEW_INSTANCE': return NEW_INSTANCE;
return GENERIC; case 'INVOCATION': return INVOCATION;
case 'NEW_INSTANCE': case 'VARIABLE': return VARIABLE;
return NEW_INSTANCE; case 'PLACEHOLDER': return PLACEHOLDER;
case 'INVOCATION':
return INVOCATION;
case 'VARIABLE':
return VARIABLE;
case 'PLACEHOLDER':
return PLACEHOLDER;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -11039,8 +11011,7 @@ class FlutterService implements Enum {
factory FlutterService(String name) { factory FlutterService(String name) {
switch (name) { switch (name) {
case 'OUTLINE': case 'OUTLINE': return OUTLINE;
return OUTLINE;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -11648,18 +11619,12 @@ class FlutterWidgetPropertyEditorKind implements Enum {
factory FlutterWidgetPropertyEditorKind(String name) { factory FlutterWidgetPropertyEditorKind(String name) {
switch (name) { switch (name) {
case 'BOOL': case 'BOOL': return BOOL;
return BOOL; case 'DOUBLE': return DOUBLE;
case 'DOUBLE': case 'ENUM': return ENUM;
return DOUBLE; case 'ENUM_LIKE': return ENUM_LIKE;
case 'ENUM': case 'INT': return INT;
return ENUM; case 'STRING': return STRING;
case 'ENUM_LIKE':
return ENUM_LIKE;
case 'INT':
return INT;
case 'STRING':
return STRING;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -11947,8 +11912,7 @@ class GeneralAnalysisService implements Enum {
factory GeneralAnalysisService(String name) { factory GeneralAnalysisService(String name) {
switch (name) { switch (name) {
case 'ANALYZED_FILES': case 'ANALYZED_FILES': return ANALYZED_FILES;
return ANALYZED_FILES;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -14319,12 +14283,9 @@ class RuntimeCompletionExpressionTypeKind implements Enum {
factory RuntimeCompletionExpressionTypeKind(String name) { factory RuntimeCompletionExpressionTypeKind(String name) {
switch (name) { switch (name) {
case 'DYNAMIC': case 'DYNAMIC': return DYNAMIC;
return DYNAMIC; case 'FUNCTION': return FUNCTION;
case 'FUNCTION': case 'INTERFACE': return INTERFACE;
return FUNCTION;
case 'INTERFACE':
return INTERFACE;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -15495,20 +15456,13 @@ class SearchResultKind implements Enum {
factory SearchResultKind(String name) { factory SearchResultKind(String name) {
switch (name) { switch (name) {
case 'DECLARATION': case 'DECLARATION': return DECLARATION;
return DECLARATION; case 'INVOCATION': return INVOCATION;
case 'INVOCATION': case 'READ': return READ;
return INVOCATION; case 'READ_WRITE': return READ_WRITE;
case 'READ': case 'REFERENCE': return REFERENCE;
return READ; case 'UNKNOWN': return UNKNOWN;
case 'READ_WRITE': case 'WRITE': return WRITE;
return READ_WRITE;
case 'REFERENCE':
return REFERENCE;
case 'UNKNOWN':
return UNKNOWN;
case 'WRITE':
return WRITE;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -16094,14 +16048,10 @@ class ServerLogEntryKind implements Enum {
factory ServerLogEntryKind(String name) { factory ServerLogEntryKind(String name) {
switch (name) { switch (name) {
case 'NOTIFICATION': case 'NOTIFICATION': return NOTIFICATION;
return NOTIFICATION; case 'RAW': return RAW;
case 'RAW': case 'REQUEST': return REQUEST;
return RAW; case 'RESPONSE': return RESPONSE;
case 'REQUEST':
return REQUEST;
case 'RESPONSE':
return RESPONSE;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -16207,10 +16157,8 @@ class ServerService implements Enum {
factory ServerService(String name) { factory ServerService(String name) {
switch (name) { switch (name) {
case 'LOG': case 'LOG': return LOG;
return LOG; case 'STATUS': return STATUS;
case 'STATUS':
return STATUS;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }

View file

@ -293,12 +293,9 @@ class AnalysisErrorSeverity implements Enum {
factory AnalysisErrorSeverity(String name) { factory AnalysisErrorSeverity(String name) {
switch (name) { switch (name) {
case 'INFO': case 'INFO': return INFO;
return INFO; case 'WARNING': return WARNING;
case 'WARNING': case 'ERROR': return ERROR;
return WARNING;
case 'ERROR':
return ERROR;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -1076,26 +1073,16 @@ class CompletionSuggestionKind implements Enum {
factory CompletionSuggestionKind(String name) { factory CompletionSuggestionKind(String name) {
switch (name) { switch (name) {
case 'ARGUMENT_LIST': case 'ARGUMENT_LIST': return ARGUMENT_LIST;
return ARGUMENT_LIST; case 'IMPORT': return IMPORT;
case 'IMPORT': case 'IDENTIFIER': return IDENTIFIER;
return IMPORT; case 'INVOCATION': return INVOCATION;
case 'IDENTIFIER': case 'KEYWORD': return KEYWORD;
return IDENTIFIER; case 'NAMED_ARGUMENT': return NAMED_ARGUMENT;
case 'INVOCATION': case 'OPTIONAL_ARGUMENT': return OPTIONAL_ARGUMENT;
return INVOCATION; case 'OVERRIDE': return OVERRIDE;
case 'KEYWORD': case 'PARAMETER': return PARAMETER;
return KEYWORD; case 'PACKAGE_NAME': return PACKAGE_NAME;
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'); throw Exception('Illegal enum value: $name');
} }
@ -1532,62 +1519,34 @@ class ElementKind implements Enum {
factory ElementKind(String name) { factory ElementKind(String name) {
switch (name) { switch (name) {
case 'CLASS': case 'CLASS': return CLASS;
return CLASS; case 'CLASS_TYPE_ALIAS': return CLASS_TYPE_ALIAS;
case 'CLASS_TYPE_ALIAS': case 'COMPILATION_UNIT': return COMPILATION_UNIT;
return CLASS_TYPE_ALIAS; case 'CONSTRUCTOR': return CONSTRUCTOR;
case 'COMPILATION_UNIT': case 'CONSTRUCTOR_INVOCATION': return CONSTRUCTOR_INVOCATION;
return COMPILATION_UNIT; case 'ENUM': return ENUM;
case 'CONSTRUCTOR': case 'ENUM_CONSTANT': return ENUM_CONSTANT;
return CONSTRUCTOR; case 'EXTENSION': return EXTENSION;
case 'CONSTRUCTOR_INVOCATION': case 'FIELD': return FIELD;
return CONSTRUCTOR_INVOCATION; case 'FILE': return FILE;
case 'ENUM': case 'FUNCTION': return FUNCTION;
return ENUM; case 'FUNCTION_INVOCATION': return FUNCTION_INVOCATION;
case 'ENUM_CONSTANT': case 'FUNCTION_TYPE_ALIAS': return FUNCTION_TYPE_ALIAS;
return ENUM_CONSTANT; case 'GETTER': return GETTER;
case 'EXTENSION': case 'LABEL': return LABEL;
return EXTENSION; case 'LIBRARY': return LIBRARY;
case 'FIELD': case 'LOCAL_VARIABLE': return LOCAL_VARIABLE;
return FIELD; case 'METHOD': return METHOD;
case 'FILE': case 'MIXIN': return MIXIN;
return FILE; case 'PARAMETER': return PARAMETER;
case 'FUNCTION': case 'PREFIX': return PREFIX;
return FUNCTION; case 'SETTER': return SETTER;
case 'FUNCTION_INVOCATION': case 'TOP_LEVEL_VARIABLE': return TOP_LEVEL_VARIABLE;
return FUNCTION_INVOCATION; case 'TYPE_ALIAS': return TYPE_ALIAS;
case 'FUNCTION_TYPE_ALIAS': case 'TYPE_PARAMETER': return TYPE_PARAMETER;
return FUNCTION_TYPE_ALIAS; case 'UNIT_TEST_GROUP': return UNIT_TEST_GROUP;
case 'GETTER': case 'UNIT_TEST_TEST': return UNIT_TEST_TEST;
return GETTER; case 'UNKNOWN': return UNKNOWN;
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'); throw Exception('Illegal enum value: $name');
} }
@ -1673,28 +1632,17 @@ class FoldingKind implements Enum {
factory FoldingKind(String name) { factory FoldingKind(String name) {
switch (name) { switch (name) {
case 'ANNOTATIONS': case 'ANNOTATIONS': return ANNOTATIONS;
return ANNOTATIONS; case 'BLOCK': return BLOCK;
case 'BLOCK': case 'CLASS_BODY': return CLASS_BODY;
return BLOCK; case 'COMMENT': return COMMENT;
case 'CLASS_BODY': case 'DIRECTIVES': return DIRECTIVES;
return CLASS_BODY; case 'DOCUMENTATION_COMMENT': return DOCUMENTATION_COMMENT;
case 'COMMENT': case 'FILE_HEADER': return FILE_HEADER;
return COMMENT; case 'FUNCTION_BODY': return FUNCTION_BODY;
case 'DIRECTIVES': case 'INVOCATION': return INVOCATION;
return DIRECTIVES; case 'LITERAL': return LITERAL;
case 'DOCUMENTATION_COMMENT': case 'PARAMETERS': return PARAMETERS;
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'); throw Exception('Illegal enum value: $name');
} }
@ -2698,14 +2646,10 @@ class LinkedEditSuggestionKind implements Enum {
factory LinkedEditSuggestionKind(String name) { factory LinkedEditSuggestionKind(String name) {
switch (name) { switch (name) {
case 'METHOD': case 'METHOD': return METHOD;
return METHOD; case 'PARAMETER': return PARAMETER;
case 'PARAMETER': case 'TYPE': return TYPE;
return PARAMETER; case 'VARIABLE': return VARIABLE;
case 'TYPE':
return TYPE;
case 'VARIABLE':
return VARIABLE;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -3464,14 +3408,10 @@ class ParameterKind implements Enum {
factory ParameterKind(String name) { factory ParameterKind(String name) {
switch (name) { switch (name) {
case 'OPTIONAL_NAMED': case 'OPTIONAL_NAMED': return OPTIONAL_NAMED;
return OPTIONAL_NAMED; case 'OPTIONAL_POSITIONAL': return OPTIONAL_POSITIONAL;
case 'OPTIONAL_POSITIONAL': case 'REQUIRED_NAMED': return REQUIRED_NAMED;
return OPTIONAL_POSITIONAL; case 'REQUIRED_POSITIONAL': return REQUIRED_POSITIONAL;
case 'REQUIRED_NAMED':
return REQUIRED_NAMED;
case 'REQUIRED_POSITIONAL':
return REQUIRED_POSITIONAL;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -3620,24 +3560,15 @@ class RefactoringKind implements Enum {
factory RefactoringKind(String name) { factory RefactoringKind(String name) {
switch (name) { switch (name) {
case 'CONVERT_GETTER_TO_METHOD': case 'CONVERT_GETTER_TO_METHOD': return CONVERT_GETTER_TO_METHOD;
return CONVERT_GETTER_TO_METHOD; case 'CONVERT_METHOD_TO_GETTER': return CONVERT_METHOD_TO_GETTER;
case 'CONVERT_METHOD_TO_GETTER': case 'EXTRACT_LOCAL_VARIABLE': return EXTRACT_LOCAL_VARIABLE;
return CONVERT_METHOD_TO_GETTER; case 'EXTRACT_METHOD': return EXTRACT_METHOD;
case 'EXTRACT_LOCAL_VARIABLE': case 'EXTRACT_WIDGET': return EXTRACT_WIDGET;
return EXTRACT_LOCAL_VARIABLE; case 'INLINE_LOCAL_VARIABLE': return INLINE_LOCAL_VARIABLE;
case 'EXTRACT_METHOD': case 'INLINE_METHOD': return INLINE_METHOD;
return EXTRACT_METHOD; case 'MOVE_FILE': return MOVE_FILE;
case 'EXTRACT_WIDGET': case 'RENAME': return RENAME;
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'); throw Exception('Illegal enum value: $name');
} }
@ -3805,12 +3736,9 @@ class RefactoringMethodParameterKind implements Enum {
factory RefactoringMethodParameterKind(String name) { factory RefactoringMethodParameterKind(String name) {
switch (name) { switch (name) {
case 'REQUIRED': case 'REQUIRED': return REQUIRED;
return REQUIRED; case 'POSITIONAL': return POSITIONAL;
case 'POSITIONAL': case 'NAMED': return NAMED;
return POSITIONAL;
case 'NAMED':
return NAMED;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -3970,14 +3898,10 @@ class RefactoringProblemSeverity implements Enum {
factory RefactoringProblemSeverity(String name) { factory RefactoringProblemSeverity(String name) {
switch (name) { switch (name) {
case 'INFO': case 'INFO': return INFO;
return INFO; case 'WARNING': return WARNING;
case 'WARNING': case 'ERROR': return ERROR;
return WARNING; case 'FATAL': return FATAL;
case 'ERROR':
return ERROR;
case 'FATAL':
return FATAL;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }

View file

@ -2489,24 +2489,15 @@ class AnalysisService implements Enum {
factory AnalysisService(String name) { factory AnalysisService(String name) {
switch (name) { switch (name) {
case 'CLOSING_LABELS': case 'CLOSING_LABELS': return CLOSING_LABELS;
return CLOSING_LABELS; case 'FOLDING': return FOLDING;
case 'FOLDING': case 'HIGHLIGHTS': return HIGHLIGHTS;
return FOLDING; case 'IMPLEMENTED': return IMPLEMENTED;
case 'HIGHLIGHTS': case 'INVALIDATE': return INVALIDATE;
return HIGHLIGHTS; case 'NAVIGATION': return NAVIGATION;
case 'IMPLEMENTED': case 'OCCURRENCES': return OCCURRENCES;
return IMPLEMENTED; case 'OUTLINE': return OUTLINE;
case 'INVALIDATE': case 'OVERRIDES': return OVERRIDES;
return INVALIDATE;
case 'NAVIGATION':
return NAVIGATION;
case 'OCCURRENCES':
return OCCURRENCES;
case 'OUTLINE':
return OUTLINE;
case 'OVERRIDES':
return OVERRIDES;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -4168,12 +4159,9 @@ class CompletionCaseMatchingMode implements Enum {
factory CompletionCaseMatchingMode(String name) { factory CompletionCaseMatchingMode(String name) {
switch (name) { switch (name) {
case 'FIRST_CHAR': case 'FIRST_CHAR': return FIRST_CHAR;
return FIRST_CHAR; case 'ALL_CHARS': return ALL_CHARS;
case 'ALL_CHARS': case 'NONE': return NONE;
return ALL_CHARS;
case 'NONE':
return NONE;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -5124,10 +5112,8 @@ class CompletionMode implements Enum {
factory CompletionMode(String name) { factory CompletionMode(String name) {
switch (name) { switch (name) {
case 'BASIC': case 'BASIC': return BASIC;
return BASIC; case 'SMART': return SMART;
case 'SMART':
return SMART;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -5512,8 +5498,7 @@ class CompletionService implements Enum {
factory CompletionService(String name) { factory CompletionService(String name) {
switch (name) { switch (name) {
case 'AVAILABLE_SUGGESTION_SETS': case 'AVAILABLE_SUGGESTION_SETS': return AVAILABLE_SUGGESTION_SETS;
return AVAILABLE_SUGGESTION_SETS;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -8577,14 +8562,10 @@ class ExecutableKind implements Enum {
factory ExecutableKind(String name) { factory ExecutableKind(String name) {
switch (name) { switch (name) {
case 'CLIENT': case 'CLIENT': return CLIENT;
return CLIENT; case 'EITHER': return EITHER;
case 'EITHER': case 'NOT_EXECUTABLE': return NOT_EXECUTABLE;
return EITHER; case 'SERVER': return SERVER;
case 'NOT_EXECUTABLE':
return NOT_EXECUTABLE;
case 'SERVER':
return SERVER;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -9385,8 +9366,7 @@ class ExecutionService implements Enum {
factory ExecutionService(String name) { factory ExecutionService(String name) {
switch (name) { switch (name) {
case 'LAUNCH_DATA': case 'LAUNCH_DATA': return LAUNCH_DATA;
return LAUNCH_DATA;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -10269,10 +10249,8 @@ class FileKind implements Enum {
factory FileKind(String name) { factory FileKind(String name) {
switch (name) { switch (name) {
case 'LIBRARY': case 'LIBRARY': return LIBRARY;
return LIBRARY; case 'PART': return PART;
case 'PART':
return PART;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -10910,18 +10888,12 @@ class FlutterOutlineKind implements Enum {
factory FlutterOutlineKind(String name) { factory FlutterOutlineKind(String name) {
switch (name) { switch (name) {
case 'DART_ELEMENT': case 'DART_ELEMENT': return DART_ELEMENT;
return DART_ELEMENT; case 'GENERIC': return GENERIC;
case 'GENERIC': case 'NEW_INSTANCE': return NEW_INSTANCE;
return GENERIC; case 'INVOCATION': return INVOCATION;
case 'NEW_INSTANCE': case 'VARIABLE': return VARIABLE;
return NEW_INSTANCE; case 'PLACEHOLDER': return PLACEHOLDER;
case 'INVOCATION':
return INVOCATION;
case 'VARIABLE':
return VARIABLE;
case 'PLACEHOLDER':
return PLACEHOLDER;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -11039,8 +11011,7 @@ class FlutterService implements Enum {
factory FlutterService(String name) { factory FlutterService(String name) {
switch (name) { switch (name) {
case 'OUTLINE': case 'OUTLINE': return OUTLINE;
return OUTLINE;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -11648,18 +11619,12 @@ class FlutterWidgetPropertyEditorKind implements Enum {
factory FlutterWidgetPropertyEditorKind(String name) { factory FlutterWidgetPropertyEditorKind(String name) {
switch (name) { switch (name) {
case 'BOOL': case 'BOOL': return BOOL;
return BOOL; case 'DOUBLE': return DOUBLE;
case 'DOUBLE': case 'ENUM': return ENUM;
return DOUBLE; case 'ENUM_LIKE': return ENUM_LIKE;
case 'ENUM': case 'INT': return INT;
return ENUM; case 'STRING': return STRING;
case 'ENUM_LIKE':
return ENUM_LIKE;
case 'INT':
return INT;
case 'STRING':
return STRING;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -11947,8 +11912,7 @@ class GeneralAnalysisService implements Enum {
factory GeneralAnalysisService(String name) { factory GeneralAnalysisService(String name) {
switch (name) { switch (name) {
case 'ANALYZED_FILES': case 'ANALYZED_FILES': return ANALYZED_FILES;
return ANALYZED_FILES;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -14319,12 +14283,9 @@ class RuntimeCompletionExpressionTypeKind implements Enum {
factory RuntimeCompletionExpressionTypeKind(String name) { factory RuntimeCompletionExpressionTypeKind(String name) {
switch (name) { switch (name) {
case 'DYNAMIC': case 'DYNAMIC': return DYNAMIC;
return DYNAMIC; case 'FUNCTION': return FUNCTION;
case 'FUNCTION': case 'INTERFACE': return INTERFACE;
return FUNCTION;
case 'INTERFACE':
return INTERFACE;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -15495,20 +15456,13 @@ class SearchResultKind implements Enum {
factory SearchResultKind(String name) { factory SearchResultKind(String name) {
switch (name) { switch (name) {
case 'DECLARATION': case 'DECLARATION': return DECLARATION;
return DECLARATION; case 'INVOCATION': return INVOCATION;
case 'INVOCATION': case 'READ': return READ;
return INVOCATION; case 'READ_WRITE': return READ_WRITE;
case 'READ': case 'REFERENCE': return REFERENCE;
return READ; case 'UNKNOWN': return UNKNOWN;
case 'READ_WRITE': case 'WRITE': return WRITE;
return READ_WRITE;
case 'REFERENCE':
return REFERENCE;
case 'UNKNOWN':
return UNKNOWN;
case 'WRITE':
return WRITE;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -16094,14 +16048,10 @@ class ServerLogEntryKind implements Enum {
factory ServerLogEntryKind(String name) { factory ServerLogEntryKind(String name) {
switch (name) { switch (name) {
case 'NOTIFICATION': case 'NOTIFICATION': return NOTIFICATION;
return NOTIFICATION; case 'RAW': return RAW;
case 'RAW': case 'REQUEST': return REQUEST;
return RAW; case 'RESPONSE': return RESPONSE;
case 'REQUEST':
return REQUEST;
case 'RESPONSE':
return RESPONSE;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -16207,10 +16157,8 @@ class ServerService implements Enum {
factory ServerService(String name) { factory ServerService(String name) {
switch (name) { switch (name) {
case 'LOG': case 'LOG': return LOG;
return LOG; case 'STATUS': return STATUS;
case 'STATUS':
return STATUS;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }

View file

@ -293,12 +293,9 @@ class AnalysisErrorSeverity implements Enum {
factory AnalysisErrorSeverity(String name) { factory AnalysisErrorSeverity(String name) {
switch (name) { switch (name) {
case 'INFO': case 'INFO': return INFO;
return INFO; case 'WARNING': return WARNING;
case 'WARNING': case 'ERROR': return ERROR;
return WARNING;
case 'ERROR':
return ERROR;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -1076,26 +1073,16 @@ class CompletionSuggestionKind implements Enum {
factory CompletionSuggestionKind(String name) { factory CompletionSuggestionKind(String name) {
switch (name) { switch (name) {
case 'ARGUMENT_LIST': case 'ARGUMENT_LIST': return ARGUMENT_LIST;
return ARGUMENT_LIST; case 'IMPORT': return IMPORT;
case 'IMPORT': case 'IDENTIFIER': return IDENTIFIER;
return IMPORT; case 'INVOCATION': return INVOCATION;
case 'IDENTIFIER': case 'KEYWORD': return KEYWORD;
return IDENTIFIER; case 'NAMED_ARGUMENT': return NAMED_ARGUMENT;
case 'INVOCATION': case 'OPTIONAL_ARGUMENT': return OPTIONAL_ARGUMENT;
return INVOCATION; case 'OVERRIDE': return OVERRIDE;
case 'KEYWORD': case 'PARAMETER': return PARAMETER;
return KEYWORD; case 'PACKAGE_NAME': return PACKAGE_NAME;
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'); throw Exception('Illegal enum value: $name');
} }
@ -1532,62 +1519,34 @@ class ElementKind implements Enum {
factory ElementKind(String name) { factory ElementKind(String name) {
switch (name) { switch (name) {
case 'CLASS': case 'CLASS': return CLASS;
return CLASS; case 'CLASS_TYPE_ALIAS': return CLASS_TYPE_ALIAS;
case 'CLASS_TYPE_ALIAS': case 'COMPILATION_UNIT': return COMPILATION_UNIT;
return CLASS_TYPE_ALIAS; case 'CONSTRUCTOR': return CONSTRUCTOR;
case 'COMPILATION_UNIT': case 'CONSTRUCTOR_INVOCATION': return CONSTRUCTOR_INVOCATION;
return COMPILATION_UNIT; case 'ENUM': return ENUM;
case 'CONSTRUCTOR': case 'ENUM_CONSTANT': return ENUM_CONSTANT;
return CONSTRUCTOR; case 'EXTENSION': return EXTENSION;
case 'CONSTRUCTOR_INVOCATION': case 'FIELD': return FIELD;
return CONSTRUCTOR_INVOCATION; case 'FILE': return FILE;
case 'ENUM': case 'FUNCTION': return FUNCTION;
return ENUM; case 'FUNCTION_INVOCATION': return FUNCTION_INVOCATION;
case 'ENUM_CONSTANT': case 'FUNCTION_TYPE_ALIAS': return FUNCTION_TYPE_ALIAS;
return ENUM_CONSTANT; case 'GETTER': return GETTER;
case 'EXTENSION': case 'LABEL': return LABEL;
return EXTENSION; case 'LIBRARY': return LIBRARY;
case 'FIELD': case 'LOCAL_VARIABLE': return LOCAL_VARIABLE;
return FIELD; case 'METHOD': return METHOD;
case 'FILE': case 'MIXIN': return MIXIN;
return FILE; case 'PARAMETER': return PARAMETER;
case 'FUNCTION': case 'PREFIX': return PREFIX;
return FUNCTION; case 'SETTER': return SETTER;
case 'FUNCTION_INVOCATION': case 'TOP_LEVEL_VARIABLE': return TOP_LEVEL_VARIABLE;
return FUNCTION_INVOCATION; case 'TYPE_ALIAS': return TYPE_ALIAS;
case 'FUNCTION_TYPE_ALIAS': case 'TYPE_PARAMETER': return TYPE_PARAMETER;
return FUNCTION_TYPE_ALIAS; case 'UNIT_TEST_GROUP': return UNIT_TEST_GROUP;
case 'GETTER': case 'UNIT_TEST_TEST': return UNIT_TEST_TEST;
return GETTER; case 'UNKNOWN': return UNKNOWN;
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'); throw Exception('Illegal enum value: $name');
} }
@ -1673,28 +1632,17 @@ class FoldingKind implements Enum {
factory FoldingKind(String name) { factory FoldingKind(String name) {
switch (name) { switch (name) {
case 'ANNOTATIONS': case 'ANNOTATIONS': return ANNOTATIONS;
return ANNOTATIONS; case 'BLOCK': return BLOCK;
case 'BLOCK': case 'CLASS_BODY': return CLASS_BODY;
return BLOCK; case 'COMMENT': return COMMENT;
case 'CLASS_BODY': case 'DIRECTIVES': return DIRECTIVES;
return CLASS_BODY; case 'DOCUMENTATION_COMMENT': return DOCUMENTATION_COMMENT;
case 'COMMENT': case 'FILE_HEADER': return FILE_HEADER;
return COMMENT; case 'FUNCTION_BODY': return FUNCTION_BODY;
case 'DIRECTIVES': case 'INVOCATION': return INVOCATION;
return DIRECTIVES; case 'LITERAL': return LITERAL;
case 'DOCUMENTATION_COMMENT': case 'PARAMETERS': return PARAMETERS;
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'); throw Exception('Illegal enum value: $name');
} }
@ -2698,14 +2646,10 @@ class LinkedEditSuggestionKind implements Enum {
factory LinkedEditSuggestionKind(String name) { factory LinkedEditSuggestionKind(String name) {
switch (name) { switch (name) {
case 'METHOD': case 'METHOD': return METHOD;
return METHOD; case 'PARAMETER': return PARAMETER;
case 'PARAMETER': case 'TYPE': return TYPE;
return PARAMETER; case 'VARIABLE': return VARIABLE;
case 'TYPE':
return TYPE;
case 'VARIABLE':
return VARIABLE;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -3464,14 +3408,10 @@ class ParameterKind implements Enum {
factory ParameterKind(String name) { factory ParameterKind(String name) {
switch (name) { switch (name) {
case 'OPTIONAL_NAMED': case 'OPTIONAL_NAMED': return OPTIONAL_NAMED;
return OPTIONAL_NAMED; case 'OPTIONAL_POSITIONAL': return OPTIONAL_POSITIONAL;
case 'OPTIONAL_POSITIONAL': case 'REQUIRED_NAMED': return REQUIRED_NAMED;
return OPTIONAL_POSITIONAL; case 'REQUIRED_POSITIONAL': return REQUIRED_POSITIONAL;
case 'REQUIRED_NAMED':
return REQUIRED_NAMED;
case 'REQUIRED_POSITIONAL':
return REQUIRED_POSITIONAL;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -3620,24 +3560,15 @@ class RefactoringKind implements Enum {
factory RefactoringKind(String name) { factory RefactoringKind(String name) {
switch (name) { switch (name) {
case 'CONVERT_GETTER_TO_METHOD': case 'CONVERT_GETTER_TO_METHOD': return CONVERT_GETTER_TO_METHOD;
return CONVERT_GETTER_TO_METHOD; case 'CONVERT_METHOD_TO_GETTER': return CONVERT_METHOD_TO_GETTER;
case 'CONVERT_METHOD_TO_GETTER': case 'EXTRACT_LOCAL_VARIABLE': return EXTRACT_LOCAL_VARIABLE;
return CONVERT_METHOD_TO_GETTER; case 'EXTRACT_METHOD': return EXTRACT_METHOD;
case 'EXTRACT_LOCAL_VARIABLE': case 'EXTRACT_WIDGET': return EXTRACT_WIDGET;
return EXTRACT_LOCAL_VARIABLE; case 'INLINE_LOCAL_VARIABLE': return INLINE_LOCAL_VARIABLE;
case 'EXTRACT_METHOD': case 'INLINE_METHOD': return INLINE_METHOD;
return EXTRACT_METHOD; case 'MOVE_FILE': return MOVE_FILE;
case 'EXTRACT_WIDGET': case 'RENAME': return RENAME;
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'); throw Exception('Illegal enum value: $name');
} }
@ -3805,12 +3736,9 @@ class RefactoringMethodParameterKind implements Enum {
factory RefactoringMethodParameterKind(String name) { factory RefactoringMethodParameterKind(String name) {
switch (name) { switch (name) {
case 'REQUIRED': case 'REQUIRED': return REQUIRED;
return REQUIRED; case 'POSITIONAL': return POSITIONAL;
case 'POSITIONAL': case 'NAMED': return NAMED;
return POSITIONAL;
case 'NAMED':
return NAMED;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -3970,14 +3898,10 @@ class RefactoringProblemSeverity implements Enum {
factory RefactoringProblemSeverity(String name) { factory RefactoringProblemSeverity(String name) {
switch (name) { switch (name) {
case 'INFO': case 'INFO': return INFO;
return INFO; case 'WARNING': return WARNING;
case 'WARNING': case 'ERROR': return ERROR;
return WARNING; case 'FATAL': return FATAL;
case 'ERROR':
return ERROR;
case 'FATAL':
return FATAL;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }

View file

@ -930,16 +930,11 @@ class AnalysisService implements Enum {
factory AnalysisService(String name) { factory AnalysisService(String name) {
switch (name) { switch (name) {
case 'FOLDING': case 'FOLDING': return FOLDING;
return FOLDING; case 'HIGHLIGHTS': return HIGHLIGHTS;
case 'HIGHLIGHTS': case 'NAVIGATION': return NAVIGATION;
return HIGHLIGHTS; case 'OCCURRENCES': return OCCURRENCES;
case 'NAVIGATION': case 'OUTLINE': return OUTLINE;
return NAVIGATION;
case 'OCCURRENCES':
return OCCURRENCES;
case 'OUTLINE':
return OUTLINE;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -4035,14 +4030,10 @@ class RequestErrorCode implements Enum {
factory RequestErrorCode(String name) { factory RequestErrorCode(String name) {
switch (name) { switch (name) {
case 'INVALID_OVERLAY_CHANGE': case 'INVALID_OVERLAY_CHANGE': return INVALID_OVERLAY_CHANGE;
return INVALID_OVERLAY_CHANGE; case 'INVALID_PARAMETER': return INVALID_PARAMETER;
case 'INVALID_PARAMETER': case 'PLUGIN_ERROR': return PLUGIN_ERROR;
return INVALID_PARAMETER; case 'UNKNOWN_REQUEST': return UNKNOWN_REQUEST;
case 'PLUGIN_ERROR':
return PLUGIN_ERROR;
case 'UNKNOWN_REQUEST':
return UNKNOWN_REQUEST;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }
@ -4164,12 +4155,9 @@ class WatchEventType implements Enum {
factory WatchEventType(String name) { factory WatchEventType(String name) {
switch (name) { switch (name) {
case 'ADD': case 'ADD': return ADD;
return ADD; case 'MODIFY': return MODIFY;
case 'MODIFY': case 'REMOVE': return REMOVE;
return MODIFY;
case 'REMOVE':
return REMOVE;
} }
throw Exception('Illegal enum value: $name'); throw Exception('Illegal enum value: $name');
} }

View file

@ -1,7 +1,8 @@
final final mixin M1 {}
mixin M1 {} sealed mixin M2 {}
sealed
mixin M2 {}
base class S {} base class S {}
final class C extends S with M1, M2 {} final class C extends S with M1, M2 {}
final class D = S with M1, M2; final class D = S with M1, M2;

View file

@ -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 {}

View file

@ -1,5 +1,6 @@
base class A {} base class A {}
abstract base class B {} abstract base class B {}
base
mixin M {} base mixin M {}
base class C = Object with M; base class C = Object with M;

View file

@ -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 {}

View file

@ -1,5 +1,6 @@
final class A {} final class A {}
abstract final class B {} abstract final class B {}
final
mixin M {} final mixin M {}
final class C = Object with M; final class C = Object with M;

View file

@ -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 {}

View file

@ -1,5 +1,6 @@
interface class A {} interface class A {}
abstract interface class B {} abstract interface class B {}
interface
mixin M {} interface mixin M {}
interface class C = Object with M; interface class C = Object with M;

View file

@ -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 {}

View file

@ -1,9 +1,16 @@
mixin class A {} mixin class A {}
abstract mixin class B {} abstract mixin class B {}
mixin M {} mixin M {}
mixin class C = Object with M; mixin class C = Object with M;
class AWith with A {} class AWith with A {}
class BWith with B {} class BWith with B {}
class CWith with C {} class CWith with C {}
class MultipleWithMixin with A, M {} class MultipleWithMixin with A, M {}
class MultipleWithAnotherClass with A, B {} class MultipleWithAnotherClass with A, B {}

View file

@ -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;

View file

@ -2,35 +2,43 @@ mixin class ErrorMixinClass {
final int foo; final int foo;
ErrorMixinClass(this.foo); ErrorMixinClass(this.foo);
} }
mixin class ErrorMixinClassNamed { mixin class ErrorMixinClassNamed {
final int foo; final int foo;
ErrorMixinClassNamed.named(this.foo); ErrorMixinClassNamed.named(this.foo);
} }
mixin class ErrorMixinClassRedirect { mixin class ErrorMixinClassRedirect {
int foo = 0; int foo = 0;
ErrorMixinClassRedirect.named(int f) {} ErrorMixinClassRedirect.named(int f) {}
ErrorMixinClassRedirect.x(int f) : this.named(f); ErrorMixinClassRedirect.x(int f) : this.named(f);
ErrorMixinClassRedirect() {} ErrorMixinClassRedirect() {}
} }
mixin class ErrorMixinClassExternal { mixin class ErrorMixinClassExternal {
external ErrorMixinClassExternal(); external ErrorMixinClassExternal();
} }
mixin class ErrorMixinClassSuper { mixin class ErrorMixinClassSuper {
ErrorMixinClassSuper(): super(); ErrorMixinClassSuper() : super();
} }
mixin class ErrorMixinClassBody { mixin class ErrorMixinClassBody {
ErrorMixinClassBody() {} ErrorMixinClassBody() {}
} }
mixin class MixinClassConstructor { mixin class MixinClassConstructor {
int foo = 0; int foo = 0;
MixinClassConstructor(); MixinClassConstructor();
MixinClassConstructor.named(); MixinClassConstructor.named();
} }
mixin class ConstMixinClassConstructor { mixin class ConstMixinClassConstructor {
final int foo = 0; final int foo = 0;
const ConstMixinClassConstructor(); const ConstMixinClassConstructor();
const ConstMixinClassConstructor.named(); const ConstMixinClassConstructor.named();
} }
mixin class MixinClassFactory { mixin class MixinClassFactory {
int foo = 0; int foo = 0;
MixinClassFactory(); MixinClassFactory();

View file

@ -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;
}

View file

@ -1,6 +1,10 @@
mixin class NotObject {} mixin class NotObject {}
mixin class AlsoNotObject {} mixin class AlsoNotObject {}
mixin class A extends NotObject {} mixin class A extends NotObject {}
mixin class B extends Object with NotObject {} mixin class B extends Object with NotObject {}
mixin class C = Object with NotObject; mixin class C = Object with NotObject;
mixin class D = Object with AlsoNotObject, NotObject; mixin class D = Object with AlsoNotObject, NotObject;

View file

@ -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 {}

View file

@ -1,6 +1,7 @@
// @dart = 2.19 // @dart = 2.19
final class A {} final class A {}
abstract final class B {} abstract final class B {}
final
mixin M {} final mixin M {}
final class C = Object with M; final class C = Object with M;

View file

@ -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 {}

View file

@ -1,4 +1,6 @@
mixin class A {} mixin class A {}
abstract mixin class B {} abstract mixin class B {}
mixin M {} mixin M {}
mixin class C = Object with M; mixin class C = Object with M;

View file

@ -0,0 +1,7 @@
abstract mixin class B {}
mixin M {}
mixin class A {}
mixin class C = Object with M;

View file

@ -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;

View file

@ -11,8 +11,7 @@ final s3 = new List<int>.filled(2, null);
final s4 = () { final s4 = () {
var e = 0; var e = 0;
switch (e) { switch (e) {
case 0: case 0: print('fallthrough');
print('fallthrough');
case 1: case 1:
case '': case '':
} }

View file

@ -13,8 +13,7 @@ final s3 = new List<int>.filled(2, null);
final s4 = () { final s4 = () {
var e = 0; var e = 0;
switch (e) { switch (e) {
case 0: case 0: print('fallthrough');
print('fallthrough');
case 1: case 1:
case '': case '':
} }

View file

@ -0,0 +1,4 @@
main() {}
test1(dynamic x) => [1, if (x case int y) 2 else y, 3];
test2(dynamic x) => <int>{1, if (x case int y) 2 else y, 3};
test3(dynamic x) => <int, int>{1: 1, if (x case int y) 2: 2 else 2: y, 3: 3};

View file

@ -1,19 +1,21 @@
import 'dart:math' as math; import 'dart:math' as math;
sealed class Shape { sealed class Shape {
double calculateArea(); double calculateArea();
} }
class Square implements Shape { class Square implements Shape {
final double length; final double length;
Square(this.length); Square(this.length);
double calculateArea() => length * length; double calculateArea() => length * length;
} }
class Circle implements Shape { class Circle implements Shape {
final double radius; final double radius;
Circle(this.radius); Circle(this.radius);
double calculateArea() => math.pi * radius * radius; double calculateArea() => math.pi * radius * radius;
} }
double calculateArea(Shape shape) =>
switch (shape) {} double calculateArea(Shape shape) => switch (shape) { };
;
main() {} main() {}
expect(expected, actual) {} expect(expected, actual) {}

View file

@ -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() {}

View file

@ -1,11 +1,13 @@
import 'pattern_types_lib1.dart'; import 'pattern_types_lib1.dart';
import 'pattern_types_lib2.dart'; import 'pattern_types_lib2.dart';
typedef Dynamic = dynamic; typedef Dynamic = dynamic;
typedef Function1 = void Function(); typedef Function1 = void Function();
typedef Function1_ = Function1?; typedef Function1_ = Function1?;
typedef Record1 = (int, {String named}); typedef Record1 = (int, {String named});
typedef Record1_ = Record1?; typedef Record1_ = Record1?;
typedef Class_ = Class?; typedef Class_ = Class?;
class Class { class Class {
var field; var field;
void method() {} void method() {}
@ -13,10 +15,12 @@ class Class {
int operator >(int i) => 0; int operator >(int i) => 0;
operator ==(other) => true; operator ==(other) => true;
} }
class Class2 { class Class2 {
bool operator <(Class2 i) => true; bool operator <(Class2 i) => true;
operator ==(covariant Class2 other) => true; operator ==(covariant Class2 other) => true;
} }
extension on Class { extension on Class {
int get extensionGetter => 42; int get extensionGetter => 42;
void extensionMethod() {} void extensionMethod() {}
@ -24,14 +28,27 @@ extension on Class {
int operator >=(int i) => 0; int operator >=(int i) => 0;
int get ambiguousField => 42; int get ambiguousField => 42;
} }
extension on Class { extension on Class {
String get ambiguousField => '42'; String get ambiguousField => '42';
} }
extension on String { extension on String {
bool operator <=(other) => true; bool operator <=(other) => true;
} }
extension on String { extension on String {
bool operator <=(other) => true; bool operator <=(other) => true;
} }
objectPattern(o) {} 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_,
) {}

View file

@ -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?;

View file

@ -0,0 +1,3 @@
(double lat, double long) getLocation(String name) {}
expect(expected, actual) {}
void main(List<String> arguments) {}

View file

@ -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) {}

View file

@ -0,0 +1,6 @@
expectEquals(x, y) {}
listToString(List<dynamic> 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];

View file

@ -0,0 +1,6 @@
expectEquals(x, y) {}
main() {}
mapToString(Map<dynamic, dynamic> 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};

View file

@ -1,3 +1 @@
f(x) => f(x) => switch (x) { };
switch(x) {}
;

View file

@ -0,0 +1,5 @@
f(x) =>
switch(x) {}
---- unknown chunk starts ----
;
---- unknown chunk ends ----

View file

@ -1,3 +1 @@
f(x) => f(x) => switch (x) { };
switch(x) {}
;

View file

@ -0,0 +1,5 @@
f(x) =>
switch(x) {}
---- unknown chunk starts ----
;
---- unknown chunk ends ----

View file

@ -1,3 +1 @@
f(x) => f(x) => switch (x) { };
switch(x) {}
;

View file

@ -0,0 +1,5 @@
f(x) =>
switch(x) {}
---- unknown chunk starts ----
;
---- unknown chunk ends ----

View file

@ -1,3 +1 @@
f(x) => f(x) => switch (x) { };
switch(x) {}
;

View file

@ -0,0 +1,5 @@
f(x) =>
switch(x) {}
---- unknown chunk starts ----
;
---- unknown chunk ends ----

View file

@ -1,3 +1 @@
f(x) => f(x) => switch (x) { };
switch(x) {}
;

View file

@ -0,0 +1,5 @@
f(x) =>
switch(x) {}
---- unknown chunk starts ----
;
---- unknown chunk ends ----

View file

@ -1,15 +1,13 @@
import 'dart:math' as math; import 'dart:math' as math;
class Circle { class Circle {
final double radius; final double radius;
Circle(this.radius); Circle(this.radius);
} }
test1(dynamic x) =>
switch (x) {} test1(dynamic x) => switch (x) { };
;
dynamic Function(dynamic)? captured; dynamic Function(dynamic)? captured;
test2(dynamic x) => test2(dynamic x) => switch (x) { };
switch (x) {}
;
test3(dynamic x) {} test3(dynamic x) {}
main() {} main() {}
expectEquals(x, y) {} expectEquals(x, y) {}

View file

@ -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) {}

View file

@ -0,0 +1,14 @@
method1a<T extends (int, String)>(T t) => t.$1;
method1b<T extends (int, String)>(T t) => t.$2;
method1c<T extends (int, String)>(T t) => t.$3;
method1d<T extends (int, String)>(T t) => t.a;
method2a<T extends (int, {String a})>(T t) => t.$1;
method2b<T extends (int, {String a})>(T t) => t.a;
method2c<T extends (int, {String a})>(T t) => t.$2;
method2d<T extends (int, {String a})>(T t) => t.b;
method3a<T extends (int, String), S extends T>(S t) => t.$1;
method3b<T extends (int, String), S extends T>(S t) => t.$2;
method3c<T extends (int, String), S extends T>(S t) => t.$3;
method3d<T extends (int, String), S extends T>(S t) => t.a;
void method1<T>(T t) {}
void method2(Object t) {}

View file

@ -1,4 +1,3 @@
void main() {} void main() {}
Iterable<(Iterable<A>, Iterable<A>)> split<A>(Iterable<A> it) => Iterable<(Iterable<A>, Iterable<A>)> split<A>(Iterable<A> it) =>
switch (it) {} switch (it) { };
;

View file

@ -0,0 +1,6 @@
Iterable<(Iterable<A>, Iterable<A>)> split<A>(Iterable<A> it) =>
switch (it) {}
void main() {}
---- unknown chunk starts ----
;
---- unknown chunk ends ----

View file

@ -1,6 +1,7 @@
class C { class C {
final (num, {String name}) r; 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() {} main() {}
expect(expected, actual) {} expect(expected, actual) {}

View file

@ -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() {}

View file

@ -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));

View file

@ -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() {}

View file

@ -2,4 +2,5 @@ class A {
final (int, int) pair; final (int, int) pair;
const A(int x, int y) : pair = (x, y); const A(int x, int y) : pair = (x, y);
} }
void main() {} void main() {}

View file

@ -0,0 +1,6 @@
class A {
const A(int x, int y) : pair = (x, y);
final (int, int) pair;
}
void main() {}

View file

@ -0,0 +1,3 @@
main() {}
test() {}
typedef Foo = (int, int);

View file

@ -1,11 +1,15 @@
class A { class A {
int get foo => 0; int get foo => 0;
} }
extension on A { extension on A {
void set foo(int value) {} void set foo(int value) {}
} }
typedef R = ({int foo}); typedef R = ({int foo});
extension on R { extension on R {
void set foo(int value) {} void set foo(int value) {}
} }
test(A a, R r) {} test(A a, R r) {}

View file

@ -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});

View file

@ -1,10 +1,13 @@
void main() {} void main() {}
class MyClass<T> { class MyClass<T> {
MyClass(this.myField); MyClass(this.myField);
final Value<Hello<T>>? Function() myField; final Value<Hello<T>>? Function() myField;
} }
class Value<T> { class Value<T> {
Value(this.value); Value(this.value);
final T value; final T value;
} }
typedef Hello<T> = (T, {T name}); typedef Hello<T> = (T, {T name});

View file

@ -0,0 +1,12 @@
class MyClass<T> {
MyClass(this.myField);
final Value<Hello<T>>? Function() myField;
}
class Value<T> {
Value(this.value);
final T value;
}
typedef Hello<T> = (T, {T name});
void main() {}

View file

@ -1,4 +1,5 @@
class A { class A {
const A(); const A();
} }
test() => const <Record>{ const (1, 2, A()), const (1, 2, A()) };
test() => const <Record>{const (1, 2, A()), const (1, 2, A())};

View file

@ -0,0 +1,5 @@
class A {
const A();
}
test() => const <Record>{const (1, 2, A()), const (1, 2, A())};

View file

@ -1,5 +1,6 @@
class A { class A {
const A(); const A();
bool operator==(Object other) => false; bool operator ==(Object other) => false;
} }
test() => const <(A,)>{ (A(),) };
test() => const <(A,)>{(A(),)};

View file

@ -0,0 +1,6 @@
class A {
bool operator ==(Object other) => false;
const A();
}
test() => const <(A,)>{(A(),)};

View file

@ -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);

View file

@ -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 { extension on int {
void call() {} void call() {}
} }
extension on String { extension on String {
void call() {} void call() {}
} }
extension on double { extension on double {
void call() {} void call() {}
} }
class Class { class Class {
void call() {} void call() {}
} }

View file

@ -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) {}

View file

@ -1 +1 @@
method((int,{String a})? r) {} method((int, {String a})? r) {}

View file

@ -0,0 +1 @@
method((int, {String a})? r) {}

View file

@ -1,4 +1,5 @@
method((int,{String a})? r) {} method((int, {String a})? r) {}
extension on (int, {String a})? { extension on (int, {String a})? {
int get $1 => 0; int get $1 => 0;
String get a => ''; String get a => '';

View file

@ -0,0 +1,6 @@
extension on (int, {String a})? {
String get a => '';
int get $1 => 0;
}
method((int, {String a})? r) {}

View file

@ -0,0 +1,4 @@
(int _foo,) foo1() => throw 0;
({int _foo}) foo2() => throw 0;
foo3() => (_foo: 1);
main() {}

View file

@ -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) {}

View file

@ -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() {}

View file

@ -4,12 +4,19 @@ foo3() {}
foo4() {} foo4() {}
foo5((int, String?) r, (int, X) Function<X>() f) {} foo5((int, String?) r, (int, X) Function<X>() f) {}
foo6((X, Y) Function<X, Y>(X x, Y y) f, int x, String y) {} foo6((X, Y) Function<X, Y>(X x, Y y) f, int x, String y) {}
foo7((X, (Y, Z)) Function<X, Y, Z>(X x, Y y, Z z) f, int x, String y, bool? z) {} foo7(
(X, (Y, Z)) Function<X, Y, Z>(X x, Y y, Z z) f, int x, String y, bool? z) {}
class A8<X extends (X, Y), Y extends num> {} class A8<X extends (X, Y), Y extends num> {}
foo8(A8 a) {} foo8(A8 a) {}
class A9<X extends (Y, Z), Y extends num, Z extends String?> {} class A9<X extends (Y, Z), Y extends num, Z extends String?> {}
foo9(A9 a) {} foo9(A9 a) {}
class A10<X, Y> {} class A10<X, Y> {}
A10<(T, T), T> foo10<T>() => throw 0; A10<(T, T), T> foo10<T>() => throw 0;
bar10() {} bar10() {}
main() {} main() {}

View file

@ -0,0 +1,20 @@
A10<(T, T), T> foo10<T>() => throw 0;
bar10() {}
class A10<X, Y> {}
class A8<X extends (X, Y), Y extends num> {}
class A9<X extends (Y, Z), Y extends num, Z extends String?> {}
foo1((int, String?) r) {}
foo2((int, String?) r, X Function<X>() f) {}
foo3() {}
foo4() {}
foo5((int, String?) r, (int, X) Function<X>() f) {}
foo6((X, Y) Function<X, Y>(X x, Y y) f, int x, String y) {}
foo7(
(X, (Y, Z)) Function<X, Y, Z>(X x, Y y, Z z) f, int x, String y, bool? z) {}
foo8(A8 a) {}
foo9(A9 a) {}
main() {}

View file

@ -0,0 +1,2 @@
void method1([a = (0, 1), b = (const <String>[], c: 'foo')]) {}
void method2({a = (0, 1), b = (const <String>[], c: 'foo')}) {}

View file

@ -1,4 +1,5 @@
abstract class A<X> {} abstract class A<X> {}
typedef R = Record; typedef R = Record;
typedef AR = A<Record>; typedef AR = A<Record>;
typedef RR = R; typedef RR = R;
@ -19,13 +20,21 @@ RR foo11() => throw '';
dynamic foo12(R r) => null; dynamic foo12(R r) => null;
dynamic foo13(AR l) => null; dynamic foo13(AR l) => null;
dynamic foo14(RR l) => null; dynamic foo14(RR l) => null;
abstract class A1 extends A<Record> {} abstract class A1 extends A<Record> {}
abstract class A2 implements A<Record> {} abstract class A2 implements A<Record> {}
abstract class A3 with A<Record> {} abstract class A3 with A<Record> {}
abstract class A4 extends AR {} abstract class A4 extends AR {}
abstract class A5 extends AR2 {} abstract class A5 extends AR2 {}
abstract class A6 extends AR3 {} abstract class A6 extends AR3 {}
abstract class A7 extends AR4 {} abstract class A7 extends AR4 {}
foo((int, String) record) {} foo((int, String) record) {}
bar(Record record) {} bar(Record record) {}
main() {} main() {}

View file

@ -0,0 +1,40 @@
AR foo10() => throw '';
List<Record> foo7() => throw '';
R foo9() => throw '';
RR foo11() => throw '';
Record foo1() => throw '';
abstract class A<X> {}
abstract class A1 extends A<Record> {}
abstract class A2 implements A<Record> {}
abstract class A3 with A<Record> {}
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() => <Record>[];
dynamic foo3() => Record;
dynamic foo4() => List<Record>;
dynamic foo5(Record r) => null;
dynamic foo6({required Record r}) => null;
dynamic foo8(List<Record> l) => null;
foo((int, String) record) {}
main() {}
typedef AR = A<Record>;
typedef AR2 = A<R>;
typedef AR3 = A<RR>;
typedef AR4 = A<AR>;
typedef R = Record;
typedef RR = R;

View file

@ -0,0 +1,4 @@
f() sync* {}
g() sync* => dummy;
h() sync* {}
main() {}

View file

@ -1,3 +1,4 @@
sealed class A {} sealed class A {}
mixin M {} mixin M {}
sealed class B = Object with M; sealed class B = Object with M;

View file

@ -0,0 +1,5 @@
mixin M {}
sealed class A {}
sealed class B = Object with M;

View file

@ -1,2 +1 @@
sealed sealed mixin M {}
mixin M {}

View file

@ -0,0 +1,4 @@
---- unknown chunk starts ----
sealed
---- unknown chunk ends ----
mixin M {}

View file

@ -21,14 +21,7 @@ regress/issue_39035.crash: EmptyOutput
regress/issue_39091_2: EmptyOutput regress/issue_39091_2: EmptyOutput
regress/utf_16_le_content.crash: 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_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: FormatterCrash
const_functions/const_functions_const_ctor_error: FormatterCrash const_functions/const_functions_const_ctor_error: FormatterCrash
const_functions/const_functions_const_factory: 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_39958_01: FormatterCrash
general/error_recovery/issue_43090.crash: FormatterCrash general/error_recovery/issue_43090.crash: FormatterCrash
general/extension_types_feature_not_enabled: FormatterCrash general/extension_types_feature_not_enabled: FormatterCrash
general/final_class_declaration: FormatterCrash
general/function_type_default_value: FormatterCrash general/function_type_default_value: FormatterCrash
general/incomplete_field_formal_parameter: FormatterCrash general/incomplete_field_formal_parameter: FormatterCrash
general/inline_class_declaration: FormatterCrash general/inline_class_declaration: FormatterCrash
@ -118,12 +110,10 @@ general/macro_class: FormatterCrash
general/many_errors2: FormatterCrash general/many_errors2: FormatterCrash
general/many_errors: FormatterCrash general/many_errors: FormatterCrash
general/missing_prefix_name: FormatterCrash general/missing_prefix_name: FormatterCrash
general/mixin_class_declaration: FormatterCrash
general/new_as_selector: FormatterCrash general/new_as_selector: FormatterCrash
general/null_aware_super: FormatterCrash general/null_aware_super: FormatterCrash
general/null_safety_invalid_experiment: FormatterCrash general/null_safety_invalid_experiment: FormatterCrash
general/null_safety_invalid_experiment_and_language_version: FormatterCrash general/null_safety_invalid_experiment_and_language_version: FormatterCrash
general/records: FormatterCrash
general/records_opt_out: FormatterCrash general/records_opt_out: FormatterCrash
general/sealed_class_declaration: FormatterCrash general/sealed_class_declaration: FormatterCrash
general/type_parameters_on_void: FormatterCrash general/type_parameters_on_void: FormatterCrash
@ -166,21 +156,8 @@ nnbd_mixed/inheritance_from_opt_in: FormatterCrash
nnbd_mixed/issue41597: FormatterCrash nnbd_mixed/issue41597: FormatterCrash
nnbd_mixed/null_safety_invalid_language_version: FormatterCrash nnbd_mixed/null_safety_invalid_language_version: FormatterCrash
nonfunction_type_aliases/old_version: FormatterCrash nonfunction_type_aliases/old_version: FormatterCrash
patterns/if_else_in_collections_errors: FormatterCrash
patterns/issue51489: 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_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/bad_redirection: FormatterCrash
rasta/issue_000032: FormatterCrash rasta/issue_000032: FormatterCrash
rasta/issue_000034: FormatterCrash rasta/issue_000034: FormatterCrash
@ -190,37 +167,15 @@ rasta/issue_000046: FormatterCrash
rasta/issue_000047: FormatterCrash rasta/issue_000047: FormatterCrash
rasta/malformed_const_constructor: FormatterCrash rasta/malformed_const_constructor: FormatterCrash
rasta/mandatory_parameter_initializer: 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/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/metadata: FormatterCrash
records/named_fields_clashing_with_positional: FormatterCrash
records/names_of_positional_fields_same_as_object_members: 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_literal_errors: FormatterCrash
records/record_type: FormatterCrash
records/record_type_errors: FormatterCrash records/record_type_errors: FormatterCrash
records/record_type_unsupported: 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/ambiguous_builder_01: FormatterCrash
regress/issue_29942: FormatterCrash regress/issue_29942: FormatterCrash
regress/issue_29944: FormatterCrash regress/issue_29944: FormatterCrash
regress/issue_29983: FormatterCrash
regress/issue_29986: FormatterCrash regress/issue_29986: FormatterCrash
regress/issue_30834: FormatterCrash regress/issue_30834: FormatterCrash
regress/issue_30981: FormatterCrash regress/issue_30981: FormatterCrash
@ -244,8 +199,6 @@ regress/issue_41265.crash: Crash
regress/issue_41265.crash: FormatterCrash regress/issue_41265.crash: FormatterCrash
sealed_class/sealed_abstract_class_declaration: FormatterCrash sealed_class/sealed_abstract_class_declaration: FormatterCrash
sealed_class/sealed_class_as_mixin: 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/issue47741: FormatterCrash
super_parameters/issue47922: FormatterCrash super_parameters/issue47922: FormatterCrash
super_parameters/issue48714: FormatterCrash super_parameters/issue48714: FormatterCrash