open G_ast (* this is obsolete, not used anymore *) let rec make_fwd_decls ds = List.map process_decl ds and process_decl d = (match d with EmptyD -> EmptyD | LetD (i,t,mut,n,e) -> LetFwdD (i,t,mut,n) | LetFwdD (i,t,mut,n) -> LetFwdD (i,t,mut,n) | TypedefD (i, n, t) -> TypedefD (i, n, t) | FunD (i, n, recur, ts, w, ps, rt, body) -> FunFwdD (i, n, ts, w, ps, rt) | ExternScopeD (i, n, ds) -> ExternScopeD (i, n, make_fwd_decls ds) | FunFwdD (i, n, ts, w, ps, rt) -> FunFwdD (i, n, ts, w, ps, rt) | ExternFunFwdD (i, lang, n, ts, w, ps, rt) -> ExternFunFwdD (i, lang, n, ts, w, ps, rt) | PrimD (i, p, ts, ps, rt) -> PrimD (i, p, ts, ps, rt) | OvldD (i, n, e) -> OvldD (i, n, e) | ClassFwdD (i, n, ts, w) -> ClassFwdD (i, n, ts, w) | StructFwdD (i, n, ts, w) -> StructFwdD (i, n, ts, w) | UnionFwdD (i, n, ts, w) -> UnionFwdD (i, n, ts, w) | StructD (i, n, ts, w, ms) -> StructD (i, n, ts, w, ms) | UnionD (i, n, ts, w, ms) -> UnionD (i, n, ts, w, ms) | ClassD (i, n, ts, w, ms, cs, dest) -> ClassD (i, n, ts, w, ms, cs, dest) | ConceptD (i, n, ts, assocs, refs, reqs, fs, ss) -> ConceptD (i, n, ts, assocs, refs, reqs, fs, ss) | ModelD (i, opn, ts, w, n, targs, assocs, fs) -> ModelFwdD (i, ts, w, n, targs, assocs) | ModelFwdD (i, ts, w, n, targs, assocs) -> ModelFwdD (i, ts, w, n, targs, assocs) | ModuleD (i, n, ts, w, ds) -> ModuleD (i, n, ts, w, make_fwd_decls ds) | PrivateD i -> PrivateD i | PublicD i -> PublicD i | ImportD (i, e, path, n) -> ImportD (i, e, path, n) | IncludeD (i, fn) -> IncludeD (i, fn) | UseD (i, fn) -> UseD (i, fn))