// RUN: %clang_cc1 -fsyntax-only -verify %s // rdar: // 8379892 struct X { X(); X(const X&); ~X(); static int staticData; int data; void method(); }; @interface A { X xval; } - (X)x; - (void)setx:(X)x; @end void f(A* a) { a.x = X(); // expected-error {{setter method is needed to assign to object using property assignment syntax}} } struct Y : X { }; @interface B { @private Y *y; } - (Y)value; - (void)setValue : (Y) arg; @property Y value; @end void g(B *b) { b.value.data = 17; // expected-error {{not assignable}} b.value.staticData = 17; b.value.method(); } @interface C @end @implementation C - (void)method:(B *)b { // b.operator+ = 17; // expected-error{{'operator+' is not a valid property name (accessing an object of type 'B *')}} b->operator+ = 17; // expected-error{{'B' does not have a member named 'operator+'}} } @end