/*****************************************************************
 ** @author   STF 487
 ** @version  0.0.1
 ** @purpose  1:15.6.5, Ensure that template variables does not allow referencing alternatives inside an union with omit
 ** @verdict  pass reject
 *****************************************************************/

 //Restriction a)
    /*referencing an alternative of a union template or template field to which Omit, AnyValueOrNone,
     * a template list or a complemented list is assigned, at the right hand side of an assignment, shall cause an error.*/



module NegSem_150605_Referencing_union_alternatives_001 {

    type union My_Union {
        integer   u1,
        float     u2
    }

    type record ExampleType {	// Exampletype record with union
	    integer a,
	    My_Union b optional
       }



    type component GeneralComp {  }


    testcase TC_NegSem_150605_Referencing_union_alternatives_001() runs on GeneralComp {




    var template ExampleType m_template;
    var template integer m_template_2;

    //assign values to template:

		m_template.a:=10;
		m_template.b:= omit;

		m_template_2 := m_template.b.u1;		//error: omit

      setverdict(pass);

 }

    control{
        execute(TC_NegSem_150605_Referencing_union_alternatives_001());
    }
}