]> git.sur5r.net Git - cc65/blobdiff - src/ca65/ulabel.c
Finished implemenation of commands to delete macros. Added the new commands to
[cc65] / src / ca65 / ulabel.c
index c02d9fb5717245d89e1ec34fbb129a5054bbbdee..023dd13757e12f3fcf461d952f58ec0a37a3df41 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, 0);
+    L->Val       = Val;
+    L->Ref       = 0;
 
     /* Insert the label into the collection */
     CollAppend (&ULabList, L);
@@ -160,7 +161,7 @@ void ULabDef (void)
        ULabel* L = CollAtUnchecked (&ULabList, ULabDefCount);
        CHECK (L->Val == 0);
        L->Val = GenCurrentPC ();
-       L->Pos = CurTok.Pos;
+        GetFullLineInfo (&L->LineInfos, 0);
     } else {
        /* There is no such label, create it */
                NewULabel (GenCurrentPC ());
@@ -204,7 +205,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 +215,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");
         }
     }
 }
 
 
 
+