]> git.lizzy.rs Git - rust.git/commitdiff
Give a special error message when [de]serializing fails because the interner isn...
authorPaul Stansifer <paul.stansifer@gmail.com>
Thu, 23 Aug 2012 18:47:35 +0000 (11:47 -0700)
committerPaul Stansifer <paul.stansifer@gmail.com>
Thu, 23 Aug 2012 18:47:35 +0000 (11:47 -0700)
src/libsyntax/ast.rs

index ae20573802b5423dccb3dd8d86f0249f0c910b4e..19b7e532bc2044013703b0d95df1646eb6c94a81 100644 (file)
@@ -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;