Index: Source/bindings/scripts/v8_methods.py |
diff --git a/Source/bindings/scripts/v8_methods.py b/Source/bindings/scripts/v8_methods.py |
index dfb8460f0c3f6d8bc594efa8f0b424607978d6d5..9538b2c26da21129407eb2dc4dfc1ac88a436a1f 100644 |
--- a/Source/bindings/scripts/v8_methods.py |
+++ b/Source/bindings/scripts/v8_methods.py |
@@ -237,7 +237,12 @@ def cpp_value(interface, method, number_of_arguments): |
# Truncate omitted optional arguments |
arguments = method.arguments[:number_of_arguments] |
- cpp_arguments = v8_utilities.call_with_arguments(method) |
+ cpp_arguments = [] |
+ if method.is_constructor: |
+ call_with_values = interface.extended_attributes.get('ConstructorCallWith') |
+ else: |
+ call_with_values = method.extended_attributes.get('CallWith') |
+ cpp_arguments.extend(v8_utilities.call_with_arguments(call_with_values)) |
# Members of IDL partial interface definitions are implemented in C++ as |
# static member functions, which for instance members (non-static members) |
# take *impl as their first argument |
@@ -249,7 +254,9 @@ def cpp_value(interface, method, number_of_arguments): |
if this_union_arguments: |
cpp_arguments.extend(this_union_arguments) |
- if 'RaisesException' in method.extended_attributes: |
+ if ('RaisesException' in method.extended_attributes or |
+ (method.is_constructor and |
+ has_extended_attribute_value(interface, 'RaisesException', 'Constructor'))): |
cpp_arguments.append('exceptionState') |
if method.name == 'Constructor': |