Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(564)

Unified Diff: lib/dom/scripts/systemnative.py

Issue 10388084: Better support for the case of typed arrays inheriting from other typed arrays. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Rebaseline Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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,

Powered by Google App Engine
This is Rietveld 408576698