re PR fortran/30968 ([4.1 only] Bogus warning with continued lines of concatenated strings)
2007-02-28 Tobias Burnus <burnus@net-b.de> PR fortran/30968 * primary.c (next_string_char): Correct reading a character after the delimiter. (match_string_constant): Print warning message only once. 2007-02-28 Tobias Burnus <burnus@net-b.de> PR fortran/30968 * gfortran.dg/continuation_7.f90: New test. From-SVN: r122401
This commit is contained in:
parent
d5b7e9722d
commit
1355d8e7f2
@ -1,3 +1,10 @@
|
||||
2007-02-28 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/30968
|
||||
* primary.c (next_string_char): Correct reading a character
|
||||
after the delimiter.
|
||||
(match_string_constant): Print warning message only once.
|
||||
|
||||
2007-02-27 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* trans-array.c (structure_alloc_comps): Use correct type
|
||||
|
@ -773,7 +773,7 @@ next_string_char (char delimiter)
|
||||
return c;
|
||||
|
||||
old_locus = gfc_current_locus;
|
||||
c = gfc_next_char_literal (1);
|
||||
c = gfc_next_char_literal (0);
|
||||
|
||||
if (c == delimiter)
|
||||
return c;
|
||||
@ -852,7 +852,7 @@ static match
|
||||
match_string_constant (gfc_expr **result)
|
||||
{
|
||||
char *p, name[GFC_MAX_SYMBOL_LEN + 1];
|
||||
int i, c, kind, length, delimiter;
|
||||
int i, c, kind, length, delimiter, warn_ampersand;
|
||||
locus old_locus, start_locus;
|
||||
gfc_symbol *sym;
|
||||
gfc_expr *e;
|
||||
@ -979,10 +979,16 @@ got_delim:
|
||||
gfc_current_locus = start_locus;
|
||||
gfc_next_char (); /* Skip delimiter */
|
||||
|
||||
/* We disable the warning for the following loop as the warning has already
|
||||
been printed in the loop above. */
|
||||
warn_ampersand = gfc_option.warn_ampersand;
|
||||
gfc_option.warn_ampersand = 0;
|
||||
|
||||
for (i = 0; i < length; i++)
|
||||
*p++ = next_string_char (delimiter);
|
||||
|
||||
*p = '\0'; /* TODO: C-style string is for development/debug purposes. */
|
||||
gfc_option.warn_ampersand = warn_ampersand;
|
||||
|
||||
if (next_string_char (delimiter) != -1)
|
||||
gfc_internal_error ("match_string_constant(): Delimiter not found");
|
||||
|
@ -1,3 +1,8 @@
|
||||
2007-02-28 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
PR fortran/30968
|
||||
* gfortran.dg/continuation_7.f90: New test.
|
||||
|
||||
2007-02-28 Bernd Schmidt <bernd.schmidt@analog.com>
|
||||
|
||||
* g++.dg/inherit/thunk7.C: New test.
|
||||
|
22
gcc/testsuite/gfortran.dg/continuation_7.f90
Normal file
22
gcc/testsuite/gfortran.dg/continuation_7.f90
Normal file
@ -0,0 +1,22 @@
|
||||
! { dg-do "compile" }
|
||||
! { dg-options "-Wall -std=f95" }
|
||||
! There should only two warnings be printed.
|
||||
! PR fortran/30968
|
||||
print *, "Foo bar&
|
||||
&Bar foo"
|
||||
print *, "Foo bar&
|
||||
Bar foo" ! { dg-warning "Missing '&' in continued character constant" }
|
||||
print *, "Foo bar"&
|
||||
&, "Bar foo"
|
||||
print *, "Foo bar"&
|
||||
, "Bar foo"
|
||||
|
||||
print '(&
|
||||
a)', 'Hello' ! { dg-warning "Missing '&' in continued character constant" }
|
||||
print '(&
|
||||
&a)', 'Hello'
|
||||
print '('&
|
||||
&//'a)', 'Hello'
|
||||
print '('&
|
||||
// "a)", 'Hello'
|
||||
end
|
Loading…
Reference in New Issue
Block a user