Recognize usage of the default role.
diff --git a/Doc/tools/rstlint.py b/Doc/tools/rstlint.py
index 0d08e72..7e73942 100755
--- a/Doc/tools/rstlint.py
+++ b/Doc/tools/rstlint.py
@@ -40,7 +40,7 @@
 
 all_directives = '(' + '|'.join(directives) + ')'
 seems_directive_re = re.compile(r'\.\. %s([^a-z:]|:(?!:))' % all_directives)
-
+default_role_re = re.compile(r'(^| )`\w([^`]*?\w)?`($| )')
 leaked_markup_re = re.compile(r'[a-z]::[^=]|:[a-z]+:|`|\.\.\s*\w+:')
 
 
@@ -65,7 +65,8 @@
     try:
         code = ''.join(lines)
         if '\r' in code:
-            yield 0, '\\r in code file'
+            if os.name != 'nt':
+                yield 0, '\\r in code file'
             code = code.replace('\r', '')
         compile(code, fn, 'exec')
     except SyntaxError, err:
@@ -75,9 +76,16 @@
 @checker('.rst', severity=2)
 def check_suspicious_constructs(fn, lines):
     """Check for suspicious reST constructs."""
+    inprod = False
     for lno, line in enumerate(lines):
         if seems_directive_re.match(line):
             yield lno+1, 'comment seems to be intended as a directive'
+        if '.. productionlist::' in line:
+            inprod = True
+        elif not inprod and default_role_re.search(line):
+            yield lno+1, 'default role used'
+        elif inprod and not line.strip():
+            inprod = False
 
 
 @checker('.py', '.rst')