//! returns: 1
//! Test equality comparison of optional records.

record Inner {
    start: i32,
    end: i32,
}

record Outer {
    item: ?Inner,
}

@default fn main() -> bool {
    let outerA = Outer { item: Inner { start: 3, end: 9 } };
    let outerB = Outer { item: Inner { start: 3, end: 9 } };

    if outerA != outerB {
        return false;
    }

    let outerC = Outer { item: Inner { start: 4, end: 6 } };
    if outerA == outerC {
        return false;
    }

    let mut optA: ?Outer = nil;
    let mut optB: ?Outer = nil;
    let mut optDiff: ?Outer = nil;
    let mut optNil: ?Outer = nil;

    optA = outerA;
    optB = outerB;
    optDiff = outerC;

    if optA != optB {
        return false;
    }
    if optA == optDiff {
        return false;
    }
    if optA == optNil {
        return false;
    }
    return true;
}
