Gitweb links:
...log
http://git.netsurf-browser.org/nsgenjsbind.git/shortlog/b29ff13b599730bf3...
...commit
http://git.netsurf-browser.org/nsgenjsbind.git/commit/b29ff13b599730bf3ea...
...tree
http://git.netsurf-browser.org/nsgenjsbind.git/tree/b29ff13b599730bf3eaec...
The branch, master has been updated
via b29ff13b599730bf3eaec8f142e584f23e78c1fb (commit)
from 6f54ba5f6a2008191c2bb3435f8015ae70bcf156 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff
http://git.netsurf-browser.org/nsgenjsbind.git/commitdiff/b29ff13b599730b...
commit b29ff13b599730bf3eaec8f142e584f23e78c1fb
Author: Vincent Sanders <vincent.sanders(a)collabora.co.uk>
Commit: Vincent Sanders <vincent.sanders(a)collabora.co.uk>
add type suffix annotations to webidl AST
diff --git a/src/webidl-ast.c b/src/webidl-ast.c
index ba9d44f..7957f02 100644
--- a/src/webidl-ast.c
+++ b/src/webidl-ast.c
@@ -317,6 +317,12 @@ static const char *webidl_node_type_to_str(enum webidl_node_type
type)
case WEBIDL_NODE_TYPE_TYPE_BASE:
return "Base";
+ case WEBIDL_NODE_TYPE_TYPE_NULLABLE:
+ return "Nullable";
+
+ case WEBIDL_NODE_TYPE_TYPE_ARRAY:
+ return "Array";
+
case WEBIDL_NODE_TYPE_MODIFIER:
return "Modifier";
diff --git a/src/webidl-ast.h b/src/webidl-ast.h
index 5d7c615..aa791ca 100644
--- a/src/webidl-ast.h
+++ b/src/webidl-ast.h
@@ -32,6 +32,9 @@ enum webidl_node_type {
WEBIDL_NODE_TYPE_ELLIPSIS,
WEBIDL_NODE_TYPE_TYPE,
WEBIDL_NODE_TYPE_TYPE_BASE,
+ WEBIDL_NODE_TYPE_TYPE_NULLABLE,
+ WEBIDL_NODE_TYPE_TYPE_ARRAY,
+
WEBIDL_NODE_TYPE_LITERAL_NULL,
WEBIDL_NODE_TYPE_LITERAL_INT,
WEBIDL_NODE_TYPE_LITERAL_BOOL,
diff --git a/src/webidl-parser.y b/src/webidl-parser.y
index f719110..bf79e8f 100644
--- a/src/webidl-parser.y
+++ b/src/webidl-parser.y
@@ -163,6 +163,9 @@ webidl_error(YYLTYPE *locp, struct webidl_node **winbind_ast, const
char *str)
%type <node> UnsignedIntegerType
%type <node> IntegerType
+%type <node> TypeSuffix
+%type <node> TypeSuffixStartingWithArray
+
%type <node> FloatLiteral
%type <node> BooleanLiteral
%type <node> ConstValue
@@ -1099,16 +1102,19 @@ UnionMemberTypes:
/* [62] */
NonAnyType:
PrimitiveType TypeSuffix
+ {
+ $$ = webidl_node_prepend($1, $2);
+ }
|
TOK_STRING TypeSuffix
{
- $$ = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_BASE, NULL, (void
*)WEBIDL_TYPE_STRING);
+ $$ = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_BASE, $2, (void
*)WEBIDL_TYPE_STRING);
}
|
TOK_IDENTIFIER TypeSuffix
{
struct webidl_node *type;
- type = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_BASE, NULL, (void
*)WEBIDL_TYPE_USER);
+ type = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_BASE, $2, (void
*)WEBIDL_TYPE_USER);
$$ = webidl_node_new(WEBIDL_NODE_TYPE_IDENT, type, $1);
}
|
@@ -1119,12 +1125,12 @@ NonAnyType:
|
TOK_OBJECT TypeSuffix
{
- $$ = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_BASE, NULL, (void
*)WEBIDL_TYPE_OBJECT);
+ $$ = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_BASE, $2, (void
*)WEBIDL_TYPE_OBJECT);
}
|
TOK_DATE TypeSuffix
{
- $$ = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_BASE, NULL, (void
*)WEBIDL_TYPE_DATE);
+ $$ = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_BASE, $2, (void
*)WEBIDL_TYPE_DATE);
}
;
@@ -1237,17 +1243,32 @@ OptionalLong:
/* [70] */
TypeSuffix:
/* empty */
+ {
+ $$ = NULL;
+ }
|
'[' ']' TypeSuffix
+ {
+ $$ = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_ARRAY, $3, NULL);
+ }
|
'?' TypeSuffixStartingWithArray
+ {
+ $$ = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_NULLABLE, $2, NULL);
+ }
;
/* [71] */
TypeSuffixStartingWithArray:
/* empty */
+ {
+ $$ = NULL;
+ }
|
'[' ']' TypeSuffix
+ {
+ $$ = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_ARRAY, $3, NULL);
+ }
;
/* [72] */
-----------------------------------------------------------------------
Summary of changes:
src/webidl-ast.c | 6 ++++++
src/webidl-ast.h | 3 +++
src/webidl-parser.y | 29 +++++++++++++++++++++++++----
3 files changed, 34 insertions(+), 4 deletions(-)
diff --git a/src/webidl-ast.c b/src/webidl-ast.c
index ba9d44f..7957f02 100644
--- a/src/webidl-ast.c
+++ b/src/webidl-ast.c
@@ -317,6 +317,12 @@ static const char *webidl_node_type_to_str(enum webidl_node_type
type)
case WEBIDL_NODE_TYPE_TYPE_BASE:
return "Base";
+ case WEBIDL_NODE_TYPE_TYPE_NULLABLE:
+ return "Nullable";
+
+ case WEBIDL_NODE_TYPE_TYPE_ARRAY:
+ return "Array";
+
case WEBIDL_NODE_TYPE_MODIFIER:
return "Modifier";
diff --git a/src/webidl-ast.h b/src/webidl-ast.h
index 5d7c615..aa791ca 100644
--- a/src/webidl-ast.h
+++ b/src/webidl-ast.h
@@ -32,6 +32,9 @@ enum webidl_node_type {
WEBIDL_NODE_TYPE_ELLIPSIS,
WEBIDL_NODE_TYPE_TYPE,
WEBIDL_NODE_TYPE_TYPE_BASE,
+ WEBIDL_NODE_TYPE_TYPE_NULLABLE,
+ WEBIDL_NODE_TYPE_TYPE_ARRAY,
+
WEBIDL_NODE_TYPE_LITERAL_NULL,
WEBIDL_NODE_TYPE_LITERAL_INT,
WEBIDL_NODE_TYPE_LITERAL_BOOL,
diff --git a/src/webidl-parser.y b/src/webidl-parser.y
index f719110..bf79e8f 100644
--- a/src/webidl-parser.y
+++ b/src/webidl-parser.y
@@ -163,6 +163,9 @@ webidl_error(YYLTYPE *locp, struct webidl_node **winbind_ast, const
char *str)
%type <node> UnsignedIntegerType
%type <node> IntegerType
+%type <node> TypeSuffix
+%type <node> TypeSuffixStartingWithArray
+
%type <node> FloatLiteral
%type <node> BooleanLiteral
%type <node> ConstValue
@@ -1099,16 +1102,19 @@ UnionMemberTypes:
/* [62] */
NonAnyType:
PrimitiveType TypeSuffix
+ {
+ $$ = webidl_node_prepend($1, $2);
+ }
|
TOK_STRING TypeSuffix
{
- $$ = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_BASE, NULL, (void
*)WEBIDL_TYPE_STRING);
+ $$ = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_BASE, $2, (void
*)WEBIDL_TYPE_STRING);
}
|
TOK_IDENTIFIER TypeSuffix
{
struct webidl_node *type;
- type = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_BASE, NULL, (void
*)WEBIDL_TYPE_USER);
+ type = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_BASE, $2, (void
*)WEBIDL_TYPE_USER);
$$ = webidl_node_new(WEBIDL_NODE_TYPE_IDENT, type, $1);
}
|
@@ -1119,12 +1125,12 @@ NonAnyType:
|
TOK_OBJECT TypeSuffix
{
- $$ = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_BASE, NULL, (void
*)WEBIDL_TYPE_OBJECT);
+ $$ = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_BASE, $2, (void
*)WEBIDL_TYPE_OBJECT);
}
|
TOK_DATE TypeSuffix
{
- $$ = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_BASE, NULL, (void
*)WEBIDL_TYPE_DATE);
+ $$ = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_BASE, $2, (void
*)WEBIDL_TYPE_DATE);
}
;
@@ -1237,17 +1243,32 @@ OptionalLong:
/* [70] */
TypeSuffix:
/* empty */
+ {
+ $$ = NULL;
+ }
|
'[' ']' TypeSuffix
+ {
+ $$ = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_ARRAY, $3, NULL);
+ }
|
'?' TypeSuffixStartingWithArray
+ {
+ $$ = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_NULLABLE, $2, NULL);
+ }
;
/* [71] */
TypeSuffixStartingWithArray:
/* empty */
+ {
+ $$ = NULL;
+ }
|
'[' ']' TypeSuffix
+ {
+ $$ = webidl_node_new(WEBIDL_NODE_TYPE_TYPE_ARRAY, $3, NULL);
+ }
;
/* [72] */
--
NetSurf Generator for JavaScript bindings