From d3d77e58aa407ed55fdbdf2af8c02b636bf5d882 Mon Sep 17 00:00:00 2001 From: SAY-5 Date: Mon, 11 May 2026 18:18:12 -0700 Subject: [PATCH] fix: include closing paren in TParens end position Fixes #12 Signed-off-by: SAY-5 --- src/Compiler/Parse/Type.gren | 2 +- tests/src/Test/Compiler/Parse/Type.gren | 23 +++++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/src/Compiler/Parse/Type.gren b/src/Compiler/Parse/Type.gren index b0f6a94..dc0277d 100644 --- a/src/Compiler/Parse/Type.gren +++ b/src/Compiler/Parse/Type.gren @@ -171,8 +171,8 @@ term = |> Parser.skip (Parser.chompChar '(' (ExpectedChar '(')) |> Parser.skip spaceParser |> Parser.keep expression - |> Parser.keep Parser.getPosition |> Parser.skip (Parser.chompChar ')' (ExpectedChar ')')) + |> Parser.keep Parser.getPosition , Parser.succeed (\record end -> SourcePosition.at start end record) |> Parser.keep recordParser |> Parser.keep Parser.getPosition diff --git a/tests/src/Test/Compiler/Parse/Type.gren b/tests/src/Test/Compiler/Parse/Type.gren index 5d20ba3..ae92909 100644 --- a/tests/src/Test/Compiler/Parse/Type.gren +++ b/tests/src/Test/Compiler/Parse/Type.gren @@ -91,6 +91,19 @@ tests = { row = 1, col = 3 } (AST.TVar "a") ) + , test "Parenthesized end position includes closing paren" <| \_ -> + Parser.run PT.expression Context.empty "(a)" + |> expectLocatedExpression + (SourcePosition.at + { row = 1, col = 1 } + { row = 1, col = 4 } + (AST.TParens <| + SourcePosition.at + { row = 1, col = 2 } + { row = 1, col = 3 } + (AST.TVar "a") + ) + ) , test "Empty Record" <| \_ -> Parser.run PT.expression Context.empty "{ }" |> expectExpression @@ -286,3 +299,13 @@ expectExpression expected result = Ok { value } -> Expect.equal expected value + + +expectLocatedExpression : (SourcePosition.Located a) -> Result (Array (Parser.DeadEnd c e)) (SourcePosition.Located a) -> Expectation +expectLocatedExpression expected result = + when result is + Err err -> + Expect.fail (Debug.toString err) + + Ok value -> + Expect.equal expected value