Chromium Code Reviews| 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..96573e39bf2bf52d37dcb957b8bf916ea568e300 100644 |
| --- a/Source/bindings/scripts/v8_interface.py |
| +++ b/Source/bindings/scripts/v8_interface.py |
| @@ -753,6 +753,19 @@ 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 safe reason. |
|
Nils Barth (inactive)
2014/10/13 14:36:56
"...for safety."
yunchao
2014/10/14 06:58:49
Done.
|
| + for argument, method in arguments_methods: |
| + if argument['is_wrapper_type'] and method['number_of_required_arguments'] == method['number_of_arguments']: |
|
Nils Barth (inactive)
2014/10/13 14:36:56
line length
Could you use (...) and break, so:
if
yunchao
2014/10/14 06:58:49
Acknowledged.
|
| + argument['type_checked_already'] = True |
| + |
| + |
| # 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 +923,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), |
| } |