blob: ba930f01a028a20a02fae0c89e0c2377c5721fb0 [file] [log] [blame]
// REQUIRED_ARGS: -o-
/*
TEST_OUTPUT:
---
fail_compilation/fail_opover.d(13): Error: no [] operator overload for type object.Object
fail_compilation/fail_opover.d(17): Error: no [] operator overload for type TestS
---
*/
void test1()
{
Object m;
m[] = error;
struct TestS {}
TestS s;
s[] = error;
}
/*
TEST_OUTPUT:
---
fail_compilation/fail_opover.d(46): Error: no [] operator overload for type S
fail_compilation/fail_opover.d(47): Error: no [] operator overload for type S
fail_compilation/fail_opover.d(48): Error: no [] operator overload for type S
fail_compilation/fail_opover.d(49): Error: no [] operator overload for type S
fail_compilation/fail_opover.d(50): Error: no [] operator overload for type S
fail_compilation/fail_opover.d(51): Error: no [] operator overload for type S
fail_compilation/fail_opover.d(52): Error: no [] operator overload for type S
fail_compilation/fail_opover.d(53): Error: no [] operator overload for type S
fail_compilation/fail_opover.d(54): Error: no [] operator overload for type S
fail_compilation/fail_opover.d(55): Error: no [] operator overload for type S
fail_compilation/fail_opover.d(56): Error: no [] operator overload for type S
fail_compilation/fail_opover.d(57): Error: no [] operator overload for type S
---
*/
void test2()
{
struct S
{
void func(int) {}
alias func this;
}
S s;
// The errors failing aliasthis access need to be gagged for better error messages.
s[]; // in ArrayExp::op_overload()
s[1]; // ditto
s[1..2]; // ditto
+s[]; // in UnaExp::op_overload()
+s[1]; // ditto
+s[1..2]; // ditto
s[] = 3; // in AssignExp::semantic()
s[1] = 3; // ditto
s[1..2] = 3; // ditto
s[] += 3; // in BinAssignExp::op_overload()
s[1] += 3; // ditto
s[1..2] += 3; // ditto
}