# @TEST-EXEC: zeek -b %INPUT

# To support documentation of type aliases, Zeek clones declared types
# (see add_type() in Var.cc) in order to keep track of type names and aliases.
# This test makes sure that the cloning is done in a way that's compatible
# with adding fields to a record type -- we want to be sure that cloning
# a type that contains record types will correctly see field additions to
# those contained-records.

type my_record: record {
    field1: bool;
    field2: string;
};

type super_record: record {
    rec: my_record;
};
type my_table: table[count] of my_record;
type my_vector: vector of my_record;

redef record my_record += {
    field3: count &optional;
};

global a: my_record;
global b: super_record;
global c: my_table;
global d: my_vector;

function test_func()
    {
    a?$field3;
    b$rec?$field3;
    c[0]$field3;
    d[0]$field3;
    }
