Skip to content

Commit 129c4b6

Browse files
committed
Give a special error message when [de]serializing fails because the interner isn't in TLS yet.
1 parent 89bbaff commit 129c4b6

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/libsyntax/ast.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,20 @@ fn deserialize_span<D>(_d: D) -> span {
3131
type spanned<T> = {node: T, span: span};
3232

3333
fn serialize_ident<S: serializer>(s: S, i: ident) {
34-
let intr = unsafe{ task::local_data_get(parse::token::interner_key) };
34+
let intr = match unsafe{task::local_data_get(parse::token::interner_key)}{
35+
none => fail ~"serialization: TLS interner not set up",
36+
some(intr) => intr
37+
};
3538

36-
s.emit_str(*(*intr.get()).get(i));
39+
s.emit_str(*(*intr).get(i));
3740
}
3841
fn deserialize_ident<D: deserializer>(d: D) -> ident {
39-
let intr = unsafe{ task::local_data_get(parse::token::interner_key) };
42+
let intr = match unsafe{task::local_data_get(parse::token::interner_key)}{
43+
none => fail ~"deserialization: TLS interner not set up",
44+
some(intr) => intr
45+
};
4046

41-
(*intr.get()).intern(@d.read_str())
47+
(*intr).intern(@d.read_str())
4248
}
4349

4450
type ident = token::str_num;

0 commit comments

Comments
 (0)