Commit 42fa51d7 authored by Yuki Shiino's avatar Yuki Shiino Committed by Commit Bot

IDL compiler: Support setlike's add operation

Bug: 839389
Change-Id: I3c27f7f4296ee71257be110aad31bbe69bdf024f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2158429Reviewed-by: default avatarHitoshi Yoshida <peria@chromium.org>
Commit-Queue: Yuki Shiino <yukishiino@chromium.org>
Cr-Commit-Position: refs/heads/master@{#760993}
parent be0f89fd
......@@ -102,7 +102,8 @@ class _IRBuilder(object):
iterable = self._take_iterable(child_nodes)
maplike = self._take_maplike(
child_nodes, interface_identifier=identifier)
setlike = self._take_setlike(child_nodes)
setlike = self._take_setlike(
child_nodes, interface_identifier=identifier)
extended_attributes = self._take_extended_attributes(child_nodes)
members = [
......@@ -664,8 +665,9 @@ class _IRBuilder(object):
operations=operations,
debug_info=self._build_debug_info(node))
def _build_setlike(self, node):
def _build_setlike(self, node, interface_identifier):
assert node.GetClass() == 'Setlike'
assert isinstance(interface_identifier, Identifier)
types = map(self._build_type, node.GetChildren())
assert len(types) == 1
value_type = types[0]
......@@ -695,6 +697,18 @@ class _IRBuilder(object):
node=node),
]
write_ops = [
self._create_operation(
Identifier('add'),
arguments=self._create_arguments([
(Identifier('value'), value_type),
]),
return_type=interface_identifier,
extended_attributes={
'CallWith': 'ScriptState',
'RaisesException': None,
'ImplementedAs': 'addForBinding',
},
node=node),
self._create_operation(
Identifier('delete'),
arguments=self._create_arguments([
......@@ -1112,8 +1126,9 @@ class _IRBuilder(object):
return self._take_and_build('Maplike', self._build_maplike, node_list,
**kwargs)
def _take_setlike(self, node_list):
return self._take_and_build('Setlike', self._build_setlike, node_list)
def _take_setlike(self, node_list, **kwargs):
return self._take_and_build('Setlike', self._build_setlike, node_list,
**kwargs)
def _take_stringifier(self, node_list):
return self._take_and_build('Stringifier', self._build_stringifier,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment