library;
//
// Problems in library:
//
// pkg/front_end/testcases/patterns/relational_assignable.dart:10:7: Error: Constant evaluation error:
//     > s => 1, // Error: The implicit cast to num is statically known to fail.
//       ^
// pkg/front_end/testcases/patterns/relational_assignable.dart:10:7: Context: Expected constant '""' to be of type 'num', but was of type 'String'.
//     > s => 1, // Error: The implicit cast to num is statically known to fail.
//       ^
// pkg/front_end/testcases/patterns/relational_assignable.dart:10:5: Context: While analyzing:
//     > s => 1, // Error: The implicit cast to num is statically known to fail.
//     ^
//
import self as self;
import "dart:core" as core;

static method method1(core::int i) → dynamic {
  return block {
    core::int #t1;
    final synthesized core::int #0#0 = i;
    final const synthesized dynamic #0#3 = invalid-expression "Expected constant '\"\"' to be of type 'num', but was of type 'String'.";
    #L1:
    {
      {
        if(#0#0.{core::num::<}(#C1 as core::num){(core::num) → core::bool}) {
          #t1 = 0;
          break #L1;
        }
      }
      {
        if(#0#0.{core::num::>}(invalid-expression "Expected constant '\"\"' to be of type 'num', but was of type 'String'." as{Unchecked} core::num){(core::num) → core::bool}) {
          #t1 = 1;
          break #L1;
        }
      }
      {
        if(true) {
          #t1 = 2;
          break #L1;
        }
      }
    }
  } =>#t1;
}
static method method2(core::int i) → dynamic {
  return block {
    core::int #t2;
    final synthesized core::int #0#0 = i;
    #L2:
    {
      {
        if(#0#0.{core::num::<}(#C1 as core::num){(core::num) → core::bool}) {
          #t2 = 0;
          break #L2;
        }
      }
      {
        if(#0#0.{core::num::>}(#C2 as core::num){(core::num) → core::bool}) {
          #t2 = 1;
          break #L2;
        }
      }
      {
        if(true) {
          #t2 = 2;
          break #L2;
        }
      }
    }
  } =>#t2;
}

constants  {
  #C1 = 0
  #C2 = 3.14
}

Extra constant evaluation status:
Evaluated: AsExpression @ org-dartlang-testcase:///relational_assignable.dart:9:5 -> IntConstant(0)
Evaluated: AsExpression @ org-dartlang-testcase:///relational_assignable.dart:19:5 -> IntConstant(0)
Evaluated: AsExpression @ org-dartlang-testcase:///relational_assignable.dart:20:5 -> DoubleConstant(3.14)
Extra constant evaluation: evaluated: 24, effectively constant: 3
