library;
import self as self;
import "issue39938_lib.dart" as iss;
import "dart:core" as core;

import "org-dartlang-testcase:///issue39938_lib.dart";

static method main() → dynamic {
  self::expect(true, iss::Extension|+(true, true));
  self::expect(true, iss::Extension|+(true, false));
  self::expect(true, iss::Extension|+(false, true));
  self::expect(false, iss::Extension|+(false, false));
  self::expect(true, iss::Extension|+(true, true));
  self::expect(true, iss::Extension|+(true, false));
  self::expect(true, iss::Extension|+(false, true));
  self::expect(false, iss::Extension|+(false, false));
}
static method expect(dynamic expected, dynamic actual) → dynamic {
  if(!(expected =={core::Object::==}{(core::Object) → core::bool} actual))
    throw "Expected ${expected}, actual ${actual}.";
}

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

extension Extension on core::bool {
  operator + = iss::Extension|+;
}
static extension-member method Extension|+(lowered final core::bool #this, core::bool other) → core::bool
  return #this.{core::bool::|}(other){(core::bool) → core::bool};
