blob: 895c644dcb35409d71ab59e612df539199fed038 [file] [log] [blame]
library test;
//
// Problems in library:
//
// pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:90:74: Error: A value of type 'int' can't be assigned to a variable of type 'double'.
// t /*@target=Test.[]*/ /*@target=Test.[]=*/ ['x'] /*@target=num.+*/ +=
// ^
//
// pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:102:25: Error: A value of type 'int' can't be assigned to a variable of type 'double'.
// /*@target=num.+*/ ++t /*@target=Test.[]*/ /*@target=Test.[]=*/ ['x'];
// ^
//
// pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:105:74: Error: A value of type 'int' can't be assigned to a variable of type 'double'.
// t /*@target=Test.[]*/ /*@target=Test.[]=*/ ['x'] /*@target=num.+*/ ++;
// ^
//
// pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:211:77: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
// t /*@target=Test.[]*/ /*@target=Test.[]=*/ ['x'] /*@target=double.+*/ +=
// ^
//
// pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:215:77: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
// t /*@target=Test.[]*/ /*@target=Test.[]=*/ ['x'] /*@target=double.+*/ +=
// ^
//
// pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:219:28: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
// /*@target=double.+*/ ++t
// ^
//
// pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:223:77: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
// t /*@target=Test.[]*/ /*@target=Test.[]=*/ ['x'] /*@target=double.+*/ ++;
// ^
//
import self as self;
import "dart:core" as core;
abstract class Test<T extends core::Object* = dynamic, U extends core::Object* = dynamic> extends core::Object {
synthetic constructor •() self::Test<self::Test::T*, self::Test::U*>*
: super core::Object::•()
;
abstract operator [](core::String* s) self::Test::T*;
abstract operator []=(core::String* s, covariant-by-class self::Test::U* v) void;
abstract member-signature get _identityHashCode() core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) core::bool*; -> core::Object::==
abstract member-signature get hashCode() core::int*; -> core::Object::hashCode
abstract member-signature method toString() core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() core::Type*; -> core::Object::runtimeType
}
static method getInt() core::int*
return 0;
static method getNum() core::num*
return 0;
static method getDouble() core::double*
return 0.0;
static method test1(self::Test<core::int*, core::int*>* t) void {
core::int* v1 = let final self::Test<core::int*, core::int*>* #t1 = t in let final core::String* #t2 = "x" in let final core::int* #t3 = self::getInt() in let final void #t4 = #t1.{self::Test::[]=}(#t2, #t3){(core::String*, core::int*) →* void} in #t3;
core::num* v2 = let final self::Test<core::int*, core::int*>* #t5 = t in let final core::String* #t6 = "x" in let final core::num* #t7 = self::getNum() as{TypeError} core::int* in let final void #t8 = #t5.{self::Test::[]=}(#t6, #t7){(core::String*, core::int*) →* void} in #t7;
core::int* v4 = let final self::Test<core::int*, core::int*>* #t9 = t in let final core::String* #t10 = "x" in let final core::int* #t11 = #t9.{self::Test::[]}(#t10){(core::String*) →* core::int*} in #t11 == null ?{core::int*} let final core::int* #t12 = self::getInt() in let final void #t13 = #t9.{self::Test::[]=}(#t10, #t12){(core::String*, core::int*) →* void} in #t12 : #t11;
core::num* v5 = let final self::Test<core::int*, core::int*>* #t14 = t in let final core::String* #t15 = "x" in let final core::int* #t16 = #t14.{self::Test::[]}(#t15){(core::String*) →* core::int*} in #t16 == null ?{core::num*} let final core::num* #t17 = self::getNum() as{TypeError} core::int* in let final void #t18 = #t14.{self::Test::[]=}(#t15, #t17){(core::String*, core::int*) →* void} in #t17 : #t16;
core::int* v7 = let final self::Test<core::int*, core::int*>* #t19 = t in let final core::String* #t20 = "x" in let final core::int* #t21 = #t19.{self::Test::[]}(#t20){(core::String*) →* core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*} in let final void #t22 = #t19.{self::Test::[]=}(#t20, #t21){(core::String*, core::int*) →* void} in #t21;
core::num* v8 = let final self::Test<core::int*, core::int*>* #t23 = t in let final core::String* #t24 = "x" in let final core::num* #t25 = #t23.{self::Test::[]}(#t24){(core::String*) →* core::int*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int* in let final void #t26 = #t23.{self::Test::[]=}(#t24, #t25){(core::String*, core::int*) →* void} in #t25;
core::int* v10 = let final self::Test<core::int*, core::int*>* #t27 = t in let final core::String* #t28 = "x" in let final core::int* #t29 = #t27.{self::Test::[]}(#t28){(core::String*) →* core::int*}.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t30 = #t27.{self::Test::[]=}(#t28, #t29){(core::String*, core::int*) →* void} in #t29;
core::int* v11 = let final self::Test<core::int*, core::int*>* #t31 = t in let final core::String* #t32 = "x" in let final core::int* #t33 = #t31.{self::Test::[]}(#t32){(core::String*) →* core::int*} in let final void #t34 = #t31.{self::Test::[]=}(#t32, #t33.{core::num::+}(1){(core::num*) →* core::int*}){(core::String*, core::int*) →* void} in #t33;
}
static method test2(self::Test<core::int*, core::num*>* t) void {
core::int* v1 = let final self::Test<core::int*, core::num*>* #t35 = t in let final core::String* #t36 = "x" in let final core::int* #t37 = self::getInt() in let final void #t38 = #t35.{self::Test::[]=}(#t36, #t37){(core::String*, core::num*) →* void} in #t37;
core::num* v2 = let final self::Test<core::int*, core::num*>* #t39 = t in let final core::String* #t40 = "x" in let final core::num* #t41 = self::getNum() in let final void #t42 = #t39.{self::Test::[]=}(#t40, #t41){(core::String*, core::num*) →* void} in #t41;
core::double* v3 = let final self::Test<core::int*, core::num*>* #t43 = t in let final core::String* #t44 = "x" in let final core::double* #t45 = self::getDouble() in let final void #t46 = #t43.{self::Test::[]=}(#t44, #t45){(core::String*, core::num*) →* void} in #t45;
core::int* v4 = let final self::Test<core::int*, core::num*>* #t47 = t in let final core::String* #t48 = "x" in let final core::int* #t49 = #t47.{self::Test::[]}(#t48){(core::String*) →* core::int*} in #t49 == null ?{core::int*} let final core::int* #t50 = self::getInt() in let final void #t51 = #t47.{self::Test::[]=}(#t48, #t50){(core::String*, core::num*) →* void} in #t50 : #t49;
core::num* v5 = let final self::Test<core::int*, core::num*>* #t52 = t in let final core::String* #t53 = "x" in let final core::int* #t54 = #t52.{self::Test::[]}(#t53){(core::String*) →* core::int*} in #t54 == null ?{core::num*} let final core::num* #t55 = self::getNum() in let final void #t56 = #t52.{self::Test::[]=}(#t53, #t55){(core::String*, core::num*) →* void} in #t55 : #t54;
core::num* v6 = let final self::Test<core::int*, core::num*>* #t57 = t in let final core::String* #t58 = "x" in let final core::int* #t59 = #t57.{self::Test::[]}(#t58){(core::String*) →* core::int*} in #t59 == null ?{core::num*} let final core::double* #t60 = self::getDouble() in let final void #t61 = #t57.{self::Test::[]=}(#t58, #t60){(core::String*, core::num*) →* void} in #t60 : #t59;
core::int* v7 = let final self::Test<core::int*, core::num*>* #t62 = t in let final core::String* #t63 = "x" in let final core::int* #t64 = #t62.{self::Test::[]}(#t63){(core::String*) →* core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*} in let final void #t65 = #t62.{self::Test::[]=}(#t63, #t64){(core::String*, core::num*) →* void} in #t64;
core::num* v8 = let final self::Test<core::int*, core::num*>* #t66 = t in let final core::String* #t67 = "x" in let final core::num* #t68 = #t66.{self::Test::[]}(#t67){(core::String*) →* core::int*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} in let final void #t69 = #t66.{self::Test::[]=}(#t67, #t68){(core::String*, core::num*) →* void} in #t68;
core::double* v9 = let final self::Test<core::int*, core::num*>* #t70 = t in let final core::String* #t71 = "x" in let final core::double* #t72 = #t70.{self::Test::[]}(#t71){(core::String*) →* core::int*}.{core::num::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t73 = #t70.{self::Test::[]=}(#t71, #t72){(core::String*, core::num*) →* void} in #t72;
core::int* v10 = let final self::Test<core::int*, core::num*>* #t74 = t in let final core::String* #t75 = "x" in let final core::int* #t76 = #t74.{self::Test::[]}(#t75){(core::String*) →* core::int*}.{core::num::+}(1){(core::num*) →* core::int*} in let final void #t77 = #t74.{self::Test::[]=}(#t75, #t76){(core::String*, core::num*) →* void} in #t76;
core::int* v11 = let final self::Test<core::int*, core::num*>* #t78 = t in let final core::String* #t79 = "x" in let final core::int* #t80 = #t78.{self::Test::[]}(#t79){(core::String*) →* core::int*} in let final void #t81 = #t78.{self::Test::[]=}(#t79, #t80.{core::num::+}(1){(core::num*) →* core::int*}){(core::String*, core::num*) →* void} in #t80;
}
static method test3(self::Test<core::int*, core::double*>* t) void {
core::num* v2 = let final self::Test<core::int*, core::double*>* #t82 = t in let final core::String* #t83 = "x" in let final core::num* #t84 = self::getNum() as{TypeError} core::double* in let final void #t85 = #t82.{self::Test::[]=}(#t83, #t84){(core::String*, core::double*) →* void} in #t84;
core::double* v3 = let final self::Test<core::int*, core::double*>* #t86 = t in let final core::String* #t87 = "x" in let final core::double* #t88 = self::getDouble() in let final void #t89 = #t86.{self::Test::[]=}(#t87, #t88){(core::String*, core::double*) →* void} in #t88;
core::num* v5 = let final self::Test<core::int*, core::double*>* #t90 = t in let final core::String* #t91 = "x" in let final core::int* #t92 = #t90.{self::Test::[]}(#t91){(core::String*) →* core::int*} in #t92 == null ?{core::num*} let final core::num* #t93 = self::getNum() as{TypeError} core::double* in let final void #t94 = #t90.{self::Test::[]=}(#t91, #t93){(core::String*, core::double*) →* void} in #t93 : #t92;
core::num* v6 = let final self::Test<core::int*, core::double*>* #t95 = t in let final core::String* #t96 = "x" in let final core::int* #t97 = #t95.{self::Test::[]}(#t96){(core::String*) →* core::int*} in #t97 == null ?{core::num*} let final core::double* #t98 = self::getDouble() in let final void #t99 = #t95.{self::Test::[]=}(#t96, #t98){(core::String*, core::double*) →* void} in #t98 : #t97;
core::int* v7 = let final self::Test<core::int*, core::double*>* #t100 = t in let final core::String* #t101 = "x" in let final core::int* #t102 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:90:74: Error: A value of type 'int' can't be assigned to a variable of type 'double'.
t /*@target=Test.[]*/ /*@target=Test.[]=*/ ['x'] /*@target=num.+*/ +=
^" in #t100.{self::Test::[]}(#t101){(core::String*) →* core::int*}.{core::num::+}(self::getInt()){(core::num*) →* core::int*} as{TypeError} core::double* in let final void #t103 = #t100.{self::Test::[]=}(#t101, #t102){(core::String*, core::double*) →* void} in #t102;
core::num* v8 = let final self::Test<core::int*, core::double*>* #t104 = t in let final core::String* #t105 = "x" in let final core::num* #t106 = #t104.{self::Test::[]}(#t105){(core::String*) →* core::int*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t107 = #t104.{self::Test::[]=}(#t105, #t106){(core::String*, core::double*) →* void} in #t106;
core::double* v9 = let final self::Test<core::int*, core::double*>* #t108 = t in let final core::String* #t109 = "x" in let final core::double* #t110 = #t108.{self::Test::[]}(#t109){(core::String*) →* core::int*}.{core::num::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t111 = #t108.{self::Test::[]=}(#t109, #t110){(core::String*, core::double*) →* void} in #t110;
core::int* v10 = let final self::Test<core::int*, core::double*>* #t112 = t in let final core::String* #t113 = "x" in let final core::int* #t114 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:102:25: Error: A value of type 'int' can't be assigned to a variable of type 'double'.
/*@target=num.+*/ ++t /*@target=Test.[]*/ /*@target=Test.[]=*/ ['x'];
^" in #t112.{self::Test::[]}(#t113){(core::String*) →* core::int*}.{core::num::+}(1){(core::num*) →* core::int*} as{TypeError} core::double* in let final void #t115 = #t112.{self::Test::[]=}(#t113, #t114){(core::String*, core::double*) →* void} in #t114;
core::int* v11 = let final self::Test<core::int*, core::double*>* #t116 = t in let final core::String* #t117 = "x" in let final core::int* #t118 = #t116.{self::Test::[]}(#t117){(core::String*) →* core::int*} in let final void #t119 = #t116.{self::Test::[]=}(#t117, invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:105:74: Error: A value of type 'int' can't be assigned to a variable of type 'double'.
t /*@target=Test.[]*/ /*@target=Test.[]=*/ ['x'] /*@target=num.+*/ ++;
^" in #t118.{core::num::+}(1){(core::num*) →* core::int*} as{TypeError} core::double*){(core::String*, core::double*) →* void} in #t118;
}
static method test4(self::Test<core::num*, core::int*>* t) → void {
core::int* v1 = let final self::Test<core::num*, core::int*>* #t120 = t in let final core::String* #t121 = "x" in let final core::int* #t122 = self::getInt() in let final void #t123 = #t120.{self::Test::[]=}(#t121, #t122){(core::String*, core::int*) →* void} in #t122;
core::num* v2 = let final self::Test<core::num*, core::int*>* #t124 = t in let final core::String* #t125 = "x" in let final core::num* #t126 = self::getNum() as{TypeError} core::int* in let final void #t127 = #t124.{self::Test::[]=}(#t125, #t126){(core::String*, core::int*) →* void} in #t126;
core::num* v4 = let final self::Test<core::num*, core::int*>* #t128 = t in let final core::String* #t129 = "x" in let final core::num* #t130 = #t128.{self::Test::[]}(#t129){(core::String*) →* core::num*} in #t130 == null ?{core::num*} let final core::int* #t131 = self::getInt() in let final void #t132 = #t128.{self::Test::[]=}(#t129, #t131){(core::String*, core::int*) →* void} in #t131 : #t130;
core::num* v5 = let final self::Test<core::num*, core::int*>* #t133 = t in let final core::String* #t134 = "x" in let final core::num* #t135 = #t133.{self::Test::[]}(#t134){(core::String*) →* core::num*} in #t135 == null ?{core::num*} let final core::num* #t136 = self::getNum() as{TypeError} core::int* in let final void #t137 = #t133.{self::Test::[]=}(#t134, #t136){(core::String*, core::int*) →* void} in #t136 : #t135;
core::num* v7 = let final self::Test<core::num*, core::int*>* #t138 = t in let final core::String* #t139 = "x" in let final core::num* #t140 = #t138.{self::Test::[]}(#t139){(core::String*) →* core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*} as{TypeError} core::int* in let final void #t141 = #t138.{self::Test::[]=}(#t139, #t140){(core::String*, core::int*) →* void} in #t140;
core::num* v8 = let final self::Test<core::num*, core::int*>* #t142 = t in let final core::String* #t143 = "x" in let final core::num* #t144 = #t142.{self::Test::[]}(#t143){(core::String*) →* core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::int* in let final void #t145 = #t142.{self::Test::[]=}(#t143, #t144){(core::String*, core::int*) →* void} in #t144;
core::num* v10 = let final self::Test<core::num*, core::int*>* #t146 = t in let final core::String* #t147 = "x" in let final core::num* #t148 = #t146.{self::Test::[]}(#t147){(core::String*) →* core::num*}.{core::num::+}(1){(core::num*) →* core::num*} as{TypeError} core::int* in let final void #t149 = #t146.{self::Test::[]=}(#t147, #t148){(core::String*, core::int*) →* void} in #t148;
core::num* v11 = let final self::Test<core::num*, core::int*>* #t150 = t in let final core::String* #t151 = "x" in let final core::num* #t152 = #t150.{self::Test::[]}(#t151){(core::String*) →* core::num*} in let final void #t153 = #t150.{self::Test::[]=}(#t151, #t152.{core::num::+}(1){(core::num*) →* core::num*} as{TypeError} core::int*){(core::String*, core::int*) →* void} in #t152;
}
static method test5(self::Test<core::num*, core::num*>* t) → void {
core::int* v1 = let final self::Test<core::num*, core::num*>* #t154 = t in let final core::String* #t155 = "x" in let final core::int* #t156 = self::getInt() in let final void #t157 = #t154.{self::Test::[]=}(#t155, #t156){(core::String*, core::num*) →* void} in #t156;
core::num* v2 = let final self::Test<core::num*, core::num*>* #t158 = t in let final core::String* #t159 = "x" in let final core::num* #t160 = self::getNum() in let final void #t161 = #t158.{self::Test::[]=}(#t159, #t160){(core::String*, core::num*) →* void} in #t160;
core::double* v3 = let final self::Test<core::num*, core::num*>* #t162 = t in let final core::String* #t163 = "x" in let final core::double* #t164 = self::getDouble() in let final void #t165 = #t162.{self::Test::[]=}(#t163, #t164){(core::String*, core::num*) →* void} in #t164;
core::num* v4 = let final self::Test<core::num*, core::num*>* #t166 = t in let final core::String* #t167 = "x" in let final core::num* #t168 = #t166.{self::Test::[]}(#t167){(core::String*) →* core::num*} in #t168 == null ?{core::num*} let final core::int* #t169 = self::getInt() in let final void #t170 = #t166.{self::Test::[]=}(#t167, #t169){(core::String*, core::num*) →* void} in #t169 : #t168;
core::num* v5 = let final self::Test<core::num*, core::num*>* #t171 = t in let final core::String* #t172 = "x" in let final core::num* #t173 = #t171.{self::Test::[]}(#t172){(core::String*) →* core::num*} in #t173 == null ?{core::num*} let final core::num* #t174 = self::getNum() in let final void #t175 = #t171.{self::Test::[]=}(#t172, #t174){(core::String*, core::num*) →* void} in #t174 : #t173;
core::num* v6 = let final self::Test<core::num*, core::num*>* #t176 = t in let final core::String* #t177 = "x" in let final core::num* #t178 = #t176.{self::Test::[]}(#t177){(core::String*) →* core::num*} in #t178 == null ?{core::num*} let final core::double* #t179 = self::getDouble() in let final void #t180 = #t176.{self::Test::[]=}(#t177, #t179){(core::String*, core::num*) →* void} in #t179 : #t178;
core::num* v7 = let final self::Test<core::num*, core::num*>* #t181 = t in let final core::String* #t182 = "x" in let final core::num* #t183 = #t181.{self::Test::[]}(#t182){(core::String*) →* core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*} in let final void #t184 = #t181.{self::Test::[]=}(#t182, #t183){(core::String*, core::num*) →* void} in #t183;
core::num* v8 = let final self::Test<core::num*, core::num*>* #t185 = t in let final core::String* #t186 = "x" in let final core::num* #t187 = #t185.{self::Test::[]}(#t186){(core::String*) →* core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} in let final void #t188 = #t185.{self::Test::[]=}(#t186, #t187){(core::String*, core::num*) →* void} in #t187;
core::num* v9 = let final self::Test<core::num*, core::num*>* #t189 = t in let final core::String* #t190 = "x" in let final core::num* #t191 = #t189.{self::Test::[]}(#t190){(core::String*) →* core::num*}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*} in let final void #t192 = #t189.{self::Test::[]=}(#t190, #t191){(core::String*, core::num*) →* void} in #t191;
core::num* v10 = let final self::Test<core::num*, core::num*>* #t193 = t in let final core::String* #t194 = "x" in let final core::num* #t195 = #t193.{self::Test::[]}(#t194){(core::String*) →* core::num*}.{core::num::+}(1){(core::num*) →* core::num*} in let final void #t196 = #t193.{self::Test::[]=}(#t194, #t195){(core::String*, core::num*) →* void} in #t195;
core::num* v11 = let final self::Test<core::num*, core::num*>* #t197 = t in let final core::String* #t198 = "x" in let final core::num* #t199 = #t197.{self::Test::[]}(#t198){(core::String*) →* core::num*} in let final void #t200 = #t197.{self::Test::[]=}(#t198, #t199.{core::num::+}(1){(core::num*) →* core::num*}){(core::String*, core::num*) →* void} in #t199;
}
static method test6(self::Test<core::num*, core::double*>* t) → void {
core::num* v2 = let final self::Test<core::num*, core::double*>* #t201 = t in let final core::String* #t202 = "x" in let final core::num* #t203 = self::getNum() as{TypeError} core::double* in let final void #t204 = #t201.{self::Test::[]=}(#t202, #t203){(core::String*, core::double*) →* void} in #t203;
core::double* v3 = let final self::Test<core::num*, core::double*>* #t205 = t in let final core::String* #t206 = "x" in let final core::double* #t207 = self::getDouble() in let final void #t208 = #t205.{self::Test::[]=}(#t206, #t207){(core::String*, core::double*) →* void} in #t207;
core::num* v5 = let final self::Test<core::num*, core::double*>* #t209 = t in let final core::String* #t210 = "x" in let final core::num* #t211 = #t209.{self::Test::[]}(#t210){(core::String*) →* core::num*} in #t211 == null ?{core::num*} let final core::num* #t212 = self::getNum() as{TypeError} core::double* in let final void #t213 = #t209.{self::Test::[]=}(#t210, #t212){(core::String*, core::double*) →* void} in #t212 : #t211;
core::num* v6 = let final self::Test<core::num*, core::double*>* #t214 = t in let final core::String* #t215 = "x" in let final core::num* #t216 = #t214.{self::Test::[]}(#t215){(core::String*) →* core::num*} in #t216 == null ?{core::num*} let final core::double* #t217 = self::getDouble() in let final void #t218 = #t214.{self::Test::[]=}(#t215, #t217){(core::String*, core::double*) →* void} in #t217 : #t216;
core::num* v7 = let final self::Test<core::num*, core::double*>* #t219 = t in let final core::String* #t220 = "x" in let final core::num* #t221 = #t219.{self::Test::[]}(#t220){(core::String*) →* core::num*}.{core::num::+}(self::getInt()){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t222 = #t219.{self::Test::[]=}(#t220, #t221){(core::String*, core::double*) →* void} in #t221;
core::num* v8 = let final self::Test<core::num*, core::double*>* #t223 = t in let final core::String* #t224 = "x" in let final core::num* #t225 = #t223.{self::Test::[]}(#t224){(core::String*) →* core::num*}.{core::num::+}(self::getNum()){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t226 = #t223.{self::Test::[]=}(#t224, #t225){(core::String*, core::double*) →* void} in #t225;
core::num* v9 = let final self::Test<core::num*, core::double*>* #t227 = t in let final core::String* #t228 = "x" in let final core::num* #t229 = #t227.{self::Test::[]}(#t228){(core::String*) →* core::num*}.{core::num::+}(self::getDouble()){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t230 = #t227.{self::Test::[]=}(#t228, #t229){(core::String*, core::double*) →* void} in #t229;
core::num* v10 = let final self::Test<core::num*, core::double*>* #t231 = t in let final core::String* #t232 = "x" in let final core::num* #t233 = #t231.{self::Test::[]}(#t232){(core::String*) →* core::num*}.{core::num::+}(1){(core::num*) →* core::num*} as{TypeError} core::double* in let final void #t234 = #t231.{self::Test::[]=}(#t232, #t233){(core::String*, core::double*) →* void} in #t233;
core::num* v11 = let final self::Test<core::num*, core::double*>* #t235 = t in let final core::String* #t236 = "x" in let final core::num* #t237 = #t235.{self::Test::[]}(#t236){(core::String*) →* core::num*} in let final void #t238 = #t235.{self::Test::[]=}(#t236, #t237.{core::num::+}(1){(core::num*) →* core::num*} as{TypeError} core::double*){(core::String*, core::double*) →* void} in #t237;
}
static method test7(self::Test<core::double*, core::int*>* t) → void {
core::int* v1 = let final self::Test<core::double*, core::int*>* #t239 = t in let final core::String* #t240 = "x" in let final core::int* #t241 = self::getInt() in let final void #t242 = #t239.{self::Test::[]=}(#t240, #t241){(core::String*, core::int*) →* void} in #t241;
core::num* v2 = let final self::Test<core::double*, core::int*>* #t243 = t in let final core::String* #t244 = "x" in let final core::num* #t245 = self::getNum() as{TypeError} core::int* in let final void #t246 = #t243.{self::Test::[]=}(#t244, #t245){(core::String*, core::int*) →* void} in #t245;
core::num* v4 = let final self::Test<core::double*, core::int*>* #t247 = t in let final core::String* #t248 = "x" in let final core::double* #t249 = #t247.{self::Test::[]}(#t248){(core::String*) →* core::double*} in #t249 == null ?{core::num*} let final core::int* #t250 = self::getInt() in let final void #t251 = #t247.{self::Test::[]=}(#t248, #t250){(core::String*, core::int*) →* void} in #t250 : #t249;
core::num* v5 = let final self::Test<core::double*, core::int*>* #t252 = t in let final core::String* #t253 = "x" in let final core::double* #t254 = #t252.{self::Test::[]}(#t253){(core::String*) →* core::double*} in #t254 == null ?{core::num*} let final core::num* #t255 = self::getNum() as{TypeError} core::int* in let final void #t256 = #t252.{self::Test::[]=}(#t253, #t255){(core::String*, core::int*) →* void} in #t255 : #t254;
core::double* v7 = let final self::Test<core::double*, core::int*>* #t257 = t in let final core::String* #t258 = "x" in let final core::double* #t259 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:211:77: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
t /*@target=Test.[]*/ /*@target=Test.[]=*/ ['x'] /*@target=double.+*/ +=
^" in #t257.{self::Test::[]}(#t258){(core::String*) →* core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*} as{TypeError} core::int* in let final void #t260 = #t257.{self::Test::[]=}(#t258, #t259){(core::String*, core::int*) →* void} in #t259;
core::double* v8 = let final self::Test<core::double*, core::int*>* #t261 = t in let final core::String* #t262 = "x" in let final core::double* #t263 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:215:77: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
t /*@target=Test.[]*/ /*@target=Test.[]=*/ ['x'] /*@target=double.+*/ +=
^" in #t261.{self::Test::[]}(#t262){(core::String*) →* core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*} as{TypeError} core::int* in let final void #t264 = #t261.{self::Test::[]=}(#t262, #t263){(core::String*, core::int*) →* void} in #t263;
core::double* v10 = let final self::Test<core::double*, core::int*>* #t265 = t in let final core::String* #t266 = "x" in let final core::double* #t267 = invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:219:28: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
/*@target=double.+*/ ++t
^" in #t265.{self::Test::[]}(#t266){(core::String*) →* core::double*}.{core::double::+}(1){(core::num*) →* core::double*} as{TypeError} core::int* in let final void #t268 = #t265.{self::Test::[]=}(#t266, #t267){(core::String*, core::int*) →* void} in #t267;
core::double* v11 = let final self::Test<core::double*, core::int*>* #t269 = t in let final core::String* #t270 = "x" in let final core::double* #t271 = #t269.{self::Test::[]}(#t270){(core::String*) →* core::double*} in let final void #t272 = #t269.{self::Test::[]=}(#t270, invalid-expression "pkg/front_end/testcases/inference_new/infer_assign_to_index_upwards.dart:223:77: Error: A value of type 'double' can't be assigned to a variable of type 'int'.
t /*@target=Test.[]*/ /*@target=Test.[]=*/ ['x'] /*@target=double.+*/ ++;
^" in #t271.{core::double::+}(1){(core::num*) →* core::double*} as{TypeError} core::int*){(core::String*, core::int*) →* void} in #t271;
}
static method test8(self::Test<core::double*, core::num*>* t) → void {
core::int* v1 = let final self::Test<core::double*, core::num*>* #t273 = t in let final core::String* #t274 = "x" in let final core::int* #t275 = self::getInt() in let final void #t276 = #t273.{self::Test::[]=}(#t274, #t275){(core::String*, core::num*) →* void} in #t275;
core::num* v2 = let final self::Test<core::double*, core::num*>* #t277 = t in let final core::String* #t278 = "x" in let final core::num* #t279 = self::getNum() in let final void #t280 = #t277.{self::Test::[]=}(#t278, #t279){(core::String*, core::num*) →* void} in #t279;
core::double* v3 = let final self::Test<core::double*, core::num*>* #t281 = t in let final core::String* #t282 = "x" in let final core::double* #t283 = self::getDouble() in let final void #t284 = #t281.{self::Test::[]=}(#t282, #t283){(core::String*, core::num*) →* void} in #t283;
core::num* v4 = let final self::Test<core::double*, core::num*>* #t285 = t in let final core::String* #t286 = "x" in let final core::double* #t287 = #t285.{self::Test::[]}(#t286){(core::String*) →* core::double*} in #t287 == null ?{core::num*} let final core::int* #t288 = self::getInt() in let final void #t289 = #t285.{self::Test::[]=}(#t286, #t288){(core::String*, core::num*) →* void} in #t288 : #t287;
core::num* v5 = let final self::Test<core::double*, core::num*>* #t290 = t in let final core::String* #t291 = "x" in let final core::double* #t292 = #t290.{self::Test::[]}(#t291){(core::String*) →* core::double*} in #t292 == null ?{core::num*} let final core::num* #t293 = self::getNum() in let final void #t294 = #t290.{self::Test::[]=}(#t291, #t293){(core::String*, core::num*) →* void} in #t293 : #t292;
core::double* v6 = let final self::Test<core::double*, core::num*>* #t295 = t in let final core::String* #t296 = "x" in let final core::double* #t297 = #t295.{self::Test::[]}(#t296){(core::String*) →* core::double*} in #t297 == null ?{core::double*} let final core::double* #t298 = self::getDouble() in let final void #t299 = #t295.{self::Test::[]=}(#t296, #t298){(core::String*, core::num*) →* void} in #t298 : #t297;
core::double* v7 = let final self::Test<core::double*, core::num*>* #t300 = t in let final core::String* #t301 = "x" in let final core::double* #t302 = #t300.{self::Test::[]}(#t301){(core::String*) →* core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*} in let final void #t303 = #t300.{self::Test::[]=}(#t301, #t302){(core::String*, core::num*) →* void} in #t302;
core::double* v8 = let final self::Test<core::double*, core::num*>* #t304 = t in let final core::String* #t305 = "x" in let final core::double* #t306 = #t304.{self::Test::[]}(#t305){(core::String*) →* core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*} in let final void #t307 = #t304.{self::Test::[]=}(#t305, #t306){(core::String*, core::num*) →* void} in #t306;
core::double* v9 = let final self::Test<core::double*, core::num*>* #t308 = t in let final core::String* #t309 = "x" in let final core::double* #t310 = #t308.{self::Test::[]}(#t309){(core::String*) →* core::double*}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t311 = #t308.{self::Test::[]=}(#t309, #t310){(core::String*, core::num*) →* void} in #t310;
core::double* v10 = let final self::Test<core::double*, core::num*>* #t312 = t in let final core::String* #t313 = "x" in let final core::double* #t314 = #t312.{self::Test::[]}(#t313){(core::String*) →* core::double*}.{core::double::+}(1){(core::num*) →* core::double*} in let final void #t315 = #t312.{self::Test::[]=}(#t313, #t314){(core::String*, core::num*) →* void} in #t314;
core::double* v11 = let final self::Test<core::double*, core::num*>* #t316 = t in let final core::String* #t317 = "x" in let final core::double* #t318 = #t316.{self::Test::[]}(#t317){(core::String*) →* core::double*} in let final void #t319 = #t316.{self::Test::[]=}(#t317, #t318.{core::double::+}(1){(core::num*) →* core::double*}){(core::String*, core::num*) →* void} in #t318;
}
static method test9(self::Test<core::double*, core::double*>* t) → void {
core::num* v2 = let final self::Test<core::double*, core::double*>* #t320 = t in let final core::String* #t321 = "x" in let final core::num* #t322 = self::getNum() as{TypeError} core::double* in let final void #t323 = #t320.{self::Test::[]=}(#t321, #t322){(core::String*, core::double*) →* void} in #t322;
core::double* v3 = let final self::Test<core::double*, core::double*>* #t324 = t in let final core::String* #t325 = "x" in let final core::double* #t326 = self::getDouble() in let final void #t327 = #t324.{self::Test::[]=}(#t325, #t326){(core::String*, core::double*) →* void} in #t326;
core::num* v5 = let final self::Test<core::double*, core::double*>* #t328 = t in let final core::String* #t329 = "x" in let final core::double* #t330 = #t328.{self::Test::[]}(#t329){(core::String*) →* core::double*} in #t330 == null ?{core::num*} let final core::num* #t331 = self::getNum() as{TypeError} core::double* in let final void #t332 = #t328.{self::Test::[]=}(#t329, #t331){(core::String*, core::double*) →* void} in #t331 : #t330;
core::double* v6 = let final self::Test<core::double*, core::double*>* #t333 = t in let final core::String* #t334 = "x" in let final core::double* #t335 = #t333.{self::Test::[]}(#t334){(core::String*) →* core::double*} in #t335 == null ?{core::double*} let final core::double* #t336 = self::getDouble() in let final void #t337 = #t333.{self::Test::[]=}(#t334, #t336){(core::String*, core::double*) →* void} in #t336 : #t335;
core::double* v7 = let final self::Test<core::double*, core::double*>* #t338 = t in let final core::String* #t339 = "x" in let final core::double* #t340 = #t338.{self::Test::[]}(#t339){(core::String*) →* core::double*}.{core::double::+}(self::getInt()){(core::num*) →* core::double*} in let final void #t341 = #t338.{self::Test::[]=}(#t339, #t340){(core::String*, core::double*) →* void} in #t340;
core::double* v8 = let final self::Test<core::double*, core::double*>* #t342 = t in let final core::String* #t343 = "x" in let final core::double* #t344 = #t342.{self::Test::[]}(#t343){(core::String*) →* core::double*}.{core::double::+}(self::getNum()){(core::num*) →* core::double*} in let final void #t345 = #t342.{self::Test::[]=}(#t343, #t344){(core::String*, core::double*) →* void} in #t344;
core::double* v9 = let final self::Test<core::double*, core::double*>* #t346 = t in let final core::String* #t347 = "x" in let final core::double* #t348 = #t346.{self::Test::[]}(#t347){(core::String*) →* core::double*}.{core::double::+}(self::getDouble()){(core::num*) →* core::double*} in let final void #t349 = #t346.{self::Test::[]=}(#t347, #t348){(core::String*, core::double*) →* void} in #t348;
core::double* v10 = let final self::Test<core::double*, core::double*>* #t350 = t in let final core::String* #t351 = "x" in let final core::double* #t352 = #t350.{self::Test::[]}(#t351){(core::String*) →* core::double*}.{core::double::+}(1){(core::num*) →* core::double*} in let final void #t353 = #t350.{self::Test::[]=}(#t351, #t352){(core::String*, core::double*) →* void} in #t352;
core::double* v11 = let final self::Test<core::double*, core::double*>* #t354 = t in let final core::String* #t355 = "x" in let final core::double* #t356 = #t354.{self::Test::[]}(#t355){(core::String*) →* core::double*} in let final void #t357 = #t354.{self::Test::[]=}(#t355, #t356.{core::double::+}(1){(core::num*) →* core::double*}){(core::String*, core::double*) →* void} in #t356;
}
static method main() → dynamic {}