Skip to content

Fixing json decoding for enums, global type constraints, pretty printing debug!, and other fixes #5578

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 16 commits into from

Conversation

erickt
Copy link
Contributor

@erickt erickt commented Mar 27, 2013

Hey folks,

This patch series does some work on the json decoder, specifically with auto decoding of enums. Previously, we would take this code:

enum A {
    B,
    C(~str, uint)
}

and would encode a value of this enum to either ["B", []] or ["C", ["D", 123]]. I've changed this to "B" or ["C", "D", 123]. This matches the style of the O'Caml json library json-wheel. I've added tests to make sure all this work.

In order to make this change, I added passing a &[&str] vec to Decode::emit_enum_variant so the json decoder can convert the name of a variant into it's position. I also changed the impl of Encodable for Option<T> to have the right upper casing.

I also did some work on the parser, which allows for fn foo<T: ::cmp::Eq>() { ... } statements (#5572), fixed the pretty printer properly expanding debug!("...") expressions, and removed ast::expr_vstore_fixed, which doesn't appear to be used anymore.

bors added a commit that referenced this pull request Mar 28, 2013
Hey folks,

This patch series does some work on the json decoder, specifically with auto decoding of enums. Previously, we would take this code:

```
enum A {
    B,
    C(~str, uint)
}
```

and would encode a value of this enum to either `["B", []]` or `["C", ["D", 123]]`. I've changed this to `"B"` or `["C", "D", 123]`. This matches the style of the O'Caml json library [json-wheel](http://mjambon.com/json-wheel.html). I've added tests to make sure all this work.

In order to make this change, I added passing a `&[&str]` vec to `Decode::emit_enum_variant` so the json decoder can convert the name of a variant into it's position. I also changed the impl of `Encodable` for `Option<T>` to have the right upper casing.

I also did some work on the parser, which allows for `fn foo<T: ::cmp::Eq>() { ... }` statements (#5572), fixed the pretty printer properly expanding `debug!("...")` expressions, and removed `ast::expr_vstore_fixed`, which doesn't appear to be used anymore.
@bors bors closed this Mar 28, 2013
tesuji pushed a commit to tesuji/rustc that referenced this pull request Jun 4, 2020
…nsch

New lint: Use Reverse with sort_by_key

Implements  rust-lang#5578

changelog: New lint: [`unnecessary_sort_by`]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants