New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 877534 link

Starred by 2 users

Issue metadata

Status: Untriaged
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 2
Type: Bug



Sign in to add a comment

Improve mojom bindings generator errors

Project Member Reported by sky@chromium.org, Aug 24

Issue description

If a mojom has errors in it, more often than not you get python stack traces as the errors. These are often very cryptic. For example, I was refactoring some code and moved some mojo structures into a different namespace. I needed to qualify usage in some places. That was not at all obvious from the error output:


FAILED: gen/services/ws/public/mojom/event_injector.mojom-shared-message-ids.h gen/services/ws/public/mojom/gpu.mojom-shared-message-ids.h gen/services/ws/public/m\
ojom/remoting_event_injector.mojom-shared-message-ids.h gen/services/ws/public/mojom/screen_provider_observer.mojom-shared-message-ids.h gen/services/ws/public/moj\
om/user_activity_monitor.mojom-shared-message-ids.h gen/services/ws/public/mojom/window_manager.mojom-shared-message-ids.h gen/services/ws/public/mojom/window_mana\
ger_constants.mojom-shared-message-ids.h gen/services/ws/public/mojom/window_server_test.mojom-shared-message-ids.h gen/services/ws/public/mojom/window_tree.mojom-\
shared-message-ids.h gen/services/ws/public/mojom/window_tree_constants.mojom-shared-message-ids.h gen/services/ws/public/mojom/arc.mojom-shared-message-ids.h
python ../../mojo/public/tools/bindings/mojom_bindings_generator.py --use_bundled_pylibs generate -d ../../ -I ../../ -o gen --bytecode_path gen/mojo/public/tools/\
bindings -I ../../ -I ../../mojo/services --filelist=__services_ws_public_mojom_mojom__generate_message_ids___build_toolchain_linux_clang_x64__rule..rsp --generate\
_non_variant_code --generate_message_ids -g c++
Traceback (most recent call last):
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 516, in <module>
    sys.exit(main())
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 512, in main
    return args.func(args, remaining_args)
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 254, in _Generate
    RelativePath(filename, args.depth), [])
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 224, in _GenerateModule
    generator.GenerateFiles(filtered_args)
  File "/tertiary/builds/build2/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py", line 404, in GenerateFiles
    self.Write(self._GenerateModuleSharedMessageIdsHeader(),
  File "/tertiary/builds/build2/src/mojo/public/tools/bindings/pylib/mojom/generate/template_expander.py", line 36, in GeneratorInternal
    parameters = generator(*args, **kwargs2)
  File "/tertiary/builds/build2/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py", line 393, in _GenerateModuleSharedMessageIdsHeader
    return self._GetJinjaExports()
  File "/tertiary/builds/build2/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py", line 299, in _GetJinjaExports
    "extra_traits_headers": self._GetExtraTraitsHeaders(),
  File "/tertiary/builds/build2/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py", line 208, in _GetExtraTraitsHeaders
    for typemap in self._GetAllUsedTypemaps():
  File "/tertiary/builds/build2/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py", line 254, in _GetAllUsedTypemaps
    AddKind(parameter.kind)
  File "/tertiary/builds/build2/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py", line 230, in AddKind
    AddKind(kind.kind)
  File "/tertiary/builds/build2/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py", line 235, in AddKind
    name = self._GetFullMojomNameForKind(kind)
  File "/tertiary/builds/build2/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py", line 454, in _GetFullMojomNameForKind
    return _NameFormatter(kind, self.variant).FormatForMojom()
  File "/tertiary/builds/build2/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py", line 80, in FormatForMojom
    return self.Format(".")
  File "/tertiary/builds/build2/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py", line 68, in Format
    parts.extend(self._GetName(internal, flatten_nested_kind))
  File "/tertiary/builds/build2/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py", line 110, in _GetName
    name_parts.append(self._MapKindName(self._token, internal))
  File "/tertiary/builds/build2/src/mojo/public/tools/bindings/generators/mojom_cpp_generator.py", line 84, in _MapKindName
    return token.name
AttributeError: 'Kind' object has no attribute 'name'

Not only is the output unhelpful, it doesn't even tell me what file (well, I see there is a possible list of files, but it's quite a list)!
 
Cc: roc...@chromium.org
I just ran into something similar myself. I know from experience that error handling in python is a PITA, but it's currently a pretty unpleasant debugging experience.

Sign in to add a comment