mirror of
https://github.com/github/semantic.git
synced 2024-12-25 07:55:12 +03:00
Merge branch 'master' into charliesome/module-result
This commit is contained in:
commit
a3bc96834c
@ -19,6 +19,12 @@
|
|||||||
# Generalise map to fmap, ++ to <>
|
# Generalise map to fmap, ++ to <>
|
||||||
- group: {name: generalise, enabled: true}
|
- group: {name: generalise, enabled: true}
|
||||||
|
|
||||||
|
# Change the severity of the default group to warning
|
||||||
|
- warn: {group: {name: default}}
|
||||||
|
|
||||||
|
# Ignore the highly noisy module export list hint
|
||||||
|
- ignore: {name: Use module export list}
|
||||||
|
|
||||||
# Ignore some builtin hints
|
# Ignore some builtin hints
|
||||||
- ignore: {name: Use mappend}
|
- ignore: {name: Use mappend}
|
||||||
- ignore: {name: Redundant do}
|
- ignore: {name: Redundant do}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: QuickCheck
|
name: QuickCheck
|
||||||
version: 2.10.1
|
version: 2.11.3
|
||||||
summary: Automatic testing of Haskell programs
|
summary: Automatic testing of Haskell programs
|
||||||
homepage: https://github.com/nick8325/quickcheck
|
homepage: https://github.com/nick8325/quickcheck
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -34,4 +34,4 @@ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: async
|
name: async
|
||||||
version: 2.1.1.1
|
version: 2.2.1
|
||||||
summary: Run IO operations asynchronously and wait for their results
|
summary: Run IO operations asynchronously and wait for their results
|
||||||
homepage: https://github.com/simonmar/async
|
homepage: https://github.com/simonmar/async
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -35,4 +35,4 @@ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
27
.licenses/semantic/cabal/base-compat-batteries.txt
Normal file
27
.licenses/semantic/cabal/base-compat-batteries.txt
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
---
|
||||||
|
type: cabal
|
||||||
|
name: base-compat-batteries
|
||||||
|
version: 0.10.1
|
||||||
|
summary: base-compat with extra batteries
|
||||||
|
homepage:
|
||||||
|
license: mit
|
||||||
|
---
|
||||||
|
Copyright (c) 2012-2018 Simon Hengel <sol@typeful.net> and Ryan Scott <ryan.gl.scott@gmail.com>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
@ -1,12 +1,12 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: base-compat
|
name: base-compat
|
||||||
version: 0.9.3
|
version: 0.10.4
|
||||||
summary: A compatibility layer for base
|
summary: A compatibility layer for base
|
||||||
homepage: https://github.com/haskell-compat/base-compat
|
homepage:
|
||||||
license: mit
|
license: mit
|
||||||
---
|
---
|
||||||
Copyright (c) 2012-2017 Simon Hengel <sol@typeful.net> and Ryan Scott <ryan.gl.scott@gmail.com>
|
Copyright (c) 2012-2018 Simon Hengel <sol@typeful.net> and Ryan Scott <ryan.gl.scott@gmail.com>
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
@ -24,4 +24,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
THE SOFTWARE.
|
THE SOFTWARE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: base-prelude
|
name: base-prelude
|
||||||
version: 1.2.1
|
version: '1.3'
|
||||||
summary: The most complete prelude formed solely from the "base" package
|
summary: The most complete prelude formed solely from the "base" package
|
||||||
homepage: https://github.com/nikita-volkov/base-prelude
|
homepage: https://github.com/nikita-volkov/base-prelude
|
||||||
license: mit
|
license: mit
|
||||||
@ -27,4 +27,4 @@ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|||||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||||
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
||||||
OTHER DEALINGS IN THE SOFTWARE.
|
OTHER DEALINGS IN THE SOFTWARE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: base
|
name: base
|
||||||
version: 4.10.1.0
|
version: 4.11.1.0
|
||||||
summary: Basic libraries
|
summary: Basic libraries
|
||||||
homepage:
|
homepage:
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -88,4 +88,4 @@ the following license:
|
|||||||
version is clearly presented as such, and that it does not claim to
|
version is clearly presented as such, and that it does not claim to
|
||||||
be a definition of the Haskell 98 Foreign Function Interface.
|
be a definition of the Haskell 98 Foreign Function Interface.
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: bifunctors
|
name: bifunctors
|
||||||
version: 5.5.2
|
version: 5.5.3
|
||||||
summary: Bifunctors
|
summary: Bifunctors
|
||||||
homepage: https://github.com/ekmett/bifunctors/
|
homepage: https://github.com/ekmett/bifunctors/
|
||||||
license: bsd-2-clause
|
license: bsd-2-clause
|
||||||
@ -31,4 +31,4 @@ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: cmark-gfm
|
name: cmark-gfm
|
||||||
version: 0.1.3
|
version: 0.1.4
|
||||||
summary: Fast, accurate GitHub Flavored Markdown parser and renderer
|
summary: Fast, accurate GitHub Flavored Markdown parser and renderer
|
||||||
homepage: https://github.com/kivikakk/cmark-gfm-hs
|
homepage: https://github.com/kivikakk/cmark-gfm-hs
|
||||||
license: multiple
|
license: multiple
|
||||||
@ -141,4 +141,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||||
DEALINGS IN THE SOFTWARE.
|
DEALINGS IN THE SOFTWARE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: comonad
|
name: comonad
|
||||||
version: 5.0.3
|
version: 5.0.4
|
||||||
summary: Comonads
|
summary: Comonads
|
||||||
homepage: https://github.com/ekmett/comonad/
|
homepage: https://github.com/ekmett/comonad/
|
||||||
license: bsd-2-clause
|
license: bsd-2-clause
|
||||||
@ -32,4 +32,4 @@ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
POSSIBILITY OF SUCH DAMAGE.
|
@ -1,9 +1,9 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: containers
|
name: containers
|
||||||
version: 0.5.10.2
|
version: 0.5.11.0
|
||||||
summary: Assorted concrete container types
|
summary: Assorted concrete container types
|
||||||
homepage: https://github.com/haskell/containers
|
homepage:
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
---
|
---
|
||||||
The Glasgow Haskell Compiler License
|
The Glasgow Haskell Compiler License
|
||||||
@ -36,4 +36,4 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||||
DAMAGE.
|
DAMAGE.
|
@ -1,13 +1,13 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: directory
|
name: directory
|
||||||
version: 1.3.0.2
|
version: 1.3.1.5
|
||||||
summary: Platform-agnostic library for filesystem operations
|
summary: Platform-agnostic library for filesystem operations
|
||||||
homepage: https://github.com/haskell/directory
|
homepage:
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
---
|
---
|
||||||
This library (libraries/base) is derived from code from two
|
This library (libraries/base) is derived from code from two
|
||||||
sources:
|
sources:
|
||||||
|
|
||||||
* Code from the GHC project which is largely (c) The University of
|
* Code from the GHC project which is largely (c) The University of
|
||||||
Glasgow, and distributable under a BSD-style license (see below),
|
Glasgow, and distributable under a BSD-style license (see below),
|
||||||
@ -23,7 +23,7 @@ licenses are BSD-style or compatible.
|
|||||||
|
|
||||||
The Glasgow Haskell Compiler License
|
The Glasgow Haskell Compiler License
|
||||||
|
|
||||||
Copyright 2004, The University Court of the University of Glasgow.
|
Copyright 2004, The University Court of the University of Glasgow.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
@ -31,14 +31,14 @@ modification, are permitted provided that the following conditions are met:
|
|||||||
|
|
||||||
- Redistributions of source code must retain the above copyright notice,
|
- Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions and the following disclaimer.
|
this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
- Redistributions in binary form must reproduce the above copyright notice,
|
- Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions and the following disclaimer in the documentation
|
this list of conditions and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
- Neither name of the University nor the names of its contributors may be
|
- Neither name of the University nor the names of its contributors may be
|
||||||
used to endorse or promote products derived from this software without
|
used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
|
THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
|
||||||
GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||||
@ -68,4 +68,4 @@ Haskell 98", is distributed under the following license:
|
|||||||
version is clearly presented as such, and that it does not claim to
|
version is clearly presented as such, and that it does not claim to
|
||||||
be a definition of the Haskell 98 Language.
|
be a definition of the Haskell 98 Language.
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: exceptions
|
name: exceptions
|
||||||
version: 0.8.3
|
version: 0.10.0
|
||||||
summary: Extensible optionally-pure exceptions
|
summary: Extensible optionally-pure exceptions
|
||||||
homepage: https://github.com/ekmett/exceptions/
|
homepage: https://github.com/ekmett/exceptions/
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -36,4 +36,4 @@ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
POSSIBILITY OF SUCH DAMAGE.
|
@ -1,38 +0,0 @@
|
|||||||
---
|
|
||||||
type: cabal
|
|
||||||
name: fail
|
|
||||||
version: 4.9.0.0
|
|
||||||
summary: Forward-compatible MonadFail class
|
|
||||||
homepage: https://prime.haskell.org/wiki/Libraries/Proposals/MonadFail
|
|
||||||
license: bsd-3-clause
|
|
||||||
---
|
|
||||||
Copyright (c) 2015, David Luposchainsky & Herbert Valerio Riedel
|
|
||||||
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
* Redistributions of source code must retain the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
* Redistributions in binary form must reproduce the above
|
|
||||||
copyright notice, this list of conditions and the following
|
|
||||||
disclaimer in the documentation and/or other materials provided
|
|
||||||
with the distribution.
|
|
||||||
|
|
||||||
* Neither the name of Herbert Valerio Riedel nor the names of other
|
|
||||||
contributors may be used to endorse or promote products derived
|
|
||||||
from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@ -1,12 +1,12 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: filepath
|
name: filepath
|
||||||
version: 1.4.1.2
|
version: 1.4.2
|
||||||
summary: Library for manipulating FilePaths in a cross platform way.
|
summary: Library for manipulating FilePaths in a cross platform way.
|
||||||
homepage: https://github.com/haskell/filepath
|
homepage: https://github.com/haskell/filepath
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
---
|
---
|
||||||
Copyright Neil Mitchell 2005-2017.
|
Copyright Neil Mitchell 2005-2018.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
@ -35,4 +35,4 @@ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: foldl
|
name: foldl
|
||||||
version: 1.3.7
|
version: 1.4.2
|
||||||
summary: Composable, streaming, and efficient left folds
|
summary: Composable, streaming, and efficient left folds
|
||||||
homepage:
|
homepage:
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -29,4 +29,4 @@ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: ghc-boot-th
|
name: ghc-boot-th
|
||||||
version: 8.2.2
|
version: 8.4.3
|
||||||
summary: Shared functionality between GHC and the @template-haskell@
|
summary: Shared functionality between GHC and the @template-haskell@
|
||||||
homepage:
|
homepage:
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -36,4 +36,4 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||||
DAMAGE.
|
DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: ghc-boot
|
name: ghc-boot
|
||||||
version: 8.2.2
|
version: 8.4.3
|
||||||
summary: Shared functionality between GHC and its boot libraries
|
summary: Shared functionality between GHC and its boot libraries
|
||||||
homepage:
|
homepage:
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -36,4 +36,4 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||||
DAMAGE.
|
DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: ghc-prim
|
name: ghc-prim
|
||||||
version: 0.5.1.1
|
version: 0.5.2.0
|
||||||
summary: GHC primitives
|
summary: GHC primitives
|
||||||
homepage:
|
homepage:
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -66,5 +66,4 @@ Haskell 98", is distributed under the following license:
|
|||||||
including this Notice. Modified versions of this Report may also be
|
including this Notice. Modified versions of this Report may also be
|
||||||
copied and distributed for any purpose, provided that the modified
|
copied and distributed for any purpose, provided that the modified
|
||||||
version is clearly presented as such, and that it does not claim to
|
version is clearly presented as such, and that it does not claim to
|
||||||
be a definition of the Haskell 98 Language.
|
be a definition of the Haskell 98 Language.
|
||||||
|
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: ghc-tcplugins-extra
|
name: ghc-tcplugins-extra
|
||||||
version: 0.2.5
|
version: '0.3'
|
||||||
summary: Utilities for writing GHC type-checker plugins
|
summary: Utilities for writing GHC type-checker plugins
|
||||||
homepage: https://github.com/clash-lang/ghc-tcplugins-extra
|
homepage: https://github.com/clash-lang/ghc-tcplugins-extra
|
||||||
license: bsd-2-clause
|
license: bsd-2-clause
|
||||||
@ -32,4 +32,4 @@ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: ghc-typelits-extra
|
name: ghc-typelits-extra
|
||||||
version: 0.2.4
|
version: 0.2.5
|
||||||
summary: Additional type-level operations on GHC.TypeLits.Nat
|
summary: Additional type-level operations on GHC.TypeLits.Nat
|
||||||
homepage: https://www.clash-lang.org/
|
homepage: https://www.clash-lang.org/
|
||||||
license: bsd-2-clause
|
license: bsd-2-clause
|
||||||
@ -32,4 +32,4 @@ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: ghc-typelits-knownnat
|
name: ghc-typelits-knownnat
|
||||||
version: 0.4.2
|
version: '0.5'
|
||||||
summary: Derive KnownNat constraints from other KnownNat constraints
|
summary: Derive KnownNat constraints from other KnownNat constraints
|
||||||
homepage: https://clash-lang.org/
|
homepage: https://clash-lang.org/
|
||||||
license: bsd-2-clause
|
license: bsd-2-clause
|
||||||
@ -33,4 +33,4 @@ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: ghc-typelits-natnormalise
|
name: ghc-typelits-natnormalise
|
||||||
version: 0.5.10
|
version: 0.6.1
|
||||||
summary: GHC typechecker plugin for types of kind GHC.TypeLits.Nat
|
summary: GHC typechecker plugin for types of kind GHC.TypeLits.Nat
|
||||||
homepage: https://www.clash-lang.org/
|
homepage: https://www.clash-lang.org/
|
||||||
license: bsd-2-clause
|
license: bsd-2-clause
|
||||||
@ -32,4 +32,4 @@ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: ghc
|
name: ghc
|
||||||
version: 8.2.2
|
version: 8.4.3
|
||||||
summary: The GHC API
|
summary: The GHC API
|
||||||
homepage: https://www.haskell.org/ghc/
|
homepage: https://www.haskell.org/ghc/
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -36,4 +36,4 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||||
DAMAGE.
|
DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: ghci
|
name: ghci
|
||||||
version: 8.2.2
|
version: 8.4.3
|
||||||
summary: The library supporting GHC's interactive interpreter
|
summary: The library supporting GHC's interactive interpreter
|
||||||
homepage:
|
homepage:
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -36,4 +36,4 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||||
DAMAGE.
|
DAMAGE.
|
@ -1,41 +0,0 @@
|
|||||||
---
|
|
||||||
type: cabal
|
|
||||||
name: hoopl
|
|
||||||
version: 3.10.2.2
|
|
||||||
summary: A library to support dataflow analysis and optimization
|
|
||||||
homepage: https://github.com/haskell/hoopl
|
|
||||||
license: bsd-3-clause
|
|
||||||
---
|
|
||||||
Copyright (c) 2010, Jo<4A>o Dias, Simon Marlow, Simon Peyton Jones, and Norman Ramsey
|
|
||||||
All rights reserved.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
|
||||||
modification, are permitted provided that the following conditions are
|
|
||||||
met:
|
|
||||||
|
|
||||||
Redistributions of source code must retain the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer.
|
|
||||||
|
|
||||||
Redistributions in binary form must reproduce the above copyright
|
|
||||||
notice, this list of conditions and the following disclaimer in the
|
|
||||||
documentation and/or other materials provided with the distribution.
|
|
||||||
|
|
||||||
Neither the name of Tufts University nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived from
|
|
||||||
this software without specific prior written permission.
|
|
||||||
|
|
||||||
Neither the name of Microsoft nor the names of its
|
|
||||||
contributors may be used to endorse or promote products derived from
|
|
||||||
this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
||||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
||||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
||||||
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
||||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
||||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: http-client
|
name: http-client
|
||||||
version: 0.5.12.1
|
version: 0.5.13.1
|
||||||
summary: An HTTP client engine
|
summary: An HTTP client engine
|
||||||
homepage: https://github.com/snoyberg/http-client
|
homepage: https://github.com/snoyberg/http-client
|
||||||
license: mit
|
license: mit
|
||||||
@ -25,4 +25,4 @@ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
|||||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@ -1,9 +1,9 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: integer-gmp
|
name: integer-gmp
|
||||||
version: 1.0.1.0
|
version: 1.0.2.0
|
||||||
summary: Integer library based on GMP
|
summary: Integer library based on GMP
|
||||||
homepage:
|
homepage:
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
---
|
---
|
||||||
Copyright (c) 2014, Herbert Valerio Riedel
|
Copyright (c) 2014, Herbert Valerio Riedel
|
||||||
@ -35,4 +35,4 @@ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
31
.licenses/semantic/cabal/invariant.txt
Normal file
31
.licenses/semantic/cabal/invariant.txt
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
---
|
||||||
|
type: cabal
|
||||||
|
name: invariant
|
||||||
|
version: '0.5'
|
||||||
|
summary: Haskell98 invariant functors
|
||||||
|
homepage: https://github.com/nfrisby/invariant-functors
|
||||||
|
license: bsd-2-clause
|
||||||
|
---
|
||||||
|
Copyright (c) 2012-2017, University of Kansas
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice, this
|
||||||
|
list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||||
|
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||||
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||||
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: kan-extensions
|
name: kan-extensions
|
||||||
version: '5.1'
|
version: '5.2'
|
||||||
summary: Kan extensions, Kan lifts, the Yoneda lemma, and (co)density (co)monads
|
summary: Kan extensions, Kan lifts, the Yoneda lemma, and (co)density (co)monads
|
||||||
homepage: https://github.com/ekmett/kan-extensions/
|
homepage: https://github.com/ekmett/kan-extensions/
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -35,4 +35,4 @@ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: keys
|
name: keys
|
||||||
version: '3.12'
|
version: 3.12.1
|
||||||
summary: Keyed functors and containers
|
summary: Keyed functors and containers
|
||||||
homepage: https://github.com/ekmett/keys/
|
homepage: https://github.com/ekmett/keys/
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -35,4 +35,4 @@ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
POSSIBILITY OF SUCH DAMAGE.
|
34
.licenses/semantic/cabal/megaparsec.txt
Normal file
34
.licenses/semantic/cabal/megaparsec.txt
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
---
|
||||||
|
type: cabal
|
||||||
|
name: megaparsec
|
||||||
|
version: 6.5.0
|
||||||
|
summary: Monadic parser combinators
|
||||||
|
homepage: https://github.com/mrkkrp/megaparsec
|
||||||
|
license: bsd-2-clause
|
||||||
|
---
|
||||||
|
Copyright © 2015–2018 Megaparsec contributors<br>
|
||||||
|
Copyright © 2007 Paolo Martini<br>
|
||||||
|
Copyright © 1999–2000 Daan Leijen
|
||||||
|
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer in the documentation
|
||||||
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS
|
||||||
|
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
||||||
|
NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
||||||
|
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||||
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: mime-types
|
name: mime-types
|
||||||
version: 0.1.0.7
|
version: 0.1.0.8
|
||||||
summary: Basic mime-type handling types and functions
|
summary: Basic mime-type handling types and functions
|
||||||
homepage: https://github.com/yesodweb/wai
|
homepage: https://github.com/yesodweb/wai
|
||||||
license: mit
|
license: mit
|
||||||
@ -25,4 +25,4 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|||||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: neat-interpolation
|
name: neat-interpolation
|
||||||
version: 0.3.2.1
|
version: 0.3.2.2
|
||||||
summary: A quasiquoter for neat and simple multiline text interpolation
|
summary: A quasiquoter for neat and simple multiline text interpolation
|
||||||
homepage: https://github.com/nikita-volkov/neat-interpolation
|
homepage: https://github.com/nikita-volkov/neat-interpolation
|
||||||
license: mit
|
license: mit
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: network
|
name: network
|
||||||
version: 2.6.3.5
|
version: 2.6.3.6
|
||||||
summary: Low-level networking interface
|
summary: Low-level networking interface
|
||||||
homepage: https://github.com/haskell/network
|
homepage: https://github.com/haskell/network
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -34,4 +34,4 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||||
DAMAGE.
|
DAMAGE.
|
36
.licenses/semantic/cabal/parser-combinators.txt
Normal file
36
.licenses/semantic/cabal/parser-combinators.txt
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
---
|
||||||
|
type: cabal
|
||||||
|
name: parser-combinators
|
||||||
|
version: 1.0.0
|
||||||
|
summary: Lightweight package providing commonly useful parser combinators
|
||||||
|
homepage: https://github.com/mrkkrp/parser-combinators
|
||||||
|
license: bsd-3-clause
|
||||||
|
---
|
||||||
|
Copyright © 2017–2018 Mark Karpov
|
||||||
|
|
||||||
|
All rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
|
this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer in the
|
||||||
|
documentation and/or other materials provided with the distribution.
|
||||||
|
|
||||||
|
* Neither the name Mark Karpov nor the names of contributors may be used to
|
||||||
|
endorse or promote products derived from this software without specific
|
||||||
|
prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS “AS IS” AND ANY EXPRESS
|
||||||
|
OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||||
|
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
||||||
|
NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||||
|
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
|
||||||
|
OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||||
|
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||||
|
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||||
|
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: parsers
|
name: parsers
|
||||||
version: 0.12.8
|
version: 0.12.9
|
||||||
summary: Parsing combinators
|
summary: Parsing combinators
|
||||||
homepage: https://github.com/ekmett/parsers/
|
homepage: https://github.com/ekmett/parsers/
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -35,4 +35,4 @@ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: pretty
|
name: pretty
|
||||||
version: 1.1.3.3
|
version: 1.1.3.6
|
||||||
summary: Pretty-printing library
|
summary: Pretty-printing library
|
||||||
homepage: https://github.com/haskell/pretty
|
homepage: https://github.com/haskell/pretty
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -14,7 +14,7 @@ Glasgow, and distributable under a BSD-style license (see below).
|
|||||||
|
|
||||||
The Glasgow Haskell Compiler License
|
The Glasgow Haskell Compiler License
|
||||||
|
|
||||||
Copyright 2004, The University Court of the University of Glasgow.
|
Copyright 2004, The University Court of the University of Glasgow.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
@ -22,14 +22,14 @@ modification, are permitted provided that the following conditions are met:
|
|||||||
|
|
||||||
- Redistributions of source code must retain the above copyright notice,
|
- Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions and the following disclaimer.
|
this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
- Redistributions in binary form must reproduce the above copyright notice,
|
- Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions and the following disclaimer in the documentation
|
this list of conditions and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
- Neither name of the University nor the names of its contributors may be
|
- Neither name of the University nor the names of its contributors may be
|
||||||
used to endorse or promote products derived from this software without
|
used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
|
THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
|
||||||
GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||||
@ -44,4 +44,4 @@ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|||||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||||
DAMAGE.
|
DAMAGE.
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
@ -1,13 +1,13 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: process
|
name: process
|
||||||
version: 1.6.1.0
|
version: 1.6.3.0
|
||||||
summary: Process libraries
|
summary: Process libraries
|
||||||
homepage: https://github.com/haskell/process
|
homepage:
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
---
|
---
|
||||||
This library (libraries/process) is derived from code from two
|
This library (libraries/process) is derived from code from two
|
||||||
sources:
|
sources:
|
||||||
|
|
||||||
* Code from the GHC project which is largely (c) The University of
|
* Code from the GHC project which is largely (c) The University of
|
||||||
Glasgow, and distributable under a BSD-style license (see below),
|
Glasgow, and distributable under a BSD-style license (see below),
|
||||||
@ -23,7 +23,7 @@ licenses are BSD-style or compatible.
|
|||||||
|
|
||||||
The Glasgow Haskell Compiler License
|
The Glasgow Haskell Compiler License
|
||||||
|
|
||||||
Copyright 2004, The University Court of the University of Glasgow.
|
Copyright 2004, The University Court of the University of Glasgow.
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
@ -31,14 +31,14 @@ modification, are permitted provided that the following conditions are met:
|
|||||||
|
|
||||||
- Redistributions of source code must retain the above copyright notice,
|
- Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions and the following disclaimer.
|
this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
- Redistributions in binary form must reproduce the above copyright notice,
|
- Redistributions in binary form must reproduce the above copyright notice,
|
||||||
this list of conditions and the following disclaimer in the documentation
|
this list of conditions and the following disclaimer in the documentation
|
||||||
and/or other materials provided with the distribution.
|
and/or other materials provided with the distribution.
|
||||||
|
|
||||||
- Neither name of the University nor the names of its contributors may be
|
- Neither name of the University nor the names of its contributors may be
|
||||||
used to endorse or promote products derived from this software without
|
used to endorse or promote products derived from this software without
|
||||||
specific prior written permission.
|
specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
|
THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY COURT OF THE UNIVERSITY OF
|
||||||
GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
GLASGOW AND THE CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
|
||||||
@ -68,4 +68,4 @@ Haskell 98", is distributed under the following license:
|
|||||||
version is clearly presented as such, and that it does not claim to
|
version is clearly presented as such, and that it does not claim to
|
||||||
be a definition of the Haskell 98 Language.
|
be a definition of the Haskell 98 Language.
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: quickcheck-instances
|
name: quickcheck-instances
|
||||||
version: 0.3.16.1
|
version: 0.3.18
|
||||||
summary: Common quickcheck instances
|
summary: Common quickcheck instances
|
||||||
homepage: https://github.com/phadej/qc-instances
|
homepage: https://github.com/phadej/qc-instances
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -35,4 +35,4 @@ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: recursion-schemes
|
name: recursion-schemes
|
||||||
version: 5.0.2
|
version: 5.0.3
|
||||||
summary: Generalized bananas, lenses and barbed wire
|
summary: Generalized bananas, lenses and barbed wire
|
||||||
homepage: https://github.com/ekmett/recursion-schemes/
|
homepage: https://github.com/ekmett/recursion-schemes/
|
||||||
license: bsd-2-clause
|
license: bsd-2-clause
|
||||||
@ -31,4 +31,4 @@ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: reducers
|
name: reducers
|
||||||
version: 3.12.2
|
version: 3.12.3
|
||||||
summary: Semigroups, specialized containers and a general map/reduce framework
|
summary: Semigroups, specialized containers and a general map/reduce framework
|
||||||
homepage: https://github.com/ekmett/reducers/
|
homepage: https://github.com/ekmett/reducers/
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -35,4 +35,4 @@ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: reflection
|
name: reflection
|
||||||
version: 2.1.3
|
version: 2.1.4
|
||||||
summary: Reifies arbitrary terms into types that can be reflected back into terms
|
summary: Reifies arbitrary terms into types that can be reflected back into terms
|
||||||
homepage: https://github.com/ekmett/reflection
|
homepage: https://github.com/ekmett/reflection
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -36,4 +36,4 @@ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: semigroups
|
name: semigroups
|
||||||
version: 0.18.4
|
version: 0.18.5
|
||||||
summary: Anything that associates
|
summary: Anything that associates
|
||||||
homepage: https://github.com/ekmett/semigroups/
|
homepage: https://github.com/ekmett/semigroups/
|
||||||
license: bsd-2-clause
|
license: bsd-2-clause
|
||||||
@ -31,4 +31,4 @@ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: streaming-commons
|
name: streaming-commons
|
||||||
version: 0.1.19
|
version: 0.2.1.0
|
||||||
summary: Common lower-level functions needed by various streaming data libraries
|
summary: Common lower-level functions needed by various streaming data libraries
|
||||||
homepage: https://github.com/fpco/streaming-commons
|
homepage: https://github.com/fpco/streaming-commons
|
||||||
license: mit
|
license: mit
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: swagger2
|
name: swagger2
|
||||||
version: 2.1.6
|
version: 2.2.2
|
||||||
summary: Swagger 2.0 data model
|
summary: Swagger 2.0 data model
|
||||||
homepage: https://github.com/GetShopTV/swagger2
|
homepage: https://github.com/GetShopTV/swagger2
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -32,5 +32,4 @@ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|||||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
@ -1,12 +1,11 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: template-haskell
|
name: template-haskell
|
||||||
version: 2.12.0.0
|
version: 2.13.0.0
|
||||||
summary: Support library for Template Haskell
|
summary: Support library for Template Haskell
|
||||||
homepage:
|
homepage:
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
---
|
---
|
||||||
|
|
||||||
The Glasgow Haskell Compiler License
|
The Glasgow Haskell Compiler License
|
||||||
|
|
||||||
Copyright 2002-2007, The University Court of the University of Glasgow.
|
Copyright 2002-2007, The University Court of the University of Glasgow.
|
||||||
@ -37,4 +36,4 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||||
DAMAGE.
|
DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: temporary
|
name: temporary
|
||||||
version: 1.2.1.1
|
version: '1.3'
|
||||||
summary: Portable temporary file and directory support
|
summary: Portable temporary file and directory support
|
||||||
homepage: https://github.com/feuerbach/temporary
|
homepage: https://github.com/feuerbach/temporary
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -32,4 +32,4 @@ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
|||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
|
||||||
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||||
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: terminfo
|
name: terminfo
|
||||||
version: 0.4.1.0
|
version: 0.4.1.1
|
||||||
summary: Haskell bindings to the terminfo library.
|
summary: Haskell bindings to the terminfo library.
|
||||||
homepage: https://github.com/judah/terminfo
|
homepage: https://github.com/judah/terminfo
|
||||||
license: bsd-2-clause
|
license: bsd-2-clause
|
||||||
@ -28,4 +28,4 @@ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|||||||
SERVICES; LOSS OF USE, DATA OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
SERVICES; LOSS OF USE, DATA OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||||
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: th-abstraction
|
name: th-abstraction
|
||||||
version: 0.2.6.0
|
version: 0.2.8.0
|
||||||
summary: Nicer interface for reified information about data types
|
summary: Nicer interface for reified information about data types
|
||||||
homepage: https://github.com/glguy/th-abstraction
|
homepage: https://github.com/glguy/th-abstraction
|
||||||
license: isc
|
license: isc
|
||||||
@ -18,4 +18,4 @@ FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|||||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
|
||||||
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||||
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
|
||||||
THIS SOFTWARE.
|
THIS SOFTWARE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: transformers-base
|
name: transformers-base
|
||||||
version: 0.4.4
|
version: 0.4.5.2
|
||||||
summary: Lift computations from the bottom of a transformer stack
|
summary: Lift computations from the bottom of a transformer stack
|
||||||
homepage: https://github.com/mvv/transformers-base
|
homepage: https://github.com/mvv/transformers-base
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -9,16 +9,16 @@ license: bsd-3-clause
|
|||||||
Copyright (c) 2011, Mikhail Vorozhtsov, Bas van Dijk
|
Copyright (c) 2011, Mikhail Vorozhtsov, Bas van Dijk
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without
|
Redistribution and use in source and binary forms, with or without
|
||||||
modification, are permitted provided that the following conditions are met:
|
modification, are permitted provided that the following conditions are met:
|
||||||
|
|
||||||
- Redistributions of source code must retain the above copyright notice,
|
- Redistributions of source code must retain the above copyright notice,
|
||||||
this list of conditions and the following disclaimer.
|
this list of conditions and the following disclaimer.
|
||||||
- Redistributions in binary form must reproduce the above copyright
|
- Redistributions in binary form must reproduce the above copyright
|
||||||
notice, this list of conditions and the following disclaimer in the
|
notice, this list of conditions and the following disclaimer in the
|
||||||
documentation and/or other materials provided with the distribution.
|
documentation and/or other materials provided with the distribution.
|
||||||
- Neither the names of the copyright owners nor the names of the
|
- Neither the names of the copyright owners nor the names of the
|
||||||
contributors may be used to endorse or promote products derived
|
contributors may be used to endorse or promote products derived
|
||||||
from this software without specific prior written permission.
|
from this software without specific prior written permission.
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
@ -31,5 +31,4 @@ LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|||||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
@ -1,9 +1,8 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: transformers-compat
|
name: transformers-compat
|
||||||
version: 0.5.1.4
|
version: 0.6.2
|
||||||
summary: A small compatibility shim exposing the new types from transformers 0.3 and
|
summary: A small compatibility shim for the transformers library
|
||||||
0.4 to older Haskell platforms.
|
|
||||||
homepage: https://github.com/ekmett/transformers-compat/
|
homepage: https://github.com/ekmett/transformers-compat/
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
---
|
---
|
||||||
@ -36,4 +35,4 @@ OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|||||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
|
||||||
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
POSSIBILITY OF SUCH DAMAGE.
|
POSSIBILITY OF SUCH DAMAGE.
|
@ -1,9 +1,9 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: transformers
|
name: transformers
|
||||||
version: 0.5.2.0
|
version: 0.5.5.0
|
||||||
summary: Concrete functor and monad transformers
|
summary: Concrete functor and monad transformers
|
||||||
homepage: https://hub.darcs.net/ross/transformers
|
homepage:
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
---
|
---
|
||||||
The Glasgow Haskell Compiler License
|
The Glasgow Haskell Compiler License
|
||||||
@ -36,4 +36,4 @@ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|||||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
||||||
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
||||||
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
|
||||||
DAMAGE.
|
DAMAGE.
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
type: cabal
|
type: cabal
|
||||||
name: turtle
|
name: turtle
|
||||||
version: 1.5.8
|
version: 1.5.10
|
||||||
summary: Shell programming, Haskell-style
|
summary: Shell programming, Haskell-style
|
||||||
homepage:
|
homepage:
|
||||||
license: bsd-3-clause
|
license: bsd-3-clause
|
||||||
@ -29,4 +29,4 @@ ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -32,7 +32,7 @@ service CodeAnalysis {
|
|||||||
// Calculate an import graph for a project.
|
// Calculate an import graph for a project.
|
||||||
rpc GraphImports (ImportGraphRequest) returns (ImportGraphResponse);
|
rpc GraphImports (ImportGraphRequest) returns (ImportGraphResponse);
|
||||||
|
|
||||||
// rpc GraphCalls (CallGraphRequest) returns (CallGraphResponse);
|
rpc GraphCalls (CallGraphRequest) returns (CallGraphResponse);
|
||||||
|
|
||||||
// Check health & status of the service.
|
// Check health & status of the service.
|
||||||
rpc CheckHealth (HealthCheckRequest) returns (HealthCheckResponse);
|
rpc CheckHealth (HealthCheckRequest) returns (HealthCheckResponse);
|
||||||
@ -71,12 +71,21 @@ message SummarizeDiffResponse {
|
|||||||
repeated ParseError errors = 2;
|
repeated ParseError errors = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message CallGraphRequest {
|
||||||
|
Project project = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
message CallGraphResponse {
|
||||||
|
AdjacencyList graph = 1;
|
||||||
|
DebugInfo error_info = 2;
|
||||||
|
}
|
||||||
|
|
||||||
message ImportGraphRequest {
|
message ImportGraphRequest {
|
||||||
Project project = 1;
|
Project project = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ImportGraphResponse {
|
message ImportGraphResponse {
|
||||||
ImportGraph graph = 1;
|
AdjacencyList graph = 1;
|
||||||
DebugInfo error_info = 2;
|
DebugInfo error_info = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ message ErrorSite {
|
|||||||
SrcLoc errorLocation = 2;
|
SrcLoc errorLocation = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
message ImportGraph {
|
message AdjacencyList {
|
||||||
repeated Vertex graphVertices = 1;
|
repeated Vertex graphVertices = 1;
|
||||||
repeated Edge graphEdges = 2;
|
repeated Edge graphEdges = 2;
|
||||||
}
|
}
|
||||||
|
@ -77,7 +77,7 @@ library
|
|||||||
, Data.Functor.Both
|
, Data.Functor.Both
|
||||||
, Data.Functor.Classes.Generic
|
, Data.Functor.Classes.Generic
|
||||||
, Data.Graph
|
, Data.Graph
|
||||||
, Data.Graph.Adjacency.Import
|
, Data.Graph.Adjacency
|
||||||
, Data.Graph.Vertex
|
, Data.Graph.Vertex
|
||||||
, Data.JSON.Fields
|
, Data.JSON.Fields
|
||||||
, Data.Language
|
, Data.Language
|
||||||
@ -289,6 +289,7 @@ test-suite test
|
|||||||
, Diffing.Algorithm.RWS.Spec
|
, Diffing.Algorithm.RWS.Spec
|
||||||
, Diffing.Algorithm.SES.Spec
|
, Diffing.Algorithm.SES.Spec
|
||||||
, Diffing.Interpreter.Spec
|
, Diffing.Interpreter.Spec
|
||||||
|
, Graphing.Calls.Spec
|
||||||
, Integration.Spec
|
, Integration.Spec
|
||||||
, Matching.Go.Spec
|
, Matching.Go.Spec
|
||||||
, Numeric.Spec
|
, Numeric.Spec
|
||||||
@ -301,6 +302,7 @@ test-suite test
|
|||||||
, SpecHelpers
|
, SpecHelpers
|
||||||
, Test.Hspec.LeanCheck
|
, Test.Hspec.LeanCheck
|
||||||
build-depends: aeson
|
build-depends: aeson
|
||||||
|
, algebraic-graphs
|
||||||
, array
|
, array
|
||||||
, async
|
, async
|
||||||
, base
|
, base
|
||||||
|
@ -105,7 +105,6 @@ convergingModules recur m = do
|
|||||||
withOracle prevCache (gatherM (const ()) (recur m)))
|
withOracle prevCache (gatherM (const ()) (recur m)))
|
||||||
TermEvaluator (address =<< runTermEvaluator (maybe empty scatter (cacheLookup c cache)))
|
TermEvaluator (address =<< runTermEvaluator (maybe empty scatter (cacheLookup c cache)))
|
||||||
|
|
||||||
|
|
||||||
-- | Iterate a monadic action starting from some initial seed until the results converge.
|
-- | Iterate a monadic action starting from some initial seed until the results converge.
|
||||||
--
|
--
|
||||||
-- This applies the Kleene fixed-point theorem to finitize a monotone action. cf https://en.wikipedia.org/wiki/Kleene_fixed-point_theorem
|
-- This applies the Kleene fixed-point theorem to finitize a monotone action. cf https://en.wikipedia.org/wiki/Kleene_fixed-point_theorem
|
||||||
|
@ -49,7 +49,7 @@ graphingTerms :: ( Element Syntax.Identifier syntax
|
|||||||
, Member (Reader ModuleInfo) effects
|
, Member (Reader ModuleInfo) effects
|
||||||
, Member (Env (Hole (Located address))) effects
|
, Member (Env (Hole (Located address))) effects
|
||||||
, Member (State (Graph Vertex)) effects
|
, Member (State (Graph Vertex)) effects
|
||||||
, term ~ Term (Sum syntax) ann
|
, Base term ~ TermF (Sum syntax) ann
|
||||||
)
|
)
|
||||||
=> SubtermAlgebra (Base term) term (TermEvaluator term (Hole (Located address)) value effects a)
|
=> SubtermAlgebra (Base term) term (TermEvaluator term (Hole (Located address)) value effects a)
|
||||||
-> SubtermAlgebra (Base term) term (TermEvaluator term (Hole (Located address)) value effects a)
|
-> SubtermAlgebra (Base term) term (TermEvaluator term (Hole (Located address)) value effects a)
|
||||||
|
@ -31,8 +31,8 @@ import Prologue
|
|||||||
getEnv :: Member (Env address) effects => Evaluator address value effects (Environment address)
|
getEnv :: Member (Env address) effects => Evaluator address value effects (Environment address)
|
||||||
getEnv = send GetEnv
|
getEnv = send GetEnv
|
||||||
|
|
||||||
-- | Replace the environment.
|
-- | Replace the environment. This is only for use in Analysis.Abstract.Caching.
|
||||||
putEnv :: Member (Env address) effects => (Environment address) -> Evaluator address value effects ()
|
putEnv :: Member (Env address) effects => Environment address -> Evaluator address value effects ()
|
||||||
putEnv = send . PutEnv
|
putEnv = send . PutEnv
|
||||||
|
|
||||||
-- | Replace the environment for a computation
|
-- | Replace the environment for a computation
|
||||||
@ -66,7 +66,7 @@ bindAll = foldr ((>>) . uncurry bind) (pure ()) . Env.pairs
|
|||||||
|
|
||||||
-- | Run an action in a new local scope.
|
-- | Run an action in a new local scope.
|
||||||
locally :: forall address value effects a . Member (Env address) effects => Evaluator address value effects a -> Evaluator address value effects a
|
locally :: forall address value effects a . Member (Env address) effects => Evaluator address value effects a -> Evaluator address value effects a
|
||||||
locally = send . Locally @address . lowerEff
|
locally = send . Locally @_ @_ @address . lowerEff
|
||||||
|
|
||||||
close :: Member (Env address) effects => Set Name -> Evaluator address value effects (Environment address)
|
close :: Member (Env address) effects => Set Name -> Evaluator address value effects (Environment address)
|
||||||
close = send . Close
|
close = send . Close
|
||||||
|
@ -7,15 +7,12 @@ module Control.Abstract.Roots
|
|||||||
|
|
||||||
import Control.Abstract.Evaluator
|
import Control.Abstract.Evaluator
|
||||||
import Data.Abstract.Live
|
import Data.Abstract.Live
|
||||||
import Prologue
|
|
||||||
|
|
||||||
|
|
||||||
-- | Value types, e.g. closures, which can root a set of addresses.
|
-- | Value types, e.g. closures, which can root a set of addresses.
|
||||||
class ValueRoots address value where
|
class ValueRoots address value where
|
||||||
-- | Compute the set of addresses rooted by a given value.
|
-- | Compute the set of addresses rooted by a given value.
|
||||||
valueRoots :: value -> Live address
|
valueRoots :: value -> Live address
|
||||||
|
|
||||||
|
|
||||||
-- | Retrieve the local 'Live' set.
|
-- | Retrieve the local 'Live' set.
|
||||||
askRoots :: Member (Reader (Live address)) effects => Evaluator address value effects (Live address)
|
askRoots :: Member (Reader (Live address)) effects => Evaluator address value effects (Live address)
|
||||||
askRoots = ask
|
askRoots = ask
|
||||||
|
@ -32,6 +32,9 @@ cacheSet key value = Cache . Monoidal.insert key value . unCache
|
|||||||
cacheInsert :: Cacheable term address cell value => Configuration term address cell value -> Cached address cell value -> Cache term address cell value -> Cache term address cell value
|
cacheInsert :: Cacheable term address cell value => Configuration term address cell value -> Cached address cell value -> Cache term address cell value -> Cache term address cell value
|
||||||
cacheInsert = curry cons
|
cacheInsert = curry cons
|
||||||
|
|
||||||
|
-- | Return all 'Configuration's in the provided cache.
|
||||||
|
cacheKeys :: Cache term address cell value -> [Configuration term address cell value]
|
||||||
|
cacheKeys = Monoidal.keys . unCache
|
||||||
|
|
||||||
instance (Show term, Show address, Show (cell value), Show value) => Show (Cache term address cell value) where
|
instance (Show term, Show address, Show (cell value), Show value) => Show (Cache term address cell value) where
|
||||||
showsPrec d = showsUnaryWith showsPrec "Cache" d . map (second toList) . Monoidal.pairs . unCache
|
showsPrec d = showsUnaryWith showsPrec "Cache" d . map (second toList) . Monoidal.pairs . unCache
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
{-# LANGUAGE GeneralizedNewtypeDeriving, UndecidableInstances #-}
|
{-# LANGUAGE GeneralizedNewtypeDeriving, UndecidableInstances #-}
|
||||||
module Data.Abstract.Declarations where
|
module Data.Abstract.Declarations where
|
||||||
|
|
||||||
import Data.Abstract.FreeVariables
|
|
||||||
import Data.Abstract.Name
|
import Data.Abstract.Name
|
||||||
import Data.Sum
|
import Data.Sum
|
||||||
import Data.Term
|
import Data.Term
|
||||||
@ -12,19 +11,21 @@ class Declarations syntax where
|
|||||||
declaredName = const Nothing
|
declaredName = const Nothing
|
||||||
|
|
||||||
class Declarations1 syntax where
|
class Declarations1 syntax where
|
||||||
-- | Lift a function mapping each element to its set of free variables through a containing structure, collecting the results into a single set.
|
-- | Lift a function mapping each element to its declared name (if any) through a containing structure. This can be used to define the declared name for a composite piece of syntax in terms of the declared name of one of its components.
|
||||||
liftDeclaredName :: (a -> [Name]) -> syntax a -> Maybe Name
|
--
|
||||||
|
-- Note that not all syntax will have a declared name; in general it’s reserved for syntax where the user has provided a single, unambiguous name for whatever term is being introduced. Examples would be (non-anonymous) functions, methods, and classes; but not (generally) literals or blocks of imperative statements.
|
||||||
|
liftDeclaredName :: (a -> Maybe Name) -> syntax a -> Maybe Name
|
||||||
liftDeclaredName _ _ = Nothing
|
liftDeclaredName _ _ = Nothing
|
||||||
|
|
||||||
instance Declarations t => Declarations (Subterm t a) where
|
instance Declarations t => Declarations (Subterm t a) where
|
||||||
declaredName = declaredName . subterm
|
declaredName = declaredName . subterm
|
||||||
|
|
||||||
deriving instance (Declarations1 syntax, FreeVariables1 syntax) => Declarations (Term syntax ann)
|
deriving instance Declarations1 syntax => Declarations (Term syntax ann)
|
||||||
|
|
||||||
instance (FreeVariables recur, Declarations1 syntax) => Declarations (TermF syntax ann recur) where
|
instance (Declarations recur, Declarations1 syntax) => Declarations (TermF syntax ann recur) where
|
||||||
declaredName = liftDeclaredName freeVariables . termFOut
|
declaredName = liftDeclaredName declaredName . termFOut
|
||||||
|
|
||||||
instance (Apply Declarations1 fs) => Declarations1 (Sum fs) where
|
instance Apply Declarations1 fs => Declarations1 (Sum fs) where
|
||||||
liftDeclaredName f = apply @Declarations1 (liftDeclaredName f)
|
liftDeclaredName f = apply @Declarations1 (liftDeclaredName f)
|
||||||
|
|
||||||
instance Declarations1 []
|
instance Declarations1 []
|
||||||
|
@ -142,5 +142,8 @@ addresses = fromAddresses . map snd . flatPairs
|
|||||||
|
|
||||||
instance Lower (Environment address) where lowerBound = Environment (lowerBound :| [])
|
instance Lower (Environment address) where lowerBound = Environment (lowerBound :| [])
|
||||||
|
|
||||||
|
-- N.B. this show instance drops some information to avoid generating
|
||||||
|
-- an infinite string in certain cases. As such, two unequal
|
||||||
|
-- environments may produce equal outputs over Show.
|
||||||
instance Show address => Show (Environment address) where
|
instance Show address => Show (Environment address) where
|
||||||
showsPrec d = showsUnaryWith showsPrec "Environment" d . flatPairs
|
showsPrec d = showsUnaryWith showsPrec "Environment" d . flatPairs
|
||||||
|
@ -52,15 +52,15 @@ class (Show1 constr, Foldable constr) => Evaluatable constr where
|
|||||||
, Member (Env address) effects
|
, Member (Env address) effects
|
||||||
, Member (Exc (LoopControl address)) effects
|
, Member (Exc (LoopControl address)) effects
|
||||||
, Member (Exc (Return address)) effects
|
, Member (Exc (Return address)) effects
|
||||||
, Member Fresh effects
|
|
||||||
, Member (Modules address) effects
|
, Member (Modules address) effects
|
||||||
, Member (Reader ModuleInfo) effects
|
, Member (Reader ModuleInfo) effects
|
||||||
, Member (Reader PackageInfo) effects
|
, Member (Reader PackageInfo) effects
|
||||||
, Member (Reader Span) effects
|
, Member (Reader Span) effects
|
||||||
, Member (Resumable (EnvironmentError address)) effects
|
, Member (Resumable (EnvironmentError address)) effects
|
||||||
|
, Member (Resumable (Unspecialized value)) effects
|
||||||
, Member (Resumable EvalError) effects
|
, Member (Resumable EvalError) effects
|
||||||
, Member (Resumable ResolutionError) effects
|
, Member (Resumable ResolutionError) effects
|
||||||
, Member (Resumable (Unspecialized value)) effects
|
, Member Fresh effects
|
||||||
, Member Trace effects
|
, Member Trace effects
|
||||||
)
|
)
|
||||||
=> SubtermAlgebra constr term (Evaluator address value effects (ValueRef address))
|
=> SubtermAlgebra constr term (Evaluator address value effects (ValueRef address))
|
||||||
@ -154,24 +154,24 @@ instance HasPrelude 'PHP
|
|||||||
|
|
||||||
instance HasPrelude 'Python where
|
instance HasPrelude 'Python where
|
||||||
definePrelude _ =
|
definePrelude _ =
|
||||||
define "print" builtInPrint
|
define (name "print") builtInPrint
|
||||||
|
|
||||||
instance HasPrelude 'Ruby where
|
instance HasPrelude 'Ruby where
|
||||||
definePrelude _ = do
|
definePrelude _ = do
|
||||||
define "puts" builtInPrint
|
define (name "puts") builtInPrint
|
||||||
|
|
||||||
defineClass "Object" [] $ do
|
defineClass (name "Object") [] $ do
|
||||||
define "inspect" (lambda (const (box (string "<object>"))))
|
define (name "inspect") (lambda (const (box (string "<object>"))))
|
||||||
|
|
||||||
instance HasPrelude 'TypeScript where
|
instance HasPrelude 'TypeScript where
|
||||||
definePrelude _ =
|
definePrelude _ =
|
||||||
defineNamespace "console" $ do
|
defineNamespace (name "console") $ do
|
||||||
define "log" builtInPrint
|
define (name "log") builtInPrint
|
||||||
|
|
||||||
instance HasPrelude 'JavaScript where
|
instance HasPrelude 'JavaScript where
|
||||||
definePrelude _ = do
|
definePrelude _ = do
|
||||||
defineNamespace "console" $ do
|
defineNamespace (name "console") $ do
|
||||||
define "log" builtInPrint
|
define (name "log") builtInPrint
|
||||||
|
|
||||||
-- Postludes
|
-- Postludes
|
||||||
|
|
||||||
@ -206,7 +206,7 @@ instance HasPostlude 'JavaScript where
|
|||||||
|
|
||||||
-- | The type of error thrown when failing to evaluate a term.
|
-- | The type of error thrown when failing to evaluate a term.
|
||||||
data EvalError return where
|
data EvalError return where
|
||||||
FreeVariablesError :: [Name] -> EvalError Name
|
NoNameError :: EvalError Name
|
||||||
-- Indicates that our evaluator wasn't able to make sense of these literals.
|
-- Indicates that our evaluator wasn't able to make sense of these literals.
|
||||||
IntegerFormatError :: Text -> EvalError Integer
|
IntegerFormatError :: Text -> EvalError Integer
|
||||||
FloatFormatError :: Text -> EvalError Scientific
|
FloatFormatError :: Text -> EvalError Scientific
|
||||||
@ -218,7 +218,7 @@ deriving instance Eq (EvalError return)
|
|||||||
deriving instance Show (EvalError return)
|
deriving instance Show (EvalError return)
|
||||||
|
|
||||||
instance Eq1 EvalError where
|
instance Eq1 EvalError where
|
||||||
liftEq _ (FreeVariablesError a) (FreeVariablesError b) = a == b
|
liftEq _ NoNameError NoNameError = True
|
||||||
liftEq _ DefaultExportError DefaultExportError = True
|
liftEq _ DefaultExportError DefaultExportError = True
|
||||||
liftEq _ (ExportError a b) (ExportError c d) = (a == c) && (b == d)
|
liftEq _ (ExportError a b) (ExportError c d) = (a == c) && (b == d)
|
||||||
liftEq _ (IntegerFormatError a) (IntegerFormatError b) = a == b
|
liftEq _ (IntegerFormatError a) (IntegerFormatError b) = a == b
|
||||||
|
@ -9,7 +9,7 @@ import Prologue
|
|||||||
-- | Types which can contain unbound variables.
|
-- | Types which can contain unbound variables.
|
||||||
class FreeVariables term where
|
class FreeVariables term where
|
||||||
-- | The set of free variables in the given value.
|
-- | The set of free variables in the given value.
|
||||||
freeVariables :: term -> [Name]
|
freeVariables :: term -> Set Name
|
||||||
|
|
||||||
|
|
||||||
-- | A lifting of 'FreeVariables' to type constructors of kind @* -> *@.
|
-- | A lifting of 'FreeVariables' to type constructors of kind @* -> *@.
|
||||||
@ -17,20 +17,11 @@ class FreeVariables term where
|
|||||||
-- 'Foldable' types requiring no additional semantics to the set of free variables (e.g. types which do not bind any variables) can use (and even derive, with @-XDeriveAnyClass@) the default implementation.
|
-- 'Foldable' types requiring no additional semantics to the set of free variables (e.g. types which do not bind any variables) can use (and even derive, with @-XDeriveAnyClass@) the default implementation.
|
||||||
class FreeVariables1 syntax where
|
class FreeVariables1 syntax where
|
||||||
-- | Lift a function mapping each element to its set of free variables through a containing structure, collecting the results into a single set.
|
-- | Lift a function mapping each element to its set of free variables through a containing structure, collecting the results into a single set.
|
||||||
liftFreeVariables :: (a -> [Name]) -> syntax a -> [Name]
|
liftFreeVariables :: (a -> Set Name) -> syntax a -> Set Name
|
||||||
default liftFreeVariables :: (Foldable syntax) => (a -> [Name]) -> syntax a -> [Name]
|
default liftFreeVariables :: (Foldable syntax) => (a -> Set Name) -> syntax a -> Set Name
|
||||||
liftFreeVariables = foldMap
|
liftFreeVariables = foldMap
|
||||||
|
|
||||||
-- | Lift the 'freeVariables' method through a containing structure.
|
instance FreeVariables t => FreeVariables (Subterm t a) where
|
||||||
freeVariables1 :: (FreeVariables1 t, FreeVariables a) => t a -> [Name]
|
|
||||||
freeVariables1 = liftFreeVariables freeVariables
|
|
||||||
|
|
||||||
freeVariable :: FreeVariables term => term -> Either [Name] Name
|
|
||||||
freeVariable term = case freeVariables term of
|
|
||||||
[n] -> Right n
|
|
||||||
xs -> Left xs
|
|
||||||
|
|
||||||
instance (FreeVariables t) => FreeVariables (Subterm t a) where
|
|
||||||
freeVariables = freeVariables . subterm
|
freeVariables = freeVariables . subterm
|
||||||
|
|
||||||
deriving instance FreeVariables1 syntax => FreeVariables (Term syntax ann)
|
deriving instance FreeVariables1 syntax => FreeVariables (Term syntax ann)
|
||||||
@ -38,10 +29,10 @@ deriving instance FreeVariables1 syntax => FreeVariables (Term syntax ann)
|
|||||||
instance (FreeVariables recur, FreeVariables1 syntax) => FreeVariables (TermF syntax ann recur) where
|
instance (FreeVariables recur, FreeVariables1 syntax) => FreeVariables (TermF syntax ann recur) where
|
||||||
freeVariables = liftFreeVariables freeVariables
|
freeVariables = liftFreeVariables freeVariables
|
||||||
|
|
||||||
instance (FreeVariables1 syntax) => FreeVariables1 (TermF syntax ann) where
|
instance FreeVariables1 syntax => FreeVariables1 (TermF syntax ann) where
|
||||||
liftFreeVariables f (In _ s) = liftFreeVariables f s
|
liftFreeVariables f (In _ s) = liftFreeVariables f s
|
||||||
|
|
||||||
instance (Apply FreeVariables1 fs) => FreeVariables1 (Sum fs) where
|
instance Apply FreeVariables1 fs => FreeVariables1 (Sum fs) where
|
||||||
liftFreeVariables f = apply @FreeVariables1 (liftFreeVariables f)
|
liftFreeVariables f = apply @FreeVariables1 (liftFreeVariables f)
|
||||||
|
|
||||||
instance FreeVariables1 []
|
instance FreeVariables1 []
|
||||||
|
@ -15,7 +15,6 @@ module Data.Abstract.ModuleTable
|
|||||||
|
|
||||||
import Data.Abstract.Module
|
import Data.Abstract.Module
|
||||||
import qualified Data.Map as Map
|
import qualified Data.Map as Map
|
||||||
import Data.Semigroup
|
|
||||||
import GHC.Generics (Generic1)
|
import GHC.Generics (Generic1)
|
||||||
import Prelude hiding (lookup)
|
import Prelude hiding (lookup)
|
||||||
import Prologue
|
import Prologue
|
||||||
|
@ -15,9 +15,8 @@ import qualified Data.Char as Char
|
|||||||
import Data.Text (Text)
|
import Data.Text (Text)
|
||||||
import qualified Data.Text as Text
|
import qualified Data.Text as Text
|
||||||
import qualified Data.Text.Lazy as LT
|
import qualified Data.Text.Lazy as LT
|
||||||
import Data.String
|
|
||||||
import Prologue
|
import Prologue
|
||||||
import Proto3.Suite
|
import Proto3.Suite
|
||||||
import qualified Proto3.Wire.Decode as Decode
|
import qualified Proto3.Wire.Decode as Decode
|
||||||
import qualified Proto3.Wire.Encode as Encode
|
import qualified Proto3.Wire.Encode as Encode
|
||||||
|
|
||||||
@ -32,7 +31,7 @@ instance HasDefault Name where
|
|||||||
|
|
||||||
instance Primitive Name where
|
instance Primitive Name where
|
||||||
encodePrimitive num (Name text) = Encode.text num (LT.fromStrict text)
|
encodePrimitive num (Name text) = Encode.text num (LT.fromStrict text)
|
||||||
encodePrimitive num (I index) = Encode.int num index
|
encodePrimitive num (I index) = Encode.int num index
|
||||||
decodePrimitive = Name . LT.toStrict <$> Decode.text <|> I <$> Decode.int
|
decodePrimitive = Name . LT.toStrict <$> Decode.text <|> I <$> Decode.int
|
||||||
primType _ = Bytes
|
primType _ = Bytes
|
||||||
|
|
||||||
@ -55,9 +54,6 @@ formatName (I i) = Text.pack $ '_' : (alphabet !! a) : replicate n 'ʹ'
|
|||||||
where alphabet = ['a'..'z']
|
where alphabet = ['a'..'z']
|
||||||
(n, a) = i `divMod` length alphabet
|
(n, a) = i `divMod` length alphabet
|
||||||
|
|
||||||
instance IsString Name where
|
|
||||||
fromString = Name . Text.pack
|
|
||||||
|
|
||||||
-- $
|
-- $
|
||||||
-- >>> I 0
|
-- >>> I 0
|
||||||
-- "_a"
|
-- "_a"
|
||||||
|
@ -48,8 +48,8 @@ instance ( Member (Allocator address Abstract) effects
|
|||||||
instance ( Member (Allocator address Abstract) effects
|
instance ( Member (Allocator address Abstract) effects
|
||||||
, Member (Env address) effects
|
, Member (Env address) effects
|
||||||
, Member (Exc (Return address)) effects
|
, Member (Exc (Return address)) effects
|
||||||
, Member Fresh effects
|
|
||||||
, Member NonDet effects
|
, Member NonDet effects
|
||||||
|
, Member Fresh effects
|
||||||
)
|
)
|
||||||
=> AbstractValue address Abstract effects where
|
=> AbstractValue address Abstract effects where
|
||||||
array _ = pure Abstract
|
array _ = pure Abstract
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
module Data.Abstract.Value.Type
|
module Data.Abstract.Value.Type
|
||||||
( Type (..)
|
( Type (..)
|
||||||
, TypeError (..)
|
, TypeError (..)
|
||||||
|
, TypeMap
|
||||||
, runTypes
|
, runTypes
|
||||||
, runTypesWith
|
, runTypesWith
|
||||||
, unify
|
, unify
|
||||||
@ -108,6 +109,7 @@ runTypesWith :: ( Effectful m
|
|||||||
-> m effects a
|
-> m effects a
|
||||||
runTypesWith with = runTypeMap . runTypeErrorWith with
|
runTypesWith with = runTypeMap . runTypeErrorWith with
|
||||||
|
|
||||||
|
-- TODO: change my name?
|
||||||
newtype TypeMap = TypeMap { unTypeMap :: Map.Map TName Type }
|
newtype TypeMap = TypeMap { unTypeMap :: Map.Map TName Type }
|
||||||
|
|
||||||
emptyTypeMap :: TypeMap
|
emptyTypeMap :: TypeMap
|
||||||
|
@ -8,7 +8,6 @@ module Data.Functor.Both
|
|||||||
|
|
||||||
import Data.Bifunctor.Join as X
|
import Data.Bifunctor.Join as X
|
||||||
import Data.Functor.Classes
|
import Data.Functor.Classes
|
||||||
import Data.Semigroup
|
|
||||||
|
|
||||||
-- | A computation over both sides of a pair.
|
-- | A computation over both sides of a pair.
|
||||||
type Both = Join (,)
|
type Both = Join (,)
|
||||||
|
@ -13,7 +13,6 @@ module Data.Functor.Classes.Generic
|
|||||||
|
|
||||||
import Data.Functor.Classes
|
import Data.Functor.Classes
|
||||||
import Data.List (intersperse)
|
import Data.List (intersperse)
|
||||||
import Data.Semigroup
|
|
||||||
import GHC.Generics
|
import GHC.Generics
|
||||||
import Text.Show (showListWith)
|
import Text.Show (showListWith)
|
||||||
|
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
{-# LANGUAGE DeriveAnyClass, LambdaCase, ScopedTypeVariables #-}
|
{-# LANGUAGE DeriveAnyClass, LambdaCase, ScopedTypeVariables #-}
|
||||||
|
|
||||||
module Data.Graph.Adjacency.Import
|
module Data.Graph.Adjacency
|
||||||
( ImportGraph (..)
|
( AdjacencyList (..)
|
||||||
, Edge (..)
|
, Edge (..)
|
||||||
, Tag
|
, Tag
|
||||||
, Vertex (..)
|
, Vertex (..)
|
||||||
, VertexType (..)
|
, VertexType (..)
|
||||||
, graphToImportGraph
|
, graphToAdjacencyList
|
||||||
, importGraphToGraph
|
, importGraphToGraph
|
||||||
, tagGraph
|
, tagGraph
|
||||||
, isCoherent
|
, isCoherent
|
||||||
@ -57,7 +57,7 @@ instance PB.Primitive VertexType where
|
|||||||
(PB.Enumerated (Right r)) -> pure r
|
(PB.Enumerated (Right r)) -> pure r
|
||||||
other -> Prelude.fail ("VertexType decodeMessageField: unexpected value" <> show other)
|
other -> Prelude.fail ("VertexType decodeMessageField: unexpected value" <> show other)
|
||||||
|
|
||||||
-- | A tag used on each vertext of a 'Graph' to convert to an 'ImportGraph'.
|
-- | A tag used on each vertext of a 'Graph' to convert to an 'AdjacencyList'.
|
||||||
type Tag = Word64
|
type Tag = Word64
|
||||||
|
|
||||||
-- | A protobuf-compatible vertex type, with a unique 'Tag' identifier.
|
-- | A protobuf-compatible vertex type, with a unique 'Tag' identifier.
|
||||||
@ -73,16 +73,16 @@ data Edge = Edge { edgeFrom :: Tag, edgeTo :: Tag }
|
|||||||
deriving (Eq, Ord, Show, Generic, Hashable, PB.Named, PB.Message)
|
deriving (Eq, Ord, Show, Generic, Hashable, PB.Named, PB.Message)
|
||||||
|
|
||||||
-- | An adjacency list-representation of a graph. You generally build these by calling
|
-- | An adjacency list-representation of a graph. You generally build these by calling
|
||||||
-- 'graphToImportGraph' on an algebraic 'Graph'. This representation is less efficient and
|
-- 'graphToAdjacencyList' on an algebraic 'Graph'. This representation is less efficient and
|
||||||
-- fluent than an ordinary 'Graph', but is more amenable to serialization.
|
-- fluent than an ordinary 'Graph', but is more amenable to serialization.
|
||||||
data ImportGraph = ImportGraph
|
data AdjacencyList = AdjacencyList
|
||||||
{ graphVertices :: PB.NestedVec Vertex
|
{ graphVertices :: PB.NestedVec Vertex
|
||||||
, graphEdges :: PB.NestedVec Edge
|
, graphEdges :: PB.NestedVec Edge
|
||||||
} deriving (Eq, Ord, Show, Generic, PB.Named, PB.Message)
|
} deriving (Eq, Ord, Show, Generic, PB.Named, PB.Message)
|
||||||
|
|
||||||
-- | Convert an algebraic graph to an adjacency list.
|
-- | Convert an algebraic graph to an adjacency list.
|
||||||
graphToImportGraph :: Graph V.Vertex -> ImportGraph
|
graphToAdjacencyList :: Graph V.Vertex -> AdjacencyList
|
||||||
graphToImportGraph = taggedGraphToImportGraph . tagGraph . simplify
|
graphToAdjacencyList = taggedGraphToAdjacencyList . tagGraph . simplify
|
||||||
|
|
||||||
-- * Internal interface stuff
|
-- * Internal interface stuff
|
||||||
|
|
||||||
@ -99,8 +99,8 @@ data Acc = Acc [Vertex] (HashSet Edge)
|
|||||||
-- to build a 'Graph', avoiding inefficient vector concatenation.
|
-- to build a 'Graph', avoiding inefficient vector concatenation.
|
||||||
-- Time complexity, given V vertices and E edges, is at least O(2V + 2E + (V * E * log E)),
|
-- Time complexity, given V vertices and E edges, is at least O(2V + 2E + (V * E * log E)),
|
||||||
-- plus whatever overhead converting the graph to 'AdjacencyMap' may entail.
|
-- plus whatever overhead converting the graph to 'AdjacencyMap' may entail.
|
||||||
taggedGraphToImportGraph :: Graph (V.Vertex, Tag) -> ImportGraph
|
taggedGraphToAdjacencyList :: Graph (V.Vertex, Tag) -> AdjacencyList
|
||||||
taggedGraphToImportGraph = accumToAdj . adjMapToAccum . adjacencyMap . toGraph . simplify
|
taggedGraphToAdjacencyList = accumToAdj . adjMapToAccum . adjacencyMap . toGraph . simplify
|
||||||
where adjMapToAccum :: Map (V.Vertex, Tag) (Set (V.Vertex, Tag)) -> Acc
|
where adjMapToAccum :: Map (V.Vertex, Tag) (Set (V.Vertex, Tag)) -> Acc
|
||||||
adjMapToAccum = Map.foldlWithKey go (Acc [] mempty)
|
adjMapToAccum = Map.foldlWithKey go (Acc [] mempty)
|
||||||
|
|
||||||
@ -108,8 +108,8 @@ taggedGraphToImportGraph = accumToAdj . adjMapToAccum . adjacencyMap . toGraph .
|
|||||||
go (Acc vs es) (v, from) edges = Acc (vertexToPB v from : vs) (Set.foldr' (add . snd) es edges)
|
go (Acc vs es) (v, from) edges = Acc (vertexToPB v from : vs) (Set.foldr' (add . snd) es edges)
|
||||||
where add = HashSet.insert . Edge from
|
where add = HashSet.insert . Edge from
|
||||||
|
|
||||||
accumToAdj :: Acc -> ImportGraph
|
accumToAdj :: Acc -> AdjacencyList
|
||||||
accumToAdj (Acc vs es) = ImportGraph (fromList vs) (fromList (toList es))
|
accumToAdj (Acc vs es) = AdjacencyList (fromList vs) (fromList (toList es))
|
||||||
|
|
||||||
vertexToPB :: V.Vertex -> Tag -> Vertex
|
vertexToPB :: V.Vertex -> Tag -> Vertex
|
||||||
vertexToPB s = Vertex t (V.vertexName s) where
|
vertexToPB s = Vertex t (V.vertexName s) where
|
||||||
@ -134,10 +134,10 @@ tagGraph = unwrap . traverse go where
|
|||||||
modify' (HashMap.insert v next)
|
modify' (HashMap.insert v next)
|
||||||
pure (v, next)
|
pure (v, next)
|
||||||
|
|
||||||
-- | This is the reverse of 'graphToImportGraph'. Don't use this outside of a testing context.
|
-- | This is the reverse of 'graphToAdjacencyList'. Don't use this outside of a testing context.
|
||||||
-- N.B. @importGraphToGraph . graphToImportGraph@ is 'id', but @graphToImportGraph . importGraphToGraph@ is not.
|
-- N.B. @importGraphToGraph . graphToAdjacencyList@ is 'id', but @graphToAdjacencyList . importGraphToGraph@ is not.
|
||||||
importGraphToGraph :: ImportGraph -> Graph V.Vertex
|
importGraphToGraph :: AdjacencyList -> Graph V.Vertex
|
||||||
importGraphToGraph (ImportGraph vs es) = simplify built
|
importGraphToGraph (AdjacencyList vs es) = simplify built
|
||||||
where built = allEdges <> vertices unreferencedVertices
|
where built = allEdges <> vertices unreferencedVertices
|
||||||
|
|
||||||
allEdges :: Graph V.Vertex
|
allEdges :: Graph V.Vertex
|
||||||
@ -162,7 +162,7 @@ importGraphToGraph (ImportGraph vs es) = simplify built
|
|||||||
|
|
||||||
|
|
||||||
-- | For debugging: returns True if all edges reference a valid vertex tag.
|
-- | For debugging: returns True if all edges reference a valid vertex tag.
|
||||||
isCoherent :: ImportGraph -> Bool
|
isCoherent :: AdjacencyList -> Bool
|
||||||
isCoherent (ImportGraph vs es) = all edgeValid es where
|
isCoherent (AdjacencyList vs es) = all edgeValid es where
|
||||||
edgeValid (Edge a b) = HashSet.member a allTags && HashSet.member b allTags
|
edgeValid (Edge a b) = HashSet.member a allTags && HashSet.member b allTags
|
||||||
allTags = HashSet.fromList (toList (vertexTag <$> vs))
|
allTags = HashSet.fromList (toList (vertexTag <$> vs))
|
@ -8,6 +8,7 @@ module Data.Map.Monoidal
|
|||||||
, insert
|
, insert
|
||||||
, filterWithKey
|
, filterWithKey
|
||||||
, pairs
|
, pairs
|
||||||
|
, keys
|
||||||
, module Reducer
|
, module Reducer
|
||||||
) where
|
) where
|
||||||
|
|
||||||
@ -37,6 +38,8 @@ insert key value = Map . Map.insert key value . unMap
|
|||||||
filterWithKey :: (key -> value -> Bool) -> Map key value -> Map key value
|
filterWithKey :: (key -> value -> Bool) -> Map key value -> Map key value
|
||||||
filterWithKey f = Map . Map.filterWithKey f . unMap
|
filterWithKey f = Map . Map.filterWithKey f . unMap
|
||||||
|
|
||||||
|
keys :: Map key value -> [key]
|
||||||
|
keys = map fst . pairs
|
||||||
|
|
||||||
pairs :: Map key value -> [(key, value)]
|
pairs :: Map key value -> [(key, value)]
|
||||||
pairs = Map.toList . unMap
|
pairs = Map.toList . unMap
|
||||||
|
@ -5,7 +5,6 @@ module Data.Semigroup.App
|
|||||||
) where
|
) where
|
||||||
|
|
||||||
import Control.Applicative
|
import Control.Applicative
|
||||||
import Data.Semigroup
|
|
||||||
|
|
||||||
-- $setup
|
-- $setup
|
||||||
-- >>> import Test.QuickCheck
|
-- >>> import Test.QuickCheck
|
||||||
|
@ -5,12 +5,16 @@ module Data.Syntax where
|
|||||||
import Data.Abstract.Evaluatable
|
import Data.Abstract.Evaluatable
|
||||||
import Data.Aeson (ToJSON(..), object)
|
import Data.Aeson (ToJSON(..), object)
|
||||||
import Data.AST
|
import Data.AST
|
||||||
|
import Data.Char (toLower)
|
||||||
import Data.JSON.Fields
|
import Data.JSON.Fields
|
||||||
import Data.Range
|
import Data.Range
|
||||||
import Data.Record
|
import Data.Record
|
||||||
|
import qualified Data.Set as Set
|
||||||
import Data.Span
|
import Data.Span
|
||||||
import Data.Sum
|
import Data.Sum
|
||||||
import Data.Term
|
import Data.Term
|
||||||
|
import GHC.Types (Constraint)
|
||||||
|
import GHC.TypeLits
|
||||||
import Diffing.Algorithm hiding (Empty)
|
import Diffing.Algorithm hiding (Empty)
|
||||||
import Prelude
|
import Prelude
|
||||||
import Prologue
|
import Prologue
|
||||||
@ -18,12 +22,9 @@ import qualified Assigning.Assignment as Assignment
|
|||||||
import qualified Data.Error as Error
|
import qualified Data.Error as Error
|
||||||
import Proto3.Suite.Class
|
import Proto3.Suite.Class
|
||||||
import Proto3.Wire.Types
|
import Proto3.Wire.Types
|
||||||
import GHC.Types (Constraint)
|
|
||||||
import GHC.TypeLits
|
|
||||||
import qualified Proto3.Suite.DotProto as Proto
|
import qualified Proto3.Suite.DotProto as Proto
|
||||||
import qualified Proto3.Wire.Encode as Encode
|
import qualified Proto3.Wire.Encode as Encode
|
||||||
import qualified Proto3.Wire.Decode as Decode
|
import qualified Proto3.Wire.Decode as Decode
|
||||||
import Data.Char (toLower)
|
|
||||||
|
|
||||||
-- Combinators
|
-- Combinators
|
||||||
|
|
||||||
@ -166,7 +167,7 @@ instance Evaluatable Identifier where
|
|||||||
eval (Identifier name) = pure (LvalLocal name)
|
eval (Identifier name) = pure (LvalLocal name)
|
||||||
|
|
||||||
instance FreeVariables1 Identifier where
|
instance FreeVariables1 Identifier where
|
||||||
liftFreeVariables _ (Identifier x) = pure x
|
liftFreeVariables _ (Identifier x) = Set.singleton x
|
||||||
|
|
||||||
instance Declarations1 Identifier where
|
instance Declarations1 Identifier where
|
||||||
liftDeclaredName _ (Identifier x) = pure x
|
liftDeclaredName _ (Identifier x) = pure x
|
||||||
|
@ -4,13 +4,13 @@ module Data.Syntax.Declaration where
|
|||||||
import qualified Data.Abstract.Environment as Env
|
import qualified Data.Abstract.Environment as Env
|
||||||
import Data.Abstract.Evaluatable
|
import Data.Abstract.Evaluatable
|
||||||
import Data.JSON.Fields
|
import Data.JSON.Fields
|
||||||
import qualified Data.Set as Set (fromList)
|
import qualified Data.Set as Set
|
||||||
import Diffing.Algorithm
|
import Diffing.Algorithm
|
||||||
import Prologue
|
import Prologue
|
||||||
import Proto3.Suite.Class
|
import Proto3.Suite.Class
|
||||||
|
|
||||||
data Function a = Function { functionContext :: ![a], functionName :: !a, functionParameters :: ![a], functionBody :: !a }
|
data Function a = Function { functionContext :: ![a], functionName :: !a, functionParameters :: ![a], functionBody :: !a }
|
||||||
deriving (Eq, Ord, Show, Foldable, Traversable, Functor, Generic1, Hashable1, Mergeable, FreeVariables1, Declarations1, ToJSONFields1, Named1, Message1)
|
deriving (Eq, Ord, Show, Foldable, Traversable, Functor, Generic1, Hashable1, Mergeable, ToJSONFields1, Named1, Message1)
|
||||||
|
|
||||||
instance Diffable Function where
|
instance Diffable Function where
|
||||||
equivalentBySubterm = Just . functionName
|
equivalentBySubterm = Just . functionName
|
||||||
@ -24,18 +24,21 @@ instance Show1 Function where liftShowsPrec = genericLiftShowsPrec
|
|||||||
|
|
||||||
instance Evaluatable Function where
|
instance Evaluatable Function where
|
||||||
eval Function{..} = do
|
eval Function{..} = do
|
||||||
name <- either (throwEvalError . FreeVariablesError) pure (freeVariable $ subterm functionName)
|
name <- maybeM (throwEvalError NoNameError) (declaredName (subterm functionName))
|
||||||
(_, addr) <- letrec name (closure (paramNames functionParameters) (Set.fromList (freeVariables functionBody)) (subtermAddress functionBody))
|
(_, addr) <- letrec name (closure (paramNames functionParameters) (freeVariables functionBody) (subtermAddress functionBody))
|
||||||
bind name addr
|
bind name addr
|
||||||
pure (Rval addr)
|
pure (Rval addr)
|
||||||
where paramNames = foldMap (freeVariables . subterm)
|
where paramNames = foldMap (maybeToList . declaredName . subterm)
|
||||||
|
|
||||||
instance Declarations a => Declarations (Function a) where
|
instance Declarations1 Function where
|
||||||
declaredName Function{..} = declaredName functionName
|
liftDeclaredName declaredName = declaredName . functionName
|
||||||
|
|
||||||
|
instance FreeVariables1 Function where
|
||||||
|
liftFreeVariables freeVariables f@Function{..} = foldMap freeVariables f `Set.difference` foldMap freeVariables functionParameters
|
||||||
|
|
||||||
|
|
||||||
data Method a = Method { methodContext :: ![a], methodReceiver :: !a, methodName :: !a, methodParameters :: ![a], methodBody :: !a }
|
data Method a = Method { methodContext :: ![a], methodReceiver :: !a, methodName :: !a, methodParameters :: ![a], methodBody :: !a }
|
||||||
deriving (Eq, Ord, Show, Foldable, Traversable, Functor, Generic1, Hashable1, Mergeable, FreeVariables1, Declarations1, ToJSONFields1, Named1, Message1)
|
deriving (Eq, Ord, Show, Foldable, Traversable, Functor, Generic1, Hashable1, Mergeable, ToJSONFields1, Named1, Message1)
|
||||||
|
|
||||||
instance Eq1 Method where liftEq = genericLiftEq
|
instance Eq1 Method where liftEq = genericLiftEq
|
||||||
instance Ord1 Method where liftCompare = genericLiftCompare
|
instance Ord1 Method where liftCompare = genericLiftCompare
|
||||||
@ -48,11 +51,17 @@ instance Diffable Method where
|
|||||||
-- local environment.
|
-- local environment.
|
||||||
instance Evaluatable Method where
|
instance Evaluatable Method where
|
||||||
eval Method{..} = do
|
eval Method{..} = do
|
||||||
name <- either (throwEvalError . FreeVariablesError) pure (freeVariable $ subterm methodName)
|
name <- maybeM (throwEvalError NoNameError) (declaredName (subterm methodName))
|
||||||
(_, addr) <- letrec name (closure (paramNames methodParameters) (Set.fromList (freeVariables methodBody)) (subtermAddress methodBody))
|
(_, addr) <- letrec name (closure (paramNames methodParameters) (freeVariables methodBody) (subtermAddress methodBody))
|
||||||
bind name addr
|
bind name addr
|
||||||
pure (Rval addr)
|
pure (Rval addr)
|
||||||
where paramNames = foldMap (freeVariables . subterm)
|
where paramNames = foldMap (maybeToList . declaredName . subterm)
|
||||||
|
|
||||||
|
instance Declarations1 Method where
|
||||||
|
liftDeclaredName declaredName = declaredName . methodName
|
||||||
|
|
||||||
|
instance FreeVariables1 Method where
|
||||||
|
liftFreeVariables freeVariables m@Method{..} = foldMap freeVariables m `Set.difference` foldMap freeVariables methodParameters
|
||||||
|
|
||||||
|
|
||||||
-- | A method signature in TypeScript or a method spec in Go.
|
-- | A method signature in TypeScript or a method spec in Go.
|
||||||
@ -162,7 +171,7 @@ instance Show1 Class where liftShowsPrec = genericLiftShowsPrec
|
|||||||
|
|
||||||
instance Evaluatable Class where
|
instance Evaluatable Class where
|
||||||
eval Class{..} = do
|
eval Class{..} = do
|
||||||
name <- either (throwEvalError . FreeVariablesError) pure (freeVariable $ subterm classIdentifier)
|
name <- maybeM (throwEvalError NoNameError) (declaredName (subterm classIdentifier))
|
||||||
supers <- traverse subtermAddress classSuperclasses
|
supers <- traverse subtermAddress classSuperclasses
|
||||||
(_, addr) <- letrec name $ do
|
(_, addr) <- letrec name $ do
|
||||||
void $ subtermValue classBody
|
void $ subtermValue classBody
|
||||||
@ -244,7 +253,7 @@ instance Show1 TypeAlias where liftShowsPrec = genericLiftShowsPrec
|
|||||||
-- TODO: Implement Eval instance for TypeAlias
|
-- TODO: Implement Eval instance for TypeAlias
|
||||||
instance Evaluatable TypeAlias where
|
instance Evaluatable TypeAlias where
|
||||||
eval TypeAlias{..} = do
|
eval TypeAlias{..} = do
|
||||||
name <- either (throwEvalError . FreeVariablesError) pure (freeVariable (subterm typeAliasIdentifier))
|
name <- maybeM (throwEvalError NoNameError) (declaredName (subterm typeAliasIdentifier))
|
||||||
v <- subtermValue typeAliasKind
|
v <- subtermValue typeAliasKind
|
||||||
addr <- lookupOrAlloc name
|
addr <- lookupOrAlloc name
|
||||||
assign addr v
|
assign addr v
|
||||||
|
@ -99,7 +99,7 @@ instance Show1 Let where liftShowsPrec = genericLiftShowsPrec
|
|||||||
|
|
||||||
instance Evaluatable Let where
|
instance Evaluatable Let where
|
||||||
eval Let{..} = do
|
eval Let{..} = do
|
||||||
name <- either (throwEvalError . FreeVariablesError) pure (freeVariable $ subterm letVariable)
|
name <- maybeM (throwEvalError NoNameError) (declaredName (subterm letVariable))
|
||||||
addr <- snd <$> letrec name (subtermValue letValue)
|
addr <- snd <$> letrec name (subtermValue letValue)
|
||||||
Rval <$> locally (bind name addr *> subtermAddress letBody)
|
Rval <$> locally (bind name addr *> subtermAddress letBody)
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ instance Show1 QualifiedImport where liftShowsPrec = genericLiftShowsPrec
|
|||||||
instance Evaluatable QualifiedImport where
|
instance Evaluatable QualifiedImport where
|
||||||
eval (QualifiedImport importPath aliasTerm) = do
|
eval (QualifiedImport importPath aliasTerm) = do
|
||||||
paths <- resolveGoImport importPath
|
paths <- resolveGoImport importPath
|
||||||
alias <- either (throwEvalError . FreeVariablesError) pure (freeVariable $ subterm aliasTerm)
|
alias <- maybeM (throwEvalError NoNameError) (declaredName (subterm aliasTerm))
|
||||||
void . letrec' alias $ \addr -> do
|
void . letrec' alias $ \addr -> do
|
||||||
makeNamespace alias addr Nothing $ for_ paths $ \p -> do
|
makeNamespace alias addr Nothing $ for_ paths $ \p -> do
|
||||||
traceResolve (unPath importPath) p
|
traceResolve (unPath importPath) p
|
||||||
|
@ -489,6 +489,9 @@ namespaceNameAsPrefix = symbol NamespaceNameAsPrefix *> children (term namespace
|
|||||||
namespaceName :: Assignment Term
|
namespaceName :: Assignment Term
|
||||||
namespaceName = makeTerm <$> symbol NamespaceName <*> children (Syntax.NamespaceName <$> someTerm' name)
|
namespaceName = makeTerm <$> symbol NamespaceName <*> children (Syntax.NamespaceName <$> someTerm' name)
|
||||||
|
|
||||||
|
namespaceName' :: Assignment (NonEmpty Term)
|
||||||
|
namespaceName' = symbol NamespaceName *> children (someTerm' name)
|
||||||
|
|
||||||
updateExpression :: Assignment Term
|
updateExpression :: Assignment Term
|
||||||
updateExpression = makeTerm <$> symbol UpdateExpression <*> children (Syntax.Update <$> term expression)
|
updateExpression = makeTerm <$> symbol UpdateExpression <*> children (Syntax.Update <$> term expression)
|
||||||
|
|
||||||
@ -704,7 +707,7 @@ traitAliasAsClause :: Assignment Term
|
|||||||
traitAliasAsClause = makeTerm <$> symbol TraitAliasAsClause <*> children (Syntax.AliasAs <$> term (classConstantAccessExpression <|> name) <*> (term visibilityModifier <|> emptyTerm) <*> (term name <|> emptyTerm))
|
traitAliasAsClause = makeTerm <$> symbol TraitAliasAsClause <*> children (Syntax.AliasAs <$> term (classConstantAccessExpression <|> name) <*> (term visibilityModifier <|> emptyTerm) <*> (term name <|> emptyTerm))
|
||||||
|
|
||||||
namespaceDefinition :: Assignment Term
|
namespaceDefinition :: Assignment Term
|
||||||
namespaceDefinition = makeTerm <$> symbol NamespaceDefinition <*> children (Syntax.Namespace <$> (term namespaceName <|> emptyTerm) <*> (term compoundStatement <|> emptyTerm))
|
namespaceDefinition = makeTerm <$> symbol NamespaceDefinition <*> children (Syntax.Namespace <$> (toList <$> namespaceName' <|> pure []) <*> (term compoundStatement <|> emptyTerm))
|
||||||
|
|
||||||
namespaceUseDeclaration :: Assignment Term
|
namespaceUseDeclaration :: Assignment Term
|
||||||
namespaceUseDeclaration = makeTerm <$> symbol NamespaceUseDeclaration <*> children (Syntax.NamespaceUseDeclaration <$>
|
namespaceUseDeclaration = makeTerm <$> symbol NamespaceUseDeclaration <*> children (Syntax.NamespaceUseDeclaration <$>
|
||||||
|
@ -362,7 +362,7 @@ instance Ord1 NamespaceUseGroupClause where liftCompare = genericLiftCompare
|
|||||||
instance Show1 NamespaceUseGroupClause where liftShowsPrec = genericLiftShowsPrec
|
instance Show1 NamespaceUseGroupClause where liftShowsPrec = genericLiftShowsPrec
|
||||||
instance Evaluatable NamespaceUseGroupClause
|
instance Evaluatable NamespaceUseGroupClause
|
||||||
|
|
||||||
data Namespace a = Namespace { namespaceName :: a, namespaceBody :: a }
|
data Namespace a = Namespace { namespaceName :: [a], namespaceBody :: a }
|
||||||
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
|
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
|
||||||
|
|
||||||
instance Eq1 Namespace where liftEq = genericLiftEq
|
instance Eq1 Namespace where liftEq = genericLiftEq
|
||||||
@ -370,16 +370,20 @@ instance Ord1 Namespace where liftCompare = genericLiftCompare
|
|||||||
instance Show1 Namespace where liftShowsPrec = genericLiftShowsPrec
|
instance Show1 Namespace where liftShowsPrec = genericLiftShowsPrec
|
||||||
|
|
||||||
instance Evaluatable Namespace where
|
instance Evaluatable Namespace where
|
||||||
eval Namespace{..} = rvalBox =<< go (freeVariables (subterm namespaceName))
|
eval Namespace{..} = rvalBox =<< go (declaredName . subterm <$> namespaceName)
|
||||||
where
|
where
|
||||||
-- Each namespace name creates a closure over the subsequent namespace closures
|
-- Each namespace name creates a closure over the subsequent namespace closures
|
||||||
go (name:x:xs) = letrec' name $ \addr ->
|
go (n:x:xs) = do
|
||||||
go (x:xs) <* makeNamespace name addr Nothing (pure ())
|
name <- maybeM (throwResumable NoNameError) n
|
||||||
|
letrec' name $ \addr ->
|
||||||
|
go (x:xs) <* makeNamespace name addr Nothing (pure ())
|
||||||
-- The last name creates a closure over the namespace body.
|
-- The last name creates a closure over the namespace body.
|
||||||
go names = do
|
go [n] = do
|
||||||
name <- maybeM (throwEvalError (FreeVariablesError [])) (listToMaybe names)
|
name <- maybeM (throwResumable NoNameError) n
|
||||||
letrec' name $ \addr ->
|
letrec' name $ \addr ->
|
||||||
subtermValue namespaceBody *> makeNamespace name addr Nothing (pure ())
|
subtermValue namespaceBody *> makeNamespace name addr Nothing (pure ())
|
||||||
|
-- The absence of names implies global scope, cf http://php.net/manual/en/language.namespaces.definitionmultiple.php
|
||||||
|
go [] = subtermValue namespaceBody
|
||||||
|
|
||||||
data TraitDeclaration a = TraitDeclaration { traitName :: a, traitStatements :: [a] }
|
data TraitDeclaration a = TraitDeclaration { traitName :: a, traitStatements :: [a] }
|
||||||
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
|
deriving (Declarations1, Diffable, Eq, Foldable, FreeVariables1, Functor, Generic1, Hashable1, Mergeable, Ord, Show, ToJSONFields1, Traversable)
|
||||||
|
@ -168,7 +168,7 @@ instance Evaluatable QualifiedAliasedImport where
|
|||||||
for_ (NonEmpty.init modulePaths) require
|
for_ (NonEmpty.init modulePaths) require
|
||||||
|
|
||||||
-- Evaluate and import the last module, aliasing and updating the environment
|
-- Evaluate and import the last module, aliasing and updating the environment
|
||||||
alias <- either (throwEvalError . FreeVariablesError) pure (freeVariable $ subterm aliasTerm)
|
alias <- maybeM (throwEvalError NoNameError) (declaredName (subterm aliasTerm))
|
||||||
rvalBox =<< letrec' alias (\addr -> do
|
rvalBox =<< letrec' alias (\addr -> do
|
||||||
let path = NonEmpty.last modulePaths
|
let path = NonEmpty.last modulePaths
|
||||||
unit <$ makeNamespace alias addr Nothing (void (bindAll . fst =<< require path)))
|
unit <$ makeNamespace alias addr Nothing (void (bindAll . fst =<< require path)))
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
{-# LANGUAGE DeriveAnyClass, DuplicateRecordFields #-}
|
{-# LANGUAGE DeriveAnyClass, DuplicateRecordFields, TupleSections #-}
|
||||||
module Language.Ruby.Syntax where
|
module Language.Ruby.Syntax where
|
||||||
|
|
||||||
import Control.Monad (unless)
|
import Control.Monad (unless)
|
||||||
@ -81,7 +81,7 @@ doRequire :: ( AbstractValue address value effects
|
|||||||
doRequire path = do
|
doRequire path = do
|
||||||
result <- lookupModule path
|
result <- lookupModule path
|
||||||
case result of
|
case result of
|
||||||
Nothing -> flip (,) (boolean True) . fst <$> load path
|
Nothing -> (, boolean True) . fst <$> load path
|
||||||
Just (env, _) -> pure (env, boolean False)
|
Just (env, _) -> pure (env, boolean False)
|
||||||
|
|
||||||
|
|
||||||
@ -132,7 +132,7 @@ instance Show1 Class where liftShowsPrec = genericLiftShowsPrec
|
|||||||
instance Evaluatable Class where
|
instance Evaluatable Class where
|
||||||
eval Class{..} = do
|
eval Class{..} = do
|
||||||
super <- traverse subtermAddress classSuperClass
|
super <- traverse subtermAddress classSuperClass
|
||||||
name <- either (throwEvalError . FreeVariablesError) pure (freeVariable $ subterm classIdentifier)
|
name <- maybeM (throwEvalError NoNameError) (declaredName (subterm classIdentifier))
|
||||||
rvalBox =<< letrec' name (\addr ->
|
rvalBox =<< letrec' name (\addr ->
|
||||||
makeNamespace name addr super (void (subtermAddress classBody)))
|
makeNamespace name addr super (void (subtermAddress classBody)))
|
||||||
|
|
||||||
@ -145,7 +145,7 @@ instance Show1 Module where liftShowsPrec = genericLiftShowsPrec
|
|||||||
|
|
||||||
instance Evaluatable Module where
|
instance Evaluatable Module where
|
||||||
eval (Module iden xs) = do
|
eval (Module iden xs) = do
|
||||||
name <- either (throwEvalError . FreeVariablesError) pure (freeVariable $ subterm iden)
|
name <- maybeM (throwEvalError NoNameError) (declaredName (subterm iden))
|
||||||
rvalBox =<< letrec' name (\addr ->
|
rvalBox =<< letrec' name (\addr ->
|
||||||
makeNamespace name addr Nothing (void (eval xs)))
|
makeNamespace name addr Nothing (void (eval xs)))
|
||||||
|
|
||||||
|
@ -189,7 +189,7 @@ instance Show1 JavaScriptRequire where liftShowsPrec = genericLiftShowsPrec
|
|||||||
instance Evaluatable JavaScriptRequire where
|
instance Evaluatable JavaScriptRequire where
|
||||||
eval (JavaScriptRequire aliasTerm importPath) = do
|
eval (JavaScriptRequire aliasTerm importPath) = do
|
||||||
modulePath <- resolveWithNodejsStrategy importPath javascriptExtensions
|
modulePath <- resolveWithNodejsStrategy importPath javascriptExtensions
|
||||||
alias <- either (throwEvalError . FreeVariablesError) pure (freeVariable $ subterm aliasTerm)
|
alias <- maybeM (throwEvalError NoNameError) (declaredName (subterm aliasTerm))
|
||||||
rvalBox =<< evalRequire modulePath alias
|
rvalBox =<< evalRequire modulePath alias
|
||||||
|
|
||||||
|
|
||||||
@ -203,7 +203,7 @@ instance Show1 QualifiedAliasedImport where liftShowsPrec = genericLiftShowsPrec
|
|||||||
instance Evaluatable QualifiedAliasedImport where
|
instance Evaluatable QualifiedAliasedImport where
|
||||||
eval (QualifiedAliasedImport aliasTerm importPath) = do
|
eval (QualifiedAliasedImport aliasTerm importPath) = do
|
||||||
modulePath <- resolveWithNodejsStrategy importPath typescriptExtensions
|
modulePath <- resolveWithNodejsStrategy importPath typescriptExtensions
|
||||||
alias <- either (throwEvalError . FreeVariablesError) pure (freeVariable $ subterm aliasTerm)
|
alias <- maybeM (throwEvalError NoNameError) (declaredName (subterm aliasTerm))
|
||||||
rvalBox =<< evalRequire modulePath alias
|
rvalBox =<< evalRequire modulePath alias
|
||||||
|
|
||||||
newtype SideEffectImport a = SideEffectImport { sideEffectImportFrom :: ImportPath }
|
newtype SideEffectImport a = SideEffectImport { sideEffectImportFrom :: ImportPath }
|
||||||
@ -268,10 +268,10 @@ instance Show1 DefaultExport where liftShowsPrec = genericLiftShowsPrec
|
|||||||
|
|
||||||
instance Evaluatable DefaultExport where
|
instance Evaluatable DefaultExport where
|
||||||
eval (DefaultExport term) = do
|
eval (DefaultExport term) = do
|
||||||
v <- subtermValue term
|
|
||||||
case declaredName term of
|
case declaredName term of
|
||||||
Just name -> do
|
Just name -> do
|
||||||
addr <- lookupOrAlloc name
|
addr <- lookupOrAlloc name
|
||||||
|
v <- subtermValue term
|
||||||
assign addr v
|
assign addr v
|
||||||
export name name Nothing
|
export name name Nothing
|
||||||
bind name addr
|
bind name addr
|
||||||
@ -674,7 +674,7 @@ instance Show1 Module where liftShowsPrec = genericLiftShowsPrec
|
|||||||
|
|
||||||
instance Evaluatable Module where
|
instance Evaluatable Module where
|
||||||
eval (Module iden xs) = do
|
eval (Module iden xs) = do
|
||||||
name <- either (throwEvalError . FreeVariablesError) pure (freeVariable $ subterm iden)
|
name <- maybeM (throwEvalError NoNameError) (declaredName (subterm iden))
|
||||||
rvalBox =<< letrec' name (\addr ->
|
rvalBox =<< letrec' name (\addr ->
|
||||||
makeNamespace name addr Nothing (void (eval xs)))
|
makeNamespace name addr Nothing (void (eval xs)))
|
||||||
|
|
||||||
@ -688,7 +688,7 @@ instance Show1 InternalModule where liftShowsPrec = genericLiftShowsPrec
|
|||||||
|
|
||||||
instance Evaluatable InternalModule where
|
instance Evaluatable InternalModule where
|
||||||
eval (InternalModule iden xs) = do
|
eval (InternalModule iden xs) = do
|
||||||
name <- either (throwEvalError . FreeVariablesError) pure (freeVariable $ subterm iden)
|
name <- maybeM (throwEvalError NoNameError) (declaredName (subterm iden))
|
||||||
rvalBox =<< letrec' name (\addr ->
|
rvalBox =<< letrec' name (\addr ->
|
||||||
makeNamespace name addr Nothing (void (eval xs)))
|
makeNamespace name addr Nothing (void (eval xs)))
|
||||||
|
|
||||||
@ -739,7 +739,7 @@ instance Declarations a => Declarations (AbstractClass a) where
|
|||||||
|
|
||||||
instance Evaluatable AbstractClass where
|
instance Evaluatable AbstractClass where
|
||||||
eval AbstractClass{..} = do
|
eval AbstractClass{..} = do
|
||||||
name <- either (throwEvalError . FreeVariablesError) pure (freeVariable $ subterm abstractClassIdentifier)
|
name <- maybeM (throwEvalError NoNameError) (declaredName (subterm abstractClassIdentifier))
|
||||||
supers <- traverse subtermAddress classHeritage
|
supers <- traverse subtermAddress classHeritage
|
||||||
(v, addr) <- letrec name $ do
|
(v, addr) <- letrec name $ do
|
||||||
void $ subtermValue classBody
|
void $ subtermValue classBody
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
{-# LANGUAGE LambdaCase #-}
|
||||||
|
|
||||||
module Semantic.Config where
|
module Semantic.Config where
|
||||||
|
|
||||||
import Network.BSD
|
import Network.BSD
|
||||||
@ -82,16 +84,18 @@ withTelemetry config action =
|
|||||||
|
|
||||||
withLoggerFromConfig :: Config -> (LogQueue -> IO c) -> IO c
|
withLoggerFromConfig :: Config -> (LogQueue -> IO c) -> IO c
|
||||||
withLoggerFromConfig Config{..} = withLogger opts configMaxTelemetyQueueSize
|
withLoggerFromConfig Config{..} = withLogger opts configMaxTelemetyQueueSize
|
||||||
where opts = LogOptions {
|
where opts = LogOptions { logOptionsLevel = optionsLogLevel configOptions
|
||||||
logOptionsLevel = optionsLogLevel configOptions
|
, logOptionsFormatter = configLogFormatter
|
||||||
, logOptionsFormatter = configLogFormatter
|
, logOptionsContext = logOptionsContext' configIsTerminal
|
||||||
, logOptionsContext =
|
}
|
||||||
[ ("app", configAppName)
|
logOptionsContext' = \case
|
||||||
, ("pid", show configProcessID)
|
False -> [ ("app", configAppName)
|
||||||
, ("hostname", configHostName)
|
, ("pid", show configProcessID)
|
||||||
, ("sha", buildSHA)
|
, ("hostname", configHostName)
|
||||||
] <> [("request_id", x) | x <- toList (optionsRequestID configOptions) ]
|
, ("sha", buildSHA)
|
||||||
}
|
] <> [("request_id", x) | x <- toList (optionsRequestID configOptions) ]
|
||||||
|
_ -> []
|
||||||
|
|
||||||
|
|
||||||
withHaystackFromConfig :: Config -> Haystack.ErrorLogger -> (HaystackQueue -> IO c) -> IO c
|
withHaystackFromConfig :: Config -> Haystack.ErrorLogger -> (HaystackQueue -> IO c) -> IO c
|
||||||
withHaystackFromConfig Config{..} errorLogger =
|
withHaystackFromConfig Config{..} errorLogger =
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
{-# LANGUAGE GADTs, ScopedTypeVariables, TypeOperators #-}
|
{-# LANGUAGE GADTs, ScopedTypeVariables, TypeOperators #-}
|
||||||
module Semantic.Graph
|
module Semantic.Graph
|
||||||
( runGraph
|
( runGraph
|
||||||
|
, runCallGraph
|
||||||
, runImportGraph
|
, runImportGraph
|
||||||
, GraphType(..)
|
, GraphType(..)
|
||||||
, Graph
|
, Graph
|
||||||
, Vertex
|
, Vertex
|
||||||
, GraphEff(..)
|
|
||||||
, ImportGraphEff(..)
|
, ImportGraphEff(..)
|
||||||
, style
|
, style
|
||||||
, parsePackage
|
, parsePackage
|
||||||
@ -17,10 +17,14 @@ module Semantic.Graph
|
|||||||
, resumingAddressError
|
, resumingAddressError
|
||||||
, resumingValueError
|
, resumingValueError
|
||||||
, resumingEnvironmentError
|
, resumingEnvironmentError
|
||||||
|
, resumingTypeError
|
||||||
) where
|
) where
|
||||||
|
|
||||||
|
|
||||||
import Prelude hiding (readFile)
|
import Prelude hiding (readFile)
|
||||||
|
|
||||||
|
import Analysis.Abstract.Caching
|
||||||
|
import Analysis.Abstract.Collecting
|
||||||
import Analysis.Abstract.Graph as Graph
|
import Analysis.Abstract.Graph as Graph
|
||||||
import Control.Abstract
|
import Control.Abstract
|
||||||
import Control.Monad.Effect (reinterpret)
|
import Control.Monad.Effect (reinterpret)
|
||||||
@ -29,15 +33,21 @@ import Data.Abstract.Evaluatable
|
|||||||
import Data.Abstract.Module
|
import Data.Abstract.Module
|
||||||
import qualified Data.Abstract.ModuleTable as ModuleTable
|
import qualified Data.Abstract.ModuleTable as ModuleTable
|
||||||
import Data.Abstract.Package as Package
|
import Data.Abstract.Package as Package
|
||||||
|
import Data.Abstract.Value.Abstract
|
||||||
|
import Data.Abstract.Value.Type
|
||||||
import Data.Abstract.Value.Concrete (Value, ValueError (..), runValueErrorWith)
|
import Data.Abstract.Value.Concrete (Value, ValueError (..), runValueErrorWith)
|
||||||
import Data.Graph
|
import Data.Graph
|
||||||
import Data.Project
|
import Data.Project
|
||||||
import Data.Record
|
import Data.Record
|
||||||
|
import qualified Data.Syntax as Syntax
|
||||||
import Data.Term
|
import Data.Term
|
||||||
import Data.Text (pack)
|
import Data.Text (pack)
|
||||||
|
import Language.Haskell.HsColour
|
||||||
|
import Language.Haskell.HsColour.Colourise
|
||||||
import Parsing.Parser
|
import Parsing.Parser
|
||||||
import Prologue hiding (MonadError (..))
|
import Prologue hiding (MonadError (..), TypeError (..))
|
||||||
import Semantic.Task as Task
|
import Semantic.Task as Task
|
||||||
|
import Text.Show.Pretty (ppShow)
|
||||||
|
|
||||||
data GraphType = ImportGraph | CallGraph
|
data GraphType = ImportGraph | CallGraph
|
||||||
|
|
||||||
@ -55,52 +65,51 @@ runGraph ImportGraph _ project
|
|||||||
runGraph CallGraph includePackages project
|
runGraph CallGraph includePackages project
|
||||||
| SomeAnalysisParser parser lang <- someAnalysisParser (Proxy :: Proxy AnalysisClasses) (projectLanguage project) = do
|
| SomeAnalysisParser parser lang <- someAnalysisParser (Proxy :: Proxy AnalysisClasses) (projectLanguage project) = do
|
||||||
package <- parsePackage parser project
|
package <- parsePackage parser project
|
||||||
modules <- runImportGraph lang package
|
modules <- topologicalSort <$> runImportGraph lang package
|
||||||
let analyzeTerm = withTermSpans . graphingTerms
|
runCallGraph lang includePackages modules package
|
||||||
analyzeModule = (if includePackages then graphingPackages else id) . graphingModules
|
|
||||||
extractGraph (_, (_, (graph, _))) = simplify graph
|
runCallGraph :: ( HasField ann Span
|
||||||
runGraphAnalysis
|
, Element Syntax.Identifier syntax
|
||||||
= runState lowerBound
|
, Base term ~ TermF (Sum syntax) (Record ann)
|
||||||
. runFresh 0
|
, Ord term
|
||||||
. resumingLoadError
|
, Corecursive term
|
||||||
. resumingUnspecialized
|
, Declarations term
|
||||||
. resumingEnvironmentError
|
, Evaluatable (Base term)
|
||||||
. resumingEvalError
|
, FreeVariables term
|
||||||
. resumingResolutionError
|
, HasPrelude lang
|
||||||
. resumingAddressError
|
, HasPostlude lang
|
||||||
. resumingValueError
|
, Member Trace effs
|
||||||
. runTermEvaluator @_ @_ @(Value (Hole (Located Precise)) (GraphEff _ effs))
|
, Recursive term
|
||||||
. graphing
|
, Effects effs
|
||||||
. runReader (packageInfo package)
|
)
|
||||||
. runReader lowerBound
|
=> Proxy lang
|
||||||
. runReader lowerBound
|
-> Bool
|
||||||
. raiseHandler (runModules (ModuleTable.modulePaths (packageModules package)))
|
-> [Module term]
|
||||||
extractGraph <$> runEvaluator (runGraphAnalysis (evaluate lang analyzeModule analyzeTerm (topologicalSort modules)))
|
-> Package term
|
||||||
|
-> Eff effs (Graph Vertex)
|
||||||
|
runCallGraph lang includePackages modules package = do
|
||||||
|
let analyzeTerm = withTermSpans . graphingTerms . cachingTerms
|
||||||
|
analyzeModule = (if includePackages then graphingPackages else id) . convergingModules . graphingModules
|
||||||
|
extractGraph (_, (_, (graph, _))) = simplify graph
|
||||||
|
runGraphAnalysis
|
||||||
|
= runState (lowerBound @(Heap (Hole (Located Monovariant)) All Abstract))
|
||||||
|
. runFresh 0
|
||||||
|
. resumingLoadError
|
||||||
|
. resumingUnspecialized
|
||||||
|
. resumingEnvironmentError
|
||||||
|
. resumingEvalError
|
||||||
|
. resumingResolutionError
|
||||||
|
. resumingAddressError
|
||||||
|
. runTermEvaluator @_ @(Hole (Located Monovariant)) @Abstract
|
||||||
|
. graphing
|
||||||
|
. caching @[]
|
||||||
|
. runReader (packageInfo package)
|
||||||
|
. runReader (lowerBound @Span)
|
||||||
|
. providingLiveSet
|
||||||
|
. runReader (lowerBound @(ModuleTable (NonEmpty (Module (ModuleResult (Hole (Located Monovariant)))))))
|
||||||
|
. raiseHandler (runModules (ModuleTable.modulePaths (packageModules package)))
|
||||||
|
extractGraph <$> runEvaluator (runGraphAnalysis (evaluate lang analyzeModule analyzeTerm modules))
|
||||||
|
|
||||||
-- | The full list of effects in flight during the evaluation of terms. This, and other @newtype@s like it, are necessary to type 'Value', since the bodies of closures embed evaluators. This would otherwise require cycles in the effect list (i.e. references to @effects@ within @effects@ itself), which the typechecker forbids.
|
|
||||||
newtype GraphEff address outerEffects a = GraphEff
|
|
||||||
{ runGraphEff :: Eff ( Exc (LoopControl address)
|
|
||||||
': Exc (Return address)
|
|
||||||
': Env address
|
|
||||||
': Allocator address (Value address (GraphEff address outerEffects))
|
|
||||||
': Reader ModuleInfo
|
|
||||||
': Modules address
|
|
||||||
': Reader (ModuleTable (NonEmpty (Module (ModuleResult address))))
|
|
||||||
': Reader Span
|
|
||||||
': Reader PackageInfo
|
|
||||||
': State (Graph Vertex)
|
|
||||||
': Resumable (ValueError address (GraphEff address outerEffects))
|
|
||||||
': Resumable (AddressError address (Value address (GraphEff address outerEffects)))
|
|
||||||
': Resumable ResolutionError
|
|
||||||
': Resumable EvalError
|
|
||||||
': Resumable (EnvironmentError address)
|
|
||||||
': Resumable (Unspecialized (Value address (GraphEff address outerEffects)))
|
|
||||||
': Resumable (LoadError address)
|
|
||||||
': Fresh
|
|
||||||
': State (Heap address Latest (Value address (GraphEff address outerEffects)))
|
|
||||||
': outerEffects
|
|
||||||
) a
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
runImportGraph :: forall effs lang term.
|
runImportGraph :: forall effs lang term.
|
||||||
@ -176,7 +185,7 @@ parsePackage parser project@Project{..} = do
|
|||||||
p <- parseModules parser project
|
p <- parseModules parser project
|
||||||
resMap <- Task.resolutionMap project
|
resMap <- Task.resolutionMap project
|
||||||
let pkg = Package.fromModules n p resMap
|
let pkg = Package.fromModules n p resMap
|
||||||
pkg <$ trace ("project: " <> show (() <$ pkg))
|
pkg <$ trace ("project: " <> prettyShow (() <$ pkg))
|
||||||
|
|
||||||
where
|
where
|
||||||
n = name (projectName project)
|
n = name (projectName project)
|
||||||
@ -201,34 +210,34 @@ withTermSpans :: ( HasField fields Span
|
|||||||
withTermSpans recur term = withCurrentSpan (getField (termFAnnotation term)) (recur term)
|
withTermSpans recur term = withCurrentSpan (getField (termFAnnotation term)) (recur term)
|
||||||
|
|
||||||
resumingResolutionError :: (Applicative (m effects), Effectful m, Member Trace effects, Effects effects) => m (Resumable ResolutionError ': effects) a -> m effects a
|
resumingResolutionError :: (Applicative (m effects), Effectful m, Member Trace effects, Effects effects) => m (Resumable ResolutionError ': effects) a -> m effects a
|
||||||
resumingResolutionError = runResolutionErrorWith (\ err -> trace ("ResolutionError:" <> show err) *> case err of
|
resumingResolutionError = runResolutionErrorWith (\ err -> trace ("ResolutionError: " <> prettyShow err) *> case err of
|
||||||
NotFoundError nameToResolve _ _ -> pure nameToResolve
|
NotFoundError nameToResolve _ _ -> pure nameToResolve
|
||||||
GoImportError pathToResolve -> pure [pathToResolve])
|
GoImportError pathToResolve -> pure [pathToResolve])
|
||||||
|
|
||||||
resumingLoadError :: (Member Trace effects, AbstractHole address, Effects effects) => Evaluator address value (Resumable (LoadError address) ': effects) a -> Evaluator address value effects a
|
resumingLoadError :: (Member Trace effects, AbstractHole address, Effects effects) => Evaluator address value (Resumable (LoadError address) ': effects) a -> Evaluator address value effects a
|
||||||
resumingLoadError = runLoadErrorWith (\ (ModuleNotFound path) -> trace ("LoadError: " <> path) $> (lowerBound, hole))
|
resumingLoadError = runLoadErrorWith (\ (ModuleNotFound path) -> trace ("LoadError: " <> path) $> (lowerBound, hole))
|
||||||
|
|
||||||
resumingEvalError :: (Member Trace effects, Effects effects) => Evaluator address value (Resumable EvalError ': effects) a -> Evaluator address value effects a
|
resumingEvalError :: (Member Fresh effects, Member Trace effects, Effects effects) => Evaluator address value (Resumable EvalError ': effects) a -> Evaluator address value effects a
|
||||||
resumingEvalError = runEvalErrorWith (\ err -> trace ("EvalError" <> show err) *> case err of
|
resumingEvalError = runEvalErrorWith (\ err -> trace ("EvalError:" <> prettyShow err) *> case err of
|
||||||
DefaultExportError{} -> pure ()
|
DefaultExportError{} -> pure ()
|
||||||
ExportError{} -> pure ()
|
ExportError{} -> pure ()
|
||||||
IntegerFormatError{} -> pure 0
|
IntegerFormatError{} -> pure 0
|
||||||
FloatFormatError{} -> pure 0
|
FloatFormatError{} -> pure 0
|
||||||
RationalFormatError{} -> pure 0
|
RationalFormatError{} -> pure 0
|
||||||
FreeVariablesError names -> pure (fromMaybeLast "unknown" names))
|
NoNameError -> gensym)
|
||||||
|
|
||||||
resumingUnspecialized :: (Member Trace effects, AbstractHole value, Effects effects) => Evaluator address value (Resumable (Unspecialized value) ': effects) a -> Evaluator address value effects a
|
resumingUnspecialized :: (Member Trace effects, AbstractHole value, Effects effects) => Evaluator address value (Resumable (Unspecialized value) ': effects) a -> Evaluator address value effects a
|
||||||
resumingUnspecialized = runUnspecializedWith (\ err@(Unspecialized _) -> trace ("Unspecialized:" <> show err) $> hole)
|
resumingUnspecialized = runUnspecializedWith (\ err@(Unspecialized _) -> trace ("Unspecialized: " <> prettyShow err) $> hole)
|
||||||
|
|
||||||
resumingAddressError :: (AbstractHole value, Lower (Cell address value), Member Trace effects, Show address, Effects effects) => Evaluator address value (Resumable (AddressError address value) ': effects) a -> Evaluator address value effects a
|
resumingAddressError :: (AbstractHole value, Lower (Cell address value), Member Trace effects, Show address, Effects effects) => Evaluator address value (Resumable (AddressError address value) ': effects) a -> Evaluator address value effects a
|
||||||
resumingAddressError = runAddressErrorWith (\ err -> trace ("AddressError:" <> show err) *> case err of
|
resumingAddressError = runAddressErrorWith (\ err -> trace ("AddressError: " <> prettyShow err) *> case err of
|
||||||
UnallocatedAddress _ -> pure lowerBound
|
UnallocatedAddress _ -> pure lowerBound
|
||||||
UninitializedAddress _ -> pure hole)
|
UninitializedAddress _ -> pure hole)
|
||||||
|
|
||||||
resumingValueError :: (Member Trace effects, Show address, Effects effects) => Evaluator address (Value address body) (Resumable (ValueError address body) ': effects) a -> Evaluator address (Value address body) effects a
|
resumingValueError :: (Member Trace effects, Show address, Effects effects) => Evaluator address (Value address body) (Resumable (ValueError address body) ': effects) a -> Evaluator address (Value address body) effects a
|
||||||
resumingValueError = runValueErrorWith (\ err -> trace ("ValueError" <> show err) *> case err of
|
resumingValueError = runValueErrorWith (\ err -> trace ("ValueError: " <> prettyShow err) *> case err of
|
||||||
CallError val -> pure val
|
CallError val -> pure val
|
||||||
StringError val -> pure (pack (show val))
|
StringError val -> pure (pack (prettyShow val))
|
||||||
BoolError{} -> pure True
|
BoolError{} -> pure True
|
||||||
BoundsError{} -> pure hole
|
BoundsError{} -> pure hole
|
||||||
IndexError{} -> pure hole
|
IndexError{} -> pure hole
|
||||||
@ -245,3 +254,17 @@ resumingEnvironmentError :: (AbstractHole address, Effects effects) => Evaluator
|
|||||||
resumingEnvironmentError
|
resumingEnvironmentError
|
||||||
= runState []
|
= runState []
|
||||||
. reinterpret (\ (Resumable (FreeVariable name)) -> modify' (name :) $> hole)
|
. reinterpret (\ (Resumable (FreeVariable name)) -> modify' (name :) $> hole)
|
||||||
|
|
||||||
|
resumingTypeError :: ( Alternative (m address Type (State TypeMap ': effects))
|
||||||
|
, Effects effects
|
||||||
|
, Effectful (m address Type)
|
||||||
|
, Member Trace effects
|
||||||
|
)
|
||||||
|
=> m address Type (Resumable TypeError ': State TypeMap ': effects) a
|
||||||
|
-> m address Type effects a
|
||||||
|
resumingTypeError = runTypesWith (\err -> trace ("TypeError: " <> prettyShow err) *> case err of
|
||||||
|
UnificationError l r -> pure l <|> pure r
|
||||||
|
InfiniteType _ r -> pure r)
|
||||||
|
|
||||||
|
prettyShow :: Show a => a -> String
|
||||||
|
prettyShow = hscolour TTY defaultColourPrefs False False "" False . ppShow
|
||||||
|
@ -102,6 +102,16 @@ evalTypeScriptProject = justEvaluating <=< evaluateProject (Proxy :: Proxy 'Lang
|
|||||||
|
|
||||||
typecheckGoFile = checking <=< evaluateProjectWithCaching (Proxy :: Proxy 'Language.Go) goParser Language.Go
|
typecheckGoFile = checking <=< evaluateProjectWithCaching (Proxy :: Proxy 'Language.Go) goParser Language.Go
|
||||||
|
|
||||||
|
callGraphRubyProject paths = runTaskWithOptions debugOptions $ do
|
||||||
|
let proxy = Proxy @'Language.Ruby
|
||||||
|
let lang = Language.Ruby
|
||||||
|
blobs <- catMaybes <$> traverse readFile (flip File lang <$> paths)
|
||||||
|
package <- parsePackage rubyParser (Project (takeDirectory (maybe "/" fst (uncons paths))) blobs lang [])
|
||||||
|
modules <- topologicalSort <$> runImportGraph proxy package
|
||||||
|
x <- runCallGraph proxy False modules package
|
||||||
|
pure (x, modules)
|
||||||
|
|
||||||
|
|
||||||
-- Evaluate a project consisting of the listed paths.
|
-- Evaluate a project consisting of the listed paths.
|
||||||
evaluateProject proxy parser lang paths = withOptions debugOptions $ \ config logger statter ->
|
evaluateProject proxy parser lang paths = withOptions debugOptions $ \ config logger statter ->
|
||||||
evaluateProject' (TaskConfig config logger statter) proxy parser lang paths
|
evaluateProject' (TaskConfig config logger statter) proxy parser lang paths
|
||||||
|
@ -9,7 +9,6 @@ import Algebra.Graph.Export hiding ((<+>))
|
|||||||
import Algebra.Graph.Export.Dot hiding (export)
|
import Algebra.Graph.Export.Dot hiding (export)
|
||||||
import Data.List
|
import Data.List
|
||||||
import Data.String
|
import Data.String
|
||||||
import Prologue
|
|
||||||
|
|
||||||
-- | Serialize a graph to DOT format.
|
-- | Serialize a graph to DOT format.
|
||||||
--
|
--
|
||||||
|
@ -12,8 +12,8 @@ import Data.Term
|
|||||||
import Data.These
|
import Data.These
|
||||||
import Diffing.Algorithm
|
import Diffing.Algorithm
|
||||||
import Diffing.Algorithm.RWS
|
import Diffing.Algorithm.RWS
|
||||||
import Test.Hspec
|
|
||||||
import Test.Hspec.LeanCheck
|
import Test.Hspec.LeanCheck
|
||||||
|
import SpecHelpers
|
||||||
|
|
||||||
spec :: Spec
|
spec :: Spec
|
||||||
spec = parallel $ do
|
spec = parallel $ do
|
||||||
|
@ -14,6 +14,7 @@ import Test.Hspec (Spec, describe, it, parallel)
|
|||||||
import Test.Hspec.Expectations.Pretty
|
import Test.Hspec.Expectations.Pretty
|
||||||
import Test.Hspec.LeanCheck
|
import Test.Hspec.LeanCheck
|
||||||
import Test.LeanCheck.Core
|
import Test.LeanCheck.Core
|
||||||
|
import SpecHelpers
|
||||||
|
|
||||||
spec :: Spec
|
spec :: Spec
|
||||||
spec = parallel $ do
|
spec = parallel $ do
|
||||||
|
47
test/Graphing/Calls/Spec.hs
Normal file
47
test/Graphing/Calls/Spec.hs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
{-# LANGUAGE PackageImports #-}
|
||||||
|
|
||||||
|
module Graphing.Calls.Spec ( spec ) where
|
||||||
|
|
||||||
|
import Prelude hiding (readFile)
|
||||||
|
import Prologue
|
||||||
|
import SpecHelpers hiding (readFile)
|
||||||
|
|
||||||
|
import Algebra.Graph
|
||||||
|
import Data.List (uncons)
|
||||||
|
|
||||||
|
import "semantic" Data.Graph (Graph (..), topologicalSort)
|
||||||
|
import Data.Graph.Vertex
|
||||||
|
import qualified Data.Language as Language
|
||||||
|
import Semantic.Config (defaultOptions)
|
||||||
|
import Semantic.Graph
|
||||||
|
import Semantic.IO
|
||||||
|
|
||||||
|
callGraphPythonProject paths = runTaskWithOptions defaultOptions $ do
|
||||||
|
let proxy = Proxy @'Language.Python
|
||||||
|
let lang = Language.Python
|
||||||
|
blobs <- catMaybes <$> traverse readFile (flip File lang <$> paths)
|
||||||
|
package <- parsePackage pythonParser (Project (takeDirectory (maybe "/" fst (uncons paths))) blobs lang [])
|
||||||
|
modules <- topologicalSort <$> runImportGraph proxy package
|
||||||
|
runCallGraph proxy False modules package
|
||||||
|
|
||||||
|
spec :: Spec
|
||||||
|
spec = describe "call graphing" $ do
|
||||||
|
|
||||||
|
let needs r n = unGraph r `shouldSatisfy` hasVertex (Variable n)
|
||||||
|
|
||||||
|
it "should work for a simple example" $ do
|
||||||
|
res <- callGraphPythonProject ["test/fixtures/python/graphing/simple/simple.py"]
|
||||||
|
res `needs` "magnus"
|
||||||
|
|
||||||
|
it "should evaluate both sides of an if-statement" $ do
|
||||||
|
res <- callGraphPythonProject ["test/fixtures/python/graphing/conditional/conditional.py"]
|
||||||
|
res `needs` "merle"
|
||||||
|
res `needs` "taako"
|
||||||
|
|
||||||
|
it "should continue even when a type error is encountered" $ do
|
||||||
|
res <- callGraphPythonProject ["test/fixtures/python/graphing/typeerror/typeerror.py"]
|
||||||
|
res `needs` "lup"
|
||||||
|
|
||||||
|
it "should continue when an unbound variable is encountered" $ do
|
||||||
|
res <- callGraphPythonProject ["test/fixtures/python/graphing/unbound/unbound.py"]
|
||||||
|
res `needs` "lucretia"
|
@ -83,11 +83,11 @@ spec = parallel $ do
|
|||||||
TS.ts_parser_loop_until_cancelled p nullPtr nullPtr 0
|
TS.ts_parser_loop_until_cancelled p nullPtr nullPtr 0
|
||||||
pure True
|
pure True
|
||||||
|
|
||||||
res <- timeout 1500 (wait churn)
|
res <- timeout 2500 (wait churn)
|
||||||
res `shouldBe` Nothing
|
res `shouldBe` Nothing
|
||||||
|
|
||||||
TS.ts_parser_set_enabled p (CBool 0)
|
TS.ts_parser_set_enabled p (CBool 0)
|
||||||
done <- timeout 1500 (wait churn)
|
done <- timeout 2500 (wait churn)
|
||||||
|
|
||||||
done `shouldBe` (Just True)
|
done `shouldBe` (Just True)
|
||||||
|
|
||||||
|
@ -16,6 +16,7 @@ import qualified Data.Term.Spec
|
|||||||
import qualified Diffing.Algorithm.RWS.Spec
|
import qualified Diffing.Algorithm.RWS.Spec
|
||||||
import qualified Diffing.Algorithm.SES.Spec
|
import qualified Diffing.Algorithm.SES.Spec
|
||||||
import qualified Diffing.Interpreter.Spec
|
import qualified Diffing.Interpreter.Spec
|
||||||
|
import qualified Graphing.Calls.Spec
|
||||||
import qualified Integration.Spec
|
import qualified Integration.Spec
|
||||||
import qualified Matching.Go.Spec
|
import qualified Matching.Go.Spec
|
||||||
import qualified Numeric.Spec
|
import qualified Numeric.Spec
|
||||||
@ -52,6 +53,7 @@ main = do
|
|||||||
describe "Diffing.Algorithm.RWS" Diffing.Algorithm.RWS.Spec.spec
|
describe "Diffing.Algorithm.RWS" Diffing.Algorithm.RWS.Spec.spec
|
||||||
describe "Diffing.Algorithm.SES" Diffing.Algorithm.SES.Spec.spec
|
describe "Diffing.Algorithm.SES" Diffing.Algorithm.SES.Spec.spec
|
||||||
describe "Diffing.Interpreter" Diffing.Interpreter.Spec.spec
|
describe "Diffing.Interpreter" Diffing.Interpreter.Spec.spec
|
||||||
|
describe "Graphing.Calls" Graphing.Calls.Spec.spec
|
||||||
describe "Matching" Matching.Go.Spec.spec
|
describe "Matching" Matching.Go.Spec.spec
|
||||||
describe "Numeric" Numeric.Spec.spec
|
describe "Numeric" Numeric.Spec.spec
|
||||||
describe "Rendering.TOC" Rendering.TOC.Spec.spec
|
describe "Rendering.TOC" Rendering.TOC.Spec.spec
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
{-# OPTIONS_GHC -fno-warn-orphans #-}
|
||||||
|
|
||||||
module SpecHelpers
|
module SpecHelpers
|
||||||
( module X
|
( module X
|
||||||
, runBuilder
|
, runBuilder
|
||||||
@ -44,6 +46,7 @@ import Data.Record as X
|
|||||||
import Data.Semilattice.Lower as X
|
import Data.Semilattice.Lower as X
|
||||||
import Data.Source as X
|
import Data.Source as X
|
||||||
import Data.Span as X
|
import Data.Span as X
|
||||||
|
import Data.String
|
||||||
import Data.Sum
|
import Data.Sum
|
||||||
import Data.Term as X
|
import Data.Term as X
|
||||||
import Parsing.Parser as X
|
import Parsing.Parser as X
|
||||||
@ -75,6 +78,11 @@ import Control.Exception (displayException)
|
|||||||
|
|
||||||
runBuilder = toStrict . toLazyByteString
|
runBuilder = toStrict . toLazyByteString
|
||||||
|
|
||||||
|
-- | This orphan instance is so we don't have to insert @name@ calls
|
||||||
|
-- in dozens and dozens of environment specs.
|
||||||
|
instance IsString Name where
|
||||||
|
fromString = name . fromString
|
||||||
|
|
||||||
-- | Returns an s-expression formatted diff for the specified FilePath pair.
|
-- | Returns an s-expression formatted diff for the specified FilePath pair.
|
||||||
diffFilePaths :: TaskConfig -> Both FilePath -> IO ByteString
|
diffFilePaths :: TaskConfig -> Both FilePath -> IO ByteString
|
||||||
diffFilePaths (TaskConfig config logger statter) paths = readFilePair paths >>= runTaskWithConfig config logger statter . runDiff SExpressionDiffRenderer . pure >>= either (die . displayException) (pure . runBuilder)
|
diffFilePaths (TaskConfig config logger statter) paths = readFilePair paths >>= runTaskWithConfig config logger statter . runDiff SExpressionDiffRenderer . pure >>= either (die . displayException) (pure . runBuilder)
|
||||||
|
@ -47,8 +47,8 @@ instance Example Property where
|
|||||||
Left e
|
Left e
|
||||||
| Just (LeanCheckException messages e') <- fromException e -> throw (addMessages messages e')
|
| Just (LeanCheckException messages e') <- fromException e -> throw (addMessages messages e')
|
||||||
| otherwise -> throw e
|
| otherwise -> throw e
|
||||||
Right (Just messages) -> pure $ Failure Nothing (Reason (concat messages))
|
Right (Just messages) -> pure $ Result "" (Failure Nothing (Reason (concat messages)))
|
||||||
Right Nothing -> pure Success
|
Right Nothing -> pure $ Result "" Success
|
||||||
where addMessages messages (HUnit.HUnitFailure loc r) = HUnit.HUnitFailure loc $ case r of
|
where addMessages messages (HUnit.HUnitFailure loc r) = HUnit.HUnitFailure loc $ case r of
|
||||||
HUnit.Reason s -> HUnit.Reason (intercalate "\n" messages ++ "\n" ++ s)
|
HUnit.Reason s -> HUnit.Reason (intercalate "\n" messages ++ "\n" ++ s)
|
||||||
HUnit.ExpectedButGot Nothing expected actual -> HUnit.ExpectedButGot (Just (concat messages)) expected actual
|
HUnit.ExpectedButGot Nothing expected actual -> HUnit.ExpectedButGot (Just (concat messages)) expected actual
|
||||||
|
6
test/fixtures/javascript/analysis/exports/lib.js
vendored
Normal file
6
test/fixtures/javascript/analysis/exports/lib.js
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
export function square(x) {
|
||||||
|
return x * x;
|
||||||
|
}
|
||||||
|
export function area(x, y) {
|
||||||
|
return x * y;
|
||||||
|
}
|
3
test/fixtures/javascript/analysis/exports/main.js
vendored
Normal file
3
test/fixtures/javascript/analysis/exports/main.js
vendored
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import { square, area } from 'lib';
|
||||||
|
console.log(square(11)); // 121
|
||||||
|
console.log(area(4, 3)); // 12
|
8
test/fixtures/python/graphing/conditional/conditional.py
vendored
Normal file
8
test/fixtures/python/graphing/conditional/conditional.py
vendored
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
cond = True
|
||||||
|
|
||||||
|
if cond:
|
||||||
|
def merle(): pass
|
||||||
|
merle()
|
||||||
|
else:
|
||||||
|
def taako(): pass
|
||||||
|
taako()
|
4
test/fixtures/python/graphing/simple/simple.py
vendored
Normal file
4
test/fixtures/python/graphing/simple/simple.py
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
def magnus():
|
||||||
|
return "string"
|
||||||
|
|
||||||
|
magnus()
|
5
test/fixtures/python/graphing/typeerror/typeerror.py
vendored
Normal file
5
test/fixtures/python/graphing/typeerror/typeerror.py
vendored
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
var = 1 + "thing"
|
||||||
|
|
||||||
|
def lup(): pass
|
||||||
|
|
||||||
|
lup()
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user