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 {
  const dynamic d = #C1;
  const dynamic s = #C2;
  return block {
    core::int #t1;
    final synthesized core::int #0#0 = i;
    final const synthesized dynamic #0#1 = #C1;
    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 core::num){(core::num) → core::bool}) {
          #t1 = 1;
          break #L1;
        }
      }
      {
        if(true) {
          #t1 = 2;
          break #L1;
        }
      }
    }
  } =>#t1;
}
static method method2(core::int i) → dynamic {
  const dynamic d = #C1;
  const dynamic p = #C3;
  return block {
    core::int #t2;
    final synthesized core::int #0#0 = i;
    final const synthesized dynamic #0#1 = #C1;
    final const synthesized dynamic #0#3 = #C3;
    #L2:
    {
      {
        if(#0#0.{core::num::<}(#C1 as core::num){(core::num) → core::bool}) {
          #t2 = 0;
          break #L2;
        }
      }
      {
        if(#0#0.{core::num::>}(#C3 as core::num){(core::num) → core::bool}) {
          #t2 = 1;
          break #L2;
        }
      }
      {
        if(true) {
          #t2 = 2;
          break #L2;
        }
      }
    }
  } =>#t2;
}

constants  {
  #C1 = 0
  #C2 = ""
  #C3 = 3.14
}
