about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src
diff options
context:
space:
mode:
authorChayim Refael Friedman <chayimfr@gmail.com>2024-10-07 23:02:02 +0300
committerChayim Refael Friedman <chayimfr@gmail.com>2024-10-22 21:26:56 +0300
commit7ee25a0d70bb92b9e55c75c84775a3b6c378a49a (patch)
tree36ebb3c58efcd386e3bd1f653af4d542711851bc /compiler/rustc_codegen_llvm/src
parentfa59a76762e9538898535a95849c24f0d67ea35c (diff)
downloadrust-7ee25a0d70bb92b9e55c75c84775a3b6c378a49a.tar.gz
rust-7ee25a0d70bb92b9e55c75c84775a3b6c378a49a.zip
Implement semitransparent hygiene
Or macro_rules hygiene, or mixed site hygiene. In other words, hygiene for variables and labels but not items.

The realization that made me implement this was that while "full" hygiene (aka. def site hygiene) is really hard for us to implement, and will likely involve intrusive changes and performance losses, since every `Name` will have to carry hygiene, mixed site hygiene is very local: it applies only to bodies, and we very well can save it in a side map with minor losses.

This fixes one diagnostic in r-a that was about `izip!()` using hygiene (yay!) but it introduces a huge number of others, because of #18262. Up until now this issue wasn't a major problem because it only affected few cases, but with hygiene identifiers referred by macros like that are not resolved at all. The next commit will fix that.
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
0 files changed, 0 insertions, 0 deletions