X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibsyntax_pos%2Flib.rs;h=f5449061b87fabed7eb3d096ebb3c3b5945823b7;hb=6f4ab9458a7ad06c8ce630604f533c8c0c0acef4;hp=7006f45455e38830f484b10b97aaa287268d63cf;hpb=f2a5af7a4c7424acc9acc52161fb57210a4bb219;p=rust.git diff --git a/src/libsyntax_pos/lib.rs b/src/libsyntax_pos/lib.rs index 7006f45455e..f5449061b87 100644 --- a/src/libsyntax_pos/lib.rs +++ b/src/libsyntax_pos/lib.rs @@ -153,6 +153,16 @@ pub fn allows_unstable(&self) -> bool { } } + /// Check if a span is "internal" to a macro in which `unsafe` + /// can be used without triggering the `unsafe_code` lint + // (that is, a macro marked with `#[allow_internal_unsafe]`). + pub fn allows_unsafe(&self) -> bool { + match self.ctxt.outer().expn_info() { + Some(info) => info.callee.allow_internal_unsafe, + None => false, + } + } + pub fn macro_backtrace(mut self) -> Vec { let mut prev_span = DUMMY_SP; let mut result = vec![]; @@ -174,8 +184,8 @@ pub fn macro_backtrace(mut self) -> Vec { if !info.call_site.source_equal(&prev_span) { result.push(MacroBacktrace { call_site: info.call_site, - macro_decl_name: macro_decl_name, - def_site_span: def_site_span, + macro_decl_name, + def_site_span, }); } @@ -348,7 +358,7 @@ pub fn span_labels(&self) -> Vec { for &(span, ref label) in &self.span_labels { span_labels.push(SpanLabel { - span: span, + span, is_primary: is_primary(span), label: Some(label.clone()) }); @@ -357,7 +367,7 @@ pub fn span_labels(&self) -> Vec { for &span in &self.primary_spans { if !span_labels.iter().any(|sl| sl.span == span) { span_labels.push(SpanLabel { - span: span, + span, is_primary: true, label: None }); @@ -546,16 +556,16 @@ fn decode(d: &mut D) -> Result { let multibyte_chars: Vec = d.read_struct_field("multibyte_chars", 5, |d| Decodable::decode(d))?; Ok(FileMap { - name: name, - name_was_remapped: name_was_remapped, + name, + name_was_remapped, // `crate_of_origin` has to be set by the importer. // This value matches up with rustc::hir::def_id::INVALID_CRATE. // That constant is not available here unfortunately :( crate_of_origin: ::std::u32::MAX - 1, - start_pos: start_pos, - end_pos: end_pos, + start_pos, + end_pos, src: None, - src_hash: src_hash, + src_hash, external_src: RefCell::new(ExternalSource::AbsentOk), lines: RefCell::new(lines), multibyte_chars: RefCell::new(multibyte_chars) @@ -584,13 +594,13 @@ pub fn new(name: FileName, let end_pos = start_pos.to_usize() + src.len(); FileMap { - name: name, - name_was_remapped: name_was_remapped, + name, + name_was_remapped, crate_of_origin: 0, src: Some(Rc::new(src)), - src_hash: src_hash, + src_hash, external_src: RefCell::new(ExternalSource::Unneeded), - start_pos: start_pos, + start_pos, end_pos: Pos::from_usize(end_pos), lines: RefCell::new(Vec::new()), multibyte_chars: RefCell::new(Vec::new()), @@ -677,8 +687,8 @@ fn get_until_newline(src: &str, begin: usize) -> &str { pub fn record_multibyte_char(&self, pos: BytePos, bytes: usize) { assert!(bytes >=2 && bytes <= 4); let mbc = MultiByteChar { - pos: pos, - bytes: bytes, + pos, + bytes, }; self.multibyte_chars.borrow_mut().push(mbc); }