summaryrefslogtreecommitdiff
path: root/source/Test
diff options
context:
space:
mode:
authoradelon <22380201+adelon@users.noreply.github.com>2026-07-27 21:35:56 +0200
committeradelon <22380201+adelon@users.noreply.github.com>2026-07-27 22:12:57 +0200
commit273cbcb55fa2b6ddec15129d0b205d3b6074bf25 (patch)
treef3dd966614ac85f4568f5996a79284b8e4a5699d /source/Test
parent3f38954d33954a79f8c2faa55a84c1ecbbe729f1 (diff)
Make abbreviations and definitions transactional
Diffstat (limited to 'source/Test')
-rw-r--r--source/Test/Unit/Meaning.hs67
1 files changed, 67 insertions, 0 deletions
diff --git a/source/Test/Unit/Meaning.hs b/source/Test/Unit/Meaning.hs
index dfff442..2117b0c 100644
--- a/source/Test/Unit/Meaning.hs
+++ b/source/Test/Unit/Meaning.hs
@@ -7,6 +7,7 @@ import Meaning
import Report.Location
import Syntax.Abstract qualified as Raw
import Syntax.Internal qualified as Sem
+import Syntax.LexicalPhrase (unsafeReadPhraseSgPl)
import Bound (instantiate)
import Test.Tasty
@@ -50,6 +51,9 @@ unitTests =
assertFailure
"expected relation arity validation to fail"
, testCase
+ "functional definitions reject quantified terms with source context"
+ quantifiedFunctionalDefinition
+ , testCase
"abbreviations reject duplicate parameters with source context"
duplicateAbbreviationParameters
, testCase
@@ -60,6 +64,69 @@ unitTests =
orderedAbbreviationParameters
]
+quantifiedFunctionalDefinition :: Assertion
+quantifiedFunctionalDefinition =
+ case meaning [definitionBlock] of
+ Left
+ (GlossDefnError
+ actualLocation
+ DefnErrorQuantifiedRhsTerm
+ actualMarker) -> do
+ assertEqual
+ "quantified term location"
+ termLocation
+ actualLocation
+ assertEqual
+ "definition marker"
+ definitionMarker
+ actualMarker
+ Left err ->
+ assertFailure
+ ("expected a quantified definition term error, got "
+ <> show err)
+ Right _ ->
+ assertFailure
+ "expected quantified definition term validation to fail"
+ where
+ definitionBlock =
+ Raw.BlockDefn
+ blockLocation
+ Nothing
+ definitionMarker
+ ( Raw.DefnFun
+ []
+ ( Raw.Fun
+ blockLocation
+ ( Raw.mkLexicalItemSgPl
+ (unsafeReadPhraseSgPl "value[/s] of ?")
+ "quantified_function"
+ )
+ ["argument"]
+ )
+ Nothing
+ ( Raw.TermQuantified
+ Raw.Existentially
+ termLocation
+ ( Raw.NounPhrase
+ []
+ ( Raw.Noun
+ termLocation
+ ( Raw.mkLexicalItemSgPl
+ (unsafeReadPhraseSgPl "set[/s]")
+ "set"
+ )
+ []
+ )
+ Nothing
+ []
+ Nothing
+ )
+ )
+ )
+ definitionMarker = "quantified_definition"
+ blockLocation = mkLocation (FileId 44) 8 1
+ termLocation = mkLocation (FileId 44) 8 29
+
duplicateAbbreviationParameters :: Assertion
duplicateAbbreviationParameters = do
let marker = "duplicate_abbreviation"