File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1010module std/core/unsafe
1111
1212import std/core/types
13+ import std/core/hnd
1314
1415// _Unsafe_. This function calls a function and pretends it did not have any effect at all.
1516// Use with utmost care as it should not be used to dismiss user-defined effects that need
Original file line number Diff line number Diff line change @@ -177,13 +177,13 @@ resOpen (Env penv gamma) eopen effFrom effTo tpFrom tpTo@(TFun targs _ tres) exp
177177 in case lsFrom of
178178 [] -> -- no handled effect, use cast
179179 case lsTo of
180- [] -> trace (" no handled effect, in no handled effect context: use cast" )
180+ [] | matchType tlFrom tlTo -> trace (" no handled effect, in no handled effect context: use cast" )
181181 expr
182- _ -> trace ( " no handled effect; use none: " ++ show expr) $
183- if (isHandlerFree expr )
184- then trace ( " *** remove open-none " ) $ -- fully total with using any operations that need evidence; just leave it as is
185- expr
186- else if (n <= 4 )
182+ _ ->
183+ trace ( " different effects: " ++ show (ppType penv tlFrom) ++ " , to " ++ show (ppType penv tlTo )
184+ ++ " with effects: " ++ show ( map (ppType penv) lsFrom, map (ppType penv) lsTo)) $
185+ if isHandlerFree expr then expr
186+ else if (n <= 4 )
187187 then wrapper (resolve (nameOpenNone n)) [] -- fails in perf1c with exceeded stack size if --optmaxdup < 500 (since it prevents a tailcall)
188188 -- expr -- fails in nim as it evidence is not cleared
189189 else wrapperThunk (resolve (nameOpenNone 0 )) []
@@ -236,9 +236,9 @@ isHandlerFree expr
236236 -> case handlerFreeFunType (typeOf vname) of
237237 Nothing -> True
238238 Just ok -> ok
239- Var vname _ -> case handlerFreeFunType (typeOf vname) of
240- Nothing -> True
241- Just ok -> ok && (isSystemCoreName (getName vname))
239+ -- Var vname _ -> case handlerFreeFunType (typeOf vname) of
240+ -- Nothing -> True
241+ -- Just ok -> ok && (isSystemCoreName (getName vname))
242242 Con {} -> True
243243 Lit {} -> True
244244 _ -> False
Original file line number Diff line number Diff line change 1+ import std/os/path
2+ import std/os/env
3+
4+ effect val package-root : path
5+
6+ fun main ()
7+ println("Expecting : " ++ (cwd() / ".kokac " ). show)
8+ with set-package-root(cwd())
9+ println(package-root)
10+
11+ noinline fun set-package-root (root : path , f : () -> < package-root , ndet |e> a): < ndet |e> a
12+ with val package-root = root / ".kokac "
13+ f()
Original file line number Diff line number Diff line change 1+ Expecting :"@@@/@kokac"
2+ "@@@/@kokac"
You can’t perform that action at this time.
0 commit comments