|
112 | 112 | <MorphologicalPhonologicalRuleFeature id="mprConcB">ConcB</MorphologicalPhonologicalRuleFeature> |
113 | 113 | <MorphologicalPhonologicalRuleFeature id="mprConcC">ConcC</MorphologicalPhonologicalRuleFeature> |
114 | 114 | <MorphologicalPhonologicalRuleFeature id="mprConcD">ConcD</MorphologicalPhonologicalRuleFeature> |
115 | | - <MorphologicalPhonologicalRuleFeatureGroup isActive="yes" matchType="any" outputType="overwrite" features="mprExtA mprExtB"><Name>ExtGroup</Name></MorphologicalPhonologicalRuleFeatureGroup> |
116 | | - <MorphologicalPhonologicalRuleFeatureGroup isActive="yes" matchType="all" outputType="overwrite" features="mprConcA mprConcB"><Name>AllConc</Name></MorphologicalPhonologicalRuleFeatureGroup> |
117 | | - <MorphologicalPhonologicalRuleFeatureGroup isActive="yes" matchType="any" outputType="overwrite" features="mprConcC mprConcD"><Name>AnyConc</Name></MorphologicalPhonologicalRuleFeatureGroup> |
118 | 115 | <!-- G5 (code-coverage-driven, second sweep): gates mrRRealTest below (SynthesisRealizationalAffixProcessRule), |
119 | 116 | a hard set-membership check so that rule can never spuriously apply to any pre-existing |
120 | 117 | word (RequiredHeadFeatures/RealizationalFeatures unify vacuously against a feature no |
121 | 118 | other entry ever sets, per the mrAgr/dabez finding above, but requiredMPRFeatures is a |
122 | 119 | genuine set-membership gate, not unification). --> |
123 | 120 | <MorphologicalPhonologicalRuleFeature id="mprRRealTest">RRealTest</MorphologicalPhonologicalRuleFeature> |
| 121 | + <MorphologicalPhonologicalRuleFeatureGroup isActive="yes" matchType="any" outputType="overwrite" features="mprExtA mprExtB"><Name>ExtGroup</Name></MorphologicalPhonologicalRuleFeatureGroup> |
| 122 | + <MorphologicalPhonologicalRuleFeatureGroup isActive="yes" matchType="all" outputType="overwrite" features="mprConcA mprConcB"><Name>AllConc</Name></MorphologicalPhonologicalRuleFeatureGroup> |
| 123 | + <MorphologicalPhonologicalRuleFeatureGroup isActive="yes" matchType="any" outputType="overwrite" features="mprConcC mprConcD"><Name>AnyConc</Name></MorphologicalPhonologicalRuleFeatureGroup> |
124 | 124 | </MorphologicalPhonologicalRuleFeatures> |
125 | 125 | <!-- G5 (code-coverage-driven, second sweep): snG5 gates mrStemReq below |
126 | 126 | (SynthesisAffixProcessRule.RequiredStemName), previously zero coverage for the FAILURE case |
127 | | - (a candidate root without the required stem name). --> |
| 127 | + (a candidate root without the required stem name). Region carries no AssignedHeadFeatures: |
| 128 | + RootAllomorph.CheckAllomorphConstraints (StemName.IsRequiredMatch) unifies the region against |
| 129 | + the word's SyntacticFeatureStruct at root-selection time, and posV7 alone (already on the |
| 130 | + region via partsOfSpeech) is all we want to require; adding a tense feature there would gate |
| 131 | + root selection itself on a feature nothing in this derivation ever assigns, masking the |
| 132 | + RequiredStemName rule-level check (SynthesisAffixProcessRule) this fixture actually targets. --> |
128 | 133 | <StemNames> |
129 | 134 | <StemName id="snG5" partsOfSpeech="posV7"> |
130 | 135 | <Name>G5Stem</Name> |
131 | 136 | <Regions> |
132 | | - <Region><AssignedHeadFeatures><FeatureValue feature="featTense" symbolValues="symPres" /></AssignedHeadFeatures></Region> |
| 137 | + <Region></Region> |
133 | 138 | </Regions> |
134 | 139 | </StemName> |
135 | 140 | </StemNames> |
|
0 commit comments