Tue, 26 Mar 2013 12:07:45 -0700
Merge
src/share/classes/com/sun/tools/javac/Server.java | file | annotate | diff | comparison | revisions | |
src/share/classes/com/sun/tools/jdeps/resources/jdk.properties | file | annotate | diff | comparison | revisions | |
src/share/classes/javax/lang/model/type/AnnotatedType.java | file | annotate | diff | comparison | revisions | |
test/tools/javac/annotations/repeatingAnnotations/combo/TestCaseGenerator.java | file | annotate | diff | comparison | revisions |
1.1 --- a/make/build.xml Thu Mar 21 10:43:39 2013 -0700 1.2 +++ b/make/build.xml Tue Mar 26 12:07:45 2013 -0700 1.3 @@ -1,6 +1,6 @@ 1.4 <?xml version="1.0" encoding="UTF-8"?> 1.5 <!-- 1.6 - Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved. 1.7 + Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. 1.8 DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.9 1.10 This code is free software; you can redistribute it and/or modify it 1.11 @@ -432,6 +432,31 @@ 1.12 </zip> 1.13 </target> 1.14 1.15 + <target name="doclint-api" depends="build-all-classes"> 1.16 + <delete dir="${build.dir}/doclint/classes"/> 1.17 + <mkdir dir="${build.dir}/doclint/classes"/> 1.18 + <javac fork="true" 1.19 + executable="${boot.javac}" 1.20 + srcdir="${src.classes.dir}:${build.gensrc.dir}" 1.21 + destdir="${build.dir}/doclint/classes" 1.22 + includes="javax/lang/model/** com/sun/javadoc/** com/sun/source/**" 1.23 + excludes="" 1.24 + sourcepath="${javac.sourcepath}" 1.25 + classpath="${javac.classpath}" 1.26 + includeAntRuntime="no" 1.27 + source="${javac.source}" 1.28 + target="${javac.target}" 1.29 + debug="${javac.debug}" 1.30 + debuglevel="${javac.debuglevel}"> 1.31 + <compilerarg value="-implicit:none"/> 1.32 + <compilerarg value="-Xprefer:source"/> 1.33 + <compilerarg value="-J-Xbootclasspath/p:${build.bootstrap.dir}/classes"/> 1.34 + <compilerarg line="${javac.no.jdk.warnings}"/> 1.35 + <compilerarg line="${javac.version.opt}"/> 1.36 + <compilerarg line="-Xdoclint:all/protected,-missing"/> 1.37 + </javac> 1.38 + </target> 1.39 + 1.40 <!-- 1.41 **** Debugging/diagnostic targets. 1.42 --> 1.43 @@ -678,7 +703,7 @@ 1.44 jarclasspath="sjavac.jar"/> 1.45 <build-tool name="sjavac"/> 1.46 </target> 1.47 - 1.48 + 1.49 <!-- (no javadoc for javap) --> 1.50 1.51 <target name="jtreg-sjavac" depends="build-sjavac,-def-jtreg">
2.1 --- a/make/netbeans/langtools/nbproject/project.xml Thu Mar 21 10:43:39 2013 -0700 2.2 +++ b/make/netbeans/langtools/nbproject/project.xml Tue Mar 26 12:07:45 2013 -0700 2.3 @@ -29,15 +29,13 @@ 2.4 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 2.5 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2.6 --> 2.7 - 2.8 -<!DOCTYPE project [ 2.9 - <!ENTITY standard-ide-actions SYSTEM "standard-ide-actions.ent"> 2.10 - <!ENTITY standard-context-menu-items SYSTEM "standard-context-menu-items.ent"> 2.11 -]> 2.12 <project xmlns="http://www.netbeans.org/ns/project/1"> 2.13 <type>org.netbeans.modules.ant.freeform</type> 2.14 <configuration> 2.15 <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1"> 2.16 + <name>langtools</name> 2.17 + </general-data> 2.18 + <general-data xmlns="http://www.netbeans.org/ns/freeform-project/2"> 2.19 <!-- Do not use Project Properties customizer when editing this file manually. --> 2.20 <name>langtools</name> 2.21 <properties> 2.22 @@ -49,11 +47,6 @@ 2.23 <location>${root}</location> 2.24 </source-folder> 2.25 <source-folder> 2.26 - <label>Source files</label> 2.27 - <type>java</type> 2.28 - <location>${root}/src/share/classes</location> 2.29 - </source-folder> 2.30 - <source-folder> 2.31 <label>Test files</label> 2.32 <type>tests</type> 2.33 <location>${root}/test</location> 2.34 @@ -63,9 +56,169 @@ 2.35 <type>build</type> 2.36 <location>${root}/make</location> 2.37 </source-folder> 2.38 + <source-folder> 2.39 + <label>Source files</label> 2.40 + <type>java</type> 2.41 + <location>${root}/src/share/classes</location> 2.42 + </source-folder> 2.43 + <build-file> 2.44 + <location>${root}/build/classes</location> 2.45 + </build-file> 2.46 </folders> 2.47 <ide-actions> 2.48 - &standard-ide-actions; 2.49 + <!-- 2.50 + Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved. 2.51 + 2.52 + Redistribution and use in source and binary forms, with or without 2.53 + modification, are permitted provided that the following conditions 2.54 + are met: 2.55 + 2.56 + - Redistributions of source code must retain the above copyright 2.57 + notice, this list of conditions and the following disclaimer. 2.58 + 2.59 + - Redistributions in binary form must reproduce the above copyright 2.60 + notice, this list of conditions and the following disclaimer in the 2.61 + documentation and/or other materials provided with the distribution. 2.62 + 2.63 + - Neither the name of Oracle nor the names of its 2.64 + contributors may be used to endorse or promote products derived 2.65 + from this software without specific prior written permission. 2.66 + 2.67 + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 2.68 + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 2.69 + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 2.70 + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 2.71 + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 2.72 + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 2.73 + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 2.74 + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 2.75 + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 2.76 + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 2.77 + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2.78 +--> 2.79 + <!-- 2.80 + This file defines the standard actions accepted by langtools projects. 2.81 + It is normally included as an entity into a project's project.xml file. 2.82 + 2.83 + For information on these actions, see 2.84 + - NetBeans: Setting Up Projects 2.85 + at http://www.netbeans.org/kb/55/using-netbeans/project_setup.html 2.86 + - NetBeans: Advanced Freeform Project Configuration 2.87 + at http://www.netbeans.org/kb/41/freeform-config.html 2.88 +--> 2.89 + <action name="build"> 2.90 + <target>build</target> 2.91 + </action> 2.92 + <action name="clean"> 2.93 + <target>clean</target> 2.94 + </action> 2.95 + <action name="rebuild"> 2.96 + <target>clean</target> 2.97 + <target>build</target> 2.98 + </action> 2.99 + <action name="compile.single"> 2.100 + <target>compile-single</target> 2.101 + <property name="srcdir">${root}/src/share/classes</property> 2.102 + <context> 2.103 + <property>includes</property> 2.104 + <folder>${root}/src/share/classes</folder> 2.105 + <pattern>\.java$</pattern> 2.106 + <format>relative-path</format> 2.107 + <arity> 2.108 + <separated-files>,</separated-files> 2.109 + </arity> 2.110 + </context> 2.111 + </action> 2.112 + <action name="run"> 2.113 + <target>run</target> 2.114 + </action> 2.115 + <action name="run.single"> 2.116 + <target>run-single</target> 2.117 + <context> 2.118 + <property>run.classname</property> 2.119 + <folder>${root}/src/share/classes</folder> 2.120 + <pattern>\.java$</pattern> 2.121 + <format>java-name</format> 2.122 + <arity> 2.123 + <one-file-only/> 2.124 + </arity> 2.125 + </context> 2.126 + </action> 2.127 + <!-- 2.128 + Note: NetBeans does not appear to support context menu items 2.129 + on shell scripts :-( 2.130 +--> 2.131 + <action name="run.single"> 2.132 + <target>jtreg</target> 2.133 + <context> 2.134 + <property>jtreg.tests</property> 2.135 + <folder>${root}/test</folder> 2.136 + <pattern>\.(java|sh)$</pattern> 2.137 + <format>relative-path</format> 2.138 + <arity> 2.139 + <separated-files>,</separated-files> 2.140 + </arity> 2.141 + </context> 2.142 + </action> 2.143 + <action name="test"> 2.144 + <target>jtreg</target> 2.145 + </action> 2.146 + <action name="debug"> 2.147 + <target>debug</target> 2.148 + </action> 2.149 + <action name="debug.single"> 2.150 + <target>debug-single</target> 2.151 + <context> 2.152 + <property>debug.classname</property> 2.153 + <folder>${root}/src/share/classes</folder> 2.154 + <pattern>\.java$</pattern> 2.155 + <format>java-name</format> 2.156 + <arity> 2.157 + <one-file-only/> 2.158 + </arity> 2.159 + </context> 2.160 + </action> 2.161 + <!-- 2.162 + Note: NetBeans does not appear to support context menu items 2.163 + on shell scripts :-( 2.164 +--> 2.165 + <action name="debug.single"> 2.166 + <target>debug-jtreg</target> 2.167 + <context> 2.168 + <property>jtreg.tests</property> 2.169 + <folder>${root}/test</folder> 2.170 + <pattern>\.(java|sh)$</pattern> 2.171 + <format>relative-path</format> 2.172 + <arity> 2.173 + <one-file-only/> 2.174 + </arity> 2.175 + </context> 2.176 + </action> 2.177 + <action name="debug.fix"> 2.178 + <target>debug-fix</target> 2.179 + <property name="srcdir">${root}/src/share/classes</property> 2.180 + <context> 2.181 + <property>class</property> 2.182 + <folder>${root}/src/share/classes</folder> 2.183 + <pattern>\.java$</pattern> 2.184 + <format>relative-path-noext</format> 2.185 + <arity> 2.186 + <one-file-only/> 2.187 + </arity> 2.188 + </context> 2.189 + </action> 2.190 + <action name="javadoc"> 2.191 + <target>javadoc</target> 2.192 + </action> 2.193 + <action name="select-tool"> 2.194 + <target>select-tool</target> 2.195 + </action> 2.196 + <action name="test-select-tool-1"> 2.197 + <target>test-select-tool-1</target> 2.198 + </action> 2.199 + <action name="test-select-tool-2"> 2.200 + <target>test-select-tool-2</target> 2.201 + </action> 2.202 </ide-actions> 2.203 <export> 2.204 <type>folder</type> 2.205 @@ -86,13 +239,68 @@ 2.206 <label>Build files</label> 2.207 <location>${root}/make</location> 2.208 </source-folder> 2.209 + <source-folder style="packages"> 2.210 + <label>Source files</label> 2.211 + <location>${root}/src/share/classes</location> 2.212 + </source-folder> 2.213 <source-file> 2.214 <label>README</label> 2.215 <location>README</location> 2.216 </source-file> 2.217 </items> 2.218 <context-menu> 2.219 - &standard-context-menu-items; 2.220 + <!-- 2.221 + Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved. 2.222 + 2.223 + Redistribution and use in source and binary forms, with or without 2.224 + modification, are permitted provided that the following conditions 2.225 + are met: 2.226 + 2.227 + - Redistributions of source code must retain the above copyright 2.228 + notice, this list of conditions and the following disclaimer. 2.229 + 2.230 + - Redistributions in binary form must reproduce the above copyright 2.231 + notice, this list of conditions and the following disclaimer in the 2.232 + documentation and/or other materials provided with the distribution. 2.233 + 2.234 + - Neither the name of Oracle nor the names of its 2.235 + contributors may be used to endorse or promote products derived 2.236 + from this software without specific prior written permission. 2.237 + 2.238 + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS 2.239 + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 2.240 + THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 2.241 + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 2.242 + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 2.243 + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 2.244 + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 2.245 + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 2.246 + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 2.247 + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 2.248 + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2.249 +--> 2.250 + <!-- 2.251 + This file defines the actions that will appear on the project's context 2.252 + menu, in the Projects viewer. 2.253 + It is normally included as an entity into a project's project.xml file. 2.254 + 2.255 + For information on these actions, see 2.256 + - NetBeans: Setting Up Projects 2.257 + at http://www.netbeans.org/kb/55/using-netbeans/project_setup.html 2.258 + - NetBeans: Advanced Freeform Project Configuration 2.259 + at http://www.netbeans.org/kb/41/freeform-config.html 2.260 +--> 2.261 + <ide-action name="select-tool"/> 2.262 + <separator/> 2.263 + <ide-action name="build"/> 2.264 + <ide-action name="rebuild"/> 2.265 + <ide-action name="clean"/> 2.266 + <ide-action name="javadoc"/> 2.267 + <separator/> 2.268 + <ide-action name="run"/> 2.269 + <ide-action name="debug"/> 2.270 + <separator/> 2.271 + <ide-action name="test"/> 2.272 </context-menu> 2.273 </view> 2.274 <subprojects/> 2.275 @@ -101,7 +309,7 @@ 2.276 <compilation-unit> 2.277 <package-root>${root}/src/share/classes</package-root> 2.278 <built-to>${root}/build/classes</built-to> 2.279 - <source-level>1.5</source-level> <!-- FIXME --> 2.280 + <source-level>1.5</source-level> 2.281 </compilation-unit> 2.282 </java-data> 2.283 </configuration>
3.1 --- a/src/share/classes/com/sun/source/util/DocTreeScanner.java Thu Mar 21 10:43:39 2013 -0700 3.2 +++ b/src/share/classes/com/sun/source/util/DocTreeScanner.java Tue Mar 26 12:07:45 2013 -0700 3.3 @@ -53,7 +53,7 @@ 3.4 * 3.5 * <p>Here is an example to count the number of erroneous nodes in a tree: 3.6 * <pre> 3.7 - * class CountErrors extends DocTreeScanner<Integer,Void> { 3.8 + * class CountErrors extends DocTreeScanner<Integer,Void> { 3.9 * {@literal @}Override 3.10 * public Integer visitErroneous(ErroneousTree node, Void p) { 3.11 * return 1;
4.1 --- a/src/share/classes/com/sun/source/util/JavacTask.java Thu Mar 21 10:43:39 2013 -0700 4.2 +++ b/src/share/classes/com/sun/source/util/JavacTask.java Tue Mar 26 12:07:45 2013 -0700 4.3 @@ -56,7 +56,7 @@ 4.4 * If the compiler is being invoked using a 4.5 * {@link javax.tools.JavaCompiler.CompilationTask CompilationTask}, 4.6 * then that task will be returned. 4.7 - * @param processingEnvironment 4.8 + * @param processingEnvironment the processing environment 4.9 * @return the {@code JavacTask} for a {@code ProcessingEnvironment} 4.10 * @since 1.8 4.11 */
5.1 --- a/src/share/classes/com/sun/source/util/Plugin.java Thu Mar 21 10:43:39 2013 -0700 5.2 +++ b/src/share/classes/com/sun/source/util/Plugin.java Tue Mar 26 12:07:45 2013 -0700 5.3 @@ -38,7 +38,7 @@ 5.4 * 5.5 * <p>Plug-ins are located via a {@link ServiceLoader}, 5.6 * using the same class path as annotation processors (i.e. 5.7 - * {@link StandardLocation#PROCESSOR_PATH PROCESSOR_PATH} or 5.8 + * {@link StandardLocation#ANNOTATION_PROCESSOR_PATH ANNOTATION_PROCESSOR_PATH} or 5.9 * {@code -processorpath}). 5.10 * 5.11 * <p>It is expected that a typical plug-in will simply register a
6.1 --- a/src/share/classes/com/sun/tools/classfile/Code_attribute.java Thu Mar 21 10:43:39 2013 -0700 6.2 +++ b/src/share/classes/com/sun/tools/classfile/Code_attribute.java Tue Mar 26 12:07:45 2013 -0700 6.3 @@ -1,5 +1,5 @@ 6.4 /* 6.5 - * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved. 6.6 + * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. 6.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 6.8 * 6.9 * This code is free software; you can redistribute it and/or modify it 6.10 @@ -38,7 +38,7 @@ 6.11 * deletion without notice.</b> 6.12 */ 6.13 public class Code_attribute extends Attribute { 6.14 - public class InvalidIndex extends AttributeException { 6.15 + public static class InvalidIndex extends AttributeException { 6.16 private static final long serialVersionUID = -8904527774589382802L; 6.17 InvalidIndex(int index) { 6.18 this.index = index; 6.19 @@ -143,7 +143,7 @@ 6.20 public final Exception_data[] exception_table; 6.21 public final Attributes attributes; 6.22 6.23 - public class Exception_data { 6.24 + public static class Exception_data { 6.25 Exception_data(ClassReader cr) throws IOException { 6.26 start_pc = cr.readUnsignedShort(); 6.27 end_pc = cr.readUnsignedShort();
7.1 --- a/src/share/classes/com/sun/tools/classfile/Descriptor.java Thu Mar 21 10:43:39 2013 -0700 7.2 +++ b/src/share/classes/com/sun/tools/classfile/Descriptor.java Tue Mar 26 12:07:45 2013 -0700 7.3 @@ -1,5 +1,5 @@ 7.4 /* 7.5 - * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved. 7.6 + * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved. 7.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 7.8 * 7.9 * This code is free software; you can redistribute it and/or modify it 7.10 @@ -37,7 +37,7 @@ 7.11 * deletion without notice.</b> 7.12 */ 7.13 public class Descriptor { 7.14 - public class InvalidDescriptor extends DescriptorException { 7.15 + public static class InvalidDescriptor extends DescriptorException { 7.16 private static final long serialVersionUID = 1L; 7.17 InvalidDescriptor(String desc) { 7.18 this.desc = desc;
8.1 --- a/src/share/classes/com/sun/tools/doclets/formats/html/FrameOutputWriter.java Thu Mar 21 10:43:39 2013 -0700 8.2 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/FrameOutputWriter.java Tue Mar 26 12:07:45 2013 -0700 8.3 @@ -135,13 +135,7 @@ 8.4 protected Content getFrameDetails() { 8.5 HtmlTree frameset = HtmlTree.FRAMESET("20%,80%", null, "Documentation frame", 8.6 "top.loadFrames()"); 8.7 - if (configuration.showProfiles) { 8.8 - HtmlTree leftFrameset = HtmlTree.FRAMESET(null, "30%,70%", "Left frames", 8.9 - "top.loadFrames()"); 8.10 - addAllProfilesFrameTag(leftFrameset); 8.11 - addAllClassesFrameTag(leftFrameset); 8.12 - frameset.addContent(leftFrameset); 8.13 - } else if (noOfPackages <= 1) { 8.14 + if (noOfPackages <= 1) { 8.15 addAllClassesFrameTag(frameset); 8.16 } else if (noOfPackages > 1) { 8.17 HtmlTree leftFrameset = HtmlTree.FRAMESET(null, "30%,70%", "Left frames", 8.18 @@ -156,17 +150,6 @@ 8.19 } 8.20 8.21 /** 8.22 - * Add the FRAME tag for the frame that lists all profiles. 8.23 - * 8.24 - * @param contentTree the content tree to which the information will be added 8.25 - */ 8.26 - private void addAllProfilesFrameTag(Content contentTree) { 8.27 - HtmlTree frame = HtmlTree.FRAME(DocPaths.PROFILE_OVERVIEW_FRAME.getPath(), 8.28 - "profileListFrame", configuration.getText("doclet.All_Profiles")); 8.29 - contentTree.addContent(frame); 8.30 - } 8.31 - 8.32 - /** 8.33 * Add the FRAME tag for the frame that lists all packages. 8.34 * 8.35 * @param contentTree the content tree to which the information will be added
9.1 --- a/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexFrameWriter.java Thu Mar 21 10:43:39 2013 -0700 9.2 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexFrameWriter.java Tue Mar 26 12:07:45 2013 -0700 9.3 @@ -162,7 +162,7 @@ 9.4 */ 9.5 protected void addAllProfilesLink(Content div) { 9.6 Content linkContent = getHyperLink(DocPaths.PROFILE_OVERVIEW_FRAME, 9.7 - allprofilesLabel, "", "profileListFrame"); 9.8 + allprofilesLabel, "", "packageListFrame"); 9.9 Content span = HtmlTree.SPAN(linkContent); 9.10 div.addContent(span); 9.11 }
10.1 --- a/src/share/classes/com/sun/tools/doclets/formats/html/ProfileIndexFrameWriter.java Thu Mar 21 10:43:39 2013 -0700 10.2 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/ProfileIndexFrameWriter.java Tue Mar 26 12:07:45 2013 -0700 10.3 @@ -107,7 +107,7 @@ 10.4 String profileName = (Profile.lookup(profile)).name; 10.5 profileLabel = new StringContent(profileName); 10.6 profileLinkContent = getHyperLink(DocPaths.profileFrame(profileName), profileLabel, "", 10.7 - "profileListFrame"); 10.8 + "packageListFrame"); 10.9 Content li = HtmlTree.LI(profileLinkContent); 10.10 return li; 10.11 } 10.12 @@ -154,7 +154,7 @@ 10.13 */ 10.14 protected void addAllPackagesLink(Content div) { 10.15 Content linkContent = getHyperLink(DocPaths.OVERVIEW_FRAME, 10.16 - allpackagesLabel, "", "profileListFrame"); 10.17 + allpackagesLabel, "", "packageListFrame"); 10.18 Content span = HtmlTree.SPAN(linkContent); 10.19 div.addContent(span); 10.20 }
11.1 --- a/src/share/classes/com/sun/tools/doclets/formats/html/ProfilePackageIndexFrameWriter.java Thu Mar 21 10:43:39 2013 -0700 11.2 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/ProfilePackageIndexFrameWriter.java Tue Mar 26 12:07:45 2013 -0700 11.3 @@ -172,7 +172,7 @@ 11.4 */ 11.5 protected void addAllPackagesLink(Content div) { 11.6 Content linkContent = getHyperLink(DocPaths.OVERVIEW_FRAME, 11.7 - allpackagesLabel, "", "profileListFrame"); 11.8 + allpackagesLabel, "", "packageListFrame"); 11.9 Content span = HtmlTree.SPAN(linkContent); 11.10 div.addContent(span); 11.11 } 11.12 @@ -185,7 +185,7 @@ 11.13 */ 11.14 protected void addAllProfilesLink(Content div) { 11.15 Content linkContent = getHyperLink(DocPaths.PROFILE_OVERVIEW_FRAME, 11.16 - allprofilesLabel, "", "profileListFrame"); 11.17 + allprofilesLabel, "", "packageListFrame"); 11.18 Content span = HtmlTree.SPAN(linkContent); 11.19 div.addContent(span); 11.20 }
12.1 --- a/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard_ja.properties Thu Mar 21 10:43:39 2013 -0700 12.2 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard_ja.properties Tue Mar 26 12:07:45 2013 -0700 12.3 @@ -32,7 +32,7 @@ 12.4 doclet.navAnnotationTypeRequiredMember=\u5FC5\u9808 12.5 doclet.navAnnotationTypeMember=\u8981\u7D20 12.6 doclet.navField=\u30D5\u30A3\u30FC\u30EB\u30C9 12.7 -doclet.navEnum=\u5217\u6319\u5B9A\u6570 12.8 +doclet.navEnum=\u5217\u6319\u578B\u5B9A\u6570 12.9 doclet.navConstructor=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF 12.10 doclet.navMethod=\u30E1\u30BD\u30C3\u30C9 12.11 doclet.Index=\u7D22\u5F15 12.12 @@ -41,59 +41,47 @@ 12.13 doclet.Help=\u30D8\u30EB\u30D7 12.14 doclet.Skip_navigation_links=\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u30FB\u30EA\u30F3\u30AF\u3092\u30B9\u30AD\u30C3\u30D7 12.15 doclet.New_Page=NewPage 12.16 -doclet.None=\u306A\u3057 12.17 -doclet.Factory_Method_Detail=static\u30D5\u30A1\u30AF\u30C8\u30EA\u30FB\u30E1\u30BD\u30C3\u30C9\u306E\u8A73\u7D30 12.18 doclet.navDeprecated=\u975E\u63A8\u5968 12.19 -doclet.Deprecated_List=\u975E\u63A8\u5968API\u306E\u30EA\u30B9\u30C8 12.20 -doclet.Window_Deprecated_List=\u975E\u63A8\u5968API\u306E\u30EA\u30B9\u30C8 12.21 -doclet.Note_0_is_deprecated=\u6CE8\u610F: {0}\u306F\u63A8\u5968\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 12.22 +doclet.Window_Deprecated_List=\u975E\u63A8\u5968\u306E\u30EA\u30B9\u30C8 12.23 doclet.Overrides=\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9: 12.24 doclet.in_class=\u30AF\u30E9\u30B9\u5185 12.25 -doclet.0_Fields_and_Methods="{0}"\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u30E1\u30BD\u30C3\u30C9 12.26 -doclet.Index_of_Fields_and_Methods=\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u30E1\u30BD\u30C3\u30C9\u306E\u7D22\u5F15 12.27 doclet.Static_variable_in={0}\u306Estatic\u5909\u6570 12.28 doclet.Variable_in={0}\u306E\u5909\u6570 12.29 doclet.Constructor_for={0}\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF 12.30 doclet.Static_method_in={0}\u306Estatic\u30E1\u30BD\u30C3\u30C9 12.31 doclet.Method_in={0}\u306E\u30E1\u30BD\u30C3\u30C9 12.32 -doclet.throws=\u30B9\u30ED\u30FC 12.33 doclet.package=\u30D1\u30C3\u30B1\u30FC\u30B8 12.34 doclet.MalformedURL=\u4E0D\u6B63\u306AURL: {0} 12.35 doclet.File_error=\u30D5\u30A1\u30A4\u30EB\u8AAD\u8FBC\u307F\u30A8\u30E9\u30FC: {0} 12.36 doclet.URL_error=URL\u53D6\u51FA\u3057\u30A8\u30E9\u30FC: {0} 12.37 -doclet.No_Package_Comment_File=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306EPackage.Comment\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 12.38 -doclet.No_Source_For_Class=\u30AF\u30E9\u30B9{0}\u306E\u30BD\u30FC\u30B9\u60C5\u5831\u304C\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3002 12.39 doclet.see.class_or_package_not_found=\u30BF\u30B0{0}: \u53C2\u7167\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {1} 12.40 doclet.see.class_or_package_not_accessible=\u30BF\u30B0{0}: \u53C2\u7167\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093: {1} 12.41 -doclet.see.malformed_tag={0}\u30BF\u30B0: \u4E0D\u6B63\u306A{1}\u30BF\u30B0 12.42 -doclet.Inherited_API_Summary=\u7D99\u627F\u3055\u308C\u305FAPI\u306E\u6982\u8981 12.43 -doclet.Deprecated_API=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044API 12.44 -doclet.Deprecated_Classes=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30AF\u30E9\u30B9 12.45 -doclet.Deprecated_Enums=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u6319\u578B 12.46 -doclet.Deprecated_Interfaces=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 12.47 -doclet.Deprecated_Exceptions=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u4F8B\u5916 12.48 -doclet.Deprecated_Annotation_Types=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u6CE8\u91C8\u578B 12.49 -doclet.Deprecated_Errors=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30A8\u30E9\u30FC 12.50 -doclet.Deprecated_Fields=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30D5\u30A3\u30FC\u30EB\u30C9 12.51 -doclet.Deprecated_Constructors=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF 12.52 -doclet.Deprecated_Methods=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30E1\u30BD\u30C3\u30C9 12.53 -doclet.Deprecated_Enum_Constants=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u6319\u578B\u5B9A\u6570 12.54 -doclet.Deprecated_Annotation_Type_Members=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u6CE8\u91C8\u578B\u306E\u8981\u7D20 12.55 -doclet.deprecated_classes=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30AF\u30E9\u30B9 12.56 -doclet.deprecated_enums=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u6319\u578B 12.57 -doclet.deprecated_interfaces=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 12.58 -doclet.deprecated_exceptions=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u4F8B\u5916 12.59 -doclet.deprecated_annotation_types=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u6CE8\u91C8\u578B 12.60 -doclet.deprecated_errors=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30A8\u30E9\u30FC 12.61 -doclet.deprecated_fields=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30D5\u30A3\u30FC\u30EB\u30C9 12.62 -doclet.deprecated_constructors=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF 12.63 -doclet.deprecated_methods=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u30E1\u30BD\u30C3\u30C9 12.64 -doclet.deprecated_enum_constants=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u5217\u6319\u578B\u5B9A\u6570 12.65 -doclet.deprecated_annotation_type_members=\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u6CE8\u91C8\u578B\u306E\u8981\u7D20 12.66 -doclet.Frame_Output=\u30D5\u30EC\u30FC\u30E0\u51FA\u529B 12.67 -doclet.Docs_generated_by_Javadoc=\u3053\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306Fjavadoc\u3067\u751F\u6210\u3055\u308C\u3066\u3044\u307E\u3059\u3002 12.68 +doclet.Deprecated_API=\u975E\u63A8\u5968\u306EAPI 12.69 +doclet.Deprecated_Packages=\u975E\u63A8\u5968\u306E\u30D1\u30C3\u30B1\u30FC\u30B8 12.70 +doclet.Deprecated_Classes=\u975E\u63A8\u5968\u306E\u30AF\u30E9\u30B9 12.71 +doclet.Deprecated_Enums=\u975E\u63A8\u5968\u306E\u5217\u6319\u578B 12.72 +doclet.Deprecated_Interfaces=\u975E\u63A8\u5968\u306E\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 12.73 +doclet.Deprecated_Exceptions=\u975E\u63A8\u5968\u306E\u4F8B\u5916 12.74 +doclet.Deprecated_Annotation_Types=\u975E\u63A8\u5968\u306E\u6CE8\u91C8\u578B 12.75 +doclet.Deprecated_Errors=\u975E\u63A8\u5968\u306E\u30A8\u30E9\u30FC 12.76 +doclet.Deprecated_Fields=\u975E\u63A8\u5968\u306E\u30D5\u30A3\u30FC\u30EB\u30C9 12.77 +doclet.Deprecated_Constructors=\u975E\u63A8\u5968\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF 12.78 +doclet.Deprecated_Methods=\u975E\u63A8\u5968\u306E\u30E1\u30BD\u30C3\u30C9 12.79 +doclet.Deprecated_Enum_Constants=\u975E\u63A8\u5968\u306E\u5217\u6319\u578B\u5B9A\u6570 12.80 +doclet.Deprecated_Annotation_Type_Members=\u975E\u63A8\u5968\u306E\u6CE8\u91C8\u578B\u306E\u8981\u7D20 12.81 +doclet.deprecated_packages=\u975E\u63A8\u5968\u306E\u30D1\u30C3\u30B1\u30FC\u30B8 12.82 +doclet.deprecated_classes=\u975E\u63A8\u5968\u306E\u30AF\u30E9\u30B9 12.83 +doclet.deprecated_enums=\u975E\u63A8\u5968\u306E\u5217\u6319\u578B 12.84 +doclet.deprecated_interfaces=\u975E\u63A8\u5968\u306E\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 12.85 +doclet.deprecated_exceptions=\u975E\u63A8\u5968\u306E\u4F8B\u5916 12.86 +doclet.deprecated_annotation_types=\u975E\u63A8\u5968\u306E\u6CE8\u91C8\u578B 12.87 +doclet.deprecated_errors=\u975E\u63A8\u5968\u306E\u30A8\u30E9\u30FC 12.88 +doclet.deprecated_fields=\u975E\u63A8\u5968\u306E\u30D5\u30A3\u30FC\u30EB\u30C9 12.89 +doclet.deprecated_constructors=\u975E\u63A8\u5968\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF 12.90 +doclet.deprecated_methods=\u975E\u63A8\u5968\u306E\u30E1\u30BD\u30C3\u30C9 12.91 +doclet.deprecated_enum_constants=\u975E\u63A8\u5968\u306E\u5217\u6319\u578B\u5B9A\u6570 12.92 +doclet.deprecated_annotation_type_members=\u975E\u63A8\u5968\u306E\u6CE8\u91C8\u578B\u306E\u8981\u7D20 12.93 doclet.Generated_Docs_Untitled=\u751F\u6210\u3055\u308C\u305F\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8(\u30BF\u30A4\u30C8\u30EB\u306A\u3057) 12.94 -doclet.Blank=\u30D6\u30E9\u30F3\u30AF 12.95 doclet.Other_Packages=\u305D\u306E\u4ED6\u306E\u30D1\u30C3\u30B1\u30FC\u30B8 12.96 doclet.Package_Description=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306E\u8AAC\u660E 12.97 doclet.Description=\u8AAC\u660E 12.98 @@ -102,33 +90,25 @@ 12.99 doclet.Subclasses=\u76F4\u7CFB\u306E\u65E2\u77E5\u306E\u30B5\u30D6\u30AF\u30E9\u30B9: 12.100 doclet.Subinterfaces=\u65E2\u77E5\u306E\u30B5\u30D6\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306E\u30EA\u30B9\u30C8: 12.101 doclet.Implementing_Classes=\u65E2\u77E5\u306E\u5B9F\u88C5\u30AF\u30E9\u30B9\u306E\u30EA\u30B9\u30C8: 12.102 +doclet.Functional_Interface=\u6A5F\u80FD\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 12.103 +doclet.Functional_Interface_Message=\u3053\u308C\u306F\u6A5F\u80FD\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306A\u306E\u3067\u3001\u30E9\u30E0\u30C0\u5F0F\u307E\u305F\u306F\u30E1\u30BD\u30C3\u30C9\u53C2\u7167\u306E\u5272\u5F53\u3066\u30BF\u30FC\u30B2\u30C3\u30C8\u3068\u3057\u3066\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002 12.104 doclet.also=\u540C\u69D8\u306B 12.105 -doclet.Option=\u30AA\u30D7\u30B7\u30E7\u30F3 12.106 -doclet.Or=\u307E\u305F\u306F 12.107 doclet.Frames=\u30D5\u30EC\u30FC\u30E0 12.108 doclet.No_Frames=\u30D5\u30EC\u30FC\u30E0\u306A\u3057 12.109 doclet.Package_Hierarchies=\u30D1\u30C3\u30B1\u30FC\u30B8\u968E\u5C64: 12.110 doclet.Hierarchy_For_Package=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306E\u968E\u5C64 12.111 -doclet.Source_Code=\u30BD\u30FC\u30B9\u30FB\u30B3\u30FC\u30C9: 12.112 doclet.Hierarchy_For_All_Packages=\u3059\u3079\u3066\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u968E\u5C64 12.113 -doclet.Cannot_handle_no_packages=\u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u51E6\u7406\u3067\u304D\u307E\u305B\u3093\u3002 12.114 doclet.Frame_Alert=\u30D5\u30EC\u30FC\u30E0\u95A2\u9023\u306E\u30A2\u30E9\u30FC\u30C8 12.115 -doclet.Overview-Member-Frame=\u6982\u8981\u30E1\u30F3\u30D0\u30FC\u30FB\u30D5\u30EC\u30FC\u30E0 12.116 doclet.Frame_Warning_Message=\u3053\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306F\u30D5\u30EC\u30FC\u30E0\u6A5F\u80FD\u3092\u4F7F\u7528\u3057\u3066\u8868\u793A\u3059\u308B\u3088\u3046\u306B\u4F5C\u6210\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30D5\u30EC\u30FC\u30E0\u3092\u8868\u793A\u3067\u304D\u306A\u3044Web\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u306E\u5834\u5408\u306B\u3053\u306E\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002{0}\u306B\u30EA\u30F3\u30AF\u3057\u307E\u3059\u3002 12.117 doclet.No_Script_Message=\u30D6\u30E9\u30A6\u30B6\u306EJavaScript\u304C\u7121\u52B9\u306B\u306A\u3063\u3066\u3044\u307E\u3059\u3002 12.118 doclet.Non_Frame_Version=\u30D5\u30EC\u30FC\u30E0\u306B\u5BFE\u5FDC\u3057\u3066\u3044\u306A\u3044\u30D0\u30FC\u30B8\u30E7\u30F3 12.119 -doclet.Frame_Version=\u30D5\u30EC\u30FC\u30E0\u3042\u308A\u306E\u30D0\u30FC\u30B8\u30E7\u30F3 12.120 -doclet.Following_From_Class=\u30AF\u30E9\u30B9{0}\u304B\u3089\u30B3\u30D4\u30FC\u3055\u308C\u305F\u30BF\u30B0: 12.121 -doclet.Following_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{0}\u304B\u3089\u30B3\u30D4\u30FC\u3055\u308C\u305F\u30BF\u30B0: 12.122 doclet.Description_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u3089\u30B3\u30D4\u30FC\u3055\u308C\u305F\u8AAC\u660E: 12.123 doclet.Description_From_Class=\u30AF\u30E9\u30B9\u304B\u3089\u30B3\u30D4\u30FC\u3055\u308C\u305F\u8AAC\u660E: 12.124 -doclet.Standard_doclet_invoked=\u6A19\u6E96\u306Edoclet\u304C\u8D77\u52D5\u3055\u308C\u307E\u3057\u305F... 12.125 -doclet.No_Non_Deprecated_Classes_To_Document=\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5316\u3059\u308B\u975E\u63A8\u5968\u4EE5\u5916\u306E\u30AF\u30E9\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 12.126 +doclet.No_Non_Deprecated_Classes_To_Document=\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5316\u3059\u308B\u975E\u63A8\u5968\u3067\u306A\u3044\u30AF\u30E9\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 12.127 doclet.Interfaces_Italic=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9(\u30A4\u30BF\u30EA\u30C3\u30AF) 12.128 doclet.Enclosing_Class=\u542B\u307E\u308C\u3066\u3044\u308B\u30AF\u30E9\u30B9: 12.129 doclet.Enclosing_Interface=\u542B\u307E\u308C\u3066\u3044\u308B\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9: 12.130 doclet.Window_Source_title=\u30BD\u30FC\u30B9\u30FB\u30B3\u30FC\u30C9 12.131 -doclet.Help_title=API\u30D8\u30EB\u30D7 12.132 doclet.Window_Help_title=API\u30D8\u30EB\u30D7 12.133 doclet.Help_line_1=API\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u69CB\u6210 12.134 doclet.Help_line_2=\u3053\u306EAPI(Application Programming Interface)\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306B\u306F\u3001\u6B21\u306B\u8AAC\u660E\u3059\u308B\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u30FB\u30D0\u30FC\u306B\u3042\u308B\u9805\u76EE\u306B\u5BFE\u5FDC\u3059\u308B\u30DA\u30FC\u30B8\u304C\u542B\u307E\u308C\u307E\u3059\u3002 12.135 @@ -149,7 +129,7 @@ 12.136 doclet.Help_line_17_with_tree_link=\u3059\u3079\u3066\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u306B\u306F{0}\u30DA\u30FC\u30B8\u304C\u3042\u308A\u3001\u3055\u3089\u306B\u5404\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u968E\u5C64\u304C\u3042\u308A\u307E\u3059\u3002\u5404\u968E\u5C64\u30DA\u30FC\u30B8\u306F\u3001\u30AF\u30E9\u30B9\u306E\u30EA\u30B9\u30C8\u3068\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306E\u30EA\u30B9\u30C8\u3092\u542B\u307F\u307E\u3059\u3002\u30AF\u30E9\u30B9\u306F <code>java.lang.Object</code> \u3092\u958B\u59CB\u70B9\u3068\u3059\u308B\u7D99\u627F\u69CB\u9020\u3067\u7DE8\u6210\u3055\u308C\u307E\u3059\u3002\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306F\u3001<code>java.lang.Object</code> \u304B\u3089\u306F\u7D99\u627F\u3057\u307E\u305B\u3093\u3002 12.137 doclet.Help_line_18=\u6982\u8981\u30DA\u30FC\u30B8\u3092\u8868\u793A\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u300C\u968E\u5C64\u30C4\u30EA\u30FC\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u3001\u5168\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u968E\u5C64\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002 12.138 doclet.Help_line_19=\u7279\u5B9A\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u3001\u30AF\u30E9\u30B9\u307E\u305F\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u8868\u793A\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u300C\u968E\u5C64\u30C4\u30EA\u30FC\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3068\u3001\u8A72\u5F53\u3059\u308B\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u307F\u306E\u968E\u5C64\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002 12.139 -doclet.Help_line_20_with_deprecated_api_link={0}\u30DA\u30FC\u30B8\u306F\u3001\u63A8\u5968\u3055\u308C\u3066\u3044\u306A\u3044\u3059\u3079\u3066\u306EAPI\u306E\u30EA\u30B9\u30C8\u3092\u8868\u793A\u3057\u307E\u3059\u3002\u975E\u63A8\u5968API\u3068\u306F\u3001\u6A5F\u80FD\u6539\u826F\u306A\u3069\u306E\u7406\u7531\u304B\u3089\u4F7F\u7528\u3092\u304A\u85A6\u3081\u3067\u304D\u306A\u304F\u306A\u3063\u305FAPI\u306E\u3053\u3068\u3067\u3001\u901A\u5E38\u306F\u305D\u308C\u306B\u4EE3\u308F\u308BAPI\u304C\u63D0\u4F9B\u3055\u308C\u307E\u3059\u3002\u975E\u63A8\u5968API\u306F\u4ECA\u5F8C\u306E\u5B9F\u88C5\u3067\u524A\u9664\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002 12.140 +doclet.Help_line_20_with_deprecated_api_link={0}\u30DA\u30FC\u30B8\u306F\u3001\u975E\u63A8\u5968\u306EAPI\u3092\u3059\u3079\u3066\u30EA\u30B9\u30C8\u3057\u307E\u3059\u3002\u975E\u63A8\u5968\u306EAPI\u3068\u306F\u3001\u6A5F\u80FD\u6539\u826F\u306A\u3069\u306E\u7406\u7531\u304B\u3089\u4F7F\u7528\u3092\u304A\u85A6\u3081\u3067\u304D\u306A\u304F\u306A\u3063\u305FAPI\u306E\u3053\u3068\u3067\u3001\u901A\u5E38\u306F\u305D\u308C\u306B\u4EE3\u308F\u308BAPI\u304C\u63D0\u4F9B\u3055\u308C\u307E\u3059\u3002\u975E\u63A8\u5968\u306EAPI\u306F\u4ECA\u5F8C\u306E\u5B9F\u88C5\u3067\u524A\u9664\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002 12.141 doclet.Help_line_21=\u7D22\u5F15 12.142 doclet.Help_line_22={0}\u306B\u306F\u3001\u3059\u3079\u3066\u306E\u30AF\u30E9\u30B9\u3001\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3001\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3001\u30E1\u30BD\u30C3\u30C9\u304A\u3088\u3073\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u30A2\u30EB\u30D5\u30A1\u30D9\u30C3\u30C8\u9806\u306E\u30EA\u30B9\u30C8\u304C\u542B\u307E\u308C\u307E\u3059\u3002 12.143 doclet.Help_line_23=\u524D/\u6B21 12.144 @@ -158,7 +138,7 @@ 12.145 doclet.Help_line_26=\u3053\u308C\u3089\u306E\u30EA\u30F3\u30AF\u306FHTML\u30D5\u30EC\u30FC\u30E0\u306E\u8868\u793A\u3068\u975E\u8868\u793A\u3092\u5207\u308A\u66FF\u3048\u307E\u3059\u3002\u3059\u3079\u3066\u306E\u30DA\u30FC\u30B8\u306F\u30D5\u30EC\u30FC\u30E0\u3042\u308A\u3067\u3082\u3001\u30D5\u30EC\u30FC\u30E0\u306A\u3057\u3067\u3082\u8868\u793A\u3067\u304D\u307E\u3059\u3002 12.146 doclet.Help_line_27={0}\u30EA\u30F3\u30AF\u306B\u306F\u3001\u3059\u3079\u3066\u306E\u30AF\u30E9\u30B9\u304A\u3088\u3073\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9(\u975Estatic\u306E\u30CD\u30B9\u30C8\u3055\u308C\u305F\u578B\u3092\u9664\u304F)\u304C\u8868\u793A\u3055\u308C\u307E\u3059\u3002 12.147 doclet.Help_line_28=\u76F4\u5217\u5316\u53EF\u80FD\u307E\u305F\u306F\u5916\u90E8\u5316\u53EF\u80FD\u306A\u5404\u30AF\u30E9\u30B9\u306F\u3001\u76F4\u5217\u5316\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u30E1\u30BD\u30C3\u30C9\u306E\u8AAC\u660E\u3092\u542B\u307F\u307E\u3059\u3002\u3053\u306E\u60C5\u5831\u306F\u3001API\u3092\u4F7F\u7528\u3059\u308B\u958B\u767A\u8005\u3067\u306F\u306A\u304F\u3001\u518D\u5B9F\u88C5\u3092\u884C\u3046\u62C5\u5F53\u8005\u306B\u5F79\u7ACB\u3061\u307E\u3059\u3002\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u30FB\u30D0\u30FC\u306B\u30EA\u30F3\u30AF\u304C\u306A\u3044\u5834\u5408\u3001\u76F4\u5217\u5316\u3055\u308C\u305F\u30AF\u30E9\u30B9\u306B\u79FB\u52D5\u3057\u3066\u3001\u30AF\u30E9\u30B9\u8A18\u8FF0\u306E\u300C\u95A2\u9023\u9805\u76EE\u300D\u30BB\u30AF\u30B7\u30E7\u30F3\u306B\u3042\u308B\u300C\u76F4\u5217\u5316\u3055\u308C\u305F\u5F62\u5F0F\u300D\u3092\u30AF\u30EA\u30C3\u30AF\u3059\u308B\u3053\u3068\u306B\u3088\u308A\u3001\u3053\u306E\u60C5\u5831\u3092\u8868\u793A\u3067\u304D\u307E\u3059\u3002 12.148 -doclet.Help_line_29=<a href="constant-values.html">\u300C\u5B9A\u6570\u30D5\u30A3\u30FC\u30EB\u30C9\u5024\u300D</a> \u30DA\u30FC\u30B8\u306B\u306F\u3001static final\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u305D\u306E\u5024\u306E\u30EA\u30B9\u30C8\u304C\u3042\u308A\u307E\u3059\u3002 12.149 +doclet.Help_line_29={0}\u30DA\u30FC\u30B8\u306B\u306F\u3001static final\u30D5\u30A3\u30FC\u30EB\u30C9\u3068\u305D\u306E\u5024\u306E\u30EA\u30B9\u30C8\u304C\u3042\u308A\u307E\u3059\u3002 12.150 doclet.Help_line_30=\u3053\u306E\u30D8\u30EB\u30D7\u30FB\u30D5\u30A1\u30A4\u30EB\u306F\u3001\u6A19\u6E96doclet\u3092\u4F7F\u7528\u3057\u3066\u751F\u6210\u3055\u308C\u305FAPI\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306B\u9069\u7528\u3055\u308C\u307E\u3059\u3002 12.151 doclet.Help_enum_line_1=\u5404\u5217\u6319\u578B\u306B\u306F\u3001\u305D\u308C\u81EA\u8EAB\u306E\u500B\u5225\u306E\u30DA\u30FC\u30B8\u3068\u6B21\u306E\u30BB\u30AF\u30B7\u30E7\u30F3\u304C\u3042\u308A\u307E\u3059: 12.152 doclet.Help_enum_line_2=\u5217\u6319\u578B\u306E\u5BA3\u8A00 12.153 @@ -166,19 +146,6 @@ 12.154 doclet.Help_annotation_type_line_1=\u5404\u6CE8\u91C8\u578B\u306B\u306F\u3001\u305D\u308C\u81EA\u8EAB\u306E\u500B\u5225\u306E\u30DA\u30FC\u30B8\u3068\u6B21\u306E\u30BB\u30AF\u30B7\u30E7\u30F3\u304C\u3042\u308A\u307E\u3059: 12.155 doclet.Help_annotation_type_line_2=\u6CE8\u91C8\u578B\u306E\u5BA3\u8A00 12.156 doclet.Help_annotation_type_line_3=\u6CE8\u91C8\u578B\u306E\u8AAC\u660E 12.157 -doclet.Style_line_1=javadoc\u30B9\u30BF\u30A4\u30EB\u30FB\u30B7\u30FC\u30C8 12.158 -doclet.Style_line_2=\u8272\u3084\u30D5\u30A9\u30F3\u30C8\u306A\u3069\u306E\u30B9\u30BF\u30A4\u30EB\u5C5E\u6027\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B\u306B\u306F\u3001\u3053\u3053\u3067\u5B9A\u7FA9\u3057\u307E\u3059 12.159 -doclet.Style_line_3=\u30DA\u30FC\u30B8\u306E\u30D0\u30C3\u30AF\u30B0\u30E9\u30A6\u30F3\u30C9\u306E\u8272 12.160 -doclet.Style_Headings=\u898B\u51FA\u3057 12.161 -doclet.Style_line_4=\u8868\u306E\u8272 12.162 -doclet.Style_line_5=\u6FC3\u3044\u85E4\u8272 12.163 -doclet.Style_line_6=\u8584\u3044\u85E4\u8272 12.164 -doclet.Style_line_7=\u767D 12.165 -doclet.Style_line_8=\u5DE6\u5074\u306E\u30D5\u30EC\u30FC\u30E0\u306E\u30EA\u30B9\u30C8\u306B\u4F7F\u7528\u3059\u308B\u30D5\u30A9\u30F3\u30C8 12.166 -doclet.Style_line_9=\u30D5\u30EC\u30FC\u30E0\u306B\u304A\u3051\u308B\u3001\u3088\u308A\u5C0F\u3055\u3044sans-serif\u30D5\u30A9\u30F3\u30C8\u306E\u4F8B 12.167 -doclet.Style_line_10=\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u30FB\u30D0\u30FC\u306E\u30D5\u30A9\u30F3\u30C8\u3068\u8272 12.168 -doclet.Style_line_11=\u6FC3\u3044\u9752 12.169 -doclet.Style_line_12=\u8868\u306E\u30AD\u30E3\u30D7\u30B7\u30E7\u30F3\u30FB\u30B9\u30BF\u30A4\u30EB 12.170 doclet.ClassUse_Packages.that.use.0={0}\u3092\u4F7F\u7528\u3057\u3066\u3044\u308B\u30D1\u30C3\u30B1\u30FC\u30B8 12.171 doclet.ClassUse_Uses.of.0.in.1={1}\u3067\u306E{0}\u306E\u4F7F\u7528 12.172 doclet.ClassUse_Classes.in.0.used.by.1={1}\u306B\u3088\u308A\u4F7F\u7528\u3055\u308C\u308B{0}\u306E\u30AF\u30E9\u30B9 12.173 @@ -208,13 +175,11 @@ 12.174 doclet.Window_ClassUse_Header={0} {1}\u306E\u4F7F\u7528 12.175 doclet.ClassUse_Title={0}<br>{1}\u306E\u4F7F\u7528 12.176 doclet.navClassUse=\u4F7F\u7528 12.177 -doclet.link_option_twice=\u5916\u90E8URL\u30EA\u30F3\u30AF\u30FB\u30AA\u30D7\u30B7\u30E7\u30F3(link\u307E\u305F\u306Flinkoffline)\u304C2\u56DE\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059\u3002 12.178 doclet.Error_in_packagelist=-group\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u4F7F\u7528\u65B9\u6CD5\u306E\u30A8\u30E9\u30FC: {0} {1} 12.179 doclet.Groupname_already_used=-group\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u304A\u3044\u3066\u3001\u3059\u3067\u306B\u30B0\u30EB\u30FC\u30D7\u540D\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059: {0} 12.180 doclet.Same_package_name_used=\u30D1\u30C3\u30B1\u30FC\u30B8\u540D\u5F62\u5F0F\u304C2\u56DE\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059: {0} 12.181 -doclet.Serialization.Excluded_Class=\u5E38\u99D0\u30D5\u30A3\u30FC\u30EB\u30C9{1}\u306F\u3001\u9664\u5916\u3055\u308C\u305F\u30AF\u30E9\u30B9{0}\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002 12.182 -doclet.Serialization.Nonexcluded_Class=\u5E38\u99D0\u30D5\u30A3\u30FC\u30EB\u30C9{1}\u306F\u3001\u975E\u8868\u793A\u306E\u3001\u542B\u307E\u308C\u306A\u3044\u30AF\u30E9\u30B9{0}\u3092\u4F7F\u7528\u3057\u307E\u3059\u3002 12.183 -doclet.usage=\u6A19\u6E96\u306Edoclet\u306B\u3088\u308A\u63D0\u4F9B\u3055\u308C\u308B\u3082\u306E:\n-d <directory> \u51FA\u529B\u30D5\u30A1\u30A4\u30EB\u306E\u8EE2\u9001\u5148\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\n-use \u30AF\u30E9\u30B9\u3068\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u4F7F\u7528\u30DA\u30FC\u30B8\u3092\u4F5C\u6210\u3059\u308B\n-version @version\u30D1\u30E9\u30B0\u30E9\u30D5\u3092\u542B\u3081\u308B\n-author @author\u30D1\u30E9\u30B0\u30E9\u30D5\u3092\u542B\u3081\u308B\n-docfilessubdirs doc-file\u30B5\u30D6\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u518D\u5E30\u7684\u306B\u30B3\u30D4\u30FC\u3059\u308B\n-splitindex 1\u5B57\u3054\u3068\u306B1\u30D5\u30A1\u30A4\u30EB\u306B\u7D22\u5F15\u3092\u5206\u5272\u3059\u308B\n-windowtitle <text> \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u7528\u306E\u30D6\u30E9\u30A6\u30B6\u30FB\u30A6\u30A3\u30F3\u30C9\u30A6\u30FB\u30BF\u30A4\u30C8\u30EB\n-doctitle <html-code> \u6982\u8981\u30DA\u30FC\u30B8\u306B\u30BF\u30A4\u30C8\u30EB\u3092\u542B\u3081\u308B\n-header <html-code> \u5404\u30DA\u30FC\u30B8\u306B\u30D8\u30C3\u30C0\u30FC\u3092\u542B\u3081\u308B\n-footer <html-code> \u5404\u30DA\u30FC\u30B8\u306B\u30D5\u30C3\u30BF\u30FC\u3092\u542B\u3081\u308B\n-top <html-code> \u5404\u30DA\u30FC\u30B8\u306B\u4E0A\u90E8\u30C6\u30AD\u30B9\u30C8\u3092\u542B\u3081\u308B\n-bottom <html-code> \u5404\u30DA\u30FC\u30B8\u306B\u4E0B\u90E8\u30C6\u30AD\u30B9\u30C8\u3092\u542B\u3081\u308B\n-link <url> <url>\u306Bjavadoc\u51FA\u529B\u3078\u306E\u30EA\u30F3\u30AF\u3092\u4F5C\u6210\u3059\u308B\n-linkoffline <url> <url2> <url2>\u306B\u3042\u308B\u30D1\u30C3\u30B1\u30FC\u30B8\u30FB\u30EA\u30B9\u30C8\u3092\u4F7F\u7528\u3057\u3066<url>\u306Edocs\u306B\u30EA\u30F3\u30AF\u3059\u308B\n-excludedocfilessubdir <name1>:.. \u6307\u5B9A\u3055\u308C\u305F\u540D\u524D\u306Edoc-files\u30B5\u30D6\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u3059\u3079\u3066\u9664\u5916\u3059\u308B\n-group <name> <p1>:<p2>.. \u6307\u5B9A\u3059\u308B\u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u6982\u8981\u30DA\u30FC\u30B8\u306B\u304A\u3044\u3066\u30B0\u30EB\u30FC\u30D7\u5316\u3059\u308B\n-nocomment \u8A18\u8FF0\u304A\u3088\u3073\u30BF\u30B0\u3092\u6291\u5236\u3057\u3066\u5BA3\u8A00\u306E\u307F\u3092\u751F\u6210\u3059\u308B\n-nodeprecated @deprecated\u60C5\u5831\u3092\u9664\u5916\u3059\u308B\n-noqualifier <name1>:<name2>:... \u51FA\u529B\u304B\u3089\u4FEE\u98FE\u5B50\u306E\u30EA\u30B9\u30C8\u3092\u9664\u5916\u3059\u308B\n-nosince @since\u60C5\u5831\u3092\u9664\u5916\u3059\u308B\n-notimestamp \u975E\u8868\u793A\u306E\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u3092\u9664\u5916\u3059\u308B\n-nodeprecatedlist \u975E\u63A8\u5968\u306E\u30EA\u30B9\u30C8\u3092\u751F\u6210\u3057\u306A\u3044\n-notree \u30AF\u30E9\u30B9\u968E\u5C64\u3092\u751F\u6210\u3057\u306A\u3044\n-noindex \u7D22\u5F15\u3092\u751F\u6210\u3057\u306A\u3044\n-nohelp \u30D8\u30EB\u30D7\u30FB\u30EA\u30F3\u30AF\u3092\u751F\u6210\u3057\u306A\u3044\n-nonavbar \u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u30FB\u30D0\u30FC\u3092\u751F\u6210\u3057\u306A\u3044\n-serialwarn @serial\u30BF\u30B0\u306B\u95A2\u3059\u308B\u8B66\u544A\u3092\u751F\u6210\u3059\u308B\n-tag <name>:<locations>:<header> \u5358\u4E00\u306E\u5F15\u6570\u3092\u6301\u3064\u30AB\u30B9\u30BF\u30E0\u30FB\u30BF\u30B0\u3092\u6307\u5B9A\u3059\u308B\n-taglet \u30BF\u30B0\u30EC\u30C3\u30C8\u306E\u5B8C\u5168\u4FEE\u98FE\u540D\u3092\u767B\u9332\u3059\u308B\n-tagletpath \u30BF\u30B0\u30EC\u30C3\u30C8\u306E\u30D1\u30B9\n-charset <charset> \u751F\u6210\u3055\u308C\u308B\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u30AF\u30ED\u30B9\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u3067\u306E\u6587\u5B57\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\n-helpfile <file> \u30D8\u30EB\u30D7\u30FB\u30EA\u30F3\u30AF\u306E\u30EA\u30F3\u30AF\u5148\u30D5\u30A1\u30A4\u30EB\u3092\u542B\u3081\u308B\n-linksource HTML\u5F62\u5F0F\u3067\u30BD\u30FC\u30B9\u3092\u751F\u6210\u3059\u308B\n-sourcetab <tab length> \u30BD\u30FC\u30B9\u5185\u306E\u30BF\u30D6\u306E\u7A7A\u767D\u6587\u5B57\u306E\u6570\u3092\u6307\u5B9A\u3059\u308B\n-keywords HTML\u306Emeta\u30BF\u30B0\u306B\u3001\u30D1\u30C3\u30B1\u30FC\u30B8\u3001\u30AF\u30E9\u30B9\u304A\u3088\u3073\u30E1\u30F3\u30D0\u30FC\u306E\u60C5\u5831\u3092\u542B\u3081\u308B\n-stylesheetfile <path> \u751F\u6210\u3055\u308C\u305F\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u30B9\u30BF\u30A4\u30EB\u5909\u66F4\u7528\u30D5\u30A1\u30A4\u30EB\n-docencoding <name> \u51FA\u529B\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u540D 12.184 +doclet.exception_encountered={1}\u306E\u51E6\u7406\u4E2D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\n{0} 12.185 +doclet.usage=\u6A19\u6E96\u306Edoclet\u306B\u3088\u308A\u63D0\u4F9B\u3055\u308C\u308B\u3082\u306E:\n-d <directory> \u51FA\u529B\u30D5\u30A1\u30A4\u30EB\u306E\u8EE2\u9001\u5148\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\n-use \u30AF\u30E9\u30B9\u3068\u30D1\u30C3\u30B1\u30FC\u30B8\u306E\u4F7F\u7528\u30DA\u30FC\u30B8\u3092\u4F5C\u6210\u3059\u308B\n-version @version\u30D1\u30E9\u30B0\u30E9\u30D5\u3092\u542B\u3081\u308B\n-author @author\u30D1\u30E9\u30B0\u30E9\u30D5\u3092\u542B\u3081\u308B\n-docfilessubdirs doc-file\u30B5\u30D6\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u518D\u5E30\u7684\u306B\u30B3\u30D4\u30FC\u3059\u308B\n-splitindex 1\u5B57\u3054\u3068\u306B1\u30D5\u30A1\u30A4\u30EB\u306B\u7D22\u5F15\u3092\u5206\u5272\u3059\u308B\n-windowtitle <text> \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u7528\u306E\u30D6\u30E9\u30A6\u30B6\u30FB\u30A6\u30A3\u30F3\u30C9\u30A6\u30FB\u30BF\u30A4\u30C8\u30EB\n-doctitle <html-code> \u6982\u8981\u30DA\u30FC\u30B8\u306B\u30BF\u30A4\u30C8\u30EB\u3092\u542B\u3081\u308B\n-header <html-code> \u5404\u30DA\u30FC\u30B8\u306B\u30D8\u30C3\u30C0\u30FC\u3092\u542B\u3081\u308B\n-footer <html-code> \u5404\u30DA\u30FC\u30B8\u306B\u30D5\u30C3\u30BF\u30FC\u3092\u542B\u3081\u308B\n-top <html-code> \u5404\u30DA\u30FC\u30B8\u306B\u4E0A\u90E8\u30C6\u30AD\u30B9\u30C8\u3092\u542B\u3081\u308B\n-bottom <html-code> \u5404\u30DA\u30FC\u30B8\u306B\u4E0B\u90E8\u30C6\u30AD\u30B9\u30C8\u3092\u542B\u3081\u308B\n-link <url> <url>\u306Bjavadoc\u51FA\u529B\u3078\u306E\u30EA\u30F3\u30AF\u3092\u4F5C\u6210\u3059\u308B\n-linkoffline <url> <url2> <url2>\u306B\u3042\u308B\u30D1\u30C3\u30B1\u30FC\u30B8\u30FB\u30EA\u30B9\u30C8\u3092\u4F7F\u7528\u3057\u3066<url>\u306Edocs\u306B\u30EA\u30F3\u30AF\u3059\u308B\n-excludedocfilessubdir <name1>:.. \u6307\u5B9A\u3055\u308C\u305F\u540D\u524D\u306Edoc-files\u30B5\u30D6\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u3059\u3079\u3066\u9664\u5916\u3059\u308B\n-group <name> <p1>:<p2>.. \u6307\u5B9A\u3059\u308B\u30D1\u30C3\u30B1\u30FC\u30B8\u3092\u6982\u8981\u30DA\u30FC\u30B8\u306B\u304A\u3044\u3066\u30B0\u30EB\u30FC\u30D7\u5316\u3059\u308B\n-nocomment \u8A18\u8FF0\u304A\u3088\u3073\u30BF\u30B0\u3092\u6291\u5236\u3057\u3066\u5BA3\u8A00\u306E\u307F\u3092\u751F\u6210\u3059\u308B\n-nodeprecated @deprecated\u60C5\u5831\u3092\u9664\u5916\u3059\u308B\n-noqualifier <name1>:<name2>:... \u51FA\u529B\u304B\u3089\u4FEE\u98FE\u5B50\u306E\u30EA\u30B9\u30C8\u3092\u9664\u5916\u3059\u308B\n-nosince @since\u60C5\u5831\u3092\u9664\u5916\u3059\u308B\n-notimestamp \u975E\u8868\u793A\u306E\u30BF\u30A4\u30E0\u30B9\u30BF\u30F3\u30D7\u3092\u9664\u5916\u3059\u308B\n-nodeprecatedlist \u975E\u63A8\u5968\u306E\u30EA\u30B9\u30C8\u3092\u751F\u6210\u3057\u306A\u3044\n-notree \u30AF\u30E9\u30B9\u968E\u5C64\u3092\u751F\u6210\u3057\u306A\u3044\n-noindex \u7D22\u5F15\u3092\u751F\u6210\u3057\u306A\u3044\n-nohelp \u30D8\u30EB\u30D7\u30FB\u30EA\u30F3\u30AF\u3092\u751F\u6210\u3057\u306A\u3044\n-nonavbar \u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3\u30FB\u30D0\u30FC\u3092\u751F\u6210\u3057\u306A\u3044\n-serialwarn @serial\u30BF\u30B0\u306B\u95A2\u3059\u308B\u8B66\u544A\u3092\u751F\u6210\u3059\u308B\n-tag <name>:<locations>:<header> \u5358\u4E00\u306E\u5F15\u6570\u3092\u6301\u3064\u30AB\u30B9\u30BF\u30E0\u30FB\u30BF\u30B0\u3092\u6307\u5B9A\u3059\u308B\n-taglet \u30BF\u30B0\u30EC\u30C3\u30C8\u306E\u5B8C\u5168\u4FEE\u98FE\u540D\u3092\u767B\u9332\u3059\u308B\n-tagletpath \u30BF\u30B0\u30EC\u30C3\u30C8\u306E\u30D1\u30B9\n-Xdocrootparent <url> \u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u30B3\u30E1\u30F3\u30C8\u5185\u306E@docRoot(\u3053\u306E\u5F8C\u306B\u306F/..\u304C\u7D9A\u304F)\u306E\u3059\u3079\u3066\u306E\u51FA\u73FE\u7B87\u6240\u3092<url>\u3067\u7F6E\u63DB\u3059\u308B\n-charset <charset> \u751F\u6210\u3055\u308C\u308B\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u30AF\u30ED\u30B9\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u3067\u306E\u6587\u5B57\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\n-helpfile <file> \u30D8\u30EB\u30D7\u30FB\u30EA\u30F3\u30AF\u306E\u30EA\u30F3\u30AF\u5148\u30D5\u30A1\u30A4\u30EB\u3092\u542B\u3081\u308B\n-linksource HTML\u5F62\u5F0F\u3067\u30BD\u30FC\u30B9\u3092\u751F\u6210\u3059\u308B\n-sourcetab <tab length> \u30BD\u30FC\u30B9\u5185\u306E\u30BF\u30D6\u306E\u7A7A\u767D\u6587\u5B57\u306E\u6570\u3092\u6307\u5B9A\u3059\u308B\n-keywords HTML\u306Emeta\u30BF\u30B0\u306B\u3001\u30D1\u30C3\u30B1\u30FC\u30B8\u3001\u30AF\u30E9\u30B9\u304A\u3088\u3073\u30E1\u30F3\u30D0\u30FC\u306E\u60C5\u5831\u3092\u542B\u3081\u308B\n-stylesheetfile <path> \u751F\u6210\u3055\u308C\u305F\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u306E\u30B9\u30BF\u30A4\u30EB\u5909\u66F4\u7528\u30D5\u30A1\u30A4\u30EB\n-docencoding <name> \u51FA\u529B\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u540D 12.186 12.187 12.188
13.1 --- a/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard_zh_CN.properties Thu Mar 21 10:43:39 2013 -0700 13.2 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard_zh_CN.properties Tue Mar 26 12:07:45 2013 -0700 13.3 @@ -41,33 +41,23 @@ 13.4 doclet.Help=\u5E2E\u52A9 13.5 doclet.Skip_navigation_links=\u8DF3\u8FC7\u5BFC\u822A\u94FE\u63A5 13.6 doclet.New_Page=NewPage 13.7 -doclet.None=\u65E0 13.8 -doclet.Factory_Method_Detail=\u9759\u6001\u5DE5\u5382\u65B9\u6CD5\u8BE6\u7EC6\u8D44\u6599 13.9 doclet.navDeprecated=\u5DF2\u8FC7\u65F6 13.10 -doclet.Deprecated_List=\u5DF2\u8FC7\u65F6\u7684\u5217\u8868 13.11 doclet.Window_Deprecated_List=\u5DF2\u8FC7\u65F6\u7684\u5217\u8868 13.12 -doclet.Note_0_is_deprecated=\u6CE8: {0}\u5DF2\u8FC7\u65F6\u3002 13.13 doclet.Overrides=\u8986\u76D6: 13.14 doclet.in_class=\u5728\u7C7B\u4E2D 13.15 -doclet.0_Fields_and_Methods="{0}" \u5B57\u6BB5\u548C\u65B9\u6CD5 13.16 -doclet.Index_of_Fields_and_Methods=\u5B57\u6BB5\u548C\u65B9\u6CD5\u7684\u7D22\u5F15 13.17 doclet.Static_variable_in={0}\u4E2D\u7684\u9759\u6001\u53D8\u91CF 13.18 doclet.Variable_in={0}\u4E2D\u7684\u53D8\u91CF 13.19 doclet.Constructor_for={0}\u7684\u6784\u9020\u5668 13.20 doclet.Static_method_in={0}\u4E2D\u7684\u9759\u6001\u65B9\u6CD5 13.21 doclet.Method_in={0}\u4E2D\u7684\u65B9\u6CD5 13.22 -doclet.throws=\u629B\u51FA 13.23 doclet.package=\u7A0B\u5E8F\u5305 13.24 doclet.MalformedURL=\u683C\u5F0F\u9519\u8BEF\u7684 URL: {0} 13.25 doclet.File_error=\u8BFB\u53D6\u6587\u4EF6\u65F6\u51FA\u9519: {0} 13.26 doclet.URL_error=\u83B7\u53D6 URL \u65F6\u51FA\u9519: {0} 13.27 -doclet.No_Package_Comment_File=\u5BF9\u4E8E\u7A0B\u5E8F\u5305{0}, \u627E\u4E0D\u5230 Package.Comment \u6587\u4EF6 13.28 -doclet.No_Source_For_Class=\u7C7B{0}\u7684\u6E90\u4FE1\u606F\u4E0D\u53EF\u7528\u3002 13.29 doclet.see.class_or_package_not_found=\u6807\u8BB0{0}: \u627E\u4E0D\u5230\u5F15\u7528: {1} 13.30 doclet.see.class_or_package_not_accessible=\u6807\u8BB0{0}: \u65E0\u6CD5\u8BBF\u95EE\u5F15\u7528: {1} 13.31 -doclet.see.malformed_tag=\u6807\u8BB0{0}: \u683C\u5F0F\u9519\u8BEF: {1} 13.32 -doclet.Inherited_API_Summary=\u7EE7\u627F\u7684 API \u6982\u8981 13.33 doclet.Deprecated_API=\u5DF2\u8FC7\u65F6\u7684 API 13.34 +doclet.Deprecated_Packages=\u5DF2\u8FC7\u65F6\u7A0B\u5E8F\u5305 13.35 doclet.Deprecated_Classes=\u5DF2\u8FC7\u65F6\u7684\u7C7B 13.36 doclet.Deprecated_Enums=\u5DF2\u8FC7\u65F6\u7684\u679A\u4E3E 13.37 doclet.Deprecated_Interfaces=\u5DF2\u8FC7\u65F6\u7684\u63A5\u53E3 13.38 @@ -79,6 +69,7 @@ 13.39 doclet.Deprecated_Methods=\u5DF2\u8FC7\u65F6\u7684\u65B9\u6CD5 13.40 doclet.Deprecated_Enum_Constants=\u5DF2\u8FC7\u65F6\u7684\u679A\u4E3E\u5E38\u91CF 13.41 doclet.Deprecated_Annotation_Type_Members=\u5DF2\u8FC7\u65F6\u7684\u6CE8\u91CA\u7C7B\u578B\u5143\u7D20 13.42 +doclet.deprecated_packages=\u5DF2\u8FC7\u65F6\u7A0B\u5E8F\u5305 13.43 doclet.deprecated_classes=\u5DF2\u8FC7\u65F6\u7684\u7C7B 13.44 doclet.deprecated_enums=\u5DF2\u8FC7\u65F6\u7684\u679A\u4E3E 13.45 doclet.deprecated_interfaces=\u5DF2\u8FC7\u65F6\u7684\u63A5\u53E3 13.46 @@ -90,10 +81,7 @@ 13.47 doclet.deprecated_methods=\u5DF2\u8FC7\u65F6\u7684\u65B9\u6CD5 13.48 doclet.deprecated_enum_constants=\u5DF2\u8FC7\u65F6\u7684\u679A\u4E3E\u5E38\u91CF 13.49 doclet.deprecated_annotation_type_members=\u5DF2\u8FC7\u65F6\u7684\u6CE8\u91CA\u7C7B\u578B\u5143\u7D20 13.50 -doclet.Frame_Output=\u6846\u67B6\u8F93\u51FA 13.51 -doclet.Docs_generated_by_Javadoc=\u7531 Javadoc \u751F\u6210\u7684\u6587\u6863\u3002 13.52 doclet.Generated_Docs_Untitled=\u751F\u6210\u7684\u6587\u6863 (\u65E0\u6807\u9898) 13.53 -doclet.Blank=\u7A7A\u767D 13.54 doclet.Other_Packages=\u5176\u4ED6\u7A0B\u5E8F\u5305 13.55 doclet.Package_Description=\u7A0B\u5E8F\u5305{0}\u7684\u8BF4\u660E 13.56 doclet.Description=\u8BF4\u660E 13.57 @@ -102,33 +90,25 @@ 13.58 doclet.Subclasses=\u76F4\u63A5\u5DF2\u77E5\u5B50\u7C7B: 13.59 doclet.Subinterfaces=\u6240\u6709\u5DF2\u77E5\u5B50\u63A5\u53E3: 13.60 doclet.Implementing_Classes=\u6240\u6709\u5DF2\u77E5\u5B9E\u73B0\u7C7B: 13.61 +doclet.Functional_Interface=\u51FD\u6570\u63A5\u53E3: 13.62 +doclet.Functional_Interface_Message=\u8FD9\u662F\u4E00\u4E2A\u51FD\u6570\u63A5\u53E3, \u56E0\u6B64\u53EF\u7528\u4F5C lambda \u8868\u8FBE\u5F0F\u6216\u65B9\u6CD5\u5F15\u7528\u7684\u8D4B\u503C\u76EE\u6807\u3002 13.63 doclet.also=\u5E76 13.64 -doclet.Option=\u9009\u9879 13.65 -doclet.Or=\u6216 13.66 doclet.Frames=\u6846\u67B6 13.67 doclet.No_Frames=\u65E0\u6846\u67B6 13.68 doclet.Package_Hierarchies=\u7A0B\u5E8F\u5305\u5206\u5C42\u7ED3\u6784: 13.69 doclet.Hierarchy_For_Package=\u7A0B\u5E8F\u5305{0}\u7684\u5206\u5C42\u7ED3\u6784 13.70 -doclet.Source_Code=\u6E90\u4EE3\u7801: 13.71 doclet.Hierarchy_For_All_Packages=\u6240\u6709\u7A0B\u5E8F\u5305\u7684\u5206\u5C42\u7ED3\u6784 13.72 -doclet.Cannot_handle_no_packages=\u65E0\u6CD5\u5904\u7406\u6CA1\u6709\u7A0B\u5E8F\u5305\u7684\u60C5\u51B5\u3002 13.73 doclet.Frame_Alert=\u6846\u67B6\u9884\u8B66 13.74 -doclet.Overview-Member-Frame=\u6210\u5458\u6846\u67B6\u6982\u89C8 13.75 doclet.Frame_Warning_Message=\u8BF7\u4F7F\u7528\u6846\u67B6\u529F\u80FD\u67E5\u770B\u6B64\u6587\u6863\u3002\u5982\u679C\u770B\u5230\u6B64\u6D88\u606F, \u5219\u8868\u660E\u60A8\u4F7F\u7528\u7684\u662F\u4E0D\u652F\u6301\u6846\u67B6\u7684 Web \u5BA2\u6237\u673A\u3002\u94FE\u63A5\u5230{0}\u3002 13.76 doclet.No_Script_Message=\u60A8\u7684\u6D4F\u89C8\u5668\u5DF2\u7981\u7528 JavaScript\u3002 13.77 doclet.Non_Frame_Version=\u975E\u6846\u67B6\u7248\u672C 13.78 -doclet.Frame_Version=\u6846\u67B6\u7248\u672C 13.79 -doclet.Following_From_Class=\u4EE5\u4E0B\u5185\u5BB9\u662F\u4ECE\u7C7B{0}\u590D\u5236\u7684 13.80 -doclet.Following_From_Interface=\u4EE5\u4E0B\u5185\u5BB9\u662F\u4ECE\u63A5\u53E3{0}\u590D\u5236\u7684 13.81 doclet.Description_From_Interface=\u4ECE\u63A5\u53E3\u590D\u5236\u7684\u8BF4\u660E: 13.82 doclet.Description_From_Class=\u4ECE\u7C7B\u590D\u5236\u7684\u8BF4\u660E: 13.83 -doclet.Standard_doclet_invoked=\u5DF2\u8C03\u7528\u7684\u6807\u51C6 doclet... 13.84 doclet.No_Non_Deprecated_Classes_To_Document=\u627E\u4E0D\u5230\u53EF\u4EE5\u6587\u6863\u5316\u7684\u672A\u8FC7\u65F6\u7684\u7C7B\u3002 13.85 doclet.Interfaces_Italic=\u63A5\u53E3 (\u659C\u4F53) 13.86 doclet.Enclosing_Class=\u5C01\u95ED\u7C7B: 13.87 doclet.Enclosing_Interface=\u5C01\u95ED\u63A5\u53E3: 13.88 doclet.Window_Source_title=\u6E90\u4EE3\u7801 13.89 -doclet.Help_title=API \u5E2E\u52A9 13.90 doclet.Window_Help_title=API \u5E2E\u52A9 13.91 doclet.Help_line_1=\u6B64 API \u6587\u6863\u7684\u7EC4\u7EC7\u65B9\u5F0F 13.92 doclet.Help_line_2=\u6B64 API (\u5E94\u7528\u7A0B\u5E8F\u7F16\u7A0B\u63A5\u53E3) \u6587\u6863\u5305\u542B\u5BF9\u5E94\u4E8E\u5BFC\u822A\u680F\u4E2D\u7684\u9879\u76EE\u7684\u9875\u9762, \u5982\u4E0B\u6240\u8FF0\u3002 13.93 @@ -158,7 +138,7 @@ 13.94 doclet.Help_line_26=\u8FD9\u4E9B\u94FE\u63A5\u7528\u4E8E\u663E\u793A\u548C\u9690\u85CF HTML \u6846\u67B6\u3002\u6240\u6709\u9875\u9762\u5747\u5177\u6709\u6709\u6846\u67B6\u548C\u65E0\u6846\u67B6\u4E24\u79CD\u663E\u793A\u65B9\u5F0F\u3002 13.95 doclet.Help_line_27={0}\u94FE\u63A5\u663E\u793A\u6240\u6709\u7C7B\u548C\u63A5\u53E3 (\u9664\u4E86\u975E\u9759\u6001\u5D4C\u5957\u7C7B\u578B)\u3002 13.96 doclet.Help_line_28=\u6BCF\u4E2A\u53EF\u5E8F\u5217\u5316\u6216\u53EF\u5916\u90E8\u5316\u7684\u7C7B\u90FD\u6709\u5176\u5E8F\u5217\u5316\u5B57\u6BB5\u548C\u65B9\u6CD5\u7684\u8BF4\u660E\u3002\u6B64\u4FE1\u606F\u5BF9\u91CD\u65B0\u5B9E\u73B0\u8005\u6709\u7528, \u800C\u5BF9\u4F7F\u7528 API \u7684\u5F00\u53D1\u8005\u5219\u6CA1\u6709\u4EC0\u4E48\u7528\u5904\u3002\u5C3D\u7BA1\u5BFC\u822A\u680F\u4E2D\u6CA1\u6709\u94FE\u63A5, \u4F46\u60A8\u53EF\u4EE5\u901A\u8FC7\u4E0B\u5217\u65B9\u5F0F\u83B7\u53D6\u6B64\u4FE1\u606F: \u8F6C\u81F3\u4EFB\u4F55\u5E8F\u5217\u5316\u7C7B, \u7136\u540E\u5355\u51FB\u7C7B\u8BF4\u660E\u7684 "\u53E6\u8BF7\u53C2\u9605" \u90E8\u5206\u4E2D\u7684 "\u5E8F\u5217\u5316\u8868\u683C"\u3002 13.97 -doclet.Help_line_29=<a href="constant-values.html">\u5E38\u91CF\u5B57\u6BB5\u503C</a>\u9875\u9762\u5217\u51FA\u4E86\u9759\u6001\u6700\u7EC8\u5B57\u6BB5\u53CA\u5176\u503C\u3002 13.98 +doclet.Help_line_29={0}\u9875\u9762\u5217\u51FA\u4E86\u9759\u6001\u6700\u7EC8\u5B57\u6BB5\u53CA\u5176\u503C\u3002 13.99 doclet.Help_line_30=\u6B64\u5E2E\u52A9\u6587\u4EF6\u9002\u7528\u4E8E\u4F7F\u7528\u6807\u51C6 doclet \u751F\u6210\u7684 API \u6587\u6863\u3002 13.100 doclet.Help_enum_line_1=\u6BCF\u4E2A\u679A\u4E3E\u90FD\u6709\u5404\u81EA\u7684\u9875\u9762, \u5176\u4E2D\u5305\u542B\u4EE5\u4E0B\u90E8\u5206: 13.101 doclet.Help_enum_line_2=\u679A\u4E3E\u58F0\u660E 13.102 @@ -166,19 +146,6 @@ 13.103 doclet.Help_annotation_type_line_1=\u6BCF\u4E2A\u6CE8\u91CA\u7C7B\u578B\u90FD\u6709\u5404\u81EA\u7684\u9875\u9762, \u5176\u4E2D\u5305\u542B\u4EE5\u4E0B\u90E8\u5206: 13.104 doclet.Help_annotation_type_line_2=\u6CE8\u91CA\u7C7B\u578B\u58F0\u660E 13.105 doclet.Help_annotation_type_line_3=\u6CE8\u91CA\u7C7B\u578B\u8BF4\u660E 13.106 -doclet.Style_line_1=Javadoc \u6837\u5F0F\u8868 13.107 -doclet.Style_line_2=\u5728\u6B64\u5904\u5B9A\u4E49\u989C\u8272, \u5B57\u4F53\u548C\u5176\u4ED6\u6837\u5F0F\u5C5E\u6027\u4EE5\u8986\u76D6\u9ED8\u8BA4\u503C 13.108 -doclet.Style_line_3=\u9875\u9762\u80CC\u666F\u989C\u8272 13.109 -doclet.Style_Headings=\u6807\u9898 13.110 -doclet.Style_line_4=\u8868\u683C\u989C\u8272 13.111 -doclet.Style_line_5=\u6DF1\u7D2B\u8272 13.112 -doclet.Style_line_6=\u6DE1\u7D2B\u8272 13.113 -doclet.Style_line_7=\u767D\u8272 13.114 -doclet.Style_line_8=\u5DE6\u4FA7\u7684\u6846\u67B6\u5217\u8868\u4E2D\u4F7F\u7528\u7684\u5B57\u4F53 13.115 -doclet.Style_line_9=\u6846\u67B6\u4E2D\u5C0F\u53F7 sans-serif \u5B57\u4F53\u7684\u793A\u4F8B 13.116 -doclet.Style_line_10=\u5BFC\u822A\u680F\u5B57\u4F53\u548C\u989C\u8272 13.117 -doclet.Style_line_11=\u6DF1\u84DD\u8272 13.118 -doclet.Style_line_12=\u8868\u6807\u9898\u6837\u5F0F 13.119 doclet.ClassUse_Packages.that.use.0=\u4F7F\u7528{0}\u7684\u7A0B\u5E8F\u5305 13.120 doclet.ClassUse_Uses.of.0.in.1={1}\u4E2D{0}\u7684\u4F7F\u7528 13.121 doclet.ClassUse_Classes.in.0.used.by.1={1}\u4F7F\u7528\u7684{0}\u4E2D\u7684\u7C7B 13.122 @@ -208,13 +175,11 @@ 13.123 doclet.Window_ClassUse_Header={0} {1}\u7684\u4F7F\u7528 13.124 doclet.ClassUse_Title={0} {1}<br>\u7684\u4F7F\u7528 13.125 doclet.navClassUse=\u4F7F\u7528 13.126 -doclet.link_option_twice=\u5916\u90E8 URL \u94FE\u63A5\u9009\u9879 (link \u6216 linkoffline) \u4F7F\u7528\u4E86\u4E24\u6B21\u3002 13.127 doclet.Error_in_packagelist=\u4F7F\u7528 -group \u9009\u9879\u65F6\u51FA\u9519: {0} {1} 13.128 doclet.Groupname_already_used=\u5728 -group \u9009\u9879\u4E2D, groupname \u5DF2\u4F7F\u7528: {0} 13.129 doclet.Same_package_name_used=\u7A0B\u5E8F\u5305\u540D\u79F0\u5F62\u5F0F\u4F7F\u7528\u4E86\u4E24\u6B21: {0} 13.130 -doclet.Serialization.Excluded_Class=\u975E\u77AC\u6001\u5B57\u6BB5{1}\u4F7F\u7528\u4E86\u6392\u9664\u7684\u7C7B{0}\u3002 13.131 -doclet.Serialization.Nonexcluded_Class=\u975E\u77AC\u6001\u5B57\u6BB5{1}\u4F7F\u7528\u4E86\u9690\u85CF\u7684, \u672A\u5305\u542B\u7684\u7C7B{0}\u3002 13.132 -doclet.usage=\u901A\u8FC7\u6807\u51C6 doclet \u63D0\u4F9B:\n-d <directory> \u8F93\u51FA\u6587\u4EF6\u7684\u76EE\u6807\u76EE\u5F55\n-use \u521B\u5EFA\u7C7B\u548C\u7A0B\u5E8F\u5305\u7528\u6CD5\u9875\u9762\n-version \u5305\u542B @version \u6BB5\n-author \u5305\u542B @author \u6BB5\n-docfilessubdirs \u9012\u5F52\u590D\u5236\u6587\u6863\u6587\u4EF6\u5B50\u76EE\u5F55\n-splitindex \u5C06\u7D22\u5F15\u5206\u4E3A\u6BCF\u4E2A\u5B57\u6BCD\u5BF9\u5E94\u4E00\u4E2A\u6587\u4EF6\n-windowtitle <text> \u6587\u6863\u7684\u6D4F\u89C8\u5668\u7A97\u53E3\u6807\u9898\n-doctitle <html-code> \u5305\u542B\u6982\u89C8\u9875\u9762\u7684\u6807\u9898\n-header <html-code> \u5305\u542B\u6BCF\u4E2A\u9875\u9762\u7684\u9875\u7709\u6587\u672C\n-footer <html-code> \u5305\u542B\u6BCF\u4E2A\u9875\u9762\u7684\u9875\u811A\u6587\u672C\n-top <html-code> \u5305\u542B\u6BCF\u4E2A\u9875\u9762\u7684\u9876\u90E8\u6587\u672C\n-bottom <html-code> \u5305\u542B\u6BCF\u4E2A\u9875\u9762\u7684\u5E95\u90E8\u6587\u672C\n-link <url> \u521B\u5EFA\u6307\u5411\u4F4D\u4E8E <url> \u7684 javadoc \u8F93\u51FA\u7684\u94FE\u63A5\n-linkoffline <url> <url2> \u5229\u7528\u4F4D\u4E8E <url2> \u7684\u7A0B\u5E8F\u5305\u5217\u8868\u94FE\u63A5\u81F3\u4F4D\u4E8E <url> \u7684\u6587\u6863\n-excludedocfilessubdir <name1>:..\u6392\u9664\u5177\u6709\u7ED9\u5B9A\u540D\u79F0\u7684\u6240\u6709\u6587\u6863\u6587\u4EF6\u5B50\u76EE\u5F55\u3002\n-group <name> <p1>:<p2>..\u5728\u6982\u89C8\u9875\u9762\u4E2D, \u5C06\u6307\u5B9A\u7684\u7A0B\u5E8F\u5305\u5206\u7EC4\n-nocomment \u4E0D\u751F\u6210\u8BF4\u660E\u548C\u6807\u8BB0, \u53EA\u751F\u6210\u58F0\u660E\u3002\n-nodeprecated \u4E0D\u5305\u542B @deprecated \u4FE1\u606F\n-noqualifier <name1>:<name2>:...\u8F93\u51FA\u4E2D\u4E0D\u5305\u62EC\u6307\u5B9A\u9650\u5B9A\u7B26\u7684\u5217\u8868\u3002\n-nosince \u4E0D\u5305\u542B @since \u4FE1\u606F\n-notimestamp \u4E0D\u5305\u542B\u9690\u85CF\u65F6\u95F4\u6233\n-nodeprecatedlist \u4E0D\u751F\u6210\u5DF2\u8FC7\u65F6\u7684\u5217\u8868\n-notree \u4E0D\u751F\u6210\u7C7B\u5206\u5C42\u7ED3\u6784\n-noindex \u4E0D\u751F\u6210\u7D22\u5F15\n-nohelp \u4E0D\u751F\u6210\u5E2E\u52A9\u94FE\u63A5\n-nonavbar \u4E0D\u751F\u6210\u5BFC\u822A\u680F\n-serialwarn \u751F\u6210\u6709\u5173 @serial \u6807\u8BB0\u7684\u8B66\u544A\n-tag <name>:<locations>:<header> \u6307\u5B9A\u5355\u4E2A\u53C2\u6570\u5B9A\u5236\u6807\u8BB0\n-taglet \u8981\u6CE8\u518C\u7684 Taglet \u7684\u5168\u9650\u5B9A\u540D\u79F0\n-tagletpath Taglet \u7684\u8DEF\u5F84\n-charset <charset> \u7528\u4E8E\u8DE8\u5E73\u53F0\u67E5\u770B\u751F\u6210\u7684\u6587\u6863\u7684\u5B57\u7B26\u96C6\u3002\n-helpfile <file> \u5305\u542B\u5E2E\u52A9\u94FE\u63A5\u6240\u94FE\u63A5\u5230\u7684\u6587\u4EF6\n-linksource \u4EE5 HTML \u683C\u5F0F\u751F\u6210\u6E90\u6587\u4EF6\n-sourcetab <tab length> \u6307\u5B9A\u6E90\u4E2D\u6BCF\u4E2A\u5236\u8868\u7B26\u5360\u636E\u7684\u7A7A\u683C\u6570\n-keywords \u4F7F\u7A0B\u5E8F\u5305, \u7C7B\u548C\u6210\u5458\u4FE1\u606F\u9644\u5E26 HTML \u5143\u6807\u8BB0\n-stylesheetfile <path> \u7528\u4E8E\u66F4\u6539\u751F\u6210\u6587\u6863\u7684\u6837\u5F0F\u7684\u6587\u4EF6\n-docencoding <name> \u8F93\u51FA\u7F16\u7801\u540D\u79F0 13.133 +doclet.exception_encountered=\u5904\u7406{1}\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF\n{0} 13.134 +doclet.usage=\u901A\u8FC7\u6807\u51C6 doclet \u63D0\u4F9B:\n-d <directory> \u8F93\u51FA\u6587\u4EF6\u7684\u76EE\u6807\u76EE\u5F55\n-use \u521B\u5EFA\u7C7B\u548C\u7A0B\u5E8F\u5305\u7528\u6CD5\u9875\u9762\n-version \u5305\u542B @version \u6BB5\n-author \u5305\u542B @author \u6BB5\n-docfilessubdirs \u9012\u5F52\u590D\u5236\u6587\u6863\u6587\u4EF6\u5B50\u76EE\u5F55\n-splitindex \u5C06\u7D22\u5F15\u5206\u4E3A\u6BCF\u4E2A\u5B57\u6BCD\u5BF9\u5E94\u4E00\u4E2A\u6587\u4EF6\n-windowtitle <text> \u6587\u6863\u7684\u6D4F\u89C8\u5668\u7A97\u53E3\u6807\u9898\n-doctitle <html-code> \u5305\u542B\u6982\u89C8\u9875\u9762\u7684\u6807\u9898\n-header <html-code> \u5305\u542B\u6BCF\u4E2A\u9875\u9762\u7684\u9875\u7709\u6587\u672C\n-footer <html-code> \u5305\u542B\u6BCF\u4E2A\u9875\u9762\u7684\u9875\u811A\u6587\u672C\n-top <html-code> \u5305\u542B\u6BCF\u4E2A\u9875\u9762\u7684\u9876\u90E8\u6587\u672C\n-bottom <html-code> \u5305\u542B\u6BCF\u4E2A\u9875\u9762\u7684\u5E95\u90E8\u6587\u672C\n-link <url> \u521B\u5EFA\u6307\u5411\u4F4D\u4E8E <url> \u7684 javadoc \u8F93\u51FA\u7684\u94FE\u63A5\n-linkoffline <url> <url2> \u5229\u7528\u4F4D\u4E8E <url2> \u7684\u7A0B\u5E8F\u5305\u5217\u8868\u94FE\u63A5\u81F3\u4F4D\u4E8E <url> \u7684\u6587\u6863\n-excludedocfilessubdir <name1>:.. \u6392\u9664\u5177\u6709\u7ED9\u5B9A\u540D\u79F0\u7684\u6240\u6709\u6587\u6863\u6587\u4EF6\u5B50\u76EE\u5F55\u3002\n-group <name> <p1>:<p2>.. \u5728\u6982\u89C8\u9875\u9762\u4E2D, \u5C06\u6307\u5B9A\u7684\u7A0B\u5E8F\u5305\u5206\u7EC4\n-nocomment \u4E0D\u751F\u6210\u8BF4\u660E\u548C\u6807\u8BB0, \u53EA\u751F\u6210\u58F0\u660E\u3002\n-nodeprecated \u4E0D\u5305\u542B @deprecated \u4FE1\u606F\n-noqualifier <name1>:<name2>:... \u8F93\u51FA\u4E2D\u4E0D\u5305\u62EC\u9650\u5B9A\u7B26\u7684\u5217\u8868\u3002\n-nosince \u4E0D\u5305\u542B @since \u4FE1\u606F\n-notimestamp \u4E0D\u5305\u542B\u9690\u85CF\u65F6\u95F4\u6233\n-nodeprecatedlist \u4E0D\u751F\u6210\u5DF2\u8FC7\u65F6\u7684\u5217\u8868\n-notree \u4E0D\u751F\u6210\u7C7B\u5206\u5C42\u7ED3\u6784\n-noindex \u4E0D\u751F\u6210\u7D22\u5F15\n-nohelp \u4E0D\u751F\u6210\u5E2E\u52A9\u94FE\u63A5\n-nonavbar \u4E0D\u751F\u6210\u5BFC\u822A\u680F\n-serialwarn \u751F\u6210\u6709\u5173 @serial \u6807\u8BB0\u7684\u8B66\u544A\n-tag <name>:<locations>:<header> \u6307\u5B9A\u5355\u4E2A\u53C2\u6570\u5B9A\u5236\u6807\u8BB0\n-taglet \u8981\u6CE8\u518C\u7684 Taglet \u7684\u5168\u9650\u5B9A\u540D\u79F0\n-tagletpath Taglet \u7684\u8DEF\u5F84\n-Xdocrootparent <url> \u5C06\u6587\u6863\u6CE8\u91CA\u4E2D\u51FA\u73B0\u7684\u6240\u6709\u540E\u8DDF /.. \u7684 @docRoot \u66FF\u6362\u4E3A <url>\n-charset <charset> \u7528\u4E8E\u8DE8\u5E73\u53F0\u67E5\u770B\u751F\u6210\u7684\u6587\u6863\u7684\u5B57\u7B26\u96C6\u3002\n-helpfile <file> \u5305\u542B\u5E2E\u52A9\u94FE\u63A5\u6240\u94FE\u63A5\u5230\u7684\u6587\u4EF6\n-linksource \u4EE5 HTML \u683C\u5F0F\u751F\u6210\u6E90\u6587\u4EF6\n-sourcetab <tab length> \u6307\u5B9A\u6E90\u4E2D\u6BCF\u4E2A\u5236\u8868\u7B26\u5360\u636E\u7684\u7A7A\u683C\u6570\n-keywords \u4F7F\u7A0B\u5E8F\u5305, \u7C7B\u548C\u6210\u5458\u4FE1\u606F\u9644\u5E26 HTML \u5143\u6807\u8BB0\n-stylesheetfile <path> \u7528\u4E8E\u66F4\u6539\u751F\u6210\u6587\u6863\u7684\u6837\u5F0F\u7684\u6587\u4EF6\n-docencoding <name> \u8F93\u51FA\u7F16\u7801\u540D\u79F0 13.135 13.136 13.137
14.1 --- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/Configuration.java Thu Mar 21 10:43:39 2013 -0700 14.2 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/Configuration.java Tue Mar 26 12:07:45 2013 -0700 14.3 @@ -56,7 +56,7 @@ 14.4 /** 14.5 * Exception used to report a problem during setOptions. 14.6 */ 14.7 - public class Fault extends Exception { 14.8 + public static class Fault extends Exception { 14.9 private static final long serialVersionUID = 0; 14.10 14.11 Fault(String msg) {
15.1 --- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeBuilder.java Thu Mar 21 10:43:39 2013 -0700 15.2 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeBuilder.java Tue Mar 26 12:07:45 2013 -0700 15.3 @@ -1,5 +1,5 @@ 15.4 /* 15.5 - * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. 15.6 + * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. 15.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 15.8 * 15.9 * This code is free software; you can redistribute it and/or modify it 15.10 @@ -116,9 +116,9 @@ 15.11 * @param contentTree the content tree to which the documentation will be added 15.12 */ 15.13 public void buildAnnotationTypeDoc(XMLNode node, Content contentTree) throws Exception { 15.14 - contentTree = writer.getHeader(configuration.getText("doclet.AnnotationType") + 15.15 + contentTree = writer.getHeader(configuration.getText("doclet.AnnotationType") + 15.16 " " + annotationTypeDoc.name()); 15.17 - Content annotationContentTree = writer.getAnnotationContentHeader(); 15.18 + Content annotationContentTree = writer.getAnnotationContentHeader(); 15.19 buildChildren(node, annotationContentTree); 15.20 contentTree.addContent(annotationContentTree); 15.21 writer.addFooter(contentTree);
16.1 --- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_ja.properties Thu Mar 21 10:43:39 2013 -0700 16.2 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_ja.properties Tue Mar 26 12:07:45 2013 -0700 16.3 @@ -11,6 +11,8 @@ 16.4 doclet.Class_0_extends_implements_serializable=Class {0} extends {1} implements Serializable 16.5 doclet.Option_conflict=\u30AA\u30D7\u30B7\u30E7\u30F3{0}\u304C{1}\u3068\u77DB\u76FE\u3057\u307E\u3059 16.6 doclet.Option_reuse=\u30AA\u30D7\u30B7\u30E7\u30F3\u304C\u518D\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059: {0} 16.7 +doclet.Option_doclint_no_qualifiers=\u30A2\u30AF\u30BB\u30B9\u4FEE\u98FE\u5B50\u306F-Xdoclint\u306E\u5F15\u6570\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 16.8 +doclet.Option_doclint_invalid_arg=-Xdoclint\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u5F15\u6570\u304C\u7121\u52B9\u3067\u3059 16.9 doclet.exception_encountered= {0}\u3092\u691C\u51FA\n\t\u30D5\u30A1\u30A4\u30EB\u306E\u4F5C\u6210\u4E2D: {1} 16.10 doclet.perform_copy_exception_encountered= \u30B3\u30D4\u30FC\u5B9F\u884C\u4E2D\u306B{0}\u3092\n\u691C\u51FA\u3057\u307E\u3057\u305F\u3002 16.11 doclet.File_not_found=\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0} 16.12 @@ -19,10 +21,8 @@ 16.13 doclet.Copying_File_0_To_File_1=\u30D5\u30A1\u30A4\u30EB{0}\u3092\u30D5\u30A1\u30A4\u30EB{1}\u306B\u30B3\u30D4\u30FC\u4E2D... 16.14 doclet.No_Public_Classes_To_Document=\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u5316\u3059\u308Bpublic\u307E\u305F\u306Fprotected\u30AF\u30E9\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 16.15 doclet.Unable_to_create_directory_0=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 16.16 -doclet.destination_directory_not_found_0=\u8EE2\u9001\u5148\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 16.17 doclet.destination_directory_not_directory_0=\u8EE2\u9001\u5148\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306F\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u306F\u3042\u308A\u307E\u305B\u3093 16.18 doclet.destination_directory_not_writable_0=\u8EE2\u9001\u5148\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA{0}\u306F\u66F8\u8FBC\u307F\u53EF\u80FD\u3067\u306F\u3042\u308A\u307E\u305B\u3093 16.19 -doclet.Error_creating_tmp_file=\u30D7\u30E9\u30C3\u30C8\u30D5\u30A9\u30FC\u30E0\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u4F7F\u7528\u3057\u3066\u4E00\u6642\u30D5\u30A1\u30A4\u30EB\u3092\u4F5C\u6210\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002 16.20 doclet.Encoding_not_supported=\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0{0}\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 16.21 doclet.Building_Tree=\u5168\u30D1\u30C3\u30B1\u30FC\u30B8\u3068\u30AF\u30E9\u30B9\u306E\u968E\u5C64\u30C4\u30EA\u30FC\u3092\u4F5C\u6210\u3057\u3066\u3044\u307E\u3059... 16.22 doclet.Building_Index=\u5168\u30D1\u30C3\u30B1\u30FC\u30B8\u3068\u30AF\u30E9\u30B9\u306E\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u3092\u4F5C\u6210\u3057\u3066\u3044\u307E\u3059... 16.23 @@ -72,7 +72,6 @@ 16.24 doclet.Enum_Constant_Summary=\u5217\u6319\u578B\u5B9A\u6570\u306E\u6982\u8981 16.25 doclet.Constructor_Summary=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u6982\u8981 16.26 doclet.Method_Summary=\u30E1\u30BD\u30C3\u30C9\u306E\u6982\u8981 16.27 -doclet.Factory_Method_Summary=static\u30D5\u30A1\u30AF\u30C8\u30EA\u30FB\u30E1\u30BD\u30C3\u30C9\u306E\u6982\u8981 16.28 doclet.Interfaces=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 16.29 doclet.Enums=\u5217\u6319\u578B 16.30 doclet.AnnotationTypes=\u6CE8\u91C8\u578B 16.31 @@ -86,15 +85,14 @@ 16.32 doclet.All_Implemented_Interfaces=\u3059\u3079\u3066\u306E\u5B9F\u88C5\u3055\u308C\u305F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9: 16.33 doclet.All_classes_and_interfaces=\u3059\u3079\u3066\u306E\u30AF\u30E9\u30B9\u304A\u3088\u3073\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9(\u975Estatic\u306E\u30CD\u30B9\u30C8\u3055\u308C\u305F\u578B\u3092\u9664\u304F) 16.34 doclet.Package_class_and_interface_descriptions=\u30D1\u30C3\u30B1\u30FC\u30B8\u3001\u30AF\u30E9\u30B9\u304A\u3088\u3073\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306E\u8AAC\u660E 16.35 -doclet.Members=\u30E1\u30F3\u30D0\u30FC 16.36 doclet.Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 16.37 doclet.Class=\u30AF\u30E9\u30B9 16.38 doclet.AnnotationType=\u6CE8\u91C8\u578B 16.39 doclet.annotationtype=\u6CE8\u91C8\u578B 16.40 doclet.annotationtypes=\u6CE8\u91C8\u578B 16.41 doclet.Enum=\u5217\u6319\u578B 16.42 -doclet.enum=\u5217\u6319 16.43 -doclet.enums=\u5217\u6319 16.44 +doclet.enum=\u5217\u6319\u578B 16.45 +doclet.enums=\u5217\u6319\u578B 16.46 doclet.interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 16.47 doclet.interfaces=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 16.48 doclet.class=\u30AF\u30E9\u30B9 16.49 @@ -105,26 +103,20 @@ 16.50 doclet.Exception=\u4F8B\u5916 16.51 doclet.exception=\u4F8B\u5916 16.52 doclet.exceptions=\u4F8B\u5916 16.53 -doclet.extended_by=\u4E0A\u4F4D\u3092\u62E1\u5F35 16.54 -doclet.extends=extends 16.55 doclet.Package_private=(package private) 16.56 -doclet.implements=implementsdoclet.Same_package_name_used=\u30D1\u30C3\u30B1\u30FC\u30B8\u540D\u5F62\u5F0F\u304C2\u56DE\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059: {0} 16.57 doclet.Nested_Classes_Interfaces_Inherited_From_Class=\u30AF\u30E9\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30CD\u30B9\u30C8\u3055\u308C\u305F\u30AF\u30E9\u30B9/\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 16.58 doclet.Nested_Classes_Interface_Inherited_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30CD\u30B9\u30C8\u3055\u308C\u305F\u30AF\u30E9\u30B9/\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 16.59 doclet.Methods_Inherited_From_Class=\u30AF\u30E9\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9 16.60 doclet.Methods_Inherited_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9 16.61 doclet.Fields_Inherited_From_Class=\u30AF\u30E9\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30EB\u30C9 16.62 doclet.Fields_Inherited_From_Interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304B\u3089\u7D99\u627F\u3055\u308C\u305F\u30D5\u30A3\u30FC\u30EB\u30C9 16.63 -doclet.Serializable=\u76F4\u5217\u5316\u53EF\u80FD 16.64 -doclet.Externalizable=\u5916\u90E8\u5316\u53EF\u80FD 16.65 doclet.Annotation_Type_Member_Detail=\u8981\u7D20\u306E\u8A73\u7D30 16.66 doclet.Enum_Constant_Detail=\u5217\u6319\u578B\u5B9A\u6570\u306E\u8A73\u7D30 16.67 doclet.Constants_Summary=\u5B9A\u6570\u30D5\u30A3\u30FC\u30EB\u30C9\u5024 16.68 doclet.Field_Detail=\u30D5\u30A3\u30FC\u30EB\u30C9\u306E\u8A73\u7D30 16.69 doclet.Method_Detail=\u30E1\u30BD\u30C3\u30C9\u306E\u8A73\u7D30 16.70 doclet.Constructor_Detail=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u8A73\u7D30 16.71 -doclet.Deprecated=\u63A8\u5968\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 16.72 -doclet.Deprecated_class=\u3053\u306E\u30AF\u30E9\u30B9\u306F\u63A8\u5968\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 16.73 +doclet.Deprecated=\u975E\u63A8\u5968\u3067\u3059\u3002 16.74 doclet.Groupname_already_used=-group\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u304A\u3044\u3066\u3001\u3059\u3067\u306B\u30B0\u30EB\u30FC\u30D7\u540D\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059: {0} 16.75 doclet.value_tag_invalid_reference={0}(@value\u30BF\u30B0\u306B\u3088\u308A\u53C2\u7167\u3055\u308C\u3066\u3044\u308B)\u306F\u4E0D\u660E\u306A\u53C2\u7167\u3067\u3059\u3002 16.76 doclet.value_tag_invalid_constant=@value\u30BF\u30B0({0}\u3092\u53C2\u7167\u3057\u3066\u3044\u308B)\u306F\u5B9A\u6570\u5185\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059\u3002 16.77 @@ -144,7 +136,7 @@ 16.78 doclet.annotation_type_required_members=\u5FC5\u9808\u8981\u7D20 16.79 doclet.Annotation_Type_Required_Members=\u5FC5\u9808\u8981\u7D20 16.80 doclet.enum_constants=\u5217\u6319\u578B\u5B9A\u6570 16.81 -doclet.Enum_Constants=\u5217\u6319\u5B9A\u6570 16.82 +doclet.Enum_Constants=\u5217\u6319\u578B\u5B9A\u6570 16.83 doclet.nested_classes=\u30CD\u30B9\u30C8\u3055\u308C\u305F\u30AF\u30E9\u30B9 16.84 doclet.Nested_Classes=\u30CD\u30B9\u30C8\u3055\u308C\u305F\u30AF\u30E9\u30B9 16.85 doclet.subclasses=\u30B5\u30D6\u30AF\u30E9\u30B9 16.86 @@ -167,4 +159,4 @@ 16.87 #Documentation for Enums 16.88 doclet.enum_values_doc=\n\u3053\u306E\u5217\u6319\u578B\u306E\u5B9A\u6570\u3092\u542B\u3080\u914D\u5217\u3092\u5BA3\u8A00\u3055\u308C\u3066\u3044\u308B\u9806\u5E8F\u3067\u8FD4\u3057\u307E\u3059\u3002\n\u3053\u306E\u30E1\u30BD\u30C3\u30C9\u306F\u6B21\u306E\u3088\u3046\u306B\u3057\u3066\u5B9A\u6570\u3092\u53CD\u5FA9\u3059\u308B\u305F\u3081\u306B\n\u4F7F\u7528\u3067\u304D\u307E\u3059:\n<pre>\nfor({0} c: {0}.values())\n System.out.println(c);\n</pre>\n@return\u3053\u306E\u5217\u6319\u578B\u306E\u5B9A\u6570\u3092\u5BA3\u8A00\u3055\u308C\u3066\u3044\u308B\u9806\u5E8F\u3067\n\u542B\u3080\u914D\u5217 16.89 16.90 -doclet.enum_valueof_doc=\n\u6307\u5B9A\u3057\u305F\u540D\u524D\u3092\u6301\u3064\u3053\u306E\u578B\u306E\u5217\u6319\u578B\u5B9A\u6570\u3092\u8FD4\u3057\u307E\u3059\u3002\n\u6587\u5B57\u5217\u306F\u3001\u3053\u306E\u578B\u306E\u5217\u6319\u578B\u5B9A\u6570\u3092\u5BA3\u8A00\u3059\u308B\u306E\u306B\u4F7F\u7528\u3057\u305F\u8B58\u5225\u5B50\u3068\u53B3\u5BC6\u306B\n\u4E00\u81F4\u3057\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n(\u4F59\u5206\u306A\u7A7A\u767D\u6587\u5B57\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002)\n\n@param name\u8FD4\u3055\u308C\u308B\u5217\u6319\u578B\u5B9A\u6570\u306E\u540D\u524D\n@return\u6307\u5B9A\u3055\u308C\u305F\u540D\u524D\u3092\u6301\u3064\u5217\u6319\u578B\u5B9A\u6570\n@throws IllegalArgumentException\u6307\u5B9A\u3055\u308C\u305F\u540D\u524D\u3092\u6301\u3064\u5B9A\u6570\u3092\n\u3053\u306E\u5217\u6319\u578B\u304C\u6301\u3063\u3066\u3044\u306A\u3044\u5834\u5408\n@throws NullPointerException\u5F15\u6570\u304Cnull\u306E\u5834\u5408 16.91 +doclet.enum_valueof_doc=\n\u6307\u5B9A\u3057\u305F\u540D\u524D\u3092\u6301\u3064\u3053\u306E\u578B\u306E\u5217\u6319\u578B\u5B9A\u6570\u3092\u8FD4\u3057\u307E\u3059\u3002\n\u6587\u5B57\u5217\u306F\u3001\u3053\u306E\u578B\u306E\u5217\u6319\u578B\u5B9A\u6570\u3092\u5BA3\u8A00\u3059\u308B\u306E\u306B\u4F7F\u7528\u3057\u305F\u8B58\u5225\u5B50\u3068<i>\u6B63\u78BA\u306B</i>\n\u4E00\u81F4\u3057\u3066\u3044\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\n(\u4F59\u5206\u306A\u7A7A\u767D\u6587\u5B57\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002)\n\n@param name\u8FD4\u3055\u308C\u308B\u5217\u6319\u578B\u5B9A\u6570\u306E\u540D\u524D\n@return\u6307\u5B9A\u3055\u308C\u305F\u540D\u524D\u3092\u6301\u3064\u5217\u6319\u578B\u5B9A\u6570\n@throws IllegalArgumentException\u6307\u5B9A\u3055\u308C\u305F\u540D\u524D\u3092\u6301\u3064\u5B9A\u6570\u3092\n\u3053\u306E\u5217\u6319\u578B\u304C\u6301\u3063\u3066\u3044\u306A\u3044\u5834\u5408\n@throws NullPointerException\u5F15\u6570\u304Cnull\u306E\u5834\u5408
17.1 --- a/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_zh_CN.properties Thu Mar 21 10:43:39 2013 -0700 17.2 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_zh_CN.properties Tue Mar 26 12:07:45 2013 -0700 17.3 @@ -11,6 +11,8 @@ 17.4 doclet.Class_0_extends_implements_serializable=\u7C7B{0}\u6269\u5C55{1}\u5B9E\u73B0\u53EF\u5E8F\u5217\u5316 17.5 doclet.Option_conflict=\u9009\u9879{0}\u4E0E{1}\u51B2\u7A81 17.6 doclet.Option_reuse=\u91CD\u590D\u4F7F\u7528\u7684\u9009\u9879: {0} 17.7 +doclet.Option_doclint_no_qualifiers=-Xdoclint \u53C2\u6570\u4E0D\u5141\u8BB8\u4F7F\u7528\u8BBF\u95EE\u9650\u5B9A\u7B26 17.8 +doclet.Option_doclint_invalid_arg=-Xdoclint \u9009\u9879\u7684\u53C2\u6570\u65E0\u6548 17.9 doclet.exception_encountered= \u5C1D\u8BD5\u521B\u5EFA\u6587\u4EF6{1}\u65F6 \n\t\u9047\u5230{0} 17.10 doclet.perform_copy_exception_encountered= \u6267\u884C\u590D\u5236\u65F6 \n\u9047\u5230{0}\u3002 17.11 doclet.File_not_found=\u627E\u4E0D\u5230\u6587\u4EF6: {0} 17.12 @@ -19,10 +21,8 @@ 17.13 doclet.Copying_File_0_To_File_1=\u6B63\u5728\u5C06\u6587\u4EF6{0}\u590D\u5236\u5230\u6587\u4EF6{1}... 17.14 doclet.No_Public_Classes_To_Document=\u627E\u4E0D\u5230\u53EF\u4EE5\u6587\u6863\u5316\u7684\u516C\u5171\u6216\u53D7\u4FDD\u62A4\u7684\u7C7B\u3002 17.15 doclet.Unable_to_create_directory_0=\u65E0\u6CD5\u521B\u5EFA\u76EE\u5F55 {0} 17.16 -doclet.destination_directory_not_found_0=\u627E\u4E0D\u5230\u76EE\u6807\u76EE\u5F55 {0} 17.17 doclet.destination_directory_not_directory_0=\u76EE\u6807\u76EE\u5F55\u4E0D\u662F\u76EE\u5F55 {0} 17.18 doclet.destination_directory_not_writable_0=\u76EE\u6807\u76EE\u5F55\u4E0D\u53EF\u5199\u5165 {0} 17.19 -doclet.Error_creating_tmp_file=\u4F7F\u7528\u9ED8\u8BA4\u5E73\u53F0\u7F16\u7801\u521B\u5EFA\u4E34\u65F6\u6587\u4EF6\u65F6\u51FA\u9519\u3002 17.20 doclet.Encoding_not_supported=\u4E0D\u652F\u6301\u7F16\u7801: {0} 17.21 doclet.Building_Tree=\u6B63\u5728\u6784\u5EFA\u6240\u6709\u7A0B\u5E8F\u5305\u548C\u7C7B\u7684\u6811... 17.22 doclet.Building_Index=\u6B63\u5728\u6784\u5EFA\u6240\u6709\u7A0B\u5E8F\u5305\u548C\u7C7B\u7684\u7D22\u5F15... 17.23 @@ -72,7 +72,6 @@ 17.24 doclet.Enum_Constant_Summary=\u679A\u4E3E\u5E38\u91CF\u6982\u8981 17.25 doclet.Constructor_Summary=\u6784\u9020\u5668\u6982\u8981 17.26 doclet.Method_Summary=\u65B9\u6CD5\u6982\u8981 17.27 -doclet.Factory_Method_Summary=\u9759\u6001\u5DE5\u5382\u65B9\u6CD5\u6982\u8981 17.28 doclet.Interfaces=\u63A5\u53E3 17.29 doclet.Enums=\u679A\u4E3E 17.30 doclet.AnnotationTypes=\u6CE8\u91CA\u7C7B\u578B 17.31 @@ -86,7 +85,6 @@ 17.32 doclet.All_Implemented_Interfaces=\u6240\u6709\u5DF2\u5B9E\u73B0\u7684\u63A5\u53E3: 17.33 doclet.All_classes_and_interfaces=\u6240\u6709\u7C7B\u548C\u63A5\u53E3 (\u9664\u4E86\u975E\u9759\u6001\u5D4C\u5957\u7C7B\u578B) 17.34 doclet.Package_class_and_interface_descriptions=\u7A0B\u5E8F\u5305, \u7C7B\u548C\u63A5\u53E3\u8BF4\u660E 17.35 -doclet.Members=\u6210\u5458 17.36 doclet.Interface=\u63A5\u53E3 17.37 doclet.Class=\u7C7B 17.38 doclet.AnnotationType=\u6CE8\u91CA\u7C7B\u578B 17.39 @@ -105,18 +103,13 @@ 17.40 doclet.Exception=\u5F02\u5E38\u9519\u8BEF 17.41 doclet.exception=\u5F02\u5E38\u9519\u8BEF 17.42 doclet.exceptions=\u5F02\u5E38\u9519\u8BEF 17.43 -doclet.extended_by=\u6269\u5C55\u8005 17.44 -doclet.extends=\u6269\u5C55 17.45 doclet.Package_private=(\u4E13\u7528\u7A0B\u5E8F\u5305) 17.46 -doclet.implements=implementsdoclet.Same_package_name_used=\u7A0B\u5E8F\u5305\u540D\u79F0\u5F62\u5F0F\u4F7F\u7528\u4E86\u4E24\u6B21: {0} 17.47 doclet.Nested_Classes_Interfaces_Inherited_From_Class=\u4ECE\u7C7B\u7EE7\u627F\u7684\u5D4C\u5957\u7C7B/\u63A5\u53E3 17.48 doclet.Nested_Classes_Interface_Inherited_From_Interface=\u4ECE\u63A5\u53E3\u7EE7\u627F\u7684\u5D4C\u5957\u7C7B/\u63A5\u53E3 17.49 doclet.Methods_Inherited_From_Class=\u4ECE\u7C7B\u7EE7\u627F\u7684\u65B9\u6CD5 17.50 doclet.Methods_Inherited_From_Interface=\u4ECE\u63A5\u53E3\u7EE7\u627F\u7684\u65B9\u6CD5 17.51 doclet.Fields_Inherited_From_Class=\u4ECE\u7C7B\u7EE7\u627F\u7684\u5B57\u6BB5 17.52 doclet.Fields_Inherited_From_Interface=\u4ECE\u63A5\u53E3\u7EE7\u627F\u7684\u5B57\u6BB5 17.53 -doclet.Serializable=\u53EF\u5E8F\u5217\u5316 17.54 -doclet.Externalizable=\u53EF\u5916\u90E8\u5316 17.55 doclet.Annotation_Type_Member_Detail=\u5143\u7D20\u8BE6\u7EC6\u8D44\u6599 17.56 doclet.Enum_Constant_Detail=\u679A\u4E3E\u5E38\u91CF\u8BE6\u7EC6\u8D44\u6599 17.57 doclet.Constants_Summary=\u5E38\u91CF\u5B57\u6BB5\u503C 17.58 @@ -124,7 +117,6 @@ 17.59 doclet.Method_Detail=\u65B9\u6CD5\u8BE6\u7EC6\u8D44\u6599 17.60 doclet.Constructor_Detail=\u6784\u9020\u5668\u8BE6\u7EC6\u8D44\u6599 17.61 doclet.Deprecated=\u5DF2\u8FC7\u65F6\u3002 17.62 -doclet.Deprecated_class=\u8BE5\u7C7B\u5DF2\u8FC7\u65F6\u3002 17.63 doclet.Groupname_already_used=\u5728 -group \u9009\u9879\u4E2D, groupname \u5DF2\u4F7F\u7528: {0} 17.64 doclet.value_tag_invalid_reference={0} (\u7531 @value \u6807\u8BB0\u5F15\u7528) \u4E3A\u672A\u77E5\u5F15\u7528\u3002 17.65 doclet.value_tag_invalid_constant=@value \u6807\u8BB0 (\u5F15\u7528{0}) \u53EA\u80FD\u5728\u5E38\u91CF\u4E2D\u4F7F\u7528\u3002 17.66 @@ -167,4 +159,4 @@ 17.67 #Documentation for Enums 17.68 doclet.enum_values_doc=\n\u6309\u7167\u58F0\u660E\u8BE5\u679A\u4E3E\u7C7B\u578B\u7684\u5E38\u91CF\u7684\u987A\u5E8F, \u8FD4\u56DE\n\u5305\u542B\u8FD9\u4E9B\u5E38\u91CF\u7684\u6570\u7EC4\u3002\u8BE5\u65B9\u6CD5\u53EF\u7528\u4E8E\u8FED\u4EE3\n\u5E38\u91CF, \u5982\u4E0B\u6240\u793A:\n<pre>\nfor ({0} c : {0}.values())\n System.out.println(c);\n</pre>\n@\u6309\u7167\u58F0\u660E\u8BE5\u679A\u4E3E\u7C7B\u578B\u7684\u5E38\u91CF\u7684\u987A\u5E8F, \u8FD4\u56DE\n\u5305\u542B\u8FD9\u4E9B\u5E38\u91CF\u7684\u6570\u7EC4 17.69 17.70 -doclet.enum_valueof_doc=\n\u8FD4\u56DE\u5E26\u6709\u6307\u5B9A\u540D\u79F0\u7684\u8BE5\u7C7B\u578B\u7684\u679A\u4E3E\u5E38\u91CF\u3002\n\u5B57\u7B26\u4E32\u5FC5\u987B\u4E0E\u7528\u4E8E\u58F0\u660E\u8BE5\u7C7B\u578B\u7684\u679A\u4E3E\u5E38\u91CF\u7684\n\u6807\u8BC6\u7B26<i>\u5B8C\u5168</i>\u5339\u914D\u3002(\u4E0D\u5141\u8BB8\u6709\u591A\u4F59\n\u7684\u7A7A\u683C\u5B57\u7B26\u3002)\n\n@param name \u8981\u8FD4\u56DE\u7684\u679A\u4E3E\u5E38\u91CF\u7684\u540D\u79F0\u3002\n@return \u8FD4\u56DE\u5E26\u6709\u6307\u5B9A\u540D\u79F0\u7684\u679A\u4E3E\u5E38\u91CF\n@throws \u5982\u679C\u8BE5\u679A\u4E3E\u7C7B\u578B\u6CA1\u6709\u5E26\u6709\u6307\u5B9A\u540D\u79F0\u7684\u5E38\u91CF, \n\u5219\u629B\u51FA IllegalArgumentException\n@throws \u5982\u679C\u53C2\u6570\u4E3A\u7A7A\u503C, \u5219\u629B\u51FA NullPointerException 17.71 +doclet.enum_valueof_doc=\n\u8FD4\u56DE\u5E26\u6709\u6307\u5B9A\u540D\u79F0\u7684\u8BE5\u7C7B\u578B\u7684\u679A\u4E3E\u5E38\u91CF\u3002\n\u5B57\u7B26\u4E32\u5FC5\u987B\u4E0E\u7528\u4E8E\u58F0\u660E\u8BE5\u7C7B\u578B\u7684\u679A\u4E3E\u5E38\u91CF\u7684\n\u6807\u8BC6\u7B26<i>\u5B8C\u5168</i>\u5339\u914D\u3002(\u4E0D\u5141\u8BB8\u6709\u591A\u4F59\n\u7684\u7A7A\u683C\u5B57\u7B26\u3002)\n\n@param name \u8981\u8FD4\u56DE\u7684\u679A\u4E3E\u5E38\u91CF\u7684\u540D\u79F0\u3002\n@\u8FD4\u56DE\u5E26\u6709\u6307\u5B9A\u540D\u79F0\u7684\u679A\u4E3E\u5E38\u91CF\n@\u5982\u679C\u8BE5\u679A\u4E3E\u7C7B\u578B\u6CA1\u6709\u5E26\u6709\u6307\u5B9A\u540D\u79F0\u7684\u5E38\u91CF, \n\u5219\u629B\u51FA IllegalArgumentException\n@\u5982\u679C\u53C2\u6570\u4E3A\u7A7A\u503C, \u5219\u629B\u51FA NullPointerException
18.1 --- a/src/share/classes/com/sun/tools/doclint/Checker.java Thu Mar 21 10:43:39 2013 -0700 18.2 +++ b/src/share/classes/com/sun/tools/doclint/Checker.java Tue Mar 26 12:07:45 2013 -0700 18.3 @@ -25,20 +25,18 @@ 18.4 18.5 package com.sun.tools.doclint; 18.6 18.7 -import com.sun.source.doctree.LiteralTree; 18.8 -import java.util.regex.Matcher; 18.9 -import com.sun.source.doctree.LinkTree; 18.10 +import java.io.IOException; 18.11 +import java.io.StringWriter; 18.12 import java.net.URI; 18.13 -import java.util.regex.Pattern; 18.14 -import java.io.IOException; 18.15 -import com.sun.tools.javac.tree.DocPretty; 18.16 -import java.io.StringWriter; 18.17 +import java.net.URISyntaxException; 18.18 import java.util.Deque; 18.19 import java.util.EnumSet; 18.20 import java.util.HashSet; 18.21 import java.util.LinkedList; 18.22 import java.util.List; 18.23 import java.util.Set; 18.24 +import java.util.regex.Matcher; 18.25 +import java.util.regex.Pattern; 18.26 18.27 import javax.lang.model.element.Element; 18.28 import javax.lang.model.element.ElementKind; 18.29 @@ -52,12 +50,15 @@ 18.30 import com.sun.source.doctree.AttributeTree; 18.31 import com.sun.source.doctree.AuthorTree; 18.32 import com.sun.source.doctree.DocCommentTree; 18.33 +import com.sun.source.doctree.DocRootTree; 18.34 import com.sun.source.doctree.DocTree; 18.35 import com.sun.source.doctree.EndElementTree; 18.36 import com.sun.source.doctree.EntityTree; 18.37 import com.sun.source.doctree.ErroneousTree; 18.38 import com.sun.source.doctree.IdentifierTree; 18.39 import com.sun.source.doctree.InheritDocTree; 18.40 +import com.sun.source.doctree.LinkTree; 18.41 +import com.sun.source.doctree.LiteralTree; 18.42 import com.sun.source.doctree.ParamTree; 18.43 import com.sun.source.doctree.ReferenceTree; 18.44 import com.sun.source.doctree.ReturnTree; 18.45 @@ -67,11 +68,12 @@ 18.46 import com.sun.source.doctree.StartElementTree; 18.47 import com.sun.source.doctree.TextTree; 18.48 import com.sun.source.doctree.ThrowsTree; 18.49 +import com.sun.source.doctree.ValueTree; 18.50 import com.sun.source.doctree.VersionTree; 18.51 import com.sun.source.util.DocTreeScanner; 18.52 import com.sun.source.util.TreePath; 18.53 import com.sun.tools.doclint.HtmlTag.AttrKind; 18.54 -import java.net.URISyntaxException; 18.55 +import com.sun.tools.javac.tree.DocPretty; 18.56 import static com.sun.tools.doclint.Messages.Group.*; 18.57 18.58 18.59 @@ -95,6 +97,7 @@ 18.60 public enum Flag { 18.61 TABLE_HAS_CAPTION, 18.62 HAS_ELEMENT, 18.63 + HAS_INLINE_TAG, 18.64 HAS_TEXT, 18.65 REPORTED_BAD_INLINE 18.66 } 18.67 @@ -418,7 +421,8 @@ 18.68 } 18.69 if (t.flags.contains(HtmlTag.Flag.EXPECT_CONTENT) 18.70 && !top.flags.contains(Flag.HAS_TEXT) 18.71 - && !top.flags.contains(Flag.HAS_ELEMENT)) { 18.72 + && !top.flags.contains(Flag.HAS_ELEMENT) 18.73 + && !top.flags.contains(Flag.HAS_INLINE_TAG)) { 18.74 env.messages.warning(HTML, tree, "dc.tag.empty", treeName); 18.75 } 18.76 tagStack.pop(); 18.77 @@ -571,7 +575,14 @@ 18.78 } 18.79 18.80 @Override 18.81 + public Void visitDocRoot(DocRootTree tree, Void ignore) { 18.82 + markEnclosingTag(Flag.HAS_INLINE_TAG); 18.83 + return super.visitDocRoot(tree, ignore); 18.84 + } 18.85 + 18.86 + @Override 18.87 public Void visitInheritDoc(InheritDocTree tree, Void ignore) { 18.88 + markEnclosingTag(Flag.HAS_INLINE_TAG); 18.89 // TODO: verify on overridden method 18.90 foundInheritDoc = true; 18.91 return super.visitInheritDoc(tree, ignore); 18.92 @@ -579,6 +590,7 @@ 18.93 18.94 @Override 18.95 public Void visitLink(LinkTree tree, Void ignore) { 18.96 + markEnclosingTag(Flag.HAS_INLINE_TAG); 18.97 // simulate inline context on tag stack 18.98 HtmlTag t = (tree.getKind() == DocTree.Kind.LINK) 18.99 ? HtmlTag.CODE : HtmlTag.SPAN; 18.100 @@ -592,6 +604,7 @@ 18.101 18.102 @Override 18.103 public Void visitLiteral(LiteralTree tree, Void ignore) { 18.104 + markEnclosingTag(Flag.HAS_INLINE_TAG); 18.105 if (tree.getKind() == DocTree.Kind.CODE) { 18.106 for (TagStackItem tsi: tagStack) { 18.107 if (tsi.tag == HtmlTag.CODE) { 18.108 @@ -746,6 +759,12 @@ 18.109 } 18.110 18.111 @Override 18.112 + public Void visitValue(ValueTree tree, Void ignore) { 18.113 + markEnclosingTag(Flag.HAS_INLINE_TAG); 18.114 + return super.visitValue(tree, ignore); 18.115 + } 18.116 + 18.117 + @Override 18.118 public Void visitVersion(VersionTree tree, Void ignore) { 18.119 warnIfEmpty(tree, tree.getBody()); 18.120 return super.visitVersion(tree, ignore);
19.1 --- a/src/share/classes/com/sun/tools/javac/Server.java Thu Mar 21 10:43:39 2013 -0700 19.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 19.3 @@ -1,197 +0,0 @@ 19.4 -/* 19.5 - * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. 19.6 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 19.7 - * 19.8 - * This code is free software; you can redistribute it and/or modify it 19.9 - * under the terms of the GNU General Public License version 2 only, as 19.10 - * published by the Free Software Foundation. Oracle designates this 19.11 - * particular file as subject to the "Classpath" exception as provided 19.12 - * by Oracle in the LICENSE file that accompanied this code. 19.13 - * 19.14 - * This code is distributed in the hope that it will be useful, but WITHOUT 19.15 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 19.16 - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 19.17 - * version 2 for more details (a copy is included in the LICENSE file that 19.18 - * accompanied this code). 19.19 - * 19.20 - * You should have received a copy of the GNU General Public License version 19.21 - * 2 along with this work; if not, write to the Free Software Foundation, 19.22 - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 19.23 - * 19.24 - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 19.25 - * or visit www.oracle.com if you need additional information or have any 19.26 - * questions. 19.27 - */ 19.28 - 19.29 -package com.sun.tools.javac; 19.30 - 19.31 -import java.io.*; 19.32 -import java.net.*; 19.33 -import java.util.*; 19.34 -import java.util.concurrent.*; 19.35 -import java.util.logging.Logger; 19.36 -import javax.tools.*; 19.37 - 19.38 -/** 19.39 - * Java Compiler Server. Can be used to speed up a set of (small) 19.40 - * compilation tasks by caching jar files between compilations. 19.41 - * 19.42 - * <p><b>This is NOT part of any supported API. 19.43 - * If you write code that depends on this, you do so at your own 19.44 - * risk. This code and its internal interfaces are subject to change 19.45 - * or deletion without notice.</b></p> 19.46 - * 19.47 - * @author Peter von der Ahé 19.48 - * @since 1.6 19.49 - */ 19.50 -@jdk.Supported(false) 19.51 -class Server implements Runnable { 19.52 - private final BufferedReader in; 19.53 - private final OutputStream out; 19.54 - private final boolean isSocket; 19.55 - private static final JavaCompiler tool = ToolProvider.getSystemJavaCompiler(); 19.56 - private static final Logger logger = Logger.getLogger("com.sun.tools.javac"); 19.57 - static class CwdFileManager extends ForwardingJavaFileManager<JavaFileManager> { 19.58 - String cwd; 19.59 - CwdFileManager(JavaFileManager fileManager) { 19.60 - super(fileManager); 19.61 - } 19.62 - String getAbsoluteName(String name) { 19.63 - if (new File(name).isAbsolute()) { 19.64 - return name; 19.65 - } else { 19.66 - return new File(cwd,name).getPath(); 19.67 - } 19.68 - } 19.69 -// public JavaFileObject getFileForInput(String name) 19.70 -// throws IOException 19.71 -// { 19.72 -// return super.getFileForInput(getAbsoluteName(name)); 19.73 -// } 19.74 - } 19.75 - // static CwdFileManager fm = new CwdFileManager(tool.getStandardFileManager()); 19.76 - static final StandardJavaFileManager fm = tool.getStandardFileManager(null, null, null); 19.77 - static { 19.78 - // Use the same file manager for all compilations. This will 19.79 - // cache jar files in the standard file manager. Use 19.80 - // tool.getStandardFileManager().close() to release. 19.81 - // FIXME tool.setFileManager(fm); 19.82 - logger.setLevel(java.util.logging.Level.SEVERE); 19.83 - } 19.84 - private Server(BufferedReader in, OutputStream out, boolean isSocket) { 19.85 - this.in = in; 19.86 - this.out = out; 19.87 - this.isSocket = isSocket; 19.88 - } 19.89 - private Server(BufferedReader in, OutputStream out) { 19.90 - this(in, out, false); 19.91 - } 19.92 - private Server(Socket socket) throws IOException, UnsupportedEncodingException { 19.93 - this(new BufferedReader(new InputStreamReader(socket.getInputStream(), "utf-8")), 19.94 - socket.getOutputStream(), 19.95 - true); 19.96 - } 19.97 - public void run() { 19.98 - List<String> args = new ArrayList<String>(); 19.99 - int res = -1; 19.100 - try { 19.101 - String line = null; 19.102 - try { 19.103 - line = in.readLine(); 19.104 - } catch (IOException e) { 19.105 - System.err.println(e.getLocalizedMessage()); 19.106 - System.exit(0); 19.107 - line = null; 19.108 - } 19.109 - // fm.cwd=null; 19.110 - String cwd = null; 19.111 - while (line != null) { 19.112 - if (line.startsWith("PWD:")) { 19.113 - cwd = line.substring(4); 19.114 - } else if (line.equals("END")) { 19.115 - break; 19.116 - } else if (!"-XDstdout".equals(line)) { 19.117 - args.add(line); 19.118 - } 19.119 - try { 19.120 - line = in.readLine(); 19.121 - } catch (IOException e) { 19.122 - System.err.println(e.getLocalizedMessage()); 19.123 - System.exit(0); 19.124 - line = null; 19.125 - } 19.126 - } 19.127 - Iterable<File> path = cwd == null ? null : Arrays.<File>asList(new File(cwd)); 19.128 - // try { in.close(); } catch (IOException e) {} 19.129 - long msec = System.currentTimeMillis(); 19.130 - try { 19.131 - synchronized (tool) { 19.132 - for (StandardLocation location : StandardLocation.values()) 19.133 - fm.setLocation(location, path); 19.134 - res = compile(out, fm, args); 19.135 - // FIXME res = tool.run((InputStream)null, null, out, args.toArray(new String[args.size()])); 19.136 - } 19.137 - } catch (Throwable ex) { 19.138 - logger.log(java.util.logging.Level.SEVERE, args.toString(), ex); 19.139 - PrintWriter p = new PrintWriter(out, true); 19.140 - ex.printStackTrace(p); 19.141 - p.flush(); 19.142 - } 19.143 - if (res >= 3) { 19.144 - logger.severe(String.format("problem: %s", args)); 19.145 - } else { 19.146 - logger.info(String.format("success: %s", args)); 19.147 - } 19.148 - // res = compile(args.toArray(new String[args.size()]), out); 19.149 - msec -= System.currentTimeMillis(); 19.150 - logger.info(String.format("Real time: %sms", -msec)); 19.151 - } finally { 19.152 - if (!isSocket) { 19.153 - try { in.close(); } catch (IOException e) {} 19.154 - } 19.155 - try { 19.156 - out.write(String.format("EXIT: %s%n", res).getBytes()); 19.157 - } catch (IOException ex) { 19.158 - logger.log(java.util.logging.Level.SEVERE, args.toString(), ex); 19.159 - } 19.160 - try { 19.161 - out.flush(); 19.162 - out.close(); 19.163 - } catch (IOException ex) { 19.164 - logger.log(java.util.logging.Level.SEVERE, args.toString(), ex); 19.165 - } 19.166 - logger.info(String.format("EXIT: %s", res)); 19.167 - } 19.168 - } 19.169 - public static void main(String... args) throws FileNotFoundException { 19.170 - if (args.length == 2) { 19.171 - for (;;) { 19.172 - throw new UnsupportedOperationException("TODO"); 19.173 -// BufferedReader in = new BufferedReader(new FileReader(args[0])); 19.174 -// PrintWriter out = new PrintWriter(args[1]); 19.175 -// new Server(in, out).run(); 19.176 -// System.out.flush(); 19.177 -// System.err.flush(); 19.178 - } 19.179 - } else { 19.180 - ExecutorService pool = Executors.newCachedThreadPool(); 19.181 - try 19.182 - { 19.183 - ServerSocket socket = new ServerSocket(0xcafe, -1, null); 19.184 - for (;;) { 19.185 - pool.execute(new Server(socket.accept())); 19.186 - } 19.187 - } 19.188 - catch (IOException e) { 19.189 - System.err.format("Error: %s%n", e.getLocalizedMessage()); 19.190 - pool.shutdown(); 19.191 - } 19.192 - } 19.193 - } 19.194 - 19.195 - private int compile(OutputStream out, StandardJavaFileManager fm, List<String> args) { 19.196 - // FIXME parse args and use getTask 19.197 - // System.err.println("Running " + args); 19.198 - return tool.run(null, null, out, args.toArray(new String[args.size()])); 19.199 - } 19.200 -}
20.1 --- a/src/share/classes/com/sun/tools/javac/code/Printer.java Thu Mar 21 10:43:39 2013 -0700 20.2 +++ b/src/share/classes/com/sun/tools/javac/code/Printer.java Tue Mar 26 12:07:45 2013 -0700 20.3 @@ -311,9 +311,9 @@ 20.4 } 20.5 if (args.head.unannotatedType().getKind() == TypeKind.ARRAY) { 20.6 buf.append(visit(((ArrayType) args.head.unannotatedType()).elemtype, locale)); 20.7 - if (args.head.getAnnotations().nonEmpty()) { 20.8 + if (args.head.getAnnotationMirrors().nonEmpty()) { 20.9 buf.append(' '); 20.10 - buf.append(args.head.getAnnotations()); 20.11 + buf.append(args.head.getAnnotationMirrors()); 20.12 buf.append(' '); 20.13 } 20.14 buf.append("...");
21.1 --- a/src/share/classes/com/sun/tools/javac/code/Symbol.java Thu Mar 21 10:43:39 2013 -0700 21.2 +++ b/src/share/classes/com/sun/tools/javac/code/Symbol.java Tue Mar 26 12:07:45 2013 -0700 21.3 @@ -483,12 +483,12 @@ 21.4 */ 21.5 @Deprecated 21.6 public <A extends java.lang.annotation.Annotation> A getAnnotation(Class<A> annoType) { 21.7 - return JavacElements.getAnnotation(this, annoType); 21.8 + return JavacAnnoConstructs.getAnnotation(this, annoType); 21.9 } 21.10 21.11 // This method is part of the javax.lang.model API, do not use this in javac code. 21.12 public <A extends java.lang.annotation.Annotation> A[] getAnnotationsByType(Class<A> annoType) { 21.13 - return JavacElements.getAnnotations(this, annoType); 21.14 + return JavacAnnoConstructs.getAnnotations(this, annoType); 21.15 } 21.16 21.17 // TODO: getEnclosedElements should return a javac List, fix in FilteredMemberList 21.18 @@ -935,11 +935,12 @@ 21.19 } 21.20 21.21 /** 21.22 - * @deprecated this method should never be used by javac internally. 21.23 + * Since this method works in terms of the runtime representation 21.24 + * of annotations, it should never be used by javac internally. 21.25 */ 21.26 - @Override @Deprecated 21.27 + @Override 21.28 public <A extends java.lang.annotation.Annotation> A getAnnotation(Class<A> annoType) { 21.29 - return JavacElements.getAnnotation(this, annoType); 21.30 + return JavacAnnoConstructs.getAnnotation(this, annoType); 21.31 } 21.32 21.33 public <R, P> R accept(ElementVisitor<R, P> v, P p) { 21.34 @@ -1444,6 +1445,10 @@ 21.35 return v.visitMethodSymbol(this, p); 21.36 } 21.37 21.38 + public Type getReceiverType() { 21.39 + return asType().getReceiverType(); 21.40 + } 21.41 + 21.42 public Type getReturnType() { 21.43 return asType().getReturnType(); 21.44 }
22.1 --- a/src/share/classes/com/sun/tools/javac/code/Type.java Thu Mar 21 10:43:39 2013 -0700 22.2 +++ b/src/share/classes/com/sun/tools/javac/code/Type.java Tue Mar 26 12:07:45 2013 -0700 22.3 @@ -25,6 +25,9 @@ 22.4 22.5 package com.sun.tools.javac.code; 22.6 22.7 +import com.sun.tools.javac.model.JavacAnnoConstructs; 22.8 +import com.sun.tools.javac.model.JavacTypes; 22.9 +import java.lang.annotation.Annotation; 22.10 import java.util.Collections; 22.11 import java.util.EnumMap; 22.12 import java.util.EnumSet; 22.13 @@ -246,6 +249,10 @@ 22.14 return this; 22.15 } 22.16 22.17 + public boolean isAnnotated() { 22.18 + return false; 22.19 + } 22.20 + 22.21 /** 22.22 * If this is an annotated type, return the underlying type. 22.23 * Otherwise, return the type itself. 22.24 @@ -254,6 +261,23 @@ 22.25 return this; 22.26 } 22.27 22.28 + @Override 22.29 + public List<? extends Attribute.TypeCompound> getAnnotationMirrors() { 22.30 + return List.nil(); 22.31 + } 22.32 + 22.33 + @Override 22.34 + public <A extends Annotation> A getAnnotation(Class<A> annotationType) { 22.35 + return null; 22.36 + } 22.37 + 22.38 + @Override 22.39 + public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationType) { 22.40 + @SuppressWarnings("unchecked") 22.41 + A[] tmp = (A[]) java.lang.reflect.Array.newInstance(annotationType, 0); 22.42 + return tmp; 22.43 + } 22.44 + 22.45 /** Return the base types of a list of types. 22.46 */ 22.47 public static List<Type> baseTypes(List<Type> ts) { 22.48 @@ -350,8 +374,8 @@ 22.49 } 22.50 if (args.head.unannotatedType().tag == ARRAY) { 22.51 buf.append(((ArrayType)args.head.unannotatedType()).elemtype); 22.52 - if (args.head.getAnnotations().nonEmpty()) { 22.53 - buf.append(args.head.getAnnotations()); 22.54 + if (args.head.getAnnotationMirrors().nonEmpty()) { 22.55 + buf.append(args.head.getAnnotationMirrors()); 22.56 } 22.57 buf.append("..."); 22.58 } else { 22.59 @@ -362,7 +386,6 @@ 22.60 22.61 /** Access methods. 22.62 */ 22.63 - public List<? extends AnnotationMirror> getAnnotations() { return List.nil(); } 22.64 public List<Type> getTypeArguments() { return List.nil(); } 22.65 public Type getEnclosingType() { return null; } 22.66 public List<Type> getParameterTypes() { return List.nil(); } 22.67 @@ -1539,7 +1562,12 @@ 22.68 } 22.69 22.70 public static class AnnotatedType extends Type 22.71 - implements javax.lang.model.type.AnnotatedType { 22.72 + implements 22.73 + javax.lang.model.type.ArrayType, 22.74 + javax.lang.model.type.DeclaredType, 22.75 + javax.lang.model.type.PrimitiveType, 22.76 + javax.lang.model.type.TypeVariable, 22.77 + javax.lang.model.type.WildcardType { 22.78 /** The type annotations on this type. 22.79 */ 22.80 public List<Attribute.TypeCompound> typeAnnotations; 22.81 @@ -1552,7 +1580,7 @@ 22.82 super(underlyingType.tag, underlyingType.tsym); 22.83 this.typeAnnotations = List.nil(); 22.84 this.underlyingType = underlyingType; 22.85 - Assert.check(underlyingType.getKind() != TypeKind.ANNOTATED, 22.86 + Assert.check(!underlyingType.isAnnotated(), 22.87 "Can't annotate already annotated type: " + underlyingType); 22.88 } 22.89 22.90 @@ -1561,24 +1589,34 @@ 22.91 super(underlyingType.tag, underlyingType.tsym); 22.92 this.typeAnnotations = typeAnnotations; 22.93 this.underlyingType = underlyingType; 22.94 - Assert.check(underlyingType.getKind() != TypeKind.ANNOTATED, 22.95 + Assert.check(!underlyingType.isAnnotated(), 22.96 "Can't annotate already annotated type: " + underlyingType + 22.97 "; adding: " + typeAnnotations); 22.98 } 22.99 22.100 @Override 22.101 - public TypeKind getKind() { 22.102 - return TypeKind.ANNOTATED; 22.103 + public boolean isAnnotated() { 22.104 + return true; 22.105 } 22.106 22.107 @Override 22.108 - public List<? extends AnnotationMirror> getAnnotations() { 22.109 + public List<? extends Attribute.TypeCompound> getAnnotationMirrors() { 22.110 return typeAnnotations; 22.111 } 22.112 22.113 @Override 22.114 - public TypeMirror getUnderlyingType() { 22.115 - return underlyingType; 22.116 + public <A extends Annotation> A getAnnotation(Class<A> annotationType) { 22.117 + return JavacAnnoConstructs.getAnnotation(this, annotationType); 22.118 + } 22.119 + 22.120 + @Override 22.121 + public <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationType) { 22.122 + return JavacAnnoConstructs.getAnnotationsByType(this, annotationType); 22.123 + } 22.124 + 22.125 + @Override 22.126 + public TypeKind getKind() { 22.127 + return underlyingType.getKind(); 22.128 } 22.129 22.130 @Override 22.131 @@ -1593,7 +1631,7 @@ 22.132 22.133 @Override 22.134 public <R, P> R accept(TypeVisitor<R, P> v, P p) { 22.135 - return v.visitAnnotated(this, p); 22.136 + return underlyingType.accept(v, p); 22.137 } 22.138 22.139 @Override
23.1 --- a/src/share/classes/com/sun/tools/javac/code/TypeAnnotations.java Thu Mar 21 10:43:39 2013 -0700 23.2 +++ b/src/share/classes/com/sun/tools/javac/code/TypeAnnotations.java Tue Mar 26 12:07:45 2013 -0700 23.3 @@ -233,7 +233,7 @@ 23.4 Type.ArrayType arType; 23.5 { 23.6 Type touse = type; 23.7 - if (type.getKind() == TypeKind.ANNOTATED) { 23.8 + if (type.isAnnotated()) { 23.9 Type.AnnotatedType atype = (Type.AnnotatedType)type; 23.10 toreturn = new Type.AnnotatedType(atype.underlyingType); 23.11 ((Type.AnnotatedType)toreturn).typeAnnotations = atype.typeAnnotations; 23.12 @@ -252,7 +252,7 @@ 23.13 ListBuffer<TypePathEntry> depth = ListBuffer.lb(); 23.14 depth = depth.append(TypePathEntry.ARRAY); 23.15 while (arType.elemtype.hasTag(TypeTag.ARRAY)) { 23.16 - if (arType.elemtype.getKind() == TypeKind.ANNOTATED) { 23.17 + if (arType.elemtype.isAnnotated()) { 23.18 Type.AnnotatedType aelemtype = (Type.AnnotatedType) arType.elemtype; 23.19 Type.AnnotatedType newAT = new Type.AnnotatedType(aelemtype.underlyingType); 23.20 tomodify.elemtype = newAT;
24.1 --- a/src/share/classes/com/sun/tools/javac/code/Types.java Thu Mar 21 10:43:39 2013 -0700 24.2 +++ b/src/share/classes/com/sun/tools/javac/code/Types.java Tue Mar 26 12:07:45 2013 -0700 24.3 @@ -1178,6 +1178,17 @@ 24.4 protected boolean containsTypes(List<Type> ts1, List<Type> ts2) { 24.5 return isSameTypes(ts1, ts2, true); 24.6 } 24.7 + 24.8 + @Override 24.9 + public Boolean visitWildcardType(WildcardType t, Type s) { 24.10 + if (!s.hasTag(WILDCARD)) { 24.11 + return false; 24.12 + } else { 24.13 + WildcardType t2 = (WildcardType)s; 24.14 + return t.kind == t2.kind && 24.15 + isSameType(t.type, t2.type, true); 24.16 + } 24.17 + } 24.18 }; 24.19 // </editor-fold> 24.20 24.21 @@ -1418,23 +1429,10 @@ 24.22 } 24.23 } 24.24 24.25 - if (t.isCompound()) { 24.26 - Warner oldWarner = warnStack.head; 24.27 - warnStack.head = noWarnings; 24.28 - if (!visit(supertype(t), s)) 24.29 - return false; 24.30 - for (Type intf : interfaces(t)) { 24.31 - if (!visit(intf, s)) 24.32 - return false; 24.33 - } 24.34 - if (warnStack.head.hasLint(LintCategory.UNCHECKED)) 24.35 - oldWarner.warn(LintCategory.UNCHECKED); 24.36 - return true; 24.37 - } 24.38 - 24.39 - if (s.isCompound()) { 24.40 - // call recursively to reuse the above code 24.41 - return visitClassType((ClassType)s, t); 24.42 + if (t.isCompound() || s.isCompound()) { 24.43 + return !t.isCompound() ? 24.44 + visitIntersectionType((IntersectionClassType)s, t, true) : 24.45 + visitIntersectionType((IntersectionClassType)t, s, false); 24.46 } 24.47 24.48 if (s.tag == CLASS || s.tag == ARRAY) { 24.49 @@ -1512,6 +1510,18 @@ 24.50 return false; 24.51 } 24.52 24.53 + boolean visitIntersectionType(IntersectionClassType ict, Type s, boolean reverse) { 24.54 + Warner warn = noWarnings; 24.55 + for (Type c : ict.getComponents()) { 24.56 + warn.clear(); 24.57 + if (reverse ? !isCastable(s, c, warn) : !isCastable(c, s, warn)) 24.58 + return false; 24.59 + } 24.60 + if (warn.hasLint(LintCategory.UNCHECKED)) 24.61 + warnStack.head.warn(LintCategory.UNCHECKED); 24.62 + return true; 24.63 + } 24.64 + 24.65 @Override 24.66 public Boolean visitArrayType(ArrayType t, Type s) { 24.67 switch (s.tag) { 24.68 @@ -2091,7 +2101,7 @@ 24.69 @Override 24.70 public Type visitAnnotatedType(AnnotatedType t, Boolean recurse) { 24.71 Type erased = erasure(t.underlyingType, recurse); 24.72 - if (erased.getKind() == TypeKind.ANNOTATED) { 24.73 + if (erased.isAnnotated()) { 24.74 // This can only happen when the underlying type is a 24.75 // type variable and the upper bound of it is annotated. 24.76 // The annotation on the type variable overrides the one 24.77 @@ -3889,11 +3899,18 @@ 24.78 } 24.79 24.80 private boolean giveWarning(Type from, Type to) { 24.81 - Type subFrom = asSub(from, to.tsym); 24.82 - return to.isParameterized() && 24.83 - (!(isUnbounded(to) || 24.84 - isSubtype(from, to) || 24.85 - ((subFrom != null) && containsType(to.allparams(), subFrom.allparams())))); 24.86 + List<Type> bounds = to.isCompound() ? 24.87 + ((IntersectionClassType)to).getComponents() : List.of(to); 24.88 + for (Type b : bounds) { 24.89 + Type subFrom = asSub(from, b.tsym); 24.90 + if (b.isParameterized() && 24.91 + (!(isUnbounded(b) || 24.92 + isSubtype(from, b) || 24.93 + ((subFrom != null) && containsType(b.allparams(), subFrom.allparams()))))) { 24.94 + return true; 24.95 + } 24.96 + } 24.97 + return false; 24.98 } 24.99 24.100 private List<Type> superClosure(Type t, Type s) {
25.1 --- a/src/share/classes/com/sun/tools/javac/comp/Attr.java Thu Mar 21 10:43:39 2013 -0700 25.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Attr.java Tue Mar 26 12:07:45 2013 -0700 25.3 @@ -3362,7 +3362,7 @@ 25.4 Type normOuter = site; 25.5 if (normOuter.hasTag(CLASS)) { 25.6 normOuter = types.asEnclosingSuper(site, ownOuter.tsym); 25.7 - if (site.getKind() == TypeKind.ANNOTATED) { 25.8 + if (site.isAnnotated()) { 25.9 // Propagate any type annotations. 25.10 // TODO: should asEnclosingSuper do this? 25.11 // Note that the type annotations in site will be updated 25.12 @@ -4009,8 +4009,7 @@ 25.13 // Enums may not be extended by source-level classes 25.14 if (st.tsym != null && 25.15 ((st.tsym.flags_field & Flags.ENUM) != 0) && 25.16 - ((c.flags_field & (Flags.ENUM | Flags.COMPOUND)) == 0) && 25.17 - !target.compilerBootstrap(c)) { 25.18 + ((c.flags_field & (Flags.ENUM | Flags.COMPOUND)) == 0)) { 25.19 log.error(env.tree.pos(), "enum.types.not.extensible"); 25.20 } 25.21 attribClassBody(env, c); 25.22 @@ -4279,7 +4278,7 @@ 25.23 validateAnnotatedType(errtree, type); 25.24 if (type.tsym != null && 25.25 type.tsym.isStatic() && 25.26 - type.getAnnotations().nonEmpty()) { 25.27 + type.getAnnotationMirrors().nonEmpty()) { 25.28 // Enclosing static classes cannot have type annotations. 25.29 log.error(errtree.pos(), "cant.annotate.static.class"); 25.30 }
26.1 --- a/src/share/classes/com/sun/tools/javac/comp/Check.java Thu Mar 21 10:43:39 2013 -0700 26.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Check.java Tue Mar 26 12:07:45 2013 -0700 26.3 @@ -2779,25 +2779,17 @@ 26.4 } 26.5 26.6 private void validateTarget(Symbol container, Symbol contained, DiagnosticPosition pos) { 26.7 - Attribute.Array containedTarget = getAttributeTargetAttribute(contained); 26.8 - 26.9 - // If contained has no Target, we are done 26.10 - if (containedTarget == null) { 26.11 - return; 26.12 - } 26.13 - 26.14 - // If contained has Target m1, container must have a Target 26.15 - // annotation, m2, and m2 must be a subset of m1. (This is 26.16 - // trivially true if contained has no target as per above). 26.17 - 26.18 - // contained has target, but container has not, error 26.19 + // The set of targets the container is applicable to must be a subset 26.20 + // (with respect to annotation target semantics) of the set of targets 26.21 + // the contained is applicable to. The target sets may be implicit or 26.22 + // explicit. 26.23 + 26.24 + Set<Name> containerTargets; 26.25 Attribute.Array containerTarget = getAttributeTargetAttribute(container); 26.26 if (containerTarget == null) { 26.27 - log.error(pos, "invalid.repeatable.annotation.incompatible.target", container, contained); 26.28 - return; 26.29 - } 26.30 - 26.31 - Set<Name> containerTargets = new HashSet<Name>(); 26.32 + containerTargets = getDefaultTargetSet(); 26.33 + } else { 26.34 + containerTargets = new HashSet<Name>(); 26.35 for (Attribute app : containerTarget.values) { 26.36 if (!(app instanceof Attribute.Enum)) { 26.37 continue; // recovery 26.38 @@ -2805,8 +2797,14 @@ 26.39 Attribute.Enum e = (Attribute.Enum)app; 26.40 containerTargets.add(e.value.name); 26.41 } 26.42 - 26.43 - Set<Name> containedTargets = new HashSet<Name>(); 26.44 + } 26.45 + 26.46 + Set<Name> containedTargets; 26.47 + Attribute.Array containedTarget = getAttributeTargetAttribute(contained); 26.48 + if (containedTarget == null) { 26.49 + containedTargets = getDefaultTargetSet(); 26.50 + } else { 26.51 + containedTargets = new HashSet<Name>(); 26.52 for (Attribute app : containedTarget.values) { 26.53 if (!(app instanceof Attribute.Enum)) { 26.54 continue; // recovery 26.55 @@ -2814,20 +2812,42 @@ 26.56 Attribute.Enum e = (Attribute.Enum)app; 26.57 containedTargets.add(e.value.name); 26.58 } 26.59 - 26.60 - if (!isTargetSubset(containedTargets, containerTargets)) { 26.61 + } 26.62 + 26.63 + if (!isTargetSubsetOf(containerTargets, containedTargets)) { 26.64 log.error(pos, "invalid.repeatable.annotation.incompatible.target", container, contained); 26.65 } 26.66 } 26.67 26.68 - /** Checks that t is a subset of s, with respect to ElementType 26.69 + /* get a set of names for the default target */ 26.70 + private Set<Name> getDefaultTargetSet() { 26.71 + if (defaultTargets == null) { 26.72 + Set<Name> targets = new HashSet<Name>(); 26.73 + targets.add(names.ANNOTATION_TYPE); 26.74 + targets.add(names.CONSTRUCTOR); 26.75 + targets.add(names.FIELD); 26.76 + targets.add(names.LOCAL_VARIABLE); 26.77 + targets.add(names.METHOD); 26.78 + targets.add(names.PACKAGE); 26.79 + targets.add(names.PARAMETER); 26.80 + targets.add(names.TYPE); 26.81 + 26.82 + defaultTargets = java.util.Collections.unmodifiableSet(targets); 26.83 + } 26.84 + 26.85 + return defaultTargets; 26.86 + } 26.87 + private Set<Name> defaultTargets; 26.88 + 26.89 + 26.90 + /** Checks that s is a subset of t, with respect to ElementType 26.91 * semantics, specifically {ANNOTATION_TYPE} is a subset of {TYPE} 26.92 */ 26.93 - private boolean isTargetSubset(Set<Name> s, Set<Name> t) { 26.94 - // Check that all elements in t are present in s 26.95 - for (Name n2 : t) { 26.96 + private boolean isTargetSubsetOf(Set<Name> s, Set<Name> t) { 26.97 + // Check that all elements in s are present in t 26.98 + for (Name n2 : s) { 26.99 boolean currentElementOk = false; 26.100 - for (Name n1 : s) { 26.101 + for (Name n1 : t) { 26.102 if (n1 == n2) { 26.103 currentElementOk = true; 26.104 break;
27.1 --- a/src/share/classes/com/sun/tools/javac/comp/DeferredAttr.java Thu Mar 21 10:43:39 2013 -0700 27.2 +++ b/src/share/classes/com/sun/tools/javac/comp/DeferredAttr.java Tue Mar 26 12:07:45 2013 -0700 27.3 @@ -229,9 +229,9 @@ 27.4 public Type complete(DeferredType dt, ResultInfo resultInfo, DeferredAttrContext deferredAttrContext) { 27.5 switch (deferredAttrContext.mode) { 27.6 case SPECULATIVE: 27.7 - Assert.check(dt.mode == null || 27.8 - (dt.mode == AttrMode.SPECULATIVE && 27.9 - dt.speculativeType(deferredAttrContext.msym, deferredAttrContext.phase).hasTag(NONE))); 27.10 + //Note: if a symbol is imported twice we might do two identical 27.11 + //speculative rounds... 27.12 + Assert.check(dt.mode == null || dt.mode == AttrMode.SPECULATIVE); 27.13 JCTree speculativeTree = attribSpeculative(dt.tree, dt.env, resultInfo); 27.14 dt.speculativeCache.put(deferredAttrContext.msym, speculativeTree, deferredAttrContext.phase); 27.15 return speculativeTree.type;
28.1 --- a/src/share/classes/com/sun/tools/javac/comp/Infer.java Thu Mar 21 10:43:39 2013 -0700 28.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Infer.java Tue Mar 26 12:07:45 2013 -0700 28.3 @@ -585,11 +585,7 @@ 28.4 Infer infer = inferenceContext.infer(); 28.5 for (Type b1 : uv.getBounds(InferenceBound.UPPER)) { 28.6 for (Type b2 : uv.getBounds(InferenceBound.LOWER)) { 28.7 - if (!inferenceContext.inferenceVars().contains(b1) && 28.8 - !inferenceContext.inferenceVars().contains(b2) && 28.9 - infer.types.asSuper(b2, b1.tsym) != null) { 28.10 - infer.types.isSubtypeUnchecked(inferenceContext.asFree(b2), inferenceContext.asFree(b1)); 28.11 - } 28.12 + infer.types.isSubtypeUnchecked(inferenceContext.asFree(b2), inferenceContext.asFree(b1)); 28.13 } 28.14 } 28.15 } 28.16 @@ -603,11 +599,7 @@ 28.17 Infer infer = inferenceContext.infer(); 28.18 for (Type b1 : uv.getBounds(InferenceBound.UPPER)) { 28.19 for (Type b2 : uv.getBounds(InferenceBound.EQ)) { 28.20 - if (!inferenceContext.inferenceVars().contains(b1) && 28.21 - !inferenceContext.inferenceVars().contains(b2) && 28.22 - infer.types.asSuper(b2, b1.tsym) != null) { 28.23 - infer.types.isSubtypeUnchecked(inferenceContext.asFree(b2), inferenceContext.asFree(b1)); 28.24 - } 28.25 + infer.types.isSubtypeUnchecked(inferenceContext.asFree(b2), inferenceContext.asFree(b1)); 28.26 } 28.27 } 28.28 } 28.29 @@ -621,10 +613,22 @@ 28.30 Infer infer = inferenceContext.infer(); 28.31 for (Type b1 : uv.getBounds(InferenceBound.EQ)) { 28.32 for (Type b2 : uv.getBounds(InferenceBound.LOWER)) { 28.33 - if (!inferenceContext.inferenceVars().contains(b1) && 28.34 - !inferenceContext.inferenceVars().contains(b2) && 28.35 - infer.types.asSuper(b2, b1.tsym) != null) { 28.36 - infer.types.isSubtypeUnchecked(inferenceContext.asFree(b2), inferenceContext.asFree(b1)); 28.37 + infer.types.isSubtypeUnchecked(inferenceContext.asFree(b2), inferenceContext.asFree(b1)); 28.38 + } 28.39 + } 28.40 + } 28.41 + }, 28.42 + /** 28.43 + * Given a bound set containing {@code alpha == S} and {@code alpha == T} 28.44 + * perform {@code S == T} (which could lead to new bounds). 28.45 + */ 28.46 + CROSS_EQ_EQ() { 28.47 + public void apply(UndetVar uv, InferenceContext inferenceContext, Warner warn) { 28.48 + Infer infer = inferenceContext.infer(); 28.49 + for (Type b1 : uv.getBounds(InferenceBound.EQ)) { 28.50 + for (Type b2 : uv.getBounds(InferenceBound.EQ)) { 28.51 + if (b1 != b2) { 28.52 + infer.types.isSameType(inferenceContext.asFree(b2), inferenceContext.asFree(b1)); 28.53 } 28.54 } 28.55 }
29.1 --- a/src/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java Thu Mar 21 10:43:39 2013 -0700 29.2 +++ b/src/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java Tue Mar 26 12:07:45 2013 -0700 29.3 @@ -1019,14 +1019,14 @@ 29.4 } else if (refSym.enclClass().isInterface()) { 29.5 return ClassFile.REF_invokeInterface; 29.6 } else { 29.7 - return ClassFile.REF_invokeVirtual; 29.8 + return (refSym.flags() & PRIVATE) != 0 ? 29.9 + ClassFile.REF_invokeSpecial : 29.10 + ClassFile.REF_invokeVirtual; 29.11 } 29.12 } 29.13 } 29.14 29.15 - // </editor-fold> 29.16 - 29.17 - // <editor-fold defaultstate="collapsed" desc="Lambda/reference analyzer">\ 29.18 + // <editor-fold defaultstate="collapsed" desc="Lambda/reference analyzer"> 29.19 /** 29.20 * This visitor collects information about translation of a lambda expression. 29.21 * More specifically, it keeps track of the enclosing contexts and captured locals 29.22 @@ -1293,9 +1293,16 @@ 29.23 return names.lambda.append(names.fromString("" + lambdaCount++)); 29.24 } 29.25 29.26 + /** 29.27 + * For a serializable lambda, generate a name which maximizes name 29.28 + * stability across deserialization. 29.29 + * @param owner 29.30 + * @return Name to use for the synthetic lambda method name 29.31 + */ 29.32 private Name serializedLambdaName(Symbol owner) { 29.33 StringBuilder buf = new StringBuilder(); 29.34 buf.append(names.lambda); 29.35 + // Append the name of the method enclosing the lambda. 29.36 String methodName = owner.name.toString(); 29.37 if (methodName.equals("<clinit>")) 29.38 methodName = "static"; 29.39 @@ -1303,9 +1310,18 @@ 29.40 methodName = "new"; 29.41 buf.append(methodName); 29.42 buf.append('$'); 29.43 - int methTypeHash = methodSig(owner.type).hashCode(); 29.44 - buf.append(Integer.toHexString(methTypeHash)); 29.45 + // Append a hash of the enclosing method signature to differentiate 29.46 + // overloaded enclosing methods. For lambdas enclosed in lambdas, 29.47 + // the generated lambda method will not have type yet, but the 29.48 + // enclosing method's name will have been generated with this same 29.49 + // method, so it will be unique and never be overloaded. 29.50 + if (owner.type != null) { 29.51 + int methTypeHash = methodSig(owner.type).hashCode(); 29.52 + buf.append(Integer.toHexString(methTypeHash)); 29.53 + } 29.54 buf.append('$'); 29.55 + // The above appended name components may not be unique, append a 29.56 + // count based on the above name components. 29.57 String temp = buf.toString(); 29.58 Integer count = serializableLambdaCounts.get(temp); 29.59 if (count == null) { 29.60 @@ -1619,16 +1635,16 @@ 29.61 * Translate a symbol of a given kind into something suitable for the 29.62 * synthetic lambda body 29.63 */ 29.64 - Symbol translate(String name, final Symbol sym, LambdaSymbolKind skind) { 29.65 + Symbol translate(Name name, final Symbol sym, LambdaSymbolKind skind) { 29.66 switch (skind) { 29.67 case CAPTURED_THIS: 29.68 return sym; // self represented 29.69 case TYPE_VAR: 29.70 // Just erase the type var 29.71 - return new VarSymbol(sym.flags(), names.fromString(name), 29.72 + return new VarSymbol(sym.flags(), name, 29.73 types.erasure(sym.type), sym.owner); 29.74 case CAPTURED_VAR: 29.75 - return new VarSymbol(SYNTHETIC | FINAL, names.fromString(name), types.erasure(sym.type), translatedSym) { 29.76 + return new VarSymbol(SYNTHETIC | FINAL, name, types.erasure(sym.type), translatedSym) { 29.77 @Override 29.78 public Symbol baseSymbol() { 29.79 //keep mapping with original captured symbol 29.80 @@ -1642,27 +1658,27 @@ 29.81 29.82 void addSymbol(Symbol sym, LambdaSymbolKind skind) { 29.83 Map<Symbol, Symbol> transMap = null; 29.84 - String preferredName; 29.85 + Name preferredName; 29.86 switch (skind) { 29.87 case CAPTURED_THIS: 29.88 transMap = capturedThis; 29.89 - preferredName = "encl$" + capturedThis.size(); 29.90 + preferredName = names.fromString("encl$" + capturedThis.size()); 29.91 break; 29.92 case CAPTURED_VAR: 29.93 transMap = capturedLocals; 29.94 - preferredName = "cap$" + capturedLocals.size(); 29.95 + preferredName = names.fromString("cap$" + capturedLocals.size()); 29.96 break; 29.97 case LOCAL_VAR: 29.98 transMap = lambdaLocals; 29.99 - preferredName = sym.name.toString(); 29.100 + preferredName = sym.name; 29.101 break; 29.102 case PARAM: 29.103 transMap = lambdaParams; 29.104 - preferredName = sym.name.toString(); 29.105 + preferredName = sym.name; 29.106 break; 29.107 case TYPE_VAR: 29.108 transMap = typeVars; 29.109 - preferredName = sym.name.toString(); 29.110 + preferredName = sym.name; 29.111 break; 29.112 default: throw new AssertionError(); 29.113 }
30.1 --- a/src/share/classes/com/sun/tools/javac/comp/Lower.java Thu Mar 21 10:43:39 2013 -0700 30.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Lower.java Tue Mar 26 12:07:45 2013 -0700 30.3 @@ -2604,11 +2604,6 @@ 30.4 30.5 enumDefs.appendList(otherDefs.toList()); 30.6 tree.defs = enumDefs.toList(); 30.7 - 30.8 - // Add the necessary members for the EnumCompatibleMode 30.9 - if (target.compilerBootstrap(tree.sym)) { 30.10 - addEnumCompatibleMembers(tree); 30.11 - } 30.12 } 30.13 // where 30.14 private MethodSymbol systemArraycopyMethod; 30.15 @@ -2657,30 +2652,6 @@ 30.16 olderasure.getReturnType(), 30.17 olderasure.getThrownTypes(), 30.18 syms.methodClass); 30.19 - 30.20 - if (target.compilerBootstrap(m.owner)) { 30.21 - // Initialize synthetic name field 30.22 - Symbol nameVarSym = lookupSynthetic(names.fromString("$name"), 30.23 - tree.sym.owner.members()); 30.24 - JCIdent nameIdent = make.Ident(nameParam.sym); 30.25 - JCIdent id1 = make.Ident(nameVarSym); 30.26 - JCAssign newAssign = make.Assign(id1, nameIdent); 30.27 - newAssign.type = id1.type; 30.28 - JCExpressionStatement nameAssign = make.Exec(newAssign); 30.29 - nameAssign.type = id1.type; 30.30 - tree.body.stats = tree.body.stats.prepend(nameAssign); 30.31 - 30.32 - // Initialize synthetic ordinal field 30.33 - Symbol ordinalVarSym = lookupSynthetic(names.fromString("$ordinal"), 30.34 - tree.sym.owner.members()); 30.35 - JCIdent ordIdent = make.Ident(ordParam.sym); 30.36 - id1 = make.Ident(ordinalVarSym); 30.37 - newAssign = make.Assign(id1, ordIdent); 30.38 - newAssign.type = id1.type; 30.39 - JCExpressionStatement ordinalAssign = make.Exec(newAssign); 30.40 - ordinalAssign.type = id1.type; 30.41 - tree.body.stats = tree.body.stats.prepend(ordinalAssign); 30.42 - } 30.43 } 30.44 30.45 JCMethodDecl prevMethodDef = currentMethodDef; 30.46 @@ -3434,14 +3405,16 @@ 30.47 tree.expr = make.TypeCast(types.erasure(iterableType), tree.expr); 30.48 Symbol iterator = lookupMethod(tree.expr.pos(), 30.49 names.iterator, 30.50 - types.erasure(syms.iterableType), 30.51 + eType, 30.52 List.<Type>nil()); 30.53 VarSymbol itvar = new VarSymbol(0, names.fromString("i" + target.syntheticNameChar()), 30.54 types.erasure(iterator.type.getReturnType()), 30.55 currentMethodSym); 30.56 - JCStatement init = make. 30.57 - VarDef(itvar, 30.58 - make.App(make.Select(tree.expr, iterator))); 30.59 + 30.60 + JCStatement init = make. 30.61 + VarDef(itvar, make.App(make.Select(tree.expr, iterator) 30.62 + .setType(types.erasure(iterator.type)))); 30.63 + 30.64 Symbol hasNext = lookupMethod(tree.expr.pos(), 30.65 names.hasNext, 30.66 itvar.type, 30.67 @@ -3886,168 +3859,4 @@ 30.68 } 30.69 return translated.toList(); 30.70 } 30.71 - 30.72 - ////////////////////////////////////////////////////////////// 30.73 - // The following contributed by Borland for bootstrapping purposes 30.74 - ////////////////////////////////////////////////////////////// 30.75 - private void addEnumCompatibleMembers(JCClassDecl cdef) { 30.76 - make_at(null); 30.77 - 30.78 - // Add the special enum fields 30.79 - VarSymbol ordinalFieldSym = addEnumOrdinalField(cdef); 30.80 - VarSymbol nameFieldSym = addEnumNameField(cdef); 30.81 - 30.82 - // Add the accessor methods for name and ordinal 30.83 - MethodSymbol ordinalMethodSym = addEnumFieldOrdinalMethod(cdef, ordinalFieldSym); 30.84 - MethodSymbol nameMethodSym = addEnumFieldNameMethod(cdef, nameFieldSym); 30.85 - 30.86 - // Add the toString method 30.87 - addEnumToString(cdef, nameFieldSym); 30.88 - 30.89 - // Add the compareTo method 30.90 - addEnumCompareTo(cdef, ordinalFieldSym); 30.91 - } 30.92 - 30.93 - private VarSymbol addEnumOrdinalField(JCClassDecl cdef) { 30.94 - VarSymbol ordinal = new VarSymbol(PRIVATE|FINAL|SYNTHETIC, 30.95 - names.fromString("$ordinal"), 30.96 - syms.intType, 30.97 - cdef.sym); 30.98 - cdef.sym.members().enter(ordinal); 30.99 - cdef.defs = cdef.defs.prepend(make.VarDef(ordinal, null)); 30.100 - return ordinal; 30.101 - } 30.102 - 30.103 - private VarSymbol addEnumNameField(JCClassDecl cdef) { 30.104 - VarSymbol name = new VarSymbol(PRIVATE|FINAL|SYNTHETIC, 30.105 - names.fromString("$name"), 30.106 - syms.stringType, 30.107 - cdef.sym); 30.108 - cdef.sym.members().enter(name); 30.109 - cdef.defs = cdef.defs.prepend(make.VarDef(name, null)); 30.110 - return name; 30.111 - } 30.112 - 30.113 - private MethodSymbol addEnumFieldOrdinalMethod(JCClassDecl cdef, VarSymbol ordinalSymbol) { 30.114 - // Add the accessor methods for ordinal 30.115 - Symbol ordinalSym = lookupMethod(cdef.pos(), 30.116 - names.ordinal, 30.117 - cdef.type, 30.118 - List.<Type>nil()); 30.119 - 30.120 - Assert.check(ordinalSym instanceof MethodSymbol); 30.121 - 30.122 - JCStatement ret = make.Return(make.Ident(ordinalSymbol)); 30.123 - cdef.defs = cdef.defs.append(make.MethodDef((MethodSymbol)ordinalSym, 30.124 - make.Block(0L, List.of(ret)))); 30.125 - 30.126 - return (MethodSymbol)ordinalSym; 30.127 - } 30.128 - 30.129 - private MethodSymbol addEnumFieldNameMethod(JCClassDecl cdef, VarSymbol nameSymbol) { 30.130 - // Add the accessor methods for name 30.131 - Symbol nameSym = lookupMethod(cdef.pos(), 30.132 - names._name, 30.133 - cdef.type, 30.134 - List.<Type>nil()); 30.135 - 30.136 - Assert.check(nameSym instanceof MethodSymbol); 30.137 - 30.138 - JCStatement ret = make.Return(make.Ident(nameSymbol)); 30.139 - 30.140 - cdef.defs = cdef.defs.append(make.MethodDef((MethodSymbol)nameSym, 30.141 - make.Block(0L, List.of(ret)))); 30.142 - 30.143 - return (MethodSymbol)nameSym; 30.144 - } 30.145 - 30.146 - private MethodSymbol addEnumToString(JCClassDecl cdef, 30.147 - VarSymbol nameSymbol) { 30.148 - Symbol toStringSym = lookupMethod(cdef.pos(), 30.149 - names.toString, 30.150 - cdef.type, 30.151 - List.<Type>nil()); 30.152 - 30.153 - JCTree toStringDecl = null; 30.154 - if (toStringSym != null) 30.155 - toStringDecl = TreeInfo.declarationFor(toStringSym, cdef); 30.156 - 30.157 - if (toStringDecl != null) 30.158 - return (MethodSymbol)toStringSym; 30.159 - 30.160 - JCStatement ret = make.Return(make.Ident(nameSymbol)); 30.161 - 30.162 - JCTree resTypeTree = make.Type(syms.stringType); 30.163 - 30.164 - MethodType toStringType = new MethodType(List.<Type>nil(), 30.165 - syms.stringType, 30.166 - List.<Type>nil(), 30.167 - cdef.sym); 30.168 - toStringSym = new MethodSymbol(PUBLIC, 30.169 - names.toString, 30.170 - toStringType, 30.171 - cdef.type.tsym); 30.172 - toStringDecl = make.MethodDef((MethodSymbol)toStringSym, 30.173 - make.Block(0L, List.of(ret))); 30.174 - 30.175 - cdef.defs = cdef.defs.prepend(toStringDecl); 30.176 - cdef.sym.members().enter(toStringSym); 30.177 - 30.178 - return (MethodSymbol)toStringSym; 30.179 - } 30.180 - 30.181 - private MethodSymbol addEnumCompareTo(JCClassDecl cdef, VarSymbol ordinalSymbol) { 30.182 - Symbol compareToSym = lookupMethod(cdef.pos(), 30.183 - names.compareTo, 30.184 - cdef.type, 30.185 - List.of(cdef.sym.type)); 30.186 - 30.187 - Assert.check(compareToSym instanceof MethodSymbol); 30.188 - 30.189 - JCMethodDecl compareToDecl = (JCMethodDecl) TreeInfo.declarationFor(compareToSym, cdef); 30.190 - 30.191 - ListBuffer<JCStatement> blockStatements = new ListBuffer<JCStatement>(); 30.192 - 30.193 - JCModifiers mod1 = make.Modifiers(0L); 30.194 - Name oName = names.fromString("o"); 30.195 - JCVariableDecl par1 = make.Param(oName, cdef.type, compareToSym); 30.196 - 30.197 - JCIdent paramId1 = make.Ident(names.java_lang_Object); 30.198 - paramId1.type = cdef.type; 30.199 - paramId1.sym = par1.sym; 30.200 - 30.201 - ((MethodSymbol)compareToSym).params = List.of(par1.sym); 30.202 - 30.203 - JCIdent par1UsageId = make.Ident(par1.sym); 30.204 - JCIdent castTargetIdent = make.Ident(cdef.sym); 30.205 - JCTypeCast cast = make.TypeCast(castTargetIdent, par1UsageId); 30.206 - cast.setType(castTargetIdent.type); 30.207 - 30.208 - Name otherName = names.fromString("other"); 30.209 - 30.210 - VarSymbol otherVarSym = new VarSymbol(mod1.flags, 30.211 - otherName, 30.212 - cdef.type, 30.213 - compareToSym); 30.214 - JCVariableDecl otherVar = make.VarDef(otherVarSym, cast); 30.215 - blockStatements.append(otherVar); 30.216 - 30.217 - JCIdent id1 = make.Ident(ordinalSymbol); 30.218 - 30.219 - JCIdent fLocUsageId = make.Ident(otherVarSym); 30.220 - JCExpression sel = make.Select(fLocUsageId, ordinalSymbol); 30.221 - JCBinary bin = makeBinary(MINUS, id1, sel); 30.222 - JCReturn ret = make.Return(bin); 30.223 - blockStatements.append(ret); 30.224 - JCMethodDecl compareToMethod = make.MethodDef((MethodSymbol)compareToSym, 30.225 - make.Block(0L, 30.226 - blockStatements.toList())); 30.227 - compareToMethod.params = List.of(par1); 30.228 - cdef.defs = cdef.defs.append(compareToMethod); 30.229 - 30.230 - return (MethodSymbol)compareToSym; 30.231 - } 30.232 - ////////////////////////////////////////////////////////////// 30.233 - // The above contributed by Borland for bootstrapping purposes 30.234 - ////////////////////////////////////////////////////////////// 30.235 }
31.1 --- a/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java Thu Mar 21 10:43:39 2013 -0700 31.2 +++ b/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java Tue Mar 26 12:07:45 2013 -0700 31.3 @@ -473,44 +473,6 @@ 31.4 null, //make.Block(0, Tree.emptyList.prepend(make.Return(make.Ident(names._null)))), 31.5 null); 31.6 memberEnter(valueOf, env); 31.7 - 31.8 - // the remaining members are for bootstrapping only 31.9 - if (!target.compilerBootstrap(tree.sym)) return; 31.10 - 31.11 - // public final int ordinal() { return ???; } 31.12 - JCMethodDecl ordinal = make.at(tree.pos). 31.13 - MethodDef(make.Modifiers(Flags.PUBLIC|Flags.FINAL), 31.14 - names.ordinal, 31.15 - make.Type(syms.intType), 31.16 - List.<JCTypeParameter>nil(), 31.17 - List.<JCVariableDecl>nil(), 31.18 - List.<JCExpression>nil(), 31.19 - null, 31.20 - null); 31.21 - memberEnter(ordinal, env); 31.22 - 31.23 - // public final String name() { return ???; } 31.24 - JCMethodDecl name = make. 31.25 - MethodDef(make.Modifiers(Flags.PUBLIC|Flags.FINAL), 31.26 - names._name, 31.27 - make.Type(syms.stringType), 31.28 - List.<JCTypeParameter>nil(), 31.29 - List.<JCVariableDecl>nil(), 31.30 - List.<JCExpression>nil(), 31.31 - null, 31.32 - null); 31.33 - memberEnter(name, env); 31.34 - 31.35 - // public int compareTo(E other) { return ???; } 31.36 - MethodSymbol compareTo = new 31.37 - MethodSymbol(Flags.PUBLIC, 31.38 - names.compareTo, 31.39 - new MethodType(List.of(tree.sym.type), 31.40 - syms.intType, 31.41 - List.<Type>nil(), 31.42 - syms.methodClass), 31.43 - tree.sym); 31.44 - memberEnter(make.MethodDef(compareTo, null), env); 31.45 } 31.46 31.47 public void visitTopLevel(JCCompilationUnit tree) { 31.48 @@ -936,7 +898,7 @@ 31.49 Type supertype = 31.50 (tree.extending != null) 31.51 ? attr.attribBase(tree.extending, baseEnv, true, false, true) 31.52 - : ((tree.mods.flags & Flags.ENUM) != 0 && !target.compilerBootstrap(c)) 31.53 + : ((tree.mods.flags & Flags.ENUM) != 0) 31.54 ? attr.attribBase(enumBase(tree.pos, c), baseEnv, 31.55 true, false, false) 31.56 : (c.fullname == names.java_lang_Object) 31.57 @@ -949,16 +911,6 @@ 31.58 ListBuffer<Type> all_interfaces = null; // lazy init 31.59 Set<Type> interfaceSet = new HashSet<Type>(); 31.60 List<JCExpression> interfaceTrees = tree.implementing; 31.61 - if ((tree.mods.flags & Flags.ENUM) != 0 && target.compilerBootstrap(c)) { 31.62 - // add interface Comparable<T> 31.63 - interfaceTrees = 31.64 - interfaceTrees.prepend(make.Type(new ClassType(syms.comparableType.getEnclosingType(), 31.65 - List.of(c.type), 31.66 - syms.comparableType.tsym))); 31.67 - // add interface Serializable 31.68 - interfaceTrees = 31.69 - interfaceTrees.prepend(make.Type(syms.serializableType)); 31.70 - } 31.71 for (JCExpression iface : interfaceTrees) { 31.72 Type i = attr.attribBase(iface, baseEnv, false, true, true); 31.73 if (i.hasTag(CLASS)) { 31.74 @@ -1401,8 +1353,7 @@ 31.75 if (c.type != syms.objectType) 31.76 stats = stats.prepend(SuperCall(make, typarams, params, based)); 31.77 if ((c.flags() & ENUM) != 0 && 31.78 - (types.supertype(c.type).tsym == syms.enumSym || 31.79 - target.compilerBootstrap(c))) { 31.80 + (types.supertype(c.type).tsym == syms.enumSym)) { 31.81 // constructors of true enums are private 31.82 flags = (flags & ~AccessFlags) | PRIVATE | GENERATEDCONSTR; 31.83 } else
32.1 --- a/src/share/classes/com/sun/tools/javac/jvm/Target.java Thu Mar 21 10:43:39 2013 -0700 32.2 +++ b/src/share/classes/com/sun/tools/javac/jvm/Target.java Tue Mar 26 12:07:45 2013 -0700 32.3 @@ -1,5 +1,5 @@ 32.4 /* 32.5 - * Copyright (c) 2002, 2012, Oracle and/or its affiliates. All rights reserved. 32.6 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. 32.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 32.8 * 32.9 * This code is free software; you can redistribute it and/or modify it 32.10 @@ -48,17 +48,6 @@ 32.11 /** J2SE1.4 = Merlin. */ 32.12 JDK1_4("1.4", 48, 0), 32.13 32.14 - /** Support for the JSR14 prototype compiler (targeting 1.4 VMs 32.15 - * augmented with a few support classes). This is a transitional 32.16 - * option that will not be supported in the product. */ 32.17 - JSR14("jsr14", 48, 0), 32.18 - 32.19 - /** The following are undocumented transitional targets that we 32.20 - * had used to test VM fixes in update releases. We do not 32.21 - * promise to retain support for them. */ 32.22 - JDK1_4_1("1.4.1", 48, 0), 32.23 - JDK1_4_2("1.4.2", 48, 0), 32.24 - 32.25 /** Tiger. */ 32.26 JDK1_5("1.5", 49, 0), 32.27 32.28 @@ -175,23 +164,23 @@ 32.29 return compareTo(JDK1_5) >= 0; 32.30 } 32.31 32.32 - /** Beginning in -target 1.4.2, we make synthetic variables 32.33 + /** Beginning in -target 1.5, we make synthetic variables 32.34 * package-private instead of private. This is to prevent the 32.35 * necessity of access methods, which effectively relax the 32.36 * protection of the field but bloat the class files and affect 32.37 * execution. 32.38 */ 32.39 public boolean usePrivateSyntheticFields() { 32.40 - return compareTo(JDK1_4_2) < 0; 32.41 + return compareTo(JDK1_5) < 0; 32.42 } 32.43 32.44 /** Sometimes we need to create a field to cache a value like a 32.45 - * class literal of the assertions flag. In -target 1.4.2 and 32.46 + * class literal of the assertions flag. In -target 1.5 and 32.47 * later we create a new synthetic class for this instead of 32.48 * using the outermost class. See 4401576. 32.49 */ 32.50 public boolean useInnerCacheClass() { 32.51 - return compareTo(JDK1_4_2) >= 0; 32.52 + return compareTo(JDK1_5) >= 0; 32.53 } 32.54 32.55 /** Return true if cldc-style stack maps need to be generated. */ 32.56 @@ -276,7 +265,7 @@ 32.57 * See 4468823 32.58 */ 32.59 public boolean classLiteralsNoInit() { 32.60 - return compareTo(JDK1_4_2) >= 0; 32.61 + return compareTo(JDK1_5) >= 0; 32.62 } 32.63 32.64 /** Although we may not have support for class literals, when we 32.65 @@ -300,22 +289,10 @@ 32.66 return compareTo(JDK1_5) >= 0; 32.67 } 32.68 32.69 - /** For bootstrapping javac only, we do without java.lang.Enum if 32.70 - * necessary. 32.71 - */ 32.72 - public boolean compilerBootstrap(Symbol c) { 32.73 - return 32.74 - this == JSR14 && 32.75 - (c.flags() & Flags.ENUM) != 0 && 32.76 - c.flatName().toString().startsWith("com.sun.tools.") 32.77 - // && !Target.class.getSuperclass().getName().equals("java.lang.Enum") 32.78 - ; 32.79 - } 32.80 - 32.81 /** In J2SE1.5.0, we introduced the "EnclosingMethod" attribute 32.82 * for improved reflection support. 32.83 */ 32.84 public boolean hasEnclosingMethodAttribute() { 32.85 - return compareTo(JDK1_5) >= 0 || this == JSR14; 32.86 + return compareTo(JDK1_5) >= 0; 32.87 } 32.88 }
33.1 --- a/src/share/classes/com/sun/tools/javac/model/AnnotationProxyMaker.java Thu Mar 21 10:43:39 2013 -0700 33.2 +++ b/src/share/classes/com/sun/tools/javac/model/AnnotationProxyMaker.java Tue Mar 26 12:07:45 2013 -0700 33.3 @@ -1,5 +1,5 @@ 33.4 /* 33.5 - * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. 33.6 + * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. 33.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 33.8 * 33.9 * This code is free software; you can redistribute it and/or modify it 33.10 @@ -273,7 +273,7 @@ 33.11 33.12 /** 33.13 * ExceptionProxy for MirroredTypeException. 33.14 - * The toString, hashCode, and equals methods foward to the underlying 33.15 + * The toString, hashCode, and equals methods forward to the underlying 33.16 * type. 33.17 */ 33.18 private static final class MirroredTypeExceptionProxy extends ExceptionProxy {
34.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 34.2 +++ b/src/share/classes/com/sun/tools/javac/model/JavacAnnoConstructs.java Tue Mar 26 12:07:45 2013 -0700 34.3 @@ -0,0 +1,412 @@ 34.4 +/* 34.5 + * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. 34.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 34.7 + * 34.8 + * This code is free software; you can redistribute it and/or modify it 34.9 + * under the terms of the GNU General Public License version 2 only, as 34.10 + * published by the Free Software Foundation. Oracle designates this 34.11 + * particular file as subject to the "Classpath" exception as provided 34.12 + * by Oracle in the LICENSE file that accompanied this code. 34.13 + * 34.14 + * This code is distributed in the hope that it will be useful, but WITHOUT 34.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 34.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 34.17 + * version 2 for more details (a copy is included in the LICENSE file that 34.18 + * accompanied this code). 34.19 + * 34.20 + * You should have received a copy of the GNU General Public License version 34.21 + * 2 along with this work; if not, write to the Free Software Foundation, 34.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 34.23 + * 34.24 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 34.25 + * or visit www.oracle.com if you need additional information or have any 34.26 + * questions. 34.27 + */ 34.28 +package com.sun.tools.javac.model; 34.29 + 34.30 +import java.lang.annotation.Annotation; 34.31 +import java.lang.annotation.Inherited; 34.32 +import java.lang.reflect.InvocationTargetException; 34.33 +import java.lang.reflect.Method; 34.34 + 34.35 +import com.sun.tools.javac.code.Attribute; 34.36 +import com.sun.tools.javac.code.Kinds; 34.37 +import com.sun.tools.javac.code.Symbol; 34.38 +import com.sun.tools.javac.code.Symbol.ClassSymbol; 34.39 +import com.sun.tools.javac.code.Type; 34.40 +import com.sun.tools.javac.code.Type.AnnotatedType; 34.41 +import com.sun.tools.javac.util.ListBuffer; 34.42 +import static com.sun.tools.javac.code.TypeTag.CLASS; 34.43 + 34.44 +/** 34.45 + * Utility methods for operating on annotated constructs. 34.46 + * 34.47 + * <p><b>This is NOT part of any supported API. 34.48 + * If you write code that depends on this, you do so at your own 34.49 + * risk. This code and its internal interfaces are subject to change 34.50 + * or deletion without notice.</b></p> 34.51 + */ 34.52 +public class JavacAnnoConstructs { 34.53 + 34.54 + // <editor-fold defaultstate="collapsed" desc="Symbols"> 34.55 + 34.56 + /** 34.57 + * An internal-use utility that creates a runtime view of an 34.58 + * annotation. This is the implementation of 34.59 + * Element.getAnnotation(Class). 34.60 + */ 34.61 + public static <A extends Annotation> A getAnnotation(Symbol annotated, 34.62 + Class<A> annoType) { 34.63 + if (!annoType.isAnnotation()) 34.64 + throw new IllegalArgumentException("Not an annotation type: " 34.65 + + annoType); 34.66 + Attribute.Compound c; 34.67 + if (annotated.kind == Kinds.TYP && annotated instanceof ClassSymbol) { 34.68 + c = getAttributeOnClass((ClassSymbol)annotated, annoType); 34.69 + } else { 34.70 + c = getAttribute(annotated, annoType); 34.71 + } 34.72 + return c == null ? null : AnnotationProxyMaker.generateAnnotation(c, annoType); 34.73 + } 34.74 + 34.75 + // Helper to getAnnotation[s] 34.76 + private static <A extends Annotation> Attribute.Compound getAttribute(Symbol annotated, 34.77 + Class<A> annoType) { 34.78 + String name = annoType.getName(); 34.79 + 34.80 + for (Attribute.Compound anno : annotated.getRawAttributes()) { 34.81 + if (name.equals(anno.type.tsym.flatName().toString())) 34.82 + return anno; 34.83 + } 34.84 + 34.85 + return null; 34.86 + } 34.87 + 34.88 + // Helper to getAnnotation[s] 34.89 + private static <A extends Annotation> Attribute.Compound getAttributeOnClass(ClassSymbol annotated, 34.90 + Class<A> annoType) { 34.91 + boolean inherited = annoType.isAnnotationPresent(Inherited.class); 34.92 + Attribute.Compound result = null; 34.93 + while (annotated.name != annotated.name.table.names.java_lang_Object) { 34.94 + result = getAttribute(annotated, annoType); 34.95 + if (result != null || !inherited) 34.96 + break; 34.97 + Type sup = annotated.getSuperclass(); 34.98 + if (!sup.hasTag(CLASS) || sup.isErroneous()) 34.99 + break; 34.100 + annotated = (ClassSymbol) sup.tsym; 34.101 + } 34.102 + return result; 34.103 + } 34.104 + 34.105 + /** 34.106 + * An internal-use utility that creates a runtime view of 34.107 + * annotations. This is the implementation of 34.108 + * Element.getAnnotations(Class). 34.109 + */ 34.110 + public static <A extends Annotation> A[] getAnnotations(Symbol annotated, 34.111 + Class<A> annoType) { 34.112 + if (!annoType.isAnnotation()) 34.113 + throw new IllegalArgumentException("Not an annotation type: " 34.114 + + annoType); 34.115 + // If annoType does not declare a container this is equivalent to wrapping 34.116 + // getAnnotation(...) in an array. 34.117 + Class <? extends Annotation> containerType = getContainer(annoType); 34.118 + if (containerType == null) { 34.119 + A res = getAnnotation(annotated, annoType); 34.120 + int size; 34.121 + if (res == null) { 34.122 + size = 0; 34.123 + } else { 34.124 + size = 1; 34.125 + } 34.126 + @SuppressWarnings("unchecked") // annoType is the Class for A 34.127 + A[] arr = (A[])java.lang.reflect.Array.newInstance(annoType, size); 34.128 + if (res != null) 34.129 + arr[0] = res; 34.130 + return arr; 34.131 + } 34.132 + 34.133 + // So we have a containing type 34.134 + String name = annoType.getName(); 34.135 + String annoTypeName = annoType.getSimpleName(); 34.136 + String containerTypeName = containerType.getSimpleName(); 34.137 + int directIndex = -1, containerIndex = -1; 34.138 + Attribute.Compound direct = null, container = null; 34.139 + Attribute.Compound[] rawAttributes = annotated.getRawAttributes().toArray(new Attribute.Compound[0]); 34.140 + 34.141 + // Find directly present annotations 34.142 + for (int i = 0; i < rawAttributes.length; i++) { 34.143 + if (annoTypeName.equals(rawAttributes[i].type.tsym.flatName().toString())) { 34.144 + directIndex = i; 34.145 + direct = rawAttributes[i]; 34.146 + } else if(containerTypeName != null && 34.147 + containerTypeName.equals(rawAttributes[i].type.tsym.flatName().toString())) { 34.148 + containerIndex = i; 34.149 + container = rawAttributes[i]; 34.150 + } 34.151 + } 34.152 + 34.153 + // Deal with inherited annotations 34.154 + if (annotated.kind == Kinds.TYP && 34.155 + (annotated instanceof ClassSymbol)) { 34.156 + ClassSymbol s = (ClassSymbol)annotated; 34.157 + if (direct == null && container == null) { 34.158 + direct = getAttributeOnClass(s, annoType); 34.159 + container = getAttributeOnClass(s, containerType); 34.160 + 34.161 + // both are inherited and found, put container last 34.162 + if (direct != null && container != null) { 34.163 + directIndex = 0; 34.164 + containerIndex = 1; 34.165 + } else if (direct != null) { 34.166 + directIndex = 0; 34.167 + } else { 34.168 + containerIndex = 0; 34.169 + } 34.170 + } else if (direct == null) { 34.171 + direct = getAttributeOnClass(s, annoType); 34.172 + if (direct != null) 34.173 + directIndex = containerIndex + 1; 34.174 + } else if (container == null) { 34.175 + container = getAttributeOnClass(s, containerType); 34.176 + if (container != null) 34.177 + containerIndex = directIndex + 1; 34.178 + } 34.179 + } 34.180 + 34.181 + // Pack them in an array 34.182 + Attribute[] contained0 = new Attribute[0]; 34.183 + if (container != null) 34.184 + contained0 = unpackAttributes(container); 34.185 + ListBuffer<Attribute.Compound> compounds = ListBuffer.lb(); 34.186 + for (Attribute a : contained0) 34.187 + if (a instanceof Attribute.Compound) 34.188 + compounds = compounds.append((Attribute.Compound)a); 34.189 + Attribute.Compound[] contained = compounds.toArray(new Attribute.Compound[0]); 34.190 + 34.191 + int size = (direct == null ? 0 : 1) + contained.length; 34.192 + @SuppressWarnings("unchecked") // annoType is the Class for A 34.193 + A[] arr = (A[])java.lang.reflect.Array.newInstance(annoType, size); 34.194 + 34.195 + // if direct && container, which is first? 34.196 + int insert = -1; 34.197 + int length = arr.length; 34.198 + if (directIndex >= 0 && containerIndex >= 0) { 34.199 + if (directIndex < containerIndex) { 34.200 + arr[0] = AnnotationProxyMaker.generateAnnotation(direct, annoType); 34.201 + insert = 1; 34.202 + } else { 34.203 + arr[arr.length - 1] = AnnotationProxyMaker.generateAnnotation(direct, annoType); 34.204 + insert = 0; 34.205 + length--; 34.206 + } 34.207 + } else if (directIndex >= 0) { 34.208 + arr[0] = AnnotationProxyMaker.generateAnnotation(direct, annoType); 34.209 + return arr; 34.210 + } else { 34.211 + // Only container 34.212 + insert = 0; 34.213 + } 34.214 + 34.215 + for (int i = 0; i + insert < length; i++) 34.216 + arr[insert + i] = AnnotationProxyMaker.generateAnnotation(contained[i], annoType); 34.217 + 34.218 + return arr; 34.219 + } 34.220 + 34.221 + // </editor-fold> 34.222 + 34.223 + // <editor-fold defaultstate="collapsed" desc="Types"> 34.224 + 34.225 + /** 34.226 + * An internal-use utility that creates a runtime view of an 34.227 + * annotation. This is the implementation of 34.228 + * TypeMirror.getAnnotation(Class). 34.229 + */ 34.230 + public static <A extends Annotation> A getAnnotation(AnnotatedType annotated, Class<A> annoType) { 34.231 + if (!annoType.isAnnotation()) 34.232 + throw new IllegalArgumentException("Not an annotation type: " 34.233 + + annoType); 34.234 + Attribute.Compound c = getAttribute(annotated, annoType); 34.235 + return c == null ? null : AnnotationProxyMaker.generateAnnotation(c, annoType); 34.236 + } 34.237 + 34.238 + // Helper to getAnnotation[s] 34.239 + private static <A extends Annotation> Attribute.Compound getAttribute(Type annotated, 34.240 + Class<A> annoType) { 34.241 + String name = annoType.getName(); 34.242 + 34.243 + for (Attribute.Compound anno : annotated.getAnnotationMirrors()) { 34.244 + if (name.equals(anno.type.tsym.flatName().toString())) 34.245 + return anno; 34.246 + } 34.247 + 34.248 + return null; 34.249 + } 34.250 + 34.251 + /** 34.252 + * An internal-use utility that creates a runtime view of 34.253 + * annotations. This is the implementation of 34.254 + * TypeMirror.getAnnotationsByType(Class). 34.255 + */ 34.256 + public static <A extends Annotation> A[] getAnnotationsByType(AnnotatedType annotated, Class<A> annoType) { 34.257 + if (!annoType.isAnnotation()) 34.258 + throw new IllegalArgumentException("Not an annotation type: " 34.259 + + annoType); 34.260 + // If annoType does not declare a container this is equivalent to wrapping 34.261 + // getAnnotation(...) in an array. 34.262 + Class <? extends Annotation> containerType = getContainer(annoType); 34.263 + if (containerType == null) { 34.264 + A res = getAnnotation(annotated, annoType); 34.265 + int size; 34.266 + if (res == null) { 34.267 + size = 0; 34.268 + } else { 34.269 + size = 1; 34.270 + } 34.271 + @SuppressWarnings("unchecked") // annoType is the Class for A 34.272 + A[] arr = (A[])java.lang.reflect.Array.newInstance(annoType, size); 34.273 + if (res != null) 34.274 + arr[0] = res; 34.275 + return arr; 34.276 + } 34.277 + 34.278 + // So we have a containing type 34.279 + String name = annoType.getName(); 34.280 + String annoTypeName = annoType.getSimpleName(); 34.281 + String containerTypeName = containerType.getSimpleName(); 34.282 + int directIndex = -1, containerIndex = -1; 34.283 + Attribute.Compound direct = null, container = null; 34.284 + Attribute.Compound[] rawAttributes = annotated.getAnnotationMirrors().toArray(new Attribute.Compound[0]); 34.285 + 34.286 + // Find directly present annotations 34.287 + for (int i = 0; i < rawAttributes.length; i++) { 34.288 + if (annoTypeName.equals(rawAttributes[i].type.tsym.flatName().toString())) { 34.289 + directIndex = i; 34.290 + direct = rawAttributes[i]; 34.291 + } else if(containerTypeName != null && 34.292 + containerTypeName.equals(rawAttributes[i].type.tsym.flatName().toString())) { 34.293 + containerIndex = i; 34.294 + container = rawAttributes[i]; 34.295 + } 34.296 + } 34.297 + 34.298 + // Pack them in an array 34.299 + Attribute[] contained0 = new Attribute[0]; 34.300 + if (container != null) 34.301 + contained0 = unpackAttributes(container); 34.302 + ListBuffer<Attribute.Compound> compounds = ListBuffer.lb(); 34.303 + for (Attribute a : contained0) { 34.304 + if (a instanceof Attribute.Compound) 34.305 + compounds = compounds.append((Attribute.Compound)a); 34.306 + } 34.307 + Attribute.Compound[] contained = compounds.toArray(new Attribute.Compound[0]); 34.308 + 34.309 + int size = (direct == null ? 0 : 1) + contained.length; 34.310 + @SuppressWarnings("unchecked") // annoType is the Class for A 34.311 + A[] arr = (A[])java.lang.reflect.Array.newInstance(annoType, size); 34.312 + 34.313 + // if direct && container, which is first? 34.314 + int insert = -1; 34.315 + int length = arr.length; 34.316 + if (directIndex >= 0 && containerIndex >= 0) { 34.317 + if (directIndex < containerIndex) { 34.318 + arr[0] = AnnotationProxyMaker.generateAnnotation(direct, annoType); 34.319 + insert = 1; 34.320 + } else { 34.321 + arr[arr.length - 1] = AnnotationProxyMaker.generateAnnotation(direct, annoType); 34.322 + insert = 0; 34.323 + length--; 34.324 + } 34.325 + } else if (directIndex >= 0) { 34.326 + arr[0] = AnnotationProxyMaker.generateAnnotation(direct, annoType); 34.327 + return arr; 34.328 + } else { 34.329 + // Only container 34.330 + insert = 0; 34.331 + } 34.332 + 34.333 + for (int i = 0; i + insert < length; i++) 34.334 + arr[insert + i] = AnnotationProxyMaker.generateAnnotation(contained[i], annoType); 34.335 + 34.336 + return arr; 34.337 + } 34.338 + 34.339 + // </editor-fold> 34.340 + 34.341 + // <editor-fold defaultstate="collapsed" desc="Container support"> 34.342 + 34.343 + // Needed to unpack the runtime view of containing annotations 34.344 + private static final Class<? extends Annotation> REPEATABLE_CLASS = initRepeatable(); 34.345 + private static final Method VALUE_ELEMENT_METHOD = initValueElementMethod(); 34.346 + 34.347 + private static Class<? extends Annotation> initRepeatable() { 34.348 + try { 34.349 + // Repeatable will not be available when bootstrapping on 34.350 + // JDK 7 so use a reflective lookup instead of a class 34.351 + // literal for Repeatable.class. 34.352 + return Class.forName("java.lang.annotation.Repeatable").asSubclass(Annotation.class); 34.353 + } catch (ClassNotFoundException e) { 34.354 + return null; 34.355 + } catch (SecurityException e) { 34.356 + return null; 34.357 + } 34.358 + } 34.359 + 34.360 + private static Method initValueElementMethod() { 34.361 + if (REPEATABLE_CLASS == null) 34.362 + return null; 34.363 + 34.364 + Method m = null; 34.365 + try { 34.366 + m = REPEATABLE_CLASS.getMethod("value"); 34.367 + if (m != null) 34.368 + m.setAccessible(true); 34.369 + return m; 34.370 + } catch (NoSuchMethodException e) { 34.371 + return null; 34.372 + } 34.373 + } 34.374 + 34.375 + // Helper to getAnnotations 34.376 + private static Class<? extends Annotation> getContainer(Class<? extends Annotation> annoType) { 34.377 + // Since we can not refer to java.lang.annotation.Repeatable until we are 34.378 + // bootstrapping with java 8 we need to get the Repeatable annotation using 34.379 + // reflective invocations instead of just using its type and element method. 34.380 + if (REPEATABLE_CLASS != null && 34.381 + VALUE_ELEMENT_METHOD != null) { 34.382 + // Get the Repeatable instance on the annotations declaration 34.383 + Annotation repeatable = (Annotation)annoType.getAnnotation(REPEATABLE_CLASS); 34.384 + if (repeatable != null) { 34.385 + try { 34.386 + // Get the value element, it should be a class 34.387 + // indicating the containing annotation type 34.388 + @SuppressWarnings("unchecked") 34.389 + Class<? extends Annotation> containerType = (Class)VALUE_ELEMENT_METHOD.invoke(repeatable); 34.390 + if (containerType == null) 34.391 + return null; 34.392 + 34.393 + return containerType; 34.394 + } catch (ClassCastException e) { 34.395 + return null; 34.396 + } catch (IllegalAccessException e) { 34.397 + return null; 34.398 + } catch (InvocationTargetException e ) { 34.399 + return null; 34.400 + } 34.401 + } 34.402 + } 34.403 + return null; 34.404 + } 34.405 + 34.406 + // Helper to getAnnotations 34.407 + private static Attribute[] unpackAttributes(Attribute.Compound container) { 34.408 + // We now have an instance of the container, 34.409 + // unpack it returning an instance of the 34.410 + // contained type or null 34.411 + return ((Attribute.Array)container.member(container.type.tsym.name.table.names.value)).values; 34.412 + } 34.413 + 34.414 + // </editor-fold> 34.415 +}
35.1 --- a/src/share/classes/com/sun/tools/javac/model/JavacElements.java Thu Mar 21 10:43:39 2013 -0700 35.2 +++ b/src/share/classes/com/sun/tools/javac/model/JavacElements.java Tue Mar 26 12:07:45 2013 -0700 35.3 @@ -25,10 +25,6 @@ 35.4 35.5 package com.sun.tools.javac.model; 35.6 35.7 -import java.lang.annotation.Annotation; 35.8 -import java.lang.annotation.Inherited; 35.9 -import java.lang.reflect.InvocationTargetException; 35.10 -import java.lang.reflect.Method; 35.11 import java.util.Map; 35.12 35.13 import javax.lang.model.SourceVersion; 35.14 @@ -40,7 +36,6 @@ 35.15 35.16 import com.sun.tools.javac.code.*; 35.17 import com.sun.tools.javac.code.Symbol.*; 35.18 -import com.sun.tools.javac.code.TypeTag; 35.19 import com.sun.tools.javac.comp.AttrContext; 35.20 import com.sun.tools.javac.comp.Enter; 35.21 import com.sun.tools.javac.comp.Env; 35.22 @@ -98,237 +93,6 @@ 35.23 enter = Enter.instance(context); 35.24 } 35.25 35.26 - /** 35.27 - * An internal-use utility that creates a runtime view of an 35.28 - * annotation. This is the implementation of 35.29 - * Element.getAnnotation(Class). 35.30 - */ 35.31 - public static <A extends Annotation> A getAnnotation(Symbol annotated, 35.32 - Class<A> annoType) { 35.33 - if (!annoType.isAnnotation()) 35.34 - throw new IllegalArgumentException("Not an annotation type: " 35.35 - + annoType); 35.36 - Attribute.Compound c; 35.37 - if (annotated.kind == Kinds.TYP && annotated instanceof ClassSymbol) { 35.38 - c = getAttributeOnClass((ClassSymbol)annotated, annoType); 35.39 - } else { 35.40 - c = getAttribute(annotated, annoType); 35.41 - } 35.42 - return c == null ? null : AnnotationProxyMaker.generateAnnotation(c, annoType); 35.43 - } 35.44 - 35.45 - // Helper to getAnnotation[s] 35.46 - private static <A extends Annotation> Attribute.Compound getAttribute(Symbol annotated, 35.47 - Class<A> annoType) { 35.48 - String name = annoType.getName(); 35.49 - 35.50 - for (Attribute.Compound anno : annotated.getRawAttributes()) 35.51 - if (name.equals(anno.type.tsym.flatName().toString())) 35.52 - return anno; 35.53 - 35.54 - return null; 35.55 - } 35.56 - // Helper to getAnnotation[s] 35.57 - private static <A extends Annotation> Attribute.Compound getAttributeOnClass(ClassSymbol annotated, 35.58 - Class<A> annoType) { 35.59 - boolean inherited = annoType.isAnnotationPresent(Inherited.class); 35.60 - Attribute.Compound result = null; 35.61 - while (annotated.name != annotated.name.table.names.java_lang_Object) { 35.62 - result = getAttribute(annotated, annoType); 35.63 - if (result != null || !inherited) 35.64 - break; 35.65 - Type sup = annotated.getSuperclass(); 35.66 - if (!sup.hasTag(CLASS) || sup.isErroneous()) 35.67 - break; 35.68 - annotated = (ClassSymbol) sup.tsym; 35.69 - } 35.70 - return result; 35.71 - } 35.72 - 35.73 - /** 35.74 - * An internal-use utility that creates a runtime view of 35.75 - * annotations. This is the implementation of 35.76 - * Element.getAnnotations(Class). 35.77 - */ 35.78 - public static <A extends Annotation> A[] getAnnotations(Symbol annotated, 35.79 - Class<A> annoType) { 35.80 - if (!annoType.isAnnotation()) 35.81 - throw new IllegalArgumentException("Not an annotation type: " 35.82 - + annoType); 35.83 - // If annoType does not declare a container this is equivalent to wrapping 35.84 - // getAnnotation(...) in an array. 35.85 - Class <? extends Annotation> containerType = getContainer(annoType); 35.86 - if (containerType == null) { 35.87 - A res = getAnnotation(annotated, annoType); 35.88 - int size; 35.89 - if (res == null) { 35.90 - size = 0; 35.91 - } else { 35.92 - size = 1; 35.93 - } 35.94 - @SuppressWarnings("unchecked") // annoType is the Class for A 35.95 - A[] arr = (A[])java.lang.reflect.Array.newInstance(annoType, size); 35.96 - if (res != null) 35.97 - arr[0] = res; 35.98 - return arr; 35.99 - } 35.100 - 35.101 - // So we have a containing type 35.102 - String name = annoType.getName(); 35.103 - String annoTypeName = annoType.getSimpleName(); 35.104 - String containerTypeName = containerType.getSimpleName(); 35.105 - int directIndex = -1, containerIndex = -1; 35.106 - Attribute.Compound direct = null, container = null; 35.107 - Attribute.Compound[] rawAttributes = annotated.getRawAttributes().toArray(new Attribute.Compound[0]); 35.108 - 35.109 - // Find directly present annotations 35.110 - for (int i = 0; i < rawAttributes.length; i++) { 35.111 - if (annoTypeName.equals(rawAttributes[i].type.tsym.flatName().toString())) { 35.112 - directIndex = i; 35.113 - direct = rawAttributes[i]; 35.114 - } else if(containerTypeName != null && 35.115 - containerTypeName.equals(rawAttributes[i].type.tsym.flatName().toString())) { 35.116 - containerIndex = i; 35.117 - container = rawAttributes[i]; 35.118 - } 35.119 - } 35.120 - // Deal with inherited annotations 35.121 - if (annotated.kind == Kinds.TYP && 35.122 - (annotated instanceof ClassSymbol)) { 35.123 - ClassSymbol s = (ClassSymbol)annotated; 35.124 - if (direct == null && container == null) { 35.125 - direct = getAttributeOnClass(s, annoType); 35.126 - container = getAttributeOnClass(s, containerType); 35.127 - 35.128 - // both are inherited and found, put container last 35.129 - if (direct != null && container != null) { 35.130 - directIndex = 0; 35.131 - containerIndex = 1; 35.132 - } else if (direct != null) { 35.133 - directIndex = 0; 35.134 - } else { 35.135 - containerIndex = 0; 35.136 - } 35.137 - } else if (direct == null) { 35.138 - direct = getAttributeOnClass(s, annoType); 35.139 - if (direct != null) 35.140 - directIndex = containerIndex + 1; 35.141 - } else if (container == null) { 35.142 - container = getAttributeOnClass(s, containerType); 35.143 - if (container != null) 35.144 - containerIndex = directIndex + 1; 35.145 - } 35.146 - } 35.147 - 35.148 - // Pack them in an array 35.149 - Attribute[] contained0 = new Attribute[0]; 35.150 - if (container != null) 35.151 - contained0 = unpackAttributes(container); 35.152 - ListBuffer<Attribute.Compound> compounds = ListBuffer.lb(); 35.153 - for (Attribute a : contained0) 35.154 - if (a instanceof Attribute.Compound) 35.155 - compounds = compounds.append((Attribute.Compound)a); 35.156 - Attribute.Compound[] contained = compounds.toArray(new Attribute.Compound[0]); 35.157 - 35.158 - int size = (direct == null ? 0 : 1) + contained.length; 35.159 - @SuppressWarnings("unchecked") // annoType is the Class for A 35.160 - A[] arr = (A[])java.lang.reflect.Array.newInstance(annoType, size); 35.161 - 35.162 - // if direct && container, which is first? 35.163 - int insert = -1; 35.164 - int length = arr.length; 35.165 - if (directIndex >= 0 && containerIndex >= 0) { 35.166 - if (directIndex < containerIndex) { 35.167 - arr[0] = AnnotationProxyMaker.generateAnnotation(direct, annoType); 35.168 - insert = 1; 35.169 - } else { 35.170 - arr[arr.length - 1] = AnnotationProxyMaker.generateAnnotation(direct, annoType); 35.171 - insert = 0; 35.172 - length--; 35.173 - } 35.174 - } else if (directIndex >= 0) { 35.175 - arr[0] = AnnotationProxyMaker.generateAnnotation(direct, annoType); 35.176 - return arr; 35.177 - } else { 35.178 - // Only container 35.179 - insert = 0; 35.180 - } 35.181 - 35.182 - for (int i = 0; i + insert < length; i++) 35.183 - arr[insert + i] = AnnotationProxyMaker.generateAnnotation(contained[i], annoType); 35.184 - 35.185 - return arr; 35.186 - } 35.187 - 35.188 - // Needed to unpack the runtime view of containing annotations 35.189 - private static final Class<? extends Annotation> REPEATABLE_CLASS = initRepeatable(); 35.190 - private static final Method VALUE_ELEMENT_METHOD = initValueElementMethod(); 35.191 - 35.192 - private static Class<? extends Annotation> initRepeatable() { 35.193 - try { 35.194 - // Repeatable will not be available when bootstrapping on 35.195 - // JDK 7 so use a reflective lookup instead of a class 35.196 - // literal for Repeatable.class. 35.197 - return Class.forName("java.lang.annotation.Repeatable").asSubclass(Annotation.class); 35.198 - } catch (ClassNotFoundException e) { 35.199 - return null; 35.200 - } catch (SecurityException e) { 35.201 - return null; 35.202 - } 35.203 - } 35.204 - private static Method initValueElementMethod() { 35.205 - if (REPEATABLE_CLASS == null) 35.206 - return null; 35.207 - 35.208 - Method m = null; 35.209 - try { 35.210 - m = REPEATABLE_CLASS.getMethod("value"); 35.211 - if (m != null) 35.212 - m.setAccessible(true); 35.213 - return m; 35.214 - } catch (NoSuchMethodException e) { 35.215 - return null; 35.216 - } 35.217 - } 35.218 - 35.219 - // Helper to getAnnotations 35.220 - private static Class<? extends Annotation> getContainer(Class<? extends Annotation> annoType) { 35.221 - // Since we can not refer to java.lang.annotation.Repeatable until we are 35.222 - // bootstrapping with java 8 we need to get the Repeatable annotation using 35.223 - // reflective invocations instead of just using its type and element method. 35.224 - if (REPEATABLE_CLASS != null && 35.225 - VALUE_ELEMENT_METHOD != null) { 35.226 - // Get the Repeatable instance on the annotations declaration 35.227 - Annotation repeatable = (Annotation)annoType.getAnnotation(REPEATABLE_CLASS); 35.228 - if (repeatable != null) { 35.229 - try { 35.230 - // Get the value element, it should be a class 35.231 - // indicating the containing annotation type 35.232 - @SuppressWarnings("unchecked") 35.233 - Class<? extends Annotation> containerType = (Class)VALUE_ELEMENT_METHOD.invoke(repeatable); 35.234 - if (containerType == null) 35.235 - return null; 35.236 - 35.237 - return containerType; 35.238 - } catch (ClassCastException e) { 35.239 - return null; 35.240 - } catch (IllegalAccessException e) { 35.241 - return null; 35.242 - } catch (InvocationTargetException e ) { 35.243 - return null; 35.244 - } 35.245 - } 35.246 - } 35.247 - return null; 35.248 - } 35.249 - // Helper to getAnnotations 35.250 - private static Attribute[] unpackAttributes(Attribute.Compound container) { 35.251 - // We now have an instance of the container, 35.252 - // unpack it returning an instance of the 35.253 - // contained type or null 35.254 - return ((Attribute.Array)container.member(container.type.tsym.name.table.names.value)).values; 35.255 - } 35.256 - 35.257 public PackageSymbol getPackageElement(CharSequence name) { 35.258 String strName = name.toString(); 35.259 if (strName.equals(""))
36.1 --- a/src/share/classes/com/sun/tools/javac/model/JavacTypes.java Thu Mar 21 10:43:39 2013 -0700 36.2 +++ b/src/share/classes/com/sun/tools/javac/model/JavacTypes.java Tue Mar 26 12:07:45 2013 -0700 36.3 @@ -25,7 +25,6 @@ 36.4 36.5 package com.sun.tools.javac.model; 36.6 36.7 -import java.lang.annotation.Annotation; 36.8 import java.util.Collections; 36.9 import java.util.EnumSet; 36.10 import java.util.LinkedHashSet; 36.11 @@ -333,28 +332,4 @@ 36.12 36.13 return results; 36.14 } 36.15 - 36.16 - public List<? extends AnnotationMirror> typeAnnotationsOf(TypeMirror type) { 36.17 - // TODO: these methods can be removed. 36.18 - return null; // ((Type)type).typeAnnotations; 36.19 - } 36.20 - 36.21 - public <A extends Annotation> A typeAnnotationOf(TypeMirror type, 36.22 - Class<A> annotationType) { 36.23 - // TODO: these methods can be removed. 36.24 - return null; // JavacElements.getAnnotation(((Type)type).typeAnnotations, annotationType); 36.25 - } 36.26 - 36.27 - public TypeMirror receiverTypeOf(ExecutableType type) { 36.28 - return ((Type)type).asMethodType().recvtype; 36.29 - } 36.30 - 36.31 - /* 36.32 - public <A extends Annotation> A receiverTypeAnnotationOf( 36.33 - ExecutableType type, Class<A> annotationType) { 36.34 - return JavacElements.getAnnotation( 36.35 - ((Type)type).asMethodType().receiverTypeAnnotations, 36.36 - annotationType); 36.37 - }*/ 36.38 - 36.39 }
37.1 --- a/src/share/classes/com/sun/tools/javac/resources/compiler_ja.properties Thu Mar 21 10:43:39 2013 -0700 37.2 +++ b/src/share/classes/com/sun/tools/javac/resources/compiler_ja.properties Tue Mar 26 12:07:45 2013 -0700 37.3 @@ -65,8 +65,11 @@ 37.4 37.5 compiler.err.already.annotated={0} {1}\u306F\u6CE8\u91C8\u304C\u4ED8\u3044\u3066\u3044\u307E\u3059 37.6 37.7 -# 0: symbol, 1: symbol 37.8 -compiler.err.already.defined={0}\u306F{1}\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059 37.9 +# 0: symbol kind, 1: symbol, 2: symbol kind, 3: symbol 37.10 +compiler.err.already.defined={0} {1}\u306F\u3059\u3067\u306B{2} {3}\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059 37.11 + 37.12 +# 0: symbol kind, 1: symbol, 2: symbol kind, 3: symbol kind, 4: symbol 37.13 +compiler.err.already.defined.in.clinit={0} {1}\u306F\u3059\u3067\u306B{3} {4}\u306E{2}\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059 37.14 37.15 # 0: string 37.16 compiler.err.already.defined.single.import={0}\u306F\u5358\u4E00\u306E\u578B\u30A4\u30F3\u30DD\u30FC\u30C8\u5BA3\u8A00\u3067\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059 37.17 @@ -109,28 +112,84 @@ 37.18 # 0: type 37.19 compiler.err.array.req.but.found=\u914D\u5217\u304C\u8981\u6C42\u3055\u308C\u307E\u3057\u305F\u304C\u3001{0}\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F 37.20 37.21 -compiler.err.assignment.from.super-bound=\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9{0}\u304B\u3089\u4EE3\u5165\u3057\u3066\u3044\u307E\u3059 37.22 - 37.23 -compiler.err.assignment.to.extends-bound=\u30EF\u30A4\u30EB\u30C9\u30AB\u30FC\u30C9{0}\u3078\u4EE3\u5165\u3057\u3066\u3044\u307E\u3059 37.24 - 37.25 compiler.err.attribute.value.must.be.constant=\u5C5E\u6027\u306E\u5024\u306F\u5B9A\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 37.26 37.27 +# 0: statement type 37.28 +compiler.err.bad.initializer={0}\u306E\u4E0D\u6B63\u306A\u521D\u671F\u5316\u5B50 37.29 + 37.30 compiler.err.break.outside.switch.loop=break\u304Cswitch\u6587\u307E\u305F\u306F\u30EB\u30FC\u30D7\u306E\u5916\u306B\u3042\u308A\u307E\u3059 37.31 37.32 # 0: name 37.33 compiler.err.call.must.be.first.stmt.in.ctor={0}\u306E\u547C\u51FA\u3057\u306F\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u5148\u982D\u6587\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 37.34 37.35 -compiler.err.cant.apply.symbol={4} {5}\u306E{0} {1}\u306F\u6307\u5B9A\u3055\u308C\u305F\u578B\u306B\u9069\u7528\u3067\u304D\u307E\u305B\u3093\n\u671F\u5F85\u5024: {2}\n\u691C\u51FA\u5024: {3} 37.36 - 37.37 # 0: symbol kind, 1: name, 2: list of type or message segment, 3: list of type or message segment, 4: symbol kind, 5: type, 6: message segment 37.38 -compiler.err.cant.apply.symbol.1={4} {5}\u306E{0} {1}\u306F\u6307\u5B9A\u3055\u308C\u305F\u578B\u306B\u9069\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n\u671F\u5F85\u5024: {2}\n\u691C\u51FA\u5024: {3}\n\u7406\u7531: {6} 37.39 +compiler.err.cant.apply.symbol={4} {5}\u306E{0} {1}\u306F\u6307\u5B9A\u3055\u308C\u305F\u578B\u306B\u9069\u7528\u3067\u304D\u307E\u305B\u3093\u3002\n\u671F\u5F85\u5024: {2}\n\u691C\u51FA\u5024: {3}\n\u7406\u7531: {6} 37.40 37.41 # 0: symbol kind, 1: name, 2: list of type 37.42 compiler.err.cant.apply.symbols={1}\u306B\u9069\u5207\u306A{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093({2}) 37.43 37.44 +# 0: symbol kind, 1: name, 2: list of type or message segment, 3: list of type or message segment, 4: symbol kind, 5: type, 6: message segment 37.45 +compiler.misc.cant.apply.symbol={4} {5}\u306E{0} {1}\u306F\u6307\u5B9A\u3055\u308C\u305F\u578B\u306B\u9069\u7528\u3067\u304D\u307E\u305B\u3093\n\u671F\u5F85\u5024: {2}\n\u691C\u51FA\u5024: {3}\n\u7406\u7531: {6} 37.46 + 37.47 +# 0: symbol kind, 1: name, 2: list of type 37.48 +compiler.misc.cant.apply.symbols={1}\u306B\u9069\u5207\u306A{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093({2}) 37.49 + 37.50 +# 0: symbol kind, 1: symbol 37.51 +compiler.misc.no.abstracts={0} {1}\u3067\u62BD\u8C61\u30E1\u30BD\u30C3\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 37.52 + 37.53 +# 0: symbol kind, 1: symbol 37.54 +compiler.misc.incompatible.abstracts={0} {1}\u3067\u8907\u6570\u306E\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u306A\u3044\u62BD\u8C61\u30E1\u30BD\u30C3\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F 37.55 + 37.56 +compiler.err.bad.functional.intf.anno=\u4E88\u671F\u3057\u306A\u3044@FunctionalInterface\u6CE8\u91C8 37.57 + 37.58 +# 0: message segment 37.59 +compiler.err.bad.functional.intf.anno.1=\u4E88\u671F\u3057\u306A\u3044@FunctionalInterface\u6CE8\u91C8\n{0} 37.60 + 37.61 +# 0: symbol 37.62 +compiler.misc.not.a.functional.intf={0}\u306F\u6A5F\u80FD\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093 37.63 + 37.64 +# 0: symbol, 1: message segment 37.65 +compiler.misc.not.a.functional.intf.1={0}\u306F\u6A5F\u80FD\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093\n{1} 37.66 + 37.67 +# 0: symbol, 1: symbol kind, 2: symbol 37.68 +compiler.misc.invalid.generic.lambda.target=\u30E9\u30E0\u30C0\u5F0F\u306E\u6A5F\u80FD\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF\u304C\u7121\u52B9\u3067\u3059\n{1} {2}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u306F\u6C4E\u7528\u3067\u3059 37.69 + 37.70 +# 0: symbol kind, 1: symbol 37.71 +compiler.misc.incompatible.descs.in.functional.intf={0} {1}\u3067\u4E0D\u9069\u5408\u306A\u6A5F\u80FD\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F 37.72 + 37.73 +# 0: name, 1: list of type, 2: type, 3: list of type 37.74 +compiler.misc.descriptor=\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF: {2} {0}({1}) 37.75 + 37.76 +# 0: name, 1: list of type, 2: type, 3: list of type 37.77 +compiler.misc.descriptor.throws=\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF: {2} {0}({1})\u3067{3}\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3059 37.78 + 37.79 +# 0: type 37.80 +compiler.misc.no.suitable.functional.intf.inst={0}\u306E\u6A5F\u80FD\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30C7\u30A3\u30B9\u30AF\u30EA\u30D7\u30BF\u3092\u63A8\u8AD6\u3067\u304D\u307E\u305B\u3093 37.81 + 37.82 +# 0: type 37.83 +compiler.misc.secondary.bound.must.be.marker.intf=\u30BB\u30AB\u30F3\u30C0\u30EA\u30FB\u30D0\u30A4\u30F3\u30C7\u30A3\u30F3\u30B0{0}\u306F\u30DE\u30FC\u30AB\u30FC\u30FB\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 37.84 + 37.85 +# 0: symbol kind, 1: message segment 37.86 +compiler.err.invalid.mref={0}\u53C2\u7167\u304C\u7121\u52B9\u3067\u3059\u3002{1} 37.87 + 37.88 +# 0: symbol kind, 1: message segment 37.89 +compiler.misc.invalid.mref={0}\u53C2\u7167\u304C\u7121\u52B9\u3067\u3059\u3002{1} 37.90 + 37.91 +compiler.misc.static.mref.with.targs=static\u30E1\u30BD\u30C3\u30C9\u53C2\u7167\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u5316\u3055\u308C\u305F\u4FEE\u98FE\u5B50 37.92 + 37.93 +compiler.misc.static.bound.mref=static\u306E\u30D0\u30A4\u30F3\u30C7\u30A3\u30F3\u30B0\u3055\u308C\u305F\u30E1\u30BD\u30C3\u30C9\u53C2\u7167 37.94 + 37.95 # 0: symbol 37.96 compiler.err.cant.assign.val.to.final.var=final\u5909\u6570{0}\u306B\u5024\u3092\u4EE3\u5165\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 37.97 37.98 +# 0: symbol, 1: message segment 37.99 +compiler.err.cant.ref.non.effectively.final.var={1}\u304B\u3089\u53C2\u7167\u3055\u308C\u308B\u30ED\u30FC\u30AB\u30EB\u5909\u6570\u306F\u3001final\u307E\u305F\u306F\u4E8B\u5B9F\u4E0A\u306Efinal\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 37.100 + 37.101 + 37.102 +compiler.misc.lambda=\u30E9\u30E0\u30C0\u5F0F 37.103 + 37.104 +compiler.misc.inner.cls=\u5185\u90E8\u30AF\u30E9\u30B9 37.105 + 37.106 # 0: type 37.107 compiler.err.cant.deref={0}\u306F\u9593\u63A5\u53C2\u7167\u3067\u304D\u307E\u305B\u3093 37.108 37.109 @@ -142,8 +201,6 @@ 37.110 # 0: symbol 37.111 compiler.err.cant.ref.before.ctor.called=\u30B9\u30FC\u30D1\u30FC\u30BF\u30A4\u30D7\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u547C\u51FA\u3057\u524D\u306F{0}\u3092\u53C2\u7167\u3067\u304D\u307E\u305B\u3093 37.112 37.113 -compiler.err.cant.ret.val.from.meth.decl.void=\u623B\u308A\u5024\u306E\u578B\u304Cvoid\u306E\u30E1\u30BD\u30C3\u30C9\u304B\u3089\u306F\u5024\u3092\u8FD4\u305B\u307E\u305B\u3093 37.114 - 37.115 compiler.err.cant.select.static.class.from.param.type=\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u3055\u308C\u305F\u578B\u304B\u3089static\u30AF\u30E9\u30B9\u3092\u9078\u629E\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 37.116 37.117 # 0: symbol, 1: string, 2: string 37.118 @@ -154,6 +211,8 @@ 37.119 # 0: symbol kind, 1: symbol 37.120 compiler.err.clash.with.pkg.of.same.name={0} {1}\u306F\u540C\u540D\u306E\u30D1\u30C3\u30B1\u30FC\u30B8\u3068\u7AF6\u5408\u3057\u307E\u3059 37.121 37.122 +compiler.err.class.not.allowed=\u30AF\u30E9\u30B9\u3001\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u307E\u305F\u306F\u5217\u6319\u578B\u306E\u5BA3\u8A00\u3092\u3053\u3053\u3067\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 37.123 + 37.124 compiler.err.const.expr.req=\u5B9A\u6570\u5F0F\u304C\u5FC5\u8981\u3067\u3059 37.125 37.126 compiler.err.cont.outside.loop=continue\u304C\u30EB\u30FC\u30D7\u306E\u5916\u306B\u3042\u308A\u307E\u3059 37.127 @@ -169,10 +228,8 @@ 37.128 # 0: type 37.129 compiler.err.no.superclass={0}\u306B\u306F\u30B9\u30FC\u30D1\u30FC\u30AF\u30E9\u30B9\u304C\u3042\u308A\u307E\u305B\u3093 37.130 37.131 -compiler.err.wrong.target.for.polymorphic.signature.definition=MethodHandle API\u306E\u4F5C\u6210\u306B\u306F-target 7\u30E9\u30F3\u30BF\u30A4\u30E0\u4EE5\u4E0A\u304C\u5FC5\u8981\u3067\u3059\u3002\u73FE\u5728\u306F-target {0}\u3067\u3059 37.132 - 37.133 # 0: symbol, 1: type, 2: symbol, 3: type, 4: unused 37.134 -compiler.err.concrete.inheritance.conflict={1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u3068{3}\u306E{2}\u306F\u540C\u3058\u30B7\u30B0\u30CB\u30C1\u30E3\u304B\u3089\u7D99\u627F\u3055\u308C\u3066\u3044\u307E\u3059 37.135 +compiler.err.concrete.inheritance.conflict={1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u3068{3}\u306E{2}\u306F\u540C\u3058\u30B7\u30B0\u30CD\u30C1\u30E3\u304B\u3089\u7D99\u627F\u3055\u308C\u3066\u3044\u307E\u3059 37.136 37.137 compiler.err.default.allowed.in.intf.annotation.member=\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u306F@interface\u30E1\u30F3\u30D0\u30FC\u5185\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059 37.138 37.139 @@ -181,9 +238,48 @@ 37.140 37.141 compiler.err.duplicate.annotation=\u6CE8\u91C8\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059 37.142 37.143 +# 0: type 37.144 +compiler.err.duplicate.annotation.invalid.repeated=\u6CE8\u91C8{0}\u3092\u7E70\u308A\u8FD4\u305B\u307E\u305B\u3093\n\u6709\u52B9\u306A\u5305\u542B\u3059\u308B\u6CE8\u91C8\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 37.145 + 37.146 # 0: name, 1: type 37.147 compiler.err.duplicate.annotation.member.value={1}\u306E\u6CE8\u91C8\u30E1\u30F3\u30D0\u30FC\u306E\u5024{0}\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059 37.148 37.149 +# 0: type, 1: type 37.150 +compiler.err.duplicate.annotation.missing.container=\u6CE8\u91C8\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\u3002{0}\u306E\u5BA3\u8A00\u306B\u306F\u6709\u52B9\u306A{1}\u6CE8\u91C8\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093 37.151 + 37.152 +# 0: type 37.153 +compiler.err.invalid.repeatable.annotation=\u6CE8\u91C8\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\u3002{0}\u306F\u7121\u52B9\u306A\u7E70\u8FD4\u3057\u53EF\u80FD\u6CE8\u91C8\u3067\u6CE8\u91C8\u4ED8\u3051\u3055\u308C\u3066\u3044\u307E\u3059 37.154 + 37.155 +# 0: type 37.156 +compiler.err.invalid.repeatable.annotation.no.value=\u6CE8\u91C8\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\u3002{0}\u306F\u6709\u52B9\u306A\u7E70\u8FD4\u3057\u53EF\u80FD\u306A\u3082\u306E\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u5024\u8981\u7D20\u30E1\u30BD\u30C3\u30C9\u304C\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u305B\u3093 37.157 + 37.158 +# 0: type, 1: number 37.159 +compiler.err.invalid.repeatable.annotation.multiple.values=\u6CE8\u91C8\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\u3002{0}\u306F\u6709\u52B9\u306A\u7E70\u8FD4\u3057\u53EF\u80FD\u306A\u3082\u306E\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002{1}\u5024\u8981\u7D20\u30E1\u30BD\u30C3\u30C9\u304C\u5BA3\u8A00\u3055\u308C\u3066\u3044\u307E\u3059 37.160 + 37.161 +# 0: type 37.162 +compiler.err.invalid.repeatable.annotation.invalid.value=\u6CE8\u91C8\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\u3002{0}\u306F\u6709\u52B9\u306A\u7E70\u8FD4\u3057\u53EF\u80FD\u306A\u3082\u306E\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u5024\u8981\u7D20\u304C\u7121\u52B9\u3067\u3059\u3002\u30E1\u30BD\u30C3\u30C9\u304C\u5FC5\u8981\u3067\u3059 37.163 + 37.164 +# 0: type, 1: type, 2: type 37.165 +compiler.err.invalid.repeatable.annotation.value.return=\u6CE8\u91C8\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059\u3002\u5305\u542B\u3059\u308B\u6CE8\u91C8{0}\u306E\u5024\u8981\u7D20\u306B\u306F\u578B{2}\u3092\u6307\u5B9A\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002{1}\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F 37.166 + 37.167 +# 0: type, 1: symbol 37.168 +compiler.err.invalid.repeatable.annotation.elem.nondefault=\u5305\u542B\u3059\u308B\u6CE8\u91C8{0}\u306B\u306F\u8981\u7D20{1}\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u5024\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093 37.169 + 37.170 +# 0: symbol, 1: type, 2: symbol, 3: type 37.171 +compiler.err.invalid.repeatable.annotation.retention=\u5305\u542B\u3059\u308B\u6CE8\u91C8{0}\u306B\u306F\u3001\u4FDD\u6709{3}\u3092\u542B\u3080\u5305\u542B\u3055\u308C\u305F\u6CE8\u91C8{2}\u3088\u308A\u77ED\u3044\u4FDD\u6709({1})\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059 37.172 + 37.173 +# 0: symbol, 1: symbol 37.174 +compiler.err.invalid.repeatable.annotation.not.documented=\u7E70\u308A\u8FD4\u3055\u308C\u305F\u6CE8\u91C8{1}\u306F@Documented\u3067\u3059\u304C\u3001\u5305\u542B\u3059\u308B\u6CE8\u91C8\u30BF\u30A4\u30D7{0}\u306F\u9055\u3044\u307E\u3059 37.175 + 37.176 +# 0: symbol, 1: symbol 37.177 +compiler.err.invalid.repeatable.annotation.not.inherited=\u308A\u8FD4\u3055\u308C\u305F\u6CE8\u91C8\u30BF\u30A4\u30D7{1}\u306F@Inherited\u3067\u3059\u304C\u3001\u5305\u542B\u3059\u308B\u6CE8\u91C8\u30BF\u30A4\u30D7{0}\u306F\u9055\u3044\u307E\u3059 37.178 + 37.179 +# 0: symbol, 1: symbol 37.180 +compiler.err.invalid.repeatable.annotation.incompatible.target=\u30B3\u30F3\u30C6\u30CA\u6CE8\u91C8{0}\u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u306F\u3001\u7E70\u308A\u8FD4\u3055\u308C\u305F\u6CE8\u91C8{1}\u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u306E\u30B5\u30D6\u30BB\u30C3\u30C8\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 37.181 + 37.182 +# 0: symbol 37.183 +compiler.err.invalid.repeatable.annotation.repeated.and.container.present=\u30B3\u30F3\u30C6\u30CA{0}\u306F\u542B\u307E\u308C\u3066\u3044\u308B\u8981\u7D20\u3068\u540C\u6642\u306B\u6307\u5B9A\u3067\u304D\u307E\u305B\u3093 37.184 + 37.185 # 0: name 37.186 compiler.err.duplicate.class=\u30AF\u30E9\u30B9{0}\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059 37.187 37.188 @@ -245,10 +341,10 @@ 37.189 compiler.err.generic.throwable=\u6C4E\u7528\u30AF\u30E9\u30B9\u306Fjava.lang.Throwable\u3092\u62E1\u5F35\u3067\u304D\u307E\u305B\u3093 37.190 37.191 # 0: symbol 37.192 -compiler.err.icls.cant.have.static.decl=\u5185\u90E8\u30AF\u30E9\u30B9{0}\u306E\u9759\u7684\u5BA3\u8A00\u304C\u4E0D\u6B63\u3067\u3059\n\u4FEE\u98FE\u5B50\''static\''\u306F\u5B9A\u6570\u304A\u3088\u3073\u5909\u6570\u306E\u5BA3\u8A00\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059 37.193 +compiler.err.icls.cant.have.static.decl=\u5185\u90E8\u30AF\u30E9\u30B9{0}\u306E\u9759\u7684\u5BA3\u8A00\u304C\u4E0D\u6B63\u3067\u3059\n\u4FEE\u98FE\u5B50''static''\u306F\u5B9A\u6570\u304A\u3088\u3073\u5909\u6570\u306E\u5BA3\u8A00\u3067\u306E\u307F\u4F7F\u7528\u3067\u304D\u307E\u3059 37.194 37.195 # 0: string 37.196 -compiler.err.illegal.char=\\{0}\u306F\u4E0D\u6B63\u306A\u6587\u5B57\u3067\u3059 37.197 +compiler.err.illegal.char=''{0}''\u306F\u4E0D\u6B63\u306A\u6587\u5B57\u3067\u3059 37.198 37.199 compiler.err.illegal.char.for.encoding=\u3053\u306E\u6587\u5B57\u306F\u3001\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0{0}\u306B\u30DE\u30C3\u30D7\u3067\u304D\u307E\u305B\u3093 37.200 37.201 @@ -280,11 +376,15 @@ 37.202 37.203 compiler.err.illegal.underscore=\u4E0D\u6B63\u306A\u30A2\u30F3\u30C0\u30FC\u30B9\u30B3\u30A2\u3067\u3059 37.204 37.205 +compiler.err.illegal.dot=\u4E0D\u6B63\u306A''.''\u3067\u3059 37.206 + 37.207 # 0: symbol 37.208 compiler.err.illegal.qual.not.icls=\u4FEE\u98FE\u5B50\u304C\u4E0D\u6B63\u3067\u3059\u3002{0}\u306F\u5185\u90E8\u30AF\u30E9\u30B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093 37.209 37.210 compiler.err.illegal.start.of.expr=\u5F0F\u306E\u958B\u59CB\u304C\u4E0D\u6B63\u3067\u3059 37.211 37.212 +compiler.err.illegal.start.of.stmt=\u6587\u306E\u958B\u59CB\u304C\u4E0D\u6B63\u3067\u3059 37.213 + 37.214 compiler.err.illegal.start.of.type=\u578B\u306E\u958B\u59CB\u304C\u4E0D\u6B63\u3067\u3059 37.215 37.216 compiler.err.illegal.unicode.esc=Unicode\u30A8\u30B9\u30B1\u30FC\u30D7\u304C\u4E0D\u6B63\u3067\u3059 37.217 @@ -302,8 +402,6 @@ 37.218 # 0: number 37.219 compiler.err.int.number.too.large=\u6574\u6570{0}\u304C\u5927\u304D\u3059\u304E\u307E\u3059 37.220 37.221 -compiler.err.internal.error.cant.instantiate=\u5185\u90E8\u30A8\u30E9\u30FC\u3067\u3059\u3002{0}\u3092{1}\u3067({2})\u306B\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u751F\u6210\u3067\u304D\u307E\u305B\u3093 37.222 - 37.223 compiler.err.intf.annotation.members.cant.have.params=@interface\u30E1\u30F3\u30D0\u30FC\u304C\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 37.224 37.225 compiler.err.intf.annotation.cant.have.type.params=@interface\u304C\u578B\u30D1\u30E9\u30E1\u30FC\u30BF\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 37.226 @@ -315,7 +413,7 @@ 37.227 37.228 compiler.err.intf.expected.here=\u3053\u3053\u306B\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u304C\u5FC5\u8981\u3067\u3059 37.229 37.230 -compiler.err.intf.meth.cant.have.body=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30E1\u30BD\u30C3\u30C9\u304C\u672C\u4F53\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 37.231 +compiler.err.intf.meth.cant.have.body=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u62BD\u8C61\u30E1\u30BD\u30C3\u30C9\u304C\u672C\u4F53\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 37.232 37.233 compiler.err.invalid.annotation.member.type=\u6CE8\u91C8\u30E1\u30F3\u30D0\u30FC\u306E\u578B\u304C\u4E0D\u6B63\u3067\u3059 37.234 37.235 @@ -327,6 +425,8 @@ 37.236 37.237 compiler.err.varargs.and.old.array.syntax=\u65E7\u5F0F\u306E\u914D\u5217\u8868\u8A18\u6CD5\u306F\u53EF\u5909\u5F15\u6570\u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 37.238 37.239 +compiler.err.variable.not.allowed=\u5909\u6570\u306E\u5BA3\u8A00\u3092\u3053\u3053\u3067\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 37.240 + 37.241 # 0: name 37.242 compiler.err.label.already.in.use=\u30E9\u30D9\u30EB{0}\u306F\u3059\u3067\u306B\u4F7F\u7528\u3055\u308C\u3066\u3044\u307E\u3059 37.243 37.244 @@ -337,6 +437,8 @@ 37.245 37.246 compiler.err.cannot.create.array.with.type.arguments=\u578B\u5F15\u6570\u3092\u6301\u3064\u914D\u5217\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 37.247 37.248 +compiler.err.cannot.create.array.with.diamond=''<>''\u3092\u6301\u3064\u914D\u5217\u306F\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 37.249 + 37.250 # 37.251 # limits. We don't give the limits in the diagnostic because we expect 37.252 # them to change, yet we want to use the same diagnostic. These are all 37.253 @@ -360,7 +462,7 @@ 37.254 37.255 compiler.err.limit.string=\u5B9A\u6570\u6587\u5B57\u5217\u304C\u9577\u3059\u304E\u307E\u3059 37.256 37.257 -compiler.err.limit.string.overflow=\u6587\u5B57\u5217\"{0}...\"\u306EUTF8\u8868\u73FE\u304C\u3001\u5B9A\u6570\u30D7\u30FC\u30EB\u306B\u5BFE\u3057\u3066\u9577\u3059\u304E\u307E\u3059 37.258 +compiler.err.limit.string.overflow=\u6587\u5B57\u5217"{0}..."\u306EUTF8\u8868\u73FE\u304C\u3001\u5B9A\u6570\u30D7\u30FC\u30EB\u306B\u5BFE\u3057\u3066\u9577\u3059\u304E\u307E\u3059 37.259 37.260 compiler.err.malformed.fp.lit=\u6D6E\u52D5\u5C0F\u6570\u70B9\u30EA\u30C6\u30E9\u30EB\u304C\u4E0D\u6B63\u3067\u3059 37.261 37.262 @@ -370,7 +472,9 @@ 37.263 37.264 compiler.err.missing.ret.stmt=return\u6587\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093 37.265 37.266 -compiler.err.missing.ret.val=\u623B\u308A\u5024\u304C\u3042\u308A\u307E\u305B\u3093 37.267 +compiler.misc.missing.ret.val=\u623B\u308A\u5024\u304C\u3042\u308A\u307E\u305B\u3093 37.268 + 37.269 +compiler.misc.unexpected.ret.val=\u4E88\u671F\u3057\u306A\u3044\u623B\u308A\u5024 37.270 37.271 # 0: set of modifier 37.272 compiler.err.mod.not.allowed.here=\u4FEE\u98FE\u5B50{0}\u3092\u3053\u3053\u3067\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 37.273 @@ -396,7 +500,26 @@ 37.274 compiler.err.native.meth.cant.have.body=native\u30E1\u30BD\u30C3\u30C9\u304C\u672C\u4F53\u3092\u6301\u3064\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 37.275 37.276 # 0: type, 1: type 37.277 -compiler.err.neither.conditional.subtype=?\u306B\u5BFE\u3059\u308B\u4E92\u63DB\u6027\u306E\u306A\u3044\u578B : \u3069\u3061\u3089\u3082\u4ED6\u65B9\u306E\u30B5\u30D6\u30BF\u30A4\u30D7\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n2\u756A\u76EE\u306E\u30AA\u30DA\u30E9\u30F3\u30C9 : {0}\n3\u756A\u76EE\u306E\u30AA\u30DA\u30E9\u30F3\u30C9 : {1} 37.278 +compiler.err.neither.conditional.subtype=?\u306B\u5BFE\u3059\u308B\u4E0D\u9069\u5408\u306A\u578B : \u3069\u3061\u3089\u3082\u4ED6\u65B9\u306E\u30B5\u30D6\u30BF\u30A4\u30D7\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\n2\u756A\u76EE\u306E\u30AA\u30DA\u30E9\u30F3\u30C9 : {0}\n3\u756A\u76EE\u306E\u30AA\u30DA\u30E9\u30F3\u30C9 : {1} 37.279 + 37.280 +# 0: message segment 37.281 +compiler.misc.incompatible.type.in.conditional=\u6761\u4EF6\u5F0F\u306E\u578B\u304C\u4E0D\u6B63\u3067\u3059\u3002{0} 37.282 + 37.283 +compiler.misc.conditional.target.cant.be.void=\u6761\u4EF6\u5F0F\u306E\u30BF\u30FC\u30B2\u30C3\u30C8\u578B\u306Fvoid\u306B\u3067\u304D\u307E\u305B\u3093 37.284 + 37.285 +# 0: type 37.286 +compiler.misc.incompatible.ret.type.in.lambda=\u30E9\u30E0\u30C0\u5F0F\u306E\u623B\u308A\u578B\u304C\u4E0D\u6B63\u3067\u3059\n{0} 37.287 + 37.288 +# 0: type 37.289 +compiler.misc.incompatible.ret.type.in.mref=\u30E1\u30BD\u30C3\u30C9\u53C2\u7167\u306E\u623B\u308A\u578B\u304C\u4E0D\u6B63\u3067\u3059\n{0} 37.290 + 37.291 +# 0: list of type 37.292 +compiler.err.incompatible.thrown.types.in.lambda=\u30E9\u30E0\u30C0\u5F0F\u3067\u30B9\u30ED\u30FC\u3055\u308C\u305F\u30BF\u30A4\u30D7{0}\u306F\u4E0D\u9069\u5408\u3067\u3059 37.293 + 37.294 +# 0: list of type 37.295 +compiler.err.incompatible.thrown.types.in.mref=\u30E1\u30BD\u30C3\u30C9\u53C2\u7167\u306E\u30B9\u30ED\u30FC\u3055\u308C\u305F\u30BF\u30A4\u30D7{0}\u306F\u4E0D\u9069\u5408\u3067\u3059 37.296 + 37.297 +compiler.misc.incompatible.arg.types.in.lambda=\u30E9\u30E0\u30C0\u5F0F\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u578B\u306F\u4E0D\u9069\u5408\u3067\u3059 37.298 37.299 compiler.err.new.not.allowed.in.annotation=''new''\u306F\u6CE8\u91C8\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 37.300 37.301 @@ -414,6 +537,12 @@ 37.302 compiler.err.not.def.access.class.intf.cant.access={1}\u306E{0}\u304C\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u306A\u3044\u30AF\u30E9\u30B9\u307E\u305F\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059 37.303 37.304 # 0: symbol, 1: symbol 37.305 +compiler.misc.not.def.access.class.intf.cant.access={1}\u306E{0}\u304C\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u306A\u3044\u30AF\u30E9\u30B9\u307E\u305F\u306F\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306B\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u3059 37.306 + 37.307 +# 0: symbol, 1: list of type, 2: type 37.308 +compiler.misc.cant.access.inner.cls.constr=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF{0}({1})\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\n\u5185\u90E8\u30AF\u30E9\u30B9\u3092\u56F2\u3080\u578B{2}\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u304C\u30B9\u30B3\u30FC\u30D7\u5185\u306B\u3042\u308A\u307E\u305B\u3093 37.309 + 37.310 +# 0: symbol, 1: symbol 37.311 compiler.err.not.def.public.cant.access={1}\u306E{0}\u306Fpublic\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002\u30D1\u30C3\u30B1\u30FC\u30B8\u5916\u304B\u3089\u306F\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093 37.312 37.313 # 0: name 37.314 @@ -440,7 +569,7 @@ 37.315 # Errors related to annotation processing 37.316 37.317 # 0: symbol, 1: string, 2: stack-trace 37.318 -compiler.err.proc.cant.access={0}\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\n{1}\n\u8A73\u7D30\u306F\u6B21\u306E\u30B9\u30BF\u30C3\u30AF\u30C8\u30EC\u30FC\u30B9\u3067\u8ABF\u67FB\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n{2} 37.319 +compiler.err.proc.cant.access={0}\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\n{1}\n\u8A73\u7D30\u306F\u6B21\u306E\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3067\u8ABF\u67FB\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n{2} 37.320 37.321 # 0: symbol, 1: string 37.322 compiler.err.proc.cant.access.1={0}\u306B\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093\n{1} 37.323 @@ -455,15 +584,13 @@ 37.324 # 0: list of string 37.325 compiler.err.proc.no.explicit.annotation.processing.requested=\u30AF\u30E9\u30B9\u540D''{0}''\u304C\u53D7\u3051\u5165\u308C\u3089\u308C\u308B\u306E\u306F\u3001\u6CE8\u91C8\u51E6\u7406\u304C\u660E\u793A\u7684\u306B\u30EA\u30AF\u30A8\u30B9\u30C8\u3055\u308C\u305F\u5834\u5408\u306E\u307F\u3067\u3059 37.326 37.327 -compiler.err.proc.no.service=\u30B5\u30FC\u30D3\u30B9\u30FB\u30ED\u30FC\u30C0\u30FC\u30FB\u30AF\u30E9\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\njava.util.ServiceLoader\u304Bsun.misc.Service\u304C\u4F7F\u7528\u3067\u304D\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002 37.328 +compiler.err.proc.no.service=\u30B5\u30FC\u30D3\u30B9\u30FB\u30ED\u30FC\u30C0\u30FC\u304C\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u304C\u3001\u6CE8\u91C8\u51E6\u7406\u306B\u5FC5\u8981\u3067\u3059\u3002 37.329 37.330 compiler.err.proc.processor.bad.option.name=\u30D7\u30ED\u30BB\u30C3\u30B5''{1}''\u306B\u3088\u3063\u3066\u6307\u5B9A\u3055\u308C\u305F\u30AA\u30D7\u30B7\u30E7\u30F3\u540D''{0}''\u304C\u4E0D\u6B63\u3067\u3059 37.331 37.332 # 0: string 37.333 compiler.err.proc.processor.cant.instantiate=\u30D7\u30ED\u30BB\u30C3\u30B5''{0}''\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F 37.334 37.335 -compiler.err.proc.processor.constructor.error=\u30D7\u30ED\u30BB\u30C3\u30B5\u30FB\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u69CB\u7BC9\u4E2D\u306B\u4F8B\u5916\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F: {0} 37.336 - 37.337 # 0: string 37.338 compiler.err.proc.processor.not.found=\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5''{0}''\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 37.339 37.340 @@ -482,7 +609,10 @@ 37.341 compiler.err.recursive.ctor.invocation=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u547C\u51FA\u3057\u304C\u518D\u5E30\u7684\u3067\u3059 37.342 37.343 # 0: name, 1: symbol kind, 2: symbol, 3: symbol, 4: symbol kind, 5: symbol, 6: symbol 37.344 -compiler.err.ref.ambiguous={0}\u306E\u53C2\u7167\u306F\u3042\u3044\u307E\u3044\u3067\u3059\u3002{3}\u306E{1} {2}\u3068{6}\u306E{4} {5}\u304C\u4E21\u65B9\u9069\u5408\u3057\u307E\u3059 37.345 +compiler.err.ref.ambiguous={0}\u306E\u53C2\u7167\u306F\u3042\u3044\u307E\u3044\u3067\u3059\n{3}\u306E{1} {2}\u3068{6}\u306E{4} {5}\u306E\u4E21\u65B9\u304C\u4E00\u81F4\u3057\u307E\u3059 37.346 + 37.347 +# 0: name, 1: symbol kind, 2: symbol, 3: symbol, 4: symbol kind, 5: symbol, 6: symbol 37.348 +compiler.misc.ref.ambiguous={0}\u306E\u53C2\u7167\u306F\u3042\u3044\u307E\u3044\u3067\u3059\n{3}\u306E{1} {2}\u3068{6}\u306E{4} {5}\u306E\u4E21\u65B9\u304C\u4E00\u81F4\u3057\u307E\u3059 37.349 37.350 compiler.err.repeated.annotation.target=\u6CE8\u91C8\u30BF\u30FC\u30B2\u30C3\u30C8\u304C\u7E70\u308A\u8FD4\u3055\u308C\u3066\u3044\u307E\u3059 37.351 37.352 @@ -495,9 +625,9 @@ 37.353 37.354 compiler.err.ret.outside.meth=\u30E1\u30BD\u30C3\u30C9\u306E\u5916\u306Ereturn\u6587\u3067\u3059 37.355 37.356 -compiler.err.signature.doesnt.match.supertype=\u30B7\u30B0\u30CB\u30C1\u30E3\u304C{0}\u306B\u9069\u5408\u3057\u307E\u305B\u3093\u3002\u4E92\u63DB\u6027\u306E\u306A\u3044\u30B9\u30FC\u30D1\u30FC\u30BF\u30A4\u30D7\u3067\u3059 37.357 - 37.358 -compiler.err.signature.doesnt.match.intf=\u30B7\u30B0\u30CB\u30C1\u30E3\u304C{0}\u306B\u9069\u5408\u3057\u307E\u305B\u3093\u3002\u4E92\u63DB\u6027\u306E\u306A\u3044\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059 37.359 +compiler.err.signature.doesnt.match.supertype=\u30B7\u30B0\u30CD\u30C1\u30E3\u304C{0}\u306B\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u4E0D\u9069\u5408\u306A\u30B9\u30FC\u30D1\u30FC\u30BF\u30A4\u30D7\u3067\u3059 37.360 + 37.361 +compiler.err.signature.doesnt.match.intf=\u30B7\u30B0\u30CD\u30C1\u30E3\u304C{0}\u306B\u4E00\u81F4\u3057\u307E\u305B\u3093\u3002\u4E0D\u9069\u5408\u306A\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3067\u3059 37.362 37.363 # 0: symbol, 1: symbol, 2: symbol 37.364 compiler.err.does.not.override.abstract={0}\u306Fabstract\u3067\u306A\u304F\u3001{2}\u5185\u306Eabstract\u30E1\u30BD\u30C3\u30C9{1}\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u305B\u3093 37.365 @@ -534,7 +664,28 @@ 37.366 compiler.err.type.var.more.than.once.in.result=\u578B\u5909\u6570{0}\u306F{1}\u306E\u578B\u30672\u56DE\u4EE5\u4E0A\u51FA\u73FE\u3057\u307E\u3059\u3002\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u751F\u6210\u3055\u308C\u306A\u3044\u307E\u307E\u306B\u306F\u3067\u304D\u307E\u305B\u3093 37.367 37.368 # 0: type, 1: type, 2: string 37.369 -compiler.err.types.incompatible.diff.ret=\u578B{0}\u3068\u578B{1}\u306E\u4E92\u63DB\u6027\u304C\u3042\u308A\u307E\u305B\u3093\u3002\u4E21\u65B9\u3068\u3082{2}\u3092\u5B9A\u7FA9\u3057\u3066\u3044\u307E\u3059\u304C\u3001\u623B\u308A\u5024\u306E\u578B\u304C\u7121\u95A2\u4FC2\u3067\u3059 37.370 +compiler.err.types.incompatible.diff.ret=\u578B{0}\u3068\u578B{1}\u304C\u9069\u5408\u3057\u3066\u3044\u307E\u305B\u3093\u3002\u4E21\u65B9\u3068\u3082{2}\u3092\u5B9A\u7FA9\u3057\u3066\u3044\u307E\u3059\u304C\u3001\u623B\u308A\u5024\u306E\u578B\u304C\u7121\u95A2\u4FC2\u3067\u3059 37.371 + 37.372 +# 0: kind, 1: type, 2: name, 3: list of type, 4: symbol, 5: symbol 37.373 +compiler.err.types.incompatible.unrelated.defaults={0} {1}\u306F\u578B{4}\u3068{5}\u304B\u3089{2}({3})\u306E\u95A2\u9023\u3057\u306A\u3044\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u7D99\u627F\u3057\u307E\u3059 37.374 + 37.375 +# 0: kind, 1: type, 2: name, 3: list of type, 4: symbol, 5: symbol 37.376 +compiler.err.types.incompatible.abstract.default={0} {1}\u306F\u578B{4}\u3068{5}\u304B\u3089{2}({3})\u306E\u62BD\u8C61\u3068\u30C7\u30D5\u30A9\u30EB\u30C8\u3092\u7D99\u627F\u3057\u307E\u3059 37.377 + 37.378 +# 0: name, 1: kind, 2: symbol 37.379 +compiler.err.default.overrides.object.member={1} {2}\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9{0}\u306Fjava.lang.Object\u306E\u30E1\u30F3\u30D0\u30FC\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059 37.380 + 37.381 +# 0: type 37.382 +compiler.err.illegal.static.intf.meth.call=static\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u30FB\u30E1\u30BD\u30C3\u30C9\u30FB\u30B3\u30FC\u30EB\u304C\u4E0D\u6B63\u3067\u3059\n\u53D7\u4FE1\u5F0F\u306F\u578B\u4FEE\u98FE\u5B50''{0}''\u3067\u7F6E\u63DB\u3055\u308C\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 37.383 + 37.384 +# 0: type, 1: message segment 37.385 +compiler.err.illegal.default.super.call=\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u30B9\u30FC\u30D1\u30FC\u30FB\u30B3\u30FC\u30EB\u306E\u578B\u4FEE\u98FE\u5B50{0}\u304C\u4E0D\u6B63\u3067\u3059\n{1} 37.386 + 37.387 +# 0: symbol, 1: type 37.388 +compiler.misc.overridden.default={1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3055\u308C\u307E\u3059 37.389 + 37.390 +# 0: symbol, 1: symbol 37.391 +compiler.misc.redundant.supertype=\u5197\u9577\u306A\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9{0}\u306F{1}\u306B\u3088\u3063\u3066\u62E1\u5F35\u3055\u308C\u307E\u3057\u305F 37.392 37.393 compiler.err.unclosed.char.lit=\u6587\u5B57\u30EA\u30C6\u30E9\u30EB\u304C\u9589\u3058\u3089\u308C\u3066\u3044\u307E\u305B\u3093 37.394 37.395 @@ -550,19 +701,14 @@ 37.396 # 0: name 37.397 compiler.err.undef.label=\u30E9\u30D9\u30EB{0}\u306F\u672A\u5B9A\u7FA9\u3067\u3059 37.398 37.399 -compiler.err.undetermined.type={0}\u306E\u578B\u5F15\u6570\u3092\u63A8\u5B9A\u3067\u304D\u307E\u305B\u3093 37.400 - 37.401 -# 0: type, 1: message segment 37.402 -compiler.err.undetermined.type.1={0}\u306E\u578B\u5F15\u6570\u3092\u63A8\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\n\u7406\u7531: {1} 37.403 - 37.404 -# 0: list of type, 1: message segment 37.405 -compiler.err.invalid.inferred.types={0}\u306E\u63A8\u5B9A\u578B\u304C\u7121\u52B9\u3067\u3059\u3002{1} 37.406 - 37.407 # 0: message segment, 1: unused 37.408 -compiler.err.cant.apply.diamond={0}\u306E\u578B\u5F15\u6570\u3092\u63A8\u5B9A\u3067\u304D\u307E\u305B\u3093 37.409 - 37.410 -# 0: message segment, 1: message segment 37.411 -compiler.err.cant.apply.diamond.1={0}\u306E\u578B\u5F15\u6570\u3092\u63A8\u5B9A\u3067\u304D\u307E\u305B\u3093\u3002\n\u7406\u7531: {1} 37.412 +compiler.err.cant.apply.diamond={0}\u306E\u578B\u5F15\u6570\u3092\u63A8\u8AD6\u3067\u304D\u307E\u305B\u3093 37.413 + 37.414 +# 0: message segment or type, 1: message segment 37.415 +compiler.err.cant.apply.diamond.1={0}\u306E\u578B\u5F15\u6570\u3092\u63A8\u8AD6\u3067\u304D\u307E\u305B\u3093\n\u7406\u7531: {1} 37.416 + 37.417 +# 0: message segment or type, 1: message segment 37.418 +compiler.misc.cant.apply.diamond.1={0}\u306E\u578B\u5F15\u6570\u3092\u63A8\u8AD6\u3067\u304D\u307E\u305B\u3093\n\u7406\u7531: {1} 37.419 37.420 compiler.err.unreachable.stmt=\u3053\u306E\u6587\u306B\u5236\u5FA1\u304C\u79FB\u308B\u3053\u3068\u306F\u3042\u308A\u307E\u305B\u3093 37.421 37.422 @@ -605,7 +751,7 @@ 37.423 # 0: symbol 37.424 compiler.misc.varargs.trustme.on.virtual.varargs=\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u30FB\u30E1\u30BD\u30C3\u30C9{0}\u306Ffinal\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 37.425 37.426 -# 0: type, 1: kind, 2: symbol 37.427 +# 0: type, 1: symbol kind, 2: symbol 37.428 compiler.misc.inaccessible.varargs.type=\u4EEE\u53EF\u5909\u5F15\u6570\u8981\u7D20\u578B{0}\u306F{1} {2}\u304B\u3089\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093 37.429 37.430 # In the following string, {1} will always be the detail message from 37.431 @@ -620,7 +766,7 @@ 37.432 37.433 ## All errors which do not refer to a particular line in the source code are 37.434 ## preceded by this string. 37.435 -compiler.err.error=\u30A8\u30E9\u30FC:\u0020 37.436 +compiler.err.error=\u30A8\u30E9\u30FC: 37.437 37.438 # The following error messages do not refer to a line in the source code. 37.439 compiler.err.cant.read.file={0}\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093 37.440 @@ -637,7 +783,7 @@ 37.441 37.442 compiler.misc.fatal.err.cant.locate.ctor=\u81F4\u547D\u7684\u30A8\u30E9\u30FC: {0}\u306E\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u3092\u691C\u51FA\u3067\u304D\u307E\u305B\u3093 37.443 37.444 -compiler.misc.fatal.err.cant.close.loader=\u81F4\u547D\u7684\u30A8\u30E9\u30FC: \u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u306E\u30AF\u30E9\u30B9\u30FB\u30ED\u30FC\u30C0\u30FC\u3092\u9589\u3058\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 37.445 +compiler.misc.fatal.err.cant.close=\u81F4\u547D\u7684\u30A8\u30E9\u30FC: \u30B3\u30F3\u30D1\u30A4\u30E9\u30FB\u30EA\u30BD\u30FC\u30B9\u3092\u9589\u3058\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u305B\u3093 37.446 37.447 ##### 37.448 37.449 @@ -659,21 +805,24 @@ 37.450 37.451 ## The following string will appear before all messages keyed as: 37.452 ## "compiler.note". 37.453 + 37.454 +compiler.note.potential.lambda.found=\u3053\u306E\u533F\u540D\u5185\u90E8\u30AF\u30E9\u30B9\u3092\u30E9\u30E0\u30C0\u5F0F\u306B\u5909\u63DB\u3067\u304D\u307E\u3059\u3002 37.455 + 37.456 compiler.note.note=\u6CE8\u610F: 37.457 37.458 # 0: file name 37.459 -compiler.note.deprecated.filename={0}\u306F\u63A8\u5968\u3055\u308C\u306A\u3044API\u3092\u4F7F\u7528\u307E\u305F\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u307E\u3059\u3002 37.460 - 37.461 -compiler.note.deprecated.plural=\u4E00\u90E8\u306E\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u306F\u63A8\u5968\u3055\u308C\u306A\u3044API\u3092\u4F7F\u7528\u307E\u305F\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u307E\u3059\u3002 37.462 +compiler.note.deprecated.filename={0}\u306F\u975E\u63A8\u5968\u306EAPI\u3092\u4F7F\u7528\u307E\u305F\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u307E\u3059\u3002 37.463 + 37.464 +compiler.note.deprecated.plural=\u4E00\u90E8\u306E\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u306F\u975E\u63A8\u5968\u306EAPI\u3092\u4F7F\u7528\u307E\u305F\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u307E\u3059\u3002 37.465 37.466 # The following string may appear after one of the above deprecation 37.467 # messages. 37.468 compiler.note.deprecated.recompile=\u8A73\u7D30\u306F\u3001-Xlint:deprecation\u30AA\u30D7\u30B7\u30E7\u30F3\u3092\u6307\u5B9A\u3057\u3066\u518D\u30B3\u30F3\u30D1\u30A4\u30EB\u3057\u3066\u304F\u3060\u3055\u3044\u3002 37.469 37.470 # 0: file name 37.471 -compiler.note.deprecated.filename.additional={0}\u306B\u63A8\u5968\u3055\u308C\u306A\u3044API\u306E\u8FFD\u52A0\u4F7F\u7528\u307E\u305F\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u304C\u3042\u308A\u307E\u3059\u3002 37.472 - 37.473 -compiler.note.deprecated.plural.additional=\u4E00\u90E8\u306E\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u306F\u63A8\u5968\u3055\u308C\u306A\u3044API\u3092\u8FFD\u52A0\u4F7F\u7528\u307E\u305F\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u307E\u3059\u3002 37.474 +compiler.note.deprecated.filename.additional={0}\u306B\u975E\u63A8\u5968\u306EAPI\u306E\u8FFD\u52A0\u4F7F\u7528\u307E\u305F\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u304C\u3042\u308A\u307E\u3059\u3002 37.475 + 37.476 +compiler.note.deprecated.plural.additional=\u4E00\u90E8\u306E\u5165\u529B\u30D5\u30A1\u30A4\u30EB\u306F\u975E\u63A8\u5968\u306EAPI\u3092\u8FFD\u52A0\u4F7F\u7528\u307E\u305F\u306F\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u3066\u3044\u307E\u3059\u3002 37.477 37.478 # 0: file name 37.479 compiler.note.unchecked.filename={0}\u306E\u64CD\u4F5C\u306F\u3001\u672A\u30C1\u30A7\u30C3\u30AF\u307E\u305F\u306F\u5B89\u5168\u3067\u306F\u3042\u308A\u307E\u305B\u3093\u3002 37.480 @@ -773,12 +922,12 @@ 37.481 ## 37.482 37.483 ## All warning messages are preceded by the following string. 37.484 -compiler.warn.warning=\u8B66\u544A: 37.485 +compiler.warn.warning=\u8B66\u544A: 37.486 37.487 ## Warning messages may also include the following prefix to identify a 37.488 ## lint option 37.489 # 0: option name 37.490 -compiler.warn.lintOption=[{0}]\u0020 37.491 +compiler.warn.lintOption=[{0}] 37.492 37.493 # 0: symbol 37.494 compiler.warn.constant.SVUID=serialVersionUID\u306F\u30AF\u30E9\u30B9{0}\u306E\u5B9A\u6570\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 37.495 @@ -789,7 +938,7 @@ 37.496 compiler.warn.finally.cannot.complete=finally\u7BC0\u304C\u6B63\u5E38\u306B\u5B8C\u4E86\u3067\u304D\u307E\u305B\u3093 37.497 37.498 # 0: symbol, 1: symbol 37.499 -compiler.warn.has.been.deprecated={1}\u306E{0}\u306F\u63A8\u5968\u3055\u308C\u307E\u305B\u3093 37.500 +compiler.warn.has.been.deprecated={1}\u306E{0}\u306F\u975E\u63A8\u5968\u306B\u306A\u308A\u307E\u3057\u305F 37.501 37.502 # 0: symbol 37.503 compiler.warn.sun.proprietary={0}\u306F\u5185\u90E8\u6240\u6709\u306EAPI\u3067\u3042\u308A\u3001\u4ECA\u5F8C\u306E\u30EA\u30EA\u30FC\u30B9\u3067\u524A\u9664\u3055\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059 37.504 @@ -925,7 +1074,7 @@ 37.505 # 0: symbol 37.506 compiler.warn.varargs.unsafe.use.varargs.param=\u53EF\u5909\u5F15\u6570\u30E1\u30BD\u30C3\u30C9\u306F\u3001\u578B\u60C5\u5831\u4FDD\u6301\u53EF\u80FD\u3067\u306A\u3044\u53EF\u5909\u5F15\u6570\u30D1\u30E9\u30E1\u30FC\u30BF{0}\u304B\u3089\u306E\u30D2\u30FC\u30D7\u6C5A\u67D3\u306E\u539F\u56E0\u3068\u306A\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059 37.507 37.508 -compiler.warn.missing.deprecated.annotation=\u63A8\u5968\u3055\u308C\u306A\u3044\u9805\u76EE\u306F@Deprecated\u3067\u6CE8\u91C8\u304C\u4ED8\u3051\u3089\u308C\u3066\u3044\u307E\u305B\u3093 37.509 +compiler.warn.missing.deprecated.annotation=\u975E\u63A8\u5968\u306E\u9805\u76EE\u306F@Deprecated\u3067\u6CE8\u91C8\u304C\u4ED8\u3051\u3089\u308C\u3066\u3044\u307E\u305B\u3093 37.510 37.511 compiler.warn.invalid.archive.file=\u30D1\u30B9\u4E0A\u306E\u4E88\u671F\u3057\u306A\u3044\u30D5\u30A1\u30A4\u30EB: {0} 37.512 37.513 @@ -952,7 +1101,7 @@ 37.514 compiler.warn.diamond.redundant.args=\u65B0\u3057\u3044\u5F0F\u306E\u578B\u5F15\u6570\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059(\u304B\u308F\u308A\u306B\u30C0\u30A4\u30E4\u30E2\u30F3\u30C9\u6F14\u7B97\u5B50\u3092\u4F7F\u7528\u3057\u307E\u3059)\u3002 37.515 37.516 # 0: type, 1: type 37.517 -compiler.warn.diamond.redundant.args.1=\u65B0\u3057\u3044\u5F0F\u306E\u578B\u5F15\u6570\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059(\u304B\u308F\u308A\u306B\u30C0\u30A4\u30E4\u30E2\u30F3\u30C9\u6F14\u7B97\u5B50\u3092\u4F7F\u7528\u3057\u307E\u3059)\u3002\n\u660E\u793A\u7684: {0}\n\u63A8\u5B9A: {1} 37.518 +compiler.warn.diamond.redundant.args.1=\u65B0\u3057\u3044\u5F0F\u306E\u578B\u5F15\u6570\u304C\u91CD\u8907\u3057\u3066\u3044\u307E\u3059(\u304B\u308F\u308A\u306B\u30C0\u30A4\u30E4\u30E2\u30F3\u30C9\u6F14\u7B97\u5B50\u3092\u4F7F\u7528\u3057\u307E\u3059)\u3002\n\u660E\u793A\u7684: {0}\n\u63A8\u8AD6: {1} 37.519 37.520 # 0: symbol, 1: message segment 37.521 compiler.warn.varargs.redundant.trustme.anno={0}\u6CE8\u91C8\u304C\u5197\u9577\u3067\u3059\u3002{1} 37.522 @@ -1030,7 +1179,7 @@ 37.523 37.524 ## The following are all possible strings for the second argument ({1}) of the 37.525 ## above strings. 37.526 -compiler.misc.bad.class.signature=\u30AF\u30E9\u30B9{0}\u306E\u30B7\u30B0\u30CB\u30C1\u30E3\u304C\u4E0D\u6B63\u3067\u3059 37.527 +compiler.misc.bad.class.signature=\u30AF\u30E9\u30B9{0}\u306E\u30B7\u30B0\u30CD\u30C1\u30E3\u304C\u4E0D\u6B63\u3067\u3059 37.528 37.529 #0: symbol, 1: symbol 37.530 compiler.misc.bad.enclosing.class={0}\u306E\u5185\u90E8\u30AF\u30E9\u30B9\u304C\u4E0D\u6B63\u3067\u3059: {1} 37.531 @@ -1044,7 +1193,9 @@ 37.532 37.533 compiler.misc.bad.const.pool.tag.at=\u5B9A\u6570\u30D7\u30FC\u30EB\u30FB\u30BF\u30B0{1}\u3067\u306E{0}\u304C\u4E0D\u6B63\u3067\u3059 37.534 37.535 -compiler.misc.bad.signature=\u30B7\u30B0\u30CB\u30C1\u30E3{0}\u304C\u4E0D\u6B63\u3067\u3059 37.536 +compiler.misc.bad.signature=\u30B7\u30B0\u30CD\u30C1\u30E3{0}\u304C\u4E0D\u6B63\u3067\u3059 37.537 + 37.538 +compiler.misc.bad.type.annotation.value=\u6CE8\u91C8\u30BF\u30FC\u30B2\u30C3\u30C8\u578B\u306E\u5024\u306E\u578B\u304C\u4E0D\u6B63\u3067\u3059: {0} 37.539 37.540 compiler.misc.class.file.wrong.class=\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB{0}\u306B\u4E0D\u6B63\u306A\u30AF\u30E9\u30B9\u304C\u3042\u308A\u307E\u3059 37.541 37.542 @@ -1077,24 +1228,17 @@ 37.543 37.544 ##### 37.545 37.546 -# 0: message segment, 1: type, 2: type 37.547 -compiler.err.prob.found.req={0}\n\u671F\u5F85\u5024: {2}\n\u691C\u51FA\u5024: {1} 37.548 +# 0: message segment 37.549 +compiler.err.prob.found.req=\u4E0D\u9069\u5408\u306A\u578B: {0} 37.550 37.551 # 0: message segment, 1: type, 2: type 37.552 compiler.warn.prob.found.req={0}\n\u671F\u5F85\u5024: {2}\n\u691C\u51FA\u5024: {1} 37.553 37.554 -compiler.err.prob.found.req.1={0} {3}\n\u671F\u5F85\u5024: {2}\n\u691C\u51FA\u5024: {1} 37.555 - 37.556 -## The following are all possible strings for the first argument ({0}) of the 37.557 -## above strings. 37.558 -compiler.misc.incompatible.types=\u4E92\u63DB\u6027\u306E\u306A\u3044\u578B 37.559 - 37.560 -# 0: message segment 37.561 -compiler.misc.incompatible.types.1=\u4E92\u63DB\u6027\u306E\u306A\u3044\u578B\u3002{0} 37.562 - 37.563 -compiler.misc.inconvertible.types=\u5909\u63DB\u3067\u304D\u306A\u3044\u578B 37.564 - 37.565 -compiler.misc.possible.loss.of.precision=\u7CBE\u5EA6\u304C\u4F4E\u4E0B\u3057\u3066\u3044\u308B\u53EF\u80FD\u6027 37.566 +# 0: type, 1: type 37.567 +compiler.misc.inconvertible.types={0}\u3092{1}\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093: 37.568 + 37.569 +# 0: type, 1: type 37.570 +compiler.misc.possible.loss.of.precision=\u7CBE\u5EA6\u304C\u5931\u308F\u308C\u308B\u53EF\u80FD\u6027\u304C\u3042\u308B{0}\u304B\u3089{1}\u3078\u306E\u5909\u63DB 37.571 37.572 compiler.misc.unchecked.assign=\u7121\u691C\u67FB\u5909\u63DB 37.573 37.574 @@ -1104,16 +1248,13 @@ 37.575 # assigned array cannot dynamically check its stores 37.576 compiler.misc.unchecked.cast.to.type=\u7121\u691C\u67FB\u30AD\u30E3\u30B9\u30C8 37.577 37.578 -compiler.misc.assignment.from.super-bound=\u30B9\u30FC\u30D1\u30FC\u30D0\u30A6\u30F3\u30C9\u578B{0}\u304B\u3089\u306E\u4EE3\u5165 37.579 - 37.580 -compiler.misc.assignment.to.extends-bound=\u62E1\u5F35\u30D0\u30A6\u30F3\u30C9\u578B{0}\u3078\u306E\u4EE3\u5165 37.581 - 37.582 # compiler.err.star.expected=\ 37.583 # ''*'' expected 37.584 # compiler.err.no.elem.type=\ 37.585 # \[\*\] cannot have a type 37.586 37.587 -compiler.misc.try.not.applicable.to.type=try-with-resource\u306F\u5909\u6570\u578B\u306B\u9069\u7528\u3055\u308C\u307E\u305B\u3093 37.588 +# 0: type 37.589 +compiler.misc.try.not.applicable.to.type=try-with-resource\u306F\u5909\u6570\u578B\u306B\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093\n({0}) 37.590 37.591 ##### 37.592 37.593 @@ -1139,25 +1280,44 @@ 37.594 37.595 ## The following are all possible strings for the last argument of all those 37.596 ## diagnostics whose key ends in ".1" 37.597 -compiler.misc.undetermined.type=\u672A\u5B9A\u578B 37.598 - 37.599 -compiler.misc.type.variable.has.undetermined.type=\u578B\u5909\u6570{0}\u306F\u672A\u5B9A\u578B\u3067\u3059 37.600 37.601 # 0: type, 1: list of type 37.602 compiler.misc.no.unique.maximal.instance.exists=\u578B\u5909\u6570{0}(\u4E0A\u9650{1})\u306E\u56FA\u6709\u306E\u6700\u5927\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u304C\u5B58\u5728\u3057\u307E\u305B\u3093 37.603 37.604 compiler.misc.no.unique.minimal.instance.exists=\u578B\u5909\u6570{0}(\u4E0B\u9650{1})\u306E\u56FA\u6709\u306E\u6700\u5C0F\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u304C\u5B58\u5728\u3057\u307E\u305B\u3093 37.605 37.606 +# 0: type, 1: list of type 37.607 +compiler.misc.incompatible.upper.bounds=\u63A8\u8AD6\u5909\u6570{0}\u306B\u306F\u3001\u4E0D\u9069\u5408\u306A\u4E0A\u9650{1}\u304C\u3042\u308A\u307E\u3059 37.608 + 37.609 +# 0: type, 1: list of type, 2: list of type 37.610 +compiler.misc.incompatible.eq.upper.bounds=\u63A8\u8AD6\u5909\u6570{0}\u306B\u306F\u3001\u4E0D\u9069\u5408\u306A\u5883\u754C\u304C\u3042\u308A\u307E\u3059\n\u7B49\u4FA1\u5236\u7D04: {1}\n\u4E0A\u9650: {2} 37.611 + 37.612 +# 0: type, 1: list of type, 2: list of type 37.613 +compiler.misc.incompatible.eq.lower.bounds=\u63A8\u8AD6\u5909\u6570{0}\u306B\u306F\u3001\u4E0D\u9069\u5408\u306A\u5883\u754C\u304C\u3042\u308A\u307E\u3059\n\u7B49\u4FA1\u5236\u7D04: {1}\n\u4E0B\u9650: {2} 37.614 + 37.615 # 0: list of type, 1: type, 2: type 37.616 compiler.misc.infer.no.conforming.instance.exists=\u578B\u5909\u6570{0}\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u304C\u5B58\u5728\u3057\u306A\u3044\u306E\u3067\u3001{1}\u306F{2}\u306B\u9069\u5408\u3057\u307E\u305B\u3093 37.617 37.618 -# 0: list of type, 1: type, 2: type 37.619 -compiler.misc.infer.no.conforming.assignment.exists=\u578B\u5909\u6570{0}\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u304C\u5B58\u5728\u3057\u306A\u3044\u306E\u3067\u3001\u5F15\u6570\u578B{1}\u306F\u4EEE\u30D1\u30E9\u30E1\u30FC\u30BF\u578B{2}\u306B\u9069\u5408\u3057\u307E\u305B\u3093 37.620 - 37.621 -compiler.misc.infer.arg.length.mismatch=\u5B9F\u5F15\u6570\u30EA\u30B9\u30C8\u3068\u4EEE\u5F15\u6570\u30EA\u30B9\u30C8\u306E\u9577\u3055\u304C\u7570\u306A\u308B\u305F\u3081\u3001\u5F15\u6570\u304B\u3089\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 37.622 +# 0: list of type, 1: message segment 37.623 +compiler.misc.infer.no.conforming.assignment.exists=\u578B\u5909\u6570{0}\u3092\u63A8\u8AD6\u3067\u304D\u307E\u305B\u3093\n(\u5F15\u6570\u306E\u4E0D\u4E00\u81F4: {1}) 37.624 + 37.625 +# 0: list of type 37.626 +compiler.misc.infer.arg.length.mismatch=\u578B\u5909\u6570{0}\u3092\u63A8\u8AD6\u3067\u304D\u307E\u305B\u3093\n(\u5B9F\u5F15\u6570\u30EA\u30B9\u30C8\u3068\u4EEE\u5F15\u6570\u30EA\u30B9\u30C8\u306E\u9577\u3055\u304C\u7570\u306A\u308A\u307E\u3059) 37.627 + 37.628 +# 0: list of type, 1: message segment 37.629 +compiler.misc.infer.varargs.argument.mismatch=\u578B\u5909\u6570{0}\u3092\u63A8\u8AD6\u3067\u304D\u307E\u305B\u3093\n(\u53EF\u5909\u5F15\u6570\u306E\u4E0D\u4E00\u81F4: {1}) 37.630 37.631 # 0: type, 1: list of type 37.632 -compiler.misc.inferred.do.not.conform.to.bounds=\u63A8\u5B9A\u578B\u306F\u5BA3\u8A00\u3055\u308C\u305F\u5883\u754C\u306B\u9069\u5408\u3057\u307E\u305B\u3093\n\u63A8\u5B9A: {0}\n\u5883\u754C: {1} 37.633 +compiler.misc.inferred.do.not.conform.to.upper.bounds=\u63A8\u8AD6\u578B\u304C\u4E0A\u9650\u306B\u9069\u5408\u3057\u307E\u305B\u3093\n\u63A8\u8AD6: {0}\n\u4E0A\u9650: {1} 37.634 + 37.635 +# 0: type, 1: list of type 37.636 +compiler.misc.inferred.do.not.conform.to.lower.bounds=\u63A8\u8AD6\u578B\u304C\u4E0B\u9650\u306B\u9069\u5408\u3057\u307E\u305B\u3093\n\u63A8\u8AD6: {0}\n\u4E0B\u9650: {1} 37.637 + 37.638 +# 0: type, 1: list of type 37.639 +compiler.misc.inferred.do.not.conform.to.eq.bounds=\u63A8\u8AD6\u578B\u304C\u7B49\u4FA1\u5236\u7D04\u306B\u9069\u5408\u3057\u307E\u305B\u3093\n\u63A8\u8AD6: {0}\n\u7B49\u4FA1\u5236\u7D04: {1} 37.640 + 37.641 +# 0: list of type 37.642 +compiler.misc.cyclic.inference=\u63A8\u8AD6\u306E\u30EB\u30FC\u30D7\u306E\u305F\u3081\u3001\u63A8\u8AD6\u5909\u6570{0}\u306E\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u3092\u751F\u6210\u3067\u304D\u307E\u305B\u3093 37.643 37.644 # 0: symbol 37.645 compiler.misc.diamond={0}<> 37.646 @@ -1165,6 +1325,7 @@ 37.647 # 0: type 37.648 compiler.misc.diamond.non.generic=\u975E\u6C4E\u7528\u30AF\u30E9\u30B9{0}\u3067''<>''\u3092\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 37.649 37.650 +# 0: unused 37.651 compiler.misc.diamond.and.explicit.params=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF\u306E\u660E\u793A\u7684\u306A\u578B\u30D1\u30E9\u30E1\u30FC\u30BF\u3067\u306F''<>''\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 37.652 37.653 # 0: type, 1: list of type 37.654 @@ -1172,14 +1333,18 @@ 37.655 37.656 compiler.misc.arg.length.mismatch=\u5B9F\u5F15\u6570\u30EA\u30B9\u30C8\u3068\u4EEE\u5F15\u6570\u30EA\u30B9\u30C8\u306E\u9577\u3055\u304C\u7570\u306A\u308A\u307E\u3059 37.657 37.658 -# 0: type, 1: type 37.659 -compiler.misc.no.conforming.assignment.exists=\u5B9F\u5F15\u6570{0}\u306F\u30E1\u30BD\u30C3\u30C9\u547C\u51FA\u5909\u63DB\u306B\u3088\u3063\u3066{1}\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093 37.660 - 37.661 -# 0: type, 1: type 37.662 -compiler.misc.varargs.argument.mismatch=\u5F15\u6570\u578B{0}\u306F\u53EF\u5909\u5F15\u6570\u8981\u7D20\u578B{1}\u306B\u9069\u5408\u3057\u307E\u305B\u3093 37.663 +# 0: message segment 37.664 +compiler.misc.no.conforming.assignment.exists=\u5F15\u6570\u306E\u4E0D\u4E00\u81F4: {0} 37.665 + 37.666 +# 0: message segment 37.667 +compiler.misc.varargs.argument.mismatch=\u53EF\u5909\u5F15\u6570\u306E\u4E0D\u4E00\u81F4: {0} 37.668 37.669 ##### 37.670 37.671 +# 0: type, 1: file name 37.672 +compiler.warn.auxiliary.class.accessed.from.outside.of.its.source.file={1}\u306E\u88DC\u52A9\u30AF\u30E9\u30B9{0}\u306B\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u5916\u304B\u3089\u30A2\u30AF\u30BB\u30B9\u3067\u304D\u307E\u305B\u3093 37.673 + 37.674 + 37.675 ## The first argument ({0}) is a "kindname". 37.676 # 0: symbol kind, 1: symbol, 2: symbol 37.677 compiler.err.abstract.cant.be.accessed.directly=\u62BD\u8C61{0}\u3067\u3042\u308B{1}({2}\u5185)\u306B\u76F4\u63A5\u30A2\u30AF\u30BB\u30B9\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 37.678 @@ -1188,10 +1353,17 @@ 37.679 # 0: symbol kind, 1: symbol 37.680 compiler.err.non-static.cant.be.ref=static\u3067\u306A\u3044{0} {1}\u3092static\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304B\u3089\u53C2\u7167\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 37.681 37.682 +# 0: symbol kind, 1: symbol 37.683 +compiler.misc.non-static.cant.be.ref=static\u3067\u306A\u3044{0} {1}\u3092static\u30B3\u30F3\u30C6\u30AD\u30B9\u30C8\u304B\u3089\u53C2\u7167\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 37.684 + 37.685 ## Both arguments ({0}, {1}) are "kindname"s. {0} is a comma-separated list 37.686 ## of kindnames (the list should be identical to that provided in source. 37.687 compiler.err.unexpected.type=\u4E88\u671F\u3057\u306A\u3044\u578B\n\u671F\u5F85\u5024: {0}\n\u691C\u51FA\u5024: {1} 37.688 37.689 +compiler.err.unexpected.lambda=\u3053\u3053\u3067\u306F\u30E9\u30E0\u30C0\u5F0F\u306F\u4E88\u671F\u3055\u308C\u3066\u3044\u307E\u305B\u3093 37.690 + 37.691 +compiler.err.unexpected.mref=\u3053\u3053\u3067\u306F\u30E1\u30BD\u30C3\u30C9\u53C2\u7167\u306F\u4E88\u671F\u3055\u308C\u3066\u3044\u307E\u305B\u3093 37.692 + 37.693 ## The first argument {0} is a "kindname" (e.g. 'constructor', 'field', etc.) 37.694 ## The second argument {1} is the non-resolved symbol 37.695 ## The third argument {2} is a list of type parameters (non-empty if {1} is a method) 37.696 @@ -1216,12 +1388,20 @@ 37.697 # 0: symbol kind, 1: name, 2: list of type, 3: list, 4: message segment 37.698 compiler.err.cant.resolve.location.args.params=\u30B7\u30F3\u30DC\u30EB\u3092\u898B\u3064\u3051\u3089\u308C\u307E\u305B\u3093\n\u30B7\u30F3\u30DC\u30EB: {0} <{2}>{1}({3})\n\u5834\u6240: {4} 37.699 37.700 +### Following are replicated/used for method reference diagnostics 37.701 + 37.702 +# 0: symbol kind, 1: name, 2: unused, 3: list of type, 4: message segment 37.703 +compiler.misc.cant.resolve.location.args=\u30B7\u30F3\u30DC\u30EB\u3092\u898B\u3064\u3051\u3089\u308C\u307E\u305B\u3093\n\u30B7\u30F3\u30DC\u30EB: {0} {1}({3})\n\u5834\u6240: {4} 37.704 + 37.705 +# 0: symbol kind, 1: name, 2: list of type, 3: list, 4: message segment 37.706 +compiler.misc.cant.resolve.location.args.params=\u30B7\u30F3\u30DC\u30EB\u3092\u898B\u3064\u3051\u3089\u308C\u307E\u305B\u3093\n\u30B7\u30F3\u30DC\u30EB: {0} <{2}>{1}({3})\n\u5834\u6240: {4} 37.707 + 37.708 ##a location subdiagnostic is composed as follows: 37.709 ## The first argument {0} is the location "kindname" (e.g. 'constructor', 'field', etc.) 37.710 ## The second argument {1} is the location name 37.711 ## The third argument {2} is the location type (only when {1} is a variable name) 37.712 37.713 -# 0: symbol kind, 1: symbol, 2: unused 37.714 +# 0: symbol kind, 1: type or symbol, 2: unused 37.715 compiler.misc.location={0} {1} 37.716 37.717 # 0: symbol kind, 1: symbol, 2: type 37.718 @@ -1236,7 +1416,7 @@ 37.719 37.720 compiler.misc.kindname.constructor=\u30B3\u30F3\u30B9\u30C8\u30E9\u30AF\u30BF 37.721 37.722 -compiler.misc.kindname.enum=\u5217\u6319 37.723 +compiler.misc.kindname.enum=\u5217\u6319\u578B 37.724 37.725 compiler.misc.kindname.interface=\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9 37.726 37.727 @@ -1256,6 +1436,10 @@ 37.728 37.729 compiler.misc.kindname.package=\u30D1\u30C3\u30B1\u30FC\u30B8 37.730 37.731 +compiler.misc.kindname.static.init=static\u521D\u671F\u5316\u5B50 37.732 + 37.733 +compiler.misc.kindname.instance.init=\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u521D\u671F\u5316\u5B50 37.734 + 37.735 ##### 37.736 37.737 compiler.misc.no.args=\u5F15\u6570\u304C\u3042\u308A\u307E\u305B\u3093 37.738 @@ -1312,6 +1496,7 @@ 37.739 # 0: symbol, 1: symbol, 2: symbol, 3: symbol 37.740 compiler.misc.varargs.clash.with={1}\u306E{0}\u306F{3}\u306E{2}\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3057\u307E\u3059 37.741 37.742 +# 0: unused 37.743 compiler.misc.diamond.and.anon.class=\u533F\u540D\u5185\u90E8\u30AF\u30E9\u30B9\u3067\u306F''<>''\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 37.744 37.745 # 0: symbol kind, 1: symbol, 2: symbol, 3: message segment 37.746 @@ -1336,13 +1521,23 @@ 37.747 37.748 compiler.warn.assert.as.identifier=\u30EA\u30EA\u30FC\u30B91.4\u304B\u3089''assert''\u306F\u30AD\u30FC\u30EF\u30FC\u30C9\u306A\u306E\u3067\u3001\u8B58\u5225\u5B50\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\n(''assert''\u3092\u30AD\u30FC\u30EF\u30FC\u30C9\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u306B\u306F\u3001-source 1.4\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044) 37.749 37.750 +compiler.warn.underscore.as.identifier=\u8B58\u5225\u5B50\u3068\u3057\u3066''_''\u304C\u4F7F\u7528\u3055\u308C\u307E\u3057\u305F\n(\u8B58\u5225\u5B50\u3068\u3057\u3066\u306E''_''\u306E\u4F7F\u7528\u306F\u3001\u5C06\u6765\u306E\u30EA\u30EA\u30FC\u30B9\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u306A\u3044\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059) 37.751 + 37.752 compiler.err.enum.as.identifier=\u30EA\u30EA\u30FC\u30B95\u304B\u3089''enum''\u306F\u30AD\u30FC\u30EF\u30FC\u30C9\u306A\u306E\u3067\u8B58\u5225\u5B50\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\n(''enum''\u3092\u8B58\u5225\u5B50\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u306B\u306F-source 1.4\u4EE5\u524D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044) 37.753 37.754 compiler.err.assert.as.identifier=\u30EA\u30EA\u30FC\u30B91.4\u304B\u3089''assert''\u306F\u30AD\u30FC\u30EF\u30FC\u30C9\u306A\u306E\u3067\u3001\u8B58\u5225\u5B50\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\n(''assert''\u3092\u8B58\u5225\u5B50\u3068\u3057\u3066\u4F7F\u7528\u3059\u308B\u306B\u306F\u3001-source 1.3\u4EE5\u524D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044) 37.755 37.756 # TODO 308: make a better error message 37.757 -# compiler.err.this.as.identifier=\ 37.758 -# as of release 8, ''this'' is allowed as the parameter name for the receiver type only, which has to be the first parameter 37.759 +compiler.err.this.as.identifier=\u30EA\u30EA\u30FC\u30B98\u304B\u3089''this''\u306F\u53D7\u4FE1\u30BF\u30A4\u30D7\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u540D\u3068\u3057\u3066\u306E\u307F\u8A31\u53EF\u3055\u308C\u3001\u6700\u521D\u306E\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 37.760 + 37.761 +# TODO 308: make a better error message 37.762 +compiler.err.cant.annotate.static.class=\u5305\u542B\u3059\u308Bstatic\u306E\u30CD\u30B9\u30C8\u3055\u308C\u305F\u30AF\u30E9\u30B9\u306F\u6CE8\u91C8\u4ED8\u3051\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 37.763 +# TODO 308: make a better error message 37.764 +compiler.err.cant.annotate.nested.type=\u30CD\u30B9\u30C8\u3055\u308C\u305F\u30BF\u30A4\u30D7\u306F\u6CE8\u91C8\u4ED8\u3051\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 37.765 + 37.766 +compiler.err.incorrect.receiver.type=\u53D7\u4FE1\u30BF\u30A4\u30D7\u304C\u3001\u5305\u542B\u3059\u308B\u30AF\u30E9\u30B9\u30FB\u30BF\u30A4\u30D7\u3068\u4E00\u81F4\u3057\u307E\u305B\u3093 37.767 + 37.768 +compiler.err.no.annotations.on.dot.class=\u6CE8\u91C8\u306F\u30AF\u30E9\u30B9\u30FB\u30EA\u30C6\u30E9\u30EB\u306E\u30BF\u30A4\u30D7\u3067\u8A31\u53EF\u3055\u308C\u307E\u305B\u3093 37.769 37.770 # 0: string 37.771 compiler.err.generics.not.supported.in.source=\u7DCF\u79F0\u578B\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u7DCF\u79F0\u578B\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 5\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044) 37.772 @@ -1353,9 +1548,8 @@ 37.773 # 0: string 37.774 compiler.err.annotations.not.supported.in.source=\u6CE8\u91C8\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u6CE8\u91C8\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 5\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044) 37.775 37.776 -#308 compiler.err.type.annotations.not.supported.in.source=\ 37.777 -#308 type annotations are not supported in -source {0}\n\ 37.778 -#308 (use -source 8 or higher to enable type annotations) 37.779 +# 0: string 37.780 +compiler.err.type.annotations.not.supported.in.source=\u30BF\u30A4\u30D7\u6CE8\u91C8\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30BF\u30A4\u30D7\u6CE8\u91C8\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044) 37.781 37.782 # 0: string 37.783 compiler.err.foreach.not.supported.in.source=for-each\u30EB\u30FC\u30D7\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(for-each\u30EB\u30FC\u30D7\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 5\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044) 37.784 @@ -1375,6 +1569,47 @@ 37.785 # 0: string 37.786 compiler.err.string.switch.not.supported.in.source=switch\u5185\u306E\u6587\u5B57\u5217\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(switch\u5185\u306E\u6587\u5B57\u5217\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 7\u4EE5\u964D\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044) 37.787 37.788 +# 0: string 37.789 +compiler.err.lambda.not.supported.in.source=\u30E9\u30E0\u30C0\u5F0F\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30E9\u30E0\u30C0\u5F0F\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044) 37.790 + 37.791 +# 0: string 37.792 +compiler.err.method.references.not.supported.in.source=\u30E1\u30BD\u30C3\u30C9\u53C2\u7167\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30E1\u30BD\u30C3\u30C9\u53C2\u7167\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044) 37.793 + 37.794 +# 0: string 37.795 +compiler.err.default.methods.not.supported.in.source=\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044) 37.796 + 37.797 +# 0: string 37.798 +compiler.err.intersection.types.in.cast.not.supported.in.source=\u30AD\u30E3\u30B9\u30C8\u5185\u306Eintersection\u578B\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30E1\u30BD\u30C3\u30C9\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044) 37.799 + 37.800 +# 0: string 37.801 +compiler.err.static.intf.methods.not.supported.in.source=static\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u306F-source {0}\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\n(static\u30A4\u30F3\u30BF\u30D5\u30A7\u30FC\u30B9\u3092\u4F7F\u7528\u53EF\u80FD\u306B\u3059\u308B\u306B\u306F\u3001-source 8\u4EE5\u4E0A\u3092\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044) 37.802 + 37.803 +######################################## 37.804 +# Diagnostics for verbose resolution 37.805 +# used by Resolve (debug only) 37.806 +######################################## 37.807 + 37.808 +# 0: number, 1: symbol, 2: unused 37.809 +compiler.misc.applicable.method.found=#{0}\u500B\u306E\u4F7F\u7528\u53EF\u80FD\u30E1\u30BD\u30C3\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F: {1} 37.810 + 37.811 +# 0: number, 1: symbol, 2: message segment 37.812 +compiler.misc.applicable.method.found.1=#{0}\u500B\u306E\u4F7F\u7528\u53EF\u80FD\u30E1\u30BD\u30C3\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F: {1}\n({2}) 37.813 + 37.814 +# 0: number, 1: symbol, 2: message segment 37.815 +compiler.misc.not.applicable.method.found=#{0}\u500B\u306E\u4F7F\u7528\u3067\u304D\u306A\u3044\u30E1\u30BD\u30C3\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F: {1}\n({2}) 37.816 + 37.817 +# 0: type 37.818 +compiler.misc.partial.inst.sig=\u90E8\u5206\u7684\u306B\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\u3055\u308C\u307E\u3057\u305F: {0} 37.819 + 37.820 +# 0: name, 1: symbol, 2: number, 3: MethodResolutionPhase, 4: list of type or message segment, 5: list of type or message segment 37.821 +compiler.note.verbose.resolve.multi=\u578B{1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u3092\u5019\u88DC{2}\u306B\u89E3\u6C7A\u3057\u3066\u3044\u307E\u3059\n\u30D5\u30A7\u30FC\u30BA: {3}\n\u5B9F\u969B\u306E\u578B: {4}\n\u578B\u5F15\u6570: {5}\n\u5019\u88DC: 37.822 + 37.823 +# 0: name, 1: symbol, 2: unused, 3: MethodResolutionPhase, 4: list of type or message segment, 5: list of type or message segment 37.824 +compiler.note.verbose.resolve.multi.1=\u578B{1}\u306E\u30E1\u30BD\u30C3\u30C9{0}\u306E\u89E3\u6C7A\u306B\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3059\n\u30D5\u30A7\u30FC\u30BA: {3}\n\u5B9F\u969B\u306E\u578B: {4}\n\u578B\u5F15\u6570: {5}\n\u5019\u88DC: 37.825 + 37.826 +# 0: symbol, 1: type, 2: type 37.827 +compiler.note.deferred.method.inst=\u30E1\u30BD\u30C3\u30C9{0}\u306E\u9045\u5EF6\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\n\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9\u5316\u3055\u308C\u305F\u30B7\u30B0\u30CD\u30C1\u30E3: {1}\n\u30BF\u30FC\u30B2\u30C3\u30C8\u578B: {2} 37.828 + 37.829 ######################################## 37.830 # Diagnostics for where clause implementation 37.831 # used by the RichDiagnosticFormatter. 37.832 @@ -1397,26 +1632,32 @@ 37.833 # where clause for captured type: contains upper ('extends {1}') and lower 37.834 # ('super {2}') bound along with the wildcard that generated this captured type ({3}) 37.835 # 0: type, 1: type, 2: type, 3: type 37.836 -compiler.misc.where.captured={3}\u306E\u30AD\u30E3\u30D7\u30C1\u30E3\u304B\u3089\u306E{0} extends {1} super: {2} 37.837 +compiler.misc.where.captured={0}\u306F{3}\u306E\u30AD\u30E3\u30D7\u30C1\u30E3\u304B\u3089{1}\u3092\u62E1\u5F35\u3057{2}\u3092\u30B9\u30FC\u30D1\u30FC\u3057\u307E\u3059 37.838 37.839 # compact where clause for captured type: contains upper ('extends {1}') along 37.840 # with the wildcard that generated this captured type ({3}) 37.841 # 0: type, 1: type, 2: unused, 3: type 37.842 -compiler.misc.where.captured.1={3}\u306E\u30AD\u30E3\u30D7\u30C1\u30E3\u304B\u3089\u306E{0} extends {1} 37.843 +compiler.misc.where.captured.1={0}\u306F{3}\u306E\u30AD\u30E3\u30D7\u30C1\u30E3\u304B\u3089{1}\u3092\u62E1\u5F35\u3057\u307E\u3059 37.844 37.845 # where clause for type variable: contains upper bound(s) ('extends {1}') along with 37.846 # the kindname ({2}) and location ({3}) in which the typevar has been declared 37.847 # 0: type, 1: list of type, 2: symbol kind, 3: symbol 37.848 -compiler.misc.where.typevar={2} {3}\u3067\u5BA3\u8A00\u3055\u308C\u3066\u3044\u308B{0} extends {1} 37.849 +compiler.misc.where.typevar={2} {3}\u3067\u5BA3\u8A00\u3055\u308C\u3066\u3044\u308B{0}\u306F{1}\u3092\u62E1\u5F35\u3057\u307E\u3059 37.850 37.851 # compact where clause for type variable: contains the kindname ({2}) and location ({3}) 37.852 # in which the typevar has been declared 37.853 +# 0: type, 1: list of type, 2: symbol kind, 3: symbol 37.854 compiler.misc.where.typevar.1={2} {3}\u3067\u5BA3\u8A00\u3055\u308C\u305F{0} 37.855 37.856 +# where clause for fresh type variable: contains upper bound(s) ('extends {1}'). 37.857 +# Since a fresh type-variable is synthetic - there's no location/kindname here. 37.858 +# 0: type, 1: list of type 37.859 +compiler.misc.where.fresh.typevar={0}\u306F{1}\u3092\u62E1\u5F35\u3057\u307E\u3059 37.860 + 37.861 # where clause for type variable: contains all the upper bound(s) ('extends {1}') 37.862 # of this intersection type 37.863 # 0: type, 1: list of type 37.864 -compiler.misc.where.intersection={0} extends {1} 37.865 +compiler.misc.where.intersection={0}\u306F{1}\u3092\u62E1\u5F35\u3057\u307E\u3059 37.866 37.867 ### Where clause headers ### 37.868 compiler.misc.where.description.captured={0}\u304C\u65B0\u3057\u3044\u578B\u5909\u6570\u306E\u5834\u5408: 37.869 @@ -1435,4 +1676,39 @@ 37.870 37.871 compiler.misc.where.description.intersection.1={0}\u304Cintersection\u578B\u306E\u5834\u5408: 37.872 37.873 - 37.874 +### 37.875 +# errors related to doc comments 37.876 + 37.877 +compiler.err.dc.bad.entity=HTML\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u304C\u4E0D\u6B63\u3067\u3059 37.878 + 37.879 +compiler.err.dc.bad.gt=''>''\u306E\u4F7F\u7528\u304C\u4E0D\u6B63\u3067\u3059 37.880 + 37.881 +compiler.err.dc.bad.inline.tag=\u30A4\u30F3\u30E9\u30A4\u30F3\u30FB\u30BF\u30B0\u306E\u4F7F\u7528\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093 37.882 + 37.883 +compiler.err.dc.identifier.expected=\u8B58\u5225\u5B50\u304C\u5FC5\u8981\u3067\u3059 37.884 + 37.885 +compiler.err.dc.malformed.html=HTML\u304C\u4E0D\u6B63\u3067\u3059 37.886 + 37.887 +compiler.err.dc.missing.semicolon=\u30BB\u30DF\u30B3\u30ED\u30F3\u304C\u3042\u308A\u307E\u305B\u3093 37.888 + 37.889 +compiler.err.dc.no.content=\u30B3\u30F3\u30C6\u30F3\u30C4\u306A\u3057 37.890 + 37.891 +compiler.err.dc.no.tag.name='@'\u306E\u5F8C\u306B\u30BF\u30B0\u540D\u304C\u3042\u308A\u307E\u305B\u3093 37.892 + 37.893 +compiler.err.dc.gt.expected=''>''\u304C\u5FC5\u8981\u3067\u3059 37.894 + 37.895 +compiler.err.dc.ref.bad.parens=\u53C2\u7167\u306B'')''\u304C\u3042\u308A\u307E\u305B\u3093 37.896 + 37.897 +compiler.err.dc.ref.syntax.error=\u53C2\u7167\u306B\u69CB\u6587\u30A8\u30E9\u30FC\u304C\u3042\u308A\u307E\u3059 37.898 + 37.899 +compiler.err.dc.ref.unexpected.input=\u4E88\u671F\u3057\u306A\u3044\u30C6\u30AD\u30B9\u30C8\u3067\u3059 37.900 + 37.901 +compiler.err.dc.unexpected.content=\u4E88\u671F\u3057\u306A\u3044\u30B3\u30F3\u30C6\u30F3\u30C4\u3067\u3059 37.902 + 37.903 +compiler.err.dc.unterminated.inline.tag=\u30A4\u30F3\u30E9\u30A4\u30F3\u30FB\u30BF\u30B0\u304C\u7D42\u4E86\u3057\u3066\u3044\u307E\u305B\u3093 37.904 + 37.905 +compiler.err.dc.unterminated.signature=\u30B7\u30B0\u30CD\u30C1\u30E3\u304C\u7D42\u4E86\u3057\u3066\u3044\u307E\u305B\u3093 37.906 + 37.907 +compiler.err.dc.unterminated.string=\u6587\u5B57\u5217\u304C\u7D42\u4E86\u3057\u3066\u3044\u307E\u305B\u3093 37.908 + 37.909 +
38.1 --- a/src/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties Thu Mar 21 10:43:39 2013 -0700 38.2 +++ b/src/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties Tue Mar 26 12:07:45 2013 -0700 38.3 @@ -65,8 +65,11 @@ 38.4 38.5 compiler.err.already.annotated={0} {1}\u5DF2\u8FDB\u884C\u6CE8\u91CA 38.6 38.7 -# 0: symbol, 1: symbol 38.8 -compiler.err.already.defined=\u5DF2\u5728{1}\u4E2D\u5B9A\u4E49{0} 38.9 +# 0: symbol kind, 1: symbol, 2: symbol kind, 3: symbol 38.10 +compiler.err.already.defined=\u5DF2\u5728{2} {3}\u4E2D\u5B9A\u4E49\u4E86{0} {1} 38.11 + 38.12 +# 0: symbol kind, 1: symbol, 2: symbol kind, 3: symbol kind, 4: symbol 38.13 +compiler.err.already.defined.in.clinit=\u5DF2\u5728{3} {4}\u7684{2}\u4E2D\u5B9A\u4E49\u4E86{0} {1} 38.14 38.15 # 0: string 38.16 compiler.err.already.defined.single.import=\u5DF2\u5728 single-type \u5BFC\u5165\u4E2D\u5B9A\u4E49{0} 38.17 @@ -109,28 +112,84 @@ 38.18 # 0: type 38.19 compiler.err.array.req.but.found=\u9700\u8981\u6570\u7EC4, \u4F46\u627E\u5230{0} 38.20 38.21 -compiler.err.assignment.from.super-bound=\u901A\u8FC7\u901A\u914D\u7B26 {0} \u5206\u914D 38.22 - 38.23 -compiler.err.assignment.to.extends-bound=\u5206\u914D\u7ED9\u901A\u914D\u7B26 {0} 38.24 - 38.25 compiler.err.attribute.value.must.be.constant=\u5C5E\u6027\u503C\u5FC5\u987B\u4E3A\u5E38\u91CF 38.26 38.27 +# 0: statement type 38.28 +compiler.err.bad.initializer={0}\u7684\u521D\u59CB\u5316\u7A0B\u5E8F\u9519\u8BEF 38.29 + 38.30 compiler.err.break.outside.switch.loop=\u5728 switch \u6216 loop \u5916\u90E8\u4E2D\u65AD 38.31 38.32 # 0: name 38.33 compiler.err.call.must.be.first.stmt.in.ctor=\u5BF9{0}\u7684\u8C03\u7528\u5FC5\u987B\u662F\u6784\u9020\u5668\u4E2D\u7684\u7B2C\u4E00\u4E2A\u8BED\u53E5 38.34 38.35 -compiler.err.cant.apply.symbol=\u65E0\u6CD5\u5C06{4} {5}\u4E2D\u7684{0} {1}\u5E94\u7528\u5230\u7ED9\u5B9A\u7C7B\u578B\n\u9700\u8981: {2}\n\u627E\u5230: {3} 38.36 - 38.37 # 0: symbol kind, 1: name, 2: list of type or message segment, 3: list of type or message segment, 4: symbol kind, 5: type, 6: message segment 38.38 -compiler.err.cant.apply.symbol.1=\u65E0\u6CD5\u5C06{4} {5}\u4E2D\u7684{0} {1}\u5E94\u7528\u5230\u7ED9\u5B9A\u7C7B\u578B;\n\u9700\u8981: {2}\n\u627E\u5230: {3}\n\u539F\u56E0: {6} 38.39 +compiler.err.cant.apply.symbol=\u65E0\u6CD5\u5C06{4} {5}\u4E2D\u7684{0} {1}\u5E94\u7528\u5230\u7ED9\u5B9A\u7C7B\u578B;\n\u9700\u8981: {2}\n\u627E\u5230: {3}\n\u539F\u56E0: {6} 38.40 38.41 # 0: symbol kind, 1: name, 2: list of type 38.42 compiler.err.cant.apply.symbols=\u5BF9\u4E8E{1}({2}), \u627E\u4E0D\u5230\u5408\u9002\u7684{0} 38.43 38.44 +# 0: symbol kind, 1: name, 2: list of type or message segment, 3: list of type or message segment, 4: symbol kind, 5: type, 6: message segment 38.45 +compiler.misc.cant.apply.symbol=\u65E0\u6CD5\u5C06 {4} {5}\u4E2D\u7684 {0} {1}\u5E94\u7528\u5230\u7ED9\u5B9A\u7C7B\u578B\n\u9700\u8981: {2}\n\u627E\u5230: {3}\n\u539F\u56E0: {6} 38.46 + 38.47 +# 0: symbol kind, 1: name, 2: list of type 38.48 +compiler.misc.cant.apply.symbols=\u5BF9\u4E8E{1}({2}), \u627E\u4E0D\u5230\u5408\u9002\u7684{0} 38.49 + 38.50 +# 0: symbol kind, 1: symbol 38.51 +compiler.misc.no.abstracts=\u5728 {0} {1} \u4E2D\u627E\u4E0D\u5230\u62BD\u8C61\u65B9\u6CD5 38.52 + 38.53 +# 0: symbol kind, 1: symbol 38.54 +compiler.misc.incompatible.abstracts=\u5728 {0} {1} \u4E2D\u627E\u5230\u591A\u4E2A\u975E\u8986\u76D6\u62BD\u8C61\u65B9\u6CD5 38.55 + 38.56 +compiler.err.bad.functional.intf.anno=\u610F\u5916\u7684 @FunctionalInterface \u6CE8\u91CA 38.57 + 38.58 +# 0: message segment 38.59 +compiler.err.bad.functional.intf.anno.1=\u610F\u5916\u7684 @FunctionalInterface \u6CE8\u91CA\n{0} 38.60 + 38.61 +# 0: symbol 38.62 +compiler.misc.not.a.functional.intf={0} \u4E0D\u662F\u51FD\u6570\u63A5\u53E3 38.63 + 38.64 +# 0: symbol, 1: message segment 38.65 +compiler.misc.not.a.functional.intf.1={0} \u4E0D\u662F\u51FD\u6570\u63A5\u53E3\n{1} 38.66 + 38.67 +# 0: symbol, 1: symbol kind, 2: symbol 38.68 +compiler.misc.invalid.generic.lambda.target=lambda \u8868\u8FBE\u5F0F\u7684\u51FD\u6570\u63CF\u8FF0\u7B26\u65E0\u6548\n{1} {2} \u4E2D\u7684\u65B9\u6CD5 {0} \u4E3A\u6CDB\u578B\u65B9\u6CD5 38.69 + 38.70 +# 0: symbol kind, 1: symbol 38.71 +compiler.misc.incompatible.descs.in.functional.intf=\u5728 {0} {1} \u4E2D\u627E\u5230\u4E0D\u517C\u5BB9\u7684\u51FD\u6570\u63CF\u8FF0\u7B26 38.72 + 38.73 +# 0: name, 1: list of type, 2: type, 3: list of type 38.74 +compiler.misc.descriptor=\u63CF\u8FF0\u7B26: {2} {0}({1}) 38.75 + 38.76 +# 0: name, 1: list of type, 2: type, 3: list of type 38.77 +compiler.misc.descriptor.throws=\u63CF\u8FF0\u7B26: {2} {0}({1}) \u629B\u51FA{3} 38.78 + 38.79 +# 0: type 38.80 +compiler.misc.no.suitable.functional.intf.inst=\u65E0\u6CD5\u63A8\u65AD{0}\u7684\u51FD\u6570\u63A5\u53E3\u63CF\u8FF0\u7B26 38.81 + 38.82 +# 0: type 38.83 +compiler.misc.secondary.bound.must.be.marker.intf=\u6B21\u7EA7\u9650\u5236\u8303\u56F4{0}\u5FC5\u987B\u4E3A\u6807\u8BB0\u63A5\u53E3 38.84 + 38.85 +# 0: symbol kind, 1: message segment 38.86 +compiler.err.invalid.mref={0} \u5F15\u7528\u65E0\u6548; {1} 38.87 + 38.88 +# 0: symbol kind, 1: message segment 38.89 +compiler.misc.invalid.mref={0} \u5F15\u7528\u65E0\u6548; {1} 38.90 + 38.91 +compiler.misc.static.mref.with.targs=\u6709\u5173\u9759\u6001\u65B9\u6CD5\u5F15\u7528\u7684\u53C2\u6570\u5316\u9650\u5B9A\u7B26 38.92 + 38.93 +compiler.misc.static.bound.mref=\u9759\u6001\u9650\u5236\u8303\u56F4\u65B9\u6CD5\u5F15\u7528 38.94 + 38.95 # 0: symbol 38.96 compiler.err.cant.assign.val.to.final.var=\u65E0\u6CD5\u4E3A\u6700\u7EC8\u53D8\u91CF{0}\u5206\u914D\u503C 38.97 38.98 +# 0: symbol, 1: message segment 38.99 +compiler.err.cant.ref.non.effectively.final.var=\u4ECE{1}\u5F15\u7528\u7684\u672C\u5730\u53D8\u91CF\u5FC5\u987B\u662F\u6700\u7EC8\u53D8\u91CF\u6216\u5B9E\u9645\u4E0A\u7684\u6700\u7EC8\u53D8\u91CF 38.100 + 38.101 + 38.102 +compiler.misc.lambda=lambda \u8868\u8FBE\u5F0F 38.103 + 38.104 +compiler.misc.inner.cls=\u5185\u90E8\u7C7B 38.105 + 38.106 # 0: type 38.107 compiler.err.cant.deref=\u65E0\u6CD5\u53D6\u6D88\u5F15\u7528{0} 38.108 38.109 @@ -142,8 +201,6 @@ 38.110 # 0: symbol 38.111 compiler.err.cant.ref.before.ctor.called=\u65E0\u6CD5\u5728\u8C03\u7528\u8D85\u7C7B\u578B\u6784\u9020\u5668\u4E4B\u524D\u5F15\u7528{0} 38.112 38.113 -compiler.err.cant.ret.val.from.meth.decl.void=\u5BF9\u4E8E\u7ED3\u679C\u7C7B\u578B\u4E3A\u7A7A\u7684\u65B9\u6CD5, \u65E0\u6CD5\u8FD4\u56DE\u503C 38.114 - 38.115 compiler.err.cant.select.static.class.from.param.type=\u65E0\u6CD5\u4ECE\u53C2\u6570\u5316\u7684\u7C7B\u578B\u4E2D\u9009\u62E9\u9759\u6001\u7C7B 38.116 38.117 # 0: symbol, 1: string, 2: string 38.118 @@ -154,6 +211,8 @@ 38.119 # 0: symbol kind, 1: symbol 38.120 compiler.err.clash.with.pkg.of.same.name={0} {1}\u4E0E\u5E26\u6709\u76F8\u540C\u540D\u79F0\u7684\u7A0B\u5E8F\u5305\u51B2\u7A81 38.121 38.122 +compiler.err.class.not.allowed=\u6B64\u5904\u4E0D\u5141\u8BB8\u4F7F\u7528\u7C7B, \u63A5\u53E3\u6216\u679A\u4E3E\u58F0\u660E 38.123 + 38.124 compiler.err.const.expr.req=\u9700\u8981\u5E38\u91CF\u8868\u8FBE\u5F0F 38.125 38.126 compiler.err.cont.outside.loop=continue \u5728 loop \u5916\u90E8 38.127 @@ -169,8 +228,6 @@ 38.128 # 0: type 38.129 compiler.err.no.superclass={0}\u4E0D\u5177\u6709\u8D85\u7C7B 38.130 38.131 -compiler.err.wrong.target.for.polymorphic.signature.definition=MethodHandle API \u6784\u5EFA\u9700\u8981 -target 7 \u8FD0\u884C\u65F6\u6216\u66F4\u9AD8; \u5F53\u524D\u4E3A -target {0} 38.132 - 38.133 # 0: symbol, 1: type, 2: symbol, 3: type, 4: unused 38.134 compiler.err.concrete.inheritance.conflict={1}\u4E2D\u7684\u65B9\u6CD5{0}\u548C{3}\u4E2D\u7684\u65B9\u6CD5{2}\u662F\u4F7F\u7528\u76F8\u540C\u7684\u7B7E\u540D\u7EE7\u627F\u7684 38.135 38.136 @@ -181,9 +238,48 @@ 38.137 38.138 compiler.err.duplicate.annotation=\u6CE8\u91CA\u91CD\u590D 38.139 38.140 +# 0: type 38.141 +compiler.err.duplicate.annotation.invalid.repeated=\u65E0\u6CD5\u91CD\u590D\u6CE8\u91CA{0}\n\u5B83\u6CA1\u6709\u5B9A\u4E49\u6709\u6548\u7684\u5305\u542B\u6CE8\u91CA\u3002 38.142 + 38.143 # 0: name, 1: type 38.144 compiler.err.duplicate.annotation.member.value={1}\u4E2D\u7684\u6CE8\u91CA\u6210\u5458\u503C{0}\u91CD\u590D 38.145 38.146 +# 0: type, 1: type 38.147 +compiler.err.duplicate.annotation.missing.container=\u6CE8\u91CA\u91CD\u590D, {0}\u7684\u58F0\u660E\u6CA1\u6709\u6709\u6548\u7684{1}\u6CE8\u91CA 38.148 + 38.149 +# 0: type 38.150 +compiler.err.invalid.repeatable.annotation=\u6CE8\u91CA\u91CD\u590D, \u4F7F\u7528\u65E0\u6548\u7684\u53EF\u91CD\u590D\u6CE8\u91CA\u5BF9{0}\u8FDB\u884C\u4E86\u6CE8\u91CA 38.151 + 38.152 +# 0: type 38.153 +compiler.err.invalid.repeatable.annotation.no.value=\u6CE8\u91CA\u91CD\u590D, {0}\u4E0D\u662F\u6709\u6548\u7684\u53EF\u91CD\u590D\u7C7B\u578B, \u672A\u58F0\u660E\u4EFB\u4F55\u503C\u5143\u7D20\u65B9\u6CD5 38.154 + 38.155 +# 0: type, 1: number 38.156 +compiler.err.invalid.repeatable.annotation.multiple.values=\u6CE8\u91CA\u91CD\u590D, {0}\u4E0D\u662F\u6709\u6548\u7684\u53EF\u91CD\u590D\u7C7B\u578B, \u5DF2\u58F0\u660E {1} \u4E2A\u503C\u5143\u7D20\u65B9\u6CD5 38.157 + 38.158 +# 0: type 38.159 +compiler.err.invalid.repeatable.annotation.invalid.value=\u6CE8\u91CA\u91CD\u590D, {0}\u4E0D\u662F\u6709\u6548\u7684\u53EF\u91CD\u590D\u7C7B\u578B, \u503C\u5143\u7D20\u65E0\u6548, \u9700\u8981\u65B9\u6CD5 38.160 + 38.161 +# 0: type, 1: type, 2: type 38.162 +compiler.err.invalid.repeatable.annotation.value.return=\u6CE8\u91CA\u91CD\u590D, \u5305\u542B\u6CE8\u91CA{0}\u7684\u503C\u5143\u7D20\u5E94\u5177\u6709\u7C7B\u578B{2}, \u4F46\u627E\u5230\u7684\u662F{1} 38.163 + 38.164 +# 0: type, 1: symbol 38.165 +compiler.err.invalid.repeatable.annotation.elem.nondefault=\u5305\u542B\u6CE8\u91CA{0}\u6CA1\u6709\u5143\u7D20 {1} \u7684\u9ED8\u8BA4\u503C 38.166 + 38.167 +# 0: symbol, 1: type, 2: symbol, 3: type 38.168 +compiler.err.invalid.repeatable.annotation.retention=\u5305\u542B\u6CE8\u91CA {0} \u7684\u4FDD\u7559\u671F ({1}) \u77ED\u4E8E\u5DF2\u5305\u542B\u6CE8\u91CA {2} \u7684\u4FDD\u7559\u671F ({3}) 38.169 + 38.170 +# 0: symbol, 1: symbol 38.171 +compiler.err.invalid.repeatable.annotation.not.documented=\u5305\u542B\u6CE8\u91CA\u7C7B\u578B {0} \u4E0D\u662F @Documented, \u800C\u91CD\u590D\u7684\u6CE8\u91CA\u7C7B\u578B {1} \u4E3A 38.172 + 38.173 +# 0: symbol, 1: symbol 38.174 +compiler.err.invalid.repeatable.annotation.not.inherited=\u5305\u542B\u6CE8\u91CA\u7C7B\u578B {0} \u4E0D\u662F @Inherited, \u800C\u91CD\u590D\u7684\u6CE8\u91CA\u7C7B\u578B {1} \u4E3A 38.175 + 38.176 +# 0: symbol, 1: symbol 38.177 +compiler.err.invalid.repeatable.annotation.incompatible.target=\u5BB9\u5668\u6CE8\u91CA {0} \u7684\u76EE\u6807\u4E0D\u662F\u91CD\u590D\u6CE8\u91CA {1} \u7684\u76EE\u6807\u5B50\u96C6 38.178 + 38.179 +# 0: symbol 38.180 +compiler.err.invalid.repeatable.annotation.repeated.and.container.present=\u5BB9\u5668 {0} \u4E0D\u5F97\u4E0E\u5176\u5305\u542B\u7684\u5143\u7D20\u540C\u65F6\u5B58\u5728 38.181 + 38.182 # 0: name 38.183 compiler.err.duplicate.class=\u7C7B\u91CD\u590D: {0} 38.184 38.185 @@ -245,10 +341,10 @@ 38.186 compiler.err.generic.throwable=\u6CDB\u578B\u7C7B\u4E0D\u80FD\u6269\u5C55 java.lang.Throwable 38.187 38.188 # 0: symbol 38.189 -compiler.err.icls.cant.have.static.decl=\u5185\u90E8\u7C7B{0}\u4E2D\u7684\u9759\u6001\u58F0\u660E\u975E\u6CD5\n\u4FEE\u9970\u7B26 \''static\'' \u4EC5\u5141\u8BB8\u5728\u5E38\u91CF\u53D8\u91CF\u58F0\u660E\u4E2D\u4F7F\u7528 38.190 +compiler.err.icls.cant.have.static.decl=\u5185\u90E8\u7C7B{0}\u4E2D\u7684\u9759\u6001\u58F0\u660E\u975E\u6CD5\n\u4FEE\u9970\u7B26 ''static'' \u4EC5\u5141\u8BB8\u5728\u5E38\u91CF\u53D8\u91CF\u58F0\u660E\u4E2D\u4F7F\u7528 38.191 38.192 # 0: string 38.193 -compiler.err.illegal.char=\u975E\u6CD5\u5B57\u7B26: \\{0} 38.194 +compiler.err.illegal.char=\u975E\u6CD5\u5B57\u7B26: ''{0}'' 38.195 38.196 compiler.err.illegal.char.for.encoding=\u7F16\u7801{0}\u7684\u4E0D\u53EF\u6620\u5C04\u5B57\u7B26 38.197 38.198 @@ -280,11 +376,15 @@ 38.199 38.200 compiler.err.illegal.underscore=\u975E\u6CD5\u4E0B\u5212\u7EBF 38.201 38.202 +compiler.err.illegal.dot=\u975E\u6CD5 ''.'' 38.203 + 38.204 # 0: symbol 38.205 compiler.err.illegal.qual.not.icls=\u975E\u6CD5\u9650\u5B9A\u7B26; {0}\u4E0D\u662F\u5185\u90E8\u7C7B 38.206 38.207 compiler.err.illegal.start.of.expr=\u975E\u6CD5\u7684\u8868\u8FBE\u5F0F\u5F00\u59CB 38.208 38.209 +compiler.err.illegal.start.of.stmt=\u975E\u6CD5\u7684\u8BED\u53E5\u5F00\u59CB 38.210 + 38.211 compiler.err.illegal.start.of.type=\u975E\u6CD5\u7684\u7C7B\u578B\u5F00\u59CB 38.212 38.213 compiler.err.illegal.unicode.esc=\u975E\u6CD5\u7684 Unicode \u8F6C\u4E49 38.214 @@ -302,8 +402,6 @@ 38.215 # 0: number 38.216 compiler.err.int.number.too.large=\u8FC7\u5927\u7684\u6574\u6570: {0} 38.217 38.218 -compiler.err.internal.error.cant.instantiate=\u5185\u90E8\u9519\u8BEF; \u65E0\u6CD5\u5C06\u4F4D\u4E8E{1}\u7684{0}\u5B9E\u4F8B\u5316\u4E3A ({2}) 38.219 - 38.220 compiler.err.intf.annotation.members.cant.have.params=@interface \u6210\u5458\u4E0D\u80FD\u5E26\u6709\u53C2\u6570 38.221 38.222 compiler.err.intf.annotation.cant.have.type.params=@interface \u4E0D\u80FD\u5E26\u6709\u7C7B\u578B\u53C2\u6570 38.223 @@ -315,7 +413,7 @@ 38.224 38.225 compiler.err.intf.expected.here=\u6B64\u5904\u9700\u8981\u63A5\u53E3 38.226 38.227 -compiler.err.intf.meth.cant.have.body=\u63A5\u53E3\u65B9\u6CD5\u4E0D\u80FD\u5E26\u6709\u4E3B\u4F53 38.228 +compiler.err.intf.meth.cant.have.body=\u63A5\u53E3\u62BD\u8C61\u65B9\u6CD5\u4E0D\u80FD\u5E26\u6709\u4E3B\u4F53 38.229 38.230 compiler.err.invalid.annotation.member.type=\u6CE8\u91CA\u6210\u5458\u7684\u7C7B\u578B\u65E0\u6548 38.231 38.232 @@ -327,6 +425,8 @@ 38.233 38.234 compiler.err.varargs.and.old.array.syntax=variable-arity \u53C2\u6570\u4E2D\u4E0D\u5141\u8BB8\u4F7F\u7528\u4F20\u7EDF\u6570\u7EC4\u8BB0\u53F7 38.235 38.236 +compiler.err.variable.not.allowed=\u6B64\u5904\u4E0D\u5141\u8BB8\u4F7F\u7528\u53D8\u91CF\u58F0\u660E 38.237 + 38.238 # 0: name 38.239 compiler.err.label.already.in.use=\u6807\u7B7E{0}\u5DF2\u4F7F\u7528 38.240 38.241 @@ -337,6 +437,8 @@ 38.242 38.243 compiler.err.cannot.create.array.with.type.arguments=\u65E0\u6CD5\u521B\u5EFA\u5177\u6709\u7C7B\u578B\u53D8\u91CF\u7684\u6570\u7EC4 38.244 38.245 +compiler.err.cannot.create.array.with.diamond=\u65E0\u6CD5\u521B\u5EFA\u5177\u6709 ''<>'' \u7684\u6570\u7EC4 38.246 + 38.247 # 38.248 # limits. We don't give the limits in the diagnostic because we expect 38.249 # them to change, yet we want to use the same diagnostic. These are all 38.250 @@ -360,7 +462,7 @@ 38.251 38.252 compiler.err.limit.string=\u5E38\u91CF\u5B57\u7B26\u4E32\u8FC7\u957F 38.253 38.254 -compiler.err.limit.string.overflow=\u5BF9\u4E8E\u5E38\u91CF\u6C60\u6765\u8BF4, \u5B57\u7B26\u4E32 \"{0}...\" \u7684 UTF8 \u8868\u793A\u8FC7\u957F 38.255 +compiler.err.limit.string.overflow=\u5BF9\u4E8E\u5E38\u91CF\u6C60\u6765\u8BF4, \u5B57\u7B26\u4E32 "{0}..." \u7684 UTF8 \u8868\u793A\u8FC7\u957F 38.256 38.257 compiler.err.malformed.fp.lit=\u6D6E\u70B9\u6587\u5B57\u7684\u683C\u5F0F\u9519\u8BEF 38.258 38.259 @@ -370,7 +472,9 @@ 38.260 38.261 compiler.err.missing.ret.stmt=\u7F3A\u5C11\u8FD4\u56DE\u8BED\u53E5 38.262 38.263 -compiler.err.missing.ret.val=\u7F3A\u5C11\u8FD4\u56DE\u503C 38.264 +compiler.misc.missing.ret.val=\u7F3A\u5C11\u8FD4\u56DE\u503C 38.265 + 38.266 +compiler.misc.unexpected.ret.val=\u610F\u5916\u7684\u8FD4\u56DE\u503C 38.267 38.268 # 0: set of modifier 38.269 compiler.err.mod.not.allowed.here=\u6B64\u5904\u4E0D\u5141\u8BB8\u4F7F\u7528\u4FEE\u9970\u7B26{0} 38.270 @@ -398,6 +502,25 @@ 38.271 # 0: type, 1: type 38.272 compiler.err.neither.conditional.subtype=? \u7684\u4E0D\u517C\u5BB9\u7C7B\u578B: \u4E24\u8005\u90FD\u4E0D\u662F\u5BF9\u65B9\u7684\u5B50\u7C7B\u578B\n\u7B2C\u4E8C\u4E2A\u64CD\u4F5C\u6570: {0}\n\u7B2C\u4E09\u4E2A\u64CD\u4F5C\u6570: {1} 38.273 38.274 +# 0: message segment 38.275 +compiler.misc.incompatible.type.in.conditional=\u6761\u4EF6\u8868\u8FBE\u5F0F\u4E2D\u7684\u7C7B\u578B\u9519\u8BEF; {0} 38.276 + 38.277 +compiler.misc.conditional.target.cant.be.void=\u6761\u4EF6\u8868\u8FBE\u5F0F\u7684\u76EE\u6807\u7C7B\u578B\u4E0D\u80FD\u4E3A\u7A7A 38.278 + 38.279 +# 0: type 38.280 +compiler.misc.incompatible.ret.type.in.lambda=lambda \u8868\u8FBE\u5F0F\u4E2D\u7684\u8FD4\u56DE\u7C7B\u578B\u9519\u8BEF\n{0} 38.281 + 38.282 +# 0: type 38.283 +compiler.misc.incompatible.ret.type.in.mref=\u65B9\u6CD5\u5F15\u7528\u4E2D\u7684\u8FD4\u56DE\u7C7B\u578B\u9519\u8BEF\n{0} 38.284 + 38.285 +# 0: list of type 38.286 +compiler.err.incompatible.thrown.types.in.lambda=lambda \u8868\u8FBE\u5F0F\u4E2D\u629B\u51FA\u7684\u7C7B\u578B{0}\u4E0D\u517C\u5BB9 38.287 + 38.288 +# 0: list of type 38.289 +compiler.err.incompatible.thrown.types.in.mref=\u65B9\u6CD5\u5F15\u7528\u4E2D\u629B\u51FA\u7684\u7C7B\u578B{0}\u4E0D\u517C\u5BB9 38.290 + 38.291 +compiler.misc.incompatible.arg.types.in.lambda=lambda \u8868\u8FBE\u5F0F\u4E2D\u7684\u53C2\u6570\u7C7B\u578B\u4E0D\u517C\u5BB9 38.292 + 38.293 compiler.err.new.not.allowed.in.annotation=\u6CE8\u91CA\u4E2D\u4E0D\u5141\u8BB8\u4F7F\u7528 ''new'' 38.294 38.295 compiler.err.no.annotation.member={1}\u4E2D\u6CA1\u6709\u6CE8\u91CA\u6210\u5458{0} 38.296 @@ -414,6 +537,12 @@ 38.297 compiler.err.not.def.access.class.intf.cant.access={1}\u4E2D\u7684{0}\u662F\u5728\u4E0D\u53EF\u8BBF\u95EE\u7684\u7C7B\u6216\u63A5\u53E3\u4E2D\u5B9A\u4E49\u7684 38.298 38.299 # 0: symbol, 1: symbol 38.300 +compiler.misc.not.def.access.class.intf.cant.access={1}\u4E2D\u7684{0}\u662F\u5728\u4E0D\u53EF\u8BBF\u95EE\u7684\u7C7B\u6216\u63A5\u53E3\u4E2D\u5B9A\u4E49\u7684 38.301 + 38.302 +# 0: symbol, 1: list of type, 2: type 38.303 +compiler.misc.cant.access.inner.cls.constr=\u65E0\u6CD5\u8BBF\u95EE\u6784\u9020\u5668 {0}({1})\n\u4F5C\u7528\u57DF\u4E2D\u6CA1\u6709\u7C7B\u578B\u4E3A{2}\u7684\u5C01\u95ED\u5B9E\u4F8B 38.304 + 38.305 +# 0: symbol, 1: symbol 38.306 compiler.err.not.def.public.cant.access={0}\u5728{1}\u4E2D\u4E0D\u662F\u516C\u5171\u7684; \u65E0\u6CD5\u4ECE\u5916\u90E8\u7A0B\u5E8F\u5305\u4E2D\u5BF9\u5176\u8FDB\u884C\u8BBF\u95EE 38.307 38.308 # 0: name 38.309 @@ -455,15 +584,13 @@ 38.310 # 0: list of string 38.311 compiler.err.proc.no.explicit.annotation.processing.requested=\u4EC5\u5F53\u663E\u5F0F\u8BF7\u6C42\u6CE8\u91CA\u5904\u7406\u65F6\u624D\u63A5\u53D7\u7C7B\u540D\u79F0 ''{0}'' 38.312 38.313 -compiler.err.proc.no.service=\u627E\u4E0D\u5230\u670D\u52A1\u52A0\u8F7D\u5668\u7C7B\u3002\njava.util.ServiceLoader \u6216 sun.misc.Service \u5FC5\u987B\u53EF\u7528\u3002 38.314 +compiler.err.proc.no.service=ServiceLoader \u4E0D\u53EF\u7528, \u4F46\u5B83\u662F\u6CE8\u91CA\u5904\u7406\u6240\u5FC5\u9700\u7684\u3002 38.315 38.316 compiler.err.proc.processor.bad.option.name=\u5904\u7406\u7A0B\u5E8F ''{1}'' \u63D0\u4F9B\u7684\u9009\u9879\u540D\u79F0 ''{0}'' \u9519\u8BEF 38.317 38.318 # 0: string 38.319 compiler.err.proc.processor.cant.instantiate=\u65E0\u6CD5\u5B9E\u4F8B\u5316\u5904\u7406\u7A0B\u5E8F ''{0}'' \u7684\u5B9E\u4F8B 38.320 38.321 -compiler.err.proc.processor.constructor.error=\u6784\u9020\u5904\u7406\u7A0B\u5E8F\u5BF9\u8C61{0}\u65F6\u629B\u51FA\u5F02\u5E38\u9519\u8BEF 38.322 - 38.323 # 0: string 38.324 compiler.err.proc.processor.not.found=\u627E\u4E0D\u5230\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F ''{0}'' 38.325 38.326 @@ -482,7 +609,10 @@ 38.327 compiler.err.recursive.ctor.invocation=\u9012\u5F52\u6784\u9020\u5668\u8C03\u7528 38.328 38.329 # 0: name, 1: symbol kind, 2: symbol, 3: symbol, 4: symbol kind, 5: symbol, 6: symbol 38.330 -compiler.err.ref.ambiguous=\u5BF9{0}\u7684\u5F15\u7528\u4E0D\u660E\u786E, {3}\u4E2D\u7684{1} {2}\u548C{6}\u4E2D\u7684{4} {5}\u90FD\u5339\u914D 38.331 +compiler.err.ref.ambiguous=\u5BF9{0}\u7684\u5F15\u7528\u4E0D\u660E\u786E\n{3} \u4E2D\u7684{1} {2} \u548C {6} \u4E2D\u7684{4} {5} \u90FD\u5339\u914D 38.332 + 38.333 +# 0: name, 1: symbol kind, 2: symbol, 3: symbol, 4: symbol kind, 5: symbol, 6: symbol 38.334 +compiler.misc.ref.ambiguous=\u5BF9{0}\u7684\u5F15\u7528\u4E0D\u660E\u786E\n{3} \u4E2D\u7684{1} {2} \u548C {6} \u4E2D\u7684{4} {5} \u90FD\u5339\u914D 38.335 38.336 compiler.err.repeated.annotation.target=\u6CE8\u91CA\u76EE\u6807\u91CD\u590D 38.337 38.338 @@ -536,6 +666,27 @@ 38.339 # 0: type, 1: type, 2: string 38.340 compiler.err.types.incompatible.diff.ret=\u7C7B\u578B{0}\u548C{1}\u4E0D\u517C\u5BB9; \u4E24\u8005\u90FD\u5B9A\u4E49\u4E86{2}, \u4F46\u5374\u5E26\u6709\u4E0D\u76F8\u5173\u7684\u8FD4\u56DE\u7C7B\u578B 38.341 38.342 +# 0: kind, 1: type, 2: name, 3: list of type, 4: symbol, 5: symbol 38.343 +compiler.err.types.incompatible.unrelated.defaults={0} {1}\u4ECE\u7C7B\u578B {4} \u548C {5} \u4E2D\u7EE7\u627F\u4E86{2}({3}) \u7684\u4E0D\u76F8\u5173\u9ED8\u8BA4\u503C 38.344 + 38.345 +# 0: kind, 1: type, 2: name, 3: list of type, 4: symbol, 5: symbol 38.346 +compiler.err.types.incompatible.abstract.default={0} {1}\u4ECE\u7C7B\u578B {4} \u548C {5} \u4E2D\u7EE7\u627F\u4E86{2}({3}) \u7684\u62BD\u8C61\u548C\u9ED8\u8BA4\u503C 38.347 + 38.348 +# 0: name, 1: kind, 2: symbol 38.349 +compiler.err.default.overrides.object.member={1} {2} \u4E2D\u7684\u9ED8\u8BA4\u65B9\u6CD5{0}\u8986\u76D6\u4E86 java.lang.Object \u7684\u6210\u5458 38.350 + 38.351 +# 0: type 38.352 +compiler.err.illegal.static.intf.meth.call=\u9759\u6001\u63A5\u53E3\u65B9\u6CD5\u8C03\u7528\u975E\u6CD5\n\u5E94\u5C06\u63A5\u6536\u65B9\u8868\u8FBE\u5F0F\u66FF\u6362\u4E3A\u7C7B\u578B\u9650\u5B9A\u7B26 ''{0}'' 38.353 + 38.354 +# 0: type, 1: message segment 38.355 +compiler.err.illegal.default.super.call=\u9ED8\u8BA4\u8D85\u7EA7\u8C03\u7528\u4E2D\u7684\u7C7B\u578B\u9650\u5B9A\u7B26{0}\u9519\u8BEF\n{1} 38.356 + 38.357 +# 0: symbol, 1: type 38.358 +compiler.misc.overridden.default=\u8986\u76D6\u4E86{1}\u4E2D\u7684\u65B9\u6CD5 {0} 38.359 + 38.360 +# 0: symbol, 1: symbol 38.361 +compiler.misc.redundant.supertype=\u5197\u4F59\u63A5\u53E3 {0} \u5DF2\u7531 {1} \u6269\u5C55 38.362 + 38.363 compiler.err.unclosed.char.lit=\u672A\u7ED3\u675F\u7684\u5B57\u7B26\u6587\u5B57 38.364 38.365 compiler.err.unclosed.comment=\u672A\u7ED3\u675F\u7684\u6CE8\u91CA 38.366 @@ -550,19 +701,14 @@ 38.367 # 0: name 38.368 compiler.err.undef.label=\u672A\u5B9A\u4E49\u7684\u6807\u7B7E: {0} 38.369 38.370 -compiler.err.undetermined.type=\u65E0\u6CD5\u63A8\u65AD{0}\u7684\u7C7B\u578B\u53C2\u6570 38.371 - 38.372 -# 0: type, 1: message segment 38.373 -compiler.err.undetermined.type.1=\u65E0\u6CD5\u63A8\u65AD{0}\u7684\u7C7B\u578B\u53C2\u6570;\n\u539F\u56E0: {1} 38.374 - 38.375 -# 0: list of type, 1: message segment 38.376 -compiler.err.invalid.inferred.types={0}\u7684\u63A8\u65AD\u7C7B\u578B\u65E0\u6548; {1} 38.377 - 38.378 # 0: message segment, 1: unused 38.379 compiler.err.cant.apply.diamond=\u65E0\u6CD5\u63A8\u65AD{0}\u7684\u7C7B\u578B\u53C2\u6570 38.380 38.381 -# 0: message segment, 1: message segment 38.382 -compiler.err.cant.apply.diamond.1=\u65E0\u6CD5\u63A8\u65AD{0}\u7684\u7C7B\u578B\u53C2\u6570;\n\u539F\u56E0: {1} 38.383 +# 0: message segment or type, 1: message segment 38.384 +compiler.err.cant.apply.diamond.1=\u65E0\u6CD5\u63A8\u65AD{0}\u7684\u7C7B\u578B\u53C2\u6570\n\u539F\u56E0: {1} 38.385 + 38.386 +# 0: message segment or type, 1: message segment 38.387 +compiler.misc.cant.apply.diamond.1=\u65E0\u6CD5\u63A8\u65AD{0}\u7684\u7C7B\u578B\u53C2\u6570\n\u539F\u56E0: {1} 38.388 38.389 compiler.err.unreachable.stmt=\u65E0\u6CD5\u8BBF\u95EE\u7684\u8BED\u53E5 38.390 38.391 @@ -605,7 +751,7 @@ 38.392 # 0: symbol 38.393 compiler.misc.varargs.trustme.on.virtual.varargs=\u5B9E\u4F8B\u65B9\u6CD5 {0} \u4E0D\u662F\u6700\u7EC8\u7684\u3002 38.394 38.395 -# 0: type, 1: kind, 2: symbol 38.396 +# 0: type, 1: symbol kind, 2: symbol 38.397 compiler.misc.inaccessible.varargs.type=\u5F62\u5F0F varargs \u5143\u7D20\u7C7B\u578B{0}\u65E0\u6CD5\u4ECE {1} {2} \u8FDB\u884C\u8BBF\u95EE 38.398 38.399 # In the following string, {1} will always be the detail message from 38.400 @@ -620,7 +766,7 @@ 38.401 38.402 ## All errors which do not refer to a particular line in the source code are 38.403 ## preceded by this string. 38.404 -compiler.err.error=\u9519\u8BEF:\u0020 38.405 +compiler.err.error=\u9519\u8BEF: 38.406 38.407 # The following error messages do not refer to a line in the source code. 38.408 compiler.err.cant.read.file=\u65E0\u6CD5\u8BFB\u53D6: {0} 38.409 @@ -637,7 +783,7 @@ 38.410 38.411 compiler.misc.fatal.err.cant.locate.ctor=\u81F4\u547D\u9519\u8BEF: \u627E\u4E0D\u5230{0}\u7684\u6784\u9020\u5668 38.412 38.413 -compiler.misc.fatal.err.cant.close.loader=\u81F4\u547D\u9519\u8BEF: \u65E0\u6CD5\u5173\u95ED\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F\u7684\u7C7B\u52A0\u8F7D\u5668 38.414 +compiler.misc.fatal.err.cant.close=\u81F4\u547D\u9519\u8BEF: \u65E0\u6CD5\u5173\u95ED\u7F16\u8BD1\u5668\u8D44\u6E90 38.415 38.416 ##### 38.417 38.418 @@ -659,7 +805,10 @@ 38.419 38.420 ## The following string will appear before all messages keyed as: 38.421 ## "compiler.note". 38.422 -compiler.note.note=\u6CE8:\u0020 38.423 + 38.424 +compiler.note.potential.lambda.found=\u53EF\u5C06\u6B64\u533F\u540D\u5185\u90E8\u7C7B\u521B\u5EFA\u8F6C\u6362\u4E3A lambda \u8868\u8FBE\u5F0F\u3002 38.425 + 38.426 +compiler.note.note=\u6CE8: 38.427 38.428 # 0: file name 38.429 compiler.note.deprecated.filename={0}\u4F7F\u7528\u6216\u8986\u76D6\u4E86\u5DF2\u8FC7\u65F6\u7684 API\u3002 38.430 @@ -773,12 +922,12 @@ 38.431 ## 38.432 38.433 ## All warning messages are preceded by the following string. 38.434 -compiler.warn.warning=\u8B66\u544A:\u0020 38.435 +compiler.warn.warning=\u8B66\u544A: 38.436 38.437 ## Warning messages may also include the following prefix to identify a 38.438 ## lint option 38.439 # 0: option name 38.440 -compiler.warn.lintOption=[{0}]\u0020 38.441 +compiler.warn.lintOption=[{0}] 38.442 38.443 # 0: symbol 38.444 compiler.warn.constant.SVUID=serialVersionUID \u5728\u7C7B{0}\u4E2D\u5FC5\u987B\u662F\u5E38\u91CF 38.445 @@ -1046,6 +1195,8 @@ 38.446 38.447 compiler.misc.bad.signature=\u9519\u8BEF\u7684\u7B7E\u540D: {0} 38.448 38.449 +compiler.misc.bad.type.annotation.value=\u9519\u8BEF\u7684\u7C7B\u578B\u6CE8\u91CA\u76EE\u6807\u7C7B\u578B\u503C: {0} 38.450 + 38.451 compiler.misc.class.file.wrong.class=\u7C7B\u6587\u4EF6\u5305\u542B\u9519\u8BEF\u7684\u7C7B: {0} 38.452 38.453 compiler.misc.class.file.not.found=\u627E\u4E0D\u5230{0}\u7684\u7C7B\u6587\u4EF6 38.454 @@ -1077,24 +1228,17 @@ 38.455 38.456 ##### 38.457 38.458 -# 0: message segment, 1: type, 2: type 38.459 -compiler.err.prob.found.req={0}\n\u9700\u8981: {2}\n\u627E\u5230: {1} 38.460 +# 0: message segment 38.461 +compiler.err.prob.found.req=\u4E0D\u517C\u5BB9\u7684\u7C7B\u578B: {0} 38.462 38.463 # 0: message segment, 1: type, 2: type 38.464 compiler.warn.prob.found.req={0}\n\u9700\u8981: {2}\n\u627E\u5230: {1} 38.465 38.466 -compiler.err.prob.found.req.1={0} {3}\n\u9700\u8981: {2}\n\u627E\u5230: {1} 38.467 - 38.468 -## The following are all possible strings for the first argument ({0}) of the 38.469 -## above strings. 38.470 -compiler.misc.incompatible.types=\u4E0D\u517C\u5BB9\u7684\u7C7B\u578B 38.471 - 38.472 -# 0: message segment 38.473 -compiler.misc.incompatible.types.1=\u4E0D\u517C\u5BB9\u7684\u7C7B\u578B; {0} 38.474 - 38.475 -compiler.misc.inconvertible.types=\u4E0D\u53EF\u8F6C\u6362\u7684\u7C7B\u578B 38.476 - 38.477 -compiler.misc.possible.loss.of.precision=\u53EF\u80FD\u635F\u5931\u7CBE\u5EA6 38.478 +# 0: type, 1: type 38.479 +compiler.misc.inconvertible.types={0}\u65E0\u6CD5\u8F6C\u6362\u4E3A{1} 38.480 + 38.481 +# 0: type, 1: type 38.482 +compiler.misc.possible.loss.of.precision=\u4ECE{0}\u8F6C\u6362\u5230{1}\u53EF\u80FD\u4F1A\u6709\u635F\u5931 38.483 38.484 compiler.misc.unchecked.assign=\u672A\u7ECF\u68C0\u67E5\u7684\u8F6C\u6362 38.485 38.486 @@ -1104,16 +1248,13 @@ 38.487 # assigned array cannot dynamically check its stores 38.488 compiler.misc.unchecked.cast.to.type=\u672A\u7ECF\u68C0\u67E5\u7684\u8F6C\u6362 38.489 38.490 -compiler.misc.assignment.from.super-bound=\u4ECE super-bound \u7C7B\u578B{0}\u8FDB\u884C\u5206\u914D 38.491 - 38.492 -compiler.misc.assignment.to.extends-bound=\u5230 extends-bound \u7C7B\u578B{0}\u7684\u5206\u914D 38.493 - 38.494 # compiler.err.star.expected=\ 38.495 # ''*'' expected 38.496 # compiler.err.no.elem.type=\ 38.497 # \[\*\] cannot have a type 38.498 38.499 -compiler.misc.try.not.applicable.to.type=try-with-resources \u4E0D\u9002\u7528\u4E8E\u53D8\u91CF\u7C7B\u578B 38.500 +# 0: type 38.501 +compiler.misc.try.not.applicable.to.type=try-with-resources \u4E0D\u9002\u7528\u4E8E\u53D8\u91CF\u7C7B\u578B\n({0}) 38.502 38.503 ##### 38.504 38.505 @@ -1139,25 +1280,44 @@ 38.506 38.507 ## The following are all possible strings for the last argument of all those 38.508 ## diagnostics whose key ends in ".1" 38.509 -compiler.misc.undetermined.type=\u672A\u786E\u5B9A\u7684\u7C7B\u578B 38.510 - 38.511 -compiler.misc.type.variable.has.undetermined.type=\u7C7B\u578B\u53D8\u91CF{0}\u5E26\u6709\u672A\u786E\u5B9A\u7684\u7C7B\u578B 38.512 38.513 # 0: type, 1: list of type 38.514 compiler.misc.no.unique.maximal.instance.exists=\u5BF9\u4E8E\u4E0A\u9650\u4E3A{1}\u7684\u7C7B\u578B\u53D8\u91CF{0}, \u4E0D\u5B58\u5728\u552F\u4E00\u6700\u5927\u5B9E\u4F8B 38.515 38.516 compiler.misc.no.unique.minimal.instance.exists=\u5BF9\u4E8E\u4E0B\u9650\u4E3A{1}\u7684\u7C7B\u578B\u53D8\u91CF{0}, \u4E0D\u5B58\u5728\u552F\u4E00\u6700\u5C0F\u5B9E\u4F8B 38.517 38.518 +# 0: type, 1: list of type 38.519 +compiler.misc.incompatible.upper.bounds=\u63A8\u8BBA\u53D8\u91CF {0} \u5177\u6709\u4E0D\u517C\u5BB9\u7684\u4E0A\u9650 {1} 38.520 + 38.521 +# 0: type, 1: list of type, 2: list of type 38.522 +compiler.misc.incompatible.eq.upper.bounds=\u63A8\u8BBA\u53D8\u91CF {0} \u5177\u6709\u4E0D\u517C\u5BB9\u7684\u9650\u5236\u8303\u56F4\n\u7B49\u5F0F\u7EA6\u675F\u6761\u4EF6: {1}\n\u4E0A\u9650: {2} 38.523 + 38.524 +# 0: type, 1: list of type, 2: list of type 38.525 +compiler.misc.incompatible.eq.lower.bounds=\u63A8\u8BBA\u53D8\u91CF{0}\u5177\u6709\u4E0D\u517C\u5BB9\u7684\u9650\u5236\u8303\u56F4\n\u7B49\u5F0F\u7EA6\u675F\u6761\u4EF6: {1}\n\u4E0B\u9650: {2} 38.526 + 38.527 # 0: list of type, 1: type, 2: type 38.528 compiler.misc.infer.no.conforming.instance.exists=\u4E0D\u5B58\u5728\u7C7B\u578B\u53D8\u91CF{0}\u7684\u5B9E\u4F8B, \u4EE5\u4F7F{1}\u4E0E{2}\u4E00\u81F4 38.529 38.530 -# 0: list of type, 1: type, 2: type 38.531 -compiler.misc.infer.no.conforming.assignment.exists=\u4E0D\u5B58\u5728\u7C7B\u578B\u53D8\u91CF{0}\u7684\u5B9E\u4F8B, \u4EE5\u4F7F\u53C2\u6570\u7C7B\u578B{1}\u4E0E\u5F62\u5F0F\u53C2\u6570\u7C7B\u578B{2}\u4E00\u81F4 38.532 - 38.533 -compiler.misc.infer.arg.length.mismatch=\u65E0\u6CD5\u4ECE\u53C2\u6570\u8FDB\u884C\u5B9E\u4F8B\u5316, \u56E0\u4E3A\u5B9E\u9645\u53C2\u6570\u5217\u8868\u548C\u5F62\u5F0F\u53C2\u6570\u5217\u8868\u957F\u5EA6\u4E0D\u540C 38.534 +# 0: list of type, 1: message segment 38.535 +compiler.misc.infer.no.conforming.assignment.exists=\u65E0\u6CD5\u63A8\u65AD\u7C7B\u578B\u53D8\u91CF {0}\n(\u53C2\u6570\u4E0D\u5339\u914D; {1}) 38.536 + 38.537 +# 0: list of type 38.538 +compiler.misc.infer.arg.length.mismatch=\u65E0\u6CD5\u63A8\u65AD\u7C7B\u578B\u53D8\u91CF {0}\n(\u5B9E\u9645\u53C2\u6570\u5217\u8868\u548C\u5F62\u5F0F\u53C2\u6570\u5217\u8868\u957F\u5EA6\u4E0D\u540C) 38.539 + 38.540 +# 0: list of type, 1: message segment 38.541 +compiler.misc.infer.varargs.argument.mismatch=\u65E0\u6CD5\u63A8\u65AD\u7C7B\u578B\u53D8\u91CF {0}\n(varargs \u4E0D\u5339\u914D; {1}) 38.542 38.543 # 0: type, 1: list of type 38.544 -compiler.misc.inferred.do.not.conform.to.bounds=\u63A8\u65AD\u7C7B\u578B\u4E0D\u7B26\u5408\u58F0\u660E\u7684\u8303\u56F4\n\u63A8\u65AD: {0}\n\u8303\u56F4: {1} 38.545 +compiler.misc.inferred.do.not.conform.to.upper.bounds=\u63A8\u65AD\u7C7B\u578B\u4E0D\u7B26\u5408\u4E0A\u9650\n\u63A8\u65AD: {0}\n\u4E0A\u9650: {1} 38.546 + 38.547 +# 0: type, 1: list of type 38.548 +compiler.misc.inferred.do.not.conform.to.lower.bounds=\u63A8\u65AD\u7C7B\u578B\u4E0D\u7B26\u5408\u4E0B\u9650\n\u63A8\u65AD: {0}\n\u4E0B\u9650: {1} 38.549 + 38.550 +# 0: type, 1: list of type 38.551 +compiler.misc.inferred.do.not.conform.to.eq.bounds=\u63A8\u65AD\u7C7B\u578B\u4E0D\u7B26\u5408\u7B49\u5F0F\u7EA6\u675F\u6761\u4EF6\n\u63A8\u65AD: {0}\n\u7B49\u5F0F\u7EA6\u675F\u6761\u4EF6: {1} 38.552 + 38.553 +# 0: list of type 38.554 +compiler.misc.cyclic.inference=\u7531\u4E8E\u63A8\u8BBA\u5FAA\u73AF, \u65E0\u6CD5\u5B9E\u4F8B\u5316\u63A8\u8BBA\u53D8\u91CF{0} 38.555 38.556 # 0: symbol 38.557 compiler.misc.diamond={0}<> 38.558 @@ -1165,6 +1325,7 @@ 38.559 # 0: type 38.560 compiler.misc.diamond.non.generic=\u65E0\u6CD5\u5C06 ''<>'' \u4E0E\u975E\u6CDB\u578B\u7C7B{0}\u4E00\u8D77\u4F7F\u7528 38.561 38.562 +# 0: unused 38.563 compiler.misc.diamond.and.explicit.params=\u4E0D\u80FD\u5C06 ''<>'' \u4E0E\u6784\u9020\u5668\u7684\u663E\u5F0F\u7C7B\u578B\u53C2\u6570\u4E00\u8D77\u4F7F\u7528 38.564 38.565 # 0: type, 1: list of type 38.566 @@ -1172,14 +1333,18 @@ 38.567 38.568 compiler.misc.arg.length.mismatch=\u5B9E\u9645\u53C2\u6570\u5217\u8868\u548C\u5F62\u5F0F\u53C2\u6570\u5217\u8868\u957F\u5EA6\u4E0D\u540C 38.569 38.570 -# 0: type, 1: type 38.571 -compiler.misc.no.conforming.assignment.exists=\u65E0\u6CD5\u901A\u8FC7\u65B9\u6CD5\u8C03\u7528\u8F6C\u6362\u5C06\u5B9E\u9645\u53C2\u6570{0}\u8F6C\u6362\u4E3A{1} 38.572 - 38.573 -# 0: type, 1: type 38.574 -compiler.misc.varargs.argument.mismatch=\u53C2\u6570\u7C7B\u578B{0}\u4E0D\u7B26\u5408 vararg \u5143\u7D20\u7C7B\u578B{1} 38.575 +# 0: message segment 38.576 +compiler.misc.no.conforming.assignment.exists=\u53C2\u6570\u4E0D\u5339\u914D; {0} 38.577 + 38.578 +# 0: message segment 38.579 +compiler.misc.varargs.argument.mismatch=varargs \u4E0D\u5339\u914D; {0} 38.580 38.581 ##### 38.582 38.583 +# 0: type, 1: file name 38.584 +compiler.warn.auxiliary.class.accessed.from.outside.of.its.source.file={1} \u4E2D\u7684\u8F85\u52A9\u7C7B{0}\u4E0D\u5E94\u4ECE\u5176\u81EA\u8EAB\u7684\u6E90\u6587\u4EF6\u4EE5\u5916\u8BBF\u95EE 38.585 + 38.586 + 38.587 ## The first argument ({0}) is a "kindname". 38.588 # 0: symbol kind, 1: symbol, 2: symbol 38.589 compiler.err.abstract.cant.be.accessed.directly=\u65E0\u6CD5\u76F4\u63A5\u8BBF\u95EE{2}\u4E2D\u7684\u62BD\u8C61{0} {1} 38.590 @@ -1188,10 +1353,17 @@ 38.591 # 0: symbol kind, 1: symbol 38.592 compiler.err.non-static.cant.be.ref=\u65E0\u6CD5\u4ECE\u9759\u6001\u4E0A\u4E0B\u6587\u4E2D\u5F15\u7528\u975E\u9759\u6001 {0} {1} 38.593 38.594 +# 0: symbol kind, 1: symbol 38.595 +compiler.misc.non-static.cant.be.ref=\u65E0\u6CD5\u4ECE\u9759\u6001\u4E0A\u4E0B\u6587\u4E2D\u5F15\u7528\u975E\u9759\u6001 {0} {1} 38.596 + 38.597 ## Both arguments ({0}, {1}) are "kindname"s. {0} is a comma-separated list 38.598 ## of kindnames (the list should be identical to that provided in source. 38.599 compiler.err.unexpected.type=\u610F\u5916\u7684\u7C7B\u578B\n\u9700\u8981: {0}\n\u627E\u5230: {1} 38.600 38.601 +compiler.err.unexpected.lambda=\u6B64\u5904\u4E0D\u5E94\u4E3A lambda \u8868\u8FBE\u5F0F 38.602 + 38.603 +compiler.err.unexpected.mref=\u6B64\u5904\u4E0D\u5E94\u4E3A\u65B9\u6CD5\u5F15\u7528 38.604 + 38.605 ## The first argument {0} is a "kindname" (e.g. 'constructor', 'field', etc.) 38.606 ## The second argument {1} is the non-resolved symbol 38.607 ## The third argument {2} is a list of type parameters (non-empty if {1} is a method) 38.608 @@ -1216,12 +1388,20 @@ 38.609 # 0: symbol kind, 1: name, 2: list of type, 3: list, 4: message segment 38.610 compiler.err.cant.resolve.location.args.params=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7: {0} <{2}>{1}({3})\n\u4F4D\u7F6E: {4} 38.611 38.612 +### Following are replicated/used for method reference diagnostics 38.613 + 38.614 +# 0: symbol kind, 1: name, 2: unused, 3: list of type, 4: message segment 38.615 +compiler.misc.cant.resolve.location.args=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7: {0} {1}({3})\n\u4F4D\u7F6E: {4} 38.616 + 38.617 +# 0: symbol kind, 1: name, 2: list of type, 3: list, 4: message segment 38.618 +compiler.misc.cant.resolve.location.args.params=\u627E\u4E0D\u5230\u7B26\u53F7\n\u7B26\u53F7: {0} <{2}>{1}({3})\n\u4F4D\u7F6E: {4} 38.619 + 38.620 ##a location subdiagnostic is composed as follows: 38.621 ## The first argument {0} is the location "kindname" (e.g. 'constructor', 'field', etc.) 38.622 ## The second argument {1} is the location name 38.623 ## The third argument {2} is the location type (only when {1} is a variable name) 38.624 38.625 -# 0: symbol kind, 1: symbol, 2: unused 38.626 +# 0: symbol kind, 1: type or symbol, 2: unused 38.627 compiler.misc.location={0} {1} 38.628 38.629 # 0: symbol kind, 1: symbol, 2: type 38.630 @@ -1256,6 +1436,10 @@ 38.631 38.632 compiler.misc.kindname.package=\u7A0B\u5E8F\u5305 38.633 38.634 +compiler.misc.kindname.static.init=\u9759\u6001\u521D\u59CB\u5316\u7A0B\u5E8F 38.635 + 38.636 +compiler.misc.kindname.instance.init=\u5B9E\u4F8B\u521D\u59CB\u5316\u7A0B\u5E8F 38.637 + 38.638 ##### 38.639 38.640 compiler.misc.no.args=\u6CA1\u6709\u53C2\u6570 38.641 @@ -1312,6 +1496,7 @@ 38.642 # 0: symbol, 1: symbol, 2: symbol, 3: symbol 38.643 compiler.misc.varargs.clash.with={1}\u4E2D\u7684{0}\u8986\u76D6\u4E86{3}\u4E2D\u7684{2} 38.644 38.645 +# 0: unused 38.646 compiler.misc.diamond.and.anon.class=\u65E0\u6CD5\u5C06 ''<>'' \u4E0E\u533F\u540D\u5185\u90E8\u7C7B\u4E00\u8D77\u4F7F\u7528 38.647 38.648 # 0: symbol kind, 1: symbol, 2: symbol, 3: message segment 38.649 @@ -1336,13 +1521,23 @@ 38.650 38.651 compiler.warn.assert.as.identifier=\u4ECE\u53D1\u884C\u7248 1.4 \u5F00\u59CB, ''assert'' \u662F\u4E00\u4E2A\u5173\u952E\u5B57, \u4F46\u4E0D\u80FD\u7528\u4F5C\u6807\u8BC6\u7B26\n(\u8BF7\u4F7F\u7528 -source 1.4 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u5C06 ''assert'' \u7528\u4F5C\u5173\u952E\u5B57) 38.652 38.653 +compiler.warn.underscore.as.identifier=''_'' \u5DF2\u7528\u4F5C\u6807\u8BC6\u7B26\n(\u4EE5\u540E\u7684\u53D1\u884C\u7248\u53EF\u80FD\u4E0D\u652F\u6301\u5C06 ''_'' \u7528\u4F5C\u6807\u8BC6\u7B26) 38.654 + 38.655 compiler.err.enum.as.identifier=\u4ECE\u53D1\u884C\u7248 5 \u5F00\u59CB, ''enum'' \u4E3A\u5173\u952E\u5B57, \u800C\u4E0D\u7528\u4F5C\u6807\u8BC6\u7B26\n(\u8BF7\u4F7F\u7528 -source 1.4 \u6216\u66F4\u4F4E\u7248\u672C\u4EE5\u5C06 ''enum'' \u7528\u4F5C\u6807\u8BC6\u7B26) 38.656 38.657 compiler.err.assert.as.identifier=\u4ECE\u53D1\u884C\u7248 1.4 \u5F00\u59CB, ''assert'' \u662F\u4E00\u4E2A\u5173\u952E\u5B57, \u4F46\u4E0D\u80FD\u7528\u4F5C\u6807\u8BC6\u7B26\n(\u8BF7\u4F7F\u7528 -source 1.3 \u6216\u66F4\u4F4E\u7248\u672C\u4EE5\u5C06 ''assert'' \u7528\u4F5C\u6807\u8BC6\u7B26) 38.658 38.659 # TODO 308: make a better error message 38.660 -# compiler.err.this.as.identifier=\ 38.661 -# as of release 8, ''this'' is allowed as the parameter name for the receiver type only, which has to be the first parameter 38.662 +compiler.err.this.as.identifier=\u4ECE\u53D1\u884C\u7248 8 \u5F00\u59CB, ''this'' \u53EA\u80FD\u4F5C\u4E3A\u63A5\u6536\u65B9\u7C7B\u578B\u7684\u53C2\u6570\u540D, \u8BE5\u53C2\u6570\u5FC5\u987B\u4E3A\u7B2C\u4E00\u4E2A\u53C2\u6570 38.663 + 38.664 +# TODO 308: make a better error message 38.665 +compiler.err.cant.annotate.static.class=\u65E0\u6CD5\u5BF9\u5C01\u95ED\u9759\u6001\u5D4C\u5957\u7C7B\u8FDB\u884C\u6CE8\u91CA 38.666 +# TODO 308: make a better error message 38.667 +compiler.err.cant.annotate.nested.type=\u65E0\u6CD5\u5BF9\u5D4C\u5957\u7C7B\u578B\u8FDB\u884C\u6CE8\u91CA 38.668 + 38.669 +compiler.err.incorrect.receiver.type=\u63A5\u6536\u65B9\u7C7B\u578B\u4E0E\u5C01\u95ED\u7C7B\u7C7B\u578B\u4E0D\u5339\u914D 38.670 + 38.671 +compiler.err.no.annotations.on.dot.class=\u7C7B\u6587\u5B57\u7C7B\u578B\u4E2D\u4E0D\u5141\u8BB8\u4F7F\u7528\u4EFB\u4F55\u6CE8\u91CA 38.672 38.673 # 0: string 38.674 compiler.err.generics.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u6CDB\u578B\n(\u8BF7\u4F7F\u7528 -source 5 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u6CDB\u578B) 38.675 @@ -1353,9 +1548,8 @@ 38.676 # 0: string 38.677 compiler.err.annotations.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u6CE8\u91CA\n(\u8BF7\u4F7F\u7528 -source 5 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u6CE8\u91CA) 38.678 38.679 -#308 compiler.err.type.annotations.not.supported.in.source=\ 38.680 -#308 type annotations are not supported in -source {0}\n\ 38.681 -#308 (use -source 8 or higher to enable type annotations) 38.682 +# 0: string 38.683 +compiler.err.type.annotations.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u7C7B\u578B\u6CE8\u91CA\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u7C7B\u578B\u6CE8\u91CA) 38.684 38.685 # 0: string 38.686 compiler.err.foreach.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301 for-each \u5FAA\u73AF\n(\u8BF7\u4F7F\u7528 -source 5 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528 for-each \u5FAA\u73AF) 38.687 @@ -1375,6 +1569,47 @@ 38.688 # 0: string 38.689 compiler.err.string.switch.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301 switch \u4E2D\u5B58\u5728\u5B57\u7B26\u4E32\n(\u8BF7\u4F7F\u7528 -source 7 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u5141\u8BB8 switch \u4E2D\u5B58\u5728\u5B57\u7B26\u4E32) 38.690 38.691 +# 0: string 38.692 +compiler.err.lambda.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301 lambda \u8868\u8FBE\u5F0F\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528 lambda \u8868\u8FBE\u5F0F) 38.693 + 38.694 +# 0: string 38.695 +compiler.err.method.references.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u65B9\u6CD5\u5F15\u7528\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u65B9\u6CD5\u5F15\u7528) 38.696 + 38.697 +# 0: string 38.698 +compiler.err.default.methods.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u9ED8\u8BA4\u65B9\u6CD5\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u9ED8\u8BA4\u65B9\u6CD5) 38.699 + 38.700 +# 0: string 38.701 +compiler.err.intersection.types.in.cast.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u8F6C\u6362\u4E2D\u7684\u4EA4\u53C9\u7C7B\u578B\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u9ED8\u8BA4\u65B9\u6CD5) 38.702 + 38.703 +# 0: string 38.704 +compiler.err.static.intf.methods.not.supported.in.source=-source {0} \u4E2D\u4E0D\u652F\u6301\u9759\u6001\u63A5\u53E3\u65B9\u6CD5\n(\u8BF7\u4F7F\u7528 -source 8 \u6216\u66F4\u9AD8\u7248\u672C\u4EE5\u542F\u7528\u9759\u6001\u63A5\u53E3\u65B9\u6CD5) 38.705 + 38.706 +######################################## 38.707 +# Diagnostics for verbose resolution 38.708 +# used by Resolve (debug only) 38.709 +######################################## 38.710 + 38.711 +# 0: number, 1: symbol, 2: unused 38.712 +compiler.misc.applicable.method.found=\u627E\u5230\u7B2C {0} \u4E2A\u9002\u7528\u65B9\u6CD5: {1} 38.713 + 38.714 +# 0: number, 1: symbol, 2: message segment 38.715 +compiler.misc.applicable.method.found.1=\u627E\u5230\u7B2C {0} \u4E2A\u9002\u7528\u65B9\u6CD5: {1}\n({2}) 38.716 + 38.717 +# 0: number, 1: symbol, 2: message segment 38.718 +compiler.misc.not.applicable.method.found=\u627E\u5230\u7B2C {0} \u4E2A\u4E0D\u9002\u7528\u7684\u65B9\u6CD5: {1}\n({2}) 38.719 + 38.720 +# 0: type 38.721 +compiler.misc.partial.inst.sig=\u90E8\u5206\u5B9E\u4F8B\u5316\u4E3A: {0} 38.722 + 38.723 +# 0: name, 1: symbol, 2: number, 3: MethodResolutionPhase, 4: list of type or message segment, 5: list of type or message segment 38.724 +compiler.note.verbose.resolve.multi=\u5C06\u7C7B\u578B {1} \u7684\u65B9\u6CD5 {0} \u89E3\u6790\u4E3A\u5019\u9009\u9879 {2}\n\u9636\u6BB5: {3}\n\u5177\u6709\u5B9E\u9645\u503C: {4}\n\u5177\u6709\u7C7B\u578B\u53C2\u6570: {5}\n\u5019\u9009\u9879: 38.725 + 38.726 +# 0: name, 1: symbol, 2: unused, 3: MethodResolutionPhase, 4: list of type or message segment, 5: list of type or message segment 38.727 +compiler.note.verbose.resolve.multi.1=\u7C7B\u578B {1} \u7684\u65B9\u6CD5 {0} \u89E3\u6790\u9519\u8BEF\n\u9636\u6BB5: {3}\n\u5177\u6709\u5B9E\u9645\u503C: {4}\n\u5177\u6709\u7C7B\u578B\u53C2\u6570: {5}\n\u5019\u9009\u9879: 38.728 + 38.729 +# 0: symbol, 1: type, 2: type 38.730 +compiler.note.deferred.method.inst=\u65B9\u6CD5 {0} \u7684\u5EF6\u8FDF\u5B9E\u4F8B\u5316\n\u5B9E\u4F8B\u5316\u7B7E\u540D: {1}\n\u76EE\u6807\u7C7B\u578B: {2} 38.731 + 38.732 ######################################## 38.733 # Diagnostics for where clause implementation 38.734 # used by the RichDiagnosticFormatter. 38.735 @@ -1411,8 +1646,14 @@ 38.736 38.737 # compact where clause for type variable: contains the kindname ({2}) and location ({3}) 38.738 # in which the typevar has been declared 38.739 +# 0: type, 1: list of type, 2: symbol kind, 3: symbol 38.740 compiler.misc.where.typevar.1={0}\u5DF2\u5728{2} {3}\u4E2D\u58F0\u660E 38.741 38.742 +# where clause for fresh type variable: contains upper bound(s) ('extends {1}'). 38.743 +# Since a fresh type-variable is synthetic - there's no location/kindname here. 38.744 +# 0: type, 1: list of type 38.745 +compiler.misc.where.fresh.typevar={0}\u6269\u5C55{1} 38.746 + 38.747 # where clause for type variable: contains all the upper bound(s) ('extends {1}') 38.748 # of this intersection type 38.749 # 0: type, 1: list of type 38.750 @@ -1435,4 +1676,39 @@ 38.751 38.752 compiler.misc.where.description.intersection.1=\u5176\u4E2D, {0}\u662F\u4EA4\u53C9\u7C7B\u578B: 38.753 38.754 - 38.755 +### 38.756 +# errors related to doc comments 38.757 + 38.758 +compiler.err.dc.bad.entity=HTML \u5B9E\u4F53\u9519\u8BEF 38.759 + 38.760 +compiler.err.dc.bad.gt=''>'' \u7684\u7528\u6CD5\u9519\u8BEF 38.761 + 38.762 +compiler.err.dc.bad.inline.tag=\u5185\u5D4C\u6807\u8BB0\u7684\u7528\u6CD5\u4E0D\u6B63\u786E 38.763 + 38.764 +compiler.err.dc.identifier.expected=\u9700\u8981\u6807\u8BC6\u7B26 38.765 + 38.766 +compiler.err.dc.malformed.html=\u683C\u5F0F\u9519\u8BEF\u7684 HTML 38.767 + 38.768 +compiler.err.dc.missing.semicolon=\u7F3A\u5C11\u5206\u53F7 38.769 + 38.770 +compiler.err.dc.no.content=\u65E0\u5185\u5BB9 38.771 + 38.772 +compiler.err.dc.no.tag.name='@' \u540E\u6CA1\u6709\u6807\u8BB0\u540D 38.773 + 38.774 +compiler.err.dc.gt.expected=\u9700\u8981 ''>'' 38.775 + 38.776 +compiler.err.dc.ref.bad.parens=\u5F15\u7528\u4E2D\u7F3A\u5C11 '')'' 38.777 + 38.778 +compiler.err.dc.ref.syntax.error=\u5F15\u7528\u4E2D\u51FA\u73B0\u8BED\u6CD5\u9519\u8BEF 38.779 + 38.780 +compiler.err.dc.ref.unexpected.input=\u610F\u5916\u7684\u6587\u672C 38.781 + 38.782 +compiler.err.dc.unexpected.content=\u610F\u5916\u7684\u5185\u5BB9 38.783 + 38.784 +compiler.err.dc.unterminated.inline.tag=\u672A\u7EC8\u6B62\u7684\u5185\u5D4C\u6807\u8BB0 38.785 + 38.786 +compiler.err.dc.unterminated.signature=\u672A\u7EC8\u6B62\u7684\u7B7E\u540D 38.787 + 38.788 +compiler.err.dc.unterminated.string=\u672A\u7EC8\u6B62\u7684\u5B57\u7B26\u4E32 38.789 + 38.790 +
39.1 --- a/src/share/classes/com/sun/tools/javac/resources/javac_ja.properties Thu Mar 21 10:43:39 2013 -0700 39.2 +++ b/src/share/classes/com/sun/tools/javac/resources/javac_ja.properties Tue Mar 26 12:07:45 2013 -0700 39.3 @@ -1,5 +1,5 @@ 39.4 # 39.5 -# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. 39.6 +# Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. 39.7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 39.8 # 39.9 # This code is free software; you can redistribute it and/or modify it 39.10 @@ -30,7 +30,7 @@ 39.11 javac.opt.g.lines.vars.source=\u3044\u304F\u3064\u304B\u306E\u30C7\u30D0\u30C3\u30B0\u60C5\u5831\u306E\u307F\u3092\u751F\u6210\u3059\u308B 39.12 javac.opt.nowarn=\u8B66\u544A\u3092\u767A\u751F\u3055\u305B\u306A\u3044 39.13 javac.opt.verbose=\u30B3\u30F3\u30D1\u30A4\u30E9\u306E\u52D5\u4F5C\u306B\u3064\u3044\u3066\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u51FA\u529B\u3059\u308B 39.14 -javac.opt.deprecation=\u63A8\u5968\u3055\u308C\u306A\u3044API\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u30BD\u30FC\u30B9\u306E\u4F4D\u7F6E\u3092\u51FA\u529B\u3059\u308B 39.15 +javac.opt.deprecation=\u975E\u63A8\u5968\u306EAPI\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u30BD\u30FC\u30B9\u306E\u4F4D\u7F6E\u3092\u51FA\u529B\u3059\u308B 39.16 javac.opt.classpath=\u30E6\u30FC\u30B6\u30FC\u30FB\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304A\u3088\u3073\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u3092\u691C\u7D22\u3059\u308B\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B 39.17 javac.opt.sourcepath=\u5165\u529B\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u691C\u7D22\u3059\u308B\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B 39.18 javac.opt.bootclasspath=\u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u30FB\u30D1\u30B9\u306E\u4F4D\u7F6E\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B 39.19 @@ -40,9 +40,11 @@ 39.20 javac.opt.extdirs=\u30A4\u30F3\u30B9\u30C8\u30FC\u30EB\u6E08\u307F\u62E1\u5F35\u6A5F\u80FD\u306E\u4F4D\u7F6E\u3092\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u3059\u308B 39.21 javac.opt.processorpath=\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u3092\u691C\u7D22\u3059\u308B\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B 39.22 javac.opt.processor=\u5B9F\u884C\u3059\u308B\u6CE8\u91C8\u30D7\u30ED\u30BB\u30C3\u30B5\u306E\u540D\u524D\u3002\u30C7\u30D5\u30A9\u30EB\u30C8\u306E\u691C\u51FA\u51E6\u7406\u3092\u30D0\u30A4\u30D1\u30B9 39.23 +javac.opt.parameters=\u30E1\u30BD\u30C3\u30C9\u30FB\u30D1\u30E9\u30E1\u30FC\u30BF\u306B\u30EA\u30D5\u30EC\u30AF\u30B7\u30E7\u30F3\u7528\u306E\u30E1\u30BF\u30C7\u30FC\u30BF\u3092\u751F\u6210\u3057\u307E\u3059 39.24 javac.opt.proc.none.only=\u6CE8\u91C8\u51E6\u7406\u3084\u30B3\u30F3\u30D1\u30A4\u30EB\u3092\u5B9F\u884C\u3059\u308B\u304B\u3069\u3046\u304B\u3092\u5236\u5FA1\u3057\u307E\u3059\u3002 39.25 javac.opt.d=\u751F\u6210\u3055\u308C\u305F\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u683C\u7D0D\u3059\u308B\u4F4D\u7F6E\u3092\u6307\u5B9A\u3059\u308B 39.26 javac.opt.sourceDest=\u751F\u6210\u3055\u308C\u305F\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u683C\u7D0D\u3059\u308B\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B 39.27 +javac.opt.headerDest=\u751F\u6210\u3055\u308C\u305F\u30CD\u30A4\u30C6\u30A3\u30D6\u30FB\u30D8\u30C3\u30C0\u30FC\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u683C\u7D0D\u3059\u308B\u5834\u6240\u3092\u6307\u5B9A\u3059\u308B 39.28 javac.opt.J=<flag>\u3092\u5B9F\u884C\u30B7\u30B9\u30C6\u30E0\u306B\u76F4\u63A5\u6E21\u3059 39.29 javac.opt.encoding=\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u4F7F\u7528\u3059\u308B\u6587\u5B57\u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u3092\u6307\u5B9A\u3059\u308B 39.30 javac.opt.target=\u7279\u5B9A\u306EVM\u30D0\u30FC\u30B8\u30E7\u30F3\u7528\u306E\u30AF\u30E9\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u751F\u6210\u3059\u308B 39.31 @@ -61,6 +63,8 @@ 39.32 javac.opt.arg.encoding=<encoding> 39.33 javac.opt.arg.release=<release> 39.34 javac.opt.arg.number=<number> 39.35 +javac.opt.plugin=\u5B9F\u884C\u3055\u308C\u308B\u30D7\u30E9\u30B0\u30A4\u30F3\u306E\u540D\u524D\u3068\u30AA\u30D7\u30B7\u30E7\u30F3\u5F15\u6570 39.36 +javac.opt.arg.plugin="name args" 39.37 39.38 ## extended options 39.39 39.40 @@ -80,6 +84,9 @@ 39.41 javac.opt.arg.file=<filename> 39.42 javac.opt.Xlint=\u63A8\u5968\u306E\u8B66\u544A\u3092\u6709\u52B9\u306B\u3059\u308B 39.43 javac.opt.Xlint.suboptlist=\u7279\u5B9A\u306E\u8B66\u544A\u3092\u6709\u52B9\u307E\u305F\u306F\u7121\u52B9\u306B\u3059\u308B 39.44 +javac.opt.Xdoclint=javadoc\u30B3\u30E1\u30F3\u30C8\u306E\u554F\u984C\u306B\u95A2\u3059\u308B\u63A8\u5968\u30C1\u30A7\u30C3\u30AF\u3092\u6709\u52B9\u306B\u3059\u308B 39.45 +javac.opt.Xdoclint.subopts = (all|[-]<group>)[/<access>] 39.46 +javac.opt.Xdoclint.custom=\n javadoc\u30B3\u30E1\u30F3\u30C8\u306E\u554F\u984C\u306B\u95A2\u3059\u308B\u7279\u5B9A\u306E\u30C1\u30A7\u30C3\u30AF\u3092\u6709\u52B9\u307E\u305F\u306F\u7121\u52B9\u306B\u3057\u307E\u3059\u3002\n \u3053\u3053\u3067\u3001<group>\u306Faccessibility\u3001html\u3001reference\u307E\u305F\u306Fsyntax\u306E\u3044\u305A\u308C\u304B\u3067\u3001\n <access>\u306Fpublic\u3001protected\u3001package\u307E\u305F\u306Fprivate\u306E\u3044\u305A\u308C\u304B\u3067\u3059\u3002 39.47 javac.opt.Xstdout=\u6A19\u6E96\u51FA\u529B\u3092\u30EA\u30C0\u30A4\u30EC\u30AF\u30C8\u3059\u308B 39.48 javac.opt.X=\u975E\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u6982\u8981\u3092\u51FA\u529B\u3059\u308B 39.49 javac.opt.help=\u6A19\u6E96\u30AA\u30D7\u30B7\u30E7\u30F3\u306E\u6982\u8981\u3092\u51FA\u529B\u3059\u308B 39.50 @@ -107,6 +114,7 @@ 39.51 javac.err.file.not.found=\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0} 39.52 javac.err.file.not.directory=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3067\u306F\u3042\u308A\u307E\u305B\u3093: {0} 39.53 javac.err.file.not.file=\u30D5\u30A1\u30A4\u30EB\u3067\u306F\u3042\u308A\u307E\u305B\u3093: {0} 39.54 +javac.msg.plugin.not.found=\u30D7\u30E9\u30B0\u30A4\u30F3\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: {0} 39.55 ## messages 39.56 39.57 javac.msg.usage.header=\u4F7F\u7528\u65B9\u6CD5: {0} <options> <source files>\n\u4F7F\u7528\u53EF\u80FD\u306A\u30AA\u30D7\u30B7\u30E7\u30F3\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002 39.58 @@ -117,11 +125,13 @@ 39.59 39.60 javac.msg.bug=\u30B3\u30F3\u30D1\u30A4\u30E9\u3067\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F({0})\u3002Bug Parade\u306B\u540C\u3058\u30D0\u30B0\u304C\u767B\u9332\u3055\u308C\u3066\u3044\u306A\u3044\u3053\u3068\u3092\u3054\u78BA\u8A8D\u306E\u4E0A\u3001Java Developer Connection(http://java.sun.com/webapps/bugreport)\u3067\u30D0\u30B0\u306E\u767B\u9332\u3092\u304A\u9858\u3044\u3044\u305F\u3057\u307E\u3059\u3002\u30EC\u30DD\u30FC\u30C8\u306B\u306F\u3001\u305D\u306E\u30D7\u30ED\u30B0\u30E9\u30E0\u3068\u4E0B\u8A18\u306E\u8A3A\u65AD\u5185\u5BB9\u3092\u542B\u3081\u3066\u304F\u3060\u3055\u3044\u3002\u3054\u5354\u529B\u3042\u308A\u304C\u3068\u3046\u3054\u3056\u3044\u307E\u3059\u3002 39.61 39.62 -javac.msg.io=\n\n\u5165\u51FA\u529B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\n\u8A73\u7D30\u306F\u6B21\u306E\u30B9\u30BF\u30C3\u30AF\u30C8\u30EC\u30FC\u30B9\u3067\u8ABF\u67FB\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n 39.63 +javac.msg.io=\n\n\u5165\u51FA\u529B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\n\u8A73\u7D30\u306F\u6B21\u306E\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3067\u8ABF\u67FB\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n 39.64 39.65 -javac.msg.proc.annotation.uncaught.exception=\n\n\u6CE8\u91C8\u51E6\u7406\u3067\u6355\u6349\u3055\u308C\u306A\u3044\u4F8B\u5916\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F\u3002\n\u8A73\u7D30\u306F\u6B21\u306E\u30B9\u30BF\u30C3\u30AF\u30C8\u30EC\u30FC\u30B9\u3067\u8ABF\u67FB\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n 39.66 +javac.msg.proc.annotation.uncaught.exception=\n\n\u6CE8\u91C8\u51E6\u7406\u3067\u6355\u6349\u3055\u308C\u306A\u3044\u4F8B\u5916\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F\u3002\n\u8A73\u7D30\u306F\u6B21\u306E\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3067\u8ABF\u67FB\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n 39.67 39.68 -javac.msg.resource=\n\n\u30B7\u30B9\u30C6\u30E0\u30FB\u30EA\u30BD\u30FC\u30B9\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002\n\u8A73\u7D30\u306F\u6B21\u306E\u30B9\u30BF\u30C3\u30AF\u30C8\u30EC\u30FC\u30B9\u3067\u8ABF\u67FB\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n 39.69 +javac.msg.plugin.uncaught.exception=\n\n\u30D7\u30E9\u30B0\u30A4\u30F3\u3067\u6355\u6349\u3055\u308C\u306A\u3044\u4F8B\u5916\u304C\u30B9\u30ED\u30FC\u3055\u308C\u307E\u3057\u305F\u3002\n\u8A73\u7D30\u306F\u6B21\u306E\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3067\u8ABF\u67FB\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n 39.70 + 39.71 +javac.msg.resource=\n\n\u30B7\u30B9\u30C6\u30E0\u30FB\u30EA\u30BD\u30FC\u30B9\u304C\u4E0D\u8DB3\u3057\u3066\u3044\u307E\u3059\u3002\n\u8A73\u7D30\u306F\u6B21\u306E\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3067\u8ABF\u67FB\u3057\u3066\u304F\u3060\u3055\u3044\u3002\n 39.72 39.73 javac.version={0} {1} 39.74 javac.fullVersion={0}\u30D5\u30EB\u30FB\u30D0\u30FC\u30B8\u30E7\u30F3"{1}"
40.1 --- a/src/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties Thu Mar 21 10:43:39 2013 -0700 40.2 +++ b/src/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties Tue Mar 26 12:07:45 2013 -0700 40.3 @@ -1,5 +1,5 @@ 40.4 # 40.5 -# Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. 40.6 +# Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved. 40.7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 40.8 # 40.9 # This code is free software; you can redistribute it and/or modify it 40.10 @@ -40,9 +40,11 @@ 40.11 javac.opt.extdirs=\u8986\u76D6\u6240\u5B89\u88C5\u6269\u5C55\u7684\u4F4D\u7F6E 40.12 javac.opt.processorpath=\u6307\u5B9A\u67E5\u627E\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F\u7684\u4F4D\u7F6E 40.13 javac.opt.processor=\u8981\u8FD0\u884C\u7684\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F\u7684\u540D\u79F0; \u7ED5\u8FC7\u9ED8\u8BA4\u7684\u641C\u7D22\u8FDB\u7A0B 40.14 +javac.opt.parameters=\u751F\u6210\u5143\u6570\u636E\u4EE5\u7528\u4E8E\u65B9\u6CD5\u53C2\u6570\u7684\u53CD\u5C04 40.15 javac.opt.proc.none.only=\u63A7\u5236\u662F\u5426\u6267\u884C\u6CE8\u91CA\u5904\u7406\u548C/\u6216\u7F16\u8BD1\u3002 40.16 javac.opt.d=\u6307\u5B9A\u653E\u7F6E\u751F\u6210\u7684\u7C7B\u6587\u4EF6\u7684\u4F4D\u7F6E 40.17 javac.opt.sourceDest=\u6307\u5B9A\u653E\u7F6E\u751F\u6210\u7684\u6E90\u6587\u4EF6\u7684\u4F4D\u7F6E 40.18 +javac.opt.headerDest=\u6307\u5B9A\u653E\u7F6E\u751F\u6210\u7684\u672C\u673A\u6807\u5934\u6587\u4EF6\u7684\u4F4D\u7F6E 40.19 javac.opt.J=\u76F4\u63A5\u5C06 <\u6807\u8BB0> \u4F20\u9012\u7ED9\u8FD0\u884C\u65F6\u7CFB\u7EDF 40.20 javac.opt.encoding=\u6307\u5B9A\u6E90\u6587\u4EF6\u4F7F\u7528\u7684\u5B57\u7B26\u7F16\u7801 40.21 javac.opt.target=\u751F\u6210\u7279\u5B9A VM \u7248\u672C\u7684\u7C7B\u6587\u4EF6 40.22 @@ -61,6 +63,8 @@ 40.23 javac.opt.arg.encoding=<\u7F16\u7801> 40.24 javac.opt.arg.release=<\u53D1\u884C\u7248> 40.25 javac.opt.arg.number=<\u7F16\u53F7> 40.26 +javac.opt.plugin=\u8981\u8FD0\u884C\u7684\u63D2\u4EF6\u7684\u540D\u79F0\u548C\u53EF\u9009\u53C2\u6570 40.27 +javac.opt.arg.plugin="\u540D\u79F0\u53C2\u6570" 40.28 40.29 ## extended options 40.30 40.31 @@ -80,6 +84,9 @@ 40.32 javac.opt.arg.file=<\u6587\u4EF6\u540D> 40.33 javac.opt.Xlint=\u542F\u7528\u5EFA\u8BAE\u7684\u8B66\u544A 40.34 javac.opt.Xlint.suboptlist=\u542F\u7528\u6216\u7981\u7528\u7279\u5B9A\u7684\u8B66\u544A 40.35 +javac.opt.Xdoclint=\u4E3A javadoc \u6CE8\u91CA\u4E2D\u7684\u95EE\u9898\u542F\u7528\u5EFA\u8BAE\u7684\u68C0\u67E5 40.36 +javac.opt.Xdoclint.subopts = (all|[-]<group>)[/<access>] 40.37 +javac.opt.Xdoclint.custom=\n \u4E3A javadoc \u6CE8\u91CA\u4E2D\u7684\u95EE\u9898\u542F\u7528\u6216\u7981\u7528\u7279\u5B9A\u68C0\u67E5,\n \u5176\u4E2D <group> \u4E3A\u53EF\u8BBF\u95EE\u6027, html, \u5F15\u7528\u6216\u8BED\u6CD5\u4E4B\u4E00,\n <access> \u4E3A public, protected, package \u6216 private \u4E4B\u4E00\u3002 40.38 javac.opt.Xstdout=\u91CD\u5B9A\u5411\u6807\u51C6\u8F93\u51FA 40.39 javac.opt.X=\u8F93\u51FA\u975E\u6807\u51C6\u9009\u9879\u7684\u63D0\u8981 40.40 javac.opt.help=\u8F93\u51FA\u6807\u51C6\u9009\u9879\u7684\u63D0\u8981 40.41 @@ -107,6 +114,7 @@ 40.42 javac.err.file.not.found=\u627E\u4E0D\u5230\u6587\u4EF6: {0} 40.43 javac.err.file.not.directory=\u4E0D\u662F\u76EE\u5F55: {0} 40.44 javac.err.file.not.file=\u4E0D\u662F\u6587\u4EF6: {0} 40.45 +javac.msg.plugin.not.found=\u627E\u4E0D\u5230\u63D2\u4EF6: {0} 40.46 ## messages 40.47 40.48 javac.msg.usage.header=\u7528\u6CD5: {0} <options> <source files>\n\u5176\u4E2D, \u53EF\u80FD\u7684\u9009\u9879\u5305\u62EC: 40.49 @@ -121,6 +129,8 @@ 40.50 40.51 javac.msg.proc.annotation.uncaught.exception=\n\n\u6CE8\u91CA\u5904\u7406\u7A0B\u5E8F\u629B\u51FA\u672A\u6355\u83B7\u7684\u5F02\u5E38\u9519\u8BEF\u3002\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u4EE5\u4E0B\u5806\u6808\u8DDF\u8E2A\u3002\n 40.52 40.53 +javac.msg.plugin.uncaught.exception=\n\n\u63D2\u4EF6\u629B\u51FA\u672A\u6355\u83B7\u7684\u5F02\u5E38\u9519\u8BEF\u3002\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u4EE5\u4E0B\u5806\u6808\u8DDF\u8E2A\u3002\n 40.54 + 40.55 javac.msg.resource=\n\n\u7CFB\u7EDF\u8D44\u6E90\u4E0D\u8DB3\u3002\n\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u4EE5\u4E0B\u5806\u6808\u8DDF\u8E2A\u3002\n 40.56 40.57 javac.version={0} {1}
41.1 --- a/src/share/classes/com/sun/tools/javac/sym/Profiles.java Thu Mar 21 10:43:39 2013 -0700 41.2 +++ b/src/share/classes/com/sun/tools/javac/sym/Profiles.java Tue Mar 26 12:07:45 2013 -0700 41.3 @@ -149,12 +149,13 @@ 41.4 } 41.5 41.6 final static Map<String, Package> packages = new TreeMap<String, Package>(); 41.7 - int maxProfile; 41.8 + 41.9 + final int maxProfile = 4; // Three compact profiles plus full JRE 41.10 41.11 MakefileProfiles(Properties p) { 41.12 - int profile = 1; 41.13 - while (true) { 41.14 - String inclPackages = p.getProperty("PROFILE_" + profile + "_RTJAR_INCLUDE_PACKAGES"); 41.15 + for (int profile = 1; profile <= maxProfile; profile++) { 41.16 + String prefix = (profile < maxProfile ? "PROFILE_" + profile : "FULL_JRE"); 41.17 + String inclPackages = p.getProperty(prefix + "_RTJAR_INCLUDE_PACKAGES"); 41.18 if (inclPackages == null) 41.19 break; 41.20 for (String pkg: inclPackages.substring(1).trim().split("\\s+")) { 41.21 @@ -162,22 +163,20 @@ 41.22 pkg = pkg.substring(0, pkg.length() - 1); 41.23 includePackage(profile, pkg); 41.24 } 41.25 - String inclTypes = p.getProperty("PROFILE_" + profile + "_RTJAR_INCLUDE_TYPES"); 41.26 + String inclTypes = p.getProperty(prefix + "_RTJAR_INCLUDE_TYPES"); 41.27 if (inclTypes != null) { 41.28 for (String type: inclTypes.replace("$$", "$").split("\\s+")) { 41.29 if (type.endsWith(".class")) 41.30 includeType(profile, type.substring(0, type.length() - 6)); 41.31 } 41.32 } 41.33 - String exclTypes = p.getProperty("PROFILE_" + profile + "_RTJAR_EXCLUDE_TYPES"); 41.34 + String exclTypes = p.getProperty(prefix + "_RTJAR_EXCLUDE_TYPES"); 41.35 if (exclTypes != null) { 41.36 for (String type: exclTypes.replace("$$", "$").split("\\s+")) { 41.37 if (type.endsWith(".class")) 41.38 excludeType(profile, type.substring(0, type.length() - 6)); 41.39 } 41.40 } 41.41 - maxProfile = profile; 41.42 - profile++; 41.43 } 41.44 } 41.45
42.1 --- a/src/share/classes/com/sun/tools/javac/util/ArrayUtils.java Thu Mar 21 10:43:39 2013 -0700 42.2 +++ b/src/share/classes/com/sun/tools/javac/util/ArrayUtils.java Tue Mar 26 12:07:45 2013 -0700 42.3 @@ -85,17 +85,4 @@ 42.4 } 42.5 } 42.6 42.7 - public static <T> T[] concat(T[] anArr, T[] anotherArr) { 42.8 - int newLength = anArr.length + anotherArr.length; 42.9 - @SuppressWarnings("unchecked") 42.10 - T[] result = (T[]) Array.newInstance(anArr.getClass().getComponentType(), newLength); 42.11 - System.arraycopy(anArr, 0, result, 0, anArr.length); 42.12 - System.arraycopy(anotherArr, 0, result, anArr.length, anotherArr.length); 42.13 - return result; 42.14 - } 42.15 - 42.16 - @SuppressWarnings("unchecked") 42.17 - public static <T> T[] concatOpen(T[] anArr, T... anotherArr) { 42.18 - return concat(anArr, anotherArr); 42.19 - } 42.20 }
43.1 --- a/src/share/classes/com/sun/tools/javac/util/RichDiagnosticFormatter.java Thu Mar 21 10:43:39 2013 -0700 43.2 +++ b/src/share/classes/com/sun/tools/javac/util/RichDiagnosticFormatter.java Tue Mar 26 12:07:45 2013 -0700 43.3 @@ -509,6 +509,16 @@ 43.4 visit(supertype); 43.5 visit(interfaces); 43.6 } 43.7 + } else if (t.tsym.name.isEmpty()) { 43.8 + //anon class 43.9 + ClassType norm = (ClassType) t.tsym.type; 43.10 + if (norm != null) { 43.11 + if (norm.interfaces_field != null && norm.interfaces_field.nonEmpty()) { 43.12 + visit(norm.interfaces_field.head); 43.13 + } else { 43.14 + visit(norm.supertype_field); 43.15 + } 43.16 + } 43.17 } 43.18 nameSimplifier.addUsage(t.tsym); 43.19 visit(t.getTypeArguments()); 43.20 @@ -562,7 +572,7 @@ 43.21 // <editor-fold defaultstate="collapsed" desc="symbol scanner"> 43.22 /** 43.23 * Preprocess a given symbol looking for (i) additional info (where clauses) to be 43.24 - * asdded to the main diagnostic (ii) names to be compacted 43.25 + * added to the main diagnostic (ii) names to be compacted 43.26 */ 43.27 protected void preprocessSymbol(Symbol s) { 43.28 symbolPreprocessor.visit(s, null);
44.1 --- a/src/share/classes/com/sun/tools/javadoc/ExecutableMemberDocImpl.java Thu Mar 21 10:43:39 2013 -0700 44.2 +++ b/src/share/classes/com/sun/tools/javadoc/ExecutableMemberDocImpl.java Tue Mar 26 12:07:45 2013 -0700 44.3 @@ -205,7 +205,7 @@ 44.4 if (recvtype == null) { 44.5 return new AnnotationDesc[0]; 44.6 } 44.7 - if (recvtype.getKind() != TypeKind.ANNOTATED) { 44.8 + if (!recvtype.isAnnotated()) { 44.9 return new AnnotationDesc[0]; 44.10 } 44.11 List<? extends Compound> typeAnnos = ((com.sun.tools.javac.code.Type.AnnotatedType)recvtype).typeAnnotations;
45.1 --- a/src/share/classes/com/sun/tools/javadoc/TypeMaker.java Thu Mar 21 10:43:39 2013 -0700 45.2 +++ b/src/share/classes/com/sun/tools/javadoc/TypeMaker.java Tue Mar 26 12:07:45 2013 -0700 45.3 @@ -65,11 +65,11 @@ 45.4 t = env.types.erasure(t); 45.5 } 45.6 if (considerAnnotations 45.7 - && t.getKind() == TypeKind.ANNOTATED) { 45.8 + && t.isAnnotated()) { 45.9 return new AnnotatedTypeImpl(env, (com.sun.tools.javac.code.Type.AnnotatedType) t); 45.10 } 45.11 45.12 - if (t.getKind() == TypeKind.ANNOTATED) { 45.13 + if (t.isAnnotated()) { 45.14 Type.AnnotatedType at = (Type.AnnotatedType) t; 45.15 return new AnnotatedTypeImpl(env, at); 45.16 } 45.17 @@ -147,7 +147,7 @@ 45.18 */ 45.19 static String getTypeString(DocEnv env, Type t, boolean full) { 45.20 // TODO: should annotations be included here? 45.21 - if (t.getKind() == TypeKind.ANNOTATED) { 45.22 + if (t.isAnnotated()) { 45.23 Type.AnnotatedType at = (Type.AnnotatedType)t; 45.24 t = at.underlyingType; 45.25 }
46.1 --- a/src/share/classes/com/sun/tools/javadoc/TypeVariableImpl.java Thu Mar 21 10:43:39 2013 -0700 46.2 +++ b/src/share/classes/com/sun/tools/javadoc/TypeVariableImpl.java Tue Mar 26 12:07:45 2013 -0700 46.3 @@ -127,7 +127,7 @@ 46.4 final Type upperBound = v.getUpperBound(); 46.5 Name boundname = upperBound.tsym.getQualifiedName(); 46.6 if (boundname == boundname.table.names.java_lang_Object 46.7 - && upperBound.getKind() != TypeKind.ANNOTATED) { 46.8 + && !upperBound.isAnnotated()) { 46.9 return List.nil(); 46.10 } else { 46.11 return env.types.getBounds(v); 46.12 @@ -139,7 +139,7 @@ 46.13 * Return an empty array if there are none. 46.14 */ 46.15 public AnnotationDesc[] annotations() { 46.16 - if (type.getKind() != TypeKind.ANNOTATED) { 46.17 + if (!type.isAnnotated()) { 46.18 return new AnnotationDesc[0]; 46.19 } 46.20 List<TypeCompound> tas = ((com.sun.tools.javac.code.Type.AnnotatedType) type).typeAnnotations;
47.1 --- a/src/share/classes/com/sun/tools/javadoc/resources/javadoc_ja.properties Thu Mar 21 10:43:39 2013 -0700 47.2 +++ b/src/share/classes/com/sun/tools/javadoc/resources/javadoc_ja.properties Tue Mar 26 12:07:45 2013 -0700 47.3 @@ -1,5 +1,5 @@ 47.4 # 47.5 -# Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. 47.6 +# Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. 47.7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 47.8 # 47.9 # This code is free software; you can redistribute it and/or modify it 47.10 @@ -37,7 +37,6 @@ 47.11 main.incompatible.access.flags=-public\u3001-private\u3001-package\u307E\u305F\u306F-protected\u306E\u3046\u3061\u306E2\u3064\u4EE5\u4E0A\u3092\u6307\u5B9A\u3057\u307E\u3057\u305F\u3002 47.12 main.cant.read={0}\u3092\u8AAD\u307F\u8FBC\u3081\u307E\u305B\u3093 47.13 main.Loading_source_files_for_package=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306E\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u3044\u307E\u3059... 47.14 -main.Loading_source_file_for_class=\u30AF\u30E9\u30B9{0}\u306E\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u3044\u307E\u3059... 47.15 main.Loading_source_file=\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB{0}\u3092\u8AAD\u307F\u8FBC\u3093\u3067\u3044\u307E\u3059... 47.16 main.Building_tree=Javadoc\u60C5\u5831\u3092\u69CB\u7BC9\u3057\u3066\u3044\u307E\u3059... 47.17 main.no_source_files_for_package=\u30D1\u30C3\u30B1\u30FC\u30B8{0}\u306E\u30BD\u30FC\u30B9\u30FB\u30D5\u30A1\u30A4\u30EB\u304C\u3042\u308A\u307E\u305B\u3093 47.18 @@ -67,13 +66,12 @@ 47.19 tag.see.can_not_find_member=\u30BF\u30B0{0}: {2}\u3067{1}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 47.20 tag.see.no_close_bracket_on_url=\u30BF\u30B0{0}: \u9589\u3058\u30BF\u30B0''>''\u304C\u3042\u308A\u307E\u305B\u3093: "{1}" 47.21 tag.see.no_close_quote=\u30BF\u30B0{0}: \u9589\u3058\u5F15\u7528\u7B26\u304C\u3042\u308A\u307E\u305B\u3093: "{1}" 47.22 -tag.see.class_not_found=@see\u30BF\u30B0\u7528\u306E\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: "{1}" 47.23 tag.see.class_not_specified=\u30BF\u30B0{0}: \u30AF\u30E9\u30B9\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u305B\u3093: "{1}" 47.24 tag.see.illegal_character=\u30BF\u30B0{0}: "{2}"\u306B\u4E0D\u6B63\u306A\u6587\u5B57"{1}"\u304C\u3042\u308A\u307E\u3059 47.25 tag.see.malformed_see_tag=\u30BF\u30B0{0}: \u66F8\u5F0F\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093: "{1}" 47.26 -tag.throws.exception_not_found={0}\u30BF\u30B0\u3001\u30AF\u30E9\u30B9{1}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 47.27 tag.End_delimiter_missing_for_possible_SeeTag=\u30B3\u30E1\u30F3\u30C8\u6587\u5B57\u5217"{0}"\u3067\u3001\u6709\u52B9\u306Asee\u30BF\u30B0\u306B\u7D42\u7AEF\u30C7\u30EA\u30DF\u30BF}\u304C\u3042\u308A\u307E\u305B\u3093 47.28 tag.Improper_Use_Of_Link_Tag=\u30A4\u30F3\u30E9\u30A4\u30F3\u30FB\u30BF\u30B0"{0}"\u306B\u7D42\u4E86\u6587\u5B57''}''\u304C\u3042\u308A\u307E\u305B\u3093 47.29 +tag.serialField.illegal_character=@serialField\u30BF\u30B0\u306B\u4E0D\u6B63\u306A\u6587\u5B57{0}\u304C\u3042\u308A\u307E\u3059: {1}\u3002 47.30 javadoc.File_Read_Error=\u30D5\u30A1\u30A4\u30EB{0}\u306E\u8AAD\u8FBC\u307F\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F 47.31 javadoc.Body_missing_from_html_file=HTML\u306Bbody\u30BF\u30B0\u304C\u3042\u308A\u307E\u305B\u3093 47.32 javadoc.End_body_missing_from_html_file=HTML\u30D5\u30A1\u30A4\u30EB\u306Bbody\u306E\u9589\u3058\u30BF\u30B0\u304C\u3042\u308A\u307E\u305B\u3093 47.33 @@ -81,4 +79,8 @@ 47.34 javadoc.class_not_found=\u30AF\u30E9\u30B9{0}\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3002 47.35 javadoc.error=\u30A8\u30E9\u30FC 47.36 javadoc.warning=\u8B66\u544A 47.37 -tag.serialField.illegal_character=@serialField\u30BF\u30B0\u306B\u4E0D\u6B63\u306A\u6587\u5B57{0}\u304C\u3042\u308A\u307E\u3059: {1}\u3002 47.38 + 47.39 +javadoc.error.msg={0}: \u30A8\u30E9\u30FC - {1} 47.40 +javadoc.warning.msg={0}: \u8B66\u544A - {1} 47.41 +javadoc.note.msg = {1} 47.42 +javadoc.note.pos.msg= {0}: {1}
48.1 --- a/src/share/classes/com/sun/tools/javadoc/resources/javadoc_zh_CN.properties Thu Mar 21 10:43:39 2013 -0700 48.2 +++ b/src/share/classes/com/sun/tools/javadoc/resources/javadoc_zh_CN.properties Tue Mar 26 12:07:45 2013 -0700 48.3 @@ -1,5 +1,5 @@ 48.4 # 48.5 -# Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. 48.6 +# Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. 48.7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 48.8 # 48.9 # This code is free software; you can redistribute it and/or modify it 48.10 @@ -37,7 +37,6 @@ 48.11 main.incompatible.access.flags=\u6307\u5B9A\u4E86\u591A\u4E2A -public, -private, -package \u6216 -protected\u3002 48.12 main.cant.read=\u65E0\u6CD5\u8BFB\u53D6{0} 48.13 main.Loading_source_files_for_package=\u6B63\u5728\u52A0\u8F7D\u7A0B\u5E8F\u5305{0}\u7684\u6E90\u6587\u4EF6... 48.14 -main.Loading_source_file_for_class=\u6B63\u5728\u52A0\u8F7D\u7C7B{0}\u7684\u6E90\u6587\u4EF6... 48.15 main.Loading_source_file=\u6B63\u5728\u52A0\u8F7D\u6E90\u6587\u4EF6{0}... 48.16 main.Building_tree=\u6B63\u5728\u6784\u9020 Javadoc \u4FE1\u606F... 48.17 main.no_source_files_for_package=\u6CA1\u6709\u7A0B\u5E8F\u5305{0}\u7684\u6E90\u6587\u4EF6 48.18 @@ -67,13 +66,12 @@ 48.19 tag.see.can_not_find_member=\u6807\u8BB0{0}: \u5728{2}\u4E2D\u627E\u4E0D\u5230{1} 48.20 tag.see.no_close_bracket_on_url=\u6807\u8BB0{0}: \u7F3A\u5C11\u6700\u540E\u7684 ''>'': "{1}" 48.21 tag.see.no_close_quote=\u6807\u8BB0{0}: \u65E0\u53F3\u5F15\u53F7: "{1}" 48.22 -tag.see.class_not_found=\u627E\u4E0D\u5230 @see \u6807\u8BB0\u7684\u7C7B{0}: "{1}" 48.23 tag.see.class_not_specified=\u6807\u8BB0{0}: \u672A\u6307\u5B9A\u7C7B: "{1}" 48.24 tag.see.illegal_character=\u6807\u8BB0{0}: "{2}" \u4E2D\u7684 "{1}" \u4E3A\u975E\u6CD5\u5B57\u7B26 48.25 tag.see.malformed_see_tag=\u6807\u8BB0{0}: \u683C\u5F0F\u9519\u8BEF: "{1}" 48.26 -tag.throws.exception_not_found=\u6807\u8BB0{0}: \u627E\u4E0D\u5230\u7C7B{1}\u3002 48.27 tag.End_delimiter_missing_for_possible_SeeTag=\u6CE8\u91CA\u5B57\u7B26\u4E32\u4E2D\u53EF\u80FD\u51FA\u73B0\u7684 See \u6807\u8BB0\u7F3A\u5C11\u7ED3\u675F\u5206\u9694\u7B26 }: "{0}" 48.28 tag.Improper_Use_Of_Link_Tag=\u5185\u5D4C\u6807\u8BB0\u7F3A\u5C11\u7ED3\u675F ''}'' \u5B57\u7B26: "{0}" 48.29 +tag.serialField.illegal_character=@serialField \u6807\u8BB0\u4E2D\u7684\u975E\u6CD5\u5B57\u7B26 {0}: {1}\u3002 48.30 javadoc.File_Read_Error=\u8BFB\u53D6\u6587\u4EF6{0}\u65F6\u51FA\u9519 48.31 javadoc.Body_missing_from_html_file=HTML \u6587\u4EF6\u4E2D\u7F3A\u5C11\u4E3B\u4F53\u6807\u8BB0 48.32 javadoc.End_body_missing_from_html_file=HTML \u6587\u4EF6\u4E2D\u7F3A\u5C11\u4E3B\u4F53\u7ED3\u675F\u6807\u8BB0 48.33 @@ -81,4 +79,8 @@ 48.34 javadoc.class_not_found=\u627E\u4E0D\u5230\u7C7B{0}\u3002 48.35 javadoc.error=\u9519\u8BEF 48.36 javadoc.warning=\u8B66\u544A 48.37 -tag.serialField.illegal_character=@serialField \u6807\u8BB0\u4E2D\u7684\u975E\u6CD5\u5B57\u7B26 {0}: {1}\u3002 48.38 + 48.39 +javadoc.error.msg={0}: \u9519\u8BEF - {1} 48.40 +javadoc.warning.msg={0}: \u8B66\u544A - {1} 48.41 +javadoc.note.msg = {1} 48.42 +javadoc.note.pos.msg= {0}: {1}
49.1 --- a/src/share/classes/com/sun/tools/javah/Util.java Thu Mar 21 10:43:39 2013 -0700 49.2 +++ b/src/share/classes/com/sun/tools/javah/Util.java Tue Mar 26 12:07:45 2013 -0700 49.3 @@ -1,5 +1,5 @@ 49.4 /* 49.5 - * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved. 49.6 + * Copyright (c) 2002, 2013, Oracle and/or its affiliates. All rights reserved. 49.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 49.8 * 49.9 * This code is free software; you can redistribute it and/or modify it 49.10 @@ -144,10 +144,6 @@ 49.11 throw new Exit(15); 49.12 } 49.13 49.14 - private void fatal(String msg) throws Exit { 49.15 - fatal(msg, null); 49.16 - } 49.17 - 49.18 private void fatal(String msg, Exception e) throws Exit { 49.19 dl.report(createDiagnostic(Diagnostic.Kind.ERROR, "", msg)); 49.20 throw new Exit(10, e);
50.1 --- a/src/share/classes/com/sun/tools/javah/resources/l10n_ja.properties Thu Mar 21 10:43:39 2013 -0700 50.2 +++ b/src/share/classes/com/sun/tools/javah/resources/l10n_ja.properties Tue Mar 26 12:07:45 2013 -0700 50.3 @@ -1,5 +1,5 @@ 50.4 # 50.5 -# Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. 50.6 +# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 50.7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 50.8 # 50.9 # This code is free software; you can redistribute it and/or modify it 50.10 @@ -33,10 +33,10 @@ 50.11 old.jni.mixed=\u30AA\u30D7\u30B7\u30E7\u30F3-jni\u3068-old\u3092\u540C\u6642\u306B\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002-help\u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 50.12 old.llni.mixed=\u30AA\u30D7\u30B7\u30E7\u30F3-old\u3068-llni\u3092\u540C\u6642\u306B\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002-help\u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 50.13 old.not.supported=\u3053\u306E\u30D0\u30FC\u30B8\u30E7\u30F3\u306Ejavah\u3067\u306F\u30AA\u30D7\u30B7\u30E7\u30F3-old\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002 50.14 -invalid.method.signature=\u7121\u52B9\u306A\u30E1\u30BD\u30C3\u30C9\u30FB\u30B7\u30B0\u30CB\u30C1\u30E3: {0} 50.15 +invalid.method.signature=\u7121\u52B9\u306A\u30E1\u30BD\u30C3\u30C9\u30FB\u30B7\u30B0\u30CD\u30C1\u30E3: {0} 50.16 jni.llni.mixed=\u30AA\u30D7\u30B7\u30E7\u30F3-jni\u3068-llni\u3092\u540C\u6642\u306B\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002-help\u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 50.17 jni.no.stubs=JNI\u306F\u30B9\u30BF\u30D6\u3092\u5FC5\u8981\u3068\u3057\u307E\u305B\u3093\u3002JNI\u306E\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002 50.18 -jni.sigerror={0}\u306E\u7F72\u540D\u3092\u5224\u5B9A\u3067\u304D\u307E\u305B\u3093 50.19 +jni.sigerror={0}\u306E\u30B7\u30B0\u30CD\u30C1\u30E3\u3092\u5224\u5225\u3067\u304D\u307E\u305B\u3093 50.20 dir.file.mixed=\u30AA\u30D7\u30B7\u30E7\u30F3-d\u3068-o\u3092\u540C\u6642\u306B\u4F7F\u7528\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002-help\u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 50.21 no.classes.specified=\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3067\u30AF\u30E9\u30B9\u304C\u6307\u5B9A\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002-help\u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 50.22 no.outputfile.specified=\u30B3\u30DE\u30F3\u30C9\u30E9\u30A4\u30F3\u3067\u51FA\u529B\u30D5\u30A1\u30A4\u30EB\u304C\u6307\u5B9A\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F\u3002-help\u3067\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044\u3002 50.23 @@ -51,7 +51,7 @@ 50.24 # 50.25 usage=\u4F7F\u7528\u65B9\u6CD5: javah [options] <classes>\n\n[options]\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002\n\n\t-help \u30D8\u30EB\u30D7\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u793A\u3057\u3066\u7D42\u4E86\u3059\u308B\n\t-classpath <path> \u30AF\u30E9\u30B9\u3092\u30ED\u30FC\u30C9\u3059\u308B\u30D1\u30B9\n\t-bootclasspath <path> \u30D6\u30FC\u30C8\u30B9\u30C8\u30E9\u30C3\u30D7\u30FB\u30AF\u30E9\u30B9\u3092\u30ED\u30FC\u30C9\u3059\u308B\u30D1\u30B9\n\t-d<dir> \u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\n\t-o <file> \u51FA\u529B\u30D5\u30A1\u30A4\u30EB(-d\u304B-o\u306E\u3069\u3061\u3089\u304B\u4E00\u65B9\u3092\u4F7F\u7528\u3059\u308B)\n\t-jni JNI\u5F62\u5F0F\u306E\u30D8\u30C3\u30C0\u30FC\u30FB\u30D5\u30A1\u30A4\u30EB\u3092\u751F\u6210\u3059\u308B(\u30C7\u30D5\u30A9\u30EB\u30C8)\n\t-version \u30D0\u30FC\u30B8\u30E7\u30F3\u60C5\u5831\u3092\u8868\u793A\u3059\u308B\n\t-verbose \u8A73\u7D30\u306A\u51FA\u529B\u3092\u884C\u3046\n\t-force \u5E38\u306B\u51FA\u529B\u30D5\u30A1\u30A4\u30EB\u3092\u66F8\u304D\u8FBC\u3080\n\n<classes> \u306F\u5B8C\u5168\u6307\u5B9A\u306E\u540D\u524D\u3067\u6307\u5B9A\u3057\u307E\u3059\n(java.lang.Object\u306A\u3069)\u3002\n 50.26 50.27 -main.usage=\u4F7F\u7528\u65B9\u6CD5: \n\ javah [options] <classes>\n[options]\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002 50.28 +main.usage=\u4F7F\u7528\u65B9\u6CD5: \n javah [options] <classes>\n[options]\u306B\u306F\u6B21\u306E\u3082\u306E\u304C\u3042\u308A\u307E\u3059\u3002 50.29 main.opt.o=\ -o <file> \u51FA\u529B\u30D5\u30A1\u30A4\u30EB(-d\u304B-o\u306E\u3069\u3061\u3089\u304B\u4E00\u65B9\u3092\u4F7F\u7528\u3059\u308B) 50.30 main.opt.d=\ -d <dir> \u51FA\u529B\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA 50.31 main.opt.v=\ -v -verbose \u8A73\u7D30\u306A\u51FA\u529B\u3092\u884C\u3046
51.1 --- a/src/share/classes/com/sun/tools/javah/resources/l10n_zh_CN.properties Thu Mar 21 10:43:39 2013 -0700 51.2 +++ b/src/share/classes/com/sun/tools/javah/resources/l10n_zh_CN.properties Tue Mar 26 12:07:45 2013 -0700 51.3 @@ -1,5 +1,5 @@ 51.4 # 51.5 -# Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved. 51.6 +# Copyright (c) 1998, 2010, Oracle and/or its affiliates. All rights reserved. 51.7 # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 51.8 # 51.9 # This code is free software; you can redistribute it and/or modify it 51.10 @@ -51,7 +51,7 @@ 51.11 # 51.12 usage=\u7528\u6CD5: javah [options] <classes>\n\n\u5176\u4E2D, [options] \u5305\u62EC:\n\n\t-help \u8F93\u51FA\u6B64\u5E2E\u52A9\u6D88\u606F\u5E76\u9000\u51FA\n\t-classpath <path> \u4ECE\u4E2D\u52A0\u8F7D\u7C7B\u7684\u8DEF\u5F84\n\t-bootclasspath <path> \u4ECE\u4E2D\u52A0\u8F7D\u5F15\u5BFC\u7C7B\u7684\u8DEF\u5F84\n\t-d <dir> \u8F93\u51FA\u76EE\u5F55\n\t-o <file> \u8F93\u51FA\u6587\u4EF6 (\u53EA\u80FD\u4F7F\u7528 -d \u6216 -o \u4E4B\u4E00)\n\t-jni \u751F\u6210 JNI \u6837\u5F0F\u7684\u6807\u5934\u6587\u4EF6 (\u9ED8\u8BA4\u503C)\n\t-version \u8F93\u51FA\u7248\u672C\u4FE1\u606F\n\t-verbose \u542F\u7528\u8BE6\u7EC6\u8F93\u51FA\n\t-force \u59CB\u7EC8\u5199\u5165\u8F93\u51FA\u6587\u4EF6\n\n<classes> \u662F\u4F7F\u7528\u5176\u5168\u9650\u5B9A\u540D\u79F0\u6307\u5B9A\u7684,\n(\u4F8B\u5982 java.lang.Object)\u3002\n 51.13 51.14 -main.usage=\u7528\u6CD5: \n\ javah [options] <classes>\n\u5176\u4E2D, [options] \u5305\u62EC: 51.15 +main.usage=\u7528\u6CD5: \n javah [options] <classes>\n\u5176\u4E2D, [options] \u5305\u62EC: 51.16 main.opt.o=\ -o <file> \u8F93\u51FA\u6587\u4EF6 (\u53EA\u80FD\u4F7F\u7528 -d \u6216 -o \u4E4B\u4E00) 51.17 main.opt.d=\ -d <dir> \u8F93\u51FA\u76EE\u5F55 51.18 main.opt.v=\ -v -verbose \u542F\u7528\u8BE6\u7EC6\u8F93\u51FA
52.1 --- a/src/share/classes/com/sun/tools/javap/StackMapWriter.java Thu Mar 21 10:43:39 2013 -0700 52.2 +++ b/src/share/classes/com/sun/tools/javap/StackMapWriter.java Tue Mar 26 12:07:45 2013 -0700 52.3 @@ -1,5 +1,5 @@ 52.4 /* 52.5 - * Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved. 52.6 + * Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved. 52.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 52.8 * 52.9 * This code is free software; you can redistribute it and/or modify it 52.10 @@ -269,7 +269,7 @@ 52.11 52.12 } 52.13 52.14 - class StackMap { 52.15 + static class StackMap { 52.16 StackMap(verification_type_info[] locals, verification_type_info[] stack) { 52.17 this.locals = locals; 52.18 this.stack = stack; 52.19 @@ -279,7 +279,7 @@ 52.20 private final verification_type_info[] stack; 52.21 } 52.22 52.23 - class CustomVerificationTypeInfo extends verification_type_info { 52.24 + static class CustomVerificationTypeInfo extends verification_type_info { 52.25 public CustomVerificationTypeInfo(String text) { 52.26 super(-1); 52.27 this.text = text;
53.1 --- a/src/share/classes/com/sun/tools/jdeps/Analyzer.java Thu Mar 21 10:43:39 2013 -0700 53.2 +++ b/src/share/classes/com/sun/tools/jdeps/Analyzer.java Tue Mar 26 12:07:45 2013 -0700 53.3 @@ -91,9 +91,11 @@ 53.4 result.requiredArchives.add(source); 53.5 } 53.6 // either a profile name or the archive name 53.7 - String tname = getProfile(target); 53.8 - if (tname.isEmpty()){ 53.9 - tname = source.toString(); 53.10 + String tname = result.getTargetProfile(target); 53.11 + if (tname.isEmpty()) { 53.12 + tname = PlatformClassPath.contains(source) 53.13 + ? "JDK internal API (" + source.getFileName() + ")" 53.14 + : source.toString(); 53.15 } 53.16 if (!result.targetNames.contains(tname)) { 53.17 result.targetNames.add(tname); 53.18 @@ -110,7 +112,7 @@ 53.19 * a fully-qualified classname, a package name, a profile or 53.20 * archive name depending on the Analyzer's type. 53.21 */ 53.22 - void visit(String origin, String target); 53.23 + void visit(String origin, String target, String profile); 53.24 /** 53.25 * Visits the source archive to its destination archive of 53.26 * a recorded dependency. 53.27 @@ -124,7 +126,7 @@ 53.28 v.visit(r.archive, a); 53.29 } 53.30 for (String name : r.targetNames) { 53.31 - v.visit(r.archive.getFileName(), name); 53.32 + v.visit(r.archive.getFileName(), name, name); 53.33 } 53.34 } 53.35 } 53.36 @@ -138,7 +140,7 @@ 53.37 for (String target : r.deps.get(origin)) { 53.38 // filter intra-dependency unless in verbose mode 53.39 if (type == Type.VERBOSE || getArchive(origin) != getArchive(target)) { 53.40 - v.visit(origin, target); 53.41 + v.visit(origin, target, r.getTargetProfile(target)); 53.42 } 53.43 } 53.44 } 53.45 @@ -149,21 +151,16 @@ 53.46 return map.containsKey(name) ? map.get(name) : NOT_FOUND; 53.47 } 53.48 53.49 - public String getArchiveName(String name) { 53.50 - return getArchive(name).getFileName(); 53.51 - } 53.52 - 53.53 - public String getProfile(String name) { 53.54 - String pn = type == Type.CLASS ? packageOf(name) : name; 53.55 - Archive source = map.get(name); 53.56 - if (source != null && PlatformClassPath.contains(source)) { 53.57 - String profile = PlatformClassPath.getProfileName(pn); 53.58 - if (profile.isEmpty()) { 53.59 - return "JDK internal API (" + source.getFileName() + ")"; 53.60 - } 53.61 - return profile; 53.62 - } 53.63 - return ""; 53.64 + /** 53.65 + * Returns the file name of the archive for non-JRE class or 53.66 + * internal JRE classes. It returns empty string for SE API. 53.67 + */ 53.68 + public String getArchiveName(String target, String profile) { 53.69 + Archive source = getArchive(target); 53.70 + String name = source.getFileName(); 53.71 + if (PlatformClassPath.contains(source)) 53.72 + return profile.isEmpty() ? "JDK internal API (" + name + ")" : ""; 53.73 + return name; 53.74 } 53.75 53.76 private abstract class ArchiveDeps implements Archive.Visitor { 53.77 @@ -200,6 +197,8 @@ 53.78 } 53.79 53.80 public abstract void visit(Location o, Location t); 53.81 + public abstract String getTargetProfile(String target); 53.82 + 53.83 } 53.84 53.85 private class ClassVisitor extends ArchiveDeps { 53.86 @@ -212,6 +211,10 @@ 53.87 public void visit(Location o, Location t) { 53.88 add(o.getClassName(), t.getClassName()); 53.89 } 53.90 + public String getTargetProfile(String target) { 53.91 + int i = target.lastIndexOf('.'); 53.92 + return (i > 0) ? Profiles.getProfileName(target.substring(0, i)) : ""; 53.93 + } 53.94 } 53.95 53.96 private class PackageVisitor extends ArchiveDeps { 53.97 @@ -221,19 +224,15 @@ 53.98 public void visit(Location o, Location t) { 53.99 add(packageOf(o), packageOf(t)); 53.100 } 53.101 - 53.102 public void visit(Location l) { 53.103 add(packageOf(l)); 53.104 } 53.105 - 53.106 private String packageOf(Location loc) { 53.107 String pkg = loc.getPackageName(); 53.108 return pkg.isEmpty() ? "<unnamed>" : pkg; 53.109 } 53.110 - } 53.111 - 53.112 - private static String packageOf(String cn) { 53.113 - int i = cn.lastIndexOf('.'); 53.114 - return (i > 0) ? cn.substring(0, i) : "<unnamed>"; 53.115 + public String getTargetProfile(String target) { 53.116 + return Profiles.getProfileName(target); 53.117 + } 53.118 } 53.119 }
54.1 --- a/src/share/classes/com/sun/tools/jdeps/ClassFileReader.java Thu Mar 21 10:43:39 2013 -0700 54.2 +++ b/src/share/classes/com/sun/tools/jdeps/ClassFileReader.java Tue Mar 26 12:07:45 2013 -0700 54.3 @@ -59,6 +59,13 @@ 54.4 } 54.5 } 54.6 54.7 + /** 54.8 + * Returns a ClassFileReader instance of a given JarFile. 54.9 + */ 54.10 + public static ClassFileReader newInstance(Path path, JarFile jf) throws IOException { 54.11 + return new JarFileReader(path, jf); 54.12 + } 54.13 + 54.14 protected final Path path; 54.15 protected final String baseFileName; 54.16 private ClassFileReader(Path path) { 54.17 @@ -228,8 +235,11 @@ 54.18 private static class JarFileReader extends ClassFileReader { 54.19 final JarFile jarfile; 54.20 JarFileReader(Path path) throws IOException { 54.21 + this(path, new JarFile(path.toFile())); 54.22 + } 54.23 + JarFileReader(Path path, JarFile jf) throws IOException { 54.24 super(path); 54.25 - this.jarfile = new JarFile(path.toFile()); 54.26 + this.jarfile = jf; 54.27 } 54.28 54.29 public ClassFile getClassFile(String name) throws IOException {
55.1 --- a/src/share/classes/com/sun/tools/jdeps/JdepsTask.java Thu Mar 21 10:43:39 2013 -0700 55.2 +++ b/src/share/classes/com/sun/tools/jdeps/JdepsTask.java Tue Mar 26 12:07:45 2013 -0700 55.3 @@ -1,5 +1,5 @@ 55.4 /* 55.5 - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. 55.6 + * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. 55.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 55.8 * 55.9 * This code is free software; you can redistribute it and/or modify it 55.10 @@ -38,7 +38,7 @@ 55.11 * Implementation for the jdeps tool for static class dependency analysis. 55.12 */ 55.13 class JdepsTask { 55.14 - class BadArgs extends Exception { 55.15 + static class BadArgs extends Exception { 55.16 static final long serialVersionUID = 8765093759964640721L; 55.17 BadArgs(String key, Object... args) { 55.18 super(JdepsTask.getMessage(key, args)); 55.19 @@ -119,7 +119,7 @@ 55.20 } else if ("class".equals(arg)) { 55.21 task.options.verbose = Analyzer.Type.CLASS; 55.22 } else { 55.23 - throw task.new BadArgs("err.invalid.arg.for.option", opt); 55.24 + throw new BadArgs("err.invalid.arg.for.option", opt); 55.25 } 55.26 } 55.27 }, 55.28 @@ -139,8 +139,11 @@ 55.29 } 55.30 }, 55.31 new Option(false, "-P", "--profile") { 55.32 - void process(JdepsTask task, String opt, String arg) { 55.33 + void process(JdepsTask task, String opt, String arg) throws BadArgs { 55.34 task.options.showProfile = true; 55.35 + if (Profiles.getProfileCount() == 0) { 55.36 + throw new BadArgs("err.option.unsupported", opt, getMessage("err.profiles.msg")); 55.37 + } 55.38 } 55.39 }, 55.40 new Option(false, "-R", "--recursive") { 55.41 @@ -153,7 +156,7 @@ 55.42 try { 55.43 task.options.depth = Integer.parseInt(arg); 55.44 } catch (NumberFormatException e) { 55.45 - throw task.new BadArgs("err.invalid.arg.for.option", opt); 55.46 + throw new BadArgs("err.invalid.arg.for.option", opt); 55.47 } 55.48 } 55.49 }, 55.50 @@ -382,9 +385,9 @@ 55.51 55.52 private void printSummary(final PrintWriter out, final Analyzer analyzer) { 55.53 Analyzer.Visitor visitor = new Analyzer.Visitor() { 55.54 - public void visit(String origin, String profile) { 55.55 + public void visit(String origin, String target, String profile) { 55.56 if (options.showProfile) { 55.57 - out.format("%-30s -> %s%n", origin, profile); 55.58 + out.format("%-30s -> %s%n", origin, target); 55.59 } 55.60 } 55.61 public void visit(Archive origin, Archive target) { 55.62 @@ -399,17 +402,15 @@ 55.63 private void printDependencies(final PrintWriter out, final Analyzer analyzer) { 55.64 Analyzer.Visitor visitor = new Analyzer.Visitor() { 55.65 private String pkg = ""; 55.66 - public void visit(String origin, String target) { 55.67 + public void visit(String origin, String target, String profile) { 55.68 if (!origin.equals(pkg)) { 55.69 pkg = origin; 55.70 - out.format(" %s (%s)%n", origin, analyzer.getArchiveName(origin)); 55.71 + out.format(" %s (%s)%n", origin, analyzer.getArchive(origin).getFileName()); 55.72 } 55.73 - Archive source = analyzer.getArchive(target); 55.74 - String profile = options.showProfile ? analyzer.getProfile(target) : ""; 55.75 out.format(" -> %-50s %s%n", target, 55.76 - PlatformClassPath.contains(source) 55.77 + (options.showProfile && !profile.isEmpty()) 55.78 ? profile 55.79 - : analyzer.getArchiveName(target)); 55.80 + : analyzer.getArchiveName(target, profile)); 55.81 } 55.82 public void visit(Archive origin, Archive target) { 55.83 out.format("%s -> %s%n", origin, target); 55.84 @@ -514,7 +515,6 @@ 55.85 boolean help; 55.86 boolean version; 55.87 boolean fullVersion; 55.88 - boolean showFlags; 55.89 boolean showProfile; 55.90 boolean showSummary; 55.91 boolean wildcard;
56.1 --- a/src/share/classes/com/sun/tools/jdeps/PlatformClassPath.java Thu Mar 21 10:43:39 2013 -0700 56.2 +++ b/src/share/classes/com/sun/tools/jdeps/PlatformClassPath.java Tue Mar 26 12:07:45 2013 -0700 56.3 @@ -1,5 +1,5 @@ 56.4 /* 56.5 - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. 56.6 + * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. 56.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 56.8 * 56.9 * This code is free software; you can redistribute it and/or modify it 56.10 @@ -37,34 +37,6 @@ 56.11 * ClassPath for Java SE and JDK 56.12 */ 56.13 class PlatformClassPath { 56.14 - /* 56.15 - * Profiles for Java SE 56.16 - * 56.17 - * This is a temporary workaround until a common API is defined for langtools 56.18 - * to determine which profile a given classname belongs to. The list of 56.19 - * packages and profile names are hardcoded in jdk.properties and 56.20 - * split packages are not supported. 56.21 - */ 56.22 - static class Profile { 56.23 - final String name; 56.24 - final Set<String> packages; 56.25 - 56.26 - Profile(String name) { 56.27 - this.name = name; 56.28 - this.packages = new HashSet<String>(); 56.29 - } 56.30 - } 56.31 - 56.32 - private final static String JAVAFX = "javafx"; 56.33 - private final static Map<String,Profile> map = getProfilePackages(); 56.34 - static String getProfileName(String packageName) { 56.35 - Profile profile = map.get(packageName); 56.36 - if (packageName.startsWith(JAVAFX + ".")) { 56.37 - profile = map.get(JAVAFX); 56.38 - } 56.39 - return profile != null ? profile.name : ""; 56.40 - } 56.41 - 56.42 private final static List<Archive> javaHomeArchives = init(); 56.43 static List<Archive> getArchives() { 56.44 return javaHomeArchives; 56.45 @@ -77,7 +49,6 @@ 56.46 private static List<Archive> init() { 56.47 List<Archive> result = new ArrayList<Archive>(); 56.48 String javaHome = System.getProperty("java.home"); 56.49 - List<File> files = new ArrayList<File>(); 56.50 File jre = new File(javaHome, "jre"); 56.51 File lib = new File(javaHome, "lib"); 56.52 56.53 @@ -100,13 +71,6 @@ 56.54 } catch (IOException e) { 56.55 throw new RuntimeException(e); 56.56 } 56.57 - 56.58 - // add a JavaFX profile if there is jfxrt.jar 56.59 - for (Archive archive : result) { 56.60 - if (archive.getFileName().equals("jfxrt.jar")) { 56.61 - map.put(JAVAFX, new Profile("jfxrt.jar")); 56.62 - } 56.63 - } 56.64 return result; 56.65 } 56.66 56.67 @@ -140,30 +104,4 @@ 56.68 }); 56.69 return result; 56.70 } 56.71 - 56.72 - private static Map<String,Profile> getProfilePackages() { 56.73 - Map<String,Profile> map = new HashMap<String,Profile>(); 56.74 - 56.75 - // read the properties as a ResourceBundle as the build compiles 56.76 - // the properties file into Java class. Another alternative is 56.77 - // to load it as Properties and fix the build to exclude this file. 56.78 - ResourceBundle profileBundle = 56.79 - ResourceBundle.getBundle("com.sun.tools.jdeps.resources.jdk"); 56.80 - 56.81 - int i=1; 56.82 - String key; 56.83 - while (profileBundle.containsKey((key = "profile." + i + ".name"))) { 56.84 - Profile profile = new Profile(profileBundle.getString(key)); 56.85 - String n = profileBundle.getString("profile." + i + ".packages"); 56.86 - String[] pkgs = n.split("\\s+"); 56.87 - for (String p : pkgs) { 56.88 - if (p.isEmpty()) continue; 56.89 - assert(map.containsKey(p) == false); 56.90 - profile.packages.add(p); 56.91 - map.put(p, profile); 56.92 - } 56.93 - i++; 56.94 - } 56.95 - return map; 56.96 - } 56.97 }
57.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 57.2 +++ b/src/share/classes/com/sun/tools/jdeps/Profiles.java Tue Mar 26 12:07:45 2013 -0700 57.3 @@ -0,0 +1,241 @@ 57.4 +/* 57.5 + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 57.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 57.7 + * 57.8 + * This code is free software; you can redistribute it and/or modify it 57.9 + * under the terms of the GNU General Public License version 2 only, as 57.10 + * published by the Free Software Foundation. Oracle designates this 57.11 + * particular file as subject to the "Classpath" exception as provided 57.12 + * by Oracle in the LICENSE file that accompanied this code. 57.13 + * 57.14 + * This code is distributed in the hope that it will be useful, but WITHOUT 57.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 57.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 57.17 + * version 2 for more details (a copy is included in the LICENSE file that 57.18 + * accompanied this code). 57.19 + * 57.20 + * You should have received a copy of the GNU General Public License version 57.21 + * 2 along with this work; if not, write to the Free Software Foundation, 57.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 57.23 + * 57.24 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 57.25 + * or visit www.oracle.com if you need additional information or have any 57.26 + * questions. 57.27 + */ 57.28 +package com.sun.tools.jdeps; 57.29 + 57.30 +import com.sun.tools.classfile.Annotation; 57.31 +import com.sun.tools.classfile.Annotation.*; 57.32 +import com.sun.tools.classfile.Attribute; 57.33 +import com.sun.tools.classfile.ClassFile; 57.34 +import com.sun.tools.classfile.ConstantPool; 57.35 +import com.sun.tools.classfile.ConstantPool.*; 57.36 +import com.sun.tools.classfile.ConstantPoolException; 57.37 +import com.sun.tools.classfile.RuntimeAnnotations_attribute; 57.38 +import java.io.File; 57.39 +import java.io.FileReader; 57.40 +import java.io.IOException; 57.41 +import java.nio.file.Path; 57.42 +import java.nio.file.Paths; 57.43 +import java.util.*; 57.44 +import java.util.jar.JarFile; 57.45 + 57.46 +/** 57.47 + * Build the profile information from ct.sym if exists. 57.48 + */ 57.49 +class Profiles { 57.50 + private static final Map<String,Profile> map = initProfiles(); 57.51 + /** 57.52 + * Returns the name of the profile for the given package name. 57.53 + * It returns an empty string if the given package is not in any profile. 57.54 + */ 57.55 + public static String getProfileName(String pn) { 57.56 + Profile profile = map.get(pn); 57.57 + return (profile != null && profile.packages.contains(pn)) 57.58 + ? profile.name : ""; 57.59 + } 57.60 + 57.61 + public static int getProfileCount() { 57.62 + return new HashSet<Profile>(map.values()).size(); 57.63 + } 57.64 + 57.65 + private static Map<String,Profile> initProfiles() { 57.66 + List<Profile> profiles = new ArrayList<Profile>(); 57.67 + try { 57.68 + String profilesProps = System.getProperty("jdeps.profiles"); 57.69 + if (profilesProps != null) { 57.70 + // for testing for JDK development build where ct.sym doesn't exist 57.71 + initProfilesFromProperties(profiles, profilesProps); 57.72 + } else { 57.73 + Path home = Paths.get(System.getProperty("java.home")); 57.74 + if (home.endsWith("jre")) { 57.75 + home = home.getParent(); 57.76 + } 57.77 + Path ctsym = home.resolve("lib").resolve("ct.sym"); 57.78 + if (ctsym.toFile().exists()) { 57.79 + // add a default Full JRE 57.80 + profiles.add(0, new Profile("Full JRE", 0)); 57.81 + // parse ct.sym and load information about profiles 57.82 + try (JarFile jf = new JarFile(ctsym.toFile())) { 57.83 + ClassFileReader reader = ClassFileReader.newInstance(ctsym, jf); 57.84 + for (ClassFile cf : reader.getClassFiles()) { 57.85 + findProfile(profiles, cf); 57.86 + } 57.87 + } 57.88 + 57.89 + // merge the last Profile with the "Full JRE" 57.90 + if (profiles.size() > 1) { 57.91 + Profile fullJRE = profiles.get(0); 57.92 + Profile p = profiles.remove(profiles.size() - 1); 57.93 + for (String pn : fullJRE.packages) { 57.94 + // The last profile contains the packages determined from ct.sym. 57.95 + // Move classes annotated profile==0 or no attribute that are 57.96 + // added in the fullJRE profile to either supported or proprietary 57.97 + // packages appropriately 57.98 + if (p.proprietaryPkgs.contains(pn)) { 57.99 + p.proprietaryPkgs.add(pn); 57.100 + } else { 57.101 + p.packages.add(pn); 57.102 + } 57.103 + } 57.104 + fullJRE.packages.clear(); 57.105 + fullJRE.proprietaryPkgs.clear(); 57.106 + fullJRE.packages.addAll(p.packages); 57.107 + fullJRE.proprietaryPkgs.addAll(p.proprietaryPkgs); 57.108 + } 57.109 + } 57.110 + } 57.111 + } catch (IOException | ConstantPoolException e) { 57.112 + throw new Error(e); 57.113 + } 57.114 + HashMap<String,Profile> map = new HashMap<String,Profile>(); 57.115 + for (Profile profile : profiles) { 57.116 + // Inner classes are not annotated with the profile annotation 57.117 + // packages may be in one profile but also appear in the Full JRE 57.118 + // Full JRE is always the first element in profiles list and 57.119 + // so the map will contain the appropriate Profile 57.120 + for (String pn : profile.packages) { 57.121 + map.put(pn, profile); 57.122 + } 57.123 + for (String pn : profile.proprietaryPkgs) { 57.124 + map.put(pn, profile); 57.125 + } 57.126 + } 57.127 + return map; 57.128 + } 57.129 + 57.130 + private static final String PROFILE_ANNOTATION = "Ljdk/Profile+Annotation;"; 57.131 + private static final String PROPRIETARY_ANNOTATION = "Lsun/Proprietary+Annotation;"; 57.132 + private static Profile findProfile(List<Profile> profiles, ClassFile cf) 57.133 + throws ConstantPoolException 57.134 + { 57.135 + RuntimeAnnotations_attribute attr = (RuntimeAnnotations_attribute) 57.136 + cf.attributes.get(Attribute.RuntimeInvisibleAnnotations); 57.137 + int index = 0; 57.138 + boolean proprietary = false; 57.139 + if (attr != null) { 57.140 + for (int i = 0; i < attr.annotations.length; i++) { 57.141 + Annotation ann = attr.annotations[i]; 57.142 + String annType = cf.constant_pool.getUTF8Value(ann.type_index); 57.143 + if (PROFILE_ANNOTATION.equals(annType)) { 57.144 + for (int j = 0; j < ann.num_element_value_pairs; j++) { 57.145 + Annotation.element_value_pair pair = ann.element_value_pairs[j]; 57.146 + Primitive_element_value ev = (Primitive_element_value)pair.value; 57.147 + CONSTANT_Integer_info info = (CONSTANT_Integer_info) 57.148 + cf.constant_pool.get(ev.const_value_index); 57.149 + index = info.value; 57.150 + break; 57.151 + } 57.152 + } else if (PROPRIETARY_ANNOTATION.equals(annType)) { 57.153 + proprietary = true; 57.154 + } 57.155 + } 57.156 + if (index >= profiles.size()) { 57.157 + Profile p = null; 57.158 + for (int i = profiles.size(); i <= index; i++) { 57.159 + p = new Profile(i); 57.160 + profiles.add(p); 57.161 + } 57.162 + } 57.163 + } 57.164 + 57.165 + Profile p = profiles.get(index); 57.166 + String name = cf.getName(); 57.167 + int i = name.lastIndexOf('/'); 57.168 + name = (i > 0) ? name.substring(0, i).replace('/','.') : ""; 57.169 + if (proprietary) { 57.170 + p.proprietaryPkgs.add(name); 57.171 + } else { 57.172 + p.packages.add(name); 57.173 + } 57.174 + return p; 57.175 + } 57.176 + 57.177 + private static void initProfilesFromProperties(List<Profile> profiles, String path) 57.178 + throws IOException 57.179 + { 57.180 + Properties props = new Properties(); 57.181 + try (FileReader reader = new FileReader(path)) { 57.182 + props.load(reader); 57.183 + } 57.184 + int i=1; 57.185 + String key; 57.186 + while (props.containsKey((key = "profile." + i + ".name"))) { 57.187 + Profile profile = new Profile(props.getProperty(key), i); 57.188 + profiles.add(profile); 57.189 + String n = props.getProperty("profile." + i + ".packages"); 57.190 + String[] pkgs = n.split("\\s+"); 57.191 + for (String p : pkgs) { 57.192 + if (p.isEmpty()) continue; 57.193 + profile.packages.add(p); 57.194 + } 57.195 + i++; 57.196 + } 57.197 + } 57.198 + 57.199 + private static class Profile { 57.200 + final String name; 57.201 + final int profile; 57.202 + final Set<String> packages; 57.203 + final Set<String> proprietaryPkgs; 57.204 + Profile(int profile) { 57.205 + this("compact" + profile, profile); 57.206 + } 57.207 + Profile(String name, int profile) { 57.208 + this.name = name; 57.209 + this.profile = profile; 57.210 + this.packages = new HashSet<String>(); 57.211 + this.proprietaryPkgs = new HashSet<String>(); 57.212 + } 57.213 + public String toString() { 57.214 + return name; 57.215 + } 57.216 + } 57.217 + 57.218 + // for debugging 57.219 + public static void main(String[] args) { 57.220 + if (args.length == 0) { 57.221 + Profile[] profiles = new Profile[getProfileCount()]; 57.222 + for (Profile p : map.values()) { 57.223 + // move the zeroth profile to the last 57.224 + int index = p.profile == 0 ? profiles.length-1 : p.profile-1; 57.225 + profiles[index] = p; 57.226 + } 57.227 + for (Profile p : profiles) { 57.228 + String profileName = p.name; 57.229 + SortedSet<String> set = new TreeSet<String>(p.packages); 57.230 + for (String s : set) { 57.231 + // filter out the inner classes that are not annotated with 57.232 + // the profile annotation 57.233 + if (map.get(s) == p) { 57.234 + System.out.format("%-10s %s%n", profileName, s); 57.235 + profileName = ""; 57.236 + } 57.237 + } 57.238 + } 57.239 + } 57.240 + for (String pn : args) { 57.241 + System.out.format("%s in %s%n", pn, getProfileName(pn)); 57.242 + } 57.243 + } 57.244 +}
58.1 --- a/src/share/classes/com/sun/tools/jdeps/resources/jdeps.properties Thu Mar 21 10:43:39 2013 -0700 58.2 +++ b/src/share/classes/com/sun/tools/jdeps/resources/jdeps.properties Tue Mar 26 12:07:45 2013 -0700 58.3 @@ -51,6 +51,8 @@ 58.4 err.internal.error=internal error: {0} {1} {2} 58.5 err.invalid.arg.for.option=invalid argument for option: {0} 58.6 err.option.after.class=option must be specified before classes: {0} 58.7 +err.option.unsupported={0} not supported: {1} 58.8 +err.profiles.msg=No profile information 58.9 warn.invalid.arg=Invalid classname or pathname not exist: {0} 58.10 warn.split.package=package {0} defined in {1} {2} 58.11
59.1 --- a/src/share/classes/com/sun/tools/jdeps/resources/jdk.properties Thu Mar 21 10:43:39 2013 -0700 59.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 59.3 @@ -1,262 +0,0 @@ 59.4 -# This properties file does not need localization. 59.5 - 59.6 -profile.1.name = compact1 59.7 -profile.1.packages = \ 59.8 - java.io \ 59.9 - java.lang \ 59.10 - java.lang.annotation \ 59.11 - java.lang.invoke \ 59.12 - java.lang.ref \ 59.13 - java.lang.reflect \ 59.14 - java.math \ 59.15 - java.net \ 59.16 - java.nio \ 59.17 - java.nio.channels \ 59.18 - java.nio.channels.spi \ 59.19 - java.nio.charset \ 59.20 - java.nio.charset.spi \ 59.21 - java.nio.file \ 59.22 - java.nio.file.attribute \ 59.23 - java.nio.file.spi \ 59.24 - java.security \ 59.25 - java.security.cert \ 59.26 - java.security.interfaces \ 59.27 - java.security.spec \ 59.28 - java.text \ 59.29 - java.text.spi \ 59.30 - java.util \ 59.31 - java.util.concurrent \ 59.32 - java.util.concurrent.atomic \ 59.33 - java.util.concurrent.locks \ 59.34 - java.util.jar \ 59.35 - java.util.logging \ 59.36 - java.util.regex \ 59.37 - java.util.spi \ 59.38 - java.util.zip \ 59.39 - javax.crypto \ 59.40 - javax.crypto.interfaces \ 59.41 - javax.crypto.spec \ 59.42 - javax.security.auth \ 59.43 - javax.security.auth.callback \ 59.44 - javax.security.auth.login \ 59.45 - javax.security.auth.spi \ 59.46 - javax.security.auth.x500 \ 59.47 - javax.net \ 59.48 - javax.net.ssl \ 59.49 - javax.security.cert \ 59.50 - \ 59.51 - com.sun.net.ssl \ 59.52 - com.sun.nio.file \ 59.53 - com.sun.nio.sctp \ 59.54 - com.sun.security.auth \ 59.55 - com.sun.security.auth.login 59.56 - 59.57 -profile.2.name = compact2 59.58 -profile.2.packages = \ 59.59 - java.sql \ 59.60 - javax.sql \ 59.61 - javax.xml \ 59.62 - javax.xml.datatype \ 59.63 - javax.xml.namespace \ 59.64 - javax.xml.parsers \ 59.65 - javax.xml.stream \ 59.66 - javax.xml.stream.events \ 59.67 - javax.xml.stream.util \ 59.68 - javax.xml.transform \ 59.69 - javax.xml.transform.dom \ 59.70 - javax.xml.transform.sax \ 59.71 - javax.xml.transform.stax \ 59.72 - javax.xml.transform.stream \ 59.73 - javax.xml.validation \ 59.74 - javax.xml.xpath \ 59.75 - org.w3c.dom \ 59.76 - org.w3c.dom.bootstrap \ 59.77 - org.w3c.dom.events \ 59.78 - org.w3c.dom.ls \ 59.79 - org.xml.sax \ 59.80 - org.xml.sax.ext \ 59.81 - org.xml.sax.helpers \ 59.82 - java.rmi \ 59.83 - java.rmi.activation \ 59.84 - java.rmi.dgc \ 59.85 - java.rmi.registry \ 59.86 - java.rmi.server \ 59.87 - javax.rmi.ssl \ 59.88 - javax.transaction \ 59.89 - javax.transaction.xa \ 59.90 - \ 59.91 - com.sun.net.httpserver \ 59.92 - com.sun.net.httpserver.spi 59.93 - 59.94 -profile.3.name = compact3 59.95 -profile.3.packages = \ 59.96 - java.lang.instrument \ 59.97 - java.lang.management \ 59.98 - java.security.acl \ 59.99 - java.util.prefs \ 59.100 - javax.management \ 59.101 - javax.management.loading \ 59.102 - javax.management.modelmbean \ 59.103 - javax.management.monitor \ 59.104 - javax.management.openmbean \ 59.105 - javax.management.relation \ 59.106 - javax.management.remote \ 59.107 - javax.management.remote.rmi \ 59.108 - javax.management.timer \ 59.109 - javax.naming \ 59.110 - javax.naming.directory \ 59.111 - javax.naming.event \ 59.112 - javax.naming.ldap \ 59.113 - javax.naming.spi \ 59.114 - javax.sql.rowset \ 59.115 - javax.sql.rowset.serial \ 59.116 - javax.sql.rowset.spi \ 59.117 - javax.security.auth.kerberos \ 59.118 - javax.security.sasl \ 59.119 - javax.script \ 59.120 - javax.smartcardio \ 59.121 - javax.xml.crypto \ 59.122 - javax.xml.crypto.dom \ 59.123 - javax.xml.crypto.dsig \ 59.124 - javax.xml.crypto.dsig.dom \ 59.125 - javax.xml.crypto.dsig.keyinfo \ 59.126 - javax.xml.crypto.dsig.spec \ 59.127 - javax.annotation.processing \ 59.128 - javax.lang.model \ 59.129 - javax.lang.model.element \ 59.130 - javax.lang.model.type \ 59.131 - javax.lang.model.util \ 59.132 - javax.tools \ 59.133 - javax.tools.annotation \ 59.134 - org.ietf.jgss \ 59.135 - \ 59.136 - com.sun.management \ 59.137 - com.sun.security.auth.callback \ 59.138 - com.sun.security.auth.module \ 59.139 - com.sun.security.jgss 59.140 - 59.141 -profile.4.name = Full JRE 59.142 -profile.4.packages = \ 59.143 - java.applet \ 59.144 - java.awt \ 59.145 - java.awt.color \ 59.146 - java.awt.datatransfer \ 59.147 - java.awt.dnd \ 59.148 - java.awt.dnd.peer \ 59.149 - java.awt.event \ 59.150 - java.awt.font \ 59.151 - java.awt.geom \ 59.152 - java.awt.im \ 59.153 - java.awt.im.spi \ 59.154 - java.awt.image \ 59.155 - java.awt.image.renderable \ 59.156 - java.awt.peer \ 59.157 - java.awt.print \ 59.158 - java.beans \ 59.159 - java.beans.beancontext \ 59.160 - javax.accessibility \ 59.161 - javax.imageio \ 59.162 - javax.imageio.event \ 59.163 - javax.imageio.metadata \ 59.164 - javax.imageio.plugins.bmp \ 59.165 - javax.imageio.plugins.jpeg \ 59.166 - javax.imageio.spi \ 59.167 - javax.imageio.stream \ 59.168 - javax.print \ 59.169 - javax.print.attribute \ 59.170 - javax.print.attribute.standard \ 59.171 - javax.print.event \ 59.172 - javax.sound.midi \ 59.173 - javax.sound.midi.spi \ 59.174 - javax.sound.sampled \ 59.175 - javax.sound.sampled.spi \ 59.176 - javax.swing \ 59.177 - javax.swing.border \ 59.178 - javax.swing.colorchooser \ 59.179 - javax.swing.event \ 59.180 - javax.swing.filechooser \ 59.181 - javax.swing.plaf \ 59.182 - javax.swing.plaf.basic \ 59.183 - javax.swing.plaf.metal \ 59.184 - javax.swing.plaf.multi \ 59.185 - javax.swing.plaf.nimbus \ 59.186 - javax.swing.plaf.synth \ 59.187 - javax.swing.table \ 59.188 - javax.swing.text \ 59.189 - javax.swing.text.html \ 59.190 - javax.swing.text.html.parser \ 59.191 - javax.swing.text.rtf \ 59.192 - javax.swing.tree \ 59.193 - javax.swing.undo \ 59.194 - javax.activation \ 59.195 - javax.jws \ 59.196 - javax.jws.soap \ 59.197 - javax.rmi \ 59.198 - javax.rmi.CORBA \ 59.199 - javax.xml.bind \ 59.200 - javax.xml.bind.annotation \ 59.201 - javax.xml.bind.annotation.adapters \ 59.202 - javax.xml.bind.attachment \ 59.203 - javax.xml.bind.helpers \ 59.204 - javax.xml.bind.util \ 59.205 - javax.xml.soap \ 59.206 - javax.xml.ws \ 59.207 - javax.xml.ws.handler \ 59.208 - javax.xml.ws.handler.soap \ 59.209 - javax.xml.ws.http \ 59.210 - javax.xml.ws.soap \ 59.211 - javax.xml.ws.spi \ 59.212 - javax.xml.ws.spi.http \ 59.213 - javax.xml.ws.wsaddressing \ 59.214 - javax.annotation \ 59.215 - org.omg.CORBA \ 59.216 - org.omg.CORBA.DynAnyPackage \ 59.217 - org.omg.CORBA.ORBPackage \ 59.218 - org.omg.CORBA.TypeCodePackage \ 59.219 - org.omg.CORBA.portable \ 59.220 - org.omg.CORBA_2_3 \ 59.221 - org.omg.CORBA_2_3.portable \ 59.222 - org.omg.CosNaming \ 59.223 - org.omg.CosNaming.NamingContextExtPackage \ 59.224 - org.omg.CosNaming.NamingContextPackage \ 59.225 - org.omg.Dynamic \ 59.226 - org.omg.DynamicAny \ 59.227 - org.omg.DynamicAny.DynAnyFactoryPackage \ 59.228 - org.omg.DynamicAny.DynAnyPackage \ 59.229 - org.omg.IOP \ 59.230 - org.omg.IOP.CodecFactoryPackage \ 59.231 - org.omg.IOP.CodecPackage \ 59.232 - org.omg.Messaging \ 59.233 - org.omg.PortableInterceptor \ 59.234 - org.omg.PortableInterceptor.ORBInitInfoPackage \ 59.235 - org.omg.PortableServer \ 59.236 - org.omg.PortableServer.CurrentPackage \ 59.237 - org.omg.PortableServer.POAManagerPackage \ 59.238 - org.omg.PortableServer.POAPackage \ 59.239 - org.omg.PortableServer.ServantLocatorPackage \ 59.240 - org.omg.PortableServer.portable \ 59.241 - org.omg.SendingContext \ 59.242 - org.omg.stub.java.rmi \ 59.243 - org.omg.stub.javax.management.remote.rmi 59.244 - 59.245 -# Remaining JDK supported API 59.246 -profile.5.name = JDK tools 59.247 -profile.5.packages = \ 59.248 - com.sun.jdi \ 59.249 - com.sun.jdi.connect \ 59.250 - com.sun.jdi.connect.spi \ 59.251 - com.sun.jdi.event \ 59.252 - com.sun.jdi.request \ 59.253 - com.sun.javadoc \ 59.254 - com.sun.tools.doclets \ 59.255 - com.sun.tools.doctree \ 59.256 - com.sun.source.tree \ 59.257 - com.sun.source.util \ 59.258 - com.sun.tools.attach \ 59.259 - com.sun.tools.attach.spi \ 59.260 - com.sun.tools.jconsole \ 59.261 - com.sun.tools.javac \ 59.262 - com.sun.tools.javah \ 59.263 - com.sun.tools.javap \ 59.264 - com.sun.tools.javadoc \ 59.265 - com.sun.servicetag
60.1 --- a/src/share/classes/com/sun/tools/sjavac/Main.java Thu Mar 21 10:43:39 2013 -0700 60.2 +++ b/src/share/classes/com/sun/tools/sjavac/Main.java Tue Mar 26 12:07:45 2013 -0700 60.3 @@ -1,5 +1,5 @@ 60.4 /* 60.5 - * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. 60.6 + * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. 60.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 60.8 * 60.9 * This code is free software; you can redistribute it and/or modify it 60.10 @@ -26,18 +26,13 @@ 60.11 package com.sun.tools.sjavac; 60.12 60.13 import java.io.File; 60.14 -import java.util.HashMap; 60.15 -import java.util.HashSet; 60.16 -import java.util.LinkedList; 60.17 -import java.util.List; 60.18 -import java.util.Map; 60.19 -import java.util.Set; 60.20 -import java.util.regex.Matcher; 60.21 -import java.util.regex.Pattern; 60.22 -import com.sun.tools.sjavac.server.JavacServer; 60.23 import java.io.IOException; 60.24 import java.io.PrintStream; 60.25 import java.util.*; 60.26 +import java.util.regex.Matcher; 60.27 +import java.util.regex.Pattern; 60.28 + 60.29 +import com.sun.tools.sjavac.server.JavacServer; 60.30 60.31 /** 60.32 * The main class of the smart javac wrapper tool. 60.33 @@ -268,12 +263,12 @@ 60.34 // Find all class files allowable for linking. 60.35 // And pickup knowledge of all modules found here. 60.36 // This cannot currently filter classes inside jar files. 60.37 - Map<String,Source> classes_to_link_to = new HashMap<String,Source>(); 60.38 +// Map<String,Source> classes_to_link_to = new HashMap<String,Source>(); 60.39 // findFiles(args, "-classpath", Util.set(".class"), classes_to_link_to, modules, current_module, true); 60.40 60.41 // Find all module sources allowable for linking. 60.42 - Map<String,Source> modules_to_link_to = new HashMap<String,Source>(); 60.43 - // findFiles(args, "-modulepath", Util.set(".class"), modules_to_link_to, modules, current_module, true); 60.44 +// Map<String,Source> modules_to_link_to = new HashMap<String,Source>(); 60.45 +// findFiles(args, "-modulepath", Util.set(".class"), modules_to_link_to, modules, current_module, true); 60.46 60.47 // Add the set of sources to the build database. 60.48 javac_state.now().collectPackagesSourcesAndArtifacts(modules); 60.49 @@ -935,13 +930,13 @@ 60.50 if (roots.contains(root)) { 60.51 throw new ProblemException("\""+r+"\" has already been used for "+option); 60.52 } 60.53 - if (roots.equals(bin_dir)) { 60.54 + if (root.equals(bin_dir)) { 60.55 throw new ProblemException("\""+r+"\" cannot be used both for "+option+" and -d"); 60.56 } 60.57 - if (roots.equals(gensrc_dir)) { 60.58 + if (root.equals(gensrc_dir)) { 60.59 throw new ProblemException("\""+r+"\" cannot be used both for "+option+" and -s"); 60.60 } 60.61 - if (roots.equals(header_dir)) { 60.62 + if (root.equals(header_dir)) { 60.63 throw new ProblemException("\""+r+"\" cannot be used both for "+option+" and -h"); 60.64 } 60.65 roots.add(root);
61.1 --- a/src/share/classes/com/sun/tools/sjavac/comp/Dependencies.java Thu Mar 21 10:43:39 2013 -0700 61.2 +++ b/src/share/classes/com/sun/tools/sjavac/comp/Dependencies.java Tue Mar 26 12:07:45 2013 -0700 61.3 @@ -108,7 +108,7 @@ 61.4 return new_deps; 61.5 } 61.6 61.7 - class CompareNames implements Comparator<Name> { 61.8 + static class CompareNames implements Comparator<Name> { 61.9 public int compare(Name a, Name b) { 61.10 return a.toString().compareTo(b.toString()); 61.11 }
62.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 62.2 +++ b/src/share/classes/javax/lang/model/AnnotatedConstruct.java Tue Mar 26 12:07:45 2013 -0700 62.3 @@ -0,0 +1,190 @@ 62.4 +/* 62.5 + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 62.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 62.7 + * 62.8 + * This code is free software; you can redistribute it and/or modify it 62.9 + * under the terms of the GNU General Public License version 2 only, as 62.10 + * published by the Free Software Foundation. Oracle designates this 62.11 + * particular file as subject to the "Classpath" exception as provided 62.12 + * by Oracle in the LICENSE file that accompanied this code. 62.13 + * 62.14 + * This code is distributed in the hope that it will be useful, but WITHOUT 62.15 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 62.16 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 62.17 + * version 2 for more details (a copy is included in the LICENSE file that 62.18 + * accompanied this code). 62.19 + * 62.20 + * You should have received a copy of the GNU General Public License version 62.21 + * 2 along with this work; if not, write to the Free Software Foundation, 62.22 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 62.23 + * 62.24 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 62.25 + * or visit www.oracle.com if you need additional information or have any 62.26 + * questions. 62.27 + */ 62.28 + 62.29 +package javax.lang.model; 62.30 + 62.31 +import java.lang.annotation.*; 62.32 +import java.util.List; 62.33 +import javax.lang.model.element.*; 62.34 +import javax.lang.model.type.*; 62.35 + 62.36 +/** 62.37 + * Represents a construct that can be annotated. 62.38 + * 62.39 + * A construct is either an {@linkplain 62.40 + * javax.lang.model.element.Element element} or a {@linkplain 62.41 + * javax.lang.model.type.TypeMirror type}. Annotations on an element 62.42 + * are on a <em>declaration</em>, whereas annotations on a type are on 62.43 + * a specific <em>use</em> of a type name. 62.44 + * 62.45 + * The terms <em>directly present</em> and <em>present</em> are used 62.46 + * throughout this interface to describe precisely which annotations 62.47 + * are returned by methods: 62.48 + * 62.49 + * <p>An annotation <i>A</i> is <em>directly present</em> on a 62.50 + * construct <i>E</i> if <i>E</i> is annotated, and: 62.51 + * 62.52 + * <ul> 62.53 + * 62.54 + * <li> for an invocation of {@code getAnnotation(Class<T>)} or 62.55 + * {@code getAnnotationMirrors()}, <i>E</i>'s annotations contain <i>A</i>. 62.56 + * 62.57 + * <li> for an invocation of getAnnotationsByType(Class<T>), 62.58 + * <i>E</i>'s annotations either contain <i>A</i> or, if the type of 62.59 + * <i>A</i> is repeatable, contain exactly one annotation whose value 62.60 + * element contains <i>A</i> and whose type is the containing 62.61 + * annotation type of <i>A</i>'s type. 62.62 + * 62.63 + * </ul> 62.64 + * 62.65 + * <p>An annotation A is <em>present</em> on a construct E if either: 62.66 + * 62.67 + * <ul> 62.68 + * <li> <i>A</i> is <em>directly present</em> on <i>E</i>; or 62.69 + * 62.70 + * <li> <i>A</i> is not <em>directly present</em> on <i>E</i>, and 62.71 + * <i>E</i> is an element representing a class, and <i>A</i>'s type 62.72 + * is inheritable, and <i>A</i> is <em>present</em> on the element 62.73 + * representing the superclass of <i>E</i>. 62.74 + * 62.75 + * </ul> 62.76 + * 62.77 + * @since 1.8 62.78 + * @jls 9.6 Annotation Types 62.79 + * @jls 9.6.3.3 @Inherited 62.80 + */ 62.81 +public interface AnnotatedConstruct { 62.82 + /** 62.83 + * Returns the annotations that are <em>directly present</em> on 62.84 + * this construct. 62.85 + * 62.86 + * @return the annotations <em>directly present</em> on this 62.87 + * construct; an empty list if there are none 62.88 + */ 62.89 + List<? extends AnnotationMirror> getAnnotationMirrors(); 62.90 + 62.91 + /** 62.92 + * Returns this construct's annotation of the 62.93 + * specified type if such an annotation is <em>present</em>, else {@code 62.94 + * null}. 62.95 + * 62.96 + * <p> The annotation returned by this method could contain an element 62.97 + * whose value is of type {@code Class}. 62.98 + * This value cannot be returned directly: information necessary to 62.99 + * locate and load a class (such as the class loader to use) is 62.100 + * not available, and the class might not be loadable at all. 62.101 + * Attempting to read a {@code Class} object by invoking the relevant 62.102 + * method on the returned annotation 62.103 + * will result in a {@link MirroredTypeException}, 62.104 + * from which the corresponding {@link TypeMirror} may be extracted. 62.105 + * Similarly, attempting to read a {@code Class[]}-valued element 62.106 + * will result in a {@link MirroredTypesException}. 62.107 + * 62.108 + * <blockquote> 62.109 + * <i>Note:</i> This method is unlike others in this and related 62.110 + * interfaces. It operates on runtime reflective information — 62.111 + * representations of annotation types currently loaded into the 62.112 + * VM — rather than on the representations defined by and used 62.113 + * throughout these interfaces. Consequently, calling methods on 62.114 + * the returned annotation object can throw many of the exceptions 62.115 + * that can be thrown when calling methods on an annotation object 62.116 + * returned by core reflection. This method is intended for 62.117 + * callers that are written to operate on a known, fixed set of 62.118 + * annotation types. 62.119 + * </blockquote> 62.120 + * 62.121 + * @param <A> the annotation type 62.122 + * @param annotationType the {@code Class} object corresponding to 62.123 + * the annotation type 62.124 + * @return this element's or type use's annotation for the 62.125 + * specified annotation type if present on this element, else 62.126 + * {@code null} 62.127 + * 62.128 + * @see #getAnnotationMirrors() 62.129 + * @see java.lang.reflect.AnnotatedElement#getAnnotation 62.130 + * @see EnumConstantNotPresentException 62.131 + * @see AnnotationTypeMismatchException 62.132 + * @see IncompleteAnnotationException 62.133 + * @see MirroredTypeException 62.134 + * @see MirroredTypesException 62.135 + * @jls 9.6.1 Annotation Type Elements 62.136 + */ 62.137 + <A extends Annotation> A getAnnotation(Class<A> annotationType); 62.138 + 62.139 + /** 62.140 + * Returns annotations that are <em>present</em> on this construct. 62.141 + * 62.142 + * If there are no annotations <em>present</em> on this construct, 62.143 + * the return value is an array of length 0. 62.144 + * 62.145 + * The difference between this method and {@link #getAnnotation(Class)} 62.146 + * is that this method detects if its argument is a <em>repeatable 62.147 + * annotation type</em>, and if so, attempts to find one or more 62.148 + * annotations of that type by "looking through" a container annotation. 62.149 + * 62.150 + * <p> The annotations returned by this method could contain an element 62.151 + * whose value is of type {@code Class}. 62.152 + * This value cannot be returned directly: information necessary to 62.153 + * locate and load a class (such as the class loader to use) is 62.154 + * not available, and the class might not be loadable at all. 62.155 + * Attempting to read a {@code Class} object by invoking the relevant 62.156 + * method on the returned annotation 62.157 + * will result in a {@link MirroredTypeException}, 62.158 + * from which the corresponding {@link TypeMirror} may be extracted. 62.159 + * Similarly, attempting to read a {@code Class[]}-valued element 62.160 + * will result in a {@link MirroredTypesException}. 62.161 + * 62.162 + * <blockquote> 62.163 + * <i>Note:</i> This method is unlike others in this and related 62.164 + * interfaces. It operates on runtime reflective information — 62.165 + * representations of annotation types currently loaded into the 62.166 + * VM — rather than on the representations defined by and used 62.167 + * throughout these interfaces. Consequently, calling methods on 62.168 + * the returned annotation object can throw many of the exceptions 62.169 + * that can be thrown when calling methods on an annotation object 62.170 + * returned by core reflection. This method is intended for 62.171 + * callers that are written to operate on a known, fixed set of 62.172 + * annotation types. 62.173 + * </blockquote> 62.174 + * 62.175 + * @param <A> the annotation type 62.176 + * @param annotationType the {@code Class} object corresponding to 62.177 + * the annotation type 62.178 + * @return this element's annotations for the specified annotation 62.179 + * type if present on this element, else an empty array 62.180 + * 62.181 + * @see #getAnnotationMirrors() 62.182 + * @see #getAnnotation(java.lang.Class) 62.183 + * @see java.lang.reflect.AnnotatedElement#getAnnotationsByType 62.184 + * @see EnumConstantNotPresentException 62.185 + * @see AnnotationTypeMismatchException 62.186 + * @see IncompleteAnnotationException 62.187 + * @see MirroredTypeException 62.188 + * @see MirroredTypesException 62.189 + * @jls 9.6 Annotation Types 62.190 + * @jls 9.6.1 Annotation Type Elements 62.191 + */ 62.192 + <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationType); 62.193 +}
63.1 --- a/src/share/classes/javax/lang/model/element/Element.java Thu Mar 21 10:43:39 2013 -0700 63.2 +++ b/src/share/classes/javax/lang/model/element/Element.java Tue Mar 26 12:07:45 2013 -0700 63.3 @@ -60,8 +60,7 @@ 63.4 * @see TypeMirror 63.5 * @since 1.6 63.6 */ 63.7 -public interface Element { 63.8 - 63.9 +public interface Element extends javax.lang.model.AnnotatedConstruct { 63.10 /** 63.11 * Returns the type defined by this element. 63.12 * 63.13 @@ -89,119 +88,6 @@ 63.14 ElementKind getKind(); 63.15 63.16 /** 63.17 - * Returns the annotations that are directly present on this element. 63.18 - * 63.19 - * <p> To get inherited annotations as well, use 63.20 - * {@link Elements#getAllAnnotationMirrors(Element) getAllAnnotationMirrors}. 63.21 - * 63.22 - * @see ElementFilter 63.23 - * 63.24 - * @return the annotations directly present on this element; 63.25 - * an empty list if there are none 63.26 - */ 63.27 - List<? extends AnnotationMirror> getAnnotationMirrors(); 63.28 - 63.29 - /** 63.30 - * Returns this element's annotation for the specified type if 63.31 - * such an annotation is present, else {@code null}. The 63.32 - * annotation may be either inherited or directly present on this 63.33 - * element. 63.34 - * 63.35 - * <p> The annotation returned by this method could contain an element 63.36 - * whose value is of type {@code Class}. 63.37 - * This value cannot be returned directly: information necessary to 63.38 - * locate and load a class (such as the class loader to use) is 63.39 - * not available, and the class might not be loadable at all. 63.40 - * Attempting to read a {@code Class} object by invoking the relevant 63.41 - * method on the returned annotation 63.42 - * will result in a {@link MirroredTypeException}, 63.43 - * from which the corresponding {@link TypeMirror} may be extracted. 63.44 - * Similarly, attempting to read a {@code Class[]}-valued element 63.45 - * will result in a {@link MirroredTypesException}. 63.46 - * 63.47 - * <blockquote> 63.48 - * <i>Note:</i> This method is unlike others in this and related 63.49 - * interfaces. It operates on runtime reflective information — 63.50 - * representations of annotation types currently loaded into the 63.51 - * VM — rather than on the representations defined by and used 63.52 - * throughout these interfaces. Consequently, calling methods on 63.53 - * the returned annotation object can throw many of the exceptions 63.54 - * that can be thrown when calling methods on an annotation object 63.55 - * returned by core reflection. This method is intended for 63.56 - * callers that are written to operate on a known, fixed set of 63.57 - * annotation types. 63.58 - * </blockquote> 63.59 - * 63.60 - * @param <A> the annotation type 63.61 - * @param annotationType the {@code Class} object corresponding to 63.62 - * the annotation type 63.63 - * @return this element's annotation for the specified annotation 63.64 - * type if present on this element, else {@code null} 63.65 - * 63.66 - * @see #getAnnotationMirrors() 63.67 - * @see java.lang.reflect.AnnotatedElement#getAnnotation 63.68 - * @see EnumConstantNotPresentException 63.69 - * @see AnnotationTypeMismatchException 63.70 - * @see IncompleteAnnotationException 63.71 - * @see MirroredTypeException 63.72 - * @see MirroredTypesException 63.73 - */ 63.74 - <A extends Annotation> A getAnnotation(Class<A> annotationType); 63.75 - 63.76 - /** 63.77 - * Returns annotations that are <em>present</em> on this element. 63.78 - * 63.79 - * If there are no annotations <em>present</em> on this element, the return 63.80 - * value is an array of length 0. 63.81 - * 63.82 - * The difference between this method and {@link #getAnnotation(Class)} 63.83 - * is that this method detects if its argument is a <em>repeatable 63.84 - * annotation type</em> (JLS 9.6), and if so, attempts to find one or more 63.85 - * annotations of that type by "looking through" a container annotation. 63.86 - * 63.87 - * <p> The annotations returned by this method could contain an element 63.88 - * whose value is of type {@code Class}. 63.89 - * This value cannot be returned directly: information necessary to 63.90 - * locate and load a class (such as the class loader to use) is 63.91 - * not available, and the class might not be loadable at all. 63.92 - * Attempting to read a {@code Class} object by invoking the relevant 63.93 - * method on the returned annotation 63.94 - * will result in a {@link MirroredTypeException}, 63.95 - * from which the corresponding {@link TypeMirror} may be extracted. 63.96 - * Similarly, attempting to read a {@code Class[]}-valued element 63.97 - * will result in a {@link MirroredTypesException}. 63.98 - * 63.99 - * <blockquote> 63.100 - * <i>Note:</i> This method is unlike others in this and related 63.101 - * interfaces. It operates on runtime reflective information — 63.102 - * representations of annotation types currently loaded into the 63.103 - * VM — rather than on the representations defined by and used 63.104 - * throughout these interfaces. Consequently, calling methods on 63.105 - * the returned annotation object can throw many of the exceptions 63.106 - * that can be thrown when calling methods on an annotation object 63.107 - * returned by core reflection. This method is intended for 63.108 - * callers that are written to operate on a known, fixed set of 63.109 - * annotation types. 63.110 - * </blockquote> 63.111 - * 63.112 - * @param <A> the annotation type 63.113 - * @param annotationType the {@code Class} object corresponding to 63.114 - * the annotation type 63.115 - * @return this element's annotations for the specified annotation 63.116 - * type if present on this element, else an empty array 63.117 - * 63.118 - * @see #getAnnotationMirrors() 63.119 - * @see #getAnnotation(java.lang.Class) 63.120 - * @see java.lang.reflect.AnnotatedElement#getAnnotationsByType 63.121 - * @see EnumConstantNotPresentException 63.122 - * @see AnnotationTypeMismatchException 63.123 - * @see IncompleteAnnotationException 63.124 - * @see MirroredTypeException 63.125 - * @see MirroredTypesException 63.126 - */ 63.127 - <A extends Annotation> A[] getAnnotationsByType(Class<A> annotationType); 63.128 - 63.129 - /** 63.130 * Returns the modifiers of this element, excluding annotations. 63.131 * Implicit modifiers, such as the {@code public} and {@code static} 63.132 * modifiers of interface members, are included. 63.133 @@ -325,6 +211,19 @@ 63.134 */ 63.135 int hashCode(); 63.136 63.137 + 63.138 + /** 63.139 + * {@inheritDoc} 63.140 + * 63.141 + * <p> To get inherited annotations as well, use {@link 63.142 + * Elements#getAllAnnotationMirrors(Element) 63.143 + * getAllAnnotationMirrors}. 63.144 + * 63.145 + * @see ElementFilter 63.146 + * @since 1.6 63.147 + */ 63.148 + @Override 63.149 + List<? extends AnnotationMirror> getAnnotationMirrors(); 63.150 /** 63.151 * Applies a visitor to this element. 63.152 *
64.1 --- a/src/share/classes/javax/lang/model/element/ExecutableElement.java Thu Mar 21 10:43:39 2013 -0700 64.2 +++ b/src/share/classes/javax/lang/model/element/ExecutableElement.java Tue Mar 26 12:07:45 2013 -0700 64.3 @@ -1,5 +1,5 @@ 64.4 /* 64.5 - * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved. 64.6 + * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. 64.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 64.8 * 64.9 * This code is free software; you can redistribute it and/or modify it 64.10 @@ -69,6 +69,25 @@ 64.11 List<? extends VariableElement> getParameters(); 64.12 64.13 /** 64.14 + * Returns the receiver type of this executable, 64.15 + * or {@link javax.lang.model.type.NoType NoType} with 64.16 + * kind {@link javax.lang.model.type.TypeKind#NONE NONE} 64.17 + * if the executable has no receiver type. 64.18 + * 64.19 + * An executable which is an instance method, or a constructor of an 64.20 + * inner class, has a receiver type derived from the {@linkplain 64.21 + * #getEnclosingElement declaring type}. 64.22 + * 64.23 + * An executable which is a static method, or a constructor of a 64.24 + * non-inner class, or an initializer (static or instance), has no 64.25 + * receiver type. 64.26 + * 64.27 + * @return the receiver type of this executable 64.28 + * @since 1.8 64.29 + */ 64.30 + TypeMirror getReceiverType(); 64.31 + 64.32 + /** 64.33 * Returns {@code true} if this method or constructor accepts a variable 64.34 * number of arguments and returns {@code false} otherwise. 64.35 *
65.1 --- a/src/share/classes/javax/lang/model/type/AnnotatedType.java Thu Mar 21 10:43:39 2013 -0700 65.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 65.3 @@ -1,48 +0,0 @@ 65.4 -/* 65.5 - * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. 65.6 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 65.7 - * 65.8 - * This code is free software; you can redistribute it and/or modify it 65.9 - * under the terms of the GNU General Public License version 2 only, as 65.10 - * published by the Free Software Foundation. Oracle designates this 65.11 - * particular file as subject to the "Classpath" exception as provided 65.12 - * by Oracle in the LICENSE file that accompanied this code. 65.13 - * 65.14 - * This code is distributed in the hope that it will be useful, but WITHOUT 65.15 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 65.16 - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 65.17 - * version 2 for more details (a copy is included in the LICENSE file that 65.18 - * accompanied this code). 65.19 - * 65.20 - * You should have received a copy of the GNU General Public License version 65.21 - * 2 along with this work; if not, write to the Free Software Foundation, 65.22 - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 65.23 - * 65.24 - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 65.25 - * or visit www.oracle.com if you need additional information or have any 65.26 - * questions. 65.27 - */ 65.28 - 65.29 -package javax.lang.model.type; 65.30 - 65.31 -import java.util.List; 65.32 - 65.33 -import javax.lang.model.element.AnnotationMirror; 65.34 - 65.35 -/** 65.36 - * Represents an annotated type. 65.37 - * 65.38 - * As of the {@link javax.lang.model.SourceVersion#RELEASE_8 65.39 - * RELEASE_8} source version, annotated types can appear for all 65.40 - * type uses. 65.41 - * 65.42 - * @author Werner Dietl 65.43 - * @since 1.8 65.44 - */ 65.45 -public interface AnnotatedType extends TypeMirror, 65.46 - DeclaredType, TypeVariable, WildcardType, 65.47 - PrimitiveType, ArrayType { 65.48 - 65.49 - List<? extends AnnotationMirror> getAnnotations(); 65.50 - TypeMirror getUnderlyingType(); 65.51 -}
66.1 --- a/src/share/classes/javax/lang/model/type/ExecutableType.java Thu Mar 21 10:43:39 2013 -0700 66.2 +++ b/src/share/classes/javax/lang/model/type/ExecutableType.java Tue Mar 26 12:07:45 2013 -0700 66.3 @@ -30,7 +30,6 @@ 66.4 66.5 import javax.lang.model.element.ExecutableElement; 66.6 66.7 - 66.8 /** 66.9 * Represents the type of an executable. An <i>executable</i> 66.10 * is a method, constructor, or initializer. 66.11 @@ -78,10 +77,21 @@ 66.12 List<? extends TypeMirror> getParameterTypes(); 66.13 66.14 /** 66.15 - * Returns the type of this executable's receiver parameter. 66.16 + * Returns the receiver type of this executable, 66.17 + * or {@link javax.lang.model.type.NoType NoType} with 66.18 + * kind {@link javax.lang.model.type.TypeKind#NONE NONE} 66.19 + * if the executable has no receiver type. 66.20 * 66.21 - * @return the type of this executable's receiver parameter 66.22 - * TODO: null if none specified or always a valid value? 66.23 + * An executable which is an instance method, or a constructor of an 66.24 + * inner class, has a receiver type derived from the {@linkplain 66.25 + * ExecutableElement#getEnclosingElement declaring type}. 66.26 + * 66.27 + * An executable which is a static method, or a constructor of a 66.28 + * non-inner class, or an initializer (static or instance), has no 66.29 + * receiver type. 66.30 + * 66.31 + * @return the receiver type of this executable 66.32 + * @since 1.8 66.33 */ 66.34 TypeMirror getReceiverType(); 66.35
67.1 --- a/src/share/classes/javax/lang/model/type/TypeKind.java Thu Mar 21 10:43:39 2013 -0700 67.2 +++ b/src/share/classes/javax/lang/model/type/TypeKind.java Tue Mar 26 12:07:45 2013 -0700 67.3 @@ -151,14 +151,7 @@ 67.4 * 67.5 * @since 1.8 67.6 */ 67.7 - INTERSECTION, 67.8 - 67.9 - /** 67.10 - * An annotated type. 67.11 - * 67.12 - * @since 1.8 67.13 - */ 67.14 - ANNOTATED; 67.15 + INTERSECTION; 67.16 67.17 /** 67.18 * Returns {@code true} if this kind corresponds to a primitive
68.1 --- a/src/share/classes/javax/lang/model/type/TypeMirror.java Thu Mar 21 10:43:39 2013 -0700 68.2 +++ b/src/share/classes/javax/lang/model/type/TypeMirror.java Tue Mar 26 12:07:45 2013 -0700 68.3 @@ -1,5 +1,5 @@ 68.4 /* 68.5 - * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. 68.6 + * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. 68.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 68.8 * 68.9 * This code is free software; you can redistribute it and/or modify it 68.10 @@ -25,6 +25,8 @@ 68.11 68.12 package javax.lang.model.type; 68.13 68.14 +import java.lang.annotation.Annotation; 68.15 +import java.util.List; 68.16 import javax.lang.model.element.*; 68.17 import javax.lang.model.util.Types; 68.18 68.19 @@ -55,7 +57,7 @@ 68.20 * @see Types 68.21 * @since 1.6 68.22 */ 68.23 -public interface TypeMirror { 68.24 +public interface TypeMirror extends javax.lang.model.AnnotatedConstruct { 68.25 68.26 /** 68.27 * Returns the {@code kind} of this type.
69.1 --- a/src/share/classes/javax/lang/model/type/TypeVisitor.java Thu Mar 21 10:43:39 2013 -0700 69.2 +++ b/src/share/classes/javax/lang/model/type/TypeVisitor.java Tue Mar 26 12:07:45 2013 -0700 69.3 @@ -194,14 +194,4 @@ 69.4 * @since 1.8 69.5 */ 69.6 R visitIntersection(IntersectionType t, P p); 69.7 - 69.8 - /** 69.9 - * Visits an annotated type. 69.10 - * 69.11 - * @param t the type to visit 69.12 - * @param p a visitor-specified parameter 69.13 - * @return a visitor-specified result 69.14 - * @since 1.8 69.15 - */ 69.16 - R visitAnnotated(AnnotatedType t, P p); 69.17 }
70.1 --- a/src/share/classes/javax/lang/model/util/AbstractTypeVisitor6.java Thu Mar 21 10:43:39 2013 -0700 70.2 +++ b/src/share/classes/javax/lang/model/util/AbstractTypeVisitor6.java Tue Mar 26 12:07:45 2013 -0700 70.3 @@ -134,23 +134,6 @@ 70.4 } 70.5 70.6 /** 70.7 - * Visits an {@code AnnotatedType} element by calling {@code 70.8 - * visit} on the underlying type. 70.9 - 70.10 - * @param t {@inheritDoc} 70.11 - * @param p {@inheritDoc} 70.12 - * @return the result of calling {@code visit} on the underlying type 70.13 - * 70.14 - * @since 1.8 70.15 - * 70.16 - * TODO: should xxxVisitor8 subclasses override this and call 70.17 - * the defaultAction? 70.18 - */ 70.19 - public R visitAnnotated(AnnotatedType t, P p) { 70.20 - return visit(t.getUnderlyingType(), p); 70.21 - } 70.22 - 70.23 - /** 70.24 * {@inheritDoc} 70.25 * 70.26 * <p> The default implementation of this method in {@code
71.1 --- a/src/share/classes/javax/lang/model/util/Types.java Thu Mar 21 10:43:39 2013 -0700 71.2 +++ b/src/share/classes/javax/lang/model/util/Types.java Tue Mar 26 12:07:45 2013 -0700 71.3 @@ -59,6 +59,13 @@ 71.4 /** 71.5 * Tests whether two {@code TypeMirror} objects represent the same type. 71.6 * 71.7 + * <p>Since annotations are only meta-data associated with a type, 71.8 + * the set of annotations on either argument is <em>not</em> taken 71.9 + * into account when computing whether or not two {@code 71.10 + * TypeMirror} objects are the same type. In particular, two 71.11 + * {@code TypeMirror} objects can have different annotations and 71.12 + * still be considered the same. 71.13 + * 71.14 * <p>Caveat: if either of the arguments to this method represents a 71.15 * wildcard, this method will return false. As a consequence, a wildcard 71.16 * is not the same type as itself. This might be surprising at first, 71.17 @@ -301,116 +308,4 @@ 71.18 * for the given type 71.19 */ 71.20 TypeMirror asMemberOf(DeclaredType containing, Element element); 71.21 - 71.22 - /** 71.23 - * Returns the annotations targeting the type. 71.24 - * 71.25 - * @param type the targeted type 71.26 - * @return the type annotations targeting the type 71.27 - */ 71.28 - List<? extends AnnotationMirror> typeAnnotationsOf(TypeMirror type); 71.29 - 71.30 - /** 71.31 - * Returns the type's annotation for the specified type if 71.32 - * such an annotation is present, else {@code null}. The 71.33 - * annotation has to be directly present on this 71.34 - * element. 71.35 - * 71.36 - * <p> The annotation returned by this method could contain an element 71.37 - * whose value is of type {@code Class}. 71.38 - * This value cannot be returned directly: information necessary to 71.39 - * locate and load a class (such as the class loader to use) is 71.40 - * not available, and the class might not be loadable at all. 71.41 - * Attempting to read a {@code Class} object by invoking the relevant 71.42 - * method on the returned annotation 71.43 - * will result in a {@link MirroredTypeException}, 71.44 - * from which the corresponding {@link TypeMirror} may be extracted. 71.45 - * Similarly, attempting to read a {@code Class[]}-valued element 71.46 - * will result in a {@link MirroredTypesException}. 71.47 - * 71.48 - * <blockquote> 71.49 - * <i>Note:</i> This method is unlike others in this and related 71.50 - * interfaces. It operates on runtime reflective information — 71.51 - * representations of annotation types currently loaded into the 71.52 - * VM — rather than on the representations defined by and used 71.53 - * throughout these interfaces. Consequently, calling methods on 71.54 - * the returned annotation object can throw many of the exceptions 71.55 - * that can be thrown when calling methods on an annotation object 71.56 - * returned by core reflection. This method is intended for 71.57 - * callers that are written to operate on a known, fixed set of 71.58 - * annotation types. 71.59 - * </blockquote> 71.60 - * 71.61 - * @param <A> the annotation type 71.62 - * @param type the targeted type 71.63 - * @param annotationType the {@code Class} object corresponding to 71.64 - * the annotation type 71.65 - * @return the type's annotation for the specified annotation 71.66 - * type if present on the type, else {@code null} 71.67 - * 71.68 - * @see Element#getAnnotationMirrors() 71.69 - * @see EnumConstantNotPresentException 71.70 - * @see AnnotationTypeMismatchException 71.71 - * @see IncompleteAnnotationException 71.72 - * @see MirroredTypeException 71.73 - * @see MirroredTypesException 71.74 - */ 71.75 - <A extends Annotation> A typeAnnotationOf(TypeMirror type, Class<A> annotationType); 71.76 - 71.77 - /** 71.78 - * Returns the annotations targeting the method receiver type. 71.79 - * 71.80 - * @param type the targeted type 71.81 - * @return the receiver type of the executable type 71.82 - */ 71.83 - TypeMirror receiverTypeOf(ExecutableType type); 71.84 - 71.85 - /** 71.86 - * Returns the type's annotation for the specified executable type 71.87 - * receiver if such an annotation is present, else {@code null}. The 71.88 - * annotation has to be directly present on this 71.89 - * element. 71.90 - * 71.91 - * <p> The annotation returned by this method could contain an element 71.92 - * whose value is of type {@code Class}. 71.93 - * This value cannot be returned directly: information necessary to 71.94 - * locate and load a class (such as the class loader to use) is 71.95 - * not available, and the class might not be loadable at all. 71.96 - * Attempting to read a {@code Class} object by invoking the relevant 71.97 - * method on the returned annotation 71.98 - * will result in a {@link MirroredTypeException}, 71.99 - * from which the corresponding {@link TypeMirror} may be extracted. 71.100 - * Similarly, attempting to read a {@code Class[]}-valued element 71.101 - * will result in a {@link MirroredTypesException}. 71.102 - * 71.103 - * <blockquote> 71.104 - * <i>Note:</i> This method is unlike others in this and related 71.105 - * interfaces. It operates on runtime reflective information — 71.106 - * representations of annotation types currently loaded into the 71.107 - * VM — rather than on the representations defined by and used 71.108 - * throughout these interfaces. Consequently, calling methods on 71.109 - * the returned annotation object can throw many of the exceptions 71.110 - * that can be thrown when calling methods on an annotation object 71.111 - * returned by core reflection. This method is intended for 71.112 - * callers that are written to operate on a known, fixed set of 71.113 - * annotation types. 71.114 - * </blockquote> 71.115 - * 71.116 - * @param <A> the annotation type 71.117 - * @param type the method type 71.118 - * @param annotationType the {@code Class} object corresponding to 71.119 - * the annotation type 71.120 - * @return the type's annotation for the specified annotation 71.121 - * type if present on the type, else {@code null} 71.122 - * 71.123 - * @see Element#getAnnotationMirrors() 71.124 - * @see EnumConstantNotPresentException 71.125 - * @see AnnotationTypeMismatchException 71.126 - * @see IncompleteAnnotationException 71.127 - * @see MirroredTypeException 71.128 - * @see MirroredTypesException 71.129 - */ 71.130 - // TODO: no longer needed? 71.131 - // <A extends Annotation> A receiverTypeAnnotationOf(ExecutableType type, Class<A> annotationType); 71.132 - 71.133 }
72.1 --- a/test/com/sun/javadoc/testProfiles/TestProfiles.java Thu Mar 21 10:43:39 2013 -0700 72.2 +++ b/test/com/sun/javadoc/testProfiles/TestProfiles.java Tue Mar 26 12:07:45 2013 -0700 72.3 @@ -23,7 +23,7 @@ 72.4 72.5 /* 72.6 * @test 72.7 - * @bug 8006124 72.8 + * @bug 8006124 8009684 72.9 * @summary Test javadoc support for profiles. 72.10 * @author Bhavesh Patel 72.11 * @library ../lib/ 72.12 @@ -33,7 +33,7 @@ 72.13 public class TestProfiles extends JavadocTester { 72.14 72.15 //Test information. 72.16 - private static final String BUG_ID = "8006124"; 72.17 + private static final String BUG_ID = "8006124-8009684"; 72.18 private static final String PROFILE_BUG_ID = BUG_ID + "-1"; 72.19 private static final String PACKAGE_BUG_ID = BUG_ID + "-2"; 72.20 //Javadoc arguments. 72.21 @@ -49,17 +49,17 @@ 72.22 // Tests for profile-overview-frame.html listing all profiles. 72.23 {PROFILE_BUG_ID + FS + "profile-overview-frame.html", 72.24 "<span><a href=\"overview-frame.html\" " 72.25 - + "target=\"profileListFrame\">All Packages</a></span>" 72.26 + + "target=\"packageListFrame\">All Packages</a></span>" 72.27 }, 72.28 {PROFILE_BUG_ID + FS + "profile-overview-frame.html", 72.29 - "<li><a href=\"compact1-frame.html\" target=\"profileListFrame\">" 72.30 + "<li><a href=\"compact1-frame.html\" target=\"packageListFrame\">" 72.31 + "compact1</a></li>" 72.32 }, 72.33 // Tests for profileName-frame.html listing all packages in a profile. 72.34 {PROFILE_BUG_ID + FS + "compact2-frame.html", 72.35 - "<span><a href=\"overview-frame.html\" target=\"profileListFrame\">" 72.36 + "<span><a href=\"overview-frame.html\" target=\"packageListFrame\">" 72.37 + "All Packages</a></span><span><a href=\"profile-overview-frame.html\" " 72.38 - + "target=\"profileListFrame\">All Profiles</a></span>" 72.39 + + "target=\"packageListFrame\">All Profiles</a></span>" 72.40 }, 72.41 {PROFILE_BUG_ID + FS + "compact2-frame.html", 72.42 "<li><a href=\"pkg4/compact2-package-frame.html\" " 72.43 @@ -96,11 +96,15 @@ 72.44 //Test for "overview-frame.html" showing the "All Profiles" link. 72.45 {PROFILE_BUG_ID + FS + "overview-frame.html", 72.46 "<span><a href=\"profile-overview-frame.html\" " 72.47 - + "target=\"profileListFrame\">All Profiles</a></span>" 72.48 + + "target=\"packageListFrame\">All Profiles</a></span>" 72.49 }, 72.50 //Test for "className.html" showing the profile information for the type. 72.51 {PROFILE_BUG_ID + FS + "pkg2" + FS + "Class1Pkg2.html", 72.52 "<div class=\"subTitle\">compact1, compact2, compact3</div>" 72.53 + }, 72.54 + {PROFILE_BUG_ID + FS + "index.html", 72.55 + "<frame src=\"overview-frame.html\" name=\"packageListFrame\" " + 72.56 + "title=\"All Packages\">" 72.57 } 72.58 }; 72.59 private static final String[][] PROFILES_NEGATED_TEST = { 72.60 @@ -131,12 +135,12 @@ 72.61 private static final String[][] PACKAGES_NEGATED_TEST = { 72.62 {PACKAGE_BUG_ID + FS + "profile-overview-frame.html", 72.63 "<span><a href=\"overview-frame.html\" " 72.64 - + "target=\"profileListFrame\">All Packages</a></span>" 72.65 + + "target=\"packageListFrame\">All Packages</a></span>" 72.66 }, 72.67 {PACKAGE_BUG_ID + FS + "compact2-frame.html", 72.68 - "<span><a href=\"overview-frame.html\" target=\"profileListFrame\">" 72.69 + "<span><a href=\"overview-frame.html\" target=\"packageListFrame\">" 72.70 + "All Packages</a></span><span><a href=\"profile-overview-frame.html\" " 72.71 - + "target=\"profileListFrame\">All Profiles</a></span>" 72.72 + + "target=\"packageListFrame\">All Profiles</a></span>" 72.73 }, 72.74 {PACKAGE_BUG_ID + FS + "pkg2" + FS + "compact2-package-frame.html", 72.75 "<a href=\"../compact2-summary.html\" target=\"classFrame\">" 72.76 @@ -151,7 +155,7 @@ 72.77 }, 72.78 {PACKAGE_BUG_ID + FS + "overview-frame.html", 72.79 "<span><a href=\"profile-overview-frame.html\" " 72.80 - + "target=\"profileListFrame\">All Profiles</a></span>" 72.81 + + "target=\"packageListFrame\">All Profiles</a></span>" 72.82 }, 72.83 {PACKAGE_BUG_ID + FS + "pkg2" + FS + "Class1Pkg2.html", 72.84 "<div class=\"subTitle\">compact1, compact2, compact3</div>"
73.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 73.2 +++ b/test/tools/doclint/EmptyPreTest.java Tue Mar 26 12:07:45 2013 -0700 73.3 @@ -0,0 +1,44 @@ 73.4 +/* 73.5 + * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved. 73.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 73.7 + * 73.8 + * This code is free software; you can redistribute it and/or modify it 73.9 + * under the terms of the GNU General Public License version 2 only, as 73.10 + * published by the Free Software Foundation. 73.11 + * 73.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 73.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 73.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 73.15 + * version 2 for more details (a copy is included in the LICENSE file that 73.16 + * accompanied this code). 73.17 + * 73.18 + * You should have received a copy of the GNU General Public License version 73.19 + * 2 along with this work; if not, write to the Free Software Foundation, 73.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 73.21 + * 73.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 73.23 + * or visit www.oracle.com if you need additional information or have any 73.24 + * questions. 73.25 + */ 73.26 + 73.27 +/* 73.28 + * @test 73.29 + * @bug 8010317 73.30 + * @summary DocLint incorrectly reports some <pre> tags as empty 73.31 + * @build DocLintTester 73.32 + * @run main DocLintTester -Xmsgs:html EmptyPreTest.java 73.33 + */ 73.34 + 73.35 +public class EmptyPreTest { 73.36 + /** <pre> {@code xyzzy} </pre> */ 73.37 + public void m1() { } 73.38 + 73.39 + /** <pre> {@docRoot} </pre> */ 73.40 + public void m2() { } 73.41 + 73.42 + /** <pre> {@link java.lang.String} </pre> */ 73.43 + public void m3() { } 73.44 + 73.45 + /** <pre> {@value} </pre> */ 73.46 + public static final int v1 = 1; 73.47 +}
74.1 --- a/test/tools/javac/4846262/CheckEBCDICLocaleTest.java Thu Mar 21 10:43:39 2013 -0700 74.2 +++ b/test/tools/javac/4846262/CheckEBCDICLocaleTest.java Tue Mar 26 12:07:45 2013 -0700 74.3 @@ -34,9 +34,7 @@ 74.4 import java.nio.file.Files; 74.5 import java.nio.file.Paths; 74.6 import java.util.Arrays; 74.7 -import com.sun.tools.javac.util.ArrayUtils; 74.8 74.9 -//original test: test/tools/javac/4846262/Test.sh 74.10 public class CheckEBCDICLocaleTest { 74.11 74.12 private static final String TestSrc = 74.13 @@ -46,11 +44,11 @@ 74.14 " }\n" + 74.15 "}"; 74.16 74.17 - private static final String TestOut = 74.18 - "output/Test.java:3: error: not a statement\n" + 74.19 + private static final String TestOutTemplate = 74.20 + "output%1$sTest.java:3: error: not a statement\n" + 74.21 " abcdefg\n" + 74.22 " ^\n" + 74.23 - "output/Test.java:3: error: ';' expected\n" + 74.24 + "output%1$sTest.java:3: error: ';' expected\n" + 74.25 " abcdefg\n" + 74.26 " ^\n" + 74.27 "2 errors\n"; 74.28 @@ -62,38 +60,37 @@ 74.29 public void test() throws Exception { 74.30 String native2asciiBinary = Paths.get( 74.31 System.getProperty("test.jdk"),"bin", "native2ascii").toString(); 74.32 - String testVMOpts = System.getProperty("test.tool.vm.opts"); 74.33 - String[] mainArgs = ToolBox.getJavacBin(); 74.34 74.35 ToolBox.createJavaFileFromSource(TestSrc); 74.36 Files.createDirectory(Paths.get("output")); 74.37 74.38 -//"${TESTJAVA}${FS}bin${FS}native2ascii" ${TESTTOOLVMOPTS} -reverse -encoding IBM1047 ${TESTSRC}${FS}Test.java Test.java 74.39 ToolBox.AnyToolArgs nativeCmdParams = 74.40 new ToolBox.AnyToolArgs() 74.41 - .setAllArgs(native2asciiBinary, testVMOpts, 74.42 - "-reverse", "-encoding", "IBM1047", 74.43 - "Test.java", "output/Test.java"); 74.44 + .appendArgs(native2asciiBinary) 74.45 + .appendArgs(ToolBox.testToolVMOpts) 74.46 + .appendArgs("-reverse", "-encoding", "IBM1047", "Test.java", 74.47 + "output/Test.java"); 74.48 ToolBox.executeCommand(nativeCmdParams); 74.49 74.50 -//"${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -J-Duser.language=en -J-Duser.region=US -J-Dfile.encoding=IBM1047 Test.java 2>Test.tmp 74.51 ToolBox.AnyToolArgs javacParams = 74.52 new ToolBox.AnyToolArgs(ToolBox.Expect.FAIL) 74.53 - .setAllArgs(ArrayUtils.concatOpen(mainArgs, "-J-Duser.language=en", 74.54 + .appendArgs(ToolBox.javacBinary) 74.55 + .appendArgs(ToolBox.testToolVMOpts) 74.56 + .appendArgs("-J-Duser.language=en", 74.57 "-J-Duser.region=US", "-J-Dfile.encoding=IBM1047", 74.58 - "output/Test.java")) 74.59 + "output/Test.java") 74.60 .setErrOutput(new File("Test.tmp")); 74.61 ToolBox.executeCommand(javacParams); 74.62 74.63 -//"${TESTJAVA}${FS}bin${FS}native2ascii" ${TESTTOOLVMOPTS} -encoding IBM1047 Test.tmp Test.out 74.64 - nativeCmdParams.setAllArgs(native2asciiBinary, "-encoding", "IBM1047", 74.65 - "Test.tmp", "Test.out"); 74.66 + nativeCmdParams = new ToolBox.AnyToolArgs() 74.67 + .appendArgs(native2asciiBinary) 74.68 + .appendArgs(ToolBox.testToolVMOpts) 74.69 + .appendArgs("-encoding", "IBM1047", "Test.tmp", "Test.out"); 74.70 ToolBox.executeCommand(nativeCmdParams); 74.71 74.72 -//diff ${DIFFOPTS} -c "${TESTSRC}${FS}Test.out" Test.out 74.73 + String goldenFile = String.format(TestOutTemplate, File.separator); 74.74 ToolBox.compareLines(Paths.get("Test.out"), 74.75 - Arrays.asList(TestOut.split("\n")), null); 74.76 - 74.77 + Arrays.asList(goldenFile.split("\n")), null, true); 74.78 } 74.79 74.80 }
75.1 --- a/test/tools/javac/ClassFileModifiers/MemberModifiers.java Thu Mar 21 10:43:39 2013 -0700 75.2 +++ b/test/tools/javac/ClassFileModifiers/MemberModifiers.java Tue Mar 26 12:07:45 2013 -0700 75.3 @@ -1,5 +1,5 @@ 75.4 /* 75.5 - * Copyright (c) 1999, 2010, Oracle and/or its affiliates. All rights reserved. 75.6 + * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved. 75.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 75.8 * 75.9 * This code is free software; you can redistribute it and/or modify it 75.10 @@ -26,7 +26,7 @@ 75.11 * @bug 4249112 4785453 75.12 * @summary Verify that implicit member modifiers are set correctly. 75.13 * 75.14 - * @compile/ref=MemberModifiers.out -source 1.4 -target 1.4.2 -Xlint:-options -XDdumpmodifiers=cfm MemberModifiers.java 75.15 + * @compile/ref=MemberModifiers.out -source 1.4 -target 1.5 -Xlint:-options -XDdumpmodifiers=cfm MemberModifiers.java 75.16 */ 75.17 75.18 // Currently, we check only that members of final classes are not final.
76.1 --- a/test/tools/javac/ClassPathTest/ClassPathTest.java Thu Mar 21 10:43:39 2013 -0700 76.2 +++ b/test/tools/javac/ClassPathTest/ClassPathTest.java Tue Mar 26 12:07:45 2013 -0700 76.3 @@ -31,9 +31,11 @@ 76.4 */ 76.5 76.6 import java.nio.file.Paths; 76.7 +import java.util.ArrayList; 76.8 +import java.util.Arrays; 76.9 +import java.util.List; 76.10 import java.util.Map; 76.11 import java.util.TreeMap; 76.12 -import com.sun.tools.javac.util.ArrayUtils; 76.13 76.14 //original test: test/tools/javac/ClassPathTest/ClassPathTest.sh 76.15 public class ClassPathTest { 76.16 @@ -92,24 +94,31 @@ 76.17 } 76.18 76.19 void checkCompileCommands() throws Exception { 76.20 - String[] mainArgs = ToolBox.getJavacBin(); 76.21 - 76.22 // Without the -cp . parameter the command will fail seems like when called 76.23 // from the command line, the current dir is added to the classpath 76.24 // automatically but this is not happening when called using ProcessBuilder 76.25 76.26 // testJavac success ClassPathTest3.java 76.27 - String[] commonArgs = ArrayUtils.concatOpen(mainArgs, "-cp", "."); 76.28 + List<String> mainArgs = new ArrayList<>(); 76.29 + mainArgs.add(ToolBox.javacBinary.toString()); 76.30 + if (ToolBox.testToolVMOpts != null) { 76.31 + mainArgs.addAll(ToolBox.testToolVMOpts); 76.32 + } 76.33 76.34 - ToolBox.AnyToolArgs successParams = 76.35 - new ToolBox.AnyToolArgs() 76.36 - .setAllArgs(ArrayUtils.concatOpen(commonArgs, "ClassPathTest3.java")); 76.37 + List<String> commonArgs = new ArrayList<>(); 76.38 + commonArgs.addAll(mainArgs); 76.39 + commonArgs.addAll(Arrays.asList("-cp", ".")); 76.40 + 76.41 + ToolBox.AnyToolArgs successParams = new ToolBox.AnyToolArgs() 76.42 + .appendArgs(commonArgs) 76.43 + .appendArgs("ClassPathTest3.java"); 76.44 ToolBox.executeCommand(successParams); 76.45 76.46 // testJavac failure ClassPathTest1.java 76.47 ToolBox.AnyToolArgs failParams = 76.48 new ToolBox.AnyToolArgs(ToolBox.Expect.FAIL) 76.49 - .setAllArgs(ArrayUtils.concatOpen(commonArgs, "ClassPathTest1.java")); 76.50 + .appendArgs(commonArgs) 76.51 + .appendArgs("ClassPathTest1.java"); 76.52 ToolBox.executeCommand(failParams); 76.53 76.54 // This is done inside the executeCommand method 76.55 @@ -119,29 +128,50 @@ 76.56 extVars.put("CLASSPATH", "bar"); 76.57 76.58 // testJavac success ClassPathTest2.java 76.59 - successParams.setAllArgs(ArrayUtils.concatOpen(mainArgs, "ClassPathTest2.java")).set(extVars); 76.60 + successParams = new ToolBox.AnyToolArgs() 76.61 + .appendArgs(mainArgs) 76.62 + .appendArgs("ClassPathTest2.java") 76.63 + .set(extVars); 76.64 ToolBox.executeCommand(successParams); 76.65 76.66 // testJavac failure ClassPathTest1.java 76.67 - failParams.setAllArgs(ArrayUtils.concatOpen(mainArgs, "ClassPathTest1.java")).set(extVars); 76.68 + failParams = new ToolBox.AnyToolArgs(ToolBox.Expect.FAIL) 76.69 + .appendArgs(mainArgs) 76.70 + .appendArgs("ClassPathTest1.java") 76.71 + .set(extVars); 76.72 ToolBox.executeCommand(failParams); 76.73 76.74 // testJavac failure ClassPathTest3.java 76.75 - failParams.setAllArgs(ArrayUtils.concatOpen(mainArgs, "ClassPathTest3.java")); 76.76 + failParams = new ToolBox.AnyToolArgs(ToolBox.Expect.FAIL) 76.77 + .appendArgs(mainArgs) 76.78 + .appendArgs("ClassPathTest3.java") 76.79 + .set(extVars); 76.80 ToolBox.executeCommand(failParams); 76.81 76.82 // testJavac success -classpath foo ClassPathTest1.java 76.83 76.84 - commonArgs = ArrayUtils.concatOpen(mainArgs, "-cp", "foo"); 76.85 - successParams.setAllArgs(ArrayUtils.concatOpen(commonArgs, "ClassPathTest1.java")); 76.86 + commonArgs.clear(); 76.87 + commonArgs.addAll(mainArgs); 76.88 + commonArgs.addAll(Arrays.asList("-cp", "foo")); 76.89 + 76.90 + successParams = new ToolBox.AnyToolArgs() 76.91 + .appendArgs(commonArgs) 76.92 + .appendArgs("ClassPathTest1.java") 76.93 + .set(extVars); 76.94 ToolBox.executeCommand(successParams); 76.95 76.96 // testJavac failure -classpath foo ClassPathTest2.java 76.97 - failParams.setAllArgs(ArrayUtils.concatOpen(commonArgs, "ClassPathTest2.java")); 76.98 + failParams = new ToolBox.AnyToolArgs(ToolBox.Expect.FAIL) 76.99 + .appendArgs(commonArgs) 76.100 + .appendArgs("ClassPathTest2.java") 76.101 + .set(extVars); 76.102 ToolBox.executeCommand(failParams); 76.103 76.104 // testJavac failure -classpath foo ClassPathTest3.java 76.105 - failParams.setAllArgs(ArrayUtils.concatOpen(commonArgs, "ClassPathTest3.java")); 76.106 + failParams = new ToolBox.AnyToolArgs(ToolBox.Expect.FAIL) 76.107 + .appendArgs(commonArgs) 76.108 + .appendArgs("ClassPathTest3.java") 76.109 + .set(extVars); 76.110 ToolBox.executeCommand(failParams); 76.111 } 76.112
77.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 77.2 +++ b/test/tools/javac/Diagnostics/8010387/T8010387.java Tue Mar 26 12:07:45 2013 -0700 77.3 @@ -0,0 +1,17 @@ 77.4 +/** 77.5 + * @test /nodynamiccopyright/ 77.6 + * @bug 8010387 77.7 + * @summary rich diagnostic sometimes contain wrong type variable numbering 77.8 + * @compile/fail/ref=T8010387.out -XDrawDiagnostics -XDdiags=disambiguateTvars,where T8010387.java 77.9 + */ 77.10 +abstract class T8010387<X> { 77.11 + 77.12 + interface F<X> { } 77.13 + 77.14 + <P> void test() { 77.15 + m(new F<P>() { }); 77.16 + } 77.17 + 77.18 + 77.19 + abstract <T> T8010387<?> m(F<? extends X> fx); 77.20 +}
78.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 78.2 +++ b/test/tools/javac/Diagnostics/8010387/T8010387.out Tue Mar 26 12:07:45 2013 -0700 78.3 @@ -0,0 +1,3 @@ 78.4 +T8010387.java:12:9: compiler.err.cant.apply.symbol: kindname.method, m, T8010387.F<? extends X>, compiler.misc.anonymous.class: T8010387.F<P>, kindname.class, T8010387<X>, (compiler.misc.infer.no.conforming.assignment.exists: T, (compiler.misc.inconvertible.types: compiler.misc.anonymous.class: T8010387.F<P>, T8010387.F<? extends X>)) 78.5 +- compiler.misc.where.description.typevar.1: X,P,T,{(compiler.misc.where.typevar: X, java.lang.Object, kindname.class, T8010387),(compiler.misc.where.typevar: P, java.lang.Object, kindname.method, <P>test()),(compiler.misc.where.typevar: T, java.lang.Object, kindname.method, <T>m(T8010387.F<? extends X>))} 78.6 +1 error
79.1 --- a/test/tools/javac/ProtectedInnerClass/ProtectedInnerClassesTest.java Thu Mar 21 10:43:39 2013 -0700 79.2 +++ b/test/tools/javac/ProtectedInnerClass/ProtectedInnerClassesTest.java Tue Mar 26 12:07:45 2013 -0700 79.3 @@ -91,7 +91,9 @@ 79.4 //"${TESTJAVA}${FS}bin${FS}java" ${TESTVMOPTS} -classpath "${CLASSPATH}${PS}${TESTCLASSES}" p2.ProtectedInnerClass2 79.5 ToolBox.AnyToolArgs javaParams = 79.6 new ToolBox.AnyToolArgs() 79.7 - .setAllArgs(ToolBox.javaBinary, "-classpath", System.getProperty("user.dir"), 79.8 + .appendArgs(ToolBox.javaBinary) 79.9 + .appendArgs(ToolBox.testVMOpts) 79.10 + .appendArgs("-classpath", System.getProperty("user.dir"), 79.11 "p2.ProtectedInnerClass2"); 79.12 ToolBox.executeCommand(javaParams); 79.13 } 79.14 @@ -101,14 +103,15 @@ 79.15 //@run compile p1/ProtectedInnerClass1.java 79.16 ToolBox.JavaToolArgs javacParams = 79.17 new ToolBox.JavaToolArgs() 79.18 - .setOptions("-d", ".") 79.19 + .appendArgs("-d", ".") 79.20 .setSources(protectedInnerClass1Src); 79.21 79.22 ToolBox.javac(javacParams); 79.23 79.24 //@run compile/fail p2/ProtectedInnerClass3.java 79.25 - javacParams.setSources(protectedInnerClass3Src) 79.26 - .set(ToolBox.Expect.FAIL); 79.27 + javacParams = new ToolBox.JavaToolArgs(ToolBox.Expect.FAIL) 79.28 + .appendArgs("-d", ".") 79.29 + .setSources(protectedInnerClass3Src); 79.30 ToolBox.javac(javacParams); 79.31 } 79.32
80.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 80.2 +++ b/test/tools/javac/T5053846/MethodRefDupInConstantPoolTest.java Tue Mar 26 12:07:45 2013 -0700 80.3 @@ -0,0 +1,91 @@ 80.4 +/* 80.5 + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 80.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 80.7 + * 80.8 + * This code is free software; you can redistribute it and/or modify it 80.9 + * under the terms of the GNU General Public License version 2 only, as 80.10 + * published by the Free Software Foundation. 80.11 + * 80.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 80.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 80.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 80.15 + * version 2 for more details (a copy is included in the LICENSE file that 80.16 + * accompanied this code). 80.17 + * 80.18 + * You should have received a copy of the GNU General Public License version 80.19 + * 2 along with this work; if not, write to the Free Software Foundation, 80.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 80.21 + * 80.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 80.23 + * or visit www.oracle.com if you need additional information or have any 80.24 + * questions. 80.25 + */ 80.26 + 80.27 +/* 80.28 + * @test 80.29 + * @bug 5053846 80.30 + * @summary javac: MethodRef entries are duplicated in the constant pool 80.31 + */ 80.32 + 80.33 +import java.io.PrintWriter; 80.34 +import java.io.StringWriter; 80.35 +import java.nio.file.Paths; 80.36 +import java.util.*; 80.37 + 80.38 +public class MethodRefDupInConstantPoolTest { 80.39 + 80.40 + private static final String methodToLookFor = 80.41 + "java/util/Vector.iterator:()Ljava/util/Iterator;"; 80.42 + 80.43 + public static void main(String[] args) { 80.44 + new MethodRefDupInConstantPoolTest().run(); 80.45 + } 80.46 + 80.47 + void run() { 80.48 + check("-v", Paths.get(System.getProperty("test.classes"), 80.49 + "TestHelper1.class").toString()); 80.50 + check("-v", Paths.get(System.getProperty("test.classes"), 80.51 + "TestHelper2.class").toString()); 80.52 + } 80.53 + 80.54 + void check(String... params) { 80.55 + StringWriter s; 80.56 + String out; 80.57 + try (PrintWriter pw = new PrintWriter(s = new StringWriter())) { 80.58 + com.sun.tools.javap.Main.run(params, pw); 80.59 + out = s.toString(); 80.60 + } 80.61 + String constantPool = getConstantPool(out); 80.62 + if (constantPool.indexOf(methodToLookFor) != 80.63 + constantPool.lastIndexOf(methodToLookFor)) { 80.64 + throw new AssertionError("There is more than one entry for the method seek " + 80.65 + methodToLookFor); 80.66 + } 80.67 + } 80.68 + 80.69 + String getConstantPool(String out) { 80.70 + int start = out.indexOf("Constant pool:"); 80.71 + int end = out.indexOf("{"); 80.72 + return out.substring(start, end); 80.73 + } 80.74 +} 80.75 + 80.76 +class TestHelper1 { 80.77 + void m() { 80.78 + Vector v = new Vector(); 80.79 + Iterator iter = v.iterator(); 80.80 + while (iter.hasNext()) { 80.81 + Object o = iter.next(); 80.82 + Object o2 = o; 80.83 + } 80.84 + for (Object o: v) { 80.85 + Object o2 = o; 80.86 + } 80.87 + } 80.88 +} 80.89 + 80.90 +class TestHelper2<X extends Number & Iterable<String>> { 80.91 + void test(X x) { 80.92 + for (String s : x) { } 80.93 + } 80.94 +}
81.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 81.2 +++ b/test/tools/javac/annotations/repeatingAnnotations/DefaultTarget.java Tue Mar 26 12:07:45 2013 -0700 81.3 @@ -0,0 +1,47 @@ 81.4 +/* 81.5 + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 81.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 81.7 + * 81.8 + * This code is free software; you can redistribute it and/or modify it 81.9 + * under the terms of the GNU General Public License version 2 only, as 81.10 + * published by the Free Software Foundation. 81.11 + * 81.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 81.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 81.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 81.15 + * version 2 for more details (a copy is included in the LICENSE file that 81.16 + * accompanied this code). 81.17 + * 81.18 + * You should have received a copy of the GNU General Public License version 81.19 + * 2 along with this work; if not, write to the Free Software Foundation, 81.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 81.21 + * 81.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 81.23 + * or visit www.oracle.com if you need additional information or have any 81.24 + * questions. 81.25 + */ 81.26 + 81.27 +import java.lang.annotation.*; 81.28 + 81.29 +/** 81.30 + * @test 81.31 + * @bug 8006547 81.32 + * @compile DefaultTarget.java 81.33 + */ 81.34 + 81.35 +@Target({ 81.36 + ElementType.CONSTRUCTOR, 81.37 + ElementType.PARAMETER, 81.38 + ElementType.TYPE, 81.39 + ElementType.METHOD, 81.40 + ElementType.LOCAL_VARIABLE, 81.41 + ElementType.PACKAGE, 81.42 + ElementType.ANNOTATION_TYPE, 81.43 + ElementType.FIELD, 81.44 +}) 81.45 +@interface Container { 81.46 + DefaultTarget[] value(); 81.47 +} 81.48 + 81.49 +@Repeatable(Container.class) 81.50 +public @interface DefaultTarget {}
82.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 82.2 +++ b/test/tools/javac/annotations/repeatingAnnotations/DefaultTargetTypeParameter.java Tue Mar 26 12:07:45 2013 -0700 82.3 @@ -0,0 +1,40 @@ 82.4 +/* 82.5 + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 82.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 82.7 + * 82.8 + * This code is free software; you can redistribute it and/or modify it 82.9 + * under the terms of the GNU General Public License version 2 only, as 82.10 + * published by the Free Software Foundation. 82.11 + * 82.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 82.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 82.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 82.15 + * version 2 for more details (a copy is included in the LICENSE file that 82.16 + * accompanied this code). 82.17 + * 82.18 + * You should have received a copy of the GNU General Public License version 82.19 + * 2 along with this work; if not, write to the Free Software Foundation, 82.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 82.21 + * 82.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 82.23 + * or visit www.oracle.com if you need additional information or have any 82.24 + * questions. 82.25 + */ 82.26 + 82.27 +import java.lang.annotation.*; 82.28 + 82.29 +/** 82.30 + * @test 82.31 + * @bug 8006547 82.32 + * @compile/fail/ref=DefaultTargetTypeParameter.out -XDrawDiagnostics DefaultTargetTypeParameter.java 82.33 + */ 82.34 + 82.35 +@Target({ 82.36 + ElementType.TYPE_PARAMETER, 82.37 +}) 82.38 +@interface Container { 82.39 + DefaultTargetTypeParameter[] value(); 82.40 +} 82.41 + 82.42 +@Repeatable(Container.class) 82.43 +public @interface DefaultTargetTypeParameter {}
83.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 83.2 +++ b/test/tools/javac/annotations/repeatingAnnotations/DefaultTargetTypeParameter.out Tue Mar 26 12:07:45 2013 -0700 83.3 @@ -0,0 +1,2 @@ 83.4 +DefaultTargetTypeParameter.java:39:1: compiler.err.invalid.repeatable.annotation.incompatible.target: Container, DefaultTargetTypeParameter 83.5 +1 error
84.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 84.2 +++ b/test/tools/javac/annotations/repeatingAnnotations/DefaultTargetTypeUse.java Tue Mar 26 12:07:45 2013 -0700 84.3 @@ -0,0 +1,40 @@ 84.4 +/* 84.5 + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 84.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 84.7 + * 84.8 + * This code is free software; you can redistribute it and/or modify it 84.9 + * under the terms of the GNU General Public License version 2 only, as 84.10 + * published by the Free Software Foundation. 84.11 + * 84.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 84.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 84.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 84.15 + * version 2 for more details (a copy is included in the LICENSE file that 84.16 + * accompanied this code). 84.17 + * 84.18 + * You should have received a copy of the GNU General Public License version 84.19 + * 2 along with this work; if not, write to the Free Software Foundation, 84.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 84.21 + * 84.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 84.23 + * or visit www.oracle.com if you need additional information or have any 84.24 + * questions. 84.25 + */ 84.26 + 84.27 +import java.lang.annotation.*; 84.28 + 84.29 +/** 84.30 + * @test 84.31 + * @bug 8006547 84.32 + * @compile/fail/ref=DefaultTargetTypeUse.out -XDrawDiagnostics DefaultTargetTypeUse.java 84.33 + */ 84.34 + 84.35 +@Target({ 84.36 + ElementType.TYPE_USE, 84.37 +}) 84.38 +@interface Container { 84.39 + DefaultTargetTypeUse[] value(); 84.40 +} 84.41 + 84.42 +@Repeatable(Container.class) 84.43 +public @interface DefaultTargetTypeUse {}
85.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 85.2 +++ b/test/tools/javac/annotations/repeatingAnnotations/DefaultTargetTypeUse.out Tue Mar 26 12:07:45 2013 -0700 85.3 @@ -0,0 +1,2 @@ 85.4 +DefaultTargetTypeUse.java:39:1: compiler.err.invalid.repeatable.annotation.incompatible.target: Container, DefaultTargetTypeUse 85.5 +1 error
86.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 86.2 +++ b/test/tools/javac/annotations/repeatingAnnotations/NoTargetOnContainer.java Tue Mar 26 12:07:45 2013 -0700 86.3 @@ -0,0 +1,49 @@ 86.4 +/* 86.5 + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 86.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 86.7 + * 86.8 + * This code is free software; you can redistribute it and/or modify it 86.9 + * under the terms of the GNU General Public License version 2 only, as 86.10 + * published by the Free Software Foundation. 86.11 + * 86.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 86.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 86.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 86.15 + * version 2 for more details (a copy is included in the LICENSE file that 86.16 + * accompanied this code). 86.17 + * 86.18 + * You should have received a copy of the GNU General Public License version 86.19 + * 2 along with this work; if not, write to the Free Software Foundation, 86.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 86.21 + * 86.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 86.23 + * or visit www.oracle.com if you need additional information or have any 86.24 + * questions. 86.25 + */ 86.26 + 86.27 +import java.lang.annotation.*; 86.28 + 86.29 +/** 86.30 + * @test 86.31 + * @bug 8006547 86.32 + * @compile NoTargetOnContainer.java 86.33 + */ 86.34 + 86.35 +@interface FooContainer { 86.36 + Foo[] value(); 86.37 +} 86.38 + 86.39 +@Target({ 86.40 + ElementType.CONSTRUCTOR, 86.41 + ElementType.PARAMETER, 86.42 + ElementType.TYPE, 86.43 + ElementType.METHOD, 86.44 + ElementType.LOCAL_VARIABLE, 86.45 + ElementType.PACKAGE, 86.46 + ElementType.ANNOTATION_TYPE, 86.47 + ElementType.FIELD, 86.48 +}) 86.49 +@Repeatable(FooContainer.class) 86.50 +@interface Foo {} 86.51 + 86.52 +class NoTargetOnContainer {}
87.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 87.2 +++ b/test/tools/javac/annotations/repeatingAnnotations/NoTargetOnContainer2.java Tue Mar 26 12:07:45 2013 -0700 87.3 @@ -0,0 +1,50 @@ 87.4 +/* 87.5 + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 87.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 87.7 + * 87.8 + * This code is free software; you can redistribute it and/or modify it 87.9 + * under the terms of the GNU General Public License version 2 only, as 87.10 + * published by the Free Software Foundation. 87.11 + * 87.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 87.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 87.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 87.15 + * version 2 for more details (a copy is included in the LICENSE file that 87.16 + * accompanied this code). 87.17 + * 87.18 + * You should have received a copy of the GNU General Public License version 87.19 + * 2 along with this work; if not, write to the Free Software Foundation, 87.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 87.21 + * 87.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 87.23 + * or visit www.oracle.com if you need additional information or have any 87.24 + * questions. 87.25 + */ 87.26 + 87.27 +import java.lang.annotation.*; 87.28 + 87.29 +/** 87.30 + * @test 87.31 + * @bug 8006547 87.32 + * @compile NoTargetOnContainer2.java 87.33 + */ 87.34 + 87.35 +@interface FooContainer { 87.36 + Foo[] value(); 87.37 +} 87.38 + 87.39 +@Target({ 87.40 + ElementType.CONSTRUCTOR, 87.41 + ElementType.PARAMETER, 87.42 + ElementType.TYPE, 87.43 + ElementType.METHOD, 87.44 + ElementType.LOCAL_VARIABLE, 87.45 + ElementType.PACKAGE, 87.46 + ElementType.ANNOTATION_TYPE, 87.47 + ElementType.FIELD, 87.48 + ElementType.TYPE_USE, 87.49 + ElementType.TYPE_PARAMETER}) 87.50 +@Repeatable(FooContainer.class) 87.51 +@interface Foo {} 87.52 + 87.53 +class NoTargetOnContainer2 {}
88.1 --- a/test/tools/javac/annotations/repeatingAnnotations/combo/Helper.java Thu Mar 21 10:43:39 2013 -0700 88.2 +++ b/test/tools/javac/annotations/repeatingAnnotations/combo/Helper.java Tue Mar 26 12:07:45 2013 -0700 88.3 @@ -146,6 +146,7 @@ 88.4 public static final String template = 88.5 "/*PACKAGE*/\n" 88.6 + "//pkg test;\n\n" 88.7 + + "/*ANNODATA*/\n" // import statements, declaration of Foo/FooContainer 88.8 + "/*TYPE*/ //class\n" 88.9 + "class #ClassName {\n" 88.10 + " /*FIELD*/ //instance var\n"
89.1 --- a/test/tools/javac/annotations/repeatingAnnotations/combo/TargetAnnoCombo.java Thu Mar 21 10:43:39 2013 -0700 89.2 +++ b/test/tools/javac/annotations/repeatingAnnotations/combo/TargetAnnoCombo.java Tue Mar 26 12:07:45 2013 -0700 89.3 @@ -21,245 +21,404 @@ 89.4 * questions. 89.5 */ 89.6 89.7 -/** 89.8 +/* 89.9 * @test 89.10 - * @bug 7195131 89.11 - * @author sogoel 89.12 - * @summary Combo test for all possible combinations for Target values 89.13 - * @ignore 8008339 Test TargetAnnoCombo.java is broken 89.14 + * @bug 7151010 8006547 8007766 89.15 + * @summary Default test cases for running combinations for Target values 89.16 * @build Helper 89.17 - * @compile TargetAnnoCombo.java TestCaseGenerator.java 89.18 * @run main TargetAnnoCombo 89.19 */ 89.20 89.21 +import java.util.Set; 89.22 +import java.util.List; 89.23 import java.io.IOException; 89.24 +import java.lang.annotation.ElementType; 89.25 import java.util.ArrayList; 89.26 import java.util.Arrays; 89.27 -import java.util.HashSet; 89.28 -import java.util.Set; 89.29 +import java.util.EnumSet; 89.30 import javax.tools.Diagnostic; 89.31 import javax.tools.DiagnosticCollector; 89.32 import javax.tools.JavaFileObject; 89.33 89.34 -/* 89.35 - * TargetAnnoCombo gets a list of test case numbers using TestCaseGenerator. 89.36 - * For each of the test case number, @Target sets for base and container annotations 89.37 - * are determined, source files are generated, compiled, and the result is verified 89.38 - * based on if the @Target set for base and container is a positive or negative combination. 89.39 - * 89.40 - * @Target sets for base and container annotations are determined using a bit mapping of 89.41 - * 10 ElementType enum constants defined in JDK8. 89.42 - * 89.43 - * Bit Target value 89.44 - * 0 "ElementType.ANNOTATION_TYPE" 89.45 - * 1 "ElementType.CONSTRUCTOR" 89.46 - * 2 "ElementType.FIELD" 89.47 - * 3 "ElementType.LOCAL_VARIABLE" 89.48 - * 4 "ElementType.METHOD" 89.49 - * 5 "ElementType.TYPE" 89.50 - * 6 "ElementType.PARAMETER" 89.51 - * 7 "ElementType.PACKAGE" 89.52 - * 8 "ElementType.TYPE_USE" 89.53 - * 9 "ElementType.TYPE_PARAMETER" 89.54 - * 89.55 - * Group 1: 89.56 - * 20 bits mapping, representing a test case number, is used for all target set 89.57 - * combinations ( 0 to 1048575 ) including empty @Target sets => @Target({}). 89.58 - * From this 20 bits, 10 bits are for base followed by 10 bits for container 89.59 - * where each bit maps to an ElementType enum constant defined in JDK8. 89.60 - * 89.61 - * Examples: 89.62 - * Test case number: 4, binary: 100 => container=100, base=[], container=["ElementType.FIELD"] 89.63 - * Test case number: 1003575, binary: 11110101000000110111 => base=1111010100, container=0000110111; 89.64 - * base=["ElementType.PARAMETER", "ElementType.TYPE_USE", "ElementType.METHOD", "ElementType.FIELD", "ElementType.PACKAGE", "ElementType.TYPE_PARAMETER"], 89.65 - * container=["ElementType.TYPE", "ElementType.METHOD", "ElementType.ANNOTATION_TYPE", "ElementType.CONSTRUCTOR", "ElementType.FIELD"] 89.66 - * 89.67 - * In the following groups, no @Target set is represented by null. 89.68 - * Group 2: 89.69 - * @Target is not defined on base. 89.70 - * Target sets for container are determined using the 10-bit binary number 89.71 - * resulting in 1024 test cases, mapping them to test case numbers from 89.72 - * 1048576 to (1048576 + 1023) => 1048576 to 1049599. 89.73 - * 89.74 - * Example: 89.75 - * Test case number: 1048587 => 1048587 - 1048576 = test case 11 in Group 2, binary: 1011 => 89.76 - * base = null, 89.77 - * container = ["ElementType.ANNOTATION_TYPE","ElementType.CONSTRUCTOR","ElementType.LOCAL_VARIABLE"] 89.78 - * 89.79 - * Group 3: 89.80 - * @Target is not defined on container 89.81 - * Target sets for base are determined using the 10-bit binary number 89.82 - * resulting in 1024 test cases, mapping them to test case numbers from 89.83 - * 1049600 to (1049600 + 1023) => 1049600 to 1050623. 89.84 - * 89.85 - * Example: 89.86 - * Test case number: 1049708 => 1049708 - 1049600 = test case 108 in Group 3, binary: 1101100 => 89.87 - * base = ["ElementType.FIELD", "ElementType.LOCAL_VARIABLE", "ElementType.TYPE", "ElementType.PARAMETER"], 89.88 - * container = null 89.89 - * 89.90 - * For the above group, test case number: 1049855 gives compiler error, JDK-8006547 filed 89.91 - * 89.92 - * Group 4: 89.93 - * @Target not defined for both base and container annotations. 89.94 - * 89.95 - * This is the last test and corresponds to test case number 1050624. base=null, container=null 89.96 - * 89.97 - * Examples to run this test: 89.98 - * 1. Run a specific test case number: 89.99 - * ${JTREG} -DTestCaseNum=10782 -samevm -jdk:${JAVA_TEST} -reportDir ${REPORT} -workDir ${WORK} TargetAnnoCombo.java 89.100 - * 2. Run specific number of tests: 89.101 - * ${JTREG} -DNumberOfTests=4 -samevm -jdk:${JAVA_TEST} -reportDir ${REPORT} -workDir ${WORK} TargetAnnoCombo.java 89.102 - * 3. Run specific number of tests with a seed: 89.103 - * ${JTREG} -DNumberOfTests=4 -DTestSeed=-972894659 -samevm -jdk:${JAVA_TEST} -reportDir ${REPORT} -workDir ${WORK} TargetAnnoCombo.java 89.104 - * 4. Run tests in default mode (number of tests = 1000): 89.105 - * ${JTREG} -DTestMode=DEFAULT -samevm -jdk:${JAVA_TEST} -reportDir ${REPORT} -workDir ${WORK} TargetAnnoCombo.java 89.106 - * 5. Run all tests (FULL mode): 89.107 - * ${JTREG} -DTestMode=FULL -samevm -jdk:${JAVA_TEST} -reportDir ${REPORT} -workDir ${WORK} TargetAnnoCombo.java 89.108 - * 89.109 - */ 89.110 +import static java.lang.annotation.ElementType.ANNOTATION_TYPE; 89.111 +import static java.lang.annotation.ElementType.CONSTRUCTOR; 89.112 +import static java.lang.annotation.ElementType.FIELD; 89.113 +import static java.lang.annotation.ElementType.METHOD; 89.114 +import static java.lang.annotation.ElementType.PARAMETER; 89.115 +import static java.lang.annotation.ElementType.TYPE; 89.116 +import static java.lang.annotation.ElementType.PACKAGE; 89.117 +import static java.lang.annotation.ElementType.LOCAL_VARIABLE; 89.118 +import static java.lang.annotation.ElementType.TYPE_USE; 89.119 +import static java.lang.annotation.ElementType.TYPE_PARAMETER; 89.120 89.121 public class TargetAnnoCombo { 89.122 - int errors = 0; 89.123 + 89.124 static final String TESTPKG = "testpkg"; 89.125 - /* 89.126 - * Set it to true to get more debug information including base and 89.127 - * container target sets for a given test case number 89.128 - */ 89.129 + 89.130 + // Set it to true to get more debug information including base and container 89.131 + // target sets for a given test case. 89.132 static final boolean DEBUG = false; 89.133 89.134 - // JDK 5/6/7/8 Targets 89.135 - static final String[] targetVals = {"ElementType.ANNOTATION_TYPE", 89.136 - "ElementType.CONSTRUCTOR", "ElementType.FIELD", 89.137 - "ElementType.LOCAL_VARIABLE", "ElementType.METHOD", 89.138 - "ElementType.TYPE", "ElementType.PARAMETER", 89.139 - "ElementType.PACKAGE", "ElementType.TYPE_USE", 89.140 - "ElementType.TYPE_PARAMETER"}; 89.141 + // Define constant target sets to be used for the combination of the target values. 89.142 + final static Set<ElementType> noSet = null; 89.143 + final static Set<ElementType> empty = EnumSet.noneOf(ElementType.class); 89.144 89.145 - // TYPE_USE and TYPE_PARAMETER (added in JDK8) are not part of default Target set 89.146 - static final int DEFAULT_TARGET_CNT = 8; 89.147 + // [TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, ANNOTATION_TYPE, 89.148 + // PACKAGE, TYPE_PARAMETER, TYPE_USE] 89.149 + final static Set<ElementType> allTargets = EnumSet.allOf(ElementType.class); 89.150 + 89.151 + // [TYPE, FIELD, METHOD, PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE, ANNOTATION_TYPE, 89.152 + // PACKAGE] 89.153 + final static Set<ElementType> jdk7 = EnumSet.range(TYPE, PACKAGE); 89.154 + 89.155 + // [TYPE_USE, TYPE_PARAMETER] 89.156 + final static Set<ElementType> jdk8 = EnumSet.range(TYPE_PARAMETER, TYPE_USE); 89.157 + 89.158 + // List of test cases to run. This list is created in generate(). 89.159 + // To run a specific test cases add case number in @run main line. 89.160 + List<TestCase> testCases = new ArrayList<TestCase>(); 89.161 + 89.162 + int errors = 0; 89.163 + 89.164 + // Identify test cases that fail. 89.165 + enum IgnoreKind { 89.166 + RUN, 89.167 + IGNORE 89.168 + }; 89.169 + 89.170 + private class TestCase { 89.171 + 89.172 + private Set<ElementType> baseAnnotations; 89.173 + private Set<ElementType> containerAnnotations; 89.174 + private IgnoreKind ignore; 89.175 + 89.176 + public TestCase(Set<ElementType> baseAnnotations, Set<ElementType> containerAnnotations) { 89.177 + this(baseAnnotations, containerAnnotations, IgnoreKind.RUN); 89.178 + } 89.179 + 89.180 + public TestCase(Set<ElementType> baseAnnotations, Set<ElementType> containerAnnotations, 89.181 + IgnoreKind ignoreKind) { 89.182 + this.baseAnnotations = baseAnnotations; 89.183 + this.containerAnnotations = containerAnnotations; 89.184 + this.ignore = ignoreKind; 89.185 + } 89.186 + 89.187 + public Set getBaseAnnotations() { 89.188 + return baseAnnotations; 89.189 + } 89.190 + 89.191 + public Set getContainerAnnotations() { 89.192 + return containerAnnotations; 89.193 + } 89.194 + 89.195 + public boolean isIgnored() { 89.196 + return ignore == IgnoreKind.IGNORE; 89.197 + } 89.198 + 89.199 + // Determine if a testCase should compile or not. 89.200 + private boolean isValidSubSet() { 89.201 + /* 89.202 + * RULE 1: conAnnoTarget should be a subset of baseAnnoTarget 89.203 + * RULE 2: For empty @Target ({}) - annotation cannot be applied anywhere 89.204 + * - Empty sets for both is valid 89.205 + * - Empty baseTarget set is invalid with non-empty conTarget set 89.206 + * - Non-empty baseTarget set is valid with empty conTarget set 89.207 + * RULE 3: For no @Target specified - annotation can be applied to any JDK 7 targets 89.208 + * - No @Target for both is valid 89.209 + * - No @Target for baseTarget set with @Target conTarget set is valid 89.210 + * - @Target for baseTarget set with no @Target for conTarget is invalid 89.211 + */ 89.212 + 89.213 + 89.214 + /* If baseAnno has no @Target, Foo can be either applied to @Target specified 89.215 + * for container annotation else will be applicable for all default targets 89.216 + * if no @Target is present for container annotation. 89.217 + * In both cases, the set will be a valid set with no @Target for base annotation 89.218 + */ 89.219 + if (baseAnnotations == null) { 89.220 + if (containerAnnotations == null) { 89.221 + return true; 89.222 + } 89.223 + return !(containerAnnotations.contains(TYPE_USE) || 89.224 + containerAnnotations.contains(TYPE_PARAMETER)); 89.225 + } 89.226 + 89.227 + Set<ElementType> tempBaseSet = EnumSet.noneOf(ElementType.class); 89.228 + tempBaseSet.addAll(baseAnnotations); 89.229 + // If BaseAnno has TYPE, then ANNOTATION_TYPE is allowed by default. 89.230 + if (baseAnnotations.contains(TYPE)) { 89.231 + tempBaseSet.add(ANNOTATION_TYPE); 89.232 + } 89.233 + 89.234 + // If containerAnno has no @Target, only valid case if baseAnnoTarget has 89.235 + // all targets defined else invalid set. 89.236 + if (containerAnnotations == null) { 89.237 + return tempBaseSet.containsAll(jdk7); 89.238 + } 89.239 + 89.240 + // At this point, neither conAnnoTarget or baseAnnoTarget are null. 89.241 + if (containerAnnotations.isEmpty()) { 89.242 + return true; 89.243 + } 89.244 + 89.245 + // At this point, conAnnoTarget is non-empty. 89.246 + if (baseAnnotations.isEmpty()) { 89.247 + return false; 89.248 + } 89.249 + 89.250 + // At this point, neither conAnnoTarget or baseAnnoTarget are empty. 89.251 + return tempBaseSet.containsAll(containerAnnotations); 89.252 + } 89.253 + } 89.254 89.255 public static void main(String args[]) throws Exception { 89.256 - 89.257 - /* maxTestNum = (base and container combinations of targetVals elems [0 - 1048575 combos]) 89.258 - * + (combinations where base or container has no Target [1024 combos]) 89.259 - * + (no -1 even though 1st test is number 0 as last test is where both 89.260 - * base and container have no target) 89.261 - */ 89.262 - 89.263 - int maxTestNum = (int)Math.pow(2, 2*targetVals.length) + 2*(int)Math.pow(2, targetVals.length); 89.264 - TestCaseGenerator tcg = new TestCaseGenerator(maxTestNum); 89.265 TargetAnnoCombo tac = new TargetAnnoCombo(); 89.266 - 89.267 - int testCtr = 0; 89.268 - int testCase = -1; 89.269 - while ( (testCase=tcg.getNextTestCase()) != -1 ) { 89.270 - tac.executeTestCase(testCase, maxTestNum); 89.271 - testCtr++; 89.272 + // Generates all test cases to be run. 89.273 + tac.generate(); 89.274 + List<Integer> cases = new ArrayList<Integer>(); 89.275 + for (int i = 0; i < args.length; i++) { 89.276 + cases.add(Integer.parseInt(args[i])); 89.277 } 89.278 - 89.279 - System.out.println("Total tests run: " + testCtr); 89.280 - if (tac.errors > 0) 89.281 - throw new Exception(tac.errors + " errors found"); 89.282 + if (cases.isEmpty()) { 89.283 + tac.run(); 89.284 + } else { 89.285 + for (int index : cases) { 89.286 + tac.executeTestCase(tac.testCases.get(index), index); 89.287 + } 89.288 + } 89.289 } 89.290 89.291 - /* 89.292 - * For given testCase, determine the base and container annotation Target sets, 89.293 - * get if testCase should compile, get test source file(s), get compilation result and verify. 89.294 - * 89.295 - */ 89.296 - private void executeTestCase(int testCase, int maxTestNum) { 89.297 + private void generate() { 89.298 + // Adding test cases to run. 89.299 + testCases.addAll(Arrays.asList( 89.300 + // No base target against no container target. 89.301 + new TestCase(noSet, noSet), 89.302 + // No base target against empty container target. 89.303 + new TestCase(noSet, empty), 89.304 + // No base target against TYPE_USE only container target. 89.305 + new TestCase(noSet, less(jdk8, TYPE_PARAMETER)), 89.306 + // No base target against TYPE_PARAMETER only container target. 89.307 + new TestCase(noSet, less(jdk8, TYPE_USE)), 89.308 + // No base target against TYPE_USE + TYPE_PARAMETER only container target. 89.309 + new TestCase(noSet, jdk8), 89.310 + // No base target against TYPE_USE + some selection of jdk7 targets. 89.311 + new TestCase(noSet, 89.312 + plus(EnumSet.range(TYPE, LOCAL_VARIABLE), TYPE_USE)), 89.313 + // No base target against TYPE_PARAMETER + some selection of jdk7 targets. 89.314 + new TestCase(noSet, 89.315 + plus(EnumSet.range(TYPE, LOCAL_VARIABLE), TYPE_PARAMETER)), 89.316 + // No base target against each jdk7 target alone as container target. 89.317 + new TestCase(noSet, plus(empty, TYPE)), 89.318 + new TestCase(noSet, plus(empty, PARAMETER)), 89.319 + new TestCase(noSet, plus(empty, PACKAGE)), 89.320 + new TestCase(noSet, plus(empty, METHOD)), 89.321 + new TestCase(noSet, plus(empty, LOCAL_VARIABLE)), 89.322 + new TestCase(noSet, plus(empty, FIELD)), 89.323 + new TestCase(noSet, plus(empty, CONSTRUCTOR)), 89.324 + new TestCase(noSet, plus(empty, ANNOTATION_TYPE)), 89.325 + // Empty base target against no container target. 89.326 + new TestCase(empty, noSet), 89.327 + // Empty base target against empty container target. 89.328 + new TestCase(empty, empty), 89.329 + // Empty base target against any lone container target. 89.330 + new TestCase(empty, plus(empty, TYPE)), 89.331 + new TestCase(empty, plus(empty, PARAMETER)), 89.332 + new TestCase(empty, plus(empty, PACKAGE)), 89.333 + new TestCase(empty, plus(empty, METHOD)), 89.334 + new TestCase(empty, plus(empty, LOCAL_VARIABLE)), 89.335 + new TestCase(empty, plus(empty, FIELD)), 89.336 + new TestCase(empty, plus(empty, CONSTRUCTOR)), 89.337 + new TestCase(empty, plus(empty, ANNOTATION_TYPE)), 89.338 + new TestCase(empty, less(jdk8, TYPE_USE)), 89.339 + new TestCase(empty, less(jdk8, TYPE_PARAMETER)), 89.340 + // No container target against all all-but one jdk7 targets. 89.341 + new TestCase(less(jdk7, TYPE), noSet), 89.342 + new TestCase(less(jdk7, PARAMETER), noSet), 89.343 + new TestCase(less(jdk7, PACKAGE), noSet), 89.344 + new TestCase(less(jdk7, METHOD), noSet), 89.345 + new TestCase(less(jdk7, LOCAL_VARIABLE), noSet), 89.346 + new TestCase(less(jdk7, FIELD), noSet), 89.347 + new TestCase(less(jdk7, CONSTRUCTOR), noSet), 89.348 + new TestCase(less(jdk7, ANNOTATION_TYPE), noSet), 89.349 + // No container against all but TYPE and ANNOTATION_TYPE 89.350 + new TestCase(less(jdk7, TYPE, ANNOTATION_TYPE), noSet), 89.351 + // No container against jdk7 targets. 89.352 + new TestCase(jdk7, noSet), 89.353 + // No container against jdk7 targets plus one or both of TYPE_USE, TYPE_PARAMETER 89.354 + new TestCase(plus(jdk7, TYPE_USE), noSet), 89.355 + new TestCase(plus(jdk7, TYPE_PARAMETER), noSet), 89.356 + new TestCase(allTargets, noSet), 89.357 + // Empty container target against any lone target. 89.358 + new TestCase(plus(empty, TYPE), empty), 89.359 + new TestCase(plus(empty, PARAMETER), empty), 89.360 + new TestCase(plus(empty, PACKAGE), empty), 89.361 + new TestCase(plus(empty, METHOD), empty), 89.362 + new TestCase(plus(empty, LOCAL_VARIABLE), empty), 89.363 + new TestCase(plus(empty, FIELD), empty), 89.364 + new TestCase(plus(empty, CONSTRUCTOR), empty), 89.365 + new TestCase(plus(empty, ANNOTATION_TYPE), empty), 89.366 + new TestCase(plus(empty, TYPE_USE), empty), 89.367 + new TestCase(plus(empty, TYPE_PARAMETER), empty), 89.368 + // All base targets against all container targets. 89.369 + new TestCase(allTargets, allTargets), 89.370 + // All base targets against all but one container targets. 89.371 + new TestCase(allTargets, less(allTargets, TYPE)), 89.372 + new TestCase(allTargets, less(allTargets, PARAMETER)), 89.373 + new TestCase(allTargets, less(allTargets, PACKAGE)), 89.374 + new TestCase(allTargets, less(allTargets, METHOD)), 89.375 + new TestCase(allTargets, less(allTargets, LOCAL_VARIABLE)), 89.376 + new TestCase(allTargets, less(allTargets, FIELD)), 89.377 + new TestCase(allTargets, less(allTargets, CONSTRUCTOR)), 89.378 + new TestCase(allTargets, less(allTargets, ANNOTATION_TYPE)), 89.379 + new TestCase(allTargets, less(allTargets, TYPE_USE)), 89.380 + new TestCase(allTargets, less(allTargets, TYPE_PARAMETER)), 89.381 + // All container targets against all but one base targets. 89.382 + new TestCase(less(allTargets, TYPE), allTargets), 89.383 + new TestCase(less(allTargets, PARAMETER), allTargets), 89.384 + new TestCase(less(allTargets, PACKAGE), allTargets), 89.385 + new TestCase(less(allTargets, METHOD), allTargets), 89.386 + new TestCase(less(allTargets, LOCAL_VARIABLE), allTargets), 89.387 + new TestCase(less(allTargets, FIELD), allTargets), 89.388 + new TestCase(less(allTargets, CONSTRUCTOR), allTargets), 89.389 + new TestCase(less(allTargets, ANNOTATION_TYPE), allTargets), 89.390 + new TestCase(less(allTargets, TYPE_USE), allTargets), 89.391 + new TestCase(less(allTargets, TYPE_PARAMETER), allTargets))); 89.392 + // Generates 100 test cases for any lone base target contained in Set 89.393 + // allTargets against any lone container target. 89.394 + for (ElementType b : allTargets) { 89.395 + for (ElementType c : allTargets) { 89.396 + testCases.add(new TestCase(plus(empty, b), plus(empty, c))); 89.397 + } 89.398 + } 89.399 + } 89.400 89.401 - // Determine base and container annotation Target sets for the testCase 89.402 - Set<String> baseAnnoTarget = null; 89.403 - Set<String> conAnnoTarget = null; 89.404 + void run() throws Exception { 89.405 + int testCtr = 0; 89.406 + for (TestCase tc : testCases) { 89.407 + if (!tc.isIgnored()) { 89.408 + executeTestCase(tc, testCases.indexOf(tc)); 89.409 + testCtr++; 89.410 + } 89.411 + } 89.412 + System.out.println("Total tests run: " + testCtr); 89.413 + if (errors > 0) { 89.414 + throw new Exception(errors + " errors found"); 89.415 + } 89.416 + } 89.417 89.418 - //Number of base and container combinations [0 - 1048575 combos] 89.419 - int baseContCombos = (int)Math.pow(2, 2*targetVals.length); 89.420 - //Number of either base or container combinations when one of them has no @Target [1024 combos] 89.421 - int targetValsCombos = (int)Math.pow(2, targetVals.length); 89.422 + private void executeTestCase(TestCase testCase, int index) { 89.423 + debugPrint("Test case number = " + index); 89.424 + debugPrint(" => baseAnnoTarget = " + testCase.getBaseAnnotations()); 89.425 + debugPrint(" => containerAnnoTarget = " + testCase.getContainerAnnotations()); 89.426 89.427 - if (testCase >= baseContCombos) { 89.428 - //Base annotation do not have @Target 89.429 - if (testCase < baseContCombos + targetValsCombos) { 89.430 - baseAnnoTarget = null; 89.431 - conAnnoTarget = getSetFromBitVec(Integer.toBinaryString(testCase - baseContCombos)); 89.432 - } else if (testCase < baseContCombos + 2*targetValsCombos) { 89.433 - //Container annotation do not have @Target 89.434 - baseAnnoTarget = getSetFromBitVec(Integer.toBinaryString(testCase - baseContCombos - targetValsCombos)); 89.435 - conAnnoTarget = null; 89.436 - } else { 89.437 - //Both Base and Container annotation do not have @Target 89.438 - baseAnnoTarget = null; 89.439 - conAnnoTarget = null; 89.440 - } 89.441 - } else { 89.442 - //TestCase number is represented as 10-bits for base followed by container bits 89.443 - String bin = Integer.toBinaryString(testCase); 89.444 - String base="", cont=bin; 89.445 - if (bin.length() > targetVals.length){ 89.446 - base = bin.substring(0, bin.length() - targetVals.length); 89.447 - cont = bin.substring(bin.length() - targetVals.length,bin.length()); 89.448 - } 89.449 - baseAnnoTarget = getSetFromBitVec(base); 89.450 - conAnnoTarget = getSetFromBitVec(cont); 89.451 - } 89.452 - 89.453 - debugPrint("Test case number = " + testCase + " => binary = " + Integer.toBinaryString(testCase)); 89.454 - debugPrint(" => baseAnnoTarget = " + baseAnnoTarget); 89.455 - debugPrint(" => containerAnnoTarget = " + conAnnoTarget); 89.456 - 89.457 - // Determine if a testCase should compile or not 89.458 - String className = "TC" + testCase; 89.459 - boolean shouldCompile = isValidSubSet(baseAnnoTarget, conAnnoTarget); 89.460 - 89.461 - // Get test source file(s) 89.462 - Iterable<? extends JavaFileObject> files = getFileList(className, baseAnnoTarget, 89.463 - conAnnoTarget, shouldCompile); 89.464 - 89.465 - // Get result of compiling test src file(s) 89.466 + String className = "TC" + index; 89.467 + boolean shouldCompile = testCase.isValidSubSet(); 89.468 + Iterable<? extends JavaFileObject> files = getFileList(className, testCase, shouldCompile); 89.469 + // Get result of compiling test src file(s). 89.470 boolean result = getCompileResult(className, shouldCompile, files); 89.471 - 89.472 - // List test src code if test fails 89.473 - if(!result) { 89.474 - System.out.println("FAIL: Test " + testCase); 89.475 + // List test src code if test fails. 89.476 + if (!result) { 89.477 + System.out.println("FAIL: Test " + index); 89.478 try { 89.479 - for (JavaFileObject f: files) { 89.480 + for (JavaFileObject f : files) { 89.481 System.out.println("File: " + f.getName() + "\n" + f.getCharContent(true)); 89.482 } 89.483 } catch (IOException ioe) { 89.484 System.out.println("Exception: " + ioe); 89.485 } 89.486 } else { 89.487 - debugPrint("PASS: Test " + testCase); 89.488 + debugPrint("PASS: Test " + index); 89.489 } 89.490 + 89.491 } 89.492 89.493 - // Get a Set<String> based on bits that are set to 1 89.494 - public Set<String> getSetFromBitVec(String bitVec) { 89.495 - Set<String> ret = new HashSet<>(); 89.496 - char[] bit = bitVec.toCharArray(); 89.497 - for (int i=bit.length-1, j=0; i>=0; i--, j++){ 89.498 - if (bit[i] == '1') { 89.499 - ret.add(targetVals[j]); 89.500 + // Create src code and corresponding JavaFileObjects. 89.501 + private Iterable<? extends JavaFileObject> getFileList(String className, 89.502 + TestCase testCase, boolean shouldCompile) { 89.503 + Set<ElementType> baseAnnoTarget = testCase.getBaseAnnotations(); 89.504 + Set<ElementType> conAnnoTarget = testCase.getContainerAnnotations(); 89.505 + String srcContent = ""; 89.506 + String pkgInfoContent = ""; 89.507 + String template = Helper.template; 89.508 + String baseTarget = "", conTarget = ""; 89.509 + 89.510 + String target = Helper.ContentVars.TARGET.getVal(); 89.511 + if (baseAnnoTarget != null) { 89.512 + String tmp = target.replace("#VAL", convertToString(baseAnnoTarget).toString()); 89.513 + baseTarget = tmp.replace("[", "{").replace("]", "}"); 89.514 + } 89.515 + if (conAnnoTarget != null) { 89.516 + String tmp = target.replace("#VAL", convertToString(conAnnoTarget).toString()); 89.517 + conTarget = tmp.replace("[", "{").replace("]", "}"); 89.518 + } 89.519 + 89.520 + String annoData = Helper.ContentVars.IMPORTSTMTS.getVal() 89.521 + + conTarget 89.522 + + Helper.ContentVars.CONTAINER.getVal() 89.523 + + baseTarget 89.524 + + Helper.ContentVars.REPEATABLE.getVal() 89.525 + + Helper.ContentVars.BASE.getVal(); 89.526 + 89.527 + JavaFileObject pkgInfoFile = null; 89.528 + 89.529 + // If shouldCompile = true and no @Target is specified for container annotation, 89.530 + // then all 8 ElementType enum constants are applicable as targets for 89.531 + // container annotation. 89.532 + if (shouldCompile && conAnnoTarget == null) { 89.533 + Set<ElementType> copySet = EnumSet.noneOf(ElementType.class); 89.534 + copySet.addAll(jdk7); 89.535 + conAnnoTarget = copySet; 89.536 + } 89.537 + 89.538 + if (shouldCompile) { 89.539 + boolean isPkgCasePresent = conAnnoTarget.contains(PACKAGE); 89.540 + String repeatableAnno = Helper.ContentVars.BASEANNO.getVal() 89.541 + + " " + Helper.ContentVars.BASEANNO.getVal(); 89.542 + for (ElementType s : conAnnoTarget) { 89.543 + String replaceStr = "/*" + s.name() + "*/"; 89.544 + if (s.name().equalsIgnoreCase("PACKAGE")) { 89.545 + //Create packageInfo file. 89.546 + String pkgInfoName = TESTPKG + "." + "package-info"; 89.547 + pkgInfoContent = repeatableAnno + "\npackage " + TESTPKG + ";" + annoData; 89.548 + pkgInfoFile = Helper.getFile(pkgInfoName, pkgInfoContent); 89.549 + } else { 89.550 + template = template.replace(replaceStr, repeatableAnno); 89.551 + if (!isPkgCasePresent) { 89.552 + srcContent = template.replace( 89.553 + "/*ANNODATA*/", annoData).replace("#ClassName", className); 89.554 + } else { 89.555 + replaceStr = "/*PACKAGE*/"; 89.556 + String tmp = template.replace(replaceStr, "package " + TESTPKG + ";"); 89.557 + srcContent = tmp.replace("#ClassName", className); 89.558 + } 89.559 + } 89.560 } 89.561 + } else { 89.562 + // For invalid cases, compilation should fail at declaration site. 89.563 + template = "class #ClassName {}"; 89.564 + srcContent = annoData + template.replace("#ClassName", className); 89.565 } 89.566 - return ret; 89.567 + JavaFileObject srcFile = Helper.getFile(className, srcContent); 89.568 + Iterable<? extends JavaFileObject> files = null; 89.569 + if (pkgInfoFile != null) { 89.570 + files = Arrays.asList(pkgInfoFile, srcFile); 89.571 + } else { 89.572 + files = Arrays.asList(srcFile); 89.573 + } 89.574 + return files; 89.575 } 89.576 89.577 - // Compile the test source file(s) and return test result 89.578 + // Compile the test source file(s) and return test result. 89.579 private boolean getCompileResult(String className, boolean shouldCompile, 89.580 Iterable<? extends JavaFileObject> files) { 89.581 89.582 DiagnosticCollector<JavaFileObject> diagnostics = 89.583 new DiagnosticCollector<JavaFileObject>(); 89.584 Helper.compileCode(diagnostics, files); 89.585 - 89.586 - // Test case pass or fail 89.587 + // Test case pass or fail. 89.588 boolean ok = false; 89.589 - 89.590 String errMesg = ""; 89.591 int numDiags = diagnostics.getDiagnostics().size(); 89.592 - 89.593 if (numDiags == 0) { 89.594 if (shouldCompile) { 89.595 debugPrint("Test passed, compiled as expected."); 89.596 @@ -270,201 +429,80 @@ 89.597 } 89.598 } else { 89.599 if (shouldCompile) { 89.600 - // did not compile 89.601 + // did not compile. 89.602 errMesg = "Test failed, did not compile."; 89.603 ok = false; 89.604 } else { 89.605 - // Error in compilation as expected 89.606 - String expectedErrKey = "compiler.err.invalid.repeatable." + 89.607 - "annotation.incompatible.target"; 89.608 + // Error in compilation as expected. 89.609 + String expectedErrKey = "compiler.err.invalid.repeatable." 89.610 + + "annotation.incompatible.target"; 89.611 for (Diagnostic<?> d : diagnostics.getDiagnostics()) { 89.612 - if((d.getKind() == Diagnostic.Kind.ERROR) && 89.613 - d.getCode().contains(expectedErrKey)) { 89.614 - // Error message as expected 89.615 + if ((d.getKind() == Diagnostic.Kind.ERROR) 89.616 + && d.getCode().contains(expectedErrKey)) { 89.617 + // Error message as expected. 89.618 debugPrint("Error message as expected."); 89.619 ok = true; 89.620 break; 89.621 } else { 89.622 - // error message is incorrect 89.623 + // error message is incorrect. 89.624 ok = false; 89.625 } 89.626 } 89.627 if (!ok) { 89.628 - errMesg = "Incorrect error received when compiling " + 89.629 - className + ", expected: " + expectedErrKey; 89.630 + errMesg = "Incorrect error received when compiling " 89.631 + + className + ", expected: " + expectedErrKey; 89.632 } 89.633 } 89.634 } 89.635 89.636 - if(!ok) { 89.637 + if (!ok) { 89.638 error(errMesg); 89.639 - for (Diagnostic<?> d : diagnostics.getDiagnostics()) 89.640 + for (Diagnostic<?> d : diagnostics.getDiagnostics()) { 89.641 System.out.println(" Diags: " + d); 89.642 + } 89.643 } 89.644 return ok; 89.645 } 89.646 89.647 - private void debugPrint(String string) { 89.648 - if(DEBUG) 89.649 - System.out.println(string); 89.650 + private Set<ElementType> less(Set<ElementType> base, ElementType... sub) { 89.651 + Set<ElementType> res = EnumSet.noneOf(ElementType.class); 89.652 + res.addAll(base); 89.653 + for (ElementType t : sub) { 89.654 + res.remove(t); 89.655 + } 89.656 + return res; 89.657 } 89.658 89.659 - // Create src code and corresponding JavaFileObjects 89.660 - private Iterable<? extends JavaFileObject> getFileList(String className, 89.661 - Set<String> baseAnnoTarget, Set<String> conAnnoTarget, 89.662 - boolean shouldCompile) { 89.663 - 89.664 - String srcContent = ""; 89.665 - String pkgInfoContent = ""; 89.666 - String template = Helper.template; 89.667 - String baseTarget = "", conTarget = ""; 89.668 - 89.669 - String target = Helper.ContentVars.TARGET.getVal(); 89.670 - if(baseAnnoTarget != null) { 89.671 - baseTarget = target.replace("#VAL", baseAnnoTarget.toString()) 89.672 - .replace("[", "{").replace("]", "}"); 89.673 + private Set<ElementType> plus(Set<ElementType> base, ElementType... add) { 89.674 + Set<ElementType> res = EnumSet.noneOf(ElementType.class); 89.675 + res.addAll(base); 89.676 + for (ElementType t : add) { 89.677 + res.add(t); 89.678 } 89.679 - if(conAnnoTarget != null) { 89.680 - conTarget = target.replace("#VAL", conAnnoTarget.toString()) 89.681 - .replace("[", "{").replace("]", "}"); 89.682 - } 89.683 - 89.684 - String annoData = Helper.ContentVars.IMPORTSTMTS.getVal() + 89.685 - conTarget + 89.686 - Helper.ContentVars.CONTAINER.getVal() + 89.687 - baseTarget + 89.688 - Helper.ContentVars.REPEATABLE.getVal() + 89.689 - Helper.ContentVars.BASE.getVal(); 89.690 - 89.691 - JavaFileObject pkgInfoFile = null; 89.692 - 89.693 - /* 89.694 - * If shouldCompile = true and no @Target is specified for container annotation, 89.695 - * then all 8 ElementType enum constants are applicable as targets for 89.696 - * container annotation. 89.697 - */ 89.698 - if(shouldCompile && conAnnoTarget == null) { 89.699 - //conAnnoTarget = new HashSet<String>(Arrays.asList(targetVals)); 89.700 - conAnnoTarget = getDefaultTargetSet(); 89.701 - } 89.702 - 89.703 - if(shouldCompile) { 89.704 - boolean isPkgCasePresent = new ArrayList<String>(conAnnoTarget).contains("ElementType.PACKAGE"); 89.705 - String repeatableAnno = Helper.ContentVars.BASEANNO.getVal() + " " + Helper.ContentVars.BASEANNO.getVal(); 89.706 - for(String s: conAnnoTarget) { 89.707 - s = s.replace("ElementType.",""); 89.708 - String replaceStr = "/*"+s+"*/"; 89.709 - if(s.equalsIgnoreCase("PACKAGE")) { 89.710 - //Create packageInfo file 89.711 - String pkgInfoName = TESTPKG + "." + "package-info"; 89.712 - pkgInfoContent = repeatableAnno + "\npackage " + TESTPKG + ";" + annoData; 89.713 - pkgInfoFile = Helper.getFile(pkgInfoName, pkgInfoContent); 89.714 - } else { 89.715 - template = template.replace(replaceStr, repeatableAnno); 89.716 - //srcContent = template.replace("#ClassName",className); 89.717 - if(!isPkgCasePresent) { 89.718 - srcContent = template.replace("/*ANNODATA*/", annoData).replace("#ClassName",className); 89.719 - } else { 89.720 - replaceStr = "/*PACKAGE*/"; 89.721 - srcContent = template.replace(replaceStr, "package " + TESTPKG + ";") 89.722 - .replace("#ClassName", className); 89.723 - } 89.724 - } 89.725 - } 89.726 - } else { 89.727 - // For invalid cases, compilation should fail at declaration site 89.728 - template = "class #ClassName {}"; 89.729 - srcContent = annoData + template.replace("#ClassName",className); 89.730 - } 89.731 - JavaFileObject srcFile = Helper.getFile(className, srcContent); 89.732 - Iterable<? extends JavaFileObject> files = null; 89.733 - if(pkgInfoFile != null) 89.734 - files = Arrays.asList(pkgInfoFile,srcFile); 89.735 - else 89.736 - files = Arrays.asList(srcFile); 89.737 - return files; 89.738 + return res; 89.739 } 89.740 89.741 - private Set<String> getDefaultTargetSet() { 89.742 - Set<String> defaultSet = new HashSet<>(); 89.743 - int ctr = 0; 89.744 - for(String s : targetVals) { 89.745 - if(ctr++ < DEFAULT_TARGET_CNT) { 89.746 - defaultSet.add(s); 89.747 - } 89.748 + // Iterate target set and add "ElementType." in front of every target type. 89.749 + private List<String> convertToString(Set<ElementType> annoTarget) { 89.750 + if (annoTarget == null) { 89.751 + return null; 89.752 } 89.753 - return defaultSet; 89.754 + List<String> annoTargets = new ArrayList<String>(); 89.755 + for (ElementType e : annoTarget) { 89.756 + annoTargets.add("ElementType." + e.name()); 89.757 + } 89.758 + return annoTargets; 89.759 } 89.760 89.761 - private boolean isValidSubSet(Set<String> baseAnnoTarget, Set<String> conAnnoTarget) { 89.762 - /* 89.763 - * RULE 1: conAnnoTarget should be a subset of baseAnnoTarget 89.764 - * RULE 2: For empty @Target ({}) - annotation cannot be applied anywhere 89.765 - * - Empty sets for both is valid 89.766 - * - Empty baseTarget set is invalid with non-empty conTarget set 89.767 - * - Non-empty baseTarget set is valid with empty conTarget set 89.768 - * RULE 3: For no @Target specified - annotation can be applied to any JDK 7 targets 89.769 - * - No @Target for both is valid 89.770 - * - No @Target for baseTarget set with @Target conTarget set is valid 89.771 - * - @Target for baseTarget set with no @Target for conTarget is invalid 89.772 - */ 89.773 - 89.774 - 89.775 - /* If baseAnno has no @Target, Foo can be either applied to @Target specified for container annotation 89.776 - * else will be applicable for all default targets if no @Target is present for container annotation. 89.777 - * In both cases, the set will be a valid set with no @Target for base annotation 89.778 - */ 89.779 - if(baseAnnoTarget == null) { 89.780 - if(conAnnoTarget == null) return true; 89.781 - return !(conAnnoTarget.contains("ElementType.TYPE_USE") || conAnnoTarget.contains("ElementType.TYPE_PARAMETER")); 89.782 + private void debugPrint(String string) { 89.783 + if (DEBUG) { 89.784 + System.out.println(string); 89.785 } 89.786 - 89.787 - Set<String> tempBaseSet = new HashSet<>(baseAnnoTarget); 89.788 - // If BaseAnno has TYPE, then ANNOTATION_TYPE is allowed by default 89.789 - if(baseAnnoTarget.contains("ElementType.TYPE")) { 89.790 - tempBaseSet.add("ElementType.ANNOTATION_TYPE"); 89.791 - } 89.792 - 89.793 - /* 89.794 - * If containerAnno has no @Target, only valid case if baseAnnoTarget has all targets defined 89.795 - * else invalid set 89.796 - */ 89.797 - if(conAnnoTarget == null) { 89.798 - return (tempBaseSet.containsAll(getDefaultTargetSet())); 89.799 - } 89.800 - 89.801 - // At this point, neither conAnnoTarget or baseAnnoTarget are null 89.802 - if(conAnnoTarget.size() == 0) return true; 89.803 - 89.804 - // At this point, conAnnoTarget is non-empty 89.805 - if (baseAnnoTarget.size() == 0) return false; 89.806 - 89.807 - // At this point, neither conAnnoTarget or baseAnnoTarget are empty 89.808 - return tempBaseSet.containsAll(conAnnoTarget); 89.809 } 89.810 89.811 - void error(String msg) { 89.812 + private void error(String msg) { 89.813 System.out.println("ERROR: " + msg); 89.814 errors++; 89.815 } 89.816 +} 89.817 89.818 - // Lists the start and end range for the given set of target vals 89.819 - void showGroups() { 89.820 - //Group 1: All target set combinations ( 0 to 1048575 ) including empty @Target sets => @Target({}) 89.821 - int grpEnd1 = (int)Math.pow(2, 2*targetVals.length) - 1; 89.822 - System.out.println("[Group 1]: 0 - " + grpEnd1); 89.823 - 89.824 - //Group 2: @Target not defined for base annotation ( 1048576 - 1049599 ). 89.825 - System.out.print("[Group 2]: " + (grpEnd1 + 1) + " - "); 89.826 - int grpEnd2 = grpEnd1 + 1 + (int)Math.pow(2, targetVals.length) - 1; 89.827 - System.out.println(grpEnd2); 89.828 - 89.829 - //Group 3: @Target not defined for container annotation ( 1049600 - 1050623 ). 89.830 - System.out.print("[Group 3]: " + (grpEnd2 + 1) + " - "); 89.831 - int grpEnd3 = grpEnd2 + 1 + (int)Math.pow(2, targetVals.length) - 1; 89.832 - System.out.println(grpEnd3); 89.833 - 89.834 - //Group 4: @Target not defined for both base and container annotations ( 1050624 ). 89.835 - System.out.println("[Group 4]: " + (grpEnd3 + 1)); 89.836 - } 89.837 -}
90.1 --- a/test/tools/javac/annotations/repeatingAnnotations/combo/TestCaseGenerator.java Thu Mar 21 10:43:39 2013 -0700 90.2 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 90.3 @@ -1,191 +0,0 @@ 90.4 -/* 90.5 - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 90.6 - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 90.7 - * 90.8 - * This code is free software; you can redistribute it and/or modify it 90.9 - * under the terms of the GNU General Public License version 2 only, as 90.10 - * published by the Free Software Foundation. 90.11 - * 90.12 - * This code is distributed in the hope that it will be useful, but WITHOUT 90.13 - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 90.14 - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 90.15 - * version 2 for more details (a copy is included in the LICENSE file that 90.16 - * accompanied this code). 90.17 - * 90.18 - * You should have received a copy of the GNU General Public License version 90.19 - * 2 along with this work; if not, write to the Free Software Foundation, 90.20 - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 90.21 - * 90.22 - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 90.23 - * or visit www.oracle.com if you need additional information or have any 90.24 - * questions. 90.25 - */ 90.26 - 90.27 -import java.util.ArrayList; 90.28 -import java.util.HashSet; 90.29 -import java.util.List; 90.30 -import java.util.Random; 90.31 - 90.32 -/* System properties: 90.33 - * NumberOfTests, TestMode, and TestCaseNum are mutually exclusive 90.34 - * TestSeed will be used only with NumberOfTests or TestMode, otherwise it will be ignored 90.35 - * -DNumberOfTests=[0 to 2^20+2^11+1] 90.36 - * -DTestMode=[FULL|DEFAULT] 90.37 - * -DTestSeed=[seedNumber] 90.38 - * -DTestCaseNum=[0 to 2^20+2^11+1] 90.39 - */ 90.40 -public class TestCaseGenerator { 90.41 - // Total number of tests to be run 90.42 - int numberOfTests = -1; 90.43 - //Single test case 90.44 - int testCaseNum = -1; 90.45 - //Seed used to generate test cases 90.46 - int testSeed; 90.47 - 90.48 - int maxTestNum; 90.49 - Random randNum; 90.50 - 90.51 - // used in getNextTestCase 90.52 - int curTestNum; 90.53 - int testCompletedCount; 90.54 - HashSet<Integer> uniqueTestSet; 90.55 - 90.56 - static final int DEFAULT_TEST_COUNT = 250; 90.57 - 90.58 - /* 90.59 - * Get parameter values from command line to set numberOfTests, testCaseNum, 90.60 - * and testSeed 90.61 - */ 90.62 - public TestCaseGenerator(int maxTestNum) { 90.63 - this.maxTestNum = maxTestNum; 90.64 - 90.65 - // Set values for variables based on input from command line 90.66 - 90.67 - // TestMode system property 90.68 - String testModeVal = System.getProperty("TestMode"); 90.69 - if(testModeVal != null && !testModeVal.isEmpty()) { 90.70 - switch (testModeVal.toUpperCase()) { 90.71 - case "FULL": 90.72 - numberOfTests = maxTestNum; 90.73 - break; 90.74 - case "DEFAULT": 90.75 - numberOfTests = DEFAULT_TEST_COUNT; 90.76 - break; 90.77 - default: 90.78 - System.out.println("Invalid property value " + testModeVal + 90.79 - " for numberOfTests. Possible range: 0 to " + 90.80 - maxTestNum + ". Ignoring property"); 90.81 - numberOfTests = -1; 90.82 - } 90.83 - } 90.84 - 90.85 - // NumberOfTests system property 90.86 - String numTestsStr = System.getProperty("NumberOfTests"); 90.87 - if(numTestsStr != null && !numTestsStr.isEmpty()) { 90.88 - int numTests = -1; 90.89 - try { 90.90 - numTests = Integer.parseInt(numTestsStr); 90.91 - if (numTests < 0 || numTests > maxTestNum) { 90.92 - throw new NumberFormatException(); 90.93 - } 90.94 - } catch(NumberFormatException nfe) { 90.95 - System.out.println("Invalid NumberOfTests property value " + 90.96 - numTestsStr + ". Possible range: 0 to " + maxTestNum + 90.97 - "Reset to default: " + DEFAULT_TEST_COUNT); 90.98 - numTests = DEFAULT_TEST_COUNT; 90.99 - } 90.100 - 90.101 - if (numberOfTests != -1 && numTests != -1) { 90.102 - System.out.println("TestMode and NumberOfTests cannot be set together. Ignoring TestMode."); 90.103 - } 90.104 - numberOfTests = numTests; 90.105 - } 90.106 - 90.107 - // TestSeed system property 90.108 - String seedVal = System.getProperty("TestSeed"); 90.109 - if(seedVal != null && !seedVal.isEmpty()) { 90.110 - try { 90.111 - testSeed = Integer.parseInt(seedVal); 90.112 - } catch(NumberFormatException nfe) { 90.113 - Random srand = new Random(); 90.114 - testSeed = srand.nextInt(); 90.115 - } 90.116 - } else { 90.117 - Random srand = new Random(); 90.118 - testSeed = srand.nextInt(); 90.119 - } 90.120 - 90.121 - // TestCaseNum system property 90.122 - String testNumStr = System.getProperty("TestCaseNum"); 90.123 - if(testNumStr != null && !testNumStr.isEmpty()) { 90.124 - try { 90.125 - testCaseNum = Integer.parseInt(testNumStr); 90.126 - if (testCaseNum < 0 || testCaseNum > maxTestNum) { 90.127 - throw new NumberFormatException(); 90.128 - } 90.129 - } catch(NumberFormatException nfe) { 90.130 - System.out.println("Invalid TestCaseNumber property value " + 90.131 - testNumStr + ". Possible value in range: 0 to " + 90.132 - maxTestNum + ". Defaulting to last test case."); 90.133 - testCaseNum = maxTestNum; 90.134 - } 90.135 - 90.136 - if ( numberOfTests != -1) { 90.137 - System.out.println("TestMode or NumberOfTests cannot be set along with TestCaseNum. Ignoring TestCaseNumber."); 90.138 - testCaseNum = -1; 90.139 - } 90.140 - } 90.141 - 90.142 - if (numberOfTests == -1 && testCaseNum == -1) { 90.143 - numberOfTests = DEFAULT_TEST_COUNT; 90.144 - System.out.println("Setting TestMode to default, will run " + numberOfTests + "tests."); 90.145 - } 90.146 - 90.147 - /* 90.148 - * By this point in code, we will have: 90.149 - * - testSeed: as per TestSeed or a Random one 90.150 - * - numberOfTests to run or -1 to denote not set 90.151 - * - testCaseNum to run or -1 to denote not set 90.152 - */ 90.153 - 90.154 - /* 90.155 - * If numberOfTests = maxTestNum, all tests are to be run, 90.156 - * so no randNum will be required 90.157 - */ 90.158 - if (numberOfTests != -1 && numberOfTests < maxTestNum) { 90.159 - System.out.println("Seed = " + testSeed); 90.160 - randNum = new Random(testSeed); 90.161 - uniqueTestSet = new HashSet<>(); 90.162 - } 90.163 - 90.164 - testCompletedCount = 0; 90.165 - // to be used to keep sequential count when running all tests 90.166 - curTestNum = 0; 90.167 - } 90.168 - 90.169 - /* 90.170 - * returns next test case number to run 90.171 - * returns -1 when there are no more tests to run 90.172 - */ 90.173 - public int getNextTestCase() { 90.174 - if (testCaseNum != -1) { 90.175 - int nextTC = testCaseNum; 90.176 - testCaseNum = -1; 90.177 - return nextTC; 90.178 - } 90.179 - if (++testCompletedCount <= numberOfTests) { 90.180 - if (numberOfTests == maxTestNum) { 90.181 - //all the tests need to be run, so just return 90.182 - //next test case sequentially 90.183 - return curTestNum++; 90.184 - } else { 90.185 - int nextTC = -1; 90.186 - // Ensuring unique test are run 90.187 - while(!uniqueTestSet.add(nextTC = randNum.nextInt(maxTestNum))) { 90.188 - } 90.189 - return nextTC; 90.190 - } 90.191 - } 90.192 - return -1; 90.193 - } 90.194 -}
91.1 --- a/test/tools/javac/api/TestJavacTaskScanner.java Thu Mar 21 10:43:39 2013 -0700 91.2 +++ b/test/tools/javac/api/TestJavacTaskScanner.java Tue Mar 26 12:07:45 2013 -0700 91.3 @@ -179,7 +179,6 @@ 91.4 91.5 @Override 91.6 public Scanner newScanner(CharSequence input, boolean keepDocComments) { 91.7 - assert !keepDocComments; 91.8 if (input instanceof CharBuffer) { 91.9 return new MyScanner(this, (CharBuffer)input, test); 91.10 } else { 91.11 @@ -190,7 +189,6 @@ 91.12 91.13 @Override 91.14 public Scanner newScanner(char[] input, int inputLength, boolean keepDocComments) { 91.15 - assert !keepDocComments; 91.16 return new MyScanner(this, input, inputLength, test); 91.17 } 91.18
92.1 --- a/test/tools/javac/diags/MessageFile.java Thu Mar 21 10:43:39 2013 -0700 92.2 +++ b/test/tools/javac/diags/MessageFile.java Tue Mar 26 12:07:45 2013 -0700 92.3 @@ -65,7 +65,7 @@ 92.4 } 92.5 92.6 void insertAfter(Line l) { 92.7 - assert prev == null && next == null; 92.8 + assert l.prev == null && l.next == null; 92.9 l.prev = this; 92.10 l.next = next; 92.11 if (next == null) 92.12 @@ -82,7 +82,7 @@ 92.13 } 92.14 92.15 void insertBefore(Line l) { 92.16 - assert prev == null && next == null; 92.17 + assert l.prev == null && l.next == null; 92.18 l.prev = prev; 92.19 l.next = this; 92.20 if (prev == null)
93.1 --- a/test/tools/javac/diags/MessageInfo.java Thu Mar 21 10:43:39 2013 -0700 93.2 +++ b/test/tools/javac/diags/MessageInfo.java Tue Mar 26 12:07:45 2013 -0700 93.3 @@ -409,5 +409,3 @@ 93.4 } 93.5 93.6 } 93.7 - 93.8 -
94.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 94.2 +++ b/test/tools/javac/lambda/DoubleStaticImport.java Tue Mar 26 12:07:45 2013 -0700 94.3 @@ -0,0 +1,38 @@ 94.4 +/* 94.5 + * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved. 94.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 94.7 + * 94.8 + * This code is free software; you can redistribute it and/or modify it 94.9 + * under the terms of the GNU General Public License version 2 only, as 94.10 + * published by the Free Software Foundation. 94.11 + * 94.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 94.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 94.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 94.15 + * version 2 for more details (a copy is included in the LICENSE file that 94.16 + * accompanied this code). 94.17 + * 94.18 + * You should have received a copy of the GNU General Public License version 94.19 + * 2 along with this work; if not, write to the Free Software Foundation, 94.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 94.21 + * 94.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 94.23 + * or visit www.oracle.com if you need additional information or have any 94.24 + * questions. 94.25 + */ 94.26 + 94.27 +/* 94.28 + * @test 94.29 + * @bug 8009820 94.30 + * @summary AssertionError when compiling java code with two identical static imports 94.31 + * @compile DoubleStaticImport.java 94.32 + */ 94.33 + 94.34 +import static java.lang.Thread.holdsLock; 94.35 +import static java.lang.Thread.holdsLock; //dup 94.36 + 94.37 +class DoubleStaticImport { 94.38 + public void test() { 94.39 + holdsLock(null); 94.40 + } 94.41 +}
95.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 95.2 +++ b/test/tools/javac/lambda/Intersection02.java Tue Mar 26 12:07:45 2013 -0700 95.3 @@ -0,0 +1,41 @@ 95.4 +/* 95.5 + * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. 95.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 95.7 + * 95.8 + * This code is free software; you can redistribute it and/or modify it 95.9 + * under the terms of the GNU General Public License version 2 only, as 95.10 + * published by the Free Software Foundation. 95.11 + * 95.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 95.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 95.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 95.15 + * version 2 for more details (a copy is included in the LICENSE file that 95.16 + * accompanied this code). 95.17 + * 95.18 + * You should have received a copy of the GNU General Public License version 95.19 + * 2 along with this work; if not, write to the Free Software Foundation, 95.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 95.21 + * 95.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 95.23 + * or visit www.oracle.com if you need additional information or have any 95.24 + * questions. 95.25 + */ 95.26 + 95.27 +/* 95.28 + * @test 95.29 + * @bug 8010101 95.30 + * @summary Intersection type cast issues redundant unchecked warning 95.31 + * @compile/fail/ref=Intersection02.out -Werror -Xlint:unchecked -XDrawDiagnostics Intersection02.java 95.32 + */ 95.33 +import java.io.Serializable; 95.34 +import java.util.List; 95.35 + 95.36 +class Intersection02 { 95.37 + 95.38 + interface P<X> { } 95.39 + 95.40 + void test(List<String> ls) { 95.41 + Object o1 = (List<String> & Serializable)ls; 95.42 + Object o2 = (List<String> & Serializable & P<String>)ls; 95.43 + } 95.44 +}
96.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 96.2 +++ b/test/tools/javac/lambda/Intersection02.out Tue Mar 26 12:07:45 2013 -0700 96.3 @@ -0,0 +1,4 @@ 96.4 +Intersection02.java:39:62: compiler.warn.prob.found.req: (compiler.misc.unchecked.cast.to.type), java.util.List<java.lang.String>, java.lang.Object&java.util.List<java.lang.String>&java.io.Serializable&Intersection02.P<java.lang.String> 96.5 +- compiler.err.warnings.and.werror 96.6 +1 error 96.7 +1 warning
97.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 97.2 +++ b/test/tools/javac/lambda/LambdaLambdaSerialized.java Tue Mar 26 12:07:45 2013 -0700 97.3 @@ -0,0 +1,79 @@ 97.4 +/* 97.5 + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 97.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 97.7 + * 97.8 + * This code is free software; you can redistribute it and/or modify it 97.9 + * under the terms of the GNU General Public License version 2 only, as 97.10 + * published by the Free Software Foundation. 97.11 + * 97.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 97.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 97.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 97.15 + * version 2 for more details (a copy is included in the LICENSE file that 97.16 + * accompanied this code). 97.17 + * 97.18 + * You should have received a copy of the GNU General Public License version 97.19 + * 2 along with this work; if not, write to the Free Software Foundation, 97.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 97.21 + * 97.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 97.23 + * or visit www.oracle.com if you need additional information or have any 97.24 + * questions. 97.25 + */ 97.26 + 97.27 +/* 97.28 +@test 97.29 +@bug 8010010 97.30 +@summary NPE generating serializedLambdaName for nested lambda 97.31 +*/ 97.32 + 97.33 +import java.io.*; 97.34 +import java.util.Map; 97.35 +import java.util.HashMap; 97.36 + 97.37 +public class LambdaLambdaSerialized { 97.38 + 97.39 + static int assertionCount = 0; 97.40 + 97.41 + static void assertTrue(boolean cond) { 97.42 + assertionCount++; 97.43 + if (!cond) 97.44 + throw new AssertionError(); 97.45 + } 97.46 + 97.47 + public static void main(String[] args) throws Exception { 97.48 + try { 97.49 + // Write lambdas out 97.50 + ByteArrayOutputStream baos = new ByteArrayOutputStream(); 97.51 + ObjectOutput out = new ObjectOutputStream(baos); 97.52 + LSI<LSI<Map>> ssi = () -> (() -> new HashMap()); 97.53 + write(out, ssi ); 97.54 + out.flush(); 97.55 + out.close(); 97.56 + 97.57 + // Read them back 97.58 + ByteArrayInputStream bais = 97.59 + new ByteArrayInputStream(baos.toByteArray()); 97.60 + ObjectInputStream in = new ObjectInputStream(bais); 97.61 + readAssert(in, "[X]"); 97.62 + in.close(); 97.63 + } catch (IOException e) { 97.64 + e.printStackTrace(); 97.65 + throw e; 97.66 + } 97.67 + } 97.68 + 97.69 + static void write(ObjectOutput out, LSI<LSI<Map>> lamb) throws IOException { 97.70 + out.writeObject(lamb); 97.71 + } 97.72 + 97.73 + static void readAssert(ObjectInputStream in, String expected) throws IOException, ClassNotFoundException { 97.74 + LSI<LSI<Map>> ls = (LSI<LSI<Map>>) in.readObject(); 97.75 + Map result = ls.get().get(); 97.76 + System.out.printf("Result: %s\n", result); 97.77 + } 97.78 +} 97.79 + 97.80 +interface LSI<T> extends Serializable { 97.81 + T get(); 97.82 +}
98.1 --- a/test/tools/javac/lambda/TargetType28.out Thu Mar 21 10:43:39 2013 -0700 98.2 +++ b/test/tools/javac/lambda/TargetType28.out Tue Mar 26 12:07:45 2013 -0700 98.3 @@ -1,2 +1,2 @@ 98.4 -TargetType28.java:20:32: compiler.err.prob.found.req: (compiler.misc.incompatible.eq.upper.bounds: X, java.lang.String,R, java.lang.Object,java.lang.Number) 98.5 +TargetType28.java:20:32: compiler.err.prob.found.req: (compiler.misc.incompatible.eq.upper.bounds: X, R,java.lang.String, java.lang.Object,java.lang.Number) 98.6 1 error
99.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 99.2 +++ b/test/tools/javac/lambda/TargetType67.java Tue Mar 26 12:07:45 2013 -0700 99.3 @@ -0,0 +1,50 @@ 99.4 +/* 99.5 + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 99.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 99.7 + * 99.8 + * This code is free software; you can redistribute it and/or modify it 99.9 + * under the terms of the GNU General Public License version 2 only, as 99.10 + * published by the Free Software Foundation. 99.11 + * 99.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 99.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 99.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 99.15 + * version 2 for more details (a copy is included in the LICENSE file that 99.16 + * accompanied this code). 99.17 + * 99.18 + * You should have received a copy of the GNU General Public License version 99.19 + * 2 along with this work; if not, write to the Free Software Foundation, 99.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 99.21 + * 99.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 99.23 + * or visit www.oracle.com if you need additional information or have any 99.24 + * questions. 99.25 + */ 99.26 + 99.27 +/* 99.28 + * @test 99.29 + * @bug 8010303 99.30 + * @summary Graph inference: missing incorporation step causes spurious inference error 99.31 + * @compile TargetType67.java 99.32 + */ 99.33 +class TargetType67 { 99.34 + 99.35 + interface Func<A, B> { 99.36 + B f(A a); 99.37 + } 99.38 + 99.39 + class List<X> { 99.40 + 99.41 + <M> List<M> map(Func<X, M> f) { 99.42 + return null; 99.43 + } 99.44 + 99.45 + <A> List<A> apply(final List<Func<X, A>> lf) { 99.46 + return null; 99.47 + } 99.48 + 99.49 + <B, C> List<C> bind(final List<B> lb, final Func<X, Func<B, C>> f) { 99.50 + return lb.apply(map(f)); 99.51 + } 99.52 + } 99.53 +}
100.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 100.2 +++ b/test/tools/javac/lambda/TargetType68.java Tue Mar 26 12:07:45 2013 -0700 100.3 @@ -0,0 +1,63 @@ 100.4 +/* 100.5 + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 100.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 100.7 + * 100.8 + * This code is free software; you can redistribute it and/or modify it 100.9 + * under the terms of the GNU General Public License version 2 only, as 100.10 + * published by the Free Software Foundation. 100.11 + * 100.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 100.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 100.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 100.15 + * version 2 for more details (a copy is included in the LICENSE file that 100.16 + * accompanied this code). 100.17 + * 100.18 + * You should have received a copy of the GNU General Public License version 100.19 + * 2 along with this work; if not, write to the Free Software Foundation, 100.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 100.21 + * 100.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 100.23 + * or visit www.oracle.com if you need additional information or have any 100.24 + * questions. 100.25 + */ 100.26 + 100.27 +/* 100.28 + * @test 100.29 + * @bug 8010303 100.30 + * @summary Graph inference: missing incorporation step causes spurious inference error 100.31 + * @compile TargetType68.java 100.32 + */ 100.33 +import java.util.*; 100.34 + 100.35 +class TargetType68 { 100.36 + 100.37 + //derived from FX 2.2 API 100.38 + static class XYChart<X,Y> { 100.39 + static final class Series<X,Y> { 100.40 + Series(java.lang.String name, ObservableList<XYChart.Data<X,Y>> data) { } 100.41 + } 100.42 + 100.43 + static final class Data<X,Y> { } 100.44 + 100.45 + ObservableList<XYChart.Series<X,Y>> getData() { return null; } 100.46 + } 100.47 + 100.48 + //derived from FX 2.2 API 100.49 + interface ObservableList<X> extends List<X> { 100.50 + boolean setAll(Collection<? extends X> col); 100.51 + } 100.52 + 100.53 + //derived from FX 2.2 API 100.54 + static class FXCollections { 100.55 + static <E> ObservableList<E> observableList(List<E> l) { return null; } 100.56 + } 100.57 + 100.58 + private void testMethod() { 100.59 + XYChart<Number, Number> numberChart = null; 100.60 + List<XYChart.Data<Number, Number>> data_1 = new ArrayList<>(); 100.61 + List<XYChart.Data<Number, Number>> data_2 = new ArrayList<>(); 100.62 + numberChart.getData().setAll( 100.63 + Arrays.asList(new XYChart.Series<>("Data", FXCollections.observableList(data_1)), 100.64 + new XYChart.Series<>("Data", FXCollections.observableList(data_2)))); 100.65 + } 100.66 +}
101.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 101.2 +++ b/test/tools/javac/lambda/TargetType69.java Tue Mar 26 12:07:45 2013 -0700 101.3 @@ -0,0 +1,51 @@ 101.4 +/* 101.5 + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 101.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 101.7 + * 101.8 + * This code is free software; you can redistribute it and/or modify it 101.9 + * under the terms of the GNU General Public License version 2 only, as 101.10 + * published by the Free Software Foundation. 101.11 + * 101.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 101.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 101.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 101.15 + * version 2 for more details (a copy is included in the LICENSE file that 101.16 + * accompanied this code). 101.17 + * 101.18 + * You should have received a copy of the GNU General Public License version 101.19 + * 2 along with this work; if not, write to the Free Software Foundation, 101.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 101.21 + * 101.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 101.23 + * or visit www.oracle.com if you need additional information or have any 101.24 + * questions. 101.25 + */ 101.26 + 101.27 +/* 101.28 + * @test 101.29 + * @bug 8010303 101.30 + * @summary Graph inference: missing incorporation step causes spurious inference error 101.31 + * @compile TargetType68.java 101.32 + */ 101.33 +import java.util.*; 101.34 + 101.35 +class TargetType68 { 101.36 + 101.37 + interface Function<X,Y> { 101.38 + Y m(X x); 101.39 + } 101.40 + 101.41 + abstract class TabulationAssertion<T, U> { } 101.42 + 101.43 + class GroupedMapAssertion<K, M1 extends Map<K, ?>> extends TabulationAssertion<Integer, M1> { 101.44 + GroupedMapAssertion(Function<Integer, K> classifier) { } 101.45 + } 101.46 + 101.47 + 101.48 + <T, M2 extends Map> void exerciseMapTabulation(Function<T, ? extends M2> collector, 101.49 + TabulationAssertion<T, M2> assertion) { } 101.50 + 101.51 + void test(Function<Integer, Integer> classifier, Function<Integer, Map<Integer, List<Integer>>> coll) { 101.52 + exerciseMapTabulation(coll, new GroupedMapAssertion<>(classifier)); 101.53 + } 101.54 +}
102.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 102.2 +++ b/test/tools/javac/lambda/bytecode/TestLambdaBytecode.java Tue Mar 26 12:07:45 2013 -0700 102.3 @@ -0,0 +1,365 @@ 102.4 +/* 102.5 + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 102.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 102.7 + * 102.8 + * This code is free software; you can redistribute it and/or modify it 102.9 + * under the terms of the GNU General Public License version 2 only, as 102.10 + * published by the Free Software Foundation. 102.11 + * 102.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 102.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 102.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 102.15 + * version 2 for more details (a copy is included in the LICENSE file that 102.16 + * accompanied this code). 102.17 + * 102.18 + * You should have received a copy of the GNU General Public License version 102.19 + * 2 along with this work; if not, write to the Free Software Foundation, 102.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 102.21 + * 102.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 102.23 + * or visit www.oracle.com if you need additional information or have any 102.24 + * questions. 102.25 + */ 102.26 + 102.27 +/* 102.28 + * @test 102.29 + * @bug 8009649 102.30 + * @summary Lambda back-end should generate invokespecial for method handles referring to private instance methods 102.31 + * @library ../../lib 102.32 + * @build JavacTestingAbstractThreadedTest 102.33 + * @run main/othervm TestLambdaBytecode 102.34 + */ 102.35 + 102.36 +// use /othervm to avoid jtreg timeout issues (CODETOOLS-7900047) 102.37 +// see JDK-8006746 102.38 + 102.39 +import com.sun.tools.classfile.Attribute; 102.40 +import com.sun.tools.classfile.BootstrapMethods_attribute; 102.41 +import com.sun.tools.classfile.ClassFile; 102.42 +import com.sun.tools.classfile.Code_attribute; 102.43 +import com.sun.tools.classfile.ConstantPool.*; 102.44 +import com.sun.tools.classfile.Instruction; 102.45 +import com.sun.tools.classfile.Method; 102.46 + 102.47 +import com.sun.tools.javac.api.JavacTaskImpl; 102.48 + 102.49 + 102.50 +import java.io.File; 102.51 +import java.net.URI; 102.52 +import java.util.ArrayList; 102.53 +import java.util.Arrays; 102.54 +import java.util.Locale; 102.55 + 102.56 +import javax.tools.Diagnostic; 102.57 +import javax.tools.JavaFileObject; 102.58 +import javax.tools.SimpleJavaFileObject; 102.59 + 102.60 +import static com.sun.tools.javac.jvm.ClassFile.*; 102.61 + 102.62 +public class TestLambdaBytecode 102.63 + extends JavacTestingAbstractThreadedTest 102.64 + implements Runnable { 102.65 + 102.66 + enum ClassKind { 102.67 + CLASS("class"), 102.68 + INTERFACE("interface"); 102.69 + 102.70 + String classStr; 102.71 + 102.72 + ClassKind(String classStr) { 102.73 + this.classStr = classStr; 102.74 + } 102.75 + } 102.76 + 102.77 + enum AccessKind { 102.78 + PUBLIC("public"), 102.79 + PRIVATE("private"); 102.80 + 102.81 + String accessStr; 102.82 + 102.83 + AccessKind(String accessStr) { 102.84 + this.accessStr = accessStr; 102.85 + } 102.86 + } 102.87 + 102.88 + enum StaticKind { 102.89 + STATIC("static"), 102.90 + INSTANCE(""); 102.91 + 102.92 + String staticStr; 102.93 + 102.94 + StaticKind(String staticStr) { 102.95 + this.staticStr = staticStr; 102.96 + } 102.97 + } 102.98 + 102.99 + enum DefaultKind { 102.100 + DEFAULT("default"), 102.101 + NO_DEFAULT(""); 102.102 + 102.103 + String defaultStr; 102.104 + 102.105 + DefaultKind(String defaultStr) { 102.106 + this.defaultStr = defaultStr; 102.107 + } 102.108 + } 102.109 + 102.110 + enum ExprKind { 102.111 + LAMBDA("Runnable r = ()->{ target(); };"); 102.112 + 102.113 + String exprString; 102.114 + 102.115 + ExprKind(String exprString) { 102.116 + this.exprString = exprString; 102.117 + } 102.118 + } 102.119 + 102.120 + static class MethodKind { 102.121 + ClassKind ck; 102.122 + AccessKind ak; 102.123 + StaticKind sk; 102.124 + DefaultKind dk; 102.125 + 102.126 + MethodKind(ClassKind ck, AccessKind ak, StaticKind sk, DefaultKind dk) { 102.127 + this.ck = ck; 102.128 + this.ak = ak; 102.129 + this.sk = sk; 102.130 + this.dk = dk; 102.131 + } 102.132 + 102.133 + boolean inInterface() { 102.134 + return ck == ClassKind.INTERFACE; 102.135 + } 102.136 + 102.137 + boolean isPrivate() { 102.138 + return ak == AccessKind.PRIVATE; 102.139 + } 102.140 + 102.141 + boolean isStatic() { 102.142 + return sk == StaticKind.STATIC; 102.143 + } 102.144 + 102.145 + boolean isDefault() { 102.146 + return dk == DefaultKind.DEFAULT; 102.147 + } 102.148 + 102.149 + boolean isOK() { 102.150 + if (isDefault() && (!inInterface() || isStatic())) { 102.151 + return false; 102.152 + } else if (inInterface() && 102.153 + ((!isStatic() && !isDefault()) || isPrivate())) { 102.154 + return false; 102.155 + } else { 102.156 + return true; 102.157 + } 102.158 + } 102.159 + 102.160 + String mods() { 102.161 + StringBuilder buf = new StringBuilder(); 102.162 + buf.append(ak.accessStr); 102.163 + buf.append(' '); 102.164 + buf.append(sk.staticStr); 102.165 + buf.append(' '); 102.166 + buf.append(dk.defaultStr); 102.167 + return buf.toString(); 102.168 + } 102.169 + } 102.170 + 102.171 + public static void main(String... args) throws Exception { 102.172 + for (ClassKind ck : ClassKind.values()) { 102.173 + for (AccessKind ak1 : AccessKind.values()) { 102.174 + for (StaticKind sk1 : StaticKind.values()) { 102.175 + for (DefaultKind dk1 : DefaultKind.values()) { 102.176 + for (AccessKind ak2 : AccessKind.values()) { 102.177 + for (StaticKind sk2 : StaticKind.values()) { 102.178 + for (DefaultKind dk2 : DefaultKind.values()) { 102.179 + for (ExprKind ek : ExprKind.values()) { 102.180 + pool.execute(new TestLambdaBytecode(ck, ak1, ak2, sk1, sk2, dk1, dk2, ek)); 102.181 + } 102.182 + } 102.183 + } 102.184 + } 102.185 + } 102.186 + } 102.187 + } 102.188 + } 102.189 + 102.190 + checkAfterExec(); 102.191 + } 102.192 + 102.193 + MethodKind mk1, mk2; 102.194 + ExprKind ek; 102.195 + DiagChecker dc; 102.196 + 102.197 + TestLambdaBytecode(ClassKind ck, AccessKind ak1, AccessKind ak2, StaticKind sk1, 102.198 + StaticKind sk2, DefaultKind dk1, DefaultKind dk2, ExprKind ek) { 102.199 + mk1 = new MethodKind(ck, ak1, sk1, dk1); 102.200 + mk2 = new MethodKind(ck, ak2, sk2, dk2); 102.201 + this.ek = ek; 102.202 + dc = new DiagChecker(); 102.203 + } 102.204 + 102.205 + public void run() { 102.206 + int id = checkCount.incrementAndGet(); 102.207 + JavaSource source = new JavaSource(id); 102.208 + JavacTaskImpl ct = (JavacTaskImpl)comp.getTask(null, fm.get(), dc, 102.209 + null, null, Arrays.asList(source)); 102.210 + try { 102.211 + ct.generate(); 102.212 + } catch (Throwable t) { 102.213 + t.printStackTrace(); 102.214 + throw new AssertionError( 102.215 + String.format("Error thrown when compiling following code\n%s", 102.216 + source.source)); 102.217 + } 102.218 + if (dc.diagFound) { 102.219 + boolean errorExpected = !mk1.isOK() || !mk2.isOK(); 102.220 + errorExpected |= mk1.isStatic() && !mk2.isStatic(); 102.221 + 102.222 + if (!errorExpected) { 102.223 + throw new AssertionError( 102.224 + String.format("Diags found when compiling following code\n%s\n\n%s", 102.225 + source.source, dc.printDiags())); 102.226 + } 102.227 + return; 102.228 + } 102.229 + verifyBytecode(id, source); 102.230 + } 102.231 + 102.232 + void verifyBytecode(int id, JavaSource source) { 102.233 + File compiledTest = new File(String.format("Test%d.class", id)); 102.234 + try { 102.235 + ClassFile cf = ClassFile.read(compiledTest); 102.236 + Method testMethod = null; 102.237 + for (Method m : cf.methods) { 102.238 + if (m.getName(cf.constant_pool).equals("test")) { 102.239 + testMethod = m; 102.240 + break; 102.241 + } 102.242 + } 102.243 + if (testMethod == null) { 102.244 + throw new Error("Test method not found"); 102.245 + } 102.246 + Code_attribute ea = 102.247 + (Code_attribute)testMethod.attributes.get(Attribute.Code); 102.248 + if (testMethod == null) { 102.249 + throw new Error("Code attribute for test() method not found"); 102.250 + } 102.251 + 102.252 + int bsmIdx = -1; 102.253 + 102.254 + for (Instruction i : ea.getInstructions()) { 102.255 + if (i.getMnemonic().equals("invokedynamic")) { 102.256 + CONSTANT_InvokeDynamic_info indyInfo = 102.257 + (CONSTANT_InvokeDynamic_info)cf 102.258 + .constant_pool.get(i.getShort(1)); 102.259 + bsmIdx = indyInfo.bootstrap_method_attr_index; 102.260 + if (!indyInfo.getNameAndTypeInfo().getType().equals(makeIndyType(id))) { 102.261 + throw new 102.262 + AssertionError("type mismatch for CONSTANT_InvokeDynamic_info " + source.source + "\n" + indyInfo.getNameAndTypeInfo().getType() + "\n" + makeIndyType(id)); 102.263 + } 102.264 + } 102.265 + } 102.266 + if (bsmIdx == -1) { 102.267 + throw new Error("Missing invokedynamic in generated code"); 102.268 + } 102.269 + 102.270 + BootstrapMethods_attribute bsm_attr = 102.271 + (BootstrapMethods_attribute)cf 102.272 + .getAttribute(Attribute.BootstrapMethods); 102.273 + if (bsm_attr.bootstrap_method_specifiers.length != 1) { 102.274 + throw new Error("Bad number of method specifiers " + 102.275 + "in BootstrapMethods attribute"); 102.276 + } 102.277 + BootstrapMethods_attribute.BootstrapMethodSpecifier bsm_spec = 102.278 + bsm_attr.bootstrap_method_specifiers[0]; 102.279 + 102.280 + if (bsm_spec.bootstrap_arguments.length != MF_ARITY) { 102.281 + throw new Error("Bad number of static invokedynamic args " + 102.282 + "in BootstrapMethod attribute"); 102.283 + } 102.284 + 102.285 + CONSTANT_MethodHandle_info mh = 102.286 + (CONSTANT_MethodHandle_info)cf.constant_pool.get(bsm_spec.bootstrap_arguments[1]); 102.287 + 102.288 + boolean kindOK; 102.289 + switch (mh.reference_kind) { 102.290 + case REF_invokeStatic: kindOK = mk2.isStatic(); break; 102.291 + case REF_invokeSpecial: kindOK = !mk2.isStatic(); break; 102.292 + case REF_invokeInterface: kindOK = mk2.inInterface(); break; 102.293 + default: 102.294 + kindOK = false; 102.295 + } 102.296 + 102.297 + if (!kindOK) { 102.298 + throw new Error("Bad invoke kind in implementation method handle"); 102.299 + } 102.300 + 102.301 + if (!mh.getCPRefInfo().getNameAndTypeInfo().getType().toString().equals(MH_SIG)) { 102.302 + throw new Error("Type mismatch in implementation method handle"); 102.303 + } 102.304 + } catch (Exception e) { 102.305 + e.printStackTrace(); 102.306 + throw new Error("error reading " + compiledTest +": " + e); 102.307 + } 102.308 + } 102.309 + String makeIndyType(int id) { 102.310 + StringBuilder buf = new StringBuilder(); 102.311 + buf.append("("); 102.312 + if (!mk2.isStatic() || mk1.inInterface()) { 102.313 + buf.append(String.format("LTest%d;", id)); 102.314 + } 102.315 + buf.append(")Ljava/lang/Runnable;"); 102.316 + return buf.toString(); 102.317 + } 102.318 + 102.319 + static final int MF_ARITY = 3; 102.320 + static final String MH_SIG = "()V"; 102.321 + 102.322 + class JavaSource extends SimpleJavaFileObject { 102.323 + 102.324 + static final String source_template = 102.325 + "#CK Test#ID {\n" + 102.326 + " #MOD1 void test() { #EK }\n" + 102.327 + " #MOD2 void target() { }\n" + 102.328 + "}\n"; 102.329 + 102.330 + String source; 102.331 + 102.332 + JavaSource(int id) { 102.333 + super(URI.create("myfo:/Test.java"), JavaFileObject.Kind.SOURCE); 102.334 + source = source_template.replace("#CK", mk1.ck.classStr) 102.335 + .replace("#MOD1", mk1.mods()) 102.336 + .replace("#MOD2", mk2.mods()) 102.337 + .replace("#EK", ek.exprString) 102.338 + .replace("#ID", String.valueOf(id)); 102.339 + } 102.340 + 102.341 + @Override 102.342 + public CharSequence getCharContent(boolean ignoreEncodingErrors) { 102.343 + return source; 102.344 + } 102.345 + } 102.346 + 102.347 + static class DiagChecker 102.348 + implements javax.tools.DiagnosticListener<JavaFileObject> { 102.349 + 102.350 + boolean diagFound; 102.351 + ArrayList<String> diags = new ArrayList<>(); 102.352 + 102.353 + public void report(Diagnostic<? extends JavaFileObject> diagnostic) { 102.354 + diags.add(diagnostic.getMessage(Locale.getDefault())); 102.355 + diagFound = true; 102.356 + } 102.357 + 102.358 + String printDiags() { 102.359 + StringBuilder buf = new StringBuilder(); 102.360 + for (String s : diags) { 102.361 + buf.append(s); 102.362 + buf.append("\n"); 102.363 + } 102.364 + return buf.toString(); 102.365 + } 102.366 + } 102.367 + 102.368 +}
103.1 --- a/test/tools/javac/lib/ToolBox.java Thu Mar 21 10:43:39 2013 -0700 103.2 +++ b/test/tools/javac/lib/ToolBox.java Tue Mar 26 12:07:45 2013 -0700 103.3 @@ -38,6 +38,7 @@ 103.4 import java.util.ArrayList; 103.5 import java.util.Arrays; 103.6 import java.util.Collection; 103.7 +import java.util.Collections; 103.8 import java.util.EnumSet; 103.9 import java.util.List; 103.10 import java.util.Map; 103.11 @@ -65,15 +66,32 @@ 103.12 103.13 public static final String lineSeparator = System.getProperty("line.separator"); 103.14 public static final String jdkUnderTest = System.getProperty("test.jdk"); 103.15 - public static final String testVMOpts = System.getProperty("test.tool.vm.opts"); 103.16 - public static final String javaBinary = Paths.get(jdkUnderTest, "bin", "java").toString(); 103.17 - //why this one private. Because the function which provide also the test options should be used 103.18 - private static final String javacBinary = Paths.get(jdkUnderTest, "bin", "javac").toString(); 103.19 + public static final Path javaBinary = Paths.get(jdkUnderTest, "bin", "java"); 103.20 + public static final Path javacBinary = Paths.get(jdkUnderTest, "bin", "javac"); 103.21 + 103.22 + public static final List<String> testToolVMOpts; 103.23 + public static final List<String> testVMOpts; 103.24 103.25 private static final Charset defaultCharset = Charset.defaultCharset(); 103.26 103.27 static final JavaCompiler comp = ToolProvider.getSystemJavaCompiler(); 103.28 103.29 + static { 103.30 + String sysProp = System.getProperty("test.tool.vm.opts"); 103.31 + if (sysProp != null && sysProp.length() > 0) { 103.32 + testToolVMOpts = Arrays.asList(sysProp.split("\\s+")); 103.33 + } else { 103.34 + testToolVMOpts = Collections.<String>emptyList(); 103.35 + } 103.36 + 103.37 + sysProp = System.getProperty("test.vm.opts"); 103.38 + if (sysProp != null && sysProp.length() > 0) { 103.39 + testVMOpts = Arrays.asList(sysProp.split("\\s+")); 103.40 + } else { 103.41 + testVMOpts = Collections.<String>emptyList(); 103.42 + } 103.43 + } 103.44 + 103.45 /** 103.46 * The expected result of command-like method execution. 103.47 */ 103.48 @@ -199,8 +217,8 @@ 103.49 protected Expect whatToExpect; 103.50 protected WriterHelper stdOutput; 103.51 protected WriterHelper errOutput; 103.52 - protected List<String> options; 103.53 - protected String[] optionsArr; 103.54 + protected List<String> args = new ArrayList<>(); 103.55 + protected String[] argsArr; 103.56 103.57 protected GenericArgs() { 103.58 set(Expect.SUCCESS); 103.59 @@ -238,19 +256,50 @@ 103.60 103.61 public T setAllArgs(String... args) { 103.62 currentParams.add(AcceptedParams.OPTIONS); 103.63 - this.optionsArr = args; 103.64 + this.argsArr = args; 103.65 + return (T) this; 103.66 + } 103.67 + 103.68 + 103.69 + public T appendArgs(String... args) { 103.70 + appendArgs(Arrays.asList(args)); 103.71 + return (T)this; 103.72 + } 103.73 + 103.74 + public T appendArgs(Path... args) { 103.75 + if (args != null) { 103.76 + List<String> list = new ArrayList<>(); 103.77 + for (int i = 0; i < args.length; i++) { 103.78 + if (args[i] != null) { 103.79 + list.add(args[i].toString()); 103.80 + } 103.81 + } 103.82 + appendArgs(list); 103.83 + } 103.84 + return (T)this; 103.85 + } 103.86 + 103.87 + public T appendArgs(List<String> args) { 103.88 + if (args != null && args.size() > 0) { 103.89 + currentParams.add(AcceptedParams.OPTIONS); 103.90 + for (int i = 0; i < args.size(); i++) { 103.91 + if (args.get(i) != null) { 103.92 + this.args.add(args.get(i)); 103.93 + } 103.94 + } 103.95 + } 103.96 return (T)this; 103.97 } 103.98 103.99 public T setOptions(List<String> options) { 103.100 currentParams.add(AcceptedParams.OPTIONS); 103.101 - this.options = options; 103.102 + this.args = options; 103.103 return (T)this; 103.104 } 103.105 103.106 public T setOptions(String... options) { 103.107 currentParams.add(AcceptedParams.OPTIONS); 103.108 - this.options = Arrays.asList(options); 103.109 + this.args = Arrays.asList(options); 103.110 return (T)this; 103.111 } 103.112 103.113 @@ -365,8 +414,12 @@ 103.114 * Custom exception for not equal resources. 103.115 */ 103.116 public static class ResourcesNotEqualException extends Exception { 103.117 - public ResourcesNotEqualException() { 103.118 - super("The resources provided for comparison are different"); 103.119 + public ResourcesNotEqualException(List<String> res1, List<String> res2) { 103.120 + super(createMessage(res1, res2)); 103.121 + } 103.122 + 103.123 + public ResourcesNotEqualException(String line1, String line2) { 103.124 + super(createMessage(line1, line2)); 103.125 } 103.126 103.127 public ResourcesNotEqualException(Path path1, Path path2) { 103.128 @@ -379,15 +432,20 @@ 103.129 .append(path1.toString()).append(" and \n") 103.130 .append(path2.toString()).append("are different").toString(); 103.131 } 103.132 - } 103.133 103.134 - /** 103.135 - * Method to get the a path to the javac command available at the jdk being 103.136 - * tested along with the test vm options. 103.137 - * @return a String[] with the two components mentioned. 103.138 - */ 103.139 - public static String[] getJavacBin() { 103.140 - return new String[]{javacBinary, testVMOpts}; 103.141 + private static String createMessage(String line1, String line2) { 103.142 + return new StringBuilder() 103.143 + .append("The resources provided for comparison are different at lines: \n") 103.144 + .append(line1).append(" and \n") 103.145 + .append(line2).toString(); 103.146 + } 103.147 + 103.148 + private static String createMessage(List<String> res1, List<String> res2) { 103.149 + return new StringBuilder() 103.150 + .append("The resources provided for comparison are different: \n") 103.151 + .append("Resource 1 is: ").append(res1).append("\n and \n") 103.152 + .append("Resource 2 is: ").append(res2).append("\n").toString(); 103.153 + } 103.154 } 103.155 103.156 /** 103.157 @@ -396,7 +454,7 @@ 103.158 public static int javac(JavaToolArgs params) 103.159 throws CommandExecutionException, IOException { 103.160 if (params.hasMinParams()) { 103.161 - if (params.optionsArr != null) { 103.162 + if (params.argsArr != null) { 103.163 return genericJavaCMD(JavaCMD.JAVAC, params); 103.164 } else { 103.165 return genericJavaCMD(JavaCMD.JAVAC_API, params); 103.166 @@ -437,14 +495,14 @@ 103.167 JAVAC { 103.168 @Override 103.169 int run(JavaToolArgs params, PrintWriter pw) { 103.170 - return com.sun.tools.javac.Main.compile(params.optionsArr, pw); 103.171 + return com.sun.tools.javac.Main.compile(params.argsArr, pw); 103.172 } 103.173 }, 103.174 JAVAC_API { 103.175 @Override 103.176 int run(JavaToolArgs params, PrintWriter pw) { 103.177 JavacTask ct = (JavacTask)comp.getTask(pw, null, null, 103.178 - params.options, null, params.sources); 103.179 + params.args, null, params.sources); 103.180 return ((JavacTaskImpl)ct).doCall().exitCode; 103.181 } 103.182 103.183 @@ -467,13 +525,13 @@ 103.184 JAVAH { 103.185 @Override 103.186 int run(JavaToolArgs params, PrintWriter pw) { 103.187 - return com.sun.tools.javah.Main.run(params.optionsArr, pw); 103.188 + return com.sun.tools.javah.Main.run(params.argsArr, pw); 103.189 } 103.190 }, 103.191 JAVAP { 103.192 @Override 103.193 int run(JavaToolArgs params, PrintWriter pw) { 103.194 - return com.sun.tools.javap.Main.run(params.optionsArr, pw); 103.195 + return com.sun.tools.javap.Main.run(params.argsArr, pw); 103.196 } 103.197 }; 103.198 103.199 @@ -486,9 +544,9 @@ 103.200 List<String> getExceptionMsgContent(JavaToolArgs params) { 103.201 List<String> result = new ArrayList<>(); 103.202 result.add(getName()); 103.203 - result.addAll(params.optionsArr != null ? 103.204 - Arrays.asList(params.optionsArr) : 103.205 - params.options); 103.206 + result.addAll(params.argsArr != null ? 103.207 + Arrays.asList(params.argsArr) : 103.208 + params.args); 103.209 return result; 103.210 } 103.211 } 103.212 @@ -509,7 +567,7 @@ 103.213 String out = (sw == null) ? null : sw.toString(); 103.214 103.215 if (params.errOutput != null && (out != null) && !out.isEmpty()) { 103.216 - params.errOutput.addAll(splitLines(out)); 103.217 + params.errOutput.addAll(splitLines(out, lineSeparator)); 103.218 } 103.219 103.220 if ( (rc == 0 && params.whatToExpect == Expect.SUCCESS) || 103.221 @@ -542,9 +600,9 @@ 103.222 public static int executeCommand(AnyToolArgs params) 103.223 throws CommandExecutionException, IOException, InterruptedException { 103.224 if (params.hasMinParams()) { 103.225 - List<String> cmd = (params.options != null) ? 103.226 - params.options : 103.227 - Arrays.asList(params.optionsArr); 103.228 + List<String> cmd = (params.args != null) ? 103.229 + params.args : 103.230 + Arrays.asList(params.argsArr); 103.231 return executeCommand(cmd, params.extraEnv, params.stdOutput, 103.232 params.errOutput, params.whatToExpect); 103.233 } 103.234 @@ -630,7 +688,7 @@ 103.235 List<String> list2, boolean trim) throws ResourcesNotEqualException { 103.236 if ((list1 == list2) || (list1 == null && list2 == null)) return; 103.237 if (list1.size() != list2.size()) 103.238 - throw new ResourcesNotEqualException(); 103.239 + throw new ResourcesNotEqualException(list1, list2); 103.240 int i = 0; 103.241 int j = 0; 103.242 while (i < list1.size() && 103.243 @@ -639,7 +697,7 @@ 103.244 i++; j++; 103.245 } 103.246 if (!(i == list1.size() && j == list2.size())) 103.247 - throw new ResourcesNotEqualException(); 103.248 + throw new ResourcesNotEqualException(list1, list2); 103.249 } 103.250 103.251 private static boolean equals(String s1, String s2, boolean trim) { 103.252 @@ -652,8 +710,8 @@ 103.253 * and later the regExpr is seek in every split line. If a match is found, 103.254 * the whole line is added to the result. 103.255 */ 103.256 - public static List<String> grep(String regExpr, String text) { 103.257 - return grep(regExpr, splitLines(text)); 103.258 + public static List<String> grep(String regExpr, String text, String sep) { 103.259 + return grep(regExpr, splitLines(text, sep)); 103.260 } 103.261 103.262 public static List<String> grep(String regExpr, List<String> text) { 103.263 @@ -865,8 +923,8 @@ 103.264 /** 103.265 * Splits a String using the System's line separator character as splitting point. 103.266 */ 103.267 - public static List<String> splitLines(String lines) { 103.268 - return Arrays.asList(lines.split(lineSeparator)); 103.269 + public static List<String> splitLines(String lines, String sep) { 103.270 + return Arrays.asList(lines.split(sep)); 103.271 } 103.272 103.273 /** 103.274 @@ -882,6 +940,14 @@ 103.275 } 103.276 103.277 /** 103.278 + * Returns true if the OS is a Windows version. 103.279 + */ 103.280 + public static boolean isWindows() { 103.281 + String osName = System.getProperty("os.name"); 103.282 + return osName.toUpperCase().startsWith("WINDOWS"); 103.283 + } 103.284 + 103.285 + /** 103.286 * Class representing an in-memory java source file. It is able to extract 103.287 * the file name from simple source codes using regular expressions. 103.288 */
104.1 --- a/test/tools/javac/links/LinksTest.java Thu Mar 21 10:43:39 2013 -0700 104.2 +++ b/test/tools/javac/links/LinksTest.java Tue Mar 26 12:07:45 2013 -0700 104.3 @@ -50,14 +50,17 @@ 104.4 // cp ${TESTSRC}/b/B.java tmp 104.5 ToolBox.writeFile(Paths.get("tmp", "B.java"), BSrc); 104.6 104.7 + try { 104.8 // ln -s `pwd`/tmp "${TESTCLASSES}/a" 104.9 - Files.createSymbolicLink(Paths.get("a"), Paths.get("tmp")); 104.10 -// 104.11 -////"${TESTJAVA}/bin/javac" ${TESTTOOLVMOPTS} -sourcepath "${TESTCLASSES}" -d "${TESTCLASSES}/classes" "${TESTSRC}/T.java" 2>&1 104.12 - ToolBox.JavaToolArgs javacArgs = 104.13 - new ToolBox.JavaToolArgs() 104.14 - .setOptions("-sourcepath", ".", "-d", ".").setSources(TSrc); 104.15 - ToolBox.javac(javacArgs); 104.16 + Files.createSymbolicLink(Paths.get("a"), Paths.get("tmp")); 104.17 + ////"${TESTJAVA}/bin/javac" ${TESTTOOLVMOPTS} -sourcepath "${TESTCLASSES}" -d "${TESTCLASSES}/classes" "${TESTSRC}/T.java" 2>&1 104.18 + ToolBox.JavaToolArgs javacArgs = 104.19 + new ToolBox.JavaToolArgs() 104.20 + .setOptions("-sourcepath", ".", "-d", ".").setSources(TSrc); 104.21 + ToolBox.javac(javacArgs); 104.22 + } catch (UnsupportedOperationException e) { 104.23 + System.err.println("Symbolic links not supported on this system. The test can't finish"); 104.24 + } 104.25 } 104.26 104.27 }
105.1 --- a/test/tools/javac/newlines/NewLineTest.java Thu Mar 21 10:43:39 2013 -0700 105.2 +++ b/test/tools/javac/newlines/NewLineTest.java Tue Mar 26 12:07:45 2013 -0700 105.3 @@ -34,19 +34,18 @@ 105.4 import java.nio.charset.Charset; 105.5 import java.nio.file.Files; 105.6 import java.util.List; 105.7 -import com.sun.tools.javac.util.ArrayUtils; 105.8 105.9 //original test: test/tools/javac/newlines/Newlines.sh 105.10 public class NewLineTest { 105.11 105.12 public static void main(String args[]) throws Exception { 105.13 - String[] mainArgs = ToolBox.getJavacBin(); 105.14 - 105.15 // "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -J-Dline.separator='@' > ${TMP1} 2>&1 105.16 File javacErrOutput = new File("output.txt"); 105.17 ToolBox.AnyToolArgs cmdArgs = 105.18 new ToolBox.AnyToolArgs(ToolBox.Expect.FAIL) 105.19 - .setAllArgs(ArrayUtils.concatOpen(mainArgs, "-J-Dline.separator='@'")) 105.20 + .appendArgs(ToolBox.javacBinary) 105.21 + .appendArgs(ToolBox.testToolVMOpts) 105.22 + .appendArgs("-J-Dline.separator='@'") 105.23 .setErrOutput(javacErrOutput); 105.24 ToolBox.executeCommand(cmdArgs); 105.25
106.1 --- a/test/tools/javac/profiles/ProfileOptionTest.java Thu Mar 21 10:43:39 2013 -0700 106.2 +++ b/test/tools/javac/profiles/ProfileOptionTest.java Tue Mar 26 12:07:45 2013 -0700 106.3 @@ -1,5 +1,5 @@ 106.4 /* 106.5 - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. 106.6 + * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. 106.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 106.8 * 106.9 * This code is free software; you can redistribute it and/or modify it 106.10 @@ -106,7 +106,6 @@ 106.11 for (Target t: Target.values()) { 106.12 switch (t) { 106.13 case JDK1_1: case JDK1_2: // no equivalent -source 106.14 - case JDK1_4_1: case JDK1_4_2: case JSR14: // transitional values 106.15 continue; 106.16 } 106.17
107.1 --- a/test/tools/javah/6257087/T6257087.java Thu Mar 21 10:43:39 2013 -0700 107.2 +++ b/test/tools/javah/6257087/T6257087.java Tue Mar 26 12:07:45 2013 -0700 107.3 @@ -32,7 +32,6 @@ 107.4 107.5 import java.nio.file.Paths; 107.6 107.7 -//original test: test/tools/javah/6257087/foo.sh 107.8 public class T6257087 { 107.9 107.10 private static final String fooBarGoldenFile = 107.11 @@ -59,17 +58,13 @@ 107.12 "#endif"; 107.13 107.14 public static void main(String[] args) throws Exception { 107.15 -// "${TESTJAVA}${FS}bin${FS}javac" ${TESTTOOLVMOPTS} -d "${TC}" "${TS}${FS}foo.java" 107.16 - 107.17 -// "${TESTJAVA}${FS}bin${FS}javah" ${TESTTOOLVMOPTS} -classpath "${TC}" -d "${TC}" foo 107.18 ToolBox.JavaToolArgs javahArgs = 107.19 new ToolBox.JavaToolArgs() 107.20 .setAllArgs("-cp", System.getProperty("test.classes"), "foo"); 107.21 ToolBox.javah(javahArgs); 107.22 107.23 -// diff ${DIFFOPTS} -c "${TS}${FS}foo_bar.h" "${TC}${FS}foo_bar.h" 107.24 ToolBox.compareLines(Paths.get("foo_bar.h"), 107.25 - ToolBox.splitLines(fooBarGoldenFile), null); 107.26 + ToolBox.splitLines(fooBarGoldenFile, "\n"), null, true); 107.27 } 107.28 107.29 }
108.1 --- a/test/tools/javah/constMacroTest/ConstMacroTest.java Thu Mar 21 10:43:39 2013 -0700 108.2 +++ b/test/tools/javah/constMacroTest/ConstMacroTest.java Tue Mar 26 12:07:45 2013 -0700 108.3 @@ -38,7 +38,7 @@ 108.4 //original test: test/tools/javah/ConstMacroTest.sh 108.5 public class ConstMacroTest { 108.6 108.7 - private static final String SubClassConstsGoldenFile = 108.8 + private static final String subClassConstsGoldenFileTemplate = 108.9 "/* DO NOT EDIT THIS FILE - it is machine generated */\n" + 108.10 "#include <jni.h>\n" + 108.11 "/* Header for class SubClassConsts */\n" + 108.12 @@ -49,7 +49,7 @@ 108.13 "extern \"C\" {\n" + 108.14 "#endif\n" + 108.15 "#undef SubClassConsts_serialVersionUID\n" + 108.16 - "#define SubClassConsts_serialVersionUID 6733861379283244755LL\n" + 108.17 + "#define SubClassConsts_serialVersionUID 6733861379283244755%s\n" + 108.18 "#undef SubClassConsts_SUPER_INT_CONSTANT\n" + 108.19 "#define SubClassConsts_SUPER_INT_CONSTANT 3L\n" + 108.20 "#undef SubClassConsts_SUPER_FLOAT_CONSTANT\n" + 108.21 @@ -71,6 +71,9 @@ 108.22 "#endif\n" + 108.23 "#endif"; 108.24 108.25 + private static final String serialVersionUIDSuffix = 108.26 + ToolBox.isWindows() ? "i64" : "LL"; ; 108.27 + 108.28 public static void main(String[] args) throws Exception { 108.29 //first steps are now done by jtreg 108.30 // cp "${TESTSRC}${FS}SuperClassConsts.java" . 108.31 @@ -85,8 +88,10 @@ 108.32 ToolBox.javah(successParams); 108.33 108.34 // diff ${DIFFOPTS} "${TESTSRC}${FS}${EXPECTED_JAVAH_OUT_FILE}" "${GENERATED_HEADER_FILE}" 108.35 + String subClassConstGoldenFile = String.format(subClassConstsGoldenFileTemplate, 108.36 + serialVersionUIDSuffix); 108.37 ToolBox.compareLines(Paths.get("SubClassConsts.h"), 108.38 - ToolBox.splitLines(SubClassConstsGoldenFile), null); 108.39 + ToolBox.splitLines(subClassConstGoldenFile, "\n"), null, true); 108.40 } 108.41 108.42 }
109.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 109.2 +++ b/test/tools/javap/output/RepeatingTypeAnnotations.java Tue Mar 26 12:07:45 2013 -0700 109.3 @@ -0,0 +1,400 @@ 109.4 +/* 109.5 + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 109.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 109.7 + * 109.8 + * This code is free software; you can redistribute it and/or modify it 109.9 + * under the terms of the GNU General Public License version 2 only, as 109.10 + * published by the Free Software Foundation. 109.11 + * 109.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 109.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 109.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 109.15 + * version 2 for more details (a copy is included in the LICENSE file that 109.16 + * accompanied this code). 109.17 + * 109.18 + * You should have received a copy of the GNU General Public License version 109.19 + * 2 along with this work; if not, write to the Free Software Foundation, 109.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 109.21 + * 109.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 109.23 + * or visit www.oracle.com if you need additional information or have any 109.24 + * questions. 109.25 + */ 109.26 + 109.27 +/* 109.28 + * @test 109.29 + * @bug 8005220 109.30 + * @summary javap must display repeating annotations 109.31 + */ 109.32 +import java.io.*; 109.33 +import java.util.*; 109.34 + 109.35 +/** 109.36 + * This class extends the abstract {@link Tester} test-driver, and 109.37 + * encapusulates a number of test-case classes (i.e. classes extending 109.38 + * this class and annotated with {@code TestCase}). 109.39 + * <p> 109.40 + * By default (no argument), this test runs all test-cases, except 109.41 + * if annotated with {@code ignore}. 109.42 + * <p> 109.43 + * Individual test cases can be executed using a run action. 109.44 + * <p> 109.45 + * Example: @run main RepeatingTypeAnnotations RepeatingTypeAnnotations$TC4 109.46 + * <p> 109.47 + * Note: when specific test-cases are run, additional debug output is 109.48 + * produced to help debugging. Test annotated with {@code ignore} 109.49 + * can be executed explicitly. 109.50 + */ 109.51 +public class RepeatingTypeAnnotations extends Tester { 109.52 + 109.53 + /** 109.54 + * Main method instantiates test and run test-cases. 109.55 + */ 109.56 + public static void main(String... args) throws Exception { 109.57 + Tester tester = new RepeatingTypeAnnotations(); 109.58 + tester.run(args); 109.59 + } 109.60 + 109.61 + /** 109.62 + * Testcases are classes extending {@code RepeatingTypeAnnotations}, 109.63 + * and calling {@link setSrc}, followed by one or more invocations 109.64 + * of {@link verify} in the body of the constructor. 109.65 + */ 109.66 + public RepeatingTypeAnnotations() { 109.67 + setSrc(new TestSource(template)); 109.68 + } 109.69 + 109.70 + /** 109.71 + * Common template for test cases. The line TESTCASE is 109.72 + * replaced with the specific lines of individual tests. 109.73 + */ 109.74 + private static final String[] template = { 109.75 + "import java.lang.annotation.*;", 109.76 + "class Test {", 109.77 + " @Repeatable(As.class)", 109.78 + " @Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})", 109.79 + " @Retention(RetentionPolicy.CLASS)", 109.80 + " @interface A {", 109.81 + " Class f() default int.class;", 109.82 + " }", 109.83 + 109.84 + " @Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})", 109.85 + " @Retention(RetentionPolicy.CLASS)", 109.86 + " @interface As { A[] value(); }", 109.87 + 109.88 + " @Repeatable(Bs.class)", 109.89 + " @Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})", 109.90 + " @Retention(RetentionPolicy.CLASS)", 109.91 + " @interface B {", 109.92 + " Class f() default int.class;", 109.93 + " }", 109.94 + 109.95 + " @Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})", 109.96 + " @Retention(RetentionPolicy.CLASS)", 109.97 + " @interface Bs { B[] value(); }", 109.98 + 109.99 + " @Repeatable(Cs.class)", 109.100 + " @Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})", 109.101 + " @Retention(RetentionPolicy.RUNTIME)", 109.102 + " @interface C {", 109.103 + " Class f() default int.class;", 109.104 + " }", 109.105 + 109.106 + " @Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})", 109.107 + " @Retention(RetentionPolicy.RUNTIME)", 109.108 + " @interface Cs { C[] value(); }", 109.109 + "TESTCASE", 109.110 + "}" 109.111 + }; 109.112 + 109.113 + /* 109.114 + * The test cases covers annotation in the following locations: 109.115 + * - static and non-static fields 109.116 + * - local variables 109.117 + * - constructor and method return type and parameter types 109.118 + * - casts in class and method contexts. 109.119 + * For the above locations the test-cases covers: 109.120 + * - single annotation type 109.121 + * - two annotation types with same retention 109.122 + * - two annotation types with different retention 109.123 + * - three annotation types, two of same retention, one different. 109.124 + */ 109.125 + 109.126 + @TestCase 109.127 + @ignore // 8008082:missing type annotation for cast 109.128 + public static class TC1 extends RepeatingTypeAnnotations { 109.129 + public TC1() { 109.130 + setSrc(" static String so = \"hello world\";", 109.131 + " public @A @A @A Object o = (@A @A @A String) Test.so;"); 109.132 + verify("RuntimeInvisibleTypeAnnotations", 109.133 + "0: #25(#26=[@#27(),@#27(),@#27()]): FIELD", 109.134 + "1: #25(#26=[@#27(),@#27(),@#27()]): CAST, offset=5"); 109.135 + } 109.136 + } 109.137 + 109.138 + @TestCase 109.139 + public static class TC2 extends RepeatingTypeAnnotations { 109.140 + public TC2() { 109.141 + setSrc(" static String so = \"hello world\";", 109.142 + " public @A @B @A Object o = (@B @A @B String) Test.so;"); 109.143 + verify("RuntimeInvisibleTypeAnnotations", 109.144 + "0: #25(#26=[@#27(),@#27()]): FIELD", 109.145 + "1: #28(): FIELD", 109.146 + "2: #29(#26=[@#28(),@#28()]): CAST, offset=5", 109.147 + "3: #27(): CAST, offset=5"); 109.148 + } 109.149 + } 109.150 + 109.151 + @TestCase 109.152 + public static class TC3 extends RepeatingTypeAnnotations { 109.153 + public TC3() { 109.154 + setSrc(" static String so = \"hello world\";", 109.155 + " public @A @A @C Object o = (@B @C @B String) Test.so;"); 109.156 + verify("RuntimeInvisibleTypeAnnotations", 109.157 + "0: #25(): FIELD", 109.158 + "1: #25(): CAST, offset=5", 109.159 + "RuntimeVisibleTypeAnnotations", 109.160 + "0: #27(#28=[@#29(),@#29()]): FIELD", 109.161 + "1: #30(#28=[@#31(),@#31()]): CAST, offset=5"); 109.162 + } 109.163 + } 109.164 + 109.165 + @TestCase 109.166 + public static class TC4 extends RepeatingTypeAnnotations { 109.167 + public TC4() { 109.168 + setSrc(" static String so = \"hello world\";", 109.169 + " public @A @B @C Object o = (@C @B @A String) Test.so;"); 109.170 + verify("RuntimeInvisibleTypeAnnotations", 109.171 + "RuntimeVisibleTypeAnnotations", 109.172 + "0: #25(): FIELD", 109.173 + "1: #25(): CAST, offset=5", 109.174 + "0: #27(): FIELD", 109.175 + "1: #28(): FIELD", 109.176 + "2: #28(): CAST, offset=5", 109.177 + "3: #27(): CAST, offset=5"); 109.178 + } 109.179 + } 109.180 + 109.181 + @TestCase 109.182 + @ignore // 8008082:missing type annotation for cast 109.183 + public static class TC5 extends RepeatingTypeAnnotations { 109.184 + public TC5() { 109.185 + setSrc(" static String so = \"hello world\";", 109.186 + " public static @A @A @A Object o = (@B @B @B String) Test.so;"); 109.187 + verify("RuntimeInvisibleTypeAnnotations", 109.188 + "0: #25(#26=[@#27(),@#27(),@#27()]): FIELD", 109.189 + "1: #28(#26=[@#29(),@#29(),@#29()]): CAST, offset=5, type_index=0"); 109.190 + } 109.191 + } 109.192 + 109.193 + @TestCase 109.194 + public static class TC6 extends RepeatingTypeAnnotations { 109.195 + public TC6() { 109.196 + setSrc(" static String so = \"hello world\";", 109.197 + " public static @A @B @A Object o = (@B @A @B String) Test.so;"); 109.198 + verify("RuntimeInvisibleTypeAnnotations", 109.199 + "0: #25(#26=[@#27(),@#27()]): FIELD", 109.200 + "1: #28(): FIELD", 109.201 + "2: #29(#26=[@#28(),@#28()]): CAST, offset=5", 109.202 + "3: #27(): CAST, offset=5"); 109.203 + } 109.204 + } 109.205 + 109.206 + @TestCase 109.207 + public static class TC7 extends RepeatingTypeAnnotations { 109.208 + public TC7() { 109.209 + setSrc(" static String so = \"hello world\";", 109.210 + " public static @A @A @C Object o = (@B @C @B String) Test.so;"); 109.211 + verify("RuntimeInvisibleTypeAnnotations", 109.212 + "RuntimeVisibleTypeAnnotations", 109.213 + "0: #25(): FIELD", 109.214 + "1: #25(): CAST, offset=5", 109.215 + "0: #27(#28=[@#29(),@#29()]): FIELD", 109.216 + "1: #30(#28=[@#31(),@#31()]): CAST, offset=5"); 109.217 + } 109.218 + } 109.219 + 109.220 + @TestCase 109.221 + public static class TC8 extends RepeatingTypeAnnotations { 109.222 + public TC8() { 109.223 + setSrc(" static String so = \"hello world\";", 109.224 + " public static @A @B @C Object o = (@C @B @A String) Test.so;"); 109.225 + verify("RuntimeInvisibleTypeAnnotations", 109.226 + "RuntimeVisibleTypeAnnotations", 109.227 + "0: #25(): FIELD", 109.228 + "1: #25(): CAST, offset=5", 109.229 + "0: #27(): FIELD", 109.230 + "1: #28(): FIELD", 109.231 + "2: #28(): CAST, offset=5", 109.232 + "3: #27(): CAST, offset=5"); 109.233 + } 109.234 + } 109.235 + 109.236 + @TestCase 109.237 + @ignore // 8008082:missing type annotation for cast 109.238 + public static class TC9 extends RepeatingTypeAnnotations { 109.239 + public TC9() { 109.240 + setSrc(" public Test(@A @A @A Object o, @A int i, long l) {", 109.241 + " @A @A @A String ls = (@B @B @B String) o;", 109.242 + " }"); 109.243 + verify("RuntimeInvisibleTypeAnnotations", 109.244 + "0: #34(#35=[@#36(),@#36(),@#36()]): METHOD_FORMAL_PARAMETER, param_index=0", 109.245 + "1: #36(): METHOD_FORMAL_PARAMETER, param_index=1", 109.246 + "2: #37(#35=[@#38(),@#38(),@#38()]): CAST, offset=4, type_index=0", 109.247 + "3: #34(#35=[@#36(),@#36(),@#36()]): LOCAL_VARIABLE, {start_pc=10, length=1, index=5}"); 109.248 + } 109.249 + } 109.250 + 109.251 + @TestCase 109.252 + public static class TC10 extends RepeatingTypeAnnotations { 109.253 + public TC10() { 109.254 + setSrc(" public Test(@A @A @B Object o, @A @B int i, long l) {", 109.255 + " @A @A @B String ls = (@B @A @B String) o;", 109.256 + " }"); 109.257 + verify("RuntimeInvisibleTypeAnnotations:", 109.258 + "0: #34(#35=[@#36(),@#36()]): METHOD_FORMAL_PARAMETER, param_index=0", 109.259 + "1: #37(): METHOD_FORMAL_PARAMETER, param_index=0", 109.260 + "2: #36(): METHOD_FORMAL_PARAMETER, param_index=1", 109.261 + "3: #37(): METHOD_FORMAL_PARAMETER, param_index=1", 109.262 + "4: #38(#35=[@#37(),@#37()]): CAST, offset=4, type_index=0", 109.263 + "5: #36(): CAST, offset=4, type_index=0", 109.264 + "6: #34(#35=[@#36(),@#36()]): LOCAL_VARIABLE, {start_pc=10, length=1, index=5}", 109.265 + "7: #37(): LOCAL_VARIABLE, {start_pc=10, length=1, index=5}"); 109.266 + } 109.267 + } 109.268 + 109.269 + @TestCase 109.270 + public static class TC11 extends RepeatingTypeAnnotations { 109.271 + public TC11() { 109.272 + setSrc(" public Test(@C @C @A Object o, @A @B int i, long l) {", 109.273 + " @C @C @A String ls = (@A @A @C String) o;", 109.274 + " }"); 109.275 + verify("RuntimeInvisibleTypeAnnotations", 109.276 + "RuntimeVisibleTypeAnnotations", 109.277 + "0: #34(#35=[@#36(),@#36()]): METHOD_FORMAL_PARAMETER, param_index=0", 109.278 + "1: #36(): CAST, offset=4", 109.279 + "2: #34(#35=[@#36(),@#36()]): LOCAL_VARIABLE, {start_pc=10, length=1, index=5}", 109.280 + "0: #38(): METHOD_FORMAL_PARAMETER, param_index=0", 109.281 + "1: #38(): METHOD_FORMAL_PARAMETER, param_index=1", 109.282 + "2: #39(): METHOD_FORMAL_PARAMETER, param_index=1", 109.283 + "3: #40(#35=[@#38(),@#38()]): CAST, offset=4", 109.284 + "4: #38(): LOCAL_VARIABLE, {start_pc=10, length=1, index=5}"); 109.285 + } 109.286 + } 109.287 + 109.288 + @TestCase 109.289 + public static class TC12 extends RepeatingTypeAnnotations { 109.290 + public TC12() { 109.291 + setSrc(" public Test(@A @B @C Object o, @A @C int i, long l) {", 109.292 + " @A @B @C String ls = (@C @A @B String) o;", 109.293 + " }"); 109.294 + verify("RuntimeInvisibleTypeAnnotations", 109.295 + "RuntimeVisibleTypeAnnotations", 109.296 + "0: #34(): METHOD_FORMAL_PARAMETER, param_index=0", 109.297 + "1: #34(): METHOD_FORMAL_PARAMETER, param_index=1", 109.298 + "2: #34(): CAST, offset=4", 109.299 + "3: #34(): LOCAL_VARIABLE, {start_pc=10, length=1, index=5}", 109.300 + "0: #36(): METHOD_FORMAL_PARAMETER, param_index=0", 109.301 + "1: #37(): METHOD_FORMAL_PARAMETER, param_index=0", 109.302 + "2: #36(): METHOD_FORMAL_PARAMETER, param_index=1", 109.303 + "3: #36(): CAST, offset=4", 109.304 + "4: #37(): CAST, offset=4", 109.305 + "5: #36(): LOCAL_VARIABLE, {start_pc=10, length=1, index=5}", 109.306 + "6: #37(): LOCAL_VARIABLE, {start_pc=10, length=1, index=5}"); 109.307 + } 109.308 + } 109.309 + 109.310 + @TestCase 109.311 + @ignore // 8008082:missing type annotation for cast 109.312 + public static class TC13 extends RepeatingTypeAnnotations { 109.313 + public TC13() { 109.314 + setSrc(" public @A @A @A String foo(@A @A @A Object o, @A int i, long l) {", 109.315 + " @A @A @A String ls = (@B @B @B String) o;", 109.316 + " return (@A @A @A String) o;", 109.317 + " }"); 109.318 + verify("RuntimeInvisibleTypeAnnotations", 109.319 + "0: #36(#37=[@#38(),@#38(),@#38()]): METHOD_RETURN", 109.320 + "1: #36(#37=[@#38(),@#38(),@#38()]): METHOD_FORMAL_PARAMETER, param_index=0", 109.321 + "2: #38(): METHOD_FORMAL_PARAMETER, param_index=1", 109.322 + "3: #39(#37=[@#40(),@#40(),@#40()]): CAST, offset=0, type_index=0", 109.323 + "4: #36(#37=[@#38(),@#38(),@#38()]): CAST, offset=6, type_index=0", 109.324 + "5: #36(#37=[@#38(),@#38(),@#38()]): LOCAL_VARIABLE, {start_pc=6, length=5, index=5}"); 109.325 + } 109.326 + } 109.327 + 109.328 + @TestCase 109.329 + public static class TC14 extends RepeatingTypeAnnotations { 109.330 + public TC14() { 109.331 + setSrc(" public @A @B @B String foo(@A @A @B Object o, @A @B int i, long l) {", 109.332 + " @A @A @B String ls = (@B @A @B String) o;", 109.333 + " return (@A @B @B String) o;", 109.334 + " }"); 109.335 + verify("RuntimeInvisibleTypeAnnotations", 109.336 + "0: #36(): METHOD_RETURN", 109.337 + "1: #37(#38=[@#39(),@#39()]): METHOD_RETURN", 109.338 + "2: #40(#38=[@#36(),@#36()]): METHOD_FORMAL_PARAMETER, param_index=0", 109.339 + "3: #39(): METHOD_FORMAL_PARAMETER, param_index=0", 109.340 + "4: #36(): METHOD_FORMAL_PARAMETER, param_index=1", 109.341 + "5: #39(): METHOD_FORMAL_PARAMETER, param_index=1", 109.342 + "6: #37(#38=[@#39(),@#39()]): CAST, offset=0", 109.343 + "7: #36(): CAST, offset=0", 109.344 + "8: #36(): CAST, offset=6", 109.345 + "9: #37(#38=[@#39(),@#39()]): CAST, offset=6", 109.346 + "10: #40(#38=[@#36(),@#36()]): LOCAL_VARIABLE, {start_pc=6, length=5, index=5}", 109.347 + "11: #39(): LOCAL_VARIABLE, {start_pc=6, length=5, index=5}"); 109.348 + } 109.349 + } 109.350 + 109.351 + @TestCase 109.352 + public static class TC15 extends RepeatingTypeAnnotations { 109.353 + public TC15() { 109.354 + setSrc(" public @A @A @C String foo(@C @C @A Object o, @A @B int i, long l) {", 109.355 + " @C @C @A String ls = (@A @A @C String) o;", 109.356 + " return (@C @B @B String) o;", 109.357 + " }"); 109.358 + verify("RuntimeInvisibleTypeAnnotations", 109.359 + "RuntimeVisibleTypeAnnotations", 109.360 + "0: #36(): METHOD_RETURN", 109.361 + "1: #37(#38=[@#36(),@#36()]): METHOD_FORMAL_PARAMETER, param_index=0", 109.362 + "2: #36(): CAST, offset=0", 109.363 + "3: #36(): CAST, offset=6", 109.364 + "4: #37(#38=[@#36(),@#36()]): LOCAL_VARIABLE, {start_pc=6, length=5, index=5}", 109.365 + "0: #40(#38=[@#41(),@#41()]): METHOD_RETURN", 109.366 + "1: #41(): METHOD_FORMAL_PARAMETER, param_index=0", 109.367 + "2: #41(): METHOD_FORMAL_PARAMETER, param_index=1", 109.368 + "3: #42(): METHOD_FORMAL_PARAMETER, param_index=1", 109.369 + "4: #40(#38=[@#41(),@#41()]): CAST, offset=0", 109.370 + "5: #43(#38=[@#42(),@#42()]): CAST, offset=6", 109.371 + "6: #41(): LOCAL_VARIABLE, {start_pc=6, length=5, index=5}"); 109.372 + } 109.373 + } 109.374 + 109.375 + @TestCase 109.376 + public static class TC16 extends RepeatingTypeAnnotations { 109.377 + public TC16() { 109.378 + setSrc(" public @A @B @C String foo(@A @B @C Object o, @A @C int i, long l) {", 109.379 + " @A @B @C String ls = (@C @A @B String) o;", 109.380 + " return (@B @A @C String) o;", 109.381 + " }"); 109.382 + verify("RuntimeInvisibleTypeAnnotations", 109.383 + "RuntimeVisibleTypeAnnotations", 109.384 + "0: #36(): METHOD_RETURN", 109.385 + "1: #36(): METHOD_FORMAL_PARAMETER, param_index=0", 109.386 + "2: #36(): METHOD_FORMAL_PARAMETER, param_index=1", 109.387 + "3: #36(): CAST, offset=0", 109.388 + "4: #36(): CAST, offset=6", 109.389 + "5: #36(): LOCAL_VARIABLE, {start_pc=6, length=5, index=5}", 109.390 + "0: #38(): METHOD_RETURN", 109.391 + "1: #39(): METHOD_RETURN", 109.392 + "2: #38(): METHOD_FORMAL_PARAMETER, param_index=0", 109.393 + "3: #39(): METHOD_FORMAL_PARAMETER, param_index=0", 109.394 + "4: #38(): METHOD_FORMAL_PARAMETER, param_index=1", 109.395 + "5: #38(): CAST, offset=0", 109.396 + "6: #39(): CAST, offset=0", 109.397 + "7: #39(): CAST, offset=6", 109.398 + "8: #38(): CAST, offset=6", 109.399 + "9: #38(): LOCAL_VARIABLE, {start_pc=6, length=5, index=5}", 109.400 + "10: #39(): LOCAL_VARIABLE, {start_pc=6, length=5, index=5}"); 109.401 + } 109.402 + } 109.403 +}
110.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 110.2 +++ b/test/tools/javap/output/Tester.java Tue Mar 26 12:07:45 2013 -0700 110.3 @@ -0,0 +1,389 @@ 110.4 +/* 110.5 + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. 110.6 + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 110.7 + * 110.8 + * This code is free software; you can redistribute it and/or modify it 110.9 + * under the terms of the GNU General Public License version 2 only, as 110.10 + * published by the Free Software Foundation. 110.11 + * 110.12 + * This code is distributed in the hope that it will be useful, but WITHOUT 110.13 + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 110.14 + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 110.15 + * version 2 for more details (a copy is included in the LICENSE file that 110.16 + * accompanied this code). 110.17 + * 110.18 + * You should have received a copy of the GNU General Public License version 110.19 + * 2 along with this work; if not, write to the Free Software Foundation, 110.20 + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 110.21 + * 110.22 + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 110.23 + * or visit www.oracle.com if you need additional information or have any 110.24 + * questions. 110.25 + */ 110.26 + 110.27 +import java.io.*; 110.28 +import java.util.*; 110.29 +import java.lang.annotation.*; 110.30 +import java.lang.reflect.InvocationTargetException; 110.31 + 110.32 +/** 110.33 + * {@code Tester} is an abstract test-driver that provides the logic 110.34 + * to execute test-cases, grouped by test classes. 110.35 + * A test class is a main class extending this class, that instantiate 110.36 + * itself, and calls the {@link run} method, passing any command line 110.37 + * arguments. 110.38 + * <p> 110.39 + * The {@code run} method, expects arguments to identify test-case classes. 110.40 + * A test-case class is a class extending the test class, and annotated 110.41 + * with {@code TestCase}. 110.42 + * <p> 110.43 + * If no test-cases are specified, the test class directory is searched for 110.44 + * co-located test-case classes (i.e. any class extending the test class, 110.45 + * annotated with {@code TestCase}). 110.46 + * <p> 110.47 + * Besides serving to group test-cases, extending the driver allow 110.48 + * setting up a test-case template, and possibly overwrite default 110.49 + * test-driver behaviour. 110.50 + */ 110.51 +public abstract class Tester { 110.52 + 110.53 + private static boolean debug = false; 110.54 + private static final PrintStream out = System.err; 110.55 + private static final PrintStream err = System.err; 110.56 + 110.57 + 110.58 + protected void run(String... args) throws Exception { 110.59 + 110.60 + final File classesdir = new File(System.getProperty("test.classes", ".")); 110.61 + 110.62 + String[] classNames = args; 110.63 + 110.64 + // If no test-cases are specified, we regard all co-located classes 110.65 + // as potential test-cases. 110.66 + if (args.length == 0) { 110.67 + final String pattern = ".*\\.class"; 110.68 + final File classFiles[] = classesdir.listFiles(new FileFilter() { 110.69 + public boolean accept(File f) { 110.70 + return f.getName().matches(pattern); 110.71 + } 110.72 + }); 110.73 + ArrayList<String> names = new ArrayList<String>(classFiles.length); 110.74 + for (File f : classFiles) { 110.75 + String fname = f.getName(); 110.76 + names.add(fname.substring(0, fname.length() -6)); 110.77 + } 110.78 + classNames = names.toArray(new String[names.size()]); 110.79 + } else { 110.80 + debug = true; 110.81 + } 110.82 + // Test-cases must extend the driver type, and be marked 110.83 + // @TestCase. Other arguments (classes) are ignored. 110.84 + // Test-cases are instantiated, and thereby executed. 110.85 + for (String clname : classNames) { 110.86 + try { 110.87 + final Class tclass = Class.forName(clname); 110.88 + if (!getClass().isAssignableFrom(tclass)) continue; 110.89 + TestCase anno = (TestCase) tclass.getAnnotation(TestCase.class); 110.90 + if (anno == null) continue; 110.91 + if (!debug) { 110.92 + ignore i = (ignore) tclass.getAnnotation(ignore.class); 110.93 + if (i != null) { 110.94 + out.println("Ignore: " + clname); 110.95 + ignored++; 110.96 + continue; 110.97 + } 110.98 + } 110.99 + out.println("TestCase: " + clname); 110.100 + cases++; 110.101 + Tester tc = (Tester) tclass.getConstructor().newInstance(); 110.102 + if (tc.errors > 0) { 110.103 + error("" + tc.errors + " test points failed in " + clname); 110.104 + errors += tc.errors - 1; 110.105 + fcases++; 110.106 + } 110.107 + } catch(ReflectiveOperationException roe) { 110.108 + error("Warning: " + clname + " - ReflectiveOperationException"); 110.109 + roe.printStackTrace(err); 110.110 + } catch(Exception unknown) { 110.111 + error("Warning: " + clname + " - uncaught exception"); 110.112 + unknown.printStackTrace(err); 110.113 + } 110.114 + } 110.115 + 110.116 + String imsg = ignored > 0 ? " (" + ignored + " ignored)" : ""; 110.117 + if (errors > 0) 110.118 + throw new Error(errors + " error, in " + fcases + " of " + cases + " test-cases" + imsg); 110.119 + else 110.120 + err.println("" + cases + " test-cases executed" + imsg + ", no errors"); 110.121 + } 110.122 + 110.123 + 110.124 + /** 110.125 + * Test-cases must be marked with the {@code TestCase} annotation, 110.126 + * as well as extend {@code Tester} (or an driver extension 110.127 + * specified as the first argument to the {@code main()} method. 110.128 + */ 110.129 + @Retention(RetentionPolicy.RUNTIME) 110.130 + @interface TestCase { } 110.131 + 110.132 + /** 110.133 + * Individual test-cases failing due to product bugs, may temporarily 110.134 + * be excluded by marking them like this: 110.135 + * @ignore // 1234567:bug synopsis 110.136 + */ 110.137 + @Retention(RetentionPolicy.RUNTIME) 110.138 + @interface ignore { } 110.139 + 110.140 + /** 110.141 + * Test-cases are classes extending {@code Tester}, and 110.142 + * calling {@link setSrc}, followed by one or more invocations 110.143 + * of {@link verify} in the body of the constructor. 110.144 + * <p> 110.145 + * Sets a default test-case template, which is empty except 110.146 + * for a key of {@code "TESTCASE"}. 110.147 + * Subclasses will typically call {@code setSrc(TestSource)} 110.148 + * to setup a useful test-case template. 110.149 + */ 110.150 + public Tester() { 110.151 + this.testCase = this.getClass().getName(); 110.152 + src = new TestSource("TESTCASE"); 110.153 + } 110.154 + 110.155 + /** 110.156 + * Set the top-level source template. 110.157 + */ 110.158 + protected Tester setSrc(TestSource src) { 110.159 + this.src = src; 110.160 + return this; 110.161 + } 110.162 + 110.163 + /** 110.164 + * Convenience method for calling {@code innerSrc("TESTCASE", ...)}. 110.165 + */ 110.166 + protected Tester setSrc(String... lines) { 110.167 + return innerSrc("TESTCASE", lines); 110.168 + } 110.169 + 110.170 + /** 110.171 + * Convenience method for calling {@code innerSrc(key, new TestSource(...))}. 110.172 + */ 110.173 + protected Tester innerSrc(String key, String... lines) { 110.174 + return innerSrc(key, new TestSource(lines)); 110.175 + } 110.176 + 110.177 + /** 110.178 + * Specialize the testcase template, setting replacement content 110.179 + * for the specified key. 110.180 + */ 110.181 + protected Tester innerSrc(String key, TestSource content) { 110.182 + if (src == null) { 110.183 + src = new TestSource(key); 110.184 + } 110.185 + src.setInner(key, content); 110.186 + return this; 110.187 + } 110.188 + 110.189 + /** 110.190 + * On the first invocation, call {@code execute()} to compile 110.191 + * the test-case source and process the resulting class(se) 110.192 + * into verifiable output. 110.193 + * <p> 110.194 + * Verify that the output matches each of the regular expressions 110.195 + * given as argument. 110.196 + * <p> 110.197 + * Any failure to match constitutes a test failure, but doesn't 110.198 + * abort the test-case. 110.199 + * <p> 110.200 + * Any exception (e.g. bad regular expression syntax) results in 110.201 + * a test failure, and aborts the test-case. 110.202 + */ 110.203 + protected void verify(String... expect) { 110.204 + if (!didExecute) { 110.205 + try { 110.206 + execute(); 110.207 + } catch(Exception ue) { 110.208 + throw new Error(ue); 110.209 + } finally { 110.210 + didExecute = true; 110.211 + } 110.212 + } 110.213 + if (output == null) { 110.214 + error("output is null"); 110.215 + return; 110.216 + } 110.217 + for (String e: expect) { 110.218 + // Escape regular expressions (to allow input to be literals). 110.219 + // Notice, characters to be escaped are themselves identified 110.220 + // using regular expressions 110.221 + String rc[] = { "(", ")", "[", "]", "{", "}", "$" }; 110.222 + for (String c : rc) { 110.223 + e = e.replace(c, "\\" + c); 110.224 + } 110.225 + // DEBUG: Uncomment this to test modulo constant pool index. 110.226 + // e = e.replaceAll("#[0-9]{2}", "#[0-9]{2}"); 110.227 + if (!output.matches("(?s).*" + e + ".*")) { 110.228 + if (!didPrint) { 110.229 + out.println(output); 110.230 + didPrint = true; 110.231 + } 110.232 + error("not matched: '" + e + "'"); 110.233 + } else if(debug) { 110.234 + out.println("matched: '" + e + "'"); 110.235 + } 110.236 + } 110.237 + } 110.238 + 110.239 + /** 110.240 + * Calls {@code writeTestFile()} to write out the test-case source 110.241 + * content to a file, then call {@code compileTestFile()} to 110.242 + * compile it, and finally run the {@link process} method to produce 110.243 + * verifiable output. The default {@code process} method runs javap. 110.244 + * <p> 110.245 + * If an exception occurs, it results in a test failure, and 110.246 + * aborts the test-case. 110.247 + */ 110.248 + protected void execute() throws IOException { 110.249 + err.println("TestCase: " + testCase); 110.250 + writeTestFile(); 110.251 + compileTestFile(); 110.252 + process(); 110.253 + } 110.254 + 110.255 + /** 110.256 + * Generate java source from test-case. 110.257 + * TBD: change to use javaFileObject, possibly make 110.258 + * this class extend JavaFileObject. 110.259 + */ 110.260 + protected void writeTestFile() throws IOException { 110.261 + javaFile = new File("Test.java"); 110.262 + FileWriter fw = new FileWriter(javaFile); 110.263 + BufferedWriter bw = new BufferedWriter(fw); 110.264 + PrintWriter pw = new PrintWriter(bw); 110.265 + for (String line : src) { 110.266 + pw.println(line); 110.267 + if (debug) out.println(line); 110.268 + } 110.269 + pw.close(); 110.270 + } 110.271 + 110.272 + /** 110.273 + * Compile the Java source code. 110.274 + */ 110.275 + protected void compileTestFile() { 110.276 + String path = javaFile.getPath(); 110.277 + String params[] = { "-source", "1.8", "-g", path }; 110.278 + int rc = com.sun.tools.javac.Main.compile(params); 110.279 + if (rc != 0) 110.280 + throw new Error("compilation failed. rc=" + rc); 110.281 + classFile = new File(path.substring(0, path.length() - 5) + ".class"); 110.282 + } 110.283 + 110.284 + 110.285 + /** 110.286 + * Process class file to generate output for verification. 110.287 + * The default implementation simply runs javap. This might be 110.288 + * overwritten to generate output in a different manner. 110.289 + */ 110.290 + protected void process() { 110.291 + String testClasses = "."; //System.getProperty("test.classes", "."); 110.292 + StringWriter sw = new StringWriter(); 110.293 + PrintWriter pw = new PrintWriter(sw); 110.294 + String[] args = { "-v", "-classpath", testClasses, "Test" }; 110.295 + int rc = com.sun.tools.javap.Main.run(args, pw); 110.296 + if (rc != 0) 110.297 + throw new Error("javap failed. rc=" + rc); 110.298 + pw.close(); 110.299 + output = sw.toString(); 110.300 + if (debug) { 110.301 + out.println(output); 110.302 + didPrint = true; 110.303 + } 110.304 + 110.305 + } 110.306 + 110.307 + 110.308 + private String testCase; 110.309 + private TestSource src; 110.310 + private File javaFile = null; 110.311 + private File classFile = null; 110.312 + private String output = null; 110.313 + private boolean didExecute = false; 110.314 + private boolean didPrint = false; 110.315 + 110.316 + 110.317 + protected void error(String msg) { 110.318 + err.println("Error: " + msg); 110.319 + errors++; 110.320 + } 110.321 + 110.322 + private int cases; 110.323 + private int fcases; 110.324 + private int errors; 110.325 + private int ignored; 110.326 + 110.327 + /** 110.328 + * The TestSource class provides a simple container for 110.329 + * test cases. It contains an array of source code lines, 110.330 + * where zero or more lines may be markers for nested lines. 110.331 + * This allows representing templates, with specialization. 110.332 + * <P> 110.333 + * This may be generalized to support more advance combo 110.334 + * tests, but presently it's only used with a static template, 110.335 + * and one level of specialization. 110.336 + */ 110.337 + public class TestSource implements Iterable<String> { 110.338 + 110.339 + private String[] lines; 110.340 + private Hashtable<String, TestSource> innerSrc; 110.341 + 110.342 + public TestSource(String... lines) { 110.343 + this.lines = lines; 110.344 + innerSrc = new Hashtable<String, TestSource>(); 110.345 + } 110.346 + 110.347 + public void setInner(String key, TestSource inner) { 110.348 + innerSrc.put(key, inner); 110.349 + } 110.350 + 110.351 + public void setInner(String key, String... lines) { 110.352 + innerSrc.put(key, new TestSource(lines)); 110.353 + } 110.354 + 110.355 + public Iterator<String> iterator() { 110.356 + return new LineIterator(); 110.357 + } 110.358 + 110.359 + private class LineIterator implements Iterator<String> { 110.360 + 110.361 + int nextLine = 0; 110.362 + Iterator<String> innerIt = null; 110.363 + 110.364 + public boolean hasNext() { 110.365 + return nextLine < lines.length; 110.366 + } 110.367 + 110.368 + public String next() { 110.369 + if (!hasNext()) throw new NoSuchElementException(); 110.370 + String str = lines[nextLine]; 110.371 + TestSource inner = innerSrc.get(str); 110.372 + if (inner == null) { 110.373 + nextLine++; 110.374 + return str; 110.375 + } 110.376 + if (innerIt == null) { 110.377 + innerIt = inner.iterator(); 110.378 + } 110.379 + if (innerIt.hasNext()) { 110.380 + return innerIt.next(); 110.381 + } 110.382 + innerIt = null; 110.383 + nextLine++; 110.384 + return next(); 110.385 + } 110.386 + 110.387 + public void remove() { 110.388 + throw new UnsupportedOperationException(); 110.389 + } 110.390 + } 110.391 + } 110.392 +}
111.1 --- a/test/tools/javap/stackmap/StackmapTest.java Thu Mar 21 10:43:39 2013 -0700 111.2 +++ b/test/tools/javap/stackmap/StackmapTest.java Tue Mar 26 12:07:45 2013 -0700 111.3 @@ -84,10 +84,11 @@ 111.4 new ToolBox.JavaToolArgs() 111.5 .setAllArgs("-v", "Test.class"); 111.6 String out = ToolBox.javap(javapParams); 111.7 - List<String> grepResult = ToolBox.grep("frame_type", out); 111.8 - grepResult.addAll(ToolBox.grep("offset_delta", out)); 111.9 - grepResult.addAll(ToolBox.grep("stack = ", out)); 111.10 - grepResult.addAll(ToolBox.grep("locals = ", out)); 111.11 + List<String> grepResult = ToolBox.grep("frame_type", out, 111.12 + ToolBox.lineSeparator); 111.13 + grepResult.addAll(ToolBox.grep("offset_delta", out, ToolBox.lineSeparator)); 111.14 + grepResult.addAll(ToolBox.grep("stack = ", out, ToolBox.lineSeparator)); 111.15 + grepResult.addAll(ToolBox.grep("locals = ", out, ToolBox.lineSeparator)); 111.16 List<String> goldenList = Arrays.asList(goldenOut.split("\n")); 111.17 111.18 // diff -w "${OUTFILE}" "${TESTSRC}${FS}T6271292.out"
112.1 --- a/test/tools/jdeps/Basic.java Thu Mar 21 10:43:39 2013 -0700 112.2 +++ b/test/tools/jdeps/Basic.java Tue Mar 26 12:07:45 2013 -0700 112.3 @@ -23,7 +23,7 @@ 112.4 112.5 /* 112.6 * @test 112.7 - * @bug 8003562 112.8 + * @bug 8003562 8005428 112.9 * @summary Basic tests for jdeps tool 112.10 * @build Test p.Foo 112.11 * @run main Basic 112.12 @@ -33,13 +33,35 @@ 112.13 import java.io.IOException; 112.14 import java.io.PrintWriter; 112.15 import java.io.StringWriter; 112.16 +import java.nio.file.Path; 112.17 +import java.nio.file.Paths; 112.18 import java.util.*; 112.19 import java.util.regex.*; 112.20 112.21 public class Basic { 112.22 + private static boolean symbolFileExist = initProfiles(); 112.23 + private static boolean initProfiles() { 112.24 + // check if ct.sym exists; if not use the profiles.properties file 112.25 + Path home = Paths.get(System.getProperty("java.home")); 112.26 + if (home.endsWith("jre")) { 112.27 + home = home.getParent(); 112.28 + } 112.29 + Path ctsym = home.resolve("lib").resolve("ct.sym"); 112.30 + boolean symbolExists = ctsym.toFile().exists(); 112.31 + if (!symbolExists) { 112.32 + Path testSrcProfiles = 112.33 + Paths.get(System.getProperty("test.src", "."), "profiles.properties"); 112.34 + if (!testSrcProfiles.toFile().exists()) 112.35 + throw new Error(testSrcProfiles + " does not exist"); 112.36 + System.out.format("%s doesn't exist.%nUse %s to initialize profiles info%n", 112.37 + ctsym, testSrcProfiles); 112.38 + System.setProperty("jdeps.profiles", testSrcProfiles.toString()); 112.39 + } 112.40 + return symbolExists; 112.41 + } 112.42 + 112.43 public static void main(String... args) throws Exception { 112.44 int errors = 0; 112.45 - 112.46 errors += new Basic().run(); 112.47 if (errors > 0) 112.48 throw new Exception(errors + " errors found"); 112.49 @@ -49,54 +71,70 @@ 112.50 File testDir = new File(System.getProperty("test.classes", ".")); 112.51 // test a .class file 112.52 test(new File(testDir, "Test.class"), 112.53 - new String[] {"java.lang", "p"}); 112.54 + new String[] {"java.lang", "p"}, 112.55 + new String[] {"compact1", "not found"}); 112.56 // test a directory 112.57 test(new File(testDir, "p"), 112.58 - new String[] {"java.lang", "java.util"}); 112.59 + new String[] {"java.lang", "java.util", "java.lang.management"}, 112.60 + new String[] {"compact1", "compact1", "compact3"}); 112.61 // test class-level dependency output 112.62 test(new File(testDir, "Test.class"), 112.63 new String[] {"java.lang.Object", "p.Foo"}, 112.64 + new String[] {"compact1", "not found"}, 112.65 new String[] {"-V", "class"}); 112.66 // test -p option 112.67 test(new File(testDir, "Test.class"), 112.68 new String[] {"p.Foo"}, 112.69 + new String[] {"not found"}, 112.70 new String[] {"--verbose-level=class", "-p", "p"}); 112.71 // test -e option 112.72 test(new File(testDir, "Test.class"), 112.73 new String[] {"p.Foo"}, 112.74 + new String[] {"not found"}, 112.75 new String[] {"-V", "class", "-e", "p\\..*"}); 112.76 test(new File(testDir, "Test.class"), 112.77 new String[] {"java.lang"}, 112.78 + new String[] {"compact1"}, 112.79 new String[] {"-V", "package", "-e", "java\\.lang\\..*"}); 112.80 // test -classpath and wildcard options 112.81 test(null, 112.82 new String[] {"com.sun.tools.jdeps", "java.lang", "java.util", 112.83 - "java.util.regex", "java.io"}, 112.84 + "java.util.regex", "java.io", "java.nio.file", 112.85 + "java.lang.management"}, 112.86 + new String[] {(symbolFileExist? "not found" : "JDK internal API (classes)"), 112.87 + "compact1", "compact1", "compact1", 112.88 + "compact1", "compact1", "compact3"}, 112.89 new String[] {"--classpath", testDir.getPath(), "*"}); 112.90 - // -v shows intra-dependency 112.91 - test(new File(testDir, "Test.class"), 112.92 - new String[] {"java.lang.Object", "p.Foo"}, 112.93 - new String[] {"-v", "--classpath", testDir.getPath(), "Test.class"}); 112.94 + /* Temporary disable this test case. Test.class has a dependency 112.95 + * on java.lang.String on certain windows machine (8008479). 112.96 + // -v shows intra-dependency 112.97 + test(new File(testDir, "Test.class"), 112.98 + new String[] {"java.lang.Object", "p.Foo"}, 112.99 + new String[] {"compact1", testDir.getName()}, 112.100 + new String[] {"-v", "--classpath", testDir.getPath(), "Test.class"}); 112.101 + */ 112.102 return errors; 112.103 } 112.104 112.105 - void test(File file, String[] expect) { 112.106 - test(file, expect, new String[0]); 112.107 + void test(File file, String[] expect, String[] profiles) { 112.108 + test(file, expect, profiles, new String[0]); 112.109 } 112.110 112.111 - void test(File file, String[] expect, String[] options) { 112.112 - String[] args; 112.113 + void test(File file, String[] expect, String[] profiles, String[] options) { 112.114 + List<String> args = new ArrayList<>(Arrays.asList(options)); 112.115 if (file != null) { 112.116 - args = Arrays.copyOf(options, options.length+1); 112.117 - args[options.length] = file.getPath(); 112.118 - } else { 112.119 - args = options; 112.120 + args.add(file.getPath()); 112.121 } 112.122 - String[] deps = jdeps(args); 112.123 - checkEqual("dependencies", expect, deps); 112.124 + List<String> argsWithDashP = new ArrayList<>(); 112.125 + argsWithDashP.add("-P"); 112.126 + argsWithDashP.addAll(args); 112.127 + // test without -P 112.128 + checkResult("dependencies", expect, jdeps(args.toArray(new String[0])).keySet()); 112.129 + // test with -P 112.130 + checkResult("profiles", expect, profiles, jdeps(argsWithDashP.toArray(new String[0]))); 112.131 } 112.132 112.133 - String[] jdeps(String... args) { 112.134 + Map<String,String> jdeps(String... args) { 112.135 StringWriter sw = new StringWriter(); 112.136 PrintWriter pw = new PrintWriter(sw); 112.137 System.err.println("jdeps " + Arrays.toString(args)); 112.138 @@ -112,12 +150,12 @@ 112.139 112.140 // Pattern used to parse lines 112.141 private static Pattern linePattern = Pattern.compile(".*\r?\n"); 112.142 - private static Pattern pattern = Pattern.compile("\\s+ -> (\\S+) +.*"); 112.143 + private static Pattern pattern = Pattern.compile("\\s+ -> (\\S+) +(.*)"); 112.144 112.145 // Use the linePattern to break the given String into lines, applying 112.146 // the pattern to each line to see if we have a match 112.147 - private static String[] findDeps(String out) { 112.148 - List<String> result = new ArrayList<>(); 112.149 + private static Map<String,String> findDeps(String out) { 112.150 + Map<String,String> result = new HashMap<>(); 112.151 Matcher lm = linePattern.matcher(out); // Line matcher 112.152 Matcher pm = null; // Pattern matcher 112.153 int lines = 0; 112.154 @@ -129,19 +167,41 @@ 112.155 else 112.156 pm.reset(cs); 112.157 if (pm.find()) 112.158 - result.add(pm.group(1)); 112.159 + result.put(pm.group(1), pm.group(2).trim()); 112.160 if (lm.end() == out.length()) 112.161 break; 112.162 } 112.163 - return result.toArray(new String[0]); 112.164 + return result; 112.165 } 112.166 112.167 - void checkEqual(String label, String[] expect, String[] found) { 112.168 - Set<String> s1 = new HashSet<>(Arrays.asList(expect)); 112.169 - Set<String> s2 = new HashSet<>(Arrays.asList(found)); 112.170 + void checkResult(String label, String[] expect, Collection<String> found) { 112.171 + List<String> list = Arrays.asList(expect); 112.172 + if (!isEqual(list, found)) 112.173 + error("Unexpected " + label + " found: '" + found + "', expected: '" + list + "'"); 112.174 + } 112.175 112.176 - if (!s1.equals(s2)) 112.177 - error("Unexpected " + label + " found: '" + s2 + "', expected: '" + s1 + "'"); 112.178 + void checkResult(String label, String[] expect, String[] profiles, Map<String,String> result) { 112.179 + if (expect.length != profiles.length) 112.180 + error("Invalid expected names and profiles"); 112.181 + 112.182 + // check the dependencies 112.183 + checkResult(label, expect, result.keySet()); 112.184 + // check profile information 112.185 + checkResult(label, profiles, result.values()); 112.186 + for (int i=0; i < expect.length; i++) { 112.187 + String profile = result.get(expect[i]); 112.188 + if (!profile.equals(profiles[i])) 112.189 + error("Unexpected profile: '" + profile + "', expected: '" + profiles[i] + "'"); 112.190 + } 112.191 + } 112.192 + 112.193 + boolean isEqual(List<String> expected, Collection<String> found) { 112.194 + if (expected.size() != found.size()) 112.195 + return false; 112.196 + 112.197 + List<String> list = new ArrayList<>(found); 112.198 + list.removeAll(expected); 112.199 + return list.isEmpty(); 112.200 } 112.201 112.202 void error(String msg) {
113.1 --- a/test/tools/jdeps/p/Foo.java Thu Mar 21 10:43:39 2013 -0700 113.2 +++ b/test/tools/jdeps/p/Foo.java Tue Mar 26 12:07:45 2013 -0700 113.3 @@ -31,5 +31,7 @@ 113.4 } 113.5 113.6 public Foo() { 113.7 + // compact3 113.8 + java.lang.management.ManagementFactory.getRuntimeMXBean(); 113.9 } 113.10 }
114.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 114.2 +++ b/test/tools/jdeps/profiles.properties Tue Mar 26 12:07:45 2013 -0700 114.3 @@ -0,0 +1,263 @@ 114.4 +# This properties file is used for testing a JDK development build. 114.5 +# No need to keep this properties file up to date as long as it covers 114.6 +# the APIs used by the jdeps regression test. 114.7 +profile.1.name = compact1 114.8 +profile.1.packages = \ 114.9 + java.io \ 114.10 + java.lang \ 114.11 + java.lang.annotation \ 114.12 + java.lang.invoke \ 114.13 + java.lang.ref \ 114.14 + java.lang.reflect \ 114.15 + java.math \ 114.16 + java.net \ 114.17 + java.nio \ 114.18 + java.nio.channels \ 114.19 + java.nio.channels.spi \ 114.20 + java.nio.charset \ 114.21 + java.nio.charset.spi \ 114.22 + java.nio.file \ 114.23 + java.nio.file.attribute \ 114.24 + java.nio.file.spi \ 114.25 + java.security \ 114.26 + java.security.cert \ 114.27 + java.security.interfaces \ 114.28 + java.security.spec \ 114.29 + java.text \ 114.30 + java.text.spi \ 114.31 + java.util \ 114.32 + java.util.concurrent \ 114.33 + java.util.concurrent.atomic \ 114.34 + java.util.concurrent.locks \ 114.35 + java.util.jar \ 114.36 + java.util.logging \ 114.37 + java.util.regex \ 114.38 + java.util.spi \ 114.39 + java.util.zip \ 114.40 + javax.crypto \ 114.41 + javax.crypto.interfaces \ 114.42 + javax.crypto.spec \ 114.43 + javax.security.auth \ 114.44 + javax.security.auth.callback \ 114.45 + javax.security.auth.login \ 114.46 + javax.security.auth.spi \ 114.47 + javax.security.auth.x500 \ 114.48 + javax.net \ 114.49 + javax.net.ssl \ 114.50 + javax.security.cert \ 114.51 + \ 114.52 + com.sun.net.ssl \ 114.53 + com.sun.nio.file \ 114.54 + com.sun.nio.sctp \ 114.55 + com.sun.security.auth \ 114.56 + com.sun.security.auth.login 114.57 + 114.58 +profile.2.name = compact2 114.59 +profile.2.packages = \ 114.60 + java.sql \ 114.61 + javax.sql \ 114.62 + javax.xml \ 114.63 + javax.xml.datatype \ 114.64 + javax.xml.namespace \ 114.65 + javax.xml.parsers \ 114.66 + javax.xml.stream \ 114.67 + javax.xml.stream.events \ 114.68 + javax.xml.stream.util \ 114.69 + javax.xml.transform \ 114.70 + javax.xml.transform.dom \ 114.71 + javax.xml.transform.sax \ 114.72 + javax.xml.transform.stax \ 114.73 + javax.xml.transform.stream \ 114.74 + javax.xml.validation \ 114.75 + javax.xml.xpath \ 114.76 + org.w3c.dom \ 114.77 + org.w3c.dom.bootstrap \ 114.78 + org.w3c.dom.events \ 114.79 + org.w3c.dom.ls \ 114.80 + org.xml.sax \ 114.81 + org.xml.sax.ext \ 114.82 + org.xml.sax.helpers \ 114.83 + java.rmi \ 114.84 + java.rmi.activation \ 114.85 + java.rmi.dgc \ 114.86 + java.rmi.registry \ 114.87 + java.rmi.server \ 114.88 + javax.rmi.ssl \ 114.89 + javax.transaction \ 114.90 + javax.transaction.xa \ 114.91 + \ 114.92 + com.sun.net.httpserver \ 114.93 + com.sun.net.httpserver.spi 114.94 + 114.95 +profile.3.name = compact3 114.96 +profile.3.packages = \ 114.97 + java.lang.instrument \ 114.98 + java.lang.management \ 114.99 + java.security.acl \ 114.100 + java.util.prefs \ 114.101 + javax.management \ 114.102 + javax.management.loading \ 114.103 + javax.management.modelmbean \ 114.104 + javax.management.monitor \ 114.105 + javax.management.openmbean \ 114.106 + javax.management.relation \ 114.107 + javax.management.remote \ 114.108 + javax.management.remote.rmi \ 114.109 + javax.management.timer \ 114.110 + javax.naming \ 114.111 + javax.naming.directory \ 114.112 + javax.naming.event \ 114.113 + javax.naming.ldap \ 114.114 + javax.naming.spi \ 114.115 + javax.sql.rowset \ 114.116 + javax.sql.rowset.serial \ 114.117 + javax.sql.rowset.spi \ 114.118 + javax.security.auth.kerberos \ 114.119 + javax.security.sasl \ 114.120 + javax.script \ 114.121 + javax.smartcardio \ 114.122 + javax.xml.crypto \ 114.123 + javax.xml.crypto.dom \ 114.124 + javax.xml.crypto.dsig \ 114.125 + javax.xml.crypto.dsig.dom \ 114.126 + javax.xml.crypto.dsig.keyinfo \ 114.127 + javax.xml.crypto.dsig.spec \ 114.128 + javax.annotation.processing \ 114.129 + javax.lang.model \ 114.130 + javax.lang.model.element \ 114.131 + javax.lang.model.type \ 114.132 + javax.lang.model.util \ 114.133 + javax.tools \ 114.134 + javax.tools.annotation \ 114.135 + org.ietf.jgss \ 114.136 + \ 114.137 + com.sun.management \ 114.138 + com.sun.security.auth.callback \ 114.139 + com.sun.security.auth.module \ 114.140 + com.sun.security.jgss 114.141 + 114.142 +profile.4.name = Full JRE 114.143 +profile.4.packages = \ 114.144 + java.applet \ 114.145 + java.awt \ 114.146 + java.awt.color \ 114.147 + java.awt.datatransfer \ 114.148 + java.awt.dnd \ 114.149 + java.awt.dnd.peer \ 114.150 + java.awt.event \ 114.151 + java.awt.font \ 114.152 + java.awt.geom \ 114.153 + java.awt.im \ 114.154 + java.awt.im.spi \ 114.155 + java.awt.image \ 114.156 + java.awt.image.renderable \ 114.157 + java.awt.peer \ 114.158 + java.awt.print \ 114.159 + java.beans \ 114.160 + java.beans.beancontext \ 114.161 + javax.accessibility \ 114.162 + javax.imageio \ 114.163 + javax.imageio.event \ 114.164 + javax.imageio.metadata \ 114.165 + javax.imageio.plugins.bmp \ 114.166 + javax.imageio.plugins.jpeg \ 114.167 + javax.imageio.spi \ 114.168 + javax.imageio.stream \ 114.169 + javax.print \ 114.170 + javax.print.attribute \ 114.171 + javax.print.attribute.standard \ 114.172 + javax.print.event \ 114.173 + javax.sound.midi \ 114.174 + javax.sound.midi.spi \ 114.175 + javax.sound.sampled \ 114.176 + javax.sound.sampled.spi \ 114.177 + javax.swing \ 114.178 + javax.swing.border \ 114.179 + javax.swing.colorchooser \ 114.180 + javax.swing.event \ 114.181 + javax.swing.filechooser \ 114.182 + javax.swing.plaf \ 114.183 + javax.swing.plaf.basic \ 114.184 + javax.swing.plaf.metal \ 114.185 + javax.swing.plaf.multi \ 114.186 + javax.swing.plaf.nimbus \ 114.187 + javax.swing.plaf.synth \ 114.188 + javax.swing.table \ 114.189 + javax.swing.text \ 114.190 + javax.swing.text.html \ 114.191 + javax.swing.text.html.parser \ 114.192 + javax.swing.text.rtf \ 114.193 + javax.swing.tree \ 114.194 + javax.swing.undo \ 114.195 + javax.activation \ 114.196 + javax.jws \ 114.197 + javax.jws.soap \ 114.198 + javax.rmi \ 114.199 + javax.rmi.CORBA \ 114.200 + javax.xml.bind \ 114.201 + javax.xml.bind.annotation \ 114.202 + javax.xml.bind.annotation.adapters \ 114.203 + javax.xml.bind.attachment \ 114.204 + javax.xml.bind.helpers \ 114.205 + javax.xml.bind.util \ 114.206 + javax.xml.soap \ 114.207 + javax.xml.ws \ 114.208 + javax.xml.ws.handler \ 114.209 + javax.xml.ws.handler.soap \ 114.210 + javax.xml.ws.http \ 114.211 + javax.xml.ws.soap \ 114.212 + javax.xml.ws.spi \ 114.213 + javax.xml.ws.spi.http \ 114.214 + javax.xml.ws.wsaddressing \ 114.215 + javax.annotation \ 114.216 + org.omg.CORBA \ 114.217 + org.omg.CORBA.DynAnyPackage \ 114.218 + org.omg.CORBA.ORBPackage \ 114.219 + org.omg.CORBA.TypeCodePackage \ 114.220 + org.omg.CORBA.portable \ 114.221 + org.omg.CORBA_2_3 \ 114.222 + org.omg.CORBA_2_3.portable \ 114.223 + org.omg.CosNaming \ 114.224 + org.omg.CosNaming.NamingContextExtPackage \ 114.225 + org.omg.CosNaming.NamingContextPackage \ 114.226 + org.omg.Dynamic \ 114.227 + org.omg.DynamicAny \ 114.228 + org.omg.DynamicAny.DynAnyFactoryPackage \ 114.229 + org.omg.DynamicAny.DynAnyPackage \ 114.230 + org.omg.IOP \ 114.231 + org.omg.IOP.CodecFactoryPackage \ 114.232 + org.omg.IOP.CodecPackage \ 114.233 + org.omg.Messaging \ 114.234 + org.omg.PortableInterceptor \ 114.235 + org.omg.PortableInterceptor.ORBInitInfoPackage \ 114.236 + org.omg.PortableServer \ 114.237 + org.omg.PortableServer.CurrentPackage \ 114.238 + org.omg.PortableServer.POAManagerPackage \ 114.239 + org.omg.PortableServer.POAPackage \ 114.240 + org.omg.PortableServer.ServantLocatorPackage \ 114.241 + org.omg.PortableServer.portable \ 114.242 + org.omg.SendingContext \ 114.243 + org.omg.stub.java.rmi \ 114.244 + org.omg.stub.javax.management.remote.rmi 114.245 + 114.246 +# Remaining JDK supported API 114.247 +profile.5.name = JDK tools 114.248 +profile.5.packages = \ 114.249 + com.sun.jdi \ 114.250 + com.sun.jdi.connect \ 114.251 + com.sun.jdi.connect.spi \ 114.252 + com.sun.jdi.event \ 114.253 + com.sun.jdi.request \ 114.254 + com.sun.javadoc \ 114.255 + com.sun.tools.doclets \ 114.256 + com.sun.tools.doctree \ 114.257 + com.sun.source.tree \ 114.258 + com.sun.source.util \ 114.259 + com.sun.tools.attach \ 114.260 + com.sun.tools.attach.spi \ 114.261 + com.sun.tools.jconsole \ 114.262 + com.sun.tools.javac \ 114.263 + com.sun.tools.javah \ 114.264 + com.sun.tools.javap \ 114.265 + com.sun.tools.javadoc \ 114.266 + com.sun.servicetag