summaryrefslogtreecommitdiff
path: root/src/webidl-parser.y
diff options
context:
space:
mode:
Diffstat (limited to 'src/webidl-parser.y')
-rw-r--r--src/webidl-parser.y14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/webidl-parser.y b/src/webidl-parser.y
index 953388e..9cfd84e 100644
--- a/src/webidl-parser.y
+++ b/src/webidl-parser.y
@@ -170,6 +170,8 @@ webidl_error(YYLTYPE *locp, struct webidl_node **winbind_ast, const char *str)
%type <node> Ellipsis
%type <node> Iterable
%type <node> OptionalType
+%type <node> Default
+%type <node> DefaultValue
%type <node> Type
%type <node> ReturnType
@@ -450,8 +452,14 @@ PartialDictionary:
/* [15] */
Default:
/* empty */
+ {
+ $$ = NULL;
+ }
|
'=' DefaultValue
+ {
+ $$ = $2;
+ }
;
@@ -460,6 +468,9 @@ DefaultValue:
ConstValue
|
TOK_STRING_LITERAL
+ {
+ $$ = webidl_node_new(WEBIDL_NODE_TYPE_LITERAL_STRING, NULL, $1);
+ }
;
/* [17] */
@@ -874,8 +885,9 @@ OptionalOrRequiredArgument:
{
struct webidl_node *argument;
argument = webidl_node_new(WEBIDL_NODE_TYPE_IDENT, NULL, $3);
+ argument = webidl_node_new(WEBIDL_NODE_TYPE_OPTIONAL, argument, $4);
argument = webidl_node_prepend(argument, $2); /* add type node */
- $$ = webidl_node_new(WEBIDL_NODE_TYPE_OPTIONAL_ARGUMENT, NULL, argument);
+ $$ = webidl_node_new(WEBIDL_NODE_TYPE_ARGUMENT, NULL, argument);
}
|
Type Ellipsis ArgumentName