dart-sdk/tests/language/regression_55741_test.dart
Martin Kustermann e6e9b4e595 [dart2wasm] Only share type parameter fields if nullability allows
Closes https://github.com/dart-lang/sdk/issues/55741

Change-Id: I1e542041496d07714431ed40871031a117030736
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/366940
Reviewed-by: Ömer Ağacan <omersa@google.com>
Commit-Queue: Martin Kustermann <kustermann@google.com>
2024-05-17 12:07:56 +00:00

37 lines
1.3 KiB
Dart

// Copyright (c) 2024, 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 'package:expect/expect.dart';
final kTrue = int.parse('1') == 1;
void main() {
final base = kTrue ? Base<String>('a') : 1;
final baseNullable = kTrue ? Base<String?>('a') : 1;
final sub = kTrue ? Sub<String>('a') : 1;
final subNullable = kTrue ? Sub<String?>('a') : 1;
Expect.isTrue(base is Base<String>, 'is Base<String>');
Expect.isTrue(base is Base<String?>, 'is Base<String?>');
Expect.isTrue(baseNullable is! Base<String>, 'is! Base<String>');
Expect.isTrue(baseNullable is Base<String?>, 'is Base<String?>');
Expect.isTrue(sub is Sub<String>, 'is Sub<String>');
Expect.isTrue(sub is Sub<String?>, 'is Sub<String?>');
Expect.isTrue(subNullable is! Sub<String>, 'is! Sub<String>');
Expect.isTrue(subNullable is Sub<String?>, 'is Sub<String?>');
Expect.isTrue(sub is! Base<String>, 'is! Base<String>');
Expect.isTrue(sub is Base<String?>, 'is Base<String?>');
Expect.isTrue(subNullable is! Base<String>, 'is! Base<String>');
Expect.isTrue(subNullable is Base<String?>, 'is Base<String?>');
}
class Base<T> {
Base(this.data);
final T data;
}
class Sub<T> extends Base<T?> {
Sub(super.data);
}