| Index: client/dom/scripts/dartgenerator.py
|
| diff --git a/client/dom/scripts/dartgenerator.py b/client/dom/scripts/dartgenerator.py
|
| index 98021ad1b6e0bc89b8a92b37e483a52a15212552..0a8184d4cacfab2ba85606a4f436a565665394fd 100755
|
| --- a/client/dom/scripts/dartgenerator.py
|
| +++ b/client/dom/scripts/dartgenerator.py
|
| @@ -725,14 +725,21 @@ class OperationInfo(object):
|
| return ', '.join(argtexts)
|
|
|
|
|
| +def MaybeListElementTypeName(type_name):
|
| + """Returns the List element type T from string of form "List<T>", or None."""
|
| + match = re.match(r'List<(\w*)>$', type_name)
|
| + if match:
|
| + return match.group(1)
|
| + return None
|
| +
|
| def MaybeListElementType(interface):
|
| """Returns the List element type T, or None in interface does not implement
|
| List<T>.
|
| """
|
| for parent in interface.parents:
|
| - match = re.match(r'List<(\w*)>$', parent.type.id)
|
| - if match:
|
| - return match.group(1)
|
| + element_type = MaybeListElementTypeName(parent.type.id)
|
| + if element_type:
|
| + return element_type
|
| return None
|
|
|
| def MaybeTypedArrayElementType(interface):
|
| @@ -1857,6 +1864,7 @@ class FrogInterfaceGenerator(object):
|
| if base:
|
| extends = ' extends ' + base
|
| elif native_spec[0] == '=':
|
| + # The implementation is a singleton with no prototype.
|
| extends = ''
|
| else:
|
| extends = ' extends DOMTypeJs'
|
| @@ -1976,13 +1984,13 @@ class FrogInterfaceGenerator(object):
|
| #
|
| self._members_emitter.Emit(
|
| '\n'
|
| - ' $TYPE operator[](int index) native;\n',
|
| + ' $TYPE operator[](int index) native "return this[index];";\n',
|
| TYPE=self._NarrowOutputType(element_type))
|
|
|
| if 'HasCustomIndexSetter' in self._interface.ext_attrs:
|
| self._members_emitter.Emit(
|
| '\n'
|
| - ' void operator[]=(int index, $TYPE value) native;\n',
|
| + ' void operator[]=(int index, $TYPE value) native "this[index] = value";\n',
|
| TYPE=self._NarrowInputType(element_type))
|
| else:
|
| self._members_emitter.Emit(
|
| @@ -1992,6 +2000,12 @@ class FrogInterfaceGenerator(object):
|
| ' }\n',
|
| TYPE=self._NarrowInputType(element_type))
|
|
|
| + # TODO(sra): Use separate mixins for mutable implementations of List<T>.
|
| + # TODO(sra): Use separate mixins for typed array implementations of List<T>.
|
| + template_file = 'immutable_list_mixin.darttemplate'
|
| + template = self._system._templates.Load(template_file)
|
| + self._members_emitter.Emit(template, E=element_type)
|
| +
|
|
|
| def AddTypedArrayConstructors(self, element_type):
|
| self._members_emitter.Emit(
|
|
|