forked from OSchip/llvm-project
[flang] Extension: allow tabs in output format strings
A CHARACTER variable used as an output format may contain unquoted tab characters, which are treated as if they had been quoted. This is an extension supported by all other Fortran compilers to which I have access. Differential Revision: https://reviews.llvm.org/D112350
This commit is contained in:
parent
ce71f8e017
commit
fbb020fb48
|
@ -122,6 +122,7 @@ end
|
|||
files are easier to write and use.
|
||||
* $ and \ edit descriptors are supported in FORMAT to suppress newline
|
||||
output on user prompts.
|
||||
* Tabs in format strings (not `FORMAT` statements) are allowed on output.
|
||||
* REAL and DOUBLE PRECISION variable and bounds in DO loops
|
||||
* Integer literals without explicit kind specifiers that are out of range
|
||||
for the default kind of INTEGER are assumed to have the least larger kind
|
||||
|
|
|
@ -359,6 +359,10 @@ int FormatControl<CONTEXT>::CueUpNextDataEdit(Context &context, bool stop) {
|
|||
context.AdvanceRecord(repeat && *repeat > 0 ? *repeat : 1);
|
||||
} else if (ch == '$' || ch == '\\') {
|
||||
context.mutableModes().nonAdvancing = true;
|
||||
} else if (ch == '\t' || ch == '\v') {
|
||||
// Tabs (extension)
|
||||
// TODO: any other raw characters?
|
||||
context.Emit(format_ + offset_ - 1, 1);
|
||||
} else {
|
||||
context.SignalError(IostatErrorInFormat,
|
||||
"Invalid character '%c' in FORMAT", static_cast<char>(ch));
|
||||
|
|
Loading…
Reference in New Issue