[tests] Porting deleted super member tests to the hot reload framework.
Change-Id: Ibdbe23fe2da83c9583e0aa4b2b3a2794a8762b67
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/414663
Reviewed-by: Nicholas Shahan <nshahan@google.com>
Commit-Queue: Mark Zhou <markzipan@google.com>
diff --git a/tests/hot_reload/call_deleted_super_field_getter/main.0.dart b/tests/hot_reload/call_deleted_super_field_getter/main.0.dart
new file mode 100644
index 0000000..e80c360
--- /dev/null
+++ b/tests/hot_reload/call_deleted_super_field_getter/main.0.dart
@@ -0,0 +1,34 @@
+// Copyright (c) 2025, 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';
+import 'package:reload_test/reload_test_utils.dart';
+
+// Adapted from:
+// https://github.com/dart-lang/sdk/blob/cb96256bc2be8021c649da6d36c010de97cd3986/runtime/vm/isolate_reload_test.cc#L3480
+
+var retained;
+
+class C {
+ var deleted = 'hello';
+}
+
+class D extends C {
+ curry() => () => super.deleted;
+}
+
+helper() {
+ retained = D().curry();
+}
+
+Future<void> main() async {
+ helper();
+ Expect.equals('hello', retained());
+ await hotReload();
+
+ Expect.throws<NoSuchMethodError>(
+ retained,
+ (error) => '$error'.contains('deleted'),
+ );
+}
diff --git a/tests/hot_reload/call_deleted_super_field_getter/main.1.dart b/tests/hot_reload/call_deleted_super_field_getter/main.1.dart
new file mode 100644
index 0000000..63b9921
--- /dev/null
+++ b/tests/hot_reload/call_deleted_super_field_getter/main.1.dart
@@ -0,0 +1,52 @@
+// Copyright (c) 2025, 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';
+import 'package:reload_test/reload_test_utils.dart';
+
+// Adapted from:
+// https://github.com/dart-lang/sdk/blob/cb96256bc2be8021c649da6d36c010de97cd3986/runtime/vm/isolate_reload_test.cc#L3480
+
+var retained;
+
+class C {}
+
+class D extends C {}
+
+helper() {}
+
+Future<void> main() async {
+ helper();
+ Expect.equals('hello', retained());
+ await hotReload();
+
+ Expect.throws<NoSuchMethodError>(
+ retained,
+ (error) => '$error'.contains('deleted'),
+ );
+}
+
+/** DIFF **/
+/*
+
+ var retained;
+
+-class C {
+- var deleted = 'hello';
+-}
++class C {}
+
+-class D extends C {
+- curry() => () => super.deleted;
+-}
++class D extends C {}
+
+-helper() {
+- retained = D().curry();
+-}
++helper() {}
+
+ Future<void> main() async {
+ helper();
+*/
diff --git a/tests/hot_reload/call_deleted_super_field_setter/main.0.dart b/tests/hot_reload/call_deleted_super_field_setter/main.0.dart
new file mode 100644
index 0000000..c4fe249
--- /dev/null
+++ b/tests/hot_reload/call_deleted_super_field_setter/main.0.dart
@@ -0,0 +1,34 @@
+// Copyright (c) 2025, 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';
+import 'package:reload_test/reload_test_utils.dart';
+
+// Adapted from:
+// https://github.com/dart-lang/sdk/blob/cb96256bc2be8021c649da6d36c010de97cd3986/runtime/vm/isolate_reload_test.cc#L3513
+
+var retained;
+
+class C {
+ var deleted;
+}
+
+class D extends C {
+ curry() => () => super.deleted = 'hello';
+}
+
+helper() {
+ retained = D().curry();
+}
+
+Future<void> main() async {
+ helper();
+ Expect.equals('hello', retained());
+ await hotReload();
+
+ Expect.throws<NoSuchMethodError>(
+ retained,
+ (error) => '$error'.contains('deleted'),
+ );
+}
diff --git a/tests/hot_reload/call_deleted_super_field_setter/main.1.dart b/tests/hot_reload/call_deleted_super_field_setter/main.1.dart
new file mode 100644
index 0000000..a3f8c0c
--- /dev/null
+++ b/tests/hot_reload/call_deleted_super_field_setter/main.1.dart
@@ -0,0 +1,52 @@
+// Copyright (c) 2025, 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';
+import 'package:reload_test/reload_test_utils.dart';
+
+// Adapted from:
+// https://github.com/dart-lang/sdk/blob/cb96256bc2be8021c649da6d36c010de97cd3986/runtime/vm/isolate_reload_test.cc#L3513
+
+var retained;
+
+class C {}
+
+class D extends C {}
+
+helper() {}
+
+Future<void> main() async {
+ helper();
+ Expect.equals('hello', retained());
+ await hotReload();
+
+ Expect.throws<NoSuchMethodError>(
+ retained,
+ (error) => '$error'.contains('deleted'),
+ );
+}
+
+/** DIFF **/
+/*
+
+ var retained;
+
+-class C {
+- var deleted;
+-}
++class C {}
+
+-class D extends C {
+- curry() => () => super.deleted = 'hello';
+-}
++class D extends C {}
+
+-helper() {
+- retained = D().curry();
+-}
++helper() {}
+
+ Future<void> main() async {
+ helper();
+*/
diff --git a/tests/hot_reload/call_deleted_super_function/main.0.dart b/tests/hot_reload/call_deleted_super_function/main.0.dart
new file mode 100644
index 0000000..1cb2796
--- /dev/null
+++ b/tests/hot_reload/call_deleted_super_function/main.0.dart
@@ -0,0 +1,36 @@
+// Copyright (c) 2025, 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';
+import 'package:reload_test/reload_test_utils.dart';
+
+// Adapted from:
+// https://github.com/dart-lang/sdk/blob/cb96256bc2be8021c649da6d36c010de97cd3986/runtime/vm/isolate_reload_test.cc#L3348
+
+var retained;
+
+class C {
+ deleted() {
+ return 'hello';
+ }
+}
+
+class D extends C {
+ curry() => () => super.deleted();
+}
+
+helper() {
+ retained = D().curry();
+}
+
+Future<void> main() async {
+ helper();
+ Expect.equals('hello', retained());
+ await hotReload();
+
+ Expect.throws<NoSuchMethodError>(
+ retained,
+ (error) => '$error'.contains('deleted'),
+ );
+}
diff --git a/tests/hot_reload/call_deleted_super_function/main.1.dart b/tests/hot_reload/call_deleted_super_function/main.1.dart
new file mode 100644
index 0000000..58fc099
--- /dev/null
+++ b/tests/hot_reload/call_deleted_super_function/main.1.dart
@@ -0,0 +1,54 @@
+// Copyright (c) 2025, 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';
+import 'package:reload_test/reload_test_utils.dart';
+
+// Adapted from:
+// https://github.com/dart-lang/sdk/blob/cb96256bc2be8021c649da6d36c010de97cd3986/runtime/vm/isolate_reload_test.cc#L3348
+
+var retained;
+
+class C {}
+
+class D extends C {}
+
+helper() {}
+
+Future<void> main() async {
+ helper();
+ Expect.equals('hello', retained());
+ await hotReload();
+
+ Expect.throws<NoSuchMethodError>(
+ retained,
+ (error) => '$error'.contains('deleted'),
+ );
+}
+
+/** DIFF **/
+/*
+
+ var retained;
+
+-class C {
+- deleted() {
+- return 'hello';
+- }
+-}
++class C {}
+
+-class D extends C {
+- curry() => () => super.deleted();
+-}
++class D extends C {}
+
+-helper() {
+- retained = D().curry();
+-}
++helper() {}
+
+ Future<void> main() async {
+ helper();
+*/
diff --git a/tests/hot_reload/call_deleted_super_function_arity_change/main.0.dart b/tests/hot_reload/call_deleted_super_function_arity_change/main.0.dart
new file mode 100644
index 0000000..139508a
--- /dev/null
+++ b/tests/hot_reload/call_deleted_super_function_arity_change/main.0.dart
@@ -0,0 +1,36 @@
+// Copyright (c) 2025, 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';
+import 'package:reload_test/reload_test_utils.dart';
+
+// Adapted from:
+// https://github.com/dart-lang/sdk/blob/cb96256bc2be8021c649da6d36c010de97cd3986/runtime/vm/isolate_reload_test.cc#L3381
+
+var retained;
+
+class C {
+ deleted() {
+ return 'hello';
+ }
+}
+
+class D extends C {
+ curry() => () => super.deleted();
+}
+
+helper() {
+ retained = D().curry();
+}
+
+Future<void> main() async {
+ helper();
+ Expect.equals('hello', retained());
+ await hotReload();
+
+ Expect.throws<NoSuchMethodError>(
+ retained,
+ (error) => '$error'.contains('deleted'),
+ );
+}
diff --git a/tests/hot_reload/call_deleted_super_function_arity_change/main.1.dart b/tests/hot_reload/call_deleted_super_function_arity_change/main.1.dart
new file mode 100644
index 0000000..e4d1ed1
--- /dev/null
+++ b/tests/hot_reload/call_deleted_super_function_arity_change/main.1.dart
@@ -0,0 +1,57 @@
+// Copyright (c) 2025, 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';
+import 'package:reload_test/reload_test_utils.dart';
+
+// Adapted from:
+// https://github.com/dart-lang/sdk/blob/cb96256bc2be8021c649da6d36c010de97cd3986/runtime/vm/isolate_reload_test.cc#L3381
+
+var retained;
+
+class C {
+ deleted(newParameter) {
+ return 'hello';
+ }
+}
+
+class D extends C {}
+
+helper() {}
+
+Future<void> main() async {
+ helper();
+ Expect.equals('hello', retained());
+ await hotReload();
+
+ Expect.throws<NoSuchMethodError>(
+ retained,
+ (error) => '$error'.contains('deleted'),
+ );
+}
+
+/** DIFF **/
+/*
+ var retained;
+
+ class C {
+- deleted() {
++ deleted(newParameter) {
+ return 'hello';
+ }
+ }
+
+-class D extends C {
+- curry() => () => super.deleted();
+-}
++class D extends C {}
+
+-helper() {
+- retained = D().curry();
+-}
++helper() {}
+
+ Future<void> main() async {
+ helper();
+*/
diff --git a/tests/hot_reload/call_deleted_super_getter/main.0.dart b/tests/hot_reload/call_deleted_super_getter/main.0.dart
new file mode 100644
index 0000000..71b22c5
--- /dev/null
+++ b/tests/hot_reload/call_deleted_super_getter/main.0.dart
@@ -0,0 +1,36 @@
+// Copyright (c) 2025, 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';
+import 'package:reload_test/reload_test_utils.dart';
+
+// Adapted from:
+// https://github.com/dart-lang/sdk/blob/cb96256bc2be8021c649da6d36c010de97cd3986/runtime/vm/isolate_reload_test.cc#L3414
+
+var retained;
+
+class C {
+ get deleted {
+ return 'hello';
+ }
+}
+
+class D extends C {
+ curry() => () => super.deleted;
+}
+
+helper() {
+ retained = D().curry();
+}
+
+Future<void> main() async {
+ helper();
+ Expect.equals('hello', retained());
+ await hotReload();
+
+ Expect.throws<NoSuchMethodError>(
+ retained,
+ (error) => '$error'.contains('deleted'),
+ );
+}
diff --git a/tests/hot_reload/call_deleted_super_getter/main.1.dart b/tests/hot_reload/call_deleted_super_getter/main.1.dart
new file mode 100644
index 0000000..57b9583
--- /dev/null
+++ b/tests/hot_reload/call_deleted_super_getter/main.1.dart
@@ -0,0 +1,54 @@
+// Copyright (c) 2025, 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';
+import 'package:reload_test/reload_test_utils.dart';
+
+// Adapted from:
+// https://github.com/dart-lang/sdk/blob/cb96256bc2be8021c649da6d36c010de97cd3986/runtime/vm/isolate_reload_test.cc#L3414
+
+var retained;
+
+class C {}
+
+class D extends C {}
+
+helper() {}
+
+Future<void> main() async {
+ helper();
+ Expect.equals('hello', retained());
+ await hotReload();
+
+ Expect.throws<NoSuchMethodError>(
+ retained,
+ (error) => '$error'.contains('deleted'),
+ );
+}
+
+/** DIFF **/
+/*
+
+ var retained;
+
+-class C {
+- get deleted {
+- return 'hello';
+- }
+-}
++class C {}
+
+-class D extends C {
+- curry() => () => super.deleted;
+-}
++class D extends C {}
+
+-helper() {
+- retained = D().curry();
+-}
++helper() {}
+
+ Future<void> main() async {
+ helper();
+*/
diff --git a/tests/hot_reload/call_deleted_super_setter/main.0.dart b/tests/hot_reload/call_deleted_super_setter/main.0.dart
new file mode 100644
index 0000000..569ab0b
--- /dev/null
+++ b/tests/hot_reload/call_deleted_super_setter/main.0.dart
@@ -0,0 +1,34 @@
+// Copyright (c) 2025, 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';
+import 'package:reload_test/reload_test_utils.dart';
+
+// Adapted from:
+// https://github.com/dart-lang/sdk/blob/cb96256bc2be8021c649da6d36c010de97cd3986/runtime/vm/isolate_reload_test.cc#L3447
+
+var retained;
+
+class C {
+ set deleted(x) {}
+}
+
+class D extends C {
+ curry() => () => super.deleted = 'hello';
+}
+
+helper() {
+ retained = D().curry();
+}
+
+Future<void> main() async {
+ helper();
+ Expect.equals('hello', retained());
+ await hotReload();
+
+ Expect.throws<NoSuchMethodError>(
+ retained,
+ (error) => '$error'.contains('deleted'),
+ );
+}
diff --git a/tests/hot_reload/call_deleted_super_setter/main.1.dart b/tests/hot_reload/call_deleted_super_setter/main.1.dart
new file mode 100644
index 0000000..4c41e9d
--- /dev/null
+++ b/tests/hot_reload/call_deleted_super_setter/main.1.dart
@@ -0,0 +1,52 @@
+// Copyright (c) 2025, 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';
+import 'package:reload_test/reload_test_utils.dart';
+
+// Adapted from:
+// https://github.com/dart-lang/sdk/blob/cb96256bc2be8021c649da6d36c010de97cd3986/runtime/vm/isolate_reload_test.cc#L3447
+
+var retained;
+
+class C {}
+
+class D extends C {}
+
+helper() {}
+
+Future<void> main() async {
+ helper();
+ Expect.equals('hello', retained());
+ await hotReload();
+
+ Expect.throws<NoSuchMethodError>(
+ retained,
+ (error) => '$error'.contains('deleted'),
+ );
+}
+
+/** DIFF **/
+/*
+
+ var retained;
+
+-class C {
+- set deleted(x) {}
+-}
++class C {}
+
+-class D extends C {
+- curry() => () => super.deleted = 'hello';
+-}
++class D extends C {}
+
+-helper() {
+- retained = D().curry();
+-}
++helper() {}
+
+ Future<void> main() async {
+ helper();
+*/