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

Side by Side Diff: tools/dom/scripts/dartgenerator.py

Issue 1763063003: Fixed typedef used globally in IDLs (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: Created 4 years, 9 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 unified diff | Download patch
« no previous file with comments | « tools/dom/dom.json ('k') | tools/dom/scripts/generator.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/python 1 #!/usr/bin/python
2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
3 # for details. All rights reserved. Use of this source code is governed by a 3 # for details. All rights reserved. Use of this source code is governed by a
4 # BSD-style license that can be found in the LICENSE file. 4 # BSD-style license that can be found in the LICENSE file.
5 5
6 """This module generates Dart APIs from the IDL database.""" 6 """This module generates Dart APIs from the IDL database."""
7 7
8 import emitter 8 import emitter
9 import idlnode 9 import idlnode
10 import logging 10 import logging
11 import os 11 import os
12 import re 12 import re
13 import shutil 13 import shutil
14 from generator import * 14 from generator import *
15 from idlnode import IDLType 15 from idlnode import IDLType, resolveTypedef
16 16
17 _logger = logging.getLogger('dartgenerator') 17 _logger = logging.getLogger('dartgenerator')
18 18
19 def MergeNodes(node, other): 19 def MergeNodes(node, other):
20 node.operations.extend(other.operations) 20 node.operations.extend(other.operations)
21 for attribute in other.attributes: 21 for attribute in other.attributes:
22 if not node.has_attribute(attribute): 22 if not node.has_attribute(attribute):
23 node.attributes.append(attribute) 23 node.attributes.append(attribute)
24 24
25 node.constants.extend(other.constants) 25 node.constants.extend(other.constants)
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
91 type_name = idl_type.id 91 type_name = idl_type.id
92 if (type_name is not None and 92 if (type_name is not None and
93 self._IsCompoundType(database, type_name)): 93 self._IsCompoundType(database, type_name)):
94 continue 94 continue
95 # Ignore constructor warnings. 95 # Ignore constructor warnings.
96 if not (interface.id in ['Window', 'WorkerContext', 96 if not (interface.id in ['Window', 'WorkerContext',
97 'WorkerGlobalScope'] and 97 'WorkerGlobalScope'] and
98 type_name.endswith('Constructor')): 98 type_name.endswith('Constructor')):
99 _logger.warn('removing %s in %s which has unidentified type %s' % 99 _logger.warn('removing %s in %s which has unidentified type %s' %
100 (node_name, interface.id, type_name)) 100 (node_name, interface.id, type_name))
101
102 # One last check is the type a typedef in an IDL file (the typedefs
103 # are treated as global).
104 resolvedType = resolveTypedef(idl_type)
105 if (resolvedType != idl_type):
106 idl_type.id = resolvedType.id
107 idl_type.nullable = resolvedType.nullable
108 continue
109
101 return False 110 return False
102 return True 111 return True
103 112
104 interface.constants = filter(IsIdentified, interface.constants) 113 interface.constants = filter(IsIdentified, interface.constants)
105 interface.attributes = filter(IsIdentified, interface.attributes) 114 interface.attributes = filter(IsIdentified, interface.attributes)
106 interface.operations = filter(IsIdentified, interface.operations) 115 interface.operations = filter(IsIdentified, interface.operations)
107 interface.parents = filter(IsIdentified, interface.parents) 116 interface.parents = filter(IsIdentified, interface.parents)
108 117
109 def FilterInterfaces(self, database, 118 def FilterInterfaces(self, database,
110 and_annotations=[], 119 and_annotations=[],
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
253 if ((operation.id == 'setInterval' or operation.id == 'setTimeout') and \ 262 if ((operation.id == 'setInterval' or operation.id == 'setTimeout') and \
254 operation.arguments[0].type.id == 'any'): 263 operation.arguments[0].type.id == 'any'):
255 operation.arguments.pop(2) 264 operation.arguments.pop(2)
256 265
257 # Massage any operation argument type that is IDLEnum to String. 266 # Massage any operation argument type that is IDLEnum to String.
258 for index, argument in enumerate(operation.arguments): 267 for index, argument in enumerate(operation.arguments):
259 type_name = argument.type.id 268 type_name = argument.type.id
260 if database.HasEnum(type_name): 269 if database.HasEnum(type_name):
261 operation.arguments[index].type = IDLType('DOMString') 270 operation.arguments[index].type = IDLType('DOMString')
262 271
OLDNEW
« no previous file with comments | « tools/dom/dom.json ('k') | tools/dom/scripts/generator.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698