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
This commit is contained in:
parent
0160fbe150
commit
b7436b7288
@ -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
|
||||
`$'.
|
||||
|
@ -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 = "";
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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" },
|
||||
|
@ -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)
|
||||
if (p[0] == '-' && p[1] == 'W')
|
||||
{
|
||||
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)
|
||||
{
|
||||
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)
|
||||
|
Loading…
Reference in New Issue
Block a user