summaryrefslogtreecommitdiff
path: root/sphinx/domains/javascript.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/domains/javascript.py')
-rw-r--r--sphinx/domains/javascript.py20
1 files changed, 19 insertions, 1 deletions
diff --git a/sphinx/domains/javascript.py b/sphinx/domains/javascript.py
index 0ea6114d6..fdc1cd613 100644
--- a/sphinx/domains/javascript.py
+++ b/sphinx/domains/javascript.py
@@ -18,6 +18,7 @@ from sphinx.domains import Domain, ObjType
from sphinx.domains.python import _pseudo_parse_arglist
from sphinx.locale import _
from sphinx.roles import XRefRole
+from sphinx.util import logging
from sphinx.util.docfields import Field, GroupedField, TypedField
from sphinx.util.nodes import make_refnode
@@ -29,6 +30,8 @@ if False:
from sphinx.builders import Builder # NOQA
from sphinx.environment import BuildEnvironment # NOQA
+logger = logging.getLogger(__name__)
+
class JSObject(ObjectDescription):
"""
@@ -255,6 +258,12 @@ class JSModule(Directive):
noindex = 'noindex' in self.options
ret = []
if not noindex:
+ modules = env.domaindata['js']['modules']
+ if mod_name in modules:
+ self.state_machine.reporter.warning(
+ 'duplicate module description of %s, ' % mod_name +
+ 'other instance in ' + self.env.doc2path(modules[mod_name]),
+ line=self.lineno)
env.domaindata['js']['modules'][mod_name] = env.docname
# Make a duplicate entry in 'objects' to facilitate searching for
# the module in JavaScriptDomain.find_obj()
@@ -335,12 +344,21 @@ class JavaScriptDomain(Domain):
def merge_domaindata(self, docnames, otherdata):
# type: (List[unicode], Dict) -> None
- # XXX check duplicates
for fullname, (fn, objtype) in otherdata['objects'].items():
if fn in docnames:
+ if fullname in self.data['objects']:
+ otherdoc, _ = self.data['objects'][fullname]
+ logger.warning('duplicate object description of %s, '
+ 'other instance in %s' %
+ (fullname, self.env.doc2path(otherdoc)))
self.data['objects'][fullname] = (fn, objtype)
for mod_name, pkg_docname in otherdata['modules'].items():
if pkg_docname in docnames:
+ if mod_name in self.data['modules']:
+ otherdoc = self.data['modules'][mod_name]
+ logger.warning('duplicate module description of %s, '
+ 'other instance in %s' %
+ (mod_name, self.env.doc2path(otherdoc)))
self.data['modules'][mod_name] = pkg_docname
def find_obj(self, env, mod_name, prefix, name, typ, searchorder=0):