From 5f4e1c75a34744f04916e1db8056669e20708ef0 Mon Sep 17 00:00:00 2001 From: Lars-Dominik Braun Date: Sun, 1 May 2022 08:34:42 +0200 Subject: [PATCH 4/5] import: cabal: Allow curly bracket before else statement. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * guix/import/cabal.scm (is-else): Turn into procedure. (lex-line): Move IS-ELSE… (lex-word): …here. * tests/hackage.scm (test-cabal-elif-brackets): Extend testcase. --- guix/import/cabal.scm | 4 ++-- tests/hackage.scm | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/guix/import/cabal.scm b/guix/import/cabal.scm index 9f3862fa14..8f59a63cb9 100644 --- a/guix/import/cabal.scm +++ b/guix/import/cabal.scm @@ -384,7 +384,7 @@ (define is-benchmark (make-rx-matcher "^benchmark +([a-z0-9_-]+)" (define is-lib (make-rx-matcher "^library *" regexp/icase)) -(define is-else (make-rx-matcher "^else" regexp/icase)) +(define (is-else s) (string-ci=? s "else")) (define (is-elif s) (string-ci=? s "elif")) @@ -576,6 +576,7 @@ (define (lex-word port loc) (let* ((w (read-delimited " <>=():\t\n" port 'peek))) (cond ((is-if w) (lex-if loc)) ((is-elif w) (lex-elif loc)) + ((is-else w) (lex-else loc)) ((is-test w port) (lex-test w loc)) ((is-true w) (lex-true loc)) ((is-false w) (lex-false loc)) @@ -599,7 +600,6 @@ (define (lex-line port loc) ((is-custom-setup s) => (cut lex-custom-setup <> loc)) ((is-benchmark s) => (cut lex-benchmark <> loc)) ((is-lib s) (lex-lib loc)) - ((is-else s) (lex-else loc)) (else (unread-string s port) #f)))) (define (lex-property port loc) diff --git a/tests/hackage.scm b/tests/hackage.scm index 4ce48b6baf..98f9c34fd2 100644 --- a/tests/hackage.scm +++ b/tests/hackage.scm @@ -398,7 +398,10 @@ (define test-cabal-elif-brackets elif os(guix) { Build-depends: ghc-c } elif os(third) { Build-depends: ghc-d } - else + elif os(fourth) + { + Build-depends: ghc-d + } else Build-depends: ghc-e ") -- 2.35.1