2017-10-04 16:49 GMT-03:00 Denis Kudriashov <dionisiydk@gmail.com>:
2017-10-04 21:38 GMT+02:00 Esteban A. Maringolo <emaringolo@gmail.com>:
It is not compiled time but behaviour is very close to it. The trick is that first time execution will replace full expression with the result as literal (the receiver of #asMethodConst). So at second time it will be just literal reading.
It is weird that a regular message send makes the returned value a method constant. How is that cleaned up? Do I have to search for all the methods that contain such message send?
What the problem? This message is a tool. You use it when you need it. When you modify the method the value is cleaned. Nice thing is that it not requires special syntax. And you can debug expression as normal part of method.
I don't see any problem, I just said "weird". It's a "special return" message send. A trick of sorts, no different than #doesNotUnderstand: or other special selectors. Regards, Esteban A. Maringolo