| Index: Source/bindings/scripts/v8_interface.py
|
| diff --git a/Source/bindings/scripts/v8_interface.py b/Source/bindings/scripts/v8_interface.py
|
| index 9cb32a59af27c5984346bf23bf7c82a820cc6830..39edb03092eb67187083116c568b9c6092e79c05 100644
|
| --- a/Source/bindings/scripts/v8_interface.py
|
| +++ b/Source/bindings/scripts/v8_interface.py
|
| @@ -753,6 +753,18 @@ def resolution_tests_methods(effective_overloads):
|
| test = 'V8{idl_type}::hasInstance({cpp_value}, info.GetIsolate())'.format(idl_type=idl_type.base_type, cpp_value=cpp_value)
|
| yield test, method
|
|
|
| + # all arguments here of wrapper type are checked by resolution (see above),
|
| + # they should not be check again for [TypeChecking=interface] methods during
|
| + # args checking. We mark resolution related arguments as type_checked_already
|
| + # to avoid redundant checking. However, if there are optional argument(s) in
|
| + # an overloading method, the method will have multiple callers. Resolution
|
| + # related argument may be not resolved in some callers in this situation.
|
| + # So, we just mark those resolution associated arguments whose method has
|
| + # no optional arguments, for safety.
|
| + for argument, method in arguments_methods:
|
| + argument['type_checked_already'] = (argument['is_wrapper_type'] and
|
| + method['number_of_required_arguments'] == method['number_of_arguments'])
|
| +
|
| # 8. Otherwise: if V is any kind of object except for a native Date object,
|
| # a native RegExp object, and there is an entry in S that has one of the
|
| # following types at position i of its type list,
|
| @@ -910,6 +922,7 @@ def constructor_context(interface, constructor):
|
| 'is_constructor': True,
|
| 'is_named_constructor': False,
|
| 'is_raises_exception': is_constructor_raises_exception,
|
| + 'number_of_arguments': len(constructor.arguments),
|
| 'number_of_required_arguments':
|
| number_of_required_arguments(constructor),
|
| }
|
|
|