From: "Martin Liška" <mliska@suse.cz>
To: Thomas Koenig <tkoenig@netcologne.de>,
gcc mailing list <gcc@gcc.gnu.org>
Cc: "fortran@gcc.gnu.org" <fortran@gcc.gnu.org>
Subject: Re: Request for better syntax checking in lang.opt
Date: Fri, 21 Feb 2020 09:43:00 -0000 [thread overview]
Message-ID: <4a2af157-b21e-311f-3ff4-8dd432d67a05@suse.cz> (raw)
In-Reply-To: <bfa84e3c-b7b8-ffbe-93b8-a5da708b223d@netcologne.de>
[-- Attachment #1: Type: text/plain, Size: 750 bytes --]
On 2/20/20 7:08 PM, Thomas Koenig wrote:
> Hi Martin,
>
>> Sure, I can improve sanity checking.
>
> Thanks!
>
>> What exactly have you screwed up?
> I had, in lang.opt
>
> EnumValue
> Enum (gfc_fcoarray) String (native) Value (GFC_FCOARRAY_NATIVE)
>
> It was a bit non-obvious to me that this led to the whole sub-option
> being ignored due to
>
> *drum roll*
>
> the space between the keywords and the opening parenthesis. I have
> internalized the GNU style guides to such an extent that I hardly
> ever see the space there :-)
Hello.
I was able to write a sanity check for these kind of issues, but it does
not resolve all similar issues for other keywords. It's not easy to do it.
Martin
>
> Regards
>
> Â Â Â Â Thomas
[-- Attachment #2: 0001-Make-more-sanity-checks-for-enums.patch --]
[-- Type: text/x-patch, Size: 1984 bytes --]
From 440fda0ccd2211cfd0478f50cc20d0969fe8bce0 Mon Sep 17 00:00:00 2001
From: Martin Liska <mliska@suse.cz>
Date: Fri, 21 Feb 2020 10:40:57 +0100
Subject: [PATCH] Make more sanity checks for enums.
---
gcc/opt-functions.awk | 13 +++++++++++++
gcc/opt-read.awk | 10 +++++-----
2 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/gcc/opt-functions.awk b/gcc/opt-functions.awk
index 2f0442dc563..be4b9e66165 100644
--- a/gcc/opt-functions.awk
+++ b/gcc/opt-functions.awk
@@ -72,6 +72,19 @@ function opt_args(name, flags)
return flags
}
+# If FLAGS contains a "NAME(...argument...)" flag, return the value
+# of the argument. Print error message otherwise.
+function opt_args_non_empty(name, flags, description)
+{
+ args = opt_args(name, flags)
+ if (args == "")
+ {
+ print "Empty option argument '" name "' during parsing of: " flags >> "/dev/stderr"
+ exit 1
+ }
+ return args
+}
+
# Return the Nth comma-separated element of S. Return the empty string
# if S does not contain N elements.
function nth_arg(n, s)
diff --git a/gcc/opt-read.awk b/gcc/opt-read.awk
index a2e16f29aff..9bb9dfcf6ca 100644
--- a/gcc/opt-read.awk
+++ b/gcc/opt-read.awk
@@ -81,8 +81,8 @@ BEGIN {
}
else if ($1 == "Enum") {
props = $2
- name = opt_args("Name", props)
- type = opt_args("Type", props)
+ name = opt_args_non_empty("Name", props)
+ type = opt_args_non_empty("Type", props)
unknown_error = opt_args("UnknownError", props)
enum_names[n_enums] = name
enum_type[name] = type
@@ -93,9 +93,9 @@ BEGIN {
}
else if ($1 == "EnumValue") {
props = $2
- enum_name = opt_args("Enum", props)
- string = opt_args("String", props)
- value = opt_args("Value", props)
+ enum_name = opt_args_non_empty("Enum", props)
+ string = opt_args_non_empty("String", props)
+ value = opt_args_non_empty("Value", props)
val_flags = "0"
val_flags = val_flags \
test_flag("Canonical", props, "| CL_ENUM_CANONICAL") \
--
2.25.0
next prev parent reply other threads:[~2020-02-21 9:43 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-20 7:29 Thomas Koenig
2020-02-20 8:16 ` Martin Liška
2020-02-20 18:08 ` Thomas Koenig
2020-02-21 9:43 ` Martin Liška [this message]
2020-02-23 9:48 ` Thomas Koenig
2020-03-02 9:49 ` Martin Liška
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4a2af157-b21e-311f-3ff4-8dd432d67a05@suse.cz \
--to=mliska@suse.cz \
--cc=fortran@gcc.gnu.org \
--cc=gcc@gcc.gnu.org \
--cc=tkoenig@netcologne.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).