if (ResolveAutopropertyAssignment (rc, right_side))
return this;
+ if (best_candidate.MemberType.Kind == MemberKind.ByRef) {
+ getter = CandidateToBaseOverride (rc, best_candidate.Get);
+ return ByRefDereference.Create(this).Resolve(rc);
+ }
+
rc.Report.Error (200, loc, "Property or indexer `{0}' cannot be assigned to (it is read-only)",
GetSignatureForError ());
return null;
--- /dev/null
+using System;
+
+class X
+{
+ public static int Main ()
+ {
+ var x = new X ();
+ x [0] = 3;
+ if (x.field != 3)
+ return 1;
+ x.Prop = 5;
+ if (x.field != 5)
+ return 2;
+
+ return 0;
+ }
+
+ int field;
+
+ ref int this [int idx] => ref field;
+
+ ref int Prop => ref field;
+
+}
\ No newline at end of file
</method>
</type>
</test>
+ <test name="test-ref-06.cs">
+ <type name="X">
+ <method name="Int32 Main()" attrs="150">
+ <size>71</size>
+ </method>
+ <method name="Int32& get_Item(Int32)" attrs="2177">
+ <size>14</size>
+ </method>
+ <method name="Int32& get_Prop()" attrs="2177">
+ <size>14</size>
+ </method>
+ <method name="Void .ctor()" attrs="6278">
+ <size>7</size>
+ </method>
+ </type>
+ </test>
<test name="test-static-using-01.cs">
<type name="A.B.X">
<method name="Int32 Test()" attrs="150">