Sounds good. I’d be happy to help flesh it out further as well. Pleas let me know if there is anything more I can do to contribute to this proposal.
I think this would be a big mistake. I was very pleased to see this aspect of the proposal.
I strongly disagree. First, this is a language feature and should be defined on its own terms. There will be many uses for compile-time attributes. But secondarily, as an author of Sourcery templates I want to be able to be as precise as possible about valid use of my attributes. If tooling passes it through with some loss of context that is ok - I can still rely on the compiler having verified it.
If there are some declarations for which the tool does not make attributes available at all I would simply not use them until the tool is updated. I may file requests or even help contribute to the tool to make them available as I need them. If the language does not support these attributes this path is prematurely foreclosed: I would need to first return to SE and find an implementer interested in expanding the declarations supported by compile-time attributes.
If there is not a significant implementation cost to support granularity up front we should do it. Ease of use for those not interested in granularity can be supported using OptionSet
. Limitations in granularity should be justified with a clear rationale (such as requiring significant incremental implementation effort, etc).