Commit 2e6a83a7 by Steven G. Kargl

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
parent d4da97d7
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> 2007-01-26 Tobias Burnus <burnus@net-b.de>
* lang-specs.h: Add support for .f03 and .F03 extensions. * lang-specs.h: Add support for .f03 and .F03 extensions.
......
...@@ -137,11 +137,52 @@ next_char (int in_string) ...@@ -137,11 +137,52 @@ next_char (int in_string)
c = gfc_next_char_literal (in_string); c = gfc_next_char_literal (in_string);
if (c == '\n') if (c == '\n')
c = '\0'; c = '\0';
}
if (gfc_option.flag_backslash && c == '\\')
{
locus old_locus = gfc_current_locus;
if (mode == MODE_COPY) switch (gfc_next_char_literal (1))
*format_string++ = c; {
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); c = TOUPPER (c);
return c; return c;
} }
......
...@@ -764,6 +764,9 @@ next_string_char (char delimiter) ...@@ -764,6 +764,9 @@ next_string_char (char delimiter)
gfc_current_locus = old_locus; gfc_current_locus = old_locus;
break; break;
} }
if (!(gfc_option.allow_std & GFC_STD_GNU) && !inhibit_warnings)
gfc_warning ("Extension: backslash character at %C");
} }
if (c != delimiter) if (c != delimiter)
......
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> 2007-01-26 Richard Guenther <rguenther@suse.de>
* gcc.dg/tree-ssa/pr23382.c: Fix typo. * gcc.dg/tree-ssa/pr23382.c: Fix typo.
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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment