nDP_PARRAY = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.PArray")
nDP_CLOSURE = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Closure")
+nDP_INTERFACE_NAME = mkModuleNameFS FSLIT("Data.Array.Parallel.Lifted")
+nDP_BUILTIN = mkModuleNameFS FSLIT(":NDP")
mAIN = mkMainModule_ mAIN_NAME
rOOT_MAIN = mkMainModule FSLIT(":Main") -- Root module for initialisation
-- warning for {- SOURCE -} ones that are unnecessary
= do this_mod <- getModule
implicit_prelude <- doptM Opt_ImplicitPrelude
+ implicit_ndp <- doptM Opt_Vectorise
let prel_imports = mkPrelImports this_mod implicit_prelude imports
+ ndp_imports = mkNDPImports implicit_ndp
(source, ordinary) = partition is_source_import imports
is_source_import (L _ (ImportDecl _ is_boot _ _ _)) = is_boot
when (notNull prel_imports) $ addWarn (implicitPreludeWarn)
)
- stuff1 <- mapM (rnImportDecl this_mod) (prel_imports ++ ordinary)
+ stuff1 <- mapM (rnImportDecl this_mod) (prel_imports
+ ++ ndp_imports
+ ++ ordinary)
stuff2 <- mapM (rnImportDecl this_mod) source
let (decls, rdr_env, imp_avails,hpc_usage) = combine (stuff1 ++ stuff2)
return (decls, rdr_env, imp_avails,hpc_usage)
loc = mkGeneralSrcSpan FSLIT("Implicit import declaration")
+mkNDPImports :: Bool -> [LImportDecl RdrName]
+mkNDPImports False = []
+mkNDPImports True = [ndpImportDecl]
+ where
+ ndpImportDecl
+ = L loc $
+ ImportDecl (L loc nDP_INTERFACE_NAME)
+ False -- not a boot interface
+ True -- qualified
+ (Just nDP_BUILTIN) -- "as"
+ Nothing -- no import list
+
+ loc = mkGeneralSrcSpan FSLIT("Implicit import declaration")
+
rnImportDecl :: Module
-> LImportDecl RdrName