diff options
author | Tom Tromey <tromey@cygnus.com> | 2000-11-04 04:57:33 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2000-11-04 04:57:33 +0000 |
commit | b7436b7288b074c505c7efd6be8740dfab471995 (patch) | |
tree | cf40e4641c23b927eab437ca1b6fad40488aed6d /gcc | |
parent | 0160fbe1508e18e4ff7b50822b3620f69cffe400 (diff) | |
download | gcc-b7436b7288b074c505c7efd6be8740dfab471995.zip gcc-b7436b7288b074c505c7efd6be8740dfab471995.tar.gz gcc-b7436b7288b074c505c7efd6be8740dfab471995.tar.bz2 |
lang-options.h: Mention -Wout-of-date.
* lang-options.h: Mention -Wout-of-date.
* jcf-dump.c (flag_newer): New global.
* gjavah.c (flag_newer): New global.
* jcf-io.c (find_class): Only warn when flag_newer set.
* lang.c (flag_newer): New global.
(struct string_option): New declaration.
(lang_W_options): New global.
(process_option_with_no): New function.
(lang_decode_option): Use it.
From-SVN: r37244
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/java/ChangeLog | 10 | ||||
-rw-r--r-- | gcc/java/gjavah.c | 4 | ||||
-rw-r--r-- | gcc/java/java-tree.h | 4 | ||||
-rw-r--r-- | gcc/java/jcf-dump.c | 4 | ||||
-rw-r--r-- | gcc/java/jcf-io.c | 3 | ||||
-rw-r--r-- | gcc/java/lang-options.h | 1 | ||||
-rw-r--r-- | gcc/java/lang.c | 96 |
7 files changed, 84 insertions, 38 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 3aeede4..6528d40 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,5 +1,15 @@ 2000-11-03 Tom Tromey <tromey@cygnus.com> + * lang-options.h: Mention -Wout-of-date. + * jcf-dump.c (flag_newer): New global. + * gjavah.c (flag_newer): New global. + * jcf-io.c (find_class): Only warn when flag_newer set. + * lang.c (flag_newer): New global. + (struct string_option): New declaration. + (lang_W_options): New global. + (process_option_with_no): New function. + (lang_decode_option): Use it. + * class.c (cxx_keyword_p): Accept keywords with trailing `$'s. * gjavah.c (cxx_keyword_subst): Handle any number of trailing `$'. diff --git a/gcc/java/gjavah.c b/gcc/java/gjavah.c index f49b717..6e6075e 100644 --- a/gcc/java/gjavah.c +++ b/gcc/java/gjavah.c @@ -47,6 +47,10 @@ static int found_error = 0; /* Nonzero if we're generating JNI output. */ static int flag_jni = 0; +/* When non zero, warn when source file is newer than matching class + file. */ +int flag_newer = 1; + /* Directory to place resulting files in. Set by -d option. */ const char *output_directory = ""; diff --git a/gcc/java/java-tree.h b/gcc/java/java-tree.h index 8196ea6..2753367 100644 --- a/gcc/java/java-tree.h +++ b/gcc/java/java-tree.h @@ -162,6 +162,10 @@ extern int flag_redundant; extern int flag_not_overriding; extern int flag_static_local_jdk1_1; +/* When non zero, warn when source file is newer than matching class + file. */ +extern int flag_newer; + /* When non zero, call a library routine to do integer divisions. */ extern int flag_use_divide_subroutine; diff --git a/gcc/java/jcf-dump.c b/gcc/java/jcf-dump.c index 88b188b..1becf16 100644 --- a/gcc/java/jcf-dump.c +++ b/gcc/java/jcf-dump.c @@ -71,6 +71,10 @@ int flag_print_fields = 1; int flag_print_methods = 1; int flag_print_attributes = 1; +/* When non zero, warn when source file is newer than matching class + file. */ +int flag_newer = 1; + /* Print names of classes that have a "main" method. */ int flag_print_main = 0; diff --git a/gcc/java/jcf-io.c b/gcc/java/jcf-io.c index 7bd4fe8..db19208 100644 --- a/gcc/java/jcf-io.c +++ b/gcc/java/jcf-io.c @@ -403,7 +403,8 @@ DEFUN(find_class, (classname, classname_length, jcf, source_ok), i--; stripped_class_name [i] = '\0'; - warning ("Source file for class `%s' is newer than its matching class file. Source file used instead", stripped_class_name); + if (flag_newer) + warning ("Source file for class `%s' is newer than its matching class file. Source file used instead", stripped_class_name); free (stripped_class_name); class = -1; } diff --git a/gcc/java/lang-options.h b/gcc/java/lang-options.h index 3d4ec6d..25a5015 100644 --- a/gcc/java/lang-options.h +++ b/gcc/java/lang-options.h @@ -57,3 +57,4 @@ DEFINE_LANG_NAME ("Java") "Warn if modifiers are specified when not necessary"}, { "-Wunsupported-jdk11", "Warn if `final' local variables are specified"}, { "-Wextraneous-semicolon", "Warn if deprecated empty statements are found"}, + { "-Wout-of-date", "Warn if .class files are out of date" }, diff --git a/gcc/java/lang.c b/gcc/java/lang.c index 8065fc7..b90abdb 100644 --- a/gcc/java/lang.c +++ b/gcc/java/lang.c @@ -37,10 +37,20 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */ #include "xref.h" #include "ggc.h" +struct string_option +{ + const char *string; + int *variable; + int on_value; +}; + static void put_decl_string PARAMS ((const char *, int)); static void put_decl_node PARAMS ((tree)); static void java_dummy_print PARAMS ((const char *)); static void lang_print_error PARAMS ((const char *)); +static int process_option_with_no PARAMS ((char *, + struct string_option *, + int)); #ifndef OBJECT_SUFFIX # define OBJECT_SUFFIX ".o" @@ -122,6 +132,10 @@ int flag_hash_synchronization; JNI, not CNI. */ int flag_jni = 0; +/* When non zero, warn when source file is newer than matching class + file. */ +int flag_newer = 1; + /* The encoding of the source file. */ const char *current_encoding = NULL; @@ -139,7 +153,7 @@ extern int flag_exceptions; if `-fSTRING' is seen as an option. (If `-fno-STRING' is seen as an option, the opposite value is stored.) */ -static struct { const char *string; int *variable; int on_value;} +static struct string_option lang_f_options[] = { {"emit-class-file", &flag_emit_class_files, 1}, @@ -150,6 +164,15 @@ lang_f_options[] = {"jni", &flag_jni, 1} }; +static struct string_option +lang_W_options[] = +{ + { "unsupported-jdk11", &flag_static_local_jdk1_1, 1 }, + { "redundant-modifiers", &flag_redundant, 1 }, + { "extraneous-semicolon", &flag_extraneous_semicolon, 1 }, + { "out-of-date", &flag_newer, 1 } +}; + JCF *current_jcf; /* Variable controlling how dependency tracking is enabled in @@ -162,6 +185,34 @@ static int dependency_tracking = 0; #define DEPEND_TARGET_SET 4 #define DEPEND_FILE_ALREADY_SET 8 +/* Process an option that can accept a `no-' form. + Return 1 if option found, 0 otherwise. */ +static int +process_option_with_no (p, table, table_size) + char *p; + struct string_option *table; + int table_size; +{ + int j; + + for (j = 0; j < table_size; j++) + { + if (!strcmp (p, table[j].string)) + { + *table[j].variable = table[j].on_value; + return 1; + } + if (p[0] == 'n' && p[1] == 'o' && p[2] == '-' + && ! strcmp (p+3, table[j].string)) + { + *table[j].variable = ! table[j].on_value; + return 1; + } + } + + return 0; +} + /* * process java-specific compiler command-line options * return 0, but do not complain if the option is not recognised. @@ -241,28 +292,9 @@ lang_decode_option (argc, argv) /* Some kind of -f option. P's value is the option sans `-f'. Search for it in the table of options. */ - int found = 0, j; - p += 2; - - for (j = 0; !found && j < (int) ARRAY_SIZE (lang_f_options); j++) - { - if (!strcmp (p, lang_f_options[j].string)) - { - *lang_f_options[j].variable = lang_f_options[j].on_value; - /* A goto here would be cleaner, - but breaks the vax pcc. */ - found = 1; - } - if (p[0] == 'n' && p[1] == 'o' && p[2] == '-' - && ! strcmp (p+3, lang_f_options[j].string)) - { - *lang_f_options[j].variable = ! lang_f_options[j].on_value; - found = 1; - } - } - - return found; + return process_option_with_no (p, lang_f_options, + ARRAY_SIZE (lang_f_options)); } if (strcmp (p, "-Wall") == 0) @@ -276,22 +308,12 @@ lang_decode_option (argc, argv) return 1; } - if (strcmp (p, "-Wunsupported-jdk11") == 0) - { - flag_static_local_jdk1_1 = 1; - return 1; - } - - if (strcmp (p, "-Wredundant-modifiers") == 0) - { - flag_redundant = 1; - return 1; - } - - if (strcmp (p, "-Wextraneous-semicolon") == 0) + if (p[0] == '-' && p[1] == 'W') { - flag_extraneous_semicolon = 1; - return 1; + /* Skip `-W' and see if we accept the option or its `no-' form. */ + p += 2; + return process_option_with_no (p, lang_W_options, + ARRAY_SIZE (lang_W_options)); } if (strcmp (p, "-MD") == 0) |