diff options
| author | adelon <22380201+adelon@users.noreply.github.com> | 2026-07-27 21:35:56 +0200 |
|---|---|---|
| committer | adelon <22380201+adelon@users.noreply.github.com> | 2026-07-27 22:12:57 +0200 |
| commit | 273cbcb55fa2b6ddec15129d0b205d3b6074bf25 (patch) | |
| tree | f3dd966614ac85f4568f5996a79284b8e4a5699d /source/Test | |
| parent | 3f38954d33954a79f8c2faa55a84c1ecbbe729f1 (diff) | |
Make abbreviations and definitions transactional
Diffstat (limited to 'source/Test')
| -rw-r--r-- | source/Test/Unit/Meaning.hs | 67 |
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" |
