Hello, On Sat, 5 Apr 2025, Bill Wendling wrote:
> > >>> So, a different attribute name “counted_by_exp” might be better? > > >> > > >> I would prefer Martins empty-decl idea to that: "counted_by(;len+0)" > > >> (looks up 'len' normally, i.e. doesn't look into current struct). It > > >> would naturally fit the either decl+expr or lone-ident parse. > > >> It may look weird but empty declarations are okayish IMHO. > > >> > > >> But overall: I just don't know, it all looks a bit unsexy, there only > > seem > > >> to be rocks and hard places :) > > > > > > I would not worry about this case too much, because I do expect this > > > to be a common use case anyway. That it looks strange may even be > > > an advantage here, as it alerts the reader that this is unusual. > > > > This is an interesting point and also a good point. -:) > > > > The other thought that bother me a little bit is: > > > > For the same attribute, counted_by, is it strange to have two different > > looking up rules > > depending on the different number of arguments?l > > > > Sorry for the HTML. On my phone. > > I think adding a ';' isn't the best option. It's too easy to overlook when > reading the attribute and forget when writing the attribute. Using a > separate attribute name is much cleaner, IMO. Then again, I've been wrong > before. :-) So, what specifically would the two attributes do different? FWIW: what worries me about accepting a generic expression in counted_by, that isn't prefixed by a (possibly empty) decl, is that after seeing a non-type identifier the parser doesn't yet know if it's the lone-ident case (look up in struct scope) or the expression case (look up everything in global scope). It requires look-ahead to decide this. Would that be the difference between the attributes? One accepting _only_ a lone-ident or the decl+expr syntax, and the other _only_ expressions that are never looked up in struct-scope (not even if its lone-ident)? Ciao, Michael.