Parens removed on types and infix symbols work almost, just need to adapt in LLVM
This commit is contained in:
parent
c309c439cb
commit
0dc06eaf80
10 changed files with 494 additions and 437 deletions
|
|
@ -4,19 +4,26 @@
|
|||
|
||||
module TestReportForall (testReportForall, test) where
|
||||
|
||||
import AnnForall (annotateForall)
|
||||
import Control.Monad ((<=<))
|
||||
import qualified DoStrings as D
|
||||
import Grammar.ErrM (Err, pattern Bad, pattern Ok)
|
||||
import Grammar.Layout (resolveLayout)
|
||||
import Grammar.Par (myLexer, pProgram)
|
||||
import Grammar.Print (printTree)
|
||||
import Renamer.Renamer (rename)
|
||||
import ReportForall (reportForall)
|
||||
import Test.Hspec (describe, hspec, shouldBe,
|
||||
shouldNotSatisfy, shouldSatisfy,
|
||||
shouldThrow, specify)
|
||||
import TypeChecker.TypeChecker (TypeChecker (Bi, Hm))
|
||||
import AnnForall (annotateForall)
|
||||
import Control.Monad ((<=<))
|
||||
import Desugar.Desugar (desugar)
|
||||
import DoStrings qualified as D
|
||||
import Grammar.ErrM (Err, pattern Bad, pattern Ok)
|
||||
import Grammar.Layout (resolveLayout)
|
||||
import Grammar.Par (myLexer, pProgram)
|
||||
import Grammar.Print (printTree)
|
||||
import Renamer.Renamer (rename)
|
||||
import ReportForall (reportForall)
|
||||
import Test.Hspec (
|
||||
describe,
|
||||
hspec,
|
||||
shouldBe,
|
||||
shouldNotSatisfy,
|
||||
shouldSatisfy,
|
||||
shouldThrow,
|
||||
specify,
|
||||
)
|
||||
import TypeChecker.TypeChecker (TypeChecker (Bi, Hm))
|
||||
|
||||
testReportForall = describe "Test ReportForall" $ do
|
||||
rp_unused1
|
||||
|
|
@ -25,23 +32,23 @@ testReportForall = describe "Test ReportForall" $ do
|
|||
|
||||
test = hspec testReportForall
|
||||
|
||||
rp_unused1 = specify "Unused forall 1" $
|
||||
"g : forall a. forall a. a -> (forall a. a -> a) -> a"
|
||||
`shouldBeErrBi`
|
||||
"Unused forall"
|
||||
rp_unused1 =
|
||||
specify "Unused forall 1" $
|
||||
"g : forall a. forall a. a -> (forall a. a -> a) -> a"
|
||||
`shouldBeErrBi` "Unused forall"
|
||||
|
||||
rp_unused2 = specify "Unused forall 2" $
|
||||
"g : forall a. (forall a. a -> a) -> Int"
|
||||
`shouldBeErrBi`
|
||||
"Unused forall"
|
||||
rp_unused2 =
|
||||
specify "Unused forall 2" $
|
||||
"g : forall a. (forall a. a -> a) -> Int"
|
||||
`shouldBeErrBi` "Unused forall"
|
||||
|
||||
rp_forall = specify "Rank2 forall with Hm" $
|
||||
"f : a -> b -> (forall a. a -> a) -> a"
|
||||
`shouldBeErrHm`
|
||||
"Higher rank forall not allowed"
|
||||
rp_forall =
|
||||
specify "Rank2 forall with Hm" $
|
||||
"f : a -> b -> (forall a. a -> a) -> a"
|
||||
`shouldBeErrHm` "Higher rank forall not allowed"
|
||||
|
||||
shouldBeErrBi = shouldBeErr Bi
|
||||
shouldBeErrHm = shouldBeErr Hm
|
||||
shouldBeErr tc s err = run tc s `shouldBe` Bad err
|
||||
|
||||
run tc = reportForall tc <=< pProgram . resolveLayout True . myLexer
|
||||
run tc = reportForall tc <=< fmap desugar . pProgram . resolveLayout True . myLexer
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue