]> 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 4a425e7b36cdcd0d534ff3adf4013af8da4b85b7..023dd13757e12f3fcf461d952f58ec0a37a3df41 100644 (file)
@@ -6,10 +6,10 @@
 /*                                                                           */
 /*                                                                           */
 /*                                                                           */
-/* (C) 2000-2004 Ullrich von Bassewitz                                       */
-/*               Römerstraße 52                                              */
-/*               D-70794 Filderstadt                                         */
-/* EMail:        uz@cc65.org                                                 */
+/* (C) 2000-2011, Ullrich von Bassewitz                                      */
+/*                Roemerstrasse 52                                           */
+/*                D-70794 Filderstadt                                        */
+/* EMail:         uz@cc65.org                                                */
 /*                                                                           */
 /*                                                                           */
 /* This software is provided 'as-is', without any expressed or implied       */
 /* 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 = CurPos;
-    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 = CurPos;
+        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");
         }
     }
 }
 
 
 
+