Adam Sampson
8b2568264d
Add more utility functions along the lines of defineConst.
...
These let you define various sorts of name in the initial state of a pass test.
2008-03-22 00:44:57 +00:00
Adam Sampson
8b5233ba47
Add ShowCode instances for A.Name.
2008-03-22 00:42:00 +00:00
Adam Sampson
e23a12c71d
Don't resolve user types until after type checking.
...
This is important -- a user type defined as INT in occam must not be treated
the same as INT when typechecking.
2008-03-22 00:12:54 +00:00
Adam Sampson
9cea36257e
Make functionsToProcs depend on expressionTypesChecked.
...
I think in general typechecking needs to happen before any other pass runs,
else the user's likely to get rather confusing error messages.
2008-03-22 00:04:53 +00:00
Adam Sampson
cfc5b18e3e
Don't show the state when a pass unexpectedly succeeds.
...
This used not to be a problem, but there's now quite a lot of stuff predefined
in the state when testing the typechecker, so it tends to obscure the real
error...
2008-03-20 23:56:13 +00:00
Adam Sampson
7c4275116e
Various cleanups to AST.hs.
...
No code changes; just reformatting.
2008-03-20 22:18:32 +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
f7141bda6f
Corrected transformConstr0
2008-03-21 20:02:33 +00:00
Neil Brown
14e375247c
Added an error message to transformConstr for when the type is not supported
2008-03-21 19:32:07 +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
cfccd38c51
Changed transformConstr to transform list-typed array constructors to build up a list rather than subscripting it
2008-03-21 19:22:29 +00:00
Neil Brown
a1daf15576
Pulled up list expressions in a similar way to array expressions
2008-03-21 19:21:46 +00:00
Neil Brown
bc7e682119
Added a Concat operator for lists, and added support for it (and list assignment) to the backends
2008-03-21 19:20:15 +00:00
Neil Brown
da5801ad03
Refactored transformConstr to pull out some of its working into helper functions
2008-03-21 19:13:54 +00:00
Neil Brown
80ffc87f94
Added a newline at the end of the generated C++ files
2008-03-21 18:47:09 +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
3fede166f6
Added another Rain testcase
2008-03-21 16:35:21 +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
142926172d
Fixed the error message given when there is a problem with the pass dependency graph
2008-03-21 14:51:54 +00:00
Neil Brown
273aeead4e
Added the code to guess the frontend based on the file extension (.occ/.rain)
2008-03-21 14:46:28 +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
022447b04c
Added a couple of Rain testcases
2008-03-20 16:54:03 +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
Neil Brown
a6452f93df
Added a ShowOccam and ShowRain instance for lists of things
2008-03-20 16:34:11 +00:00
Neil Brown
ecb82d13a8
Revamped the ShowCode module, transforming it to use the writer monad
2008-03-20 16:20:14 +00:00
Neil Brown
bd26f758b4
Added tests for annotating the types of list literals and ranges in Rain
2008-03-20 14:44:19 +00:00
Neil Brown
8f51ead090
Rewrote transformRangeRep, stopping it requiring constants in ranges
2008-03-20 12:40:07 +00:00
Neil Brown
b20a7fcb0b
Fixed some tests in ParseRainTest
2008-03-20 12:39:42 +00:00
Neil Brown
1f6311d33e
Fixed a lot of tests in RainPassesTest
2008-03-20 12:38:59 +00:00
Neil Brown
123936e71c
Changed addOne to use Add not Plus (we can always define a plusOne...)
2008-03-20 12:30:07 +00:00
Neil Brown
ad7a76dace
Altered transformEachRange to make it more straight-forward
2008-03-20 09:36:26 +00:00
Neil Brown
713b5c3e5c
Added a subExprs helper function to match the rest
2008-03-19 17:52:01 +00:00
Neil Brown
b496912c51
Fixed conflicts with Adam's dimension changes
2008-03-19 17:49:32 +00:00
Neil Brown
05866457e4
Fixed the type of a range to at least be a list
2008-03-19 17:34:12 +00:00
Neil Brown
839d92546b
Altered the backends to support lists and foreach loops over lists (at least in the C++ part)
2008-03-19 17:20:52 +00:00
Neil Brown
43b77ff1a0
Made names for loop variables unique in Rain, and made their abbreviation mode Abbrev
2008-03-19 17:19:58 +00:00
Neil Brown
6b04b6d944
Added a pass to pull up expressions in for-each loops into a variable
2008-03-19 17:18:56 +00:00
Neil Brown
e2f5d18169
Added a case in pullRepCountSeq for ForEach replicators
2008-03-19 17:15:14 +00:00
Neil Brown
35ebd43f79
Fixed some error messages in the Types module
2008-03-19 17:02:45 +00:00