cimple 0.0.30 → 0.0.31
raw patch · 3 files changed
+14/−13 lines, 3 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
+ Language.Cimple.TranslationUnit: type TranslationUnit text = (FilePath, [Node (Lexeme text)])
Files
- cimple.cabal +2/−2
- src/Language/Cimple/Parser.y +5/−11
- test/Language/Cimple/ParserSpec.hs +7/−0
cimple.cabal view
@@ -1,5 +1,5 @@ name: cimple-version: 0.0.30+version: 0.0.31 synopsis: Simple C-like programming language homepage: https://toktok.github.io/ license: GPL-3@@ -31,6 +31,7 @@ Language.Cimple.Pretty Language.Cimple.Program Language.Cimple.TraverseAst+ Language.Cimple.TranslationUnit other-modules: Language.Cimple.Annot@@ -49,7 +50,6 @@ Language.Cimple.PrettyCommon Language.Cimple.SemCheck.Includes Language.Cimple.Tokens- Language.Cimple.TranslationUnit Language.Cimple.TreeParser build-depends:
src/Language/Cimple/Parser.y view
@@ -692,18 +692,12 @@ QualType(leafType) : bitwise ID_STD_TYPE { Fix (TyBitwise (Fix (TyStd $2))) } | force QualType(leafType) { Fix (TyForce $2) }-| leafType ConstQual { ($2 $1) }-| leafType ConstQual '*' { (tyPointer ($2 $1)) }-| leafType ConstQual '*' QualList { $4 (tyPointer ($2 $1)) }-| leafType ConstQual '*' QualMaybe '*' QualMaybe { $6 (tyPointer ($4 (tyPointer ($2 $1)))) }-| const leafType { (tyConst $2) }-| const leafType '*' QualMaybe { $4 (tyPointer (tyConst $2)) }-| const leafType '*' QualMaybe '*' QualMaybe { $6 (tyPointer ($4 (tyPointer (tyConst $2)))) }+| PtrType(leafType) { $1 } -ConstQual :: { NonTerm -> NonTerm }-ConstQual-: { id }-| const { tyConst }+PtrType(leafType)+: leafType QualMaybe { $2 $1 }+| const leafType QualMaybe { $3 (tyConst $2) }+| PtrType(leafType) '*' QualMaybe { $3 (tyPointer $1) } QualList :: { NonTerm -> NonTerm } QualList
test/Language/Cimple/ParserSpec.hs view
@@ -1,3 +1,4 @@+{-# LANGUAGE LambdaCase #-} {-# LANGUAGE OverloadedStrings #-} module Language.Cimple.ParserSpec where @@ -139,6 +140,12 @@ it "should parse a comment" $ do let ast = parseText "/* hello */" ast `shouldSatisfy` isRight1++ it "should parse postfix nullability on a pointer" $ do+ let ast = parseText "void foo(int _Nonnull *p);"+ case ast of+ Right [Fix (FunctionDecl _ (Fix (FunctionPrototype _ _ [Fix (VarDecl (Fix (TyPointer (Fix (TyNonnull (Fix (TyStd _)))))) (L _ _ "p") [])])))] -> return ()+ _ -> expectationFailure $ "Unexpected AST: " ++ show ast it "supports single declarators" $ do let ast = parseText "int main() { int a; }"