3 | import public Libraries.Data.WithData
4 | import Libraries.Text.Bounded
13 | Bind' = "bind" :-: BindingModifier
19 | (0 inRange : NameInRange "bind" fields === Just (n, BindingModifier)) =>
20 | WithData fields a -> BindingModifier
21 | (.bind) = WithData.get "bind"
28 | Arity' = "arity" :-: Nat
31 | WithArity : Type -> Type
32 | WithArity = AddMetadata Arity'
38 | (0 inRange : NameInRange "arity" fields === Just (n, Nat)) =>
39 | WithData fields a -> Nat
40 | (.arity) = WithData.get "arity"
48 | Opts' = "opts" :-: List DataOpt
51 | WithOpts : Type -> Type
52 | WithOpts = AddMetadata Opts'
58 | (0 inRange : NameInRange "opts" fields === Just (n, List DataOpt)) =>
59 | WithData fields a -> List DataOpt
60 | (.opts) = WithData.get "opts"
69 | Tot' = "totalReq" :-: Maybe TotalReq
75 | (0 inRange : NameInRange "totalReq" fields === Just (n, Maybe TotalReq)) =>
76 | WithData fields a -> Maybe TotalReq
77 | (.totReq) = WithData.get "totalReq"
90 | WithFC : Type -> Type
91 | WithFC = WithData [ FC' ]
94 | AddFC : Type -> Type
95 | AddFC = AddMetadata FC'
99 | (.fc) : {n : Nat} ->
100 | (inRange : NameInRange "fc" fields === Just (n, FC)) => WithData fields a -> FC
101 | (.fc) = WithData.get "fc"
104 | setFC : {n : Nat} ->
105 | (inRange : NameInRange "fc" fields === Just (n, FC)) => FC ->
106 | WithData fields a -> WithData fields a
107 | setFC fc = WithData.set "fc" fc @{inRange}
111 | MkFCVal : FC -> ty -> WithFC ty
112 | MkFCVal fc = Mk [fc]
116 | NoFC : a -> WithFC a
117 | NoFC = MkFCVal EmptyFC
120 | (.withFC) : (o : OriginDesc) => WithBounds t -> WithFC t
121 | x.withFC = MkFCVal x.toFC x.val
124 | (.addFC) : (o : OriginDesc) => WithBounds (WithData ls t) -> WithData (FC' :: ls) t
125 | (.addFC) x = x.toFC :+ x.val
134 | Doc' = "doc" :-: String
137 | WithDoc : Type -> Type
138 | WithDoc = AddMetadata Doc'
142 | (.doc) : {n : Nat} ->
143 | (inRange : NameInRange "doc" fields === Just (n, String)) =>
144 | WithData fields a -> String
145 | (.doc) = WithData.get "doc"
154 | Rig' = "rig" :-: RigCount
157 | WithRig : Type -> Type
158 | WithRig = AddMetadata Rig'
162 | (.rig) : {n : Nat} ->
163 | (inRange : NameInRange "rig" fields === Just (n, RigCount)) =>
164 | WithData fields a -> RigCount
165 | (.rig) = WithData.get "rig"
174 | Name' = "name" :-: WithFC Name
179 | (.name) : {n : Nat} ->
180 | (inRange : NameInRange "name" fields === Just (n, WithFC Name)) =>
181 | WithData fields a -> WithFC Name
182 | (.name) = WithData.get "name" @{inRange}
186 | (.nameVal) : {n : Nat} ->
187 | (inRange : NameInRange "name" fields === Just (n, WithFC Name)) =>
188 | WithData fields a -> Name
189 | (.nameVal) x = x.name.val
193 | WithName : Type -> Type
194 | WithName = AddMetadata Name'
199 | TyName' = "tyname" :-: WithFC Name
203 | (.tyName) : {n : Nat} ->
204 | (inRange : NameInRange "tyname" fields === Just (n, WithFC Name)) =>
205 | WithData fields a -> WithFC Name
206 | (.tyName) = WithData.get "tyname" @{inRange}
211 | DocBindFC : Type -> Type
212 | DocBindFC = WithData [ Doc', Bind', FC' ]
217 | MName' = "mname" :-: Maybe (WithFC Name)
220 | WithMName : Type -> Type
221 | WithMName = AddMetadata MName'
224 | (.mName) : {n : Nat} ->
225 | (inRange : NameInRange "mname" fields === Just (n, Maybe (WithFC Name))) =>
226 | WithData fields a -> Maybe (WithFC Name)
227 | (.mName) = WithData.get "mname" @{inRange}
232 | Names' = "names" :-: List (WithFC Name)
235 | WithNames : Type -> Type
236 | WithNames = AddMetadata Names'
239 | (.names) : {n : Nat} ->
240 | (inRange : NameInRange "names" fields === Just (n, List (WithFC Name))) =>
241 | WithData fields a -> List (WithFC Name)
242 | (.names) = WithData.get "names" @{inRange}
250 | HasDefault FC where
255 | HasDefault BindingModifier where
256 | defValue = NotBinding
260 | HasDefault String where