| // Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| import 'dart:async'; |
| |
| // Work-around for `<pattern>?` vs `<type>?` conflict which favors the former. |
| typedef Nullable<T> = T?; |
| |
| exhaustiveNonNullableTypeVariable<T extends Object>( |
| int? |
| o) => /* |
| checkingOrder={int?,int,Null}, |
| subtypes={int,Null}, |
| type=int? |
| */ |
| switch (o) { |
| int() as T /*space=int?*/ => 0, |
| }; |
| |
| nonExhaustiveNullableTypeVariable<T>( |
| int? |
| o) => /* |
| checkingOrder={int?,int,Null}, |
| error=non-exhaustive:null, |
| subtypes={int,Null}, |
| type=int? |
| */ |
| switch (o) { |
| int() as T /*space=int*/ => 0, |
| }; |
| |
| exhaustiveNonNullableType( |
| int? |
| o) => /* |
| checkingOrder={int?,int,Null}, |
| subtypes={int,Null}, |
| type=int? |
| */ |
| switch (o) { |
| int() as int /*space=int?*/ => 0, |
| }; |
| |
| exhaustiveNonNullableSuperType( |
| int? |
| o) => /* |
| checkingOrder={int?,int,Null}, |
| subtypes={int,Null}, |
| type=int? |
| */ |
| switch (o) { |
| int() as num /*space=int?*/ => 0, |
| }; |
| |
| nonExhaustiveNonNullableType( |
| int? |
| o) => /* |
| checkingOrder={int?,int,Null}, |
| error=non-exhaustive:null, |
| subtypes={int,Null}, |
| type=int? |
| */ |
| switch (o) { |
| int() as Nullable<int> /*space=int*/ => 0, |
| }; |
| |
| exhaustiveNonNullableFutureOr1( |
| FutureOr<int>? |
| o) => /* |
| checkingOrder={FutureOr<int>?,FutureOr<int>,Null,int,Future<int>}, |
| expandedSubtypes={int,Future<int>,Null}, |
| subtypes={FutureOr<int>,Null}, |
| type=FutureOr<int>? |
| */ |
| switch (o) { |
| FutureOr<int>() as FutureOr<int> /*space=FutureOr<int>?*/ => 0, |
| }; |
| |
| exhaustiveNonNullableFutureOr2( |
| FutureOr<int?> |
| o) => /* |
| checkingOrder={FutureOr<int?>,int?,Future<int?>,int,Null}, |
| expandedSubtypes={int,Null,Future<int?>}, |
| subtypes={int?,Future<int?>}, |
| type=FutureOr<int?> |
| */ |
| switch (o) { |
| FutureOr<int>() as FutureOr<int> /*space=FutureOr<int?>*/ => 0, |
| }; |
| |
| nonExhaustiveNonNullableFutureOr1( |
| FutureOr<int>? |
| o) => /* |
| checkingOrder={FutureOr<int>?,FutureOr<int>,Null,int,Future<int>}, |
| error=non-exhaustive:null, |
| expandedSubtypes={int,Future<int>,Null}, |
| subtypes={FutureOr<int>,Null}, |
| type=FutureOr<int>? |
| */ |
| switch (o) { |
| FutureOr<int>() as Nullable<FutureOr<int>> /*space=FutureOr<int>*/ => 0, |
| }; |
| |
| nonExhaustiveNonNullableFutureOr2( |
| FutureOr<int?> |
| o) => /* |
| checkingOrder={FutureOr<int?>,int?,Future<int?>,int,Null}, |
| error=non-exhaustive:Future<int?>();null, |
| expandedSubtypes={int,Null,Future<int?>}, |
| subtypes={int?,Future<int?>}, |
| type=FutureOr<int?> |
| */ |
| switch (o) { |
| FutureOr<int>() as FutureOr<int?> /*space=FutureOr<int>*/ => 0, |
| }; |
| |
| exhaustiveNonNullableFutureOrTypeVariable1<T extends Object>( |
| FutureOr<T>? |
| o) => /* |
| checkingOrder={FutureOr<T>?,FutureOr<T>,Null,Object,Future<T>}, |
| expandedSubtypes={Object,Future<T>,Null}, |
| subtypes={FutureOr<T>,Null}, |
| type=FutureOr<T>? |
| */ |
| switch (o) { |
| FutureOr<T>() as FutureOr<T> /*space=FutureOr<T>?*/ => 0, |
| }; |
| |
| exhaustiveNonNullableFutureOrTypeVariable2<T extends Object>( |
| FutureOr<T?> |
| o) => /* |
| checkingOrder={FutureOr<T?>,Object?,Future<T?>,Object,Null}, |
| expandedSubtypes={Object,Null,Future<T?>}, |
| subtypes={Object?,Future<T?>}, |
| type=FutureOr<T?> |
| */ |
| switch (o) { |
| FutureOr<T>() as FutureOr<T> /*space=FutureOr<T?>*/ => 0, |
| }; |
| |
| nonExhaustiveNonNullableFutureOrTypeVariable1<T extends Object>( |
| FutureOr<T>? |
| o) => /* |
| checkingOrder={FutureOr<T>?,FutureOr<T>,Null,Object,Future<T>}, |
| error=non-exhaustive:null, |
| expandedSubtypes={Object,Future<T>,Null}, |
| subtypes={FutureOr<T>,Null}, |
| type=FutureOr<T>? |
| */ |
| switch (o) { |
| FutureOr<T>() as Nullable<FutureOr<T>> /*space=FutureOr<T>*/ => 0, |
| }; |
| |
| nonExhaustiveNonNullableFutureOrTypeVariable2<T extends Object>( |
| FutureOr<T?> |
| o) => /* |
| checkingOrder={FutureOr<T?>,Object?,Future<T?>,Object,Null}, |
| error=non-exhaustive:Future<T?>();null, |
| expandedSubtypes={Object,Null,Future<T?>}, |
| subtypes={Object?,Future<T?>}, |
| type=FutureOr<T?> |
| */ |
| switch (o) { |
| FutureOr<T>() as FutureOr<T?> /*space=FutureOr<T>*/ => 0, |
| }; |
| |
| nonExhaustiveNullableFutureOrTypeVariable1<T>( |
| FutureOr<T>? |
| o) => /* |
| checkingOrder={FutureOr<T>?,FutureOr<T>,Null,Object?,Future<T>,Object,Null}, |
| expandedSubtypes={Object,Null,Future<T>,Null}, |
| subtypes={FutureOr<T>,Null}, |
| type=FutureOr<T>? |
| */ |
| switch (o) { |
| FutureOr<T>() as FutureOr<T> /*space=FutureOr<T>?*/ => 0, |
| }; |
| |
| nonExhaustiveNullableFutureOrTypeVariable2<T>( |
| FutureOr<T?> |
| o) => /* |
| checkingOrder={FutureOr<T?>,Object?,Future<T?>,Object,Null}, |
| expandedSubtypes={Object,Null,Future<T?>}, |
| subtypes={Object?,Future<T?>}, |
| type=FutureOr<T?> |
| */ |
| switch (o) { |
| FutureOr<T>() as FutureOr<T> /*space=FutureOr<T?>*/ => 0, |
| }; |
| |
| nonExhaustiveNullableFutureOrTypeVariable3<T>( |
| FutureOr<T>? |
| o) => /* |
| checkingOrder={FutureOr<T>?,FutureOr<T>,Null,Object?,Future<T>,Object,Null}, |
| error=non-exhaustive:null, |
| expandedSubtypes={Object,Null,Future<T>,Null}, |
| subtypes={FutureOr<T>,Null}, |
| type=FutureOr<T>? |
| */ |
| switch (o) { |
| FutureOr<T>() as Nullable<FutureOr<T>> /*space=FutureOr<T>*/ => 0, |
| }; |
| |
| nonExhaustiveNullableFutureOrTypeVariable4<T>( |
| FutureOr<T?> |
| o) => /* |
| checkingOrder={FutureOr<T?>,Object?,Future<T?>,Object,Null}, |
| error=non-exhaustive:Future<T?>();null, |
| expandedSubtypes={Object,Null,Future<T?>}, |
| subtypes={Object?,Future<T?>}, |
| type=FutureOr<T?> |
| */ |
| switch (o) { |
| FutureOr<T>() as FutureOr<T?> /*space=FutureOr<T>*/ => 0, |
| }; |