Stevie Strickland
9f6427ac34
This makes the change mentioned in the log message for r10735 (the previous
...
revision). So what we'll get here is the following:
Dotted + Dotted = Dotted (from the first case)
Dotted + x = x (since x refers to a free use of the dotted var)
x + Dotted = x (same)
I think this is correct.
2008-07-12 22:33:04 -04:00
Stevie Strickland
f3eb315425
I'm not sure if this is correct, but this handles the cases where we're
...
instantiating dotted pre-types where the bound is _not_ free in the
pre-type base. I checked in a test case for this, that's something like:
(inst (plambda: (a ...) [ys : (Number ... a -> Number)] (apply + ys))
Integer Boolean String)
=
(Number Number Number -> Number)
These changes introduce no extra test failures, and we really have to
account for the bound here, and really even if the variable _does_
appear free within the pre-type base, it shouldn't be counted as a
"regular" variable outside of that scope.
Actually, maybe Dotted should behave like Constant, where it just
propogates until there's a separate free use that we're merging with,
in which case we just treat it like the free use (which will
eventually get fix-bound applied to it anyway). I think I'll make
that change next.
2008-07-12 22:30:00 -04:00
Stevie Strickland
9b289bea27
Actually, I want to be careful with this.
...
For example, we don't want the result type of the function to be free,
so it's more like:
G, D + {a}, S |- f : (t1 t2 -> t)
G, D, S |- t
(i.e. {a} not free in t)
Hmm.
2008-07-12 22:20:10 -04:00
Stevie Strickland
274814e6aa
There's no reason we can't allow foldl on a rest arg, as long as the types
...
match up appropriately. Let's do it!
2008-07-12 22:13:44 -04:00
Stevie Strickland
ab2360384f
We have to be careful here -- for example, one of the test cases was failing
...
because the last thing in the instantiate was a function type, which is
a cons. Look for a cons whose cdr is an identifier.
2008-07-12 22:11:23 -04:00
Sam Tobin-Hochstadt
eed2c37495
Need to do the same for regular Poly as well.
2008-07-07 19:33:08 -04:00
Sam Tobin-Hochstadt
b835002d72
Finally found a nasty bug involving variables not appearing in the hash table.
2008-07-07 19:21:42 -04:00
Sam Tobin-Hochstadt
6a607be6a9
If there are extra effects, let them be.
2008-07-07 17:15:43 -04:00
Sam Tobin-Hochstadt
8599321b57
Add check that effect lists have same length.
2008-07-07 17:04:09 -04:00
Sam Tobin-Hochstadt
f9c91d6b8a
Constraining with bottom produces trivial constraints, not missing constraints.
2008-07-07 16:54:46 -04:00
Sam Tobin-Hochstadt
589ba9d77a
Add require of scheme/promise for force.
...
Handle call-with-values more appropriately.
2008-07-07 16:43:12 -04:00
Sam Tobin-Hochstadt
4758c0b14d
Better check for 'is this error from a macro'
2008-07-07 15:54:19 -04:00
Sam Tobin-Hochstadt
2de55888f1
handle nested polymorphic types in the expected type of a lambda
2008-07-07 15:36:33 -04:00
Sam Tobin-Hochstadt
acd6664c52
Fix call with correct # of args.
2008-07-07 15:24:09 -04:00
Sam Tobin-Hochstadt
17dec0046f
Remove debugging code.
2008-07-07 15:05:51 -04:00
Sam Tobin-Hochstadt
807336e262
Actually check that lengths are equal.
2008-07-07 15:03:23 -04:00
Sam Tobin-Hochstadt
2844dec0a1
make-Values now checks its argument for having only 1 element
2008-07-07 14:58:22 -04:00
Sam Tobin-Hochstadt
d0939ffa1e
Fix up singleton values
2008-07-07 14:49:46 -04:00
Sam Tobin-Hochstadt
044bd551b0
stevie is magic
2008-07-07 14:39:10 -04:00
Sam Tobin-Hochstadt
61cefef89c
More info in internal errors.
...
Fix substitution in nested ... case.
2008-07-07 14:25:15 -04:00
Sam Tobin-Hochstadt
3cd8878999
This shouldn't be here :p
2008-07-07 13:13:32 -04:00
Sam Tobin-Hochstadt
e06a22c29b
remove trace
2008-07-07 12:27:08 -04:00
Sam Tobin-Hochstadt
c43c3baa67
values with dots
2008-07-07 11:01:42 -04:00
Stevie Strickland
1aaa6995a1
Try to handle type errors in non-original syntax a bit better.
2008-07-03 12:03:18 -04:00
Sam Tobin-Hochstadt
c9e8f6d6f6
Refactoring.
2008-07-01 16:44:49 -04:00
Sam Tobin-Hochstadt
12b7c6c459
Fix handling of dotted <: starred hard case
2008-06-24 11:43:30 -04:00
Stevie Strickland
705685af8b
Add stuff that isn't useful yet, but might be useful for a lattice for future
...
work.
2008-06-20 20:03:56 -04:00
Stevie Strickland
6a8b7e2e14
We should infer on the dotted var also, for the case where the underlying
...
function's type and/or the arguments to said function use it.
2008-06-20 17:49:43 -04:00
Stevie Strickland
a6ea8d7954
Revert last change.
2008-06-20 15:47:56 -04:00
Sam Tobin-Hochstadt
0366745cbf
Use the X from cgen/list to create the empty cmap.
...
This allows (vector) to have type (Vectorof (U))
2008-06-20 15:27:46 -04:00
Sam Tobin-Hochstadt
b57519d398
Be AR about order of arguments to cgen* (cgen/list took X V, not V X)
2008-06-20 14:52:53 -04:00
Sam Tobin-Hochstadt
a6cd9ea2cd
* Fixed calls to infer that didn't give must-vars argument
...
* Fixed promote/demote so they check the dotted bound, not free vars of type
* Stopped promote/demote from promoting/demoting away dotted bound
* Stopped promotion/demotion of dotted bound in cgen/arr
* Improved debug macro
2008-06-20 14:48:47 -04:00
Sam Tobin-Hochstadt
6296ffbfcf
* Added code to check that substitution gets rid of all appropriate
...
variables (and fails if not)
* Added weird dotted as subtype of * case (dcon-exact)
2008-06-20 13:07:08 -04:00
Stevie Strickland
654d7e2f46
* Add the ability to substitute in starred types for dotted when
...
we've inferred it.
* Try and consolidate a lot of the error printing with domain mismatches.
2008-06-19 19:14:32 -04:00
Sam Tobin-Hochstadt
0f142d97e3
Do substitution properly from dmap.
2008-06-19 18:04:19 -04:00
Sam Tobin-Hochstadt
b9e1676a55
* Add constraints when matching t1...a to t2...b
...
* Do inference when you have (apply f ... xs), f and xs are dotted,
and on different bounds.
* Add fold-right to extra-procs and its type to base-env
2008-06-19 16:55:06 -04:00
Sam Tobin-Hochstadt
bb8d8e23d8
* Split apart identifier typechecking and type instantiation
...
* Add dotted instantiation (replacing bounds with different bounds)
* Fix some macro issues, including syntax locations
* Fix more effect inference
2008-06-19 14:57:35 -04:00
Sam Tobin-Hochstadt
3fd969651f
Fix type of filter, and inference w/ effects.
2008-06-19 11:57:07 -04:00
Sam Tobin-Hochstadt
23aeff8c3b
Fix macro impl.
2008-06-19 11:12:32 -04:00
Stevie Strickland
f68efe9e31
Lift out the recursive call, since that'll be shared across all substitutions.
2008-06-18 23:48:31 -04:00
Stevie Strickland
51ec643172
I'm not sure what to do about this, given the recursive sb call.
2008-06-18 18:53:46 -04:00
Stevie Strickland
052849c1bb
Otherwise we don't handle nesting.
2008-06-18 18:09:50 -04:00
Sam Tobin-Hochstadt
082545adc9
Just handle PolyDots of stuff not involving dots like the other cases.
2008-06-18 17:36:38 -04:00
Sam Tobin-Hochstadt
7f0a330c0c
Adding drest capability to lambda formal checking.
2008-06-18 17:21:53 -04:00
Sam Tobin-Hochstadt
e77ad12feb
Add debug macro, and fix check-below to return appropriate values.
2008-06-18 16:52:04 -04:00
Stevie Strickland
3e4e5af03c
Thinkoed, all of them should have -lst added.
2008-06-18 16:10:54 -04:00
Stevie Strickland
6986b12618
Fix extra -lst call that shouldn't be there.
2008-06-18 16:03:33 -04:00
Stevie Strickland
5299c9fd5a
Consolidate errors so they only happen once (could get rest arg-related
...
error and formal number mismatch error), and then consolidate code.
2008-06-18 15:57:41 -04:00
Stevie Strickland
948286f0c6
Rework how lambda formals are handled to try and guess something more
...
correct when there's a mismatch.
2008-06-18 15:02:54 -04:00
Stevie Strickland
17937f5451
Fix up lambda formal handling so that if we get too many or too few formals
...
for the appropriate type, we associate the correct types with the formals
we do have. If we have more formals than types, then a rest-arg function
will have the extra formals as the type of the rest-arg, else we will just
make them bottom.
2008-06-18 13:39:58 -04:00