summaryrefslogtreecommitdiff
path: root/src/compiler/GF/Compile/Coding.hs
diff options
context:
space:
mode:
authorkrasimir <krasimir@chalmers.se>2010-03-22 21:15:29 +0000
committerkrasimir <krasimir@chalmers.se>2010-03-22 21:15:29 +0000
commitbf74f50733840b0bcec81ac265c824ae2bc3f675 (patch)
tree24cb47678cbc2e88de73a3a670930d68c5555593 /src/compiler/GF/Compile/Coding.hs
parent716a209f65a2dc10cdaec7e5b12af09267694b3a (diff)
store and propagate the exact source location for all judgements in the grammar. It may not be used accurately in the error messages yet
Diffstat (limited to 'src/compiler/GF/Compile/Coding.hs')
-rw-r--r--src/compiler/GF/Compile/Coding.hs12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/compiler/GF/Compile/Coding.hs b/src/compiler/GF/Compile/Coding.hs
index 49538bd35..b909aac7d 100644
--- a/src/compiler/GF/Compile/Coding.hs
+++ b/src/compiler/GF/Compile/Coding.hs
@@ -25,13 +25,15 @@ codeSourceModule co (id,mo) = (id,replaceJudgements mo (mapTree codj (jments mo)
CncFun mty pt mpr -> CncFun mty (fmap (codeTerm co) pt) (fmap (codeTerm co) mpr)
_ -> info
-codeTerm :: (String -> String) -> Term -> Term
-codeTerm co t = case t of
+codeTerm :: (String -> String) -> L Term -> L Term
+codeTerm co (L loc t) = L loc (codt t)
+ where
+ codt t = case t of
K s -> K (co s)
- T ty cs -> T ty [(codp p,codeTerm co v) | (p,v) <- cs]
+ T ty cs -> T ty [(codp p,codt v) | (p,v) <- cs]
EPatt p -> EPatt (codp p)
- _ -> composSafeOp (codeTerm co) t
- where
+ _ -> composSafeOp codt t
+
codp p = case p of --- really: composOpPatt
PR rs -> PR [(l,codp p) | (l,p) <- rs]
PString s -> PString (co s)