273 fun add_typ (nsp_fun, nsp_typ) = |
273 fun add_typ (nsp_fun, nsp_typ) = |
274 let |
274 let |
275 val (base', nsp_typ') = mk_name_stmt (first_upper base) nsp_typ |
275 val (base', nsp_typ') = mk_name_stmt (first_upper base) nsp_typ |
276 in (base', (nsp_fun, nsp_typ')) end; |
276 in (base', (nsp_fun, nsp_typ')) end; |
277 val add_name = case stmt |
277 val add_name = case stmt |
278 of Code_Thingol.Fun _ => add_fun false |
278 of Code_Thingol.Fun (_, (_, SOME _)) => pair base |
|
279 | Code_Thingol.Fun _ => add_fun false |
279 | Code_Thingol.Datatype _ => add_typ |
280 | Code_Thingol.Datatype _ => add_typ |
280 | Code_Thingol.Datatypecons _ => add_fun true |
281 | Code_Thingol.Datatypecons _ => add_fun true |
281 | Code_Thingol.Class _ => add_typ |
282 | Code_Thingol.Class _ => add_typ |
282 | Code_Thingol.Classrel _ => pair base |
283 | Code_Thingol.Classrel _ => pair base |
283 | Code_Thingol.Classparam _ => add_fun false |
284 | Code_Thingol.Classparam _ => add_fun false |
284 | Code_Thingol.Classinst _ => pair base; |
285 | Code_Thingol.Classinst _ => pair base; |
285 fun add_stmt' base' = case stmt |
286 fun add_stmt' base' = case stmt |
286 of Code_Thingol.Datatypecons _ => |
287 of Code_Thingol.Fun (_, (_, SOME _)) => |
|
288 I |
|
289 | Code_Thingol.Datatypecons _ => |
287 cons (name, (Long_Name.append module_name' base', NONE)) |
290 cons (name, (Long_Name.append module_name' base', NONE)) |
288 | Code_Thingol.Classrel _ => I |
291 | Code_Thingol.Classrel _ => I |
289 | Code_Thingol.Classparam _ => |
292 | Code_Thingol.Classparam _ => |
290 cons (name, (Long_Name.append module_name' base', NONE)) |
293 cons (name, (Long_Name.append module_name' base', NONE)) |
291 | _ => cons (name, (Long_Name.append module_name' base', SOME stmt)); |
294 | _ => cons (name, (Long_Name.append module_name' base', SOME stmt)); |