;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017, 2020 Sergei Trofimovich ;;; Copyright © 2021 Sergei Trofimovich ;;; Copyright © 2018 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (gnu packages re2c) #:use-module (guix licenses) #:use-module (guix packages) #:use-module (gnu packages python) #:use-module (guix download) #:use-module (guix build-system gnu)) (define-public re2c (package (name "re2c") (version "2.2") (source (origin (method url-fetch) (uri (string-append "https://github.com/skvadrik/" name "/releases/download/" version "/" name "-" version ".tar.xz")) (sha256 (base32 "1nkbv3bxz1kwwql1pdlnj3lxy5h2vsaif393ivb5b9d8610mxi0g")))) (build-system gnu-build-system) (home-page "https://re2c.org/") (native-inputs (list python)) ; for the test driver (synopsis "Lexer generator for C/C++") (description "@code{re2c} generates minimalistic hard-coded state machine (as opposed to full-featured table-based lexers). Flexible API allows generated code to be wired into virtually any environment. Instead of exposing traditional @code{yylex()} style API, re2c exposes its internals. Be sure to take a look at examples, they cover a lot of real-world cases and shed some light on dark corners of re2c API.") (license public-domain))) ix/log/tests/records.scm?id=61361ef2646cc59f18fd1d33d9d13348930255b7'>records.scm
AgeCommit message (Expand)Author
2020-01-16records: Improve reporting of "invalid field specifier" errors....Previously users would just see: error: invalid field specifier without source location or hints. * guix/records.scm (expand): Add optional 'parent-form' parameter and pass it to 'syntax-violation' when it is true. (make-syntactic-constructor): Pass S as a third argument to 'report-invalid-field-specifier'. * guix/ui.scm (report-load-error): For 'syntax-error', show SUBFORM or FORM in the message. * tests/records.scm ("define-record-type* & wrong field specifier"): Add a 'subform' parameter and adjust test accordingly. ("define-record-type* & wrong field specifier, identifier"): New test. * tests/guix-system.sh: Add test. Ludovic Courtès
2019-03-30records: Support custom 'this' identifiers....This lets record users choose an identifier other than 'this-record'. * guix/records.scm (make-syntactic-constructor): Add #:this-identifier. [wrap-field-value]: Honor it. (define-record-type*): Add form with extra THIS-IDENTIFIER and honor it. * tests/records.scm ("define-record-type* & thunked & inherit & custom this"): New test. Ludovic Courtès
2019-03-25records: Allow thunked fields to refer to 'this-record'....* guix/records.scm (this-record): New syntax parameter. (make-syntactic-constructor)[wrap-field-value]: When F is thunked, return a one-argument lambda instead of a thunk, and parameterize THIS-RECORD. (define-record-type*)[thunked-field-accessor-definition]: Pass X to (real-get X). * tests/records.scm ("define-record-type* & thunked & this-record") ("define-record-type* & thunked & default & this-record") ("define-record-type* & thunked & inherit & this-record"): New tests. Ludovic Courtès
2019-01-22records: Detect duplicate field initializers....* guix/records.scm (report-duplicate-field-specifier): New procedure. (make-syntactic-constructor): Call it. * tests/records.scm ("define-record-type* & duplicate initializers"): New test. Co-authored-by: Mark H Weaver <mhw@netris.org> Ludovic Courtès