Skip to content
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

abolish ICE when pretty-printing async block #54777

Merged
merged 1 commit into from
Oct 4, 2018

Commits on Oct 3, 2018

  1. abolish ICE when pretty-printing async block

    Joshua Netterfield reported an ICE when the unused-parentheses lint
    triggered around an async block (rust-lang#54752). In order to compose an
    autofixable suggestion, the lint invokes the pretty-printer on the
    unnecessarily-parenthesized expression. (One wonders why the lint
    doesn't just use `SourceMap::span_to_snippet` instead, to preserve the
    formatting of the original source?—but for that, you'd have to ask the
    author of 5c9f806.)
    
    But then the pretty-printer panics when trying to call `<pprust::State
    as PrintState>::end` when `State.boxes` is empty. Empirically, the
    problem would seem to be solved if we start some "boxes" beforehand in
    the `ast::ExprKind::Async` arm of the big match in
    `print_expr_outer_attr_style`, exactly like we do in the
    immediately-preceding match arm for `ast::ExprKind::Block`—it would
    seem pretty ("pretty") reasonable for the pretty-printing of async
    blocks to work a lot like the pretty-printing of ordinary non-async
    blocks, right??
    
    Of course, it would be shamefully cargo-culty to commit code on the
    basis of this kind of mere reasoning-by-analogy (in contrast to
    understanding the design of the pretty-printer in such detail that the
    correctness of the patch is comprehended with all the lucid certainty
    of mathematical proof, rather than being merely surmised by
    intuition). But maybe we care more about fixing the bug with high
    probability today, than with certainty in some indefinite hypothetical
    future?  Maybe the effort is worth a fifth of a shirt??
    
    Humbly resolves rust-lang#54752.
    zackmdavis committed Oct 3, 2018
    Configuration menu
    Copy the full SHA
    1081bbb View commit details
    Browse the repository at this point in the history