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

Side by Side Diff: Source/bindings/scripts/v8_types.py

Issue 469243002: IDL: Prefer to extend IdlTypeBase instead of IdlType (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: drop import of IdlType Created 6 years, 4 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 | « Source/bindings/scripts/v8_methods.py ('k') | Source/bindings/scripts/v8_utilities.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 # Copyright (C) 2013 Google Inc. All rights reserved. 1 # Copyright (C) 2013 Google Inc. All rights reserved.
2 # 2 #
3 # Redistribution and use in source and binary forms, with or without 3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are 4 # modification, are permitted provided that the following conditions are
5 # met: 5 # met:
6 # 6 #
7 # * Redistributions of source code must retain the above copyright 7 # * Redistributions of source code must retain the above copyright
8 # notice, this list of conditions and the following disclaimer. 8 # notice, this list of conditions and the following disclaimer.
9 # * Redistributions in binary form must reproduce the above 9 # * Redistributions in binary form must reproduce the above
10 # copyright notice, this list of conditions and the following disclaimer 10 # copyright notice, this list of conditions and the following disclaimer
(...skipping 21 matching lines...) Expand all
32 class methods. 32 class methods.
33 33
34 Spec: 34 Spec:
35 http://www.w3.org/TR/WebIDL/#es-type-mapping 35 http://www.w3.org/TR/WebIDL/#es-type-mapping
36 36
37 Design doc: http://www.chromium.org/developers/design-documents/idl-compiler 37 Design doc: http://www.chromium.org/developers/design-documents/idl-compiler
38 """ 38 """
39 39
40 import posixpath 40 import posixpath
41 41
42 from idl_types import IdlType, IdlUnionType 42 from idl_types import IdlTypeBase, IdlType, IdlUnionType
43 import v8_attributes # for IdlType.constructor_type_name 43 import v8_attributes # for IdlType.constructor_type_name
44 from v8_globals import includes 44 from v8_globals import includes
45 45
46 46
47 ################################################################################ 47 ################################################################################
48 # V8-specific handling of IDL types 48 # V8-specific handling of IDL types
49 ################################################################################ 49 ################################################################################
50 50
51 NON_WRAPPER_TYPES = frozenset([ 51 NON_WRAPPER_TYPES = frozenset([
52 'CompareHow', 52 'CompareHow',
(...skipping 12 matching lines...) Expand all
65 'Float64Array': ('double', 'v8::kExternalDoubleArray'), 65 'Float64Array': ('double', 'v8::kExternalDoubleArray'),
66 'Int8Array': ('signed char', 'v8::kExternalByteArray'), 66 'Int8Array': ('signed char', 'v8::kExternalByteArray'),
67 'Int16Array': ('short', 'v8::kExternalShortArray'), 67 'Int16Array': ('short', 'v8::kExternalShortArray'),
68 'Int32Array': ('int', 'v8::kExternalIntArray'), 68 'Int32Array': ('int', 'v8::kExternalIntArray'),
69 'Uint8Array': ('unsigned char', 'v8::kExternalUnsignedByteArray'), 69 'Uint8Array': ('unsigned char', 'v8::kExternalUnsignedByteArray'),
70 'Uint8ClampedArray': ('unsigned char', 'v8::kExternalPixelArray'), 70 'Uint8ClampedArray': ('unsigned char', 'v8::kExternalPixelArray'),
71 'Uint16Array': ('unsigned short', 'v8::kExternalUnsignedShortArray'), 71 'Uint16Array': ('unsigned short', 'v8::kExternalUnsignedShortArray'),
72 'Uint32Array': ('unsigned int', 'v8::kExternalUnsignedIntArray'), 72 'Uint32Array': ('unsigned int', 'v8::kExternalUnsignedIntArray'),
73 } 73 }
74 74
75 IdlTypeBase.is_typed_array_element_type = False
75 IdlType.is_typed_array_element_type = property( 76 IdlType.is_typed_array_element_type = property(
76 lambda self: self.base_type in TYPED_ARRAYS) 77 lambda self: self.base_type in TYPED_ARRAYS)
77 IdlUnionType.is_typed_array_element_type = False
78 78
79 79
80 IdlTypeBase.is_wrapper_type = False
80 IdlType.is_wrapper_type = property( 81 IdlType.is_wrapper_type = property(
81 lambda self: (self.is_interface_type and 82 lambda self: (self.is_interface_type and
82 self.base_type not in NON_WRAPPER_TYPES)) 83 self.base_type not in NON_WRAPPER_TYPES))
83 84
84 85
85 ################################################################################ 86 ################################################################################
86 # C++ types 87 # C++ types
87 ################################################################################ 88 ################################################################################
88 89
89 CPP_TYPE_SAME_AS_IDL_TYPE = set([ 90 CPP_TYPE_SAME_AS_IDL_TYPE = set([
(...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after
211 212
212 def cpp_type_union(idl_type, extended_attributes=None, raw_type=False): 213 def cpp_type_union(idl_type, extended_attributes=None, raw_type=False):
213 return (member_type.cpp_type for member_type in idl_type.member_types) 214 return (member_type.cpp_type for member_type in idl_type.member_types)
214 215
215 216
216 def cpp_type_initializer_union(idl_type): 217 def cpp_type_initializer_union(idl_type):
217 return (member_type.cpp_type_initializer for member_type in idl_type.member_ types) 218 return (member_type.cpp_type_initializer for member_type in idl_type.member_ types)
218 219
219 220
220 # Allow access as idl_type.cpp_type if no arguments 221 # Allow access as idl_type.cpp_type if no arguments
221 IdlType.cpp_type = property(cpp_type) 222 IdlTypeBase.cpp_type = property(cpp_type)
222 IdlType.cpp_type_initializer = property(cpp_type_initializer) 223 IdlTypeBase.cpp_type_initializer = property(cpp_type_initializer)
224 IdlTypeBase.cpp_type_args = cpp_type
223 IdlUnionType.cpp_type = property(cpp_type_union) 225 IdlUnionType.cpp_type = property(cpp_type_union)
224 IdlUnionType.cpp_type_initializer = property(cpp_type_initializer_union) 226 IdlUnionType.cpp_type_initializer = property(cpp_type_initializer_union)
225 IdlType.cpp_type_args = cpp_type
226 IdlUnionType.cpp_type_args = cpp_type_union 227 IdlUnionType.cpp_type_args = cpp_type_union
227 228
228 229
229 def cpp_template_type(template, inner_type): 230 def cpp_template_type(template, inner_type):
230 """Returns C++ template specialized to type, with space added if needed.""" 231 """Returns C++ template specialized to type, with space added if needed."""
231 if inner_type.endswith('>'): 232 if inner_type.endswith('>'):
232 format_string = '{template}<{inner_type} >' 233 format_string = '{template}<{inner_type} >'
233 else: 234 else:
234 format_string = '{template}<{inner_type}>' 235 format_string = '{template}<{inner_type}>'
235 return format_string.format(template=template, inner_type=inner_type) 236 return format_string.format(template=template, inner_type=inner_type)
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
270 IdlType.implemented_as = property(implemented_as) 271 IdlType.implemented_as = property(implemented_as)
271 272
272 IdlType.set_implemented_as_interfaces = classmethod( 273 IdlType.set_implemented_as_interfaces = classmethod(
273 lambda cls, new_implemented_as_interfaces: 274 lambda cls, new_implemented_as_interfaces:
274 cls.implemented_as_interfaces.update(new_implemented_as_interfaces)) 275 cls.implemented_as_interfaces.update(new_implemented_as_interfaces))
275 276
276 277
277 # [GarbageCollected] 278 # [GarbageCollected]
278 IdlType.garbage_collected_types = set() 279 IdlType.garbage_collected_types = set()
279 280
281 IdlTypeBase.is_garbage_collected = False
280 IdlType.is_garbage_collected = property( 282 IdlType.is_garbage_collected = property(
281 lambda self: self.base_type in IdlType.garbage_collected_types) 283 lambda self: self.base_type in IdlType.garbage_collected_types)
282 284
283 IdlType.set_garbage_collected_types = classmethod( 285 IdlType.set_garbage_collected_types = classmethod(
284 lambda cls, new_garbage_collected_types: 286 lambda cls, new_garbage_collected_types:
285 cls.garbage_collected_types.update(new_garbage_collected_types)) 287 cls.garbage_collected_types.update(new_garbage_collected_types))
286 288
287 289
288 # [WillBeGarbageCollected] 290 # [WillBeGarbageCollected]
289 IdlType.will_be_garbage_collected_types = set() 291 IdlType.will_be_garbage_collected_types = set()
290 292
293 IdlTypeBase.is_will_be_garbage_collected = False
291 IdlType.is_will_be_garbage_collected = property( 294 IdlType.is_will_be_garbage_collected = property(
292 lambda self: self.base_type in IdlType.will_be_garbage_collected_types) 295 lambda self: self.base_type in IdlType.will_be_garbage_collected_types)
293 296
294 IdlType.set_will_be_garbage_collected_types = classmethod( 297 IdlType.set_will_be_garbage_collected_types = classmethod(
295 lambda cls, new_will_be_garbage_collected_types: 298 lambda cls, new_will_be_garbage_collected_types:
296 cls.will_be_garbage_collected_types.update(new_will_be_garbage_collected _types)) 299 cls.will_be_garbage_collected_types.update(new_will_be_garbage_collected _types))
297 300
298 301
299 def gc_type(idl_type): 302 def gc_type(idl_type):
300 if idl_type.is_garbage_collected: 303 if idl_type.is_garbage_collected:
301 return 'GarbageCollectedObject' 304 return 'GarbageCollectedObject'
302 if idl_type.is_will_be_garbage_collected: 305 if idl_type.is_will_be_garbage_collected:
303 return 'WillBeGarbageCollectedObject' 306 return 'WillBeGarbageCollectedObject'
304 return 'RefCountedObject' 307 return 'RefCountedObject'
305 308
306 IdlType.gc_type = property(gc_type) 309 IdlTypeBase.gc_type = property(gc_type)
307 310
308 311
309 ################################################################################ 312 ################################################################################
310 # Includes 313 # Includes
311 ################################################################################ 314 ################################################################################
312 315
313 def includes_for_cpp_class(class_name, relative_dir_posix): 316 def includes_for_cpp_class(class_name, relative_dir_posix):
314 return set([posixpath.join('bindings', relative_dir_posix, class_name + '.h' )]) 317 return set([posixpath.join('bindings', relative_dir_posix, class_name + '.h' )])
315 318
316 319
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
374 377
375 IdlType.includes_for_type = property(includes_for_type) 378 IdlType.includes_for_type = property(includes_for_type)
376 IdlUnionType.includes_for_type = property( 379 IdlUnionType.includes_for_type = property(
377 lambda self: set.union(*[includes_for_type(member_type) 380 lambda self: set.union(*[includes_for_type(member_type)
378 for member_type in self.member_types])) 381 for member_type in self.member_types]))
379 382
380 383
381 def add_includes_for_type(idl_type): 384 def add_includes_for_type(idl_type):
382 includes.update(idl_type.includes_for_type) 385 includes.update(idl_type.includes_for_type)
383 386
384 IdlType.add_includes_for_type = add_includes_for_type 387 IdlTypeBase.add_includes_for_type = add_includes_for_type
385 IdlUnionType.add_includes_for_type = add_includes_for_type
386 388
387 389
388 def includes_for_interface(interface_name): 390 def includes_for_interface(interface_name):
389 return IdlType(interface_name).includes_for_type 391 return IdlType(interface_name).includes_for_type
390 392
391 393
392 def add_includes_for_interface(interface_name): 394 def add_includes_for_interface(interface_name):
393 includes.update(includes_for_interface(interface_name)) 395 includes.update(includes_for_interface(interface_name))
394 396
395 397
396 def impl_should_use_nullable_container(idl_type): 398 def impl_should_use_nullable_container(idl_type):
397 return idl_type.native_array_element_type or idl_type.is_primitive_type 399 return idl_type.native_array_element_type or idl_type.is_primitive_type
398 400
399 IdlType.impl_should_use_nullable_container = property( 401 IdlTypeBase.impl_should_use_nullable_container = property(
400 impl_should_use_nullable_container) 402 impl_should_use_nullable_container)
401 403
402 404
403 def impl_includes_for_type(idl_type, interfaces_info): 405 def impl_includes_for_type(idl_type, interfaces_info):
404 includes_for_type = set() 406 includes_for_type = set()
405 if idl_type.impl_should_use_nullable_container: 407 if idl_type.impl_should_use_nullable_container:
406 includes_for_type.add('bindings/core/v8/Nullable.h') 408 includes_for_type.add('bindings/core/v8/Nullable.h')
407 409
408 idl_type = idl_type.preprocessed_type 410 idl_type = idl_type.preprocessed_type
409 native_array_element_type = idl_type.native_array_element_type 411 native_array_element_type = idl_type.native_array_element_type
410 if native_array_element_type: 412 if native_array_element_type:
411 includes_for_type.update(impl_includes_for_type( 413 includes_for_type.update(impl_includes_for_type(
412 native_array_element_type, interfaces_info)) 414 native_array_element_type, interfaces_info))
413 includes_for_type.add('wtf/Vector.h') 415 includes_for_type.add('wtf/Vector.h')
414 416
415 if idl_type.is_string_type: 417 if idl_type.is_string_type:
416 includes_for_type.add('wtf/text/WTFString.h') 418 includes_for_type.add('wtf/text/WTFString.h')
417 if idl_type.name in interfaces_info: 419 if idl_type.name in interfaces_info:
418 interface_info = interfaces_info[idl_type.name] 420 interface_info = interfaces_info[idl_type.name]
419 includes_for_type.add(interface_info['include_path']) 421 includes_for_type.add(interface_info['include_path'])
420 return includes_for_type 422 return includes_for_type
421 423
422 IdlType.impl_includes_for_type = impl_includes_for_type 424 IdlTypeBase.impl_includes_for_type = impl_includes_for_type
423 425
424 426
425 component_dir = {} 427 component_dir = {}
426 428
427 429
428 def set_component_dirs(new_component_dirs): 430 def set_component_dirs(new_component_dirs):
429 component_dir.update(new_component_dirs) 431 component_dir.update(new_component_dirs)
430 432
431 433
432 ################################################################################ 434 ################################################################################
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 if macro == 'TONATIVE_VOID_EXCEPTIONSTATE': 558 if macro == 'TONATIVE_VOID_EXCEPTIONSTATE':
557 args.append('ScriptState::current(%s)' % isolate) 559 args.append('ScriptState::current(%s)' % isolate)
558 560
559 if declare_variable: 561 if declare_variable:
560 args.insert(0, this_cpp_type) 562 args.insert(0, this_cpp_type)
561 else: 563 else:
562 suffix += '_INTERNAL' 564 suffix += '_INTERNAL'
563 565
564 return '%s(%s)' % (macro + suffix, ', '.join(args)) 566 return '%s(%s)' % (macro + suffix, ', '.join(args))
565 567
566 568 IdlTypeBase.v8_value_to_local_cpp_value = v8_value_to_local_cpp_value
567 IdlType.v8_value_to_local_cpp_value = v8_value_to_local_cpp_value
568 IdlUnionType.v8_value_to_local_cpp_value = v8_value_to_local_cpp_value
569 569
570 570
571 ################################################################################ 571 ################################################################################
572 # C++ -> V8 572 # C++ -> V8
573 ################################################################################ 573 ################################################################################
574 574
575 def preprocess_idl_type(idl_type): 575 def preprocess_idl_type(idl_type):
576 if idl_type.is_enum: 576 if idl_type.is_enum:
577 # Enumerations are internally DOMStrings 577 # Enumerations are internally DOMStrings
578 return IdlType('DOMString') 578 return IdlType('DOMString')
579 if (idl_type.name == 'Any' or idl_type.is_callback_function): 579 if (idl_type.name == 'Any' or idl_type.is_callback_function):
580 return IdlType('ScriptValue') 580 return IdlType('ScriptValue')
581 return idl_type 581 return idl_type
582 582
583 IdlType.preprocessed_type = property(preprocess_idl_type) 583 IdlTypeBase.preprocessed_type = property(preprocess_idl_type)
584 IdlUnionType.preprocessed_type = property(preprocess_idl_type)
585 584
586 585
587 def preprocess_idl_type_and_value(idl_type, cpp_value, extended_attributes): 586 def preprocess_idl_type_and_value(idl_type, cpp_value, extended_attributes):
588 """Returns IDL type and value, with preliminary type conversions applied.""" 587 """Returns IDL type and value, with preliminary type conversions applied."""
589 idl_type = idl_type.preprocessed_type 588 idl_type = idl_type.preprocessed_type
590 if idl_type.name == 'Promise': 589 if idl_type.name == 'Promise':
591 idl_type = IdlType('ScriptValue') 590 idl_type = IdlType('ScriptValue')
592 if idl_type.base_type in ['long long', 'unsigned long long']: 591 if idl_type.base_type in ['long long', 'unsigned long long']:
593 # long long and unsigned long long are not representable in ECMAScript; 592 # long long and unsigned long long are not representable in ECMAScript;
594 # we represent them as doubles. 593 # we represent them as doubles.
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
644 return base_idl_type 643 return base_idl_type
645 644
646 # Data type with potential additional includes 645 # Data type with potential additional includes
647 add_includes_for_type(idl_type) 646 add_includes_for_type(idl_type)
648 if base_idl_type in V8_SET_RETURN_VALUE: # Special v8SetReturnValue treatme nt 647 if base_idl_type in V8_SET_RETURN_VALUE: # Special v8SetReturnValue treatme nt
649 return base_idl_type 648 return base_idl_type
650 649
651 # Pointer type 650 # Pointer type
652 return 'DOMWrapper' 651 return 'DOMWrapper'
653 652
654 IdlType.v8_conversion_type = v8_conversion_type 653 IdlTypeBase.v8_conversion_type = v8_conversion_type
655 654
656 655
657 V8_SET_RETURN_VALUE = { 656 V8_SET_RETURN_VALUE = {
658 'boolean': 'v8SetReturnValueBool(info, {cpp_value})', 657 'boolean': 'v8SetReturnValueBool(info, {cpp_value})',
659 'int': 'v8SetReturnValueInt(info, {cpp_value})', 658 'int': 'v8SetReturnValueInt(info, {cpp_value})',
660 'unsigned': 'v8SetReturnValueUnsigned(info, {cpp_value})', 659 'unsigned': 'v8SetReturnValueUnsigned(info, {cpp_value})',
661 'DOMString': 'v8SetReturnValueString(info, {cpp_value}, info.GetIsolate())', 660 'DOMString': 'v8SetReturnValueString(info, {cpp_value}, info.GetIsolate())',
662 'ByteString': 'v8SetReturnValueString(info, {cpp_value}, info.GetIsolate())' , 661 'ByteString': 'v8SetReturnValueString(info, {cpp_value}, info.GetIsolate())' ,
663 'ScalarValueString': 'v8SetReturnValueString(info, {cpp_value}, info.GetIsol ate())', 662 'ScalarValueString': 'v8SetReturnValueString(info, {cpp_value}, info.GetIsol ate())',
664 # [TreatReturnedNullStringAs] 663 # [TreatReturnedNullStringAs]
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
720 719
721 return [ 720 return [
722 member_type.v8_set_return_value(cpp_value + str(i), 721 member_type.v8_set_return_value(cpp_value + str(i),
723 extended_attributes, 722 extended_attributes,
724 script_wrappable, 723 script_wrappable,
725 release and release[i], 724 release and release[i],
726 for_main_world) 725 for_main_world)
727 for i, member_type in 726 for i, member_type in
728 enumerate(idl_type.member_types)] 727 enumerate(idl_type.member_types)]
729 728
730 IdlType.v8_set_return_value = v8_set_return_value 729 IdlTypeBase.v8_set_return_value = v8_set_return_value
731 IdlUnionType.v8_set_return_value = v8_set_return_value_union 730 IdlUnionType.v8_set_return_value = v8_set_return_value_union
732 731
733 IdlType.release = property(lambda self: self.is_interface_type) 732 IdlType.release = property(lambda self: self.is_interface_type)
734 IdlUnionType.release = property( 733 IdlUnionType.release = property(
735 lambda self: [member_type.is_interface_type 734 lambda self: [member_type.is_interface_type
736 for member_type in self.member_types]) 735 for member_type in self.member_types])
737 736
738 737
739 CPP_VALUE_TO_V8_VALUE = { 738 CPP_VALUE_TO_V8_VALUE = {
740 # Built-in types 739 # Built-in types
(...skipping 24 matching lines...) Expand all
765 764
766 def cpp_value_to_v8_value(idl_type, cpp_value, isolate='info.GetIsolate()', crea tion_context='info.Holder()', extended_attributes=None): 765 def cpp_value_to_v8_value(idl_type, cpp_value, isolate='info.GetIsolate()', crea tion_context='info.Holder()', extended_attributes=None):
767 """Returns an expression that converts a C++ value to a V8 value.""" 766 """Returns an expression that converts a C++ value to a V8 value."""
768 # the isolate parameter is needed for callback interfaces 767 # the isolate parameter is needed for callback interfaces
769 idl_type, cpp_value = preprocess_idl_type_and_value(idl_type, cpp_value, ext ended_attributes) 768 idl_type, cpp_value = preprocess_idl_type_and_value(idl_type, cpp_value, ext ended_attributes)
770 this_v8_conversion_type = idl_type.v8_conversion_type(extended_attributes) 769 this_v8_conversion_type = idl_type.v8_conversion_type(extended_attributes)
771 format_string = CPP_VALUE_TO_V8_VALUE[this_v8_conversion_type] 770 format_string = CPP_VALUE_TO_V8_VALUE[this_v8_conversion_type]
772 statement = format_string.format(cpp_value=cpp_value, isolate=isolate, creat ion_context=creation_context) 771 statement = format_string.format(cpp_value=cpp_value, isolate=isolate, creat ion_context=creation_context)
773 return statement 772 return statement
774 773
775 IdlType.cpp_value_to_v8_value = cpp_value_to_v8_value 774 IdlTypeBase.cpp_value_to_v8_value = cpp_value_to_v8_value
776 775
777 776
778 def literal_cpp_value(idl_type, idl_literal): 777 def literal_cpp_value(idl_type, idl_literal):
779 """Converts an expression that is a valid C++ literal for this type.""" 778 """Converts an expression that is a valid C++ literal for this type."""
780 # FIXME: add validation that idl_type and idl_literal are compatible 779 # FIXME: add validation that idl_type and idl_literal are compatible
781 literal_value = str(idl_literal) 780 literal_value = str(idl_literal)
782 if idl_type.base_type in CPP_UNSIGNED_TYPES: 781 if idl_type.base_type in CPP_UNSIGNED_TYPES:
783 return literal_value + 'u' 782 return literal_value + 'u'
784 return literal_value 783 return literal_value
785 784
(...skipping 14 matching lines...) Expand all
800 return idl_type.is_nullable and ( 799 return idl_type.is_nullable and (
801 (idl_type.is_string_type or idl_type.is_wrapper_type) and 800 (idl_type.is_string_type or idl_type.is_wrapper_type) and
802 not idl_type.native_array_element_type) 801 not idl_type.native_array_element_type)
803 802
804 803
805 def is_explicit_nullable(idl_type): 804 def is_explicit_nullable(idl_type):
806 # Nullable type that isn't implicit nullable (see above.) For such types, 805 # Nullable type that isn't implicit nullable (see above.) For such types,
807 # we use Nullable<T> or similar explicit ways to represent a null value. 806 # we use Nullable<T> or similar explicit ways to represent a null value.
808 return idl_type.is_nullable and not idl_type.is_implicit_nullable 807 return idl_type.is_nullable and not idl_type.is_implicit_nullable
809 808
810 IdlType.is_implicit_nullable = property(is_implicit_nullable) 809 IdlTypeBase.is_implicit_nullable = property(is_implicit_nullable)
811 IdlType.is_explicit_nullable = property(is_explicit_nullable)
812 IdlUnionType.is_implicit_nullable = False 810 IdlUnionType.is_implicit_nullable = False
813 IdlUnionType.is_explicit_nullable = property(is_explicit_nullable) 811 IdlTypeBase.is_explicit_nullable = property(is_explicit_nullable)
OLDNEW
« no previous file with comments | « Source/bindings/scripts/v8_methods.py ('k') | Source/bindings/scripts/v8_utilities.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698