| part of Expect; |
| |
| typedef F<X> = void Function<Y extends X>(); |
| |
| typedef expected_target = Function<X>(); |
| |
| // Functions for correct type comparison in language feature tests |
| F<X> toF<X>(X x) => <Y extends X>() {}; |
| Type typeOf<X>() => X; |
| |
| // Function to check nnbd_top_merge feature |
| class CHECK_TOP_MERGE<T> { |
| T Function(T) get f => (x) => x; |
| } |
| |
| // Functions to check least and greatest closures |
| // See https://github.com/dart-lang/co19/issues/575#issuecomment-613542349 |
| Type? _capturedTypeArgument; |
| |
| X captureTypeArgument<X>() { |
| _capturedTypeArgument = X; |
| throw "Error"; |
| } |
| |
| Type? get capturedTypeArgument { |
| var result = _capturedTypeArgument; |
| _capturedTypeArgument = null; |
| return result; |
| } |
| |
| // Sound/Unsound null safety flags (formerly known as weak/strong mode) |
| bool get hasUnsoundNullSafety => const <Null>[] is List<Object>; |
| bool get hasSoundNullSafety => !hasUnsoundNullSafety; |