From 5ec6de2ec9ff898fe8f14cb5832cbf22c664e312 Mon Sep 17 00:00:00 2001 From: MarkZ Date: Tue, 11 Mar 2025 10:30:02 -0700 Subject: [PATCH] [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 Commit-Queue: Mark Zhou --- .../main.0.dart | 34 +++++++++++ .../main.1.dart | 52 +++++++++++++++++ .../main.0.dart | 34 +++++++++++ .../main.1.dart | 52 +++++++++++++++++ .../call_deleted_super_function/main.0.dart | 36 ++++++++++++ .../call_deleted_super_function/main.1.dart | 54 ++++++++++++++++++ .../main.0.dart | 36 ++++++++++++ .../main.1.dart | 57 +++++++++++++++++++ .../call_deleted_super_getter/main.0.dart | 36 ++++++++++++ .../call_deleted_super_getter/main.1.dart | 54 ++++++++++++++++++ .../call_deleted_super_setter/main.0.dart | 34 +++++++++++ .../call_deleted_super_setter/main.1.dart | 52 +++++++++++++++++ 12 files changed, 531 insertions(+) create mode 100644 tests/hot_reload/call_deleted_super_field_getter/main.0.dart create mode 100644 tests/hot_reload/call_deleted_super_field_getter/main.1.dart create mode 100644 tests/hot_reload/call_deleted_super_field_setter/main.0.dart create mode 100644 tests/hot_reload/call_deleted_super_field_setter/main.1.dart create mode 100644 tests/hot_reload/call_deleted_super_function/main.0.dart create mode 100644 tests/hot_reload/call_deleted_super_function/main.1.dart create mode 100644 tests/hot_reload/call_deleted_super_function_arity_change/main.0.dart create mode 100644 tests/hot_reload/call_deleted_super_function_arity_change/main.1.dart create mode 100644 tests/hot_reload/call_deleted_super_getter/main.0.dart create mode 100644 tests/hot_reload/call_deleted_super_getter/main.1.dart create mode 100644 tests/hot_reload/call_deleted_super_setter/main.0.dart create mode 100644 tests/hot_reload/call_deleted_super_setter/main.1.dart 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 00000000000..e80c3606e00 --- /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 main() async { + helper(); + Expect.equals('hello', retained()); + await hotReload(); + + Expect.throws( + 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 00000000000..63b9921ecc7 --- /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 main() async { + helper(); + Expect.equals('hello', retained()); + await hotReload(); + + Expect.throws( + 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 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 00000000000..c4fe24981ce --- /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 main() async { + helper(); + Expect.equals('hello', retained()); + await hotReload(); + + Expect.throws( + 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 00000000000..a3f8c0c1787 --- /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 main() async { + helper(); + Expect.equals('hello', retained()); + await hotReload(); + + Expect.throws( + 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 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 00000000000..1cb2796f5dd --- /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 main() async { + helper(); + Expect.equals('hello', retained()); + await hotReload(); + + Expect.throws( + 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 00000000000..58fc09907a8 --- /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 main() async { + helper(); + Expect.equals('hello', retained()); + await hotReload(); + + Expect.throws( + 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 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 00000000000..139508abe9a --- /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 main() async { + helper(); + Expect.equals('hello', retained()); + await hotReload(); + + Expect.throws( + 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 00000000000..e4d1ed1a049 --- /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 main() async { + helper(); + Expect.equals('hello', retained()); + await hotReload(); + + Expect.throws( + 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 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 00000000000..71b22c5d1df --- /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 main() async { + helper(); + Expect.equals('hello', retained()); + await hotReload(); + + Expect.throws( + 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 00000000000..57b95837775 --- /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 main() async { + helper(); + Expect.equals('hello', retained()); + await hotReload(); + + Expect.throws( + 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 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 00000000000..569ab0b8ab7 --- /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 main() async { + helper(); + Expect.equals('hello', retained()); + await hotReload(); + + Expect.throws( + 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 00000000000..4c41e9da00d --- /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 main() async { + helper(); + Expect.equals('hello', retained()); + await hotReload(); + + Expect.throws( + 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 main() async { + helper(); +*/