@@ -502,37 +502,40 @@ expandParams dec ps ns tm = en tm
502502
503503 nseq x y = nsroot x == nsroot y
504504
505−expandParamsD :: IState ->
505+expandParamsD :: Bool -> -- True = RHS only
506+ IState ->
506507 (Name -> Name) -> [(Name, PTerm)] -> [Name] -> PDecl -> PDecl
507−expandParamsD ist dec ps ns (PTy doc syn fc o n ty)
508+expandParamsD False ist dec ps ns (PTy doc syn fc o n ty)
508509 = if n `elem` ns
509510 then PTy doc syn fc o (dec n) (piBind ps (expandParams dec ps ns ty))
510511 else PTy doc syn fc o n (expandParams dec ps ns ty)
511−expandParamsD ist dec ps ns (PClauses fc opts n cs)
512+expandParamsD rhsonly ist dec ps ns (PClauses fc opts n cs)
512513 = let n' = if n `elem` ns then dec n else n in
513514 PClauses fc opts n' (map expandParamsC cs)
514515 where
515516 expandParamsC (PClause fc n lhs ws rhs ds)
516517 = let -- ps' = updateps True (namesIn ist rhs) (zip ps [0..])
517518 ps'' = updateps False (namesIn [] ist lhs) (zip ps [0..])
519+ lhs' = if rhsonly then lhs else (expandParams dec ps'' ns lhs)
518520 n' = if n `elem` ns then dec n else n in
519− PClause fc n' (expandParams dec ps'' ns lhs)
521+ PClause fc n' lhs'
520522 (map (expandParams dec ps'' ns) ws)
521523 (expandParams dec ps'' ns rhs)
522− (map (expandParamsD ist dec ps'' ns) ds)
524+ (map (expandParamsD True ist dec ps'' ns) ds)
523525 expandParamsC (PWith fc n lhs ws wval ds)
524526 = let -- ps' = updateps True (namesIn ist wval) (zip ps [0..])
525527 ps'' = updateps False (namesIn [] ist lhs) (zip ps [0..])
528+ lhs' = if rhsonly then lhs else (expandParams dec ps'' ns lhs)
526529 n' = if n `elem` ns then dec n else n in
527− PWith fc n' (expandParams dec ps'' ns lhs)
530+ PWith fc n' lhs'
528531 (map (expandParams dec ps'' ns) ws)
529532 (expandParams dec ps'' ns wval)
530− (map (expandParamsD ist dec ps'' ns) ds)
533+ (map (expandParamsD rhsonly ist dec ps'' ns) ds)
531534 updateps yn nm [] = []
532535 updateps yn nm (((a, t), i):as)
533536 | (a `elem` nm) == yn = (a, t) : updateps yn nm as
534537 | otherwise = (MN i (show n ++ "_u"), t) : updateps yn nm as
535−expandParamsD ist dec ps ns (PData doc syn fc co pd)
538+expandParamsD rhs ist dec ps ns (PData doc syn fc co pd)
536539 = PData doc syn fc co (expandPData pd)
537540 where
538541 -- just do the type decl, leave constructors alone (parameters will be
@@ -543,26 +546,27 @@ expandParamsD ist dec ps ns (PData doc syn fc co pd)
543546 else PDatadecl n (expandParams dec ps ns ty) (map econ cons)
544547 econ (doc, n, t, fc)
545548 = (doc, dec n, piBindp expl ps (expandParams dec ps ns t), fc)
546−expandParamsD ist dec ps ns (PParams f params pds)
547− = PParams f (ps ++ map (mapsnd (expandParams dec ps ns)) params) pds
549+expandParamsD rhs ist dec ps ns (PParams f params pds)
550+ = PParams f (ps ++ map (mapsnd (expandParams dec ps ns)) params)
551+ (map (expandParamsD True ist dec ps ns) pds)
548552-- (map (expandParamsD ist dec ps ns) pds)
549−expandParamsD ist dec ps ns (PMutual f pds)
550− = PMutual f (map (expandParamsD ist dec ps ns) pds)
551−expandParamsD ist dec ps ns (PClass doc info f cs n params decls)
553+expandParamsD rhs ist dec ps ns (PMutual f pds)
554+ = PMutual f (map (expandParamsD rhs ist dec ps ns) pds)
555+expandParamsD rhs ist dec ps ns (PClass doc info f cs n params decls)
552556 = PClass doc info f
553557 (map (expandParams dec ps ns) cs)
554558 n
555559 (map (mapsnd (expandParams dec ps ns)) params)
556− (map (expandParamsD ist dec ps ns) decls)
557−expandParamsD ist dec ps ns (PInstance info f cs n params ty cn decls)
560+ (map (expandParamsD rhs ist dec ps ns) decls)
561+expandParamsD rhs ist dec ps ns (PInstance info f cs n params ty cn decls)
558562 = PInstance info f
559563 (map (expandParams dec ps ns) cs)
560564 n
561565 (map (expandParams dec ps ns) params)
562566 (expandParams dec ps ns ty)
563567 cn
564− (map (expandParamsD ist dec ps ns) decls)
565−expandParamsD ist dec ps ns d = d
568+ (map (expandParamsD rhs ist dec ps ns) decls)
569+expandParamsD rhs ist dec ps ns d = d
566570
567571mapsnd f (x, t) = (x, f t)
568572