changeset 38:ff3d4fdf9c63

Merge
author tbell
date Wed, 28 May 2008 00:02:28 -0700
parents 4ef4bd318569 65a447c75d4b
children fc780e96a16a
files
diffstat 13 files changed, 187 insertions(+), 74 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/classes/com/sun/tools/javac/util/JavacFileManager.java	Thu May 22 09:37:57 2008 -0700
+++ b/src/share/classes/com/sun/tools/javac/util/JavacFileManager.java	Wed May 28 00:02:28 2008 -0700
@@ -1606,7 +1606,7 @@
         /** @deprecated see bug 6410637 */
         @Deprecated
         public String getPath() {
-            return entry.getName() + "(" + entry + ")";
+            return zipName + "(" + entry.getName() + ")";
         }
 
         public long getLastModified() {
--- a/src/share/classes/com/sun/tools/javac/zip/ZipFileIndex.java	Thu May 22 09:37:57 2008 -0700
+++ b/src/share/classes/com/sun/tools/javac/zip/ZipFileIndex.java	Wed May 28 00:02:28 2008 -0700
@@ -1,3 +1,28 @@
+/*
+ * Copyright 2007-2008 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
 package com.sun.tools.javac.zip;
 
 import java.io.*;
--- a/src/share/classes/com/sun/tools/javac/zip/ZipFileIndexEntry.java	Thu May 22 09:37:57 2008 -0700
+++ b/src/share/classes/com/sun/tools/javac/zip/ZipFileIndexEntry.java	Wed May 28 00:02:28 2008 -0700
@@ -1,3 +1,28 @@
+/*
+ * Copyright 2007-2008 Sun Microsystems, Inc.  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.  Sun designates this
+ * particular file as subject to the "Classpath" exception as provided
+ * by Sun 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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
 package com.sun.tools.javac.zip;
 
 import java.io.File;
--- a/src/share/classes/sun/tools/javap/ClassData.java	Thu May 22 09:37:57 2008 -0700
+++ b/src/share/classes/sun/tools/javap/ClassData.java	Wed May 28 00:02:28 2008 -0700
@@ -58,7 +58,7 @@
     private String superclassname;
     private int source_cpx=0;
     private byte tags[];
-    private Hashtable indexHashAscii = new Hashtable();
+    private Hashtable<Object,Integer> indexHashAscii = new Hashtable<Object,Integer>();
     private String pkgPrefix="";
     private int pkgPrefixLen=0;
 
@@ -167,19 +167,19 @@
             switch(tags[i] = tag) {
             case CONSTANT_UTF8:
                 String str=in.readUTF();
-                indexHashAscii.put(cpool[i] = str, new Integer(i));
+                indexHashAscii.put(cpool[i] = str, i);
                 break;
             case CONSTANT_INTEGER:
-                cpool[i] = new Integer(in.readInt());
+                cpool[i] = Integer.valueOf(in.readInt());
                 break;
             case CONSTANT_FLOAT:
-                cpool[i] = new Float(in.readFloat());
+                cpool[i] = Float.valueOf(in.readFloat());
                 break;
             case CONSTANT_LONG:
-                cpool[i++] = new Long(in.readLong());
+                cpool[i++] = Long.valueOf(in.readLong());
                 break;
             case CONSTANT_DOUBLE:
-                cpool[i++] = new Double(in.readDouble());
+                cpool[i++] = Double.valueOf(in.readDouble());
                 break;
             case CONSTANT_CLASS:
             case CONSTANT_STRING:
@@ -365,7 +365,7 @@
      * Returns the access of this class or interface.
      */
     public String[] getAccess(){
-        Vector v = new Vector();
+        Vector<String> v = new Vector<String>();
         if ((access & ACC_PUBLIC)   !=0) v.addElement("public");
         if ((access & ACC_FINAL)    !=0) v.addElement("final");
         if ((access & ACC_ABSTRACT) !=0) v.addElement("abstract");
--- a/src/share/classes/sun/tools/javap/FieldData.java	Thu May 22 09:37:57 2008 -0700
+++ b/src/share/classes/sun/tools/javap/FieldData.java	Wed May 28 00:02:28 2008 -0700
@@ -45,7 +45,7 @@
     int value_cpx=0;
     boolean isSynthetic=false;
     boolean isDeprecated=false;
-    Vector attrs;
+    Vector<AttrData> attrs;
 
     public FieldData(ClassData cls){
         this.cls=cls;
@@ -60,7 +60,7 @@
         descriptor_index = in.readUnsignedShort();
         // Read the attributes
         int attributes_count = in.readUnsignedShort();
-        attrs=new Vector(attributes_count);
+        attrs=new Vector<AttrData>(attributes_count);
         for (int i = 0; i < attributes_count; i++) {
             int attr_name_index=in.readUnsignedShort();
             if (cls.getTag(attr_name_index)!=CONSTANT_UTF8) continue;
@@ -99,7 +99,7 @@
      * Returns access of a field.
      */
     public String[] getAccess(){
-        Vector v = new Vector();
+        Vector<String> v = new Vector<String>();
         if ((access & ACC_PUBLIC)   !=0) v.addElement("public");
         if ((access & ACC_PRIVATE)   !=0) v.addElement("private");
         if ((access & ACC_PROTECTED)   !=0) v.addElement("protected");
--- a/src/share/classes/sun/tools/javap/InnerClassData.java	Thu May 22 09:37:57 2008 -0700
+++ b/src/share/classes/sun/tools/javap/InnerClassData.java	Wed May 28 00:02:28 2008 -0700
@@ -63,7 +63,7 @@
      * Returns the access of this class or interface.
      */
     public String[] getAccess(){
-        Vector v = new Vector();
+        Vector<String> v = new Vector<String>();
         if ((access & ACC_PUBLIC)   !=0) v.addElement("public");
         if ((access & ACC_FINAL)    !=0) v.addElement("final");
         if ((access & ACC_ABSTRACT) !=0) v.addElement("abstract");
--- a/src/share/classes/sun/tools/javap/JavapPrinter.java	Thu May 22 09:37:57 2008 -0700
+++ b/src/share/classes/sun/tools/javap/JavapPrinter.java	Wed May 28 00:02:28 2008 -0700
@@ -653,7 +653,7 @@
         case CONSTANT_METHOD:
         case CONSTANT_INTERFACEMETHOD:
         case CONSTANT_FIELD: {
-            CPX2 x = (CPX2)(cls.getCpoolEntry(cpx));
+            CPX2 x = cls.getCpoolEntry(cpx);
             if (x.cpx1 == cls.getthis_cpx()) {
                 // don't print class part for local references
                 cpx=x.cpx2;
@@ -851,7 +851,7 @@
         case CONSTANT_INTERFACEMETHOD:
         case CONSTANT_FIELD: {
             // CPX2 x=(CPX2)(cpool[cpx]);
-            CPX2 x = (CPX2)(cls.getCpoolEntry(cpx));
+            CPX2 x = cls.getCpoolEntry(cpx);
             if (x.cpx1 == cls.getthis_cpx()) {
                 // don't print class part for local references
                 cpx=x.cpx2;
--- a/src/share/classes/sun/tools/javap/Main.java	Thu May 22 09:37:57 2008 -0700
+++ b/src/share/classes/sun/tools/javap/Main.java	Wed May 28 00:02:28 2008 -0700
@@ -35,9 +35,9 @@
  *
  * @author  Sucheta Dambalkar (Adopted code from old javap)
  */
-public class Main{
+public class Main {
 
-    private Vector classList = new Vector();
+    private Vector<String> classList = new Vector<String>();
     private PrintWriter out;
     JavapEnvironment env = new JavapEnvironment();
     private static boolean errorOccurred = false;
@@ -201,7 +201,7 @@
      */
     private void displayResults() {
         for (int i = 0; i < classList.size() ; i++ ) {
-            String Name = (String)classList.elementAt(i);
+            String Name = classList.elementAt(i);
             InputStream classin = env.getFileInputStream(Name);
 
             try {
--- a/src/share/classes/sun/tools/javap/MethodData.java	Thu May 22 09:37:57 2008 -0700
+++ b/src/share/classes/sun/tools/javap/MethodData.java	Wed May 28 00:02:28 2008 -0700
@@ -43,14 +43,14 @@
     int descriptor_index;
     int attributes_count;
     byte[] code;
-    Vector exception_table = new Vector(0);
-    Vector lin_num_tb = new Vector(0);
-    Vector loc_var_tb = new Vector(0);
+    Vector<TrapData> exception_table = new Vector<TrapData>(0);
+    Vector<LineNumData> lin_num_tb = new Vector<LineNumData>(0);
+    Vector<LocVarData> loc_var_tb = new Vector<LocVarData>(0);
     StackMapTableData[] stackMapTable;
     StackMapData[] stackMap;
     int[] exc_index_table=null;
-    Vector attrs=new Vector(0);
-    Vector code_attrs=new Vector(0);
+    Vector<AttrData> attrs=new Vector<AttrData>(0);
+    Vector<AttrData> code_attrs=new Vector<AttrData>(0);
     int max_stack,  max_locals;
     boolean isSynthetic=false;
     boolean isDeprecated=false;
@@ -165,7 +165,7 @@
      */
     void readExceptionTable (DataInputStream in) throws IOException {
         int exception_table_len=in.readUnsignedShort();
-        exception_table=new Vector(exception_table_len);
+        exception_table=new Vector<TrapData>(exception_table_len);
         for (int l = 0; l < exception_table_len; l++) {
             exception_table.addElement(new TrapData(in, l));
         }
@@ -177,7 +177,7 @@
     void readLineNumTable (DataInputStream in) throws IOException {
         int attr_len = in.readInt(); // attr_length
         int lin_num_tb_len = in.readUnsignedShort();
-        lin_num_tb=new Vector(lin_num_tb_len);
+        lin_num_tb=new Vector<LineNumData>(lin_num_tb_len);
         for (int l = 0; l < lin_num_tb_len; l++) {
             lin_num_tb.addElement(new LineNumData(in));
         }
@@ -189,7 +189,7 @@
     void readLocVarTable (DataInputStream in) throws IOException {
         int attr_len=in.readInt(); // attr_length
         int loc_var_tb_len = in.readUnsignedShort();
-        loc_var_tb = new Vector(loc_var_tb_len);
+        loc_var_tb = new Vector<LocVarData>(loc_var_tb_len);
         for (int l = 0; l < loc_var_tb_len; l++) {
             loc_var_tb.addElement(new LocVarData(in));
         }
@@ -237,7 +237,7 @@
      */
     public String[] getAccess(){
 
-        Vector v = new Vector();
+        Vector<String> v = new Vector<String>();
         if ((access & ACC_PUBLIC)   !=0) v.addElement("public");
         if ((access & ACC_PRIVATE)   !=0) v.addElement("private");
         if ((access & ACC_PROTECTED)   !=0) v.addElement("protected");
--- a/src/share/classes/sun/tools/javap/Tables.java	Thu May 22 09:37:57 2008 -0700
+++ b/src/share/classes/sun/tools/javap/Tables.java	Wed May 28 00:02:28 2008 -0700
@@ -26,8 +26,6 @@
 
 package sun.tools.javap;
 
-import java.io.IOException;
-import java.io.InputStream;
 import java.util.Hashtable;
 import java.util.Vector;
 
@@ -36,14 +34,14 @@
     /**
      * Define mnemocodes table.
      */
-  static  Hashtable mnemocodes = new Hashtable(301, 0.5f);
+  static  Hashtable<String,Integer> mnemocodes = new Hashtable<String,Integer>(301, 0.5f);
   static  String opcExtNamesTab[]=new String[128];
   static  String opcPrivExtNamesTab[]=new String[128];
   static  void defineNonPriv(int opc, String mnem) {
-        mnemocodes.put(opcExtNamesTab[opc]=mnem, new Integer(opc_nonpriv*256+opc));
+        mnemocodes.put(opcExtNamesTab[opc]=mnem, opc_nonpriv*256+opc);
   }
   static  void definePriv(int opc, String mnem) {
-        mnemocodes.put(opcPrivExtNamesTab[opc]="priv_"+mnem, new Integer(opc_priv*256+opc));
+        mnemocodes.put(opcPrivExtNamesTab[opc]="priv_"+mnem, opc_priv*256+opc);
   }
   static  void defineExt(int opc, String mnem) {
         defineNonPriv(opc, mnem);
@@ -51,28 +49,28 @@
   }
   static { int k;
         for (k=0; k<opc_wide; k++) {
-                mnemocodes.put(opcNamesTab[k], new Integer(k));
+                mnemocodes.put(opcNamesTab[k], k);
         }
         for (k=opc_wide+1; k<opcNamesTab.length; k++) {
-                mnemocodes.put(opcNamesTab[k], new Integer(k));
+                mnemocodes.put(opcNamesTab[k], k);
         }
-        mnemocodes.put("invokenonvirtual", new Integer(opc_invokespecial));
+        mnemocodes.put("invokenonvirtual", opc_invokespecial);
 
-        mnemocodes.put("iload_w", new Integer(opc_iload_w));
-        mnemocodes.put("lload_w", new Integer(opc_lload_w));
-        mnemocodes.put("fload_w", new Integer(opc_fload_w));
-        mnemocodes.put("dload_w", new Integer(opc_dload_w));
-        mnemocodes.put("aload_w", new Integer(opc_aload_w));
-        mnemocodes.put("istore_w", new Integer(opc_istore_w));
-        mnemocodes.put("lstore_w", new Integer(opc_lstore_w));
-        mnemocodes.put("fstore_w", new Integer(opc_fstore_w));
-        mnemocodes.put("dstore_w", new Integer(opc_dstore_w));
-        mnemocodes.put("astore_w", new Integer(opc_astore_w));
-        mnemocodes.put("ret_w", new Integer(opc_ret_w));
-        mnemocodes.put("iinc_w", new Integer(opc_iinc_w));
+        mnemocodes.put("iload_w", opc_iload_w);
+        mnemocodes.put("lload_w", opc_lload_w);
+        mnemocodes.put("fload_w", opc_fload_w);
+        mnemocodes.put("dload_w", opc_dload_w);
+        mnemocodes.put("aload_w", opc_aload_w);
+        mnemocodes.put("istore_w", opc_istore_w);
+        mnemocodes.put("lstore_w", opc_lstore_w);
+        mnemocodes.put("fstore_w", opc_fstore_w);
+        mnemocodes.put("dstore_w", opc_dstore_w);
+        mnemocodes.put("astore_w", opc_astore_w);
+        mnemocodes.put("ret_w", opc_ret_w);
+        mnemocodes.put("iinc_w", opc_iinc_w);
 
-        mnemocodes.put("nonpriv", new Integer(opc_nonpriv));
-        mnemocodes.put("priv", new Integer(opc_priv));
+        mnemocodes.put("nonpriv", opc_nonpriv);
+        mnemocodes.put("priv", opc_priv);
 
         defineExt(0, "load_ubyte");
         defineExt(1, "load_byte");
@@ -183,7 +181,7 @@
   }
 
   public static int opcode(String mnem) {
-        Integer Val=(Integer)(mnemocodes.get(mnem));
+        Integer Val=mnemocodes.get(mnem);
         if (Val == null) return -1;
         return Val.intValue();
   }
@@ -191,7 +189,7 @@
     /**
      * Initialized keyword and token Hashtables
      */
-  static Vector keywordNames = new Vector(40);
+  static Vector<String> keywordNames = new Vector<String>(40);
   private static void defineKeywordName(String id, int token) {
 
         if (token>=keywordNames.size()) {
@@ -202,7 +200,7 @@
   public static String keywordName(int token) {
         if (token==-1) return "EOF";
         if (token>=keywordNames.size()) return null;
-        return (String)keywordNames.elementAt(token);
+        return keywordNames.elementAt(token);
   }
   static {
         defineKeywordName("ident", IDENT);
@@ -217,15 +215,15 @@
         defineKeywordName("RBRACE", RBRACE);
   }
 
-  static Hashtable keywords = new Hashtable(40);
+  static Hashtable<String,Integer> keywords = new Hashtable<String,Integer>(40);
   public static int keyword(String idValue) {
-        Integer Val=(Integer)(keywords.get(idValue));
-        if (Val == null) return IDENT;
-        return Val.intValue();
+        Integer val=keywords.get(idValue);
+        if (val == null) return IDENT;
+        return val.intValue();
   }
 
   private static void defineKeyword(String id, int token) {
-        keywords.put(id, new Integer(token));
+        keywords.put(id, token);
         defineKeywordName(id, token);
   }
   static {
@@ -275,8 +273,8 @@
    /**
      * Define tag table.
      */
-  private static Vector tagNames = new Vector(10);
-  private static Hashtable Tags = new Hashtable(10);
+  private static Vector<String> tagNames = new Vector<String>(10);
+  private static Hashtable<String,Integer> Tags = new Hashtable<String,Integer>(10);
   static {
         defineTag("Asciz",CONSTANT_UTF8);
         defineTag("int",CONSTANT_INTEGER);
@@ -291,7 +289,7 @@
         defineTag("NameAndType",CONSTANT_NAMEANDTYPE);
   }
   private static void defineTag(String id, int val) {
-        Tags.put(id, new Integer(val));
+        Tags.put(id, val);
         if (val>=tagNames.size()) {
                 tagNames.setSize(val+1);
         }
@@ -299,10 +297,10 @@
   }
   public static String tagName(int tag) {
         if (tag>=tagNames.size()) return null;
-        return (String)tagNames.elementAt(tag);
+        return tagNames.elementAt(tag);
   }
   public static int tagValue(String idValue) {
-        Integer Val=(Integer)(Tags.get(idValue));
+        Integer Val=Tags.get(idValue);
         if (Val == null) return 0;
         return Val.intValue();
   }
@@ -310,8 +308,8 @@
    /**
      * Define type table. These types used in "newarray" instruction only.
      */
-  private static Vector typeNames = new Vector(10);
-  private static Hashtable Types = new Hashtable(10);
+  private static Vector<String> typeNames = new Vector<String>(10);
+  private static Hashtable<String,Integer> Types = new Hashtable<String,Integer>(10);
   static {
         defineType("int",T_INT);
         defineType("long",T_LONG);
@@ -324,28 +322,28 @@
         defineType("short",T_SHORT);
   }
   private static void defineType(String id, int val) {
-        Types.put(id, new Integer(val));
+        Types.put(id, val);
         if (val>=typeNames.size()) {
                 typeNames.setSize(val+1);
         }
         typeNames.setElementAt(id, val);
   }
   public static int typeValue(String idValue) {
-        Integer Val=(Integer)(Types.get(idValue));
+        Integer Val=Types.get(idValue);
         if (Val == null) return -1;
         return Val.intValue();
   }
   public static String typeName(int type) {
         if (type>=typeNames.size()) return null;
-        return (String)typeNames.elementAt(type);
+        return typeNames.elementAt(type);
   }
 
    /**
      * Define MapTypes table.
      * These constants used in stackmap tables only.
      */
-  private static Vector mapTypeNames = new Vector(10);
-  private static Hashtable MapTypes = new Hashtable(10);
+  private static Vector<String> mapTypeNames = new Vector<String>(10);
+  private static Hashtable<String,Integer> MapTypes = new Hashtable<String,Integer>(10);
   static {
         defineMapType("bogus",             ITEM_Bogus);
         defineMapType("int",               ITEM_Integer);
@@ -358,20 +356,20 @@
         defineMapType("uninitialized",     ITEM_NewObject);
   }
   private static void defineMapType(String id, int val) {
-        MapTypes.put(id, new Integer(val));
+        MapTypes.put(id, val);
         if (val>=mapTypeNames.size()) {
                 mapTypeNames.setSize(val+1);
         }
         mapTypeNames.setElementAt(id, val);
   }
   public static int mapTypeValue(String idValue) {
-        Integer Val=(Integer)(MapTypes.get(idValue));
+        Integer Val=MapTypes.get(idValue);
         if (Val == null) return -1;
         return Val.intValue();
   }
   public static String mapTypeName(int type) {
         if (type>=mapTypeNames.size()) return null;
-        return (String)mapTypeNames.elementAt(type);
+        return mapTypeNames.elementAt(type);
   }
 
 }
--- a/src/share/classes/sun/tools/javap/TypeSignature.java	Thu May 22 09:37:57 2008 -0700
+++ b/src/share/classes/sun/tools/javap/TypeSignature.java	Wed May 28 00:02:28 2008 -0700
@@ -79,7 +79,7 @@
      * Returns java type signature of a parameter.
      */
     public String getParametersHelper(String parameterdes){
-        Vector parameters = new Vector();
+        Vector<String> parameters = new Vector<String>();
         int startindex = -1;
         int endindex = -1;
         String param = "";
@@ -187,7 +187,7 @@
         int i;
 
         for(i = 0; i < parameters.size(); i++){
-            parametersignature += (String)parameters.elementAt(i);
+            parametersignature += parameters.elementAt(i);
             if(i != parameters.size()-1){
                 parametersignature += ", ";
             }
--- a/test/tools/javac/6589361/T6589361.java	Thu May 22 09:37:57 2008 -0700
+++ b/test/tools/javac/6589361/T6589361.java	Wed May 28 00:02:28 2008 -0700
@@ -24,7 +24,7 @@
             Iterable<JavaFileObject> files = fm.list(StandardLocation.PLATFORM_CLASS_PATH, "java.lang", set, false);
             for (JavaFileObject file : files) {
 
-                if (file.toString().startsWith("java" + File.separator + "lang" + File.separator + "Object.class")) {
+                if (file.toString().contains("java" + File.separator + "lang" + File.separator + "Object.class")) {
                     String str = fm.inferBinaryName(StandardLocation.CLASS_PATH, file);
                     if (!str.equals("java.lang.Object")) {
                         throw new AssertionError("Error in JavacFileManager.inferBinaryName method!");
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/tools/javac/T6705935.java	Wed May 28 00:02:28 2008 -0700
@@ -0,0 +1,65 @@
+/*
+ * Copyright 2008 Sun Microsystems, Inc.  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 Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+/*
+ * @test
+ * @bug 6705935
+ * @summary javac reports path name of entry in ZipFileIndex incorectly
+ */
+
+import java.io.*;
+import java.util.*;
+import javax.tools.*;
+import com.sun.tools.javac.util.*;
+
+public class T6705935 {
+    public static void main(String... args) throws Exception {
+        new T6705935().run();
+    }
+
+    public void run() throws Exception {
+        File java_home = new File(System.getProperty("java.home"));
+        if (java_home.getName().equals("jre"))
+            java_home = java_home.getParentFile();
+
+        JavaCompiler c = ToolProvider.getSystemJavaCompiler();
+        JavaFileManager fm = c.getStandardFileManager(null, null, null);
+        for (JavaFileObject fo: fm.list(StandardLocation.PLATFORM_CLASS_PATH,
+                                        "java.lang",
+                                        Collections.singleton(JavaFileObject.Kind.CLASS),
+                                        false)) {
+            String p = ((BaseFileObject)fo).getPath();
+            int bra = p.indexOf("(");
+            int ket = p.indexOf(")");
+            //System.err.println(bra + "," + ket + "," + p.length());
+            if (bra == -1 || ket != p.length() -1)
+                throw new Exception("unexpected path: " + p + "[" + bra + "," + ket + "," + p.length());
+            String part1 = p.substring(0, bra);
+            String part2 = p.substring(bra + 1, ket);
+            //System.err.println("[" + part1 + "|" + part2 + "]" + " " + java_home);
+            if (part1.equals(part2) || !part1.startsWith(java_home.getPath()))
+                throw new Exception("bad path: " + p);
+
+        }
+    }
+}