summary refs log tree commit diff
diff options
context:
space:
mode:
authorLars-Dominik Braun <lars@6xq.net>2022-05-01 08:34:42 +0200
committerLars-Dominik Braun <lars@6xq.net>2022-06-06 13:26:45 +0200
commite3337f35afa83e746f0a66451fd4d2212c032b03 (patch)
treeedab05615f5ca472cf136d579373d10e735b08d3
parent001e0bac99c977d2ff04910295b154f91aa3d369 (diff)
downloadguix-e3337f35afa83e746f0a66451fd4d2212c032b03.tar.gz
import: cabal: Allow curly bracket before else statement.
* 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.
-rw-r--r--guix/import/cabal.scm4
-rw-r--r--tests/hackage.scm5
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 @@ matching a string against the created regexp."
 
 (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 @@ LOC is the current port location."
   (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 @@ the current port location."
      ((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 @@ library
   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
 ")