Patch: classes.pl bug fix

Tom Tromey tromey@cygnus.com
Thu Jul 20 12:34:00 GMT 2000


I'm checking this in.  It fixes classes.pl to correctly handle inner
classes.  classes.pl now assumes that code is "correctly" indented --
this might be a problem when we start importing more Classpath code.

2000-07-20  Tom Tromey  <tromey@cygnus.com>

	* scripts/classes.pl (scan): Print inner classes properly.
	* gcj/javaprims.h: Updated class list.

Tom

Index: gcj/javaprims.h
===================================================================
RCS file: /cvs/java/libgcj/libjava/gcj/javaprims.h,v
retrieving revision 1.10
diff -u -r1.10 javaprims.h
--- javaprims.h	2000/05/19 17:55:27	1.10
+++ javaprims.h	2000/07/20 19:33:06
@@ -39,6 +39,7 @@
   {
     namespace io
     {
+      class BlockDataException;
       class BufferedInputStream;
       class BufferedOutputStream;
       class BufferedReader;
@@ -53,6 +54,7 @@
       class DataOutput;
       class DataOutputStream;
       class EOFException;
+      class Externalizable;
       class File;
       class FileDescriptor;
       class FileInputStream;
@@ -68,11 +70,13 @@
       class IOException;
       class InputStream;
       class InputStreamReader;
+      class InterfaceComparator;
       class InterruptedIOException;
       class InvalidClassException;
       class InvalidObjectException;
       class LineNumberInputStream;
       class LineNumberReader;
+      class MemberComparator;
       class NotActiveException;
       class NotSerializableException;
       class ObjectInput;
@@ -99,10 +103,11 @@
       class PushbackReader;
       class RandomAccessFile;
       class Reader;
+      class Replaceable;
+      class Resolvable;
       class SequenceInputStream;
       class Serializable;
       class SerializablePermission;
-      class SimpleDigestStream;
       class StreamCorruptedException;
       class StreamTokenizer;
       class StringBufferInputStream;
@@ -111,8 +116,10 @@
       class SyncFailedException;
       class UTFDataFormatException;
       class UnsupportedEncodingException;
+      class ValidatorAndPriority;
+      class WriteAbortedException;
       class Writer;
-    }
+    };
 
     namespace lang
     {
@@ -122,6 +129,7 @@
       class ArrayStoreException;
       class Boolean;
       class Byte;
+      class CPlusPlusDemangler;
       class Character;
       class Class;
       class ClassCastException;
@@ -198,13 +206,20 @@
         class Member;
         class Method;
         class Modifier;
-      }
-    }
+      };
+    };
 
     namespace util
     {
+      class AbstractCollection;
+      class AbstractList;
+      class AbstractList$SubList;
+      class Arrays;
+      class Arrays$ListImpl;
       class BitSet;
       class Calendar;
+      class Collection;
+      class Comparator;
       class ConcurrentModificationException;
       class Date;
       class Dictionary;
@@ -216,6 +231,9 @@
       class Hashtable;
       class HashtableEntry;
       class HashtableEnumeration;
+      class Iterator;
+      class List;
+      class ListIterator;
       class ListResourceBundle;
       class Locale;
       class MissingResourceException;
@@ -238,7 +256,7 @@
         class JarEntry;
         class JarFile;
         class JarInputStream;
-      }
+      };
 
       namespace zip
       {
@@ -261,9 +279,9 @@
         class ZipFile;
         class ZipInputStream;
         class ZipOutputStream;
-      }
-    }
-  }
+      };
+    };
+  };
 };
 
 typedef struct java::lang::Object* jobject;
Index: scripts/classes.pl
===================================================================
RCS file: /cvs/java/libgcj/libjava/scripts/classes.pl,v
retrieving revision 1.2
diff -u -r1.2 classes.pl
--- classes.pl	2000/05/19 17:55:34	1.2
+++ classes.pl	2000/07/20 19:33:06
@@ -1,7 +1,7 @@
 # classes.pl - A perl program to generate most of the contents of
 # javaprims.h automatically.
 
-# Copyright (C) 1998, 1999  Red Hat, Inc.
+# Copyright (C) 1998, 1999, 2000  Red Hat, Inc.
 #
 # This file is part of libjava.
 #
@@ -65,14 +65,29 @@
 	    next unless $name =~ /\.java$/;
 
 	    open (FILE, "< $dir/$name");
+	    local ($outer, $classname);
 	    while (<FILE>)
 	    {
 		# NOTE: we don't skip `/*' comments.
 		s,//.*$,,;
 		# For now assume that class names start with upper
 		# case letter.
-		next unless /(class|interface) ([A-Z][A-Za-z0-9]+)/;
-		$classes{$2} = 1;
+		next unless /\b(class|interface) ([A-Z][A-Za-z0-9]+)/;
+		$classname = $2;
+
+		# We assume the code is properly indented, so that we
+		# can print inner classes properly.
+		if (/^\s/)
+		{
+		    die "no outer class for $classname in $dir/$name"
+			unless $outer;
+		    $classes{$outer . "\$" . $classname} = 1;
+		}
+		else
+		{
+		    $classes{$classname} = 1;
+		    $outer = $classname;
+		}
 	    }
 	    close (FILE);
 	}


More information about the Java-patches mailing list