8269401: Merge "Exceptions" and "Errors" into "Exception Classes"

Reviewed-by: jjg
This commit is contained in:
Hannes Wallnöfer 2021-10-28 10:41:49 +00:00
parent d88b89f896
commit 7c996d572c
19 changed files with 80 additions and 288 deletions

@ -120,8 +120,7 @@ public class AllClassesIndexWriter extends HtmlDocletWriter {
.addTab(contents.classes, e -> utils.isOrdinaryClass((TypeElement)e))
.addTab(contents.enums, utils::isEnum)
.addTab(contents.records, e -> utils.isRecord((TypeElement)e))
.addTab(contents.exceptions, e -> utils.isException((TypeElement)e))
.addTab(contents.errors, e -> utils.isError((TypeElement)e))
.addTab(contents.exceptionClasses, e -> utils.isThrowable((TypeElement)e))
.addTab(contents.annotationTypes, utils::isAnnotationType);
for (Character unicode : indexBuilder.getFirstCharacters()) {
for (IndexItem indexItem : indexBuilder.getItems(unicode)) {

@ -92,10 +92,8 @@ public class Contents {
public final Content enumConstantSummary;
public final Content enum_;
public final Content enums;
public final Content error;
public final Content errors;
public final Content exception;
public final Content exceptions;
public final Content exceptionClass;
public final Content exceptionClasses;
public final Content exportedTo;
public final Content fieldLabel;
public final Content fieldDetailsLabel;
@ -238,10 +236,8 @@ public class Contents {
enumConstantSummary = getContent("doclet.Enum_Constant_Summary");
enum_ = getContent("doclet.Enum");
enums = getContent("doclet.Enums");
error = getContent("doclet.Error");
errors = getContent("doclet.Errors");
exception = getContent("doclet.Exception");
exceptions = getContent("doclet.Exceptions");
exceptionClass = getContent("doclet.ExceptionClass");
exceptionClasses = getContent("doclet.ExceptionClasses");
exportedTo = getContent("doclet.ExportedTo");
fieldDetailsLabel = getContent("doclet.Field_Detail");
fieldSummaryLabel = getContent("doclet.Field_Summary");

@ -274,8 +274,7 @@ public class HelpWriter extends HtmlDocletWriter {
contents.interfaces,
contents.classes,
contents.enums,
contents.exceptions,
contents.errors,
contents.exceptionClasses,
contents.annotationTypes));
pageKindsSection.add(section);

@ -417,8 +417,7 @@ public class HtmlIds {
case INTERFACE -> "interface";
case CLASS -> "class";
case ENUM -> "enum-class";
case EXCEPTION -> "exception";
case ERROR -> "error";
case EXCEPTION_CLASS -> "exception-class";
case ANNOTATION_TYPE -> "annotation-interface";
case FIELD -> "field";
case METHOD -> "method";

@ -257,8 +257,7 @@ public class PackageWriterImpl extends HtmlDocletWriter
.addTab(contents.classes, e -> utils.isOrdinaryClass((TypeElement)e))
.addTab(contents.enums, utils::isEnum)
.addTab(contents.records, e -> utils.isRecord((TypeElement)e))
.addTab(contents.exceptions, e -> utils.isException((TypeElement)e))
.addTab(contents.errors, e -> utils.isError((TypeElement)e))
.addTab(contents.exceptionClasses, e -> utils.isThrowable((TypeElement)e))
.addTab(contents.annotationTypes, utils::isAnnotationType);
for (TypeElement typeElement : allClasses) {
if (typeElement != null && utils.isCoreClass(typeElement)) {

@ -62,8 +62,7 @@ public class SummaryListWriter<L extends SummaryAPIListBuilder> extends SubWrite
case INTERFACE -> "doclet.Interfaces";
case CLASS -> "doclet.Classes";
case ENUM -> "doclet.Enums";
case EXCEPTION -> "doclet.Exceptions";
case ERROR -> "doclet.Errors";
case EXCEPTION_CLASS -> "doclet.ExceptionClasses";
case ANNOTATION_TYPE -> "doclet.Annotation_Types";
case FIELD -> "doclet.Fields";
case METHOD -> "doclet.Methods";
@ -81,8 +80,7 @@ public class SummaryListWriter<L extends SummaryAPIListBuilder> extends SubWrite
case INTERFACE -> "doclet.Interface";
case CLASS -> "doclet.Class";
case ENUM -> "doclet.Enum";
case EXCEPTION -> "doclet.Exceptions";
case ERROR -> "doclet.Errors";
case EXCEPTION_CLASS -> "doclet.ExceptionClass";
case ANNOTATION_TYPE -> "doclet.AnnotationType";
case FIELD -> "doclet.Field";
case METHOD -> "doclet.Method";

@ -140,8 +140,7 @@ doclet.RecordClasses=Record Classes
doclet.Related_Packages=Related Packages
doclet.AnnotationTypes=Annotation Types
doclet.AnnotationInterfaces=Annotation Interfaces
doclet.Exceptions=Exceptions
doclet.Errors=Errors
doclet.ExceptionClasses=Exception Classes
doclet.Classes=Classes
doclet.All_Classes_And_Interfaces=All Classes and Interfaces
doclet.All_Superinterfaces=All Superinterfaces:
@ -164,10 +163,8 @@ doclet.interface=interface
doclet.class=class
doclet.RecordClass=Record Class
doclet.recordclass=record class
doclet.Error=Error
doclet.error=error
doclet.Exception=Exception
doclet.exception=exception
doclet.ExceptionClass=Exception Class
doclet.exceptionclass=exception class
doclet.ExportedTo=Exported To Modules
doclet.OpenedTo=Opened To Modules
doclet.Package_private=(package private)

@ -156,12 +156,6 @@ doclet.class=\u30AF\u30E9\u30B9
doclet.classes=\u30AF\u30E9\u30B9
doclet.Record=\u30EC\u30B3\u30FC\u30C9
doclet.record=\u30EC\u30B3\u30FC\u30C9
doclet.Error=\u30A8\u30E9\u30FC
doclet.error=\u30A8\u30E9\u30FC
doclet.errors=\u30A8\u30E9\u30FC
doclet.Exception=\u4F8B\u5916
doclet.exception=\u4F8B\u5916
doclet.exceptions=\u4F8B\u5916
doclet.ExportedTo=\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8
doclet.OpenedTo=\u30E2\u30B8\u30E5\u30FC\u30EB\u306B\u30AA\u30FC\u30D7\u30F3
doclet.Package_private=(package private)

@ -156,12 +156,6 @@ doclet.class=\u7C7B
doclet.classes=\u7C7B
doclet.Record=\u8BB0\u5F55
doclet.record=\u8BB0\u5F55
doclet.Error=\u9519\u8BEF
doclet.error=\u9519\u8BEF
doclet.errors=\u9519\u8BEF
doclet.Exception=\u5F02\u5E38\u9519\u8BEF
doclet.exception=\u5F02\u5E38\u9519\u8BEF
doclet.exceptions=\u5F02\u5E38\u9519\u8BEF
doclet.ExportedTo=\u5DF2\u5BFC\u51FA\u5230\u6A21\u5757
doclet.OpenedTo=\u5DF2\u6253\u5F00\u5230\u6A21\u5757
doclet.Package_private=(\u4E13\u7528\u7A0B\u5E8F\u5305)

@ -59,8 +59,7 @@ public class SummaryAPIListBuilder {
INTERFACE,
CLASS,
ENUM,
EXCEPTION, // no ElementKind mapping
ERROR, // no ElementKind mapping
EXCEPTION_CLASS, // no ElementKind mapping
RECORD_CLASS,
ANNOTATION_TYPE,
FIELD,
@ -121,10 +120,8 @@ public class SummaryAPIListBuilder {
eset.add(te);
}
case CLASS -> {
if (utils.isError(te)) {
eset = summaryMap.get(SummaryElementKind.ERROR);
} else if (utils.isException(te)) {
eset = summaryMap.get(SummaryElementKind.EXCEPTION);
if (utils.isThrowable(te)) {
eset = summaryMap.get(SummaryElementKind.EXCEPTION_CLASS);
} else {
eset = summaryMap.get(SummaryElementKind.CLASS);
}

@ -1,5 +1,5 @@
/*
* Copyright (c) 2001, 2020, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2001, 2021, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -56,41 +56,6 @@ public class TypeElementCatalog {
*/
private final Map<PackageElement, SortedSet<TypeElement>> allClasses;
/**
* Stores ordinary classes (excluding Exceptions and Errors) for each package
*/
private final Map<PackageElement, SortedSet<TypeElement>> ordinaryClasses;
/**
* Stores exceptions for each package
*/
private final Map<PackageElement, SortedSet<TypeElement>> exceptions;
/**
* Stores enums for each package.
*/
private final Map<PackageElement, SortedSet<TypeElement>> enums;
/**
* Stores records for each package.
*/
private final Map<PackageElement, SortedSet<TypeElement>> records;
/**
* Stores annotation types for each package.
*/
private final Map<PackageElement, SortedSet<TypeElement>> annotationTypes;
/**
* Stores errors for each package
*/
private final Map<PackageElement, SortedSet<TypeElement>> errors;
/**
* Stores interfaces for each package
*/
private final Map<PackageElement, SortedSet<TypeElement>> interfaces;
private final BaseConfiguration configuration;
private final Utils utils;
private final Comparator<Element> comparator;
@ -116,13 +81,6 @@ public class TypeElementCatalog {
this.utils = config.utils;
comparator = utils.comparators.makeGeneralPurposeComparator();
allClasses = new HashMap<>();
ordinaryClasses = new HashMap<>();
exceptions = new HashMap<>();
enums = new HashMap<>();
records = new HashMap<>();
annotationTypes = new HashMap<>();
errors = new HashMap<>();
interfaces = new HashMap<>();
packageSet = new TreeSet<>(comparator);
}
@ -136,21 +94,6 @@ public class TypeElementCatalog {
return;
}
addTypeElement(typeElement, allClasses);
if (utils.isOrdinaryClass(typeElement)) {
addTypeElement(typeElement, ordinaryClasses);
} else if (utils.isException(typeElement)) {
addTypeElement(typeElement, exceptions);
} else if (utils.isEnum(typeElement)) {
addTypeElement(typeElement, enums);
} else if (utils.isRecord(typeElement)) {
addTypeElement(typeElement, records);
} else if (utils.isAnnotationType(typeElement)) {
addTypeElement(typeElement, annotationTypes);
} else if (utils.isError(typeElement)) {
addTypeElement(typeElement, errors);
} else if (utils.isInterface(typeElement)) {
addTypeElement(typeElement, interfaces);
}
}
/**
@ -178,13 +121,6 @@ public class TypeElementCatalog {
}
private SortedSet<TypeElement> getSet(Map<PackageElement, SortedSet<TypeElement>> m, PackageElement key) {
SortedSet<TypeElement> s = m.get(key);
if (s != null) {
return s;
}
return new TreeSet<>(comparator);
}
/**
* Return all of the classes specified on the command-line that belong to the given package.
*
@ -193,7 +129,7 @@ public class TypeElementCatalog {
public SortedSet<TypeElement> allClasses(PackageElement packageElement) {
return utils.isSpecified(packageElement)
? utils.getTypeElementsAsSortedSet(utils.getEnclosedTypeElements(packageElement))
: getSet(allClasses, packageElement);
: allClasses.getOrDefault(packageElement, Collections.emptySortedSet());
}
/**
@ -214,69 +150,4 @@ public class TypeElementCatalog {
public SortedSet<PackageElement> packages() {
return packageSet;
}
/**
* Return all of the errors specified on the command-line that belong to the given package.
*
* @param pkg the name of the package specified on the command-line.
*/
public SortedSet<TypeElement> errors(PackageElement pkg) {
return getSet(errors, pkg);
}
/**
* Return all of the exceptions specified on the command-line that belong to the given package.
*
* @param pkg the name of the package specified on the command-line.
*/
public SortedSet<TypeElement> exceptions(PackageElement pkg) {
return getSet(exceptions, pkg);
}
/**
* Return all of the enums specified on the command-line that belong to the given package.
*
* @param pkg the name of the package specified on the command-line.
*/
public SortedSet<TypeElement> enums(PackageElement pkg) {
return getSet(enums, pkg);
}
/**
* Return all of the records specified on the command-line that belong to the given package.
*
* @param pkg the name of the package specified on the command-line.
*/
public SortedSet<TypeElement> records(PackageElement pkg) {
return getSet(records, pkg);
}
/**
* Return all of the annotation types specified on the command-line that belong to the given
* package.
*
* @param pkg the name of the package specified on the command-line.
*/
public SortedSet<TypeElement> annotationTypes(PackageElement pkg) {
return getSet(annotationTypes, pkg);
}
/**
* Return all of the interfaces specified on the command-line that belong to the given package.
*
* @param pkg the name of the package specified on the command-line.
*/
public SortedSet<TypeElement> interfaces(PackageElement pkg) {
return getSet(interfaces, pkg);
}
/**
* Return all of the ordinary classes specified on the command-line that belong to the given
* package.
*
* @param pkg the name of the package specified on the command-line.
*/
public SortedSet<TypeElement> ordinaryClasses(PackageElement pkg) {
return getSet(ordinaryClasses, pkg);
}
}

@ -107,7 +107,6 @@ import com.sun.source.doctree.SerialTree;
import com.sun.source.doctree.StartElementTree;
import com.sun.source.doctree.TextTree;
import com.sun.source.doctree.ThrowsTree;
import com.sun.source.doctree.UnknownBlockTagTree;
import com.sun.source.doctree.UsesTree;
import com.sun.source.tree.CompilationUnitTree;
import com.sun.source.tree.LineMap;
@ -180,13 +179,7 @@ public class Utils {
return getSymbol("java.lang.Object");
}
public TypeMirror getExceptionType() {
return getSymbol("java.lang.Exception");
}
public TypeMirror getErrorType() {
return getSymbol("java.lang.Error");
}
public TypeMirror getThrowableType() { return getSymbol("java.lang.Throwable"); }
public TypeMirror getSerializableType() {
return getSymbol("java.io.Serializable");
@ -502,10 +495,7 @@ public class Utils {
if (isEnum(te) || isInterface(te) || isAnnotationType(te) || isRecord(te)) {
return false;
}
if (isError(te) || isException(te)) {
return false;
}
return true;
return !isThrowable(te);
}
public boolean isUndocumentedEnclosure(TypeElement enclosingTypeElement) {
@ -514,18 +504,11 @@ public class Utils {
&& !isLinkable(enclosingTypeElement);
}
public boolean isError(TypeElement te) {
public boolean isThrowable(TypeElement te) {
if (isEnum(te) || isInterface(te) || isAnnotationType(te)) {
return false;
}
return typeUtils.isSubtype(te.asType(), getErrorType());
}
public boolean isException(TypeElement te) {
if (isEnum(te) || isInterface(te) || isAnnotationType(te)) {
return false;
}
return typeUtils.isSubtype(te.asType(), getExceptionType());
return typeUtils.isSubtype(te.asType(), getThrowableType());
}
public boolean isPrimitive(TypeMirror t) {
@ -1275,8 +1258,7 @@ public class Utils {
case RECORD ->
"doclet.RecordClass";
case CLASS ->
isException(te) ? "doclet.Exception"
: isError(te) ? "doclet.Error"
isThrowable(te) ? "doclet.ExceptionClass"
: "doclet.Class";
default ->
throw new IllegalArgumentException(te.getKind().toString());
@ -1993,31 +1975,6 @@ public class Utils {
});
}
/**
* Returns a list of classes that are not errors or exceptions
* @param e Element
* @return List
*/
public List<TypeElement> getOrdinaryClasses(Element e) {
return getClasses(e).stream()
.filter(te -> (!isException(te) && !isError(te)))
.toList();
}
public List<TypeElement> getErrors(Element e) {
return getClasses(e)
.stream()
.filter(this::isError)
.toList();
}
public List<TypeElement> getExceptions(Element e) {
return getClasses(e)
.stream()
.filter(this::isException)
.toList();
}
/**
* Returns a list of documented elements of a given type with a given kind.
* If the root of the search is a package, the search is recursive.

@ -270,8 +270,7 @@ public class TestDeprecatedDocs extends JavadocTester {
<li><a href="#for-removal">Terminally Deprecated</a></li>
<li><a href="#class">Classes</a></li>
<li><a href="#enum-class">Enum Classes</a></li>
<li><a href="#exception">Exceptions</a></li>
<li><a href="#error">Errors</a></li>
<li><a href="#exception-class">Exception Classes</a></li>
<li><a href="#annotation-interface">Annotation Interfaces</a></li>
<li><a href="#field">Fields</a></li>
<li><a href="#method">Methods</a></li>
@ -296,13 +295,17 @@ public class TestDeprecatedDocs extends JavadocTester {
<div class="deprecation-comment">enum_test1 passes.</div>
</div>""",
"""
<div id="exception">
<div class="caption"><span>Deprecated Exceptions</span></div>
<div id="exception-class">
<div class="caption"><span>Deprecated Exception Classes</span></div>
<div class="summary-table two-column-summary">
<div class="table-header col-first">Exceptions</div>
<div class="table-header col-first">Exception Class</div>
<div class="table-header col-last">Description</div>
<div class="col-summary-item-name even-row-color"><a href="pkg/TestException.html" title="class in pkg">pkg.TestException</a></div>
<div class="col-summary-item-name even-row-color"><a href="pkg/TestError.html" title="class in pkg">pkg.TestError</a></div>
<div class="col-last even-row-color">
<div class="deprecation-comment">error_test1 passes.</div>
</div>
<div class="col-summary-item-name odd-row-color"><a href="pkg/TestException.html" title="class in pkg">pkg.TestException</a></div>
<div class="col-last odd-row-color">
<div class="deprecation-comment">exception_test1 passes.</div>
</div>""",
"""

@ -330,9 +330,9 @@ public class TestHtmlTableTags extends JavadocTester {
class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show\
('class-summary', 'class-summary-tab3', 2)" class="table-tab">Enum Classes</butt\
on>\
<button id="class-summary-tab7" role="tab" aria-selected="false" aria-controls="\
<button id="class-summary-tab6" role="tab" aria-selected="false" aria-controls="\
class-summary.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show\
('class-summary', 'class-summary-tab7', 2)" class="table-tab">Annotation Interfa\
('class-summary', 'class-summary-tab6', 2)" class="table-tab">Annotation Interfa\
ces</button></div>""");
// Class documentation
@ -592,9 +592,9 @@ public class TestHtmlTableTags extends JavadocTester {
<div class="block">A sample enum.</div>
</div>""",
"""
<div class="col-first even-row-color class-summary class-summary-tab7"><a\
<div class="col-first even-row-color class-summary class-summary-tab6"><a\
href="C3.html" title="annotation interface in pkg2">C3</a></div>
<div class="col-last even-row-color class-summary class-summary-tab7">
<div class="col-last even-row-color class-summary class-summary-tab6">
<div class="block">Test Annotation class.</div>
</div>""");
@ -754,9 +754,9 @@ public class TestHtmlTableTags extends JavadocTester {
e</a></div>
<div class="col-last odd-row-color class-summary class-summary-tab3"></div>""",
"""
<div class="col-first even-row-color class-summary class-summary-tab7"><a\
<div class="col-first even-row-color class-summary class-summary-tab6"><a\
href="C3.html" title="annotation interface in pkg2">C3</a></div>
<div class="col-last even-row-color class-summary class-summary-tab7"></div>""");
<div class="col-last even-row-color class-summary class-summary-tab6"></div>""");
// Class documentation
checkOutput("pkg1/C1.html", true,

@ -1405,9 +1405,9 @@ public class TestModules extends JavadocTester {
ls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" oncli\
ck="show('all-classes-table', 'all-classes-table-tab2', 2)" class="table-tab">Cl\
asses</button>\
<button id="all-classes-table-tab7" role="tab" aria-selected="false" aria-contro\
<button id="all-classes-table-tab6" role="tab" aria-selected="false" aria-contro\
ls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" oncli\
ck="show('all-classes-table', 'all-classes-table-tab7', 2)" class="table-tab">An\
ck="show('all-classes-table', 'all-classes-table-tab6', 2)" class="table-tab">An\
notation Interfaces</button></div>
""",
"""

@ -23,7 +23,7 @@
/*
* @test
* @bug 8263468
* @bug 8263468 8269401
* @summary New page for "recent" new API
* @library ../../lib
* @modules jdk.javadoc/jdk.javadoc.internal.tool
@ -109,8 +109,7 @@ public class TestNewApiList extends JavadocTester {
<li><a href="#interface">Interfaces</a></li>
<li><a href="#class">Classes</a></li>
<li><a href="#enum-class">Enum Classes</a></li>
<li><a href="#exception">Exceptions</a></li>
<li><a href="#error">Errors</a></li>
<li><a href="#exception-class">Exception Classes</a></li>
<li><a href="#record-class">Record Classes</a></li>
<li><a href="#annotation-interface">Annotation Interfaces</a></li>
<li><a href="#field">Fields</a></li>
@ -215,39 +214,31 @@ public class TestNewApiList extends JavadocTester {
<div class="block">Test enum class.</div>
</div>""",
"""
<div id="exception">
<div id="exception-class">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="exc\
eption-tab0" role="tab" aria-selected="true" aria-controls="exception.tabpanel" tabi\
ndex="0" onkeydown="switchTab(event)" onclick="show('exception', 'exception', 2)" cl\
ass="active-table-tab">New Exceptions</button><button id="exception-tab6" role="tab"\
aria-selected="false" aria-controls="exception.tabpanel" tabindex="-1" onkeydown="s\
witchTab(event)" onclick="show('exception', 'exception-tab6', 2)" class="table-tab">\
Added in 0.9</button></div>
<div id="exception.tabpanel" role="tabpanel">
<div class="summary-table two-column-summary" aria-labelledby="exception-tab0">
<div class="table-header col-first">Exceptions</div>
eption-class-tab0" role="tab" aria-selected="true" aria-controls="exception-class.ta\
bpanel" tabindex="0" onkeydown="switchTab(event)" onclick="show('exception-class', '\
exception-class', 2)" class="active-table-tab">New Exception Classes</button><button\
id="exception-class-tab3" role="tab" aria-selected="false" aria-controls="exception\
-class.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('exception\
-class', 'exception-class-tab3', 2)" class="table-tab">Added in 2.0b</button><button\
id="exception-class-tab6" role="tab" aria-selected="false" aria-controls="exception\
-class.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="show('exception\
-class', 'exception-class-tab6', 2)" class="table-tab">Added in 0.9</button></div>
<div id="exception-class.tabpanel" role="tabpanel">
<div class="summary-table two-column-summary" aria-labelledby="exception-class-tab0">
<div class="table-header col-first">Exception Class</div>
<div class="table-header col-last">Description</div>
<div class="col-summary-item-name even-row-color exception exception-tab6"><a href="\
mdl/pkg/TestException.html" title="class in pkg">pkg.TestException</a></div>
<div class="col-last even-row-color exception exception-tab6">
<div class="block">Test exception class.</div>
</div>""",
"""
<div id="error">
<div class="table-tabs" role="tablist" aria-orientation="horizontal"><button id="err\
or-tab0" role="tab" aria-selected="true" aria-controls="error.tabpanel" tabindex="0"\
onkeydown="switchTab(event)" onclick="show('error', 'error', 2)" class="active-tabl\
e-tab">New Errors</button><button id="error-tab3" role="tab" aria-selected="false" a\
ria-controls="error.tabpanel" tabindex="-1" onkeydown="switchTab(event)" onclick="sh\
ow('error', 'error-tab3', 2)" class="table-tab">Added in 2.0b</button></div>
<div id="error.tabpanel" role="tabpanel">
<div class="summary-table two-column-summary" aria-labelledby="error-tab0">
<div class="table-header col-first">Errors</div>
<div class="table-header col-last">Description</div>
<div class="col-summary-item-name even-row-color error error-tab3"><a href="mdl/pkg/\
TestError.html" title="class in pkg">pkg.TestError</a></div>
<div class="col-last even-row-color error error-tab3">
<div class="col-summary-item-name even-row-color exception-class exception-class-tab\
3"><a href="mdl/pkg/TestError.html" title="class in pkg">pkg.TestError</a></div>
<div class="col-last even-row-color exception-class exception-class-tab3">
<div class="block">Test error class.</div>
</div>
<div class="col-summary-item-name odd-row-color exception-class exception-class-tab6\
"><a href="mdl/pkg/TestException.html" title="class in pkg">pkg.TestException</a></d\
iv>
<div class="col-last odd-row-color exception-class exception-class-tab6">
<div class="block">Test exception class.</div>
</div>""",
"""
<div id="record-class">

@ -818,14 +818,10 @@ public class TestSearch extends JavadocTester {
<button id="all-classes-table-tab5" role="tab" aria-selected="false" aria-contro\
ls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" oncli\
ck="show('all-classes-table', 'all-classes-table-tab5', 2)" class="table-tab">Ex\
ceptions</button>\
ception Classes</button>\
<button id="all-classes-table-tab6" role="tab" aria-selected="false" aria-contro\
ls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" oncli\
ck="show('all-classes-table', 'all-classes-table-tab6', 2)" class="table-tab">Er\
rors</button>\
<button id="all-classes-table-tab7" role="tab" aria-selected="false" aria-contro\
ls="all-classes-table.tabpanel" tabindex="-1" onkeydown="switchTab(event)" oncli\
ck="show('all-classes-table', 'all-classes-table-tab7', 2)" class="table-tab">An\
ck="show('all-classes-table', 'all-classes-table-tab6', 2)" class="table-tab">An\
notation Interfaces</button>\
</div>
<div id="all-classes-table.tabpanel" role="tabpanel">

@ -1,5 +1,5 @@
/*
* Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@ -179,12 +179,13 @@ public class TestSystemPropertyTaglet extends JavadocTester {
<dd>System Property</dd>""",
"""
<dt><a href="mymodule/mypackage/MyError.html#test.\
property" class="search-tag-link">test.property</a> - Search tag in error mypackage.MyError</dt>
property" class="search-tag-link">test.property</a> - Search tag in exception class mypackage.MyE\
rror</dt>
<dd>System Property</dd>""",
"""
<dt><a href="mymodule/mypackage/MyException.html#t\
est.property" class="search-tag-link">test.property</a> - Search tag in exception mypackage.MyExc\
eption</dt>
est.property" class="search-tag-link">test.property</a> - Search tag in exception class mypackage\
.MyException</dt>
<dd>System Property</dd>""",
"""
<dt><a href="mymodule/mypackage/MyInterface.html#t\
@ -273,19 +274,20 @@ public class TestSystemPropertyTaglet extends JavadocTester {
{"l":"test.property","h":"class mypackage.MyClass","d":"System Property","u":"my\
module/mypackage/MyClass.html#test.property"}""",
"""
{"l":"test.property","h":"enum class mypackage.MyEnum","d":"System Property","u":"mymo\
dule/mypackage/MyEnum.html#test.property"}""",
{"l":"test.property","h":"enum class mypackage.MyEnum","d":"System Property","u"\
:"mymodule/mypackage/MyEnum.html#test.property"}""",
"""
{"l":"test.property","h":"error mypackage.MyError","d":"System Property","u":"my\
module/mypackage/MyError.html#test.property"}""",
{"l":"test.property","h":"exception class mypackage.MyError","d":"System Propert\
y","u":"mymodule/mypackage/MyError.html#test.property"}""",
"""
{"l":"test.property","h":"exception mypackage.MyException","d":"System Property"\
,"u":"mymodule/mypackage/MyException.html#test.property"}""",
{"l":"test.property","h":"exception class mypackage.MyException","d":"System Pro\
perty","u":"mymodule/mypackage/MyException.html#test.property"}""",
"""
{"l":"test.property","h":"interface mypackage.MyInterface","d":"System Property"\
,"u":"mymodule/mypackage/MyInterface.html#test.property"}""",
"""
{"l":"test.property","h":"module mymodule","d":"System Property","u":"mymodule/module-summary.html#test.property"}""",
{"l":"test.property","h":"module mymodule","d":"System Property","u":"mymodule/m\
odule-summary.html#test.property"}""",
"""
{"l":"test.property","h":"mypackage.MyAnnotation.value()","d":"System Property",\
"u":"mymodule/mypackage/MyAnnotation.html#test.property-1"}""",

@ -219,7 +219,7 @@ public class CheckResourceKeys {
// special handling for code strings synthesized in
// jdk.javadoc.internal.doclets.toolkit.util.Utils.getTypeName
String[] extras = {
"AnnotationType", "Class", "Enum", "EnumClass", "Error", "Exception", "Interface", "RecordClass"
"AnnotationType", "Class", "Enum", "EnumClass", "ExceptionClass", "Interface", "RecordClass"
};
for (String s: extras) {
if (results.contains("doclet." + s))