[cfe] Add test for issue 51012 Closes #51012 Change-Id: I816b32daef41d305107a6fcba47ad3cb371c9a66 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/289903 Commit-Queue: Johnni Winther <johnniwinther@google.com> Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
diff --git a/pkg/front_end/testcases/patterns/issue51012.dart b/pkg/front_end/testcases/patterns/issue51012.dart new file mode 100644 index 0000000..f0bf09a --- /dev/null +++ b/pkg/front_end/testcases/patterns/issue51012.dart
@@ -0,0 +1,22 @@ +// Copyright (c) 2023, 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. + +int count = 0; + +class A { + int get bar { + count++; + print('OK'); + return 42; + } +} + +main() { + var A(bar: _) = A(); + expect(1, count); +} + +expect(expected, actual) { + if (expected != actual) throw 'Expected $expected, actual $actual'; +}
diff --git a/pkg/front_end/testcases/patterns/issue51012.dart.strong.expect b/pkg/front_end/testcases/patterns/issue51012.dart.strong.expect new file mode 100644 index 0000000..f1aa06e --- /dev/null +++ b/pkg/front_end/testcases/patterns/issue51012.dart.strong.expect
@@ -0,0 +1,28 @@ +library /*isNonNullableByDefault*/; +import self as self; +import "dart:core" as core; +import "dart:_internal" as _in; + +class A extends core::Object { + synthetic constructor •() → self::A + : super core::Object::•() + ; + get bar() → core::int { + self::count = self::count.{core::num::+}(1){(core::num) → core::int}; + core::print("OK"); + return 42; + } +} +static field core::int count = 0; +static method main() → dynamic { + { + final synthesized dynamic #0#0 = new self::A::•(); + if(!(let final dynamic #t1 = #0#0{self::A}.{self::A::bar}{core::int} in true)) + throw new _in::ReachabilityError::•(); + } + self::expect(1, self::count); +} +static method expect(dynamic expected, dynamic actual) → dynamic { + if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) + throw "Expected ${expected}, actual ${actual}"; +}
diff --git a/pkg/front_end/testcases/patterns/issue51012.dart.strong.transformed.expect b/pkg/front_end/testcases/patterns/issue51012.dart.strong.transformed.expect new file mode 100644 index 0000000..7f2fdb7 --- /dev/null +++ b/pkg/front_end/testcases/patterns/issue51012.dart.strong.transformed.expect
@@ -0,0 +1,28 @@ +library /*isNonNullableByDefault*/; +import self as self; +import "dart:core" as core; +import "dart:_internal" as _in; + +class A extends core::Object { + synthetic constructor •() → self::A + : super core::Object::•() + ; + get bar() → core::int { + self::count = self::count.{core::num::+}(1){(core::num) → core::int}; + core::print("OK"); + return 42; + } +} +static field core::int count = 0; +static method main() → dynamic { + { + final synthesized dynamic #0#0 = new self::A::•(); + if(!(let final core::int #t1 = #0#0{self::A}.{self::A::bar}{core::int} in true)) + throw new _in::ReachabilityError::•(); + } + self::expect(1, self::count); +} +static method expect(dynamic expected, dynamic actual) → dynamic { + if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) + throw "Expected ${expected}, actual ${actual}"; +}
diff --git a/pkg/front_end/testcases/patterns/issue51012.dart.textual_outline.expect b/pkg/front_end/testcases/patterns/issue51012.dart.textual_outline.expect new file mode 100644 index 0000000..4244514 --- /dev/null +++ b/pkg/front_end/testcases/patterns/issue51012.dart.textual_outline.expect
@@ -0,0 +1,8 @@ +int count = 0; + +class A { + int get bar {} +} + +main() {} +expect(expected, actual) {}
diff --git a/pkg/front_end/testcases/patterns/issue51012.dart.textual_outline_modelled.expect b/pkg/front_end/testcases/patterns/issue51012.dart.textual_outline_modelled.expect new file mode 100644 index 0000000..cda5123 --- /dev/null +++ b/pkg/front_end/testcases/patterns/issue51012.dart.textual_outline_modelled.expect
@@ -0,0 +1,7 @@ +class A { + int get bar {} +} + +expect(expected, actual) {} +int count = 0; +main() {}
diff --git a/pkg/front_end/testcases/patterns/issue51012.dart.weak.expect b/pkg/front_end/testcases/patterns/issue51012.dart.weak.expect new file mode 100644 index 0000000..f1aa06e --- /dev/null +++ b/pkg/front_end/testcases/patterns/issue51012.dart.weak.expect
@@ -0,0 +1,28 @@ +library /*isNonNullableByDefault*/; +import self as self; +import "dart:core" as core; +import "dart:_internal" as _in; + +class A extends core::Object { + synthetic constructor •() → self::A + : super core::Object::•() + ; + get bar() → core::int { + self::count = self::count.{core::num::+}(1){(core::num) → core::int}; + core::print("OK"); + return 42; + } +} +static field core::int count = 0; +static method main() → dynamic { + { + final synthesized dynamic #0#0 = new self::A::•(); + if(!(let final dynamic #t1 = #0#0{self::A}.{self::A::bar}{core::int} in true)) + throw new _in::ReachabilityError::•(); + } + self::expect(1, self::count); +} +static method expect(dynamic expected, dynamic actual) → dynamic { + if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) + throw "Expected ${expected}, actual ${actual}"; +}
diff --git a/pkg/front_end/testcases/patterns/issue51012.dart.weak.modular.expect b/pkg/front_end/testcases/patterns/issue51012.dart.weak.modular.expect new file mode 100644 index 0000000..f1aa06e --- /dev/null +++ b/pkg/front_end/testcases/patterns/issue51012.dart.weak.modular.expect
@@ -0,0 +1,28 @@ +library /*isNonNullableByDefault*/; +import self as self; +import "dart:core" as core; +import "dart:_internal" as _in; + +class A extends core::Object { + synthetic constructor •() → self::A + : super core::Object::•() + ; + get bar() → core::int { + self::count = self::count.{core::num::+}(1){(core::num) → core::int}; + core::print("OK"); + return 42; + } +} +static field core::int count = 0; +static method main() → dynamic { + { + final synthesized dynamic #0#0 = new self::A::•(); + if(!(let final dynamic #t1 = #0#0{self::A}.{self::A::bar}{core::int} in true)) + throw new _in::ReachabilityError::•(); + } + self::expect(1, self::count); +} +static method expect(dynamic expected, dynamic actual) → dynamic { + if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) + throw "Expected ${expected}, actual ${actual}"; +}
diff --git a/pkg/front_end/testcases/patterns/issue51012.dart.weak.outline.expect b/pkg/front_end/testcases/patterns/issue51012.dart.weak.outline.expect new file mode 100644 index 0000000..f48053d --- /dev/null +++ b/pkg/front_end/testcases/patterns/issue51012.dart.weak.outline.expect
@@ -0,0 +1,15 @@ +library /*isNonNullableByDefault*/; +import self as self; +import "dart:core" as core; + +class A extends core::Object { + synthetic constructor •() → self::A + ; + get bar() → core::int + ; +} +static field core::int count; +static method main() → dynamic + ; +static method expect(dynamic expected, dynamic actual) → dynamic + ;
diff --git a/pkg/front_end/testcases/patterns/issue51012.dart.weak.transformed.expect b/pkg/front_end/testcases/patterns/issue51012.dart.weak.transformed.expect new file mode 100644 index 0000000..7f2fdb7 --- /dev/null +++ b/pkg/front_end/testcases/patterns/issue51012.dart.weak.transformed.expect
@@ -0,0 +1,28 @@ +library /*isNonNullableByDefault*/; +import self as self; +import "dart:core" as core; +import "dart:_internal" as _in; + +class A extends core::Object { + synthetic constructor •() → self::A + : super core::Object::•() + ; + get bar() → core::int { + self::count = self::count.{core::num::+}(1){(core::num) → core::int}; + core::print("OK"); + return 42; + } +} +static field core::int count = 0; +static method main() → dynamic { + { + final synthesized dynamic #0#0 = new self::A::•(); + if(!(let final core::int #t1 = #0#0{self::A}.{self::A::bar}{core::int} in true)) + throw new _in::ReachabilityError::•(); + } + self::expect(1, self::count); +} +static method expect(dynamic expected, dynamic actual) → dynamic { + if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual)) + throw "Expected ${expected}, actual ${actual}"; +}