From 38ca2d37f6dd3c881e1a57c5b2741e87d61e98ee Mon Sep 17 00:00:00 2001 From: jgotoh <18658140+jgotoh@users.noreply.github.com> Date: Sun, 25 Aug 2024 01:46:50 +0200 Subject: [PATCH] Fix parsing of commas in programArgs --- cabal-install/parser-tests/Tests/ParserTests.hs | 8 +++++++- .../Tests/files/program-options-concat/cabal.project | 1 + .../src/Distribution/Client/ProjectConfig/Parsec.hs | 4 ++-- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/cabal-install/parser-tests/Tests/ParserTests.hs b/cabal-install/parser-tests/Tests/ParserTests.hs index 097db3f8be5..85f8f7a45df 100644 --- a/cabal-install/parser-tests/Tests/ParserTests.hs +++ b/cabal-install/parser-tests/Tests/ParserTests.hs @@ -472,7 +472,13 @@ testProgramOptionsConcat = do expected :: PackageConfig expected = mempty - { packageConfigProgramArgs = MapMappend $ Map.fromList [("ghc", ["-threaded", "-Wall", "-fno-state-hack"]), ("gcc", ["-baz", "-foo", "-bar"])] + { packageConfigProgramArgs = + MapMappend $ + Map.fromList + [ ("ghc", ["-threaded", "-Wall", "-fno-state-hack"]) + , ("gcc", ["-baz", "-foo", "-bar"]) + , ("ld", ["-Wl,--gc-sections"]) + ] } testRelaxDepsConcat :: Assertion diff --git a/cabal-install/parser-tests/Tests/files/program-options-concat/cabal.project b/cabal-install/parser-tests/Tests/files/program-options-concat/cabal.project index d880c442874..558a5e45a65 100644 --- a/cabal-install/parser-tests/Tests/files/program-options-concat/cabal.project +++ b/cabal-install/parser-tests/Tests/files/program-options-concat/cabal.project @@ -5,3 +5,4 @@ program-options program-options ghc-options: -threaded -Wall gcc-options: -baz + ld-options: -Wl,--gc-sections diff --git a/cabal-install/src/Distribution/Client/ProjectConfig/Parsec.hs b/cabal-install/src/Distribution/Client/ProjectConfig/Parsec.hs index 0c1e7abd655..bb60645f58b 100644 --- a/cabal-install/src/Distribution/Client/ProjectConfig/Parsec.hs +++ b/cabal-install/src/Distribution/Client/ProjectConfig/Parsec.hs @@ -41,7 +41,7 @@ import Distribution.Solver.Types.ProjectConfigPath import Distribution.Fields (Field (..), FieldLine (..), FieldName, Name (..), SectionArg (..), readFields', showPWarning) import Distribution.Fields.LexerMonad (toPWarnings) -import Distribution.Parsec (CabalParsing, PError (..), ParsecParser, eitherParsec, parsec, parsecFilePath, parsecToken, runParsecParser) +import Distribution.Parsec (CabalParsing, PError (..), ParsecParser, eitherParsec, parsec, parsecFilePath, parsecToken', runParsecParser) import Distribution.Parsec.Position (Position (..), zeroPos) import Distribution.Parsec.Warning (PWarnType (..)) import Distribution.Simple.Program.Db (ProgramDb, defaultProgramDb, knownPrograms, lookupKnownProgram) @@ -393,7 +393,7 @@ parseProgramArgsFieldLines :: Position -> [FieldLine Position] -> ParseResult [S parseProgramArgsFieldLines pos = runFieldParser pos programArgsFieldParser cabalSpec programArgsFieldParser :: CabalParsing m => m [String] -programArgsFieldParser = parseSep (Proxy :: Proxy FSep) parsecToken +programArgsFieldParser = parseSep (Proxy :: Proxy NoCommaFSep) parsecToken' type FieldSuffix = String