mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-16 06:50:25 +08:00
re GNATS gcj/356 (gcjh bug: Can't #include <java/awt/Container.h>)
Fix for PR gcj/356: * gjavah.c (add_class_decl): Don't special-case inner classes. (add_namelet): Likewise. From-SVN: r36854
This commit is contained in:
parent
9dcbdc7eea
commit
3c1d1e7b7f
@ -1,3 +1,9 @@
|
||||
2000-10-12 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
Fix for PR gcj/356:
|
||||
* gjavah.c (add_class_decl): Don't special-case inner classes.
|
||||
(add_namelet): Likewise.
|
||||
|
||||
2000-10-10 Tom Tromey <tromey@cygnus.com>
|
||||
|
||||
* lex.c (java_new_lexer): Initialize out_first and out_last
|
||||
|
@ -1463,7 +1463,7 @@ add_namelet (name, name_limit, parent)
|
||||
return;
|
||||
}
|
||||
|
||||
for (p = name; p < name_limit && *p != '/' && *p != '$'; ++p)
|
||||
for (p = name; p < name_limit && *p != '/'; ++p)
|
||||
;
|
||||
|
||||
/* Search for this name beneath the PARENT node. */
|
||||
@ -1484,7 +1484,7 @@ add_namelet (name, name_limit, parent)
|
||||
n->name = xmalloc (p - name + 1);
|
||||
strncpy (n->name, name, p - name);
|
||||
n->name[p - name] = '\0';
|
||||
n->is_class = (p == name_limit || *p == '$');
|
||||
n->is_class = (p == name_limit);
|
||||
n->subnamelets = NULL;
|
||||
n->next = parent->subnamelets;
|
||||
parent->subnamelets = n;
|
||||
@ -1492,7 +1492,7 @@ add_namelet (name, name_limit, parent)
|
||||
|
||||
/* We recurse if there is more text, and if the trailing piece does
|
||||
not represent an inner class. */
|
||||
if (p < name_limit && *p != '$')
|
||||
if (p < name_limit)
|
||||
add_namelet (p + 1, name_limit, n);
|
||||
}
|
||||
|
||||
@ -1568,7 +1568,7 @@ add_class_decl (out, jcf, signature)
|
||||
|
||||
for (i = 0; i < len; ++i)
|
||||
{
|
||||
int start, saw_dollar;
|
||||
int start;
|
||||
|
||||
/* If we see an array, then we include the array header. */
|
||||
if (s[i] == '[')
|
||||
@ -1582,26 +1582,10 @@ add_class_decl (out, jcf, signature)
|
||||
if (s[i] != 'L')
|
||||
continue;
|
||||
|
||||
saw_dollar = 0;
|
||||
for (start = ++i; i < len && s[i] != ';'; ++i)
|
||||
{
|
||||
if (! saw_dollar && s[i] == '$' && out)
|
||||
{
|
||||
saw_dollar = 1;
|
||||
/* If this class represents an inner class, then
|
||||
generate a `#include' for the outer class. However,
|
||||
don't generate the include if the outer class is the
|
||||
class we are processing. */
|
||||
if (i - start < tlen || strncmp (&s[start], tname, i - start))
|
||||
print_include (out, &s[start], i - start);
|
||||
break;
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
/* If we saw an inner class, then the generated #include will
|
||||
declare the class. So in this case we needn't bother. */
|
||||
if (! saw_dollar)
|
||||
add_namelet (&s[start], &s[i], &root);
|
||||
add_namelet (&s[start], &s[i], &root);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user