Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/usr.bin/xlint/lint1 tests/lint1: make error handling in the ...



details:   https://anonhg.NetBSD.org/src/rev/436f12b85162
branches:  trunk
changeset: 379697:436f12b85162
user:      rillig <rillig%NetBSD.org@localhost>
date:      Tue Jun 15 08:37:56 2021 +0000

description:
tests/lint1: make error handling in the lint1 linter simpler

diffstat:

 usr.bin/xlint/lint1/check-msgs.lua |  57 +++++++++++++++----------------------
 1 files changed, 23 insertions(+), 34 deletions(-)

diffs (143 lines):

diff -r 02325d1eb945 -r 436f12b85162 usr.bin/xlint/lint1/check-msgs.lua
--- a/usr.bin/xlint/lint1/check-msgs.lua        Tue Jun 15 08:23:41 2021 +0000
+++ b/usr.bin/xlint/lint1/check-msgs.lua        Tue Jun 15 08:37:56 2021 +0000
@@ -1,5 +1,5 @@
 #! /usr/bin/lua
--- $NetBSD: check-msgs.lua,v 1.10 2021/04/14 18:35:40 rillig Exp $
+-- $NetBSD: check-msgs.lua,v 1.11 2021/06/15 08:37:56 rillig Exp $
 
 --[[
 
@@ -12,7 +12,7 @@ actual user-visible message text in err.
 
 
 local function load_messages(fname)
-  local msgs = {}
+  local msgs = {} ---@type table<number>string
 
   local f = assert(io.open(fname, "r"))
   for line in f:lines() do
@@ -28,11 +28,19 @@ local function load_messages(fname)
 end
 
 
-local function check_message(fname, lineno, id, comment, msgs, errors)
+local had_errors = false
+---@param fmt string
+function print_error(fmt, ...)
+  print(fmt:format(...))
+  had_errors = true
+end
+
+
+local function check_message(fname, lineno, id, comment, msgs)
   local msg = msgs[id]
 
   if msg == nil then
-    errors:add("%s:%d: id=%d not found", fname, lineno, id)
+    print_error("%s:%d: id=%d not found", fname, lineno, id)
     return
   end
 
@@ -40,6 +48,7 @@ local function check_message(fname, line
   msg = msg:gsub("%*/", "**")
   msg = msg:gsub("\\(.)", "%1")
 
+  -- allow a few abbreviations to be used in the code
   comment = comment:gsub("arg%.", "argument")
   comment = comment:gsub("comb%.", "combination")
   comment = comment:gsub("conv%.", "conversion")
@@ -64,17 +73,12 @@ local function check_message(fname, line
     return
   end
 
-  errors:add("%s:%d:   id=%-3d   msg=%-40s   comment=%s",
+  print_error("%s:%d:   id=%-3d   msg=%-40s   comment=%s",
     fname, lineno, id, msg, comment)
 end
 
 
-local function collect_errors(fname, msgs)
-  local errors = {}
-  errors.add = function(self, fmt, ...)
-    table.insert(self, fmt:format(...))
-  end
-
+local function check_file(fname, msgs)
   local f = assert(io.open(fname, "r"))
   local lineno = 0
   local prev = ""
@@ -88,9 +92,9 @@ local function collect_errors(fname, msg
        func == "gnuism" or func == "message" then
       local comment = prev:match("^%s+/%* (.+) %*/$")
       if comment ~= nil then
-        check_message(fname, lineno, id, comment, msgs, errors)
+        check_message(fname, lineno, id, comment, msgs)
       else
-        errors:add("%s:%d: missing comment for %d: /* %s */",
+        print_error("%s:%d: missing comment for %d: /* %s */",
           fname, lineno, id, msgs[id])
       end
     end
@@ -99,19 +103,9 @@ local function collect_errors(fname, msg
   end
 
   f:close()
-
-  return errors
 end
 
 
-local function check_file(fname, msgs)
-  local errors = collect_errors(fname, msgs)
-  for _, err in ipairs(errors) do
-    print(err)
-  end
-  return #errors == 0
-end
-
 local function file_contains(filename, text)
   local f = assert(io.open(filename, "r"))
   local found = f:read("a"):find(text, 1, true)
@@ -119,6 +113,7 @@ local function file_contains(filename, t
   return found
 end
 
+
 local function check_test_files(msgs)
 
   local msgids = {}
@@ -128,28 +123,22 @@ local function check_test_files(msgs)
   table.sort(msgids)
 
   local testdir = "../../../tests/usr.bin/xlint/lint1"
-  local ok = true
   for _, msgid in ipairs(msgids) do
     local msg = msgs[msgid]:gsub("\\(.)", "%1")
     local filename = ("%s/msg_%03d.c"):format(testdir, msgid)
     if not file_contains(filename, msg) then
-      ok = false
-      print(("%s must contain: %s"):format(filename, msg))
+      print_error("%s must contain: %s", filename, msg)
     end
   end
-
-  return ok
 end
 
 local function main(arg)
   local msgs = load_messages("err.c")
-  local ok = true
   for _, fname in ipairs(arg) do
-    ok = check_file(fname, msgs) and ok
+    check_file(fname, msgs)
   end
-  ok = check_test_files(msgs) and ok
-  return ok
+  check_test_files(msgs)
 end
 
-
-os.exit(main(arg))
+main(arg)
+os.exit(not had_errors)



Home | Main Index | Thread Index | Old Index