vsapsai wrote:

> Sometimes it does confuse clang, at least I saw problems with a `typedef 
> enum` when I made an include-once header `textual`.

Ok, I see. I would just consider it a bug, not a design decision.

> That's correct. `#import` is an external source - often it comes from the 
> users of the header and not the author, and the users might not be consistent 
> with each other. `textual` comes from the author and a much stronger 
> indicator of intent.

Hmm, I need to think more about it. Usually I prefer for modular builds to act 
like non-modular as it minimizes the surprises and allows to have a portable 
code. But I haven't really considered the implications of such preference.

I see why you prefer to give more priority to `textual`. To give a different 
perspective, what if a developer wants to use a newer library, for example, 
ncurses. The rest of SDK expects an older version and the developer might need 
to do some header gymnastics to make it work. So there are cases when 
developers need to go against library author's intent. I'm thinking that 
library authors aren't able to predict all the ways their library is used, so 
it is useful to have some flexibility around that, even at the cost of misusing 
the library. But this is a general opinion, I don't have specific data about 
the needs to tweak libraries or the risks of a library misuse. So the opinion 
isn't particularly strong.

https://github.com/llvm/llvm-project/pull/83660
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to