Skip to content
Snippets Groups Projects
Commit 539cb7bc authored by Matthew Pickering's avatar Matthew Pickering Committed by Mikolaj
Browse files

Add extra ghc options to multi-repl file

These options are configured into the program by Cabal, so we also need
to extract these and put them into the mutli-file.

Fixes #10015
parent ab4c1370
No related branches found
No related tags found
No related merge requests found
Showing
with 124 additions and 1 deletion
...@@ -711,7 +711,9 @@ runReplOrWriteFlags ghcProg lbi rflags ghcOpts pkg_name target = ...@@ -711,7 +711,9 @@ runReplOrWriteFlags ghcProg lbi rflags ghcOpts pkg_name target =
writeFileAtomic (out_dir </> this_unit) $ writeFileAtomic (out_dir </> this_unit) $
BS.pack $ BS.pack $
escapeArgs $ escapeArgs $
extra_opts ++ renderGhcOptions comp platform (ghcOpts{ghcOptMode = NoFlag}) extra_opts
++ renderGhcOptions comp platform (ghcOpts{ghcOptMode = NoFlag})
++ programOverrideArgs ghcProg
replNoLoad :: Ord a => ReplOptions -> NubListR a -> NubListR a replNoLoad :: Ord a => ReplOptions -> NubListR a -> NubListR a
replNoLoad replFlags l replNoLoad replFlags l
......
# Revision history for extra-options
## 0.1.0.0 -- YYYY-mm-dd
* First version. Released on an unsuspecting world.
Copyright (c) 2024, Matthew Pickering
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of Matthew Pickering nor the names of other
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
module Main where
import qualified MyLib (someFunc)
#ifdef FOO
main :: IO ()
main = do
putStrLn "Hello, Haskell!"
MyLib.someFunc
#endif
# cabal v2-repl
Resolving dependencies...
Build profile: -w ghc-<GHCVER> -O1
In order, the following will be built:
- extra-options-0.1.0.0 (interactive) (lib) (first run)
- extra-options-0.1.0.0 (interactive) (test:extra-options-test) (first run)
- extra-options-0.1.0.0 (interactive) (exe:extra-options) (first run)
Configuring library for extra-options-0.1.0.0...
Preprocessing library for extra-options-0.1.0.0...
Configuring test suite 'extra-options-test' for extra-options-0.1.0.0...
Preprocessing test suite 'extra-options-test' for extra-options-0.1.0.0...
Configuring executable 'extra-options' for extra-options-0.1.0.0...
Preprocessing executable 'extra-options' for extra-options-0.1.0.0...
packages: .
tests: True
program-options
ghc-options: -XCPP -DFOO
import Test.Cabal.Prelude
main = do
cabalTest $ do
skipUnlessGhcVersion ">= 9.4"
void $ cabalWithStdin "v2-repl" ["--enable-multi-repl","all"] ""
cabal-version: 3.0
name: extra-options
version: 0.1.0.0
license: BSD-3-Clause
license-file: LICENSE
author: Matthew Pickering
maintainer: matthewtpickering@gmail.com
build-type: Simple
extra-doc-files: CHANGELOG.md
common warnings
ghc-options: -Wall
library
import: warnings
exposed-modules: MyLib
build-depends: base
hs-source-dirs: src
default-language: Haskell2010
executable extra-options
import: warnings
main-is: Main.hs
build-depends:
base,
extra-options
hs-source-dirs: app
default-language: Haskell2010
test-suite extra-options-test
import: warnings
default-language: Haskell2010
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: Main.hs
build-depends:
base,
extra-options
module MyLib (someFunc) where
#ifdef FOO
someFunc :: IO ()
someFunc = putStrLn "someFunc"
#endif
module Main (main) where
#ifdef FOO
main :: IO ()
main = putStrLn "Test suite not yet implemented."
#endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment