Commit Graph

4182 Commits

Author SHA1 Message Date
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
Graydon Hoare
df8161d44c Correct make rules a bit. 2011-06-30 13:41:28 -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