Merge
authorlana
Mon, 24 Sep 2012 21:11:11 -0700
changeset 13848 a54f29461808
parent 13838 341f4267dab9 (current diff)
parent 13847 98fd1ba7dced (diff)
child 13849 24c7482b2758
Merge
--- a/langtools/src/share/classes/com/sun/javadoc/Doc.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/javadoc/Doc.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -76,7 +76,7 @@
 
     /**
      * Return comment as an array of tags. Includes inline tags
-     * (i.e. {&#64link <i>reference</i>} tags)  but not
+     * (i.e. {&#64;link <i>reference</i>} tags)  but not
      * block tags.
      * Each section of plain text is represented as a {@link Tag}
      * of {@linkplain Tag#kind() kind} "Text".
@@ -90,7 +90,7 @@
     /**
      * Return the first sentence of the comment as an array of tags.
      * Includes inline tags
-     * (i.e. {&#64link <i>reference</i>} tags)  but not
+     * (i.e. {&#64;link <i>reference</i>} tags)  but not
      * block tags.
      * Each section of plain text is represented as a {@link Tag}
      * of {@linkplain Tag#kind() kind} "Text".
--- a/langtools/src/share/classes/com/sun/javadoc/ExecutableMemberDoc.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/javadoc/ExecutableMemberDoc.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -90,8 +90,8 @@
     /**
      * Return the throws tags in this method.
      *
-     * @return an array of ThrowTag containing all <code>&#64exception</code>
-     * and <code>&#64throws</code> tags.
+     * @return an array of ThrowTag containing all <code>&#64;exception</code>
+     * and <code>&#64;throws</code> tags.
      */
     ThrowsTag[] throwsTags();
 
@@ -99,7 +99,7 @@
      * Return the param tags in this method, excluding the type
      * parameter tags.
      *
-     * @return an array of ParamTag containing all <code>&#64param</code> tags
+     * @return an array of ParamTag containing all <code>&#64;param</code> tags
      * corresponding to the parameters of this method.
      */
     ParamTag[] paramTags();
@@ -107,7 +107,7 @@
     /**
      * Return the type parameter tags in this method.
      *
-     * @return an array of ParamTag containing all <code>&#64param</code> tags
+     * @return an array of ParamTag containing all <code>&#64;param</code> tags
      * corresponding to the type parameters of this method.
      * @since 1.5
      */
--- a/langtools/src/share/classes/com/sun/javadoc/Tag.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/javadoc/Tag.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -127,7 +127,7 @@
     /**
      * Return the first sentence of the comment as an array of tags.
      * Includes inline tags
-     * (i.e. {&#64link <i>reference</i>} tags)  but not
+     * (i.e. {&#64;link <i>reference</i>} tags)  but not
      * block tags.
      * Each section of plain text is represented as a {@link Tag}
      * of kind "Text".
--- a/langtools/src/share/classes/com/sun/source/tree/LambdaExpressionTree.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/source/tree/LambdaExpressionTree.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -31,11 +31,11 @@
  * A tree node for a lambda expression.
  *
  * For example:
- * <pre>
+ * <pre>{@code
  *   ()->{}
  *   (List<String> ls)->ls.size()
  *   (x,y)-> { return x + y; }
- * </pre>
+ * }</pre>
  */
 public interface LambdaExpressionTree extends ExpressionTree {
 
--- a/langtools/src/share/classes/com/sun/source/tree/LineMap.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/source/tree/LineMap.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -38,8 +38,8 @@
      * @param line line number (beginning at 1)
      * @return     position of first character in line
      * @throws  IndexOutOfBoundsException
-     *           if <tt>lineNumber < 1</tt>
-     *           if <tt>lineNumber > no. of lines</tt>
+     *           if {@code lineNumber < 1}
+     *           if {@code lineNumber > no. of lines}
      */
     long getStartPosition(long line);
 
--- a/langtools/src/share/classes/com/sun/source/util/TreeScanner.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/source/util/TreeScanner.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -52,7 +52,7 @@
  *
  * <p>Here is an example to count the number of identifier nodes in a tree:
  * <pre>
- *   class CountIdentifiers extends TreeScanner<Integer,Void> {
+ *   class CountIdentifiers extends TreeScanner&lt;Integer,Void&gt; {
  *      {@literal @}Override
  *      public Integer visitIdentifier(IdentifierTree node, Void p) {
  *          return 1;
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/ConfigurationImpl.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/ConfigurationImpl.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -227,46 +227,44 @@
             String[] os = options[oi];
             String opt = os[0].toLowerCase();
             if (opt.equals("-footer")) {
-                footer =  os[1];
-            } else  if (opt.equals("-header")) {
-                header =  os[1];
-            } else  if (opt.equals("-packagesheader")) {
-                packagesheader =  os[1];
-            } else  if (opt.equals("-doctitle")) {
-                doctitle =  os[1];
-            } else  if (opt.equals("-windowtitle")) {
-                windowtitle =  os[1];
-            } else  if (opt.equals("-top")) {
-                top =  os[1];
-            } else  if (opt.equals("-bottom")) {
-                bottom =  os[1];
-            } else  if (opt.equals("-helpfile")) {
-                helpfile =  os[1];
-            } else  if (opt.equals("-stylesheetfile")) {
-                stylesheetfile =  os[1];
-            } else  if (opt.equals("-charset")) {
-                charset =  os[1];
+                footer = os[1];
+            } else if (opt.equals("-header")) {
+                header = os[1];
+            } else if (opt.equals("-packagesheader")) {
+                packagesheader = os[1];
+            } else if (opt.equals("-doctitle")) {
+                doctitle = os[1];
+            } else if (opt.equals("-windowtitle")) {
+                windowtitle = os[1];
+            } else if (opt.equals("-top")) {
+                top = os[1];
+            } else if (opt.equals("-bottom")) {
+                bottom = os[1];
+            } else if (opt.equals("-helpfile")) {
+                helpfile = os[1];
+            } else if (opt.equals("-stylesheetfile")) {
+                stylesheetfile = os[1];
+            } else if (opt.equals("-charset")) {
+                charset = os[1];
             } else if (opt.equals("-xdocrootparent")) {
                 docrootparent = os[1];
-            } else  if (opt.equals("-nohelp")) {
+            } else if (opt.equals("-nohelp")) {
                 nohelp = true;
-            } else  if (opt.equals("-splitindex")) {
+            } else if (opt.equals("-splitindex")) {
                 splitindex = true;
-            } else  if (opt.equals("-noindex")) {
+            } else if (opt.equals("-noindex")) {
                 createindex = false;
-            } else  if (opt.equals("-use")) {
+            } else if (opt.equals("-use")) {
                 classuse = true;
-            } else  if (opt.equals("-notree")) {
+            } else if (opt.equals("-notree")) {
                 createtree = false;
-            } else  if (opt.equals("-nodeprecatedlist")) {
+            } else if (opt.equals("-nodeprecatedlist")) {
                 nodeprecatedlist = true;
-            } else  if (opt.equals("-nosince")) {
-                nosince = true;
-            } else  if (opt.equals("-nonavbar")) {
+            } else if (opt.equals("-nonavbar")) {
                 nonavbar = true;
-            } else  if (opt.equals("-nooverview")) {
+            } else if (opt.equals("-nooverview")) {
                 nooverview = true;
-            } else  if (opt.equals("-overview")) {
+            } else if (opt.equals("-overview")) {
                 overview = true;
             }
         }
--- a/langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/formats/html/HtmlDocletWriter.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1998, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -1260,7 +1260,7 @@
     /**
      * Print the Html table tag for the index summary tables. The table tag
      * printed is
-     * &lt;TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%">
+     * {@code <TABLE BORDER="1" CELLPADDING="3" CELLSPACING="0" WIDTH="100%"> }
      */
     public void tableIndexSummary() {
         table(1, "100%", 3, 0);
@@ -1548,7 +1548,7 @@
     }
 
     /**
-     * Print the heading in Html &lt;H2> format.
+     * Print the heading in Html {@literal <H2>} format.
      *
      * @param str The Header string.
      */
@@ -2416,15 +2416,15 @@
      * <p>
      * Here is the algorithm used to fix the link:
      * <p>
-     * &lt;relative link&gt; => docRoot + &lt;relative path to file&gt; + &lt;relative link&gt;
+     * {@literal <relative link> => docRoot + <relative path to file> + <relative link> }
      * <p>
      * For example, suppose com.sun.javadoc.RootDoc has this link:
-     * &lt;a href="package-summary.html"&gt;The package Page&lt;/a&gt;
+     * {@literal <a href="package-summary.html">The package Page</a> }
      * <p>
      * If this link appeared in the index, we would redirect
      * the link like this:
      *
-     * &lt;a href="./com/sun/javadoc/package-summary.html"&gt;The package Page&lt;/a&gt;
+     * {@literal <a href="./com/sun/javadoc/package-summary.html">The package Page</a>}
      *
      * @param doc the Doc object whose documentation is being written.
      * @param text the text being written.
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/Configuration.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/Configuration.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -352,19 +352,21 @@
             if (opt.equals("-d")) {
                 destDirName = addTrailingFileSep(os[1]);
                 docFileDestDirName = destDirName;
-            } else  if (opt.equals("-docfilessubdirs")) {
+            } else if (opt.equals("-docfilessubdirs")) {
                 copydocfilesubdirs = true;
-            } else  if (opt.equals("-docencoding")) {
+            } else if (opt.equals("-docencoding")) {
                 docencoding = os[1];
-            } else  if (opt.equals("-encoding")) {
+            } else if (opt.equals("-encoding")) {
                 encoding = os[1];
-            } else  if (opt.equals("-author")) {
+            } else if (opt.equals("-author")) {
                 showauthor = true;
-            } else  if (opt.equals("-version")) {
+            } else if (opt.equals("-nosince")) {
+                nosince = true;
+            } else if (opt.equals("-version")) {
                 showversion = true;
-            } else  if (opt.equals("-nodeprecated")) {
+            } else if (opt.equals("-nodeprecated")) {
                 nodeprecated = true;
-            } else  if (opt.equals("-sourcepath")) {
+            } else if (opt.equals("-sourcepath")) {
                 sourcepath = os[1];
             } else if (opt.equals("-classpath") &&
                        sourcepath.length() == 0) {
@@ -388,17 +390,17 @@
                     message.warning("doclet.sourcetab_warning");
                     sourcetab = DocletConstants.DEFAULT_TAB_STOP_LENGTH;
                 }
-            } else  if (opt.equals("-notimestamp")) {
+            } else if (opt.equals("-notimestamp")) {
                 notimestamp = true;
-            } else  if (opt.equals("-nocomment")) {
+            } else if (opt.equals("-nocomment")) {
                 nocomment = true;
             } else if (opt.equals("-tag") || opt.equals("-taglet")) {
                 customTagStrs.add(os);
             } else if (opt.equals("-tagletpath")) {
                 tagletpath = os[1];
-            } else  if (opt.equals("-keywords")) {
+            } else if (opt.equals("-keywords")) {
                 keywords = true;
-            } else  if (opt.equals("-serialwarn")) {
+            } else if (opt.equals("-serialwarn")) {
                 serialwarn = true;
             } else if (opt.equals("-group")) {
                 group.checkPackageGroups(os[1], os[2]);
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ClassBuilder.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/builders/ClassBuilder.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2003, 2010, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -125,7 +125,7 @@
     }
 
      /**
-      * Handles the &lt;ClassDoc> tag.
+      * Handles the {@literal <ClassDoc>} tag.
       *
       * @param node the XML element that specifies which components to document
       * @param contentTree the content tree to which the documentation will be added
--- a/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/TagletManager.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/doclets/internal/toolkit/taglets/TagletManager.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -600,6 +600,7 @@
         ArrayList<Taglet> mTags = new ArrayList<Taglet>(customTags.size());
         ArrayList<Taglet> iTags = new ArrayList<Taglet>(customTags.size());
         ArrayList<Taglet> oTags = new ArrayList<Taglet>(customTags.size());
+        ArrayList<Taglet> sTags = new ArrayList<Taglet>();
         Taglet current;
         while (it.hasNext()) {
             current = it.next();
@@ -634,11 +635,12 @@
         inlineTags = iTags.toArray(new Taglet[] {});
 
         //Init the serialized form tags
-        serializedFormTags = new Taglet[4];
-        serializedFormTags[0] = customTags.get("serialData");
-        serializedFormTags[1] = customTags.get("throws");
-        serializedFormTags[2] = customTags.get("since");
-        serializedFormTags[3] = customTags.get("see");
+        sTags.add(customTags.get("serialData"));
+        sTags.add(customTags.get("throws"));
+        if (!nosince)
+            sTags.add(customTags.get("since"));
+        sTags.add(customTags.get("see"));
+        serializedFormTags = sTags.toArray(new Taglet[] {});
     }
 
     /**
--- a/langtools/src/share/classes/com/sun/tools/javac/api/JavacTrees.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/api/JavacTrees.java	Mon Sep 24 21:11:11 2012 -0700
@@ -117,7 +117,7 @@
         return instance;
     }
 
-    private JavacTrees(Context context) {
+    protected JavacTrees(Context context) {
         context.put(JavacTrees.class, this);
         init(context);
     }
@@ -286,7 +286,7 @@
 
 
         JCCompilationUnit unit = (JCCompilationUnit) path.getCompilationUnit();
-        Copier copier = new Copier(treeMaker.forToplevel(unit));
+        Copier copier = createCopier(treeMaker.forToplevel(unit));
 
         Env<AttrContext> env = null;
         JCMethodDecl method = null;
@@ -372,10 +372,10 @@
     /**
      * Makes a copy of a tree, noting the value resulting from copying a particular leaf.
      **/
-    static class Copier extends TreeCopier<JCTree> {
+    protected static class Copier extends TreeCopier<JCTree> {
         JCTree leafCopy = null;
 
-        Copier(TreeMaker M) {
+        protected Copier(TreeMaker M) {
             super(M);
         }
 
@@ -388,6 +388,10 @@
         }
     }
 
+    protected Copier createCopier(TreeMaker maker) {
+        return new Copier(maker);
+    }
+
     /**
      * Gets the original type from the ErrorType object.
      * @param errorType The errorType for which we want to get the original type.
--- a/langtools/src/share/classes/com/sun/tools/javac/code/Symtab.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Symtab.java	Mon Sep 24 21:11:11 2012 -0700
@@ -251,7 +251,8 @@
     }
 
     /** Enter a binary operation, as above but with two opcodes,
-     *  which get encoded as (opcode1 << ByteCodeTags.preShift) + opcode2.
+     *  which get encoded as
+     *  {@code (opcode1 << ByteCodeTags.preShift) + opcode2 }.
      *  @param opcode1     First opcode.
      *  @param opcode2     Second opcode.
      */
--- a/langtools/src/share/classes/com/sun/tools/javac/code/Type.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/code/Type.java	Mon Sep 24 21:11:11 2012 -0700
@@ -692,7 +692,7 @@
         /** A class type is raw if it misses some
          *  of its type parameter sections.
          *  After validation, this is equivalent to:
-         *  allparams.isEmpty() && tsym.type.allparams.nonEmpty();
+         *  {@code allparams.isEmpty() && tsym.type.allparams.nonEmpty(); }
          */
         public boolean isRaw() {
             return
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Annotate.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Annotate.java	Mon Sep 24 21:11:11 2012 -0700
@@ -26,7 +26,6 @@
 package com.sun.tools.javac.comp;
 
 import java.util.Map;
-import java.util.Objects;
 
 import com.sun.tools.javac.util.*;
 import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition;
@@ -151,10 +150,10 @@
                                        Map<Symbol.TypeSymbol, ListBuffer<Attribute.Compound>> annotated,
                                        Map<Attribute.Compound, JCDiagnostic.DiagnosticPosition> pos,
                                        Log log) {
-            Objects.requireNonNull(env);
-            Objects.requireNonNull(annotated);
-            Objects.requireNonNull(pos);
-            Objects.requireNonNull(log);
+            Assert.checkNonNull(env);
+            Assert.checkNonNull(annotated);
+            Assert.checkNonNull(pos);
+            Assert.checkNonNull(log);
 
             this.env = env;
             this.annotated = annotated;
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Check.java	Mon Sep 24 21:11:11 2012 -0700
@@ -2373,9 +2373,12 @@
         tree.accept(new AnnotationValidator());
     }
 
-    /** Annotation types are restricted to primitives, String, an
+    /**
+     *  {@literal
+     *  Annotation types are restricted to primitives, String, an
      *  enum, an annotation, Class, Class<?>, Class<? extends
      *  Anything>, arrays of the preceding.
+     *  }
      */
     void validateAnnotationType(JCTree restype) {
         // restype may be null if an error occurred, so don't bother validating it
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Enter.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Enter.java	Mon Sep 24 21:11:11 2012 -0700
@@ -77,12 +77,12 @@
  *
  *  <p>Classes migrate from one phase to the next via queues:
  *
- *  <pre>
+ *  <pre>{@literal
  *  class enter -> (Enter.uncompleted)         --> member enter (1)
  *              -> (MemberEnter.halfcompleted) --> member enter (2)
  *              -> (Todo)                      --> attribute
  *                                              (only for toplevel classes)
- *  </pre>
+ *  }</pre>
  *
  *  <p><b>This is NOT part of any supported API.
  *  If you write code that depends on this, you do so at your own risk.
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Lower.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Lower.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1449,7 +1449,7 @@
             return access(v, make.at(pos).Ident(v), null, false);
         }
 
-    /** Construct a tree simulating the expression <C.this>.
+    /** Construct a tree simulating the expression {@code C.this}.
      *  @param pos           The source code position to be used for the tree.
      *  @param c             The qualifier class.
      */
@@ -1623,7 +1623,7 @@
     }
 
     /** Construct a tree that represents the outer instance
-     *  <C.this>. Never pick the current `this'.
+     *  {@code C.this}. Never pick the current `this'.
      *  @param pos           The source code position to be used for the tree.
      *  @param c             The qualifier class.
      */
@@ -1661,7 +1661,7 @@
     }
 
     /** Construct a tree that represents the closest outer instance
-     *  <C.this> such that the given symbol is a member of C.
+     *  {@code C.this} such that the given symbol is a member of C.
      *  @param pos           The source code position to be used for the tree.
      *  @param sym           The accessed symbol.
      *  @param preciseMatch  should we accept a type that is a subtype of
@@ -1713,7 +1713,7 @@
         return tree;
     }
 
-    /** Return tree simulating the assignment <this.name = name>, where
+    /** Return tree simulating the assignment {@code this.name = name}, where
      *  name is the name of a free variable.
      */
     JCStatement initField(int pos, Name name) {
@@ -1730,7 +1730,7 @@
                     make.Ident(rhs)).setType(lhs.erasure(types)));
     }
 
-    /** Return tree simulating the assignment <this.this$n = this$n>.
+    /** Return tree simulating the assignment {@code this.this$n = this$n}.
      */
     JCStatement initOuterThis(int pos) {
         VarSymbol rhs = outerThisStack.head;
@@ -3194,7 +3194,7 @@
          *
          * (where arrayexpr is of an array type) gets translated to
          *
-         * <pre>
+         * <pre>{@code
          *     for ( { arraytype #arr = arrayexpr;
          *             int #len = array.length;
          *             int #i = 0; };
@@ -3202,7 +3202,7 @@
          *         T v = arr$[#i];
          *         stmt;
          *     }
-         * </pre>
+         * }</pre>
          *
          * where #arr, #len, and #i are freshly named synthetic local variables.
          */
@@ -3272,14 +3272,14 @@
          *     for ( T v : coll ) stmt ;
          * </pre>
          *
-         * (where coll implements Iterable<? extends T>) gets translated to
+         * (where coll implements {@code Iterable<? extends T>}) gets translated to
          *
-         * <pre>
+         * <pre>{@code
          *     for ( Iterator<? extends T> #i = coll.iterator(); #i.hasNext(); ) {
          *         T v = (T) #i.next();
          *         stmt;
          *     }
-         * </pre>
+         * }</pre>
          *
          * where #i is a freshly named synthetic local variable.
          */
--- a/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/comp/Resolve.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1516,7 +1516,7 @@
     /** If `sym' is a bad symbol: report error and return errSymbol
      *  else pass through unchanged,
      *  additional arguments duplicate what has been used in trying to find the
-     *  symbol (--> flyweight pattern). This improves performance since we
+     *  symbol {@literal (--> flyweight pattern)}. This improves performance since we
      *  expect misses to happen frequently.
      *
      *  @param sym       The symbol that was found, or a ResolveError.
@@ -1903,9 +1903,9 @@
 
     /** This method scans all the constructor symbol in a given class scope -
      *  assuming that the original scope contains a constructor of the kind:
-     *  Foo(X x, Y y), where X,Y are class type-variables declared in Foo,
+     *  {@code Foo(X x, Y y)}, where X,Y are class type-variables declared in Foo,
      *  a method check is executed against the modified constructor type:
-     *  <X,Y>Foo<X,Y>(X x, Y y). This is crucial in order to enable diamond
+     *  {@code <X,Y>Foo<X,Y>(X x, Y y)}. This is crucial in order to enable diamond
      *  inference. The inferred return type of the synthetic constructor IS
      *  the inferred type for the diamond operator.
      */
@@ -2223,7 +2223,7 @@
 
         /**
          * A name designates an operator if it consists
-         * of a non-empty sequence of operator symbols +-~!/*%&|^<>=
+         * of a non-empty sequence of operator symbols {@literal +-~!/*%&|^<>= }
          */
         boolean isOperator(Name name) {
             int i = 0;
--- a/langtools/src/share/classes/com/sun/tools/javac/jvm/ByteCodes.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/ByteCodes.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -277,7 +277,7 @@
 
     /** Shift and mask constants for shifting prefix instructions.
      *  a pair of instruction codes such as LCMP ; IFEQ is encoded
-     *  in Symtab as (LCMP << preShift) + IFEQ.
+     *  in Symtab as {@literal (LCMP << preShift) + IFEQ }.
      */
     int preShift        = 9;
     int preMask         = (1 << preShift) - 1;
--- a/langtools/src/share/classes/com/sun/tools/javac/jvm/CRTable.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/CRTable.java	Mon Sep 24 21:11:11 2012 -0700
@@ -162,7 +162,7 @@
     }
 
     /** Source file positions in CRT are integers in the format:
-     *  line-number << LINESHIFT + column-number
+     *  {@literal line-number << LINESHIFT + column-number }
      */
      private int encodePosition(int pos, Position.LineMap lineMap, Log log) {
          int line = lineMap.getLineNumber(pos);
--- a/langtools/src/share/classes/com/sun/tools/javac/jvm/ClassFile.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/ClassFile.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -45,7 +45,7 @@
  *     classSignature         ::= [ typeparams ] supertype { interfacetype }
  *  </pre>
  *  <p>The type syntax in signatures is extended as follows:
- *  <pre>
+ *  <pre>{@literal
  *     type       ::= ... | classtype | methodtype | typevar
  *     classtype  ::= classsig { '.' classsig }
  *     classig    ::= 'L' name [typeargs] ';'
@@ -54,7 +54,7 @@
  *     typeargs   ::= '<' type { type } '>'
  *     typeparams ::= '<' typeparam { typeparam } '>'
  *     typeparam  ::= name ':' type
- *  </pre>
+ *  }</pre>
  *  <p>This class defines constants used in class files as well
  *  as routines to convert between internal ``.'' and external ``/''
  *  separators in class names.
--- a/langtools/src/share/classes/com/sun/tools/javac/jvm/Code.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/Code.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -122,7 +122,7 @@
 
 /*---------- internal fields: --------------- */
 
-    /** Are we generating code with jumps >= 32K?
+    /** Are we generating code with jumps &ge; 32K?
      */
     public boolean fatcode;
 
@@ -1077,13 +1077,15 @@
             while (cp % incr != 0) emitop0(nop);
     }
 
-    /** Place a byte into code at address pc. Pre: pc + 1 <= cp.
+    /** Place a byte into code at address pc.
+     *  Pre: {@literal pc + 1 <= cp }.
      */
     private void put1(int pc, int op) {
         code[pc] = (byte)op;
     }
 
-    /** Place two bytes into code at address pc. Pre: pc + 2 <= cp.
+    /** Place two bytes into code at address pc.
+     *  Pre: {@literal pc + 2 <= cp }.
      */
     private void put2(int pc, int od) {
         // pre: pc + 2 <= cp
@@ -1091,7 +1093,8 @@
         put1(pc+1, od);
     }
 
-    /** Place four  bytes into code at address pc. Pre: pc + 4 <= cp.
+    /** Place four  bytes into code at address pc.
+     *  Pre: {@literal pc + 4 <= cp }.
      */
     public void put4(int pc, int od) {
         // pre: pc + 4 <= cp
@@ -1990,7 +1993,7 @@
         nextreg = max_locals;
     }
 
-    /** End scopes of all variables with registers >= first.
+    /** End scopes of all variables with registers &ge; first.
      */
     public void endScopes(int first) {
         int prevNextReg = nextreg;
--- a/langtools/src/share/classes/com/sun/tools/javac/jvm/Gen.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/jvm/Gen.java	Mon Sep 24 21:11:11 2012 -0700
@@ -247,10 +247,10 @@
     /** Construct a symbol to reflect the qualifying type that should
      *  appear in the byte code as per JLS 13.1.
      *
-     *  For target >= 1.2: Clone a method with the qualifier as owner (except
+     *  For {@literal target >= 1.2}: Clone a method with the qualifier as owner (except
      *  for those cases where we need to work around VM bugs).
      *
-     *  For target <= 1.1: If qualified variable or method is defined in a
+     *  For {@literal target <= 1.1}: If qualified variable or method is defined in a
      *  non-accessible class, clone it with the qualifier class as owner.
      *
      *  @param sym    The accessed symbol
--- a/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/parser/JavacParser.java	Mon Sep 24 21:11:11 2012 -0700
@@ -670,6 +670,7 @@
     }
 
     /**
+     *  {@literal
      *  Expression = Expression1 [ExpressionRest]
      *  ExpressionRest = [AssignmentOperator Expression1]
      *  AssignmentOperator = "=" | "+=" | "-=" | "*=" | "/=" |
@@ -679,6 +680,7 @@
      *  TypeNoParams = TypeNoParams1
      *  StatementExpression = Expression
      *  ConstantExpression = Expression
+     *  }
      */
     JCExpression term() {
         JCExpression t = term1();
@@ -884,9 +886,12 @@
             return opStack;
         }
 
-    /** Expression3    = PrefixOp Expression3
+    /**
+     *  Expression3    = PrefixOp Expression3
      *                 | "(" Expr | TypeNoParams ")" Expression3
      *                 | Primary {Selector} {PostfixOp}
+     *
+     *  {@literal
      *  Primary        = "(" Expression ")"
      *                 | Literal
      *                 | [TypeArguments] THIS [Arguments]
@@ -901,6 +906,8 @@
      *                   | "." ( CLASS | THIS | [TypeArguments] SUPER Arguments | NEW [TypeArguments] InnerCreator )
      *                   ]
      *                 | BasicType BracketsOpt "." CLASS
+     *  }
+     *
      *  PrefixOp       = "++" | "--" | "!" | "~" | "+" | "-"
      *  PostfixOp      = "++" | "--"
      *  Type3          = Ident { "." Ident } [TypeArguments] {TypeSelector} BracketsOpt
@@ -1453,7 +1460,10 @@
         return null;
     }
 
-    /**  TypeArguments  = "<" TypeArgument {"," TypeArgument} ">"
+    /**
+     *  {@literal
+     *  TypeArguments  = "<" TypeArgument {"," TypeArgument} ">"
+     *  }
      */
     List<JCExpression> typeArguments(boolean diamondAllowed) {
         if (token.kind == LT) {
@@ -1490,10 +1500,13 @@
         }
     }
 
-    /** TypeArgument = Type
+    /**
+     *  {@literal
+     *  TypeArgument = Type
      *               | "?"
      *               | "?" EXTENDS Type {"&" Type}
      *               | "?" SUPER Type
+     *  }
      */
     JCExpression typeArgument() {
         if (token.kind != QUES) return parseType();
@@ -2991,7 +3004,10 @@
         return ts.toList();
     }
 
-    /** TypeParametersOpt = ["<" TypeParameter {"," TypeParameter} ">"]
+    /**
+     *  {@literal
+     *  TypeParametersOpt = ["<" TypeParameter {"," TypeParameter} ">"]
+     *  }
      */
     List<JCTypeParameter> typeParametersOpt() {
         if (token.kind == LT) {
@@ -3010,9 +3026,12 @@
         }
     }
 
-    /** TypeParameter = TypeVariable [TypeParameterBound]
+    /**
+     *  {@literal
+     *  TypeParameter = TypeVariable [TypeParameterBound]
      *  TypeParameterBound = EXTENDS Type {"&" Type}
      *  TypeVariable = Ident
+     *  }
      */
     JCTypeParameter typeParameter() {
         int pos = token.pos;
--- a/langtools/src/share/classes/com/sun/tools/javac/parser/Lexer.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/parser/Lexer.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -61,7 +61,8 @@
 
     /**
      * Splits the current token in two and return the first (splitted) token.
-     * For instance '<<<' is splitted into two tokens '<' and '<<' respectively,
+     * For instance {@literal '<<<'} is split into two tokens
+     * {@literal '<'} and {@literal '<<'} respectively,
      * and the latter is returned.
      */
     Token split();
--- a/langtools/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/processing/JavacProcessingEnvironment.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1072,8 +1072,10 @@
             Assert.checkNonNull(tokens);
             next.put(Tokens.tokensKey, tokens);
 
+            Log nextLog = Log.instance(next);
             // propogate the log's writers directly, instead of going through context
-            Log.instance(next).setWriters(log);
+            nextLog.setWriters(log);
+            nextLog.setSourceMap(log);
 
             JavaCompiler oldCompiler = JavaCompiler.instance(context);
             JavaCompiler nextCompiler = JavaCompiler.instance(next);
@@ -1362,7 +1364,8 @@
      * {@inheritdoc}
      *
      * Command line options suitable for presenting to annotation
-     * processors.  "-Afoo=bar" should be "-Afoo" => "bar".
+     * processors.
+     * {@literal "-Afoo=bar"} should be {@literal "-Afoo" => "bar"}.
      */
     public Map<String,String> getOptions() {
         return processorOptions;
--- a/langtools/src/share/classes/com/sun/tools/javac/tree/JCTree.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/tree/JCTree.java	Mon Sep 24 21:11:11 2012 -0700
@@ -2010,7 +2010,7 @@
     }
 
     /**
-     * A parameterized type, T<...>
+     * A parameterized type, {@literal T<...>}
      */
     public static class JCTypeApply extends JCExpression implements ParameterizedTypeTree {
         public JCExpression clazz;
--- a/langtools/src/share/classes/com/sun/tools/javac/tree/Pretty.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/tree/Pretty.java	Mon Sep 24 21:11:11 2012 -0700
@@ -256,7 +256,8 @@
         return pos;
     }
 
-    /** If type parameter list is non-empty, print it enclosed in "<...>" brackets.
+    /** If type parameter list is non-empty, print it enclosed in
+     *  {@literal "<...>"} brackets.
      */
     public void printTypeParameters(List<JCTypeParameter> trees) throws IOException {
         if (trees.nonEmpty()) {
--- a/langtools/src/share/classes/com/sun/tools/javac/tree/TreeMaker.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/tree/TreeMaker.java	Mon Sep 24 21:11:11 2012 -0700
@@ -87,7 +87,7 @@
 
     /** Create a tree maker with a given toplevel and FIRSTPOS as initial position.
      */
-    TreeMaker(JCCompilationUnit toplevel, Names names, Types types, Symtab syms) {
+    protected TreeMaker(JCCompilationUnit toplevel, Names names, Types types, Symtab syms) {
         this.pos = Position.FIRSTPOS;
         this.toplevel = toplevel;
         this.names = names;
--- a/langtools/src/share/classes/com/sun/tools/javac/util/Bits.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/Bits.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -127,7 +127,7 @@
             (bits[x >>> wordshift] & (1 << (x & wordmask))) != 0;
     }
 
-    /** this set = this set & xs.
+    /** {@literal this set = this set & xs}.
      */
     public Bits andSet(Bits xs) {
         sizeTo(xs.bits.length);
@@ -179,12 +179,12 @@
         return n - (x&1);
     }
 
-    /** Return the index of the least bit position >= x that is set.
+    /** Return the index of the least bit position &ge; x that is set.
      *  If none are set, returns -1.  This provides a nice way to iterate
      *  over the members of a bit set:
-     *  <pre>
+     *  <pre>{@code
      *  for (int i = bits.nextBit(0); i>=0; i = bits.nextBit(i+1)) ...
-     *  </pre>
+     *  }</pre>
      */
     public int nextBit(int x) {
         int windex = x >>> wordshift;
--- a/langtools/src/share/classes/com/sun/tools/javac/util/Context.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/Context.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -115,7 +115,10 @@
      * The underlying map storing the data.
      * We maintain the invariant that this table contains only
      * mappings of the form
-     * Key<T> -> T or Key<T> -> Factory<T> */
+     * {@literal Key<T> -> T }
+     * or
+     * {@literal Key<T> -> Factory<T> }
+     */
     private Map<Key<?>,Object> ht = new HashMap<Key<?>,Object>();
 
     /** Set the factory for the key in this context. */
--- a/langtools/src/share/classes/com/sun/tools/javac/util/Log.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/Log.java	Mon Sep 24 21:11:11 2012 -0700
@@ -301,6 +301,10 @@
         this.errWriter = other.errWriter;
     }
 
+    public void setSourceMap(Log other) {
+        this.sourceMap = other.sourceMap;
+    }
+
     /** Flush the logs
      */
     public void flush() {
--- a/langtools/src/share/classes/com/sun/tools/javac/util/Name.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/Name.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -43,28 +43,28 @@
     }
 
     /**
-     * @inheritDoc
+     * {@inheritDoc}
      */
     public boolean contentEquals(CharSequence cs) {
         return toString().equals(cs.toString());
     }
 
     /**
-     * @inheritDoc
+     * {@inheritDoc}
      */
     public int length() {
         return toString().length();
     }
 
     /**
-     * @inheritDoc
+     * {@inheritDoc}
      */
     public char charAt(int index) {
         return toString().charAt(index);
     }
 
     /**
-     * @inheritDoc
+     * {@inheritDoc}
      */
     public CharSequence subSequence(int start, int end) {
         return toString().subSequence(start, end);
@@ -142,6 +142,7 @@
 
     /** Return the string representation of this name.
      */
+    @Override
     public String toString() {
         return Convert.utf2string(getByteArray(), getByteOffset(), getByteLength());
     }
--- a/langtools/src/share/classes/com/sun/tools/javac/util/Position.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/util/Position.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1999, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1999, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -79,12 +79,12 @@
     }
 
     /** Encode line and column numbers in an integer as:
-     *  line-number << LINESHIFT + column-number
-     *  {@link Position.NOPOS represents an undefined position.
+     *  {@code line-number << LINESHIFT + column-number }.
+     *  {@link Position.NOPOS} represents an undefined position.
      *
      * @param  line  number of line (first is 1)
      * @param  col   number of character on line (first is 1)
-     * @return       an encoded position or {@link Position.NOPOS
+     * @return       an encoded position or {@link Position.NOPOS}
      *               if the line or column number is too big to
      *               represent in the encoded format
      * @throws IllegalArgumentException if line or col is less than 1
@@ -107,8 +107,8 @@
          * @param line number of line (first is 1)
          * @return     position of first character in line
          * @throws  ArrayIndexOutOfBoundsException
-         *           if <tt>lineNumber < 1</tt>
-         *           if <tt>lineNumber > no. of lines</tt>
+         *           if {@code lineNumber < 1}
+         *           if {@code lineNumber > no. of lines}
          */
         int getStartPosition(int line);
 
@@ -119,8 +119,8 @@
          *
          * @return  position of character
          * @throws  ArrayIndexOutOfBoundsException
-         *           if <tt>line < 1</tt>
-         *           if <tt>line > no. of lines</tt>
+         *           if {@code line < 1}
+         *           if {@code line > no. of lines}
          */
         int getPosition(int line, int column);
 
--- a/langtools/src/share/classes/com/sun/tools/javadoc/Comment.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javadoc/Comment.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -386,7 +386,7 @@
     }
 
     /**
-     * Recursively search for the string "{@" followed by
+     * Recursively search for the characters '{', '@', followed by
      * name of inline tag and white space,
      * if found
      *    return the index of the text following the white space.
--- a/langtools/src/share/classes/com/sun/tools/javadoc/DocImpl.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javadoc/DocImpl.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -138,7 +138,7 @@
     /**
      * Return the see also tags in this Doc item.
      *
-     * @return an array of SeeTag containing all &#64see tags.
+     * @return an array of SeeTag containing all &#64;see tags.
      */
     public SeeTag[] seeTags() {
         return comment().seeTags();
--- a/langtools/src/share/classes/com/sun/tools/javadoc/FieldDocImpl.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javadoc/FieldDocImpl.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -241,7 +241,7 @@
      * Return the serialField tags in this FieldDocImpl item.
      *
      * @return an array of <tt>SerialFieldTagImpl</tt> containing all
-     *         <code>&#64serialField</code> tags.
+     *         <code>&#64;serialField</code> tags.
      */
     public SerialFieldTag[] serialFieldTags() {
         return comment().serialFieldTags();
--- a/langtools/src/share/classes/com/sun/tools/javah/JavahTask.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javah/JavahTask.java	Mon Sep 24 21:11:11 2012 -0700
@@ -79,7 +79,7 @@
 
 /**
  * Javah generates support files for native methods.
- * Parse commandline options & Invokes javadoc to execute those commands.
+ * Parse commandline options and invokes javadoc to execute those commands.
  *
  * <p><b>This is NOT part of any supported API.
  * If you write code that depends on this, you do so at your own
--- a/langtools/src/share/classes/com/sun/tools/javap/JavapTask.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javap/JavapTask.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2009, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -374,8 +374,8 @@
         task_locale = locale;
     }
 
-    public void setLog(PrintWriter log) {
-        this.log = log;
+    public void setLog(Writer log) {
+        this.log = getPrintWriterForWriter(log);
     }
 
     public void setLog(OutputStream s) {
@@ -383,7 +383,7 @@
     }
 
     private static PrintWriter getPrintWriterForStream(OutputStream s) {
-        return new PrintWriter(s, true);
+        return new PrintWriter(s == null ? System.err : s, true);
     }
 
     private static PrintWriter getPrintWriterForWriter(Writer w) {
--- a/langtools/src/share/classes/javax/lang/model/util/Elements.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/javax/lang/model/util/Elements.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -79,12 +79,12 @@
      *
      * <p> A documentation comment of an element is a comment that
      * begins with "{@code /**}" , ends with a separate
-     * "<code>*&#47</code>", and immediately precedes the element,
+     * "<code>*&#47;</code>", and immediately precedes the element,
      * ignoring white space.  Therefore, a documentation comment
      * contains at least three"{@code *}" characters.  The text
      * returned for the documentation comment is a processed form of
      * the comment as it appears in source code.  The leading "{@code
-     * /**}" and trailing "<code>*&#47</code>" are removed.  For lines
+     * /**}" and trailing "<code>*&#47;</code>" are removed.  For lines
      * of the comment starting after the initial "{@code /**}",
      * leading white space characters are discarded as are any
      * consecutive "{@code *}" characters appearing after the white
--- a/langtools/src/share/classes/javax/tools/JavaCompiler.java	Thu Sep 20 13:45:59 2012 -0700
+++ b/langtools/src/share/classes/javax/tools/JavaCompiler.java	Mon Sep 24 21:11:11 2012 -0700
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2005, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -137,7 +137,7 @@
  *       StandardJavaFileManager fileManager = compiler.getStandardFileManager(diagnostics, null, null);
  *       compiler.getTask(null, fileManager, diagnostics, null, null, compilationUnits).call();
  *
- *       for (Diagnostic<? extends JavaFileObject> diagnostic : diagnostics.getDiagnostics())
+ *       for ({@code Diagnostic<? extends JavaFileObject>} diagnostic : diagnostics.getDiagnostics())
  *           System.out.format("Error on line %d in %s%n",
  *                             diagnostic.getLineNumber(),
  *                             diagnostic.getSource().toUri());
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/com/sun/javadoc/testSinceTag/TestSinceTag.java	Mon Sep 24 21:11:11 2012 -0700
@@ -0,0 +1,84 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug      7180906
+ * @summary  Test to make sure that the since tag works correctly
+ * @author   Bhavesh Patel
+ * @library  ../lib/
+ * @build    JavadocTester TestSinceTag
+ * @run main TestSinceTag
+ */
+
+public class TestSinceTag extends JavadocTester {
+
+    //Test information.
+    private static final String BUG_ID = "7180906";
+
+    //Javadoc arguments.
+    private static final String[] ARGS1 = new String[] {
+        "-d", BUG_ID, "-sourcepath", SRC_DIR, "pkg1"
+    };
+
+    private static final String[] ARGS2 = new String[] {
+        "-d", BUG_ID, "-sourcepath", SRC_DIR, "-nosince", "pkg1"
+    };
+
+    //Input for string search tests.
+    private static final String[][] TEST = {
+        {BUG_ID + FS + "pkg1" + FS + "C1.html",
+            "<dl><dt><span class=\"strong\">Since:</span></dt>" + NL +
+            "  <dd>JDK1.0</dd>"
+        },
+        {BUG_ID + FS + "serialized-form.html",
+            "<dl><dt><span class=\"strong\">Since:</span></dt>" + NL +
+            "  <dd>1.4</dd>"
+        }
+    };
+
+    /**
+     * The entry point of the test.
+     * @param args the array of command line arguments.
+     */
+    public static void main(String[] args) {
+        TestSinceTag tester = new TestSinceTag();
+        run(tester, ARGS1, TEST, NO_TEST);
+        run(tester, ARGS2, NO_TEST, TEST);
+        tester.printSummary();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getBugId() {
+        return BUG_ID;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getBugName() {
+        return getClass().getName();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/com/sun/javadoc/testSinceTag/pkg1/C1.java	Mon Sep 24 21:11:11 2012 -0700
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.  Oracle designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Oracle in the LICENSE file that accompanied this code.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+package pkg1;
+
+import java.io.IOException;
+import java.io.Serializable;
+
+/**
+ * A class comment for testing.
+ *
+ * @author      Bhavesh Patel
+ * @since       JDK1.0
+ */
+public class C1 implements Serializable {
+
+    /**
+     * This field indicates whether the C1 is undecorated.
+     *
+     * @see #setUndecorated(boolean)
+     * @since 1.4
+     * @serial
+     * @deprecated As of JDK version 1.5, replaced by
+     * {@link C1#setUndecorated(boolean) setUndecorated(boolean)}.
+     */
+    @Deprecated
+    public boolean undecorated = false;
+
+    /**
+     * This enum specifies the possible modal exclusion types.
+     *
+     * @since 1.6
+     */
+    public static enum ModalExclusionType {
+
+        /**
+         * No modal exclusion.
+         */
+        NO_EXCLUDE,
+        /**
+         * <code>APPLICATION_EXCLUDE</code> indicates that a top-level window
+         * won't be blocked by any application-modal dialogs. Also, it isn't
+         * blocked by document-modal dialogs from outside of its child hierarchy.
+         */
+        APPLICATION_EXCLUDE
+    };
+
+    /**
+     * Constructor.
+     *
+     * @param title the title
+     * @param test boolean value
+     * @exception IllegalArgumentException if the <code>owner</code>'s
+     *     <code>GraphicsConfiguration</code> is not from a screen device
+     * @exception HeadlessException
+     */
+    public C1(String title, boolean test) {
+    }
+
+    public C1(String title) {
+    }
+
+    /**
+     * Method comments.
+     * @param  undecorated <code>true</code> if no decorations are
+     *         to be enabled;
+     *         <code>false</code> if decorations are to be enabled.
+     * @see    #readObject()
+     * @since 1.4
+     */
+    public void setUndecorated(boolean undecorated) {
+        /* Make sure we don't run in the middle of peer creation.*/
+    }
+
+    /**
+     * @see #setUndecorated(boolean)
+     */
+    public void readObject() throws IOException {
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javac/api/EndPositions.java	Mon Sep 24 21:11:11 2012 -0700
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7196760
+ * @summary javac doesn't report Diagnostic end positions properly when
+ * an annotation processor is present
+ */
+
+import com.sun.source.tree.ClassTree;
+import com.sun.source.tree.CompilationUnitTree;
+import com.sun.source.tree.Tree;
+import com.sun.source.util.JavacTask;
+import com.sun.source.util.Trees;
+import java.io.IOException;
+import java.net.URI;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+import javax.annotation.processing.*;
+import javax.lang.model.*;
+import javax.lang.model.element.*;
+import javax.tools.JavaCompiler;
+import javax.tools.JavaFileObject;
+import javax.tools.SimpleJavaFileObject;
+import javax.tools.Diagnostic;
+import javax.tools.DiagnosticCollector;
+import static javax.tools.JavaFileObject.Kind.SOURCE;
+import javax.tools.ToolProvider;
+
+@SupportedAnnotationTypes("*")
+public class EndPositions extends AbstractProcessor {
+    public static void main(String... args) throws IOException {
+        class MyFileObject extends SimpleJavaFileObject {
+            MyFileObject() {
+                super(URI.create("myfo:///Test.java"), SOURCE);
+            }
+            @Override
+            public String getCharContent(boolean ignoreEncodingErrors) {
+                //      0         1         2         3
+                //      012345678901234567890123456789012345
+                return "class Test { String s = 1234; }";
+            }
+        }
+        JavaCompiler javac = ToolProvider.getSystemJavaCompiler();
+        List<JavaFileObject> compilationUnits =
+                Collections.<JavaFileObject>singletonList(new MyFileObject());
+        DiagnosticCollector<JavaFileObject> diagnostics = new DiagnosticCollector<JavaFileObject>();
+        List<String> options = Arrays.asList("-processor", EndPositions.class.getCanonicalName());
+        JavacTask task = (JavacTask)javac.getTask(null, null, diagnostics, options, null, compilationUnits);
+        boolean valid = task.call();
+        if (valid)
+            throw new AssertionError("Compilation succeeded unexpectedly");
+
+        List<Diagnostic<? extends JavaFileObject>> errors = diagnostics.getDiagnostics();
+        if (errors.size() != 1)
+            throw new AssertionError("Expected one error only, but found " + errors.size() + " errors");
+
+        Diagnostic<?> error = errors.get(0);
+        if (error.getStartPosition() >= error.getEndPosition())
+            throw new AssertionError("Expected start to be less than end position: start [" +
+                    error.getStartPosition() + "], end [" + error.getEndPosition() +"]");
+
+        System.out.println("All is good!");
+    }
+
+    @Override
+    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
+        return true;
+    }
+
+    @Override
+    public SourceVersion getSupportedSourceVersion() {
+        return SourceVersion.latest();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/langtools/test/tools/javap/T7186925.java	Mon Sep 24 21:11:11 2012 -0700
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
+ * or visit www.oracle.com if you need additional information or have any
+ * questions.
+ */
+
+/*
+ * @test
+ * @bug 7186925
+ * @summary JavapTask passes null to java.io.Writer
+ */
+
+import java.io.*;
+import java.util.*;
+import javax.tools.*;
+import com.sun.tools.javap.*;
+
+public class T7186925
+{
+    public static void main(String... args) {
+        new T7186925().run();
+    }
+
+    void run() {
+        verify("java.lang.Object");
+        if (errors > 0)
+            throw new Error(errors + " found.");
+    }
+
+    void verify(String className) {
+        try {
+            JavaFileManager fileManager = JavapFileManager.create(null, null);
+            JavaFileObject fo = fileManager.getJavaFileForInput(StandardLocation.PLATFORM_CLASS_PATH, className, JavaFileObject.Kind.CLASS);
+            if (fo == null) {
+                error("Can't find " + className);
+            } else {
+                JavapTask t = new JavapTask(null, fileManager, null);
+                t.handleOptions(new String[] { "-sysinfo", className });
+                JavapTask.ClassFileInfo cfInfo = t.read(fo);
+                expectEqual(cfInfo.cf.byteLength(), cfInfo.size);
+            }
+        } catch (NullPointerException ee) {
+            ee.printStackTrace();
+            error("Exception: " + ee);
+        } catch (Exception ee) {
+            System.err.println("Caught exception: " + ee);
+        }
+    }
+
+    void expectEqual(int found, int expected) {
+        if (found != expected)
+            error("bad value found: " + found + " expected: " + expected);
+    }
+
+    void error(String msg) {
+        System.err.println(msg);
+        errors++;
+    }
+
+    int errors;
+}