Eric Holk
8cfc388d40
Switched calling conventions so that spawn with multiple arguments works.
2011-05-27 15:20:58 -07:00
Eric Holk
d49998f0ed
Switching over to wrappers for spawning functions of multiple arguments. Doesn't quite work yet.
2011-05-27 15:20:58 -07:00
Eric Holk
da0e0b6f5e
Removing excessively verbous logging.
2011-05-27 15:20:58 -07:00
Eric Holk
a88af906c5
Programs using spawn terminate
2011-05-27 15:20:58 -07:00
Eric Holk
dad426419c
Working on 2 argument spawn. The arguments seem to be copied correctly once, but then they get lost.
2011-05-27 15:20:58 -07:00
Eric Holk
bb4c7a9c68
Arguments seem to be correctly passed to child processes now.
2011-05-27 15:20:58 -07:00
Eric Holk
21efd07bc1
New tasks run, but their arguments get lost and something ends up in an infinite loop when the task exits.
2011-05-27 15:20:58 -07:00
Tim Chevalier
0cbcf92749
Use annotations on blocks
...
Previously, block_ty returned the type of the terminating
expression of the block (or nil if said expression was absent).
I changed check_expr to write the type of that expression into
the annotation for the block itself, so now block_ty can use the
block's annotation.
2011-05-27 12:21:37 -07:00
Michael Sullivan
a7a42c24be
Change the syntax for RECV from "var <- port" to "port |> var".
2011-05-27 12:01:20 -07:00
Michael Sullivan
2119e3b5b9
Fix missing bump in RECV lexer case.
2011-05-27 12:01:20 -07:00
Michael Sullivan
9c79200a7f
Pretty print the new RECV token...
2011-05-27 12:01:20 -07:00
Michael Sullivan
ea16e582eb
Remove parser support for recv as an initializer in preparation for changing the recv syntax.
2011-05-27 12:01:20 -07:00
Michael Sullivan
55b40e6894
Lex '|>' as the RECV token.
2011-05-27 12:01:20 -07:00
Tim Chevalier
1a96e79fe0
Make _|_ unify with anything
...
The typechecker had a number of special cases for unifying types
with _|_ (as with checking if and alt). But, a value of type _|_
should be usable in any context, as such a value always diverges,
and will never be used by its immediate context. Changed unify
accordingly, removed special cases.
2011-05-26 20:50:25 -07:00
Paul Stansifer
af6b4821c1
Handle circularity in glob imports in a more elegant fashion.
2011-05-27 02:42:33 +00:00
Paul Stansifer
7fe3d821ac
Add a map from def_id s to items in resolve::env.
...
Use it to provide better error messages in the event of
glob-importing the same name multiple times.
2011-05-27 02:42:33 +00:00
Paul Stansifer
54ca8565c9
Fix bugs: make sure glob imports show up in the right module,
...
and make sure that circular glob imports don't diverge.
2011-05-27 02:42:33 +00:00
Paul Stansifer
40fe44d23e
"import module::*;" now works.
2011-05-27 02:42:33 +00:00
Paul Stansifer
e2bb98001e
Part one of adding globbing to resolve.rs: build up glob links. (Part two will follow those links if non-glob resolution fails.)
2011-05-27 02:42:32 +00:00
Paul Stansifer
f11f846ead
Parsing and folding changes for globbed imports.
2011-05-27 02:42:32 +00:00
Tim Chevalier
610c81af19
Fix typo
2011-05-26 19:13:56 -07:00
Graydon Hoare
79c9e13073
More delicious dead code removal from runtime, upcalls.
2011-05-26 18:21:02 -07:00
Tim Chevalier
4f792f2dbb
Track spans for each local variable in typestate
...
This lets us print better messages in situations with name
shadowing.
2011-05-26 18:14:32 -07:00
Tim Chevalier
250643c549
Remove unused imports
2011-05-26 18:01:48 -07:00
Tim Chevalier
97e0575e2e
Add a span_str function in session
2011-05-26 18:00:54 -07:00
Tim Chevalier
79693fab1f
Fix typo in error message
2011-05-26 18:00:54 -07:00
Graydon Hoare
9f95538462
Remove redisue of unused fields from 'ann'.
2011-05-26 17:26:59 -07:00
Graydon Hoare
2561b01211
Remove residual uses of fold, and fold itself.
2011-05-26 17:16:54 -07:00
Graydon Hoare
8e945dcd81
Remove native glues. All calls to C are direct now.
2011-05-26 16:45:01 -07:00
Graydon Hoare
9491dc3e61
Add early returns to rustc main on non-compiling paths.
2011-05-26 15:22:08 +00:00
Graydon Hoare
dc1b34288c
Pretty print view items with :: rather than :.
2011-05-25 22:09:36 -07:00
Brian Anderson
29a801565a
rustc: Fail better when the first argument to #fmt is not a string literal
2011-05-25 23:50:19 -04:00
Brian Anderson
c4e9d8fb91
rustc: Fail when #fmt is given too many arguments
2011-05-25 23:43:04 -04:00
Michael Sullivan
1b29892b5b
Produce a useful error message in trans when attempting to log an unsupported type.
...
(Previously, an llvm assert was tripped.)
2011-05-25 18:54:33 -04:00
Eric Holk
d72d50473f
Fixing typechecking for spawn.
2011-05-25 18:01:45 -04:00
Rafael Ávila de Espíndola
94129c4216
dead argument removal part one.
2011-05-25 15:33:57 -04:00
Brian Anderson
9a88ba2b81
rustc: Downcase typeck::demand and typeck::pushdown
2011-05-24 20:26:46 -04:00
Brian Anderson
6473b73174
rustc: Use demand functions instead of open-coded typecheck for spawn
...
Un-xfail spawn-non-nil-fn
2011-05-24 20:23:21 -04:00
Rafael Ávila de Espíndola
de2e84e5b0
Only one gc glue.
2011-05-24 18:52:31 -04:00
Rafael Ávila de Espíndola
ac836dd79c
There is only one yield glue.
2011-05-24 18:29:08 -04:00
Rafael Ávila de Espíndola
b1292580b9
Remove dead code for unwind_glue.
2011-05-24 17:28:37 -04:00
Rafael Ávila de Espíndola
0fc91b6ecc
There is only one activate function now.
2011-05-24 17:00:45 -04:00
Eric Holk
2e8afc7b47
Merge pull request #404 from lkuper/cleanup
...
Just removing some unnecessary imports.
2011-05-24 13:51:00 -07:00
Marijn Haverbeke
fbc0e840e3
Stop showing a 'cyclic import' message for unresolved imports
...
This only happened for single-length import paths, because the import
was being looked up in its own scope.
2011-05-24 20:58:38 +02:00
Lindsey Kuper
f1d3b88f0a
Just removing some unnecessary imports.
2011-05-24 11:22:40 -07:00
Tim Chevalier
bad05e20a3
Improve nonexistent-module error message
...
The error message for (for example) "import vec;" without "use std;"
was "cyclic import", which was misleading because there were no
cycles. I changed it to "cyclic import or nonexistent module",
which doesn't break existing tests.
2011-05-24 10:47:58 -07:00
Tim Chevalier
c9a8bdee2f
Improve error message for ambiguous polymorphic types
...
If a type still contains free type variables after typechecking (for
example, as with "auto foo = []", the result was an assertion failure
in typeck. Made it a human-readable error message instead.
2011-05-23 19:46:27 -07:00
Tim Chevalier
b620be9cd2
Typecheck @[] correctly
...
Previously, if you wrote
let @vec[int] foo = @[];
that would be a type error. That didn't seem right, so I changed
pushdown to unify the inner type in an unop application with the
argument type of the operator type.
2011-05-23 17:17:49 -07:00
Brian Anderson
2505a2312e
rustc: Run the llvm verifier pass before optimization. Closes #376
...
The optimization passes were hiding some codegen errors so now we run the
verifier both before and after optimization.
2011-05-23 19:52:57 -04:00
Marijn Haverbeke
86d51ec24b
Get test-pass/utf8.rs to run
...
This involved a small fix to the unicode-escape character lexing and
to the pretty-printer.
2011-05-23 23:25:55 +02:00
Tim Chevalier
2a73c4ffab
Add line breaks to typestate error messages
2011-05-23 13:32:29 -07:00
Brian Anderson
db7611c4c9
rustc: More cleanup of rustc.rs
2011-05-22 16:58:33 -04:00
Brian Anderson
1081d0aee9
rustc: Some refactoring of rustc.rs
2011-05-22 16:41:32 -04:00
Brian Anderson
65ec38c096
rustc: Cleanup formatting in rustc.rs
2011-05-22 16:07:30 -04:00
Brian Anderson
d82e9c1874
rustc: Add a FIXME to expr_alt type checking
2011-05-21 18:35:21 -04:00
Brian Anderson
4504e23a82
rustc: Remove unnecessary pushdown from check_expr in the expr_if case
2011-05-21 18:18:48 -04:00
Brian Anderson
e24d7ae967
rustc: If all if branches are _|_, then the entire if is _|_
2011-05-21 18:18:48 -04:00
Brian Anderson
085fb1a2db
rustc: Remove outdated comment
2011-05-21 14:43:04 -04:00
Brian Anderson
b62bf8cede
rustc: Allow if expressions to fail
2011-05-21 14:22:01 -04:00
Brian Anderson
6824f119fc
rustc: Allow alt expressions to fail
2011-05-21 13:22:01 -04:00
Brian Anderson
418b4c4567
rustc: Assign ty_bot to nodes in write::bot_ty. Remove FIXME
2011-05-21 13:02:58 -04:00
Brian Anderson
779dd809d2
rustc: Blocks shouldn't try to return results for ty_bot
2011-05-21 12:56:31 -04:00
Tim Chevalier
755ca8eb73
Correctly check that ! functions always diverge
...
Also make _|_ unify with any type.
2011-05-20 19:54:14 -07:00
Brian Anderson
2fc0bedc83
rustc: Don't write metadata for unexported items
2011-05-20 21:32:57 -04:00
Tim Chevalier
467b938ea8
Merge remote-tracking branch 'graydon/master' into typestate_4
2011-05-20 18:23:03 -07:00
Tim Chevalier
964898eaf1
Error instead of warning for missing returns. Huzzah!
2011-05-20 18:20:54 -07:00
Tim Chevalier
fed0486c33
Annotate erroring functions in session and parser
2011-05-20 18:20:54 -07:00
Lindsey Kuper
c3410bf927
More work on anonymous objects.
2011-05-20 17:59:56 -07:00
Tim Chevalier
c8d488b337
Change node_ann hash table to a vector in typestate
2011-05-20 16:57:37 -07:00
Tim Chevalier
9128a1bab8
rm unnecessary logging
2011-05-20 16:57:37 -07:00
Tim Chevalier
7e82f23bc0
rm unused import
2011-05-20 16:57:37 -07:00
Tim Chevalier
551fb13689
Add a "fail" after a while(true) loop in two places
...
(in preparation for changing the "function may not return" warning
to an error)
2011-05-20 16:57:37 -07:00
Tim Chevalier
a08a376d6e
Make controlflow part of a function type
...
Change ty_fn to have a controlflow field. A 'controlflow' is
essentially a bit of data that says whether or not this function
never returns to the caller (if it never returns, that means it calls
"fail" or another "never-returns" function on every control path).
Also add syntax for annotating functions that never return:
fn foo() -> ! {
fail;
}
for example. Functions marked with ! implicitly have a result type of
ty_bot, which is a new type that this commit also adds.
2011-05-20 16:57:37 -07:00
Eric Holk
3dd2877975
Using the right mode...
2011-05-20 16:51:09 -07:00
Eric Holk
0de27ce8bd
Translated start_task, but it fails on spp == align_down(spp)
2011-05-20 16:51:09 -07:00
Eric Holk
d01948cd07
Called the new_task upcall. There are refcount issues though.
2011-05-20 16:51:08 -07:00
Eric Holk
41b3979990
Nicer printer of LLVM array types.
2011-05-20 16:51:08 -07:00
Eric Holk
219351e4b9
A little closure towards translating spawn. We're about ready to do the upcall, except that rustc segfaults.
2011-05-20 16:51:08 -07:00
Eric Holk
d6338a8c15
Added some comments to trans_spawn that sort of explains what needs to happen
2011-05-20 16:51:08 -07:00
Eric Holk
2b124a8140
Started working on translating spawn. It correctly generates the task name in the case that it is not provided.
2011-05-20 16:51:08 -07:00
Graydon Hoare
36c083b14c
Options fix from erickt.
2011-05-20 15:20:48 -07:00
Graydon Hoare
fa75703700
Twiddle glue inlining heuristics. ~10% win on build time.
2011-05-20 14:57:52 -07:00
Graydon Hoare
67b8501eb8
Elide a bunch of do-nothing take glue.
2011-05-20 14:50:57 -07:00
Graydon Hoare
381ba1d0ba
Remove redundant secondary declaration of glue.
2011-05-20 14:48:33 -07:00
Patrick Walton
7e43a31f08
rustc: Move the interner to a new module intended to be used for general data structures
2011-05-20 13:57:53 -07:00
Brian Anderson
b6d2fe4d74
rustc: Translate else if blocks the same as other blocks. Closes #388
2011-05-19 23:32:09 -04:00
Brian Anderson
879a952a37
rustc: Find the correct outer scope in trans_block
2011-05-19 23:32:08 -04:00
Rafael Ávila de Espíndola
40b511a7c5
Revert 106216d673
.
...
This depends on llvm's 131294.
2011-05-19 18:30:19 -07:00
Graydon Hoare
494c0c3b61
After all that, give up on "complex" version of type_has_pointers and just manually inspect. Can't calculate property during interning.
2011-05-19 18:28:09 -07:00
Graydon Hoare
7f938f4945
Move the ty_item_table into ty::ctxt.items, move variant_info to ty, and start sketching the contains_pointer property on types.
2011-05-19 17:21:36 -07:00
Graydon Hoare
1d67ee0e88
Remove type_glue.rs, don't think it's going to work.
2011-05-19 17:21:36 -07:00
Patrick Walton
bc87ecf110
rustc: Unify variables using a single type instead of keeping a list and doing it all at the end. This will give us better error messages.
2011-05-19 16:07:12 -07:00
Graydon Hoare
a4dd57705c
Move type cache and node type table into type context.
2011-05-19 15:47:15 -07:00
Marijn Haverbeke
8a7b544995
Finish name collision testing.
...
And fix a the single screw-up in the source code it caught.
2011-05-19 21:58:57 +02:00
Graydon Hoare
31d65453d4
OptLevel changes. Accepts levels 0 to 3 only. '-O' is synonym for --OptLevel=2.
2011-05-19 12:46:10 -07:00
Paul Stansifer
533d3055f3
No functional change. Largely removed the native module/non-native module distinction from resolve.rs
2011-05-19 12:13:35 -07:00
Tim Chevalier
b74d0d7c3d
Typestate checking code no longer uses fold -- only walk.
2011-05-19 11:40:16 -07:00
Tim Chevalier
d60e08c18e
Eliminate explicit recursion in tstate.states (walk does that now),
...
and kill dead code.
2011-05-19 11:40:16 -07:00
Tim Chevalier
e1844d2719
Add ann as an argument to visit_fn
2011-05-19 11:40:16 -07:00
Tim Chevalier
6dcd607277
make trans compile
2011-05-19 11:40:16 -07:00