vb6parse 1.2.1

vb6parse is a library for parsing and analyzing VB6 code, from projects, to controls, to modules, and forms.
Documentation
use vb6parse::*;

#[test]
fn select_case_nested_pre_directive_if() {
    let source = r"
Sub Test()
    Select Case x
        Case 1
            If x > 0 Then
#If DEBUG Then
                a = 1
#Else
                a = 2
#End If
            End If
        Case Else
            b = 2
    End Select
End Sub
";

    let (cst_opt, failures) = ConcreteSyntaxTree::from_text("test.bas", source).unpack();
    assert!(
        failures.is_empty(),
        "unexpected parse failures: {failures:?}"
    );

    let cst = cst_opt.expect("CST should be parsed");
    let tree = cst.to_serializable();
    let text = format!("{tree:#?}");

    assert!(
        !text.contains("Unknown"),
        "should not contain Unknown tokens, found:\n{text}"
    );
    assert!(
        text.contains("CaseElseClause"),
        "should contain a CaseElseClause node, found:\n{text}"
    );
}