neo-decompiler 0.10.2

Neo N3 NEF decompiler: parse, disassemble, lift bytecode to high-level pseudocode and C# skeletons, with a CLI, JSON reports, and optional WebAssembly bindings.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
use super::{make_instr, BlockId, CfgBuilder, OpCode, Operand};

#[test]
fn unreachable_blocks_detect_dead_code_after_jump() {
    let instructions = vec![
        make_instr(0, OpCode::Jmp, Some(Operand::Jump(1))),
        make_instr(2, OpCode::Push0, None), // unreachable
        make_instr(3, OpCode::Ret, None),
    ];

    let cfg = CfgBuilder::new(&instructions).build();

    let unreachable = cfg.unreachable_blocks();
    assert!(unreachable.contains(&BlockId::new(1)));
    assert!(!unreachable.contains(&BlockId::ENTRY));
    assert!(cfg.is_reachable(BlockId::ENTRY));
}