diff options
| author | bors <bors@rust-lang.org> | 2013-09-10 01:06:00 -0700 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-09-10 01:06:00 -0700 |
| commit | 96da35611f9ab4ce2f2f7883cb2ca5324937ae89 (patch) | |
| tree | 69f411ddf6693f69bae7c1e90bd78564f1dfeee0 /src/libsyntax | |
| parent | 485446b97ff9c59939b8e583adf447b0ad211bd8 (diff) | |
| parent | 634bddde0577b7630f39bcf7edf2f52e22982dd5 (diff) | |
| download | rust-96da35611f9ab4ce2f2f7883cb2ca5324937ae89.tar.gz rust-96da35611f9ab4ce2f2f7883cb2ca5324937ae89.zip | |
auto merge of #9090 : jbclements/rust/let-var-hygiene, r=luqmana
This appears to fix issue #9049. It also re-enables the ICE check on comparing idents for equality; it appears that ICEs are better than seg faults.
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ast.rs | 15 |
1 files changed, 2 insertions, 13 deletions
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index c4038932613..36047627289 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -28,7 +28,7 @@ use extra::serialize::{Encodable, Decodable, Encoder, Decoder}; // table) and a SyntaxContext to track renaming and // macro expansion per Flatt et al., "Macros // That Work Together" -#[deriving(Clone, Eq, IterBytes, ToStr)] +#[deriving(Clone, IterBytes, ToStr)] pub struct Ident { name: Name, ctxt: SyntaxContext } impl Ident { @@ -36,17 +36,7 @@ impl Ident { pub fn new(name: Name) -> Ident { Ident {name: name, ctxt: EMPTY_CTXT}} } -// defining eq in this way is a way of guaranteeing that later stages of the -// compiler don't compare identifiers unhygienically. Unfortunately, some tests -// (specifically debuginfo in no-opt) want to do these comparisons, and that -// seems fine. If only I could find a nice way to statically ensure that -// the compiler "proper" never compares identifiers.... I'm leaving this -// code here (commented out) for potential use in debugging. Specifically, if -// there's a bug where "identifiers aren't matching", it may be because -// they should be compared using mtwt_resolve. In such a case, re-enabling this -// code (and disabling deriving(Eq) for Idents) could help to isolate the -// problem -/* impl Eq for Ident { +impl Eq for Ident { fn eq(&self, other: &Ident) -> bool { if (self.ctxt == other.ctxt) { self.name == other.name @@ -64,7 +54,6 @@ impl Ident { ! self.eq(other) } } -*/ /// A SyntaxContext represents a chain of macro-expandings /// and renamings. Each macro expansion corresponds to |
