]> git.sur5r.net Git - cc65/commitdiff
More lineinfo usage.
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 27 Jan 2011 21:40:37 +0000 (21:40 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Thu, 27 Jan 2011 21:40:37 +0000 (21:40 +0000)
git-svn-id: svn://svn.cc65.org/cc65/trunk@4935 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/ca65/symentry.c
src/ca65/ulabel.c

index aebab7416d1441cf177779f353d7d964fd04ed81..0c4d9bcf4f5f50708ef65380e6e17937bb2c21df 100644 (file)
@@ -288,9 +288,9 @@ void SymDef (SymEntry* S, ExprNode* Expr, unsigned char AddrSize, unsigned Flags
             S->ExportSize = S->AddrSize;
         } else if (S->AddrSize > S->ExportSize) {
             /* We're exporting a symbol smaller than it actually is */
-            PWarning (GetSymPos (S), 1, "Symbol `%m%p' is %s but exported %s",
-                      GetSymName (S), AddrSizeToStr (S->AddrSize),
-                      AddrSizeToStr (S->ExportSize));
+            LIWarning (&S->LineInfos, 1, "Symbol `%m%p' is %s but exported %s",
+                       GetSymName (S), AddrSizeToStr (S->AddrSize),
+                       AddrSizeToStr (S->ExportSize));
         }
     }
 
index c02d9fb5717245d89e1ec34fbb129a5054bbbdee..3340a68c8ece5f6d8786c59f14b5e59a1def1501 100644 (file)
 /* common */
 #include "check.h"
 #include "coll.h"
-#include "filepos.h"
 #include "xmalloc.h"
 
 /* ca65 */
 #include "error.h"
 #include "expr.h"
+#include "lineinfo.h"
 #include "scanner.h"
 #include "ulabel.h"
 
@@ -56,9 +56,9 @@
 /* Struct that describes an unnamed label */
 typedef struct ULabel ULabel;
 struct ULabel {
-    FilePos    Pos;                    /* Position of the label in the source */
-    ExprNode*  Val;                    /* The label value - may be NULL */
-    unsigned    Ref;                    /* Number of references */
+    Collection  LineInfos;      /* Position of the label in the source */
+    ExprNode*  Val;            /* The label value - may be NULL */
+    unsigned    Ref;            /* Number of references */
 };
 
 /* List management */
@@ -82,9 +82,10 @@ static ULabel* NewULabel (ExprNode* Val)
     ULabel* L = xmalloc (sizeof (ULabel));
 
     /* Initialize the fields */
-    L->Pos = CurTok.Pos;
-    L->Val = Val;
-    L->Ref = 0;
+    L->LineInfos = EmptyCollection;
+    GetFullLineInfo (&L->LineInfos);
+    L->Val       = Val;
+    L->Ref       = 0;
 
     /* Insert the label into the collection */
     CollAppend (&ULabList, L);
@@ -160,7 +161,8 @@ void ULabDef (void)
        ULabel* L = CollAtUnchecked (&ULabList, ULabDefCount);
        CHECK (L->Val == 0);
        L->Val = GenCurrentPC ();
-       L->Pos = CurTok.Pos;
+        CollDeleteAll (&L->LineInfos);
+        GetFullLineInfo (&L->LineInfos);
     } else {
        /* There is no such label, create it */
                NewULabel (GenCurrentPC ());
@@ -204,7 +206,7 @@ void ULabCheck (void)
     unsigned I = ULabDefCount;
     while (I < CollCount (&ULabList)) {
        ULabel* L = CollAtUnchecked (&ULabList, I);
-       PError (&L->Pos, "Undefined label");
+               LIError (&L->LineInfos, "Undefined label");
        ++I;
     }
 
@@ -214,10 +216,11 @@ void ULabCheck (void)
     for (I = 0; I < CollCount (&ULabList); ++I) {
         ULabel* L = CollAtUnchecked (&ULabList, I);
         if (L->Ref == 0) {
-            PWarning (&L->Pos, 1, "No reference to unnamed label");
+            LIWarning (&L->LineInfos, 1, "No reference to unnamed label");
         }
     }
 }
 
 
 
+