about summary refs log tree commit diff
path: root/src/rustllvm/RustWrapper.cpp
diff options
context:
space:
mode:
authorMazdak Farrokhzad <twingoow@gmail.com>2019-08-29 13:17:52 +0200
committerGitHub <noreply@github.com>2019-08-29 13:17:52 +0200
commite4e6b01ca110adfb0a580a35a6352a32c3e6789a (patch)
treedaa05b4a15291c134972dfbb0165728ae41a09ff /src/rustllvm/RustWrapper.cpp
parent85ed538d6988c6c82aea8750b306cb793e874294 (diff)
parentec45b87957c4158934fc3f5a821594ad0686ea4e (diff)
downloadrust-e4e6b01ca110adfb0a580a35a6352a32c3e6789a.tar.gz
rust-e4e6b01ca110adfb0a580a35a6352a32c3e6789a.zip
Rollup merge of #63867 - petrochenkov:dhelpers, r=matthewjasper
resolve: Block expansion of a derive container until all its derives are resolved

So, it turns out there's one more reason to block expansion of a `#[derive]` container until all the derives inside it are resolved, beside `Copy` (https://github.com/rust-lang/rust/pull/63248).

The set of derive helper attributes registered by derives in the container also has to be known before the derives themselves are expanded, otherwise it may be too late (see https://github.com/rust-lang/rust/pull/63468#issuecomment-524550872 and the `#[stable_hasher]`-related test failures in https://github.com/rust-lang/rust/pull/63468).

So, we stop our attempts to unblock the container earlier, as soon as the `Copy` status is known, and just block until all its derives are resolved.
After all the derives are resolved we immediately go and process their helper attributes in the item, without delaying it until expansion of the individual derives.

Unblocks https://github.com/rust-lang/rust/pull/63468
r? @matthewjasper (as a reviewer of https://github.com/rust-lang/rust/pull/63248)
cc @c410-f3r
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions