|
26 | 26 | from rosidl_parser.definition import AbstractGenericString |
27 | 27 | from rosidl_parser.definition import AbstractNestedType |
28 | 28 | from rosidl_parser.definition import AbstractSequence |
| 29 | +from rosidl_parser.definition import Action |
29 | 30 | from rosidl_parser.definition import Array |
30 | 31 | from rosidl_parser.definition import BasicType |
31 | 32 | from rosidl_parser.definition import CHARACTER_TYPES |
|
35 | 36 | from rosidl_parser.definition import INTEGER_TYPES |
36 | 37 | from rosidl_parser.definition import Message |
37 | 38 | from rosidl_parser.definition import NamespacedType |
| 39 | +from rosidl_parser.definition import Service |
38 | 40 | from rosidl_parser.parser import parse_idl_file |
39 | 41 |
|
40 | 42 | SPECIAL_NESTED_BASIC_TYPES = { |
@@ -77,16 +79,45 @@ def generate_py(generator_arguments_file, typesupport_impls): |
77 | 79 | idl_content.elements += idl_file.content.elements |
78 | 80 |
|
79 | 81 | # NOTE(sam): remove when a language specific name mangling is implemented |
| 82 | + |
| 83 | + def print_warning_if_reserved_keyword(member_name, interface_type, interface_name): |
| 84 | + if (keyword.iskeyword(member.name)): |
| 85 | + print( |
| 86 | + "Member name '{}' in the {} '{}' is a " |
| 87 | + 'reserved keyword in Python and is not supported ' |
| 88 | + 'at the moment. Please use a different name.' |
| 89 | + .format(member_name, interface_type, interface_name), |
| 90 | + file=sys.stderr) |
| 91 | + |
80 | 92 | for message in idl_content.get_elements_of_type(Message): |
81 | 93 | for member in message.structure.members: |
82 | | - msg_name = message.structure.namespaced_type.name |
83 | | - if (keyword.iskeyword(member.name)): |
84 | | - print(('Member name "{}" in the message "{}" is a ' |
85 | | - 'reserved keyword in Python and is not supported ' |
86 | | - 'at the moment. Please use a different name.') |
87 | | - .format(member.name, msg_name), file=sys.stderr) |
88 | | - |
89 | | - # TODO(sam): add reseved keyword warnings for services and actions |
| 94 | + print_warning_if_reserved_keyword( |
| 95 | + member.name, 'message', |
| 96 | + message.structure.namespaced_type.name) |
| 97 | + |
| 98 | + for service in idl_content.get_elements_of_type(Service): |
| 99 | + for member in service.request_message.structure.members: |
| 100 | + print_warning_if_reserved_keyword( |
| 101 | + member.name, 'service request', |
| 102 | + service.namespaced_type.name) |
| 103 | + for member in service.response_message.structure.members: |
| 104 | + print_warning_if_reserved_keyword( |
| 105 | + member.name, 'service response', |
| 106 | + service.namespaced_type.name) |
| 107 | + |
| 108 | + for action in idl_content.get_elements_of_type(Action): |
| 109 | + for member in action.goal.structure.members: |
| 110 | + print_warning_if_reserved_keyword( |
| 111 | + member.name, 'action goal', |
| 112 | + action.namespaced_type.name) |
| 113 | + for member in action.feedback.structure.members: |
| 114 | + print_warning_if_reserved_keyword( |
| 115 | + member.name, 'action feedback', |
| 116 | + action.namespaced_type.name) |
| 117 | + for member in action.result.structure.members: |
| 118 | + print_warning_if_reserved_keyword( |
| 119 | + member.name, 'action result', |
| 120 | + action.namespaced_type.name) |
90 | 121 |
|
91 | 122 | for subfolder in modules.keys(): |
92 | 123 | with open(os.path.join(args['output_dir'], subfolder, '__init__.py'), 'w') as f: |
|
0 commit comments