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), |
} |