[ fix ] solve autos in data declarations

This commit is contained in:
2025-07-26 08:09:46 -07:00
parent 0e110cd14f
commit a79f92793b
2 changed files with 16 additions and 1 deletions

View File

@@ -115,7 +115,6 @@ processTypeSig ns fc names tm = do
ignore $ for names $ \nm => setDef (QN ns nm) fc ty Axiom Nil
processPrimType : List Name FC Name Maybe Raw M Unit
processPrimType ns fc nm ty = do
top <- getTop
@@ -439,6 +438,8 @@ processData ns fc nm ty cons = do
error (getFC codomain) "Constructor codomain is \{render 90 $ pprint tnames codomain} rather than \{nm}"
pure $ map (\ nm' => (MkEntry fc (QN ns nm') dty (DCon NormalCon (getArity dty) hn) Nil)) names
decl => throwError $ E (getFC decl) "expected constructor declaration")
-- type level autos like _++_
solveAutos
let entries = populateConInfo entries
for entries $ \case (MkEntry name fc dty def flags) => setDef fc name dty def flags
let cnames = map (\x => x.name) entries

14
tests/AutoInData.newt Normal file
View File

@@ -0,0 +1,14 @@
module AutoInData
import Prelude
rep : a. Nat a List a
rep Z x = Nil
rep (S k) x = x :: rep k x
data RunLength : ty. List ty U where
Empty : ty. RunLength {ty} Nil
Run : ty more. (n : Nat)
(x : ty)
RunLength more
RunLength (rep n x ++ more)