New tests.
[mono.git] / mcs / tools / monodoc / ChangeLog
index 17dc658f5b8bcd17de42dab17429be8e6c7af0e5..2ea79257c13db28843124b03565002f00ee8a9b2 100644 (file)
@@ -1,3 +1,421 @@
+2010-04-25  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/ecma-provider.cs: Support the full set of possible operator
+         names within EcmaHelpSource.MakeOperatorSignature() (where "full" is
+         "whatever is included in ECMA-335 §10.3.1 through §10.3.3").
+         Fixes InvalidOperationException reported to mono-docs-list.
+
+2010-02-28  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/provider.cs: Add
+         RootTree.LoadTree(string,string,IEnumerable) for compatibility with
+         Mono 2.6's monodoc.dll.
+
+2010-02-26  Jonathan Pryor  <jpryor@novell.com>
+
+       * Makefile: Add a System.Core.dll reference; embed monodoc.xml as a
+         resource.
+       * Monodoc/provider.cs: Add a
+         RootTree.LoadTree(string,XmlDocument,IEnumerable<string>) method.
+         This is so 'mdoc export-html-webdoc' doesn't need to rely on the
+         system-wide .source files (allowing execution w/o changing/replacing
+         the system-wide .source files) and so MonoDevelop can support
+         multiple .source files spread throughout the system sanely.
+       * Monodoc/ecma-provider.cs: Always add the extension methods contained
+         in the current EcmaHelpSource, instead of implicitly requiring that
+         the current EcmaHelpSource also be contained within
+         RootTree.HelpSources.  This simplifies logic in 'mdoc'.
+
+2010-01-13  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/provider.cs, Monodoc/ecma-provider.cs: Improve cache support
+         by having EcmaHelpSource.GetTextFromUrl() look for cached contents.
+         This greatly speeds up type member listings (e.g. T:...List`1/*),
+         e.g. from ~2.0s to 0.06s.
+
+2010-01-13  Jonathan Pryor  <jpryor@novell.com>
+
+       * Mono.Documentation/XmlDocUtils.cs: XmlDocUtils.AddExtensionMethods()
+         wasn't adding extension methods which matched *interfaces* of base
+         classes.  Result: Mono.Options.OptionSet (which inherits
+         System.Collections.ObjectModel.KeyedCollection`2 which inherits from
+         System.Collections.ObjectModel.Collection`1 which implements
+         System.Collections.Generic.IEnumerable`1) wasn't getting any of the
+         LINQ extension methods (which is bad).  Fix this.
+
+2010-01-13  Jonathan Pryor  <jpryor@novell.com>
+
+       * Resources/mdoc-html-utils.xsl: Fix regression caused by 2009-12-02
+         commit adding GetLinkTargetHtml().  The problem was that when
+         running within ASP.NET/monodoc ~all extension method links would be
+         'javascript:alert("...")M:Foo.Method(...)', which is clearly wrong.
+         This occurred because $linkid's generation would always call
+         GetLinkTargetHtml() with a $cref value of '', thus the monodoc
+         GetLinkTarget() would return '', so GetLinkTargetHtml() would return
+         the javascript "not found" alert.  Thus, we can't expect
+         GetLinkTargetHtml() with $cref='' to work under monodoc, but it's
+         ~required to work sanely under 'mdoc export-html'.
+         Solution is to not call GetLinkTargetHtml() here UNLESS we're doing
+         'mdoc export-html' generation, which we assume to be the case if
+         $html-anchor is true.
+
+2009-12-30  Jonathan Pryor  <jpryor@novell.com>
+
+       * Lucene.Net/Lucene.Net/QueryParser/QueryParser.cs: Fix crash when 
+         searching for "()".  Fixes #423853.  
+         Thanks to Benoît Tuduri <bento78@gmail.com>.
+
+2009-12-03  Jonathan Pryor  <jpryor@novell.com>
+
+       * Resources/mdoc-html-utils.xsl: Add support for generating namespace
+         links via <see cref="N:..." />
+
+2009-12-03  Jonathan Pryor  <jpryor@novell.com>
+
+       * Resources/mdoc-html-utils.xsl: Fix link-id generation of conversion
+         operators.
+
+2009-12-02  Jonathan Pryor  <jpryor@novell.com>
+
+       * Mono.Documentation/ManifestResourceResolver.cs:
+         Assembly.GetManifestResourceStream() throws an exception if the
+         resource isn't present (instead of returning null), so don't just
+         call it to see if the resource exists.
+       * Resources/mdoc-html-utils.xsl: .NET compatibility fixes (so that
+         mdoc can run under .NET w/o bundling Mono's System.Xml):
+         - Use msxsl:node-set() when required.
+         - Use <xsl:variable/> not <xsl:param/> when a variable is needed.
+         - Change semantics of GetLinkTarget(): instead of returning
+           javascript code (previous behavior) or '--not-available--' (did
+           this ever happen), return "" if the target can't be found.
+         - Add GetLinkTargetHtml() to wrap GetLinkTarget() and return the
+           previous javascript if the target couldn't be found.
+
+2009-11-24  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/ecma-provider.cs: Use XslCompiledTransform instead of
+         XslTransform, as XslCompiledTransform is *significantly* faster
+         under .NET (3m7s -> 1.7s for some tests).
+
+2009-10-02  Jonathan Pryor  <jpryor@novell.com>
+
+       * Mono.Documentation/XmlDocUtils.cs: GetInterfaces() can throw if the
+         type we're trying to load can't be found (e.g. if a type implements
+         an internal interface, there won't be an XML file for that internal
+         interface).  Ignore the exception.
+
+2009-09-25  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/ecma-provider.cs: Don't return 'null' from GetPublicUrl(),
+         but instead provide a decent URL even if the url isn't to a single
+         member, but instead to show all members, e.g. T:System.String/*.
+       * Monodoc/provider.cs: Obsolete Node.URL.  It's too variable for sane
+         use; use Node.PublicUrl.
+
+2009-09-09  Jonathan Pryor  <jpryor@novell.com>
+
+       * Mono.Documentation/ManifestResourceResolver.cs: Allow it to lookup
+         files located in multiple directories.  Needed so that 'mdoc
+         export-html' can properly deal with multiple source directories.
+
+2009-08-13  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/provider.cs: Add a RootTree.AddSource(string) method, so that 
+         additional directories can be checked for .source file loading.
+
+2009-08-13  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/provider.cs: Make RootTree.LoadTree() just call
+         RootTree.LoadTree(null), and move the .config-file parsing into
+         .LoadTree(string) (for when basedir==null).  This will simplify the
+         logic of monodoc, as we want to add the ability to monodoc to use
+         any arbitrary directory, and this will remove the need to do 
+         `if (d==null) RootTree.LoadTree(); else RootTree.LoadTree(d)`.
+         This also conforms to FxDG guidelines.
+
+2009-08-12  Jonathan Pryor  <jpryor@novell.com>
+
+       * Resources/mdoc-html-format: Added; XSLT file to match
+         "//format[@type='text/html']//*", to support "pass-through"
+         semantics.  This allows you to use actual HTML within your
+         documentation and have it visible to HTML-supporting output formats.
+         WARNING: Use as a "last resort" -- this is primarily intended for
+         importing existing HTML w/o needing lots of extra logic to convert
+         into mdoc format XML first (with a corresponding loss of fidelity).
+         However, it means that if (when) we get non-HTML output format
+         support, the <format type="text/html" /> blocks WILL be skipped for
+         that non-HTML output format.
+
+         For example, the forever-on-the-back-burner ROFF output support --
+         to remove the use of lynx, as no one ever has it installed --
+         wouldn't be able to support HTML format, so it would skip these
+         <format type="text/html"/> blocks.
+
+         Consider <format /> the moral equivalent of Perl POD's 
+         '=begin formatname' block; see perlpod(1).
+       * Resources/mdoc-html-utils.xsl: <xsl:import/> mdoc-html-format.xsl.
+         It *must* be imported (NOT included) so that it will have a lower
+         priority than other <template/>s, thus allowing the HTML formatter
+         to <xsl:apply-templates/> which then use the "normal" rules.  This
+         allows:
+               <format type="text/html">
+                       <p><see cref="T:System.String" /></p>
+               </format>
+         to work as expected.
+       * Makefile: Add mdoc-html-format.xsl as a resource.
+
+2009-04-16  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/man-provider.cs: NEVER return a non-null string from
+         HelpSource.GetText() unless *useful* content is being returned, as
+         when non-null is returned RootTree.RenderUrl() assumes that the url
+         was handled and won't try any other HelpSources.  In this case, we
+         can (and do) have multiple ManHelpSources present, but since
+         ManHelpSource.GetText() was returning "<html>url was null</html>",
+         RootTree thought it was handled...when it wasn't.  Fix.
+
+2009-04-16  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/provider.cs: Overview: MonoDevelop loads monodoc.dll into
+         it's own process, and spawns monodoc GUI into a separate process,
+         then sends Node.URL values (obtained from the MonoDevelop process)
+         to load the documentation into the monodoc GUI.  Problem:
+         occasionally the requested documentation isn't loaded, but instead
+         some completely unrelated documentation is shown instead.  This is
+         because the Node.URL value contains HelpSource-dependent data, e.g.
+         a Node.URL value of "ecma:0#Foo/" will specify the 1st file
+         within...whatever HelpSource is first consulted by monodoc (which
+         can vary between monodoc runs, the phase of the moon, etc.).
+         Solution: Add a Node.PublicUrl property which returns _stable_ URLs
+         which aren't specific to a given HelpSource.
+         - Add Node.PublicUrl property, which delegates to
+           Provider.GetPublicUrl(string), so that a Provider can generate a
+           Provider-independent URL (if possible).
+         - Print PublicUrl from Node.PrintTree().
+         - Add RootTree.GetSupportedFormats(), RootTree.GetProvider()
+           methods.
+         - Make RootTree.GetHelpSource() public.
+       * Monodoc/ecma-provider.cs: Add EcmaDoc.GetCref() method (generates an
+         XML documentation //see/@cref value), override
+         Provider.GetPublicUrl() (which will return cref's if possible).
+
+2009-04-15  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/ecma-provider.cs: EcmaHelpSource.GetText() doesn't need to
+         call GetCachedText() twice.
+
+2009-04-15  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/provider.cs: Correct UseWebdocCache logic.
+       * Monodoc/xhtml-provider.cs: Use GetCachedText().
+
+2009-04-15  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/provider.cs: UseWebdocCache is a better name that
+         IgnoreCache (considering that cache is disabled by default).
+
+2009-04-15  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/provider.cs:
+         - Add HelpSource.IgnoreCache field, so that if the cache is present 
+           it will be ignored.  (Required by 'mdoc export-html-webdoc' so it 
+           gets "fresh" content to generate the cache, and by monodoc GUI as 
+           it can't use the cache'd HTML; cache'd HTML is for ASP.NET 
+           webdoc only.)
+         - Alter the cache directory from e.g. sources/netdocs to 
+           sources/cache/netdocs (as defined by 
+           XmlDocUtils.GetCacheDirectory()).
+         - Add HelpSource.GetCachedText() method which will return the 
+           contents of the cache for an id.
+       * Monodoc/addins-provider.cs, Monodoc/ecma-provider.cs, 
+         Monodoc/error-provider.cs, Monodoc/man-provider.cs, 
+         Monodoc/simple-provider.cs: Use GetCachedText().
+       * Mono.Documentation/XmlDocUtils.cs: Add GetCacheDirectory(),
+         GetCacheFileName() methods.
+
+2009-04-14  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/provider.cs: Fix NullReferenceException in 'mdoc dump-tree'.
+
+2009-04-09 Gonzalo Paniagua Javier <gonzalo@novell.com>
+
+       * ecma-provider.cs: remove 'using'.
+       * provider.cs: if there's a directory with the base name, read the
+       files from there instead of from the .zip file.
+
+2009-03-01  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/ecma-provider.cs: Viewing type members (plural, e.g. the
+         Fields sub-node) would result in a stack overflow within
+         Resources/mdoc-html-utils.xsl:GetInheritedMembers(), because the
+         document() XSLT function was being used to obtain the base type's
+         documentation.  It stack overflowed because the XmlUrlResolver was
+         being used, which when given e.g. file:///DocAttribute.xml, would
+         return file:///DocAttribute.xml (which makes sense), but it was
+         non-terminating.  (I find this troubling as it should have been
+         trying to resolve e.g. System.Attribute, not DocAttribute; it must
+         be some XmlTransform-fu that was substituting documents.)
+         The fix is for EcmaUncompiledHelpSource to provide an alternate
+         document XmlResolver, one which always returns null from
+         XmlResolver.ResolveUri(), thus preventing endless recursion.
+
+2009-03-01  Jonathan Pryor  <jpryor@novell.com>
+
+       * Mono.Documentation/XmlDocUtils.cs: It's possible for the `loader'
+         delegate to return `null' if no further base types are found, so
+         stop processing if we find a null base type.
+       * Monodoc/provider.cs: 
+         - Make GetHelpStream() virtual so that EcmaUncompiledHelpSource can
+           override it, as the default zip-based behavior is inappropriate.
+         - Make GetHelpXmlWithChanges() virtual so that
+           EcmaUncompiledHelpSource can override it, as the default zip-based
+           behavior is inappropriate.
+         - When initializing UncompiledHelpSources, set the
+           HelpSource.RootTree property (avoids an NRE from
+           EcmaHelpSource.GetTextFromUrl() when it reads RootTree.HelpSources).
+       * Monodoc/ecma-provider.cs: 
+         - Within the XmlDocUtils.AddExtensionMethods() call, don't always 
+           prefix the type with "T:", as sometimes the type will already start 
+           with "T:", which is the case with EcmaUncompiledHelpSource ids.  
+         - Add EcmaUncompiledHelpSource.GetHelpStream() and
+           EcmaUncompiledHelpSource.GetHelpXmlWithChanges(), which Do The
+           Right Thing for the file-based backend.
+
+2009-03-01  Jonathan Pryor  <jpryor@novell.com>
+
+       * Monodoc/ecma-provider.cs: For some reason,
+         EcmaHelpSource.GetNamespaceDocument() wasn't being used anymore,
+         which is what EcmaUncompiledHelpSource overrides to permit loading
+         of local files.  Result: an exception when trying to view namespaces
+         of local (non-assembled) directories.  Oops.  "Fixes" 443508.
+
+2009-02-26  Jonathan Pryor  <jonpryor@vt.edu>
+
+       * Monodoc/provider.cs: Revert; Don't check for Tree.Nodes == null, as it
+         happens in numerous places.  Instead, take a page out of the "I
+         never should have invented `null'" book, and ensure that Tree.Nodes
+         can never be null.  This fixes the "HelpSource has 0 items" issue
+         and several other related ones.
+
+2009-02-26  Jonathan Pryor  <jonpryor@vt.edu>
+
+       * Monodoc/provider.cs: It's possible for a HelpSource to have 0
+         elements (which can be done by e.g. running `mdoc assemble' on an 
+         empty directory), in which case HelpSource.Tree.Nodes will be null.
+         Make sure that we don't get a NullReferenceException.
+         Patch thanks to Theerud Lawtrakul.  Fixes #443699.
+
+2009-02-25  Jonathan Pryor  <jonpryor@vt.edu>
+
+       * Makefile: 
+         - s/TEST_FILES/MAN_TEST_FILES/g: $(TEST_FILES) is used by the normal
+           build process, so the local definition is lost (and thus ignored).
+           Result: Test/* isn't actually copied.  Oops.  Changing to
+           MAN_TEST_FILES allows things to be copied.
+         - Fix the filenames within $(MAN_TEST_FILES) so `make dist-local'
+           works without error.
+         - Fixes #479753.
+
+2009-02-09  Jonathan Pryor  <jonpryor@vt.edu>
+
+       * Makefile: Don't include mono-ecma-css.js as a resource.
+       * Monodoc/ecma-provider.cs: Insert helper.js, not mono-ecma-css.js.
+       * Monodoc/provider.cs: Surround the contents of `helper.js' with a
+         <script/> block so that valid HTMl is generated.
+       * Resources/helper.js: Remove <script/> block, so that `helper.js' is an
+         actual JavaScript file, not an SGML file w/ JavaScript content.
+       * Resources/mono-ecma-css.js: Remove; use Resources/helper.js instead.
+
+2009-01-05  Jonathan Pryor  <jonpryor@vt.edu>
+
+       * Makefile: Fix $(the_lib) dependencies so that monodoc.dll is rebuilt
+         when one of Resources/* is modified.
+       * Resources/mdoc-html-utils.xsl: Rework the Requirements block so that
+         it doesn't require //AssemblyInfo or //AssemblyVersion.  This allows
+         `mdoc update -fno-assembly-versions ...`-produced XML to still
+         produce HTML with a Requirements section (skipping the Assembly
+         Versions block but generating the Namespace and Assembly blocks).
+         Change the behavior of //since generation so that instead of
+         printing out a note before the method summary, a Since block is added
+         to the Requirements section, and the Since block contains the
+         //since/@version text.  All this to make Mike Kestner happier. :-)
+
+2008-10-29  Jonathan Pryor  <jonpryor@vt.edu>
+
+       * Monodoc/xhtml-provider.cs: Use HelpSource.Message(), not 
+         Console.WriteLine().
+
+2008-10-28  Jonathan Pryor  <jonpryor@vt.edu>
+
+       * Monodoc/provider.cs: Add HelpSource.InlineCss and
+         HelpSource.InlineJavaScript virtual properties, so that the help
+         source can provide specific CSS and JavaScript to be included into
+         the generated HTML document.  This is used by the ASP.NET front-end,
+         as it needs to insert the CSS & JavaScript separately (as it also
+         inserts its own CSS & JavaScript).
+       * Monodoc/ecma-provider.cs, Monodoc/ecmaspec-provider.cs,
+         Monodoc/error-provider.cs: Override InlineCss & InlineJavaScript, as
+         appropriate.
+
+2008-10-24  Jonathan Pryor  <jonpryor@vt.edu>
+
+       * Monodoc/addins-provider.cs, Monodoc/ecma-provider.cs,
+         Monodoc/ecmaspec-provider.cs, Monodoc/error-provider.cs,
+         Monodoc/man-provider.cs, Monodoc/monohb-provider.cs,
+         Monodoc/provider.cs: Remove Console.WriteLine() spew; helps cleanup
+         `make` output in mcs/docs (from `mdoc assemble`, which indirectly
+         invokes most of the *-provider files).  We solve this problem by
+         providing a TraceLevel-based message system, so that messages are
+         only generated if they are less than or equal to the requested
+         output level (thus skipping the more verbose "every file" messages
+         from ecma-provider.cs & error-provider.cs).
+       * provider.cs: Change Node.CompareTo() to use a "natural sorting"
+         algorithm -- this allows the C# Language Specification nodes to
+         continue being displayed in the correct order.
+
+2008-10-21  Jonathan Pryor  <jonpryor@vt.edu>
+
+       * Monodoc/provider.cs: 
+         - Fix Node.Sort() so that it doesn't NRE if nodes == null.
+         - Fix Node.CompareTo() so that it can sort Nodes that haven't been
+           loaded yet.
+         - Add "libraries" as an alias for "root", so that .source files can
+           refer to the parent "libraries" (which would allow us to change
+           the location of "libraries" in the future, should we want to).
+         - If a /monodoc/source/@path refers to a nonexistant node, then
+           insert the contents under Various instead of ignoring it.
+         - Sort the top-level nodes.
+         - Sort the `parent` node after inserting children under it.  This
+           allows multiple different .source files to insert nodes under the
+           same parent node and still have the child nodes sorted as most
+           mortals would expect.
+         - Support a //node/@parent attribute, which allows for creating
+           nodes underneath the specified parent node.  This allows multiple
+           different .source files to contribute to the tree and depend upon
+           each other.  Thus, instead of having a single monodoc.xml file
+           that needs to know the entire tree in advance, the entire tree can
+           be spread across multiple .source files and filled at runtime.
+
+2008-10-18  Jonathan Pryor  <jonpryor@vt.edu>
+
+       * Makefile $(LIBRARY_PACKAGE): Set to `monodoc`, as we historically
+         have had a monodoc package (and thus should preserve it).
+
+2008-10-17  Jonathan Pryor  <jonpryor@vt.edu>
+
+       * Makefile: Distribute monodoc.dll.config.in.
+
+2008-10-17  Jonathan Pryor  <jonpryor@vt.edu>
+
+       * Makefile: Generate a monodoc.dll.config (installed by gacutil), so
+         that monodoc.dll can find the documentation sources.
+
+2008-10-16  Jonathan Pryor  <jonpryor@vt.edu>
+
+       * Mono.Documentation/ManifestResourceResolver.cs, 
+         Mono.Documentation/XmlDocUtils.cs: Make types public so that they
+         can be used from ../mdoc/mdoc.exe.
+
 2008-10-16  Jonathan Pryor  <jonpryor@vt.edu>
 
        * Makefile: Update $(thisdir).