/*****************************************************************
 ** @author   STF 409
 ** @version  0.0.1
 ** @purpose  1:15.6.2, Ensure that complement lists on the right-hand side of an assignment are not acceped.
 ** @verdict  pass reject
 *****************************************************************/

module NegSem_150602_ReferencingRecordAndSetFields_004 {

type component GeneralComp { }

type record MyRecordTwo {
	integer g1,
	MyRecordTwo g2 optional
}

type record MyRecordOne {
	integer f1 optional,
	MyRecordTwo f2 optional
}

testcase TC_NegSem_150602_ReferencingRecordAndSetFields_004() runs on GeneralComp {
	var template MyRecordOne m_R1 := complement(
	{
		f1 := omit,
		f2 :=
		{
			g1 := 0,
			g2 := omit
		}
	},
	{
		f1 := 5,
		f2 :=
		{
			g1 := 1,
			g2 :=
			{
				g1 := 2,
				g2 := omit
			}
		}
	}
	);

	// shall cause an error as a complement list is assigned to m_R1
	var template MyRecordTwo m_R2 := m_R1.f2;
	m_R2 := m_R1.f2.g2;
	m_R2 := m_R1.f2.g2.g2;
	// if we get here, something must be wrong
	setverdict(fail);
}

control{
    execute(TC_NegSem_150602_ReferencingRecordAndSetFields_004());
}


}