From ec7de1aa1ad2bc14b3b1572ea4cc5024a6c662ae Mon Sep 17 00:00:00 2001 From: Uko Kokņevičs Date: Sat, 18 Oct 2025 03:06:09 +0300 Subject: Add ocicl lint --- src/tg/message-entity.lisp | 6 +++--- src/tg/message.lisp | 2 +- src/tg/method-macros.lisp | 10 +++++++--- src/tg/type-macros.lisp | 13 ++++++++----- src/tg/update.lisp | 2 +- 5 files changed, 20 insertions(+), 13 deletions(-) (limited to 'src/tg') diff --git a/src/tg/message-entity.lisp b/src/tg/message-entity.lisp index 3413763..c7e6ba1 100644 --- a/src/tg/message-entity.lisp +++ b/src/tg/message-entity.lisp @@ -37,7 +37,7 @@ (defun message-entity-extract (entity text) (with-slots (length offset) entity - (if (= length 0) + (if (zerop length) "" (let* ((start (iterate (with curr-idx16 = 0) @@ -46,7 +46,7 @@ (when (or (= curr-idx16 offset) (> (+ curr-idx16 curr-width) offset)) (return curr-idx32)) - (setq curr-idx16 (+ curr-idx16 curr-width)) + (incf curr-idx16 curr-width) (finally (return (length text))))) (end (iterate (with curr-len16 = 0) @@ -54,6 +54,6 @@ (for curr-width = (utf16-width ch)) (when (>= curr-len16 length) (return curr-idx32)) - (setq curr-len16 (+ curr-len16 curr-width)) + (incf curr-len16 curr-width) (finally (return (length text)))))) (subseq text start end))))) diff --git a/src/tg/message.lisp b/src/tg/message.lisp index 4707c57..e7043bc 100644 --- a/src/tg/message.lisp +++ b/src/tg/message.lisp @@ -160,7 +160,7 @@ ;; (video-chat-participants-invited (or video-chat-participants-invited null) nil) ;; (web-app-data (or web-app-data null) nil) ;; (reply-markup (or inline-keyboard-markup null) nil) - ) + ) ; lint:suppress closing-parens-same-line whitespace-before-close-paren (defun message-id (msg) (message-message-id msg)) diff --git a/src/tg/method-macros.lisp b/src/tg/method-macros.lisp index 3599328..e614db9 100644 --- a/src/tg/method-macros.lisp +++ b/src/tg/method-macros.lisp @@ -2,6 +2,7 @@ ;; SPDX-FileCopyrightText: 2025 Uko Kokņevičs (defpackage :ukkoclot/tg/method-macros (:use :c2cl :iterate) + (:import-from :serapeum :take) (:import-from :ukkoclot/state :bot) (:import-from :ukkoclot/strings :ends-with :lisp->camel-case) (:import-from :ukkoclot/transport :do-call) @@ -13,7 +14,10 @@ (defparameter +unique+ (gensym)) - (defun make-param (name type &optional (default +unique+) &key (skip-if-default (not (eq default +unique+)))) + ;; TODO: Fix optional-and-key ! + (defun make-param (name type ; lint:suppress avoid-optional-and-key + &optional (default +unique+) + &key (skip-if-default (not (eq default +unique+)))) (let ((default (if (eq default +unique+) `(error ,(format nil "No value given for ~A" name)) default))) @@ -29,7 +33,7 @@ (defun path-from-name (name) (let ((str (lisp->camel-case (symbol-name name)))) (if (ends-with str "%") - (subseq str 0 (- (length str) 1)) + (take (- (length str) 1) str) str))) (defun emit-append-to-args (param args) @@ -46,7 +50,7 @@ (let ((revparams (reverse params)) (args (gensym "ARGS")) (bot (gensym "BOT"))) - `(defun ,name (,bot &key ,@(iter (for param in params) + `(defun ,name (,bot &key ,@(iter (for param in params) ; lint:suppress lambda-list-invalid (collect (emit-defun-arg param)))) (let (,args) ,@(iter (for param in revparams) diff --git a/src/tg/type-macros.lisp b/src/tg/type-macros.lisp index 552c908..b9d649c 100644 --- a/src/tg/type-macros.lisp +++ b/src/tg/type-macros.lisp @@ -15,7 +15,10 @@ (defparameter +unique+ (gensym)) - (defun make-field (name type &optional (default +unique+) &key (skip-if-default (not (eq default +unique+)))) + ;; TODO: Fix optional-and-key ! + (defun make-field (name type ; lint:suppress avoid-optional-and-key + &optional (default +unique+) + &key (skip-if-default (not (eq default +unique+)))) (let ((default (if (eq default +unique+) `(error ,(format nil "No value given for ~A" name)) default))) @@ -70,7 +73,7 @@ ,@(emit-collect-nondefault-fields name fields obj (lambda (field value) - `(setf ,result (cons ,(emit-coerced-field field value) ,result)))) + `(push ,(emit-coerced-field field value) ,result))) ,result)))) (defun emit-let-gethash (field source) @@ -81,8 +84,8 @@ (let ((type-sym (gensym "TYPE-SYM")) (source (gensym "SOURCE"))) `(defmethod parse-value ((,type-sym (eql ',name)) ,source) - (let ,(iter (for field in fields) - (collect (emit-let-gethash field source))) + (let (,@(iter (for field in fields) + (collect (emit-let-gethash field source)))) (,(type-constructor name) ,@(iter (for field in fields) (appending (emit-constructor-args field)))))))) @@ -92,7 +95,7 @@ (stream (gensym "STREAM")) (depth (gensym "DEPTH")) (pprint-args (gensym "PPRINT-ARGS"))) - `(defun ,printer-name (,obj ,stream ,depth) + `(defun ,printer-name (,obj ,stream ,depth) ; lint:suppress lambda-list-invalid (declare (ignore ,depth)) (let (,pprint-args) ,@(emit-collect-nondefault-fields diff --git a/src/tg/update.lisp b/src/tg/update.lisp index 1c4ae46..90535ed 100644 --- a/src/tg/update.lisp +++ b/src/tg/update.lisp @@ -49,4 +49,4 @@ ;; (chat-join-request (or chat-join-request null) nil) ;; (chat-boost (or chat-boost-updated null) nil) ;; (removed-chat-boost (or chat-boost-removed) nil) - ) + ) ; lint:suppress closing-parens-same-line whitespace-before-close-paren -- cgit v1.2.3