Skip to content

Commit dcdd440

Browse files
committed
Add handling of source file text data instead of file path
1 parent 9833052 commit dcdd440

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

src/Language/PureScript/Ide/Rebuild.hs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import qualified Data.Map.Lazy as M
1414
import Data.Maybe (fromJust)
1515
import qualified Data.Set as S
1616
import qualified Data.Time as Time
17+
import qualified Data.Text as Text
1718
import qualified Language.PureScript as P
1819
import Language.PureScript.Make.Cache (CacheInfo(..), normaliseForCache)
1920
import qualified Language.PureScript.CST as CST
@@ -51,7 +52,10 @@ rebuildFile
5152
-- ^ A runner for the second build with open exports
5253
-> m Success
5354
rebuildFile file actualFile codegenTargets runOpenBuild = do
54-
(fp, input) <- ideReadFile file
55+
(fp, input) <-
56+
case List.stripPrefix "data:" file of
57+
Just source -> pure ("", Text.pack source)
58+
_ -> ideReadFile file
5559
let fp' = fromMaybe fp actualFile
5660
(pwarnings, m) <- case sequence $ CST.parseFromFile fp' input of
5761
Left parseError ->
@@ -65,13 +69,16 @@ rebuildFile file actualFile codegenTargets runOpenBuild = do
6569
-- For rebuilding, we want to 'RebuildAlways', but for inferring foreign
6670
-- modules using their file paths, we need to specify the path in the 'Map'.
6771
let filePathMap = M.singleton moduleName (Left P.RebuildAlways)
72+
let pureRebuild = S.null codegenTargets
6873
foreigns <- P.inferForeignModules (M.singleton moduleName (Right file))
6974
let makeEnv = P.buildMakeActions outputDirectory filePathMap foreigns False
75+
& (if pureRebuild then shushCodegen else identity)
76+
& shushProgress
7077
-- Rebuild the single module using the cached externs
7178
(result, warnings) <- logPerf (labelTimespec "Rebuilding Module") $
7279
liftIO $ P.runMake (P.defaultOptions { P.optionsCodegenTargets = codegenTargets }) do
73-
newExterns <- P.rebuildModule (shushProgress makeEnv) externs m
74-
unless (S.null codegenTargets)
80+
newExterns <- P.rebuildModule makeEnv externs m
81+
unless pureRebuild
7582
$ updateCacheDb codegenTargets outputDirectory file actualFile moduleName
7683
pure newExterns
7784
case result of

src/Language/PureScript/Make/Actions.hs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -220,10 +220,9 @@ buildMakeActions outputDir filePathMap foreigns usePrefix =
220220

221221
codegen :: CF.Module CF.Ann -> Docs.Module -> ExternsFile -> SupplyT Make ()
222222
codegen m docs exts = do
223-
let mn = CF.moduleName m
223+
let mn = CF.moduleName m
224+
lift $ writeCborFile (outputFilename mn externsFileName) exts
224225
codegenTargets <- lift $ asks optionsCodegenTargets
225-
unless (S.null codegenTargets)
226-
$ lift $ writeCborFile (outputFilename mn externsFileName) exts
227226
when (S.member CoreFn codegenTargets) $ do
228227
let coreFnFile = targetFilename mn CoreFn
229228
json = CFJ.moduleToJSON Paths.version m

0 commit comments

Comments
 (0)