~ruther/guix-local

e0566f12f8b57f3311c9aba1737e791763e89544 — Ludovic Courtès 10 years ago 24a848c
lint: Report lonely parentheses.

* guix/scripts/lint.scm (%hanging-paren-rx): New variable.
  (report-lone-parentheses): New procedure.
  (%formatting-reporters): Use it.
* tests/lint.scm ("formatting: lonely parentheses"): New test.
2 files changed, 24 insertions(+), 1 deletions(-)

M guix/scripts/lint.scm
M tests/lint.scm
M guix/scripts/lint.scm => guix/scripts/lint.scm +14 -1
@@ 594,12 594,25 @@ descriptions maintained upstream."
                  (format #f (_ "line ~a is way too long (~a characters)")
                          line-number (string-length line)))))

(define %hanging-paren-rx
  (make-regexp "^[[:blank:]]*[()]+[[:blank:]]*$"))

(define (report-lone-parentheses package line line-number)
  "Emit a warning if LINE contains hanging parentheses."
  (when (regexp-exec %hanging-paren-rx line)
    (emit-warning package
                  (format #f
                          (_ "line ~a: parentheses feel lonely, \
move to the previous or next line")
                          line-number))))

(define %formatting-reporters
  ;; List of procedures that report formatting issues.  These are not separate
  ;; checkers because they would need to re-read the file.
  (list report-tabulations
        report-trailing-white-space
        report-long-line))
        report-long-line
        report-lone-parentheses))

(define* (report-formatting-issues package file starting-line
                                   #:key (reporters %formatting-reporters))

M tests/lint.scm => tests/lint.scm +10 -0
@@ 512,6 512,16 @@ requests."
          (check-source pkg))))
    "not reachable: 404")))

(test-assert "formatting: lonely parentheses"
  (string-contains
   (with-warnings
     (check-formatting
      (
       dummy-package "ugly as hell!"
      )
      ))
   "lonely"))

(test-assert "formatting: tabulation"
  (string-contains
   (with-warnings