Should this be allowed for functions that isn't marked with @property:foo = 3;
Yes. We should *only* be changing the way @property is implemented. (Namely, actually implementing it!)
Don't want to break existing code. The new changes must be opt in.If there's both an @property setter and a regular function, the property should be used here.
