]> git.sur5r.net Git - cc65/commitdiff
In case of parse errors for structs, don't just set the type of the result to
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 24 Nov 2009 23:02:58 +0000 (23:02 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Tue, 24 Nov 2009 23:02:58 +0000 (23:02 +0000)
"int", return a valid lvalue instead.

git-svn-id: svn://svn.cc65.org/cc65/trunk@4483 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/cc65/expr.c

index 27a8469a58374a750adef8e5718fd32d0d8292b3..fdf18c4d687395b59c3fc91eaa6f82629d6b4951 100644 (file)
@@ -1097,7 +1097,8 @@ static void StructRef (ExprDesc* Expr)
     NextToken ();
     if (CurTok.Tok != TOK_IDENT) {
        Error ("Identifier expected");
-       Expr->Type = type_int;
+        /* Make the expression an integer at address zero */
+        ED_MakeConstAbs (Expr, 0, type_int);
         return;
     }
 
@@ -1107,7 +1108,8 @@ static void StructRef (ExprDesc* Expr)
     Field = FindStructField (Expr->Type, Ident);
     if (Field == 0) {
        Error ("Struct/union has no field named `%s'", Ident);
-               Expr->Type = type_int;
+        /* Make the expression an integer at address zero */
+        ED_MakeConstAbs (Expr, 0, type_int);
        return;
     }