From 2f9319d7fdb18c12c5cb8947d0c9d611621d9995 Mon Sep 17 00:00:00 2001 From: aarne Date: Thu, 11 Jan 2007 11:42:39 +0000 Subject: [PATCH] fix in etaexpand optimization --- lib/resource-1.0/finnish/ExtraFin.gf | 2 +- src/GF/Compile/Optimize.hs | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/resource-1.0/finnish/ExtraFin.gf b/lib/resource-1.0/finnish/ExtraFin.gf index e6b95097d..851080628 100644 --- a/lib/resource-1.0/finnish/ExtraFin.gf +++ b/lib/resource-1.0/finnish/ExtraFin.gf @@ -35,7 +35,7 @@ concrete ExtraFin of ExtraFinAbs = CatFin ** open ResFin, MorphoFin, Coordinatio i_implicPron = mkPronoun [] "minun" "minua" "minuna" "minuun" Sg P1 ; whatPart_IP = { s = table { - NPCase Nom | NPAcc => "mitä" ; + NPCase Nom | NPAcc => "mitä" ; c => whatSg_IP.s ! c } ; n = Sg diff --git a/src/GF/Compile/Optimize.hs b/src/GF/Compile/Optimize.hs index 6cbd302f5..61e1615f0 100644 --- a/src/GF/Compile/Optimize.hs +++ b/src/GF/Compile/Optimize.hs @@ -167,8 +167,12 @@ partEval opts gr (context, val) trm = errIn ("parteval" +++ prt_ trm) $ do etaExpand su t = do t' <- comp su t case t' of - R _ -> comp su t' --- return t' wo noexpand... + R _ | rightType t' -> comp su t' --- return t' wo noexpand... _ -> recordExpand val t' >>= comp su + -- don't eta expand records of right length (correct by type checking) + rightType t = case (t,val) of + (R rs, RecType ts) -> length rs == length ts + _ -> False outCase subst t = do pts <- getParams context