Brian Anderson
73e6a4f9e5
Elide existing main function when building a test runner. Issue #428
...
This prevents any defined main function from colliding with the one
synthesized for the test runner. This is not the best solution since it
doesn't compile a function the user defined, but I don't think it's likely to
be a problem in the near term.
2011-07-12 16:54:46 -07:00
Brian Anderson
41a3888da7
Fix type inference of fn tail expressions. Closes #680
2011-07-12 16:54:46 -07:00
Brian Anderson
ed556ab094
Improve test runner summary message. Issue #428
2011-07-12 16:54:46 -07:00
Patrick Walton
f06fdd5ca1
stdlib: Use the right upcall in win32_fs. Maybe puts out burning tinderbox?
2011-07-12 16:53:16 -07:00
Patrick Walton
a3add84909
rustc: Remove some interior vectors from typestate and some useless vec-related imports
2011-07-12 16:44:57 -07:00
Patrick Walton
ccd0fffcce
stdlib: Implement str::split_ivec()
2011-07-12 16:36:47 -07:00
Patrick Walton
e038e8e52b
rustc: Move ppaux away from exterior vectors
2011-07-12 16:35:02 -07:00
Patrick Walton
60cffd7116
rustc: Complete the transition of pprust to interior vectors
2011-07-12 16:13:30 -07:00
Patrick Walton
a190a2c68e
rustc: Remove exterior vectors from front::attr
2011-07-12 15:39:48 -07:00
Marijn Haverbeke
12d5532166
Use switches rather than chained conditionals to compile alt matches
...
This also moves the alt-related trans code into its own file.
Closes #467
2011-07-13 00:38:24 +02:00
Eric Holk
1ea449e2f6
Updating and unXFAILing somet communication tests.
2011-07-12 15:27:36 -07:00
Patrick Walton
598b50e10a
stdlib: Move fs over to interior vectors by introducing a rust_list_files_ivec builtin
2011-07-12 15:14:57 -07:00
Patrick Walton
27834c2a65
test: Switch lib-either over to interior vectors. Puts out burning tinderbox.
2011-07-12 15:09:44 -07:00
Patrick Walton
ab579e1c9f
stdlib: Port std::either over to interior vectors
2011-07-12 14:28:11 -07:00
Patrick Walton
b062bbdb8e
stdlib: Switch lib::deque over to interior vectors
2011-07-12 14:28:11 -07:00
Patrick Walton
f2d847ec7a
stdlib: Move bit vectors over to interior vectors
2011-07-12 14:28:11 -07:00
Patrick Walton
043096ea0a
stdlib: Remove exterior vectors from termivec
2011-07-12 14:28:11 -07:00
Tim Chevalier
f7a1006a07
Make resolve check for type-variable name-shadowing
...
Capturing a type argument in the enclosing scope should be an error --
this commit implements that check in resolve, avoiding a potential
assertion failure in trans.
Closes #648 .
2011-07-12 13:42:05 -07:00
Lindsey Kuper
0d9c08af2a
Remove some obsolete comments.
2011-07-12 12:01:02 -07:00
Lindsey Kuper
a0b78e649e
"Narrow scope forgives many sins." -- M. Schwern
2011-07-12 12:01:02 -07:00
Patrick Walton
a9b77a5011
rt: Remove the locks around upcall_shared_malloc and upcall_shared_free
2011-07-12 11:53:45 -07:00
Patrick Walton
0be1a0b500
rustc: Simplify tritv::copy; shaves a couple of seconds off typestate.
2011-07-12 11:47:32 -07:00
Patrick Walton
4b23ea51bc
stdlib: Remove obsolete FIXME about state fns
2011-07-12 11:36:01 -07:00
Patrick Walton
c15aa5e3a3
stdlib: EBML API fixes
2011-07-12 11:35:29 -07:00
Patrick Walton
3275cad6d5
stdlib: Implement ivec::unsafe::set_len
2011-07-12 11:35:29 -07:00
Patrick Walton
d21228fce7
stdlib: Box data in EBML documents
2011-07-12 11:35:29 -07:00
Tim Chevalier
e1f9bfbac9
Add missing files
...
git add didn't, so this actually has the changes that should
have been in the previous commit
2011-07-12 11:26:14 -07:00
Tim Chevalier
21b94d57d5
Change typestate to use visit instead of walk
...
Typestate was failing to check some code because if it saw an item,
it would quit immediately. This was to avoid checking nested items
in the same context as the lexically enclosing item, but it was
having the wrong effect: not checking the code after the item at all.
Fixed by switching to visit and skipping over items in a proper
nested fashion. Closes #668 .
2011-07-12 11:22:31 -07:00
Tim Chevalier
0e594939aa
Fix potential use-before-init bug in trans
...
This was being masked by a bug in typestate (fixed in the next commit).
2011-07-12 11:21:14 -07:00
Marijn Haverbeke
bde52808f0
Update pretty-printing of '...' in record patterns to be ', _' instead
2011-07-12 17:58:40 +02:00
Brian Anderson
a5ec51d6a1
Fix pretty-printing of literals again. Issue #672
...
The pos variable is one character beyond where I thought it was.
2011-07-11 21:31:14 -07:00
Tim Chevalier
a8b1ea159c
Make the parser add correct spans to view_items
...
Closes #650 .
2011-07-11 19:12:02 -07:00
Brian Anderson
23d1520398
Support running a subset of tests from the command line. Issue #428
2011-07-11 19:01:54 -07:00
Brian Anderson
94e1b362f0
Pass command-line args to the test runner. Issue #428
...
This will let the test runner filter the tests it runs.
2011-07-11 19:01:53 -07:00
Paul Stansifer
2e46438507
So... I can't spell 'ellipsis'.
2011-07-11 18:52:50 -07:00
Paul Stansifer
9a0e85a920
Change "etc" syntax for record patterns from {a:b ...}
to {a:b, _}
.
2011-07-11 18:52:50 -07:00
Paul Stansifer
48dbee6b47
Add elipses, reorganize the macro components into their own AST node.
2011-07-11 18:52:50 -07:00
Paul Stansifer
425732311a
Move macro expansion to a separate phase, change macro syntax, and add parse_sess to session.
2011-07-11 18:52:50 -07:00
Paul Stansifer
80cf4ecd3b
Add nodes for embedding types and blocks in expressions for macros.
2011-07-11 18:52:10 -07:00
Josh Matthews
fd24fd5e31
Only print up to six lines on error. Print ^~~~~ to highlight error span.
2011-07-11 18:44:27 -07:00
Josh Matthews
b62fcdcc36
Hack to print lines when error spans are available.
2011-07-11 18:44:27 -07:00
Tim Chevalier
1870e97559
Visit the type argument in a port expression
...
This closes #664 .
2011-07-11 18:12:00 -07:00
Brian Anderson
e45819ad70
Add parser::parse_crate_from_source_str
...
The fuzzer wants to be able to do stuff like this
2011-07-11 17:46:24 -07:00
Tim Chevalier
67ecda6342
remove some workarounds for old bugs
2011-07-11 17:32:00 -07:00
Tim Chevalier
e1620def9f
In typeck, check for dynamically sized by-value arguments to thunks
...
A check in trans didn't have a corresponding check in typeck, causing
some programs (to wit, compile-fail/chan-parameterized-args.rs - part of this
commit) to fail with an assertion failure in trans instead of a type error.
Fixed it. In short, arguments that are future thunk arguments (any spawn
arguments, and _ arguments in bind) need to either not contain type params
or type vars, or be by-reference.
Closes #665 .
2011-07-11 17:32:00 -07:00
Brian Anderson
9fe03b3c55
Pull lexer creation out of new_parser
...
This will allow custom lexers to be injected into the parser (for fuzzing)
2011-07-11 16:56:02 -07:00
Brian Anderson
08f8753d80
Pull file reading out of the lexer
2011-07-11 16:56:02 -07:00
Patrick Walton
05390b4b38
rustc: Implement explicit global scope resolution via leading "::"; add a test case
2011-07-11 16:02:16 -07:00
Rafael Ávila de Espíndola
99a95b3613
Use new snapshot.
2011-07-11 18:35:25 -04:00
Tim Chevalier
9427864f33
Unify the rhs and lhs types in a send
...
Closes #662 .
One-line fixes are always the best :-D
2011-07-11 15:24:47 -07:00
Patrick Walton
79ce5a4614
rustc: Implement pointer dereference; add a test case
2011-07-11 15:19:16 -07:00
Michael Sullivan
4618e802db
Fix comparisons of the nil type to do something sensible.
...
Closes #576 .
2011-07-11 14:45:21 -07:00
Brian Anderson
7fc7ebd520
The lexer's get_mark_str should slice by byte position, not char. Closes #654
2011-07-11 14:41:55 -07:00
Patrick Walton
eef61a527d
stdlib: Add addr_of() to the standard library
2011-07-11 14:25:35 -07:00
Patrick Walton
b6d774136b
stdlib: Add interior vector-ified versions of ebml and term
2011-07-11 14:25:34 -07:00
Eric Holk
a84310aa48
Started working on MapReduce.
...
Currently it's only sequential, but it can do word frequency
counting. In an ideal world it would all be polymorphic, but that
pushes the limits of our type system right now. We can generalize it
later.
2011-07-11 14:05:09 -07:00
Rafael Ávila de Espíndola
d151e18633
Move llvm out of stageN/lib so that the host building stage 1+ can
...
have a newer and incompatible llvm with the bots.
2011-07-11 16:31:47 -04:00
Marijn Haverbeke
c893188549
Use some actual or-patterns in resolve.rs
2011-07-11 21:23:49 +02:00
Marijn Haverbeke
55e348280e
Fix pretty-printing of record patterns
2011-07-11 21:23:49 +02:00
Michael Sullivan
7340824cbc
Fix autoderef of function calls when the function is not an lval.
...
As it turns out, the correct way to handle this is much simpler than what I
did originally.
Also add more tests.
2011-07-11 11:38:01 -07:00
Michael Sullivan
418aa52510
Add a test that exercises these cases in bind.
2011-07-11 11:37:56 -07:00
Michael Sullivan
cd97f4eed0
Fix handling of derived tydescs in bind.
...
In trans_bind_thunk, we need to load the tydescs from the environment *before*
we try to construct derived tydescs from them.
2011-07-11 11:37:55 -07:00
Michael Sullivan
0beb271d8c
Fix bind to work with boxed arguments with type parameters.
...
This still doesn't work with bare fn arguments with type parameters.
2011-07-11 11:37:55 -07:00
Rafael Ávila de Espíndola
15a670a1b1
Use new snapshot.
2011-07-11 14:32:18 -04:00
Brian Anderson
64ad5928e7
Actually run tests from the std runner. Issue #428
2011-07-11 11:19:32 -07:00
Rafael Ávila de Espíndola
f666c97e6d
Step 1/n for moving to the new type system: include intrinsics.bc in the
...
snapshot.
2011-07-11 12:09:52 -04:00
Marijn Haverbeke
7595fe5153
Implement record patterns
...
Closes #469 .
2011-07-11 15:32:41 +02:00
Marijn Haverbeke
12cb128a0a
Move visit to newtype-style nominal type
...
This makes getting the function fields out of the visitor less
cumbersome and more efficient (no take/drop).
2011-07-11 13:53:50 +02:00
Marijn Haverbeke
5f544b1366
Output a meaningful error when too few or too many type parameters given
...
Closes #619
2011-07-11 13:19:34 +02:00
Marijn Haverbeke
86ee3454a1
Implement or-patterns in case clauses
...
You can now say
expr_move(?dst, ?src) | expr_assign(?dst, ?src) { ... }
to match both expr_move and expr_assign. The names, types, and number
of bound names have to match in all the patterns.
Closes #449 .
2011-07-11 11:01:54 +02:00
Marijn Haverbeke
4d325b1a15
Spill instead of copy when binding a pattern that's only a var binding
...
The alias rules guarantee that the alt-ed value will outlive the binding's
last use, so this is safe.
This is a preparation for or-patterns. Joining scoped bindings seems like
it would get messy.
2011-07-11 10:33:19 +02:00
Jesse Ruderman
fa78fee4de
Add uint::min
2011-07-10 17:05:25 -07:00
Jesse Ruderman
ea69f48eac
Add a missing case so nbody.rs can pp
2011-07-10 17:05:25 -07:00
Jesse Ruderman
ab50da9445
Export noop_fold_expr so the fuzzer can use it
2011-07-10 17:05:25 -07:00
Jesse Ruderman
425b331dee
fuzzer.rs is now a pseudo-fuzzer that takes an AST and replaces expressions inside it
2011-07-10 17:05:25 -07:00
Jesse Ruderman
b4781bf8dd
Type-parameterize ivec_fuzz
2011-07-10 17:05:25 -07:00
Jesse Ruderman
3671cddcba
Remove comments complaining about https://github.com/graydon/rust/issues/633 since it is fixed
2011-07-10 17:05:25 -07:00
Jesse Ruderman
e91f8b5db2
Pieces of a fuzzer, WIP
2011-07-10 17:05:25 -07:00
Brian Anderson
6d3513eaee
Make #fmt work from inside std. Issue #175
...
At long last, this patch makes #fmt usable from inside the standard library.
The way it does it us very hackish, but at least it works now.
2011-07-10 17:00:28 -07:00
Brian Anderson
e494e73cdd
Use more encapsulation for metadata::cstore
2011-07-10 15:44:11 -07:00
Patrick Walton
18ebef5bba
stdlib: Remove FIXME that's more like a WONTFIX
2011-07-10 15:35:06 -07:00
Patrick Walton
4008cad044
stdlib: Remove the cast from ioivec
2011-07-10 13:22:29 -07:00
Patrick Walton
7871b55597
stdlib: Implement an interior-vector version of the io module
2011-07-10 12:47:51 -07:00
Patrick Walton
875c4622fb
stdlib: Implement str::bytes_ivec() using pointers and casts
2011-07-10 02:05:52 -07:00
Patrick Walton
91dcc1d054
stdlib: Add missing unsafe.rs. Puts out burning tinderbox.
2011-07-10 01:32:35 -07:00
Patrick Walton
7efb942639
rt: Remove the now-unused upcall_ivec_resize and upcall_ivec_spill, which allocated from the wrong heap
2011-07-10 01:30:45 -07:00
Patrick Walton
0babfd9f98
stdlib: Add unsafe to the std.rc, now that it actually builds
2011-07-10 01:24:31 -07:00
Patrick Walton
d30f22eb65
rt: Remove the _2 prefix from intrinsics; all rust-intrinsics now use explicit return pointers
2011-07-10 01:20:18 -07:00
Patrick Walton
f02c998a8d
snap: Register new snapshots
2011-07-10 01:13:00 -07:00
Patrick Walton
f42c94740a
rustc: Make rust-intrinsics take an explicit return pointer
2011-07-09 21:13:25 -07:00
Patrick Walton
e823ca4965
stdlib: Implement casts. The horror.
2011-07-09 20:14:47 -07:00
Brian Anderson
75047ea87e
Generate code to load a crate's tests into the std test runner. Issue #428
2011-07-09 19:30:04 -07:00
Brian Anderson
09982784c6
Begin adding some test runner types to std. Issue #428
2011-07-09 16:08:03 -07:00
Brian Anderson
f72dbec9b5
Collect functions that look like unit tests. Issue #428
2011-07-09 12:36:03 -07:00
Brian Anderson
5543404abe
Track the path as we fold over the AST looking for unit tests. Issue #428
2011-07-09 12:35:30 -07:00
Brian Anderson
9af59f9d81
Add sha1 and int tests to stdtest. Issue #428
2011-07-09 12:35:30 -07:00
Brian Anderson
45b00935f3
Begin running the test for int::pow
...
Somehow this has been disabled forever
2011-07-09 12:35:30 -07:00
Tim Chevalier
9ec5e90608
Tests for constraint propagation
2011-07-08 22:25:57 -07:00
Tim Chevalier
182c413af1
Propagate constraints through copy, move, and swap
...
Assignments and moves with a simple local variable reference on the
RHS now propagate any typestate constraints the RHS was involved
in to the LHS. Swaps where both sides are local variables
exchange the constraints.
This was a pain in the butt and I'm still not proud of the resulting
code. Needs refactoring like whoa.
2011-07-08 22:25:57 -07:00
Tim Chevalier
be6febb46d
Minor refactoring
2011-07-08 22:25:57 -07:00
Tim Chevalier
7060f4c89c
Alias-ify some prettyprinting functions
2011-07-08 22:25:57 -07:00
Tim Chevalier
36c4cb37ad
Improve impossible-case handling in ty::get_element_type
2011-07-08 22:25:57 -07:00
Patrick Walton
91d45b91e6
stdlib: Implement str::unsafe_from_bytes_ivec()
2011-07-08 22:23:11 -07:00
Patrick Walton
aa0f6f4961
stdlib: Add an offset function for simple pointer arithmetic on unsafe pointers
2011-07-08 21:56:15 -07:00
Brian Anderson
7498d03693
Improve the error message for import glob collisions. Closes #482
...
Instead of noting where the imported things were defined, note where they were
imported. This is more useful and avoids issue #482 .
2011-07-08 18:55:01 -07:00
Brian Anderson
394b8fcd1c
Add test case for issue #333 . Closes #333
...
This has been fixed by a mystery hacker.
2011-07-08 17:43:44 -07:00
Patrick Walton
1ff426b89f
rustc: Use interior vectors for the union-find in rustc
2011-07-08 17:00:21 -07:00
Patrick Walton
9b7984c250
snap: Register new snapshots
2011-07-08 16:51:25 -07:00
Patrick Walton
ccfbb74f11
rustc: Move maps over to interior vectors
2011-07-08 16:37:43 -07:00
Patrick Walton
8450ab9a2b
rustc: Fix a level-of-indirection problem by using size_of() to compute dynamically sized interior vector element sizes instead of field_of_tydesc()
2011-07-08 16:37:43 -07:00
Brian Anderson
f5d604f0c3
Decode types across multiple crates. Closes #632
2011-07-08 15:07:14 -07:00
Lindsey Kuper
33ce1164e2
Nicer pretty-printing for anon objs. Closes #499 .
...
(Incidentally, what's the right way to test changes to the
pretty-printer? There has to be a better way than what I did, which
was to log_err the results of expr_to_str as exprs passed through
trans and glance at the output.)
2011-07-08 15:00:47 -07:00
Brian Anderson
4319e7a655
Recursively load dependencies of external crates. Issue #632
2011-07-08 14:07:41 -07:00
Brian Anderson
412e203b3c
Refactor load_library_crate and resolve_crate
2011-07-08 14:07:41 -07:00
Brian Anderson
dd8ab24da2
Add a map from external cnums to local cnums in cstore::crate_metadata
...
Once populated, this will allow us to load type info for types defined in
external crates referenced by other external crates.
2011-07-08 14:07:41 -07:00
Brian Anderson
061bcb2e42
Extract resolve_crate from creader::visit_view_item
2011-07-08 14:07:41 -07:00
Eric Holk
79ca673af7
Adding more support for working with u64s.
2011-07-08 14:02:26 -07:00
Rafael Ávila de Espíndola
4c309321e0
Try to use static crate if we cannot find the dynamic one. This supports
...
the common case of wanting to link statically with the project's libraries
but dynamically with the system ones.
2011-07-08 15:39:44 -04:00
Rafael Ávila de Espíndola
94f0e9d956
Add just enough logic to the driver so that we can link std statically.
2011-07-08 15:05:32 -04:00
Patrick Walton
0864a22ace
stdlib: Add an interior vector version of union-find for now
2011-07-08 11:44:38 -07:00
Eric Holk
d7db25e8f6
Added an environment variable to override the minimum stack size. Closes #637 .
2011-07-08 11:36:56 -07:00
Brian Anderson
4c0a2ed378
Fix newlines when outputting crate attributes with --ls
2011-07-08 11:34:15 -07:00
Brian Anderson
3070439c00
Encode/decode a crate's externel dependencies. Issue #632
...
The encoding is very simple right now, just the crate name. Ultimately this
won't be enough for our versioning needs, but it should fill our immediate
need of being able to correlate encoded crate numbers to actual crates.
2011-07-08 11:34:15 -07:00
Patrick Walton
7c66894a71
rustc: Do dynamic size calculations properly when concatenating interior vectors. Closes #640 .
2011-07-08 11:29:29 -07:00
Brian Anderson
d0a432f4bb
Don't export tyencode from the metadata module
...
This involves pulling the type_abbrev cache out of crate_ctxt
2011-07-08 09:37:01 -07:00
Brian Anderson
00d54018f1
Cleanup decoding and crate searching
2011-07-08 09:37:01 -07:00
Brian Anderson
06391dda02
Make the interface to metadata::csearch more consistent
2011-07-08 09:37:01 -07:00
Brian Anderson
85212840c0
Remove unused functions from metadata::csearch
2011-07-08 09:37:01 -07:00
Brian Anderson
9ebb60d38b
Extract various dependencies from metadata::decoder to metadata::csearch
2011-07-08 09:37:01 -07:00
Brian Anderson
7ae711fc03
Begin splitting metadata::decoder into decoding and crate search modules
2011-07-08 09:37:01 -07:00
Brian Anderson
cc2924068f
Replace various ints with ast::crate_nums
2011-07-08 09:37:01 -07:00
Brian Anderson
29b766029c
Move external crate/lib resolution to its own pass
...
The scope of external crate reading is beyond the resolve pass now, as it
builds up tables of information needed for several different purposes.
2011-07-08 09:37:01 -07:00
Brian Anderson
85535fc3e0
Move crate_map from resolve to cstore
2011-07-08 09:37:00 -07:00
Brian Anderson
513b2276c2
Remove non-existant export from metadata::decoder
2011-07-08 09:37:00 -07:00
Brian Anderson
51e60b6565
Comment creader
2011-07-08 09:37:00 -07:00
Brian Anderson
639cf1a8ff
Comment cstore
2011-07-08 09:37:00 -07:00
Brian Anderson
58d288a4f7
Move used_link_args from session to cstore
2011-07-08 09:37:00 -07:00
Brian Anderson
4bfa269fe7
Move used_libraries from session to cstore
2011-07-08 09:37:00 -07:00
Brian Anderson
1386420cad
Move used_crate_files from session to cstore
2011-07-08 09:37:00 -07:00
Brian Anderson
82983e5005
Replace the crate cache in session with the one in cstore
2011-07-08 09:37:00 -07:00
Brian Anderson
b23ecd47ce
Introduce metadata::cstore
...
I intend for this to be the location for storing all the data retrieved by
creader, most of which is currently in the session.
2011-07-08 09:37:00 -07:00
Marijn Haverbeke
c7bfef43c8
Ignore current scope when resolving self-shadowing imports
...
That is, for example, import x::y::x, which defines a local x,
and thus wouldn't be able to find x::y anymore.
Closes issue #624
2011-07-08 16:04:40 +02:00
Marijn Haverbeke
eeda0f4ab1
Don't unbox types in ty::is_binopable, do it on typeck side instead
...
Closes issue #631
Removes ty::strip_boxes entirely, since unboxing is now more complicated
anyway.
2011-07-08 15:52:54 +02:00
Marijn Haverbeke
381505f947
Remove useless return value in typeck::check_decl_local
2011-07-08 15:01:54 +02:00
Marijn Haverbeke
022363a674
Auto-bind generic functions when their value is taken in non-call context
...
trans::trans_lval will now autobind if the given expression was the
name of a generic functions. Those callees (trans_call and trans_bind)
that are interested in the generics information call trans_lval_gen
now.
2011-07-08 14:28:46 +02:00
Marijn Haverbeke
faec0d7799
Avoid superfluous take/drop for temp values passes as arguments
2011-07-08 13:46:29 +02:00
Marijn Haverbeke
b41fd61045
Make for-each bodies close over their parent's iterbody
...
Closes issue #639
2011-07-08 11:55:15 +02:00
Patrick Walton
7ed556cf8e
rustc: Check iter return types. Closes #638 .
2011-07-07 19:08:59 -07:00
Patrick Walton
2255eda625
rustc: Fix long line
2011-07-07 18:41:54 -07:00
Patrick Walton
edf8245273
rustc: Make trans use interior vectors
2011-07-07 18:39:05 -07:00
Patrick Walton
e1b107d74e
rustc: Remove all exterior vectors from the AST
2011-07-07 18:39:05 -07:00
Eric Holk
3958c72cd8
Some cleanup
2011-07-07 18:32:45 -07:00
Eric Holk
4739953b84
Fixed two races.
...
The first is that the memory_region destructor would complain there is
still an outstanding allocation. This is because circular_buffer from
rust_chan wasn't refing its task, so the task was being destructed too
soon.
The second was where the program could deadlock while joining a
task. The target task would die in the time between checking whether
the task should block and then actually blocking. The fix is to use
the target task's lock.
2011-07-07 18:22:27 -07:00
Eric Holk
2d57b25f6b
Added a stress test mode to pfib.
2011-07-07 18:22:27 -07:00
Eric Holk
f6e37f659c
Made TRACK_ALLOCATIONS add only constant time overhead. This makes it
...
feasible to turn it on and run rustc.
2011-07-07 18:22:27 -07:00
Eric Holk
5d9a5b7d55
Tightened up the scoping for our various new operators, which should
...
make it harder to use the wrong one.
2011-07-07 18:22:27 -07:00
Eric Holk
8acadb17c2
Work on debugging race conditions.
...
Ports and channels have been moved to the kernel pool, since they've
been known to outlive their associated task. This probably isn't the
right thing to do, the life cycle needs fixed instead.
Some refactorying in memory_region.cpp. Added a helper function to
increment and decrement the allocation counter. This makes it easier
to switch between atomic and non-atomic increments. Using atomic
increments for now, although this still does not fix the problem.
2011-07-07 18:22:27 -07:00
Eric Holk
dcd2563a3a
Removing the synchronized memory region from tasks.
2011-07-07 18:22:27 -07:00
Eric Holk
a0f45f4456
Removing most of the locks in rust_upcall.cpp and elsewhere.
2011-07-07 18:22:27 -07:00
Lindsey Kuper
e7111fe147
Un-xfail a test.
2011-07-07 17:39:35 -07:00
Lindsey Kuper
3243144046
Fix a bug that was interfering with method overriding. Issue #543 .
...
Previously, we were creating both a normal vtable entry and a
forwarding function for overriding methods, when they should have just
gotten a vtable entry. This patch fixes that.
2011-07-07 17:29:15 -07:00
Brian Anderson
94f782e6a1
Register new snapshots
...
New snapshots also include rt and rustllvm
2011-07-07 16:40:58 -07:00
Brian Anderson
64595a53f8
Add rt and rustllvm to the snapshot
2011-07-07 15:40:27 -07:00
Patrick Walton
deca79f372
Merge pull request #634 from robarnold/upstream-stable
...
Allocate ivecs out of the kernel pool
2011-07-07 15:18:07 -07:00
Rafael Ávila de Espíndola
5547e5dd21
Use new snapshot.
2011-07-07 17:36:23 -04:00
Brian Anderson
6ee1ffe4ac
Rename encoder::ty_str to encoded_str
2011-07-07 13:31:12 -07:00
Brian Anderson
de88739350
Don't expert def_to_str from metadata::encoder
2011-07-07 13:31:12 -07:00
Brian Anderson
7d26d1d67b
Move tyencode::ty_str to metadata::encoder
2011-07-07 13:31:12 -07:00
Brian Anderson
73963eae9a
Refactor tyencode::ty_str to not require a tyencode::ctxt
...
All users were constructing the context the same way.
2011-07-07 13:31:11 -07:00
Brian Anderson
4304f8d4f6
Remove duplicate definition of def_to_str from middle::ty
2011-07-07 13:31:11 -07:00
Brian Anderson
e29ef1bec2
Refactor a few things in the metadata module
...
Rename metadata::tags to metadata::common. Move some utility functions from
metadata::encoder to metadata::common.
2011-07-07 13:31:11 -07:00
Brian Anderson
b723082cdb
Rename hash_def_id to hash_node_id
2011-07-07 13:31:11 -07:00
Brian Anderson
d2362599d6
Remove metadata::encoder's dependence on trans::node_id_type
2011-07-07 13:31:11 -07:00
Rafael Ávila de Espíndola
83991c4c95
Add the static std library in the next snapshot.
2011-07-07 16:25:25 -04:00
Patrick Walton
0e2fff5337
rustc: Change lots of AST nodes to use interior vectors
2011-07-07 12:53:17 -07:00
Rafael Ávila de Espíndola
77c708cdbf
Implement --lib --static.
2011-07-07 15:25:09 -04:00
Rafael Ávila de Espíndola
b13527735e
Use an early exit to reduce indentation.
2011-07-07 14:59:18 -04:00
Rafael Ávila de Espíndola
6d6c4c2a76
Command line changes for adding support for static libraries.
2011-07-07 14:42:50 -04:00
Marijn Haverbeke
16f82dce1c
Clean up trans_arg_expr
...
As a preparation for implementing the temporary-move optimization for
argument passing. The optimization itself isn't in yet, since it
mysteriously corrupts memory.
2011-07-07 17:54:58 +02:00
Marijn Haverbeke
3bdbf74d47
Make moving of temporaries do the right thing, use it to optimize
...
This adds support for dropping cleanups for temporary values when they
are moved somewhere else. It then adds wraps most copy operations
(return, put in data structure, box, etc) in a way that will fall back
to a move when it is safe.
This saves a lot of taking/dropping, shaving over a megabyte off the
stage2/rustc binary size.
In some cases, most notably function returns, we could detect that the
returned value is a local variable, and can thus be safely moved even
though it is not a temporary. This will require putting some more
information in lvals.
I did not yet handle function arguments, since the logic for passing
them looked too convoluted to touch. I'll probably try that in the
near future, since it's bound to be a big win.
2011-07-07 15:54:01 +02:00
Marijn Haverbeke
007a736642
Improve handling of move and swap by alias checker
...
Closes issue #541 .
Closes issue #591
2011-07-07 10:37:19 +02:00
Rob Arnold
f6117173c9
Allocate rust_ivec buffers out of the kernel pool
...
The duplication of upcalls is due to the fact that the runtime is
shared between stage0/rustc and stage1/rustc. Once snapshots are
updated, they should be de-duplicated.
2011-07-06 20:41:24 -07:00
Rob Arnold
2e2e1f7cb3
Add realloc method to rust_kernel
2011-07-06 20:37:27 -07:00
Lindsey Kuper
130006cdda
Tie the knot for self-calls inside extended objects. Closes #539 .
2011-07-06 18:39:01 -07:00
Brian Anderson
cf4c2ac0be
Generate a main fn for test running. Issue #428
2011-07-06 18:26:22 -07:00
Lindsey Kuper
6ca81b3407
Fix a pointer bug.
2011-07-06 17:16:54 -07:00
Lindsey Kuper
553beda96d
Add span information to create_vtbl and friends.
2011-07-06 17:16:53 -07:00
Lindsey Kuper
41f6a3d5e1
Comments and cleanup.
2011-07-06 17:16:53 -07:00
Patrick Walton
2f29f9931d
rustc: Make constraint args in the AST interior vectors
2011-07-06 16:19:19 -07:00
Patrick Walton
f164d7779a
rustc: Move AST constraints to interior vectors
2011-07-06 16:12:39 -07:00
Patrick Walton
c83782f500
rustc: Migrate core AST types to interior vectors
2011-07-06 16:01:47 -07:00
Patrick Walton
aad0bcc8d5
rustc: Make AST tuple types use interior vectors
2011-07-06 15:53:47 -07:00
Patrick Walton
401b6362d7
rustc: Make meta items into interior vectors
2011-07-06 15:46:03 -07:00
Patrick Walton
479ce4d783
rustc: Move crate directives over to interior vectors
2011-07-06 15:15:06 -07:00
Patrick Walton
0226f56115
rustc: Convert attribute in the AST to interior vectors
2011-07-06 15:15:00 -07:00
Patrick Walton
7714cb297b
rustc: Make AST paths use interior vectors
2011-07-06 15:14:52 -07:00
Patrick Walton
368f1f4ba8
rustc: Move middle::tstate::collect_locals over to interior vectors
2011-07-06 15:14:45 -07:00
Patrick Walton
b232ad94fd
rustc: Remove unused or seldom-used imports from middle::tstate::{bitvectors, ck}
2011-07-06 15:14:35 -07:00
Patrick Walton
5739e0be01
rustc: Remove some unused references to std::vec from tstate::ann and tstate::auxiliary
2011-07-06 15:14:29 -07:00
Patrick Walton
abab04635a
rustc: Move middle::tstate::auxiliary and middle::tstate::bitvectors over to interior vectors
2011-07-06 15:14:19 -07:00
Patrick Walton
6d1517cf3a
rustc: Move tstate::annotate over to interior vectors
2011-07-06 15:14:09 -07:00
Patrick Walton
35c1dbd492
rustc: Convert bind_params_in_type() to use interior vectors
2011-07-06 15:13:59 -07:00
Patrick Walton
1d57800236
rustc: Migrate tag variants to interior vectors
2011-07-06 15:13:54 -07:00
Patrick Walton
2e1aa04fcd
rustc: Make object methods into interior vectors
2011-07-06 15:13:47 -07:00
Patrick Walton
0391e14fc2
rt: Double stack size
2011-07-06 15:13:00 -07:00
Patrick Walton
91eb63eaee
rt: Add a stack check to upcall_get_type_desc
2011-07-06 15:07:04 -07:00
Brian Anderson
2f7bc90514
Add a stdtest crate to hold the standard library tests
...
This will link to std and compile with the --test flag. Eventually the
run-pass/lib* tests will move here.
We could also put the std tests directly into the library and compile both a
library version and a test version, but I think this way will make for faster
builds.
Issue #428
2011-07-06 14:39:40 -07:00
Brian Anderson
b06ccb45ab
Begin adding unit testing infrastructure to the compiler
...
Add a --test flag and a pass for transforming the AST to generate a test
harness.
Issue #428
2011-07-06 14:39:36 -07:00
Brian Anderson
0eac640fdd
Swap the expected/actual for typechecking fields of updated records
...
In 'rec(a = b with c)', if a exists in c then the expected type for b is the
type of c.
2011-07-06 14:04:52 -07:00
Patrick Walton
05954f37b7
rustc: Use an interior vector for ty::count_ty_params
2011-07-06 12:05:18 -07:00
Patrick Walton
e066bae56e
rustc: Move the interner over to interior vectors
2011-07-06 12:05:13 -07:00
Patrick Walton
717ac3df77
rustc: Make the various constraint-related types in middle::ty use interior vectors
2011-07-06 12:05:06 -07:00
Patrick Walton
2fd46b54fb
rustc: Make type parameter substitutions interior vectors
2011-07-06 12:04:59 -07:00
Patrick Walton
cb2018c6db
rustc: Change constraints in types to use interior vectors
2011-07-06 12:04:07 -07:00
Patrick Walton
13d920c10d
rustc: Switch tag type parameters to interior vectors
2011-07-06 12:03:55 -07:00
Patrick Walton
ede35f4c43
rustc: Use interior vectors for tag type parameters
2011-07-06 12:03:06 -07:00
Eric Holk
111989a626
Removed what seems to be the last of the calls to rand(). Closes #582 .
2011-07-06 11:50:25 -07:00
Brian Anderson
066bcc6c79
Make "cannot determine a type for this local variable" non-fatal
2011-07-06 11:44:42 -07:00
Brian Anderson
5c20a8aa9c
Make "cannot determine a type for this expression" non-fatal. Closes #621
2011-07-06 11:44:36 -07:00
Brian Anderson
c31472e845
Refactor the typeck::writeback AST walk
...
All visitors take a wb_ctxt now instead of some taking a fn_ctxt and some
taking an ignore flag.
2011-07-06 11:42:20 -07:00
Brian Anderson
0c9c4cb575
Remove unused method from typeck::writeback
2011-07-06 11:42:20 -07:00
Brian Anderson
c1136e4e05
Limit exports from typeck
2011-07-06 11:42:20 -07:00
Brian Anderson
97c1537374
Limit exports from typeck::writeback
2011-07-06 11:42:20 -07:00
Lindsey Kuper
e30d2c82ae
Simplify AST for expr_anon_obj.
2011-07-06 11:36:06 -07:00
Lindsey Kuper
23bae67f4c
Simplify arguments to trans_anon_obj and friends.
2011-07-06 11:36:06 -07:00
Eric Holk
bc5d6aefda
Added a task wakeup callback. Closes #599 .
...
The callback happens when a task moves from the "blocked" state to the
"running" state. The callback is also inherited by child tasks. There
is currently only a native API.
This code hasn't been heavily exercised yet.
2011-07-06 11:30:00 -07:00
Patrick Walton
bbdba21b1f
rustc: Revert the conversion to interior vectors due to heap corruption
2011-07-06 11:26:26 -07:00
Patrick Walton
ec890fff23
Temp commit on the way to making meta_item into an interior vector
2011-07-06 11:09:08 -07:00
Patrick Walton
3f6c9f8d84
rustc: Move crate directives over to interior vectors
2011-07-06 11:09:08 -07:00
Patrick Walton
c927d97fa0
rustc: Convert attribute in the AST to interior vectors
2011-07-06 11:09:08 -07:00
Patrick Walton
1591955adf
rustc: Make AST paths use interior vectors
2011-07-06 11:09:08 -07:00
Patrick Walton
b108280db1
rustc: Move middle::tstate::collect_locals over to interior vectors
2011-07-06 11:09:08 -07:00
Patrick Walton
48438ba1ae
rustc: Remove unused or seldom-used imports from middle::tstate::{bitvectors, ck}
2011-07-06 11:09:07 -07:00
Patrick Walton
ec634e471f
rustc: Remove some unused references to std::vec from tstate::ann and tstate::auxiliary
2011-07-06 11:09:07 -07:00
Patrick Walton
cfc659009e
rustc: Move middle::tstate::auxiliary and middle::tstate::bitvectors over to interior vectors
2011-07-06 11:09:07 -07:00
Patrick Walton
702f88a3be
rustc: Move tstate::annotate over to interior vectors
2011-07-06 11:09:07 -07:00
Patrick Walton
4c384304e9
rustc: Convert bind_params_in_type() to use interior vectors
2011-07-06 11:09:07 -07:00
Patrick Walton
5703bd1760
rustc: Migrate tag variants to interior vectors
2011-07-06 11:09:07 -07:00
Patrick Walton
52a7c2b78e
rustc: Make object methods into interior vectors
2011-07-06 11:09:07 -07:00
Patrick Walton
75c5f9bdba
rustc: Use an interior vector for ty::count_ty_params
2011-07-06 11:09:06 -07:00
Patrick Walton
bd7a072266
rustc: Move the interner over to interior vectors
2011-07-06 11:09:06 -07:00
Patrick Walton
b9a2117475
rustc: Make the various constraint-related types in middle::ty use interior vectors
2011-07-06 11:09:06 -07:00
Patrick Walton
0eb889f9d2
rustc: Make type parameter substitutions interior vectors
2011-07-06 11:09:06 -07:00
Patrick Walton
8bee69da25
rustc: Change constraints in types to use interior vectors
2011-07-06 11:09:06 -07:00
Patrick Walton
f391acbd3f
rustc: Switch tag type parameters to interior vectors
2011-07-06 11:09:06 -07:00
Patrick Walton
09e591c12f
rustc: Use interior vectors for tag type parameters
2011-07-06 11:09:06 -07:00
Patrick Walton
9c4411ac5e
snap: Register new snapshots
2011-07-06 11:05:57 -07:00
Lindsey Kuper
6bd80d0121
Add a compile-fail test for attempts to extend non-objects.
2011-07-06 10:47:36 -07:00
Marijn Haverbeke
8e585e7008
Support paren-free and lightweight-case syntax
...
(The old syntax is still supported as well, for now.)
It is now possible to leave out the parens around if, while, and
do/while conditions, and around alt expressions. Cases in an alt block
can now leave off the case keyword and parens around the pattern.
After the next snapshot, we can start migrating our code to use the
new alt syntax, probably with a pretty-printer pass. The paren-free
syntax will remain optional (you may always parenthesize expressions),
but the old case syntax will no longer be supported in the future.
2011-07-06 17:50:52 +02:00
Marijn Haverbeke
7661c08496
Remove temporary stdlib placeholders, use actual stdlib functions
...
(Possible now that a snapshot took place.)
2011-07-06 16:46:17 +02:00
Lindsey Kuper
4c315666dd
Forwarding functions. Lots of progress toward #539 , #540 , #543 .
2011-07-05 20:21:59 -07:00
Lindsey Kuper
993e47175f
Comments and cleanup.
2011-07-05 20:17:33 -07:00
Tim Chevalier
f279e0d76e
Handle pattern-bound upvars
...
If a closure inside a case alternative (for example, a for each loop)
referenced a pattern-bound variable, this would cause an assertion
failure in trans. Changed trans::collect_upvars to handle pattern-bound
vars correctly.
Incidentally, eliminated all direct uses of option::get in trans.
2011-07-05 19:58:49 -07:00
Patrick Walton
1bba585044
stdlib: Implement ivec::foldl
2011-07-05 18:29:47 -07:00
Brian Anderson
2cb129355b
Change ast::meta_name_value to accept any literal, not just string
...
This isn't useful for much of anything yet, since metadata::encoder doesn't
know how to handle the non-string variants.
Issue #611
2011-07-05 17:25:18 -07:00
Patrick Walton
8261d2e6fb
stdlib: Add filter_map to ivec
2011-07-05 17:22:02 -07:00
Patrick Walton
ee5d7bbc86
stdlib: Don't have ivec::map take a mutable alias
2011-07-05 16:28:07 -07:00
Brian Anderson
375f0b2211
Require that the meta items in a use statement have unique names
2011-07-05 16:12:24 -07:00
Tim Chevalier
a793b85fbd
Handle fail inside a for-each loop properly
2011-07-05 16:05:38 -07:00
Tim Chevalier
ded9008e38
handle fail inside a for loop
2011-07-05 16:05:38 -07:00
Tim Chevalier
6d0cb70fc3
Handle fail as an argument
2011-07-05 16:05:38 -07:00
Patrick Walton
1980a2db53
stdlib: Add str::connect_ivec() temporarily
2011-07-05 16:02:02 -07:00
Patrick Walton
219cd4b21f
stdlib: Change ivec::rustrt::ivec_on_heap() to use a 32-bit return value
2011-07-05 15:34:50 -07:00
Graydon Hoare
741db24e49
Print remaining comments at end of *crate*, not module.
2011-07-05 14:44:54 -07:00
Brian Anderson
a9d84ab28a
Make type unification failures non-fatal
...
Add a failure checkpoint after the typechecking pass. There are still many
fatal errors in typeck, but loosening up this one makes it easier to lean on
the compiler when making changes to types.
Issue #440 .
2011-07-05 14:40:33 -07:00
Patrick Walton
291df4d732
rt: Add missing CDECL to routines in rust_builtin
2011-07-05 14:29:14 -07:00
Graydon Hoare
a7d82a7f0f
Factor the ivec code a touch.
2011-07-05 14:19:27 -07:00
Brian Anderson
c5e28567a2
Register new snapshots
2011-07-05 13:39:54 -07:00
Brian Anderson
57d94493cf
Remove unused eval function. Issue #604
2011-07-05 13:34:02 -07:00
Brian Anderson
b79ea489e3
Support conditional compilation of native items. Closes #610
2011-07-05 13:30:00 -07:00
Brian Anderson
8499c77cee
Parse attributes for native items. Closes #609
2011-07-05 12:43:44 -07:00
Brian Anderson
10a4737d34
Warn when compiling shared crates that don't have name/vers link attributes
...
Closes #614
2011-07-05 11:58:44 -07:00
Brian Anderson
6f8bc404f8
Error if the link attribute has duplicate items. Issue #614
2011-07-05 11:46:02 -07:00
Marijn Haverbeke
4349eaed84
Don't thread the local crate number through the session
...
It's a constant, anyway.
2011-07-05 16:09:32 +02:00
Marijn Haverbeke
6fd6fdea93
Move everything syntax-related to syntax/, break deps on rest of compiler
...
src/comp/syntax is currently just a sub-module of rustc, but it will,
in the near future, be its own crate. This includes:
- The AST data structure
- The parser
- The pretty-printer
- Visit, walk, and fold
- The syntax extension system
- Some utility stuff that should be in the stdlib*
*) Stdlib extensions currently require a snapshot before they can be
used, and the win build is very broken right now. This is temporary
and will be cleaned up when one of those problems goes away.
A lot of code was moved by this patch, mostly towards a more organized
layout. Some package paths did get longer, and I guess the new layout
will take some getting used to. Sorry about that!
Please try not to re-introduce any dependencies in syntax/ on any of
the other src/comp/ subdirs.
2011-07-05 15:57:21 +02:00
Marijn Haverbeke
c59ebf0f01
Add a test file for distinct ty_native types
...
This should have gone into patch
77f5d14f14
, had I not forgotten to add
the file.
2011-07-05 11:50:41 +02:00
Marijn Haverbeke
04acba7968
Move pretty-printing 'modes' into a callback hook
...
This way, the pretty-printer does not have to know about middle::ty.
(This is a preparation for separating the AST functionality into a
separate crate.)
2011-07-05 10:42:17 +02:00
Patrick Walton
001397da3c
stdlib: Add ivec::any() and ivec::all(); put out burning tinderbox
2011-07-04 23:52:47 -07:00
Patrick Walton
f71c8dd918
stdlib: Implement interior vector map
2011-07-04 22:48:42 -07:00
Patrick Walton
d3a4102bc1
stdlib: Add an inefficient implementation of ivec::pop
2011-07-04 21:20:18 -07:00
Patrick Walton
5d2c189631
rustc: Remove obsolete "The second has to be authed pure" comment
2011-07-04 19:08:25 -07:00
Brian Anderson
ccf6112f15
Link the fuzzer crate to librustc again
2011-07-04 15:30:36 -07:00
Graydon Hoare
5c9fb0bc98
Merge pull request #605 from wilsonk/target
...
Update RustWrapper.cpp so that LLVM revision 134231 from June 30, 2011 at
2011-07-04 13:45:59 -07:00
Marijn Haverbeke
fb10829aef
Switch the alias checking pass to use span_err instead of span_fatal
...
It'll now spit out all problems it finds, and only abort after
the whole pass has run.
2011-07-04 22:00:07 +02:00
Marijn Haverbeke
b1423be1d6
Move the ids of pat AST nodes into their struct
...
Just like it was done with items and exprs. Simplifies some code.
2011-07-04 22:00:06 +02:00
Rafael Ávila de Espíndola
b669430f72
Use metadata to avoid always passing -Lrustllvm to the linker.
2011-07-04 13:22:23 -04:00
Rafael Ávila de Espíndola
6b1da80eb4
Simplify.
2011-07-04 11:36:10 -04:00
Rafael Ávila de Espíndola
e0ce092ddc
Simplify the code a bit.
2011-07-04 11:17:30 -04:00
Josh Matthews
7e7e326ee6
Make use of demand::simple instead of manually checking fail expr type.
2011-07-03 21:46:17 -07:00
Josh Matthews
a2775a5b72
Make non-str fail expression a type checking failure instead of a translation one.
2011-07-03 21:46:17 -07:00
Tim Chevalier
b110bbf886
Un-XFAIL fail-arg
2011-07-03 11:56:23 -07:00
Tim Chevalier
046c25dbc0
Handle fail as an argument; parse fail expressions unambiguously
...
An expression like:
foo(1, fail, 2)
was failing to parse, because the parser was interpreting the comma
as the start of an expression that was an argument to fail, rather
than recognizing that the fail here has no arguments
Fixed this by using can_begin_expr to determine whether the next
token after a fail token suggests that this is a nullary fail or a
unary fail.
In addition, when translating calls, check before translating each
argument that the block still isn't terminated. This has the effect
that if an argument list includes fail, the back-end won't keep trying
to generate code for successive arguments and trip the !*terminated
assertion.
2011-07-03 11:51:47 -07:00
Tim Chevalier
6369807ffe
Add a predicate that determines whether a token can begin an expression
2011-07-03 11:51:46 -07:00
Tim Chevalier
48a69d2100
Eliminate all direct calls to option::get() from typeck
...
This means fewer mysterious error messages.
2011-07-03 02:48:08 -07:00
Tim Chevalier
c425a422ed
Manipulate contexts correctly in trans_fail_expr
...
This fixes Issue #617
2011-07-03 02:38:11 -07:00
Tim Chevalier
9349826909
XFAILing the new test case...
...
...because the parsing of fail got changed out from under me.
Will fix shortly.
2011-07-03 01:15:41 -07:00
Tim Chevalier
7426252549
Generate code properly for calls with _|_ - typed arguments
...
The code for translating a fail (for example) would call
Unreachable(), which terminates the block; if a fail appeared as an
argument, this would cause an LLVM assertion failure. Changed
trans_call to handle this situation correctly.
2011-07-02 22:02:59 -07:00
Tim Chevalier
f0fad0dca5
Add a function that determines whether the block is terminated
2011-07-02 22:02:08 -07:00
Josh Matthews
a4421cc4e8
Fix assertion failure when syntax extension name is missing.
2011-07-02 00:06:58 -07:00
Brian Anderson
7c8ee712be
Fix the error-pattern on compile-fail/fail-simple
...
Recent changes to the fail statement changed the way the parser errors in this
scenario.
2011-07-02 00:06:58 -07:00
Josh Matthews
d485e0d15a
Allow any string expression to be used with fail.
2011-07-02 00:06:58 -07:00
Patrick Walton
67c9ef9b30
rustc: Fix memory corruption with ivectors-inside-ivectors by duplicating *first*, and *then* copying subtypes.
2011-07-01 20:07:19 -07:00
Patrick Walton
d39c59ae41
rustc: Move path_to_str to front::ast
2011-07-01 17:22:18 -07:00
Rob Arnold
4e59b0be54
Sync rust_chan's deref() method with rustc's code.
...
If the channel is associated with a port then the destructor will assert.
Additionally, destruction of the object is not always appropriate. This brings
the deref() method into sync with the behavior of generated rust code which
only invokes destroy() once the reference count goes to 0.
2011-07-01 16:59:11 -07:00
Rob Arnold
02a5949aba
Add macro for refcounting runtime structures.
...
The macro with the extra dtor parameter is intended for structures like
rust_chan which may not necessarily delete themselves when the ref count
becomes 0. This functionality will be used in an upcoming changeset.
2011-07-01 16:59:10 -07:00
Rob Arnold
73cc624e8e
Move the channel destroy code into rust_chan.
...
This lets native code more easily destroy channels since directly deleting a
channel is not always the right way to destroy it.
2011-07-01 16:59:10 -07:00
Rob Arnold
09921cf86f
Move channel cloning logic into a method on rust_chan.
...
This will allow us to more easily clone channels from native code.
2011-07-01 16:59:10 -07:00
Brian Anderson
396c4defcc
Introduce --cfg argument for providing additional configuration. Issue #489
2011-07-01 15:30:25 -07:00
Brian Anderson
a34b61fb15
Add some FIXMEs for issue #607
2011-07-01 12:51:46 -07:00
Brian Anderson
021b203fc6
Add some logging to attr when reading crate link attributes
...
Only link attributes of the meta_list type are considered when matching crate
attributes. Instead of doing nothing we can at least log that link attributes
of other types were ignored.
2011-07-01 12:30:27 -07:00
Brian Anderson
22be98264e
Add a test for mismatched crate metadata in use statements
2011-07-01 12:26:57 -07:00
Patrick Walton
f7a2f01746
Revert "rustc: Change methods in ty::t to use interior vectors"
...
This reverts commit 6720ea760d
.
2011-07-01 11:37:19 -07:00
Patrick Walton
6720ea760d
rustc: Change methods in ty::t to use interior vectors
2011-07-01 11:33:17 -07:00
Brian Anderson
172c5633c4
Export only what's in use from front::eval. Issue #604
2011-07-01 10:46:59 -07:00
Brian Anderson
bdc5abe82c
Remove unused imports from front::eval
2011-07-01 10:45:30 -07:00
Brian Anderson
8614cc975c
Remove remaining unused eval methods. Issue #604
2011-07-01 10:45:30 -07:00
Brian Anderson
91b87b31e5
Remove the concept of crate directive let statements. Issue #604
2011-07-01 10:45:30 -07:00
Brian Anderson
d8fe0d7cee
Remove the concept of crate directive expressions. Issue #604
2011-07-01 10:45:30 -07:00
Brian Anderson
bca45720f7
Remove the environment concept from front::eval
...
This is the old method of conditional compilation. It is going away.
Issue #489
2011-07-01 10:45:30 -07:00
Brian Anderson
70a28dc238
Cleanup attribute code. Issue #487
2011-07-01 10:45:30 -07:00
Brian Anderson
26ce1e1035
Add some helper functions to front::attr
2011-07-01 10:45:29 -07:00
Brian Anderson
5fb9cad38d
Partially restore the fuzzer crate's build rules
...
Right now the stage1/fuzzer crate will build but it's not linked to librustc
because stage1/librustc won't link.
2011-07-01 10:43:21 -07:00
Marijn Haverbeke
77f5d14f14
Track def_ids of native types so that they can be distinguished
...
Closes #526
2011-07-01 18:39:24 +02:00
Marijn Haverbeke
d863cdb98f
Add tests for newtype-style tags
2011-07-01 17:51:49 +02:00
Marijn Haverbeke
432e5e9f7f
Allow dereferencing of single-variant, single-argument tag values
...
(Using the * operator.)
This makes tags more useful as nominal 'newtype' types, since you no
longer have to copy out their contents (or construct a cumbersome
boilerplate alt) to access them.
I could have gone with a scheme where you could dereference individual
arguments of an n-ary variant with ._0, ._1, etc, but opted not to,
since we plan to move to a system where all variants are unary (or, I
guess, nullary).
2011-07-01 17:51:47 +02:00
Marijn Haverbeke
57e6340253
Allow 'newtype' syntax for tags
...
Doing this:
tag foo = mytype;
is now equivalent to doing this:
tag foo { foo(mytype); }
2011-07-01 17:51:43 +02:00
Marijn Haverbeke
fb72be0a89
Do not store a tag num for single-variant tags
...
This is a preparation for tags-as-nominal-types. A tag that has only a
single variant is now represented, at run-time, as simply a tuple of
the variant's parameters, with the variant id left off.
2011-07-01 17:50:52 +02:00
Marijn Haverbeke
bf20fe5575
Make sure the pretty-printer understand resources
2011-07-01 13:04:49 +02:00
Michael Sullivan
7b1b5d5a8a
Implement autoderef for function calls.
...
This is important since we are going to be making functions noncopyable
soon, which means we'll be seeing a lot of boxed functions.
(*f)(...) is really just too heavyweight.
Doing the autodereferencing was a very little bit tricky since
trans_call works with an *lval* of the function whereas existing
autoderef code was not for lvals.
2011-07-01 12:39:58 +02:00
Michael Sullivan
ee45d54a4e
Move autoderefed_ty to ty.rs and rename it type_autoderef.
2011-07-01 12:39:57 +02:00
Kelly Wilson
1e4f198a1d
Update RustWrapper.cpp so that LLVM revision 134231 from June 30, 2011 at 22:15 GMT, works.
2011-07-01 00:56:49 -06:00
Patrick Walton
b4465aca5a
stdlib: Fix long line in sort.rs
2011-06-30 22:21:30 -07:00
Patrick Walton
4c76bfdc1f
stdlib: Add an interior vector version of sort and a test case
2011-06-30 19:09:52 -07:00
Patrick Walton
b773f8d22b
rustc: Duplicate heap data of interior vectors when passing them by value
2011-06-30 19:09:52 -07:00
Graydon Hoare
0eb257e864
Minor pp cleanups.
2011-06-30 17:58:19 -07:00
Graydon Hoare
6d441d3238
Preserve hard \n\n pairs from source when pretty-printing, as explicit formatting control from users.
2011-06-30 17:25:20 -07:00
Patrick Walton
dc9f285b06
rustc: Remove unused variables from last commit
2011-06-30 16:19:04 -07:00
Patrick Walton
108cc4e0ed
rustc: Change function argument types to interior vectors
2011-06-30 16:11:39 -07:00
Brian Anderson
50b1953f9b
Pretty-print view items in mod items
...
For mods that aren't defined at the file level we were forgetting to print the
view items so, e.g. 'mod { use std; }' would not print correctly.
2011-06-30 16:08:28 -07:00
Graydon Hoare
1e63d5303f
Restore some functionality that got stripped out of the export tests while last reformatting.
2011-06-30 15:39:25 -07:00
Brian Anderson
64d6081429
Use attributes for conditional compilation in std.rc
2011-06-30 14:13:49 -07:00
Brian Anderson
39fccf3bc7
Conditionally compile items declared as statements. Issue #489
2011-06-30 13:04:35 -07:00
Brian Anderson
6346a67cbd
Add more tests for conditional compilation. Issue #489
2011-06-30 13:04:35 -07:00
Tim Chevalier
7fd04a21a1
remove an unused variable
2011-06-30 12:45:50 -07:00
Tim Chevalier
37bfbc4b79
Get rid of remaining unused variables
2011-06-30 12:37:30 -07:00
Tim Chevalier
6a74253d60
Don't warn about unused for-loop index variables
2011-06-30 12:37:30 -07:00
Tim Chevalier
d8db9a0fe1
Kill unused variables
2011-06-30 12:37:30 -07:00
Tim Chevalier
a0cdb23892
Get rid of an unused variable
2011-06-30 12:37:30 -07:00
Tim Chevalier
4519f54857
Warn for unused variables
...
Modify typestate to check for unused variables and emit warnings
where relevant. This exposed a (previously harmless) bug in
collect_locals where outer functions had bit-vector entries
for init constraints for variables declared in their inner
nested functions. Fixing that required changing collect_locals to
use visit instead of walk -- probably a good thing anyway.
2011-06-30 12:37:30 -07:00
Patrick Walton
add9031dd5
rustc: Use interior vectors for record types
2011-06-30 12:02:40 -07:00
Patrick Walton
fd0d1cb7d8
rustc: Make mk_imm_tup() take an interior vector
2011-06-30 11:35:05 -07:00
Patrick Walton
b841152a40
rustc: Use interior vectors for tuple types
2011-06-30 11:35:05 -07:00
Patrick Walton
be50cdd24a
rt: Add room for the new fill slot when resizing interior vectors
2011-06-30 11:35:05 -07:00
Eric Holk
e1927553a5
Added a new version of pfib that's better suited for benchmarking the task system. It generates gnuplot output.
2011-06-30 11:32:16 -07:00
Eric Holk
b4a145e60f
Added a nanosecond timer to time.rs, support for some floating point casts, and a commandline-driven mode for pfib.rs
2011-06-30 11:32:10 -07:00
Brian Anderson
441c7e0610
Un-XFAIL run-pass/conditional-compile.rs. Issue #489
2011-06-30 10:06:26 -07:00
Brian Anderson
4165d3640a
Add a pass to fold out items that do not belong in the current configuration
...
The parser needs to parse unconfigured items into the AST so that they can
make the round trip back through the pretty printer, but subsequent passes
shouldn't care about items not being translated. Running a fold pass after
parsing is the lowest-impact way to make this work. The performance seems
fine.
Issue #489
2011-06-30 10:06:26 -07:00
Brian Anderson
3483c65b1f
Add missing item variants to fold_item_underscore
2011-06-30 10:06:26 -07:00
Brian Anderson
aa6a3debf3
Add missing expression variants to fold_expr
2011-06-30 10:06:26 -07:00
Brian Anderson
1f0c25406c
Fold the crate-level module in front::fold
2011-06-30 10:06:26 -07:00
Brian Anderson
5de916dd5c
Move middle::attr to front::attr
2011-06-30 10:06:26 -07:00
Brian Anderson
afc8a5c031
Convert the eval::env to an ast::crate_cfg
...
crate_cfg will replace eval::env as the mechanism for conditional compilation.
This is a transitional step so they can both exist together.
Issue #489
2011-06-30 10:06:25 -07:00
Brian Anderson
d53bfad8e7
Introduce a config property to the crate AST node
...
This represents the compilation environment, defined as AST meta_items, Used
for driving conditional compilation and will eventually replace the
environment used by the parser for the current conditional compilation scheme.
Issue #489
2011-06-30 10:06:25 -07:00
Brian Anderson
cbcc7bba30
Introduce a testcase for conditional compilation via attributes
...
Issue #489
2011-06-30 10:06:21 -07:00
Brian Anderson
78a82b9fd1
Switch rustc's crate metadata to use the link attribute
2011-06-30 10:03:07 -07:00
Marijn Haverbeke
86f16b90cd
Support type parameters in resources
...
Some rather dodgy code was added to trans in the process. I'd love to
discuss it with someone who knows more about types during translation.
2011-06-30 18:36:12 +02:00
Marijn Haverbeke
31ec26d46a
Make calling resource destructors work cross-crate
...
Tydescs are currently re-created for each compilation unit (and I
guess for structural types, they have to be, though the duplication
still bothers me). This means a destructor can not be inlined in the
drop glue for a resource type, since other crates don't have access to
the destructor body.
Destructors are now compiled as separate functions with an external
symbol that can be looked up in the crate (under the resource type's
def_id), and called from the drop glue.
2011-06-30 18:36:12 +02:00
Graydon Hoare
8c36a76626
More fiddling with fast-check, now works on at least one windows machine.
2011-06-30 09:26:17 -07:00
Rafael Ávila de Espíndola
5b7ce80ffa
Second try to remove -lssp.
2011-06-30 08:55:25 -04:00
Eric Holk
b3e5b5bd05
Added inheritance for task pinning. Closes #598 for real.
2011-06-29 18:56:34 -07:00
Eric Holk
63dcd325b9
Adding support for pinning tasks to the currently running thread. Closes #598 .
2011-06-29 18:47:47 -07:00
Graydon Hoare
afabde19dc
More fixes to fast-check.
2011-06-29 17:54:05 -07:00
Brian Anderson
a82aeb7af6
Register new snapshots
...
Also finish transition of snapshot scripts for new glue.o location
2011-06-29 17:45:54 -07:00
Brian Anderson
865534978f
Change snapshot logic to archive glue.o from the lib directory
2011-06-29 15:39:30 -07:00
Graydon Hoare
4e5d32e1c4
Add fast-check target that combines the stage2 run-pass suite into a single executable.
2011-06-29 15:14:55 -07:00
Graydon Hoare
c796a8f24d
Re-enable tidy (it was broken) and fix various non-tidy things.
2011-06-29 15:14:55 -07:00
Brian Anderson
190644063e
Be more strategic about linking to rust crates
...
Instead of linking directly to the rust crate, try to figure out the location
and name of the library from the file name, then call gcc with appropriate -L,
-l flags. This will allow dynamic linking to be more forgiving about where it
loads the library from at runtime - currently a stage3 compiler can't run
correctly from the stage0 directory. Only tested on Linux. Fingers crossed.
2011-06-29 14:35:39 -07:00
Brian Anderson
e130e7b598
Display an error when linking fails
2011-06-29 14:35:39 -07:00
Brian Anderson
e60cb9197f
Add session.note method
2011-06-29 14:35:39 -07:00
Brian Anderson
4ffa5ddf76
session.err shouldn't take a span
2011-06-29 14:35:39 -07:00
Tim Chevalier
76b755f9ad
Remove workaround for a compiler bug that, I guess, got fixed
2011-06-29 14:28:03 -07:00
Tim Chevalier
88447a47c0
Eliminate the --check-claims compiler flag
...
The option can only be toggled at runtime now.
2011-06-29 14:28:02 -07:00
Tim Chevalier
1ba85932b1
Add a runtime flag to enable/disable claims en masse
...
Now, if the environment variable CHECK_CLAIMS is set, then all
claims turn into checks. Otherwise, claims are no-ops.
2011-06-29 14:28:02 -07:00
Brian Anderson
d4b5b48e0a
Correctly locate the crate's version from the link attribute
2011-06-29 14:21:39 -07:00
Brian Anderson
29afe1a518
Write metadata for sythesized name/vers items to the crate's link attr
...
If the crate doesn't specify it's name or version, the defaults need to be
exported in the crate metadata
2011-06-29 14:21:39 -07:00
Brian Anderson
308bc31f24
Encapsulate more crate meta calculations
2011-06-29 14:21:39 -07:00
Brian Anderson
325f46da06
Move the calculation of the crate name, vers and cmh to a single function
2011-06-29 14:21:39 -07:00
Rafael Ávila de Espíndola
8c535d4aba
Don't enable ssp everywhere.
2011-06-29 16:25:54 -04:00
Graydon Hoare
5b2c17fba5
Fix resource encoding bugs.
2011-06-29 12:14:29 -07:00
Graydon Hoare
750dcc05e4
Make tests a little more friendly to combine.
2011-06-29 12:14:29 -07:00
Patrick Walton
b18cefdfd7
rustc: Fix a leak that resulted from copying a structural interior type containing interior vectors. Add a test case.
2011-06-29 12:16:07 -07:00
Patrick Walton
a2ce532337
rt: Remove the lock around upcall_vec_append. Add a test case. Closes #156 .
2011-06-29 10:33:51 -07:00
Rafael Ávila de Espíndola
54f618128e
Revert ""Try" push without -lssp on windows to see what needs it."
...
This reverts commit 47b3e087e9
.
2011-06-29 13:25:52 -04:00
Patrick Walton
bbd0d58955
rustc: Unbreak self assignment
2011-06-29 10:22:53 -07:00
Rafael Ávila de Espíndola
47b3e087e9
"Try" push without -lssp on windows to see what needs it.
2011-06-29 12:56:54 -04:00
Michael Sullivan
1d05718c2d
Extend visit to use visit_fn to visit fn expressions.
2011-06-29 09:04:00 -07:00
Brian Anderson
bc47804473
Revert "Register new snapshots"
...
This reverts commit b29886cdeb
.
2011-06-28 22:50:20 -07:00
Brian Anderson
b29886cdeb
Register new snapshots
2011-06-28 22:24:33 -07:00
Brian Anderson
7c500fc0a0
Replace common::new_seq_hash with an adapter around std::smallintmap
...
It would be better to either convert ast_map to use smallintmap or make
smallintmap and hashmap follow the same interface, but I don't feel up to
it just now. Closes #585 .
2011-06-28 19:48:33 -07:00
Lindsey Kuper
7b5d34aa9a
Comments and cleanup.
2011-06-28 19:06:44 -07:00
Lindsey Kuper
57e5cde3a2
Comments and cleanup.
2011-06-28 18:54:56 -07:00
Lindsey Kuper
684c0dc494
Comments and cleanup.
2011-06-28 18:54:56 -07:00
Lindsey Kuper
9155544a5a
Comments.
2011-06-28 18:54:56 -07:00
Brian Anderson
6832f75f0b
Support attaching attributes to modules via the crate file. Issue #487
2011-06-28 18:39:34 -07:00
Patrick Walton
74f8eb51ae
rustc: Move duplicate_heap_parts to copy glue; add a test case
2011-06-28 17:59:30 -07:00
Tim Chevalier
db478ed4de
Remove outdated comments
2011-06-28 17:50:07 -07:00
Graydon Hoare
5059c5f8fd
Actually notice xfail-stage2 as different from xfail-stage2. Fix affected tests.
2011-06-28 17:36:51 -07:00
Michael Sullivan
b944d8d72e
Require that both sides of a swap be lvals.
2011-06-28 17:28:06 -07:00
Graydon Hoare
d79330de26
Fix logic bug in std::fs::dirname.
2011-06-28 17:24:30 -07:00
Brian Anderson
83b7215366
Cleanup attribute code. Issue #487
2011-06-28 16:55:07 -07:00
Brian Anderson
82a74fcb3f
Remove the last traces of the distinction between export / local meta items
...
Issue #487
2011-06-28 16:55:07 -07:00
Patrick Walton
dfcfef41df
rustc: Rename take glue to copy glue
2011-06-28 16:52:59 -07:00
Tim Chevalier
9f1444c701
Implement "claim"
...
Implement "claim" (issue #14 ), which is a version of "check" that
doesn't really do the check at runtime. It's an unsafe feature.
The new flag --check-claims turns claims into checks automatically --
but it's off by default, so by default, the assertion in a claim
doesn't execute at runtime.
2011-06-28 16:41:06 -07:00
Eric Holk
866ee6ecb4
Re-enabling some tests.
2011-06-28 16:12:34 -07:00
Eric Holk
f6f8a06d6b
Resurrecting the runtime unit tests, and modifying them so they compile under the latest refactoring changes.
2011-06-28 16:12:34 -07:00
Eric Holk
657e5a2bd5
Renamed what's left of rust_dom to rust_scheduler
2011-06-28 16:12:33 -07:00
Eric Holk
02f6645fca
Moved win32_require to the kernel.
2011-06-28 16:12:33 -07:00
Eric Holk
2f84987a48
Fixed Win32 compile errors.
2011-06-28 16:12:33 -07:00
Eric Holk
49a8cb34d2
Removed dom_owned, splitting things between task_owned and kernel_owned. Had to re-xfail a few tests brson recently un-xfailed.
2011-06-28 16:12:33 -07:00
Eric Holk
f6f945fed5
Moved thread management to rust_kernel.
2011-06-28 16:12:33 -07:00
Eric Holk
c6d8324830
There is only one domain per kernel now.
2011-06-28 16:12:33 -07:00
Eric Holk
1c852ac9c0
Removing runtime tests. The runtime is tested well enough by the standard library tests, so we might as well have less code to fix during refactoring.
2011-06-28 16:12:33 -07:00
Eric Holk
64596e6583
Teach the parser and typechecker to understand port[int](). Closes #588
2011-06-28 16:11:04 -07:00
Brian Anderson
1c6ae8cadf
Use span_fatal for failure to find crates
2011-06-28 16:04:09 -07:00
Brian Anderson
46b83a92d6
Add test case for non-matching crate metadata in use statements
2011-06-28 15:58:22 -07:00
Brian Anderson
8ac60e99ea
Extract meta_item sorting from back::link to middle::attr
2011-06-28 15:46:09 -07:00
Brian Anderson
aecc5e6e0f
Add comments to middle::attr. Issue #487
2011-06-28 15:34:27 -07:00
Brian Anderson
a83b64d15d
Rework how linkage attributes are determined
...
The meta items within a crate's link attribute are used in linkage:
#[link(name = "std",
vers = "1.0",
custom = "whatever")];
Name and vers are treated specially, and everything else is hashed together
into the crate meta hash.
Issue #487
2011-06-28 15:25:47 -07:00
Brian Anderson
0608e277b6
Add some helper functions for attributes. Issue #487
2011-06-28 15:25:47 -07:00
Patrick Walton
7554423423
stdlib: Remove old botch from ufind
2011-06-28 14:16:09 -07:00
Tim Chevalier
d832f7abec
Another test for typestate and expr_fn
2011-06-28 13:14:52 -07:00
Tim Chevalier
28459ca0eb
Handle lazy binops properly in typestate
...
The typestate analysis now reflects that the second operand of a
logical and or or may not be evaluated.
2011-06-28 13:07:52 -07:00
Tim Chevalier
a7c4c19d4b
add a predicate that determines whether a binop is lazy (and and or are lazy)
2011-06-28 13:07:52 -07:00
Rafael Ávila de Espíndola
d5fc01caef
Move glue.o to stageN/lib.
2011-06-28 15:20:43 -04:00
Tim Chevalier
926049eddd
Tests only: more tests with constraints and loops
2011-06-28 11:49:11 -07:00
Patrick Walton
1ca0db5421
rustc: Add a "type-owns-heap-mem" cache. 2x translation speedup.
2011-06-28 11:36:11 -07:00
Patrick Walton
5f5b7e3348
rustc: Don't call cmp glue if the type is a simple scalar
2011-06-28 11:24:34 -07:00
Graydon Hoare
0dc2aa3d09
Bit more work on mingw cross. Pending on other changes now (test combination, build artifact locations)
2011-06-28 11:18:34 -07:00
Brian Anderson
cab73f8897
Write metadata for more meta_item types. Issue #487
2011-06-28 10:12:05 -07:00
Brian Anderson
f53c4f79d7
Write metadata for crate attributes. Issue #487
2011-06-28 10:03:41 -07:00
Brian Anderson
894e2229ac
Add emacs variables to encoder.rs
2011-06-28 10:03:40 -07:00
Brian Anderson
d328c7e03e
List crate attributes when running rustc with '--ls'
2011-06-28 10:03:40 -07:00
Marijn Haverbeke
9561def209
Use 'resource' rather than 'res' as a keyword
...
Resources are now defined like...
resource fd(int n) { close(n); }
Calling fd with an int will then produce a non-copyable value
that, when dropped, will call close on the given int.
2011-06-28 18:00:39 +02:00
Marijn Haverbeke
fb14afd5eb
Add test cases for resources
2011-06-28 18:00:38 +02:00
Marijn Haverbeke
07125aa38b
Fix bug that prevented boxes-in-resources from being freed
2011-06-28 18:00:05 +02:00
Marijn Haverbeke
e2cb97a2fc
Add some missing cases for ty_res in ty.rs
2011-06-28 18:00:05 +02:00
Marijn Haverbeke
d730bb730a
Make it possible to use * to dereference a resource
2011-06-28 18:00:05 +02:00
Paul Stansifer
b3443eb049
'#simplext' -> '#macro'
2011-06-28 15:02:12 +00:00
Paul Stansifer
c3901cdf8e
Add simple syntax extension (#simplext)
2011-06-28 15:02:12 +00:00
Paul Stansifer
b632681780
Add AST fold.
2011-06-28 15:02:12 +00:00