Commit 66995237 authored by Raul Tambre's avatar Raul Tambre Committed by Commit Bot

mojo: Fix map() Python 3 incompatibility

map() returns a list in Python 2. Python 3 returns an iterator and if a list is needed it's necessary to call list().
Calling list() results in the same behaviour in both.
There should be no behavioural changes.

Ran "git cl format".

Fixes the following errors:
Traceback (most recent call last):
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 556, in <module>
    sys.exit(main())
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 551, in main
    return args.func(args, remaining_args)
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 267, in _Generate
    processor._GenerateModule(args, remaining_args, generator_modules,
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 238, in _GenerateModule
    generator.GenerateFiles(filtered_args)
  File "C:\Google\chromium\src\mojo\public\tools\bindings\generators\mojom_cpp_generator.py", line 461, in GenerateFiles
    self.WriteWithComment(self._GenerateModuleSharedMessageIdsHeader(),
  File "C:\Google\chromium\src\mojo\public\tools\bindings\pylib\mojom\generate\template_expander.py", line 36, in GeneratorInternal
    parameters = generator(*args, **kwargs2)
  File "C:\Google\chromium\src\mojo\public\tools\bindings\generators\mojom_cpp_generator.py", line 438, in _GenerateModuleSharedMessageIdsHeader
    return self._GetJinjaExports()
  File "C:\Google\chromium\src\mojo\public\tools\bindings\generators\mojom_cpp_generator.py", line 330, in _GetJinjaExports
    "extra_public_headers": self._GetExtraPublicHeaders(),
  File "C:\Google\chromium\src\mojo\public\tools\bindings\generators\mojom_cpp_generator.py", line 276, in _GetExtraPublicHeaders
    self.module.structs + all_enums + self.module.unions)
TypeError: unsupported operand type(s) for +: 'map' and 'list'

Traceback (most recent call last):
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 556, in <module>
    sys.exit(main())
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 551, in main
    return args.func(args, remaining_args)
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 267, in _Generate
    processor._GenerateModule(args, remaining_args, generator_modules,
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 238, in _GenerateModule
    generator.GenerateFiles(filtered_args)
  File "C:\Google\chromium\src\mojo\public\tools\bindings\generators\mojom_cpp_generator.py", line 461, in GenerateFiles
    self.WriteWithComment(self._GenerateModuleSharedMessageIdsHeader(),
  File "C:\Google\chromium\src\mojo\public\tools\bindings\pylib\mojom\generate\template_expander.py", line 36, in GeneratorInternal
    parameters = generator(*args, **kwargs2)
  File "C:\Google\chromium\src\mojo\public\tools\bindings\generators\mojom_cpp_generator.py", line 438, in _GenerateModuleSharedMessageIdsHeader
    return self._GetJinjaExports()
  File "C:\Google\chromium\src\mojo\public\tools\bindings\generators\mojom_cpp_generator.py", line 342, in _GetJinjaExports
    "uses_interfaces": self._ReferencesAnyHandleOrInterfaceType(),
  File "C:\Google\chromium\src\mojo\public\tools\bindings\generators\mojom_cpp_generator.py", line 289, in _ReferencesAnyHandleOrInterfaceType
    if len(self.module.interfaces) > 0:
TypeError: object of type 'map' has no len()

Traceback (most recent call last):
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 556, in <module>
    sys.exit(main())
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 551, in main
    return args.func(args, remaining_args)
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 267, in _Generate
    processor._GenerateModule(args, remaining_args, generator_modules,
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 238, in _GenerateModule
    generator.GenerateFiles(filtered_args)
  File "C:\Google\chromium\src\mojo\public\tools\bindings\generators\mojom_cpp_generator.py", line 461, in GenerateFiles
    self.WriteWithComment(self._GenerateModuleSharedMessageIdsHeader(),
  File "C:\Google\chromium\src\mojo\public\tools\bindings\pylib\mojom\generate\template_expander.py", line 36, in GeneratorInternal
    parameters = generator(*args, **kwargs2)
  File "C:\Google\chromium\src\mojo\public\tools\bindings\generators\mojom_cpp_generator.py", line 438, in _GenerateModuleSharedMessageIdsHeader
    return self._GetJinjaExports()
  File "C:\Google\chromium\src\mojo\public\tools\bindings\generators\mojom_cpp_generator.py", line 343, in _GetJinjaExports
    "uses_native_types": self._ReferencesAnyNativeType(),
  File "C:\Google\chromium\src\mojo\public\tools\bindings\generators\mojom_cpp_generator.py", line 303, in _ReferencesAnyNativeType
    m.enums + m.structs + m.interfaces))
TypeError: unsupported operand type(s) for +: 'map' and 'list'

Traceback (most recent call last):
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 556, in <module>
    sys.exit(main())
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 551, in main
    return args.func(args, remaining_args)
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 267, in _Generate
    processor._GenerateModule(args, remaining_args, generator_modules,
  File "../../mojo/public/tools/bindings/mojom_bindings_generator.py", line 215, in _GenerateModule
    AddComputedData(module)
  File "C:\Google\chromium\src\mojo\public\tools\bindings\pylib\mojom\generate\generator.py", line 184, in AddComputedData
    _AddStructComputedData(True, struct)
  File "C:\Google\chromium\src\mojo\public\tools\bindings\pylib\mojom\generate\generator.py", line 123, in _AddStructComputedData
    struct.packed = pack.PackedStruct(struct)
  File "C:\Google\chromium\src\mojo\public\tools\bindings\pylib\mojom\generate\pack.py", line 130, in __init__
    if (len(struct.fields) == 0):
TypeError: object of type 'map' has no len()

Bug: 941669
Change-Id: I8f7d3fa25a610db32446ad6b2baa6edac1723601
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1995335Reviewed-by: default avatarKen Rockot <rockot@google.com>
Commit-Queue: Raul Tambre <raul@tambre.ee>
Auto-Submit: Raul Tambre <raul@tambre.ee>
Cr-Commit-Position: refs/heads/master@{#732389}
parent 4184bbb0
...@@ -653,18 +653,18 @@ def _Module(tree, path, imports): ...@@ -653,18 +653,18 @@ def _Module(tree, path, imports):
filename = os.path.basename(path) filename = os.path.basename(path)
# First pass collects kinds. # First pass collects kinds.
module.enums = map( module.enums = list(
lambda enum: _Enum(module, enum, None), map(lambda enum: _Enum(module, enum, None),
_ElemsOfType(tree.definition_list, ast.Enum, filename)) _ElemsOfType(tree.definition_list, ast.Enum, filename)))
module.structs = map( module.structs = list(
lambda struct: _Struct(module, struct), map(lambda struct: _Struct(module, struct),
_ElemsOfType(tree.definition_list, ast.Struct, filename)) _ElemsOfType(tree.definition_list, ast.Struct, filename)))
module.unions = map( module.unions = list(
lambda union: _Union(module, union), map(lambda union: _Union(module, union),
_ElemsOfType(tree.definition_list, ast.Union, filename)) _ElemsOfType(tree.definition_list, ast.Union, filename)))
module.interfaces = map( module.interfaces = list(
lambda interface: _Interface(module, interface), map(lambda interface: _Interface(module, interface),
_ElemsOfType(tree.definition_list, ast.Interface, filename)) _ElemsOfType(tree.definition_list, ast.Interface, filename)))
module.constants = map( module.constants = map(
lambda constant: _Constant(module, constant, None), lambda constant: _Constant(module, constant, None),
_ElemsOfType(tree.definition_list, ast.Const, filename)) _ElemsOfType(tree.definition_list, ast.Const, filename))
...@@ -673,8 +673,9 @@ def _Module(tree, path, imports): ...@@ -673,8 +673,9 @@ def _Module(tree, path, imports):
# to refer to kinds defined anywhere in the mojom. # to refer to kinds defined anywhere in the mojom.
all_defined_kinds = {} all_defined_kinds = {}
for struct in module.structs: for struct in module.structs:
struct.fields = map(lambda field: struct.fields = list(
_StructField(module, field, struct), struct.fields_data) map(lambda field: _StructField(module, field, struct),
struct.fields_data))
del struct.fields_data del struct.fields_data
all_defined_kinds[struct.spec] = struct all_defined_kinds[struct.spec] = struct
for enum in struct.enums: for enum in struct.enums:
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment