@@ -241,14 +241,16 @@ elabRecordFunctions info rsyn fc tyn params fields dconName target
241241 paramName (UN n) = sUN ("param_" ++ str n)
242242 paramName (MN i n) = sMN i ("param_" ++ str n)
243243 paramName (NS n s) = NS (paramName n) s
244− paramName n = n
244+ paramName n = n
245245
246246 -- | Elaborate the projection functions.
247247 elabProj :: Name -> [(Name, Name, Plicity, PTerm, Docstring (Either Err PTerm), Int)] -> Idris ()
248248 elabProj cn fs = let phArgs = map (uncurry placeholderArg) [(p, n) | (n, _, p, _, _, _) <- fs]
249249 elab = \(n, n', p, t, doc, i) ->
250250 -- Use projections in types
251− do let t' = projectInType [(m, m') | (m, m', _, _, _, _) <- fs] t
251+ do let t' = projectInType [(m, m') | (m, m', _, _, _, _) <- fs
252+ -- Parameters are already in scope, so just use them
253+ , not (m `elem` paramNames)] t
252254 elabProjection info n n' p t' doc rsyn fc target cn phArgs fieldNames i
253255 in mapM_ elab fs
254256