Merge jdk8-b84

Mon, 01 Apr 2013 21:42:15 -0700

author
lana
date
Mon, 01 Apr 2013 21:42:15 -0700
changeset 1661
cfb65ca92082
parent 1633
35cef52b0023
parent 1660
28e466e9cd34
child 1662
4a48f3173534
child 1671
46d2f144ebbd

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 28 10:55:14 2013 -0700
     1.2 +++ b/make/build.xml	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
     2.2 +++ b/make/netbeans/langtools/nbproject/project.xml	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
     3.2 +++ b/src/share/classes/com/sun/source/util/DocTreeScanner.java	Mon Apr 01 21:42:15 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&lt;Integer,Void&gt; {
     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 28 10:55:14 2013 -0700
     4.2 +++ b/src/share/classes/com/sun/source/util/JavacTask.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
     5.2 +++ b/src/share/classes/com/sun/source/util/Plugin.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
     6.2 +++ b/src/share/classes/com/sun/tools/classfile/Code_attribute.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
     7.2 +++ b/src/share/classes/com/sun/tools/classfile/Descriptor.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
     8.2 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/FrameOutputWriter.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
     9.2 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/PackageIndexFrameWriter.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    10.2 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/ProfileIndexFrameWriter.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    11.2 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/ProfilePackageIndexFrameWriter.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    12.2 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard_ja.properties	Mon Apr 01 21:42:15 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=&quot;{0}&quot;\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 28 10:55:14 2013 -0700
    13.2 +++ b/src/share/classes/com/sun/tools/doclets/formats/html/resources/standard_zh_CN.properties	Mon Apr 01 21:42:15 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=&quot;{0}&quot; \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 28 10:55:14 2013 -0700
    14.2 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/Configuration.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    15.2 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/AnnotationTypeBuilder.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    16.2 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_ja.properties	Mon Apr 01 21:42:15 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&nbsp; 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 28 10:55:14 2013 -0700
    17.2 +++ b/src/share/classes/com/sun/tools/doclets/internal/toolkit/resources/doclets_zh_CN.properties	Mon Apr 01 21:42:15 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&nbsp;   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 28 10:55:14 2013 -0700
    18.2 +++ b/src/share/classes/com/sun/tools/doclint/Checker.java	Mon Apr 01 21:42:15 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 28 10:55:14 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&eacute;
   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 28 10:55:14 2013 -0700
    20.2 +++ b/src/share/classes/com/sun/tools/javac/code/Printer.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    21.2 +++ b/src/share/classes/com/sun/tools/javac/code/Symbol.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    22.2 +++ b/src/share/classes/com/sun/tools/javac/code/Type.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    23.2 +++ b/src/share/classes/com/sun/tools/javac/code/TypeAnnotations.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    24.2 +++ b/src/share/classes/com/sun/tools/javac/code/Types.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    25.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Attr.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    26.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Check.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    27.2 +++ b/src/share/classes/com/sun/tools/javac/comp/DeferredAttr.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    28.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Infer.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    29.2 +++ b/src/share/classes/com/sun/tools/javac/comp/LambdaToMethod.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    30.2 +++ b/src/share/classes/com/sun/tools/javac/comp/Lower.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    31.2 +++ b/src/share/classes/com/sun/tools/javac/comp/MemberEnter.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    32.2 +++ b/src/share/classes/com/sun/tools/javac/jvm/Target.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    33.2 +++ b/src/share/classes/com/sun/tools/javac/model/AnnotationProxyMaker.java	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    35.2 +++ b/src/share/classes/com/sun/tools/javac/model/JavacElements.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    36.2 +++ b/src/share/classes/com/sun/tools/javac/model/JavacTypes.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    37.2 +++ b/src/share/classes/com/sun/tools/javac/resources/compiler_ja.properties	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    38.2 +++ b/src/share/classes/com/sun/tools/javac/resources/compiler_zh_CN.properties	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    39.2 +++ b/src/share/classes/com/sun/tools/javac/resources/javac_ja.properties	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    40.2 +++ b/src/share/classes/com/sun/tools/javac/resources/javac_zh_CN.properties	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    41.2 +++ b/src/share/classes/com/sun/tools/javac/sym/Profiles.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    42.2 +++ b/src/share/classes/com/sun/tools/javac/util/ArrayUtils.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    43.2 +++ b/src/share/classes/com/sun/tools/javac/util/RichDiagnosticFormatter.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    44.2 +++ b/src/share/classes/com/sun/tools/javadoc/ExecutableMemberDocImpl.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    45.2 +++ b/src/share/classes/com/sun/tools/javadoc/TypeMaker.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    46.2 +++ b/src/share/classes/com/sun/tools/javadoc/TypeVariableImpl.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    47.2 +++ b/src/share/classes/com/sun/tools/javadoc/resources/javadoc_ja.properties	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    48.2 +++ b/src/share/classes/com/sun/tools/javadoc/resources/javadoc_zh_CN.properties	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    49.2 +++ b/src/share/classes/com/sun/tools/javah/Util.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    50.2 +++ b/src/share/classes/com/sun/tools/javah/resources/l10n_ja.properties	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    51.2 +++ b/src/share/classes/com/sun/tools/javah/resources/l10n_zh_CN.properties	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    52.2 +++ b/src/share/classes/com/sun/tools/javap/StackMapWriter.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    53.2 +++ b/src/share/classes/com/sun/tools/jdeps/Analyzer.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    54.2 +++ b/src/share/classes/com/sun/tools/jdeps/ClassFileReader.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    55.2 +++ b/src/share/classes/com/sun/tools/jdeps/JdepsTask.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    56.2 +++ b/src/share/classes/com/sun/tools/jdeps/PlatformClassPath.java	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    58.2 +++ b/src/share/classes/com/sun/tools/jdeps/resources/jdeps.properties	Mon Apr 01 21:42:15 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 28 10:55:14 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 28 10:55:14 2013 -0700
    60.2 +++ b/src/share/classes/com/sun/tools/sjavac/Main.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    61.2 +++ b/src/share/classes/com/sun/tools/sjavac/comp/Dependencies.java	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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 &mdash;
  62.111 +     * representations of annotation types currently loaded into the
  62.112 +     * VM &mdash; 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 &mdash;
  62.165 +     * representations of annotation types currently loaded into the
  62.166 +     * VM &mdash; 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 28 10:55:14 2013 -0700
    63.2 +++ b/src/share/classes/javax/lang/model/element/Element.java	Mon Apr 01 21:42:15 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 &mdash;
   63.50 -     * representations of annotation types currently loaded into the
   63.51 -     * VM &mdash; 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 &mdash;
  63.102 -     * representations of annotation types currently loaded into the
  63.103 -     * VM &mdash; 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 28 10:55:14 2013 -0700
    64.2 +++ b/src/share/classes/javax/lang/model/element/ExecutableElement.java	Mon Apr 01 21:42:15 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 28 10:55:14 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 28 10:55:14 2013 -0700
    66.2 +++ b/src/share/classes/javax/lang/model/type/ExecutableType.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    67.2 +++ b/src/share/classes/javax/lang/model/type/TypeKind.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    68.2 +++ b/src/share/classes/javax/lang/model/type/TypeMirror.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    69.2 +++ b/src/share/classes/javax/lang/model/type/TypeVisitor.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    70.2 +++ b/src/share/classes/javax/lang/model/util/AbstractTypeVisitor6.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    71.2 +++ b/src/share/classes/javax/lang/model/util/Types.java	Mon Apr 01 21:42:15 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 &mdash;
   71.51 -     * representations of annotation types currently loaded into the
   71.52 -     * VM &mdash; 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 &mdash;
  71.106 -     * representations of annotation types currently loaded into the
  71.107 -     * VM &mdash; 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 28 10:55:14 2013 -0700
    72.2 +++ b/test/com/sun/javadoc/testProfiles/TestProfiles.java	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    74.2 +++ b/test/tools/javac/4846262/CheckEBCDICLocaleTest.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    75.2 +++ b/test/tools/javac/ClassFileModifiers/MemberModifiers.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    76.2 +++ b/test/tools/javac/ClassPathTest/ClassPathTest.java	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    79.2 +++ b/test/tools/javac/ProtectedInnerClass/ProtectedInnerClassesTest.java	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    88.2 +++ b/test/tools/javac/annotations/repeatingAnnotations/combo/Helper.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    89.2 +++ b/test/tools/javac/annotations/repeatingAnnotations/combo/TargetAnnoCombo.java	Mon Apr 01 21:42:15 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 28 10:55:14 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 28 10:55:14 2013 -0700
    91.2 +++ b/test/tools/javac/api/TestJavacTaskScanner.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    92.2 +++ b/test/tools/javac/diags/MessageFile.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    93.2 +++ b/test/tools/javac/diags/MessageInfo.java	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
    98.2 +++ b/test/tools/javac/lambda/TargetType28.out	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
   103.2 +++ b/test/tools/javac/lib/ToolBox.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
   104.2 +++ b/test/tools/javac/links/LinksTest.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
   105.2 +++ b/test/tools/javac/newlines/NewLineTest.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
   106.2 +++ b/test/tools/javac/profiles/ProfileOptionTest.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
   107.2 +++ b/test/tools/javah/6257087/T6257087.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
   108.2 +++ b/test/tools/javah/constMacroTest/ConstMacroTest.java	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
   111.2 +++ b/test/tools/javap/stackmap/StackmapTest.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
   112.2 +++ b/test/tools/jdeps/Basic.java	Mon Apr 01 21:42:15 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 28 10:55:14 2013 -0700
   113.2 +++ b/test/tools/jdeps/p/Foo.java	Mon Apr 01 21:42:15 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	Mon Apr 01 21:42:15 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

mercurial