├── .gitignore ├── README.md ├── sift-bindings ├── aeson-1.0.2.1 │ ├── bindings_main_Data.Aeson.Encode.json │ ├── bindings_main_Data.Aeson.Encoding.Builder.json │ ├── bindings_main_Data.Aeson.Encoding.Internal.json │ ├── bindings_main_Data.Aeson.Encoding.json │ ├── bindings_main_Data.Aeson.Internal.Functions.json │ ├── bindings_main_Data.Aeson.Internal.Time.json │ ├── bindings_main_Data.Aeson.Internal.json │ ├── bindings_main_Data.Aeson.Parser.Internal.json │ ├── bindings_main_Data.Aeson.Parser.Time.json │ ├── bindings_main_Data.Aeson.Parser.Unescape.json │ ├── bindings_main_Data.Aeson.Parser.json │ ├── bindings_main_Data.Aeson.TH.json │ ├── bindings_main_Data.Aeson.Text.json │ ├── bindings_main_Data.Aeson.Types.Class.json │ ├── bindings_main_Data.Aeson.Types.FromJSON.json │ ├── bindings_main_Data.Aeson.Types.Generic.json │ ├── bindings_main_Data.Aeson.Types.Internal.json │ ├── bindings_main_Data.Aeson.Types.ToJSON.json │ ├── bindings_main_Data.Aeson.Types.json │ └── bindings_main_Data.Aeson.json └── base-4.9.0.0 │ ├── bindings_base_CatEntail.json │ ├── bindings_base_CatPairs.json │ ├── bindings_base_Control.Applicative.json │ ├── bindings_base_Control.Arrow.json │ ├── bindings_base_Control.Category.json │ ├── bindings_base_Control.Concurrent.Chan.json │ ├── bindings_base_Control.Concurrent.MVar.json │ ├── bindings_base_Control.Concurrent.QSem.json │ ├── bindings_base_Control.Concurrent.QSemN.json │ ├── bindings_base_Control.Concurrent.json │ ├── bindings_base_Control.Exception.Base.json │ ├── bindings_base_Control.Exception.json │ ├── bindings_base_Control.Monad.Fail.json │ ├── bindings_base_Control.Monad.Fix.json │ ├── bindings_base_Control.Monad.IO.Class.json │ ├── bindings_base_Control.Monad.Instances.json │ ├── bindings_base_Control.Monad.ST.Imp.json │ ├── bindings_base_Control.Monad.ST.Lazy.Imp.json │ ├── bindings_base_Control.Monad.ST.Lazy.Safe.json │ ├── bindings_base_Control.Monad.ST.Lazy.Unsafe.json │ ├── bindings_base_Control.Monad.ST.Lazy.json │ ├── bindings_base_Control.Monad.ST.Safe.json │ ├── bindings_base_Control.Monad.ST.Strict.json │ ├── bindings_base_Control.Monad.ST.Unsafe.json │ ├── bindings_base_Control.Monad.ST.json │ ├── bindings_base_Control.Monad.Zip.json │ ├── bindings_base_Control.Monad.json │ ├── bindings_base_GHC.Arr.json │ ├── bindings_base_GHC.Base.json │ ├── bindings_base_GHC.Char.json │ ├── bindings_base_GHC.Conc.IO.json │ ├── bindings_base_GHC.Conc.Signal.json │ ├── bindings_base_GHC.Conc.Sync.json │ ├── bindings_base_GHC.Conc.json │ ├── bindings_base_GHC.ConsoleHandler.json │ ├── bindings_base_GHC.Constants.json │ ├── bindings_base_GHC.Desugar.json │ ├── bindings_base_GHC.Enum.json │ ├── bindings_base_GHC.Environment.json │ ├── bindings_base_GHC.Err.json │ ├── bindings_base_GHC.Event.Arr.json │ ├── bindings_base_GHC.Event.Array.json │ ├── bindings_base_GHC.Event.Control.json │ ├── bindings_base_GHC.Event.IntTable.json │ ├── bindings_base_GHC.Event.Internal.json │ ├── bindings_base_GHC.Event.Manager.json │ ├── bindings_base_GHC.Event.PSQ.json │ ├── bindings_base_GHC.Event.Thread.json │ ├── bindings_base_GHC.Event.TimerManager.json │ ├── bindings_base_GHC.Event.Unique.json │ ├── bindings_base_GHC.Event.json │ ├── bindings_base_GHC.Exception.json │ ├── bindings_base_GHC.ExecutionStack.json │ ├── bindings_base_GHC.Exts.json │ ├── bindings_base_GHC.Fingerprint.Type.json │ ├── bindings_base_GHC.Fingerprint.json │ ├── bindings_base_GHC.Float.ConversionUtils.json │ ├── bindings_base_GHC.Float.RealFracMethods.json │ ├── bindings_base_GHC.Float.json │ ├── bindings_base_GHC.Foreign.json │ ├── bindings_base_GHC.ForeignPtr.json │ ├── bindings_base_GHC.GHCi.json │ ├── bindings_base_GHC.Generics.json │ ├── bindings_base_GHC.IO.Buffer.json │ ├── bindings_base_GHC.IO.BufferedIO.json │ ├── bindings_base_GHC.IO.Device.json │ ├── bindings_base_GHC.IO.Encoding.CodePage.API.json │ ├── bindings_base_GHC.IO.Encoding.CodePage.Table.json │ ├── bindings_base_GHC.IO.Encoding.CodePage.json │ ├── bindings_base_GHC.IO.Encoding.Failure.json │ ├── bindings_base_GHC.IO.Encoding.Iconv.json │ ├── bindings_base_GHC.IO.Encoding.Latin1.json │ ├── bindings_base_GHC.IO.Encoding.Types.json │ ├── bindings_base_GHC.IO.Encoding.UTF16.json │ ├── bindings_base_GHC.IO.Encoding.UTF32.json │ ├── bindings_base_GHC.IO.Encoding.UTF8.json │ ├── bindings_base_GHC.IO.Encoding.json │ ├── bindings_base_GHC.IO.Exception.json │ ├── bindings_base_GHC.IO.FD.json │ ├── bindings_base_GHC.IO.Handle.FD.json │ ├── bindings_base_GHC.IO.Handle.Internals.json │ ├── bindings_base_GHC.IO.Handle.Text.json │ ├── bindings_base_GHC.IO.Handle.Types.json │ ├── bindings_base_GHC.IO.Handle.json │ ├── bindings_base_GHC.IO.IOMode.json │ ├── bindings_base_GHC.IO.Unsafe.json │ ├── bindings_base_GHC.IO.json │ ├── bindings_base_GHC.IOArray.json │ ├── bindings_base_GHC.IORef.json │ ├── bindings_base_GHC.Int.json │ ├── bindings_base_GHC.List.json │ ├── bindings_base_GHC.MVar.json │ ├── bindings_base_GHC.Natural.json │ ├── bindings_base_GHC.Num.json │ ├── bindings_base_GHC.OldList.json │ ├── bindings_base_GHC.OverloadedLabels.json │ ├── bindings_base_GHC.PArr.json │ ├── bindings_base_GHC.Pack.json │ ├── bindings_base_GHC.Profiling.json │ ├── bindings_base_GHC.Ptr.json │ ├── bindings_base_GHC.Read.json │ ├── bindings_base_GHC.Real.json │ ├── bindings_base_GHC.ST.json │ ├── bindings_base_GHC.STRef.json │ ├── bindings_base_GHC.Show.json │ ├── bindings_base_GHC.Stable.json │ ├── bindings_base_GHC.Stack.Types.json │ ├── bindings_base_GHC.Stack.json │ ├── bindings_base_GHC.StaticPtr.json │ ├── bindings_base_GHC.Storable.json │ ├── bindings_base_GHC.TopHandler.json │ ├── bindings_base_GHC.TypeLits.json │ ├── bindings_base_GHC.Unicode.json │ ├── bindings_base_GHC.Weak.json │ ├── bindings_base_GHC.Windows.json │ ├── bindings_base_GHC.Word.json │ ├── bindings_base_Unsafe.Coerce.json │ └── bindings_base_XPrelude.json ├── sift-compiler ├── .gitignore ├── Setup.hs ├── cbits │ ├── HsVersions.h │ ├── PosixSource.h │ └── hschooks.c ├── sift-compiler.cabal └── src │ ├── GhciMonad.hs │ ├── InteractiveUI.hs │ ├── Main.hs │ └── Sift │ └── Compat.hs ├── sift-frontend-plugin ├── .gitignore ├── ChangeLog.md ├── LICENSE ├── README.md ├── Setup.hs ├── sift-frontend-plugin.cabal └── src │ └── Sift │ ├── FrontendPlugin.hs │ └── Types.hs ├── sift ├── .gitignore ├── ChangeLog.md ├── LICENSE ├── README.md ├── app │ └── Main.hs ├── flag.yaml ├── sift.cabal ├── src │ ├── Data │ │ └── OrdGraph.hs │ └── Sift.hs └── test │ ├── GHCHarness.hs │ └── Main.hs └── stack.yaml /.gitignore: -------------------------------------------------------------------------------- 1 | .stack-work 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # sift 2 | Sift through Haskell code for analysis purposes 3 | 4 | ## Install 5 | 6 | Install so it's available for any projects using this version of GHC: 7 | 8 | ``` 9 | stack install --copy-compiler-tool 10 | ``` 11 | 12 | ## Example use 13 | 14 | Use the bindings in `sift-bindings/base-4.9.0.0/` to seed the base 15 | package. Now you can use the `sift trace` command and flag up direct 16 | or indirect uses of a given binding. 17 | 18 | ``` 19 | $ sift trace sift-bindings/*/* --flag-binding "ghc-prim GHC.Prim raise#" 20 | Flagged binding: ghc-prim:GHC.Prim.raise# 21 | Used by aeson:Data.Aeson.Encoding.Builder.day 22 | Used by aeson:Data.Aeson.Encoding.Builder.digit 23 | Used by aeson:Data.Aeson.Encoding.Builder.scientific 24 | Used by aeson:Data.Aeson.Encoding.Builder.timeOfDay64 25 | Used by aeson:Data.Aeson.Encoding.Builder.timeZone 26 | Used by aeson:Data.Aeson.Encoding.Builder.twoDigits 27 | Used by aeson:Data.Aeson.Internal.Time.diffTimeOfDay64 28 | Used by aeson:Data.Aeson.Parser.Time.seconds 29 | Used by aeson:Data.Aeson.Parser.Time.timeZone 30 | Used by aeson:Data.Aeson.Parser.Unescape.unescapeText' 31 | [snip] 32 | Used by base:Control.Exception.Base.noMethodBindingError 33 | Used by base:Control.Exception.Base.nonExhaustiveGuardsError 34 | Used by base:Control.Exception.Base.patError 35 | Used by base:Control.Exception.Base.recConError 36 | Used by base:Control.Exception.Base.recSelError 37 | Used by base:Control.Exception.Base.runtimeError 38 | Used by base:Control.Exception.Base.typeError 39 | Used by base:Control.Monad.Fix.mfix 40 | [snip] 41 | ``` 42 | 43 | See 44 | [full gist](https://gist.github.com/chrisdone/143b7bcc1fe21a1cde5d5ce0051f0016) 45 | for full output. 46 | 47 | ## Discovery 48 | 49 | If you're not sure what the proper location for a binding is, search 50 | by identifier: 51 | 52 | ``` 53 | $ sift find sift-bindings/base-4.9.0.0/*.json --ident "fork#" 54 | Binding id: ghc-prim:GHC.Prim.fork# 55 | ``` 56 | 57 | ## Generate bindings 58 | 59 | For e.g. the aeson package, use sift-compiler in the aeson package directory: 60 | 61 | ``` 62 | $ SIFT_PACKAGE=aeson stack ghci --with-ghc sift-compiler aeson:lib 63 | ``` 64 | 65 | (`cabal repl` should also work similarly!) 66 | 67 | That will generate a bunch of files in the current directory for each 68 | module: 69 | 70 | ``` 71 | bindings_main_Data.Aeson.Encode.json 72 | bindings_main_Data.Aeson.Parser.Time.json 73 | bindings_main_Data.Aeson.Encoding.Builder.json 74 | bindings_main_Data.Aeson.Parser.Unescape.json 75 | ... 76 | ``` 77 | 78 | Use this to seed `sift` as above. 79 | -------------------------------------------------------------------------------- /sift-bindings/aeson-1.0.2.1/bindings_main_Data.Aeson.Encode.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "aeson" 2 | ,"module": "Data.Aeson.Encode" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]} 10 | ,{"id": {"package": "aeson" 11 | ,"module": "Data.Aeson.Encode" 12 | ,"name": "encodeToTextBuilder"} 13 | ,"refs": [{"package": "main" 14 | ,"module": "Data.Aeson.Text" 15 | ,"name": "encodeToTextBuilder"}] 16 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson/Encode.hs" 17 | ,"start-line": 29 18 | ,"start-col": 1 19 | ,"end-line": 29 20 | ,"end-col": 44}} 21 | ,{"id": {"package": "aeson" 22 | ,"module": "Data.Aeson.Encode" 23 | ,"name": "encode"} 24 | ,"refs": [{"package": "main" 25 | ,"module": "Data.Aeson" 26 | ,"name": "encode"}] 27 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson/Encode.hs" 28 | ,"start-line": 25 29 | ,"start-col": 1 30 | ,"end-line": 25 31 | ,"end-col": 18}}] -------------------------------------------------------------------------------- /sift-bindings/aeson-1.0.2.1/bindings_main_Data.Aeson.Encoding.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "aeson" 2 | ,"module": "Data.Aeson.Encoding" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/aeson-1.0.2.1/bindings_main_Data.Aeson.Internal.Functions.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "aeson" 2 | ,"module": "Data.Aeson.Internal.Functions" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]} 10 | ,{"id": {"package": "aeson" 11 | ,"module": "Data.Aeson.Internal.Functions" 12 | ,"name": "mapKeyVal"} 13 | ,"refs": [{"package": "unordered-containers-0.2.8.0-1XEErQCPPPc2SEtcHHNx9o" 14 | ,"module": "Data.HashMap.Base" 15 | ,"name": "foldrWithKey"} 16 | ,{"package": "unordered-containers-0.2.8.0-1XEErQCPPPc2SEtcHHNx9o" 17 | ,"module": "Data.HashMap.Strict" 18 | ,"name": "insert"} 19 | ,{"package": "main" 20 | ,"module": "Data.Aeson.Internal.Functions" 21 | ,"name": "fk"} 22 | ,{"package": "main" 23 | ,"module": "Data.Aeson.Internal.Functions" 24 | ,"name": "k"} 25 | ,{"package": "main" 26 | ,"module": "Data.Aeson.Internal.Functions" 27 | ,"name": "kv"} 28 | ,{"package": "main" 29 | ,"module": "Data.Aeson.Internal.Functions" 30 | ,"name": "v"} 31 | ,{"package": "unordered-containers-0.2.8.0-1XEErQCPPPc2SEtcHHNx9o" 32 | ,"module": "Data.HashMap.Base" 33 | ,"name": "empty"}] 34 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson/Internal/Functions.hs" 35 | ,"start-line": 33 36 | ,"start-col": 1 37 | ,"end-line": 33 38 | ,"end-col": 74}} 39 | ,{"id": {"package": "aeson" 40 | ,"module": "Data.Aeson.Internal.Functions" 41 | ,"name": "mapKey"} 42 | ,"refs": [{"package": "main" 43 | ,"module": "Data.Aeson.Internal.Functions" 44 | ,"name": "mapKeyVal"} 45 | ,{"package": "main" 46 | ,"module": "Data.Aeson.Internal.Functions" 47 | ,"name": "fk"} 48 | ,{"package": "base" 49 | ,"module": "GHC.Base" 50 | ,"name": "id"}] 51 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson/Internal/Functions.hs" 52 | ,"start-line": 38 53 | ,"start-col": 1 54 | ,"end-line": 38 55 | ,"end-col": 28}} 56 | ,{"id": {"package": "aeson" 57 | ,"module": "Data.Aeson.Internal.Functions" 58 | ,"name": "mapHashKeyVal"} 59 | ,"refs": [{"package": "containers-0.5.7.1" 60 | ,"module": "Data.Map.Base" 61 | ,"name": "foldrWithKey"} 62 | ,{"package": "unordered-containers-0.2.8.0-1XEErQCPPPc2SEtcHHNx9o" 63 | ,"module": "Data.HashMap.Strict" 64 | ,"name": "insert"} 65 | ,{"package": "main" 66 | ,"module": "Data.Aeson.Internal.Functions" 67 | ,"name": "fk"} 68 | ,{"package": "main" 69 | ,"module": "Data.Aeson.Internal.Functions" 70 | ,"name": "k"} 71 | ,{"package": "main" 72 | ,"module": "Data.Aeson.Internal.Functions" 73 | ,"name": "kv"} 74 | ,{"package": "main" 75 | ,"module": "Data.Aeson.Internal.Functions" 76 | ,"name": "v"} 77 | ,{"package": "unordered-containers-0.2.8.0-1XEErQCPPPc2SEtcHHNx9o" 78 | ,"module": "Data.HashMap.Base" 79 | ,"name": "empty"}] 80 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson/Internal/Functions.hs" 81 | ,"start-line": 27 82 | ,"start-col": 1 83 | ,"end-line": 27 84 | ,"end-col": 78}}] -------------------------------------------------------------------------------- /sift-bindings/aeson-1.0.2.1/bindings_main_Data.Aeson.Internal.Time.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "aeson" 2 | ,"module": "Data.Aeson.Internal.Time" 3 | ,"name": "$tcTimeOfDay64"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "main" 8 | ,"module": "Data.Aeson.Internal.Time" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "aeson" 14 | ,"module": "Data.Aeson.Internal.Time" 15 | ,"name": "$tc'TOD"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "main" 20 | ,"module": "Data.Aeson.Internal.Time" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "aeson" 26 | ,"module": "Data.Aeson.Internal.Time" 27 | ,"name": "$trModule"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "Module"} 31 | ,{"package": "ghc-prim" 32 | ,"module": "GHC.Types" 33 | ,"name": "TrNameS"}]} 34 | ,{"id": {"package": "aeson" 35 | ,"module": "Data.Aeson.Internal.Time" 36 | ,"name": "diffTimeOfDay64"} 37 | ,"refs": [{"package": "main" 38 | ,"module": "Data.Aeson.Internal.Time" 39 | ,"name": "$WTOD"} 40 | ,{"package": "base" 41 | ,"module": "GHC.Real" 42 | ,"name": "fromIntegral"} 43 | ,{"package": "main" 44 | ,"module": "Data.Aeson.Internal.Time" 45 | ,"name": "h"} 46 | ,{"package": "main" 47 | ,"module": "Data.Aeson.Internal.Time" 48 | ,"name": "m"} 49 | ,{"package": "main" 50 | ,"module": "Data.Aeson.Internal.Time" 51 | ,"name": "s"} 52 | ,{"package": "base" 53 | ,"module": "Unsafe.Coerce" 54 | ,"name": "unsafeCoerce"} 55 | ,{"package": "main" 56 | ,"module": "Data.Aeson.Internal.Time" 57 | ,"name": "t"} 58 | ,{"package": "main" 59 | ,"module": "Data.Aeson.Internal.Time" 60 | ,"name": "pico"} 61 | ,{"package": "base" 62 | ,"module": "GHC.Real" 63 | ,"name": "quotRem"} 64 | ,{"package": "base" 65 | ,"module": "GHC.Num" 66 | ,"name": "fromInteger"} 67 | ,{"package": "main" 68 | ,"module": "Data.Aeson.Internal.Time" 69 | ,"name": "mp"}] 70 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson/Internal/Time.hs" 71 | ,"start-line": 54 72 | ,"start-col": 1 73 | ,"end-line": 57 74 | ,"end-col": 43}} 75 | ,{"id": {"package": "aeson" 76 | ,"module": "Data.Aeson.Internal.Time" 77 | ,"name": "fromPico"} 78 | ,"refs": [{"package": "main" 79 | ,"module": "Data.Aeson.Internal.Time" 80 | ,"name": "i"}] 81 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson/Internal/Time.hs" 82 | ,"start-line": 36 83 | ,"start-col": 1 84 | ,"end-line": 36 85 | ,"end-col": 25}} 86 | ,{"id": {"package": "aeson" 87 | ,"module": "Data.Aeson.Internal.Time" 88 | ,"name": "toTimeOfDay64"} 89 | ,"refs": [{"package": "main" 90 | ,"module": "Data.Aeson.Internal.Time" 91 | ,"name": "$WTOD"} 92 | ,{"package": "main" 93 | ,"module": "Data.Aeson.Internal.Time" 94 | ,"name": "h"} 95 | ,{"package": "main" 96 | ,"module": "Data.Aeson.Internal.Time" 97 | ,"name": "m"} 98 | ,{"package": "base" 99 | ,"module": "GHC.Real" 100 | ,"name": "fromIntegral"} 101 | ,{"package": "main" 102 | ,"module": "Data.Aeson.Internal.Time" 103 | ,"name": "fromPico"} 104 | ,{"package": "main" 105 | ,"module": "Data.Aeson.Internal.Time" 106 | ,"name": "s"}] 107 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson/Internal/Time.hs" 108 | ,"start-line": 60 109 | ,"start-col": 1 110 | ,"end-line": 60 111 | ,"end-col": 70}} 112 | ,{"id": {"package": "aeson" 113 | ,"module": "Data.Aeson.Internal.Time" 114 | ,"name": "toPico"} 115 | ,"refs": [{"package": "base" 116 | ,"module": "Data.Fixed" 117 | ,"name": "MkFixed"}] 118 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson/Internal/Time.hs" 119 | ,"start-line": 33 120 | ,"start-col": 1 121 | ,"end-line": 33 122 | ,"end-col": 17}}] -------------------------------------------------------------------------------- /sift-bindings/aeson-1.0.2.1/bindings_main_Data.Aeson.Internal.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "aeson" 2 | ,"module": "Data.Aeson.Internal" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/aeson-1.0.2.1/bindings_main_Data.Aeson.Parser.Unescape.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "aeson" 2 | ,"module": "Data.Aeson.Parser.Unescape" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]} 10 | ,{"id": {"package": "aeson" 11 | ,"module": "Data.Aeson.Parser.Unescape" 12 | ,"name": "unescapeText'"} 13 | ,"refs": [{"package": "text-1.2.2.1-Ji7hMs2U4BkBwavd4taEVR" 14 | ,"module": "Data.Text.Internal.Private" 15 | ,"name": "runText"} 16 | ,{"package": "base" 17 | ,"module": "GHC.Base" 18 | ,"name": "$"} 19 | ,{"package": "base" 20 | ,"module": "Foreign.ForeignPtr.Imp" 21 | ,"name": "withForeignPtr"} 22 | ,{"package": "main" 23 | ,"module": "Data.Aeson.Parser.Unescape" 24 | ,"name": "fp"} 25 | ,{"package": "base" 26 | ,"module": "GHC.Base" 27 | ,"name": "$"} 28 | ,{"package": "base" 29 | ,"module": "Foreign.Marshal.Utils" 30 | ,"name": "with"} 31 | ,{"package": "base" 32 | ,"module": "GHC.Num" 33 | ,"name": "fromInteger"} 34 | ,{"package": "base" 35 | ,"module": "GHC.Base" 36 | ,"name": "$"} 37 | ,{"package": "main" 38 | ,"module": "Data.Aeson.Parser.Unescape" 39 | ,"name": "ptr"} 40 | ,{"package": "base" 41 | ,"module": "GHC.Ptr" 42 | ,"name": "plusPtr"} 43 | ,{"package": "main" 44 | ,"module": "Data.Aeson.Parser.Unescape" 45 | ,"name": "off"} 46 | ,{"package": "base" 47 | ,"module": "GHC.Num" 48 | ,"name": "+"} 49 | ,{"package": "main" 50 | ,"module": "Data.Aeson.Parser.Unescape" 51 | ,"name": "len"} 52 | ,{"package": "main" 53 | ,"module": "Data.Aeson.Parser.Unescape" 54 | ,"name": "c_js_decode"} 55 | ,{"package": "text-1.2.2.1-Ji7hMs2U4BkBwavd4taEVR" 56 | ,"module": "Data.Text.Array" 57 | ,"name": "maBA"} 58 | ,{"package": "main" 59 | ,"module": "Data.Aeson.Parser.Unescape" 60 | ,"name": "dest"} 61 | ,{"package": "main" 62 | ,"module": "Data.Aeson.Parser.Unescape" 63 | ,"name": "destOffPtr"} 64 | ,{"package": "main" 65 | ,"module": "Data.Aeson.Parser.Unescape" 66 | ,"name": "curPtr"} 67 | ,{"package": "main" 68 | ,"module": "Data.Aeson.Parser.Unescape" 69 | ,"name": "end"} 70 | ,{"package": "base" 71 | ,"module": "GHC.Base" 72 | ,"name": ">>="} 73 | ,{"package": "main" 74 | ,"module": "Data.Aeson.Parser.Unescape" 75 | ,"name": "res"} 76 | ,{"package": "ghc-prim" 77 | ,"module": "GHC.Classes" 78 | ,"name": "=="} 79 | ,{"package": "base" 80 | ,"module": "Foreign.Storable" 81 | ,"name": "peek"} 82 | ,{"package": "base" 83 | ,"module": "GHC.IO" 84 | ,"name": "unsafeSTToIO"} 85 | ,{"package": "main" 86 | ,"module": "Data.Aeson.Parser.Unescape" 87 | ,"name": "done"} 88 | ,{"package": "base" 89 | ,"module": "GHC.Real" 90 | ,"name": "fromIntegral"} 91 | ,{"package": "main" 92 | ,"module": "Data.Aeson.Parser.Unescape" 93 | ,"name": "n"} 94 | ,{"package": "base" 95 | ,"module": "GHC.Exception" 96 | ,"name": "throw"} 97 | ,{"package": "text-1.2.2.1-Ji7hMs2U4BkBwavd4taEVR" 98 | ,"module": "Data.Text.Encoding.Error" 99 | ,"name": "DecodeError"} 100 | ,{"package": "main" 101 | ,"module": "Data.Aeson.Parser.Unescape" 102 | ,"name": "desc"} 103 | ,{"package": "base" 104 | ,"module": "GHC.Base" 105 | ,"name": "Nothing"} 106 | ,{"package": "main" 107 | ,"module": "Data.Aeson.Parser.Unescape" 108 | ,"name": "loop"} 109 | ,{"package": "base" 110 | ,"module": "GHC.IO" 111 | ,"name": "unsafeIOToST"} 112 | ,{"package": "base" 113 | ,"module": "GHC.Base" 114 | ,"name": "."} 115 | ,{"package": "main" 116 | ,"module": "Data.Aeson.Parser.Unescape" 117 | ,"name": "go"} 118 | ,{"package": "base" 119 | ,"module": "GHC.Base" 120 | ,"name": "=<<"} 121 | ,{"package": "text-1.2.2.1-Ji7hMs2U4BkBwavd4taEVR" 122 | ,"module": "Data.Text.Array" 123 | ,"name": "new"}] 124 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson/Parser/Unescape.hs" 125 | ,"start-line": 31 126 | ,"start-col": 1 127 | ,"end-line": 46 128 | ,"end-col": 72}} 129 | ,{"id": {"package": "aeson" 130 | ,"module": "Data.Aeson.Parser.Unescape" 131 | ,"name": "unescapeText"} 132 | ,"refs": [{"package": "base" 133 | ,"module": "GHC.IO.Unsafe" 134 | ,"name": "unsafeDupablePerformIO"} 135 | ,{"package": "base" 136 | ,"module": "GHC.Base" 137 | ,"name": "."} 138 | ,{"package": "base" 139 | ,"module": "Control.Exception.Base" 140 | ,"name": "try"} 141 | ,{"package": "base" 142 | ,"module": "GHC.IO" 143 | ,"name": "evaluate"} 144 | ,{"package": "main" 145 | ,"module": "Data.Aeson.Parser.Unescape" 146 | ,"name": "unescapeText'"}] 147 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson/Parser/Unescape.hs" 148 | ,"start-line": 50 149 | ,"start-col": 1 150 | ,"end-line": 50 151 | ,"end-col": 71}}] -------------------------------------------------------------------------------- /sift-bindings/aeson-1.0.2.1/bindings_main_Data.Aeson.Parser.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "aeson" 2 | ,"module": "Data.Aeson.Parser" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/aeson-1.0.2.1/bindings_main_Data.Aeson.Text.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "aeson" 2 | ,"module": "Data.Aeson.Text" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]} 10 | ,{"id": {"package": "aeson" 11 | ,"module": "Data.Aeson.Text" 12 | ,"name": "fromScientific"} 13 | ,"refs": [{"package": "scientific-0.3.4.12-J9HRl69dpDBBzAMKxlfkoh" 14 | ,"module": "Data.Text.Lazy.Builder.Scientific" 15 | ,"name": "formatScientificBuilder"} 16 | ,{"package": "main" 17 | ,"module": "Data.Aeson.Text" 18 | ,"name": "format"} 19 | ,{"package": "main" 20 | ,"module": "Data.Aeson.Text" 21 | ,"name": "prec"} 22 | ,{"package": "main" 23 | ,"module": "Data.Aeson.Text" 24 | ,"name": "s"} 25 | ,{"package": "scientific-0.3.4.12-J9HRl69dpDBBzAMKxlfkoh" 26 | ,"module": "Data.Scientific" 27 | ,"name": "base10Exponent"} 28 | ,{"package": "ghc-prim" 29 | ,"module": "GHC.Classes" 30 | ,"name": "<"} 31 | ,{"package": "base" 32 | ,"module": "GHC.Num" 33 | ,"name": "fromInteger"} 34 | ,{"package": "text-1.2.2.1-Ji7hMs2U4BkBwavd4taEVR" 35 | ,"module": "Data.Text.Lazy.Builder.RealFloat" 36 | ,"name": "Generic"} 37 | ,{"package": "base" 38 | ,"module": "GHC.Base" 39 | ,"name": "Nothing"} 40 | ,{"package": "base" 41 | ,"module": "GHC.Base" 42 | ,"name": "otherwise"} 43 | ,{"package": "text-1.2.2.1-Ji7hMs2U4BkBwavd4taEVR" 44 | ,"module": "Data.Text.Lazy.Builder.RealFloat" 45 | ,"name": "Fixed"} 46 | ,{"package": "base" 47 | ,"module": "GHC.Base" 48 | ,"name": "Just"}] 49 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson/Text.hs" 50 | ,"start-line": 97 51 | ,"start-col": 1 52 | ,"end-line": 101 53 | ,"end-col": 49}} 54 | ,{"id": {"package": "aeson" 55 | ,"module": "Data.Aeson.Text" 56 | ,"name": "string"} 57 | ,"refs": [{"package": "text-1.2.2.1-Ji7hMs2U4BkBwavd4taEVR" 58 | ,"module": "Data.Text.Internal.Builder" 59 | ,"name": "singleton"} 60 | ,{"package": "base" 61 | ,"module": "Data.Monoid" 62 | ,"name": "<>"} 63 | ,{"package": "main" 64 | ,"module": "Data.Aeson.Text" 65 | ,"name": "quote"} 66 | ,{"package": "main" 67 | ,"module": "Data.Aeson.Text" 68 | ,"name": "s"} 69 | ,{"package": "base" 70 | ,"module": "Data.String" 71 | ,"name": "fromString"} 72 | ,{"package": "main" 73 | ,"module": "Data.Aeson.Text" 74 | ,"name": "c"} 75 | ,{"package": "ghc-prim" 76 | ,"module": "GHC.Classes" 77 | ,"name": "<"} 78 | ,{"package": "text-1.2.2.1-Ji7hMs2U4BkBwavd4taEVR" 79 | ,"module": "Data.Text.Internal.Builder" 80 | ,"name": "fromString"} 81 | ,{"package": "base" 82 | ,"module": "GHC.Base" 83 | ,"name": "$"} 84 | ,{"package": "base" 85 | ,"module": "GHC.Base" 86 | ,"name": "++"} 87 | ,{"package": "base" 88 | ,"module": "GHC.List" 89 | ,"name": "replicate"} 90 | ,{"package": "base" 91 | ,"module": "GHC.Num" 92 | ,"name": "fromInteger"} 93 | ,{"package": "base" 94 | ,"module": "GHC.Num" 95 | ,"name": "-"} 96 | ,{"package": "base" 97 | ,"module": "Data.Foldable" 98 | ,"name": "length"} 99 | ,{"package": "main" 100 | ,"module": "Data.Aeson.Text" 101 | ,"name": "h"} 102 | ,{"package": "base" 103 | ,"module": "GHC.Base" 104 | ,"name": "otherwise"} 105 | ,{"package": "base" 106 | ,"module": "Numeric" 107 | ,"name": "showHex"} 108 | ,{"package": "base" 109 | ,"module": "GHC.Enum" 110 | ,"name": "fromEnum"} 111 | ,{"package": "main" 112 | ,"module": "Data.Aeson.Text" 113 | ,"name": "c"} 114 | ,{"package": "ghc-prim" 115 | ,"module": "GHC.Classes" 116 | ,"name": "=="} 117 | ,{"package": "ghc-prim" 118 | ,"module": "GHC.Classes" 119 | ,"name": "||"} 120 | ,{"package": "text-1.2.2.1-Ji7hMs2U4BkBwavd4taEVR" 121 | ,"module": "Data.Text" 122 | ,"name": "uncons"} 123 | ,{"package": "main" 124 | ,"module": "Data.Aeson.Text" 125 | ,"name": "t"} 126 | ,{"package": "text-1.2.2.1-Ji7hMs2U4BkBwavd4taEVR" 127 | ,"module": "Data.Text.Internal.Builder" 128 | ,"name": "fromText"} 129 | ,{"package": "main" 130 | ,"module": "Data.Aeson.Text" 131 | ,"name": "h"} 132 | ,{"package": "main" 133 | ,"module": "Data.Aeson.Text" 134 | ,"name": "escape"} 135 | ,{"package": "main" 136 | ,"module": "Data.Aeson.Text" 137 | ,"name": "c"} 138 | ,{"package": "main" 139 | ,"module": "Data.Aeson.Text" 140 | ,"name": "quote"} 141 | ,{"package": "main" 142 | ,"module": "Data.Aeson.Text" 143 | ,"name": "t'"} 144 | ,{"package": "text-1.2.2.1-Ji7hMs2U4BkBwavd4taEVR" 145 | ,"module": "Data.Text" 146 | ,"name": "break"} 147 | ,{"package": "main" 148 | ,"module": "Data.Aeson.Text" 149 | ,"name": "isEscape"} 150 | ,{"package": "main" 151 | ,"module": "Data.Aeson.Text" 152 | ,"name": "q"}] 153 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson/Text.hs" 154 | ,"start-line": 76 155 | ,"start-col": 1 156 | ,"end-line": 94 157 | ,"end-col": 42}} 158 | ,{"id": {"package": "aeson" 159 | ,"module": "Data.Aeson.Text" 160 | ,"name": "encodeToTextBuilder"} 161 | ,"refs": [{"package": "main" 162 | ,"module": "Data.Aeson.Text" 163 | ,"name": "go"} 164 | ,{"package": "base" 165 | ,"module": "GHC.Base" 166 | ,"name": "."} 167 | ,{"package": "main" 168 | ,"module": "Data.Aeson.Types.ToJSON" 169 | ,"name": "toJSON"} 170 | ,{"package": "base" 171 | ,"module": "Data.String" 172 | ,"name": "fromString"} 173 | ,{"package": "main" 174 | ,"module": "Data.Aeson.Text" 175 | ,"name": "b"} 176 | ,{"package": "main" 177 | ,"module": "Data.Aeson.Text" 178 | ,"name": "fromScientific"} 179 | ,{"package": "main" 180 | ,"module": "Data.Aeson.Text" 181 | ,"name": "s"} 182 | ,{"package": "main" 183 | ,"module": "Data.Aeson.Text" 184 | ,"name": "string"} 185 | ,{"package": "main" 186 | ,"module": "Data.Aeson.Text" 187 | ,"name": "s"} 188 | ,{"package": "vector-0.11.0.0-LMwQhhnXj8U3T5Bm1JFxG" 189 | ,"module": "Data.Vector" 190 | ,"name": "null"} 191 | ,{"package": "main" 192 | ,"module": "Data.Aeson.Text" 193 | ,"name": "v"} 194 | ,{"package": "base" 195 | ,"module": "GHC.Base" 196 | ,"name": "otherwise"} 197 | ,{"package": "text-1.2.2.1-Ji7hMs2U4BkBwavd4taEVR" 198 | ,"module": "Data.Text.Internal.Builder" 199 | ,"name": "singleton"} 200 | ,{"package": "base" 201 | ,"module": "Data.Monoid" 202 | ,"name": "<>"} 203 | ,{"package": "main" 204 | ,"module": "Data.Aeson.Text" 205 | ,"name": "go"} 206 | ,{"package": "vector-0.11.0.0-LMwQhhnXj8U3T5Bm1JFxG" 207 | ,"module": "Data.Vector" 208 | ,"name": "unsafeHead"} 209 | ,{"package": "vector-0.11.0.0-LMwQhhnXj8U3T5Bm1JFxG" 210 | ,"module": "Data.Vector" 211 | ,"name": "foldr"} 212 | ,{"package": "main" 213 | ,"module": "Data.Aeson.Text" 214 | ,"name": "f"} 215 | ,{"package": "vector-0.11.0.0-LMwQhhnXj8U3T5Bm1JFxG" 216 | ,"module": "Data.Vector" 217 | ,"name": "unsafeTail"} 218 | ,{"package": "main" 219 | ,"module": "Data.Aeson.Text" 220 | ,"name": "a"} 221 | ,{"package": "main" 222 | ,"module": "Data.Aeson.Text" 223 | ,"name": "z"} 224 | ,{"package": "unordered-containers-0.2.8.0-1XEErQCPPPc2SEtcHHNx9o" 225 | ,"module": "Data.HashMap.Base" 226 | ,"name": "toList"} 227 | ,{"package": "main" 228 | ,"module": "Data.Aeson.Text" 229 | ,"name": "m"} 230 | ,{"package": "main" 231 | ,"module": "Data.Aeson.Text" 232 | ,"name": "one"} 233 | ,{"package": "main" 234 | ,"module": "Data.Aeson.Text" 235 | ,"name": "x"} 236 | ,{"package": "base" 237 | ,"module": "Data.Foldable" 238 | ,"name": "foldr"} 239 | ,{"package": "main" 240 | ,"module": "Data.Aeson.Text" 241 | ,"name": "f"} 242 | ,{"package": "main" 243 | ,"module": "Data.Aeson.Text" 244 | ,"name": "xs"} 245 | ,{"package": "main" 246 | ,"module": "Data.Aeson.Text" 247 | ,"name": "k"} 248 | ,{"package": "main" 249 | ,"module": "Data.Aeson.Text" 250 | ,"name": "v"} 251 | ,{"package": "main" 252 | ,"module": "Data.Aeson.Text" 253 | ,"name": "a"} 254 | ,{"package": "main" 255 | ,"module": "Data.Aeson.Text" 256 | ,"name": "z"}] 257 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson/Text.hs" 258 | ,"start-line": 54 259 | ,"start-col": 1 260 | ,"end-line": 73 261 | ,"end-col": 58}} 262 | ,{"id": {"package": "aeson" 263 | ,"module": "Data.Aeson.Text" 264 | ,"name": "encodeToLazyText"} 265 | ,"refs": [{"package": "text-1.2.2.1-Ji7hMs2U4BkBwavd4taEVR" 266 | ,"module": "Data.Text.Lazy.Encoding" 267 | ,"name": "decodeUtf8"} 268 | ,{"package": "base" 269 | ,"module": "GHC.Base" 270 | ,"name": "."} 271 | ,{"package": "main" 272 | ,"module": "Data.Aeson.Encoding.Internal" 273 | ,"name": "encodingToLazyByteString"} 274 | ,{"package": "main" 275 | ,"module": "Data.Aeson.Types.ToJSON" 276 | ,"name": "toEncoding"}] 277 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson/Text.hs" 278 | ,"start-line": 43 279 | ,"start-col": 1 280 | ,"end-line": 43 281 | ,"end-col": 73}}] -------------------------------------------------------------------------------- /sift-bindings/aeson-1.0.2.1/bindings_main_Data.Aeson.Types.Class.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "aeson" 2 | ,"module": "Data.Aeson.Types.Class" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/aeson-1.0.2.1/bindings_main_Data.Aeson.Types.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "aeson" 2 | ,"module": "Data.Aeson.Types" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]} 10 | ,{"id": {"package": "aeson" 11 | ,"module": "Data.Aeson.Types" 12 | ,"name": "foldable"} 13 | ,"refs": [{"package": "main" 14 | ,"module": "Data.Aeson.Types.ToJSON" 15 | ,"name": "toEncoding"} 16 | ,{"package": "base" 17 | ,"module": "GHC.Base" 18 | ,"name": "."} 19 | ,{"package": "base" 20 | ,"module": "Data.Foldable" 21 | ,"name": "toList"}] 22 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson/Types.hs" 23 | ,"start-line": 117 24 | ,"start-col": 1 25 | ,"end-line": 117 26 | ,"end-col": 31}}] -------------------------------------------------------------------------------- /sift-bindings/aeson-1.0.2.1/bindings_main_Data.Aeson.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "aeson" 2 | ,"module": "Data.Aeson" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]} 10 | ,{"id": {"package": "aeson" 11 | ,"module": "Data.Aeson" 12 | ,"name": "eitherFormatError"} 13 | ,"refs": [{"package": "base" 14 | ,"module": "Data.Either" 15 | ,"name": "either"} 16 | ,{"package": "base" 17 | ,"module": "Data.Either" 18 | ,"name": "Left"} 19 | ,{"package": "base" 20 | ,"module": "GHC.Base" 21 | ,"name": "."} 22 | ,{"package": "base" 23 | ,"module": "Data.Tuple" 24 | ,"name": "uncurry"} 25 | ,{"package": "main" 26 | ,"module": "Data.Aeson.Types.Internal" 27 | ,"name": "formatError"} 28 | ,{"package": "base" 29 | ,"module": "Data.Either" 30 | ,"name": "Right"}] 31 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson.hs" 32 | ,"start-line": 183 33 | ,"start-col": 1 34 | ,"end-line": 183 35 | ,"end-col": 62}} 36 | ,{"id": {"package": "aeson" 37 | ,"module": "Data.Aeson" 38 | ,"name": "eitherDecode"} 39 | ,"refs": [{"package": "main" 40 | ,"module": "Data.Aeson" 41 | ,"name": "eitherFormatError"} 42 | ,{"package": "base" 43 | ,"module": "GHC.Base" 44 | ,"name": "."} 45 | ,{"package": "main" 46 | ,"module": "Data.Aeson.Parser.Internal" 47 | ,"name": "eitherDecodeWith"} 48 | ,{"package": "main" 49 | ,"module": "Data.Aeson.Parser.Internal" 50 | ,"name": "jsonEOF"} 51 | ,{"package": "main" 52 | ,"module": "Data.Aeson.Types.FromJSON" 53 | ,"name": "ifromJSON"}] 54 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson.hs" 55 | ,"start-line": 188 56 | ,"start-col": 1 57 | ,"end-line": 188 58 | ,"end-col": 70}} 59 | ,{"id": {"package": "aeson" 60 | ,"module": "Data.Aeson" 61 | ,"name": "eitherDecodeStrict"} 62 | ,"refs": [{"package": "main" 63 | ,"module": "Data.Aeson" 64 | ,"name": "eitherFormatError"} 65 | ,{"package": "base" 66 | ,"module": "GHC.Base" 67 | ,"name": "."} 68 | ,{"package": "main" 69 | ,"module": "Data.Aeson.Parser.Internal" 70 | ,"name": "eitherDecodeStrictWith"} 71 | ,{"package": "main" 72 | ,"module": "Data.Aeson.Parser.Internal" 73 | ,"name": "jsonEOF"} 74 | ,{"package": "main" 75 | ,"module": "Data.Aeson.Types.FromJSON" 76 | ,"name": "ifromJSON"}] 77 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson.hs" 78 | ,"start-line": 193 79 | ,"start-col": 1 80 | ,"end-line": 194 81 | ,"end-col": 63}} 82 | ,{"id": {"package": "aeson" 83 | ,"module": "Data.Aeson" 84 | ,"name": "eitherDecode'"} 85 | ,"refs": [{"package": "main" 86 | ,"module": "Data.Aeson" 87 | ,"name": "eitherFormatError"} 88 | ,{"package": "base" 89 | ,"module": "GHC.Base" 90 | ,"name": "."} 91 | ,{"package": "main" 92 | ,"module": "Data.Aeson.Parser.Internal" 93 | ,"name": "eitherDecodeWith"} 94 | ,{"package": "main" 95 | ,"module": "Data.Aeson.Parser.Internal" 96 | ,"name": "jsonEOF'"} 97 | ,{"package": "main" 98 | ,"module": "Data.Aeson.Types.FromJSON" 99 | ,"name": "ifromJSON"}] 100 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson.hs" 101 | ,"start-line": 199 102 | ,"start-col": 1 103 | ,"end-line": 199 104 | ,"end-col": 72}} 105 | ,{"id": {"package": "aeson" 106 | ,"module": "Data.Aeson" 107 | ,"name": "eitherDecodeStrict'"} 108 | ,"refs": [{"package": "main" 109 | ,"module": "Data.Aeson" 110 | ,"name": "eitherFormatError"} 111 | ,{"package": "base" 112 | ,"module": "GHC.Base" 113 | ,"name": "."} 114 | ,{"package": "main" 115 | ,"module": "Data.Aeson.Parser.Internal" 116 | ,"name": "eitherDecodeStrictWith"} 117 | ,{"package": "main" 118 | ,"module": "Data.Aeson.Parser.Internal" 119 | ,"name": "jsonEOF'"} 120 | ,{"package": "main" 121 | ,"module": "Data.Aeson.Types.FromJSON" 122 | ,"name": "ifromJSON"}] 123 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson.hs" 124 | ,"start-line": 204 125 | ,"start-col": 1 126 | ,"end-line": 205 127 | ,"end-col": 64}} 128 | ,{"id": {"package": "aeson" 129 | ,"module": "Data.Aeson" 130 | ,"name": "decodeStrict'"} 131 | ,"refs": [{"package": "main" 132 | ,"module": "Data.Aeson.Parser.Internal" 133 | ,"name": "decodeStrictWith"} 134 | ,{"package": "main" 135 | ,"module": "Data.Aeson.Parser.Internal" 136 | ,"name": "jsonEOF'"} 137 | ,{"package": "main" 138 | ,"module": "Data.Aeson.Types.FromJSON" 139 | ,"name": "fromJSON"}] 140 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson.hs" 141 | ,"start-line": 179 142 | ,"start-col": 1 143 | ,"end-line": 179 144 | ,"end-col": 51}} 145 | ,{"id": {"package": "aeson" 146 | ,"module": "Data.Aeson" 147 | ,"name": "decode'"} 148 | ,"refs": [{"package": "main" 149 | ,"module": "Data.Aeson.Parser.Internal" 150 | ,"name": "decodeWith"} 151 | ,{"package": "main" 152 | ,"module": "Data.Aeson.Parser.Internal" 153 | ,"name": "jsonEOF'"} 154 | ,{"package": "main" 155 | ,"module": "Data.Aeson.Types.FromJSON" 156 | ,"name": "fromJSON"}] 157 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson.hs" 158 | ,"start-line": 166 159 | ,"start-col": 1 160 | ,"end-line": 166 161 | ,"end-col": 39}} 162 | ,{"id": {"package": "aeson" 163 | ,"module": "Data.Aeson" 164 | ,"name": "decodeStrict"} 165 | ,"refs": [{"package": "main" 166 | ,"module": "Data.Aeson.Parser.Internal" 167 | ,"name": "decodeStrictWith"} 168 | ,{"package": "main" 169 | ,"module": "Data.Aeson.Parser.Internal" 170 | ,"name": "jsonEOF"} 171 | ,{"package": "main" 172 | ,"module": "Data.Aeson.Types.FromJSON" 173 | ,"name": "fromJSON"}] 174 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson.hs" 175 | ,"start-line": 153 176 | ,"start-col": 1 177 | ,"end-line": 153 178 | ,"end-col": 49}} 179 | ,{"id": {"package": "aeson" 180 | ,"module": "Data.Aeson" 181 | ,"name": "decode"} 182 | ,"refs": [{"package": "main" 183 | ,"module": "Data.Aeson.Parser.Internal" 184 | ,"name": "decodeWith"} 185 | ,{"package": "main" 186 | ,"module": "Data.Aeson.Parser.Internal" 187 | ,"name": "jsonEOF"} 188 | ,{"package": "main" 189 | ,"module": "Data.Aeson.Types.FromJSON" 190 | ,"name": "fromJSON"}] 191 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson.hs" 192 | ,"start-line": 140 193 | ,"start-col": 1 194 | ,"end-line": 140 195 | ,"end-col": 37}} 196 | ,{"id": {"package": "aeson" 197 | ,"module": "Data.Aeson" 198 | ,"name": "encode"} 199 | ,"refs": [{"package": "main" 200 | ,"module": "Data.Aeson.Encoding.Internal" 201 | ,"name": "encodingToLazyByteString"} 202 | ,{"package": "base" 203 | ,"module": "GHC.Base" 204 | ,"name": "."} 205 | ,{"package": "main" 206 | ,"module": "Data.Aeson.Types.ToJSON" 207 | ,"name": "toEncoding"}] 208 | ,"src-span": {"file": "/home/chris/Work/cardano/aeson-1.0.2.1/Data/Aeson.hs" 209 | ,"start-line": 128 210 | ,"start-col": 1 211 | ,"end-line": 128 212 | ,"end-col": 47}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_CatEntail.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "CatEntail" 3 | ,"name": "$tc|-"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "CatEntail" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "CatEntail" 15 | ,"name": "$tc'Sub"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "CatEntail" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "CatEntail" 27 | ,"name": "$tcDict"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "TyCon"} 31 | ,{"package": "base" 32 | ,"module": "CatEntail" 33 | ,"name": "$trModule"} 34 | ,{"package": "ghc-prim" 35 | ,"module": "GHC.Types" 36 | ,"name": "TrNameS"}]} 37 | ,{"id": {"package": "base" 38 | ,"module": "CatEntail" 39 | ,"name": "$tc'Dict"} 40 | ,"refs": [{"package": "ghc-prim" 41 | ,"module": "GHC.Types" 42 | ,"name": "TyCon"} 43 | ,{"package": "base" 44 | ,"module": "CatEntail" 45 | ,"name": "$trModule"} 46 | ,{"package": "ghc-prim" 47 | ,"module": "GHC.Types" 48 | ,"name": "TrNameS"}]} 49 | ,{"id": {"package": "base" 50 | ,"module": "CatEntail" 51 | ,"name": "$trModule"} 52 | ,"refs": [{"package": "ghc-prim" 53 | ,"module": "GHC.Types" 54 | ,"name": "Module"} 55 | ,{"package": "ghc-prim" 56 | ,"module": "GHC.Types" 57 | ,"name": "TrNameS"}]} 58 | ,{"id": {"package": "base" 59 | ,"module": "CatEntail" 60 | ,"name": "reflexive"} 61 | ,"refs": [{"package": "base" 62 | ,"module": "CatEntail" 63 | ,"name": "Sub"} 64 | ,{"package": "base" 65 | ,"module": "CatEntail" 66 | ,"name": "Dict"}] 67 | ,"src-span": {"file": "libraries/base/tests/CatEntail.hs" 68 | ,"start-line": 20 69 | ,"start-col": 1 70 | ,"end-line": 20 71 | ,"end-col": 21}} 72 | ,{"id": {"package": "base" 73 | ,"module": "CatEntail" 74 | ,"name": "\\\\"} 75 | ,"refs": [{"package": "base" 76 | ,"module": "CatEntail" 77 | ,"name": "r"}] 78 | ,"src-span": {"file": "libraries/base/tests/CatEntail.hs" 79 | ,"start-line": 17 80 | ,"start-col": 1 81 | ,"end-line": 17 82 | ,"end-col": 18}} 83 | ,{"id": {"package": "base" 84 | ,"module": "CatEntail" 85 | ,"name": "transitive"} 86 | ,"refs": [{"package": "base" 87 | ,"module": "CatEntail" 88 | ,"name": "Sub"} 89 | ,{"package": "base" 90 | ,"module": "GHC.Base" 91 | ,"name": "$"} 92 | ,{"package": "base" 93 | ,"module": "CatEntail" 94 | ,"name": "Dict"} 95 | ,{"package": "base" 96 | ,"module": "CatEntail" 97 | ,"name": "\\\\"} 98 | ,{"package": "base" 99 | ,"module": "CatEntail" 100 | ,"name": "f"} 101 | ,{"package": "base" 102 | ,"module": "CatEntail" 103 | ,"name": "g"}] 104 | ,"src-span": {"file": "libraries/base/tests/CatEntail.hs" 105 | ,"start-line": 23 106 | ,"start-col": 1 107 | ,"end-line": 23 108 | ,"end-col": 38}} 109 | ,{"id": {"package": "base" 110 | ,"module": "CatEntail" 111 | ,"name": "$dCategory"} 112 | ,"refs": [{"package": "base" 113 | ,"module": "Control.Category" 114 | ,"name": "C:Category"} 115 | ,{"package": "base" 116 | ,"module": "CatEntail" 117 | ,"name": "$cid"} 118 | ,{"package": "base" 119 | ,"module": "CatEntail" 120 | ,"name": "$c."}] 121 | ,"src-span": {"file": "libraries/base/tests/CatEntail.hs" 122 | ,"start-line": 25 123 | ,"start-col": 10 124 | ,"end-line": 25 125 | ,"end-col": 23}} 126 | ,{"id": {"package": "base" 127 | ,"module": "CatEntail" 128 | ,"name": "id"} 129 | ,"refs": [{"package": "base" 130 | ,"module": "CatEntail" 131 | ,"name": "reflexive"}] 132 | ,"src-span": {"file": "libraries/base/tests/CatEntail.hs" 133 | ,"start-line": 26 134 | ,"start-col": 3 135 | ,"end-line": 26 136 | ,"end-col": 18}} 137 | ,{"id": {"package": "base" 138 | ,"module": "CatEntail" 139 | ,"name": "."} 140 | ,"refs": [{"package": "base" 141 | ,"module": "CatEntail" 142 | ,"name": "transitive"}] 143 | ,"src-span": {"file": "libraries/base/tests/CatEntail.hs" 144 | ,"start-line": 27 145 | ,"start-col": 3 146 | ,"end-line": 27 147 | ,"end-col": 19}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_CatPairs.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "CatPairs" 3 | ,"name": "$tcWrapPipe"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "CatPairs" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "CatPairs" 15 | ,"name": "$tc'WrapPipe"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "CatPairs" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "CatPairs" 27 | ,"name": "$tcPipe"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "TyCon"} 31 | ,{"package": "base" 32 | ,"module": "CatPairs" 33 | ,"name": "$trModule"} 34 | ,{"package": "ghc-prim" 35 | ,"module": "GHC.Types" 36 | ,"name": "TrNameS"}]} 37 | ,{"id": {"package": "base" 38 | ,"module": "CatPairs" 39 | ,"name": "$tc'Pipe"} 40 | ,"refs": [{"package": "ghc-prim" 41 | ,"module": "GHC.Types" 42 | ,"name": "TyCon"} 43 | ,{"package": "base" 44 | ,"module": "CatPairs" 45 | ,"name": "$trModule"} 46 | ,{"package": "ghc-prim" 47 | ,"module": "GHC.Types" 48 | ,"name": "TrNameS"}]} 49 | ,{"id": {"package": "base" 50 | ,"module": "CatPairs" 51 | ,"name": "$trModule"} 52 | ,"refs": [{"package": "ghc-prim" 53 | ,"module": "GHC.Types" 54 | ,"name": "Module"} 55 | ,{"package": "ghc-prim" 56 | ,"module": "GHC.Types" 57 | ,"name": "TrNameS"}]} 58 | ,{"id": {"package": "base" 59 | ,"module": "CatPairs" 60 | ,"name": "idP"} 61 | ,"refs": [{"package": "base" 62 | ,"module": "CatPairs" 63 | ,"name": "Pipe"} 64 | ,{"package": "base" 65 | ,"module": "GHC.Base" 66 | ,"name": "return"}] 67 | ,"src-span": {"file": "libraries/base/tests/CatPairs.hs" 68 | ,"start-line": 27 69 | ,"start-col": 1 70 | ,"end-line": 27 71 | ,"end-col": 18}} 72 | ,{"id": {"package": "base" 73 | ,"module": "CatPairs" 74 | ,"name": ">+>"} 75 | ,"refs": [{"package": "base" 76 | ,"module": "CatPairs" 77 | ,"name": "Pipe"} 78 | ,{"package": "base" 79 | ,"module": "CatPairs" 80 | ,"name": "f"} 81 | ,{"package": "base" 82 | ,"module": "Control.Monad" 83 | ,"name": ">=>"} 84 | ,{"package": "base" 85 | ,"module": "CatPairs" 86 | ,"name": "g"}] 87 | ,"src-span": {"file": "libraries/base/tests/CatPairs.hs" 88 | ,"start-line": 24 89 | ,"start-col": 1 90 | ,"end-line": 24 91 | ,"end-col": 41}} 92 | ,{"id": {"package": "base" 93 | ,"module": "CatPairs" 94 | ,"name": "unWrapPipe"} 95 | ,"refs": [{"package": "base" 96 | ,"module": "CatPairs" 97 | ,"name": "unWrapPipe"}] 98 | ,"src-span": {"file": "libraries/base/tests/CatPairs.hs" 99 | ,"start-line": 30 100 | ,"start-col": 7 101 | ,"end-line": 30 102 | ,"end-col": 17}} 103 | ,{"id": {"package": "base" 104 | ,"module": "CatPairs" 105 | ,"name": "runPipe"} 106 | ,"refs": [{"package": "base" 107 | ,"module": "CatPairs" 108 | ,"name": "runPipe"}] 109 | ,"src-span": {"file": "libraries/base/tests/CatPairs.hs" 110 | ,"start-line": 18 111 | ,"start-col": 30 112 | ,"end-line": 18 113 | ,"end-col": 37}} 114 | ,{"id": {"package": "base" 115 | ,"module": "CatPairs" 116 | ,"name": "$dCategory"} 117 | ,"refs": [{"package": "base" 118 | ,"module": "Control.Category" 119 | ,"name": "C:Category"} 120 | ,{"package": "base" 121 | ,"module": "CatPairs" 122 | ,"name": "$cid"} 123 | ,{"package": "base" 124 | ,"module": "CatPairs" 125 | ,"name": "$c."}] 126 | ,"src-span": {"file": "libraries/base/tests/CatPairs.hs" 127 | ,"start-line": 32 128 | ,"start-col": 10 129 | ,"end-line": 32 130 | ,"end-col": 42}} 131 | ,{"id": {"package": "base" 132 | ,"module": "CatPairs" 133 | ,"name": "id"} 134 | ,"refs": [{"package": "base" 135 | ,"module": "CatPairs" 136 | ,"name": "WrapPipe"} 137 | ,{"package": "base" 138 | ,"module": "CatPairs" 139 | ,"name": "idP"}] 140 | ,"src-span": {"file": "libraries/base/tests/CatPairs.hs" 141 | ,"start-line": 33 142 | ,"start-col": 3 143 | ,"end-line": 33 144 | ,"end-col": 23}} 145 | ,{"id": {"package": "base" 146 | ,"module": "CatPairs" 147 | ,"name": "."} 148 | ,"refs": [{"package": "base" 149 | ,"module": "CatPairs" 150 | ,"name": "WrapPipe"} 151 | ,{"package": "base" 152 | ,"module": "CatPairs" 153 | ,"name": "unWrapPipe"} 154 | ,{"package": "base" 155 | ,"module": "CatPairs" 156 | ,"name": "y"} 157 | ,{"package": "base" 158 | ,"module": "CatPairs" 159 | ,"name": ">+>"} 160 | ,{"package": "base" 161 | ,"module": "CatPairs" 162 | ,"name": "x"}] 163 | ,"src-span": {"file": "libraries/base/tests/CatPairs.hs" 164 | ,"start-line": 34 165 | ,"start-col": 3 166 | ,"end-line": 34 167 | ,"end-col": 51}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_Control.Category.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "Control.Category" 3 | ,"name": "$tcCategory"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "Control.Category" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "Control.Category" 15 | ,"name": "$tc'C:Category"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "Control.Category" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "Control.Category" 27 | ,"name": "$trModule"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "Module"} 31 | ,{"package": "ghc-prim" 32 | ,"module": "GHC.Types" 33 | ,"name": "TrNameS"}]} 34 | ,{"id": {"package": "base" 35 | ,"module": "Control.Category" 36 | ,"name": ">>>"} 37 | ,"refs": [{"package": "base" 38 | ,"module": "Control.Category" 39 | ,"name": "g"} 40 | ,{"package": "base" 41 | ,"module": "Control.Category" 42 | ,"name": "."} 43 | ,{"package": "base" 44 | ,"module": "Control.Category" 45 | ,"name": "f"}] 46 | ,"src-span": {"file": "libraries/base/Control/Category.hs" 47 | ,"start-line": 67 48 | ,"start-col": 1 49 | ,"end-line": 67 50 | ,"end-col": 16}} 51 | ,{"id": {"package": "base" 52 | ,"module": "Control.Category" 53 | ,"name": "<<<"} 54 | ,"refs": [{"package": "base" 55 | ,"module": "Control.Category" 56 | ,"name": "."}] 57 | ,"src-span": {"file": "libraries/base/Control/Category.hs" 58 | ,"start-line": 63 59 | ,"start-col": 1 60 | ,"end-line": 63 61 | ,"end-col": 12}} 62 | ,{"id": {"package": "base" 63 | ,"module": "Control.Category" 64 | ,"name": "$dCategory"} 65 | ,"refs": [{"package": "base" 66 | ,"module": "Control.Category" 67 | ,"name": "C:Category"} 68 | ,{"package": "base" 69 | ,"module": "Control.Category" 70 | ,"name": "$cid"} 71 | ,{"package": "base" 72 | ,"module": "Control.Category" 73 | ,"name": "$c."}] 74 | ,"src-span": {"file": "libraries/base/Control/Category.hs" 75 | ,"start-line": 57 76 | ,"start-col": 10 77 | ,"end-line": 57 78 | ,"end-col": 27}} 79 | ,{"id": {"package": "base" 80 | ,"module": "Control.Category" 81 | ,"name": "id"} 82 | ,"refs": [{"package": "base" 83 | ,"module": "Data.Type.Coercion" 84 | ,"name": "Coercion"}] 85 | ,"src-span": {"file": "libraries/base/Control/Category.hs" 86 | ,"start-line": 58 87 | ,"start-col": 3 88 | ,"end-line": 58 89 | ,"end-col": 16}} 90 | ,{"id": {"package": "base" 91 | ,"module": "Control.Category" 92 | ,"name": "."} 93 | ,"refs": [{"package": "ghc-prim" 94 | ,"module": "GHC.Prim" 95 | ,"name": "coerce"}] 96 | ,"src-span": {"file": "libraries/base/Control/Category.hs" 97 | ,"start-line": 59 98 | ,"start-col": 3 99 | ,"end-line": 59 100 | ,"end-col": 24}} 101 | ,{"id": {"package": "base" 102 | ,"module": "Control.Category" 103 | ,"name": "$dCategory"} 104 | ,"refs": [{"package": "base" 105 | ,"module": "Control.Category" 106 | ,"name": "C:Category"} 107 | ,{"package": "base" 108 | ,"module": "Control.Category" 109 | ,"name": "$cid"} 110 | ,{"package": "base" 111 | ,"module": "Control.Category" 112 | ,"name": "$c."}] 113 | ,"src-span": {"file": "libraries/base/Control/Category.hs" 114 | ,"start-line": 53 115 | ,"start-col": 10 116 | ,"end-line": 53 117 | ,"end-col": 24}} 118 | ,{"id": {"package": "base" 119 | ,"module": "Control.Category" 120 | ,"name": "id"} 121 | ,"refs": [{"package": "base" 122 | ,"module": "Data.Type.Equality" 123 | ,"name": "$WRefl"}] 124 | ,"src-span": {"file": "libraries/base/Control/Category.hs" 125 | ,"start-line": 54 126 | ,"start-col": 3 127 | ,"end-line": 54 128 | ,"end-col": 21}} 129 | ,{"id": {"package": "base" 130 | ,"module": "Control.Category" 131 | ,"name": "."} 132 | ,"refs": [{"package": "base" 133 | ,"module": "Data.Type.Equality" 134 | ,"name": "$WRefl"}] 135 | ,"src-span": {"file": "libraries/base/Control/Category.hs" 136 | ,"start-line": 55 137 | ,"start-col": 3 138 | ,"end-line": 55 139 | ,"end-col": 21}} 140 | ,{"id": {"package": "base" 141 | ,"module": "Control.Category" 142 | ,"name": "$dCategory"} 143 | ,"refs": [{"package": "base" 144 | ,"module": "Control.Category" 145 | ,"name": "C:Category"} 146 | ,{"package": "base" 147 | ,"module": "Control.Category" 148 | ,"name": "$cid"} 149 | ,{"package": "base" 150 | ,"module": "Control.Category" 151 | ,"name": "$c."}] 152 | ,"src-span": {"file": "libraries/base/Control/Category.hs" 153 | ,"start-line": 49 154 | ,"start-col": 10 155 | ,"end-line": 49 156 | ,"end-col": 23}} 157 | ,{"id": {"package": "base" 158 | ,"module": "Control.Category" 159 | ,"name": "id"} 160 | ,"refs": [{"package": "base" 161 | ,"module": "GHC.Base" 162 | ,"name": "id"}] 163 | ,"src-span": {"file": "libraries/base/Control/Category.hs" 164 | ,"start-line": 50 165 | ,"start-col": 5 166 | ,"end-line": 50 167 | ,"end-col": 21}} 168 | ,{"id": {"package": "base" 169 | ,"module": "Control.Category" 170 | ,"name": "."} 171 | ,"refs": [{"package": "base" 172 | ,"module": "GHC.Base" 173 | ,"name": "."}] 174 | ,"src-span": {"file": "libraries/base/Control/Category.hs" 175 | ,"start-line": 51 176 | ,"start-col": 5 177 | ,"end-line": 51 178 | ,"end-col": 23}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_Control.Concurrent.QSem.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "Control.Concurrent.QSem" 3 | ,"name": "$tcQSem"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "Control.Concurrent.QSem" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "Control.Concurrent.QSem" 15 | ,"name": "$tc'QSem"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "Control.Concurrent.QSem" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "Control.Concurrent.QSem" 27 | ,"name": "$trModule"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "Module"} 31 | ,{"package": "ghc-prim" 32 | ,"module": "GHC.Types" 33 | ,"name": "TrNameS"}]} 34 | ,{"id": {"package": "base" 35 | ,"module": "Control.Concurrent.QSem" 36 | ,"name": "signal"} 37 | ,"refs": [{"package": "base" 38 | ,"module": "Control.Concurrent.QSem" 39 | ,"name": "i"} 40 | ,{"package": "ghc-prim" 41 | ,"module": "GHC.Classes" 42 | ,"name": "=="} 43 | ,{"package": "base" 44 | ,"module": "GHC.Num" 45 | ,"name": "fromInteger"} 46 | ,{"package": "base" 47 | ,"module": "Control.Concurrent.QSem" 48 | ,"name": "loop"} 49 | ,{"package": "base" 50 | ,"module": "Control.Concurrent.QSem" 51 | ,"name": "a1"} 52 | ,{"package": "base" 53 | ,"module": "Control.Concurrent.QSem" 54 | ,"name": "a2"} 55 | ,{"package": "base" 56 | ,"module": "GHC.Num" 57 | ,"name": "+"} 58 | ,{"package": "base" 59 | ,"module": "GHC.Base" 60 | ,"name": "return"} 61 | ,{"package": "base" 62 | ,"module": "Control.Concurrent.QSem" 63 | ,"name": "z"} 64 | ,{"package": "base" 65 | ,"module": "Control.Concurrent.QSem" 66 | ,"name": "loop"} 67 | ,{"package": "base" 68 | ,"module": "GHC.List" 69 | ,"name": "reverse"} 70 | ,{"package": "base" 71 | ,"module": "Control.Concurrent.QSem" 72 | ,"name": "b2"} 73 | ,{"package": "base" 74 | ,"module": "GHC.MVar" 75 | ,"name": "tryPutMVar"} 76 | ,{"package": "base" 77 | ,"module": "Control.Concurrent.QSem" 78 | ,"name": "b"} 79 | ,{"package": "ghc-prim" 80 | ,"module": "GHC.Tuple" 81 | ,"name": "()"} 82 | ,{"package": "base" 83 | ,"module": "GHC.Base" 84 | ,"name": ">>="} 85 | ,{"package": "base" 86 | ,"module": "Control.Concurrent.QSem" 87 | ,"name": "r"} 88 | ,{"package": "base" 89 | ,"module": "Control.Concurrent.QSem" 90 | ,"name": "bs"} 91 | ,{"package": "base" 92 | ,"module": "Control.Concurrent.QSem" 93 | ,"name": "b2"}] 94 | ,"src-span": {"file": "libraries/base/Control/Concurrent/QSem.hs" 95 | ,"start-line": 120 96 | ,"start-col": 1 97 | ,"end-line": 130 98 | ,"end-col": 26}} 99 | ,{"id": {"package": "base" 100 | ,"module": "Control.Concurrent.QSem" 101 | ,"name": "signalQSem"} 102 | ,"refs": [{"package": "base" 103 | ,"module": "GHC.IO" 104 | ,"name": "uninterruptibleMask_"} 105 | ,{"package": "base" 106 | ,"module": "GHC.Base" 107 | ,"name": "$"} 108 | ,{"package": "base" 109 | ,"module": "GHC.MVar" 110 | ,"name": "takeMVar"} 111 | ,{"package": "base" 112 | ,"module": "Control.Concurrent.QSem" 113 | ,"name": "m"} 114 | ,{"package": "base" 115 | ,"module": "GHC.Base" 116 | ,"name": ">>="} 117 | ,{"package": "base" 118 | ,"module": "Control.Concurrent.QSem" 119 | ,"name": "signal"} 120 | ,{"package": "base" 121 | ,"module": "Control.Concurrent.QSem" 122 | ,"name": "r"} 123 | ,{"package": "base" 124 | ,"module": "GHC.MVar" 125 | ,"name": "putMVar"} 126 | ,{"package": "base" 127 | ,"module": "Control.Concurrent.QSem" 128 | ,"name": "r'"}] 129 | ,"src-span": {"file": "libraries/base/Control/Concurrent/QSem.hs" 130 | ,"start-line": 97 131 | ,"start-col": 1 132 | ,"end-line": 101 133 | ,"end-col": 17}} 134 | ,{"id": {"package": "base" 135 | ,"module": "Control.Concurrent.QSem" 136 | ,"name": "waitQSem"} 137 | ,"refs": [{"package": "base" 138 | ,"module": "GHC.IO" 139 | ,"name": "mask_"} 140 | ,{"package": "base" 141 | ,"module": "GHC.Base" 142 | ,"name": "$"} 143 | ,{"package": "base" 144 | ,"module": "GHC.MVar" 145 | ,"name": "takeMVar"} 146 | ,{"package": "base" 147 | ,"module": "Control.Concurrent.QSem" 148 | ,"name": "m"} 149 | ,{"package": "base" 150 | ,"module": "GHC.Base" 151 | ,"name": ">>="} 152 | ,{"package": "base" 153 | ,"module": "Control.Concurrent.QSem" 154 | ,"name": "i"} 155 | ,{"package": "ghc-prim" 156 | ,"module": "GHC.Classes" 157 | ,"name": "=="} 158 | ,{"package": "base" 159 | ,"module": "GHC.Num" 160 | ,"name": "fromInteger"} 161 | ,{"package": "base" 162 | ,"module": "GHC.MVar" 163 | ,"name": "newEmptyMVar"} 164 | ,{"package": "base" 165 | ,"module": "GHC.MVar" 166 | ,"name": "putMVar"} 167 | ,{"package": "base" 168 | ,"module": "Control.Concurrent.QSem" 169 | ,"name": "b1"} 170 | ,{"package": "base" 171 | ,"module": "Control.Concurrent.QSem" 172 | ,"name": "b"} 173 | ,{"package": "ghc-prim" 174 | ,"module": "GHC.Types" 175 | ,"name": ":"} 176 | ,{"package": "base" 177 | ,"module": "Control.Concurrent.QSem" 178 | ,"name": "b2"} 179 | ,{"package": "base" 180 | ,"module": "GHC.Base" 181 | ,"name": ">>"} 182 | ,{"package": "base" 183 | ,"module": "Control.Concurrent.QSem" 184 | ,"name": "wait"} 185 | ,{"package": "base" 186 | ,"module": "GHC.Num" 187 | ,"name": "-"} 188 | ,{"package": "base" 189 | ,"module": "Control.Concurrent.QSem" 190 | ,"name": "z"} 191 | ,{"package": "base" 192 | ,"module": "GHC.Base" 193 | ,"name": "return"} 194 | ,{"package": "ghc-prim" 195 | ,"module": "GHC.Tuple" 196 | ,"name": "()"} 197 | ,{"package": "base" 198 | ,"module": "Control.Concurrent.QSem" 199 | ,"name": "b"} 200 | ,{"package": "base" 201 | ,"module": "Control.Exception.Base" 202 | ,"name": "onException"} 203 | ,{"package": "base" 204 | ,"module": "GHC.IO" 205 | ,"name": "uninterruptibleMask_"} 206 | ,{"package": "base" 207 | ,"module": "GHC.Base" 208 | ,"name": "$"} 209 | ,{"package": "base" 210 | ,"module": "GHC.MVar" 211 | ,"name": "tryTakeMVar"} 212 | ,{"package": "base" 213 | ,"module": "Data.Maybe" 214 | ,"name": "isJust"} 215 | ,{"package": "base" 216 | ,"module": "Control.Concurrent.QSem" 217 | ,"name": "r"} 218 | ,{"package": "base" 219 | ,"module": "Control.Concurrent.QSem" 220 | ,"name": "signal"} 221 | ,{"package": "base" 222 | ,"module": "Control.Concurrent.QSem" 223 | ,"name": "i"} 224 | ,{"package": "base" 225 | ,"module": "Control.Concurrent.QSem" 226 | ,"name": "b1"} 227 | ,{"package": "base" 228 | ,"module": "Control.Concurrent.QSem" 229 | ,"name": "b2"} 230 | ,{"package": "base" 231 | ,"module": "Control.Concurrent.QSem" 232 | ,"name": "r'"}] 233 | ,"src-span": {"file": "libraries/base/Control/Concurrent/QSem.hs" 234 | ,"start-line": 73 235 | ,"start-col": 1 236 | ,"end-line": 93 237 | ,"end-col": 33}} 238 | ,{"id": {"package": "base" 239 | ,"module": "Control.Concurrent.QSem" 240 | ,"name": "newQSem"} 241 | ,"refs": [{"package": "base" 242 | ,"module": "Control.Concurrent.QSem" 243 | ,"name": "initial"} 244 | ,{"package": "ghc-prim" 245 | ,"module": "GHC.Classes" 246 | ,"name": "<"} 247 | ,{"package": "base" 248 | ,"module": "GHC.Num" 249 | ,"name": "fromInteger"} 250 | ,{"package": "base" 251 | ,"module": "GHC.Base" 252 | ,"name": "fail"} 253 | ,{"package": "base" 254 | ,"module": "GHC.Base" 255 | ,"name": "otherwise"} 256 | ,{"package": "base" 257 | ,"module": "GHC.MVar" 258 | ,"name": "newMVar"} 259 | ,{"package": "base" 260 | ,"module": "GHC.Base" 261 | ,"name": ">>="} 262 | ,{"package": "base" 263 | ,"module": "GHC.Base" 264 | ,"name": "return"} 265 | ,{"package": "base" 266 | ,"module": "Control.Concurrent.QSem" 267 | ,"name": "$WQSem"} 268 | ,{"package": "base" 269 | ,"module": "Control.Concurrent.QSem" 270 | ,"name": "sem"}] 271 | ,"src-span": {"file": "libraries/base/Control/Concurrent/QSem.hs" 272 | ,"start-line": 65 273 | ,"start-col": 1 274 | ,"end-line": 69 275 | ,"end-col": 24}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_Control.Exception.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "Control.Exception" 3 | ,"name": "$tcHandler"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "Control.Exception" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "Control.Exception" 15 | ,"name": "$tc'Handler"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "Control.Exception" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "Control.Exception" 27 | ,"name": "$trModule"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "Module"} 31 | ,{"package": "ghc-prim" 32 | ,"module": "GHC.Types" 33 | ,"name": "TrNameS"}]} 34 | ,{"id": {"package": "base" 35 | ,"module": "Control.Exception" 36 | ,"name": "allowInterrupt"} 37 | ,"refs": [{"package": "base" 38 | ,"module": "GHC.IO" 39 | ,"name": "interruptible"} 40 | ,{"package": "base" 41 | ,"module": "GHC.Base" 42 | ,"name": "$"} 43 | ,{"package": "base" 44 | ,"module": "GHC.Base" 45 | ,"name": "return"} 46 | ,{"package": "ghc-prim" 47 | ,"module": "GHC.Tuple" 48 | ,"name": "()"}] 49 | ,"src-span": {"file": "libraries/base/Control/Exception.hs" 50 | ,"start-line": 226 51 | ,"start-col": 1 52 | ,"end-line": 226 53 | ,"end-col": 43}} 54 | ,{"id": {"package": "base" 55 | ,"module": "Control.Exception" 56 | ,"name": "catchesHandler"} 57 | ,"refs": [{"package": "base" 58 | ,"module": "GHC.Base" 59 | ,"name": "foldr"} 60 | ,{"package": "base" 61 | ,"module": "Control.Exception" 62 | ,"name": "tryHandler"} 63 | ,{"package": "base" 64 | ,"module": "GHC.Exception" 65 | ,"name": "throw"} 66 | ,{"package": "base" 67 | ,"module": "Control.Exception" 68 | ,"name": "e"} 69 | ,{"package": "base" 70 | ,"module": "Control.Exception" 71 | ,"name": "handlers"} 72 | ,{"package": "base" 73 | ,"module": "GHC.Exception" 74 | ,"name": "fromException"} 75 | ,{"package": "base" 76 | ,"module": "Control.Exception" 77 | ,"name": "handler"} 78 | ,{"package": "base" 79 | ,"module": "Control.Exception" 80 | ,"name": "e'"} 81 | ,{"package": "base" 82 | ,"module": "Control.Exception" 83 | ,"name": "res"}] 84 | ,"src-span": {"file": "libraries/base/Control/Exception.hs" 85 | ,"start-line": 168 86 | ,"start-col": 1 87 | ,"end-line": 172 88 | ,"end-col": 31}} 89 | ,{"id": {"package": "base" 90 | ,"module": "Control.Exception" 91 | ,"name": "catches"} 92 | ,"refs": [{"package": "base" 93 | ,"module": "Control.Exception" 94 | ,"name": "io"} 95 | ,{"package": "base" 96 | ,"module": "Control.Exception.Base" 97 | ,"name": "catch"} 98 | ,{"package": "base" 99 | ,"module": "Control.Exception" 100 | ,"name": "catchesHandler"} 101 | ,{"package": "base" 102 | ,"module": "Control.Exception" 103 | ,"name": "handlers"}] 104 | ,"src-span": {"file": "libraries/base/Control/Exception.hs" 105 | ,"start-line": 165 106 | ,"start-col": 1 107 | ,"end-line": 165 108 | ,"end-col": 57}} 109 | ,{"id": {"package": "base" 110 | ,"module": "Control.Exception" 111 | ,"name": "$dFunctor"} 112 | ,"refs": [{"package": "base" 113 | ,"module": "GHC.Base" 114 | ,"name": "C:Functor"} 115 | ,{"package": "base" 116 | ,"module": "Control.Exception" 117 | ,"name": "$cfmap"} 118 | ,{"package": "base" 119 | ,"module": "Control.Exception" 120 | ,"name": "$c<$"}] 121 | ,"src-span": {"file": "libraries/base/Control/Exception.hs" 122 | ,"start-line": 143 123 | ,"start-col": 10 124 | ,"end-line": 143 125 | ,"end-col": 25}} 126 | ,{"id": {"package": "base" 127 | ,"module": "Control.Exception" 128 | ,"name": "fmap"} 129 | ,"refs": [{"package": "base" 130 | ,"module": "Control.Exception" 131 | ,"name": "Handler"} 132 | ,{"package": "base" 133 | ,"module": "GHC.Base" 134 | ,"name": "fmap"} 135 | ,{"package": "base" 136 | ,"module": "Control.Exception" 137 | ,"name": "f"} 138 | ,{"package": "base" 139 | ,"module": "GHC.Base" 140 | ,"name": "."} 141 | ,{"package": "base" 142 | ,"module": "Control.Exception" 143 | ,"name": "h"}] 144 | ,"src-span": {"file": "libraries/base/Control/Exception.hs" 145 | ,"start-line": 144 146 | ,"start-col": 6 147 | ,"end-line": 144 148 | ,"end-col": 47}} 149 | ,{"id": {"package": "base" 150 | ,"module": "Control.Exception" 151 | ,"name": "<$"} 152 | ,"refs": [{"package": "base" 153 | ,"module": "GHC.Base" 154 | ,"name": "$dm<$"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_Control.Monad.Fail.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "Control.Monad.Fail" 3 | ,"name": "$tcMonadFail"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "Control.Monad.Fail" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "Control.Monad.Fail" 15 | ,"name": "$tc'C:MonadFail"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "Control.Monad.Fail" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "Control.Monad.Fail" 27 | ,"name": "$trModule"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "Module"} 31 | ,{"package": "ghc-prim" 32 | ,"module": "GHC.Types" 33 | ,"name": "TrNameS"}]} 34 | ,{"id": {"package": "base" 35 | ,"module": "Control.Monad.Fail" 36 | ,"name": "$dMonadFail"} 37 | ,"refs": [{"package": "base" 38 | ,"module": "Control.Monad.Fail" 39 | ,"name": "C:MonadFail"} 40 | ,{"package": "base" 41 | ,"module": "Control.Monad.Fail" 42 | ,"name": "$cp1MonadFail"} 43 | ,{"package": "base" 44 | ,"module": "Control.Monad.Fail" 45 | ,"name": "$cfail"}] 46 | ,"src-span": {"file": "libraries/base/Control/Monad/Fail.hs" 47 | ,"start-line": 77 48 | ,"start-col": 10 49 | ,"end-line": 77 50 | ,"end-col": 22}} 51 | ,{"id": {"package": "base" 52 | ,"module": "Control.Monad.Fail" 53 | ,"name": "fail"} 54 | ,"refs": [{"package": "base" 55 | ,"module": "GHC.IO" 56 | ,"name": "failIO"}] 57 | ,"src-span": {"file": "libraries/base/Control/Monad/Fail.hs" 58 | ,"start-line": 78 59 | ,"start-col": 5 60 | ,"end-line": 78 61 | ,"end-col": 18}} 62 | ,{"id": {"package": "base" 63 | ,"module": "Control.Monad.Fail" 64 | ,"name": "$dMonadFail"} 65 | ,"refs": [{"package": "base" 66 | ,"module": "Control.Monad.Fail" 67 | ,"name": "C:MonadFail"} 68 | ,{"package": "base" 69 | ,"module": "Control.Monad.Fail" 70 | ,"name": "$cp1MonadFail"} 71 | ,{"package": "base" 72 | ,"module": "Control.Monad.Fail" 73 | ,"name": "$cfail"}] 74 | ,"src-span": {"file": "libraries/base/Control/Monad/Fail.hs" 75 | ,"start-line": 73 76 | ,"start-col": 10 77 | ,"end-line": 73 78 | ,"end-col": 22}} 79 | ,{"id": {"package": "base" 80 | ,"module": "Control.Monad.Fail" 81 | ,"name": "fail"} 82 | ,"refs": [] 83 | ,"src-span": {"file": "libraries/base/Control/Monad/Fail.hs" 84 | ,"start-line": 75 85 | ,"start-col": 5 86 | ,"end-line": 75 87 | ,"end-col": 16}} 88 | ,{"id": {"package": "base" 89 | ,"module": "Control.Monad.Fail" 90 | ,"name": "$dMonadFail"} 91 | ,"refs": [{"package": "base" 92 | ,"module": "Control.Monad.Fail" 93 | ,"name": "C:MonadFail"} 94 | ,{"package": "base" 95 | ,"module": "Control.Monad.Fail" 96 | ,"name": "$cp1MonadFail"} 97 | ,{"package": "base" 98 | ,"module": "Control.Monad.Fail" 99 | ,"name": "$cfail"}] 100 | ,"src-span": {"file": "libraries/base/Control/Monad/Fail.hs" 101 | ,"start-line": 70 102 | ,"start-col": 10 103 | ,"end-line": 70 104 | ,"end-col": 25}} 105 | ,{"id": {"package": "base" 106 | ,"module": "Control.Monad.Fail" 107 | ,"name": "fail"} 108 | ,"refs": [{"package": "base" 109 | ,"module": "GHC.Base" 110 | ,"name": "Nothing"}] 111 | ,"src-span": {"file": "libraries/base/Control/Monad/Fail.hs" 112 | ,"start-line": 71 113 | ,"start-col": 5 114 | ,"end-line": 71 115 | ,"end-col": 21}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_Control.Monad.IO.Class.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "Control.Monad.IO.Class" 3 | ,"name": "$tcMonadIO"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "Control.Monad.IO.Class" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "Control.Monad.IO.Class" 15 | ,"name": "$tc'C:MonadIO"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "Control.Monad.IO.Class" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "Control.Monad.IO.Class" 27 | ,"name": "$trModule"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "Module"} 31 | ,{"package": "ghc-prim" 32 | ,"module": "GHC.Types" 33 | ,"name": "TrNameS"}]} 34 | ,{"id": {"package": "base" 35 | ,"module": "Control.Monad.IO.Class" 36 | ,"name": "$dMonadIO"} 37 | ,"refs": [{"package": "base" 38 | ,"module": "Control.Monad.IO.Class" 39 | ,"name": "C:MonadIO"} 40 | ,{"package": "base" 41 | ,"module": "Control.Monad.IO.Class" 42 | ,"name": "$cp1MonadIO"} 43 | ,{"package": "base" 44 | ,"module": "Control.Monad.IO.Class" 45 | ,"name": "$cliftIO"}] 46 | ,"src-span": {"file": "libraries/base/Control/Monad/IO/Class.hs" 47 | ,"start-line": 35 48 | ,"start-col": 10 49 | ,"end-line": 35 50 | ,"end-col": 20}} 51 | ,{"id": {"package": "base" 52 | ,"module": "Control.Monad.IO.Class" 53 | ,"name": "liftIO"} 54 | ,"refs": [{"package": "base" 55 | ,"module": "GHC.Base" 56 | ,"name": "id"}] 57 | ,"src-span": {"file": "libraries/base/Control/Monad/IO/Class.hs" 58 | ,"start-line": 36 59 | ,"start-col": 5 60 | ,"end-line": 36 61 | ,"end-col": 16}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_Control.Monad.Instances.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "Control.Monad.Instances" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_Control.Monad.ST.Imp.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "Control.Monad.ST.Imp" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_Control.Monad.ST.Lazy.Safe.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "Control.Monad.ST.Lazy.Safe" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_Control.Monad.ST.Lazy.Unsafe.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "Control.Monad.ST.Lazy.Unsafe" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_Control.Monad.ST.Lazy.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "Control.Monad.ST.Lazy" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_Control.Monad.ST.Safe.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "Control.Monad.ST.Safe" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_Control.Monad.ST.Strict.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "Control.Monad.ST.Strict" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_Control.Monad.ST.Unsafe.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "Control.Monad.ST.Unsafe" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_Control.Monad.ST.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "Control.Monad.ST" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.Char.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.Char" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]} 10 | ,{"id": {"package": "base" 11 | ,"module": "GHC.Char" 12 | ,"name": "chr"} 13 | ,"refs": [{"package": "ghc-prim" 14 | ,"module": "GHC.Types" 15 | ,"name": "isTrue#"} 16 | ,{"package": "ghc-prim" 17 | ,"module": "GHC.Prim" 18 | ,"name": "int2Word#"} 19 | ,{"package": "base" 20 | ,"module": "GHC.Char" 21 | ,"name": "i#"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Prim" 24 | ,"name": "leWord#"} 25 | ,{"package": "ghc-prim" 26 | ,"module": "GHC.Types" 27 | ,"name": "C#"} 28 | ,{"package": "ghc-prim" 29 | ,"module": "GHC.Prim" 30 | ,"name": "chr#"} 31 | ,{"package": "base" 32 | ,"module": "GHC.Base" 33 | ,"name": "otherwise"} 34 | ,{"package": "base" 35 | ,"module": "GHC.Err" 36 | ,"name": "errorWithoutStackTrace"} 37 | ,{"package": "base" 38 | ,"module": "GHC.Base" 39 | ,"name": "++"} 40 | ,{"package": "base" 41 | ,"module": "GHC.Show" 42 | ,"name": "showSignedInt"} 43 | ,{"package": "ghc-prim" 44 | ,"module": "GHC.Types" 45 | ,"name": "I#"} 46 | ,{"package": "base" 47 | ,"module": "GHC.Char" 48 | ,"name": "i"}] 49 | ,"src-span": {"file": "libraries/base/GHC/Char.hs" 50 | ,"start-line": 18 51 | ,"start-col": 1 52 | ,"end-line": 21 53 | ,"end-col": 91}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.Conc.Signal.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.Conc.Signal" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]} 10 | ,{"id": {"package": "base" 11 | ,"module": "GHC.Conc.Signal" 12 | ,"name": "sharedCAF"} 13 | ,"refs": [{"package": "base" 14 | ,"module": "GHC.IO" 15 | ,"name": "mask_"} 16 | ,{"package": "base" 17 | ,"module": "GHC.Base" 18 | ,"name": "$"} 19 | ,{"package": "base" 20 | ,"module": "GHC.Stable" 21 | ,"name": "newStablePtr"} 22 | ,{"package": "base" 23 | ,"module": "GHC.Conc.Signal" 24 | ,"name": "a"} 25 | ,{"package": "base" 26 | ,"module": "GHC.Base" 27 | ,"name": ">>="} 28 | ,{"package": "base" 29 | ,"module": "GHC.Ptr" 30 | ,"name": "castPtr"} 31 | ,{"package": "base" 32 | ,"module": "GHC.Stable" 33 | ,"name": "castStablePtrToPtr"} 34 | ,{"package": "base" 35 | ,"module": "GHC.Conc.Signal" 36 | ,"name": "stable_ref"} 37 | ,{"package": "base" 38 | ,"module": "GHC.Conc.Signal" 39 | ,"name": "get_or_set"} 40 | ,{"package": "base" 41 | ,"module": "GHC.Conc.Signal" 42 | ,"name": "ref"} 43 | ,{"package": "ghc-prim" 44 | ,"module": "GHC.Classes" 45 | ,"name": "=="} 46 | ,{"package": "base" 47 | ,"module": "GHC.Conc.Signal" 48 | ,"name": "ref2"} 49 | ,{"package": "base" 50 | ,"module": "GHC.Base" 51 | ,"name": "return"} 52 | ,{"package": "base" 53 | ,"module": "GHC.Stable" 54 | ,"name": "freeStablePtr"} 55 | ,{"package": "base" 56 | ,"module": "GHC.Base" 57 | ,"name": ">>"} 58 | ,{"package": "base" 59 | ,"module": "GHC.Stable" 60 | ,"name": "deRefStablePtr"} 61 | ,{"package": "base" 62 | ,"module": "GHC.Stable" 63 | ,"name": "castPtrToStablePtr"}] 64 | ,"src-span": {"file": "libraries/base/GHC/Conc/Signal.hs" 65 | ,"start-line": 90 66 | ,"start-col": 1 67 | ,"end-line": 98 68 | ,"end-col": 65}} 69 | ,{"id": {"package": "base" 70 | ,"module": "GHC.Conc.Signal" 71 | ,"name": "maxSig"} 72 | ,"refs": [] 73 | ,"src-span": {"file": "libraries/base/GHC/Conc/Signal.hs" 74 | ,"start-line": 35 75 | ,"start-col": 1 76 | ,"end-line": 35 77 | ,"end-col": 12}} 78 | ,{"id": {"package": "base" 79 | ,"module": "GHC.Conc.Signal" 80 | ,"name": "signal_handlers"} 81 | ,"refs": [{"package": "base" 82 | ,"module": "GHC.IO.Unsafe" 83 | ,"name": "unsafePerformIO"} 84 | ,{"package": "base" 85 | ,"module": "GHC.Base" 86 | ,"name": "$"} 87 | ,{"package": "base" 88 | ,"module": "GHC.IOArray" 89 | ,"name": "newIOArray"} 90 | ,{"package": "base" 91 | ,"module": "GHC.Num" 92 | ,"name": "fromInteger"} 93 | ,{"package": "base" 94 | ,"module": "GHC.Conc.Signal" 95 | ,"name": "maxSig"} 96 | ,{"package": "base" 97 | ,"module": "GHC.Base" 98 | ,"name": "Nothing"} 99 | ,{"package": "base" 100 | ,"module": "GHC.Base" 101 | ,"name": ">>="} 102 | ,{"package": "base" 103 | ,"module": "GHC.MVar" 104 | ,"name": "newMVar"} 105 | ,{"package": "base" 106 | ,"module": "GHC.Conc.Signal" 107 | ,"name": "arr"} 108 | ,{"package": "base" 109 | ,"module": "GHC.Conc.Signal" 110 | ,"name": "sharedCAF"} 111 | ,{"package": "base" 112 | ,"module": "GHC.Conc.Signal" 113 | ,"name": "m"} 114 | ,{"package": "base" 115 | ,"module": "GHC.Conc.Signal" 116 | ,"name": "getOrSetGHCConcSignalSignalHandlerStore"}] 117 | ,"src-span": {"file": "libraries/base/GHC/Conc/Signal.hs" 118 | ,"start-line": 43 119 | ,"start-col": 1 120 | ,"end-line": 46 121 | ,"end-col": 54}} 122 | ,{"id": {"package": "base" 123 | ,"module": "GHC.Conc.Signal" 124 | ,"name": "setHandler"} 125 | ,"refs": [{"package": "base" 126 | ,"module": "GHC.Real" 127 | ,"name": "fromIntegral"} 128 | ,{"package": "base" 129 | ,"module": "GHC.Conc.Signal" 130 | ,"name": "sig"} 131 | ,{"package": "base" 132 | ,"module": "Control.Concurrent.MVar" 133 | ,"name": "withMVar"} 134 | ,{"package": "base" 135 | ,"module": "GHC.Conc.Signal" 136 | ,"name": "signal_handlers"} 137 | ,{"package": "base" 138 | ,"module": "GHC.Base" 139 | ,"name": "$"} 140 | ,{"package": "ghc-prim" 141 | ,"module": "GHC.Classes" 142 | ,"name": "not"} 143 | ,{"package": "base" 144 | ,"module": "GHC.Arr" 145 | ,"name": "inRange"} 146 | ,{"package": "base" 147 | ,"module": "GHC.IOArray" 148 | ,"name": "boundsIOArray"} 149 | ,{"package": "base" 150 | ,"module": "GHC.Conc.Signal" 151 | ,"name": "arr"} 152 | ,{"package": "base" 153 | ,"module": "GHC.Conc.Signal" 154 | ,"name": "int"} 155 | ,{"package": "base" 156 | ,"module": "GHC.Err" 157 | ,"name": "errorWithoutStackTrace"} 158 | ,{"package": "base" 159 | ,"module": "GHC.IOArray" 160 | ,"name": "unsafeReadIOArray"} 161 | ,{"package": "base" 162 | ,"module": "GHC.Base" 163 | ,"name": ">>="} 164 | ,{"package": "base" 165 | ,"module": "GHC.IOArray" 166 | ,"name": "unsafeWriteIOArray"} 167 | ,{"package": "base" 168 | ,"module": "GHC.Conc.Signal" 169 | ,"name": "handler"} 170 | ,{"package": "base" 171 | ,"module": "GHC.Base" 172 | ,"name": ">>"} 173 | ,{"package": "base" 174 | ,"module": "GHC.Base" 175 | ,"name": "return"} 176 | ,{"package": "base" 177 | ,"module": "GHC.Conc.Signal" 178 | ,"name": "old"}] 179 | ,"src-span": {"file": "libraries/base/GHC/Conc/Signal.hs" 180 | ,"start-line": 54 181 | ,"start-col": 1 182 | ,"end-line": 61 183 | ,"end-col": 25}} 184 | ,{"id": {"package": "base" 185 | ,"module": "GHC.Conc.Signal" 186 | ,"name": "runHandlers"} 187 | ,"refs": [{"package": "base" 188 | ,"module": "GHC.Real" 189 | ,"name": "fromIntegral"} 190 | ,{"package": "base" 191 | ,"module": "GHC.Conc.Signal" 192 | ,"name": "sig"} 193 | ,{"package": "base" 194 | ,"module": "Control.Concurrent.MVar" 195 | ,"name": "withMVar"} 196 | ,{"package": "base" 197 | ,"module": "GHC.Conc.Signal" 198 | ,"name": "signal_handlers"} 199 | ,{"package": "base" 200 | ,"module": "GHC.Base" 201 | ,"name": "$"} 202 | ,{"package": "ghc-prim" 203 | ,"module": "GHC.Classes" 204 | ,"name": "not"} 205 | ,{"package": "base" 206 | ,"module": "GHC.Arr" 207 | ,"name": "inRange"} 208 | ,{"package": "base" 209 | ,"module": "GHC.IOArray" 210 | ,"name": "boundsIOArray"} 211 | ,{"package": "base" 212 | ,"module": "GHC.Conc.Signal" 213 | ,"name": "arr"} 214 | ,{"package": "base" 215 | ,"module": "GHC.Conc.Signal" 216 | ,"name": "int"} 217 | ,{"package": "base" 218 | ,"module": "GHC.Base" 219 | ,"name": "return"} 220 | ,{"package": "ghc-prim" 221 | ,"module": "GHC.Tuple" 222 | ,"name": "()"} 223 | ,{"package": "base" 224 | ,"module": "GHC.IOArray" 225 | ,"name": "unsafeReadIOArray"} 226 | ,{"package": "base" 227 | ,"module": "GHC.Base" 228 | ,"name": ">>="} 229 | ,{"package": "base" 230 | ,"module": "GHC.Conc.Signal" 231 | ,"name": "handler"} 232 | ,{"package": "base" 233 | ,"module": "GHC.Conc.Sync" 234 | ,"name": "forkIO"} 235 | ,{"package": "base" 236 | ,"module": "GHC.Conc.Signal" 237 | ,"name": "f"} 238 | ,{"package": "base" 239 | ,"module": "GHC.Conc.Signal" 240 | ,"name": "p_info"}] 241 | ,"src-span": {"file": "libraries/base/GHC/Conc/Signal.hs" 242 | ,"start-line": 64 243 | ,"start-col": 1 244 | ,"end-line": 73 245 | ,"end-col": 44}} 246 | ,{"id": {"package": "base" 247 | ,"module": "GHC.Conc.Signal" 248 | ,"name": "runHandlersPtr"} 249 | ,"refs": [{"package": "base" 250 | ,"module": "Foreign.ForeignPtr.Imp" 251 | ,"name": "newForeignPtr"} 252 | ,{"package": "base" 253 | ,"module": "Foreign.Marshal.Alloc" 254 | ,"name": "finalizerFree"} 255 | ,{"package": "base" 256 | ,"module": "GHC.Conc.Signal" 257 | ,"name": "p"} 258 | ,{"package": "base" 259 | ,"module": "GHC.Base" 260 | ,"name": ">>="} 261 | ,{"package": "base" 262 | ,"module": "GHC.Conc.Signal" 263 | ,"name": "runHandlers"} 264 | ,{"package": "base" 265 | ,"module": "GHC.Conc.Signal" 266 | ,"name": "fp"} 267 | ,{"package": "base" 268 | ,"module": "GHC.Conc.Signal" 269 | ,"name": "s"}] 270 | ,"src-span": {"file": "libraries/base/GHC/Conc/Signal.hs" 271 | ,"start-line": 78 272 | ,"start-col": 1 273 | ,"end-line": 80 274 | ,"end-col": 19}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.Conc.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.Conc" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.ConsoleHandler.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.ConsoleHandler" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.Constants.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.Constants" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.Desugar.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.Desugar" 3 | ,"name": "$tcAnnotationWrapper"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "GHC.Desugar" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "GHC.Desugar" 15 | ,"name": "$tc'AnnotationWrapper"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "GHC.Desugar" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "GHC.Desugar" 27 | ,"name": "$trModule"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "Module"} 31 | ,{"package": "ghc-prim" 32 | ,"module": "GHC.Types" 33 | ,"name": "TrNameS"}]} 34 | ,{"id": {"package": "base" 35 | ,"module": "GHC.Desugar" 36 | ,"name": "toAnnotationWrapper"} 37 | ,"refs": [{"package": "base" 38 | ,"module": "GHC.Desugar" 39 | ,"name": "AnnotationWrapper"} 40 | ,{"package": "base" 41 | ,"module": "GHC.Desugar" 42 | ,"name": "what"}] 43 | ,"src-span": {"file": "libraries/base/GHC/Desugar.hs" 44 | ,"start-line": 40 45 | ,"start-col": 1 46 | ,"end-line": 40 47 | ,"end-col": 50}} 48 | ,{"id": {"package": "base" 49 | ,"module": "GHC.Desugar" 50 | ,"name": ">>>"} 51 | ,"refs": [{"package": "base" 52 | ,"module": "GHC.Desugar" 53 | ,"name": "g"} 54 | ,{"package": "base" 55 | ,"module": "Control.Category" 56 | ,"name": "."} 57 | ,{"package": "base" 58 | ,"module": "GHC.Desugar" 59 | ,"name": "f"}] 60 | ,"src-span": {"file": "libraries/base/GHC/Desugar.hs" 61 | ,"start-line": 34 62 | ,"start-col": 1 63 | ,"end-line": 34 64 | ,"end-col": 16}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.Environment.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.Environment" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]} 10 | ,{"id": {"package": "base" 11 | ,"module": "GHC.Environment" 12 | ,"name": "getFullArgs"} 13 | ,"refs": [{"package": "base" 14 | ,"module": "Foreign.Marshal.Alloc" 15 | ,"name": "alloca"} 16 | ,{"package": "base" 17 | ,"module": "GHC.Base" 18 | ,"name": "$"} 19 | ,{"package": "base" 20 | ,"module": "GHC.Base" 21 | ,"name": "$"} 22 | ,{"package": "base" 23 | ,"module": "GHC.Environment" 24 | ,"name": "getFullProgArgv"} 25 | ,{"package": "base" 26 | ,"module": "GHC.Environment" 27 | ,"name": "p_argc"} 28 | ,{"package": "base" 29 | ,"module": "GHC.Environment" 30 | ,"name": "p_argv"} 31 | ,{"package": "base" 32 | ,"module": "GHC.Base" 33 | ,"name": ">>"} 34 | ,{"package": "base" 35 | ,"module": "GHC.Real" 36 | ,"name": "fromIntegral"} 37 | ,{"package": "base" 38 | ,"module": "GHC.Base" 39 | ,"name": "liftM"} 40 | ,{"package": "base" 41 | ,"module": "Foreign.Storable" 42 | ,"name": "peek"} 43 | ,{"package": "base" 44 | ,"module": "GHC.Base" 45 | ,"name": ">>="} 46 | ,{"package": "base" 47 | ,"module": "GHC.IO.Encoding" 48 | ,"name": "getFileSystemEncoding"} 49 | ,{"package": "base" 50 | ,"module": "Foreign.Marshal.Array" 51 | ,"name": "peekArray"} 52 | ,{"package": "base" 53 | ,"module": "GHC.Environment" 54 | ,"name": "p"} 55 | ,{"package": "base" 56 | ,"module": "GHC.Environment" 57 | ,"name": "argv"} 58 | ,{"package": "base" 59 | ,"module": "GHC.Base" 60 | ,"name": "mapM"} 61 | ,{"package": "base" 62 | ,"module": "GHC.Foreign" 63 | ,"name": "peekCString"} 64 | ,{"package": "base" 65 | ,"module": "GHC.Environment" 66 | ,"name": "enc"}] 67 | ,"src-span": {"file": "libraries/base/GHC/Environment.hs" 68 | ,"start-line": 55 69 | ,"start-col": 1 70 | ,"end-line": 62 71 | ,"end-col": 51}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.Err.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.Err" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]} 10 | ,{"id": {"package": "base" 11 | ,"module": "GHC.Err" 12 | ,"name": "error"} 13 | ,"refs": [{"package": "ghc-prim" 14 | ,"module": "GHC.Prim" 15 | ,"name": "raise#"} 16 | ,{"package": "base" 17 | ,"module": "GHC.Exception" 18 | ,"name": "errorCallWithCallStackException"} 19 | ,{"package": "base" 20 | ,"module": "GHC.Err" 21 | ,"name": "s"} 22 | ,{"package": "base" 23 | ,"module": "GHC.Err" 24 | ,"name": "$dIP"}] 25 | ,"src-span": {"file": "libraries/base/GHC/Err.hs" 26 | ,"start-line": 38 27 | ,"start-col": 1 28 | ,"end-line": 38 29 | ,"end-col": 64}} 30 | ,{"id": {"package": "base" 31 | ,"module": "GHC.Err" 32 | ,"name": "errorWithoutStackTrace"} 33 | ,"refs": [{"package": "base" 34 | ,"module": "GHC.Stack.Types" 35 | ,"name": "freezeCallStack"} 36 | ,{"package": "base" 37 | ,"module": "GHC.Stack.Types" 38 | ,"name": "emptyCallStack"} 39 | ,{"package": "base" 40 | ,"module": "GHC.Err" 41 | ,"name": "error"} 42 | ,{"package": "base" 43 | ,"module": "GHC.Err" 44 | ,"name": "s"}] 45 | ,"src-span": {"file": "libraries/base/GHC/Err.hs" 46 | ,"start-line": 49 47 | ,"start-col": 1 48 | ,"end-line": 52 49 | ,"end-col": 13}} 50 | ,{"id": {"package": "base" 51 | ,"module": "GHC.Err" 52 | ,"name": "absentErr"} 53 | ,"refs": [{"package": "base" 54 | ,"module": "GHC.Err" 55 | ,"name": "errorWithoutStackTrace"}] 56 | ,"src-span": {"file": "libraries/base/GHC/Err.hs" 57 | ,"start-line": 84 58 | ,"start-col": 1 59 | ,"end-line": 84 60 | ,"end-col": 91}} 61 | ,{"id": {"package": "base" 62 | ,"module": "GHC.Err" 63 | ,"name": "undefined"} 64 | ,"refs": [{"package": "base" 65 | ,"module": "GHC.Err" 66 | ,"name": "error"}] 67 | ,"src-span": {"file": "libraries/base/GHC/Err.hs" 68 | ,"start-line": 79 69 | ,"start-col": 1 70 | ,"end-line": 79 71 | ,"end-col": 39}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.Event.Arr.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.Event.Arr" 3 | ,"name": "$tcArr"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "GHC.Event.Arr" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "GHC.Event.Arr" 15 | ,"name": "$tc'Arr"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "GHC.Event.Arr" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "GHC.Event.Arr" 27 | ,"name": "$trModule"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "Module"} 31 | ,{"package": "ghc-prim" 32 | ,"module": "GHC.Types" 33 | ,"name": "TrNameS"}]} 34 | ,{"id": {"package": "base" 35 | ,"module": "GHC.Event.Arr" 36 | ,"name": "write"} 37 | ,"refs": [{"package": "ghc-prim" 38 | ,"module": "GHC.Types" 39 | ,"name": "IO"} 40 | ,{"package": "base" 41 | ,"module": "GHC.Base" 42 | ,"name": "$"} 43 | ,{"package": "ghc-prim" 44 | ,"module": "GHC.Prim" 45 | ,"name": "writeArray#"} 46 | ,{"package": "base" 47 | ,"module": "GHC.Event.Arr" 48 | ,"name": "a"} 49 | ,{"package": "base" 50 | ,"module": "GHC.Event.Arr" 51 | ,"name": "n#"} 52 | ,{"package": "base" 53 | ,"module": "GHC.Event.Arr" 54 | ,"name": "val"} 55 | ,{"package": "base" 56 | ,"module": "GHC.Event.Arr" 57 | ,"name": "s0#"} 58 | ,{"package": "base" 59 | ,"module": "GHC.Event.Arr" 60 | ,"name": "s1#"} 61 | ,{"package": "ghc-prim" 62 | ,"module": "GHC.Tuple" 63 | ,"name": "()"}] 64 | ,"src-span": {"file": "libraries/base/GHC/Event/Arr.hs" 65 | ,"start-line": 31 66 | ,"start-col": 1 67 | ,"end-line": 32 68 | ,"end-col": 56}} 69 | ,{"id": {"package": "base" 70 | ,"module": "GHC.Event.Arr" 71 | ,"name": "read"} 72 | ,"refs": [{"package": "ghc-prim" 73 | ,"module": "GHC.Types" 74 | ,"name": "IO"} 75 | ,{"package": "base" 76 | ,"module": "GHC.Base" 77 | ,"name": "$"} 78 | ,{"package": "ghc-prim" 79 | ,"module": "GHC.Prim" 80 | ,"name": "readArray#"} 81 | ,{"package": "base" 82 | ,"module": "GHC.Event.Arr" 83 | ,"name": "a"} 84 | ,{"package": "base" 85 | ,"module": "GHC.Event.Arr" 86 | ,"name": "n#"} 87 | ,{"package": "base" 88 | ,"module": "GHC.Event.Arr" 89 | ,"name": "s0#"} 90 | ,{"package": "base" 91 | ,"module": "GHC.Event.Arr" 92 | ,"name": "s1#"} 93 | ,{"package": "base" 94 | ,"module": "GHC.Event.Arr" 95 | ,"name": "val"}] 96 | ,"src-span": {"file": "libraries/base/GHC/Event/Arr.hs" 97 | ,"start-line": 27 98 | ,"start-col": 1 99 | ,"end-line": 28 100 | ,"end-col": 63}} 101 | ,{"id": {"package": "base" 102 | ,"module": "GHC.Event.Arr" 103 | ,"name": "size"} 104 | ,"refs": [{"package": "ghc-prim" 105 | ,"module": "GHC.Types" 106 | ,"name": "I#"} 107 | ,{"package": "ghc-prim" 108 | ,"module": "GHC.Prim" 109 | ,"name": "sizeofMutableArray#"} 110 | ,{"package": "base" 111 | ,"module": "GHC.Event.Arr" 112 | ,"name": "a"}] 113 | ,"src-span": {"file": "libraries/base/GHC/Event/Arr.hs" 114 | ,"start-line": 24 115 | ,"start-col": 1 116 | ,"end-line": 24 117 | ,"end-col": 42}} 118 | ,{"id": {"package": "base" 119 | ,"module": "GHC.Event.Arr" 120 | ,"name": "new"} 121 | ,"refs": [{"package": "ghc-prim" 122 | ,"module": "GHC.Types" 123 | ,"name": "IO"} 124 | ,{"package": "base" 125 | ,"module": "GHC.Base" 126 | ,"name": "$"} 127 | ,{"package": "ghc-prim" 128 | ,"module": "GHC.Prim" 129 | ,"name": "newArray#"} 130 | ,{"package": "base" 131 | ,"module": "GHC.Event.Arr" 132 | ,"name": "n#"} 133 | ,{"package": "base" 134 | ,"module": "GHC.Event.Arr" 135 | ,"name": "defval"} 136 | ,{"package": "base" 137 | ,"module": "GHC.Event.Arr" 138 | ,"name": "s0#"} 139 | ,{"package": "base" 140 | ,"module": "GHC.Event.Arr" 141 | ,"name": "s1#"} 142 | ,{"package": "base" 143 | ,"module": "GHC.Event.Arr" 144 | ,"name": "Arr"} 145 | ,{"package": "base" 146 | ,"module": "GHC.Event.Arr" 147 | ,"name": "marr#"}] 148 | ,"src-span": {"file": "libraries/base/GHC/Event/Arr.hs" 149 | ,"start-line": 20 150 | ,"start-col": 1 151 | ,"end-line": 21 152 | ,"end-col": 75}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.Event.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.Event" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.ExecutionStack.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.ExecutionStack" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]} 10 | ,{"id": {"package": "base" 11 | ,"module": "GHC.ExecutionStack" 12 | ,"name": "getStackTrace"} 13 | ,"refs": [{"package": "base" 14 | ,"module": "GHC.Base" 15 | ,"name": "join"} 16 | ,{"package": "base" 17 | ,"module": "GHC.Base" 18 | ,"name": "."} 19 | ,{"package": "base" 20 | ,"module": "GHC.Base" 21 | ,"name": "fmap"} 22 | ,{"package": "base" 23 | ,"module": "GHC.ExecutionStack.Internal" 24 | ,"name": "stackFrames"} 25 | ,{"package": "base" 26 | ,"module": "GHC.ExecutionStack.Internal" 27 | ,"name": "collectStackTrace"}] 28 | ,"src-span": {"file": "libraries/base/GHC/ExecutionStack.hs" 29 | ,"start-line": 46 30 | ,"start-col": 1 31 | ,"end-line": 46 32 | ,"end-col": 67}} 33 | ,{"id": {"package": "base" 34 | ,"module": "GHC.ExecutionStack" 35 | ,"name": "showStackTrace"} 36 | ,"refs": [{"package": "base" 37 | ,"module": "GHC.Base" 38 | ,"name": "fmap"} 39 | ,{"package": "base" 40 | ,"module": "GHC.ExecutionStack.Internal" 41 | ,"name": "showStackFrames"} 42 | ,{"package": "base" 43 | ,"module": "GHC.ExecutionStack" 44 | ,"name": "st"} 45 | ,{"package": "base" 46 | ,"module": "GHC.ExecutionStack" 47 | ,"name": "getStackTrace"}] 48 | ,"src-span": {"file": "libraries/base/GHC/ExecutionStack.hs" 49 | ,"start-line": 50 50 | ,"start-col": 1 51 | ,"end-line": 50 52 | ,"end-col": 74}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.Fingerprint.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.Fingerprint" 3 | ,"name": "$tcMD5Context"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "GHC.Fingerprint" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "GHC.Fingerprint" 15 | ,"name": "$trModule"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "Module"} 19 | ,{"package": "ghc-prim" 20 | ,"module": "GHC.Types" 21 | ,"name": "TrNameS"}]} 22 | ,{"id": {"package": "base" 23 | ,"module": "GHC.Fingerprint" 24 | ,"name": "getFileHash"} 25 | ,"refs": [{"package": "base" 26 | ,"module": "System.IO" 27 | ,"name": "withBinaryFile"} 28 | ,{"package": "base" 29 | ,"module": "GHC.Fingerprint" 30 | ,"name": "path"} 31 | ,{"package": "base" 32 | ,"module": "GHC.IO.IOMode" 33 | ,"name": "ReadMode"} 34 | ,{"package": "base" 35 | ,"module": "GHC.Base" 36 | ,"name": "$"} 37 | ,{"package": "base" 38 | ,"module": "Foreign.Marshal.Alloc" 39 | ,"name": "allocaBytes"} 40 | ,{"package": "base" 41 | ,"module": "GHC.Base" 42 | ,"name": "$"} 43 | ,{"package": "base" 44 | ,"module": "GHC.Fingerprint" 45 | ,"name": "c_MD5Init"} 46 | ,{"package": "base" 47 | ,"module": "GHC.Fingerprint" 48 | ,"name": "pctxt"} 49 | ,{"package": "base" 50 | ,"module": "GHC.Base" 51 | ,"name": ">>"} 52 | ,{"package": "base" 53 | ,"module": "GHC.Fingerprint" 54 | ,"name": "processChunks"} 55 | ,{"package": "base" 56 | ,"module": "GHC.Fingerprint" 57 | ,"name": "h"} 58 | ,{"package": "base" 59 | ,"module": "GHC.Fingerprint" 60 | ,"name": "c_MD5Update"} 61 | ,{"package": "base" 62 | ,"module": "GHC.Fingerprint" 63 | ,"name": "buf"} 64 | ,{"package": "base" 65 | ,"module": "GHC.Real" 66 | ,"name": "fromIntegral"} 67 | ,{"package": "base" 68 | ,"module": "GHC.Fingerprint" 69 | ,"name": "size"} 70 | ,{"package": "base" 71 | ,"module": "GHC.Base" 72 | ,"name": "$"} 73 | ,{"package": "base" 74 | ,"module": "GHC.Fingerprint" 75 | ,"name": "c_MD5Final"} 76 | ,{"package": "base" 77 | ,"module": "GHC.Fingerprint" 78 | ,"name": "pdigest"} 79 | ,{"package": "base" 80 | ,"module": "Foreign.Storable" 81 | ,"name": "peek"} 82 | ,{"package": "base" 83 | ,"module": "GHC.Ptr" 84 | ,"name": "castPtr"} 85 | ,{"package": "base" 86 | ,"module": "GHC.Num" 87 | ,"name": "fromInteger"} 88 | ,{"package": "base" 89 | ,"module": "GHC.Fingerprint" 90 | ,"name": "_BUFSIZE"} 91 | ,{"package": "base" 92 | ,"module": "GHC.Base" 93 | ,"name": "$"} 94 | ,{"package": "base" 95 | ,"module": "GHC.IO.Handle.Text" 96 | ,"name": "hGetBuf"} 97 | ,{"package": "base" 98 | ,"module": "GHC.Fingerprint" 99 | ,"name": "h"} 100 | ,{"package": "base" 101 | ,"module": "GHC.Fingerprint" 102 | ,"name": "arrPtr"} 103 | ,{"package": "base" 104 | ,"module": "GHC.Base" 105 | ,"name": ">>="} 106 | ,{"package": "base" 107 | ,"module": "GHC.IO.Handle" 108 | ,"name": "hIsEOF"} 109 | ,{"package": "base" 110 | ,"module": "GHC.Base" 111 | ,"name": "when"} 112 | ,{"package": "base" 113 | ,"module": "GHC.Fingerprint" 114 | ,"name": "count"} 115 | ,{"package": "ghc-prim" 116 | ,"module": "GHC.Classes" 117 | ,"name": "/="} 118 | ,{"package": "ghc-prim" 119 | ,"module": "GHC.Classes" 120 | ,"name": "&&"} 121 | ,{"package": "ghc-prim" 122 | ,"module": "GHC.Classes" 123 | ,"name": "not"} 124 | ,{"package": "base" 125 | ,"module": "GHC.Fingerprint" 126 | ,"name": "eof"} 127 | ,{"package": "base" 128 | ,"module": "GHC.Base" 129 | ,"name": "$"} 130 | ,{"package": "base" 131 | ,"module": "GHC.Err" 132 | ,"name": "errorWithoutStackTrace"} 133 | ,{"package": "base" 134 | ,"module": "GHC.Base" 135 | ,"name": "$"} 136 | ,{"package": "base" 137 | ,"module": "GHC.Base" 138 | ,"name": "++"} 139 | ,{"package": "base" 140 | ,"module": "GHC.Show" 141 | ,"name": "show"} 142 | ,{"package": "base" 143 | ,"module": "GHC.Fingerprint" 144 | ,"name": "f"} 145 | ,{"package": "base" 146 | ,"module": "GHC.Fingerprint" 147 | ,"name": "loop"} 148 | ,{"package": "base" 149 | ,"module": "GHC.Fingerprint" 150 | ,"name": "loop"}] 151 | ,"src-span": {"file": "libraries/base/GHC/Fingerprint.hs" 152 | ,"start-line": 77 153 | ,"start-col": 1 154 | ,"end-line": 105 155 | ,"end-col": 14}} 156 | ,{"id": {"package": "base" 157 | ,"module": "GHC.Fingerprint" 158 | ,"name": "fingerprintData"} 159 | ,"refs": [{"package": "base" 160 | ,"module": "Foreign.Marshal.Alloc" 161 | ,"name": "allocaBytes"} 162 | ,{"package": "base" 163 | ,"module": "GHC.Base" 164 | ,"name": "$"} 165 | ,{"package": "base" 166 | ,"module": "GHC.Fingerprint" 167 | ,"name": "c_MD5Init"} 168 | ,{"package": "base" 169 | ,"module": "GHC.Fingerprint" 170 | ,"name": "pctxt"} 171 | ,{"package": "base" 172 | ,"module": "GHC.Base" 173 | ,"name": ">>"} 174 | ,{"package": "base" 175 | ,"module": "GHC.Fingerprint" 176 | ,"name": "c_MD5Update"} 177 | ,{"package": "base" 178 | ,"module": "GHC.Fingerprint" 179 | ,"name": "buf"} 180 | ,{"package": "base" 181 | ,"module": "GHC.Real" 182 | ,"name": "fromIntegral"} 183 | ,{"package": "base" 184 | ,"module": "GHC.Fingerprint" 185 | ,"name": "len"} 186 | ,{"package": "base" 187 | ,"module": "GHC.Base" 188 | ,"name": "$"} 189 | ,{"package": "base" 190 | ,"module": "GHC.Fingerprint" 191 | ,"name": "c_MD5Final"} 192 | ,{"package": "base" 193 | ,"module": "GHC.Fingerprint" 194 | ,"name": "pdigest"} 195 | ,{"package": "base" 196 | ,"module": "Foreign.Storable" 197 | ,"name": "peek"} 198 | ,{"package": "base" 199 | ,"module": "GHC.Ptr" 200 | ,"name": "castPtr"}] 201 | ,"src-span": {"file": "libraries/base/GHC/Fingerprint.hs" 202 | ,"start-line": 51 203 | ,"start-col": 1 204 | ,"end-line": 57 205 | ,"end-col": 48}} 206 | ,{"id": {"package": "base" 207 | ,"module": "GHC.Fingerprint" 208 | ,"name": "fingerprintString"} 209 | ,"refs": [{"package": "base" 210 | ,"module": "GHC.IO.Unsafe" 211 | ,"name": "unsafeDupablePerformIO"} 212 | ,{"package": "base" 213 | ,"module": "GHC.Base" 214 | ,"name": "$"} 215 | ,{"package": "base" 216 | ,"module": "Foreign.Marshal.Array" 217 | ,"name": "withArrayLen"} 218 | ,{"package": "base" 219 | ,"module": "GHC.Fingerprint" 220 | ,"name": "word8s"} 221 | ,{"package": "base" 222 | ,"module": "GHC.Base" 223 | ,"name": "$"} 224 | ,{"package": "base" 225 | ,"module": "GHC.Fingerprint" 226 | ,"name": "fingerprintData"} 227 | ,{"package": "base" 228 | ,"module": "GHC.Fingerprint" 229 | ,"name": "p"} 230 | ,{"package": "base" 231 | ,"module": "GHC.Fingerprint" 232 | ,"name": "len"} 233 | ,{"package": "base" 234 | ,"module": "GHC.Real" 235 | ,"name": "fromIntegral"} 236 | ,{"package": "base" 237 | ,"module": "GHC.Base" 238 | ,"name": "ord"} 239 | ,{"package": "base" 240 | ,"module": "GHC.Fingerprint" 241 | ,"name": "c"} 242 | ,{"package": "base" 243 | ,"module": "GHC.Fingerprint" 244 | ,"name": "w32"} 245 | ,{"package": "base" 246 | ,"module": "Data.Bits" 247 | ,"name": "shiftR"} 248 | ,{"package": "base" 249 | ,"module": "GHC.List" 250 | ,"name": "concatMap"} 251 | ,{"package": "base" 252 | ,"module": "GHC.Fingerprint" 253 | ,"name": "f"} 254 | ,{"package": "base" 255 | ,"module": "GHC.Fingerprint" 256 | ,"name": "str"}] 257 | ,"src-span": {"file": "libraries/base/GHC/Fingerprint.hs" 258 | ,"start-line": 61 259 | ,"start-col": 1 260 | ,"end-line": 70 261 | ,"end-col": 38}} 262 | ,{"id": {"package": "base" 263 | ,"module": "GHC.Fingerprint" 264 | ,"name": "fingerprintFingerprints"} 265 | ,"refs": [{"package": "base" 266 | ,"module": "GHC.IO.Unsafe" 267 | ,"name": "unsafeDupablePerformIO"} 268 | ,{"package": "base" 269 | ,"module": "GHC.Base" 270 | ,"name": "$"} 271 | ,{"package": "base" 272 | ,"module": "Foreign.Marshal.Array" 273 | ,"name": "withArrayLen"} 274 | ,{"package": "base" 275 | ,"module": "GHC.Fingerprint" 276 | ,"name": "fs"} 277 | ,{"package": "base" 278 | ,"module": "GHC.Base" 279 | ,"name": "$"} 280 | ,{"package": "base" 281 | ,"module": "GHC.Fingerprint" 282 | ,"name": "fingerprintData"} 283 | ,{"package": "base" 284 | ,"module": "GHC.Ptr" 285 | ,"name": "castPtr"} 286 | ,{"package": "base" 287 | ,"module": "GHC.Fingerprint" 288 | ,"name": "p"} 289 | ,{"package": "base" 290 | ,"module": "GHC.Fingerprint" 291 | ,"name": "len"} 292 | ,{"package": "base" 293 | ,"module": "GHC.Num" 294 | ,"name": "*"} 295 | ,{"package": "base" 296 | ,"module": "Foreign.Storable" 297 | ,"name": "sizeOf"} 298 | ,{"package": "base" 299 | ,"module": "GHC.List" 300 | ,"name": "head"}] 301 | ,"src-span": {"file": "libraries/base/GHC/Fingerprint.hs" 302 | ,"start-line": 46 303 | ,"start-col": 1 304 | ,"end-line": 48 305 | ,"end-col": 57}} 306 | ,{"id": {"package": "base" 307 | ,"module": "GHC.Fingerprint" 308 | ,"name": "fingerprint0"} 309 | ,"refs": [{"package": "base" 310 | ,"module": "GHC.Fingerprint.Type" 311 | ,"name": "$WFingerprint"} 312 | ,{"package": "base" 313 | ,"module": "GHC.Num" 314 | ,"name": "fromInteger"}] 315 | ,"src-span": {"file": "libraries/base/GHC/Fingerprint.hs" 316 | ,"start-line": 43 317 | ,"start-col": 1 318 | ,"end-line": 43 319 | ,"end-col": 31}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.Float.ConversionUtils.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.Float.ConversionUtils" 3 | ,"name": "$tcBA"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "GHC.Float.ConversionUtils" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "GHC.Float.ConversionUtils" 15 | ,"name": "$tc'BA"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "GHC.Float.ConversionUtils" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "GHC.Float.ConversionUtils" 27 | ,"name": "$trModule"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "Module"} 31 | ,{"package": "ghc-prim" 32 | ,"module": "GHC.Types" 33 | ,"name": "TrNameS"}]} 34 | ,{"id": {"package": "base" 35 | ,"module": "GHC.Float.ConversionUtils" 36 | ,"name": "zeroCountArr"} 37 | ,"refs": [{"package": "ghc-prim" 38 | ,"module": "GHC.Prim" 39 | ,"name": "newByteArray#"} 40 | ,{"package": "base" 41 | ,"module": "GHC.Float.ConversionUtils" 42 | ,"name": "s"} 43 | ,{"package": "ghc-prim" 44 | ,"module": "GHC.Prim" 45 | ,"name": "writeInt8Array#"} 46 | ,{"package": "base" 47 | ,"module": "GHC.Float.ConversionUtils" 48 | ,"name": "mba"} 49 | ,{"package": "base" 50 | ,"module": "GHC.Float.ConversionUtils" 51 | ,"name": "s1"} 52 | ,{"package": "ghc-prim" 53 | ,"module": "GHC.Types" 54 | ,"name": "isTrue#"} 55 | ,{"package": "base" 56 | ,"module": "GHC.Float.ConversionUtils" 57 | ,"name": "idx"} 58 | ,{"package": "ghc-prim" 59 | ,"module": "GHC.Prim" 60 | ,"name": "<#"} 61 | ,{"package": "base" 62 | ,"module": "GHC.Float.ConversionUtils" 63 | ,"name": "val"} 64 | ,{"package": "base" 65 | ,"module": "GHC.Float.ConversionUtils" 66 | ,"name": "st"} 67 | ,{"package": "base" 68 | ,"module": "GHC.Float.ConversionUtils" 69 | ,"name": "fillA"} 70 | ,{"package": "base" 71 | ,"module": "GHC.Float.ConversionUtils" 72 | ,"name": "step"} 73 | ,{"package": "ghc-prim" 74 | ,"module": "GHC.Prim" 75 | ,"name": "+#"} 76 | ,{"package": "base" 77 | ,"module": "GHC.Float.ConversionUtils" 78 | ,"name": "nx"} 79 | ,{"package": "ghc-prim" 80 | ,"module": "GHC.Prim" 81 | ,"name": "*#"} 82 | ,{"package": "base" 83 | ,"module": "GHC.Base" 84 | ,"name": "otherwise"} 85 | ,{"package": "base" 86 | ,"module": "GHC.Float.ConversionUtils" 87 | ,"name": "fillA"} 88 | ,{"package": "base" 89 | ,"module": "GHC.Float.ConversionUtils" 90 | ,"name": "s2"} 91 | ,{"package": "ghc-prim" 92 | ,"module": "GHC.Prim" 93 | ,"name": "unsafeFreezeByteArray#"} 94 | ,{"package": "base" 95 | ,"module": "GHC.Float.ConversionUtils" 96 | ,"name": "s3"} 97 | ,{"package": "base" 98 | ,"module": "GHC.Float.ConversionUtils" 99 | ,"name": "ba"} 100 | ,{"package": "base" 101 | ,"module": "GHC.Float.ConversionUtils" 102 | ,"name": "mkArr"} 103 | ,{"package": "ghc-prim" 104 | ,"module": "GHC.Prim" 105 | ,"name": "realWorld#"} 106 | ,{"package": "base" 107 | ,"module": "GHC.Float.ConversionUtils" 108 | ,"name": "BA"} 109 | ,{"package": "base" 110 | ,"module": "GHC.Float.ConversionUtils" 111 | ,"name": "b"}] 112 | ,"src-span": {"file": "libraries/base/GHC/Float/ConversionUtils.hs" 113 | ,"start-line": 82 114 | ,"start-col": 1 115 | ,"end-line": 99 116 | ,"end-col": 18}} 117 | ,{"id": {"package": "base" 118 | ,"module": "GHC.Float.ConversionUtils" 119 | ,"name": "toByte#"} 120 | ,"refs": [{"package": "ghc-prim" 121 | ,"module": "GHC.Prim" 122 | ,"name": "word2Int#"} 123 | ,{"package": "ghc-prim" 124 | ,"module": "GHC.Prim" 125 | ,"name": "and#"} 126 | ,{"package": "ghc-prim" 127 | ,"module": "GHC.Prim" 128 | ,"name": "int2Word#"} 129 | ,{"package": "base" 130 | ,"module": "GHC.Float.ConversionUtils" 131 | ,"name": "i"}] 132 | ,"src-span": {"file": "libraries/base/GHC/Float/ConversionUtils.hs" 133 | ,"start-line": 75 134 | ,"start-col": 1 135 | ,"end-line": 75 136 | ,"end-col": 49}} 137 | ,{"id": {"package": "base" 138 | ,"module": "GHC.Float.ConversionUtils" 139 | ,"name": "zeroCount"} 140 | ,"refs": [{"package": "base" 141 | ,"module": "GHC.Float.ConversionUtils" 142 | ,"name": "zeroCountArr"} 143 | ,{"package": "ghc-prim" 144 | ,"module": "GHC.Prim" 145 | ,"name": "indexInt8Array#"} 146 | ,{"package": "base" 147 | ,"module": "GHC.Float.ConversionUtils" 148 | ,"name": "ba"} 149 | ,{"package": "base" 150 | ,"module": "GHC.Float.ConversionUtils" 151 | ,"name": "i"}] 152 | ,"src-span": {"file": "libraries/base/GHC/Float/ConversionUtils.hs" 153 | ,"start-line": 70 154 | ,"start-col": 1 155 | ,"end-line": 72 156 | ,"end-col": 36}} 157 | ,{"id": {"package": "base" 158 | ,"module": "GHC.Float.ConversionUtils" 159 | ,"name": "elimZerosInt#"} 160 | ,"refs": [{"package": "base" 161 | ,"module": "GHC.Float.ConversionUtils" 162 | ,"name": "zeroCount"} 163 | ,{"package": "base" 164 | ,"module": "GHC.Float.ConversionUtils" 165 | ,"name": "toByte#"} 166 | ,{"package": "base" 167 | ,"module": "GHC.Float.ConversionUtils" 168 | ,"name": "n"} 169 | ,{"package": "ghc-prim" 170 | ,"module": "GHC.Types" 171 | ,"name": "isTrue#"} 172 | ,{"package": "base" 173 | ,"module": "GHC.Float.ConversionUtils" 174 | ,"name": "e"} 175 | ,{"package": "ghc-prim" 176 | ,"module": "GHC.Prim" 177 | ,"name": "<=#"} 178 | ,{"package": "base" 179 | ,"module": "GHC.Float.ConversionUtils" 180 | ,"name": "t"} 181 | ,{"package": "integer-gmp" 182 | ,"module": "GHC.Integer.Type" 183 | ,"name": "smallInteger"} 184 | ,{"package": "ghc-prim" 185 | ,"module": "GHC.Prim" 186 | ,"name": "uncheckedIShiftRA#"} 187 | ,{"package": "ghc-prim" 188 | ,"module": "GHC.Prim" 189 | ,"name": "<#"} 190 | ,{"package": "ghc-prim" 191 | ,"module": "GHC.Prim" 192 | ,"name": "-#"} 193 | ,{"package": "base" 194 | ,"module": "GHC.Base" 195 | ,"name": "otherwise"} 196 | ,{"package": "base" 197 | ,"module": "GHC.Float.ConversionUtils" 198 | ,"name": "elimZerosInt#"}] 199 | ,"src-span": {"file": "libraries/base/GHC/Float/ConversionUtils.hs" 200 | ,"start-line": 62 201 | ,"start-col": 1 202 | ,"end-line": 66 203 | ,"end-col": 81}} 204 | ,{"id": {"package": "base" 205 | ,"module": "GHC.Float.ConversionUtils" 206 | ,"name": "elim64#"} 207 | ,"refs": [{"package": "base" 208 | ,"module": "GHC.Float.ConversionUtils" 209 | ,"name": "elimZerosInt#"}] 210 | ,"src-span": {"file": "libraries/base/GHC/Float/ConversionUtils.hs" 211 | ,"start-line": 53 212 | ,"start-col": 1 213 | ,"end-line": 53 214 | ,"end-col": 24}} 215 | ,{"id": {"package": "base" 216 | ,"module": "GHC.Float.ConversionUtils" 217 | ,"name": "elimZerosInteger"} 218 | ,"refs": [{"package": "base" 219 | ,"module": "GHC.Float.ConversionUtils" 220 | ,"name": "elim64#"} 221 | ,{"package": "integer-gmp" 222 | ,"module": "GHC.Integer.Type" 223 | ,"name": "integerToInt"} 224 | ,{"package": "base" 225 | ,"module": "GHC.Float.ConversionUtils" 226 | ,"name": "m"} 227 | ,{"package": "base" 228 | ,"module": "GHC.Float.ConversionUtils" 229 | ,"name": "e"}] 230 | ,"src-span": {"file": "libraries/base/GHC/Float/ConversionUtils.hs" 231 | ,"start-line": 59 232 | ,"start-col": 1 233 | ,"end-line": 59 234 | ,"end-col": 50}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.GHCi.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.GHCi" 3 | ,"name": "$tcNoIO"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "GHC.GHCi" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "GHC.GHCi" 15 | ,"name": "$tc'NoIO"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "GHC.GHCi" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "GHC.GHCi" 27 | ,"name": "$tcGHCiSandboxIO"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "TyCon"} 31 | ,{"package": "base" 32 | ,"module": "GHC.GHCi" 33 | ,"name": "$trModule"} 34 | ,{"package": "ghc-prim" 35 | ,"module": "GHC.Types" 36 | ,"name": "TrNameS"}]} 37 | ,{"id": {"package": "base" 38 | ,"module": "GHC.GHCi" 39 | ,"name": "$tc'C:GHCiSandboxIO"} 40 | ,"refs": [{"package": "ghc-prim" 41 | ,"module": "GHC.Types" 42 | ,"name": "TyCon"} 43 | ,{"package": "base" 44 | ,"module": "GHC.GHCi" 45 | ,"name": "$trModule"} 46 | ,{"package": "ghc-prim" 47 | ,"module": "GHC.Types" 48 | ,"name": "TrNameS"}]} 49 | ,{"id": {"package": "base" 50 | ,"module": "GHC.GHCi" 51 | ,"name": "$trModule"} 52 | ,"refs": [{"package": "ghc-prim" 53 | ,"module": "GHC.Types" 54 | ,"name": "Module"} 55 | ,{"package": "ghc-prim" 56 | ,"module": "GHC.Types" 57 | ,"name": "TrNameS"}]} 58 | ,{"id": {"package": "base" 59 | ,"module": "GHC.GHCi" 60 | ,"name": "noio"} 61 | ,"refs": [{"package": "base" 62 | ,"module": "GHC.GHCi" 63 | ,"name": "noio"}] 64 | ,"src-span": {"file": "libraries/base/GHC/GHCi.hs" 65 | ,"start-line": 35 66 | ,"start-col": 25 67 | ,"end-line": 35 68 | ,"end-col": 29}} 69 | ,{"id": {"package": "base" 70 | ,"module": "GHC.GHCi" 71 | ,"name": "$dGHCiSandboxIO"} 72 | ,"refs": [{"package": "base" 73 | ,"module": "GHC.GHCi" 74 | ,"name": "C:GHCiSandboxIO"} 75 | ,{"package": "base" 76 | ,"module": "GHC.GHCi" 77 | ,"name": "$cp1GHCiSandboxIO"} 78 | ,{"package": "base" 79 | ,"module": "GHC.GHCi" 80 | ,"name": "$cghciStepIO"}] 81 | ,"src-span": {"file": "libraries/base/GHC/GHCi.hs" 82 | ,"start-line": 47 83 | ,"start-col": 10 84 | ,"end-line": 47 85 | ,"end-col": 28}} 86 | ,{"id": {"package": "base" 87 | ,"module": "GHC.GHCi" 88 | ,"name": "ghciStepIO"} 89 | ,"refs": [{"package": "base" 90 | ,"module": "GHC.GHCi" 91 | ,"name": "noio"}] 92 | ,"src-span": {"file": "libraries/base/GHC/GHCi.hs" 93 | ,"start-line": 48 94 | ,"start-col": 5 95 | ,"end-line": 48 96 | ,"end-col": 22}} 97 | ,{"id": {"package": "base" 98 | ,"module": "GHC.GHCi" 99 | ,"name": "$dMonad"} 100 | ,"refs": [{"package": "base" 101 | ,"module": "GHC.Base" 102 | ,"name": "C:Monad"} 103 | ,{"package": "base" 104 | ,"module": "GHC.GHCi" 105 | ,"name": "$cp1Monad"} 106 | ,{"package": "base" 107 | ,"module": "GHC.GHCi" 108 | ,"name": "$c>>="} 109 | ,{"package": "base" 110 | ,"module": "GHC.GHCi" 111 | ,"name": "$c>>"} 112 | ,{"package": "base" 113 | ,"module": "GHC.GHCi" 114 | ,"name": "$creturn"} 115 | ,{"package": "base" 116 | ,"module": "GHC.GHCi" 117 | ,"name": "$cfail"}] 118 | ,"src-span": {"file": "libraries/base/GHC/GHCi.hs" 119 | ,"start-line": 44 120 | ,"start-col": 10 121 | ,"end-line": 44 122 | ,"end-col": 20}} 123 | ,{"id": {"package": "base" 124 | ,"module": "GHC.GHCi" 125 | ,"name": ">>="} 126 | ,"refs": [{"package": "base" 127 | ,"module": "GHC.GHCi" 128 | ,"name": "NoIO"} 129 | ,{"package": "base" 130 | ,"module": "GHC.GHCi" 131 | ,"name": "noio"} 132 | ,{"package": "base" 133 | ,"module": "GHC.GHCi" 134 | ,"name": "k"} 135 | ,{"package": "base" 136 | ,"module": "GHC.Base" 137 | ,"name": ">>="} 138 | ,{"package": "base" 139 | ,"module": "GHC.Base" 140 | ,"name": "."} 141 | ,{"package": "base" 142 | ,"module": "GHC.GHCi" 143 | ,"name": "f"}] 144 | ,"src-span": {"file": "libraries/base/GHC/GHCi.hs" 145 | ,"start-line": 45 146 | ,"start-col": 5 147 | ,"end-line": 45 148 | ,"end-col": 43}} 149 | ,{"id": {"package": "base" 150 | ,"module": "GHC.GHCi" 151 | ,"name": ">>"} 152 | ,"refs": [{"package": "base" 153 | ,"module": "GHC.Base" 154 | ,"name": "$dm>>"}]} 155 | ,{"id": {"package": "base" 156 | ,"module": "GHC.GHCi" 157 | ,"name": "return"} 158 | ,"refs": [{"package": "base" 159 | ,"module": "GHC.Base" 160 | ,"name": "$dmreturn"}]} 161 | ,{"id": {"package": "base" 162 | ,"module": "GHC.GHCi" 163 | ,"name": "fail"} 164 | ,"refs": [{"package": "base" 165 | ,"module": "GHC.Base" 166 | ,"name": "$dmfail"}]} 167 | ,{"id": {"package": "base" 168 | ,"module": "GHC.GHCi" 169 | ,"name": "$dApplicative"} 170 | ,"refs": [{"package": "base" 171 | ,"module": "GHC.Base" 172 | ,"name": "C:Applicative"} 173 | ,{"package": "base" 174 | ,"module": "GHC.GHCi" 175 | ,"name": "$cp1Applicative"} 176 | ,{"package": "base" 177 | ,"module": "GHC.GHCi" 178 | ,"name": "$cpure"} 179 | ,{"package": "base" 180 | ,"module": "GHC.GHCi" 181 | ,"name": "$c<*>"} 182 | ,{"package": "base" 183 | ,"module": "GHC.GHCi" 184 | ,"name": "$c*>"} 185 | ,{"package": "base" 186 | ,"module": "GHC.GHCi" 187 | ,"name": "$c<*"}] 188 | ,"src-span": {"file": "libraries/base/GHC/GHCi.hs" 189 | ,"start-line": 40 190 | ,"start-col": 10 191 | ,"end-line": 40 192 | ,"end-col": 26}} 193 | ,{"id": {"package": "base" 194 | ,"module": "GHC.GHCi" 195 | ,"name": "pure"} 196 | ,"refs": [{"package": "base" 197 | ,"module": "GHC.GHCi" 198 | ,"name": "NoIO"} 199 | ,{"package": "base" 200 | ,"module": "GHC.Base" 201 | ,"name": "pure"} 202 | ,{"package": "base" 203 | ,"module": "GHC.GHCi" 204 | ,"name": "a"}] 205 | ,"src-span": {"file": "libraries/base/GHC/GHCi.hs" 206 | ,"start-line": 41 207 | ,"start-col": 3 208 | ,"end-line": 41 209 | ,"end-col": 25}} 210 | ,{"id": {"package": "base" 211 | ,"module": "GHC.GHCi" 212 | ,"name": "<*>"} 213 | ,"refs": [{"package": "base" 214 | ,"module": "GHC.Base" 215 | ,"name": "ap"}] 216 | ,"src-span": {"file": "libraries/base/GHC/GHCi.hs" 217 | ,"start-line": 42 218 | ,"start-col": 3 219 | ,"end-line": 42 220 | ,"end-col": 13}} 221 | ,{"id": {"package": "base" 222 | ,"module": "GHC.GHCi" 223 | ,"name": "*>"} 224 | ,"refs": [{"package": "base" 225 | ,"module": "GHC.Base" 226 | ,"name": "$dm*>"}]} 227 | ,{"id": {"package": "base" 228 | ,"module": "GHC.GHCi" 229 | ,"name": "<*"} 230 | ,"refs": [{"package": "base" 231 | ,"module": "GHC.Base" 232 | ,"name": "$dm<*"}]} 233 | ,{"id": {"package": "base" 234 | ,"module": "GHC.GHCi" 235 | ,"name": "$dFunctor"} 236 | ,"refs": [{"package": "base" 237 | ,"module": "GHC.Base" 238 | ,"name": "C:Functor"} 239 | ,{"package": "base" 240 | ,"module": "GHC.GHCi" 241 | ,"name": "$cfmap"} 242 | ,{"package": "base" 243 | ,"module": "GHC.GHCi" 244 | ,"name": "$c<$"}] 245 | ,"src-span": {"file": "libraries/base/GHC/GHCi.hs" 246 | ,"start-line": 37 247 | ,"start-col": 10 248 | ,"end-line": 37 249 | ,"end-col": 22}} 250 | ,{"id": {"package": "base" 251 | ,"module": "GHC.GHCi" 252 | ,"name": "fmap"} 253 | ,"refs": [{"package": "base" 254 | ,"module": "GHC.GHCi" 255 | ,"name": "NoIO"} 256 | ,{"package": "base" 257 | ,"module": "GHC.Base" 258 | ,"name": "fmap"} 259 | ,{"package": "base" 260 | ,"module": "GHC.GHCi" 261 | ,"name": "f"} 262 | ,{"package": "base" 263 | ,"module": "GHC.GHCi" 264 | ,"name": "a"}] 265 | ,"src-span": {"file": "libraries/base/GHC/GHCi.hs" 266 | ,"start-line": 38 267 | ,"start-col": 3 268 | ,"end-line": 38 269 | ,"end-col": 36}} 270 | ,{"id": {"package": "base" 271 | ,"module": "GHC.GHCi" 272 | ,"name": "<$"} 273 | ,"refs": [{"package": "base" 274 | ,"module": "GHC.Base" 275 | ,"name": "$dm<$"}]} 276 | ,{"id": {"package": "base" 277 | ,"module": "GHC.GHCi" 278 | ,"name": "$dGHCiSandboxIO"} 279 | ,"refs": [{"package": "base" 280 | ,"module": "GHC.GHCi" 281 | ,"name": "C:GHCiSandboxIO"} 282 | ,{"package": "base" 283 | ,"module": "GHC.GHCi" 284 | ,"name": "$cp1GHCiSandboxIO"} 285 | ,{"package": "base" 286 | ,"module": "GHC.GHCi" 287 | ,"name": "$cghciStepIO"}] 288 | ,"src-span": {"file": "libraries/base/GHC/GHCi.hs" 289 | ,"start-line": 31 290 | ,"start-col": 10 291 | ,"end-line": 31 292 | ,"end-col": 26}} 293 | ,{"id": {"package": "base" 294 | ,"module": "GHC.GHCi" 295 | ,"name": "ghciStepIO"} 296 | ,"refs": [{"package": "base" 297 | ,"module": "GHC.Base" 298 | ,"name": "id"}] 299 | ,"src-span": {"file": "libraries/base/GHC/GHCi.hs" 300 | ,"start-line": 32 301 | ,"start-col": 5 302 | ,"end-line": 32 303 | ,"end-col": 20}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.IO.BufferedIO.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.IO.BufferedIO" 3 | ,"name": "$tcBufferedIO"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "GHC.IO.BufferedIO" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "GHC.IO.BufferedIO" 15 | ,"name": "$tc'C:BufferedIO"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "GHC.IO.BufferedIO" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "GHC.IO.BufferedIO" 27 | ,"name": "$trModule"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "Module"} 31 | ,{"package": "ghc-prim" 32 | ,"module": "GHC.Types" 33 | ,"name": "TrNameS"}]} 34 | ,{"id": {"package": "base" 35 | ,"module": "GHC.IO.BufferedIO" 36 | ,"name": "writeBufNonBlocking"} 37 | ,"refs": [{"package": "base" 38 | ,"module": "GHC.IO.Buffer" 39 | ,"name": "bufferElems"} 40 | ,{"package": "base" 41 | ,"module": "GHC.IO.BufferedIO" 42 | ,"name": "bbuf"} 43 | ,{"package": "base" 44 | ,"module": "GHC.IO.Buffer" 45 | ,"name": "withBuffer"} 46 | ,{"package": "base" 47 | ,"module": "GHC.Base" 48 | ,"name": "$"} 49 | ,{"package": "base" 50 | ,"module": "GHC.IO.Device" 51 | ,"name": "writeNonBlocking"} 52 | ,{"package": "base" 53 | ,"module": "GHC.IO.BufferedIO" 54 | ,"name": "dev"} 55 | ,{"package": "base" 56 | ,"module": "GHC.IO.BufferedIO" 57 | ,"name": "ptr"} 58 | ,{"package": "base" 59 | ,"module": "GHC.Ptr" 60 | ,"name": "plusPtr"} 61 | ,{"package": "base" 62 | ,"module": "GHC.IO.Buffer" 63 | ,"name": "bufL"} 64 | ,{"package": "base" 65 | ,"module": "GHC.IO.BufferedIO" 66 | ,"name": "bytes"} 67 | ,{"package": "base" 68 | ,"module": "GHC.Base" 69 | ,"name": ">>="} 70 | ,{"package": "base" 71 | ,"module": "GHC.Base" 72 | ,"name": "return"} 73 | ,{"package": "base" 74 | ,"module": "GHC.IO.BufferedIO" 75 | ,"name": "res"} 76 | ,{"package": "base" 77 | ,"module": "GHC.IO.Buffer" 78 | ,"name": "bufferAdjustL"} 79 | ,{"package": "base" 80 | ,"module": "GHC.Num" 81 | ,"name": "+"}] 82 | ,"src-span": {"file": "libraries/base/GHC/IO/BufferedIO.hs" 83 | ,"start-line": 121 84 | ,"start-col": 1 85 | ,"end-line": 125 86 | ,"end-col": 53}} 87 | ,{"id": {"package": "base" 88 | ,"module": "GHC.IO.BufferedIO" 89 | ,"name": "writeBuf"} 90 | ,"refs": [{"package": "base" 91 | ,"module": "GHC.IO.Buffer" 92 | ,"name": "bufferElems"} 93 | ,{"package": "base" 94 | ,"module": "GHC.IO.BufferedIO" 95 | ,"name": "bbuf"} 96 | ,{"package": "base" 97 | ,"module": "GHC.IO.Buffer" 98 | ,"name": "withBuffer"} 99 | ,{"package": "base" 100 | ,"module": "GHC.Base" 101 | ,"name": "$"} 102 | ,{"package": "base" 103 | ,"module": "GHC.IO.Device" 104 | ,"name": "write"} 105 | ,{"package": "base" 106 | ,"module": "GHC.IO.BufferedIO" 107 | ,"name": "dev"} 108 | ,{"package": "base" 109 | ,"module": "GHC.IO.BufferedIO" 110 | ,"name": "ptr"} 111 | ,{"package": "base" 112 | ,"module": "GHC.Ptr" 113 | ,"name": "plusPtr"} 114 | ,{"package": "base" 115 | ,"module": "GHC.IO.Buffer" 116 | ,"name": "bufL"} 117 | ,{"package": "base" 118 | ,"module": "GHC.IO.BufferedIO" 119 | ,"name": "bytes"} 120 | ,{"package": "base" 121 | ,"module": "GHC.Base" 122 | ,"name": ">>"} 123 | ,{"package": "base" 124 | ,"module": "GHC.Base" 125 | ,"name": "return"}] 126 | ,"src-span": {"file": "libraries/base/GHC/IO/BufferedIO.hs" 127 | ,"start-line": 113 128 | ,"start-col": 1 129 | ,"end-line": 117 130 | ,"end-col": 32}} 131 | ,{"id": {"package": "base" 132 | ,"module": "GHC.IO.BufferedIO" 133 | ,"name": "readBufNonBlocking"} 134 | ,"refs": [{"package": "base" 135 | ,"module": "GHC.IO.Buffer" 136 | ,"name": "bufferAvailable"} 137 | ,{"package": "base" 138 | ,"module": "GHC.IO.BufferedIO" 139 | ,"name": "bbuf"} 140 | ,{"package": "base" 141 | ,"module": "GHC.IO.Buffer" 142 | ,"name": "withBuffer"} 143 | ,{"package": "base" 144 | ,"module": "GHC.Base" 145 | ,"name": "$"} 146 | ,{"package": "base" 147 | ,"module": "GHC.IO.Device" 148 | ,"name": "readNonBlocking"} 149 | ,{"package": "base" 150 | ,"module": "GHC.IO.BufferedIO" 151 | ,"name": "dev"} 152 | ,{"package": "base" 153 | ,"module": "GHC.IO.BufferedIO" 154 | ,"name": "ptr"} 155 | ,{"package": "base" 156 | ,"module": "GHC.Ptr" 157 | ,"name": "plusPtr"} 158 | ,{"package": "base" 159 | ,"module": "GHC.IO.Buffer" 160 | ,"name": "bufR"} 161 | ,{"package": "base" 162 | ,"module": "GHC.IO.BufferedIO" 163 | ,"name": "bytes"} 164 | ,{"package": "base" 165 | ,"module": "GHC.Base" 166 | ,"name": ">>="} 167 | ,{"package": "base" 168 | ,"module": "GHC.IO.BufferedIO" 169 | ,"name": "res"} 170 | ,{"package": "base" 171 | ,"module": "GHC.Base" 172 | ,"name": "return"} 173 | ,{"package": "base" 174 | ,"module": "GHC.Base" 175 | ,"name": "Nothing"} 176 | ,{"package": "base" 177 | ,"module": "GHC.Base" 178 | ,"name": "Just"} 179 | ,{"package": "base" 180 | ,"module": "GHC.IO.BufferedIO" 181 | ,"name": "n"} 182 | ,{"package": "base" 183 | ,"module": "GHC.Num" 184 | ,"name": "+"}] 185 | ,"src-span": {"file": "libraries/base/GHC/IO/BufferedIO.hs" 186 | ,"start-line": 104 187 | ,"start-col": 1 188 | ,"end-line": 110 189 | ,"end-col": 62}} 190 | ,{"id": {"package": "base" 191 | ,"module": "GHC.IO.BufferedIO" 192 | ,"name": "readBuf"} 193 | ,"refs": [{"package": "base" 194 | ,"module": "GHC.IO.Buffer" 195 | ,"name": "bufferAvailable"} 196 | ,{"package": "base" 197 | ,"module": "GHC.IO.BufferedIO" 198 | ,"name": "bbuf"} 199 | ,{"package": "base" 200 | ,"module": "GHC.IO.Buffer" 201 | ,"name": "withBuffer"} 202 | ,{"package": "base" 203 | ,"module": "GHC.Base" 204 | ,"name": "$"} 205 | ,{"package": "base" 206 | ,"module": "GHC.IO.Device" 207 | ,"name": "read"} 208 | ,{"package": "base" 209 | ,"module": "GHC.IO.BufferedIO" 210 | ,"name": "dev"} 211 | ,{"package": "base" 212 | ,"module": "GHC.IO.BufferedIO" 213 | ,"name": "ptr"} 214 | ,{"package": "base" 215 | ,"module": "GHC.Ptr" 216 | ,"name": "plusPtr"} 217 | ,{"package": "base" 218 | ,"module": "GHC.IO.Buffer" 219 | ,"name": "bufR"} 220 | ,{"package": "base" 221 | ,"module": "GHC.IO.BufferedIO" 222 | ,"name": "bytes"} 223 | ,{"package": "base" 224 | ,"module": "GHC.Base" 225 | ,"name": ">>="} 226 | ,{"package": "base" 227 | ,"module": "GHC.Base" 228 | ,"name": "return"} 229 | ,{"package": "base" 230 | ,"module": "GHC.IO.BufferedIO" 231 | ,"name": "res"} 232 | ,{"package": "base" 233 | ,"module": "GHC.Num" 234 | ,"name": "+"}] 235 | ,"src-span": {"file": "libraries/base/GHC/IO/BufferedIO.hs" 236 | ,"start-line": 93 237 | ,"start-col": 1 238 | ,"end-line": 97 239 | ,"end-col": 47}} 240 | ,{"id": {"package": "base" 241 | ,"module": "GHC.IO.BufferedIO" 242 | ,"name": "emptyWriteBuffer"} 243 | ,"refs": [{"package": "base" 244 | ,"module": "GHC.Base" 245 | ,"name": "return"} 246 | ,{"package": "base" 247 | ,"module": "GHC.IO.BufferedIO" 248 | ,"name": "buf"} 249 | ,{"package": "base" 250 | ,"module": "GHC.IO.Buffer" 251 | ,"name": "WriteBuffer"}] 252 | ,"src-span": {"file": "libraries/base/GHC/IO/BufferedIO.hs" 253 | ,"start-line": 63 254 | ,"start-col": 3 255 | ,"end-line": 64 256 | ,"end-col": 59}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.IO.Encoding.CodePage.Table.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.IO.Encoding.CodePage.Table" 3 | ,"name": "$tcCodePageArrays"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "GHC.IO.Encoding.CodePage.Table" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "GHC.IO.Encoding.CodePage.Table" 15 | ,"name": "$tc'SingleByteCP"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "GHC.IO.Encoding.CodePage.Table" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "GHC.IO.Encoding.CodePage.Table" 27 | ,"name": "$tcCompactArray"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "TyCon"} 31 | ,{"package": "base" 32 | ,"module": "GHC.IO.Encoding.CodePage.Table" 33 | ,"name": "$trModule"} 34 | ,{"package": "ghc-prim" 35 | ,"module": "GHC.Types" 36 | ,"name": "TrNameS"}]} 37 | ,{"id": {"package": "base" 38 | ,"module": "GHC.IO.Encoding.CodePage.Table" 39 | ,"name": "$tc'CompactArray"} 40 | ,"refs": [{"package": "ghc-prim" 41 | ,"module": "GHC.Types" 42 | ,"name": "TyCon"} 43 | ,{"package": "base" 44 | ,"module": "GHC.IO.Encoding.CodePage.Table" 45 | ,"name": "$trModule"} 46 | ,{"package": "ghc-prim" 47 | ,"module": "GHC.Types" 48 | ,"name": "TrNameS"}]} 49 | ,{"id": {"package": "base" 50 | ,"module": "GHC.IO.Encoding.CodePage.Table" 51 | ,"name": "$tcConvArray"} 52 | ,"refs": [{"package": "ghc-prim" 53 | ,"module": "GHC.Types" 54 | ,"name": "TyCon"} 55 | ,{"package": "base" 56 | ,"module": "GHC.IO.Encoding.CodePage.Table" 57 | ,"name": "$trModule"} 58 | ,{"package": "ghc-prim" 59 | ,"module": "GHC.Types" 60 | ,"name": "TrNameS"}]} 61 | ,{"id": {"package": "base" 62 | ,"module": "GHC.IO.Encoding.CodePage.Table" 63 | ,"name": "$tc'ConvArray"} 64 | ,"refs": [{"package": "ghc-prim" 65 | ,"module": "GHC.Types" 66 | ,"name": "TyCon"} 67 | ,{"package": "base" 68 | ,"module": "GHC.IO.Encoding.CodePage.Table" 69 | ,"name": "$trModule"} 70 | ,{"package": "ghc-prim" 71 | ,"module": "GHC.Types" 72 | ,"name": "TrNameS"}]} 73 | ,{"id": {"package": "base" 74 | ,"module": "GHC.IO.Encoding.CodePage.Table" 75 | ,"name": "$trModule"} 76 | ,"refs": [{"package": "ghc-prim" 77 | ,"module": "GHC.Types" 78 | ,"name": "Module"} 79 | ,{"package": "ghc-prim" 80 | ,"module": "GHC.Types" 81 | ,"name": "TrNameS"}]} 82 | ,{"id": {"package": "base" 83 | ,"module": "GHC.IO.Encoding.CodePage.Table" 84 | ,"name": "codePageMap"} 85 | ,"refs": [{"package": "base" 86 | ,"module": "GHC.Num" 87 | ,"name": "fromInteger"} 88 | ,{"package": "base" 89 | ,"module": "GHC.IO.Encoding.CodePage.Table" 90 | ,"name": "$WSingleByteCP"} 91 | ,{"package": "base" 92 | ,"module": "GHC.IO.Encoding.CodePage.Table" 93 | ,"name": "ConvArray"} 94 | ,{"package": "base" 95 | ,"module": "GHC.IO.Encoding.CodePage.Table" 96 | ,"name": "$WCompactArray"}] 97 | ,"src-span": {"file": "libraries/base/GHC/IO/Encoding/CodePage/Table.hs" 98 | ,"start-line": 56 99 | ,"start-col": 1 100 | ,"end-line": 432 101 | ,"end-col": 6}} 102 | ,{"id": {"package": "base" 103 | ,"module": "GHC.IO.Encoding.CodePage.Table" 104 | ,"name": "blockBitSize"} 105 | ,"refs": [] 106 | ,"src-span": {"file": "libraries/base/GHC/IO/Encoding/CodePage/Table.hs" 107 | ,"start-line": 54 108 | ,"start-col": 1 109 | ,"end-line": 54 110 | ,"end-col": 17}} 111 | ,{"id": {"package": "base" 112 | ,"module": "GHC.IO.Encoding.CodePage.Table" 113 | ,"name": "decoderArray"} 114 | ,"refs": [{"package": "base" 115 | ,"module": "GHC.IO.Encoding.CodePage.Table" 116 | ,"name": "decoderArray"}] 117 | ,"src-span": {"file": "libraries/base/GHC/IO/Encoding/CodePage/Table.hs" 118 | ,"start-line": 49 119 | ,"start-col": 5 120 | ,"end-line": 49 121 | ,"end-col": 17}} 122 | ,{"id": {"package": "base" 123 | ,"module": "GHC.IO.Encoding.CodePage.Table" 124 | ,"name": "encoderArray"} 125 | ,"refs": [{"package": "base" 126 | ,"module": "GHC.IO.Encoding.CodePage.Table" 127 | ,"name": "encoderArray"}] 128 | ,"src-span": {"file": "libraries/base/GHC/IO/Encoding/CodePage/Table.hs" 129 | ,"start-line": 50 130 | ,"start-col": 5 131 | ,"end-line": 50 132 | ,"end-col": 17}} 133 | ,{"id": {"package": "base" 134 | ,"module": "GHC.IO.Encoding.CodePage.Table" 135 | ,"name": "encoderIndices"} 136 | ,"refs": [{"package": "base" 137 | ,"module": "GHC.IO.Encoding.CodePage.Table" 138 | ,"name": "encoderIndices"}] 139 | ,"src-span": {"file": "libraries/base/GHC/IO/Encoding/CodePage/Table.hs" 140 | ,"start-line": 44 141 | ,"start-col": 5 142 | ,"end-line": 44 143 | ,"end-col": 19}} 144 | ,{"id": {"package": "base" 145 | ,"module": "GHC.IO.Encoding.CodePage.Table" 146 | ,"name": "encoderMax"} 147 | ,"refs": [{"package": "base" 148 | ,"module": "GHC.IO.Encoding.CodePage.Table" 149 | ,"name": "encoderMax"}] 150 | ,"src-span": {"file": "libraries/base/GHC/IO/Encoding/CodePage/Table.hs" 151 | ,"start-line": 43 152 | ,"start-col": 5 153 | ,"end-line": 43 154 | ,"end-col": 15}} 155 | ,{"id": {"package": "base" 156 | ,"module": "GHC.IO.Encoding.CodePage.Table" 157 | ,"name": "encoderValues"} 158 | ,"refs": [{"package": "base" 159 | ,"module": "GHC.IO.Encoding.CodePage.Table" 160 | ,"name": "encoderValues"}] 161 | ,"src-span": {"file": "libraries/base/GHC/IO/Encoding/CodePage/Table.hs" 162 | ,"start-line": 45 163 | ,"start-col": 5 164 | ,"end-line": 45 165 | ,"end-col": 18}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.IO.Encoding.CodePage.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.IO.Encoding.CodePage" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.IO.Unsafe.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.IO.Unsafe" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]} 10 | ,{"id": {"package": "base" 11 | ,"module": "GHC.IO.Unsafe" 12 | ,"name": "noDuplicate"} 13 | ,"refs": [{"package": "ghc-prim" 14 | ,"module": "GHC.Types" 15 | ,"name": "IO"} 16 | ,{"package": "base" 17 | ,"module": "GHC.Base" 18 | ,"name": "$"} 19 | ,{"package": "ghc-prim" 20 | ,"module": "GHC.Prim" 21 | ,"name": "noDuplicate#"} 22 | ,{"package": "base" 23 | ,"module": "GHC.IO.Unsafe" 24 | ,"name": "s"} 25 | ,{"package": "base" 26 | ,"module": "GHC.IO.Unsafe" 27 | ,"name": "s'"} 28 | ,{"package": "ghc-prim" 29 | ,"module": "GHC.Tuple" 30 | ,"name": "()"}] 31 | ,"src-span": {"file": "libraries/base/GHC/IO/Unsafe.hs" 32 | ,"start-line": 180 33 | ,"start-col": 1 34 | ,"end-line": 180 35 | ,"end-col": 67}} 36 | ,{"id": {"package": "base" 37 | ,"module": "GHC.IO.Unsafe" 38 | ,"name": "unsafeDupableInterleaveIO"} 39 | ,"refs": [{"package": "ghc-prim" 40 | ,"module": "GHC.Types" 41 | ,"name": "IO"} 42 | ,{"package": "base" 43 | ,"module": "GHC.IO.Unsafe" 44 | ,"name": "m"} 45 | ,{"package": "base" 46 | ,"module": "GHC.IO.Unsafe" 47 | ,"name": "s"} 48 | ,{"package": "base" 49 | ,"module": "GHC.IO.Unsafe" 50 | ,"name": "res"} 51 | ,{"package": "base" 52 | ,"module": "GHC.IO.Unsafe" 53 | ,"name": "r"}] 54 | ,"src-span": {"file": "libraries/base/GHC/IO/Unsafe.hs" 55 | ,"start-line": 163 56 | ,"start-col": 1 57 | ,"end-line": 167 58 | ,"end-col": 28}} 59 | ,{"id": {"package": "base" 60 | ,"module": "GHC.IO.Unsafe" 61 | ,"name": "unsafeInterleaveIO"} 62 | ,"refs": [{"package": "base" 63 | ,"module": "GHC.IO.Unsafe" 64 | ,"name": "unsafeDupableInterleaveIO"} 65 | ,{"package": "base" 66 | ,"module": "GHC.IO.Unsafe" 67 | ,"name": "noDuplicate"} 68 | ,{"package": "base" 69 | ,"module": "GHC.Base" 70 | ,"name": ">>"} 71 | ,{"package": "base" 72 | ,"module": "GHC.IO.Unsafe" 73 | ,"name": "m"}] 74 | ,"src-span": {"file": "libraries/base/GHC/IO/Unsafe.hs" 75 | ,"start-line": 141 76 | ,"start-col": 1 77 | ,"end-line": 141 78 | ,"end-col": 68}} 79 | ,{"id": {"package": "base" 80 | ,"module": "GHC.IO.Unsafe" 81 | ,"name": "unsafeDupablePerformIO"} 82 | ,"refs": [{"package": "ghc-prim" 83 | ,"module": "GHC.Magic" 84 | ,"name": "runRW#"} 85 | ,{"package": "base" 86 | ,"module": "GHC.IO.Unsafe" 87 | ,"name": "m"} 88 | ,{"package": "base" 89 | ,"module": "GHC.IO.Unsafe" 90 | ,"name": "a"}] 91 | ,"src-span": {"file": "libraries/base/GHC/IO/Unsafe.hs" 92 | ,"start-line": 104 93 | ,"start-col": 1 94 | ,"end-line": 104 95 | ,"end-col": 65}} 96 | ,{"id": {"package": "base" 97 | ,"module": "GHC.IO.Unsafe" 98 | ,"name": "unsafePerformIO"} 99 | ,"refs": [{"package": "base" 100 | ,"module": "GHC.IO.Unsafe" 101 | ,"name": "unsafeDupablePerformIO"} 102 | ,{"package": "base" 103 | ,"module": "GHC.IO.Unsafe" 104 | ,"name": "noDuplicate"} 105 | ,{"package": "base" 106 | ,"module": "GHC.Base" 107 | ,"name": ">>"} 108 | ,{"package": "base" 109 | ,"module": "GHC.IO.Unsafe" 110 | ,"name": "m"}] 111 | ,"src-span": {"file": "libraries/base/GHC/IO/Unsafe.hs" 112 | ,"start-line": 88 113 | ,"start-col": 1 114 | ,"end-line": 88 115 | ,"end-col": 62}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.IOArray.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.IOArray" 3 | ,"name": "$tcIOArray"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "GHC.IOArray" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "GHC.IOArray" 15 | ,"name": "$tc'IOArray"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "GHC.IOArray" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "GHC.IOArray" 27 | ,"name": "$trModule"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "Module"} 31 | ,{"package": "ghc-prim" 32 | ,"module": "GHC.Types" 33 | ,"name": "TrNameS"}]} 34 | ,{"id": {"package": "base" 35 | ,"module": "GHC.IOArray" 36 | ,"name": "boundsIOArray"} 37 | ,"refs": [{"package": "base" 38 | ,"module": "GHC.Arr" 39 | ,"name": "boundsSTArray"} 40 | ,{"package": "base" 41 | ,"module": "GHC.IOArray" 42 | ,"name": "marr"}] 43 | ,"src-span": {"file": "libraries/base/GHC/IOArray.hs" 44 | ,"start-line": 75 45 | ,"start-col": 1 46 | ,"end-line": 75 47 | ,"end-col": 50}} 48 | ,{"id": {"package": "base" 49 | ,"module": "GHC.IOArray" 50 | ,"name": "writeIOArray"} 51 | ,"refs": [{"package": "base" 52 | ,"module": "GHC.IO" 53 | ,"name": "stToIO"} 54 | ,{"package": "base" 55 | ,"module": "GHC.Arr" 56 | ,"name": "writeSTArray"} 57 | ,{"package": "base" 58 | ,"module": "GHC.IOArray" 59 | ,"name": "marr"} 60 | ,{"package": "base" 61 | ,"module": "GHC.IOArray" 62 | ,"name": "i"} 63 | ,{"package": "base" 64 | ,"module": "GHC.IOArray" 65 | ,"name": "e"}] 66 | ,"src-span": {"file": "libraries/base/GHC/IOArray.hs" 67 | ,"start-line": 71 68 | ,"start-col": 1 69 | ,"end-line": 71 70 | ,"end-col": 65}} 71 | ,{"id": {"package": "base" 72 | ,"module": "GHC.IOArray" 73 | ,"name": "readIOArray"} 74 | ,"refs": [{"package": "base" 75 | ,"module": "GHC.IO" 76 | ,"name": "stToIO"} 77 | ,{"package": "base" 78 | ,"module": "GHC.Arr" 79 | ,"name": "readSTArray"} 80 | ,{"package": "base" 81 | ,"module": "GHC.IOArray" 82 | ,"name": "marr"} 83 | ,{"package": "base" 84 | ,"module": "GHC.IOArray" 85 | ,"name": "i"}] 86 | ,"src-span": {"file": "libraries/base/GHC/IOArray.hs" 87 | ,"start-line": 67 88 | ,"start-col": 1 89 | ,"end-line": 67 90 | ,"end-col": 59}} 91 | ,{"id": {"package": "base" 92 | ,"module": "GHC.IOArray" 93 | ,"name": "unsafeWriteIOArray"} 94 | ,"refs": [{"package": "base" 95 | ,"module": "GHC.IO" 96 | ,"name": "stToIO"} 97 | ,{"package": "base" 98 | ,"module": "GHC.Arr" 99 | ,"name": "unsafeWriteSTArray"} 100 | ,{"package": "base" 101 | ,"module": "GHC.IOArray" 102 | ,"name": "marr"} 103 | ,{"package": "base" 104 | ,"module": "GHC.IOArray" 105 | ,"name": "i"} 106 | ,{"package": "base" 107 | ,"module": "GHC.IOArray" 108 | ,"name": "e"}] 109 | ,"src-span": {"file": "libraries/base/GHC/IOArray.hs" 110 | ,"start-line": 63 111 | ,"start-col": 1 112 | ,"end-line": 63 113 | ,"end-col": 77}} 114 | ,{"id": {"package": "base" 115 | ,"module": "GHC.IOArray" 116 | ,"name": "unsafeReadIOArray"} 117 | ,"refs": [{"package": "base" 118 | ,"module": "GHC.IO" 119 | ,"name": "stToIO"} 120 | ,{"package": "base" 121 | ,"module": "GHC.Arr" 122 | ,"name": "unsafeReadSTArray"} 123 | ,{"package": "base" 124 | ,"module": "GHC.IOArray" 125 | ,"name": "marr"} 126 | ,{"package": "base" 127 | ,"module": "GHC.IOArray" 128 | ,"name": "i"}] 129 | ,"src-span": {"file": "libraries/base/GHC/IOArray.hs" 130 | ,"start-line": 58 131 | ,"start-col": 1 132 | ,"end-line": 58 133 | ,"end-col": 71}} 134 | ,{"id": {"package": "base" 135 | ,"module": "GHC.IOArray" 136 | ,"name": "newIOArray"} 137 | ,"refs": [{"package": "base" 138 | ,"module": "GHC.IO" 139 | ,"name": "stToIO"} 140 | ,{"package": "base" 141 | ,"module": "GHC.Base" 142 | ,"name": "$"} 143 | ,{"package": "base" 144 | ,"module": "GHC.Arr" 145 | ,"name": "newSTArray"} 146 | ,{"package": "base" 147 | ,"module": "GHC.IOArray" 148 | ,"name": "lu"} 149 | ,{"package": "base" 150 | ,"module": "GHC.IOArray" 151 | ,"name": "initial"} 152 | ,{"package": "base" 153 | ,"module": "GHC.Base" 154 | ,"name": ">>="} 155 | ,{"package": "base" 156 | ,"module": "GHC.Base" 157 | ,"name": "return"} 158 | ,{"package": "base" 159 | ,"module": "GHC.IOArray" 160 | ,"name": "IOArray"} 161 | ,{"package": "base" 162 | ,"module": "GHC.IOArray" 163 | ,"name": "marr"}] 164 | ,"src-span": {"file": "libraries/base/GHC/IOArray.hs" 165 | ,"start-line": 53 166 | ,"start-col": 1 167 | ,"end-line": 53 168 | ,"end-col": 92}} 169 | ,{"id": {"package": "base" 170 | ,"module": "GHC.IOArray" 171 | ,"name": "$dEq"} 172 | ,"refs": [{"package": "ghc-prim" 173 | ,"module": "GHC.Classes" 174 | ,"name": "C:Eq"} 175 | ,{"package": "base" 176 | ,"module": "GHC.IOArray" 177 | ,"name": "$c=="} 178 | ,{"package": "base" 179 | ,"module": "GHC.IOArray" 180 | ,"name": "$c/="}] 181 | ,"src-span": {"file": "libraries/base/GHC/IOArray.hs" 182 | ,"start-line": 47 183 | ,"start-col": 10 184 | ,"end-line": 47 185 | ,"end-col": 26}} 186 | ,{"id": {"package": "base" 187 | ,"module": "GHC.IOArray" 188 | ,"name": "=="} 189 | ,"refs": [{"package": "base" 190 | ,"module": "GHC.IOArray" 191 | ,"name": "x"} 192 | ,{"package": "ghc-prim" 193 | ,"module": "GHC.Classes" 194 | ,"name": "=="} 195 | ,{"package": "base" 196 | ,"module": "GHC.IOArray" 197 | ,"name": "y"}] 198 | ,"src-span": {"file": "libraries/base/GHC/IOArray.hs" 199 | ,"start-line": 48 200 | ,"start-col": 3 201 | ,"end-line": 48 202 | ,"end-col": 34}} 203 | ,{"id": {"package": "base" 204 | ,"module": "GHC.IOArray" 205 | ,"name": "/="} 206 | ,"refs": [{"package": "ghc-prim" 207 | ,"module": "GHC.Classes" 208 | ,"name": "$dm/="}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.IORef.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.IORef" 3 | ,"name": "$tcIORef"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "GHC.IORef" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "GHC.IORef" 15 | ,"name": "$tc'IORef"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "GHC.IORef" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "GHC.IORef" 27 | ,"name": "$trModule"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "Module"} 31 | ,{"package": "ghc-prim" 32 | ,"module": "GHC.Types" 33 | ,"name": "TrNameS"}]} 34 | ,{"id": {"package": "base" 35 | ,"module": "GHC.IORef" 36 | ,"name": "atomicModifyIORef"} 37 | ,"refs": [{"package": "ghc-prim" 38 | ,"module": "GHC.Types" 39 | ,"name": "IO"} 40 | ,{"package": "base" 41 | ,"module": "GHC.Base" 42 | ,"name": "$"} 43 | ,{"package": "ghc-prim" 44 | ,"module": "GHC.Prim" 45 | ,"name": "atomicModifyMutVar#"} 46 | ,{"package": "base" 47 | ,"module": "GHC.IORef" 48 | ,"name": "r#"} 49 | ,{"package": "base" 50 | ,"module": "GHC.IORef" 51 | ,"name": "f"} 52 | ,{"package": "base" 53 | ,"module": "GHC.IORef" 54 | ,"name": "s"}] 55 | ,"src-span": {"file": "libraries/base/GHC/IORef.hs" 56 | ,"start-line": 52 57 | ,"start-col": 1 58 | ,"end-line": 52 59 | ,"end-col": 79}} 60 | ,{"id": {"package": "base" 61 | ,"module": "GHC.IORef" 62 | ,"name": "writeIORef"} 63 | ,"refs": [{"package": "base" 64 | ,"module": "GHC.IO" 65 | ,"name": "stToIO"} 66 | ,{"package": "base" 67 | ,"module": "GHC.STRef" 68 | ,"name": "writeSTRef"} 69 | ,{"package": "base" 70 | ,"module": "GHC.IORef" 71 | ,"name": "var"} 72 | ,{"package": "base" 73 | ,"module": "GHC.IORef" 74 | ,"name": "v"}] 75 | ,"src-span": {"file": "libraries/base/GHC/IORef.hs" 76 | ,"start-line": 49 77 | ,"start-col": 1 78 | ,"end-line": 49 79 | ,"end-col": 53}} 80 | ,{"id": {"package": "base" 81 | ,"module": "GHC.IORef" 82 | ,"name": "readIORef"} 83 | ,"refs": [{"package": "base" 84 | ,"module": "GHC.IO" 85 | ,"name": "stToIO"} 86 | ,{"package": "base" 87 | ,"module": "GHC.STRef" 88 | ,"name": "readSTRef"} 89 | ,{"package": "base" 90 | ,"module": "GHC.IORef" 91 | ,"name": "var"}] 92 | ,"src-span": {"file": "libraries/base/GHC/IORef.hs" 93 | ,"start-line": 45 94 | ,"start-col": 1 95 | ,"end-line": 45 96 | ,"end-col": 48}} 97 | ,{"id": {"package": "base" 98 | ,"module": "GHC.IORef" 99 | ,"name": "newIORef"} 100 | ,"refs": [{"package": "base" 101 | ,"module": "GHC.IO" 102 | ,"name": "stToIO"} 103 | ,{"package": "base" 104 | ,"module": "GHC.STRef" 105 | ,"name": "newSTRef"} 106 | ,{"package": "base" 107 | ,"module": "GHC.IORef" 108 | ,"name": "v"} 109 | ,{"package": "base" 110 | ,"module": "GHC.Base" 111 | ,"name": ">>="} 112 | ,{"package": "base" 113 | ,"module": "GHC.Base" 114 | ,"name": "return"} 115 | ,{"package": "base" 116 | ,"module": "GHC.IORef" 117 | ,"name": "IORef"} 118 | ,{"package": "base" 119 | ,"module": "GHC.IORef" 120 | ,"name": "var"}] 121 | ,"src-span": {"file": "libraries/base/GHC/IORef.hs" 122 | ,"start-line": 41 123 | ,"start-col": 1 124 | ,"end-line": 41 125 | ,"end-col": 65}} 126 | ,{"id": {"package": "base" 127 | ,"module": "GHC.IORef" 128 | ,"name": "$dEq"} 129 | ,"refs": [{"package": "ghc-prim" 130 | ,"module": "GHC.Classes" 131 | ,"name": "C:Eq"} 132 | ,{"package": "base" 133 | ,"module": "GHC.IORef" 134 | ,"name": "$c=="} 135 | ,{"package": "base" 136 | ,"module": "GHC.IORef" 137 | ,"name": "$c/="}] 138 | ,"src-span": {"file": "libraries/base/GHC/IORef.hs" 139 | ,"start-line": 36 140 | ,"start-col": 10 141 | ,"end-line": 36 142 | ,"end-col": 22}} 143 | ,{"id": {"package": "base" 144 | ,"module": "GHC.IORef" 145 | ,"name": "=="} 146 | ,"refs": [{"package": "base" 147 | ,"module": "GHC.IORef" 148 | ,"name": "x"} 149 | ,{"package": "ghc-prim" 150 | ,"module": "GHC.Classes" 151 | ,"name": "=="} 152 | ,{"package": "base" 153 | ,"module": "GHC.IORef" 154 | ,"name": "y"}] 155 | ,"src-span": {"file": "libraries/base/GHC/IORef.hs" 156 | ,"start-line": 37 157 | ,"start-col": 3 158 | ,"end-line": 37 159 | ,"end-col": 30}} 160 | ,{"id": {"package": "base" 161 | ,"module": "GHC.IORef" 162 | ,"name": "/="} 163 | ,"refs": [{"package": "ghc-prim" 164 | ,"module": "GHC.Classes" 165 | ,"name": "$dm/="}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.OldList.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.OldList" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.OverloadedLabels.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.OverloadedLabels" 3 | ,"name": "$tcIsLabel"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "GHC.OverloadedLabels" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "GHC.OverloadedLabels" 15 | ,"name": "$tc'C:IsLabel"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "GHC.OverloadedLabels" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "GHC.OverloadedLabels" 27 | ,"name": "$trModule"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "Module"} 31 | ,{"package": "ghc-prim" 32 | ,"module": "GHC.Types" 33 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.PArr.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.PArr" 3 | ,"name": "$tc[::]"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "GHC.PArr" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "GHC.PArr" 15 | ,"name": "$tc'PArr"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "GHC.PArr" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "GHC.PArr" 27 | ,"name": "$trModule"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "Module"} 31 | ,{"package": "ghc-prim" 32 | ,"module": "GHC.Types" 33 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.Pack.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.Pack" 3 | ,"name": "$tcMutableByteArray"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "GHC.Pack" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "GHC.Pack" 15 | ,"name": "$tc'MutableByteArray"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "GHC.Pack" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "GHC.Pack" 27 | ,"name": "$tcByteArray"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "TyCon"} 31 | ,{"package": "base" 32 | ,"module": "GHC.Pack" 33 | ,"name": "$trModule"} 34 | ,{"package": "ghc-prim" 35 | ,"module": "GHC.Types" 36 | ,"name": "TrNameS"}]} 37 | ,{"id": {"package": "base" 38 | ,"module": "GHC.Pack" 39 | ,"name": "$tc'ByteArray"} 40 | ,"refs": [{"package": "ghc-prim" 41 | ,"module": "GHC.Types" 42 | ,"name": "TyCon"} 43 | ,{"package": "base" 44 | ,"module": "GHC.Pack" 45 | ,"name": "$trModule"} 46 | ,{"package": "ghc-prim" 47 | ,"module": "GHC.Types" 48 | ,"name": "TrNameS"}]} 49 | ,{"id": {"package": "base" 50 | ,"module": "GHC.Pack" 51 | ,"name": "$trModule"} 52 | ,"refs": [{"package": "ghc-prim" 53 | ,"module": "GHC.Types" 54 | ,"name": "Module"} 55 | ,{"package": "ghc-prim" 56 | ,"module": "GHC.Types" 57 | ,"name": "TrNameS"}]} 58 | ,{"id": {"package": "base" 59 | ,"module": "GHC.Pack" 60 | ,"name": "freeze_ps_array"} 61 | ,"refs": [{"package": "base" 62 | ,"module": "GHC.ST" 63 | ,"name": "ST"} 64 | ,{"package": "base" 65 | ,"module": "GHC.Base" 66 | ,"name": "$"} 67 | ,{"package": "ghc-prim" 68 | ,"module": "GHC.Prim" 69 | ,"name": "unsafeFreezeByteArray#"} 70 | ,{"package": "base" 71 | ,"module": "GHC.Pack" 72 | ,"name": "arr#"} 73 | ,{"package": "base" 74 | ,"module": "GHC.Pack" 75 | ,"name": "s#"} 76 | ,{"package": "base" 77 | ,"module": "GHC.Pack" 78 | ,"name": "s2#"} 79 | ,{"package": "base" 80 | ,"module": "GHC.Pack" 81 | ,"name": "ByteArray"} 82 | ,{"package": "base" 83 | ,"module": "GHC.Num" 84 | ,"name": "fromInteger"} 85 | ,{"package": "ghc-prim" 86 | ,"module": "GHC.Types" 87 | ,"name": "I#"} 88 | ,{"package": "base" 89 | ,"module": "GHC.Pack" 90 | ,"name": "len#"} 91 | ,{"package": "base" 92 | ,"module": "GHC.Pack" 93 | ,"name": "frozen#"}] 94 | ,"src-span": {"file": "libraries/base/GHC/Pack.hs" 95 | ,"start-line": 99 96 | ,"start-col": 1 97 | ,"end-line": 101 98 | ,"end-col": 47}} 99 | ,{"id": {"package": "base" 100 | ,"module": "GHC.Pack" 101 | ,"name": "write_ps_array"} 102 | ,"refs": [{"package": "base" 103 | ,"module": "GHC.ST" 104 | ,"name": "ST"} 105 | ,{"package": "base" 106 | ,"module": "GHC.Base" 107 | ,"name": "$"} 108 | ,{"package": "ghc-prim" 109 | ,"module": "GHC.Prim" 110 | ,"name": "writeCharArray#"} 111 | ,{"package": "base" 112 | ,"module": "GHC.Pack" 113 | ,"name": "barr#"} 114 | ,{"package": "base" 115 | ,"module": "GHC.Pack" 116 | ,"name": "n"} 117 | ,{"package": "base" 118 | ,"module": "GHC.Pack" 119 | ,"name": "ch"} 120 | ,{"package": "base" 121 | ,"module": "GHC.Pack" 122 | ,"name": "s#"} 123 | ,{"package": "base" 124 | ,"module": "GHC.Pack" 125 | ,"name": "s2#"} 126 | ,{"package": "ghc-prim" 127 | ,"module": "GHC.Tuple" 128 | ,"name": "()"}] 129 | ,"src-span": {"file": "libraries/base/GHC/Pack.hs" 130 | ,"start-line": 94 131 | ,"start-col": 1 132 | ,"end-line": 96 133 | ,"end-col": 20}} 134 | ,{"id": {"package": "base" 135 | ,"module": "GHC.Pack" 136 | ,"name": "new_ps_array"} 137 | ,"refs": [{"package": "base" 138 | ,"module": "GHC.ST" 139 | ,"name": "ST"} 140 | ,{"package": "base" 141 | ,"module": "GHC.Base" 142 | ,"name": "$"} 143 | ,{"package": "ghc-prim" 144 | ,"module": "GHC.Prim" 145 | ,"name": "newByteArray#"} 146 | ,{"package": "base" 147 | ,"module": "GHC.Pack" 148 | ,"name": "size"} 149 | ,{"package": "base" 150 | ,"module": "GHC.Pack" 151 | ,"name": "s"} 152 | ,{"package": "base" 153 | ,"module": "GHC.Pack" 154 | ,"name": "s2#"} 155 | ,{"package": "base" 156 | ,"module": "GHC.Pack" 157 | ,"name": "MutableByteArray"} 158 | ,{"package": "base" 159 | ,"module": "GHC.Pack" 160 | ,"name": "bot"} 161 | ,{"package": "base" 162 | ,"module": "GHC.Pack" 163 | ,"name": "barr#"} 164 | ,{"package": "base" 165 | ,"module": "GHC.Err" 166 | ,"name": "errorWithoutStackTrace"}] 167 | ,"src-span": {"file": "libraries/base/GHC/Pack.hs" 168 | ,"start-line": 88 169 | ,"start-col": 1 170 | ,"end-line": 92 171 | ,"end-col": 48}} 172 | ,{"id": {"package": "base" 173 | ,"module": "GHC.Pack" 174 | ,"name": "packNBytesST"} 175 | ,"refs": [{"package": "base" 176 | ,"module": "GHC.Pack" 177 | ,"name": "new_ps_array"} 178 | ,{"package": "base" 179 | ,"module": "GHC.Pack" 180 | ,"name": "length#"} 181 | ,{"package": "ghc-prim" 182 | ,"module": "GHC.Prim" 183 | ,"name": "+#"} 184 | ,{"package": "base" 185 | ,"module": "GHC.Base" 186 | ,"name": ">>="} 187 | ,{"package": "base" 188 | ,"module": "GHC.Pack" 189 | ,"name": "fill_in"} 190 | ,{"package": "base" 191 | ,"module": "GHC.Pack" 192 | ,"name": "ch_array"} 193 | ,{"package": "base" 194 | ,"module": "GHC.Pack" 195 | ,"name": "str"} 196 | ,{"package": "base" 197 | ,"module": "GHC.Base" 198 | ,"name": ">>"} 199 | ,{"package": "base" 200 | ,"module": "GHC.Pack" 201 | ,"name": "freeze_ps_array"} 202 | ,{"package": "base" 203 | ,"module": "GHC.Pack" 204 | ,"name": "write_ps_array"} 205 | ,{"package": "base" 206 | ,"module": "GHC.Pack" 207 | ,"name": "arr_in#"} 208 | ,{"package": "base" 209 | ,"module": "GHC.Pack" 210 | ,"name": "idx"} 211 | ,{"package": "ghc-prim" 212 | ,"module": "GHC.Prim" 213 | ,"name": "chr#"} 214 | ,{"package": "base" 215 | ,"module": "GHC.Base" 216 | ,"name": "return"} 217 | ,{"package": "ghc-prim" 218 | ,"module": "GHC.Tuple" 219 | ,"name": "()"} 220 | ,{"package": "base" 221 | ,"module": "GHC.Pack" 222 | ,"name": "arr_in#"} 223 | ,{"package": "base" 224 | ,"module": "GHC.Pack" 225 | ,"name": "idx"} 226 | ,{"package": "base" 227 | ,"module": "GHC.Pack" 228 | ,"name": "c"} 229 | ,{"package": "base" 230 | ,"module": "GHC.Pack" 231 | ,"name": "cs"}] 232 | ,"src-span": {"file": "libraries/base/GHC/Pack.hs" 233 | ,"start-line": 62 234 | ,"start-col": 1 235 | ,"end-line": 80 236 | ,"end-col": 34}} 237 | ,{"id": {"package": "base" 238 | ,"module": "GHC.Pack" 239 | ,"name": "packStringST"} 240 | ,"refs": [{"package": "base" 241 | ,"module": "GHC.List" 242 | ,"name": "length"} 243 | ,{"package": "base" 244 | ,"module": "GHC.Pack" 245 | ,"name": "str"} 246 | ,{"package": "base" 247 | ,"module": "GHC.Pack" 248 | ,"name": "packNBytesST"} 249 | ,{"package": "base" 250 | ,"module": "GHC.Pack" 251 | ,"name": "len"}] 252 | ,"src-span": {"file": "libraries/base/GHC/Pack.hs" 253 | ,"start-line": 57 254 | ,"start-col": 1 255 | ,"end-line": 59 256 | ,"end-col": 23}} 257 | ,{"id": {"package": "base" 258 | ,"module": "GHC.Pack" 259 | ,"name": "packString"} 260 | ,"refs": [{"package": "base" 261 | ,"module": "GHC.ST" 262 | ,"name": "runST"} 263 | ,{"package": "base" 264 | ,"module": "GHC.Pack" 265 | ,"name": "packStringST"} 266 | ,{"package": "base" 267 | ,"module": "GHC.Pack" 268 | ,"name": "str"}] 269 | ,"src-span": {"file": "libraries/base/GHC/Pack.hs" 270 | ,"start-line": 54 271 | ,"start-col": 1 272 | ,"end-line": 54 273 | ,"end-col": 42}} 274 | ,{"id": {"package": "base" 275 | ,"module": "GHC.Pack" 276 | ,"name": "packCString#"} 277 | ,"refs": [{"package": "base" 278 | ,"module": "GHC.Pack" 279 | ,"name": "packString"} 280 | ,{"package": "base" 281 | ,"module": "GHC.Pack" 282 | ,"name": "str"} 283 | ,{"package": "base" 284 | ,"module": "GHC.Pack" 285 | ,"name": "bytes"}] 286 | ,"src-span": {"file": "libraries/base/GHC/Pack.hs" 287 | ,"start-line": 51 288 | ,"start-col": 1 289 | ,"end-line": 51 290 | ,"end-col": 77}} 291 | ,{"id": {"package": "base" 292 | ,"module": "GHC.Pack" 293 | ,"name": "unpackCString"} 294 | ,"refs": [{"package": "base" 295 | ,"module": "GHC.Pack" 296 | ,"name": "a"} 297 | ,{"package": "ghc-prim" 298 | ,"module": "GHC.Classes" 299 | ,"name": "=="} 300 | ,{"package": "base" 301 | ,"module": "GHC.Ptr" 302 | ,"name": "nullPtr"} 303 | ,{"package": "base" 304 | ,"module": "GHC.Base" 305 | ,"name": "otherwise"} 306 | ,{"package": "ghc-prim" 307 | ,"module": "GHC.CString" 308 | ,"name": "unpackCString#"} 309 | ,{"package": "base" 310 | ,"module": "GHC.Pack" 311 | ,"name": "addr"}] 312 | ,"src-span": {"file": "libraries/base/GHC/Pack.hs" 313 | ,"start-line": 46 314 | ,"start-col": 1 315 | ,"end-line": 48 316 | ,"end-col": 41}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.Profiling.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.Profiling" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.STRef.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.STRef" 3 | ,"name": "$tcSTRef"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "GHC.STRef" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "GHC.STRef" 15 | ,"name": "$tc'STRef"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "GHC.STRef" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "GHC.STRef" 27 | ,"name": "$trModule"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "Module"} 31 | ,{"package": "ghc-prim" 32 | ,"module": "GHC.Types" 33 | ,"name": "TrNameS"}]} 34 | ,{"id": {"package": "base" 35 | ,"module": "GHC.STRef" 36 | ,"name": "writeSTRef"} 37 | ,"refs": [{"package": "base" 38 | ,"module": "GHC.ST" 39 | ,"name": "ST"} 40 | ,{"package": "base" 41 | ,"module": "GHC.Base" 42 | ,"name": "$"} 43 | ,{"package": "ghc-prim" 44 | ,"module": "GHC.Prim" 45 | ,"name": "writeMutVar#"} 46 | ,{"package": "base" 47 | ,"module": "GHC.STRef" 48 | ,"name": "var#"} 49 | ,{"package": "base" 50 | ,"module": "GHC.STRef" 51 | ,"name": "val"} 52 | ,{"package": "base" 53 | ,"module": "GHC.STRef" 54 | ,"name": "s1#"} 55 | ,{"package": "base" 56 | ,"module": "GHC.STRef" 57 | ,"name": "s2#"} 58 | ,{"package": "ghc-prim" 59 | ,"module": "GHC.Tuple" 60 | ,"name": "()"}] 61 | ,"src-span": {"file": "libraries/base/GHC/STRef.hs" 62 | ,"start-line": 43 63 | ,"start-col": 1 64 | ,"end-line": 45 65 | ,"end-col": 20}} 66 | ,{"id": {"package": "base" 67 | ,"module": "GHC.STRef" 68 | ,"name": "readSTRef"} 69 | ,"refs": [{"package": "base" 70 | ,"module": "GHC.ST" 71 | ,"name": "ST"} 72 | ,{"package": "base" 73 | ,"module": "GHC.Base" 74 | ,"name": "$"} 75 | ,{"package": "ghc-prim" 76 | ,"module": "GHC.Prim" 77 | ,"name": "readMutVar#"} 78 | ,{"package": "base" 79 | ,"module": "GHC.STRef" 80 | ,"name": "var#"} 81 | ,{"package": "base" 82 | ,"module": "GHC.STRef" 83 | ,"name": "s1#"}] 84 | ,"src-span": {"file": "libraries/base/GHC/STRef.hs" 85 | ,"start-line": 39 86 | ,"start-col": 1 87 | ,"end-line": 39 88 | ,"end-col": 59}} 89 | ,{"id": {"package": "base" 90 | ,"module": "GHC.STRef" 91 | ,"name": "newSTRef"} 92 | ,"refs": [{"package": "base" 93 | ,"module": "GHC.ST" 94 | ,"name": "ST"} 95 | ,{"package": "base" 96 | ,"module": "GHC.Base" 97 | ,"name": "$"} 98 | ,{"package": "ghc-prim" 99 | ,"module": "GHC.Prim" 100 | ,"name": "newMutVar#"} 101 | ,{"package": "base" 102 | ,"module": "GHC.STRef" 103 | ,"name": "init"} 104 | ,{"package": "base" 105 | ,"module": "GHC.STRef" 106 | ,"name": "s1#"} 107 | ,{"package": "base" 108 | ,"module": "GHC.STRef" 109 | ,"name": "s2#"} 110 | ,{"package": "base" 111 | ,"module": "GHC.STRef" 112 | ,"name": "STRef"} 113 | ,{"package": "base" 114 | ,"module": "GHC.STRef" 115 | ,"name": "var#"}] 116 | ,"src-span": {"file": "libraries/base/GHC/STRef.hs" 117 | ,"start-line": 33 118 | ,"start-col": 1 119 | ,"end-line": 35 120 | ,"end-col": 28}} 121 | ,{"id": {"package": "base" 122 | ,"module": "GHC.STRef" 123 | ,"name": "$dEq"} 124 | ,"refs": [{"package": "ghc-prim" 125 | ,"module": "GHC.Classes" 126 | ,"name": "C:Eq"} 127 | ,{"package": "base" 128 | ,"module": "GHC.STRef" 129 | ,"name": "$c=="} 130 | ,{"package": "base" 131 | ,"module": "GHC.STRef" 132 | ,"name": "$c/="}] 133 | ,"src-span": {"file": "libraries/base/GHC/STRef.hs" 134 | ,"start-line": 48 135 | ,"start-col": 10 136 | ,"end-line": 48 137 | ,"end-col": 24}} 138 | ,{"id": {"package": "base" 139 | ,"module": "GHC.STRef" 140 | ,"name": "=="} 141 | ,"refs": [{"package": "ghc-prim" 142 | ,"module": "GHC.Types" 143 | ,"name": "isTrue#"} 144 | ,{"package": "ghc-prim" 145 | ,"module": "GHC.Prim" 146 | ,"name": "sameMutVar#"} 147 | ,{"package": "base" 148 | ,"module": "GHC.STRef" 149 | ,"name": "v1#"} 150 | ,{"package": "base" 151 | ,"module": "GHC.STRef" 152 | ,"name": "v2#"}] 153 | ,"src-span": {"file": "libraries/base/GHC/STRef.hs" 154 | ,"start-line": 49 155 | ,"start-col": 5 156 | ,"end-line": 49 157 | ,"end-col": 59}} 158 | ,{"id": {"package": "base" 159 | ,"module": "GHC.STRef" 160 | ,"name": "/="} 161 | ,"refs": [{"package": "ghc-prim" 162 | ,"module": "GHC.Classes" 163 | ,"name": "$dm/="}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.Stable.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.Stable" 3 | ,"name": "$tcStablePtr"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "GHC.Stable" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "GHC.Stable" 15 | ,"name": "$tc'StablePtr"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "GHC.Stable" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "GHC.Stable" 27 | ,"name": "$trModule"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "Module"} 31 | ,{"package": "ghc-prim" 32 | ,"module": "GHC.Types" 33 | ,"name": "TrNameS"}]} 34 | ,{"id": {"package": "base" 35 | ,"module": "GHC.Stable" 36 | ,"name": "castPtrToStablePtr"} 37 | ,"refs": [{"package": "base" 38 | ,"module": "GHC.Stable" 39 | ,"name": "StablePtr"} 40 | ,{"package": "ghc-prim" 41 | ,"module": "GHC.Prim" 42 | ,"name": "unsafeCoerce#"} 43 | ,{"package": "base" 44 | ,"module": "GHC.Stable" 45 | ,"name": "a"}] 46 | ,"src-span": {"file": "libraries/base/GHC/Stable.hs" 47 | ,"start-line": 102 48 | ,"start-col": 1 49 | ,"end-line": 102 50 | ,"end-col": 57}} 51 | ,{"id": {"package": "base" 52 | ,"module": "GHC.Stable" 53 | ,"name": "castStablePtrToPtr"} 54 | ,"refs": [{"package": "base" 55 | ,"module": "GHC.Ptr" 56 | ,"name": "Ptr"} 57 | ,{"package": "ghc-prim" 58 | ,"module": "GHC.Prim" 59 | ,"name": "unsafeCoerce#"} 60 | ,{"package": "base" 61 | ,"module": "GHC.Stable" 62 | ,"name": "s"}] 63 | ,"src-span": {"file": "libraries/base/GHC/Stable.hs" 64 | ,"start-line": 88 65 | ,"start-col": 1 66 | ,"end-line": 88 67 | ,"end-col": 57}} 68 | ,{"id": {"package": "base" 69 | ,"module": "GHC.Stable" 70 | ,"name": "deRefStablePtr"} 71 | ,"refs": [{"package": "ghc-prim" 72 | ,"module": "GHC.Types" 73 | ,"name": "IO"} 74 | ,{"package": "base" 75 | ,"module": "GHC.Base" 76 | ,"name": "$"} 77 | ,{"package": "ghc-prim" 78 | ,"module": "GHC.Prim" 79 | ,"name": "deRefStablePtr#"} 80 | ,{"package": "base" 81 | ,"module": "GHC.Stable" 82 | ,"name": "sp"} 83 | ,{"package": "base" 84 | ,"module": "GHC.Stable" 85 | ,"name": "s"}] 86 | ,"src-span": {"file": "libraries/base/GHC/Stable.hs" 87 | ,"start-line": 65 88 | ,"start-col": 1 89 | ,"end-line": 65 90 | ,"end-col": 64}} 91 | ,{"id": {"package": "base" 92 | ,"module": "GHC.Stable" 93 | ,"name": "newStablePtr"} 94 | ,"refs": [{"package": "ghc-prim" 95 | ,"module": "GHC.Types" 96 | ,"name": "IO"} 97 | ,{"package": "base" 98 | ,"module": "GHC.Base" 99 | ,"name": "$"} 100 | ,{"package": "ghc-prim" 101 | ,"module": "GHC.Prim" 102 | ,"name": "makeStablePtr#"} 103 | ,{"package": "base" 104 | ,"module": "GHC.Stable" 105 | ,"name": "a"} 106 | ,{"package": "base" 107 | ,"module": "GHC.Stable" 108 | ,"name": "s"} 109 | ,{"package": "base" 110 | ,"module": "GHC.Stable" 111 | ,"name": "s'"} 112 | ,{"package": "base" 113 | ,"module": "GHC.Stable" 114 | ,"name": "StablePtr"} 115 | ,{"package": "base" 116 | ,"module": "GHC.Stable" 117 | ,"name": "sp"}] 118 | ,"src-span": {"file": "libraries/base/GHC/Stable.hs" 119 | ,"start-line": 54 120 | ,"start-col": 1 121 | ,"end-line": 55 122 | ,"end-col": 70}} 123 | ,{"id": {"package": "base" 124 | ,"module": "GHC.Stable" 125 | ,"name": "$dEq"} 126 | ,"refs": [{"package": "ghc-prim" 127 | ,"module": "GHC.Classes" 128 | ,"name": "C:Eq"} 129 | ,{"package": "base" 130 | ,"module": "GHC.Stable" 131 | ,"name": "$c=="} 132 | ,{"package": "base" 133 | ,"module": "GHC.Stable" 134 | ,"name": "$c/="}] 135 | ,"src-span": {"file": "libraries/base/GHC/Stable.hs" 136 | ,"start-line": 104 137 | ,"start-col": 10 138 | ,"end-line": 104 139 | ,"end-col": 26}} 140 | ,{"id": {"package": "base" 141 | ,"module": "GHC.Stable" 142 | ,"name": "=="} 143 | ,"refs": [{"package": "ghc-prim" 144 | ,"module": "GHC.Prim" 145 | ,"name": "eqStablePtr#"} 146 | ,{"package": "base" 147 | ,"module": "GHC.Stable" 148 | ,"name": "sp1"} 149 | ,{"package": "base" 150 | ,"module": "GHC.Stable" 151 | ,"name": "sp2"} 152 | ,{"package": "ghc-prim" 153 | ,"module": "GHC.Types" 154 | ,"name": "False"} 155 | ,{"package": "ghc-prim" 156 | ,"module": "GHC.Types" 157 | ,"name": "True"}] 158 | ,"src-span": {"file": "libraries/base/GHC/Stable.hs" 159 | ,"start-line": 105 160 | ,"start-col": 5 161 | ,"end-line": 108 162 | ,"end-col": 22}} 163 | ,{"id": {"package": "base" 164 | ,"module": "GHC.Stable" 165 | ,"name": "/="} 166 | ,"refs": [{"package": "ghc-prim" 167 | ,"module": "GHC.Classes" 168 | ,"name": "$dm/="}]}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.Stack.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.Stack" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]} 10 | ,{"id": {"package": "base" 11 | ,"module": "GHC.Stack" 12 | ,"name": "popCallStack"} 13 | ,"refs": [{"package": "base" 14 | ,"module": "GHC.Stack" 15 | ,"name": "stk"} 16 | ,{"package": "base" 17 | ,"module": "GHC.Err" 18 | ,"name": "errorWithoutStackTrace"} 19 | ,{"package": "base" 20 | ,"module": "GHC.Stack" 21 | ,"name": "stk'"}] 22 | ,"src-span": {"file": "libraries/base/GHC/Stack.hs" 23 | ,"start-line": 76 24 | ,"start-col": 1 25 | ,"end-line": 79 26 | ,"end-col": 32}} 27 | ,{"id": {"package": "base" 28 | ,"module": "GHC.Stack" 29 | ,"name": "callStack"} 30 | ,"refs": [{"package": "base" 31 | ,"module": "GHC.Stack" 32 | ,"name": "popCallStack"} 33 | ,{"package": "base" 34 | ,"module": "GHC.Stack" 35 | ,"name": "$dIP"}] 36 | ,"src-span": {"file": "libraries/base/GHC/Stack.hs" 37 | ,"start-line": 88 38 | ,"start-col": 1 39 | ,"end-line": 88 40 | ,"end-col": 36}} 41 | ,{"id": {"package": "base" 42 | ,"module": "GHC.Stack" 43 | ,"name": "withFrozenCallStack"} 44 | ,"refs": [{"package": "base" 45 | ,"module": "GHC.Stack.Types" 46 | ,"name": "freezeCallStack"} 47 | ,{"package": "base" 48 | ,"module": "GHC.Stack" 49 | ,"name": "popCallStack"} 50 | ,{"package": "base" 51 | ,"module": "GHC.Stack" 52 | ,"name": "callStack"} 53 | ,{"package": "base" 54 | ,"module": "GHC.Stack" 55 | ,"name": "do_this"}] 56 | ,"src-span": {"file": "libraries/base/GHC/Stack.hs" 57 | ,"start-line": 97 58 | ,"start-col": 1 59 | ,"end-line": 101 60 | ,"end-col": 13}} 61 | ,{"id": {"package": "base" 62 | ,"module": "GHC.Stack" 63 | ,"name": "errorWithStackTrace"} 64 | ,"refs": [{"package": "base" 65 | ,"module": "GHC.IO.Unsafe" 66 | ,"name": "unsafeDupablePerformIO"} 67 | ,{"package": "base" 68 | ,"module": "GHC.Base" 69 | ,"name": "$"} 70 | ,{"package": "base" 71 | ,"module": "GHC.Stack.CCS" 72 | ,"name": "ccsToStrings"} 73 | ,{"package": "base" 74 | ,"module": "GHC.Base" 75 | ,"name": "=<<"} 76 | ,{"package": "base" 77 | ,"module": "GHC.Stack.CCS" 78 | ,"name": "getCurrentCCS"} 79 | ,{"package": "base" 80 | ,"module": "GHC.Stack" 81 | ,"name": "x"} 82 | ,{"package": "base" 83 | ,"module": "GHC.Base" 84 | ,"name": ">>="} 85 | ,{"package": "base" 86 | ,"module": "GHC.List" 87 | ,"name": "null"} 88 | ,{"package": "base" 89 | ,"module": "GHC.Stack" 90 | ,"name": "stack"} 91 | ,{"package": "base" 92 | ,"module": "GHC.IO" 93 | ,"name": "throwIO"} 94 | ,{"package": "base" 95 | ,"module": "GHC.Exception" 96 | ,"name": "$bErrorCall"} 97 | ,{"package": "base" 98 | ,"module": "GHC.Exception" 99 | ,"name": "ErrorCallWithLocation"} 100 | ,{"package": "base" 101 | ,"module": "GHC.Stack.CCS" 102 | ,"name": "renderStack"}] 103 | ,"src-span": {"file": "libraries/base/GHC/Stack.hs" 104 | ,"start-line": 63 105 | ,"start-col": 1 106 | ,"end-line": 67 107 | ,"end-col": 65}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_GHC.Weak.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "GHC.Weak" 3 | ,"name": "$tcWeak"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "TyCon"} 7 | ,{"package": "base" 8 | ,"module": "GHC.Weak" 9 | ,"name": "$trModule"} 10 | ,{"package": "ghc-prim" 11 | ,"module": "GHC.Types" 12 | ,"name": "TrNameS"}]} 13 | ,{"id": {"package": "base" 14 | ,"module": "GHC.Weak" 15 | ,"name": "$tc'Weak"} 16 | ,"refs": [{"package": "ghc-prim" 17 | ,"module": "GHC.Types" 18 | ,"name": "TyCon"} 19 | ,{"package": "base" 20 | ,"module": "GHC.Weak" 21 | ,"name": "$trModule"} 22 | ,{"package": "ghc-prim" 23 | ,"module": "GHC.Types" 24 | ,"name": "TrNameS"}]} 25 | ,{"id": {"package": "base" 26 | ,"module": "GHC.Weak" 27 | ,"name": "$trModule"} 28 | ,"refs": [{"package": "ghc-prim" 29 | ,"module": "GHC.Types" 30 | ,"name": "Module"} 31 | ,{"package": "ghc-prim" 32 | ,"module": "GHC.Types" 33 | ,"name": "TrNameS"}]} 34 | ,{"id": {"package": "base" 35 | ,"module": "GHC.Weak" 36 | ,"name": "runFinalizerBatch"} 37 | ,"refs": [{"package": "ghc-prim" 38 | ,"module": "GHC.Types" 39 | ,"name": "IO"} 40 | ,{"package": "base" 41 | ,"module": "GHC.Base" 42 | ,"name": "$"} 43 | ,{"package": "base" 44 | ,"module": "GHC.Weak" 45 | ,"name": "m"} 46 | ,{"package": "base" 47 | ,"module": "GHC.Weak" 48 | ,"name": "s"} 49 | ,{"package": "ghc-prim" 50 | ,"module": "GHC.Tuple" 51 | ,"name": "()"} 52 | ,{"package": "ghc-prim" 53 | ,"module": "GHC.Prim" 54 | ,"name": "-#"} 55 | ,{"package": "ghc-prim" 56 | ,"module": "GHC.Prim" 57 | ,"name": "indexArray#"} 58 | ,{"package": "base" 59 | ,"module": "GHC.Weak" 60 | ,"name": "arr"} 61 | ,{"package": "base" 62 | ,"module": "GHC.Weak" 63 | ,"name": "m'"} 64 | ,{"package": "base" 65 | ,"module": "GHC.Weak" 66 | ,"name": "io"} 67 | ,{"package": "base" 68 | ,"module": "GHC.Base" 69 | ,"name": "unIO"} 70 | ,{"package": "base" 71 | ,"module": "GHC.Weak" 72 | ,"name": "go"} 73 | ,{"package": "base" 74 | ,"module": "GHC.Weak" 75 | ,"name": "s'"} 76 | ,{"package": "base" 77 | ,"module": "GHC.Weak" 78 | ,"name": "go"} 79 | ,{"package": "base" 80 | ,"module": "GHC.Weak" 81 | ,"name": "n"}] 82 | ,"src-span": {"file": "libraries/base/GHC/Weak.hs" 83 | ,"start-line": 146 84 | ,"start-col": 1 85 | ,"end-line": 156 86 | ,"end-col": 13}} 87 | ,{"id": {"package": "base" 88 | ,"module": "GHC.Weak" 89 | ,"name": "finalize"} 90 | ,"refs": [{"package": "ghc-prim" 91 | ,"module": "GHC.Types" 92 | ,"name": "IO"} 93 | ,{"package": "base" 94 | ,"module": "GHC.Base" 95 | ,"name": "$"} 96 | ,{"package": "ghc-prim" 97 | ,"module": "GHC.Prim" 98 | ,"name": "finalizeWeak#"} 99 | ,{"package": "base" 100 | ,"module": "GHC.Weak" 101 | ,"name": "w"} 102 | ,{"package": "base" 103 | ,"module": "GHC.Weak" 104 | ,"name": "s"} 105 | ,{"package": "base" 106 | ,"module": "GHC.Weak" 107 | ,"name": "s1"} 108 | ,{"package": "ghc-prim" 109 | ,"module": "GHC.Tuple" 110 | ,"name": "()"} 111 | ,{"package": "base" 112 | ,"module": "GHC.Weak" 113 | ,"name": "f"} 114 | ,{"package": "base" 115 | ,"module": "GHC.Weak" 116 | ,"name": "s1"}] 117 | ,"src-span": {"file": "libraries/base/GHC/Weak.hs" 118 | ,"start-line": 126 119 | ,"start-col": 1 120 | ,"end-line": 129 121 | ,"end-col": 32}} 122 | ,{"id": {"package": "base" 123 | ,"module": "GHC.Weak" 124 | ,"name": "deRefWeak"} 125 | ,"refs": [{"package": "ghc-prim" 126 | ,"module": "GHC.Types" 127 | ,"name": "IO"} 128 | ,{"package": "base" 129 | ,"module": "GHC.Base" 130 | ,"name": "$"} 131 | ,{"package": "ghc-prim" 132 | ,"module": "GHC.Prim" 133 | ,"name": "deRefWeak#"} 134 | ,{"package": "base" 135 | ,"module": "GHC.Weak" 136 | ,"name": "w"} 137 | ,{"package": "base" 138 | ,"module": "GHC.Weak" 139 | ,"name": "s"} 140 | ,{"package": "base" 141 | ,"module": "GHC.Weak" 142 | ,"name": "flag"} 143 | ,{"package": "base" 144 | ,"module": "GHC.Weak" 145 | ,"name": "s1"} 146 | ,{"package": "base" 147 | ,"module": "GHC.Base" 148 | ,"name": "Nothing"} 149 | ,{"package": "base" 150 | ,"module": "GHC.Base" 151 | ,"name": "Just"} 152 | ,{"package": "base" 153 | ,"module": "GHC.Weak" 154 | ,"name": "p"}] 155 | ,"src-span": {"file": "libraries/base/GHC/Weak.hs" 156 | ,"start-line": 117 157 | ,"start-col": 1 158 | ,"end-line": 121 159 | ,"end-col": 55}} 160 | ,{"id": {"package": "base" 161 | ,"module": "GHC.Weak" 162 | ,"name": "mkWeak"} 163 | ,"refs": [{"package": "ghc-prim" 164 | ,"module": "GHC.Types" 165 | ,"name": "IO"} 166 | ,{"package": "base" 167 | ,"module": "GHC.Base" 168 | ,"name": "$"} 169 | ,{"package": "ghc-prim" 170 | ,"module": "GHC.Prim" 171 | ,"name": "mkWeak#"} 172 | ,{"package": "base" 173 | ,"module": "GHC.Weak" 174 | ,"name": "key"} 175 | ,{"package": "base" 176 | ,"module": "GHC.Weak" 177 | ,"name": "val"} 178 | ,{"package": "base" 179 | ,"module": "GHC.Weak" 180 | ,"name": "finalizer"} 181 | ,{"package": "base" 182 | ,"module": "GHC.Weak" 183 | ,"name": "s"} 184 | ,{"package": "base" 185 | ,"module": "GHC.Weak" 186 | ,"name": "s1"} 187 | ,{"package": "base" 188 | ,"module": "GHC.Weak" 189 | ,"name": "Weak"} 190 | ,{"package": "base" 191 | ,"module": "GHC.Weak" 192 | ,"name": "w"} 193 | ,{"package": "base" 194 | ,"module": "GHC.Base" 195 | ,"name": "$"} 196 | ,{"package": "ghc-prim" 197 | ,"module": "GHC.Prim" 198 | ,"name": "mkWeakNoFinalizer#"} 199 | ,{"package": "base" 200 | ,"module": "GHC.Weak" 201 | ,"name": "key"} 202 | ,{"package": "base" 203 | ,"module": "GHC.Weak" 204 | ,"name": "val"} 205 | ,{"package": "base" 206 | ,"module": "GHC.Weak" 207 | ,"name": "s"} 208 | ,{"package": "base" 209 | ,"module": "GHC.Weak" 210 | ,"name": "s1"} 211 | ,{"package": "base" 212 | ,"module": "GHC.Weak" 213 | ,"name": "w"}] 214 | ,"src-span": {"file": "libraries/base/GHC/Weak.hs" 215 | ,"start-line": 103 216 | ,"start-col": 1 217 | ,"end-line": 106 218 | ,"end-col": 76}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_Unsafe.Coerce.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "Unsafe.Coerce" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]} 10 | ,{"id": {"package": "base" 11 | ,"module": "Unsafe.Coerce" 12 | ,"name": "local_id"} 13 | ,"refs": [{"package": "base" 14 | ,"module": "Unsafe.Coerce" 15 | ,"name": "x"}] 16 | ,"src-span": {"file": "libraries/base/Unsafe/Coerce.hs" 17 | ,"start-line": 38 18 | ,"start-col": 1 19 | ,"end-line": 38 20 | ,"end-col": 15}} 21 | ,{"id": {"package": "base" 22 | ,"module": "Unsafe.Coerce" 23 | ,"name": "unsafeCoerce"} 24 | ,"refs": [{"package": "base" 25 | ,"module": "Unsafe.Coerce" 26 | ,"name": "local_id"} 27 | ,{"package": "ghc-prim" 28 | ,"module": "GHC.Prim" 29 | ,"name": "unsafeCoerce#"} 30 | ,{"package": "base" 31 | ,"module": "Unsafe.Coerce" 32 | ,"name": "x"}] 33 | ,"src-span": {"file": "libraries/base/Unsafe/Coerce.hs" 34 | ,"start-line": 59 35 | ,"start-col": 1 36 | ,"end-line": 59 37 | ,"end-col": 44}}] -------------------------------------------------------------------------------- /sift-bindings/base-4.9.0.0/bindings_base_XPrelude.json: -------------------------------------------------------------------------------- 1 | [{"id": {"package": "base" 2 | ,"module": "XPrelude" 3 | ,"name": "$trModule"} 4 | ,"refs": [{"package": "ghc-prim" 5 | ,"module": "GHC.Types" 6 | ,"name": "Module"} 7 | ,{"package": "ghc-prim" 8 | ,"module": "GHC.Types" 9 | ,"name": "TrNameS"}]}] -------------------------------------------------------------------------------- /sift-compiler/.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | cabal-dev 3 | *.o 4 | *.hi 5 | *.chi 6 | *.chs.h 7 | *.dyn_o 8 | *.dyn_hi 9 | .hpc 10 | .hsenv 11 | .cabal-sandbox/ 12 | cabal.sandbox.config 13 | *.prof 14 | *.aux 15 | *.hp 16 | .stack-work/ 17 | *.elc 18 | -------------------------------------------------------------------------------- /sift-compiler/Setup.hs: -------------------------------------------------------------------------------- 1 | import Distribution.Simple 2 | main = defaultMain 3 | -------------------------------------------------------------------------------- /sift-compiler/cbits/HsVersions.h: -------------------------------------------------------------------------------- 1 | /* Hack needed because of http://hackage.haskell.org/trac/ghc/ticket/8040 */ 2 | 3 | #define ASSERT(e) if debugIsOn && not (e) then (assertPanic __FILE__ __LINE__) else 4 | 5 | #define GLOBAL_VAR(name,value,ty) \ 6 | {-# NOINLINE name #-}; \ 7 | name :: IORef (ty); \ 8 | name = Util.global (value); 9 | -------------------------------------------------------------------------------- /sift-compiler/cbits/PosixSource.h: -------------------------------------------------------------------------------- 1 | /* ----------------------------------------------------------------------------- 2 | * 3 | * (c) The GHC Team, 1998-2005 4 | * 5 | * Include this file into sources which should not need any non-Posix services. 6 | * That includes most RTS C sources. 7 | * ---------------------------------------------------------------------------*/ 8 | 9 | #ifndef POSIXSOURCE_H 10 | #define POSIXSOURCE_H 11 | 12 | #include 13 | 14 | #if defined(freebsd_HOST_OS) || defined(dragonfly_HOST_OS) 15 | #define _POSIX_C_SOURCE 200112L 16 | #define _XOPEN_SOURCE 600 17 | #else 18 | #define _POSIX_SOURCE 1 19 | #define _POSIX_C_SOURCE 199506L 20 | #define _XOPEN_SOURCE 500 21 | // FreeBSD takes a different approach to _ISOC99_SOURCE: on FreeBSD it 22 | // means "I want *just* C99 things", whereas on GNU libc and Solaris 23 | // it means "I also want C99 things". 24 | // 25 | // On both GNU libc and FreeBSD, _ISOC99_SOURCE is implied by 26 | // _XOPEN_SOURCE==600, but on Solaris it is an error to omit it. 27 | #define _ISOC99_SOURCE 28 | // Defining __USE_MINGW_ANSI_STDIO is the most portable way to tell 29 | // mingw that we want to use the standard %lld style format specifiers, 30 | // rather than the Windows %I64d style 31 | #define __USE_MINGW_ANSI_STDIO 1 32 | #endif 33 | 34 | #if defined(darwin_HOST_OS) 35 | /* If we don't define this the including sysctl breaks with things like 36 | /usr/include/bsm/audit.h:224:0: 37 | error: syntax error before 'u_char' 38 | */ 39 | #define _DARWIN_C_SOURCE 1 40 | #endif 41 | 42 | #endif /* POSIXSOURCE_H */ 43 | -------------------------------------------------------------------------------- /sift-compiler/cbits/hschooks.c: -------------------------------------------------------------------------------- 1 | /* 2 | These routines customise the error messages 3 | for various bits of the RTS. They are linked 4 | in instead of the defaults. 5 | */ 6 | 7 | #include "PosixSource.h" 8 | #include "Rts.h" 9 | 10 | #include "HsFFI.h" 11 | 12 | #include 13 | 14 | #ifdef HAVE_UNISTD_H 15 | #include 16 | #endif 17 | 18 | void 19 | initGCStatistics(void) 20 | { 21 | /* Workaround for #8754: if the GC stats aren't enabled because the 22 | compiler couldn't use -Bsymbolic to link the default hooks, then 23 | initialize them sensibly. See Note [-Bsymbolic and hooks] in 24 | Main.hs. */ 25 | if (RtsFlags.GcFlags.giveStats == NO_GC_STATS) { 26 | RtsFlags.GcFlags.giveStats = COLLECT_GC_STATS; 27 | } 28 | } 29 | 30 | void 31 | defaultsHook (void) 32 | { 33 | #if __GLASGOW_HASKELL__ >= 707 && __GLASGOW_HASKELL__ < 802 34 | // This helps particularly with large compiles, but didn't work 35 | // very well with earlier GHCs because it caused large amounts of 36 | // fragmentation. See rts/sm/BlockAlloc.c:allocLargeChunk(). 37 | RtsFlags.GcFlags.heapSizeSuggestionAuto = rtsTrue; 38 | #else 39 | RtsFlags.GcFlags.heapSizeSuggestion = 6*1024*1024 / BLOCK_SIZE; 40 | #endif 41 | 42 | RtsFlags.GcFlags.maxStkSize = 512*1024*1024 / sizeof(W_); 43 | 44 | initGCStatistics(); 45 | 46 | // See #3408: the default idle GC time of 0.3s is too short on 47 | // Windows where we receive console events once per second or so. 48 | #if __GLASGOW_HASKELL__ >= 703 49 | RtsFlags.GcFlags.idleGCDelayTime = SecondsToTime(5); 50 | #else 51 | RtsFlags.GcFlags.idleGCDelayTime = 5*1000; 52 | #endif 53 | } 54 | 55 | void 56 | StackOverflowHook (StgWord stack_size) /* in bytes */ 57 | { 58 | fprintf(stderr, "GHC stack-space overflow: current limit is %zu bytes.\nUse the `-K' option to increase it.\n", (size_t)stack_size); 59 | } 60 | -------------------------------------------------------------------------------- /sift-compiler/sift-compiler.cabal: -------------------------------------------------------------------------------- 1 | name: 2 | sift-compiler 3 | version: 4 | 0.0.0 5 | synopsis: 6 | Complete interactive development program for Haskell 7 | license: 8 | BSD3 9 | homepage: 10 | https://github.com/commercialhaskell/sift 11 | author: 12 | Chris Done, The University of Glasgow 13 | maintainer: 14 | chrisdone@gmail.com 15 | copyright: 16 | 2018 Chris Done, 17 | 2012 Kazu Yamamoto, 18 | 2008 Claus Reinke, 19 | 2005 The University of Glasgow 20 | category: 21 | Development 22 | build-type: 23 | Simple 24 | cabal-version: 25 | >= 1.14 26 | stability: 27 | Stable 28 | extra-source-files: 29 | cbits/HsVersions.h 30 | cbits/PosixSource.h 31 | source-repository head 32 | type: 33 | git 34 | location: 35 | git://github.com/fpco/sift.git 36 | 37 | executable sift-compiler 38 | default-language: 39 | Haskell2010 40 | main-is: 41 | Main.hs 42 | ghc-options: 43 | -Wall -O2 -threaded -rtsopts 44 | include-dirs: 45 | cbits/ 46 | hs-source-dirs: 47 | src/ 48 | c-sources: 49 | cbits/hschooks.c 50 | cpp-options: 51 | -DGHCI 52 | cc-options: 53 | -fPIC 54 | other-modules: 55 | InteractiveUI 56 | GhciMonad 57 | Sift.Compat 58 | Paths_sift_compiler 59 | build-depends: 60 | sift-frontend-plugin, 61 | base < 5, 62 | array, 63 | bytestring, 64 | directory, 65 | filepath, 66 | -- We permit any 8.0.1.* or 8.0.2.* or 8.2.1 67 | ghc >= 7.8 && <= 8.4.3, 68 | ghc-paths, 69 | haskeline, 70 | process, 71 | transformers, 72 | syb, 73 | containers, 74 | time, 75 | network, 76 | random, 77 | mtl 78 | 79 | if impl(ghc>=8.0.1) 80 | build-depends: 81 | ghci, 82 | ghc-boot-th 83 | 84 | if os(windows) 85 | build-depends: 86 | Win32 87 | else 88 | build-depends: 89 | unix 90 | ghc-options: 91 | -dynamic 92 | -------------------------------------------------------------------------------- /sift-compiler/src/Sift/Compat.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE CPP #-} 2 | 3 | -- | Compatibility between GHC API versions. 4 | 5 | module Sift.Compat 6 | ( ghc_getModuleGraph 7 | , ghc_getInfo 8 | , ghc_defaultDynFlags 9 | , ghc_topSortModuleGraph 10 | , ghc_mkWarn 11 | , ghc_mkErr 12 | , ghc_errMsg 13 | , ghc_warnMsg 14 | , ghc_tyConFlavour 15 | , StageReaderName 16 | , StageReaderRdrName 17 | , StageReaderId 18 | ) where 19 | 20 | #if __GLASGOW_HASKELL__ > 800 21 | import TyCoRep 22 | #endif 23 | import TyCon 24 | #if __GLASGOW_HASKELL__ > 802 25 | import CmdLineParser 26 | #endif 27 | #if __GLASGOW_HASKELL__ >= 800 28 | import qualified Data.Graph as SCC 29 | #else 30 | import qualified Digraph as SCC 31 | #endif 32 | import DynFlags 33 | import GHC 34 | 35 | ghc_tyConFlavour :: TyCon -> String 36 | #if __GLASGOW_HASKELL__ > 802 37 | ghc_tyConFlavour n = 38 | if tyConFlavour n == ClassFlavour 39 | then "class" 40 | else "" 41 | #else 42 | #if __GLASGOW_HASKELL__ > 800 43 | ghc_tyConFlavour = tyConFlavour 44 | #else 45 | ghc_tyConFlavour _ = "" 46 | #endif 47 | #endif 48 | 49 | ghc_defaultDynFlags :: Settings -> DynFlags 50 | #if __GLASGOW_HASKELL__ <= 802 51 | ghc_defaultDynFlags = defaultDynFlags 52 | #else 53 | ghc_defaultDynFlags s = defaultDynFlags s [] 54 | #endif 55 | 56 | ghc_getInfo :: GhcMonad m => Bool -> Name -> m (Maybe (TyThing, Fixity, [ClsInst], [FamInst])) 57 | #if __GLASGOW_HASKELL__ <= 802 58 | ghc_getInfo = getInfo 59 | #else 60 | ghc_getInfo x y = fmap (fmap (\(a,b,c,d,_) -> (a,b,c,d))) (getInfo x y) 61 | #endif 62 | 63 | ghc_getModuleGraph :: GhcMonad m => m [ModSummary] 64 | #if __GLASGOW_HASKELL__ <= 802 65 | ghc_getModuleGraph = GHC.getModuleGraph 66 | #else 67 | ghc_getModuleGraph = fmap mgModSummaries GHC.getModuleGraph 68 | #endif 69 | 70 | ghc_topSortModuleGraph :: Bool -> [ModSummary] -> Maybe ModuleName -> [SCC.SCC ModSummary] 71 | #if __GLASGOW_HASKELL__ <= 802 72 | ghc_topSortModuleGraph = GHC.topSortModuleGraph 73 | #else 74 | ghc_topSortModuleGraph bool sums may = GHC.topSortModuleGraph bool (mkModuleGraph sums) may 75 | #endif 76 | 77 | #if __GLASGOW_HASKELL__ <= 802 78 | type StageReaderName = Name 79 | #else 80 | type StageReaderName = GhcRn 81 | #endif 82 | 83 | #if __GLASGOW_HASKELL__ <= 802 84 | type StageReaderRdrName = RdrName 85 | #else 86 | type StageReaderRdrName = GhcPs 87 | #endif 88 | 89 | #if __GLASGOW_HASKELL__ <= 802 90 | type StageReaderId = Id 91 | #else 92 | type StageReaderId = GhcTc 93 | #endif 94 | 95 | #if __GLASGOW_HASKELL__ > 802 96 | ghc_mkWarn :: Located String -> Warn 97 | ghc_mkWarn = Warn CmdLineParser.NoReason 98 | #else 99 | ghc_mkWarn :: a -> a 100 | ghc_mkWarn = id 101 | #endif 102 | 103 | #if __GLASGOW_HASKELL__ > 802 104 | ghc_mkErr :: Located String -> Err 105 | ghc_mkErr = Err 106 | #else 107 | ghc_mkErr :: a -> a 108 | ghc_mkErr = id 109 | #endif 110 | 111 | #if __GLASGOW_HASKELL__ > 802 112 | ghc_errMsg :: Err -> Located String 113 | ghc_errMsg = errMsg 114 | #else 115 | ghc_errMsg :: a -> a 116 | ghc_errMsg = id 117 | #endif 118 | 119 | #if __GLASGOW_HASKELL__ > 802 120 | ghc_warnMsg :: Warn -> Located String 121 | ghc_warnMsg = warnMsg 122 | #else 123 | ghc_warnMsg :: a -> a 124 | ghc_warnMsg = id 125 | #endif 126 | -------------------------------------------------------------------------------- /sift-frontend-plugin/.gitignore: -------------------------------------------------------------------------------- 1 | .stack-work/ 2 | sift.cabal 3 | *~ -------------------------------------------------------------------------------- /sift-frontend-plugin/ChangeLog.md: -------------------------------------------------------------------------------- 1 | # Changelog for sift 2 | 3 | ## Unreleased changes 4 | -------------------------------------------------------------------------------- /sift-frontend-plugin/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright Chris Done (c) 2018 2 | 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | 11 | * Redistributions in binary form must reproduce the above 12 | copyright notice, this list of conditions and the following 13 | disclaimer in the documentation and/or other materials provided 14 | with the distribution. 15 | 16 | * Neither the name of Author name here nor the names of other 17 | contributors may be used to endorse or promote products derived 18 | from this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | -------------------------------------------------------------------------------- /sift-frontend-plugin/README.md: -------------------------------------------------------------------------------- 1 | # sift 2 | -------------------------------------------------------------------------------- /sift-frontend-plugin/Setup.hs: -------------------------------------------------------------------------------- 1 | import Distribution.Simple 2 | main = defaultMain 3 | -------------------------------------------------------------------------------- /sift-frontend-plugin/sift-frontend-plugin.cabal: -------------------------------------------------------------------------------- 1 | name: sift-frontend-plugin 2 | version: 0.0.0 3 | description: Please see the README on GitHub at 4 | homepage: https://github.com/chrisdone/sift#readme 5 | bug-reports: https://github.com/chrisdone/sift/issues 6 | author: Chris Done 7 | maintainer: chrisdone@gmail.com 8 | copyright: 2018 Chris Done 9 | license: BSD3 10 | license-file: LICENSE 11 | build-type: Simple 12 | cabal-version: >= 1.10 13 | extra-source-files: 14 | ChangeLog.md 15 | README.md 16 | 17 | source-repository head 18 | type: git 19 | location: https://github.com/chrisdone/sift 20 | 21 | library 22 | ghc-options: -Wall 23 | exposed-modules: 24 | Sift.FrontendPlugin 25 | Sift.Types 26 | hs-source-dirs: 27 | src 28 | build-depends: 29 | base >=4.7 && <5, 30 | ghc, 31 | syb, 32 | containers, 33 | bytestring 34 | default-language: Haskell2010 35 | -------------------------------------------------------------------------------- /sift-frontend-plugin/src/Sift/FrontendPlugin.hs: -------------------------------------------------------------------------------- 1 | {-# OPTIONS_GHC -Wall #-} 2 | {-# LANGUAGE ViewPatterns #-} 3 | {-# LANGUAGE FlexibleContexts #-} 4 | {-# LANGUAGE LambdaCase #-} 5 | {-# LANGUAGE OverloadedStrings #-} 6 | 7 | -- | Frontend plugin for GHC. 8 | 9 | module Sift.FrontendPlugin 10 | ( frontendPlugin 11 | , dumpBindings 12 | , getBindings 13 | ) where 14 | 15 | import Bag 16 | import Control.Monad.IO.Class 17 | import Data.ByteString (ByteString) 18 | import qualified Data.ByteString.Char8 as S8 19 | import qualified Data.ByteString.Lazy as L 20 | import qualified Data.ByteString.Lazy.Builder as L 21 | import Data.Data 22 | import Data.Generics 23 | import Data.List 24 | import Data.Maybe 25 | import Data.Monoid 26 | import Data.Set (Set) 27 | import qualified Data.Set as Set 28 | import qualified FastString as GHC 29 | import qualified GHC 30 | import qualified GhcPlugins 31 | import qualified Id as GHC 32 | import qualified Module as GHC 33 | import qualified Name as GHC 34 | import Sift.Types 35 | 36 | frontendPlugin :: GhcPlugins.FrontendPlugin 37 | frontendPlugin = GhcPlugins.defaultFrontendPlugin { 38 | GhcPlugins.frontend = frontend 39 | } 40 | 41 | frontend :: [String] -> [(String, Maybe GHC.Phase)] -> GHC.Ghc () 42 | frontend _flags args = do 43 | targets <- mapM (uncurry GHC.guessTarget) args 44 | GHC.setTargets targets 45 | _ <- GHC.load GHC.LoadAllTargets 46 | dumpBindings id 47 | 48 | -- | Track through the module grpah. 49 | dumpBindings :: GHC.GhcMonad m => (Binding -> Binding) -> m () 50 | dumpBindings f = do 51 | mgraph <- GHC.getModuleGraph 52 | mapM_ 53 | (\modSummary -> do 54 | bs <- track (const (const mempty)) modSummary 55 | liftIO 56 | (L.writeFile 57 | (moduleToFilePath (GHC.ms_mod modSummary)) 58 | (L.toLazyByteString (buildDump (map f bs))))) 59 | mgraph 60 | 61 | -- | Track through the module grpah. 62 | getBindings :: GHC.GhcMonad m => m [Binding] 63 | getBindings = do 64 | mgraph <- GHC.getModuleGraph 65 | fmap 66 | concat 67 | (mapM (\modSummary -> track (const (const mempty)) modSummary) mgraph) 68 | 69 | buildDump :: [Binding] -> L.Builder 70 | buildDump bs = array (map buildBinding bs) 71 | 72 | buildBinding :: Binding -> L.Builder 73 | buildBinding b = 74 | object 75 | ([ ("id", buildBindingId (bindingId b)) 76 | , ("refs", array (map buildBindingId (bindingRefs b))) 77 | ] ++ 78 | [("src-span", buildSrcSpan sr) | Just sr <- [bindingSrcSpan b]]) 79 | 80 | buildSrcSpan :: Span -> L.Builder 81 | buildSrcSpan rs = 82 | object 83 | [ ("file", string (spanFile rs)) 84 | , ("start-line", int (spanStartLine rs)) 85 | , ("start-col", int (spanStartCol rs)) 86 | , ("end-line", int (spanEndLine rs)) 87 | , ("end-col", int (spanEndCol rs)) 88 | ] 89 | 90 | buildBindingId :: BindingId -> L.Builder 91 | buildBindingId b = 92 | object 93 | [ ("package", string (bindingIdPackage b)) 94 | , ("module", string (bindingIdModule b)) 95 | , ("name", string (bindingIdName b)) 96 | ] 97 | 98 | array :: [L.Builder] -> L.Builder 99 | array xs = "[" <> mconcat (intersperse "\n," xs) <> "]" 100 | 101 | object :: [(ByteString, L.Builder)] -> L.Builder 102 | object keys = 103 | "{" <> 104 | mconcat 105 | (intersperse 106 | "\n," 107 | (map (\(k, v) -> string k <> ": " <> v) keys)) <> 108 | "}" 109 | 110 | int :: Int -> L.Builder 111 | int s = L.byteString (S8.pack (show s)) 112 | 113 | string :: ByteString -> L.Builder 114 | string s = L.byteString (S8.pack (show s)) 115 | 116 | -- | Type-check the module and track through it. 117 | track :: 118 | GHC.GhcMonad m 119 | => (GHC.Module -> GHC.HsExpr GHC.Id -> Set ByteString) 120 | -> GHC.ModSummary 121 | -> m [Binding] 122 | track shouldFlag modSummary = do 123 | df <- GHC.getSessionDynFlags 124 | parsedModule <- GHC.parseModule modSummary 125 | typecheckedModule <- GHC.typecheckModule parsedModule 126 | let tc = GHC.tm_typechecked_source typecheckedModule 127 | pure (getBindingsForAll df tc) 128 | where 129 | getBindingsForAll df bag = concatMap (getBinding df) (bagToList bag) 130 | getBinding :: 131 | GHC.DynFlags -> GHC.Located (GHC.HsBindLR GHC.Id GHC.Id) -> [Binding] 132 | getBinding df located = 133 | case GHC.unLoc located of 134 | GHC.VarBind {GHC.var_id = id', GHC.var_rhs = rhs} -> 135 | [ Binding 136 | { bindingFlagged = 137 | mconcat 138 | (map 139 | (shouldFlag module') 140 | (listify (not . Set.null . shouldFlag module') rhs)) 141 | , bindingId = idToBindingId (GHC.ms_mod modSummary) id' 142 | , bindingSrcSpan = locToSpan (GHC.getLoc located) 143 | , bindingRefs = 144 | map 145 | (idToBindingId (GHC.ms_mod modSummary) . GHC.unLoc) 146 | (referencedIds id' rhs) 147 | } 148 | ] 149 | GHC.FunBind {GHC.fun_id = (GHC.unLoc -> id'), GHC.fun_matches = rhs} -> 150 | [ Binding 151 | { bindingFlagged = 152 | mconcat 153 | (map 154 | (shouldFlag module') 155 | (listify (not . Set.null . shouldFlag module') rhs)) 156 | , bindingId = idToBindingId module' id' 157 | , bindingSrcSpan = locToSpan (GHC.getLoc located) 158 | , bindingRefs = 159 | map 160 | (idToBindingId module' . GHC.unLoc) 161 | (referencedIds id' rhs) 162 | } 163 | ] 164 | GHC.AbsBinds {GHC.abs_binds = binds} -> getBindingsForAll df binds 165 | GHC.AbsBindsSig {GHC.abs_sig_bind = bind} -> getBinding df bind 166 | GHC.PatBind {GHC.pat_lhs = lhs, GHC.pat_rhs = rhs} -> 167 | [ Binding 168 | { bindingFlagged = 169 | mconcat 170 | (map 171 | (shouldFlag module') 172 | (listify (not . Set.null . shouldFlag module') rhs)) 173 | , bindingId = idToBindingId module' id' 174 | , bindingSrcSpan = locToSpan (GHC.getLoc located) 175 | , bindingRefs = 176 | map 177 | (idToBindingId module' . GHC.unLoc) 178 | (referencedIds id' rhs) 179 | } 180 | | id' <- patIds lhs] 181 | GHC.PatSynBind {} -> [] 182 | module' = (GHC.ms_mod modSummary) 183 | 184 | patIds :: GHC.LPat GHC.Id -> [GHC.Id] 185 | patIds = 186 | mapMaybe 187 | (\case 188 | GHC.VarPat l -> Just (GHC.unLoc l) 189 | _ -> Nothing) . 190 | listify (const True) 191 | 192 | -- | Get all the referenced variable IDs listed in an AST. 193 | referencedIds :: Data ast => GHC.Id -> ast -> [GHC.Located GHC.Id] 194 | referencedIds ignore = 195 | nub . 196 | mapMaybe 197 | (\case 198 | GHC.HsVar i -> Just i 199 | _ -> Nothing) . 200 | listify 201 | (\case 202 | GHC.HsVar i -> GHC.unLoc i /= ignore 203 | _ -> False) 204 | 205 | idToBindingId :: GHC.Module -> GHC.Id -> BindingId 206 | idToBindingId module0 gid = 207 | BindingId 208 | { bindingIdPackage = S8.pack packageNameVersion 209 | , bindingIdModule = S8.pack moduleNameString 210 | , bindingIdName = S8.pack nameString 211 | } 212 | where 213 | name = GHC.idName gid 214 | theOccName = GHC.nameOccName name 215 | module' = GHC.nameModule_maybe name 216 | nameString = GHC.occNameString theOccName 217 | unitId = GHC.moduleUnitId (fromMaybe module0 module') 218 | moduleName = GHC.moduleName (fromMaybe module0 module') 219 | packageNameVersion = GHC.unitIdString unitId 220 | moduleNameString = GHC.moduleNameString moduleName 221 | 222 | moduleToFilePath :: GHC.Module -> FilePath 223 | moduleToFilePath module' = "bindings_" ++ packageNameVersion ++ "_" ++ moduleNameString ++ ".json" 224 | where 225 | unitId = GHC.moduleUnitId module' 226 | moduleName = GHC.moduleName module' 227 | packageNameVersion = GHC.unitIdString unitId 228 | moduleNameString = GHC.moduleNameString moduleName 229 | 230 | locToSpan :: GHC.SrcSpan -> Maybe Span 231 | locToSpan = 232 | \case 233 | GHC.RealSrcSpan rs -> 234 | Just 235 | Span 236 | { spanFile = GHC.fastStringToByteString (GHC.srcSpanFile rs) 237 | , spanStartLine = GHC.srcSpanStartLine rs 238 | , spanStartCol = GHC.srcSpanStartCol rs 239 | , spanEndLine = GHC.srcSpanEndLine rs 240 | , spanEndCol = GHC.srcSpanEndCol rs 241 | } 242 | GHC.UnhelpfulSpan _ -> Nothing 243 | -------------------------------------------------------------------------------- /sift-frontend-plugin/src/Sift/Types.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE DeriveDataTypeable #-} 2 | -- | 3 | 4 | module Sift.Types where 5 | 6 | import Data.ByteString (ByteString) 7 | import Data.Data 8 | import Data.Function 9 | import Data.Set (Set) 10 | 11 | -- | Some binding declared top-level in a module. 12 | data Binding = Binding 13 | { bindingId :: {-# UNPACK #-}!BindingId -- ^ A unique ID for this binding. 14 | , bindingFlagged :: !(Set ByteString) -- ^ This binding was flagged by a predicate. 15 | , bindingSrcSpan :: !(Maybe Span) -- ^ Location for the binding. 16 | , bindingRefs :: ![BindingId] -- ^ Bindings that I reference. 17 | } deriving (Show, Data, Typeable) 18 | 19 | instance Eq Binding where (==) = on (==) bindingId 20 | instance Ord Binding where compare = on compare bindingId 21 | 22 | -- | Source span. 23 | data Span = Span 24 | { spanFile :: {-# UNPACK #-}!ByteString 25 | , spanStartLine :: !Int 26 | , spanStartCol :: !Int 27 | , spanEndLine :: !Int 28 | , spanEndCol :: !Int 29 | } deriving (Show, Data, Typeable) 30 | 31 | -- | ID for a binding declared in some package, in some module, with 32 | -- some name. 33 | data BindingId = BindingId 34 | { bindingIdPackage :: !ByteString 35 | , bindingIdModule :: !ByteString 36 | , bindingIdName :: !ByteString 37 | } deriving (Show, Ord, Eq, Data, Typeable) 38 | -------------------------------------------------------------------------------- /sift/.gitignore: -------------------------------------------------------------------------------- 1 | .stack-work/ 2 | *~ 3 | -------------------------------------------------------------------------------- /sift/ChangeLog.md: -------------------------------------------------------------------------------- 1 | # Changelog for sift 2 | 3 | ## Unreleased changes 4 | -------------------------------------------------------------------------------- /sift/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright Chris Done (c) 2018 2 | 3 | All rights reserved. 4 | 5 | Redistribution and use in source and binary forms, with or without 6 | modification, are permitted provided that the following conditions are met: 7 | 8 | * Redistributions of source code must retain the above copyright 9 | notice, this list of conditions and the following disclaimer. 10 | 11 | * Redistributions in binary form must reproduce the above 12 | copyright notice, this list of conditions and the following 13 | disclaimer in the documentation and/or other materials provided 14 | with the distribution. 15 | 16 | * Neither the name of Author name here nor the names of other 17 | contributors may be used to endorse or promote products derived 18 | from this software without specific prior written permission. 19 | 20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 | -------------------------------------------------------------------------------- /sift/README.md: -------------------------------------------------------------------------------- 1 | # sift 2 | -------------------------------------------------------------------------------- /sift/app/Main.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE ViewPatterns #-} 2 | {-# LANGUAGE TupleSections #-} 3 | {-# LANGUAGE BangPatterns #-} 4 | {-# LANGUAGE RecordWildCards #-} 5 | {-# LANGUAGE OverloadedStrings #-} 6 | {-# OPTIONS_GHC -Wno-deprecations -Wno-orphans #-} 7 | 8 | -- | 9 | 10 | module Main where 11 | 12 | import Control.Exception 13 | import Control.Monad 14 | import Data.Aeson 15 | import Data.ByteString (ByteString) 16 | import qualified Data.ByteString as S 17 | import qualified Data.ByteString.Char8 as S8 18 | import qualified Data.ByteString.Lazy as L 19 | import Data.Generics 20 | import Data.List 21 | import Data.Monoid 22 | import Data.OrdGraph 23 | import Data.Set (Set) 24 | import qualified Data.Set as Set 25 | import qualified Data.Text.Encoding as T 26 | import Data.Tree 27 | import qualified Data.Yaml 28 | import Options.Applicative.Simple 29 | import Paths_sift 30 | import Sift 31 | import Sift.Types 32 | 33 | data TraceOpts = TraceOpts 34 | { traceOptsPiles :: [FilePath] 35 | , traceOptsFlaggedIdents :: [BindingId] 36 | , traceOptsShowCallTrace :: Bool 37 | } 38 | 39 | data AuditOpts = AuditOpts 40 | { auditOptsPiles :: [FilePath] 41 | , auditOptsFlagFile :: FilePath 42 | , auditOptsPackage :: !(Maybe ByteString) 43 | , auditOptsShowCallTrace :: Bool 44 | } 45 | 46 | data FindOpts = FindOpts 47 | { findOptsPiles :: [FilePath] 48 | , findOptsIdent :: ByteString 49 | } 50 | 51 | instance FromJSON Binding where 52 | parseJSON b = do 53 | o <- parseJSON b 54 | bindingId <- o .: "id" 55 | bindingSrcSpan <- o .:? "src-span" 56 | bindingRefs <- o .: "refs" 57 | let bindingFlagged = mempty 58 | pure Binding {..} 59 | 60 | instance FromJSON Span where 61 | parseJSON b = do 62 | o <- parseJSON b 63 | spanFile <- fmap T.encodeUtf8 (o .: "file") 64 | spanStartLine <- (o .: "start-line") 65 | spanStartCol <- (o .: "start-col") 66 | spanEndLine <- (o .: "end-line") 67 | spanEndCol <- (o .: "end-col") 68 | pure Span {..} 69 | 70 | instance FromJSON BindingId where 71 | parseJSON b = do 72 | o <- parseJSON b 73 | bindingIdPackage <- fmap T.encodeUtf8 (o .: "package") 74 | bindingIdModule <- fmap T.encodeUtf8 (o .: "module") 75 | bindingIdName <- fmap T.encodeUtf8 (o .: "name") 76 | pure BindingId {..} 77 | 78 | main :: IO () 79 | main = do 80 | flagfile <- getDataFileName "flag.yaml" 81 | (_opts, cmd) <- 82 | simpleOptions 83 | "0.0.0" 84 | "sift" 85 | "Sift through Haskell modules" 86 | (pure ()) 87 | (do addCommand 88 | "trace" 89 | "Trace" 90 | trace 91 | (TraceOpts <$> many (strArgument (metavar "BINDINGS_FILE.json")) <*> 92 | many 93 | (option 94 | (eitherReader parseBindingId) 95 | (long "flag-binding" <> metavar "PKG:MODULE.IDENT" <> 96 | help "Flag up this binding")) <*> 97 | flag 98 | False 99 | True 100 | (help "Show call trace (output tends to be large)" <> 101 | long "call-trace")) 102 | addCommand 103 | "find" 104 | "Find" 105 | findBinding 106 | (FindOpts <$> many (strArgument (metavar "BINDINGS_FILE.json")) <*> 107 | (fmap 108 | (S8.pack) 109 | (strOption 110 | (long "ident" <> metavar "IDENT" <> 111 | help "Find this identifier as a binding")))) 112 | addCommand 113 | "audit" 114 | "Produce a report of general checks for a codebase" 115 | auditReport 116 | (AuditOpts <$> many (strArgument (metavar "BINDINGS_FILE.json")) <*> 117 | strArgument (metavar "FLAG_FILE.yaml" <> value flagfile) <*> 118 | optional (fmap S8.pack (strOption (metavar "PACKAGE_NAME" <> long "package"))) <*> 119 | flag 120 | False 121 | True 122 | (help "Show call trace (output tends to be large)" <> 123 | long "call-trace"))) 124 | cmd 125 | 126 | findBinding :: FindOpts -> IO () 127 | findBinding opts = do 128 | bindings <- readProfiles (findOptsPiles opts) 129 | mapM_ 130 | (\binding -> 131 | S.putStrLn ("Binding id: " <> prettyBindingId (binding))) 132 | (nub (listify ((== findOptsIdent opts) . bindingIdName) bindings)) 133 | 134 | trace :: TraceOpts -> IO () 135 | trace opts = do 136 | bindings0 <- readProfiles (traceOptsPiles opts) 137 | let !bindings = 138 | applyFlags 139 | (map (, "flag-binding") (traceOptsFlaggedIdents opts)) 140 | bindings0 141 | !g = graphBindings bindings 142 | flagged = flaggedVertices g 143 | mapM_ 144 | (\(fl, binding) -> do 145 | S.putStrLn ("Flagged binding: " <> prettyBindingId (bindingId binding)) 146 | let inferred = infer g fl 147 | if null inferred 148 | then S.putStrLn "[no uses]" 149 | else mapM_ 150 | (\start -> do 151 | let (_, bid, _) = ordGraphVertexToNode g start 152 | S.putStrLn (" Used by " <> prettyBindingId bid) 153 | when 154 | (traceOptsShowCallTrace opts) 155 | (putStr 156 | (unlines 157 | (map 158 | (" " ++) 159 | (["Call trace:"] ++ 160 | lines (drawForest (callTrace g start fl))))))) 161 | inferred) 162 | flagged 163 | 164 | auditReport :: AuditOpts -> IO () 165 | auditReport opts = do 166 | bindings0 <- readProfiles (auditOptsPiles opts) 167 | iffy <- 168 | do r <- Data.Yaml.decodeFileEither (auditOptsFlagFile opts) 169 | case r of 170 | Left e -> throw e 171 | Right k -> pure k 172 | let !bindings = applyFlags (map (, "flag-binding") iffy) bindings0 173 | !g = graphBindings bindings 174 | flagged = flaggedVertices g 175 | mapM_ 176 | (\(fl, binding) -> do 177 | S.putStrLn ("Flagged binding: " <> prettyBindingId (bindingId binding)) 178 | let inferred = infer g fl 179 | if null inferred 180 | then S.putStrLn "[no uses]" 181 | else mapM_ 182 | (\start -> do 183 | let (bind, bid, _) = ordGraphVertexToNode g start 184 | when 185 | (maybe 186 | True 187 | (bindingIdPackage (bindingId bind) ==) 188 | (auditOptsPackage opts)) 189 | (do S.putStrLn (" Used by " <> prettyBindingId bid) 190 | when 191 | (auditOptsShowCallTrace opts) 192 | (putStr 193 | (unlines 194 | (map 195 | (" " ++) 196 | (["Call trace:"] ++ 197 | lines (drawForest (callTrace g start fl)))))))) 198 | inferred) 199 | flagged 200 | 201 | readProfiles :: [FilePath] -> IO (Set Binding) 202 | readProfiles fps = do 203 | files <- mapM readProfile fps 204 | pure (Set.fromList (concat files)) 205 | 206 | readProfile :: FilePath -> IO [Binding] 207 | readProfile fp = do 208 | bytes <- L.readFile fp 209 | case eitherDecode bytes of 210 | Left e -> error e 211 | Right bs -> pure bs 212 | 213 | parseBindingId :: String -> Either String BindingId 214 | parseBindingId s = 215 | case words s of 216 | [pkg, m, i] -> 217 | pure (BindingId 218 | { bindingIdPackage = S8.pack pkg 219 | , bindingIdModule = S8.pack m 220 | , bindingIdName = S8.pack i 221 | }) 222 | _ -> Left "format: package module ident (e.g. base Prelude fmap)" 223 | -------------------------------------------------------------------------------- /sift/flag.yaml: -------------------------------------------------------------------------------- 1 | - package: ghc-prim 2 | module: GHC.Types 3 | name: IO 4 | - package: ghc-prim 5 | module: GHC.Prim 6 | name: raise# 7 | - package: ghc-prim 8 | module: GHC.Prim 9 | name: unsafeCoerce# 10 | -------------------------------------------------------------------------------- /sift/sift.cabal: -------------------------------------------------------------------------------- 1 | name: sift 2 | version: 0.0.0 3 | description: Please see the README on GitHub at 4 | homepage: https://github.com/chrisdone/sift#readme 5 | bug-reports: https://github.com/chrisdone/sift/issues 6 | author: Chris Done 7 | maintainer: chrisdone@gmail.com 8 | copyright: 2018 Chris Done 9 | license: BSD3 10 | license-file: LICENSE 11 | build-type: Simple 12 | cabal-version: >= 1.10 13 | extra-source-files: 14 | ChangeLog.md 15 | README.md 16 | data-files: flag.yaml 17 | 18 | source-repository head 19 | type: git 20 | location: https://github.com/chrisdone/sift 21 | 22 | library 23 | exposed-modules: Sift, Data.OrdGraph 24 | build-depends: base, sift-frontend-plugin, containers, bytestring 25 | default-language: Haskell2010 26 | ghc-options: -Wall 27 | hs-source-dirs: src 28 | 29 | executable sift 30 | main-is: Main.hs 31 | ghc-options: -Wall 32 | other-modules: 33 | Paths_sift 34 | hs-source-dirs: 35 | app 36 | build-depends: 37 | base >=4.7 && <5, 38 | sift-frontend-plugin, 39 | optparse-simple, 40 | sift, 41 | aeson, 42 | text, 43 | ghc, 44 | syb, 45 | containers, 46 | bytestring, 47 | regex-compat, 48 | parsec, 49 | yaml 50 | default-language: Haskell2010 51 | 52 | test-suite sift-test 53 | type: exitcode-stdio-1.0 54 | hs-source-dirs: test 55 | main-is: Main.hs 56 | other-modules: GHCHarness 57 | build-depends: base 58 | , hspec 59 | , sift-frontend-plugin 60 | , syb 61 | , containers 62 | , bytestring 63 | , ghc-paths 64 | , ghc 65 | , temporary 66 | , directory 67 | , sift 68 | ghc-options: -Wall -threaded -rtsopts -with-rtsopts=-N 69 | default-language: Haskell2010 70 | -------------------------------------------------------------------------------- /sift/src/Data/OrdGraph.hs: -------------------------------------------------------------------------------- 1 | -- | A graph built using lists of orderable keys. 2 | 3 | module Data.OrdGraph (ordGraph, OrdGraph(..)) where 4 | 5 | import Data.Graph 6 | 7 | -- | A graph built by a list of instances of 'Ord'. 8 | data OrdGraph key node = OrdGraph { 9 | ordGraphGraph :: !Graph, 10 | ordGraphVertexToNode :: Vertex -> (node, key, [key]), 11 | ordGraphLookupVertexByKey :: key -> Maybe Vertex 12 | } 13 | 14 | -- | Build a graph from a list of nodes uniquely identified by keys, 15 | -- with a list of keys of nodes this node should have edges to. The 16 | -- out-list may contain keys that don't correspond to nodes of the 17 | -- graph; they are ignored. 18 | ordGraph :: Ord key => [(node, key, [key])] -> OrdGraph key node 19 | ordGraph es = 20 | let (g, v2n, vbk) = graphFromEdges es 21 | in OrdGraph 22 | {ordGraphGraph = g, ordGraphVertexToNode = v2n, ordGraphLookupVertexByKey = vbk} 23 | -------------------------------------------------------------------------------- /sift/src/Sift.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE OverloadedStrings #-} 2 | 3 | -- | 4 | 5 | module Sift where 6 | 7 | import Data.ByteString (ByteString) 8 | import qualified Data.ByteString.Char8 as S8 9 | import qualified Data.Graph as Graph 10 | import Data.List 11 | import Data.Monoid 12 | import Data.Ord 13 | import Data.OrdGraph 14 | import Data.Set (Set) 15 | import qualified Data.Set as Set 16 | import Data.Tree 17 | import Sift.Types 18 | 19 | infer :: Ord k => OrdGraph k v -> Graph.Vertex -> [Graph.Vertex] 20 | infer g flagged = sortBy 21 | (comparing ((\(_, y, _) -> y) . ordGraphVertexToNode g)) 22 | (reverseDependencies g flagged) 23 | 24 | prettyBindingId :: BindingId -> ByteString 25 | prettyBindingId (BindingId pkg md name) = pkg <> ":" <> md <> "." <> name 26 | 27 | callTrace :: OrdGraph BindingId node -> Graph.Vertex -> Graph.Vertex -> [Tree [Char]] 28 | callTrace g start flagged = 29 | fmap 30 | (fmap 31 | (\v' -> 32 | let (_, bid', _) = ordGraphVertexToNode g v' 33 | in S8.unpack (prettyBindingId bid'))) 34 | (filterForest 35 | (flip (Graph.path (ordGraphGraph g)) flagged) 36 | (Graph.dfs (ordGraphGraph g) [start])) 37 | 38 | filterForest :: (t -> Bool) -> [Tree t] -> [Tree t] 39 | filterForest p xs = 40 | if null xs' 41 | then [] 42 | else filter (p . rootLabel) xs' 43 | where xs' = map (\(Node l ys) -> Node l (filterForest p ys)) xs 44 | 45 | applyFlags :: [(BindingId, ByteString)] -> Set Binding -> Set Binding 46 | applyFlags flags bs0 = 47 | foldl' 48 | (\bs (bid, flagterm) -> 49 | let binding = 50 | Binding 51 | { bindingId = bid 52 | , bindingFlagged = Set.singleton flagterm 53 | , bindingSrcSpan = Nothing 54 | , bindingRefs = [] 55 | } 56 | in if Set.member binding bs 57 | then Set.map 58 | (\ebinding -> 59 | case lookup (bindingId ebinding) flags of 60 | Nothing -> ebinding 61 | Just fl -> 62 | ebinding 63 | { bindingFlagged = 64 | Set.insert fl (bindingFlagged ebinding) 65 | }) 66 | bs 67 | else Set.insert binding bs) 68 | bs0 69 | flags 70 | 71 | -- | Graph all package bindings. 72 | graphBindings :: 73 | Set Binding 74 | -> OrdGraph BindingId Binding 75 | graphBindings bs = 76 | ordGraph (map 77 | (\binding -> (binding, bindingId binding, bindingRefs binding)) 78 | (Set.toList bs)) 79 | 80 | -- | Get the bindings that have been flagged up manually. 81 | flaggedVertices :: OrdGraph k Binding -> [(Graph.Vertex, Binding)] 82 | flaggedVertices g = 83 | filter 84 | (not . Set.null . bindingFlagged . snd) 85 | (map 86 | (\v -> 87 | (let (b, _, _) = ordGraphVertexToNode g v 88 | in (v, b))) 89 | (Graph.topSort (ordGraphGraph g))) 90 | 91 | -- | Get the reverse dependencies of this vertex. 92 | reverseDependencies :: OrdGraph k v -> Graph.Vertex -> [Graph.Vertex] 93 | reverseDependencies g v = 94 | filter (/= v) (Graph.reachable (Graph.transposeG (ordGraphGraph g)) v) 95 | -------------------------------------------------------------------------------- /sift/test/GHCHarness.hs: -------------------------------------------------------------------------------- 1 | -- | Harness for running the GHC compiler. 2 | 3 | module GHCHarness where 4 | 5 | import GHC 6 | import GHC.Paths ( libdir ) 7 | import DynFlags 8 | 9 | compileWith :: [FilePath] -> Ghc a -> IO a 10 | compileWith fps m = 11 | defaultErrorHandler defaultFatalMessager defaultFlushOut $ do 12 | runGhc (Just libdir) $ do 13 | dflags <- getSessionDynFlags 14 | _ <- setSessionDynFlags dflags 15 | targets <- mapM (\fp -> guessTarget fp Nothing) fps 16 | setTargets targets 17 | _ <- load LoadAllTargets 18 | m 19 | -------------------------------------------------------------------------------- /sift/test/Main.hs: -------------------------------------------------------------------------------- 1 | {-# LANGUAGE TupleSections #-} 2 | {-# LANGUAGE BangPatterns #-} 3 | {-# LANGUAGE OverloadedStrings #-} 4 | 5 | -- | 6 | 7 | module Main where 8 | 9 | import Control.Exception 10 | import Data.OrdGraph 11 | import qualified Data.Set as Set 12 | import qualified GHCHarness as GHC 13 | import Sift 14 | import qualified Sift.FrontendPlugin as Sift 15 | import Sift.Types 16 | import System.Directory 17 | import System.IO.Temp 18 | import Test.Hspec 19 | 20 | main :: IO () 21 | main = hspec spec 22 | 23 | spec :: SpecWith () 24 | spec = do 25 | describe 26 | "Compiling and generating bindings" 27 | (do singleFile 28 | dependentModules) 29 | describe "Tracing" 30 | traceit 31 | 32 | traceit :: SpecWith () 33 | traceit = 34 | it 35 | "Trace single module" 36 | (filesShouldTrace 37 | [ ("Foo.hs", "module Foo (foo) where foo = foo") 38 | , ("Bar.hs", "module Bar (bar) where import Foo; bar = Foo.foo") 39 | ] 40 | [BindingId 41 | { bindingIdPackage = "main" 42 | , bindingIdModule = "Foo" 43 | , bindingIdName = "foo" 44 | }] 45 | [BindingId {bindingIdPackage = "main", bindingIdModule = "Bar", bindingIdName = "bar"}]) 46 | 47 | dependentModules :: SpecWith () 48 | dependentModules = 49 | it 50 | "Dependent modules" 51 | (filesShouldBe 52 | [ ("Foo.hs", "module Foo (foo) where foo = foo") 53 | , ("Bar.hs", "module Bar (bar) where import Foo; bar = Foo.foo") 54 | ] 55 | [ Binding 56 | { bindingId = 57 | BindingId 58 | { bindingIdPackage = "main" 59 | , bindingIdModule = "Bar" 60 | , bindingIdName = "$trModule" 61 | } 62 | , bindingFlagged = mempty 63 | , bindingSrcSpan = Nothing 64 | , bindingRefs = 65 | [ BindingId 66 | { bindingIdPackage = "ghc-prim" 67 | , bindingIdModule = "GHC.Types" 68 | , bindingIdName = "Module" 69 | } 70 | , BindingId 71 | { bindingIdPackage = "ghc-prim" 72 | , bindingIdModule = "GHC.Types" 73 | , bindingIdName = "TrNameS" 74 | } 75 | ] 76 | } 77 | , Binding 78 | { bindingId = 79 | BindingId 80 | { bindingIdPackage = "main" 81 | , bindingIdModule = "Bar" 82 | , bindingIdName = "bar" 83 | } 84 | , bindingFlagged = mempty 85 | , bindingSrcSpan = 86 | Just 87 | (Span 88 | { spanFile = "Bar.hs" 89 | , spanStartLine = 1 90 | , spanStartCol = 36 91 | , spanEndLine = 1 92 | , spanEndCol = 49 93 | }) 94 | , bindingRefs = 95 | [ BindingId 96 | { bindingIdPackage = "main" 97 | , bindingIdModule = "Foo" 98 | , bindingIdName = "foo" 99 | } 100 | ] 101 | } 102 | , Binding 103 | { bindingId = 104 | BindingId 105 | { bindingIdPackage = "main" 106 | , bindingIdModule = "Foo" 107 | , bindingIdName = "$trModule" 108 | } 109 | , bindingFlagged = mempty 110 | , bindingSrcSpan = Nothing 111 | , bindingRefs = 112 | [ BindingId 113 | { bindingIdPackage = "ghc-prim" 114 | , bindingIdModule = "GHC.Types" 115 | , bindingIdName = "Module" 116 | } 117 | , BindingId 118 | { bindingIdPackage = "ghc-prim" 119 | , bindingIdModule = "GHC.Types" 120 | , bindingIdName = "TrNameS" 121 | } 122 | ] 123 | } 124 | , Binding 125 | { bindingId = 126 | BindingId 127 | { bindingIdPackage = "main" 128 | , bindingIdModule = "Foo" 129 | , bindingIdName = "foo" 130 | } 131 | , bindingFlagged = mempty 132 | , bindingSrcSpan = 133 | Just 134 | (Span 135 | { spanFile = "Foo.hs" 136 | , spanStartLine = 1 137 | , spanStartCol = 24 138 | , spanEndLine = 1 139 | , spanEndCol = 33 140 | }) 141 | , bindingRefs = [] 142 | } 143 | ]) 144 | 145 | singleFile :: SpecWith () 146 | singleFile = 147 | it 148 | "Basic single file" 149 | (filesShouldBe 150 | [("Foo.hs", "module Foo (foo) where foo = foo")] 151 | [ Binding 152 | { bindingId = 153 | BindingId 154 | { bindingIdPackage = "main" 155 | , bindingIdModule = "Foo" 156 | , bindingIdName = "$trModule" 157 | } 158 | , bindingFlagged = mempty 159 | , bindingSrcSpan = Nothing 160 | , bindingRefs = 161 | [ BindingId 162 | { bindingIdPackage = "ghc-prim" 163 | , bindingIdModule = "GHC.Types" 164 | , bindingIdName = "Module" 165 | } 166 | , BindingId 167 | { bindingIdPackage = "ghc-prim" 168 | , bindingIdModule = "GHC.Types" 169 | , bindingIdName = "TrNameS" 170 | } 171 | ] 172 | } 173 | , Binding 174 | { bindingId = 175 | BindingId 176 | { bindingIdPackage = "main" 177 | , bindingIdModule = "Foo" 178 | , bindingIdName = "foo" 179 | } 180 | , bindingFlagged = mempty 181 | , bindingSrcSpan = 182 | Just 183 | (Span 184 | { spanFile = "Foo.hs" 185 | , spanStartLine = 1 186 | , spanStartCol = 24 187 | , spanEndLine = 1 188 | , spanEndCol = 33 189 | }) 190 | , bindingRefs = [] 191 | } 192 | ]) 193 | 194 | ---------------------------------------------------------------------- 195 | -- Combinators 196 | 197 | filesShouldBe :: [(FilePath, String)] -> [Binding] -> IO () 198 | filesShouldBe files expected = do 199 | bindings <- getBindings files 200 | shouldBe bindings expected 201 | 202 | filesShouldTrace :: [(FilePath, String)] -> [BindingId] -> [BindingId] -> IO () 203 | filesShouldTrace files bids expected = do 204 | bindings0 <- getBindings files 205 | let !bindings = 206 | applyFlags (map (, "flag-binding") bids) (Set.fromList bindings0) 207 | !g = graphBindings bindings 208 | flagged = flaggedVertices g 209 | shouldBe 210 | (concatMap (map (snd3 . ordGraphVertexToNode g) . infer g . fst) flagged) 211 | expected 212 | where 213 | snd3 (_, k, _) = k 214 | 215 | getBindings :: [(FilePath, String)] -> IO [Binding] 216 | getBindings files = do 217 | pwd <- getCurrentDirectory 218 | bindings <- 219 | withTempDirectory 220 | "." 221 | "sift-temp" 222 | (\dir -> 223 | finally 224 | (do setCurrentDirectory dir 225 | mapM_ (\(name, contents) -> writeFile name contents) files 226 | GHC.compileWith (map fst files) Sift.getBindings) 227 | (do setCurrentDirectory pwd 228 | removeDirectoryRecursive dir)) 229 | pure bindings 230 | -------------------------------------------------------------------------------- /stack.yaml: -------------------------------------------------------------------------------- 1 | resolver: lts-8.13 2 | packages: 3 | - sift-frontend-plugin 4 | - sift-compiler 5 | - sift 6 | --------------------------------------------------------------------------------