blob: 19c64752aaf1148262f10ab064bd51551a4144c4 [file] [log] [blame]
/*
REQUIRED_ARGS: -de
TEST_OUTPUT:
---
fail_compilation/dep_d1_ops.d(105): Error: `opAdd` is obsolete. Use `opBinary(string op)(...) if (op == "+")` instead.
fail_compilation/dep_d1_ops.d(106): Error: `opAdd_r` is obsolete. Use `opBinaryRight(string op)(...) if (op == "+")` instead.
fail_compilation/dep_d1_ops.d(107): Error: `opSub` is obsolete. Use `opBinary(string op)(...) if (op == "-")` instead.
fail_compilation/dep_d1_ops.d(108): Error: `opSub_r` is obsolete. Use `opBinaryRight(string op)(...) if (op == "-")` instead.
fail_compilation/dep_d1_ops.d(109): Error: `opMul` is obsolete. Use `opBinary(string op)(...) if (op == "*")` instead.
fail_compilation/dep_d1_ops.d(110): Error: `opMul_r` is obsolete. Use `opBinaryRight(string op)(...) if (op == "*")` instead.
fail_compilation/dep_d1_ops.d(111): Error: `opDiv` is obsolete. Use `opBinary(string op)(...) if (op == "/")` instead.
fail_compilation/dep_d1_ops.d(112): Error: `opDiv_r` is obsolete. Use `opBinaryRight(string op)(...) if (op == "/")` instead.
fail_compilation/dep_d1_ops.d(113): Error: `opMod` is obsolete. Use `opBinary(string op)(...) if (op == "%")` instead.
fail_compilation/dep_d1_ops.d(114): Error: `opMod_r` is obsolete. Use `opBinaryRight(string op)(...) if (op == "%")` instead.
fail_compilation/dep_d1_ops.d(116): Error: `opAnd` is obsolete. Use `opBinary(string op)(...) if (op == "&")` instead.
fail_compilation/dep_d1_ops.d(117): Error: `opOr` is obsolete. Use `opBinary(string op)(...) if (op == "|")` instead.
fail_compilation/dep_d1_ops.d(118): Error: `opXor` is obsolete. Use `opBinary(string op)(...) if (op == "^")` instead.
fail_compilation/dep_d1_ops.d(120): Error: `opShl` is obsolete. Use `opBinary(string op)(...) if (op == "<<")` instead.
fail_compilation/dep_d1_ops.d(121): Error: `opShl_r` is obsolete. Use `opBinaryRight(string op)(...) if (op == "<<")` instead.
fail_compilation/dep_d1_ops.d(122): Error: `opShr` is obsolete. Use `opBinary(string op)(...) if (op == ">>")` instead.
fail_compilation/dep_d1_ops.d(123): Error: `opShr_r` is obsolete. Use `opBinaryRight(string op)(...) if (op == ">>")` instead.
fail_compilation/dep_d1_ops.d(124): Error: `opUShr` is obsolete. Use `opBinary(string op)(...) if (op == ">>>")` instead.
fail_compilation/dep_d1_ops.d(125): Error: `opUShr_r` is obsolete. Use `opBinaryRight(string op)(...) if (op == ">>>")` instead.
fail_compilation/dep_d1_ops.d(127): Error: `opCat` is obsolete. Use `opBinary(string op)(...) if (op == "~")` instead.
fail_compilation/dep_d1_ops.d(128): Error: `opCat_r` is obsolete. Use `opBinaryRight(string op)(...) if (op == "~")` instead.
fail_compilation/dep_d1_ops.d(130): Error: `opNeg` is obsolete. Use `opUnary(string op)() if (op == "-")` instead.
fail_compilation/dep_d1_ops.d(131): Error: `opCom` is obsolete. Use `opUnary(string op)() if (op == "~")` instead.
fail_compilation/dep_d1_ops.d(132): Error: `opPostInc` is obsolete. Use `opUnary(string op)() if (op == "++")` instead.
fail_compilation/dep_d1_ops.d(133): Error: `opPostDec` is obsolete. Use `opUnary(string op)() if (op == "--")` instead.
fail_compilation/dep_d1_ops.d(134): Error: `opStar` is obsolete. Use `opUnary(string op)() if (op == "*")` instead.
fail_compilation/dep_d1_ops.d(136): Error: `opIn` is obsolete. Use `opBinary(string op)(...) if (op == "in")` instead.
fail_compilation/dep_d1_ops.d(137): Error: `opIn_r` is obsolete. Use `opBinaryRight(string op)(...) if (op == "in")` instead.
fail_compilation/dep_d1_ops.d(139): Error: `opAddAssign` is obsolete. Use `opOpAssign(string op)(...) if (op == "+")` instead.
fail_compilation/dep_d1_ops.d(140): Error: `opSubAssign` is obsolete. Use `opOpAssign(string op)(...) if (op == "-")` instead.
fail_compilation/dep_d1_ops.d(141): Error: `opMulAssign` is obsolete. Use `opOpAssign(string op)(...) if (op == "*")` instead.
fail_compilation/dep_d1_ops.d(142): Error: `opDivAssign` is obsolete. Use `opOpAssign(string op)(...) if (op == "/")` instead.
fail_compilation/dep_d1_ops.d(143): Error: `opModAssign` is obsolete. Use `opOpAssign(string op)(...) if (op == "%")` instead.
fail_compilation/dep_d1_ops.d(144): Error: `opAndAssign` is obsolete. Use `opOpAssign(string op)(...) if (op == "&")` instead.
fail_compilation/dep_d1_ops.d(145): Error: `opOrAssign` is obsolete. Use `opOpAssign(string op)(...) if (op == "|")` instead.
fail_compilation/dep_d1_ops.d(146): Error: `opXorAssign` is obsolete. Use `opOpAssign(string op)(...) if (op == "^")` instead.
fail_compilation/dep_d1_ops.d(147): Error: `opShlAssign` is obsolete. Use `opOpAssign(string op)(...) if (op == "<<")` instead.
fail_compilation/dep_d1_ops.d(148): Error: `opShrAssign` is obsolete. Use `opOpAssign(string op)(...) if (op == ">>")` instead.
fail_compilation/dep_d1_ops.d(149): Error: `opUShrAssign` is obsolete. Use `opOpAssign(string op)(...) if (op == ">>>")` instead.
fail_compilation/dep_d1_ops.d(150): Error: `opCatAssign` is obsolete. Use `opOpAssign(string op)(...) if (op == "~")` instead.
fail_compilation/dep_d1_ops.d(158): Error: `opCom` is obsolete. Use `opUnary(string op)() if (op == "~")` instead.
---
*/
#line 50
struct S
{
int opAdd(int i) { return 0; }
int opAdd_r(int i) { return 0; }
int opSub(int i) { return 0; }
int opSub_r(int i) { return 0; }
int opMul(int i) { return 0; }
int opMul_r(int i) { return 0; }
int opDiv(int i) { return 0; }
int opDiv_r(int i) { return 0; }
int opMod(int i) { return 0; }
int opMod_r(int i) { return 0; }
int opAnd(int i) { return 0; }
int opOr(int i) { return 0; }
int opXor(int i) { return 0; }
int opShl(int i) { return 0; }
int opShl_r(int i) { return 0; }
int opShr(int i) { return 0; }
int opShr_r(int i) { return 0; }
int opUShr(int i) { return 0; }
int opUShr_r(int i) { return 0; }
int opCat(int i) { return 0; }
int opCat_r(int i) { return 0; }
int opNeg() { return 0; }
int opCom() { return 0; }
int opPostInc() { return 0; }
int opPostDec() { return 0; }
int opStar() { return 0; }
int opIn(int i) { return 0; }
int opIn_r(int i) { return 0; }
int opAddAssign(int i) { return 0; }
int opSubAssign(int i) { return 0; }
int opMulAssign(int i) { return 0; }
int opDivAssign(int i) { return 0; }
int opModAssign(int i) { return 0; }
int opAndAssign(int i) { return 0; }
int opOrAssign(int i) { return 0; }
int opXorAssign(int i) { return 0; }
int opShlAssign(int i) { return 0; }
int opShrAssign(int i) { return 0; }
int opUShrAssign(int i) { return 0; }
int opCatAssign(int i) { return 0; }
}
void main()
{
S s;
int i;
i = s + 1;
i = 1 + s;
i = s - 1;
i = 1 - s;
i = s * 1;
i = 1 * s;
i = s / 1;
i = 1 / s;
i = s % 1;
i = 1 % s;
i = s & 1;
i = s | 1;
i = s ^ 1;
i = s << 1;
i = 1 << s;
i = s >> 1;
i = 1 >> s;
i = s >>> 1;
i = 1 >>> s;
i = s ~ 1;
i = 1 ~ s;
i = -s;
i = ~s;
s++;
s--;
i = *s;
i = s in 1;
i = 1 in s;
s += 1;
s -= 1;
s *= 1;
s /= 1;
s %= 1;
s &= 1;
s |= 1;
s ^= 1;
s <<= 1;
s >>= 1;
s >>>= 1;
s ~= 1;
scope nd = new NoDeprecation;
assert((42 in nd) == 0);
assert((nd in 42) == 0);
assert((nd ~ 42) == 0);
assert((42 ~ nd) == 0);
~nd;
}
/// See https://github.com/dlang/dmd/pull/10716
class NoDeprecation
{
int opIn(int i) { return 0; }
int opIn_r(int i) { return 0; }
int opCat(int i) { return 0; }
int opCat_r(int i) { return 0; }
/// This is considered because there is no `opUnary`
/// However, the other overloads (`opBinary` / `opBinaryRight`)
/// means that other operator overloads would not be considered.
int opCom() { return 0; }
int opBinary(string op)(int arg)
if (op == "in" || op == "~")
{
static if (op == "in")
return this.opIn(arg);
else static if (op == "~")
return this.opCat(arg);
}
int opBinaryRight(string op)(int arg)
if (op == "in" || op == "~")
{
static if (op == "in")
return this.opIn_r(arg);
else static if (op == "~")
return this.opCat_r(arg);
}
}