Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(21)

Side by Side Diff: mojo/public/tools/bindings/pylib/mojom/generate/mojom_translator.py

Issue 1418453017: Fix some minor bugs related to imports in the new mojom bindings generator. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Fix tests. Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | mojo/public/tools/bindings/pylib/mojom/generate/mojom_translator_unittest.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright 2015 The Chromium Authors. All rights reserved. 2 # Copyright 2015 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 # 5 #
6 # This module is responsible for translating a MojomFileGraph (see 6 # This module is responsible for translating a MojomFileGraph (see
7 # mojom_files.mojom) to one or more module.Module. 7 # mojom_files.mojom) to one or more module.Module.
8 # 8 #
9 # This module takes the output of the mojom parser, a MojomFileGraph and 9 # This module takes the output of the mojom parser, a MojomFileGraph and
10 # translates it to the input of the code generators, a module.Module object. 10 # translates it to the input of the code generators, a module.Module object.
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 they are imported from another module). 311 they are imported from another module).
312 312
313 Args: 313 Args:
314 module_type: {module.Struct|Union|Enum|Interface} to be populated. 314 module_type: {module.Struct|Union|Enum|Interface} to be populated.
315 mojom: {MojomStruct|MojomUnion|MojomEnum|MojomInterface} to be translated. 315 mojom: {MojomStruct|MojomUnion|MojomEnum|MojomInterface} to be translated.
316 """ 316 """
317 if mojom.decl_data.source_file_info: 317 if mojom.decl_data.source_file_info:
318 if mojom.decl_data.source_file_info.file_name == self._file_name: 318 if mojom.decl_data.source_file_info.file_name == self._file_name:
319 module_type.module = self._module 319 module_type.module = self._module
320 else: 320 else:
321 module_type.imported_from = self._imports[ 321 imported_from = self._imports[
322 mojom.decl_data.source_file_info.file_name] 322 mojom.decl_data.source_file_info.file_name]
323 module_type.imported_from = imported_from
324 module_type.module = imported_from['module']
325
323 326
324 def OrdinalFromMojom(self, mojom): 327 def OrdinalFromMojom(self, mojom):
325 """Extracts the declared ordinal from a mojom StructField or UnionField. 328 """Extracts the declared ordinal from a mojom StructField or UnionField.
326 329
327 Args: 330 Args:
328 mojom: {MojomStruct|MojomUnion} from which the ordinal is to be extracted. 331 mojom: {MojomStruct|MojomUnion} from which the ordinal is to be extracted.
329 332
330 Returns: 333 Returns:
331 {int} if an ordinal was present, {NoneType} otherwise. 334 {int} if an ordinal was present, {NoneType} otherwise.
332 """ 335 """
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
614 (module.Interface, self.InterfaceFromMojom), 617 (module.Interface, self.InterfaceFromMojom),
615 } 618 }
616 module_type_class, from_mojom = user_defined_types[mojom_type.tag] 619 module_type_class, from_mojom = user_defined_types[mojom_type.tag]
617 module_type = module_type_class() 620 module_type = module_type_class()
618 # It is necessary to cache the type object before populating it since in 621 # It is necessary to cache the type object before populating it since in
619 # the course of populating it, it may be necessary to resolve that same 622 # the course of populating it, it may be necessary to resolve that same
620 # type (say, a struct with a field of its own type). 623 # type (say, a struct with a field of its own type).
621 self._type_cache[type_key] = module_type 624 self._type_cache[type_key] = module_type
622 from_mojom(module_type, mojom_type) 625 from_mojom(module_type, mojom_type)
623 626
627 # module.py expects the spec of user defined types to be set when
628 # constructing map and array types, but the value appears unimportant.
629 module_type.spec = 'dummyspec'
630
624 return module_type 631 return module_type
625 632
626 633
627 def TranslateFileGraph(graph): 634 def TranslateFileGraph(graph):
628 """Translates a mojom_types_mojom.MojomFileGraph to module.Module(s). 635 """Translates a mojom_types_mojom.MojomFileGraph to module.Module(s).
629 636
630 The input is the output of the parser. The output is the input to the 637 The input is the output of the parser. The output is the input to the
631 various bindings generators. 638 various bindings generators.
632 639
633 Args: 640 Args:
634 graph: {mojom_types_mojom.MojomFileGraph} to be translated. 641 graph: {mojom_types_mojom.MojomFileGraph} to be translated.
635 642
636 Return: 643 Return:
637 {dict<str, module.Module>} mapping the file's name to its module.Module 644 {dict<str, module.Module>} mapping the file's name to its module.Module
638 translation for all files in graph.files. 645 translation for all files in graph.files.
639 """ 646 """
640 return {file_name: FileTranslator(graph, file_name).Translate() 647 return {file_name: FileTranslator(graph, file_name).Translate()
641 for file_name in graph.files} 648 for file_name in graph.files}
OLDNEW
« no previous file with comments | « no previous file | mojo/public/tools/bindings/pylib/mojom/generate/mojom_translator_unittest.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698