Files
sdk/tests/web/switch_equals_test.dart
T
Mayank Patke f79ed9301b [dart2js] Remove remaining language version overrides
Now that dart2js only takes migrated files as input, all tests should
use the current language version.

Change-Id: I6c84850f5786aeac04154b67bd7a3c19083c8bba
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/345344
Reviewed-by: Nate Biggs <natebiggs@google.com>
Commit-Queue: Mayank Patke <fishythefish@google.com>
2024-01-23 01:26:09 +00:00

50 lines
1.1 KiB
Dart

// Copyright (c) 2018, 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.
class SuperClass {
const SuperClass();
bool operator ==(Object other);
}
class Class extends SuperClass {
const Class();
bool operator ==(Object other);
}
class SubClass extends Class {
const SubClass();
bool operator ==(Object other) => false;
}
main() {
// This test verifies that when overriding `==` it is a compile time error to
// use that class as a key in a switch, but only if the override provides a
// body. However, with NNBD, all of these switches became compile time errors
// so now we cast `null` as `dynamic` to get these first two switches past
// the compiler.
switch (null as dynamic) {
case const SuperClass():
break;
default:
}
switch (null as dynamic) {
case const Class():
break;
default:
}
switch (null as dynamic) {
case const SubClass():
break;
default:
}
switch (null) {
case null:
break;
default:
}
}