| library; |
| // |
| // Problems in library: |
| // |
| // pkg/front_end/testcases/patterns/records/record_pattern_inside_if_case.dart:32:45: Warning: The null-assert pattern will have no effect because the matched type isn't nullable. |
| // Try replacing the null-assert pattern with its nested pattern. |
| // if (x case (int _, double y, foo: String _!, bar: var _)) { |
| // ^ |
| // |
| import self as self; |
| import "dart:core" as core; |
| |
| static method test1(core::Record x) → dynamic { |
| { |
| final synthesized core::Record #0#0 = x; |
| if(#0#0 is (core::Object?, core::Object?) && #C1 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, core::Object?)}.$1{core::Object?} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0{(core::Object?, core::Object?)}.$2{core::Object?}) { |
| } |
| } |
| { |
| final synthesized core::Record #1#0 = x; |
| if(#1#0 is (core::Object?, {a: core::Object?}) && #C1 =={core::num::==}{(core::Object) → core::bool} #1#0{(core::Object?, {a: core::Object?})}.$1{core::Object?} && #C2 =={core::num::==}{(core::Object) → core::bool} #1#0{(core::Object?, {a: core::Object?})}.a{core::Object?}) { |
| } |
| } |
| { |
| final synthesized core::Record #2#0 = x; |
| if(#2#0 is (core::Object?, {a: core::Object?}) && #C1 =={core::num::==}{(core::Object) → core::bool} #2#0{(core::Object?, {a: core::Object?})}.a{core::Object?} && #C2 =={core::num::==}{(core::Object) → core::bool} #2#0{(core::Object?, {a: core::Object?})}.$1{core::Object?}) { |
| } |
| } |
| { |
| final synthesized core::Record #3#0 = x; |
| if(#3#0 is ({a: core::Object?, b: core::Object?}) && #C1 =={core::num::==}{(core::Object) → core::bool} #3#0{({a: core::Object?, b: core::Object?})}.a{core::Object?} && #C2 =={core::num::==}{(core::Object) → core::bool} #3#0{({a: core::Object?, b: core::Object?})}.b{core::Object?}) { |
| } |
| } |
| { |
| hoisted core::double y; |
| final synthesized core::Record #4#0 = x; |
| late final synthesized core::Object? #4#3 = (#4#0 as{Unchecked} (core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})).$2{core::Object?}; |
| late final synthesized core::Object? #4#4 = (#4#0 as{Unchecked} (core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})).foo{core::Object?}; |
| if(#4#0 is (core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?}) && #4#0{(core::Object?, core::Object?, {bar: core::Object?, foo: core::Object?})}.$1{core::Object?} is core::int && (#4#3 is core::double && (let final dynamic #t1 = y = #4#3{core::double} in true)) && (let final dynamic #t2 = #4#4! in #4#4! is core::String)) { |
| return 0; |
| } |
| else { |
| return 1; |
| } |
| } |
| } |
| static method test2((core::int, core::int) x) → dynamic { |
| { |
| final synthesized(core::int, core::int) #0#0 = x; |
| if(#C1 =={core::num::==}{(core::Object) → core::bool} #0#0.$1{core::int} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.$2{core::int}) { |
| } |
| } |
| } |
| static method test3((core::int, {required a: core::int}) x) → dynamic { |
| { |
| final synthesized(core::int, {required a: core::int}) #0#0 = x; |
| if(#C1 =={core::num::==}{(core::Object) → core::bool} #0#0.$1{core::int} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.a{core::int}) { |
| } |
| } |
| { |
| final synthesized(core::int, {required a: core::int}) #1#0 = x; |
| if(#C1 =={core::num::==}{(core::Object) → core::bool} #1#0.a{core::int} && #C2 =={core::num::==}{(core::Object) → core::bool} #1#0.$1{core::int}) { |
| } |
| } |
| } |
| static method test4(({required a: core::int, required b: core::int}) x) → dynamic { |
| { |
| final synthesized({required a: core::int, required b: core::int}) #0#0 = x; |
| if(#C1 =={core::num::==}{(core::Object) → core::bool} #0#0.a{core::int} && #C2 =={core::num::==}{(core::Object) → core::bool} #0#0.b{core::int}) { |
| } |
| } |
| } |
| static method test5((core::int, core::double, {required bar: dynamic, required foo: core::String}) x) → dynamic { |
| { |
| hoisted core::double y; |
| final synthesized(core::int, core::double, {required bar: dynamic, required foo: core::String}) #0#0 = x; |
| late final synthesized core::double #0#2 = #0#0.$2{core::double}; |
| late final synthesized core::String #0#3 = #0#0.foo{core::String}; |
| if(#0#0.$1{core::int} is core::int && (#0#2 is core::double && (let final dynamic #t3 = y = #0#2 in true)) && (let final dynamic #t4 = #0#3! in #0#3! is core::String)) { |
| return 0; |
| } |
| else { |
| return 1; |
| } |
| } |
| } |
| |
| constants { |
| #C1 = 1 |
| #C2 = 2 |
| } |