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

Unified Diff: tools/dom/scripts/databasebuilder.py

Issue 1682783002: Dartium 45 roll (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: removed Created 4 years, 10 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/dom/scripts/database.py ('k') | tools/dom/scripts/fremontcutbuilder.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/dom/scripts/databasebuilder.py
diff --git a/tools/dom/scripts/databasebuilder.py b/tools/dom/scripts/databasebuilder.py
index f61b81be78f37e4118e6720526bae91d2e3440e5..ceb6eb1cafbf8126c5ce363359c8e27d4a165771 100755
--- a/tools/dom/scripts/databasebuilder.py
+++ b/tools/dom/scripts/databasebuilder.py
@@ -20,9 +20,7 @@ import idl_validator
import compiler
import compute_interfaces_info_individual
-from compute_interfaces_info_individual import compute_info_individual, info_individual
-import compute_interfaces_info_overall
-from compute_interfaces_info_overall import compute_interfaces_info_overall, interfaces_info
+from compute_interfaces_info_individual import InterfaceInfoCollector
import idl_definitions
from idlnode import *
@@ -132,7 +130,7 @@ class Build():
# Create compiler.
self.idl_compiler = compiler.IdlCompilerDart(self.output_directory,
attrib_file,
- interfaces_info=interfaces_info,
+ interfaces_info=provider._info_collector.interfaces_info,
only_if_changed=True)
def format_exception(self, e):
@@ -168,13 +166,15 @@ class DatabaseBuilder(object):
def __init__(self, database):
"""DatabaseBuilder is used for importing and merging interfaces into
the Database"""
+ self._info_collector = InterfaceInfoCollector()
+
self._database = database
self._imported_interfaces = []
self._impl_stmts = []
self.conditionals_met = set()
# Spin up the new IDL parser.
- self.build = Build(None)
+ self.build = Build(self)
# Global typedef to mapping.
self.global_type_defs = monitored.Dict('databasebuilder.global_type_defs', {
@@ -186,13 +186,21 @@ class DatabaseBuilder(object):
# a type name.
def _resolve_type_defs(self, idl_file):
for type_node in idl_file.all(IDLType):
+ resolved = False
type_name = type_node.id
for typedef in self.global_type_defs:
seq_name_typedef = 'sequence<%s>' % typedef
if type_name == typedef:
type_node.id = self.global_type_defs[typedef]
+ resolved = True
elif type_name == seq_name_typedef:
type_node.id = 'sequence<%s>' % self.global_type_defs[typedef]
+ resolved = True
+ if not(resolved):
+ for typedef in idl_file.typeDefs:
+ if type_name == typedef.id:
+ type_node.id = typedef.type.id
+ resolved = True
def _strip_ext_attributes(self, idl_file):
"""Strips unuseful extended attributes."""
@@ -559,11 +567,11 @@ class DatabaseBuilder(object):
if not(is_dart_idl):
start_time = time.time()
- # 2-stage computation: individual, then overall
+ # Compute information for individual files
+ # Information is stored in global variables interfaces_info and
+ # partial_interface_files.
for file_path in file_paths:
- compute_info_individual(file_path)
- info_individuals = [info_individual()]
- compute_interfaces_info_overall(info_individuals)
+ self._info_collector.collect_info(file_path)
end_time = time.time()
print 'Compute dependencies %s seconds' % round((end_time - start_time), 2)
@@ -572,7 +580,7 @@ class DatabaseBuilder(object):
# file is special in that more than one interface can exist in this file.
implement_pairs = self._compute_dart_idl_implements(file_paths[0])
- interfaces_info['__dart_idl___'] = {
+ self._info_collector.interfaces_info['__dart_idl___'] = {
'implement_pairs': implement_pairs,
}
@@ -645,6 +653,10 @@ class DatabaseBuilder(object):
for dictionary in idl_file.dictionaries:
self._database.AddDictionary(dictionary)
+ # TODO(terry): Hack to remember all typedef unions they're mapped to any
+ # - no type.
+ for typedef in idl_file.typeDefs:
+ self._database.AddTypeDef(typedef)
def _is_node_enabled(self, node, idl_defines):
if not 'Conditional' in node.ext_attrs:
« no previous file with comments | « tools/dom/scripts/database.py ('k') | tools/dom/scripts/fremontcutbuilder.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698