Neil Brown
4ef1ff7196
Changed to a state monad for warnings, and added a runPassM function to remove duplicate code for running passes
2008-04-03 12:21:59 +00:00
Neil Brown
20843f70a4
Corrected all the tests to use the new PassM monad
2008-03-10 17:07:48 +00:00
Neil Brown
d66fb79796
Fixed some unused module import warnings, now that PassM is not build of monad transformers
2008-03-10 17:19:45 +00:00
Adam Sampson
7525138c96
Defined types for tree traversals, and moved them to their own file.
...
We now have three kinds of canned tree traversals, all of which are smart about
which types they're applied to: explicit-descent transformations,
implicit-descent transformations, and implicit-descent checks. I've only
provided depth-first application of the latter two, but we could do
breadth-first in the future if necessary.
2008-04-01 12:01:09 +00:00
Adam Sampson
3283b7db41
Remove the Type/AbbrevMode information from Actual*.
...
It's redundant, since you can always compute them from the variable, and it
makes the code that deals with actuals rather cleaner.
On the other hand, it slightly complicates some of the tests, because any names
you use in an Actual need to be defined...
2008-03-26 18:16:09 +00:00
Adam Sampson
b296706bea
Update Rain typechecker to match isIntegerType change.
...
isIntegerType now recognises Time as an integral type, so the rules for Time
operations in the Rain typechecker needed updating.
2008-03-26 14:55:15 +00:00
Adam Sampson
b36068b815
Move retypes check into the SpecType checker, and update the pass list.
...
This completes the occam typechecker.
2008-03-26 14:39:12 +00:00
Adam Sampson
ef329e3ed0
Check SpecTypes.
2008-03-26 14:20:35 +00:00
Adam Sampson
c9cb7d2bf9
Check Proc calls.
2008-03-26 12:26:04 +00:00
Neil Brown
c37e183879
Added support for a not-equals operator in Rain
2008-03-24 23:44:40 +00:00
Adam Sampson
b672900f46
Check Case, Alt, and all the trivial processes.
2008-03-25 17:27:33 +00:00
Adam Sampson
6861b22da6
Check timer operations.
2008-03-25 16:45:25 +00:00
Adam Sampson
d7e829b4c6
Check assignments.
2008-03-25 16:26:09 +00:00
Adam Sampson
b3e3308b3e
Implement channel IO checks, and refactor OccamTypes (again).
2008-03-25 15:56:03 +00:00
Neil Brown
8fe152bf98
Merged the type-checking on time-related statements in Rain into the pass that checks types in communications
2008-03-24 15:15:28 +00:00
Neil Brown
eb50c010b2
Fixed the tests for parsing time-related stuff in Rain to match the recent changes
2008-03-24 14:27:46 +00:00
Neil Brown
cbbafffbd2
Changed Rain to use the new timer type rather than things like the GetTime statement
2008-03-24 13:50:14 +00:00
Neil Brown
c68aa42277
Added a sub-type to Timers, to support multiple types
2008-03-23 22:20:16 +00:00
Neil Brown
74a5cf52a7
Stopped constants being assigned to in the type-checker for Rain
2008-03-23 12:15:00 +00:00
Neil Brown
b316a7d3f4
Added some tests for checking that constants can't be assigned to in Rain
2008-03-23 12:14:34 +00:00
Neil Brown
c1479bc1a8
Fixed the list of excluded Rain things by removing IntrinsicFunctionCall from the list
2008-03-23 11:48:33 +00:00
Neil Brown
1650d55d4e
Added the functionTypesChecked property to the dummy occam pass
2008-03-23 11:47:59 +00:00
Neil Brown
78c2160eb4
Fixed the type of a function name to avoid confusing the pass to remove free names later on
2008-03-23 00:11:11 +00:00
Neil Brown
dd7b0268b2
Added a new property (functionTypesChecked) to help fix the pass ordering
2008-03-23 00:09:01 +00:00
Neil Brown
7a7b60449c
Enhanced an error message in RainTypes
2008-03-22 19:04:34 +00:00
Neil Brown
e767e33190
Added support for some intrinsic (time-related) functions in Rain
2008-03-22 18:58:10 +00:00
Neil Brown
230db2de08
Added support for specifications at the start of functions without ruining the check for a return statement
2008-03-22 18:57:23 +00:00
Neil Brown
ae142a94e1
Added support for uniquifying function arguments to the Rain passes
2008-03-22 18:34:07 +00:00
Neil Brown
813d6affd1
Fixed an error message in RainTypes
2008-03-22 18:02:43 +00:00
Neil Brown
710abd7019
Added support for function calls to the Rain parser
2008-03-22 17:49:21 +00:00
Adam Sampson
b8b7e04b7c
Refactor literal and subscript checks.
...
For both of these, we already examine all the places they occur for other
reasons, so there's no good reason to do a separate traversal for them.
2008-03-22 23:58:18 +00:00
Adam Sampson
60ca26128c
More occam typechecks: input/output items, replicators, choices.
...
Various infrastructure too to support these.
Doing A.ForEach raised an interesting question: what does it work over? In
plain occam it'd just be arrays, but it should obviously work for lists too.
This suggests that Size and Subscript should work on lists as well, since
ForEach will be implemented in terms of them. I've therefore introduced the
idea of a "sequence" class of types.
2008-03-22 23:47:29 +00:00
Adam Sampson
6ab4a9923f
Implement expression typechecking for occam.
...
There's obviously some overlap with the Rain typechecker here. I've tried to
cover everything in the AST that could potentially be bound into occam at some
point in the future, even if the occam parser doesn't support it yet (so
this'll do checks for Concat and mobile allocation, for example).
2008-03-22 01:00:42 +00:00
Neil Brown
025eebf61d
Added support for giving ranges an explicit type in Rain
2008-03-21 21:10:47 +00:00
Neil Brown
0511c852da
Added a couple of reminders to RainPassesTest
2008-03-21 20:16:48 +00:00
Neil Brown
2189a6c28a
Added support for list literals to the Rain parser
2008-03-21 20:03:47 +00:00
Neil Brown
fe24c5cfb4
Corrected some test numbering in ParseRainTest
2008-03-21 19:25:19 +00:00
Neil Brown
7bd5bdf1fa
Changed a Rain pass to transform the Plus operator on lists into the proper Concat operator
2008-03-21 19:23:16 +00:00
Neil Brown
ebef4aaedf
Fixed array constructors by adding an occam pass to figure out their type early on, and also corrected the ordering of the later passes
2008-03-21 18:23:42 +00:00
Neil Brown
8db5975671
Refactored checkExpressionTypes a little
2008-03-21 16:35:57 +00:00
Neil Brown
33b04e7646
Tidied up a few unused functions and module imports
2008-03-21 15:16:36 +00:00
Neil Brown
0dc458ff03
Fixed transformEachRange to change the abbreviation mode of the loop counter
2008-03-21 15:09:00 +00:00
Neil Brown
dfea2c11a5
Added a dummy Rain pass to supply the new retypesChecked property
2008-03-21 15:07:56 +00:00
Neil Brown
edf1060c9b
Fixed conflicts in the Rain passes
2008-03-21 12:45:24 +00:00
Neil Brown
50ce3410b8
Added the pass for giving lists a type to the pass list
2008-03-20 16:54:40 +00:00
Neil Brown
af4a66e2e4
Corrected the spelling of the name of one of the Rain passes
2008-03-20 16:46:45 +00:00
Neil Brown
d4991461a5
Fixed the type of a list for the empty list
2008-03-20 16:44:36 +00:00
Neil Brown
0e3465afc0
Corrected some Rain tests to avoid using the Int type
2008-03-20 16:42:25 +00:00
Neil Brown
cd58986721
Added a first implementation of the annotateListLiteralTypes pass
2008-03-20 16:35:09 +00:00
Neil Brown
185f68e96d
Adjusted the tests for the annotateListLiteralTypes pass
2008-03-20 16:34:44 +00:00