Sha256: f465d1e8cc119082eb79c164b5cd780a370821e8bf56585b287dd3b51fc4a542

Contents?: true

Size: 1.14 KB

Versions: 31

Compression:

Stored size: 1.14 KB

Contents

use syn::{
    visit_mut::{visit_file_mut, visit_item_mod_mut, VisitMut},
    File, Item, ItemMod,
};

pub(super) fn sort_semantically(file: &mut File) {
    Visitor.visit_file_mut(file)
}

struct Visitor;

impl VisitMut for Visitor {
    fn visit_file_mut(&mut self, file: &mut File) {
        visit_items(&mut file.items);
        visit_file_mut(self, file)
    }

    fn visit_item_mod_mut(&mut self, item_mod: &mut ItemMod) {
        if let Some((_, ref mut items)) = item_mod.content {
            visit_items(items);
        }
        visit_item_mod_mut(self, item_mod)
    }
}

fn visit_items(items: &mut [Item]) {
    items.sort_by_key(|item| match item {
        Item::Type(_) => 0,
        Item::Struct(_) => 1,
        Item::Const(_) => 2,
        Item::Fn(_) => 3,
        Item::Enum(_) => 4,
        Item::Union(_) => 5,
        Item::Static(_) => 6,
        Item::Trait(_) => 7,
        Item::TraitAlias(_) => 8,
        Item::Impl(_) => 9,
        Item::Mod(_) => 10,
        Item::Use(_) => 11,
        Item::Verbatim(_) => 12,
        Item::ExternCrate(_) => 13,
        Item::ForeignMod(_) => 14,
        Item::Macro(_) => 15,
        _ => 18,
    });
}

Version data entries

31 entries across 31 versions & 1 rubygems

Version Path
wasmtime-30.0.2 ./ext/cargo-vendor/bindgen-0.69.5/codegen/postprocessing/sort_semantically.rs
wasmtime-29.0.0 ./ext/cargo-vendor/bindgen-0.69.5/codegen/postprocessing/sort_semantically.rs
wasmtime-28.0.0 ./ext/cargo-vendor/bindgen-0.69.5/codegen/postprocessing/sort_semantically.rs
wasmtime-27.0.0 ./ext/cargo-vendor/bindgen-0.69.5/codegen/postprocessing/sort_semantically.rs
wasmtime-26.0.0 ./ext/cargo-vendor/bindgen-0.69.5/codegen/postprocessing/sort_semantically.rs
wasmtime-25.0.2 ./ext/cargo-vendor/bindgen-0.69.4/codegen/postprocessing/sort_semantically.rs
wasmtime-25.0.1 ./ext/cargo-vendor/bindgen-0.69.4/codegen/postprocessing/sort_semantically.rs
wasmtime-25.0.0 ./ext/cargo-vendor/bindgen-0.69.4/codegen/postprocessing/sort_semantically.rs
wasmtime-24.0.0 ./ext/cargo-vendor/bindgen-0.69.4/codegen/postprocessing/sort_semantically.rs
wasmtime-23.0.2 ./ext/cargo-vendor/bindgen-0.69.1/codegen/postprocessing/sort_semantically.rs
wasmtime-22.0.0 ./ext/cargo-vendor/bindgen-0.69.1/codegen/postprocessing/sort_semantically.rs
wasmtime-21.0.1 ./ext/cargo-vendor/bindgen-0.69.1/codegen/postprocessing/sort_semantically.rs
wasmtime-20.0.2 ./ext/cargo-vendor/bindgen-0.69.1/codegen/postprocessing/sort_semantically.rs
wasmtime-20.0.0 ./ext/cargo-vendor/bindgen-0.69.1/codegen/postprocessing/sort_semantically.rs
wasmtime-18.0.3 ./ext/cargo-vendor/bindgen-0.69.1/codegen/postprocessing/sort_semantically.rs
wasmtime-17.0.1 ./ext/cargo-vendor/bindgen-0.69.1/codegen/postprocessing/sort_semantically.rs
wasmtime-17.0.0 ./ext/cargo-vendor/bindgen-0.69.1/codegen/postprocessing/sort_semantically.rs
wasmtime-16.0.0 ./ext/cargo-vendor/bindgen-0.69.1/codegen/postprocessing/sort_semantically.rs
wasmtime-15.0.1 ./ext/cargo-vendor/bindgen-0.69.1/codegen/postprocessing/sort_semantically.rs
wasmtime-15.0.0 ./ext/cargo-vendor/bindgen-0.69.1/codegen/postprocessing/sort_semantically.rs