From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: * X-Spam-Status: No, score=1.3 required=5.0 tests=AWL,SPF_NEUTRAL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from discorde.inria.fr (discorde.inria.fr [192.93.2.38]) by yquem.inria.fr (Postfix) with ESMTP id AE058BC0B for ; Sat, 6 Jan 2007 16:22:10 +0100 (CET) Received: from ug-out-1314.google.com (ug-out-1314.google.com [66.249.92.174]) by discorde.inria.fr (8.13.6/8.13.6) with ESMTP id l06FMA1o019144 for ; Sat, 6 Jan 2007 16:22:10 +0100 Received: by ug-out-1314.google.com with SMTP id q2so7090900uge for ; Sat, 06 Jan 2007 07:22:08 -0800 (PST) DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=beta; d=gmail.com; h=received:message-id:date:from:to:subject:mime-version:content-type:content-transfer-encoding:content-disposition; b=JRy5FclYlNZomZXbCHpAr9sBFNC4xoH9orI5g8SRuPljORn3iMnV/NR/936Ki1FjjE1+Pm4mRbATRYzfanjHX+b1KyOu61djMlxOcUUCERqMnCUsDXSvzcU09KD1upkTHR6M57q6lSZdvdBt5VpcSqYCN2YVGjAXlAtZ2eOgDm4= Received: by 10.78.170.17 with SMTP id s17mr4942579hue.1168096927926; Sat, 06 Jan 2007 07:22:07 -0800 (PST) Received: by 10.78.187.7 with HTTP; Sat, 6 Jan 2007 07:22:07 -0800 (PST) Message-ID: <17af13780701060722h363d2a2ep9defb458ecb17ab2@mail.gmail.com> Date: Sat, 6 Jan 2007 10:22:07 -0500 From: "Ian Zimmerman" To: caml-list@yquem.inria.fr Subject: annotating nested modules with ocamldoc MIME-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline X-j-chkmail-Score: MSGID : 459FBEA2.001 on discorde : j-chkmail score : X : 0/20 1 0.000 -> 1 X-Miltered: at discorde with ID 459FBEA2.001 by Joe's j-chkmail (http://j-chkmail . ensmp . fr)! X-Spam: no; 0.00; ocamldoc:01 foo:01 mli:01 sig:01 val:01 foo:01 mli:01 sig:01 val:01 struct:01 ocamldoc:01 annotation:01 granularity:01 boo:98 boo:98 Given the following files: (* Foo.mli *) module type BOO = sig (** workaround: put documentation here *) val boo : int -> int end module Boo : BOO (* Foo.mli ends *) (* Foo.ml *) let internal_goo i = i + 1 module type BOO = sig val boo : int -> int end module Boo : BOO = struct let boo i = internal_goo (i + 1) end (* Foo.ml ends *) how do I produce an ocamldoc set *with* Foo.Boo.boo but *without* Foo.internal_goo ? So far, the only way I've found is to only process the mli file with ocamldoc and attach an annotation in the signature in the indicated place, but that is awkward when I want to make a cross-reference (I have to reference the signature instead of the structure). The problem is that when processing a ml file, the granularity of what is included is one of two extremes: either everything, or just stuff that's declared in the corresponding mli file, and the latter by definition excludes members of modules :-(