Alexandre Julliard : widl: Array dimensions have to be constants.
Alexandre Julliard
julliard at winehq.org
Mon May 30 12:41:16 CDT 2011
Module: wine
Branch: master
Commit: 968c8688c49dc62eca51f6b6a00087246c2bb1eb
URL: http://source.winehq.org/git/wine.git/?a=commit;h=968c8688c49dc62eca51f6b6a00087246c2bb1eb
Author: Alexandre Julliard <julliard at winehq.org>
Date: Sat May 28 13:39:18 2011 +0200
widl: Array dimensions have to be constants.
---
dlls/rpcrt4/tests/server.idl | 2 +-
tools/widl/parser.y | 16 +++++-----------
2 files changed, 6 insertions(+), 12 deletions(-)
diff --git a/dlls/rpcrt4/tests/server.idl b/dlls/rpcrt4/tests/server.idl
index 2605c12..56bf1a5 100644
--- a/dlls/rpcrt4/tests/server.idl
+++ b/dlls/rpcrt4/tests/server.idl
@@ -157,7 +157,7 @@ cpp_quote("#endif")
int sum_cs(cs_t *cs);
int sum_cps(cps_t *cps);
int sum_cpsc(cpsc_t *cpsc);
- int sum_complex_array(int n, refpint_t pi[n]);
+ int sum_complex_array(int n, [size_is(n)] refpint_t pi[]);
typedef [wire_marshal(int)] void *puint_t;
int square_puint(puint_t p);
diff --git a/tools/widl/parser.y b/tools/widl/parser.y
index fc1076f..6f0cf8c 100644
--- a/tools/widl/parser.y
+++ b/tools/widl/parser.y
@@ -452,8 +452,12 @@ arg: attributes decl_spec m_any_declarator { if ($2->stgclass != STG_NONE && $
}
;
-array: '[' m_expr ']' { $$ = $2; }
+array: '[' expr ']' { $$ = $2;
+ if (!$$->is_const)
+ error_loc("array dimension is not an integer constant\n");
+ }
| '[' '*' ']' { $$ = make_expr(EXPR_VOID); }
+ | '[' ']' { $$ = make_expr(EXPR_VOID); }
;
m_attributes: { $$ = NULL; }
@@ -638,16 +642,6 @@ m_exprs: m_expr { $$ = append_expr( NULL, $1 );
| m_exprs ',' m_expr { $$ = append_expr( $1, $3 ); }
;
-/*
-exprs: { $$ = make_expr(EXPR_VOID); }
- | expr_list
- ;
-
-expr_list: expr
- | expr_list ',' expr { LINK($3, $1); $$ = $3; }
- ;
-*/
-
m_expr: { $$ = make_expr(EXPR_VOID); }
| expr
;
More information about the wine-cvs
mailing list