about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJohn Clements <clements@racket-lang.org>2013-09-06 13:34:58 -0700
committerJohn Clements <clements@racket-lang.org>2013-09-06 13:34:58 -0700
commitacad9f35b3aef8cc0d82c6a43c662ddc0f946568 (patch)
tree03dec67332189719211d24fdcfe9760622c42082
parent77c96d754e3a5d4b8dd59269b0cb0324350ccbec (diff)
downloadrust-acad9f35b3aef8cc0d82c6a43c662ddc0f946568.tar.gz
rust-acad9f35b3aef8cc0d82c6a43c662ddc0f946568.zip
commenting out special Eq implementation for now
See the comments for details on why I'm leaving this code
in, though commented out.
-rw-r--r--src/libsyntax/ast.rs15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs
index 8a9bd5192ad..c2087928e8d 100644
--- a/src/libsyntax/ast.rs
+++ b/src/libsyntax/ast.rs
@@ -24,7 +24,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, IterBytes, ToStr)]
+#[deriving(Clone, Eq, IterBytes, ToStr)]
 pub struct Ident { name: Name, ctxt: SyntaxContext }
 
 impl Ident {
@@ -32,7 +32,17 @@ impl Ident {
     pub fn new(name: Name) -> Ident { Ident {name: name, ctxt: EMPTY_CTXT}}
 }
 
-impl Eq for Ident {
+// 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 {
     fn eq(&self, other: &Ident) -> bool {
         if (self.ctxt == other.ctxt) {
             self.name == other.name
@@ -44,6 +54,7 @@ impl Eq for Ident {
         ! self.eq(other)
     }
 }
+*/
 
 /// A SyntaxContext represents a chain of macro-expandings
 /// and renamings. Each macro expansion corresponds to