(it's best to have the primary content here, if you want to discuss it here)
The main thing your notes fail to consider is how exactly the "receiver" for the macro gets captured. Does $self just expand to the entire receiver expression? If so, then the macro could evaluate $self a non-one number of times, or after evaluating "arguments" to the macro, modifying control flow outside of the visibly delimited macro invocation. If the receiver expression is evaluated first and $self names the result of that expression, how is that done? Is $self a value (C++ rvalue) or is it a place (C++ lvalue), and if it's a place, how is it determined what binding mode that place is referenced? Nowhere else in the language is it possible to use one place subexpression in more than one containing expression, but a place bound to $self would enable such.
Separately, field/method name lookup is currently always type directed. By what rationale should macros break that tend and do name lookup differently in this one position? Sure, type-directed macro expansion can be quite problematic since macro expansion can change name resolution even before considering type inference, but that's a reason to not do postfix macros too hastily, not a reason to violate what would otherwise be intuitively expected.