| Index: third_party/WebKit/Source/bindings/scripts/overload_set_algorithm.py
|
| diff --git a/third_party/WebKit/Source/bindings/scripts/overload_set_algorithm.py b/third_party/WebKit/Source/bindings/scripts/overload_set_algorithm.py
|
| index 7f2803c4e952da67f9e60d87d229c5a77e49a9ce..6425a84412b95f245b9b0117bcce4a70c14e690e 100644
|
| --- a/third_party/WebKit/Source/bindings/scripts/overload_set_algorithm.py
|
| +++ b/third_party/WebKit/Source/bindings/scripts/overload_set_algorithm.py
|
| @@ -14,43 +14,7 @@ def sort_and_groupby(list_to_sort, key=None):
|
| return ((k, list(g)) for k, g in itertools.groupby(list_to_sort, key))
|
|
|
|
|
| -class OverloadSetAdapter(object):
|
| - """Base class for the second effective_overload_set argument. Python is
|
| - a type-lax language, so this is mostly documentation of the expected
|
| - interface."""
|
| -
|
| - def arguments(self, operation):
|
| - """Given an operation, return the list of its arguments."""
|
| - raise NotImplementedError
|
| -
|
| - def type(self, argument):
|
| - """Given an argument, return its type."""
|
| - raise NotImplementedError
|
| -
|
| - def is_optional(self, argument):
|
| - """Given an argument, return whether it is optional."""
|
| - raise NotImplementedError
|
| -
|
| - def is_variadic(self, argument):
|
| - """"Given an argument, return whether it is variadic."""
|
| - raise NotImplementedError
|
| -
|
| -
|
| -class MethodContextAdapter(OverloadSetAdapter):
|
| - def arguments(self, operation):
|
| - return operation['arguments']
|
| -
|
| - def type(self, argument):
|
| - return argument['idl_type_object']
|
| -
|
| - def is_optional(self, argument):
|
| - return argument['is_optional']
|
| -
|
| - def is_variadic(self, argument):
|
| - return argument['is_variadic']
|
| -
|
| -
|
| -def effective_overload_set(F, adapter): # pylint: disable=invalid-name
|
| +def effective_overload_set(F): # pylint: disable=invalid-name
|
| """Returns the effective overload set of an overloaded function.
|
|
|
| An effective overload set is the set of overloaded functions + signatures
|
| @@ -101,21 +65,21 @@ def effective_overload_set(F, adapter): # pylint: disable=invalid-name
|
|
|
| # 5. For each operation, extended attribute or callback function X in F:
|
| for X in F: # X is the "callable". pylint: disable=invalid-name
|
| - arguments = adapter.arguments(X) # pylint: disable=invalid-name
|
| + arguments = X['arguments'] # pylint: disable=invalid-name
|
| # 1. Let n be the number of arguments X is declared to take.
|
| n = len(arguments) # pylint: disable=invalid-name
|
| # 2. Let t0..n−1 be a list of types, where ti is the type of X’s
|
| # argument at index i.
|
| # (“type list”)
|
| - t = tuple(adapter.type(argument) # pylint: disable=invalid-name
|
| + t = tuple(argument['idl_type_object'] # pylint: disable=invalid-name
|
| for argument in arguments)
|
| # 3. Let o0..n−1 be a list of optionality values, where oi is “variadic”
|
| # if X’s argument at index i is a final, variadic argument, “optional”
|
| # if the argument is optional, and “required” otherwise.
|
| # (“optionality list”)
|
| # (We’re just using a boolean for optional/variadic vs. required.)
|
| - o = tuple(adapter.is_optional(argument) # pylint: disable=invalid-name
|
| - or adapter.is_variadic(argument)
|
| + o = tuple(argument['is_optional'] # pylint: disable=invalid-name
|
| + or argument['is_variadic']
|
| for argument in arguments)
|
| # 4. Add to S the tuple <X, t0..n−1, o0..n−1>.
|
| S.append((X, t, o))
|
| @@ -148,8 +112,7 @@ def effective_overload_set_by_length(overloads):
|
| # (callable, type list, optionality list)
|
| return len(entry[1])
|
|
|
| - effective_overloads = effective_overload_set(overloads,
|
| - MethodContextAdapter())
|
| + effective_overloads = effective_overload_set(overloads)
|
| return list(sort_and_groupby(effective_overloads, type_list_length))
|
|
|
|
|
|
|