Files
sdk/pkg/front_end/testcases/patterns/variable_names.dart.weak.modular.expect
T
Johnni Winther 2528bf8666 [kernel] Add VariableDeclaration.isHoisted
This flag is set when a variable declaration is moved earlier in
order to be available for subsequent code that couldn't contain
its declaration. For instance variables declared in patterns which
needs to be declared before the matching expressions that initialize
them.

TEST=existing expectations tests

Change-Id: I80ab1138f08f725f3e01905c1a57a1483f809328
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291820
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Chloe Stefantsova <cstefantsova@google.com>
2023-03-30 07:13:40 +00:00

92 lines
5.4 KiB
Plaintext

library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/patterns/variable_names.dart:24:23: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
// } else if (x case A(: [1, 2])) { // Error
// ^
//
// pkg/front_end/testcases/patterns/variable_names.dart:26:22: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
// } else if (x case (: [1, 2])) { // Error
// ^
//
import self as self;
import "dart:core" as core;
abstract class A extends core::Object {
synthetic constructor •() → self::A
: super core::Object::•()
;
abstract get foo() → core::int?;
abstract get bar() → core::int;
abstract get baz() → core::int?;
abstract get boz() → core::num;
abstract get qux() → core::bool;
abstract get quux() → core::String;
abstract get foobar() → core::int;
}
static method test(dynamic x, dynamic y, dynamic z) → dynamic {
dynamic qux;
dynamic quux;
{
hoisted core::int foo;
hoisted core::int bar;
hoisted core::int baz;
hoisted core::double boz;
hoisted core::int foobar;
final synthesized dynamic #0#0 = x;
late final synthesized core::int? #0#2 = #0#0{self::A}.{self::A::foo}{core::int?};
late final synthesized core::int? #0#5 = #0#0{self::A}.{self::A::baz}{core::int?};
late final synthesized core::num #0#7 = #0#0{self::A}.{self::A::boz}{core::num};
if(#0#0 is{ForNonNullableByDefault} self::A && (let final dynamic #t1 = #0#2! in let final dynamic #t2 = foo = #0#2! in true) && (let final dynamic #t3 = bar = #0#0{self::A}.{self::A::bar}{core::int} in true) && (!(#0#5 == null) ?{core::bool} let final dynamic #t4 = baz = #0#5{core::int} in true : false) && (let final dynamic #t5 = #0#7 as{ForNonNullableByDefault} core::double in let final dynamic #t6 = boz = #0#7 as{ForNonNullableByDefault} core::double in true) && (let final dynamic #t7 = foobar = #0#0{self::A}.{self::A::foobar}{core::int} in true)) {
return 0;
}
else {
hoisted dynamic foo;
hoisted dynamic bar;
hoisted dynamic baz;
hoisted core::double boz;
hoisted dynamic foobar;
final synthesized dynamic #1#0 = x;
late final synthesized core::Object? #1#2 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.foo{core::Object?};
late final synthesized core::Object? #1#5 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.baz{core::Object?};
late final synthesized core::Object? #1#7 = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.$1{core::Object?};
if(#1#0 is{ForNonNullableByDefault} (core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?}) && (let final dynamic #t8 = #1#2! in let final dynamic #t9 = foo = #1#2! in true) && (let final dynamic #t10 = bar = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.bar{core::Object?} in true) && (!(#1#5 == null) ?{core::bool} let final dynamic #t11 = baz = #1#5 in true : false) && (let final dynamic #t12 = #1#7 as{ForNonNullableByDefault} core::double in let final dynamic #t13 = boz = #1#7 as{ForNonNullableByDefault} core::double in true) && (let final dynamic #t14 = foobar = #1#0{(core::Object?, {bar: core::Object?, baz: core::Object?, foo: core::Object?, foobar: core::Object?})}.foobar{core::Object?} in true)) {
return 1;
}
else {
final synthesized dynamic #2#0 = x;
if(#2#0 is{ForNonNullableByDefault} self::A) {
return 2;
}
else {
final synthesized dynamic #3#0 = x;
if(#3#0 is{ForNonNullableByDefault} (core::Object?) && invalid-expression "pkg/front_end/testcases/patterns/variable_names.dart:26:22: Error: The getter name is not specified explicitly, and the pattern is not a variable. Try specifying the getter name explicitly, or using a variable pattern.
} else if (x case (: [1, 2])) { // Error
^") {
return 3;
}
}
}
}
}
block {
dynamic #t15;
dynamic #t16;
final synthesized dynamic #4#0 = y as{TypeError,ForDynamic,ForNonNullableByDefault} self::A;
if(!(#4#0 is{ForNonNullableByDefault} self::A && (let final dynamic #t17 = #t15 = #4#0{self::A}.{self::A::qux}{core::bool} in true) && (let final dynamic #t18 = #t16 = #4#0{self::A}.{self::A::quux}{core::String} in true)))
throw new core::StateError::•("Pattern matching error");
qux = #t15;
quux = #t16;
} =>#4#0;
block {
dynamic #t19;
dynamic #t20;
final synthesized dynamic #5#0 = z as{TypeError,ForDynamic,ForNonNullableByDefault} (dynamic, {quux: dynamic});
if(!(#5#0 is{ForNonNullableByDefault} (core::Object?, {quux: core::Object?}) && (let final dynamic #t21 = #t19 = #5#0{(core::Object?, {quux: core::Object?})}.$1{core::Object?} in true) && (let final dynamic #t22 = #t20 = #5#0{(core::Object?, {quux: core::Object?})}.quux{core::Object?} in true)))
throw new core::StateError::•("Pattern matching error");
qux = #t19;
quux = #t20;
} =>#5#0;
}