Commit Graph

269 Commits

Author SHA1 Message Date
Sam Tobin-Hochstadt
b718e60469 Typecheck `map' expression, not just #'map.
original commit: bce2cedf3864166c137ef91ca3f79f45fb6745da
2010-06-22 10:12:54 -04:00
Sam Tobin-Hochstadt
f50aa4917a support `map' over multiple ListDots with the same bound
- also support ListDots + Listof (map errors when not same length)

original commit: 0c7c722e16cd9f6e3e88deaa45cb681337021078
2010-06-21 18:30:30 -04:00
Sam Tobin-Hochstadt
380885f978 Implement substitutions as hash tables from vars to subst-rhs.
- add convenience function for generating substitutions
 - give trivial substitution for unreferenced index variables

original commit: 339add9f78723fecb3e7332a8a173f615c37bc2c
2010-06-21 18:30:28 -04:00
Sam Tobin-Hochstadt
6514ee71e1 Refactor substitution.
- new file types/substitute
 - use structs for substitutions

original commit: 44d46e4cd7ecc06a264282b31dd7ba47dee421f1
2010-06-21 18:30:28 -04:00
Stevie Strickland
f1ef77e550 The initial shot at extending cgen and friends to take both X and Y.
This doesn't fully work, in that more test cases are broken.  However,
this is mostly due to questionable inference rules in the past, and
so fixing these errors should lead to a more correct inference algorithm.

(i.e. we need to handle things like (List X ... a) (List Y .. b),
where a and b are not the same bound.  We'd started this work before,
but never actually gone through with it, since smashing regular and
dotted type variables into the same environment meant some things
magically worked when they possibly shouldn't have.)

original commit: b5d4d54d450b7c2e87ab1d80db66e84cbd1bd2e5
2010-06-21 18:30:26 -04:00
Sam Tobin-Hochstadt
7e4ee76e4e Various small assorted fixes.
original commit: d886331807f55e5a2a4ebb464b50d50835e20393
2010-06-21 18:30:25 -04:00
Sam Tobin-Hochstadt
c10334cfb0 More progress on refactoring infer
original commit: 82e7d281cb028e9d2e5c57a9a8c01b4d4e18275a
2010-06-21 18:30:25 -04:00
Sam Tobin-Hochstadt
fdfdd6e3b2 Fix a bunch of uses of `infer' et al.
original commit: 18f45c413882b9e145fffa84d41bfb5b378396fc
2010-06-21 18:30:25 -04:00
Sam Tobin-Hochstadt
d26ad0e213 Change inference to take into account index vs regular vars.
original commit: 99e499a503b8b319bc0e512b698e5543634e3654
2010-06-21 18:30:24 -04:00
Sam Tobin-Hochstadt
9d6132fa0e Add case to be fixed
original commit: fe9395fdbf0dcf8e64bdfaf247845c7858e35423
2010-06-21 18:30:23 -04:00
Sam Tobin-Hochstadt
b3b2b264a9 Special case for (apply values ListDots)
original commit: a93aecbed74672948b598a960f667d3240f86031
2010-06-21 18:30:20 -04:00
Sam Tobin-Hochstadt
1e98e1c1fd Add index-env.
- Remove Dotted and DottedBoth values from tvar-env
 - Abstract env extension and lookup for tvar/index-env
 - Abstract index inference
 - Remove pointless parameterizations

original commit: d570006db81dda68e69b7058fd3edfb68cc3d042
2010-06-21 18:29:58 -04:00
Sam Tobin-Hochstadt
4f2a113076 Eliminate expressions with dotted pre-types.
- Now looks for (List T ...) types.
 - special handling of `map', `andmap', `ormap' when list arg is dotted
 - remove tc-dots-unit

original commit: 4c3f279ab910de4fc5a059e48025d7118c97129b
2010-06-21 18:29:57 -04:00
Sam Tobin-Hochstadt
d91f1e9998 Change type of ... rest args to have (List T ...) types.
original commit: 4cbeb0b2f00e652ce15e5638e15ca83a131b3b8b
2010-06-21 18:29:56 -04:00
Sam Tobin-Hochstadt
021e1146cb More environment refactoring.
- rationalize naming of files
- split files by env constructed

original commit: 50f93b9ed7abeb1d4e687078cb5fef6976d008aa
2010-06-21 18:29:55 -04:00
Sam Tobin-Hochstadt
f581c7796d Refactor environments.
- mapping stored as dict
 - use id tables for identifiers
 - use env-filter instead of filter
 - eliminate spurious use of conses

original commit: 647c4eef5940fde0395f9a19496244acab5f62b2
2010-06-21 18:29:54 -04:00
Sam Tobin-Hochstadt
3f49f996de Refactor provide handling.
- use id-tables instead of lists
 - smarter iteration
 - prepare for eliminating declarations when not needed, but don't do it yet

original commit: 4925e7e51f487e3e9dcc3646a28cd30bf334cd02
2010-06-21 15:42:52 -04:00
Stevie Strickland
c903ffe15c Fix use of add-type-expr from commit 5d835ded.
original commit: 0aae2c866f2906c1b4111aff438d3f931afa43f7
2010-06-19 14:58:52 -04:00
Sam Tobin-Hochstadt
a4cec9ce13 Fix error message for 1-arg apply
original commit: 1e15ce1f3299d235cd72eeb171f7224099fba41a
2010-06-19 14:58:52 -04:00
Vincent St-Amour
a4b8973528 Added the type of the 1 literals in expressions of the form (- x 1) to
the type table.

original commit: 5d835ded47e51e29a86a457e97f87f88561fe1d8
2010-06-18 17:43:05 -04:00
Sam Tobin-Hochstadt
d31b37acc1 handle multiple body expression properly
original commit: 0262ef681ac4394f9c2f8f19836777ee1fcc7a56
2010-06-17 12:50:30 -04:00
Sam Tobin-Hochstadt
90039fecdc Try harder to find types for loop variables.
- use `find-annotation' more
 - recognize (let ([x y]) ...)

original commit: bdbb6d48e62e8009154a095f1fc5752766ab34fe
2010-06-17 11:26:33 -04:00
Sam Tobin-Hochstadt
36d46fac77 eq? is a predicate for eof
original commit: f73d63e1afdca9f509ff0a143ae2348875766ce2
2010-06-15 14:59:08 -04:00
Sam Tobin-Hochstadt
b19c37e9df Actually typecheck actuals even when there's a type annotation.
original commit: 1cff0a1f85e30ca231cde5fa94ec2d8c47b74d68
2010-06-11 19:35:56 -04:00
Sam Tobin-Hochstadt
589306a88f Refactor #%module-begin and #%top-interaction for Typed Scheme.
original commit: 5f069ed4bb033531d39c8b268180f4ef70598c57
2010-06-11 11:55:21 -04:00
Sam Tobin-Hochstadt
ed35e04293 New interface for unstable/mutated-vars
- functional hash tables
 - fix clients

original commit: 0379e534e3f0024473d6af9379d0cac0d2bd1a37
2010-06-10 13:28:29 -04:00
Sam Tobin-Hochstadt
2ddda6b00a Support case-lambda with multiple branches with keyword arguments.
original commit: 78832fe332fccfe7c533243c4e1f1c1d0e3753e4
2010-06-08 17:50:48 -04:00
Sam Tobin-Hochstadt
2d28ab5f13 Special-case (- x 1) for use in loops.
original commit: 7f300a2c4f9d934522a3b3ba3d5c949b5bd075ed
2010-06-08 12:05:56 -04:00
Sam Tobin-Hochstadt
fcfd000fcc Properly handling immutable invariant structs.
original commit: 7df8e3279396e7483a5645603726afa5424a071a
2010-06-07 14:03:06 -04:00
Sam Tobin-Hochstadt
371934cf82 Fix error message for multiple values.
original commit: d4a8c52c7102778e6b1ef8fae8b5c75774069487
2010-05-27 10:10:26 -04:00
Sam Tobin-Hochstadt
1c955c4e56 Better internal error messages.
original commit: 460bb348e10f07534bc74e7f91b8b4bc8655ac68
2010-05-24 14:05:05 -07:00
Sam Tobin-Hochstadt
af4ff86f52 Remove tc-toplevel from the typechecking unit.
original commit: 986318065d71817c59c9571e72fe8abcce4944cd
2010-05-24 14:03:14 -07:00
Sam Tobin-Hochstadt
5ba6d3297f Only do abstraction of filters at `let's.
original commit: 5b0f705b8374a3a136250a40560d4e5e00c6fba3
2010-05-24 14:01:00 -07:00
Sam Tobin-Hochstadt
291937c278 Allow expected type to have weaker filters and objects.
Closes PR 10729.

original commit: 9fe3747a19e38d2041814d897f7db0e67d02a0e0
2010-05-19 15:14:18 -05:00
Sam Tobin-Hochstadt
eb9f6a9916 Better type annotation support.
- Delay more errors for additional reporting.
 - Don't re-check expressions that were checked for inference.
 Closes PR 10098.

original commit: 638245e4c52f6bdaba7d62ac3d88a24462a09ace
2010-05-19 10:10:54 -05:00
Sam Tobin-Hochstadt
d30ba6ac02 More fixes for Vincent.
original commit: 535dc73fad6d22a5a057d18aa0ba4ff00f926810
2010-05-17 18:03:34 -04:00
Sam Tobin-Hochstadt
2776f825c2 Fix internal error detected by vincent.
original commit: 7ecf424ff88d0365da3be7af3051b0acc2cfe1ab
2010-05-17 16:06:27 -05:00
Sam Tobin-Hochstadt
7b401c4e80 Add annotation to test.
Fix default case for `vector-set!'

original commit: 21b5c25c90a323d443b9611d9c0d30d30afb7dea
2010-05-14 11:00:23 -04:00
Sam Tobin-Hochstadt
479db80e36 sensible handling of literal vectors
original commit: ff36a6e8d1595cd0ee0c495efe240ebc23707419
2010-05-14 11:00:23 -04:00
Sam Tobin-Hochstadt
6f16d9e2d6 more sensible version of het vectors.
add vector-length, vector-set!

original commit: 7ac925695fadf3c8af20b2d65037c8bc6310f9b4
2010-05-14 11:00:23 -04:00
Sam Tobin-Hochstadt
597a8151b3 fix typo
original commit: 798a7f2a3c2189f14cc99143143be86c4eb0b2b5
2010-05-14 11:00:22 -04:00
Sam Tobin-Hochstadt
a4717c49ef Fix het vec with strange expected types
original commit: f40000c9c752b79d029cf2328425c5b012c16d47
2010-05-14 11:00:22 -04:00
Sam Tobin-Hochstadt
cd0c71d923 Finish het vectors
original commit: ec14f2c0b81ee4e5052555cbdabfd0a53c821bec
2010-05-14 11:00:22 -04:00
Sam Tobin-Hochstadt
2fdcb1ef9a mostly done with heterogenous vectors
original commit: 2c03f2223b55483bc02d66946097ed17e63529f3
2010-05-14 11:00:22 -04:00
Sam Tobin-Hochstadt
bf8b4e8080 Don't generate extra filters unless they're useful.
original commit: 814c02664ee7892af26f6c0d0b8d90cbf55bdc4a
2010-05-13 13:37:24 -04:00
Sam Tobin-Hochstadt
2f061da0ea abstract even when out of bindings
original commit: a7a56ce856e4082b951be6c51d762eb19f97d5e7
2010-05-12 21:34:18 -04:00
Sam Tobin-Hochstadt
2ceba6db20 Fix typo
original commit: 264bf78559a67d49e87581944d25a9a6b0bd0150
2010-05-12 18:43:55 -04:00
Sam Tobin-Hochstadt
772abbfa81 Updates along useless paths are not errors.
original commit: 4ceda9970005b4da3b56b0e48a0d69de05e3fa54
2010-05-12 18:24:19 -04:00
Sam Tobin-Hochstadt
5fb5d7125b Allow dummy filtersets
original commit: 41f0152435e5f8ae7edefa75b1c4e965cf6349df
2010-05-12 17:31:58 -04:00
Sam Tobin-Hochstadt
620fb6182a debugging
original commit: dbe9a0f997461f209c6893479b2fe76f9c0384e0
2010-05-12 17:06:04 -04:00