summaryrefslogtreecommitdiff
path: root/src/GF/API.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/GF/API.hs')
-rw-r--r--src/GF/API.hs13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/GF/API.hs b/src/GF/API.hs
index 906bd062f..9ad5c7a3f 100644
--- a/src/GF/API.hs
+++ b/src/GF/API.hs
@@ -372,17 +372,18 @@ wrapByFun opts gr f t =
g = grammar gr
applyTransfer :: Options -> GFGrammar -> [(Ident,T.Env)] ->
- (Maybe Ident,Ident) -> Tree -> Tree
-applyTransfer opts gr trs (mm,f) t =
- err (const t) id $ annotate g t'
+ (Maybe Ident,Ident) -> Tree -> Err [Tree]
+applyTransfer opts gr trs (mm,f) t = mapM (annotate g) ts'
where
- t' = qualifTerm (absId gr) $ trans tr f $ tree2exp t
+ ts' = map (qualifTerm (absId gr)) $ trans tr f $ tree2exp t
g = grammar gr
tr = case mm of
Just m -> maybe empty id $ lookup m trs
_ -> ifNull empty (snd . head) trs
-
- trans tr f = core2exp . T.evaluateExp tr . exp2core f
+ -- FIXME: if the returned value is a list,
+ -- return a list of trees
+ trans :: T.Env -> Ident -> Exp -> [Exp]
+ trans tr f = (:[]) . core2exp . T.evaluateExp tr . exp2core f
empty = T.builtin
{-