Coverage Report

Created: 2024-10-16 07:58

/rust/registry/src/index.crates.io-6f17d22bba15001f/wasm-encoder-0.4.1/src/modules.rs
Line
Count
Source (jump to first uncovered line)
1
use super::*;
2
3
/// An encoder for the module section.
4
///
5
/// Note that this is part of the [module linking proposal][proposal] and is
6
/// not currently part of stable WebAssembly.
7
///
8
/// [proposal]: https://github.com/webassembly/module-linking
9
///
10
/// # Example
11
///
12
/// ```
13
/// use wasm_encoder::{ModuleSection, Module};
14
///
15
/// let mut modules = ModuleSection::new();
16
/// modules.module(&Module::new());
17
/// modules.module(&Module::new());
18
///
19
/// let mut module = Module::new();
20
/// module.section(&modules);
21
///
22
/// let wasm_bytes = module.finish();
23
/// ```
24
#[derive(Clone, Debug)]
25
pub struct ModuleSection {
26
    bytes: Vec<u8>,
27
    num_added: u32,
28
}
29
30
impl ModuleSection {
31
    /// Create a new code section encoder.
32
0
    pub fn new() -> ModuleSection {
33
0
        ModuleSection {
34
0
            bytes: vec![],
35
0
            num_added: 0,
36
0
        }
37
0
    }
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection>::new
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection>::new
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection>::new
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection>::new
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection>::new
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection>::new
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection>::new
38
39
    /// Writes a dmodule into this module code section.
40
0
    pub fn module(&mut self, module: &Module) -> &mut Self {
41
0
        self.bytes.extend(
42
0
            encoders::u32(u32::try_from(module.bytes.len()).unwrap())
43
0
                .chain(module.bytes.iter().copied()),
44
0
        );
45
0
        self.num_added += 1;
46
0
        self
47
0
    }
48
}
49
50
impl Section for ModuleSection {
51
0
    fn id(&self) -> u8 {
52
0
        SectionId::Module.into()
53
0
    }
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection as wasm_encoder::Section>::id
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection as wasm_encoder::Section>::id
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection as wasm_encoder::Section>::id
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection as wasm_encoder::Section>::id
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection as wasm_encoder::Section>::id
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection as wasm_encoder::Section>::id
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection as wasm_encoder::Section>::id
54
55
0
    fn encode<S>(&self, sink: &mut S)
56
0
    where
57
0
        S: Extend<u8>,
58
0
    {
59
0
        let num_added = encoders::u32(self.num_added);
60
0
        let n = num_added.len();
61
0
        sink.extend(
62
0
            encoders::u32(u32::try_from(n + self.bytes.len()).unwrap())
63
0
                .chain(num_added)
64
0
                .chain(self.bytes.iter().copied()),
65
0
        );
66
0
    }
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection as wasm_encoder::Section>::encode::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection as wasm_encoder::Section>::encode::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection as wasm_encoder::Section>::encode::<_>
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection as wasm_encoder::Section>::encode::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection as wasm_encoder::Section>::encode::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection as wasm_encoder::Section>::encode::<alloc::vec::Vec<u8>>
Unexecuted instantiation: <wasm_encoder::modules::ModuleSection as wasm_encoder::Section>::encode::<alloc::vec::Vec<u8>>
67
}