On Monday, 26 January 2015 at 21:28:51 UTC, Zach the Mystic wrote:
On Monday, 26 January 2015 at 16:10:53 UTC, Jonathan Marler wrote:
I agree with Jonathan's points, this solution doesn't seem like an improvement. If I understand the problem, we don't want to make every attribute use the '@' symbol because it looks bad and would cause a lot of code changes for sake of consistency. However, on the other hand, we don't want to support the new properties because we have to add them as keywords which would break code using those words and would make the language more restrictive (nothing can be named nogc/safe/...).

Assuming I understand the problem, couldn't we modify the language grammar to support more attributes without making them keywords? Then we can omit the '@' on future code (and fix the old code if we want) and we don't have to litter the language with new keywords.

I understand that doing this may be fairly complicated. This may create some ambiguities in the grammar that would need to be handled carefully, but if it can work I think this would be a good option.

I think the short answer is that it's WAY too complicated for the benefit. Also, why burden the syntax highlighter, let alone the human reader, with ambiguities like this?

I wasn't saying that we should introduce ambiguity, I was saying we should be careful not to introduce ambiguity. I wrote that to indicate that I wasn't sure if the solution would introduce ambiguity or not. Zach suggested a solution that I'm fairly certain would be unambiguous (it's nice to have c++ people who've already seen the same problem know of a solution). By restricting the attributes to only appear after a function signature, it would also normalize the issue of consistent location of attributes, but this is another debate. However, allowing the attributes to appear before the function signature *might* work, but that would require much more care and may not even be possible (like I said, I'm not sure). A comprimize could be to allow attributes to omit the '@' character if they appear after the function signature and require the '@' character if they appear before. I'm not saying that's a good idea, just an option.

Reply via email to