diff options
| author | Paul Stansifer <paul.stansifer@gmail.com> | 2012-08-23 11:47:35 -0700 |
|---|---|---|
| committer | Paul Stansifer <paul.stansifer@gmail.com> | 2012-08-23 11:47:35 -0700 |
| commit | 129c4b694b753ed3dbe67d5e2787e0ede01263e9 (patch) | |
| tree | 31b3058a2ea33d673571b71dc39ee06842c05227 /src/libsyntax | |
| parent | 89bbaff84fed6e6796c82f5a9fd200e693d47beb (diff) | |
Give a special error message when [de]serializing fails because the interner isn't in TLS yet.
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ast.rs | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index ae20573802b..19b7e532bc2 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -31,14 +31,20 @@ fn deserialize_span<D>(_d: D) -> span { type spanned<T> = {node: T, span: span}; fn serialize_ident<S: serializer>(s: S, i: ident) { - let intr = unsafe{ task::local_data_get(parse::token::interner_key) }; + let intr = match unsafe{task::local_data_get(parse::token::interner_key)}{ + none => fail ~"serialization: TLS interner not set up", + some(intr) => intr + }; - s.emit_str(*(*intr.get()).get(i)); + s.emit_str(*(*intr).get(i)); } fn deserialize_ident<D: deserializer>(d: D) -> ident { - let intr = unsafe{ task::local_data_get(parse::token::interner_key) }; + let intr = match unsafe{task::local_data_get(parse::token::interner_key)}{ + none => fail ~"deserialization: TLS interner not set up", + some(intr) => intr + }; - (*intr.get()).intern(@d.read_str()) + (*intr).intern(@d.read_str()) } type ident = token::str_num; |
