diff --git a/CHANGELOG.md b/CHANGELOG.md index 149d8c9f..63249e08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,7 @@ # 2.0.1 * Support triple-shift `>>>` and `>>>=` operators (#992). +* Support non-function type aliases (#993). # 2.0.0 diff --git a/lib/src/dart_formatter.dart b/lib/src/dart_formatter.dart index d88af89a..7f437a95 100644 --- a/lib/src/dart_formatter.dart +++ b/lib/src/dart_formatter.dart @@ -88,7 +88,11 @@ class DartFormatter { // command line. var featureSet = FeatureSet.fromEnableFlags2( sdkLanguageVersion: Version(2, 13, 0), - flags: ['non-nullable', 'generic-metadata', 'triple-shift']); + flags: [ + 'generic-metadata', + 'nonfunction-type-aliases', + 'triple-shift' + ]); var inputOffset = 0; var text = source.text; diff --git a/lib/src/source_visitor.dart b/lib/src/source_visitor.dart index 6a2ccd46..a39e0268 100644 --- a/lib/src/source_visitor.dart +++ b/lib/src/source_visitor.dart @@ -1819,7 +1819,7 @@ class SourceVisitor extends ThrowingAstVisitor { space(); - visit(node.functionType); + visit(node.type); }); } diff --git a/test/splitting/typedef.unit b/test/splitting/typedef.unit index aa0760f5..e2a89a04 100644 --- a/test/splitting/typedef.unit +++ b/test/splitting/typedef.unit @@ -60,4 +60,30 @@ typedef LongfunctionType>> non-function split type parameters +typedef G = SomeType; +<<< +typedef G = SomeType; +>>> non-function split all type parameters +typedef G = SomeType; +<<< +typedef G = SomeType< + TypeOne, + TypeTwo, + TypeThree, + TypeFour, + TypeFive, + TypeSix>; +>>> non-function generic typedef parameters on one line +typedef Foo = SomeType; +<<< +typedef Foo = SomeType; +>>> non-function generic typedef parameters that split +typedef LongGenericType = AnotherType; +<<< +typedef LongGenericType + = AnotherType; \ No newline at end of file diff --git a/test/whitespace/metadata.unit b/test/whitespace/metadata.unit index 87ed0b7b..37a311a2 100644 --- a/test/whitespace/metadata.unit +++ b/test/whitespace/metadata.unit @@ -270,6 +270,11 @@ class A { <<< @foo typedef Fn = Function(); +>>> metadata on non-function typedef +@foo typedef Hash< @a K, @b ( 1 ) V > = Map < K , V > ; +<<< +@foo +typedef Hash<@a K, @b(1) V> = Map; >>> single metadata on for-in loop variable main() { for ( @a var i in list) {;} diff --git a/test/whitespace/typedef.unit b/test/whitespace/typedef.unit index 71d697c3..9cfaad84 100644 --- a/test/whitespace/typedef.unit +++ b/test/whitespace/typedef.unit @@ -37,4 +37,17 @@ typedef Foo = Function(A a, B b); >>> generic function typedef Foo =Function < A ,B > ( A a,B b ); <<< -typedef Foo = Function(A a, B b); \ No newline at end of file +typedef Foo = Function(A a, B b); +>>> +typedef Foo = Bar; +<<< +typedef Foo = Bar; +>>> non-function typedef +typedef Json = Map < String , Object ? > ; +<<< +typedef Json = Map; +>>> non-function generic typedef +typedef Hash < K extends List < T > , V > = Map < K , V > ; +<<< +typedef Hash, V> + = Map; \ No newline at end of file