Skip to content

Commit aac6dca

Browse files
committed
Treat custom derive extern crates like empty modules.
1 parent 33e3da8 commit aac6dca

File tree

3 files changed

+7
-27
lines changed

3 files changed

+7
-27
lines changed

src/librustc_resolve/build_reduced_graph.rs

+6
Original file line numberDiff line numberDiff line change
@@ -250,6 +250,12 @@ impl<'b> Resolver<'b> {
250250
self.define(parent, name, TypeNS, (module, sp, vis));
251251

252252
self.populate_module_if_necessary(module);
253+
} else if custom_derive_crate {
254+
// Define an empty module
255+
let def = Def::Mod(self.definitions.local_def_id(item.id));
256+
let module = ModuleS::new(Some(parent), ModuleKind::Def(def, name));
257+
let module = self.arenas.alloc_module(module);
258+
self.define(parent, name, TypeNS, (module, sp, vis));
253259
}
254260
}
255261

src/test/compile-fail-fulldeps/proc-macro/auxiliary/derive-a-2.rs

-25
This file was deleted.

src/test/compile-fail-fulldeps/proc-macro/shadow.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,12 @@
99
// except according to those terms.
1010

1111
// aux-build:derive-a.rs
12-
// aux-build:derive-a-2.rs
1312

1413
#![feature(proc_macro)]
1514

1615
#[macro_use]
1716
extern crate derive_a;
1817
#[macro_use]
19-
extern crate derive_a_2; //~ ERROR: cannot shadow existing derive mode `A`
18+
extern crate derive_a; //~ ERROR `derive_a` has already been defined
2019

2120
fn main() {}

0 commit comments

Comments
 (0)