# HG changeset patch # User lana # Date 1474569095 0 # Node ID 06ac98da3f8247896aa09bdfaf3b0924cc52dfd2 # Parent 4fe2fc4327b536446272989d3d3921e6a9671e22# Parent 957f4fa38bd6e4d0cde616ec9b6a4696fce3d137 Merge diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Flags.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Flags.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Flags.java Thu Sep 22 18:31:35 2016 +0000 @@ -134,7 +134,7 @@ /** Flag is set for nested classes that do not access instance members * or `this' of an outer class and therefore don't need to be passed * a this$n reference. This value is currently set only for anonymous - * classes in superclass constructor calls and only for pre 1.4 targets. + * classes in superclass constructor calls. * todo: use this value for optimizing away this$n parameters in * other cases. */ diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java Thu Sep 22 18:31:35 2016 +0000 @@ -921,13 +921,11 @@ c.complete(); // If this class appears as an anonymous class - // in a superclass constructor call where - // no explicit outer instance is given, + // in a superclass constructor call // disable implicit outer instance from being passed. // (This would be an illegal access to "this before super"). if (env.info.isSelfCall && - env.tree.hasTag(NEWCLASS) && - ((JCNewClass)env.tree).encl == null) { + env.tree.hasTag(NEWCLASS)) { c.flags_field |= NOOUTERTHIS; } attribClass(tree.pos(), c); @@ -1453,7 +1451,7 @@ try { close = rs.resolveQualifiedMethod(pos, env, - resource, + types.skipTypeVars(resource, false), names.close, List.nil(), List.nil()); @@ -2329,6 +2327,9 @@ /** Make an attributed null check tree. */ public JCExpression makeNullCheck(JCExpression arg) { + // optimization: new Outer() can never be null; skip null check + if (arg.getTag() == NEWCLASS) + return arg; // optimization: X.this is never null; skip null check Name name = TreeInfo.name(arg); if (name == names._this || name == names._super) return arg; diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Flow.java Thu Sep 22 18:31:35 2016 +0000 @@ -1098,7 +1098,7 @@ if (types.asSuper(sup, syms.autoCloseableType.tsym) != null) { Symbol closeMethod = rs.resolveQualifiedMethod(tree, attrEnv, - sup, + types.skipTypeVars(sup, false), names.close, List.nil(), List.nil()); diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/BaseFileManager.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/BaseFileManager.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/BaseFileManager.java Thu Sep 22 18:31:35 2016 +0000 @@ -287,6 +287,7 @@ case MULTIRELEASE: multiReleaseValue = value; + locations.setMultiReleaseValue(value); return true; default: diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java Thu Sep 22 18:31:35 2016 +0000 @@ -130,6 +130,7 @@ Map fileSystems = new LinkedHashMap<>(); List closeables = new ArrayList<>(); + private Map fsEnv = Collections.emptyMap(); Locations() { initHandlers(); @@ -207,6 +208,10 @@ return entries; } + public void setMultiReleaseValue(String multiReleaseValue) { + fsEnv = Collections.singletonMap("multi-release", multiReleaseValue); + } + /** * Utility class to help evaluate a path option. Duplicate entries are ignored, jar class paths * can be expanded. @@ -1047,7 +1052,8 @@ } if (p.getFileName().toString().endsWith(".jar") && fsInfo.exists(p)) { - try (FileSystem fs = FileSystems.newFileSystem(p, null)) { + URI uri = URI.create("jar:" + p.toUri()); + try (FileSystem fs = FileSystems.newFileSystem(uri, fsEnv, null)) { Path moduleInfoClass = fs.getPath("module-info.class"); if (Files.exists(moduleInfoClass)) { String moduleName = readModuleName(moduleInfoClass); diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractMemberWriter.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractMemberWriter.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AbstractMemberWriter.java Thu Sep 22 18:31:35 2016 +0000 @@ -424,12 +424,15 @@ Content tbody = new HtmlTree(HtmlTag.TBODY); boolean altColor = true; for (Element member : deprmembers) { - HtmlTree td = HtmlTree.TD(HtmlStyle.colOne, getDeprecatedLink(member)); + HtmlTree thRow = HtmlTree.TH_ROW_SCOPE(HtmlStyle.colFirst, getDeprecatedLink(member)); + HtmlTree tr = HtmlTree.TR(thRow); + HtmlTree td = new HtmlTree(HtmlTag.TD); + td.addStyle(HtmlStyle.colLast); List deprTrees = utils.getBlockTags(member, DocTree.Kind.DEPRECATED); if (!deprTrees.isEmpty()) { writer.addInlineDeprecatedComment(member, deprTrees.get(0), td); } - HtmlTree tr = HtmlTree.TR(td); + tr.addContent(td); tr.addStyle(altColor ? HtmlStyle.altColor : HtmlStyle.rowColor); altColor = !altColor; tbody.addContent(tr); @@ -477,8 +480,9 @@ tdFirst.addStyle(HtmlStyle.colFirst); writer.addSummaryType(this, element, tdFirst); tr.addContent(tdFirst); - HtmlTree tdLast = new HtmlTree(HtmlTag.TD); - tdLast.addStyle(HtmlStyle.colLast); + HtmlTree thType = new HtmlTree(HtmlTag.TH); + thType.addStyle(HtmlStyle.colSecond); + thType.addAttr(HtmlAttr.SCOPE, "row"); if (te != null && !utils.isConstructor(element) && !utils.isClass(element) @@ -487,14 +491,17 @@ HtmlTree name = new HtmlTree(HtmlTag.SPAN); name.addStyle(HtmlStyle.typeNameLabel); name.addContent(name(te) + "."); - tdLast.addContent(name); + thType.addContent(name); } addSummaryLink(utils.isClass(element) || utils.isInterface(element) ? LinkInfoImpl.Kind.CLASS_USE : LinkInfoImpl.Kind.MEMBER, - te, element, tdLast); - writer.addSummaryLinkComment(this, element, tdLast); - tr.addContent(tdLast); + te, element, thType); + tr.addContent(thType); + HtmlTree tdDesc = new HtmlTree(HtmlTag.TD); + tdDesc.addStyle(HtmlStyle.colLast); + writer.addSummaryLinkComment(this, element, tdDesc); + tr.addContent(tdDesc); tbody.addContent(tr); } table.addContent(tbody); @@ -557,12 +564,15 @@ HtmlTree tdSummaryType = new HtmlTree(HtmlTag.TD); tdSummaryType.addStyle(HtmlStyle.colFirst); writer.addSummaryType(this, member, tdSummaryType); - HtmlTree tdSummary = new HtmlTree(HtmlTag.TD); - setSummaryColumnStyle(tdSummary); - addSummaryLink(tElement, member, tdSummary); - writer.addSummaryLinkComment(this, member, firstSentenceTags, tdSummary); HtmlTree tr = HtmlTree.TR(tdSummaryType); - tr.addContent(tdSummary); + HtmlTree thSummaryLink = new HtmlTree(HtmlTag.TH); + setSummaryColumnStyleAndScope(thSummaryLink); + addSummaryLink(tElement, member, thSummaryLink); + tr.addContent(thSummaryLink); + HtmlTree tdDesc = new HtmlTree(HtmlTag.TD); + tdDesc.addStyle(HtmlStyle.colLast); + writer.addSummaryLinkComment(this, member, firstSentenceTags, tdDesc); + tr.addContent(tdDesc); if (utils.isMethod(member) && !utils.isAnnotationType(member)) { int methodType = utils.isStatic(member) ? MethodTypes.STATIC.value() : MethodTypes.INSTANCE.value(); @@ -612,12 +622,13 @@ } /** - * Set the style for the summary column. + * Set the style and scope attribute for the summary column. * - * @param tdTree the column for which the style will be set + * @param thTree the column for which the style and scope attribute will be set */ - public void setSummaryColumnStyle(HtmlTree tdTree) { - tdTree.addStyle(HtmlStyle.colLast); + public void setSummaryColumnStyleAndScope(HtmlTree thTree) { + thTree.addStyle(HtmlStyle.colSecond); + thTree.addAttr(HtmlAttr.SCOPE, "row"); } /** diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeFieldWriterImpl.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeFieldWriterImpl.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeFieldWriterImpl.java Thu Sep 22 18:31:35 2016 +0000 @@ -25,8 +25,6 @@ package jdk.javadoc.internal.doclets.formats.html; -import java.io.*; - import java.util.Arrays; import java.util.List; @@ -222,9 +220,7 @@ */ public List getSummaryTableHeader(Element member) { List header = Arrays.asList(writer.getModifierTypeHeader(), - configuration.getText("doclet.0_and_1", - configuration.getText("doclet.Fields"), - configuration.getText("doclet.Description"))); + resources.getText("doclet.Fields"), resources.getText("doclet.Description")); return header; } diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeOptionalMemberWriterImpl.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeOptionalMemberWriterImpl.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeOptionalMemberWriterImpl.java Thu Sep 22 18:31:35 2016 +0000 @@ -133,9 +133,8 @@ */ public List getSummaryTableHeader(Element member) { List header = Arrays.asList(writer.getModifierTypeHeader(), - configuration.getText("doclet.0_and_1", - configuration.getText("doclet.Annotation_Type_Optional_Member"), - configuration.getText("doclet.Description"))); + resources.getText("doclet.Annotation_Type_Optional_Member"), + resources.getText("doclet.Description")); return header; } diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/AnnotationTypeRequiredMemberWriterImpl.java Thu Sep 22 18:31:35 2016 +0000 @@ -25,7 +25,6 @@ package jdk.javadoc.internal.doclets.formats.html; -import java.io.*; import java.util.Arrays; import java.util.List; @@ -223,9 +222,7 @@ */ public List getSummaryTableHeader(Element member) { List header = Arrays.asList(writer.getModifierTypeHeader(), - configuration.getText("doclet.0_and_1", - configuration.getText("doclet.Annotation_Type_Required_Member"), - configuration.getText("doclet.Description"))); + resources.getText("doclet.Annotation_Type_Required_Member"), resources.getText("doclet.Description")); return header; } diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassUseWriter.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassUseWriter.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ClassUseWriter.java Thu Sep 22 18:31:35 2016 +0000 @@ -330,8 +330,8 @@ HtmlTree tr = new HtmlTree(HtmlTag.TR); tr.addStyle(altColor ? HtmlStyle.altColor : HtmlStyle.rowColor); altColor = !altColor; - Content tdFirst = HtmlTree.TD(HtmlStyle.colFirst, getPackageLink(pkg)); - tr.addContent(tdFirst); + Content thFirst = HtmlTree.TH_ROW_SCOPE(HtmlStyle.colFirst, getPackageLink(pkg)); + tr.addContent(thFirst); HtmlTree tdLast = new HtmlTree(HtmlTag.TD); tdLast.addStyle(HtmlStyle.colLast); addSummaryComment(pkg, tdLast); @@ -380,9 +380,9 @@ * @param contentTree the content tree to which the package use information will be added */ protected void addPackageUse(PackageElement pkg, Content contentTree) { - Content tdFirst = HtmlTree.TD(HtmlStyle.colFirst, + Content thFirst = HtmlTree.TH_ROW_SCOPE(HtmlStyle.colFirst, getHyperLink(getPackageAnchorName(pkg), new StringContent(utils.getPackageName(pkg)))); - contentTree.addContent(tdFirst); + contentTree.addContent(thFirst); HtmlTree tdLast = new HtmlTree(HtmlTag.TD); tdLast.addStyle(HtmlStyle.colLast); addSummaryComment(pkg, tdLast); diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstantsSummaryWriterImpl.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstantsSummaryWriterImpl.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstantsSummaryWriterImpl.java Thu Sep 22 18:31:35 2016 +0000 @@ -25,7 +25,6 @@ package jdk.javadoc.internal.doclets.formats.html; -import java.io.*; import java.util.*; import javax.lang.model.element.Modifier; @@ -332,7 +331,7 @@ Content nameContent = getDocLink(LinkInfoImpl.Kind.CONSTANT_SUMMARY, member, member.getSimpleName(), false); Content code = HtmlTree.CODE(nameContent); - return HtmlTree.TD(code); + return HtmlTree.TH_ROW_SCOPE(HtmlStyle.colSecond, code); } /** diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstructorWriterImpl.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstructorWriterImpl.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ConstructorWriterImpl.java Thu Sep 22 18:31:35 2016 +0000 @@ -25,13 +25,13 @@ package jdk.javadoc.internal.doclets.formats.html; -import java.io.*; import java.util.*; import javax.lang.model.element.Element; import javax.lang.model.element.ExecutableElement; import javax.lang.model.element.TypeElement; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag; @@ -168,11 +168,13 @@ * {@inheritDoc} */ @Override - public void setSummaryColumnStyle(HtmlTree tdTree) { - if (foundNonPubConstructor) - tdTree.addStyle(HtmlStyle.colLast); - else - tdTree.addStyle(HtmlStyle.colOne); + public void setSummaryColumnStyleAndScope(HtmlTree thTree) { + if (foundNonPubConstructor) { + thTree.addStyle(HtmlStyle.colSecond); + } else { + thTree.addStyle(HtmlStyle.colFirst); + } + thTree.addAttr(HtmlAttr.SCOPE, "row"); } /** @@ -267,9 +269,8 @@ if (foundNonPubConstructor) { header.add(resources.getText("doclet.Modifier")); } - header.add(resources.getText("doclet.0_and_1", - resources.getText("doclet.Constructor"), - resources.getText("doclet.Description"))); + header.add(resources.getText("doclet.Constructor")); + header.add(resources.getText("doclet.Description")); return header; } diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DeprecatedListWriter.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DeprecatedListWriter.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/DeprecatedListWriter.java Thu Sep 22 18:31:35 2016 +0000 @@ -261,14 +261,13 @@ for (DeprElementKind kind : DeprElementKind.values()) { if (deprapi.hasDocumentation(kind)) { addAnchor(deprapi, kind, div); - memberTableSummary = - configuration.getText("doclet.Member_Table_Summary", - configuration.getText(getHeadingKey(kind)), - configuration.getText(getSummaryKey(kind))); + memberTableSummary + = resources.getText("doclet.Member_Table_Summary", + resources.getText(getHeadingKey(kind)), + resources.getText(getSummaryKey(kind))); List memberTableHeader = new ArrayList<>(); - memberTableHeader.add(configuration.getText("doclet.0_and_1", - configuration.getText(getHeaderKey(kind)), - configuration.getText("doclet.Description"))); + memberTableHeader.add(resources.getText(getHeaderKey(kind))); + memberTableHeader.add(resources.getText("doclet.Description")); if (kind == DeprElementKind.PACKAGE) addPackageDeprecatedAPI(deprapi.getSet(kind), getHeadingKey(kind), memberTableSummary, memberTableHeader, div); diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/EnumConstantWriterImpl.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/EnumConstantWriterImpl.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/EnumConstantWriterImpl.java Thu Sep 22 18:31:35 2016 +0000 @@ -25,8 +25,7 @@ package jdk.javadoc.internal.doclets.formats.html; -import java.io.*; - +import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -34,6 +33,7 @@ import javax.lang.model.element.TypeElement; import javax.lang.model.element.VariableElement; +import jdk.javadoc.internal.doclets.formats.html.markup.HtmlAttr; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlConstants; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlStyle; import jdk.javadoc.internal.doclets.formats.html.markup.HtmlTag; @@ -214,9 +214,8 @@ */ @Override public List getSummaryTableHeader(Element member) { - List header = Arrays.asList(configuration.getText("doclet.0_and_1", - configuration.getText("doclet.Enum_Constant"), - configuration.getText("doclet.Description"))); + List header = Arrays.asList(resources.getText("doclet.Enum_Constant"), + resources.getText("doclet.Description")); return header; } @@ -259,8 +258,9 @@ * {@inheritDoc} */ @Override - public void setSummaryColumnStyle(HtmlTree tdTree) { - tdTree.addStyle(HtmlStyle.colOne); + public void setSummaryColumnStyleAndScope(HtmlTree thTree) { + thTree.addStyle(HtmlStyle.colFirst); + thTree.addAttr(HtmlAttr.SCOPE, "row"); } /** diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/FieldWriterImpl.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/FieldWriterImpl.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/FieldWriterImpl.java Thu Sep 22 18:31:35 2016 +0000 @@ -25,7 +25,6 @@ package jdk.javadoc.internal.doclets.formats.html; -import java.io.*; import java.util.Arrays; import java.util.List; @@ -215,9 +214,7 @@ @Override public List getSummaryTableHeader(Element member) { List header = Arrays.asList(writer.getModifierTypeHeader(), - resources.getText("doclet.0_and_1", - resources.getText("doclet.Field"), - resources.getText("doclet.Description"))); + resources.getText("doclet.Field"), resources.getText("doclet.Description")); return header; } diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/HtmlDocletWriter.java Thu Sep 22 18:31:35 2016 +0000 @@ -405,7 +405,7 @@ } Content classContent = getLink(new LinkInfoImpl( configuration, LinkInfoImpl.Kind.PACKAGE, te)); - Content tdClass = HtmlTree.TD(HtmlStyle.colFirst, classContent); + Content tdClass = HtmlTree.TH_ROW_SCOPE(HtmlStyle.colFirst, classContent); HtmlTree tr = HtmlTree.TR(tdClass); tr.addStyle(altColor ? HtmlStyle.altColor : HtmlStyle.rowColor); altColor = !altColor; @@ -942,16 +942,20 @@ Content tr = new HtmlTree(HtmlTag.TR); final int size = header.size(); Content tableHeader; - if (size == 1) { + if (size == 2) { tableHeader = new StringContent(header.get(0)); - tr.addContent(HtmlTree.TH(HtmlStyle.colOne, scope, tableHeader)); + tr.addContent(HtmlTree.TH(HtmlStyle.colFirst, scope, tableHeader)); + tableHeader = new StringContent(header.get(1)); + tr.addContent(HtmlTree.TH(HtmlStyle.colLast, scope, tableHeader)); return tr; } for (int i = 0; i < size; i++) { tableHeader = new StringContent(header.get(i)); - if(i == 0) + if (i == 0) tr.addContent(HtmlTree.TH(HtmlStyle.colFirst, scope, tableHeader)); - else if(i == (size - 1)) + else if (i == 1) + tr.addContent(HtmlTree.TH(HtmlStyle.colSecond, scope, tableHeader)); + else if (i == (size - 1)) tr.addContent(HtmlTree.TH(HtmlStyle.colLast, scope, tableHeader)); else tr.addContent(HtmlTree.TH(scope, tableHeader)); @@ -1062,13 +1066,16 @@ boolean altColor = true; for (Element e : deprPkgs) { PackageElement pkg = (PackageElement) e; - HtmlTree td = HtmlTree.TD(HtmlStyle.colOne, + HtmlTree thRow = HtmlTree.TH_ROW_SCOPE(HtmlStyle.colFirst, getPackageLink(pkg, getPackageName(pkg))); + HtmlTree tr = HtmlTree.TR(thRow); + HtmlTree tdDesc = new HtmlTree(HtmlTag.TD); + tdDesc.addStyle(HtmlStyle.colLast); List tags = utils.getDeprecatedTrees(pkg); if (!tags.isEmpty()) { - addInlineDeprecatedComment(pkg, tags.get(0), td); + addInlineDeprecatedComment(pkg, tags.get(0), tdDesc); } - HtmlTree tr = HtmlTree.TR(td); + tr.addContent(tdDesc); tr.addStyle(altColor ? HtmlStyle.altColor : HtmlStyle.rowColor); altColor = !altColor; tbody.addContent(tr); diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MethodWriterImpl.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MethodWriterImpl.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/MethodWriterImpl.java Thu Sep 22 18:31:35 2016 +0000 @@ -261,9 +261,7 @@ @Override public List getSummaryTableHeader(Element member) { List header = Arrays.asList(writer.getModifierTypeHeader(), - resources.getText("doclet.0_and_1", - resources.getText("doclet.Method"), - resources.getText("doclet.Description"))); + resources.getText("doclet.Method"), resources.getText("doclet.Description")); return header; } diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleIndexWriter.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleIndexWriter.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleIndexWriter.java Thu Sep 22 18:31:35 2016 +0000 @@ -159,11 +159,11 @@ for (ModuleElement mdle : modules) { if (!mdle.isUnnamed()) { Content moduleLinkContent = getModuleLink(mdle, new StringContent(mdle.getQualifiedName().toString())); - Content tdModule = HtmlTree.TD(HtmlStyle.colFirst, moduleLinkContent); + Content thModule = HtmlTree.TH_ROW_SCOPE(HtmlStyle.colFirst, moduleLinkContent); HtmlTree tdSummary = new HtmlTree(HtmlTag.TD); tdSummary.addStyle(HtmlStyle.colLast); addSummaryComment(mdle, tdSummary); - HtmlTree tr = HtmlTree.TR(tdModule); + HtmlTree tr = HtmlTree.TR(thModule); tr.addContent(tdSummary); tr.addStyle(altColor ? HtmlStyle.altColor : HtmlStyle.rowColor); tbody.addContent(tr); diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriterImpl.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriterImpl.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/ModuleWriterImpl.java Thu Sep 22 18:31:35 2016 +0000 @@ -294,11 +294,11 @@ public void addRequiresList(ModuleElement.RequiresDirective direct, Content tbody, boolean altColor) { ModuleElement m = direct.getDependency(); Content moduleLinkContent = getModuleLink(m, new StringContent(m.getQualifiedName().toString())); - Content tdPackage = HtmlTree.TD(HtmlStyle.colFirst, moduleLinkContent); + Content thPackage = HtmlTree.TH_ROW_SCOPE(HtmlStyle.colFirst, moduleLinkContent); HtmlTree tdSummary = new HtmlTree(HtmlTag.TD); tdSummary.addStyle(HtmlStyle.colLast); addSummaryComment(m, tdSummary); - HtmlTree tr = HtmlTree.TR(tdPackage); + HtmlTree tr = HtmlTree.TR(thPackage); tr.addContent(tdSummary); tr.addStyle(altColor ? HtmlStyle.altColor : HtmlStyle.rowColor); tbody.addContent(tr); @@ -347,27 +347,27 @@ public void addExportedPackagesList(ModuleElement.ExportsDirective direct, Content tbody, boolean altColor) { PackageElement pkg = direct.getPackage(); Content pkgLinkContent = getPackageLink(pkg, new StringContent(utils.getPackageName(pkg))); - Content tdPackage = HtmlTree.TD(HtmlStyle.colFirst, pkgLinkContent); - HtmlTree tdModules = new HtmlTree(HtmlTag.TD); - tdModules.addStyle(HtmlStyle.colSecond); + Content tdPackage = HtmlTree.TH_ROW_SCOPE(HtmlStyle.colFirst, pkgLinkContent); + HtmlTree thModules = new HtmlTree(HtmlTag.TD); + thModules.addStyle(HtmlStyle.colSecond); List targetModules = direct.getTargetModules(); if (targetModules != null) { List mElements = direct.getTargetModules(); for (int i = 0; i < mElements.size(); i++) { if (i > 0) { - tdModules.addContent(new HtmlTree(HtmlTag.BR)); + thModules.addContent(new HtmlTree(HtmlTag.BR)); } ModuleElement m = mElements.get(i); - tdModules.addContent(new StringContent(m.getQualifiedName().toString())); + thModules.addContent(new StringContent(m.getQualifiedName().toString())); } } else { - tdModules.addContent(configuration.getText("doclet.All_Modules")); + thModules.addContent(configuration.getText("doclet.All_Modules")); } HtmlTree tdSummary = new HtmlTree(HtmlTag.TD); tdSummary.addStyle(HtmlStyle.colLast); addSummaryComment(pkg, tdSummary); HtmlTree tr = HtmlTree.TR(tdPackage); - tr.addContent(tdModules); + tr.addContent(thModules); tr.addContent(tdSummary); tr.addStyle(altColor ? HtmlStyle.altColor : HtmlStyle.rowColor); tbody.addContent(tr); @@ -428,11 +428,11 @@ public void addUsesList(ModuleElement.UsesDirective direct, Content tbody, boolean altColor) { TypeElement type = direct.getService(); Content typeLinkContent = getLink(new LinkInfoImpl(configuration, LinkInfoImpl.Kind.PACKAGE, type)); - Content tdPackage = HtmlTree.TD(HtmlStyle.colFirst, typeLinkContent); + Content thPackage = HtmlTree.TH_ROW_SCOPE(HtmlStyle.colFirst, typeLinkContent); HtmlTree tdSummary = new HtmlTree(HtmlTag.TD); tdSummary.addStyle(HtmlStyle.colLast); addSummaryComment(type, tdSummary); - HtmlTree tr = HtmlTree.TR(tdPackage); + HtmlTree tr = HtmlTree.TR(thPackage); tr.addContent(tdSummary); tr.addStyle(altColor ? HtmlStyle.altColor : HtmlStyle.rowColor); tbody.addContent(tr); @@ -463,18 +463,18 @@ TypeElement srv = direct.getService(); Content implLinkContent = getLink(new LinkInfoImpl(configuration, LinkInfoImpl.Kind.PACKAGE, impl)); Content srvLinkContent = getLink(new LinkInfoImpl(configuration, LinkInfoImpl.Kind.PACKAGE, srv)); - HtmlTree tdType = HtmlTree.TD(HtmlStyle.colFirst, srvLinkContent); - tdType.addContent(new HtmlTree(HtmlTag.BR)); - tdType.addContent("("); + HtmlTree thType = HtmlTree.TH_ROW_SCOPE(HtmlStyle.colFirst, srvLinkContent); + thType.addContent(new HtmlTree(HtmlTag.BR)); + thType.addContent("("); HtmlTree implSpan = HtmlTree.SPAN(HtmlStyle.implementationLabel, contents.implementation); - tdType.addContent(implSpan); - tdType.addContent(Contents.SPACE); - tdType.addContent(implLinkContent); - tdType.addContent(")"); + thType.addContent(implSpan); + thType.addContent(Contents.SPACE); + thType.addContent(implLinkContent); + thType.addContent(")"); HtmlTree tdDesc = new HtmlTree(HtmlTag.TD); tdDesc.addStyle(HtmlStyle.colLast); addSummaryComment(srv, tdDesc); - HtmlTree tr = HtmlTree.TR(tdType); + HtmlTree tr = HtmlTree.TR(thType); tr.addContent(tdDesc); tr.addStyle(altColor ? HtmlStyle.altColor : HtmlStyle.rowColor); tbody.addContent(tr); diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NestedClassWriterImpl.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NestedClassWriterImpl.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/NestedClassWriterImpl.java Thu Sep 22 18:31:35 2016 +0000 @@ -25,8 +25,6 @@ package jdk.javadoc.internal.doclets.formats.html; -import java.io.*; - import java.util.Arrays; import java.util.List; @@ -118,15 +116,11 @@ public List getSummaryTableHeader(Element member) { if (utils.isInterface(member)) { return Arrays.asList(writer.getModifierTypeHeader(), - configuration.getText("doclet.0_and_1", - configuration.getText("doclet.Interface"), - configuration.getText("doclet.Description"))); + resources.getText("doclet.Interface"), resources.getText("doclet.Description")); } else { return Arrays.asList(writer.getModifierTypeHeader(), - configuration.getText("doclet.0_and_1", - configuration.getText("doclet.Class"), - configuration.getText("doclet.Description"))); + resources.getText("doclet.Class"), resources.getText("doclet.Description")); } } diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageIndexWriter.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageIndexWriter.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageIndexWriter.java Thu Sep 22 18:31:35 2016 +0000 @@ -151,11 +151,11 @@ if (!pkg.isUnnamed()) { if (!(configuration.nodeprecated && utils.isDeprecated(pkg))) { Content packageLinkContent = getPackageLink(pkg, getPackageName(pkg)); - Content tdPackage = HtmlTree.TD(HtmlStyle.colFirst, packageLinkContent); + Content thPackage = HtmlTree.TH_ROW_SCOPE(HtmlStyle.colFirst, packageLinkContent); HtmlTree tdSummary = new HtmlTree(HtmlTag.TD); tdSummary.addStyle(HtmlStyle.colLast); addSummaryComment(pkg, tdSummary); - HtmlTree tr = HtmlTree.TR(tdPackage); + HtmlTree tr = HtmlTree.TR(thPackage); tr.addContent(tdSummary); tr.addStyle(altColor ? HtmlStyle.altColor : HtmlStyle.rowColor); tbody.addContent(tr); diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageUseWriter.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageUseWriter.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageUseWriter.java Thu Sep 22 18:31:35 2016 +0000 @@ -187,9 +187,7 @@ */ protected void addClassList(Content contentTree) { List classTableHeader = Arrays.asList( - configuration.getText("doclet.0_and_1", - configuration.getText("doclet.Class"), - configuration.getText("doclet.Description"))); + resources.getText("doclet.Class"), resources.getText("doclet.Description")); for (String packageName : usingPackageToUsedClasses.keySet()) { PackageElement usingPackage = utils.elementUtils.getPackageElement(packageName); HtmlTree li = new HtmlTree(HtmlTag.LI); @@ -234,10 +232,13 @@ DocPath dp = pathString(usedClass, DocPaths.CLASS_USE.resolve(DocPath.forName(utils, usedClass))); StringContent stringContent = new StringContent(utils.getSimpleName(usedClass)); - Content td = HtmlTree.TD(HtmlStyle.colOne, + Content thType = HtmlTree.TH_ROW_SCOPE(HtmlStyle.colFirst, getHyperLink(dp.fragment(getPackageAnchorName(pkg)), stringContent)); - addIndexComment(usedClass, td); - contentTree.addContent(td); + contentTree.addContent(thType); + HtmlTree tdDesc = new HtmlTree(HtmlTag.TD); + tdDesc.addStyle(HtmlStyle.colLast); + addIndexComment(usedClass, tdDesc); + contentTree.addContent(tdDesc); } /** @@ -247,10 +248,10 @@ * @param contentTree the content tree to which the information will be added */ protected void addPackageUse(PackageElement pkg, Content contentTree) { - Content tdFirst = HtmlTree.TD(HtmlStyle.colFirst, + Content thFirst = HtmlTree.TH_ROW_SCOPE(HtmlStyle.colFirst, getHyperLink(utils.getPackageName(pkg), new StringContent(utils.getPackageName(pkg)))); - contentTree.addContent(tdFirst); + contentTree.addContent(thFirst); HtmlTree tdLast = new HtmlTree(HtmlTag.TD); tdLast.addStyle(HtmlStyle.colLast); if (pkg != null && !pkg.isUnnamed()) { diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageWriterImpl.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageWriterImpl.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PackageWriterImpl.java Thu Sep 22 18:31:35 2016 +0000 @@ -229,8 +229,8 @@ } Content classContent = getLink(new LinkInfoImpl( configuration, LinkInfoImpl.Kind.PACKAGE, klass)); - Content tdClass = HtmlTree.TD(HtmlStyle.colFirst, classContent); - HtmlTree tr = HtmlTree.TR(tdClass); + Content thClass = HtmlTree.TH_ROW_SCOPE(HtmlStyle.colFirst, classContent); + HtmlTree tr = HtmlTree.TR(thClass); tr.addStyle(altColor ? HtmlStyle.altColor : HtmlStyle.rowColor); HtmlTree tdClassDescription = new HtmlTree(HtmlTag.TD); diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriterImpl.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriterImpl.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/PropertyWriterImpl.java Thu Sep 22 18:31:35 2016 +0000 @@ -25,8 +25,6 @@ package jdk.javadoc.internal.doclets.formats.html; -import java.io.*; - import java.util.Arrays; import java.util.List; @@ -235,10 +233,8 @@ */ @Override public List getSummaryTableHeader(Element member) { - List header = Arrays.asList(configuration.getText("doclet.Type"), - configuration.getText("doclet.0_and_1", - configuration.getText("doclet.Property"), - configuration.getText("doclet.Description"))); + List header = Arrays.asList(resources.getText("doclet.Type"), + resources.getText("doclet.Property"), resources.getText("doclet.Description")); return header; } diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyle.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyle.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlStyle.java Thu Sep 22 18:31:35 2016 +0000 @@ -48,7 +48,6 @@ classUseContainer, colFirst, colLast, - colOne, colSecond, constantsSummary, constantValuesContainer, diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlTree.java --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlTree.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/formats/html/markup/HtmlTree.java Thu Sep 22 18:31:35 2016 +0000 @@ -808,6 +808,17 @@ } /** + * Generates a TH tag with style class, scope attribute and some content. + * + * @param styleClass style for the tag + * @param body content for the tag + * @return an HtmlTree object for the TH tag + */ + public static HtmlTree TH_ROW_SCOPE(HtmlStyle styleClass, Content body) { + return TH(styleClass, "row", body); + } + + /** * Generates a TITLE tag with some content. * * @param body content for the tag diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css --- a/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/resources/stylesheet.css Thu Sep 22 18:31:35 2016 +0000 @@ -528,20 +528,23 @@ float:left; } +.rowColor th, .altColor th { + font-weight:normal; +} .overviewSummary td, .memberSummary td, .typeSummary td, .useSummary td, .constantsSummary td, .deprecatedSummary td, .requiresSummary td, .packagesSummary td, .providesSummary td, .usesSummary td { text-align:left; padding:0px 0px 12px 10px; } -th.colOne, th.colFirst, th.colSecond, th.colLast, .useSummary th, .constantsSummary th, .packagesSummary th, -td.colOne, td.colFirst, td.colSecond, td.colLast, .useSummary td, .constantsSummary td { +th.colFirst, th.colSecond, th.colLast, .useSummary th, .constantsSummary th, .packagesSummary th, +td.colFirst, td.colSecond, td.colLast, .useSummary td, .constantsSummary td { vertical-align:top; padding-right:0px; padding-top:8px; padding-bottom:3px; } -th.colFirst, th.colSecond, th.colLast, th.colOne, .constantsSummary th, .packagesSummary th { +th.colFirst, th.colSecond, th.colLast, .constantsSummary th, .packagesSummary th { background:#dee3e9; text-align:left; padding:8px 3px 3px 7px; @@ -550,10 +553,10 @@ white-space:nowrap; font-size:13px; } -td.colLast, th.colLast { +td.colSecond, th.colSecond, td.colLast, th.colLast { font-size:13px; } -td.colOne, th.colOne, .constantsSummary th, .packagesSummary th { +.constantsSummary th, .packagesSummary th { font-size:13px; } .providesSummary th.colFirst, .providesSummary th.colLast, .providesSummary td.colFirst, @@ -567,23 +570,22 @@ .packagesSummary td.colFirst, .packagesSummary td.colSecond, .packagesSummary th.colFirst, .packagesSummary th, .usesSummary td.colFirst, .usesSummary th.colFirst, .useSummary td.colFirst, .useSummary th.colFirst, -.overviewSummary td.colOne, .overviewSummary th.colOne, .memberSummary td.colFirst, .memberSummary th.colFirst, -.memberSummary td.colOne, .memberSummary th.colOne, +.memberSummary td.colSecond, .memberSummary th.colSecond, .typeSummary td.colFirst{ width:25%; vertical-align:top; } -td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colSecond a:link, td.colSecond a:active, td.colSecond a:visited, td.colSecond a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { +td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colSecond a:link, td.colSecond a:active, td.colSecond a:visited, td.colSecond a:hover, th.colFirst a:link, th.colFirst a:active, th.colFirst a:visited, th.colFirst a:hover, th.colSecond a:link, th.colSecond a:active, th.colSecond a:visited, th.colSecond a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover { font-weight:bold; } .tableSubHeadingColor { background-color:#EEEEFF; } -.altColor { +.altColor, .altColor th { background-color:#FFFFFF; } -.rowColor { +.rowColor, .rowColor th { background-color:#EEEEEF; } /* @@ -774,4 +776,4 @@ .searchTagHolderResult { font-style:italic; font-size:12px; -} +} \ No newline at end of file diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/src/jdk.jshell/share/classes/jdk/jshell/execution/DirectExecutionControl.java --- a/langtools/src/jdk.jshell/share/classes/jdk/jshell/execution/DirectExecutionControl.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/src/jdk.jshell/share/classes/jdk/jshell/execution/DirectExecutionControl.java Thu Sep 22 18:31:35 2016 +0000 @@ -24,6 +24,7 @@ */ package jdk.jshell.execution; +import java.lang.reflect.Array; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -200,6 +201,21 @@ return "\"" + (String) value + "\""; } else if (value instanceof Character) { return "'" + value + "'"; + } else if (value.getClass().isArray()) { + String tn = value.getClass().getTypeName(); + int len = Array.getLength(value); + StringBuilder sb = new StringBuilder(); + sb.append(tn.substring(tn.lastIndexOf('.') + 1, tn.length() - 1)); + sb.append(len); + sb.append("] { "); + for (int i = 0; i < len; ++i) { + sb.append(valueString(Array.get(value, i))); + if (i < len - 1) { + sb.append(", "); + } + } + sb.append(" }"); + return sb.toString(); } else { return value.toString(); } diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/test/jdk/javadoc/doclet/constantValues/TestConstantValuesDriver.java --- a/langtools/test/jdk/javadoc/doclet/constantValues/TestConstantValuesDriver.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/test/jdk/javadoc/doclet/constantValues/TestConstantValuesDriver.java Thu Sep 22 18:31:35 2016 +0000 @@ -23,7 +23,7 @@ /* * @test - * @bug 4504730 4526070 5077317 + * @bug 4504730 4526070 5077317 8162363 * @summary Test the generation of constant-values.html. * @author jamieh * @library ../lib @@ -53,29 +53,29 @@ "TEST4PASSES", "\"<Hello World>\"", "public static final byte\n" + - "" + - "BYTE_MAX_VALUE\n" + + "" + + "BYTE_MAX_VALUE\n" + "127", "public static final byte\n" + - "" + - "BYTE_MIN_VALUE\n" + + "" + + "BYTE_MIN_VALUE\n" + "-127", "public static final char\n" + - "" + - "CHAR_MAX_VALUE\n" + + "" + + "CHAR_MAX_VALUE\n" + "65535", "public static final double", - "" + - "DOUBLE_MAX_VALUE\n" + + "" + + "DOUBLE_MAX_VALUE\n" + "1.7976931348623157E308", "public static final double\n" + - "" + - "DOUBLE_MIN_VALUE", + "" + + "DOUBLE_MIN_VALUE", "public static final boolean\n" + - "" + - "GOODBYE", + "" + + "GOODBYE", "public static final boolean\n" + - "HELLO\n" + + "HELLO\n" + "true" ); } diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/test/jdk/javadoc/doclet/testAnnotationTypes/TestAnnotationTypes.java --- a/langtools/test/jdk/javadoc/doclet/testAnnotationTypes/TestAnnotationTypes.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/test/jdk/javadoc/doclet/testAnnotationTypes/TestAnnotationTypes.java Thu Sep 22 18:31:35 2016 +0000 @@ -23,7 +23,7 @@ /* * @test - * @bug 4973609 8015249 8025633 8026567 6469561 8071982 + * @bug 4973609 8015249 8025633 8026567 6469561 8071982 8162363 * @summary Make sure that annotation types with 0 members does not have * extra HR tags. * @author jamieh @@ -56,9 +56,9 @@ + "field.detail\">Field | ", "", "

Field Summary

", - "DEFAULT_NAME" - + " ", + + "", "", "

DEFAULT_NAME

\n" + "
static final java."
diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/test/jdk/javadoc/doclet/testHeadings/TestHeadings.java
--- a/langtools/test/jdk/javadoc/doclet/testHeadings/TestHeadings.java	Thu Sep 22 16:41:15 2016 +0000
+++ b/langtools/test/jdk/javadoc/doclet/testHeadings/TestHeadings.java	Thu Sep 22 18:31:35 2016 +0000
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug      4905786 6259611
+ * @bug      4905786 6259611 8162363
  * @summary  Make sure that headings use the TH tag instead of the TD tag.
  * @author   jamieh
  * @library ../lib
@@ -76,7 +76,8 @@
         // Class documentation
         checkOutput("pkg1/C1.html", true,
                 "Modifier and Type\n"
-                + "Field and Description",
+                + "Field\n"
+                + "Description",
                 "

Methods inherited from class java.lang.Object

"); // Class use documentation @@ -84,17 +85,19 @@ "Package\n" + "Description", "Modifier and Type\n" - + "Field and Description"); + + "Field\n" + + "Description"); // Deprecated checkOutput("deprecated-list.html", true, - "Method and Description"); + "Method\n" + + "Description"); // Constant values checkOutput("constant-values.html", true, "" + "Modifier and Type\n" - + "Constant Field\n" + + "Constant Field\n" + "Value"); // Serialized Form diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/test/jdk/javadoc/doclet/testHtmlTableTags/TestHtmlTableTags.java --- a/langtools/test/jdk/javadoc/doclet/testHtmlTableTags/TestHtmlTableTags.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/test/jdk/javadoc/doclet/testHtmlTableTags/TestHtmlTableTags.java Thu Sep 22 18:31:35 2016 +0000 @@ -23,7 +23,7 @@ /* * @test - * @bug 6786688 8008164 + * @bug 6786688 8008164 8162363 * @summary HTML tables should have table summary, caption and table headers. * @author Bhavesh Patel * @library ../lib @@ -282,25 +282,32 @@ // Class documentation checkOutput("pkg1/C1.html", true, "Modifier and Type\n" - + "Field and Description", + + "Field\n" + + "Description", "Modifier and Type\n" - + "Method and Description"); + + "Method\n" + + "Description"); checkOutput("pkg2/C2.html", true, "Modifier and Type\n" - + "Class and Description", - "Constructor and Description"); + + "Class\n" + + "Description", + "Constructor\n" + + "Description"); checkOutput("pkg2/C2.ModalExclusionType.html", true, - "Enum Constant and Description"); + "Enum Constant\n" + + "Description"); checkOutput("pkg2/C3.html", true, "Modifier and Type\n" - + "Required Element and Description"); + + "Required Element\n" + + "Description"); checkOutput("pkg2/C4.html", true, "Modifier and Type\n" - + "Optional Element and Description"); + + "Optional Element\n" + + "Description"); // Class use documentation checkOutput("pkg1/class-use/I1.html", true, @@ -309,43 +316,52 @@ checkOutput("pkg1/class-use/C1.html", true, "Modifier and Type\n" - + "Field and Description", + + "Field\n" + + "Description", "Modifier and Type\n" - + "Method and Description"); + + "Method\n" + + "Description"); checkOutput("pkg2/class-use/C2.html", true, "Modifier and Type\n" - + "Field and Description", + + "Field\n" + + "Description", "Modifier and Type\n" - + "Method and Description"); + + "Method\n" + + "Description"); checkOutput("pkg2/class-use/C2.ModalExclusionType.html", true, "Package\n" + "Description", "Modifier and Type\n" - + "Method and Description"); + + "Method\n" + + "Description"); // Package use documentation checkOutput("pkg1/package-use.html", true, "Package\n" + "Description", - "Class and Description"); + "Class\n" + + "Description"); checkOutput("pkg2/package-use.html", true, "Package\n" + "Description", - "Class and Description"); + "Class\n" + + "Description"); // Deprecated checkOutput("deprecated-list.html", true, - "Field and Description", - "Method and Description"); + "Field\n" + + "Description", + "Method\n" + + "Description"); // Constant values checkOutput("constant-values.html", true, "" + "Modifier and Type\n" - + "Constant Field\n" + "Value"); diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/test/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java --- a/langtools/test/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/test/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java Thu Sep 22 18:31:35 2016 +0000 @@ -23,7 +23,7 @@ /* * @test - * @bug 7112427 8012295 8025633 8026567 8061305 8081854 8150130 + * @bug 7112427 8012295 8025633 8026567 8061305 8081854 8150130 8162363 * @summary Test of the JavaFX doclet features. * @author jvalenta * @library ../lib @@ -61,19 +61,17 @@ + "
Gets the value of the property rate.
\n" + "
\n" + "
Property description:
", - "" - + "rate\n" - + "
Defines the direction/speed at which the " - + "Timeline is expected to", + "" + + "rate", "Default value:", "Since:\n" + "
JavaFX 8.0
", "

Sets the value of the property Property", "

Gets the value of the property Property", "Property description:", - "" + "" + "" - + "setTestMethodProperty() ", + + "setTestMethodProperty()", "

isPaused

\n" + "
public final double isPaused()
\n" + "
Gets the value of the property paused.
"); @@ -152,34 +150,34 @@ checkOutput("pkg2/Test.html", false, "

Property Summary

"); checkOutput("pkg2/Test.html", true, "Modifier and Type\n" - + "Method and Description\n" + + "Method\n" + + "Description\n" + "\n" + "\n" + "<T> java.lang.Object\n" - + "" - + "" - + "alphaProperty(java.util.List<T> foo) \n" + + "" + + "alphaProperty" + + "(java.util.List<T> foo)\n" + + " \n" + "\n" + "\n" + "java.lang.Object\n" - + "" - + "betaProperty()" - + " \n" + + "" + + "betaProperty()\n" + + " \n" + "\n" + "\n" - + "" - + "java.util.List<java.util.Set<? super java.lang.Object>>" + + "java.util.List<java.util.Set<? super java.lang.Object>>" + "\n" - + "" - + "" - + "deltaProperty() \n" + + "" + + "deltaProperty()\n" + + " \n" + "\n" + "\n" - + "java.util.List<java.lang.String>" - + "\n" - + "" - + "gammaProperty" - + "() " + + "java.util.List<java.lang.String>\n" + + "" + + "gammaProperty()\n" + + " " ); } diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/test/jdk/javadoc/doclet/testMemberInheritence/TestMemberInheritence.java --- a/langtools/test/jdk/javadoc/doclet/testMemberInheritence/TestMemberInheritence.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/test/jdk/javadoc/doclet/testMemberInheritence/TestMemberInheritence.java Thu Sep 22 18:31:35 2016 +0000 @@ -23,7 +23,7 @@ /* * @test - * @bug 4638588 4635809 6256068 6270645 8025633 8026567 + * @bug 4638588 4635809 6256068 6270645 8025633 8026567 8162363 * @summary Test to make sure that members are inherited properly in the Javadoc. * Verify that inheritence labels are correct. * @author jamieh @@ -90,10 +90,10 @@ checkOutput("pkg1/Implementer.html", true, // ensure the method makes it "static java.time.Period\n" - + "" + + "" + "" + "between(java.time.LocalDate startDateInclusive,\n" - + " java.time.LocalDate endDateExclusive) ", + + " java.time.LocalDate endDateExclusive)", // check the inherited from interfaces "

Methods inherited from interface pkg1.Interface

\n" diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/test/jdk/javadoc/doclet/testMemberSummary/TestMemberSummary.java --- a/langtools/test/jdk/javadoc/doclet/testMemberSummary/TestMemberSummary.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/test/jdk/javadoc/doclet/testMemberSummary/TestMemberSummary.java Thu Sep 22 18:31:35 2016 +0000 @@ -23,7 +23,7 @@ /* * @test - * @bug 4951228 6290760 8025633 8026567 8081854 + * @bug 4951228 6290760 8025633 8026567 8081854 8162363 * @summary Test the case where the overriden method returns a different * type than the method in the child class. Make sure the * documentation is inherited but the return type isn't. @@ -51,7 +51,7 @@ checkOutput("pkg/PublicChild.html", true, // Check return type in member summary. "PublicChild\n" - + "" + + "" + "returnTypeTest()", // Check return type in member detail. "
public "
diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/test/jdk/javadoc/doclet/testModules/TestModules.java
--- a/langtools/test/jdk/javadoc/doclet/testModules/TestModules.java	Thu Sep 22 16:41:15 2016 +0000
+++ b/langtools/test/jdk/javadoc/doclet/testModules/TestModules.java	Thu Sep 22 18:31:35 2016 +0000
@@ -23,7 +23,7 @@
 
 /*
  * @test
- * @bug 8154119 8154262 8156077 8157987 8154261 8154817 8135291 8155995
+ * @bug 8154119 8154262 8156077 8157987 8154261 8154817 8135291 8155995 8162363
  * @summary Test modules support in javadoc.
  * @author bpatel
  * @library ../lib
@@ -397,7 +397,7 @@
                 + "");
         checkOutput("module1-summary.html", true,
                 "\n"
-                + "testpkgmdl1\n"
+                + "testpkgmdl1\n"
                 + "All Modules\n"
                 + " \n"
                 + "");
@@ -408,7 +408,7 @@
                 + "");
         checkOutput("module1-summary.html", true,
                 "\n"
-                + "module2\n"
+                + "module2\n"
                 + "\n"
                 + "
This is a test description for the module2 module.
\n" + "\n" @@ -424,8 +424,8 @@ + ""); checkOutput("module2-summary.html", true, "\n" - + "" - + "testpkg2mdl2\n" + + "" + + "testpkg2mdl2\n" + "module1\n" + " \n" + ""); @@ -436,7 +436,7 @@ + ""); checkOutput("module2-summary.html", true, "\n" - + "java.base\n" + + "java.base\n" + " \n" + ""); checkOutput("module2-summary.html", true, @@ -446,24 +446,24 @@ + ""); checkOutput("module2-summary.html", true, "\n" - + "TestClassInModule2\n" + + "TestClassInModule2\n" + " \n" + ""); checkOutput("module2-summary.html", true, "\n" - + "TestInterfaceInModule2
" + "(Implementation: " + "" - + "TestClassInModule2)\n" + + "TestClassInModule2)\n" + " \n" + "Exported Packages \n" + "\n" + "Package\n" - + "Module\n" + + "Module\n" + "Description\n" + ""); checkOutput("module2-summary.html", true, diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/test/jdk/javadoc/doclet/testNewLanguageFeatures/TestNewLanguageFeatures.java --- a/langtools/test/jdk/javadoc/doclet/testNewLanguageFeatures/TestNewLanguageFeatures.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/test/jdk/javadoc/doclet/testNewLanguageFeatures/TestNewLanguageFeatures.java Thu Sep 22 18:31:35 2016 +0000 @@ -23,7 +23,7 @@ /* * @test - * @bug 4789689 4905985 4927164 4827184 4993906 5004549 7025314 7010344 8025633 8026567 + * @bug 4789689 4905985 4927164 4827184 4993906 5004549 7025314 7010344 8025633 8026567 8162363 * @summary Run Javadoc on a set of source files that demonstrate new * language features. Check the output to ensure that the new * language features are properly documented. @@ -134,7 +134,7 @@ // Method that returns TypeParameters "E[]\n" - + "" + + "" + "" + "methodThatReturnsTypeParameterA(E[] e)", @@ -144,15 +144,15 @@ + "title=\"type parameter in TypeParameters\">E[] e)
\n", "<T extends java.lang.Object & java.lang.Comparable<? super T>>" + "
T
\n" - + "" + + "" + "" - + "methodtThatReturnsTypeParametersB(java.util.Collection<? extends T> coll)\n" - + "
Returns TypeParameters
\n", + + "methodtThatReturnsTypeParametersB
(java.util.Collection<? extends T> coll)
", + "
Returns TypeParameters
\n", // Method takes a TypeVariable "<X extends java.lang.Throwable>
" + "E" + "
\n" - + "" + + "" + "" + "orElseThrow(java.util.function.Supplier<? extends X> exceptionSupplier)" ); @@ -219,19 +219,19 @@ + "package-summary.html\">pkg2 with type parameters of " + "type " + "Foo ", - "ClassUseTest1<T extends " + "Foo" + " & " - + "Foo2> ", + + "Foo2>", "Methods in pkg2 with type parameters of " + "type Foo ", - "ClassUseTest1." + "ClassUseTest1." + "method" - + "(T t) ", + + "(T t)", "Fields in pkg2 with type parameters of " + "type " @@ -259,20 +259,20 @@ + "type Foo2 " + "", - "ClassUseTest1<T extends " + "Foo" + " & " - + "Foo2> ", + + "Foo2>", "Methods in pkg2 with type parameters of " + "type Foo2 " + "", - "" + "" + "ClassUseTest1.method" - + "(T t) " + + "(T t)" ); // ClassUseTest2: > @@ -282,20 +282,20 @@ + "type ParamTest" + " ", - "ClassUseTest2<T extends " + "" + "ParamTest<" - + "Foo3>> ", + + "Foo3>>", "Methods in pkg2 with type parameters of " + "type ParamTest" + " ", - "ClassUseTest2." + "ClassUseTest2." + "method" - + "(T t) ", + + "(T t)", "Fields in pkg2 declared as ParamTest" @@ -323,20 +323,20 @@ + "package-summary.html\">pkg2 with type parameters of " + "type " + "Foo3 ", - "ClassUseTest2<T extends " + "" + "ParamTest<" - + "Foo3>> ", + + "Foo3>>
", "Methods in pkg2 with type parameters of " + "type Foo3 " + "", - "ClassUseTest2." + "ClassUseTest2." + "method" - + "(T t) ", + + "(T t)", "Methods in pkg2 that return types with " + "arguments of type ParamTest2" + " ", - "ClassUseTest3<T extends " + "" + "ParamTest2<java.util.List<? extends " + "" - + "Foo4>>> ", + + "Foo4>>>", "Methods in pkg2 with type parameters of " + "type ParamTest2" + " ", - "ClassUseTest3" + "ClassUseTest3" + ".method(T t) ", + + "html#method-T-\">method(T t)
", "<T extends " + "ParamTest2<java.util.List<? extends Foo4 " + "", - "ClassUseTest3<T extends " + "" + "ParamTest2<java.util.List<? extends " + "" - + "Foo4>>> ", + + "Foo4>>>", "Methods in pkg2 with type parameters of " + "type Foo4 ", - "ClassUseTest3." + "ClassUseTest3." + "method(T t)" - + " ", + + "", "Methods in pkg2 that return types with " + "arguments of type \n" + "\n" + "Modifier and Type\n" - + "Method and Description\n" + + "Method\n" + + "Description\n" + "\n" + "\n" + "\n" + "void\n" - + "ClassUseTest3." + + "ClassUseTest3." + "method(java." + "util.Set<Foo4> p) \n" - + "\n" - + "", + + "class in pkg2\">Foo4> p)", "Constructor parameters in pkg2 with type arguments " + "of type <Unnamed>"); + "<Unnamed>"); checkFiles(false, "pkg1/package-summary.html", diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/test/jdk/javadoc/doclet/testStylesheet/TestStylesheet.java --- a/langtools/test/jdk/javadoc/doclet/testStylesheet/TestStylesheet.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/test/jdk/javadoc/doclet/testStylesheet/TestStylesheet.java Thu Sep 22 18:31:35 2016 +0000 @@ -23,7 +23,7 @@ /* * @test - * @bug 4494033 7028815 7052425 8007338 8023608 8008164 8016549 8072461 8154261 + * @bug 4494033 7028815 7052425 8007338 8023608 8008164 8016549 8072461 8154261 8162363 * @summary Run tests on doclet stylesheet. * @author jamieh * @library ../lib @@ -139,9 +139,8 @@ + ".packagesSummary td.colFirst, .packagesSummary td.colSecond, .packagesSummary th.colFirst, .packagesSummary th,\n" + ".usesSummary td.colFirst, .usesSummary th.colFirst,\n" + ".useSummary td.colFirst, .useSummary th.colFirst,\n" - + ".overviewSummary td.colOne, .overviewSummary th.colOne,\n" + ".memberSummary td.colFirst, .memberSummary th.colFirst,\n" - + ".memberSummary td.colOne, .memberSummary th.colOne,\n" + + ".memberSummary td.colSecond, .memberSummary th.colSecond,\n" + ".typeSummary td.colFirst{\n" + " width:25%;\n" + " vertical-align:top;\n" diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/test/jdk/javadoc/doclet/testTypeAnnotations/TestTypeAnnotations.java --- a/langtools/test/jdk/javadoc/doclet/testTypeAnnotations/TestTypeAnnotations.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/test/jdk/javadoc/doclet/testTypeAnnotations/TestTypeAnnotations.java Thu Sep 22 18:31:35 2016 +0000 @@ -23,7 +23,7 @@ /* * @test - * @bug 8005091 8009686 8025633 8026567 6469562 8071982 8071984 + * @bug 8005091 8009686 8025633 8026567 6469562 8071982 8071984 8162363 * @summary Make sure that type annotations are displayed correctly * @author Bhavesh Patel * @library ../lib @@ -473,7 +473,7 @@ + "\" title=\"annotation in typeannos\">@RepTypeUseB ... vararg)"); checkOutput("typeannos/RepeatingOnField.html", true, - "(package private) java.lang.Integer\n" + "(package private) java.lang.Integer\n" + "i1", @@ -483,7 +483,7 @@ + "@RepTypeUseA @RepTypeUseB @RepTypeUseB java.lang.Integer\n" - + "i2", "(package private) " + "@RepTypeUseB @RepTypeUseB java.lang.Integer" - + "\n" + + "\n" + "i3", "(package private) " + "@RepAllContextsB @RepAllContextsB java.lang.Integer" - + "\n" + + "\n" + "i4", "(package private) java.lang.String @RepTypeUseA @RepTypeUseB " - + "@RepTypeUseB []\n []\nsa", @@ -572,8 +572,8 @@ + "@RepTypeUseB [] sa
"); checkOutput("typeannos/RepeatingOnMethod.html", true, - "(package private) java.lang.String\n(package private) java.lang.String\n" + + "test1()", "(package private) @RepTypeUseB @RepTypeUseB java.lang.String" - + "\n" + + "\n" + "test2" + "()", @@ -592,7 +592,7 @@ + "@RepTypeUseA @RepTypeUseB @RepTypeUseB java.lang.String" - + "\n" + + "\n" + "test3" + "()", @@ -602,7 +602,7 @@ + "@RepAllContextsA @RepAllContextsB " - + "@RepAllContextsB java.lang.String\n" + + "@RepAllContextsB java.lang.String\n" + "test4()", @@ -682,12 +682,12 @@ checkOutput("typeannos/RepeatingOnTypeParametersBoundsTypeArgumentsOnMethod.html", true, "(package private) <T> java.lang.String\n" - + "genericMethod(T t)", "(package private) <T> java.lang.String\n" - + "genericMethod2(@RepTypeUseA @RepTypeUseB @RepTypeUseB T t)", - "(package private) java.lang.String\n" + "(package private) java.lang.String\n" + "test()", diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/test/jdk/javadoc/doclet/testUseOption/TestUseOption.java --- a/langtools/test/jdk/javadoc/doclet/testUseOption/TestUseOption.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/test/jdk/javadoc/doclet/testUseOption/TestUseOption.java Thu Sep 22 18:31:35 2016 +0000 @@ -23,7 +23,7 @@ /* * @test - * @bug 4496290 4985072 7006178 7068595 8016328 8050031 8048351 8081854 8071982 + * @bug 4496290 4985072 7006178 7068595 8016328 8050031 8048351 8081854 8071982 8162363 * @summary A simple test to ensure class-use files are correct. * @author jamieh * @library ../lib @@ -124,17 +124,17 @@ checkOutput("pkg1/class-use/UsedInterface.html", true, "Subinterfaces of " + "UsedInterface in pkg1", - "interface \n" + "interface \n" + "SubInterface<T> " + + "title=\"interface in pkg1\">SubInterface<T>" ); checkOutput("pkg1/class-use/UsedThrowable.html", true, "Methods in pkg1 that throw " + "UsedThrowable", - "void\nvoid\nC1." + "methodInC1ThrowsThrowable" - + "() " + + "()" ); } @@ -154,9 +154,9 @@ "
  • " ); checkOutput("package-use.html", true, - "" - + "UsedInC ", - "<Unnamed>\n" + "" + + "UsedInC", + "<Unnamed>\n" + " " ); } diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/test/jdk/jshell/SimpleRegressionTest.java --- a/langtools/test/jdk/jshell/SimpleRegressionTest.java Thu Sep 22 16:41:15 2016 +0000 +++ b/langtools/test/jdk/jshell/SimpleRegressionTest.java Thu Sep 22 18:31:35 2016 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2015, 2016, 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 @@ -22,7 +22,7 @@ */ /* - * @test 8130450 8158906 8154374 + * @test 8130450 8158906 8154374 8166400 * @summary simple regression test * @build KullaTesting TestingInputStream * @run testng SimpleRegressionTest @@ -149,4 +149,21 @@ assertEval("class C {}"); assertEval("C.class.getClassLoader() == Thread.currentThread().getContextClassLoader()", "true"); } + + public void testArayRepresentation() { + assertEval("new int[4]", "int[4] { 0, 0, 0, 0 }"); + assertEval("new int[0]", "int[0] { }"); + assertEval("new byte[2]", "byte[2] { 0, 0 }"); + assertEval("new short[] { 1234, 4321 }", "short[2] { 1234, 4321 }"); + assertEval("new long[] { 123456789 }", "long[1] { 123456789 }"); + assertEval("new float[] { -23.5645f, 1.0101f }", "float[2] { -23.5645, 1.0101 }"); + assertEval("new double[] { 1/8, Math.PI }", "double[2] { 0.0, 3.141592653589793 }"); + assertEval("new String[] { \"hi\", \"low\", null }", "String[3] { \"hi\", \"low\", null }"); + assertEval("new char[] { 'a', 34, 77 }", "char[3] { 'a', '\"', 'M' }"); + assertEval("new boolean[] { false, true }", "boolean[2] { false, true }"); + assertEval("new int[][] { new int[] {44, 55}, new int[] {88,99}}", + "int[][2] { int[2] { 44, 55 }, int[2] { 88, 99 } }"); + assertEval("new Object[] { \"howdy\", new int[] { 33, 44, 55 }, new String[] { \"up\", \"down\" }}", + "Object[3] { \"howdy\", int[3] { 33, 44, 55 }, String[2] { \"up\", \"down\" } }"); + } } diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/test/tools/javac/AnonymousClass/AnonymousInSuperCallNegTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/AnonymousClass/AnonymousInSuperCallNegTest.java Thu Sep 22 18:31:35 2016 +0000 @@ -0,0 +1,31 @@ +/* + * @test /nodynamiccopyright/ + * @bug 8166108 + * @summary Verify that a program cannot access instance state before construction + * @compile/fail/ref=AnonymousInSuperCallNegTest.out -XDrawDiagnostics AnonymousInSuperCallNegTest.java + */ + +public class AnonymousInSuperCallNegTest { + + static class Base { + Base(Object o) {} + } + + static class Outer { + class Inner {} + } + + public static class JavacBug extends Base { + int x; + JavacBug() { + super(new Outer().new Inner() { + void foo() { + System.out.println("x = " + x); + } + }); } + } + + public static void main(String[] args) { + new JavacBug(); + } +} \ No newline at end of file diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/test/tools/javac/AnonymousClass/AnonymousInSuperCallNegTest.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/AnonymousClass/AnonymousInSuperCallNegTest.out Thu Sep 22 18:31:35 2016 +0000 @@ -0,0 +1,2 @@ +AnonymousInSuperCallNegTest.java:23:49: compiler.err.cant.ref.before.ctor.called: x +1 error diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/test/tools/javac/AnonymousClass/AnonymousInSuperCallTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/AnonymousClass/AnonymousInSuperCallTest.java Thu Sep 22 18:31:35 2016 +0000 @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2016, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8166108 + * @summary Verify that javac skips outer this to anonymous inner classes in super type constructor calls + * + */ + +public class AnonymousInSuperCallTest { + + static class Base { + Base(Object o) {} + } + + static class Outer { + class Inner {} + } + + public static class JavacBug extends Base { + JavacBug() { super(new Outer().new Inner() {}); } + } + + public static void main(String[] args) { + new JavacBug(); + } +} \ No newline at end of file diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/test/tools/javac/TryWithResources/TwrAndTypeVariables2Test.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/TryWithResources/TwrAndTypeVariables2Test.java Thu Sep 22 18:31:35 2016 +0000 @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2016, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8163027 + * @summary AssertionError while compiling program that uses try with resources + * @compile TwrAndTypeVariables2Test.java + */ + +abstract class TwrAndTypeVariables2Test_01 implements AutoCloseable { + @Override + public void close() { + } + public boolean close(long timeout) { + return true; + } +} + +public abstract class TwrAndTypeVariables2Test { + abstract C newCloseable(); + + void m() throws Exception{ + try(C p= newCloseable()){ + } + } +} diff -r 4fe2fc4327b5 -r 06ac98da3f82 langtools/test/tools/javac/file/MultiReleaseJar/MutliReleaseModuleInfoTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/file/MultiReleaseJar/MutliReleaseModuleInfoTest.java Thu Sep 22 18:31:35 2016 +0000 @@ -0,0 +1,148 @@ +/* + * Copyright (c) 2016, 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8156568 + * @summary Update javac to support compiling against a modular multi-release JAR + * @library /tools/lib + * @modules jdk.compiler/com.sun.tools.javac.api + * jdk.compiler/com.sun.tools.javac.main + * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask + * @run main MutliReleaseModuleInfoTest + */ + +import java.nio.file.Paths; +import java.util.Set; +import javax.annotation.processing.AbstractProcessor; +import javax.annotation.processing.RoundEnvironment; +import javax.annotation.processing.SupportedAnnotationTypes; +import javax.lang.model.SourceVersion; +import javax.lang.model.element.ModuleElement; +import javax.lang.model.element.ModuleElement.RequiresDirective; +import javax.lang.model.element.TypeElement; +import javax.lang.model.util.ElementFilter; + +import toolbox.JarTask; +import toolbox.JavacTask; +import toolbox.Task; +import toolbox.ToolBox; + + +public class MutliReleaseModuleInfoTest { + + private final String service_mi = + "module service {\n" + + "}\n"; + + private final String service = + "package service;\n" + + "public class Service {\n" + + "}\n"; + + private final String service_mi9 = + "module service {\n" + + " requires java.desktop;\n" + + "}\n"; + + private final String service9 = + "package service;\n" + + "public class Service {\n" + + "}\n"; + + private final String client_mi = + "module client {\n" + + " requires service;\n" + + "}\n"; + + private final String manifest = + "Manifest-Version: 1.0\n" + + "Multi-Release: true\n"; + + private final ToolBox tb = new ToolBox(); + + public static void main(String [] args) throws Exception { + new MutliReleaseModuleInfoTest().runTest(); + } + + private void runTest() throws Exception { + tb.createDirectories("classes", "classes/META-INF/versions/9"); + new JavacTask(tb) + .outdir("classes") + .sources(service_mi, service) + .run(); + new JavacTask(tb) + .outdir("classes/META-INF/versions/9") + .sources(service_mi9, service9) + .run(); + new JarTask(tb, "multi-release.jar") + .manifest(manifest) + .baseDir("classes") + .files("module-info.class", "service/Service.class", + "META-INF/versions/9/module-info.class", + "META-INF/versions/9/service/Service.class") + .run(); + tb.cleanDirectory(Paths.get("classes")); + + tb.writeFile("module-info.java", client_mi); + Task.Result result = new JavacTask(tb) + .outdir("classes") + .options("-processor", VerifyRequires.class.getName(), + "--module-path", "multi-release.jar") + .files("module-info.java") + .run(); + result.writeAll(); + tb.deleteFiles("module-info.java"); + + tb.deleteFiles( + "multi-release.jar", + "classes/module-info.class", + "classes" + ); + } + + @SupportedAnnotationTypes("*") + public static final class VerifyRequires extends AbstractProcessor { + + @Override + public boolean process(Set u, RoundEnvironment r) { + ModuleElement sm = processingEnv.getElementUtils().getModuleElement("service"); + if (sm == null) { + throw new AssertionError("Cannot find the service module!"); + } + boolean foundjd = false; + for (RequiresDirective rd : ElementFilter.requiresIn(sm.getDirectives())) { + foundjd |= rd.getDependency().getSimpleName().contentEquals("java.desktop"); + } + if (!foundjd) { + throw new AssertionError("Missing dependency on java desktop module!"); + } + return false; + } + + @Override + public SourceVersion getSupportedSourceVersion() { + return SourceVersion.latest(); + } + } +}