[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH] Line synchronisation output in comments
From: |
Eric Blake |
Subject: |
Re: [PATCH] Line synchronisation output in comments |
Date: |
Fri, 25 May 2007 06:58:41 -0600 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.10) Gecko/20070221 Thunderbird/1.5.0.10 Mnenhy/0.7.5.666 |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
According to Sergey Poznyakoff on 5/24/2007 6:41 AM:
> Hi Eric,
>
>> Would you mind signing copyright papers, as this patch is not trivial?
>
> No problem, I have already filled and emailed the assigment form. The
> snail-mail part of the process takes 3-4 weeks, usually.
>
>> Also, can you add mention of this to NEWS and documentation (including
>> a test case) to m4.texi?
>
> OK, I'll do that.
I'll make this a bit easier - I'm committing this patch, which adds the
ability to even test -s in the testsuite in the first place.
2007-05-25 Eric Blake <address@hidden>
Test -s in testsuite.
* doc/m4.texinfo (Preprocessor features): Add a test.
* checks/get-them: Support extra options in testsuite.
* checks/check-them (examples): Use extra options.
* THANKS: Update.
Reported by Sergey Poznyakoff.
However, the issue is not just multiline comments, but also multiline
strings, so I think creating a new TOKEN_COMMENT is not strictly
necessary, since the fix for one should be applied to the other.
Futhermore, what does your patch do when a macro expands into a multiline
comment? This is current behavior:
$ m4 -s
define(twoline,/*
*/)
=> #line 2 "stdin"
=>
changecom(/*,*/)
=>
twoline
=> /*
=> #line 4
=> */
hello
=> hello
`a
b'
=> #line 7
=> a
=> #line 7
=> b
Note the double #line 7, neither of which were necessary (since the string
came from the combination of line 6 and 7); and with your patch, if #line
4 were suppressed because it was in the middle of a comment, then hello
needs a leading #line 5, but I'm not sure your patch did that.
Instead, it seems to me like shipout_text is always called on single
tokens, so rather than outputting line directives in the middle of a
token, it should only output a line directive at the front of a token, as
needed. I'm still hacking away on different approaches to the matter, but
I may end up committing something prior to your papers arriving at the FSF
office, because I want to get 1.5.10 out the door soon.
- --
Don't work too hard, make some time for fun as well!
Eric Blake address@hidden
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Cygwin)
Comment: Public key at home.comcast.net/~ericblake/eblake.gpg
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFGVt1/84KuGfSFAYARAuRNAKCBtkjFsmUrq0pk/K809QgJRiCv2QCfbU6O
2YKFvuLLtANK9c/T1ToKEFo=
=S6c6
-----END PGP SIGNATURE-----
Index: checks/check-them
===================================================================
RCS file: /sources/m4/m4/checks/Attic/check-them,v
retrieving revision 1.1.1.1.2.14
diff -u -p -r1.1.1.1.2.14 check-them
--- checks/check-them 6 Jan 2007 19:56:11 -0000 1.1.1.1.2.14
+++ checks/check-them 25 May 2007 12:57:16 -0000
@@ -57,8 +57,9 @@ do
continue
}
echo "Checking $file"
+ options=`sed -ne '3s/^dnl @ extra options: //p;3q' "$file"`
sed -e '/^dnl @/d' -e '/^\^D$/q' "$file" \
- | LC_MESSAGES=C m4 -d -I "$examples" - >$out 2>$err
+ | LC_MESSAGES=C m4 -d -I "$examples" $options - >$out 2>$err
stat=$?
xstat=`sed -ne '2s/^dnl @ expected status: //p;2q' "$file"`
Index: checks/get-them
===================================================================
RCS file: /sources/m4/m4/checks/Attic/get-them,v
retrieving revision 1.1.1.1.2.9
diff -u -p -r1.1.1.1.2.9 get-them
--- checks/get-them 28 Jan 2007 01:54:41 -0000 1.1.1.1.2.9
+++ checks/get-them 25 May 2007 12:57:16 -0000
@@ -15,6 +15,7 @@ BEGIN {
count = 0;
file = "NONE";
status = 0;
+ options = "";
}
/address@hidden / {
@@ -37,6 +38,7 @@ BEGIN {
/address@hidden ignore$/ {
getline;
status = 0;
+ options = "";
next;
}
@@ -44,6 +46,11 @@ BEGIN {
status = $3;
}
+/address@hidden options: / {
+ options = $0;
+ gsub ("@comment options:", "", options);
+}
+
/address@hidden/, /address@hidden example$/ {
if (seq < 0)
next;
@@ -55,12 +62,14 @@ BEGIN {
file = sprintf("%03d.%s", count, node);
printf("dnl @ %s:%d: Origin of test\n"\
"dnl @ expected status: %d\n"\
+ "dnl @ extra options: %s\n"\
"dnl @ Copyright (C) 2006, 2007 Free Software Foundation\n"\
"dnl @ This file is free software; the Free Software Foundation\n"\
"dnl @ gives unlimited permission to copy and/or distribute it\n"\
"dnl @ with or without modifications, as long as this notice\n"\
- "dnl @ is preserved.\n", FILENAME, NR, status) > file;
+ "dnl @ is preserved.\n", FILENAME, NR, status, options) > file;
status = 0;
+ options = "";
next;
}
if ($0 ~ /address@hidden example$/) {
Index: doc/m4.texinfo
===================================================================
RCS file: /sources/m4/m4/doc/m4.texinfo,v
retrieving revision 1.1.1.1.2.123
diff -u -p -r1.1.1.1.2.123 m4.texinfo
--- doc/m4.texinfo 25 Apr 2007 14:04:13 -0000 1.1.1.1.2.123
+++ doc/m4.texinfo 25 May 2007 12:57:16 -0000
@@ -666,6 +666,24 @@ themselves. When a synchronization disc
an output line, the associated synchronization directive is delayed
until the beginning of the next generated line.
address@hidden options: -s
address@hidden
+define(`twoline', `1
+2')
address@hidden 2 "stdin"
address@hidden
+dnl no line
+hello
address@hidden 4
address@hidden
+twoline
address@hidden
address@hidden 5
address@hidden
+goodbye
address@hidden
address@hidden example
+
@item -U @var{NAME}
@itemx address@hidden
This deletes any predefined meaning @var{NAME} might have. Obviously,
- Re: [PATCH] Line synchronisation output in comments,
Eric Blake <=