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