mirror of
https://github.com/dlang/dmd.git
synced 2025-04-26 13:10:12 +03:00
67 lines
3.4 KiB
D
67 lines
3.4 KiB
D
// REQUIRED_ARGS: -o-
|
|
|
|
/*
|
|
TEST_OUTPUT:
|
|
---
|
|
fail_compilation/fail_opover.d(39): Error: no `[]` operator overload for type `object.Object`
|
|
$p:object.d$(110): perhaps define `auto opIndex() {}` for `object.Object`
|
|
fail_compilation/fail_opover.d(43): Error: no `[]` operator overload for type `TestS`
|
|
fail_compilation/fail_opover.d(41): perhaps define `auto opIndex() {}` for `fail_opover.test1.TestS`
|
|
fail_compilation/fail_opover.d(55): Error: no `[]` operator overload for type `S`
|
|
fail_compilation/fail_opover.d(48): perhaps define `auto opIndex() {}` for `fail_opover.test2.S`
|
|
fail_compilation/fail_opover.d(56): Error: no `[]` operator overload for type `S`
|
|
fail_compilation/fail_opover.d(48): perhaps define `auto opIndex(int) {}` for `fail_opover.test2.S`
|
|
fail_compilation/fail_opover.d(57): Error: no `[1..2]` operator overload for type `S`
|
|
fail_compilation/fail_opover.d(48): perhaps define `auto opSlice(int lower, int upper) {}` for `fail_opover.test2.S`
|
|
fail_compilation/fail_opover.d(58): Error: no `[]` operator overload for type `S`
|
|
fail_compilation/fail_opover.d(48): perhaps define `auto opIndex() {}` for `fail_opover.test2.S`
|
|
fail_compilation/fail_opover.d(59): Error: no `[]` operator overload for type `S`
|
|
fail_compilation/fail_opover.d(48): perhaps define `auto opIndex(int) {}` for `fail_opover.test2.S`
|
|
fail_compilation/fail_opover.d(60): Error: no `[1..2]` operator overload for type `S`
|
|
fail_compilation/fail_opover.d(48): perhaps define `auto opSlice(int lower, int upper) {}` for `fail_opover.test2.S`
|
|
fail_compilation/fail_opover.d(61): Error: no `[]` operator overload for type `S`
|
|
fail_compilation/fail_opover.d(48): perhaps define `auto opIndex() {}` for `fail_opover.test2.S`
|
|
fail_compilation/fail_opover.d(62): Error: no `[]` operator overload for type `S`
|
|
fail_compilation/fail_opover.d(48): perhaps define `auto opIndex(int) {}` for `fail_opover.test2.S`
|
|
fail_compilation/fail_opover.d(63): Error: no `[1..2]` operator overload for type `S`
|
|
fail_compilation/fail_opover.d(48): perhaps define `auto opSlice(int lower, int upper) {}` for `fail_opover.test2.S`
|
|
fail_compilation/fail_opover.d(64): Error: no `[]` operator overload for type `S`
|
|
fail_compilation/fail_opover.d(48): perhaps define `auto opIndex() {}` for `fail_opover.test2.S`
|
|
fail_compilation/fail_opover.d(65): Error: no `[]` operator overload for type `S`
|
|
fail_compilation/fail_opover.d(48): perhaps define `auto opIndex(int) {}` for `fail_opover.test2.S`
|
|
fail_compilation/fail_opover.d(66): Error: no `[1..2]` operator overload for type `S`
|
|
fail_compilation/fail_opover.d(48): perhaps define `auto opSlice(int lower, int upper) {}` for `fail_opover.test2.S`
|
|
---
|
|
*/
|
|
void test1()
|
|
{
|
|
Object m;
|
|
m[] = error;
|
|
|
|
struct TestS {}
|
|
TestS s;
|
|
s[] = error;
|
|
}
|
|
|
|
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
|
|
}
|