optgen: make more sanity checks for enums.

* opt-functions.awk (opt_args_non_empty): New function.
	* opt-read.awk: Use the function for various option arguments.
This commit is contained in:
Martin Liska 2020-05-05 16:13:46 +02:00
parent 0f62caf58b
commit 2d8a60a63c
No known key found for this signature in database
GPG Key ID: 4DC182DC0FA73785
3 changed files with 20 additions and 5 deletions

View File

@ -1,3 +1,8 @@
2020-05-05 Martin Liska <mliska@suse.cz>
* opt-functions.awk (opt_args_non_empty): New function.
* opt-read.awk: Use the function for various option arguments.
2020-05-05 Martin Liska <mliska@suse.cz> 2020-05-05 Martin Liska <mliska@suse.cz>
PR driver/94330 PR driver/94330

View File

@ -72,6 +72,16 @@ function opt_args(name, flags)
return 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 "#error Empty option argument '" name "' during parsing of: " flags
return args
}
# Return the Nth comma-separated element of S. Return the empty string # Return the Nth comma-separated element of S. Return the empty string
# if S does not contain N elements. # if S does not contain N elements.
function nth_arg(n, s) function nth_arg(n, s)

View File

@ -81,8 +81,8 @@ BEGIN {
} }
else if ($1 == "Enum") { else if ($1 == "Enum") {
props = $2 props = $2
name = opt_args("Name", props) name = opt_args_non_empty("Name", props)
type = opt_args("Type", props) type = opt_args_non_empty("Type", props)
unknown_error = opt_args("UnknownError", props) unknown_error = opt_args("UnknownError", props)
enum_names[n_enums] = name enum_names[n_enums] = name
enum_type[name] = type enum_type[name] = type
@ -93,9 +93,9 @@ BEGIN {
} }
else if ($1 == "EnumValue") { else if ($1 == "EnumValue") {
props = $2 props = $2
enum_name = opt_args("Enum", props) enum_name = opt_args_non_empty("Enum", props)
string = opt_args("String", props) string = opt_args_non_empty("String", props)
value = opt_args("Value", props) value = opt_args_non_empty("Value", props)
val_flags = "0" val_flags = "0"
val_flags = val_flags \ val_flags = val_flags \
test_flag("Canonical", props, "| CL_ENUM_CANONICAL") \ test_flag("Canonical", props, "| CL_ENUM_CANONICAL") \