From bbcc924b34daa3691b1386ffda2fd03bacac6cab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Madeleine=20Sydney=20=C5=9Alaga?= Date: Sat, 22 Aug 2026 18:07:39 -0600 Subject: [PATCH] fix all the reader tests lol --- golden/read/bool/read | 44 +++++- golden/read/datum-comment/source.scm | 4 + golden/read/decimal/read | 33 ++++- golden/read/list-dot-flat/read | 55 +++++++- golden/read/list-flat/read | 88 ++++++++++-- golden/read/list/read | 132 ++++++++++++++++-- .../source.scm | 2 + golden/read/peculiar-identifier-sign/read | 22 ++- golden/read/string/read | 11 +- golden/read/typical-identifier-token/read | 55 +++++++- golden/read/typical-identifier/read | 99 +++++++++++-- src/Gyehoek/Jalmot.hs | 2 +- test/Gyehoek/Test/Sexp/Read.hs | 2 + 13 files changed, 499 insertions(+), 50 deletions(-) create mode 100644 golden/read/datum-comment/source.scm create mode 100644 golden/read/meta-splice-expression-interior-brace/source.scm diff --git a/golden/read/bool/read b/golden/read/bool/read index c37392f..c9bd1ea 100644 --- a/golden/read/bool/read +++ b/golden/read/bool/read @@ -1,5 +1,41 @@ -[ SynNone :< SimpleF ( SimpleBoolean True ) -, SynNone :< SimpleF ( SimpleBoolean True ) -, SynNone :< SimpleF ( SimpleBoolean False ) -, SynNone :< SimpleF ( SimpleBoolean False ) +[ MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/bool/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 1 + } + ) + } :< SimpleF ( SimpleBoolean True ) +, MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/bool/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 4 + } + ) + } :< SimpleF ( SimpleBoolean True ) +, MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/bool/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 10 + } + ) + } :< SimpleF ( SimpleBoolean False ) +, MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/bool/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 13 + } + ) + } :< SimpleF ( SimpleBoolean False ) ] \ No newline at end of file diff --git a/golden/read/datum-comment/source.scm b/golden/read/datum-comment/source.scm new file mode 100644 index 0000000..a870e40 --- /dev/null +++ b/golden/read/datum-comment/source.scm @@ -0,0 +1,4 @@ +#;(a datum comment can +span multiple lines) + +(but it ends here) diff --git a/golden/read/decimal/read b/golden/read/decimal/read index 36dd7be..4b23079 100644 --- a/golden/read/decimal/read +++ b/golden/read/decimal/read @@ -1,8 +1,35 @@ -[ SynNone :< SimpleF +[ MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/decimal/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 1 + } + ) + } :< SimpleF ( SimpleNumber 45.0 ) -, SynNone :< SimpleF +, MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/decimal/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 4 + } + ) + } :< SimpleF ( SimpleNumber 5667.0 ) -, SynNone :< SimpleF +, MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/decimal/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 10 + } + ) + } :< SimpleF ( SimpleNumber ( -123.0 ) ) diff --git a/golden/read/list-dot-flat/read b/golden/read/list-dot-flat/read index df2e6c9..c2f77de 100644 --- a/golden/read/list-dot-flat/read +++ b/golden/read/list-dot-flat/read @@ -1,16 +1,61 @@ -[ SynNone :< CompoundF +[ MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list-dot-flat/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 1 + } + ) + } :< CompoundF ( DotListF ( - ( SynNone :< SimpleF + ( MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list-dot-flat/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 2 + } + ) + } :< SimpleF ( SimpleSymbol "가" ) ) :| - [ SynNone :< SimpleF + [ MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list-dot-flat/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 5 + } + ) + } :< SimpleF ( SimpleSymbol "나" ) - , SynNone :< SimpleF + , MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list-dot-flat/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 8 + } + ) + } :< SimpleF ( SimpleSymbol "다" ) ] ) - ( SynNone :< SimpleF + ( MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list-dot-flat/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 13 + } + ) + } :< SimpleF ( SimpleSymbol "라" ) ) ) diff --git a/golden/read/list-flat/read b/golden/read/list-flat/read index e933982..c1b1a96 100644 --- a/golden/read/list-flat/read +++ b/golden/read/list-flat/read @@ -1,18 +1,90 @@ -[ SynNone :< CompoundF +[ MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list-flat/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 1 + } + ) + } :< CompoundF ( ListF Ordinary - [ SynNone :< SimpleF + [ MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list-flat/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 2 + } + ) + } :< SimpleF ( SimpleSymbol "가" ) - , SynNone :< SimpleF + , MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list-flat/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 5 + } + ) + } :< SimpleF ( SimpleSymbol "나" ) - , SynNone :< SimpleF + , MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list-flat/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 8 + } + ) + } :< SimpleF ( SimpleSymbol "다" ) - , SynNone :< SimpleF + , MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list-flat/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 11 + } + ) + } :< SimpleF ( SimpleSymbol "라" ) - , SynNone :< SimpleF + , MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list-flat/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 14 + } + ) + } :< SimpleF ( SimpleNumber 1.0 ) - , SynNone :< SimpleF + , MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list-flat/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 16 + } + ) + } :< SimpleF ( SimpleNumber 2.0 ) - , SynNone :< SimpleF + , MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list-flat/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 18 + } + ) + } :< SimpleF ( SimpleNumber 3.0 ) ] ) diff --git a/golden/read/list/read b/golden/read/list/read index 2043de1..6629342 100644 --- a/golden/read/list/read +++ b/golden/read/list/read @@ -1,37 +1,145 @@ -[ SynNone :< CompoundF +[ MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 1 + } + ) + } :< CompoundF ( DotListF ( - ( SynNone :< SimpleF + ( MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 2 + } + ) + } :< SimpleF ( SimpleSymbol "a" ) ) :| - [ SynNone :< SimpleF + [ MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 4 + } + ) + } :< SimpleF ( SimpleSymbol "b" ) - , SynNone :< CompoundF + , MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 6 + } + ) + } :< CompoundF ( ListF Ordinary - [ SynNone :< SimpleF + [ MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 7 + } + ) + } :< SimpleF ( SimpleSymbol "c" ) - , SynNone :< SimpleF + , MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 9 + } + ) + } :< SimpleF ( SimpleSymbol "d" ) ] ) ] ) - ( SynNone :< CompoundF + ( MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 14 + } + ) + } :< CompoundF ( ListF Ordinary - [ SynNone :< SimpleF + [ MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 15 + } + ) + } :< SimpleF ( SimpleSymbol "가" ) - , SynNone :< CompoundF + , MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 18 + } + ) + } :< CompoundF ( DotListF ( - ( SynNone :< SimpleF + ( MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 19 + } + ) + } :< SimpleF ( SimpleSymbol "나" ) ) :| [] ) - ( SynNone :< SimpleF + ( MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 24 + } + ) + } :< SimpleF ( SimpleSymbol "다" ) ) ) - , SynNone :< SimpleF + , MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/list/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 28 + } + ) + } :< SimpleF ( SimpleSymbol "라" ) ] ) diff --git a/golden/read/meta-splice-expression-interior-brace/source.scm b/golden/read/meta-splice-expression-interior-brace/source.scm new file mode 100644 index 0000000..757da8a --- /dev/null +++ b/golden/read/meta-splice-expression-interior-brace/source.scm @@ -0,0 +1,2 @@ +##{case 123 of { 123 -> blah + ; xyz -> flah }} diff --git a/golden/read/peculiar-identifier-sign/read b/golden/read/peculiar-identifier-sign/read index 9f2cdd5..0321ef5 100644 --- a/golden/read/peculiar-identifier-sign/read +++ b/golden/read/peculiar-identifier-sign/read @@ -1,5 +1,23 @@ -[ SynNone :< SimpleF +[ MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/peculiar-identifier-sign/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 1 + } + ) + } :< SimpleF ( SimpleSymbol "+" ) -, SynNone :< SimpleF +, MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/peculiar-identifier-sign/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 3 + } + ) + } :< SimpleF ( SimpleSymbol "-" ) ] \ No newline at end of file diff --git a/golden/read/string/read b/golden/read/string/read index c1f307e..aed8eb0 100644 --- a/golden/read/string/read +++ b/golden/read/string/read @@ -1,3 +1,12 @@ -[ SynNone :< SimpleF +[ MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/string/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 1 + } + ) + } :< SimpleF ( SimpleString "가나다라" ) ] \ No newline at end of file diff --git a/golden/read/typical-identifier-token/read b/golden/read/typical-identifier-token/read index 3a65b71..744edef 100644 --- a/golden/read/typical-identifier-token/read +++ b/golden/read/typical-identifier-token/read @@ -1,12 +1,57 @@ -[ SynNone :< SimpleF +[ MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/typical-identifier-token/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 1 + } + ) + } :< SimpleF ( SimpleSymbol "abc" ) -, SynNone :< SimpleF +, MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/typical-identifier-token/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 4 + } + ) + } :< SimpleF ( SimpleString "xyz" ) -, SynNone :< SimpleF +, MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/typical-identifier-token/source.scm" + , sourceLine = Pos 2 + , sourceColumn = Pos 1 + } + ) + } :< SimpleF ( SimpleSymbol "수학" ) -, SynNone :< CompoundF +, MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/typical-identifier-token/source.scm" + , sourceLine = Pos 2 + , sourceColumn = Pos 5 + } + ) + } :< CompoundF ( ListF Ordinary - [ SynNone :< SimpleF + [ MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/typical-identifier-token/source.scm" + , sourceLine = Pos 2 + , sourceColumn = Pos 6 + } + ) + } :< SimpleF ( SimpleSymbol "數學" ) ] ) diff --git a/golden/read/typical-identifier/read b/golden/read/typical-identifier/read index 676bce0..2ee59d6 100644 --- a/golden/read/typical-identifier/read +++ b/golden/read/typical-identifier/read @@ -1,19 +1,100 @@ -[ SynNone :< SimpleF +[ MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/typical-identifier/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 1 + } + ) + } :< SimpleF ( SimpleSymbol "abc" ) -, SynNone :< SimpleF +, MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/typical-identifier/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 5 + } + ) + } :< SimpleF ( SimpleSymbol "bala-hwa$" ) -, SynNone :< SimpleF +, MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/typical-identifier/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 15 + } + ) + } :< SimpleF ( SimpleSymbol "x!!!" ) -, SynNone :< SimpleF +, MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/typical-identifier/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 20 + } + ) + } :< SimpleF ( SimpleSymbol "z" ) -, SynNone :< SimpleF +, MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/typical-identifier/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 22 + } + ) + } :< SimpleF ( SimpleSymbol "z123" ) -, SynNone :< SimpleF +, MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/typical-identifier/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 27 + } + ) + } :< SimpleF ( SimpleSymbol "나는너무졸리다" ) -, SynNone :< SimpleF +, MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/typical-identifier/source.scm" + , sourceLine = Pos 1 + , sourceColumn = Pos 42 + } + ) + } :< SimpleF ( SimpleSymbol "學" ) -, SynNone :< SimpleF +, MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/typical-identifier/source.scm" + , sourceLine = Pos 3 + , sourceColumn = Pos 1 + } + ) + } :< SimpleF ( SimpleSymbol "車室." ) -, SynNone :< SimpleF +, MkAnn + { syntax = SynNone + , position = Just + ( SourcePos + { sourceName = "golden/read/typical-identifier/source.scm" + , sourceLine = Pos 5 + , sourceColumn = Pos 1 + } + ) + } :< SimpleF ( SimpleSymbol "三個女人一臺戲。" ) ] \ No newline at end of file diff --git a/src/Gyehoek/Jalmot.hs b/src/Gyehoek/Jalmot.hs index 2a7ef0d..f6acb66 100644 --- a/src/Gyehoek/Jalmot.hs +++ b/src/Gyehoek/Jalmot.hs @@ -57,4 +57,4 @@ instance Exception AJalmot where instance Exception AJalmotCS where backtraceDesired = const False displayException (MkAJalmotCS cs jm) = - "\n" <> displayException jm <> "\n\n" <> prettyCallStack cs + "\n" <> displayException jm <> "\n\n" <> prettyCallStack cs <> "\n" diff --git a/test/Gyehoek/Test/Sexp/Read.hs b/test/Gyehoek/Test/Sexp/Read.hs index 21ae325..d85d53e 100644 --- a/test/Gyehoek/Test/Sexp/Read.hs +++ b/test/Gyehoek/Test/Sexp/Read.hs @@ -21,6 +21,8 @@ brokenReaderTests = [ "delimited-identifier" , "string-line-continuation" , "peculiar-identifier-dot" + , "meta-splice-expression-interior-brace" + , "datum-comment" ] test_golden :: IO TestTree