From 78d65eb3e53502d409ae679f1bf1e64eca753aac Mon Sep 17 00:00:00 2001 From: uta8a Date: Wed, 4 Aug 2021 19:05:20 +0900 Subject: [PATCH 1/3] fix(cxx): Remove unnecessary paren in index --- src/Jikka/CPlusPlus/Format.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Jikka/CPlusPlus/Format.hs b/src/Jikka/CPlusPlus/Format.hs index 6ff4485b..753398fe 100644 --- a/src/Jikka/CPlusPlus/Format.hs +++ b/src/Jikka/CPlusPlus/Format.hs @@ -234,7 +234,7 @@ formatExpr = \case At -> case args of [e1, e2] -> let e1' = formatExpr' FunCallPrec e1 - e2' = formatExpr' FunCallPrec e2 + e2' = formatExpr' ParenPrec e2 in (e1' ++ "[" ++ e2' ++ "]", FunCallPrec) _ -> error $ "Jikka.CPlusPlus.Language.Format.formatExpr: wrong number of arguments for subscription: " ++ show (length args) Cast t -> call $ formatType t From 741f68970518c32f1f4d0ce80fa2593ffeca4ccf Mon Sep 17 00:00:00 2001 From: uta8a Date: Thu, 5 Aug 2021 17:48:31 +0900 Subject: [PATCH 2/3] fix(cxx): add test (no unnecessary paren in index) --- test/Jikka/CPlusPlus/FormatSpec.hs | 89 ++++++++++++++++++++---------- 1 file changed, 60 insertions(+), 29 deletions(-) diff --git a/test/Jikka/CPlusPlus/FormatSpec.hs b/test/Jikka/CPlusPlus/FormatSpec.hs index 534972f1..5ad351b7 100644 --- a/test/Jikka/CPlusPlus/FormatSpec.hs +++ b/test/Jikka/CPlusPlus/FormatSpec.hs @@ -12,33 +12,64 @@ run'' :: Program -> [String] run'' prog = dropWhile ("#include" `isPrefixOf`) (lines (run' prog)) spec :: Spec -spec = describe "run" $ do - it "works" $ do - let program = - Program - [ FunDef - TyInt64 - (VarName "solve") - [(TyInt32, VarName "n")] - [ Declare TyInt64 (VarName "x") (DeclareCopy (Lit (LitInt64 0))), - For - TyInt32 - (VarName "i") - (Lit (LitInt32 0)) - (BinOp LessThan (Var (VarName "i")) (Var (VarName "n"))) - (AssignIncr (LeftVar (VarName "i"))) - [ Assign (AssignExpr AddAssign (LeftVar (VarName "x")) (Call (Cast TyInt64) [Var (VarName "i")])) - ], - Return (Var (VarName "x")) - ] +spec = do + describe "run" $ do + it "works" $ do + let program = + Program + [ FunDef + TyInt64 + (VarName "solve") + [(TyInt32, VarName "n")] + [ Declare TyInt64 (VarName "x") (DeclareCopy (Lit (LitInt64 0))), + For + TyInt32 + (VarName "i") + (Lit (LitInt32 0)) + (BinOp LessThan (Var (VarName "i")) (Var (VarName "n"))) + (AssignIncr (LeftVar (VarName "i"))) + [ Assign (AssignExpr AddAssign (LeftVar (VarName "x")) (Call (Cast TyInt64) [Var (VarName "i")])) + ], + Return (Var (VarName "x")) + ] + ] + let formatted = + [ "int64_t solve(int32_t n) {", + " int64_t x = 0;", + " for (int32_t i = 0; i < n; ++ i) {", + " x += int64_t(i);", + " }", + " return x;", + "}" ] - let formatted = - [ "int64_t solve(int32_t n) {", - " int64_t x = 0;", - " for (int32_t i = 0; i < n; ++ i) {", - " x += int64_t(i);", - " }", - " return x;", - "}" - ] - run'' program `shouldBe` formatted + run'' program `shouldBe` formatted + describe "no unnecessary paren in index" $ do + it "works" $ do + let program = + Program + [ FunDef + TyInt64 + (VarName "solve") + [(TyInt32, VarName "n"), (TyVector TyInt64, VarName "h")] + [ Declare TyInt64 (VarName "x") (DeclareCopy (Lit (LitInt64 0))), + For + TyInt32 + (VarName "i") + (Lit (LitInt32 2)) + (BinOp LessThan (Var (VarName "i")) (Var (VarName "n"))) + (AssignIncr (LeftVar (VarName "i"))) + [ Assign (AssignExpr AddAssign (LeftVar (VarName "x")) (Call At [Var (VarName "h"), BinOp Sub (Var (VarName "i")) (Lit (LitInt32 2))])) + ], + Return (Var (VarName "x")) + ] + ] + let formatted = + [ "int64_t solve(int32_t n, std::vector h) {", + " int64_t x = 0;", + " for (int32_t i = 2; i < n; ++ i) {", + " x += h[i - 2];", + " }", + " return x;", + "}" + ] + run'' program `shouldBe` formatted \ No newline at end of file From 76d6a613ef3afdcafff2690752f3da24875a86ff Mon Sep 17 00:00:00 2001 From: uta8a Date: Thu, 5 Aug 2021 17:58:05 +0900 Subject: [PATCH 3/3] fix: add newline --- test/Jikka/CPlusPlus/FormatSpec.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/Jikka/CPlusPlus/FormatSpec.hs b/test/Jikka/CPlusPlus/FormatSpec.hs index 5ad351b7..bc0c89a0 100644 --- a/test/Jikka/CPlusPlus/FormatSpec.hs +++ b/test/Jikka/CPlusPlus/FormatSpec.hs @@ -72,4 +72,4 @@ spec = do " return x;", "}" ] - run'' program `shouldBe` formatted \ No newline at end of file + run'' program `shouldBe` formatted