HermitCrab: analysis metathesis drops the middle context that synthesis keeps
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 78/100
Línea de trabajo
Read the constructor in src/SIL.Machine.Morphology.HermitCrab/PhonologicalRules/AnalysisMetathesisRuleSpec.cs alongside SynthesisMetathesisRuleSpec.ApplyRhs to understand how the middle context is handled. Keep that context in the analysis pattern and add the metathesis-middle-context fixture to the conformance suite; done means parsing kita finds root tika and the conformance case passes.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
AnalysisMetathesisRuleSpec drops the segments between the two switch groups, but SynthesisMetathesisRuleSpec keeps them, so hc.dll never un-applies a metathesis rule with a middle context. For a rule t i k -> k i t, root tika synthesizes to kita, yet parsing kita returns only the analysis of root kita and never tika.
Where: the constructor of src/SIL.Machine.Morphology.HermitCrab/PhonologicalRules/AnalysisMetathesisRuleSpec.cs rebuilds the pattern from the nodes before the first Group, the two switch groups, and the nodes after the last Group (TakeWhile(n => !(n is Group)) from each end). Every node between the groups is lost. SynthesisMetathesisRuleSpec.ApplyRhs (MoveNodesAfter) leaves the middle node in its slot.
Reachable from FieldWorks: a rule's StrucChange can hold a context between the switches.
Repro: fixture conformance-staging/edge-cases/metathesis-middle-context in sillsdev/pangloss (#162). On machine 4d9b454d, kita gives KITA|kita only, and tika gives no analysis.
PanGloss: PanGloss keeps the middle context in analysis and finds root tika. The conformance case will expect that once this is fixed.
Next: keep the middle context in the analysis pattern and add the fixture to the conformance suite.
🤖 Generated with Claude Code
- Lenguaje dominante
- C#
- Estrellas
- 29
- Forks
- 16
- Merge medio
- 3 d 20 h
- PR fusionados (30 d)
- 12
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de sillsdev/machine
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 1 día
-
porting
sillsdev/machine#626 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
porting
sillsdev/machine#625 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
HermitCrab analysis can spin on simultaneous rewrites with incompatible environmentsPosiblemente ocupada @johnml1135 la tomó hoy. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 58/100
Los mantenedores suelen responder en 1 día
-
Hermit Crab
Dificultad 2/5 1-3 horas Aptitud para principiantes 45/100
Los mantenedores suelen responder en 1 día
Todos los issues de sillsdev/machine
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
sebastienros/jint#4531 ·
Los mantenedores suelen responder en 1 día
-
readme links to old Azure DevopsAbierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 65/100
NLog/NLog.MailKit#264 ·
Los mantenedores suelen responder en 1 día
-
Unable to buildAbiertoBug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
Assert.That on a null non-generic IEnumerable throws ArgumentNullException, so IsNull() cannot passAbiertobug P2
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
area/automation area/sdk kind/bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
unoplatform/uno.templates#2406 ·
Los mantenedores suelen responder en 1 día