Skip to content

Commit 572f3e0

Browse files
committed
---
yaml --- r: 172669 b: refs/heads/try c: efaf613 h: refs/heads/master i: 172667: c6f391a v: v3
1 parent 1cb435d commit 572f3e0

File tree

3 files changed

+27
-10
lines changed

3 files changed

+27
-10
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
refs/heads/master: 170c4399e614fe599c3d41306b3429ca8b3b68c6
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 5b3cd3900ceda838f5798c30ab96ceb41f962534
5-
refs/heads/try: 7e87ea9fc5c3ab5d6c853e6d3ae0603f19526eb4
5+
refs/heads/try: efaf613497da355fa3afaeaa75eaf95b55991e4e
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/dist-snap: ba4081a5a8573875fed17545846f6f6902c8ba8d
88
refs/tags/release-0.2: c870d2dffb391e14efb05aa27898f1f6333a9596

branches/try/src/librustc/metadata/creader.rs

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ use syntax::ast;
2626
use syntax::abi;
2727
use syntax::attr;
2828
use syntax::attr::AttrMetaMethods;
29-
use syntax::codemap::{Span, mk_sp};
29+
use syntax::codemap::{DUMMY_SP, Span, mk_sp};
3030
use syntax::parse;
3131
use syntax::parse::token::InternedString;
3232
use syntax::parse::token;
@@ -445,8 +445,20 @@ impl<'a> CrateReader<'a> {
445445
}
446446

447447
pub fn read_plugin_metadata<'b>(&'b mut self,
448-
vi: &'b ast::ViewItem) -> PluginMetadata<'b> {
449-
let info = self.extract_crate_info(vi).unwrap();
448+
krate: CrateOrString<'b>) -> PluginMetadata<'b> {
449+
let (info, span) = match krate {
450+
CrateOrString::Krate(c) => {
451+
(self.extract_crate_info(c).unwrap(), c.span)
452+
}
453+
CrateOrString::Str(s) => {
454+
(CrateInfo {
455+
name: s.to_string(),
456+
ident: s.to_string(),
457+
id: ast::DUMMY_NODE_ID,
458+
should_link: true,
459+
}, DUMMY_SP)
460+
}
461+
};
450462
let target_triple = &self.sess.opts.target_triple[];
451463
let is_cross = target_triple != config::host_triple();
452464
let mut should_link = info.should_link && !is_cross;
@@ -455,7 +467,7 @@ impl<'a> CrateReader<'a> {
455467
let name = info.name.clone();
456468
let mut load_ctxt = loader::Context {
457469
sess: self.sess,
458-
span: vi.span,
470+
span: span,
459471
ident: &ident[],
460472
crate_name: &name[],
461473
hash: None,
@@ -485,8 +497,8 @@ impl<'a> CrateReader<'a> {
485497
let register = should_link && self.existing_match(info.name.as_slice(), None).is_none();
486498
let metadata = if register {
487499
// Register crate now to avoid double-reading metadata
488-
let (_, cmd, _) = self.register_crate(&None, &info.ident[],
489-
&info.name[], vi.span, library);
500+
let (_, cmd, _) = self.register_crate(&None, info.ident[],
501+
info.name[], span, library);
490502
PMDSource::Registered(cmd)
491503
} else {
492504
// Not registering the crate; just hold on to the metadata
@@ -498,12 +510,17 @@ impl<'a> CrateReader<'a> {
498510
metadata: metadata,
499511
dylib: dylib,
500512
info: info,
501-
vi_span: vi.span,
513+
vi_span: span,
502514
target_only: target_only,
503515
}
504516
}
505517
}
506518

519+
pub enum CrateOrString<'a> {
520+
Krate(&'a ast::ViewItem),
521+
Str(&'a str)
522+
}
523+
507524
impl<'a> PluginMetadata<'a> {
508525
/// Read exported macros
509526
pub fn exported_macros(&self) -> Vec<ast::MacroDef> {

branches/try/src/librustc/plugin/load.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
//! Used by `rustc` when loading a plugin, or a crate with exported macros.
1212
1313
use session::Session;
14-
use metadata::creader::CrateReader;
14+
use metadata::creader::{CrateOrString, CrateReader};
1515
use plugin::registry::Registry;
1616

1717
use std::mem;
@@ -175,7 +175,7 @@ impl<'a, 'v> Visitor<'v> for PluginLoader<'a> {
175175
}
176176

177177
if load_macros || load_registrar {
178-
let pmd = self.reader.read_plugin_metadata(vi);
178+
let pmd = self.reader.read_plugin_metadata(CrateOrString::Krate(vi));
179179
if load_macros {
180180
macros = pmd.exported_macros();
181181
}

0 commit comments

Comments
 (0)