diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index ae20573802b5..19b7e532bc20 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -31,14 +31,20 @@ fn deserialize_span(_d: D) -> span { type spanned = {node: T, span: span}; fn serialize_ident(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: 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;