summary refs log tree commit diff
path: root/compiler/rustc_serialize/src/serialize.rs
AgeCommit message (Collapse)AuthorLines
2022-04-18Remove unused macro rulesest31-1/+0
2022-04-05errors: implement fallback diagnostic translationDavid Wood-0/+14
This commit updates the signatures of all diagnostic functions to accept types that can be converted into a `DiagnosticMessage`. This enables existing diagnostic calls to continue to work as before and Fluent identifiers to be provided. The `SessionDiagnostic` derive just generates normal diagnostic calls, so these APIs had to be modified to accept Fluent identifiers. In addition, loading of the "fallback" Fluent bundle, which contains the built-in English messages, has been implemented. Each diagnostic now has "arguments" which correspond to variables in the Fluent messages (necessary to render a Fluent message) but no API for adding arguments has been added yet. Therefore, diagnostics (that do not require interpolation) can be converted to use Fluent identifiers and will be output as before.
2022-02-22Delete Decoder::read_unitMark Rousskov-6/+2
2022-02-22Provide copy-free access to raw Decoder bytesMark Rousskov-1/+1
2022-02-22Provide raw &str access from DecoderMark Rousskov-2/+2
2022-02-20Delete Decoder::read_mapMark Rousskov-8/+0
2022-02-20Delete Decoder::read_seqMark Rousskov-28/+18
2022-02-20Delete Decoder::read_enum_variantMark Rousskov-14/+5
2022-02-20Delete Decoder::read_map_elt_valMark Rousskov-8/+0
2022-02-20Delete Decoder::read_map_elt_keyMark Rousskov-8/+0
2022-02-20Delete Decoder::read_optionMark Rousskov-13/+5
2022-02-20Delete Decoder::read_seq_eltMark Rousskov-13/+2
2022-02-20Delete Decoder::read_tuple_argMark Rousskov-12/+1
2022-02-20Delete Decoder::read_tupleMark Rousskov-15/+3
2022-02-20Use count! macro in tuple length computationMark Rousskov-3/+2
2022-02-20Delete Decoder::read_struct_fieldMark Rousskov-8/+0
2022-02-20Delete Decoder::read_structMark Rousskov-8/+0
2022-02-20Delete read_enum_variant_argMark Rousskov-10/+2
2022-02-20Delete read_enum_variant namesMark Rousskov-3/+3
2022-02-20Delete Decoder::read_enumMark Rousskov-21/+8
2022-01-22Make `Decodable` and `Decoder` infallible.Nicholas Nethercote-107/+112
`Decoder` has two impls: - opaque: this impl is already partly infallible, i.e. in some places it currently panics on failure (e.g. if the input is too short, or on a bad `Result` discriminant), and in some places it returns an error (e.g. on a bad `Option` discriminant). The number of places where either happens is surprisingly small, just because the binary representation has very little redundancy and a lot of input reading can occur even on malformed data. - json: this impl is fully fallible, but it's only used (a) for the `.rlink` file production, and there's a `FIXME` comment suggesting it should change to a binary format, and (b) in a few tests in non-fundamental ways. Indeed #85993 is open to remove it entirely. And the top-level places in the compiler that call into decoding just abort on error anyway. So the fallibility is providing little value, and getting rid of it leads to some non-trivial performance improvements. Much of this commit is pretty boring and mechanical. Some notes about a few interesting parts: - The commit removes `Decoder::{Error,error}`. - `InternIteratorElement::intern_with`: the impl for `T` now has the same optimization for small counts that the impl for `Result<T, E>` has, because it's now much hotter. - Decodable impls for SmallVec, LinkedList, VecDeque now all use `collect`, which is nice; the one for `Vec` uses unsafe code, because that gave better perf on some benchmarks.
2022-01-22Rename `Decoder::read_nil` and `read_unit`.Nicholas Nethercote-3/+3
Because `()` is called "unit" and it makes it match `Encoder::emit_unit`.
2021-11-22Avoid generating empty closures for fieldless enumsMark Rousskov-0/+14
For many enums, this avoids generating lots of tiny stubs that need to be codegen'd and then inlined and removed by LLVM.
2021-10-15Revert "Auto merge of #89709 - clemenswasser:apply_clippy_suggestions_2, ↵Matthias Krüger-2/+2
r=petrochenkov" The PR had some unforseen perf regressions that are not as easy to find. Revert the PR for now. This reverts commit 6ae8912a3e7d2c4c775024f58a7ba4b1aedc4073, reversing changes made to 86d6d2b7389fe1b339402c1798edae8b695fc9ef.
2021-10-10Apply clippy suggestionsClemens Wasser-2/+2
2021-09-10rustc: Remove local variable IDs from `Export`sVadim Petrochenkov-0/+12
Local variables can never be exported.
2021-08-22Fix typos “a”→“an”Frank Steffahn-1/+1
2021-08-18Remove box syntax from rustc_serializeest31-1/+1
2021-06-01Remove unused functions and arguments from rustc_serializebjorn3-108/+25
2021-03-25Allow for reading raw bytes from rustc_serialize::Decoder without unsafe code.Michael Woerister-2/+1
2021-03-19Move raw bytes handling to Encoder/Decoder.Camille GILLOT-0/+3
2021-01-01rustc_serialize: specialize opaque decoding of some u8 sequencesTyson Nottingham-8/+3
2021-01-01rustc_serialize: specialize opaque encoding of some u8 sequencesTyson Nottingham-1/+1
2020-09-26Deduplicate and generalize some (de/)serializer implsOliver Scherer-23/+11
2020-08-30mv compiler to compiler/mark-0/+782