Evan Czaplicki
b2f3ff35dc
Begin using the new boundVarList function
2014-02-10 00:17:49 +01:00
Evan Czaplicki
9dd5dff279
Make AST more general and try to give its phases better names
...
Also change the constructors for the Pattern ADT
2014-02-10 00:17:33 +01:00
Evan Czaplicki
56c4fb936d
Merge pull request #439 from maxsnew/safeNames
...
Hack to make imported names safe.
2014-01-28 06:11:12 -08:00
Evan Czaplicki
50c2618d3a
Try to improve error messages in response to issue #479
2014-01-27 02:49:21 +01:00
Evan Czaplicki
b00a8cb9b5
Add check that all ports appear in the "main" module
...
It is unclear what it means if ports are used in sub-modules, so to be
cautious, we want to rule it out in the first release. As people use
the API it’ll become clear how sub-module ports are necessary and what
problems they might cause.
2014-01-20 15:10:40 +01:00
Evan Czaplicki
6ba394c9cb
Get rid of experimental code for handling "deriving"
2014-01-20 01:09:50 +01:00
Max New
53c2ab1531
Move splitDots and prevent a non-exhaustive pattern match warning
2014-01-18 17:44:11 -06:00
Max New
4a25c165a4
Hack to make imported names safe.
...
This fixes a bug where imported identifiers with reserved names were
not being changed during codegen.
2014-01-18 17:36:09 -06:00
Evan Czaplicki
c9310cc4d5
cosmetic: simplify traversal of maybe
2014-01-14 11:45:40 +01:00
Evan Czaplicki
329077f1ef
Get rid of input handlers for now
2014-01-13 19:24:17 +01:00
Evan Czaplicki
2a0a0e6e3c
Simplify SourceSyntax.Type AST, making record extension more restrictive as discussed with @maxsnew
2014-01-13 11:01:10 +01:00
Evan Czaplicki
9dda928ac4
make conversion functions for input ports optional
2014-01-13 11:01:10 +01:00
Evan Czaplicki
828c2c7372
Give more reasonable names to incoming and outgoing ports
2014-01-13 11:01:10 +01:00
Evan Czaplicki
96f55fceab
Take ports out of MetadataModule, where it is no longer needed
2014-01-06 08:06:56 +01:00
Evan Czaplicki
5dd7b6b1bb
Extend expression crawler to do checks on ports as well as on let expressions
2014-01-05 10:15:37 +01:00
Evan Czaplicki
7cf5a564e5
Add Expressions for ports to check and validate types nicely
2014-01-04 11:39:38 +01:00
Evan Czaplicki
9ccc707594
properly rename expressions in port declarations, add -Wall
2014-01-04 08:20:52 +01:00
Evan Czaplicki
ade03397df
Fix another copy-paste error
2014-01-03 12:15:49 +01:00
Evan Czaplicki
06503fef33
Switch to using new Def representation, get rid of getPDefs
function which used to collect annotations and definitions.
2014-01-03 01:07:13 -08:00
Evan Czaplicki
acce931530
Update for new def and ports format
2014-01-02 23:50:49 -08:00
Evan Czaplicki
c883b55255
Get rid of badOrder
check, which is handled elsewhere. Update for new def and port formats
2014-01-02 23:50:20 -08:00
Evan Czaplicki
3d780425fb
Update for ports and defs, switch to using <$> and <*> a lot
2014-01-02 23:48:42 -08:00
Evan Czaplicki
49fc0b6378
Create way to crawl over all lets in a program, transforming defs and ports
...
Used to combine type annotations with definitions and find ordering
problems with Definitions and Ports
2014-01-02 23:39:34 -08:00
Evan Czaplicki
3c65b5c69d
Move boundVars
function into SourceSyntax.Pattern
2014-01-02 23:23:11 -08:00
Evan Czaplicki
600e65ca43
Get rid of Transform.Optimize, which is currently unused
2014-01-02 23:13:37 -08:00
Evan Czaplicki
71bb1c8bf9
Add basics of properly handling ports
2013-12-24 10:13:19 -08:00
Evan Czaplicki
740702c0d7
Begin switch from current FFI syntax to "port" syntax
2013-12-23 23:53:54 -08:00
Evan Czaplicki
83e8bad84f
Add basics of "deriving" for ADTs and type aliases. Only parse it for type aliases at the moment.
2013-12-23 16:51:15 -08:00
Evan Czaplicki
32c78efe7d
Begin process of allowing "deriving" on type aliases.
2013-12-23 14:42:43 -08:00
Evan Czaplicki
e119d8ef62
Get rid of SourceSyntax.Everything module
2013-12-22 15:18:16 -08:00
Evan Czaplicki
f8bf89b48d
Make sure that all names in a program are safe for use in JS code
2013-12-22 15:00:29 -08:00
Evan Czaplicki
7b20993869
Get rid of dependency on uniplate so AST does not need to derive Data or Typeable
...
This is motivated by wanting to add things to the AST that cannot
derive Data or Typeable
2013-12-20 16:41:06 -08:00
Evan Czaplicki
32d162732b
Merge pull request #381 from bcdarwin/master
...
Add check for duplicate constructors within the same unit
2013-12-10 17:48:06 -08:00
Ben Darwin
d1b3db22f2
clean up error reporting
2013-12-10 20:41:06 -05:00
Ben Darwin
55e5c342ce
also fix duplicate *type* constructors
2013-12-10 16:36:04 -05:00
Ben Darwin
36b73fe7f5
fix duplicate *data* constructors
2013-12-10 15:58:57 -05:00
Evan Czaplicki
bccfece2c1
Merge branch 'master' into dev
2013-11-19 22:34:08 -08:00
Evan Czaplicki
54a99b7309
Add error and explanation for infinite type aliases
2013-11-19 22:29:25 -08:00
Evan Czaplicki
0fcd342b78
Minor reformat of an error message to keep each line under 80 characters
2013-11-11 16:30:48 +01:00
Michael Sondergaard
8594ab3780
Improve error message
2013-11-11 15:29:41 +01:00
Michael Sondergaard
12a58167a9
Add a catchall to inner toDefs function
...
I think it would be more appropriate to reorder this code as to only case-match
over defs once, but I'm not sure of how to approach this (yet).
2013-11-04 21:25:36 +01:00
Justin Leitgeb
c845e586ed
Give more helpful error messages when deserializing elmi files
...
Provides an error message indicating incorrect compiler version or corrupt file.
Exit status will be 1 in either failure case and error message is printed to
stderr. Uses the same checks against interfaces.data as well as standard .elmi
files since both are susceptible to breaking in the same way.
The following will be displayed when an elmi file has a different compiler
version than the elm compiler that tries to load it:
justin ~/Code/elm-lang.org/public/examples/Intermediate $ ~/Code/elm/dist/build/elm/elm Pong.elm
Found build artifacts created by a different Elm compiler version. Please rebuilt cache/Pong.elmi and try again.
The following will be displayed when a file that cannot be deserialized is
encountered:
justin ~/Code/elm-lang.org/public/examples/Intermediate $ ~/Code/elm/dist/build/elm/elm Pong.elm
Got an error, 'demandInput: not enough bytes' at offset 10303 of cache/Pong.elmi.
This error may be due to an outdated or corrupt artifact from a previous build. Please rebuild cache/Pong.elmi and try again.
2013-11-03 20:35:10 -05:00
Evan Czaplicki
d97fe192e0
Merge branch 'markdown' into dev
...
Conflicts:
Elm.cabal
2013-10-29 15:36:56 +01:00
Evan Czaplicki
737fedcb69
Merge pull request #303 from jsl/fix_issue_299
...
Print types even when the elm file has already been compiled.
2013-10-29 07:30:12 -07:00
Justin Leitgeb
576bc28142
Print types even when the elm file has already been compiled.
...
This fixes issue #299 , where types are not printed even when the
`--print-types` option is given for an elm file that has already
been compiled.
2013-10-28 16:29:28 -05:00
Evan Czaplicki
56ecbbc70a
Implement markdown interpolation
2013-10-25 17:36:30 +02:00
Evan Czaplicki
debfd18444
Fix formatting of error when there are two unbound type variables
2013-10-19 10:52:48 -04:00
Evan Czaplicki
692d8d8eac
Throw errors for unbound type variables in ADTs and aliases, resolves #302
2013-10-19 10:39:23 -04:00
Evan Czaplicki
c480449371
cosmetic: make shadow check a bet more compact
2013-10-14 20:26:47 -04:00
Evan Czaplicki
37878528bf
Check for variable shadowing
...
When this code was originally written, all variables were given unique
names, making it unnecessary to check for shadowing.
2013-10-13 17:36:21 -04:00