//===================
var v_655: {p_0: number} = {p_0: 1.1};
v_655.p_0 = 1.1;
var v_656: {p_0: number} = {p_0: 1.1};
v_656.p_0 = 1.1;
var v_657: {p_0: number, p_1?: string} = v_656;
v_657.p_1 = "foo";
var v_658: {p_0?: number} = v_657;
v_655.p_0 = v_655.p_0;
var v_659: {p_0?: number, p_1?: number} = v_656;
v_659.p_0 = v_655.p_0;
assert_type(v_655, {p_0: 1.1});
assert_type(v_656, {p_0: 1.1});
assert_type(v_657, {p_0: 1.1, p_1: "foo"});
assert_type(v_658, {p_0: 1.1});
assert_type(v_659, {p_0: 1.1, p_1: 1.1});
/*
Env:
v_659 : {p_0?: number, p_1?: number}
"foo" : string
{p_0: v_655.p_0} : {p_0: number}
v_657 : {p_0: number, p_1?: string}
number
v_658 : {p_0?: number}
v_655 : {p_0: number}
{p_0?: number}
{p_0: number}
{p_0: "foo", p_1: 1.1} : {p_0: string, p_1: number}
v_656 : {p_0: number}
{p_0: number, p_1?: string}
{p_0: string}
{p_0: number, p_1?: number}
{p_0?: string}
v_655.p_0 : number
{p_0: "foo"} : {p_0: string}
{p_0: string, p_1: number}
string
{p_0: 1.1} : {p_0: number}
{p_0?: string, p_1: number}
1.1 : number
{p_0?: number, p_1?: number}
*/

/*
Error: 
Failed to run program:
Not equal: Actual : foo != Expected: 1.1

*/
//===================
var v_300: {p_0?: number, p_1?: string} = {p_0: 1.1};
v_300.p_0 = 1.1;
var v_301: {p_0?: number} = {p_0: 1.1, p_1: "foo"};
v_301.p_0 = 1.1;
var v_302: {p_0?: string} = {p_0: "foo"};
v_302.p_0 = "foo";
var v_303: {p_0?: number, p_1?: string} = v_301;
v_303.p_1 = "foo";
var v_304: {p_0: number} = {p_0: 1.1};
v_304.p_0 = 1.1;
assert_type(v_300, {p_0: 1.1, p_1: "foo"});
assert_type(v_301, {p_0: 1.1});
assert_type(v_302, {p_0: "foo"});
assert_type(v_303, {p_0: 1.1, p_1: "foo"});
assert_type(v_304, {p_0: 1.1});
/*
Env:
v_304 : {p_0: number}
v_300 : {p_0?: number, p_1?: string}
{p_0: string}
v_301 : {p_0?: number}
{p_0: "foo"} : {p_0: string}
"foo" : string
number
string
{p_0?: number}
v_302 : {p_0?: string}
{p_0?: string}
v_303 : {p_0?: number, p_1?: string}
{p_0?: number, p_1?: string}
{p_0: 1.1} : {p_0: number}
1.1 : number
{p_0: 1.1, p_1: "foo"} : {p_0: number, p_1: string}
{p_0: number, p_1: string}
{p_0: number}
*/



/*
Error: 
Failed to run program:
Missing property: p_1

*/
