Check for uninitialized fields in templates
See "**4.1.3 Uninitialized field in templates**"
**Problem statement:**
In certain cases, optional template fields, being left uninitialized, are only noticed in runtime if the fields are ever used. The partial definition of a template can be a source of issues on execution. Currently T3Qv2 does not raise any error if a field is not initialized in a template.
**New requirement specification:**
Raise a warning on templates not fully defined regardless of the field not defined is optional.
**Examples:**
Not fully defined template _`cs_EventDefinitions_eventA1_Errors`_ that should raise warnings where fields are missing from its definition.
```ttcn3
module checkNoUninitializedFieldsInTemplates {
//import from EXAMPLES_Definitions language "ASN.1:2002" all;
//manually defined types
type record EventDefinitions {
EventIds eventIds,
integer fieldint,
boolean fieldbool,
integer fieldextmandat,
integer fieldextopt optional,
boolean fieldextboolopt optional
}
//this is probably a union?
type record EventId {
A1 eventA1
}
type record A1 {
boolean fieldeventA1
}
type record of EventId EventIds
template ( value ) EventDefinitions cs_EventDefinitions_eventA1_Errors (
boolean p_FieldeventA1 := true ,
integer p_Fieldint := 0 ,
boolean p_Fieldbool := true , //integer p_Fieldextmandat := 1,
integer p_Fieldextopt := 2
/*,
template (omit) boolean p_Fieldextboolopt := omit
*/
) := {
eventIds := {
eventA1 := {
fieldeventA1 := p_FieldeventA1
}
},
fieldint := p_Fieldint ,
fieldbool := p_Fieldbool ,
//fielextmandat := p_Fieldextmandat, -> missing field in not seen by T3Q
fieldextopt := p_Fieldextopt
//fieldextboolopt := p_Fieldextboolopt -> missing field in not seen by T3Q
}
//correct version: should not raise warinings
template ( value ) EventDefinitions cs_EventDefinitions_eventA1 (
boolean p_FieldeventA1 := true ,
integer p_Fieldint := 0 ,
boolean p_Fieldbool := true,
integer p_Fieldextmandat := 1 ,
integer p_Fieldextopt := 2 ,
template ( omit ) boolean p_Fieldextboolopt := omit
) := {
eventIds := {
eventA1 := {
fieldeventA1 := p_FieldeventA1
}
},
fieldint := p_Fieldint ,
fieldbool := p_Fieldbool ,
fieldextmandat := p_Fieldextmandat ,
fieldextopt := p_Fieldextopt ,
fieldextboolopt := p_Fieldextboolopt
}
}
```
issue