Index: Source/bindings/scripts/v8_methods.py |
diff --git a/Source/bindings/scripts/v8_methods.py b/Source/bindings/scripts/v8_methods.py |
index 4cb00489c1f47da8882505ab320504f675e3ce1c..b4b0fca034075e95fcb02fb5d8de829d72e51e7f 100644 |
--- a/Source/bindings/scripts/v8_methods.py |
+++ b/Source/bindings/scripts/v8_methods.py |
@@ -145,6 +145,7 @@ def generate_argument(interface, method, argument, index): |
return { |
'cpp_type': idl_type.cpp_type_args(used_in_cpp_sequence=is_variadic_wrapper_type), |
'cpp_value': this_cpp_value, |
+ 'default_value': argument.default_value, |
'enum_validation_expression': idl_type.enum_validation_expression, |
'has_default': 'Default' in extended_attributes, |
'has_event_listener_argument': any( |
@@ -194,8 +195,6 @@ def cpp_value(interface, method, number_of_arguments): |
return '%s.release()' % argument.name |
return argument.name |
- # Truncate omitted optional arguments |
- arguments = method.arguments[:number_of_arguments] |
cpp_arguments = v8_utilities.call_with_arguments(method) |
# Members of IDL partial interface definitions are implemented in C++ as |
# static member functions, which for instance members (non-static members) |
@@ -203,7 +202,11 @@ def cpp_value(interface, method, number_of_arguments): |
if ('PartialInterfaceImplementedAs' in method.extended_attributes and |
not method.is_static): |
cpp_arguments.append('*impl') |
- cpp_arguments.extend(cpp_argument(argument) for argument in arguments) |
+ cpp_arguments.extend(cpp_argument(argument) |
+ for argument in method.arguments[:number_of_arguments]) |
+ cpp_arguments.extend(argument.default_value |
+ for argument in method.arguments[number_of_arguments:] |
+ if argument.is_optional and argument.default_value) |
this_union_arguments = method.idl_type and method.idl_type.union_arguments |
if this_union_arguments: |
cpp_arguments.extend(this_union_arguments) |