diff --git a/tests/hot_reload/call_deleted_class_factory_constructor/main.0.dart b/tests/hot_reload/call_deleted_class_factory_constructor/main.0.dart new file mode 100644 index 00000000000..1279af4f259 --- /dev/null +++ b/tests/hot_reload/call_deleted_class_factory_constructor/main.0.dart @@ -0,0 +1,30 @@ +// 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/c0819ff165a2557e6537700363594f2ddaf2a96e/runtime/vm/isolate_reload_test.cc#L3256 + +var retained; + +class C { + factory C.deleted() => new C(); + C(); +} + +helper() { + retained = () => C.deleted().toString(); + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} diff --git a/tests/hot_reload/call_deleted_class_factory_constructor/main.1.dart b/tests/hot_reload/call_deleted_class_factory_constructor/main.1.dart new file mode 100644 index 00000000000..93eb88c2443 --- /dev/null +++ b/tests/hot_reload/call_deleted_class_factory_constructor/main.1.dart @@ -0,0 +1,41 @@ +// 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/c0819ff165a2557e6537700363594f2ddaf2a96e/runtime/vm/isolate_reload_test.cc#L3256 + +var retained; + +helper() { + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} + +/** DIFF **/ +/* + + var retained; + +-class C { +- factory C.deleted() => new C(); +- C(); +-} +- + helper() { +- retained = () => C.deleted().toString(); + return retained(); + } + +*/ diff --git a/tests/hot_reload/call_deleted_class_factory_constructor_arity_change/main.0.dart b/tests/hot_reload/call_deleted_class_factory_constructor_arity_change/main.0.dart new file mode 100644 index 00000000000..c03bcefd9ee --- /dev/null +++ b/tests/hot_reload/call_deleted_class_factory_constructor_arity_change/main.0.dart @@ -0,0 +1,30 @@ +// 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/c0819ff165a2557e6537700363594f2ddaf2a96e/runtime/vm/isolate_reload_test.cc#L3287 + +var retained; + +class C { + factory C.deleted() => new C(); + C(); +} + +helper() { + retained = () => C.deleted().toString(); + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} diff --git a/tests/hot_reload/call_deleted_class_factory_constructor_arity_change/main.1.dart b/tests/hot_reload/call_deleted_class_factory_constructor_arity_change/main.1.dart new file mode 100644 index 00000000000..ec797f544a5 --- /dev/null +++ b/tests/hot_reload/call_deleted_class_factory_constructor_arity_change/main.1.dart @@ -0,0 +1,46 @@ +// 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/c0819ff165a2557e6537700363594f2ddaf2a96e/runtime/vm/isolate_reload_test.cc#L3287 + +var retained; + +class C { + factory C.deleted(newParameter) => new C(); + C(); +} + +helper() { + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} + +/** DIFF **/ +/* + var retained; + + class C { +- factory C.deleted() => new C(); ++ factory C.deleted(newParameter) => new C(); + C(); + } + + helper() { +- retained = () => C.deleted().toString(); + return retained(); + } + +*/ diff --git a/tests/hot_reload/call_deleted_class_factory_constructor_class_deleted/main.0.dart b/tests/hot_reload/call_deleted_class_factory_constructor_class_deleted/main.0.dart new file mode 100644 index 00000000000..02c56bedb29 --- /dev/null +++ b/tests/hot_reload/call_deleted_class_factory_constructor_class_deleted/main.0.dart @@ -0,0 +1,30 @@ +// 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/c0819ff165a2557e6537700363594f2ddaf2a96e/runtime/vm/isolate_reload_test.cc#L3318 + +var retained; + +class C { + factory C.deleted() => new C(); + C(); +} + +helper() { + retained = () => C.deleted().toString(); + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} diff --git a/tests/hot_reload/call_deleted_class_factory_constructor_class_deleted/main.1.dart b/tests/hot_reload/call_deleted_class_factory_constructor_class_deleted/main.1.dart new file mode 100644 index 00000000000..539ca3fdac4 --- /dev/null +++ b/tests/hot_reload/call_deleted_class_factory_constructor_class_deleted/main.1.dart @@ -0,0 +1,41 @@ +// 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/c0819ff165a2557e6537700363594f2ddaf2a96e/runtime/vm/isolate_reload_test.cc#L3318 + +var retained; + +helper() { + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} + +/** DIFF **/ +/* + + var retained; + +-class C { +- factory C.deleted() => new C(); +- C(); +-} +- + helper() { +- retained = () => C.deleted().toString(); + return retained(); + } + +*/ diff --git a/tests/hot_reload/call_deleted_class_function/main.0.dart b/tests/hot_reload/call_deleted_class_function/main.0.dart new file mode 100644 index 00000000000..3f8bf9d7ea8 --- /dev/null +++ b/tests/hot_reload/call_deleted_class_function/main.0.dart @@ -0,0 +1,31 @@ +// 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/13f5fc6b168d8b6e5843d17fb9ba77f1343a7dfe/runtime/vm/isolate_reload_test.cc#L2980 + +var retained; + +class C { + static deleted() { + return 'hello'; + } +} + +helper() { + retained = () => C.deleted(); + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} diff --git a/tests/hot_reload/call_deleted_class_function/main.1.dart b/tests/hot_reload/call_deleted_class_function/main.1.dart new file mode 100644 index 00000000000..f3e34be78a6 --- /dev/null +++ b/tests/hot_reload/call_deleted_class_function/main.1.dart @@ -0,0 +1,42 @@ +// 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/13f5fc6b168d8b6e5843d17fb9ba77f1343a7dfe/runtime/vm/isolate_reload_test.cc#L2980 + +var retained; +helper() { + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} + +/** DIFF **/ +/* + // https://github.com/dart-lang/sdk/blob/13f5fc6b168d8b6e5843d17fb9ba77f1343a7dfe/runtime/vm/isolate_reload_test.cc#L2980 + + var retained; +- +-class C { +- static deleted() { +- return 'hello'; +- } +-} +- + helper() { +- retained = () => C.deleted(); + return retained(); + } + +*/ diff --git a/tests/hot_reload/call_deleted_class_function_arity_change/main.0.dart b/tests/hot_reload/call_deleted_class_function_arity_change/main.0.dart new file mode 100644 index 00000000000..bfc96e0e683 --- /dev/null +++ b/tests/hot_reload/call_deleted_class_function_arity_change/main.0.dart @@ -0,0 +1,31 @@ +// 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/13f5fc6b168d8b6e5843d17fb9ba77f1343a7dfe/runtime/vm/isolate_reload_test.cc#L3010 + +var retained; + +class C { + static deleted() { + return 'hello'; + } +} + +helper() { + retained = () => C.deleted(); + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} diff --git a/tests/hot_reload/call_deleted_class_function_arity_change/main.1.dart b/tests/hot_reload/call_deleted_class_function_arity_change/main.1.dart new file mode 100644 index 00000000000..ec383cd35f2 --- /dev/null +++ b/tests/hot_reload/call_deleted_class_function_arity_change/main.1.dart @@ -0,0 +1,48 @@ +// 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/13f5fc6b168d8b6e5843d17fb9ba77f1343a7dfe/runtime/vm/isolate_reload_test.cc#L3010 + +var retained; + +class C { + static deleted(newParameter) { + return 'hello'; + } +} + +helper() { + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} + +/** DIFF **/ +/* + var retained; + + class C { +- static deleted() { ++ static deleted(newParameter) { + return 'hello'; + } + } + + helper() { +- retained = () => C.deleted(); + return retained(); + } + +*/ diff --git a/tests/hot_reload/call_deleted_class_function_evaluation_order/main.0.dart b/tests/hot_reload/call_deleted_class_function_evaluation_order/main.0.dart new file mode 100644 index 00000000000..4f61049ebb1 --- /dev/null +++ b/tests/hot_reload/call_deleted_class_function_evaluation_order/main.0.dart @@ -0,0 +1,32 @@ +// 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/13f5fc6b168d8b6e5843d17fb9ba77f1343a7dfe/runtime/vm/isolate_reload_test.cc#L3041 + +var retained; + +first(flag) { + if (flag) throw 'first!'; +} + +class C { + static deleted(_) { + return 'hello'; + } +} + +helper() { + retained = (bool flag) => C.deleted(first(flag)); + return retained(false); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws(helper, (error) => '$error'.contains('first!')); +} diff --git a/tests/hot_reload/call_deleted_class_function_evaluation_order/main.1.dart b/tests/hot_reload/call_deleted_class_function_evaluation_order/main.1.dart new file mode 100644 index 00000000000..c3083873b5a --- /dev/null +++ b/tests/hot_reload/call_deleted_class_function_evaluation_order/main.1.dart @@ -0,0 +1,48 @@ +// 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/13f5fc6b168d8b6e5843d17fb9ba77f1343a7dfe/runtime/vm/isolate_reload_test.cc#L3041 + +var retained; + +first(flag) { + if (flag) throw 'first!'; +} + +class C {} + +helper() { + return retained(true); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws(helper, (error) => '$error'.contains('first!')); +} + +/** DIFF **/ +/* + if (flag) throw 'first!'; + } + +-class C { +- static deleted(_) { +- return 'hello'; +- } +-} ++class C {} + + helper() { +- retained = (bool flag) => C.deleted(first(flag)); +- return retained(false); ++ return retained(true); + } + + Future main() async { +*/ diff --git a/tests/hot_reload/call_deleted_class_generative_constructor/main.0.dart b/tests/hot_reload/call_deleted_class_generative_constructor/main.0.dart new file mode 100644 index 00000000000..b2a5d84a890 --- /dev/null +++ b/tests/hot_reload/call_deleted_class_generative_constructor/main.0.dart @@ -0,0 +1,29 @@ +// 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/c0819ff165a2557e6537700363594f2ddaf2a96e/runtime/vm/isolate_reload_test.cc#L3164 + +var retained; + +class C { + C.deleted(); +} + +helper() { + retained = () => C.deleted().toString(); + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} diff --git a/tests/hot_reload/call_deleted_class_generative_constructor/main.1.dart b/tests/hot_reload/call_deleted_class_generative_constructor/main.1.dart new file mode 100644 index 00000000000..54451d34a00 --- /dev/null +++ b/tests/hot_reload/call_deleted_class_generative_constructor/main.1.dart @@ -0,0 +1,43 @@ +// 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/c0819ff165a2557e6537700363594f2ddaf2a96e/runtime/vm/isolate_reload_test.cc#L3164 + +var retained; + +class C {} + +helper() { + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} + +/** DIFF **/ +/* + + var retained; + +-class C { +- C.deleted(); +-} ++class C {} + + helper() { +- retained = () => C.deleted().toString(); + return retained(); + } + +*/ diff --git a/tests/hot_reload/call_deleted_class_generative_constructor_arity_change/main.0.dart b/tests/hot_reload/call_deleted_class_generative_constructor_arity_change/main.0.dart new file mode 100644 index 00000000000..727e86991e3 --- /dev/null +++ b/tests/hot_reload/call_deleted_class_generative_constructor_arity_change/main.0.dart @@ -0,0 +1,29 @@ +// 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/c0819ff165a2557e6537700363594f2ddaf2a96e/runtime/vm/isolate_reload_test.cc#L3195 + +var retained; + +class C { + C.deleted(); +} + +helper() { + retained = () => C.deleted().toString(); + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} diff --git a/tests/hot_reload/call_deleted_class_generative_constructor_arity_change/main.1.dart b/tests/hot_reload/call_deleted_class_generative_constructor_arity_change/main.1.dart new file mode 100644 index 00000000000..429dae0dfda --- /dev/null +++ b/tests/hot_reload/call_deleted_class_generative_constructor_arity_change/main.1.dart @@ -0,0 +1,44 @@ +// 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/c0819ff165a2557e6537700363594f2ddaf2a96e/runtime/vm/isolate_reload_test.cc#L3195 + +var retained; + +class C { + C.deleted(newParameter); +} + +helper() { + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} + +/** DIFF **/ +/* + var retained; + + class C { +- C.deleted(); ++ C.deleted(newParameter); + } + + helper() { +- retained = () => C.deleted().toString(); + return retained(); + } + +*/ diff --git a/tests/hot_reload/call_deleted_class_generative_constructor_class_deleted/main.0.dart b/tests/hot_reload/call_deleted_class_generative_constructor_class_deleted/main.0.dart new file mode 100644 index 00000000000..540a07e5e5f --- /dev/null +++ b/tests/hot_reload/call_deleted_class_generative_constructor_class_deleted/main.0.dart @@ -0,0 +1,29 @@ +// 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/c0819ff165a2557e6537700363594f2ddaf2a96e/runtime/vm/isolate_reload_test.cc#L3226 + +var retained; + +class C { + C.deleted(); +} + +helper() { + retained = () => C.deleted().toString(); + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} diff --git a/tests/hot_reload/call_deleted_class_generative_constructor_class_deleted/main.1.dart b/tests/hot_reload/call_deleted_class_generative_constructor_class_deleted/main.1.dart new file mode 100644 index 00000000000..b95821397eb --- /dev/null +++ b/tests/hot_reload/call_deleted_class_generative_constructor_class_deleted/main.1.dart @@ -0,0 +1,40 @@ +// 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/c0819ff165a2557e6537700363594f2ddaf2a96e/runtime/vm/isolate_reload_test.cc#L3226 + +var retained; + +helper() { + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} + +/** DIFF **/ +/* + + var retained; + +-class C { +- C.deleted(); +-} +- + helper() { +- retained = () => C.deleted().toString(); + return retained(); + } + +*/ diff --git a/tests/hot_reload/call_deleted_class_getter/main.0.dart b/tests/hot_reload/call_deleted_class_getter/main.0.dart new file mode 100644 index 00000000000..5ab6aa750c9 --- /dev/null +++ b/tests/hot_reload/call_deleted_class_getter/main.0.dart @@ -0,0 +1,31 @@ +// 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/13f5fc6b168d8b6e5843d17fb9ba77f1343a7dfe/runtime/vm/isolate_reload_test.cc#L3073 + +var retained; + +class C { + static get deleted { + return 'hello'; + } +} + +helper() { + retained = () => C.deleted; + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} diff --git a/tests/hot_reload/call_deleted_class_getter/main.1.dart b/tests/hot_reload/call_deleted_class_getter/main.1.dart new file mode 100644 index 00000000000..d6e47e4aab5 --- /dev/null +++ b/tests/hot_reload/call_deleted_class_getter/main.1.dart @@ -0,0 +1,42 @@ +// 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/13f5fc6b168d8b6e5843d17fb9ba77f1343a7dfe/runtime/vm/isolate_reload_test.cc#L3073 + +var retained; + +helper() { + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} + +/** DIFF **/ +/* + + var retained; + +-class C { +- static get deleted { +- return 'hello'; +- } +-} +- + helper() { +- retained = () => C.deleted; + return retained(); + } + +*/ diff --git a/tests/hot_reload/call_deleted_class_setter/main.0.dart b/tests/hot_reload/call_deleted_class_setter/main.0.dart new file mode 100644 index 00000000000..b6f2a4fc259 --- /dev/null +++ b/tests/hot_reload/call_deleted_class_setter/main.0.dart @@ -0,0 +1,29 @@ +// 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/13f5fc6b168d8b6e5843d17fb9ba77f1343a7dfe/runtime/vm/isolate_reload_test.cc#L3103 + +var retained; + +class C { + static set deleted(x) {} +} + +helper() { + retained = () => C.deleted = 'hello'; + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} diff --git a/tests/hot_reload/call_deleted_class_setter/main.1.dart b/tests/hot_reload/call_deleted_class_setter/main.1.dart new file mode 100644 index 00000000000..229e7bd21db --- /dev/null +++ b/tests/hot_reload/call_deleted_class_setter/main.1.dart @@ -0,0 +1,40 @@ +// 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/13f5fc6b168d8b6e5843d17fb9ba77f1343a7dfe/runtime/vm/isolate_reload_test.cc#L3103 + +var retained; + +helper() { + return retained(); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws( + helper, + (error) => '$error'.contains('deleted'), + ); +} + +/** DIFF **/ +/* + + var retained; + +-class C { +- static set deleted(x) {} +-} +- + helper() { +- retained = () => C.deleted = 'hello'; + return retained(); + } + +*/ diff --git a/tests/hot_reload/call_deleted_class_setter_evaluation_order/main.0.dart b/tests/hot_reload/call_deleted_class_setter_evaluation_order/main.0.dart new file mode 100644 index 00000000000..c4ba4e4d64a --- /dev/null +++ b/tests/hot_reload/call_deleted_class_setter_evaluation_order/main.0.dart @@ -0,0 +1,31 @@ +// 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/13f5fc6b168d8b6e5843d17fb9ba77f1343a7dfe/runtime/vm/isolate_reload_test.cc#L3133 + +var retained; + +first(flag) { + if (flag) throw 'first!'; + return 'hello'; +} + +class C { + static set deleted(x) {} +} + +helper() { + retained = (bool flag) => C.deleted = first(flag); + return retained(false); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws(helper, (error) => '$error'.contains('first!')); +} diff --git a/tests/hot_reload/call_deleted_class_setter_evaluation_order/main.1.dart b/tests/hot_reload/call_deleted_class_setter_evaluation_order/main.1.dart new file mode 100644 index 00000000000..0ee1a64a5cf --- /dev/null +++ b/tests/hot_reload/call_deleted_class_setter_evaluation_order/main.1.dart @@ -0,0 +1,44 @@ +// 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/13f5fc6b168d8b6e5843d17fb9ba77f1343a7dfe/runtime/vm/isolate_reload_test.cc#L3133 + +var retained; + +first(flag) { + if (flag) throw 'first!'; + return 'hello'; +} + +helper() { + return retained(true); +} + +Future main() async { + helper(); + await hotReload(); + Expect.throws(helper, (error) => '$error'.contains('first!')); +} + +/** DIFF **/ +/* + return 'hello'; + } + +-class C { +- static set deleted(x) {} +-} +- + helper() { +- retained = (bool flag) => C.deleted = first(flag); +- return retained(false); ++ return retained(true); + } + + Future main() async { +*/