Description
The JSON for -Zast-json
is broken because the id
field for attributes serializes to nothing.
An empty library produces the following:
{"module":{"inner":{"lo":0,"hi":0},"items":[{"attrs":[{"kind":{"variant":"Normal","fields":[{"path":{"span":{"lo":0,"hi":0},"segments":[{"ident":{"name":"prelude_import","span":{"lo":0,"hi":0}},"id":3,"args":null}]},"args":"Empty"}]},"id":,"style":"Outer","span":{"lo":0,"hi":0}}],"id":4,"span":{"lo":0,"hi":0},"vis":{"node":"Inherited","span":{"lo":0,"hi":0}},"ident":{"name":"","span":{"lo":0,"hi":0}},"kind":{"variant":"Use","fields":[{"prefix":{"span":{"lo":0,"hi":0},"segments":[{"ident":{"name":"{{root}}","span":{"lo":0,"hi":0}},"id":5,"args":null},{"ident":{"name":"std","span":{"lo":0,"hi":0}},"id":6,"args":null},{"ident":{"name":"prelude","span":{"lo":0,"hi":0}},"id":7,"args":null},{"ident":{"name":"v1","span":{"lo":0,"hi":0}},"id":8,"args":null}]},"kind":"Glob","span":{"lo":0,"hi":0}}]},"tokens":null},{"attrs":[{"kind":{"variant":"Normal","fields":[{"path":{"span":{"lo":0,"hi":0},"segments":[{"ident":{"name":"macro_use","span":{"lo":0,"hi":0}},"id":9,"args":null}]},"args":"Empty"}]},"id":,"style":"Outer","span":{"lo":0,"hi":0}}],"id":10,"span":{"lo":0,"hi":0},"vis":{"node":"Inherited","span":{"lo":0,"hi":0}},"ident":{"name":"std","span":{"lo":0,"hi":0}},"kind":{"variant":"ExternCrate","fields":[null]},"tokens":null}],"inline":true},"attrs":[],"span":{"lo":0,"hi":0},"proc_macros":[]}
The important bit "id":,
which is clearly not valid JSON.
It looks like the AttrId
serialization was removed in #70215.
I'm not sure what a solution is here. I'm guessing AST serialization is used elsewhere, where this field isn't needed. I'm not too familiar with rustc_serialize
, so I'm not sure if it has something equivalent to #[serde(skip)]
.
rustc 1.44.0-nightly (b543afca9 2020-04-05)
This issue has been assigned to @JOE1994 via this comment.
Activity
petrochenkov commentedon Apr 16, 2020
Looks like the encoding/decoding change from #70215 needs to be reverted.
Reverting should be ok because
emit_unit
andread_nil
don't do anything anyway (at least when inlined) during metadata encoding and decoding.The change is trivial, so marking this as E-easy, but if it's not done until the weekend I'll submit the PR myself.
JOE1994 commentedon Apr 17, 2020
@rustbot claim
Rollup merge of rust-lang#71284 - JOE1994:serialize_id, r=petrochenkov
Rollup merge of rust-lang#71284 - JOE1994:serialize_id, r=petrochenkov
Rollup merge of rust-lang#71284 - JOE1994:serialize_id, r=petrochenkov