diff --git a/app/GlobalOptions.hs b/app/GlobalOptions.hs index faa17814da..4c875351bd 100644 --- a/app/GlobalOptions.hs +++ b/app/GlobalOptions.hs @@ -22,7 +22,7 @@ data GlobalOptions = GlobalOptions _globalNoPositivity :: Bool, _globalNoCoverage :: Bool, _globalNoStdlib :: Bool, - _globalUnrollLimit :: Word + _globalUnrollLimit :: Int } deriving stock (Eq, Show) @@ -51,7 +51,7 @@ instance CanonicalProjection GlobalOptions Core.CoreOptions where project GlobalOptions {..} = Core.CoreOptions { Core._optCheckCoverage = not _globalNoCoverage, - Core._optUnrollLimit = fromIntegral _globalUnrollLimit + Core._optUnrollLimit = _globalUnrollLimit } defaultGlobalOptions :: GlobalOptions @@ -67,7 +67,7 @@ defaultGlobalOptions = _globalNoPositivity = False, _globalNoCoverage = False, _globalNoStdlib = False, - _globalUnrollLimit = 140 + _globalUnrollLimit = defaultUnrollLimit } -- | Get a parser for global flags which can be hidden or not depending on @@ -128,8 +128,11 @@ parseGlobalFlags = do ) _globalUnrollLimit <- option - naturalNumberOpt - (long "unroll" <> value 140 <> help "Recursion unrolling limit (default: 140)") + (fromIntegral <$> naturalNumberOpt) + ( long "unroll" + <> value defaultUnrollLimit + <> help ("Recursion unrolling limit (default: " <> show defaultUnrollLimit <> ")") + ) return GlobalOptions {..} parseBuildDir :: Mod OptionFields (SomeBase Dir) -> Parser (AppPath Dir) @@ -152,6 +155,6 @@ entryPointFromGlobalOptions root mainFile opts = _entryPointNoPositivity = opts ^. globalNoPositivity, _entryPointNoCoverage = opts ^. globalNoCoverage, _entryPointNoStdlib = opts ^. globalNoStdlib, - _entryPointUnrollLimit = fromIntegral $ opts ^. globalUnrollLimit, + _entryPointUnrollLimit = opts ^. globalUnrollLimit, _entryPointGenericOptions = project opts } diff --git a/src/Juvix/Compiler/Core/Options.hs b/src/Juvix/Compiler/Core/Options.hs index 69dc86fc0c..c3076cb3e9 100644 --- a/src/Juvix/Compiler/Core/Options.hs +++ b/src/Juvix/Compiler/Core/Options.hs @@ -14,7 +14,7 @@ defaultCoreOptions :: CoreOptions defaultCoreOptions = CoreOptions { _optCheckCoverage = True, - _optUnrollLimit = 140 + _optUnrollLimit = defaultUnrollLimit } fromEntryPoint :: EntryPoint -> CoreOptions diff --git a/src/Juvix/Compiler/Pipeline/EntryPoint.hs b/src/Juvix/Compiler/Pipeline/EntryPoint.hs index eb62c0ce3d..4c38c75762 100644 --- a/src/Juvix/Compiler/Pipeline/EntryPoint.hs +++ b/src/Juvix/Compiler/Pipeline/EntryPoint.hs @@ -47,12 +47,15 @@ defaultEntryPoint root mainFile = _entryPointGenericOptions = defaultGenericOptions, _entryPointTarget = TargetCore, _entryPointDebug = False, - _entryPointUnrollLimit = 140, + _entryPointUnrollLimit = defaultUnrollLimit, _entryPointModulePaths = pure mainFile } where buildDir = rootBuildDir root +defaultUnrollLimit :: Int +defaultUnrollLimit = 140 + mainModulePath :: Lens' EntryPoint (Path Abs File) mainModulePath = entryPointModulePaths . _head1