Brian Anderson
3a2d64f044
stdlib: Use if/alt expressions in std::getopts
2011-05-22 02:10:09 -04:00
Brian Anderson
a0f855e488
stdlib: Report an error when getopts is given an argument to a flag option
2011-05-22 02:10:09 -04:00
Brian Anderson
079711d5f6
stdlib: Add regression tests for std::getopts
2011-05-22 02:10:09 -04:00
Brian Anderson
c1a6c2e6c2
stdlib: Only export what's necessary from std::getopts
2011-05-22 02:10:09 -04:00
Brian Anderson
264c3b5be4
stdlib: Use if/alt expressions in std::generic_os
2011-05-22 02:10:09 -04:00
Brian Anderson
da0e961f61
stdlib: Use if/alt expressions in std::fs
2011-05-22 02:10:09 -04:00
Brian Anderson
85bcf75da1
stdlib: Add regression test for fs::connect and a FIXME
2011-05-22 02:10:09 -04:00
Brian Anderson
0755a30051
stdlib: Use if/alt expressions in std::deque
2011-05-22 02:10:08 -04:00
Brian Anderson
6432599c5d
stdlib: Use if/alt expressions in std::bitv
2011-05-22 02:10:08 -04:00
Brian Anderson
90e6453f46
stdlib: Use if/alt expressions in std::extfmt
2011-05-22 02:10:08 -04:00
Brian Anderson
d7d387171c
test: Un-xfail alias-uninit-value.rs. Closes #374 .
...
This started working correctly at some point.
2011-05-22 02:03:07 -04:00
Brian Anderson
8102926b4b
test: Use more sensible cases in expr-alt-fail-all.
...
Thanks for the review, Jesse.
2011-05-21 20:01:38 -04:00
Brian Anderson
d82e9c1874
rustc: Add a FIXME to expr_alt type checking
2011-05-21 18:35:21 -04:00
Brian Anderson
420d18a448
test: Adda test that all arms of an alt may result in fail
2011-05-21 18:31:40 -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
4bcdf57d78
test: Add a test for mismatched types of if branches
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
c0b4fc1846
Register new snapshots
2011-05-21 18:09:15 -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
7b4eec215c
Some tests for ! annotations
2011-05-20 19:54:14 -07:00
Tim Chevalier
a1b440baaa
Un-XFAIL some tests that now pass.
2011-05-20 19:54:14 -07:00
Tim Chevalier
77f56f3154
XFAIL two tests for stage0
2011-05-20 19:54:14 -07: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
699986d192
fuzzer: Begin writing main
2011-05-20 22:32:41 -04:00
Brian Anderson
01c13a3878
stdlib: Add io::writer.write_line
2011-05-20 22:32:41 -04:00
Brian Anderson
fc8b9671bb
stdlib: Export only what's needed from std::bitv
2011-05-20 22:12:57 -04:00
Brian Anderson
04ce99b83c
stdlib: Export only what's needed from std::sort
2011-05-20 22:12:16 -04:00
Brian Anderson
2fc0bedc83
rustc: Don't write metadata for unexported items
2011-05-20 21:32:57 -04:00
Brian Anderson
7817824205
stdlib: export ptr_eq from box, but not rustrt
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
5de9d27fcc
un-XFAIL forgot-ret and update error pattern
2011-05-20 18:20:54 -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
Tim Chevalier
90dd6e7044
New snapshot that handles bang annotations
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
Eric Holk
51e1ce292d
Added a couple of test cases for sending messages. One works as expected, the other succeeds unexpectedly.
2011-05-20 16:51:08 -07:00
Patrick Walton
4eb476fc75
stdlib: Modify union-find to guarantee that root nodes are always less than or equal to leaf nodes; add a "prune" method
2011-05-20 15:50:43 -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
Eric Holk
5d09e12e15
Added two version of reverse and a swap function to the standard library.
2011-05-19 17:25:37 -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
Patrick Walton
6b95584df5
stdlib: Add vec growth functions that use a thunk to initialize elements
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
Graydon Hoare
0a74ffaea3
xfail vector-no-ann.rs.
2011-05-19 12:18:23 -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
Lindsey Kuper
38b37fcbdb
Checking to make sure we know what 'self' is in nested objects.
2011-05-19 11:52:27 -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
Tim Chevalier
a9bc6715e7
tidy tstate.collect_locals
2011-05-19 11:40:16 -07:00
Tim Chevalier
c0f728712b
Rewrite pre_postconditions to use walk instead of fold
2011-05-19 11:40:16 -07:00
Tim Chevalier
2cd769e358
Add ident as an argument to visit_fn (typestate wants it)
2011-05-19 11:40:16 -07:00
Tim Chevalier
ef5473deb1
Trim imports
2011-05-19 11:40:16 -07:00
Tim Chevalier
bb594a03a1
remove now-unused ts field from ann
2011-05-19 11:40:16 -07:00
Tim Chevalier
e16b097599
Rewrite tstate.annotate to use walk instead of fold
...
and various other tidying in typestate
2011-05-19 11:40:16 -07:00
Tim Chevalier
dc83c84662
Add visit_fn_pre and visit_fn_post fields to visitors
...
Added visit_fn_pre and visit_fn_post fields that get applied to
both regular functions and methods.
2011-05-19 11:40:16 -07:00
Tim Chevalier
ea1701de8c
Add a set_all function in bitv that's the inverse of clear
2011-05-19 11:40:16 -07:00
Tim Chevalier
8cbdaf4f93
Make trans use span_err for the dreaded "ty_var in trans::type_of" error
...
This required quite a bit of tiresome plumbing about of spans.
On the bright side, now other errors can be converted to span_err too.
Includes test cases.
2011-05-19 11:40:16 -07:00
Tim Chevalier
0d429a7603
add a bunch more logging things
2011-05-19 11:40:16 -07:00
Tim Chevalier
f909dd114d
Remove dead file (typestate_check is now a bunch of modules under middle/tstate)
2011-05-19 11:40:16 -07:00
Tim Chevalier
b624b43e47
Beginning of Operation Eliminate Folds
...
Started by rewriting collect_locals to use walk instead of fold
2011-05-19 11:40:16 -07:00
Tim Chevalier
4964023c5e
Fix an error message that reversed the expected and actual number of arguments in a pattern
2011-05-19 11:40:16 -07:00
Patrick Walton
6417610788
rustc: Generalize variable bindings so that we can use it for locals too
2011-05-19 11:14:44 -07:00
Marijn Haverbeke
c750c520e3
Remove rustboot-related logging hacks
...
(Also, feel free to start adding logging to your code. Really. It's fast.)
2011-05-19 19:33:32 +02:00
Patrick Walton
df90934bf7
rustc: Split write_* in typeck into versions that will record fixups
2011-05-18 19:19:20 -07:00
Patrick Walton
d2bdfe36cf
rustc: Don't inline free glue
2011-05-18 18:48:57 -07:00
Patrick Walton
c88fc06b40
rustc: Fix output name of optimized glue when --save-temps is on
2011-05-18 18:48:41 -07:00
Graydon Hoare
6f8b9e176f
Factor free paths out of drop glue, into free glue as in rustboot.
2011-05-18 17:28:08 -07:00
Patrick Walton
0aee8b3bd7
rustc: Thread statement contexts through unification
2011-05-18 15:36:14 -07:00
Rafael Ávila de Espíndola
bb7d4e15a8
Remove dead code.
2011-05-18 16:33:22 -04:00
Marijn Haverbeke
28c4a5586e
Start checking name collisions in modules
...
(And remove a boatload of duplicate imports from the typestate files.)
Name collision checking in local scopes will follow soon.
2011-05-18 22:24:20 +02:00
Rafael Ávila de Espíndola
843739ee98
A quick hack to get the bots green while I refactor this code.
2011-05-18 16:16:52 -04:00
Patrick Walton
13d9f6a264
rustc: Split out type variable fixups from unification
2011-05-18 13:08:54 -07:00
Rafael Ávila de Espíndola
96516e9ca2
One exit_task_glue to rule them all.
2011-05-18 15:43:48 -04:00
Patrick Walton
37d5dd9471
rustc: Group the variable binding machinery into a separate data structure during unification
2011-05-18 11:54:12 -07:00
Rafael Ávila de Espíndola
a795d0e5b2
And yet more dead code.
2011-05-18 14:28:08 -04:00
Rafael Ávila de Espíndola
d108bfe2ee
Remove a bit more dead code.
2011-05-18 14:02:53 -04:00
Rafael Ávila de Espíndola
cebc9b359d
Remove dead rustboot code.
2011-05-18 13:48:57 -04:00
Patrick Walton
f4e049c415
rustc: Thread a statement context through the typechecker; use it for generating variable IDs. 40% typechecking speedup.
2011-05-17 22:21:31 -07:00
Graydon Hoare
49b90d37ed
Add mirror-all-snapshots.py script for extra crowdsourced backup power.
2011-05-17 22:06:55 -07:00
Patrick Walton
fdf8c49882
rustc: Don't rebuild the AST when typechecking statements
2011-05-17 21:09:34 -07:00
Erick Tryzelaar
4d0cbd4310
Move vim syntax file, add indent file.
2011-05-17 20:35:46 -07:00
Patrick Walton
ace8058277
rustc: Have typechecking no longer rebuild the AST
2011-05-17 20:13:04 -07:00
Patrick Walton
df9801c9f0
rustc: Fix type mismatch in lib/sha1.rs constants
2011-05-17 20:13:03 -07:00
Brian Anderson
a98ea4f3ef
rustc: Run block cleanups on else if blocks
...
With the scheme used to translate 'else if' currently the if expression is
translated in a new (else) scope context. If that if expression wants to
result in a value that requires refcounting then it will need to drop the
refcount in the cleanups of the else block.
2011-05-17 22:25:24 -04:00
Patrick Walton
e840a37f33
rustc: Remove typeck::check_item_fn(); it's entirely superfluous!
2011-05-17 19:20:24 -07:00
Patrick Walton
87288a186d
rustc: Make check_const() not rebuild the AST (although it's not called at the moment!)
2011-05-17 19:13:16 -07:00
Patrick Walton
d21741843c
rustc: Make check_block not rebuild the AST
2011-05-17 19:10:24 -07:00
Patrick Walton
10503a4a02
rustc: Don't rebuild the AST when writing back locals
2011-05-17 19:00:29 -07:00
Patrick Walton
3ffe390570
rustc: Print the types of declarations in --typed-pretty mode
2011-05-17 19:00:16 -07:00
Patrick Walton
8637a4eaf3
rustc: Pull the type out of the correct expression when typechecking channel types. Puts out burning tinderbox.
2011-05-17 18:19:45 -07:00
Patrick Walton
83e1dc63c2
rustc: Fix return value of expr_spawn case in pushdown_expr. Should put out soon-to-be-burning tinderbox.
2011-05-17 17:44:30 -07:00
Patrick Walton
c6d4c31ee4
rustc: Don't rebuild the AST when typechecking expressions
2011-05-17 17:43:06 -07:00
Patrick Walton
7a3812afc3
rustc: Add a typed pretty-printing mode for debugging
2011-05-17 17:43:06 -07:00
Eric Holk
cff9a3cc2a
Fixing compile problems from recent changes.
2011-05-17 14:38:32 -07:00
Eric Holk
cf02c67137
Removing the TODO comment.
2011-05-17 14:38:32 -07:00
Eric Holk
8d10594ed5
Added a few more expr_spawn cases so the spawn.rs test case gets a little further before failing.
2011-05-17 14:38:32 -07:00
Patrick Walton
37768cba92
rustc: Don't rebuild call or bind expressions during typechecking
2011-05-17 14:37:23 -07:00
Patrick Walton
f300de2963
rustc: Make return value checking warnings a little prettier. Also introduce a new "note" diagnostic level.
2011-05-17 14:12:49 -07:00
Patrick Walton
5047ab0b0c
rustc: Flatten annotations
2011-05-17 13:55:32 -07:00
Marijn Haverbeke
a90df393f9
Alias-ify the parser and lexer
...
This only shaves a measly 19k off the rustc binary... but hey, every
little thing helps.
2011-05-17 20:45:49 +02:00
Marijn Haverbeke
09d8ef8d51
Finally rename std::_xxx to std::xxx
...
Except for _task, which is still a keyword.
2011-05-17 20:41:41 +02:00
Paul Stansifer
1fdc75ee7c
Parser fix: 'fail' was eating the next token that came after it.
2011-05-17 05:40:17 +00:00
Marijn Haverbeke
f7df3696de
Switch pretty printer to new vec syntax
2011-05-17 07:19:34 +02:00
Brian Anderson
63cf381ca1
stdlib: Remove transitional extfmt.RT module
2011-05-17 00:58:52 -04:00
Brian Anderson
fbfd8552ab
Return a better result from blocks. Closes issue #377
...
Blocks return in a copy of the result of their ending expression, not the
direct result of the ending expression, as that may be a local variable which
gets zeroed by drop_slot.
2011-05-17 00:46:56 -04:00
Graydon Hoare
4539b3f6ab
Register new snapshots.
2011-05-16 19:57:03 -07:00
Graydon Hoare
4c5e315843
Rename aux.rs to auxiliary.rs since win32 doesn't like files named "aux". Really.
2011-05-16 19:21:29 -07:00
Graydon Hoare
cc27e0f8c6
Update a couple tests that slipped through.
2011-05-16 19:08:59 -07:00
Graydon Hoare
a2e2e78103
Merge remote branch 'origin/master' into HEAD
...
Conflicts:
src/comp/middle/trans.rs
2011-05-16 19:04:45 -07:00
Graydon Hoare
fbbc1a77d2
Rewrite everything to use [] instead of vec() in value position.
2011-05-16 18:21:22 -07:00
Graydon Hoare
ae030c5bf2
Begin vec() -> [] transition.
2011-05-16 17:04:12 -07:00
Tim Chevalier
41b7af9652
make the return-checker happy about pretty::pp::base_indent
2011-05-16 16:59:30 -07:00
Tim Chevalier
387a8888ee
Fix get_os and get_arch
...
get_os and get_arch were failing to return a value in the error
case; they were also assuming that strings are indexed from 1. No
idea how they ever worked, but anyway, fixed.
2011-05-16 16:59:30 -07:00
Tim Chevalier
b42bb2cff2
Two tests that the typechecker correctly unifies type arguments in patterns with their expected tag types
2011-05-16 16:59:30 -07:00
Tim Chevalier
971b5d5151
Started adding support for return checking and non-returning function annotations
...
* Reorganized typestate into several modules.
* Made typestate check that any function with a non-nil return type
returns a value. For now, the check is a warning and not an error
(see next item).
* Added a "bot" type (prettyprinted as _|_), for constructs like be, ret, break, cont, and
fail that don't locally return a value that can be inspected. "bot"
is distinct from "nil". There is no concrete syntax for _|_, while
the concrete syntax for the nil type is ().
* Added support to the parser for a ! annotation on functions whose
result type is _|_. Such a function is required to have either a
fail or a call to another ! function that is reached in all control
flow paths. The point of this annotation is to mark functions like
unimpl() and span_err(), so that an alt with a call to err() in one
case isn't a false positive for the return-value checker. I haven't
actually annotated anything with it yet.
* Random bugfixes:
* * Fixed bug in trans::trans_binary that was throwing away the
cleanups for nested subexpressions of an and or or
(tests: box-inside-if and box-inside-if2).
** In typeck, unify the expected type arguments of a tag with the
actual specified arguments.
2011-05-16 16:59:25 -07:00
Tim Chevalier
c75125fcce
Noticed that metadata::Encode::enc_sty didn't have a case for ty_task, so I added one (though this wasn't causing the problem I was seeing...
2011-05-16 16:13:11 -07:00
Patrick Walton
f74298215c
rustc: Fix indentation in typeck::check_lit()
2011-05-16 15:24:32 -07:00
Patrick Walton
1fc1ad91ce
rustc: Don't rebuild the call expression in typeck::replace_expr_type()
2011-05-16 15:20:11 -07:00
Patrick Walton
278d64dafc
rustc: Don't unpack annotations in trans::lval_generic_fn()
2011-05-16 15:20:11 -07:00
Graydon Hoare
d577f5bdf9
Let the snapshot-file parser parse empty T lines, since they are used to start a transition.
2011-05-16 15:14:44 -07:00
Patrick Walton
3ea3d9eed6
rustc: Make the parser use the interner
2011-05-16 14:54:10 -07:00
Kelly Wilson
b91ef944c8
Replace --bitcode with the canonical --emit-llvm
2011-05-16 14:07:43 -07:00
Kelly Wilson
196351aa44
Add automatic exe generation capabilities. Add --bitcode flag to generate only an LLVM bitcode file.
2011-05-16 14:07:43 -07:00
Patrick Walton
32b8dcb97c
rustc: Factor out the code that interns types into an "interner" data structure
2011-05-16 13:58:13 -07:00
Patrick Walton
3760bfab87
rustc: Don't rebuild AST patterns during typechecking
2011-05-16 11:45:00 -07:00
Patrick Walton
ca51b49c0a
rustc: Replace the redundant typeck::node_ann_ty_params() with ty::ann_to_type_params()
2011-05-16 11:43:50 -07:00
Patrick Walton
3aaf02b907
rustc: Make the type collection pass no longer rebuild the AST
2011-05-16 10:34:32 -07:00
Patrick Walton
525a5c582f
rustc: Fix indentation in ty_param_count_and_ty_for_def()
2011-05-16 10:32:38 -07:00
Patrick Walton
594c70f788
rustc: Add an item_ann() accessor function
2011-05-16 10:32:38 -07:00
Brian Anderson
f77c5ba512
rustc: Wait until generic glue is actually emitted to define it as internal
...
The verifier was not liking this when generating unoptimized bitcode. Per LLVM
docs it is not valid for function declarations to be marked internal, but
their implementations may be.
2011-05-15 19:53:06 -04:00
Brian Anderson
8eaafdaa2d
rustc: Rename 'Unify' modules to 'unify'
2011-05-14 21:13:47 -04:00
Brian Anderson
f33d490032
Remove xfail-boot lines from tests
2011-05-14 21:05:22 -04:00
Patrick Walton
de421afa55
rustc: Use walk instead of fold for the first item collection pass
2011-05-14 11:03:10 -07:00
Patrick Walton
8b3f359442
rustc: Change "Collect" to "collect"
2011-05-14 11:03:10 -07:00
Brian Anderson
ec30c71296
Add a regression test for issue #374 (XFAILed)
2011-05-14 13:29:49 -04:00
Brian Anderson
fb76c25729
WIP
2011-05-14 13:11:37 -04:00
Marijn Haverbeke
b7d6934ef3
fix a long line that i forgot to commit
2011-05-14 13:27:21 +02:00
Marijn Haverbeke
ee45fd80c6
Mark IDENT tokens that are followed by ::
...
So that the type parser won't go off and try to parse a vec
type when it sees vec::init_op.
2011-05-14 12:57:42 +02:00
Brian Anderson
1ad58d4dd6
rustllvm: Free TargetMachine in LLVMRustWriteOutputFile
2011-05-14 00:48:51 -04:00
Brian Anderson
aaf41815b1
rustc: Dispose intrinsics memory buffer
2011-05-14 00:29:24 -04:00
Brian Anderson
371dbf9834
rustc: Dispose the intrinsics LLVMModuleRef
2011-05-14 00:22:44 -04:00
Brian Anderson
0b73b29383
rt: Don't overshoot the end of the logging spec during parsing
2011-05-13 23:22:29 -04:00
Brian Anderson
9e9d57657d
rt: Allocate room for null terminator in logging spec
2011-05-13 23:22:25 -04:00
Patrick Walton
85120d9959
rustc: Look types up in the side table
2011-05-13 18:46:44 -07:00
Graydon Hoare
6997adf763
Remove rustboot from the repository.
2011-05-13 18:38:28 -07:00
Patrick Walton
ef75860a0a
rustc: Write nil types into the node type table wherever plain_ann() is used
2011-05-13 17:55:07 -07:00
Lindsey Kuper
5679f5c55e
'with' no longer a token; whitespace police.
...
Plus renaming the anonymous objects test to a more descriptive name,
and XFAILing it because it doesn't work yet.
2011-05-13 17:37:01 -07:00
Lindsey Kuper
cd31d5d532
More anon obj work; whitespace police in middle::fold
...
Passing args to middle::fold::fold_expr_anon_obj by reference to be
consistent with the other folds; adding a dummy fold_expr_anon_obj to
typeck to be filled in later.
2011-05-13 17:35:13 -07:00
Lindsey Kuper
814b17352c
Use new module namespace syntax.
2011-05-13 17:35:13 -07:00
Lindsey Kuper
b6f35c6a4b
More work toward anonymous objects.
2011-05-13 17:35:13 -07:00
Lindsey Kuper
d3242b9644
Bug fixes.
...
Fixed infinite loop on anonymous objects in parser; added
expr_anon_obj to walk.rs; fixed syntax of test case.
2011-05-13 17:35:13 -07:00
Lindsey Kuper
6c1c5b3948
More progress on anonymous objects.
...
Still segfaulting on the method-overriding.rs test, though.
2011-05-13 17:35:13 -07:00
Lindsey Kuper
6a53e39e71
Correct capitalization of "Option".
2011-05-13 17:35:12 -07:00
Lindsey Kuper
7c2979e26f
Starting on support for anonymous objects. Just syntax so far.
2011-05-13 17:35:12 -07:00
Graydon Hoare
ae784df3ce
Add support for 'T' transition snapshots, which are identical to S snapshots except they tell the makefile to stop at stage1.
2011-05-13 17:06:58 -07:00
Patrick Walton
fac1342513
rustc: Move replace_expr_type() from ty to typeck, as it's only used in the latter
2011-05-13 17:06:30 -07:00
Brian Anderson
843e9435ab
rustc: Fix long lines in typeck.rs
2011-05-13 20:06:02 -04:00
Patrick Walton
23d3b0ec57
rustc: Get ann_to_type_params() on board the ann_to_ty_param_substs_opt_and_ty() train
2011-05-13 16:53:35 -07:00
Patrick Walton
0739849e9f
rustc: Make all type lookups go through the one ty::ann_to_ty_param_substs_opt_and_ty() function
2011-05-13 16:40:21 -07:00
Patrick Walton
4f2eb31870
rustc: Write types contained in "trivial annotations" to the table
2011-05-13 16:27:55 -07:00
Patrick Walton
e888fe6f9b
rustc: Change ty::triv_ann() to take a node ID instead of a full annotation
2011-05-13 14:39:00 -07:00
Brian Anderson
2f440b1452
rustc: lowercase the link and link::write modules
2011-05-13 16:55:37 -04:00
Graydon Hoare
0d32ff723a
Slight adjustments to shape, rename to type_glue.rs.
2011-05-13 13:29:50 -07:00
Patrick Walton
c97b05141a
rustc: Add write_type() wherever ann_types are written, except for triv_ann()
2011-05-13 13:06:34 -07:00
Marijn Haverbeke
7647b838a1
Remove reserved word tests (since reserved words were removed)
...
Ping me if you disagree, but I think that in a language that's as
in-flux as rust currently is, it is silly to try and enforce a single
future-compatibility. The reserved words didn't work well with the
parser refactor, so I dropped them for the time being. We can,
eventually, bring them back as type-only reserved words.
2011-05-13 22:00:13 +02:00
Marijn Haverbeke
571afe71ba
Safeguard against using statement or item keywords as value ids
...
This prevents insane things like 'auto while = 2', which would parse
in the previous revision, but then break when you tried to mutate it
with 'while = 10'.
2011-05-13 22:00:13 +02:00
Marijn Haverbeke
57ffa2a487
Make the parser more careful about keywords
...
Keywords are now only recognized in contexts where they are valid. The
lexer no longer recognizes them, all words are lexed as IDENT tokens,
that get interpreted by the parser.
2011-05-13 22:00:13 +02:00
Patrick Walton
be9aa1cc5e
rustc: Fix the type of node_types; stub the write_type function
2011-05-13 12:12:54 -07:00
Patrick Walton
6e34679a65
rustc: Remove a minor rustboot workaround in typeck::resolve_local_types_in_block()
2011-05-13 11:23:00 -07:00
Brian Anderson
c124404d0e
Fix naming of libc that was mangled by recent module changes
...
It doesn't appear that rustc makes use of these strings so it didn't actually
break anything yet.
2011-05-13 13:55:57 -04:00
Patrick Walton
8a8f68aa75
rustc: Make typeck::instantiate_path() not return an annotation
2011-05-13 10:53:55 -07:00
Marijn Haverbeke
ae26b775b4
Implement module namespaces
...
Module names no longer clash with type and value names. The
tokenizer/parser still needs to be taught to be more careful in
identifying keywords, so that we can use 'str' and 'vec' and so as
module names.
2011-05-13 17:20:46 +02:00
Marijn Haverbeke
eb419fd8c7
Extend crate format to allow multiple definitions for a single name
...
The type/value namespace distinction pretty much works now. Module
namespace is up next.
2011-05-13 17:20:39 +02:00
Marijn Haverbeke
1a12a7b04b
Make module indices hold a list of items
...
This way, they can support having both a type and a value
of the same name.
2011-05-13 13:34:59 +02:00
Marijn Haverbeke
58ec5d1654
Move capture checking into resolve.rs
...
Drops capture.rs. The new algorithm also checks for captures function
arguments and obj fields.
2011-05-13 12:44:05 +02:00
Marijn Haverbeke
89490e416b
Change resolve to use walk instead of fold
...
Possibly, at some point, we should add a state-passing variant of
walk, or a wrapper that makes it easier to thread state. (See the
repetetive pop_state_for_* functions in this commit.)
2011-05-13 11:35:25 +02:00
Marijn Haverbeke
7082bf4478
Ensure visit_ty is called on type parameters during walk
2011-05-13 11:35:25 +02:00
Marijn Haverbeke
39a000714a
Add visit_arm and visit_method to walk.rs
...
The resolver needs to update its state for individual arms and
methods.
2011-05-13 11:34:51 +02:00
Brian Anderson
2896a866d6
Change fuzzer to match new module standards
2011-05-12 22:45:55 -04:00
Brian Anderson
02fdd2d2d9
Rename std.extfmt.CT to std.extfmt.RT to ct and rt
...
Temporarily duplicate the entire RT module, leaving it with the old name to
accomodate the stage0 compiler. Will be removed after the next snapshot.
2011-05-12 22:22:28 -04:00
Patrick Walton
5295a4dabd
rustc: Flatten recursive vectors in trans::simplify_type(). Prevents an infinite loop.
2011-05-12 18:37:28 -07:00
Patrick Walton
b163247d4e
rustc: Beginnings of a "shape" module to convert types to shapes
2011-05-12 18:30:21 -07:00
Patrick Walton
033b38b636
rustc: Make ty::expr_ann() terser
2011-05-12 16:57:08 -07:00
Patrick Walton
0b7dd0d918
rustc: Pass a node type table around, unused as of yet
2011-05-12 16:41:55 -07:00
Graydon Hoare
5ceaf345ed
Add stats option and lazily emit glue.
2011-05-12 15:42:51 -07:00
Patrick Walton
295c037aac
etc: Update rust.vim with new keywords; color types differently from keywords
2011-05-12 14:32:54 -07:00
Graydon Hoare
1fdddede22
Add snap-stageN targets.
2011-05-12 13:08:57 -07:00
Graydon Hoare
b64098e58c
Register new snapshots for incompatible-syntax transition.
2011-05-12 13:03:05 -07:00
Marijn Haverbeke
9419c5df77
Fix mistaken replacements in error-pattern comments in tests
2011-05-12 21:45:29 +02:00
Marijn Haverbeke
3816e57fd2
Downcase std modules again, move to :: for module dereferencing
...
This should be a snapshot transition.
2011-05-12 21:30:44 +02:00
Marijn Haverbeke
b1d3364487
Transitional change to make extfmt output lowercase module name
2011-05-12 21:30:43 +02:00
Marijn Haverbeke
6510f1ce7c
Change module dereference syntax from . to ::
...
This will need to be a snapshot.
2011-05-12 21:30:35 +02:00
Marijn Haverbeke
dd9b6dccb4
Remove some truly wrong logic in parse_constrs
2011-05-12 15:52:12 +02:00
Marijn Haverbeke
358a1aeec9
Keep resolve data in external hash table, rather than embedded defs
...
One step closer to removing fold and having a single, immutable AST.
Resolve still uses fold, because it has to detect and transform
expr_field expressions. If we go through on our plan of moving to a
different syntax for module dereferencing, the parser can spit out
expr_field expressions, and resolve can move to walk.
(I am truly sorry for the things I did in typestate_check.rs. I expect
we'll want to change that to walk as well in the near future, at which
point it should probably pass around a context record, which could
hold the def_map.)
2011-05-12 15:40:21 +02:00
Marijn Haverbeke
2b36e40c58
Ensure ann tags are actually kept around during typechecking
...
This way, the tag assigned by the parser stays with the node.
I realize ann replacing is probably going away real soon, but
I needed this now for moving the resolve defs out of the AST.
2011-05-12 10:51:13 +02:00
Marijn Haverbeke
079512494f
Properly lex block comments followed by EOF
2011-05-12 09:31:06 +02:00
Marijn Haverbeke
d719b5cae7
Provide a more useful message when failing to translate a const
2011-05-12 09:17:59 +02:00
Brian Anderson
353ed4bdff
Remove unused filename parameter from lexer.new_reader
2011-05-11 23:38:20 -04:00
Brian Anderson
a459bcd127
Give the lexer a session so that it can fail more informatively
2011-05-11 23:04:16 -04:00
Patrick Walton
531515d7ae
rustc: Represent types as uints. Cuts typechecking down from 14s to 12s.
2011-05-11 17:05:39 -07:00
Patrick Walton
da09a0320e
rustc: Remove a few kludges intended to work around rustboot's lack of structural comparison from equal_type_structures()
2011-05-11 16:18:02 -07:00
Patrick Walton
6953841e25
rustc: Remove magic numbers; they aren't a win
2011-05-11 16:10:17 -07:00
Patrick Walton
df914e8904
rustc: Intern all types. 4s regression.
2011-05-11 15:56:23 -07:00
Patrick Walton
26ab36afb1
rustc: Hoist derived type descriptors to the top of the function
2011-05-11 12:05:02 -07:00
Graydon Hoare
927138016a
Register new snapshots.
2011-05-11 09:35:58 -07:00
Marijn Haverbeke
14f1fe0e29
Remove mod indices from the AST
...
They are now created by the resolve pass, which is the only pass that
needs them, and kept internal to that pass.
2011-05-11 17:11:44 +02:00
Marijn Haverbeke
5bea22d75c
Add a missed xfail-stage0
2011-05-11 16:44:42 +02:00
Marijn Haverbeke
88621bc53c
Remove a few more 'mutable' words
...
Didn't see these before because they live in non-Linux code.
2011-05-11 15:39:39 +02:00
Marijn Haverbeke
fe29d24b6e
Get rid of arm indices
2011-05-11 15:26:36 +02:00
Marijn Haverbeke
5405f45274
Get rid of block indices
2011-05-11 15:10:24 +02:00
Marijn Haverbeke
7d086df095
Stop depending on block indices in capture.rs
2011-05-11 13:49:48 +02:00
Marijn Haverbeke
9cb20153a8
Hash only on def_num when storing def_ids that are local
2011-05-11 13:06:43 +02:00
Marijn Haverbeke
7f222423b7
Use a const for crate-num-zero (ast.local_crate)
2011-05-11 12:59:34 +02:00
Marijn Haverbeke
6b46113afc
Cache external crate lookups in resolve.rs
...
According to --time-passes, resolution went from 2 to 0 seconds. Not
really the bottleneck... but if we want to be crazy fast, just
consider this a future bottleneck that was fixed very timely.
2011-05-11 12:32:37 +02:00
Marijn Haverbeke
e9c12ab1d0
Rewrite comp/middle/resolve.rs
...
* Cleans up the algorithm
* Move first pass to walk (second still folds)
* Support part of a type/value namespace split
(crate metadata and module indices still need to be taught about this)
* Remove a few blatant inefficiencies (import tables being recreated for
every lookup, most importantly)
2011-05-11 12:32:37 +02:00
Brian Anderson
e4c3287367
Reuse a single work buffer every time the SHA1 message block is processed.
...
This finally allows the full lib-sha1 test to run in a reasonable amount of
time. Was 30s, now 3s. Trims a second or two from stage2/rustc. XFAIL lib-sha1
in stage0 since it will be very slow until the next snapshot.
2011-05-11 01:38:17 -04:00
Brian Anderson
7e7d134e3c
Remove unnecessary array access from SHA1
...
Provides a very small speedup.
2011-05-11 01:38:17 -04:00
Brian Anderson
e35984b6c6
Introduce str_slice runtime function
...
This reduces the time to execute the new lib-str tests from 1:40ish to a few
seconds and will eventually allow the full lib-sha1 test to run in a
reasonable amount of time. XFAIL lib-str in stage0 - it will run very slowly
until the next snapshot.
2011-05-11 01:38:16 -04:00
Graydon Hoare
dc0aab47a7
More alias-ification of trans.
2011-05-11 05:11:59 +00:00
Brian Anderson
aa40d61d5d
Link fuzzer to the rustc crate
2011-05-10 21:31:14 -04:00
Brian Anderson
a8e8585fbc
Add meta info to rustc.rc
2011-05-10 21:31:14 -04:00
Brian Anderson
a5ea56c6f0
Introduce the fuzzer crate and make rules
2011-05-10 21:31:14 -04:00
Patrick Walton
f627c2ff21
rustc: Don't interleave allocas with stores when copying arguments to allocas
2011-05-10 18:29:14 -07:00
Graydon Hoare
390ce40165
Begin alias-ifying trans.
2011-05-10 18:07:40 -07:00
Graydon Hoare
cf3e737eee
Avoid mangle_name_by_type_only call in tydesc names unless debugging.
2011-05-10 18:07:40 -07:00
Patrick Walton
869e9017eb
rustc: Create mutable vectors in macos_OS.rs. Should put out Darwin tinderbox.
2011-05-10 17:50:39 -07:00
Patrick Walton
1448fc1a24
rustc: Lower the size limit on ty_to_short_str() and always call it in favor of direct calls to metadata.Encode.ty_str() in trans
2011-05-10 17:50:39 -07:00
Patrick Walton
7da9101e11
rustc: Make -g not take an argument
2011-05-10 17:50:39 -07:00
Graydon Hoare
46886b2339
Attempt to put out burning darwin tinderbox.
2011-05-10 17:47:55 -07:00
Patrick Walton
10c9266525
rustc: Number everything with an annotation
2011-05-10 17:27:59 -07:00
Graydon Hoare
4b5b96c511
Remove a couple more spurious 'mutable' value qualifiers from macos_OS.rs.
2011-05-10 17:04:41 -07:00
Graydon Hoare
7e8b57d1bb
Only name LLVM values / blocks / types when saving temporaries.
2011-05-10 17:04:41 -07:00
Brian Anderson
4c70ddb162
Un-XFAIL syntax-extension-fmt.rs
2011-05-10 19:46:22 -04:00
Brian Anderson
92471efff4
Un-XFAIL compile-fail export tests for stage0
2011-05-10 19:18:38 -04:00
Graydon Hoare
d6f1fcff6b
Add --time-llvm-passes.
2011-05-10 16:10:08 -07:00
Patrick Walton
813636d52e
stdlib: Remove Str.unsafe_from_mutable_bytes(). rustc now self-hosts 18 seconds faster.
2011-05-10 15:20:36 -07:00
Patrick Walton
17daf1f9bf
rustc: Cache intermediate results of metadata.Encode.ty_str. Shaves 30% off translation time.
2011-05-10 14:48:24 -07:00
Graydon Hoare
3bec4c8193
Switch memcpy to memmove since we're willing to compile x = x and such.
2011-05-10 14:22:14 -07:00
Patrick Walton
2849103f24
rustc: Get rid of native Rust glue for all upcalls except the exit task glue
2011-05-10 14:04:34 -07:00
Graydon Hoare
55f0f79a46
Re-enable use of llvm intrinsics for memcpy, memset. Should have aligned stack now.
2011-05-10 11:50:29 -07:00
Brian Anderson
1abb7a868e
Fix long lines in fold.rs, typeck.rs
2011-05-09 22:11:56 -04:00
Graydon Hoare
4539f8a03c
Alias-ify fold and its users, remove another 85kb.
2011-05-09 17:50:06 -07:00
Patrick Walton
cfcc8678e5
rustc: Give our upcall definitions the right values
2011-05-09 16:59:18 -07:00
Graydon Hoare
476442e48c
Alias-ify walk, typeck, metadata. Cuts another 80kb off rustc.
2011-05-09 16:17:17 -07:00
Patrick Walton
071ed380fb
rustc: Declare upcalls with real signatures; preparation for killing rust_native_rust_* stubs
2011-05-09 15:33:02 -07:00
Graydon Hoare
4cfca125da
Register new snapshots.
2011-05-09 15:07:53 -07:00
Graydon Hoare
b00f3074d4
Remove boxes from token.t.
2011-05-09 14:17:45 -07:00
Patrick Walton
70c759030c
rustc: Alias fix part 2 -- Check that the aliasness of function parameters matches. Add a test case.
2011-05-09 14:00:50 -07:00
Graydon Hoare
b2b33de819
Alias-ify a variety of fn signatures in ty. Cuts 180kb off rustc.
2011-05-09 13:09:20 -07:00
Patrick Walton
662e949540
rustc: Alias fix part 1 -- Separate out AST modes from typechecker modes, and introduce an "either value or alias" mode
2011-05-09 12:27:03 -07:00
Patrick Walton
bc879a4e1e
rustc: Replace our homebrew list of passes with the standard function and module passes, along with the TargetData passes.
2011-05-09 11:44:47 -07:00
Graydon Hoare
d97c5d97de
Register new snapshots.
2011-05-09 10:46:38 -07:00
Patrick Walton
7641142ce2
rt: Consistently refer to structs as structs and classes as classes. Clang complains about this.
2011-05-08 21:10:42 -07:00
Patrick Walton
106216d673
rustc: Stop emitting zero-length arrays
2011-05-08 16:26:35 -07:00
Graydon Hoare
db3b9a4992
Stop stringifying integers to get integral constants.
2011-05-07 18:54:23 +00:00
Patrick Walton
a71fda40b8
rustc: Make llvm_err() conform to Postel's law a little better
2011-05-06 18:19:42 -07:00
Patrick Walton
ca1b1666e0
rustllvm: Add a function to add the standard function passes to a module; change uses of bool in LLVMAddStandardModulePasses() to LLVMBool
2011-05-06 18:13:22 -07:00
Graydon Hoare
10a2093d37
Failure to re-stage changes strikes again.
2011-05-06 16:54:50 -07:00
Graydon Hoare
0f23bbac01
Fix GenericOS.getenv returning a raw str, return an Option.t[str] instead.
2011-05-06 16:30:39 -07:00
Graydon Hoare
e2f7f11d47
Put out burning linux tinderbox.
2011-05-06 16:07:28 -07:00
Patrick Walton
c624ed72b1
rustc: Uncomment LLVMAddStandardPasses, now that we have a native glue that supports 8 arguments.
2011-05-06 14:22:17 -07:00
Marijn Haverbeke
d39ca857fc
Remove a few more superfluous 'mutable' keywords
2011-05-06 22:52:02 +02:00
Marijn Haverbeke
a3ec0b1f64
Rename std modules to be camelcased
...
(Have fun mergining your stuff with this.)
2011-05-06 22:51:19 +02:00
Graydon Hoare
44c1621525
Register new snapshots.
2011-05-06 13:34:56 -07:00
Patrick Walton
ab437253d3
rustc: Bump the number of native glues to 8
2011-05-06 12:50:48 -07:00
Patrick Walton
d089d9f9ed
rustllvm: Add a binding to the LLVM standard module passes
2011-05-06 12:38:00 -07:00
Patrick Walton
5e2088f2fa
rustc: For stack local derived tydescs, allocate the root tydesc separately from the parameter tydescs. This allows SROA, and consequently inlining, to work.
2011-05-06 12:37:59 -07:00
Patrick Walton
57a5c3ac9f
rustc: Factor derived tydesc construction out of get_tydesc()
2011-05-06 12:37:59 -07:00
Patrick Walton
8e7aeed2d5
rustc: Include a representation of the type in question in the symbols generated for tydescs
2011-05-06 12:37:59 -07:00
Kelly Wilson
b4a0d891c0
Ge the host triple using LLVM. Fix a few 'mutable' warnings also.
2011-05-06 11:30:39 -07:00
Graydon Hoare
1e03f00404
Use #env to bake a git revision string into rustc's --version output.
2011-05-06 11:21:51 -07:00
Rafael Ávila de Espíndola
8df37716ce
Fix OS X build.
2011-05-05 23:16:59 -04:00
Patrick Walton
883eb38b28
rustc: Remove some debugging code from decl_native_fn_and_pair()
2011-05-05 17:58:48 -07:00
Patrick Walton
81cda5ad45
rustc: Fix a bunch of argument-passing bugs in decl_native_fn_and_pair()
2011-05-05 17:48:10 -07:00
Graydon Hoare
9e3b096d98
Fix x86.rs triple for linux.
2011-05-05 17:20:27 -07:00
Lindsey Kuper
9d7fc21967
Consolidating expr_to_str functions.
2011-05-05 16:53:25 -07:00
Kelly Wilson
850dff486e
Add quick sort function to the std lib.
2011-05-05 16:40:57 -07:00
Rafael Ávila de Espíndola
4445d6771d
Use symbolic register names so that we get the correct encoding on OS X.
2011-05-05 19:00:42 -04:00
Rafael Ávila de Espíndola
d6deeffd95
Change the setup so that rust_activate_glue returns to rust_exit_task_glue
...
and rust_exit_task_glue calls the rust main.
This is simpler since we only need to setup one frame. It also matches
what ld.so does, so gdb is happy and stops a backtrace at rust_exit_task_glue
instead of continuing past whatever function happened to be before
rust_exit_task_glue is the object file.
This is the rt part and should be merged after the rust0 part.
2011-05-05 15:46:10 -07:00
Graydon Hoare
d85260bcc5
Register new stage0 snapshots.
2011-05-05 15:46:05 -07:00
Rafael Ávila de Espíndola
157f61f8c8
Change the setup so that rust_activate_glue returns to rust_exit_task_glue
...
and rust_exit_task_glue calls the rust main.
This is simpler since we only need to setup one frame. It also matches
what ld.so does, so gdb is happy and stops a backtrace at rust_exit_task_glue
instead of continuing past whatever function happened to be before
rust_exit_task_glue is the object file.
This is only the rustc changes and should be merged first.
2011-05-05 15:14:34 -07:00
Patrick Walton
2d9ccf3ae5
rustc: Add Rust intrinsic support to the crate metadata reader and writer
2011-05-05 14:35:18 -07:00
Graydon Hoare
50ac893b00
Attempt to fix fs.dirname harder.
2011-05-05 14:31:45 -07:00
Patrick Walton
9a1f0977a2
rustc: Fix bug in equal_abi that was preventing Rust intrinsics from working
2011-05-05 14:21:59 -07:00
Graydon Hoare
2131f2bb6b
Because good hackers at least check to see if the code compiles.
2011-05-05 13:53:57 -07:00
Graydon Hoare
c80255e510
Fix assumption that only os_fs.path_sep can separate paths, sigh.
2011-05-05 13:42:52 -07:00
Graydon Hoare
f5f2f76339
Add --help, --version and -v flags (not yet supporting GIT_REV env var, waiting on snapshot).
2011-05-05 13:09:43 -07:00
Patrick Walton
a74feaf159
rustc: Link with intrinsics.bc; change intrinsics linkage to linkonce_odr
2011-05-05 12:46:22 -07:00
Patrick Walton
5fb6e6364b
rustc: Add a binding to LLVM's bitcode parser
2011-05-05 11:34:45 -07:00
Tim Chevalier
6b742aec91
Enforce in typechecker that preds return a bool
...
as well as a test case
2011-05-05 11:26:07 -07:00
Tim Chevalier
acf9bd7909
Test cases for pred / check stuff
2011-05-05 11:26:07 -07:00
Tim Chevalier
e3a68e235c
Bring back "pred" syntax for writing predicates for check
...
This commit reinstates the requirement that the predicate in a
"check" must be a manifest call to a special kind of function
declared with the new "pred" keyword instead of "fn". Preds must
have a boolean return type and can only call other preds; they
can't have any effects (as enforced by the typechecker).
The arguments to a predicate in a check expression must be
slot variables or literals.
2011-05-05 11:26:07 -07:00
Tim Chevalier
3060eadcba
Check well-formedness of constraints
...
Check that the operand in a constraint is an explicit name,
and that the operands are all local variables or literals. Still need
to check that the name refers to a pure function.
2011-05-05 11:26:07 -07:00
Tim Chevalier
bc5650a9d0
Change checks to asserts in test/bench files
2011-05-05 11:26:07 -07:00
Tim Chevalier
4f892dd9d7
Check that the operand in a check is a call
...
In addition, fix bug in fold that was turning asserts into checks.
More typechecking still needs to be done.
2011-05-05 11:26:07 -07:00
Tim Chevalier
59a0e98096
Un-XFAILed not-a-pred in stage0 (it fails correctly)
2011-05-05 11:26:07 -07:00
Marijn Haverbeke
1f45dda9d2
Remove 'deprecated mutable...' from our code
...
This should make compilation a bit less noisy.
2011-05-05 20:19:43 +02:00
Marijn Haverbeke
3d738e9e06
Return a fresh, unreachable context after ret, break, and cont
...
This ensures we don't get compile errors on unreachable code (see
test/run-pass/artificial-block.rs for an example of sane code that
wasn't compiling). In the future, we might want to warn about
non-trivial code appearing in an unreachable context, and/or avoid
generating unreachable code altogether (though I'm sure LLVM will weed
it out as well).
2011-05-05 20:19:43 +02:00
Marijn Haverbeke
9432626b68
Eradicate fold from capture.rs
...
The pass now uses walk.
2011-05-05 20:19:43 +02:00
Ralph Giles
06f0713906
Mark valgrind's _qzz_res as unused to silence warnings on gcc 4.6.
...
This applies c11675 by Julian Seward from valgrind trunk
(svn://svn.valgrind.org/valgrind/trunk) to rustrt's included
copies of memcheck.h and valgrind.h, effectively backporting
the fix from the unreleased 3.6.2. The commit simply applies
the gcc 'unused' attribute to the relevant declarations.
This change allows compilation of the runtime code under
gcc 4.6 with -Werror, as the makefile currently requests.
2011-05-05 10:55:54 -07:00
Patrick Walton
fea623211f
rustc: Add a Link module; move crate writing to it to slim down trans slightly
2011-05-05 10:48:02 -07:00
Patrick Walton
729648282b
rustllvm: Add bindings to the LLVM linker
2011-05-04 21:27:00 -07:00
Patrick Walton
c47a075a99
rustllvm: Whitespace police in RustWrapper.cpp
2011-05-04 20:30:23 -07:00
Patrick Walton
bde44a03a9
rustc: Detect the system root and allow the user to override if necessary
2011-05-04 19:27:54 -07:00
Graydon Hoare
d55fa2a9a3
Add #env syntax extension for plucking strings out of the compilation environment.
2011-05-04 19:05:32 -07:00
Graydon Hoare
a7db032725
Re-snapshot to pick up fixed crasher bugs in resolve and performance improvements.
2011-05-04 19:05:32 -07:00
Patrick Walton
04f966f0bc
build: Build intrinsics.bc
2011-05-04 18:29:08 -07:00
Marijn Haverbeke
898e089d7b
Fix and re-enable destructors
...
There was some confusion on whether the destructors took their
argument by pointer or direct value. They now take it directly, just
like other methods. You no longer get a segfault when a constructor
actually does something with its self value.
2011-05-05 02:16:49 +02:00
Graydon Hoare
cdb6822405
Add a structure for passing option flags around the compiler, put it in session, and use it.
2011-05-04 16:59:21 -07:00
Brian Anderson
bd34770a92
Add missing ret statements to check_mod
...
Un-XFAIL compile-fail export tests
2011-05-04 19:29:27 -04:00
Graydon Hoare
ce9468761c
Support new -g flag, only mangle glue names by type when it's passed.
2011-05-04 15:36:42 -07:00
Graydon Hoare
b73a640ce0
More export XFAILs.
2011-05-04 15:35:41 -07:00
Graydon Hoare
54dc34b658
Re-snapshot stage0
2011-05-04 14:45:09 -07:00
Graydon Hoare
978e3d0f4a
XFAIL some compile-fail tests mysteriously failing on win32 tinderbox.
2011-05-04 14:44:57 -07:00
Graydon Hoare
4642d7a355
extend xfail-stage0 to stage1, stage2 on obj-dtor-2.rs
2011-05-04 11:23:05 -07:00
Graydon Hoare
456398a403
Change two compile-fail patterns to match rustc output.
2011-05-04 11:20:47 -07:00
Graydon Hoare
895ec07453
Try to fail nicely, again.
2011-05-04 15:04:53 +00:00
Graydon Hoare
99f1dffd49
Fail in a slightly more organized fashion for now.
2011-05-04 06:19:58 +00:00
Patrick Walton
dc181bca4e
rustc: Stub Rust intrinsics. We check in the .ll file for now to temporarily dodge a dependency on clang.
2011-05-03 18:51:41 -07:00
Graydon Hoare
c36645b358
Assume xfail-stage0 implies stage1 and stage2 in tests, for now.
2011-05-03 18:14:02 -07:00
Patrick Walton
ac8eb20224
rustc: Stub support for Rust intrinsics
2011-05-03 18:03:59 -07:00
Patrick Walton
2bc17adc29
Revert "Rename the "llvm" API to "llvm-intrinsic"" due to tinderbox bustage
...
This reverts commit 6871c245a6
.
2011-05-03 17:50:37 -07:00
Graydon Hoare
b81897d7e4
More python portability fixes (for windows).
2011-05-03 16:53:36 -07:00
Graydon Hoare
1965a156f0
Attempt to use more portable python
2011-05-03 16:22:00 -07:00
Graydon Hoare
b453c3c728
Start sketching --depend support in rustc.
2011-05-03 15:56:00 -07:00
Patrick Walton
6871c245a6
Rename the "llvm" API to "llvm-intrinsic"
2011-05-03 15:55:01 -07:00
Patrick Walton
e43729ccf2
rustc: Refactor metadata.Encode.* to not require a type abbreviation table if abbreviation isn't enabled
2011-05-03 14:41:05 -07:00
Patrick Walton
3f317ede41
rustc: Name type glue properly
2011-05-03 14:41:05 -07:00
Graydon Hoare
b5a6082d41
Update valgrind.h and memcheck.h to 3.6.0
2011-05-03 12:04:00 -07:00
Graydon Hoare
dbe5dc9768
Attempt to shift build to stage0-from-snapshots.
2011-05-03 11:34:44 -07:00
Graydon Hoare
54bfe8ee27
Small fixes to snapshot script.
2011-05-03 09:25:59 -07:00
Rafael Ávila de Espíndola
5617462388
Remove unused variable.
2011-05-03 11:06:57 -04:00
Rafael Ávila de Espíndola
a3ff02f126
Split start into rustc and rustboot versions. This introduces a bit of
...
duplication, but we will hopefully drop the rustboot one soon.
This is also a preparation for changing the rustc one to have the activate glue
return to the exit glue which will then call the main function.
This (returning to the function that calls main) matches what happens when
loader stats a program or a new thread. It lets gdb produce good backtraces
and should help with EH too.
2011-05-03 10:24:18 -04:00
Graydon Hoare
a919a3082d
More snapshot logic refactoring.
2011-05-03 07:23:05 -07:00
Graydon Hoare
d987b49a4b
More hacking on the snapshot system.
2011-05-02 23:37:52 -07:00
Brian Anderson
ed40c85af5
Extract ast.is_exported from the resolve module
2011-05-02 22:07:36 -04:00
Brian Anderson
3014a5887d
Add some tests of tag-export interaction
2011-05-02 22:06:35 -04:00
Graydon Hoare
cb53065a21
Initial sketch of snapshot support code, based on code from marijn.
2011-05-02 18:56:13 -07:00
Brian Anderson
2fc58fc6a0
Revert "Use check instead of assert in export-unexported-dep"
...
This reverts commit 480eda0f10
. The commit
adding the assert keyword has been restored.
2011-05-02 20:56:46 -04:00
Patrick Walton
ebc236e91c
rustc: Time the Rust translation and LLVM passes separately
2011-05-02 17:50:46 -07:00
Patrick Walton
a833f152ba
rustc: Remove the artificial block in ty.rs. Fixes self-hosting. Add a test case for this, XFAIL'd.
2011-05-02 17:50:46 -07:00
Patrick Walton
147a2d655f
Un-revert "Use different syntax for checks that matter to typestate", fixing the problem.
...
This reverts commit d08b443fff
.
2011-05-02 17:50:46 -07:00
Brian Anderson
480eda0f10
Use check instead of assert in export-unexported-dep
2011-05-02 20:48:52 -04:00
Graydon Hoare
d08b443fff
Revert "Use different syntax for checks that matter to typestate"
...
This reverts commit aa25f22f19
. It broke stage2, not sure why yet.
2011-05-02 17:35:33 -07:00
Brian Anderson
764de078e7
Add a regression test that exports can expose unexported items
...
While those unexported items can't be used by name outside the module in which
they are defined, they can be used as a sort of ADT.
2011-05-02 19:42:00 -04:00
Patrick Walton
9d21cf3b61
rustc: Allocate tydescs on the stack when it's safe to do so. 60% compile speed increase.
2011-05-02 15:28:59 -07:00
Tim Chevalier
aa25f22f19
Use different syntax for checks that matter to typestate
...
This giant commit changes the syntax of Rust to use "assert" for
"check" expressions that didn't mean anything to the typestate
system, and continue using "check" for checks that are used as
part of typestate checking.
Most of the changes are just replacing "check" with "assert" in test
cases and rustc.
2011-05-02 12:16:29 -07:00
Patrick Walton
870435caf5
rustc: Add a "fat tydesc" LLVM type to trans
2011-05-02 12:05:21 -07:00
Patrick Walton
f969b227c1
rustc: Disable frame pointer omission
2011-05-02 11:01:51 -07:00
Brian Anderson
a5ccead3fd
Add a test that imports can't circumvent exports
2011-05-01 17:22:20 -04:00
Brian Anderson
1dd63ff42d
Remove the search direction from resolve's fold environment
...
It's not actually involved in the fold so it can just be passed between the
functions that need it.
2011-05-01 16:57:36 -04:00
Brian Anderson
f25e678365
Add a regression test for use of unexported fully-qualified paths
...
An unexported foo.baz can't be resolved from inside foo when called as foo.baz
instead of just baz. This behavior may want to change eventually.
2011-05-01 16:57:36 -04:00
Brian Anderson
a697210234
Hide unexported tag variants
2011-05-01 16:57:36 -04:00
Brian Anderson
459b0ec833
Implement simple module export
2011-05-01 16:57:36 -04:00
Brian Anderson
d88776726a
rustc: Preserve dots in input path when using an implicit output path
...
This avoids outputing, e.g. /test.bc for ../test.rs
2011-05-01 14:42:45 -04:00
Brian Anderson
e75edd5e43
Fix expr-alt-generic-box2.rs and un-XFAIL
2011-05-01 12:21:08 -04:00
Brian Anderson
831b0a7501
Un-XFAIL various tests in stage0
2011-05-01 12:15:42 -04:00
Ralph Giles
46fd8dfe21
Fix a typo in the documentation.
2011-05-01 00:16:00 -07:00
Patrick Walton
b101e26d92
rustc: Run scope cleanups in the implicit block created by log statements. Fixes a leak.
2011-04-29 19:19:54 -07:00
Patrick Walton
64a5afadf3
rustc: Add constants for LLVM function attributes
2011-04-29 16:58:49 -07:00
Graydon Hoare
02336e670f
Re-XFAIL lib-io.rs, not quite working yet.
2011-04-29 16:55:45 -07:00
Patrick Walton
f6c472d816
rustc: Emit pure native glue; we don't call it yet
2011-04-29 16:40:30 -07:00
Patrick Walton
593fb195a4
rustc: Start threading a purity flag through upcalls
2011-04-29 15:39:48 -07:00
Graydon Hoare
c11d9f4268
Un-XFAIL most library tests.
2011-04-29 15:06:53 -07:00
Graydon Hoare
b9babe47da
Temporarily disable dtors; they broke self-hosting.
2011-04-29 15:06:53 -07:00
Patrick Walton
1acf404361
rustc: First steps to determine whether tydescs escape
2011-04-29 15:01:07 -07:00
Graydon Hoare
7b95b5c033
Don't emit metadata unless compiling -shared.
2011-04-29 19:20:20 +00:00
Marijn Haverbeke
c39a95da90
Implement destructors in rustc
...
Unlike rustboot, rustc keeps it destructors in vtables. Entry 0 holds
either the destructor for the obj or a NULL pointer. The method
offsets start at 1.
2011-04-29 21:19:50 +02:00
Patrick Walton
9aeb67987c
rustc: Temporarily add a switch and a corresponding makefile variable to disable typestate
2011-04-29 12:16:14 -07:00
Patrick Walton
adfacc5031
rustc: Add a --time-passes option
2011-04-29 11:55:20 -07:00
Patrick Walton
f0d24ff49e
rustc: Handle alias parameters in native functions properly
2011-04-29 11:54:41 -07:00