@@ -343,28 +343,33 @@ macro_rules! interner_key (
343
343
)
344
344
345
345
fn mk_ident_interner ( ) -> @ident_interner {
346
- /* the indices here must correspond to the numbers in special_idents */
347
- let init_vec = ~[ @~"_", @~"anon", @~"drop", @~"", @~"unary", @~"!",
348
- @~"[ ] ", @~"unary-", @~" __extensions__", @~"self ",
349
- @~"item", @~"block", @~"stmt", @~"pat", @~"expr",
350
- @~"ty", @~"ident", @~"path", @~"tt", @~"matchers",
351
- @~"str", @~"TyVisitor ", @~"arg", @~"descrim",
352
- @~"__rust_abi", @~"__rust_stack_shim", @~"TyDesc ",
353
- @~"dtor", @~"main", @~"<opaque>", @~" blk", @~"static ",
354
- @~"intrinsic", @~"__foreign_mod__"] ;
355
-
356
- let rv = @ident_interner {
357
- interner : interner:: mk_prefill :: < @~str > ( init_vec)
358
- } ;
359
-
360
- /* having multiple interners will just confuse the serializer */
361
346
unsafe {
362
- assert task:: local_data:: local_data_get ( interner_key ! ( ) ) . is_none ( )
363
- } ;
364
- unsafe {
365
- task:: local_data:: local_data_set ( interner_key ! ( ) , @rv)
366
- } ;
367
- rv
347
+ match task:: local_data:: local_data_get ( interner_key ! ( ) ) {
348
+ Some ( interner) => * interner,
349
+ None => {
350
+ // the indices here must correspond to the numbers in
351
+ // special_idents.
352
+ let init_vec = ~[
353
+ @~"_", @~"anon", @~"drop", @~"", @~"unary", @~"!",
354
+ @~"[ ] ", @~"unary-", @~" __extensions__", @~"self ",
355
+ @~"item", @~"block", @~"stmt", @~"pat", @~"expr",
356
+ @~"ty", @~"ident", @~"path", @~"tt", @~"matchers",
357
+ @~"str", @~"TyVisitor ", @~"arg", @~"descrim",
358
+ @~"__rust_abi", @~"__rust_stack_shim", @~"TyDesc ",
359
+ @~"dtor", @~"main", @~"<opaque>", @~" blk", @~"static ",
360
+ @~"intrinsic", @~"__foreign_mod__"
361
+ ] ;
362
+
363
+ let rv = @ident_interner {
364
+ interner : interner:: mk_prefill ( init_vec)
365
+ } ;
366
+
367
+ task:: local_data:: local_data_set ( interner_key ! ( ) , @rv) ;
368
+
369
+ rv
370
+ }
371
+ }
372
+ }
368
373
}
369
374
370
375
/* for when we don't care about the contents; doesn't interact with TLD or
0 commit comments