| Index: tools/dom/scripts/htmldartgenerator.py
|
| diff --git a/tools/dom/scripts/htmldartgenerator.py b/tools/dom/scripts/htmldartgenerator.py
|
| index 575abda6d5302ad20bb8ad0491688acf72fe3368..8205dad1ed56eeda411ab87e5f2a7e451f4536f6 100644
|
| --- a/tools/dom/scripts/htmldartgenerator.py
|
| +++ b/tools/dom/scripts/htmldartgenerator.py
|
| @@ -12,8 +12,8 @@ from generator import AnalyzeOperation, ConstantOutputOrder, \
|
| TypeOrNothing, ConvertToFuture, GetCallbackInfo
|
| from copy import deepcopy
|
| from htmlrenamer import convert_to_future_members, custom_html_constructors, \
|
| - keep_overloaded_members, private_html_members, renamed_html_members, \
|
| - renamed_overloads, removed_html_members
|
| + keep_overloaded_members, overloaded_and_renamed, private_html_members, \
|
| + renamed_html_members, renamed_overloads, removed_html_members
|
| import logging
|
| import monitored
|
| import sys
|
| @@ -155,25 +155,33 @@ class HtmlDartGenerator(object):
|
| """The IDL has a number of functions with the same name but that accept
|
| different types. This is fine for JavaScript, but results in vague type
|
| signatures for Dart. We rename some of these (by adding a new identical
|
| - operation with a different DartName), and leave the original version in a
|
| - few specific instances."""
|
| + operation with a different DartName), but leave the original version as
|
| + well in some cases."""
|
| potential_added_operations = set()
|
| operations_by_name = self._OperationsByName(interface)
|
| already_renamed = [operation.ext_attrs['DartName'] if 'DartName' in
|
| operation.ext_attrs else '' for operation in interface.operations]
|
|
|
| + added_operations = []
|
| for operation in interface.operations:
|
| full_operation_str = self._GetStringRepresentation(interface, operation)
|
| if (full_operation_str in renamed_overloads and
|
| renamed_overloads[full_operation_str] not in already_renamed):
|
| - dart_name = renamed_overloads[full_operation_str]
|
| - if not dart_name:
|
| - continue
|
| + if '%s.%s' % (interface.id, operation.id) in overloaded_and_renamed:
|
| + cloned_operation = deepcopy(operation)
|
| + cloned_operation.ext_attrs['DartName'] = renamed_overloads[
|
| + full_operation_str]
|
| + added_operations.append(cloned_operation)
|
| + else:
|
| + dart_name = renamed_overloads[full_operation_str]
|
| + if not dart_name:
|
| + continue
|
|
|
| - operation.ext_attrs['DartName'] = dart_name
|
| - potential_added_operations.add(operation.id)
|
| + operation.ext_attrs['DartName'] = dart_name
|
| + potential_added_operations.add(operation.id)
|
| self._EnsureNoMultipleTypeSignatures(interface, operation,
|
| operations_by_name)
|
| + interface.operations += added_operations
|
| self._AddDesiredOverloadedOperations(potential_added_operations, interface,
|
| operations_by_name)
|
|
|
| @@ -201,17 +209,17 @@ class HtmlDartGenerator(object):
|
| len(filter(lambda overload: overload.startswith(operation_str),
|
| renamed_overloads.keys())) == 0 and
|
| operation_str not in keep_overloaded_members and
|
| + operation_str not in overloaded_and_renamed and
|
| operation_str not in renamed_html_members and
|
| operation_str not in private_html_members and
|
| operation_str not in removed_html_members and
|
| operation.id != '__getter__' and
|
| operation.id != '__setter__' and
|
| operation.id != '__delete__'):
|
| - _logger.error('Multiple type signatures for %s.%s' % (
|
| + _logger.error('Multiple type signatures for %s.%s. Please file a bug with'
|
| + ' the dart:html team to determine if one of these functions should be'
|
| + ' renamed.' % (
|
| interface.id, operation.id))
|
| - raise Exception('Rename one of the methods in renamed_overloads or add it'
|
| - ' to keep_overloaded_members.\n'
|
| - 'Generation UNsuccessful.')
|
|
|
| def _GetStringRepresentation(self, interface, operation):
|
| """Given an IDLOperation, return a object-independent representation of the
|
|
|