[A68-RECUTILS][COMMITTED] rec-field.a68: avoid potential scope violation

Jose E. Marchesi jemarch@gnu.org
Wed Apr 9 19:47:08 GMT 2025


A potential scope violation was detected by the compiler:

src/rec-field.a68:32:40: warning: REF REC_FIELD_NAME IDENTIFIER is a potential scope violation [-Wscope]
   32 |    HEAP REC_FIELD := (rec loc unknown, n, v);
      |                                        ^

This patch rewrites "rec field new" to remove this possibility.
---
 src/rec-field.a68  |  4 ++--
 src/rec-parser.a68 | 10 +++++-----
 2 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/src/rec-field.a68 b/src/rec-field.a68
index 699290a..8701e65 100644
--- a/src/rec-field.a68
+++ b/src/rec-field.a68
@@ -28,8 +28,8 @@ REF REC_FIELD rec no field = NIL;
 # Create and return a new field, with default location and the given
   name and value.  #
 
-PROC rec field new = (REF REC_FIELD_NAME n, STRING v) REF REC_FIELD:
-   HEAP REC_FIELD := (rec loc unknown, n, v);
+PROC rec field new = (STRING n, v) REF REC_FIELD:
+   HEAP REC_FIELD := (rec loc unknown, rec get field name (n), v);
 
 # Determine whether the given string is a correct field name.
   ^[a-zA-Z%][a-zA-Z0-9_]*$
diff --git a/src/rec-parser.a68 b/src/rec-parser.a68
index a80428e..0bcf803 100644
--- a/src/rec-parser.a68
+++ b/src/rec-parser.a68
@@ -350,13 +350,13 @@ BEGIN STRING str;
       char OF loc := char pos OF parser;
 
       # Parse the field name and field value.  #
-      REF REC_FIELD_NAME field name;
+      STRING field name str;
       REF STRING field value;
-      res := rec parse field name (parser, field name);
+      res := rec parse field name (parser, field name str);
       IF res
       THEN res := rec parse field value (parser, field value);
            IF res
-           THEN REF REC_FIELD new field = rec field new (field name, field value);
+           THEN REF REC_FIELD new field = rec field new (field name str, field value);
                 field := new field;
                 loc OF field := loc
            FI
@@ -379,7 +379,7 @@ END;
 #
 
 PROC rec parse field name = (REF REC_PARSER parser,
-                             REF REF REC_FIELD_NAME field name) BOOL:
+                             REF STRING field name str) BOOL:
 BEGIN STRING str;
       CHAR c := rec parser getc (parser);
       BOOL res := TRUE;
@@ -419,7 +419,7 @@ BEGIN STRING str;
                done)
       FI;
 
-      field name := rec get field name (str);
+      field name str := str;
 done:
       res
 END;
-- 
2.30.2



More information about the Algol68 mailing list