Skip to content
Closed
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion src/librustc/front/map/blocks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,12 @@ struct ClosureParts<'a> {

impl<'a> ClosureParts<'a> {
fn new(d: &'a FnDecl, b: &'a Block, id: NodeId, s: Span) -> ClosureParts<'a> {
ClosureParts { decl: d, body: b, id: id, span: s }
ClosureParts {
decl: d,
body: b,
id: id,
span: s
}
}
}

Expand Down
4 changes: 4 additions & 0 deletions src/librustc/front/map/collector.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,13 @@ use syntax::codemap::Span;
/// A Visitor that walks over an AST and collects Node's into an AST
/// Map.
pub struct NodeCollector<'ast> {
/// The crate
pub krate: &'ast Crate,
/// The node map
pub map: Vec<MapEntry<'ast>>,
/// The definitions, used for name resolution
pub definitions: Definitions,
/// The parrent of this node
pub parent_node: NodeId,
}

Expand Down
32 changes: 26 additions & 6 deletions src/librustc/front/map/definitions.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ use syntax::ast;
use syntax::parse::token::InternedString;
use util::nodemap::NodeMap;

/// A definition, that defines are
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"that defines are"?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed.

#[derive(Clone)]
pub struct Definitions {
data: Vec<DefData>,
Expand Down Expand Up @@ -66,36 +67,53 @@ pub type DefPath = Vec<DisambiguatedDefPathData>;
pub enum DefPathData {
// Root: these should only be used for the root nodes, because
// they are treated specially by the `def_path` function.
/// The crate root (marker)
CrateRoot,
/// An inlined root
InlinedRoot(DefPath),

// Catch-all for random DefId things like DUMMY_NODE_ID
Misc,

// Different kinds of items and item-like things:
/// An implementation
Impl(ast::Name),
/// A type (struct, enum, etc.)
Type(ast::Name),
/// A module declaration
Mod(ast::Name),
/// A value
Value(ast::Name),
/// A macro rule
MacroDef(ast::Name),
/// A closure expression
ClosureExpr,

// Subportions of items
/// A type parameter (generic parameter)
TypeParam(ast::Name),
/// A lifetime definition
LifetimeDef(ast::Name),
/// A variant of a enum
EnumVariant(ast::Name),
/// A positional field, for example a tuple field
PositionalField,
/// A struct field
Field(hir::StructFieldKind),
StructCtor, // implicit ctor for a tuple-like struct
Initializer, // initializer for a const
Binding(ast::Name), // pattern binding

// An external crate that does not have an `extern crate` in this
// crate.
/// Implicit ctor for a tuple-like struct
StructCtor,
/// Initializer for a constant
Initializer,
/// A pattern binding
Binding(ast::Name),

/// An external crate that does not have an `extern crate` in this
/// crate.
DetachedCrate(ast::Name),
}

impl Definitions {
/// Create new empty definition map
pub fn new() -> Definitions {
Definitions {
data: vec![],
Expand All @@ -104,6 +122,7 @@ impl Definitions {
}
}

/// Get the number of definitions
pub fn len(&self) -> usize {
self.data.len()
}
Expand Down Expand Up @@ -138,6 +157,7 @@ impl Definitions {
}
}

/// Add a definition with a parrent definition
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This also says "parrent"

pub fn create_def_with_parent(&mut self,
parent: Option<DefIndex>,
node_id: ast::NodeId,
Expand Down
41 changes: 19 additions & 22 deletions src/librustc_back/sha2.rs
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,10 @@ fn write_u32_be(dst: &mut[u8], input: u32) {

/// Read the value of a vector of bytes as a u32 value in big-endian format.
fn read_u32_be(input: &[u8]) -> u32 {
return
(input[0] as u32) << 24 |
(input[0] as u32) << 24 |
(input[1] as u32) << 16 |
(input[2] as u32) << 8 |
(input[3] as u32);
(input[3] as u32)
}

/// Read a vector of bytes into a vector of u32s. The values are read in big-endian format.
Expand All @@ -50,7 +49,7 @@ trait ToBits {

impl ToBits for u64 {
fn to_bits(self) -> (u64, u64) {
return (self >> 61, self << 3);
(self >> 61, self << 3)
}
}

Expand All @@ -64,7 +63,7 @@ fn add_bytes_to_bits(bits: u64, bytes: u64) -> u64 {
}

match bits.checked_add(new_low_bits) {
Some(x) => return x,
Some(x) => x,
None => panic!("numeric overflow occurred.")
}
}
Expand Down Expand Up @@ -113,10 +112,10 @@ struct FixedBuffer64 {
impl FixedBuffer64 {
/// Create a new FixedBuffer64
fn new() -> FixedBuffer64 {
return FixedBuffer64 {
FixedBuffer64 {
buffer: [0; 64],
buffer_idx: 0
};
}
}
}

Expand Down Expand Up @@ -175,13 +174,13 @@ impl FixedBuffer for FixedBuffer64 {

fn next<'s>(&'s mut self, len: usize) -> &'s mut [u8] {
self.buffer_idx += len;
return &mut self.buffer[self.buffer_idx - len..self.buffer_idx];
&mut self.buffer[self.buffer_idx - len..self.buffer_idx]
}

fn full_buffer<'s>(&'s mut self) -> &'s [u8] {
assert!(self.buffer_idx == 64);
self.buffer_idx = 0;
return &self.buffer[..64];
&self.buffer[..64]
}

fn position(&self) -> usize { self.buffer_idx }
Expand Down Expand Up @@ -278,7 +277,7 @@ struct Engine256State {

impl Engine256State {
fn new(h: &[u32; 8]) -> Engine256State {
return Engine256State {
Engine256State {
h0: h[0],
h1: h[1],
h2: h[2],
Expand All @@ -287,7 +286,7 @@ impl Engine256State {
h5: h[5],
h6: h[6],
h7: h[7]
};
}
}

fn reset(&mut self, h: &[u32; 8]) {
Expand Down Expand Up @@ -433,7 +432,7 @@ struct Engine256 {

impl Engine256 {
fn new(h: &[u32; 8]) -> Engine256 {
return Engine256 {
Engine256 {
length_bits: 0,
buffer: FixedBuffer64::new(),
state: Engine256State::new(h),
Expand All @@ -457,17 +456,15 @@ impl Engine256 {
}

fn finish(&mut self) {
if self.finished {
return;
if !self.finished {
let self_state = &mut self.state;
self.buffer.standard_padding(8, |input: &[u8]| { self_state.process_block(input) });
write_u32_be(self.buffer.next(4), (self.length_bits >> 32) as u32 );
write_u32_be(self.buffer.next(4), self.length_bits as u32);
self_state.process_block(self.buffer.full_buffer());

self.finished = true;
}

let self_state = &mut self.state;
self.buffer.standard_padding(8, |input: &[u8]| { self_state.process_block(input) });
write_u32_be(self.buffer.next(4), (self.length_bits >> 32) as u32 );
write_u32_be(self.buffer.next(4), self.length_bits as u32);
self_state.process_block(self.buffer.full_buffer());

self.finished = true;
}
}

Expand Down
20 changes: 10 additions & 10 deletions src/librustc_back/svh.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,15 @@ impl Svh {
}

pub fn calculate(metadata: &Vec<String>, krate: &hir::Crate) -> Svh {
fn hex(b: u64) -> char {
let b = (b & 0xf) as u8;
let b = match b {
0 ... 9 => '0' as u8 + b,
_ => 'a' as u8 + b - 10,
};
b as char
}

// FIXME (#14132): This is better than it used to be, but it still not
// ideal. We now attempt to hash only the relevant portions of the
// Crate AST as well as the top-level crate attributes. (However,
Expand Down Expand Up @@ -101,17 +110,8 @@ impl Svh {
}

let hash = state.finish();
return Svh {
Svh {
hash: (0..64).step_by(4).map(|i| hex(hash >> i)).collect()
};

fn hex(b: u64) -> char {
let b = (b & 0xf) as u8;
let b = match b {
0 ... 9 => '0' as u8 + b,
_ => 'a' as u8 + b - 10,
};
b as char
}
}
}
Expand Down