Skip to content

Commit

Permalink
Improve parser error messages (#415)
Browse files Browse the repository at this point in the history
* Improve parser error messages

For example, instead of:

    rosidl_adapter.parser.InvalidResourceName: foo

We have the more descriptive:

    rosidl_adapter.parser.InvalidResourceName: 'foo' is an invalid message
    name.  It should have the pattern '^[A-Z][A-Za-z0-9]*$'

Signed-off-by: Jacob Perron <jacob@openrobotics.org>
  • Loading branch information
jacobperron authored Sep 16, 2019
1 parent 07a2ab5 commit 9baee14
Showing 1 changed file with 13 additions and 4 deletions.
17 changes: 13 additions & 4 deletions rosidl_adapter/rosidl_adapter/parser.py
Original file line number Diff line number Diff line change
Expand Up @@ -191,9 +191,14 @@ def __init__(self, type_string, context_package_name=None):
self.pkg_name = context_package_name
self.type = type_string
if not is_valid_package_name(self.pkg_name):
raise InvalidResourceName(self.pkg_name)
raise InvalidResourceName(
"'{}' is an invalid package name. It should have the pattern '{}'".format(
self.pkg_name, VALID_PACKAGE_NAME_PATTERN.pattern))
if not is_valid_message_name(self.type):
raise InvalidResourceName(self.type)
raise InvalidResourceName(
"'{}' is an invalid message name. It should have the pattern '{}'".format(
self.type, VALID_MESSAGE_NAME_PATTERN.pattern))

self.string_upper_bound = None

def is_primitive_type(self):
Expand Down Expand Up @@ -305,7 +310,9 @@ def __init__(self, primitive_type, name, value_string):
primitive_type)
self.type = primitive_type
if not is_valid_constant_name(name):
raise NameError("the constant name '%s' is not valid" % name)
raise NameError(
"'{}' is an invalid constant name. It should have the pattern '{}'".format(
name, VALID_CONSTANT_NAME_PATTERN.pattern))
self.name = name
if value_string is None:
raise ValueError("the constant value must not be 'None'")
Expand Down Expand Up @@ -337,7 +344,9 @@ def __init__(self, type_, name, default_value_string=None):
"the field type '%s' must be a 'Type' instance" % type_)
self.type = type_
if not is_valid_field_name(name):
raise NameError("the field name '%s' is not valid" % name)
raise NameError(
"'{}' is an invalid field name. It should have the pattern '{}'".format(
name, VALID_FIELD_NAME_PATTERN.pattern))
self.name = name
if default_value_string is None:
self.default_value = None
Expand Down

0 comments on commit 9baee14

Please sign in to comment.