// Copyright (c) 2021, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. // VMOptions= // VMOptions=--use_slow_path import "package:expect/expect.dart"; @pragma("vm:never-inline") dynamic hiddenSmi() { try { throw 42; } catch (e) { return e; } return 0; } @pragma("vm:never-inline") dynamic hiddenMint() { try { throw 0x8000000000000000; } catch (e) { return e; } return 0; } @pragma("vm:never-inline") dynamic hiddenDouble() { try { throw 3.0; } catch (e) { return e; } return 0; } @pragma("vm:never-inline") dynamic hiddenCustom() { try { throw new Custom(); } catch (e) { return e; } return 0; } class Custom { operator <(other) => "lt"; operator >(other) => "gt"; operator <=(other) => "le"; operator >=(other) => "ge"; operator ==(other) => false; } main() { Expect.equals(false, hiddenSmi() < 2); Expect.equals(true, hiddenSmi() > 2); Expect.equals(false, hiddenSmi() <= 2); Expect.equals(true, hiddenSmi() >= 2); Expect.equals(false, hiddenSmi() == 2); Expect.equals(true, hiddenSmi() != 2); Expect.equals(true, hiddenMint() < 2); Expect.equals(false, hiddenMint() > 2); Expect.equals(true, hiddenMint() <= 2); Expect.equals(false, hiddenMint() >= 2); Expect.equals(false, hiddenMint() == 2); Expect.equals(true, hiddenMint() != 2); Expect.equals(false, hiddenDouble() < 2); Expect.equals(true, hiddenDouble() > 2); Expect.equals(false, hiddenDouble() <= 2); Expect.equals(true, hiddenDouble() >= 2); Expect.equals(false, hiddenDouble() == 2); Expect.equals(true, hiddenDouble() != 2); Expect.equals("lt", hiddenCustom() < 2); Expect.equals("gt", hiddenCustom() > 2); Expect.equals("le", hiddenCustom() <= 2); Expect.equals("ge", hiddenCustom() >= 2); Expect.equals(false, hiddenCustom() == 2); Expect.equals(true, hiddenCustom() != 2); }