emacs-diffs
[Top][All Lists]
Advanced

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

master cd0eb055fd4 3/3: Make Compilation mode recognize Lua errors


From: Stefan Kangas
Subject: master cd0eb055fd4 3/3: Make Compilation mode recognize Lua errors
Date: Wed, 10 Jan 2024 08:48:45 -0500 (EST)

branch: master
commit cd0eb055fd4ebc3f7f7f5f5617549f963fe8ecff
Author: Rudolf Adamkovič <salutis@me.com>
Commit: Stefan Kangas <stefankangas@gmail.com>

    Make Compilation mode recognize Lua errors
    
    Emacs comes with built-in support for the Lua programming language in
    the form of the Lua mode and now also the Lua Tree-sitter mode.  This
    patch further improves Lua support in Emacs by making the Compilation
    mode recognize Lua errors and stack traces.
    
    * lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
    Add regexps to aid Lua development, namely the 'lua' regexp that
    matches Lua errors and the 'lua-stack' regexp that matches Lua stack
    frames.  (Bug#60830)
    * etc/compilation.txt (Lua): Add an example of a Lua error message
    with a stack trace.
    * test/lisp/progmodes/compile-tests.el (compile-tests--test-regexps-data):
    (compile-test-error-regexps): Test the new 'lua' and 'lua-stack'
    regexps added to the 'compilation-error-regexp-alist-alist'.
---
 etc/NEWS                             |  5 +++++
 etc/compilation.txt                  | 13 +++++++++++++
 lisp/progmodes/compile.el            |  8 ++++++++
 test/lisp/progmodes/compile-tests.el | 31 +++++++++++++++++++++++++++++--
 4 files changed, 55 insertions(+), 2 deletions(-)

diff --git a/etc/NEWS b/etc/NEWS
index 4559c67d4ae..bce33f96aee 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -452,6 +452,11 @@ This is because it partly acts by modifying other rules 
which may
 occasionally be surprising.  It can be re-enabled by adding 'omake' to
 'compilation-error-regexp-alist'.
 
+*** Lua errors and stack traces are now recognized.
+Compilation mode now recognizes Lua language errors and stack traces.
+Every Lua error is recognized as a compilation error, and every Lua
+stack frame is recognized as a compilation info.
+
 ** Project
 
 +++
diff --git a/etc/compilation.txt b/etc/compilation.txt
index c03d30afa79..05f0829864c 100644
--- a/etc/compilation.txt
+++ b/etc/compilation.txt
@@ -344,6 +344,19 @@ In /home/janneke/vc/guile/examples/gud-break.scm:
 1033: 0 [stderr "~a:hello world\n" (# # #)]
 
 
+* Lua 5.1, 5.2, 5.3, 5.4, and LuaJIT 2.1
+
+/usr/bin/lua: database.lua:31: assertion failed!
+stack traceback:
+       [C]: in function 'assert'
+       database.lua:31: in field 'statement'
+       database.lua:42: in field 'table'
+       database.lua:55: in field 'row'
+       database.lua:63: in field 'value'
+       io.lua: in main chunk
+       [C]: in ?
+
+
 * Lucid Compiler, lcc 3.x
 
 symbol: lcc
diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index e7d4e9966cf..797e594c0c5 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -362,6 +362,14 @@ of[ \t]+\"?\\([a-zA-Z]?:?[^\":\n]+\\)\"?:" 3 2 nil (1))
     (ruby-Test::Unit
      "^    [[ ]?\\([^ (].*\\):\\([1-9][0-9]*\\)\\(\\]\\)?:in " 1 2)
 
+    ;; Tested with Lua 5.1, 5.2, 5.3, 5.4, and LuaJIT 2.1.
+    (lua
+     "^[^\n\t]+?: \\([^\n\t]+?\\):\\([0-9]+?\\): .+\nstack traceback:\n\t"
+     1 2 nil 2 1)
+    (lua-stack
+     "^\t\\(?:\\[C\\]:\\|\\([^\n\t]+?\\):\\(?:\\([0-9]+?\\):\\)?\\) in "
+     1 2 nil 0 1)
+
     (gmake
      ;; Set GNU make error messages as INFO level.
      ;; It starts with the name of the make program which is variable,
diff --git a/test/lisp/progmodes/compile-tests.el 
b/test/lisp/progmodes/compile-tests.el
index f5b5cad9c0b..20beed955d2 100644
--- a/test/lisp/progmodes/compile-tests.el
+++ b/test/lisp/progmodes/compile-tests.el
@@ -206,6 +206,33 @@
      1 0 31 "/usr/include/c++/3.3/backward/iostream.h")
     (gcc-include "                 from test_clt.cc:1:"
      1 nil 1 "test_clt.cc")
+    ;; Lua
+    (lua "lua: database.lua:10: assertion failed!\nstack traceback:\n\t"
+         6 nil 10 "database.lua")
+    (lua "lua 5.4: database 2.lua:10: assertion failed!\nstack traceback:\n\t"
+         10 nil 10 "database 2.lua")
+    (lua "/usr/local/bin/lua: core/database.lua:20: assertion failed!\nstack 
traceback:\n\t"
+         21 nil 20 "core/database.lua")
+    (lua "C:\\Lua\\Lua.exe: Core\\Database.lua:20: assertion failed!\nstack 
traceback:\n\t"
+         17 nil 20 "Core\\Database.lua")
+    (lua "lua: /tmp/database.lua:20: assertion failed!\nstack traceback:\n\t"
+         6 nil 20 "/tmp/database.lua")
+    (lua "Lua.exe: C:\\Temp\\Database.lua:20: assertion failed!\nstack 
traceback:\n\t"
+         10 nil 20 "C:\\Temp\\Database.lua")
+    (lua-stack "       database.lua: in field 'statement'"
+               2 nil nil "database.lua" 0)
+    (lua-stack "       database.lua:10: in field 'statement'"
+               2 nil 10 "database.lua" 0)
+    (lua-stack "       core/database.lua:20: in field 'statement'"
+               2 nil 20 "core/database.lua" 0)
+    (lua-stack "       database 2.lua: in field 'statement'"
+               2 nil nil "database 2.lua" 0)
+    (lua-stack "       Core\\Database.lua:20: in field 'statement'"
+               2 nil 20 "Core\\Database.lua" 0)
+    (lua-stack "       /tmp/database.lua: in field 'statement'"
+               2 nil nil "/tmp/database.lua" 0)
+    (lua-stack "       C:\\Core\\Database.lua: in field 'statement'"
+               2 nil nil "C:\\Core\\Database.lua" 0)
     ;; gmake
     (gmake "make: *** [Makefile:20: all] Error 2" 12 nil 20 "Makefile" 0)
     (gmake "make[4]: *** [sub/make.mk:19: all] Error 127" 15 nil 19
@@ -507,9 +534,9 @@ The test data is in `compile-tests--test-regexps-data'."
                    1 15 5 "alpha.c")))
         (compile--test-error-line test))
 
-      (should (eq compilation-num-errors-found 100))
+      (should (eq compilation-num-errors-found 106))
       (should (eq compilation-num-warnings-found 35))
-      (should (eq compilation-num-infos-found 28)))))
+      (should (eq compilation-num-infos-found 35)))))
 
 (ert-deftest compile-test-grep-regexps ()
   "Test the `grep-regexp-alist' regexps.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]