Chromium Code Reviews| Index: lib/dom/scripts/systemnative.py |
| diff --git a/lib/dom/scripts/systemnative.py b/lib/dom/scripts/systemnative.py |
| index 64ee82ce29bb98450e0eee8c7ef098751bf1db56..52fcb38ec8f52bbe92fc3d1e360b721d794327c1 100644 |
| --- a/lib/dom/scripts/systemnative.py |
| +++ b/lib/dom/scripts/systemnative.py |
| @@ -601,8 +601,7 @@ class NativeImplementationGenerator(object): |
| # class YImpl extends ListBase<T> { copies of transitive XImpl methods; } |
| # |
| dart_element_type = DartType(element_type) |
| - if ('CustomIndexedGetter' in self._interface.ext_attrs or |
| - 'NumericIndexedGetter' in self._interface.ext_attrs): |
| + if self._HasNativeIndexGetter(): |
| self._EmitNativeIndexGetter(dart_element_type) |
| else: |
| self._members_emitter.Emit( |
| @@ -612,7 +611,7 @@ class NativeImplementationGenerator(object): |
| ' }\n', |
| TYPE=dart_element_type) |
| - if 'CustomIndexedSetter' in self._interface.ext_attrs: |
| + if self._HasNativeIndexSetter(): |
| self._EmitNativeIndexSetter(dart_element_type) |
| else: |
| self._members_emitter.Emit( |
| @@ -711,11 +710,30 @@ class NativeImplementationGenerator(object): |
| ' }\n', |
| TYPE=dart_element_type) |
| + def AmendIndexer(self, element_type): |
| + dart_element_type = DartType(element_type) |
| + ext_attrs = self._interface.ext_attrs |
|
podivilov
2012/05/12 08:35:10
Is ext_attrs used in this method?
Anton Muhin
2012/05/12 08:37:03
No, thanks a lot for spotting, forgot to remove.
|
| + |
| + # If we have custom implementation of getter or setter, |
| + # we are to emit operator overrides. |
| + if self._HasNativeIndexGetter(): |
| + self._EmitNativeIndexGetter(dart_element_type) |
| + if self._HasNativeIndexSetter(): |
| + self._EmitNativeIndexSetter(dart_element_type) |
| + |
| + def _HasNativeIndexGetter(self): |
| + ext_attrs = self._interface.ext_attrs |
| + return ('CustomIndexedGetter' in ext_attrs or |
| + 'NumericIndexedGetter' in ext_attrs) |
| + |
| def _EmitNativeIndexGetter(self, element_type): |
| dart_declaration = '%s operator[](int index)' % element_type |
| self._GenerateNativeBinding('numericIndexGetter', 2, dart_declaration, |
| 'Callback', True) |
| + def _HasNativeIndexSetter(self): |
| + return 'CustomIndexedSetter' in self._interface.ext_attrs |
| + |
| def _EmitNativeIndexSetter(self, element_type): |
| dart_declaration = 'void operator[]=(int index, %s value)' % element_type |
| self._GenerateNativeBinding('numericIndexSetter', 3, dart_declaration, |