Add types for name analysis

This commit is contained in:
2024-07-26 12:22:07 +02:00
parent bf774475cc
commit ce7652c618
7 changed files with 130 additions and 32 deletions

View File

@ -29,21 +29,21 @@ spec =
in actual `shouldParse` expected
it "parses array type definition" $
let expected = Program [TypeDefinition "t" $ ArrayType (NamedType "integer") 10]
actual = parse programP "" "type t = array[10] of integer"
let expected = Program [TypeDefinition "t" $ ArrayType 10 (NamedType "int")]
actual = parse programP "" "type t = array[10] of int"
in actual `shouldParse` expected
it "parses parameters" $
let given = "proc main(x: integer) {}"
parameters = [Parameter "x" (NamedType "integer") False]
let given = "proc main(x: int) {}"
parameters = [Parameter "x" (NamedType "int") False]
expected = Program [ProcedureDefinition "main" parameters [] []]
actual = parse programP "" given
in actual `shouldParse` expected
it "parses ref parameters" $
let given = "proc main(x: integer, ref y: boolean) {}"
let given = "proc main(x: int, ref y: boolean) {}"
parameters =
[ Parameter "x" (NamedType "integer") False
[ Parameter "x" (NamedType "int") False
, Parameter "y" (NamedType "boolean") True
]
expected = Program [ProcedureDefinition "main" parameters [] []]
@ -51,7 +51,7 @@ spec =
in actual `shouldParse` expected
it "parses variable declaration" $
let given = "proc main() { var x: integer; }"
let given = "proc main() { var x: int; }"
expected (Program [ProcedureDefinition _ _ variables _]) =
not $ null variables
expected _ = False
@ -59,11 +59,11 @@ spec =
in actual `parseSatisfies` expected
it "parses negation" $
let given = "proc main(x: integer) { var y: integer; y := -x; }"
parameters = pure $ Parameter "x" (NamedType "integer") False
let given = "proc main(x: int) { var y: int; y := -x; }"
parameters = pure $ Parameter "x" (NamedType "int") False
variables = pure
$ VariableDeclaration "y"
$ NamedType "integer"
$ NamedType "int"
body = pure
$ AssignmentStatement (VariableExpression "y")
$ NegationExpression
@ -91,10 +91,10 @@ spec =
in actual `shouldParse` expected
it "parses hexadecimals" $
let given = "proc main() { var x: integer; x := 0x10; }"
let given = "proc main() { var x: int; x := 0x10; }"
variables = pure
$ VariableDeclaration "x"
$ NamedType "integer"
$ NamedType "int"
body = pure
$ AssignmentStatement (VariableExpression "x")
$ LiteralExpression (HexadecimalLiteral 16)