aboutsummaryrefslogtreecommitdiffhomepage
path: root/library/libnames.ml
diff options
context:
space:
mode:
authorGravatar Gregory Malecha <gmalecha@eecs.harvard.edu>2013-12-12 14:53:00 +0100
committerGravatar Pierre Boutillier <pierre.boutillier@ens-lyon.org>2013-12-12 14:53:26 +0100
commitb4ed8ee3ad7fffe5594df17b0b343e649fc44d1e (patch)
tree567fd29c2fb3c5103b8942addb12f2938f07aed3 /library/libnames.ml
parentd6c7bf2ec750876c9b35ee9d84840f2ab643dbfe (diff)
Patch for supporting [From Xxx Require Yyy Zzz.]
When using libraries I find it convenient (and future proof) to use fully qualified paths in many places. It would be nice to have a convenient short-hand for this so that you can: From Xxx Require Yyy Zzz. instead of having to type: Require Xxx.Yyy Xxx.Zzz. Signed-off-by: Pierre Boutillier <pierre.boutillier@ens-lyon.org>
Diffstat (limited to 'library/libnames.ml')
-rw-r--r--library/libnames.ml24
1 files changed, 24 insertions, 0 deletions
diff --git a/library/libnames.ml b/library/libnames.ml
index 909a4dc3e..cf6d4c8ad 100644
--- a/library/libnames.ml
+++ b/library/libnames.ml
@@ -203,6 +203,30 @@ let eq_reference r1 r2 = match r1, r2 with
| Ident (_, id1), Ident (_, id2) -> Id.equal id1 id2
| _ -> false
+let join_reference ns r =
+ match ns , r with
+ Qualid (_, q1), Qualid (loc, q2) ->
+ let (dp1,id1) = repr_qualid q1 in
+ let (dp2,id2) = repr_qualid q2 in
+ Qualid (loc,
+ make_qualid
+ (append_dirpath (append_dirpath dp1 (dirpath_of_string (Names.Id.to_string id1))) dp2)
+ id2)
+ | Qualid (_, q1), Ident (loc, id2) ->
+ let (dp1,id1) = repr_qualid q1 in
+ Qualid (loc,
+ make_qualid
+ (append_dirpath dp1 (dirpath_of_string (Names.Id.to_string id1)))
+ id2)
+ | Ident (_, id1), Qualid (loc, q2) ->
+ let (dp2,id2) = repr_qualid q2 in
+ Qualid (loc, make_qualid
+ (append_dirpath (dirpath_of_string (Names.Id.to_string id1)) dp2)
+ id2)
+ | Ident (_, id1), Ident (loc, id2) ->
+ Qualid (loc, make_qualid
+ (dirpath_of_string (Names.Id.to_string id1)) id2)
+
(* Deprecated synonyms *)
let make_short_qualid = qualid_of_ident