diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2012-10-18 13:29:34 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2012-10-18 14:29:18 -0700 |
| commit | 754704ea9442ce92602f8022f6c979824b016842 (patch) | |
| tree | d6fd35c2993740d742f86151444c3939068d7582 /src/libsyntax | |
| parent | eeae55208cfc393d6886e9b7a94d14f99e9bd7b8 (diff) | |
rustc: Implement intra-crate static methods on anonymous trait implementations. r=nmatsakis
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ast.rs | 30 | ||||
| -rw-r--r-- | src/libsyntax/codemap.rs | 32 |
2 files changed, 33 insertions, 29 deletions
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index 454a3166898..f494d564816 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -7,34 +7,6 @@ use std::serialization::{Serializable, use codemap::{span, filename}; use parse::token; -#[cfg(stage0)] -impl span: Serializable { - /* Note #1972 -- spans are serialized but not deserialized */ - fn serialize<S: Serializer>(&self, _s: &S) { } -} - -#[cfg(stage0)] -impl span: Deserializable { - static fn deserialize<D: Deserializer>(_d: &D) -> span { - ast_util::dummy_sp() - } -} - -#[cfg(stage1)] -#[cfg(stage2)] -impl<S: Serializer> span: Serializable<S> { - /* Note #1972 -- spans are serialized but not deserialized */ - fn serialize(&self, _s: &S) { } -} - -#[cfg(stage1)] -#[cfg(stage2)] -impl<D: Deserializer> span: Deserializable<D> { - static fn deserialize(_d: &D) -> span { - ast_util::dummy_sp() - } -} - #[auto_serialize] #[auto_deserialize] type spanned<T> = {node: T, span: span}; @@ -168,7 +140,7 @@ type ty_param = {ident: ident, id: node_id, bounds: @~[ty_param_bound]}; enum def { def_fn(def_id, purity), def_static_method(/* method */ def_id, - /* trait */ def_id, + /* trait */ Option<def_id>, purity), def_self(node_id), def_mod(def_id), diff --git a/src/libsyntax/codemap.rs b/src/libsyntax/codemap.rs index 0cb8b425c94..69a80d0bac1 100644 --- a/src/libsyntax/codemap.rs +++ b/src/libsyntax/codemap.rs @@ -1,4 +1,8 @@ use dvec::DVec; +use std::serialization::{Serializable, + Deserializable, + Serializer, + Deserializer}; export filename; export filemap; @@ -178,6 +182,34 @@ impl span : cmp::Eq { pure fn ne(other: &span) -> bool { !self.eq(other) } } +#[cfg(stage0)] +impl span: Serializable { + /* Note #1972 -- spans are serialized but not deserialized */ + fn serialize<S: Serializer>(&self, _s: &S) { } +} + +#[cfg(stage0)] +impl span: Deserializable { + static fn deserialize<D: Deserializer>(_d: &D) -> span { + ast_util::dummy_sp() + } +} + +#[cfg(stage1)] +#[cfg(stage2)] +impl<S: Serializer> span: Serializable<S> { + /* Note #1972 -- spans are serialized but not deserialized */ + fn serialize(&self, _s: &S) { } +} + +#[cfg(stage1)] +#[cfg(stage2)] +impl<D: Deserializer> span: Deserializable<D> { + static fn deserialize(_d: &D) -> span { + ast_util::dummy_sp() + } +} + fn span_to_str_no_adj(sp: span, cm: CodeMap) -> ~str { let lo = lookup_char_pos(cm, sp.lo); let hi = lookup_char_pos(cm, sp.hi); |
