@@ -140,6 +140,20 @@ void run() {
140
140
check ('FutureOr<FutureOr<int>?>' , 'FutureOr<FutureOr<int>?>?' );
141
141
check ('FutureOr<FutureOr<FutureOr<int>>?>' ,
142
142
'FutureOr<FutureOr<FutureOr<int>>?>?' );
143
+
144
+ check ('(T, S & Never, {R foo})' , '(Never, Never, {Never foo})' ,
145
+ 'T extends Never, S extends Object?, R extends T' );
146
+ check ('(T, bool?, {FutureOr<Null> foo, FutureOr<dynamic> bar})' ,
147
+ '(Never, bool?, {Future<Null>? foo, dynamic bar})' , 'T extends Never' );
148
+ check ('() -> List<({FutureOr<dynamic> foo})>' , '() -> List<({dynamic foo})>' );
149
+ check ('<T extends Never>((T, T)) -> void' ,
150
+ '<T extends Never>((Never, Never)) -> void' );
151
+
152
+ checkNormToSame ('(int, {String? foo})' );
153
+ checkNormToSame ('(int, String?, {List<int> foo, T bar})' , 'T extends num' );
154
+ checkNormToSame ('()' );
155
+ checkNormToSame ('(int?)' );
156
+ checkNormToSame ('List<(int, {String foo})>' );
143
157
}
144
158
145
159
void check (String input, String output, [String typeParameters = '' ]) {
0 commit comments