| library; |
| // |
| // Problems in library: |
| // |
| // pkg/front_end/testcases/general/pure_index_expressions.dart:26:15: Error: Operator '+' cannot be called on 'Class?' because it is potentially null. |
| // - 'Class' is from 'pkg/front_end/testcases/general/pure_index_expressions.dart'. |
| // map[this] += this; |
| // ^ |
| // |
| // pkg/front_end/testcases/general/pure_index_expressions.dart:27:15: Error: Operator '+' cannot be called on 'Class?' because it is potentially null. |
| // - 'Class' is from 'pkg/front_end/testcases/general/pure_index_expressions.dart'. |
| // map[self] += self; |
| // ^ |
| // |
| // pkg/front_end/testcases/general/pure_index_expressions.dart:42:19: Error: Operator '+' cannot be called on 'Class?' because it is potentially null. |
| // - 'Class' is from 'pkg/front_end/testcases/general/pure_index_expressions.dart'. |
| // v = map[this] += this; |
| // ^ |
| // |
| // pkg/front_end/testcases/general/pure_index_expressions.dart:43:19: Error: Operator '+' cannot be called on 'Class?' because it is potentially null. |
| // - 'Class' is from 'pkg/front_end/testcases/general/pure_index_expressions.dart'. |
| // v = map[self] += self; |
| // ^ |
| // |
| import self as self; |
| import "dart:core" as core; |
| |
| class Class extends core::Object { |
| synthetic constructor •() → self::Class |
| : super core::Object::•() |
| ; |
| operator [](self::Class cls) → self::Class |
| return new self::Class::•(); |
| operator []=(self::Class cls, self::Class value) → void {} |
| operator +(self::Class cls) → self::Class |
| return cls; |
| method indexGetSetForEffect(core::Map<self::Class, self::Class> map) → void { |
| final self::Class self = this; |
| let final core::Map<self::Class, self::Class> #t1 = map in #t1.{core::Map::[]}(this){(core::Object?) → self::Class?} == null ?{self::Class?} #t1.{core::Map::[]=}(this, this){(self::Class, self::Class) → void} : null; |
| let final core::Map<self::Class, self::Class> #t2 = map in #t2.{core::Map::[]}(self){(core::Object?) → self::Class?} == null ?{self::Class?} #t2.{core::Map::[]=}(self, self){(self::Class, self::Class) → void} : null; |
| map.{core::Map::[]=}(this, this){(self::Class, self::Class) → void}; |
| map.{core::Map::[]=}(self, self){(self::Class, self::Class) → void}; |
| map.{core::Map::[]}(this){(core::Object?) → self::Class?}; |
| map.{core::Map::[]}(self){(core::Object?) → self::Class?}; |
| let final core::Map<self::Class, self::Class> #t3 = map in #t3.{core::Map::[]=}(this, invalid-expression "pkg/front_end/testcases/general/pure_index_expressions.dart:26:15: Error: Operator '+' cannot be called on 'Class?' because it is potentially null. |
| - 'Class' is from 'pkg/front_end/testcases/general/pure_index_expressions.dart'. |
| map[this] += this; |
| ^" in #t3.{core::Map::[]}(this){(core::Object?) → self::Class?}.{self::Class::+}(this){(self::Class) → self::Class}){(self::Class, self::Class) → void}; |
| let final core::Map<self::Class, self::Class> #t4 = map in #t4.{core::Map::[]=}(self, invalid-expression "pkg/front_end/testcases/general/pure_index_expressions.dart:27:15: Error: Operator '+' cannot be called on 'Class?' because it is potentially null. |
| - 'Class' is from 'pkg/front_end/testcases/general/pure_index_expressions.dart'. |
| map[self] += self; |
| ^" in #t4.{core::Map::[]}(self){(core::Object?) → self::Class?}.{self::Class::+}(self){(self::Class) → self::Class}){(self::Class, self::Class) → void}; |
| } |
| method indexGetSetForValue(core::Map<self::Class, self::Class> map) → void { |
| final self::Class self = this; |
| dynamic v; |
| v = let final core::Map<self::Class, self::Class> #t5 = map in let final self::Class? #t6 = #t5.{core::Map::[]}(this){(core::Object?) → self::Class?} in #t6 == null ?{self::Class} let final void #t7 = #t5.{core::Map::[]=}(this, this){(self::Class, self::Class) → void} in this : #t6{self::Class}; |
| v = let final core::Map<self::Class, self::Class> #t8 = map in let final self::Class? #t9 = #t8.{core::Map::[]}(self){(core::Object?) → self::Class?} in #t9 == null ?{self::Class} let final void #t10 = #t8.{core::Map::[]=}(self, self){(self::Class, self::Class) → void} in self : #t9{self::Class}; |
| v = let final core::Map<self::Class, self::Class> #t11 = map in let final void #t12 = #t11.{core::Map::[]=}(this, this){(self::Class, self::Class) → void} in this; |
| v = let final core::Map<self::Class, self::Class> #t13 = map in let final void #t14 = #t13.{core::Map::[]=}(self, self){(self::Class, self::Class) → void} in self; |
| v = map.{core::Map::[]}(this){(core::Object?) → self::Class?}; |
| v = map.{core::Map::[]}(self){(core::Object?) → self::Class?}; |
| v = let final core::Map<self::Class, self::Class> #t15 = map in let final self::Class #t16 = invalid-expression "pkg/front_end/testcases/general/pure_index_expressions.dart:42:19: Error: Operator '+' cannot be called on 'Class?' because it is potentially null. |
| - 'Class' is from 'pkg/front_end/testcases/general/pure_index_expressions.dart'. |
| v = map[this] += this; |
| ^" in #t15.{core::Map::[]}(this){(core::Object?) → self::Class?}.{self::Class::+}(this){(self::Class) → self::Class} in let final void #t17 = #t15.{core::Map::[]=}(this, #t16){(self::Class, self::Class) → void} in #t16; |
| v = let final core::Map<self::Class, self::Class> #t18 = map in let final self::Class #t19 = invalid-expression "pkg/front_end/testcases/general/pure_index_expressions.dart:43:19: Error: Operator '+' cannot be called on 'Class?' because it is potentially null. |
| - 'Class' is from 'pkg/front_end/testcases/general/pure_index_expressions.dart'. |
| v = map[self] += self; |
| ^" in #t18.{core::Map::[]}(self){(core::Object?) → self::Class?}.{self::Class::+}(self){(self::Class) → self::Class} in let final void #t20 = #t18.{core::Map::[]=}(self, #t19){(self::Class, self::Class) → void} in #t19; |
| } |
| method implicitExtensionGetSetForEffect(core::int i) → void { |
| final self::Class self = this; |
| let final core::int #t21 = i in self::Extension|[](#t21, this) == null ?{self::Class?} self::Extension|[]=(#t21, this, this) : null; |
| let final core::int #t22 = i in self::Extension|[](#t22, self) == null ?{self::Class?} self::Extension|[]=(#t22, self, self) : null; |
| self::Extension|[]=(i, this, this); |
| self::Extension|[]=(i, self, self); |
| self::Extension|[](i, this); |
| self::Extension|[](i, self); |
| let final core::int #t23 = i in self::Extension|[]=(#t23, this, self::Extension|[](#t23, this).{self::Class::+}(this){(self::Class) → self::Class}); |
| let final core::int #t24 = i in self::Extension|[]=(#t24, self, self::Extension|[](#t24, self).{self::Class::+}(self){(self::Class) → self::Class}); |
| } |
| method implicitExtensionGetSetForValue(core::int i) → void { |
| final self::Class self = this; |
| dynamic v; |
| v = let final core::int #t25 = i in let final self::Class #t26 = self::Extension|[](#t25, this) in #t26 == null ?{self::Class} let final void #t27 = self::Extension|[]=(#t25, this, this) in this : #t26; |
| v = let final core::int #t28 = i in let final self::Class #t29 = self::Extension|[](#t28, self) in #t29 == null ?{self::Class} let final void #t30 = self::Extension|[]=(#t28, self, self) in self : #t29; |
| v = let final core::int #t31 = i in let final void #t32 = self::Extension|[]=(#t31, this, this) in this; |
| v = let final core::int #t33 = i in let final void #t34 = self::Extension|[]=(#t33, self, self) in self; |
| v = self::Extension|[](i, this); |
| v = self::Extension|[](i, self); |
| v = let final core::int #t35 = i in let final self::Class #t36 = self::Extension|[](#t35, this).{self::Class::+}(this){(self::Class) → self::Class} in let final void #t37 = self::Extension|[]=(#t35, this, #t36) in #t36; |
| v = let final core::int #t38 = i in let final self::Class #t39 = self::Extension|[](#t38, self).{self::Class::+}(self){(self::Class) → self::Class} in let final void #t40 = self::Extension|[]=(#t38, self, #t39) in #t39; |
| } |
| method explicitExtensionGetSetForEffect(core::int i) → void { |
| final self::Class self = this; |
| let final core::int #t41 = i in self::Extension|[](#t41, this) == null ?{self::Class?} self::Extension|[]=(#t41, this, this) : null; |
| let final core::int #t42 = i in self::Extension|[](#t42, self) == null ?{self::Class?} self::Extension|[]=(#t42, self, self) : null; |
| self::Extension|[]=(i, this, this); |
| self::Extension|[]=(i, self, self); |
| self::Extension|[](i, this); |
| self::Extension|[](i, self); |
| let final core::int #t43 = i in self::Extension|[]=(#t43, this, self::Extension|[](#t43, this).{self::Class::+}(this){(self::Class) → self::Class}); |
| let final core::int #t44 = i in self::Extension|[]=(#t44, self, self::Extension|[](#t44, self).{self::Class::+}(self){(self::Class) → self::Class}); |
| } |
| method explicitExtensionGetSetForValue(core::int i) → void { |
| final self::Class self = this; |
| dynamic v; |
| v = let final core::int #t45 = i in let final self::Class #t46 = self::Extension|[](#t45, this) in #t46 == null ?{self::Class} let final void #t47 = self::Extension|[]=(#t45, this, this) in this : #t46; |
| v = let final core::int #t48 = i in let final self::Class #t49 = self::Extension|[](#t48, self) in #t49 == null ?{self::Class} let final void #t50 = self::Extension|[]=(#t48, self, self) in self : #t49; |
| v = let final core::int #t51 = i in let final void #t52 = self::Extension|[]=(#t51, this, this) in this; |
| v = let final core::int #t53 = i in let final void #t54 = self::Extension|[]=(#t53, self, self) in self; |
| v = self::Extension|[](i, this); |
| v = self::Extension|[](i, self); |
| v = let final core::int #t55 = i in let final self::Class #t56 = self::Extension|[](#t55, this).{self::Class::+}(this){(self::Class) → self::Class} in let final void #t57 = self::Extension|[]=(#t55, this, #t56) in #t56; |
| v = let final core::int #t58 = i in let final self::Class #t59 = self::Extension|[](#t58, self).{self::Class::+}(self){(self::Class) → self::Class} in let final void #t60 = self::Extension|[]=(#t58, self, #t59) in #t59; |
| } |
| } |
| class Subclass extends self::Class { |
| synthetic constructor •() → self::Subclass |
| : super self::Class::•() |
| ; |
| method superIndexGetSetForEffect() → void { |
| final self::Class self = this; |
| super.{self::Class::[]}(this) == null ?{self::Class?} super.{self::Class::[]=}(this, this) : null; |
| super.{self::Class::[]}(self) == null ?{self::Class?} super.{self::Class::[]=}(self, self) : null; |
| super.{self::Class::[]=}(this, this); |
| super.{self::Class::[]=}(self, self); |
| super.{self::Class::[]}(this); |
| super.{self::Class::[]}(self); |
| super.{self::Class::[]=}(this, super.{self::Class::[]}(this).{self::Class::+}(this){(self::Class) → self::Class}); |
| super.{self::Class::[]=}(self, super.{self::Class::[]}(self).{self::Class::+}(self){(self::Class) → self::Class}); |
| } |
| method superIndexGetSetForValue() → void { |
| final self::Class self = this; |
| dynamic v; |
| v = let final self::Class #t61 = super.{self::Class::[]}(this) in #t61 == null ?{self::Class} let final void #t62 = super.{self::Class::[]=}(this, this) in this : #t61; |
| v = let final self::Class #t63 = super.{self::Class::[]}(self) in #t63 == null ?{self::Class} let final void #t64 = super.{self::Class::[]=}(self, self) in self : #t63; |
| v = let final void #t65 = super.{self::Class::[]=}(this, this) in this; |
| v = let final void #t66 = super.{self::Class::[]=}(self, self) in self; |
| v = super.{self::Class::[]}(this); |
| v = super.{self::Class::[]}(self); |
| v = let final self::Class #t67 = super.{self::Class::[]}(this).{self::Class::+}(this){(self::Class) → self::Class} in let final void #t68 = super.{self::Class::[]=}(this, #t67) in #t67; |
| v = let final self::Class #t69 = super.{self::Class::[]}(self).{self::Class::+}(self){(self::Class) → self::Class} in let final void #t70 = super.{self::Class::[]=}(self, #t69) in #t69; |
| } |
| } |
| class Class2 extends core::Object { |
| synthetic constructor •() → self::Class2 |
| : super core::Object::•() |
| ; |
| operator +(self::Class2 cls) → self::Class2 |
| return cls; |
| method implicitExtensionGetSetForEffect() → void { |
| final self::Class2 self = this; |
| self::Extension2|[](this, this) == null ?{self::Class2?} self::Extension2|[]=(this, this, this) : null; |
| self::Extension2|[](self, self) == null ?{self::Class2?} self::Extension2|[]=(self, self, self) : null; |
| self::Extension2|[]=(this, this, this); |
| self::Extension2|[]=(self, self, self); |
| self::Extension2|[](this, this); |
| self::Extension2|[](self, self); |
| self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2}); |
| self::Extension2|[]=(self, self, self::Extension2|[](self, self).{self::Class2::+}(self){(self::Class2) → self::Class2}); |
| } |
| method implicitExtensionGetSetForValue() → void { |
| final self::Class2 self = this; |
| dynamic v; |
| v = let final self::Class2 #t71 = self::Extension2|[](this, this) in #t71 == null ?{self::Class2} let final void #t72 = self::Extension2|[]=(this, this, this) in this : #t71; |
| v = let final self::Class2 #t73 = self::Extension2|[](self, self) in #t73 == null ?{self::Class2} let final void #t74 = self::Extension2|[]=(self, self, self) in self : #t73; |
| v = let final void #t75 = self::Extension2|[]=(this, this, this) in this; |
| v = let final void #t76 = self::Extension2|[]=(self, self, self) in self; |
| v = self::Extension2|[](this, this); |
| v = self::Extension2|[](self, self); |
| v = let final self::Class2 #t77 = self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2} in let final void #t78 = self::Extension2|[]=(this, this, #t77) in #t77; |
| v = let final self::Class2 #t79 = self::Extension2|[](self, self).{self::Class2::+}(self){(self::Class2) → self::Class2} in let final void #t80 = self::Extension2|[]=(self, self, #t79) in #t79; |
| } |
| method explicitExtensionGetSetForEffect() → void { |
| final self::Class2 self = this; |
| self::Extension2|[](this, this) == null ?{self::Class2?} self::Extension2|[]=(this, this, this) : null; |
| self::Extension2|[](self, self) == null ?{self::Class2?} self::Extension2|[]=(self, self, self) : null; |
| self::Extension2|[]=(this, this, this); |
| self::Extension2|[]=(self, self, self); |
| self::Extension2|[](this, this); |
| self::Extension2|[](self, self); |
| self::Extension2|[]=(this, this, self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2}); |
| self::Extension2|[]=(self, self, self::Extension2|[](self, self).{self::Class2::+}(self){(self::Class2) → self::Class2}); |
| } |
| method explicitExtensionGetSetForValue() → void { |
| final self::Class2 self = this; |
| dynamic v; |
| v = let final self::Class2 #t81 = self::Extension2|[](this, this) in #t81 == null ?{self::Class2} let final void #t82 = self::Extension2|[]=(this, this, this) in this : #t81; |
| v = let final self::Class2 #t83 = self::Extension2|[](self, self) in #t83 == null ?{self::Class2} let final void #t84 = self::Extension2|[]=(self, self, self) in self : #t83; |
| v = let final void #t85 = self::Extension2|[]=(this, this, this) in this; |
| v = let final void #t86 = self::Extension2|[]=(self, self, self) in self; |
| v = self::Extension2|[](this, this); |
| v = self::Extension2|[](self, self); |
| v = let final self::Class2 #t87 = self::Extension2|[](this, this).{self::Class2::+}(this){(self::Class2) → self::Class2} in let final void #t88 = self::Extension2|[]=(this, this, #t87) in #t87; |
| v = let final self::Class2 #t89 = self::Extension2|[](self, self).{self::Class2::+}(self){(self::Class2) → self::Class2} in let final void #t90 = self::Extension2|[]=(self, self, #t89) in #t89; |
| } |
| } |
| extension Extension on core::int { |
| operator [] = self::Extension|[]; |
| operator []= = self::Extension|[]=; |
| } |
| extension Extension2 on self::Class2 { |
| operator [] = self::Extension2|[]; |
| operator []= = self::Extension2|[]=; |
| } |
| static extension-member method Extension|[](lowered final core::int #this, self::Class cls) → self::Class |
| return new self::Class::•(); |
| static extension-member method Extension|[]=(lowered final core::int #this, self::Class cls, self::Class value) → void {} |
| static extension-member method Extension2|[](lowered final self::Class2 #this, self::Class2 cls) → self::Class2 |
| return new self::Class2::•(); |
| static extension-member method Extension2|[]=(lowered final self::Class2 #this, self::Class2 cls, self::Class2 value) → void {} |
| static method main() → dynamic {} |