/**
   Member pointers
 */
module contract.member;


import contract;


@Tags("contract")
@("member object pointer")
@safe unittest {
    const tu = parse(
        Cpp(
            q{
                struct Struct { int i; };
                int Struct::* globalStructInt;
            }
        )
    );

    tu.children.length.shouldEqual(2);

    const struct_  = tu.children[0];
    struct_.kind.should == Cursor.Kind.StructDecl;

    const global = tu.children[1];
    global.kind.should == Cursor.Kind.VarDecl;

    const globalType = global.type;
    globalType.kind.should == Type.Kind.MemberPointer;

    const pointee = globalType.pointee;
    pointee.kind.should == Type.Kind.Int;
}