library test;
import self as self;
import "dart:core" as core;

typedef FunctionReturningNum = () →* core::num*;
static method test() → dynamic {
  core::int* i = 1;
  core::Object* o = 1;
  () →* core::num* a = () → core::int* => i;
  () →* core::num* b = () → core::num* => o as{TypeError} core::num*;
  () →* core::num* c = () → core::int* {
    return i;
  };
  () →* core::num* d = () → core::num* {
    return o as{TypeError} core::num*;
  };
}
static method main() → dynamic {}
