/*****************************************************************
 ** @author   STF 409
 ** @version  0.0.1
 ** @purpose  1:15.5, Ensure that a modified template does not omit possible parameters introduced in any modification step.
 ** @verdict  pass reject
 *****************************************************************/

module NegSem_1505_ModifiedTemplates_003 {

type record of integer MyMessageType;

type record MyMessageType {
	integer field1,
	charstring field2,
	boolean field3
}

template MyMessageType m_templateOne(integer p_intValue) := {
	field1 := p_intValue,
	field2 := "Hello World",
	field3 := true
}

template MyMessageType m_templateTwo(integer p_intValue, boolean p_boolValue) modifies m_templateOne := {
	field1 := p_intValue,
	field3 := p_boolValue
}

// illegal as it is missing the (boolean p_boolValue) formal parameter introduced in the previous
// modification step.
template MyMessageType m_templateThree(integer p_intValue) modifies m_templateTwo := {
	field2 := "foobar"
}


}