Steven G.
2007-01-26 Steven Bosscher <stevenb.gcc@gmail.com> Steven G. Kargl <kargl@gcc.gnu,org> * testsuite/gfortran.dg/backslash_3.f: New test. * fortran/io.c (next_char): Deal with backslash escaped characters. Issue warnings in non -std=gnu cases. * fortran/primary.c (next_string_char): Issue warnings in non From-SVN: r121218
This commit is contained in:
parent
d4da97d78e
commit
2e6a83a792
5 changed files with 83 additions and 3 deletions
|
@ -1,3 +1,10 @@
|
|||
2007-01-26 Steven Bosscher <stevenb.gcc@gmail.com>
|
||||
Steven G. Kargl <kargl@gcc.gnu.org>
|
||||
|
||||
* fortran/io.c (next_char): Deal with backslash escaped characters.
|
||||
Issue warnings in non -std=gnu cases.
|
||||
* fortran/primary.c (next_string_char): Issue warnings in non
|
||||
|
||||
2007-01-26 Tobias Burnus <burnus@net-b.de>
|
||||
|
||||
* lang-specs.h: Add support for .f03 and .F03 extensions.
|
||||
|
|
|
@ -137,11 +137,52 @@ next_char (int in_string)
|
|||
c = gfc_next_char_literal (in_string);
|
||||
if (c == '\n')
|
||||
c = '\0';
|
||||
|
||||
if (mode == MODE_COPY)
|
||||
*format_string++ = c;
|
||||
}
|
||||
|
||||
if (gfc_option.flag_backslash && c == '\\')
|
||||
{
|
||||
locus old_locus = gfc_current_locus;
|
||||
|
||||
switch (gfc_next_char_literal (1))
|
||||
{
|
||||
case 'a':
|
||||
c = '\a';
|
||||
break;
|
||||
case 'b':
|
||||
c = '\b';
|
||||
break;
|
||||
case 't':
|
||||
c = '\t';
|
||||
break;
|
||||
case 'f':
|
||||
c = '\f';
|
||||
break;
|
||||
case 'n':
|
||||
c = '\n';
|
||||
break;
|
||||
case 'r':
|
||||
c = '\r';
|
||||
break;
|
||||
case 'v':
|
||||
c = '\v';
|
||||
break;
|
||||
case '\\':
|
||||
c = '\\';
|
||||
break;
|
||||
|
||||
default:
|
||||
/* Unknown backslash codes are simply not expanded. */
|
||||
gfc_current_locus = old_locus;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!(gfc_option.allow_std & GFC_STD_GNU) && !inhibit_warnings)
|
||||
gfc_warning ("Extension: backslash character at %C");
|
||||
}
|
||||
|
||||
if (mode == MODE_COPY)
|
||||
*format_string++ = c;
|
||||
|
||||
c = TOUPPER (c);
|
||||
return c;
|
||||
}
|
||||
|
|
|
@ -764,6 +764,9 @@ next_string_char (char delimiter)
|
|||
gfc_current_locus = old_locus;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!(gfc_option.allow_std & GFC_STD_GNU) && !inhibit_warnings)
|
||||
gfc_warning ("Extension: backslash character at %C");
|
||||
}
|
||||
|
||||
if (c != delimiter)
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2007-01-26 Steven G. Kargl <kargl@gcc.gnu.org>
|
||||
|
||||
* gfortran.dg/backslash_3.f: New test.
|
||||
|
||||
2007-01-26 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
* gcc.dg/tree-ssa/pr23382.c: Fix typo.
|
||||
|
|
25
gcc/testsuite/gfortran.dg/backslash_3.f
Normal file
25
gcc/testsuite/gfortran.dg/backslash_3.f
Normal file
|
@ -0,0 +1,25 @@
|
|||
C { dg-do run }
|
||||
C PR fortran/30278
|
||||
program a
|
||||
character(len=1), parameter :: c1 = char(8), c2 = char(92)
|
||||
character(len=35) str1, str2
|
||||
character(len=37) :: str4, str3
|
||||
|
||||
open(10, status='scratch')
|
||||
write(10, 100)
|
||||
rewind(10)
|
||||
read(10,'(A34)') str1
|
||||
str2 = 'Does ' // c1 // 'ackslash result in ' // c1 // 'ackslash'
|
||||
if (str1 .ne. str2) call abort
|
||||
|
||||
rewind(10)
|
||||
write (10, 200)
|
||||
rewind(10)
|
||||
read(10,'(A37)') str3
|
||||
str4 = 'Does ' //c2// 'backslash result in ' //c2// 'backslash'
|
||||
if (str3 .ne. str4) call abort
|
||||
|
||||
stop
|
||||
100 format ('Does \backslash result in \backslash')
|
||||
200 format ('Does \\backslash result in \\backslash')
|
||||
end
|
Loading…
Add table
Reference in a new issue