Skip to content

Commit 7df0052

Browse files
Created NestedMetaItem::name_value_literal_span method
1 parent 0fa9d31 commit 7df0052

File tree

4 files changed

+22
-9
lines changed

4 files changed

+22
-9
lines changed

compiler/rustc_ast/src/attr/mod.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,10 @@ impl NestedMetaItem {
115115
pub fn is_meta_item_list(&self) -> bool {
116116
self.meta_item_list().is_some()
117117
}
118+
119+
pub fn name_value_literal_span(&self) -> Option<Span> {
120+
self.meta_item()?.name_value_literal_span()
121+
}
118122
}
119123

120124
impl Attribute {
@@ -175,6 +179,13 @@ impl Attribute {
175179
pub fn is_value_str(&self) -> bool {
176180
self.value_str().is_some()
177181
}
182+
183+
pub fn name_value_literal_span(&self) -> Option<Span> {
184+
match self.kind {
185+
AttrKind::Normal(ref item, _) => item.meta(self.span).and_then(|meta| meta.name_value_literal_span()),
186+
AttrKind::DocComment(..) => None,
187+
}
188+
}
178189
}
179190

180191
impl MetaItem {
@@ -227,6 +238,10 @@ impl MetaItem {
227238
pub fn is_value_str(&self) -> bool {
228239
self.value_str().is_some()
229240
}
241+
242+
pub fn name_value_literal_span(&self) -> Option<Span> {
243+
Some(self.name_value_literal()?.span)
244+
}
230245
}
231246

232247
impl AttrItem {

compiler/rustc_attr/src/builtin.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,7 @@ where
294294
or \"none\"",
295295
)
296296
.span_label(
297-
mi.name_value_literal().unwrap().span,
297+
mi.name_value_literal_span().unwrap(),
298298
msg,
299299
)
300300
.emit();

compiler/rustc_expand/src/expand.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1603,23 +1603,22 @@ impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b> {
16031603
items.push(ast::NestedMetaItem::MetaItem(item));
16041604
}
16051605
Err(e) => {
1606-
let lit =
1607-
it.meta_item().and_then(|item| item.name_value_literal()).unwrap();
1606+
let lit_span = it.name_value_literal_span().unwrap();
16081607

16091608
if e.kind() == ErrorKind::InvalidData {
16101609
self.cx
16111610
.struct_span_err(
1612-
lit.span,
1611+
lit_span,
16131612
&format!("{} wasn't a utf-8 file", filename.display()),
16141613
)
1615-
.span_label(lit.span, "contains invalid utf-8")
1614+
.span_label(lit_span, "contains invalid utf-8")
16161615
.emit();
16171616
} else {
16181617
let mut err = self.cx.struct_span_err(
1619-
lit.span,
1618+
lit_span,
16201619
&format!("couldn't read {}: {}", filename.display(), e),
16211620
);
1622-
err.span_label(lit.span, "couldn't read file");
1621+
err.span_label(lit_span, "couldn't read file");
16231622

16241623
err.emit();
16251624
}

compiler/rustc_middle/src/middle/limits.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,7 @@ fn update_limit(
4343

4444
let value_span = attr
4545
.meta()
46-
.and_then(|meta| meta.name_value_literal().cloned())
47-
.map(|lit| lit.span)
46+
.and_then(|meta| meta.name_value_literal_span())
4847
.unwrap_or(attr.span);
4948

5049
let error_str = match e.kind() {

0 commit comments

Comments
 (0)