Michael Woerister
0cc70743d2
Made ast::blk not use spanned<T> anymore.
2013-07-17 08:21:46 +02:00
Alex Crichton
9fd2ac7428
Make TLS keys actually take up space
...
If the TLS key is 0-sized, then the linux linker is apparently smart enough to
put everything at the same pointer. OSX on the other hand, will reserve some
space for all of them. To get around this, the TLS key now actuall consumes
space to ensure that it gets a unique pointer
2013-07-14 10:15:07 -07:00
Alex Crichton
e3211fa1f1
Purge the last remnants of the old TLS api
...
Closes #3273
2013-07-14 09:29:12 -07:00
bors
1ee54a8617
auto merge of #7725 : msullivan/rust/default-methods, r=pcwalton
...
r?
2013-07-12 17:28:28 -07:00
bors
ad708139fe
auto merge of #7706 : sanxiyn/rust/qualification-lint, r=pcwalton
...
Fix #2551 .
Lint is off by default because I didn't bother to fix all of std and extra.
2013-07-12 05:46:42 -07:00
Michael Sullivan
186f6faf1e
Get cross crate static default methods working. Closes #7569 .
2013-07-11 15:51:10 -07:00
Alex Crichton
f9bf69d253
Remove all external requirements of @
from TLS
...
Closes #6004
2013-07-11 00:37:13 -07:00
Seo Sanghyeon
f81986031c
Add a lint to detect unnecessarily qualified names
2013-07-10 19:09:03 +09:00
Alex Crichton
cb5b9a477c
Rename local_data methods/types for less keystrokes
2013-07-09 17:39:49 -07:00
Jens Nockert
1aae28a57d
Replaces the free-standing functions in f32, &c.
...
The free-standing functions in f32, f64, i8, i16, i32, i64, u8, u16,
u32, u64, float, int, and uint are replaced with generic functions in
num instead.
If you were previously using any of those functions, just replace them
with the corresponding function with the same name in num.
Note: If you were using a function that corresponds to an operator, use
the operator instead.
2013-07-08 18:05:17 +02:00
James Miller
97c5a44d3e
De-share trait_ref
...
Also, makes the pretty-printer use & instead of @ as much as possible,
which will help with later changes, though in the interim has produced
some... interesting constructs.
2013-07-07 22:51:09 +12:00
James Miller
cd1b6c8979
De-managed ast::Path
2013-07-07 22:51:09 +12:00
Huon Wilson
de0d696561
Remove vec::{filter, filtered, filter_map, filter_mapped}, replaced by iterators.
2013-07-04 00:46:49 +10:00
Huon Wilson
c0a20d2929
Remove vec::{map, mapi, zip_map} and the methods, except for .map, since this
...
is very common, and the replacement (.iter().transform().collect()) is very
ugly.
2013-06-30 21:59:44 +10:00
Alex Crichton
3bad7129eb
Remove mutability from unique boxes in the AST
2013-06-29 08:36:25 -07:00
Ben Blum
ff4ab9e147
'Borrow' stack closures rather than copying them (e.g., "|x|f(x)"), in prep for making them noncopyable.
2013-06-29 04:39:34 -04:00
Ben Blum
75b80bad63
Use more deriving(IterBytes) in libsyntax.
2013-06-29 03:58:50 -04:00
Ben Blum
5784c0912f
Change taskgroup key type to fn:Copy in prep for noncopyable stack closures.
2013-06-29 03:58:50 -04:00
Patrick Walton
03ab6351cc
librustc: Rewrite reachability and forbid duplicate methods in type implementations.
...
This should allow fewer symbols to be exported.
2013-06-28 10:44:16 -04:00
Patrick Walton
f9b54541ee
librustc: Disallow "mut" from distributing over bindings.
...
This is the backwards-incompatible part of per-binding-site "mut".
2013-06-28 10:44:15 -04:00
Philipp Brüschweiler
7295a6da92
Remove many shared pointers
...
Mostly just low-haning fruit, i.e. function arguments that were @ even
though & would work just as well.
Reduces librustc.so size by 200k when compiling without -O, by 100k when
compiling with -O.
2013-06-27 15:06:19 +02:00
bors
e9ac7194ff
auto merge of #7365 : cmr/rust/syntax_cleanup, r=Aatch
...
Sets the stage for further cleanup (especially mass-slaughter of `@`)
2013-06-25 18:02:02 -07:00
Daniel Micay
5242e8d2ba
remove the redundant each
method from OptVec
2013-06-25 16:26:23 -04:00
Corey Richardson
0d471d310d
great renaming propagation: syntax
2013-06-25 16:15:07 -04:00
Alex Crichton
1841b31c61
Add 'static mut' items to the language
2013-06-23 17:59:35 -07:00
Ben Blum
ce857e3d60
Parse and typecheck (not kindcheck) bounds on trait paths.
2013-06-23 14:40:14 -04:00
Daniel Micay
d2e9912aea
vec: remove BaseIter implementation
...
I removed the `static-method-test.rs` test because it was heavily based
on `BaseIter` and there are plenty of other more complex uses of static
methods anyway.
2013-06-23 02:05:20 -04:00
Graydon Hoare
d904c72af8
replace #[inline(always)] with #[inline]. r=burningtree.
2013-06-18 14:48:48 -07:00
Niko Matsakis
eb48c29681
Add copies to type params with Copy bound
2013-06-16 12:47:36 -04:00
Daniel Micay
585f5f7f79
add IteratorUtil to the prelude
2013-06-14 23:15:42 -04:00
Huon Wilson
096f6f56a8
Use @str instead of @~str in libsyntax and librustc. Fixes #5048 .
...
This almost removes the StringRef wrapper, since all strings are
Equiv-alent now. Removes a lot of `/* bad */ copy *`'s, and converts
several things to be &'static str (the lint table and the intrinsics
table).
There are many instances of .to_managed(), unfortunately.
2013-06-13 10:20:52 +10:00
Felix S. Klock II
ecef9ad75a
Visitor refactoring: Step 1, couple (Env, vt<Env>) together in a tuple.
2013-06-12 13:04:37 +02:00
Daniel Micay
004816f4c6
option: remove redundant old_iter impls
2013-06-11 14:06:12 -04:00
Huon Wilson
e8782eeb63
fix tests, remove some warnings
2013-06-11 02:34:14 +10:00
Huon Wilson
ccd0ac59e9
std: remove str::{connect,concat}*.
2013-06-10 23:57:03 +10:00
Huon Wilson
98ba91f81b
remove unused import warnings
2013-06-09 02:22:23 +10:00
Huon Wilson
513d2292e5
std: remove foldr and alli methods in vec
2013-06-09 02:22:23 +10:00
John Clements
91b652695b
moved TLS of sctable to ast_util, hid parameter in hygiene calls
2013-06-05 12:01:40 -07:00
John Clements
8dad2bb281
removed unused imports (and one unused argument)
2013-06-05 12:01:39 -07:00
John Clements
3203595471
interner just uses uints, not idents with syntax context
2013-06-05 12:01:38 -07:00
John Clements
22d21ab4c2
rename repr to name
2013-06-05 12:01:37 -07:00
Patrick Walton
8114d0e950
librustc: Disallow multiple patterns from appearing in a "let" declaration.
...
You can still initialize multiple variables at once with "let (x, y) = (1, 2)".
2013-06-04 21:45:42 -07:00
bors
fc5debd8fd
auto merge of #6807 : catamorphism/rust/rustpkg-extern-mod, r=catamorphism
...
r? @graydon Addresses #5681
2013-06-01 19:22:42 -07:00
Tim Chevalier
760c71dc4f
syntax: Add an each_view_item method on traits
2013-06-01 18:48:07 -07:00
Erick Tryzelaar
23808efd11
syntax: move callee_id into the expr_ variants
2013-06-01 15:31:56 -07:00
Patrick Walton
5fb254695b
Remove all uses of pub impl
. rs=style
2013-06-01 09:18:27 -07:00
Niko Matsakis
7a1a40890d
Remove copy bindings from patterns.
2013-05-30 15:20:36 -04:00
Patrick Walton
206ab89629
librustc: Stop reexporting the standard modules from prelude.
2013-05-29 19:04:53 -07:00
Niko Matsakis
5851d3242c
Move checking for moves and initialization of local variables and patterns into
...
borrow checker and generalize what moves are allowed. Fixes a nasty
bug or two in the pattern move checking code. Unifies dataflow code
used for initialization and other things. First step towards
once fns. Everybody wins.
Fixes #4384 . Fixes #4715 . cc once fns (#2202 ), optimizing local moves (#5016 ).
2013-05-28 20:22:14 -04:00
Alex Crichton
ae7df57c5a
Prevent refcount cycles during linting
...
Shaves off ~600MB of memory while compiling rustc
2013-05-27 22:22:09 -05:00
Erick Tryzelaar
1965d72957
core: remove iter_bytes helper functions
2013-05-23 17:48:16 -07:00
Patrick Walton
f3723cf7c4
libextra: Rename the actual metadata names of libcore to libstd and libstd to libextra
2013-05-22 21:57:07 -07:00
Alex Crichton
82fa0018c8
Remove all unnecessary allocations (as flagged by lint)
2013-05-20 16:10:40 -05:00
John Clements
fc4f304ef9
hygiene infrastructure.
...
- added a hash table to memoize rename and mark operations.
- added rename, mark, and resolve fold fns
2013-05-20 11:49:21 -07:00
Brian Anderson
66319b0278
Register snapshots
2013-05-19 23:34:32 -07:00
Alex Crichton
030c666cc1
Re-implement lint with less emphasis on item ids
...
This way it's much easier to add lints throughout compilation correctly, and
functions on impls can alter the way lints are emitted.
2013-05-17 00:49:16 -04:00
Huon Wilson
5dc5efefd4
syntax: deprecate #[auto_{en,de}code] in favour of #[deriving({En,De}codable)].
...
Replace all instances of #[auto_*code] with the appropriate #[deriving] attribute
and remove the majority of the actual code, leaving stubs to refer the user to
the new syntax.
2013-05-16 08:55:57 +10:00
Erick Tryzelaar
18f6a51d0a
rustc: rename ast::self_ty and related fields to explicit_self
2013-05-14 20:10:46 -07:00
Alex Crichton
ffcc680f9c
Fix test fallout from removing vecs_implicitly_copyable
2013-05-14 12:25:19 -04:00
Björn Steinbrink
bdc182cc41
Use static string with fail!() and remove fail!(fmt!())
...
fail!() used to require owned strings but can handle static strings
now. Also, it can pass its arguments to fmt!() on its own, no need for
the caller to call fmt!() itself.
2013-05-14 16:36:23 +02:00
Alex Crichton
5eb6d19803
syntax: Use the new for
protocol
2013-05-10 02:46:18 -04:00
Youngmin Yoo
841f4ceaf4
libsyntax: rename vec::each(var) to var.each
2013-05-09 14:20:04 +09:00
Patrick Walton
db4573a776
librustc: Remove mutable fields from the language.
...
They're still parsed though, to get through bootstrapping.
2013-05-08 17:04:00 -07:00
Niko Matsakis
4300d4d2fa
Merge remote-tracking branch 'mozilla/incoming' into issue-5910-dyna-freeze
...
Conflicts:
src/libcore/core.rc
src/libcore/hashmap.rs
src/libcore/num/f32.rs
src/libcore/num/f64.rs
src/libcore/num/float.rs
src/libcore/num/int-template.rs
src/libcore/num/num.rs
src/libcore/num/strconv.rs
src/libcore/num/uint-template.rs
src/libcore/ops.rs
src/libcore/os.rs
src/libcore/prelude.rs
src/libcore/rt/mod.rs
src/libcore/unstable/lang.rs
src/librustc/driver/session.rs
src/librustc/middle/astencode.rs
src/librustc/middle/borrowck/check_loans.rs
src/librustc/middle/borrowck/gather_loans.rs
src/librustc/middle/borrowck/loan.rs
src/librustc/middle/borrowck/preserve.rs
src/librustc/middle/liveness.rs
src/librustc/middle/mem_categorization.rs
src/librustc/middle/region.rs
src/librustc/middle/trans/base.rs
src/librustc/middle/trans/inline.rs
src/librustc/middle/trans/reachable.rs
src/librustc/middle/typeck/check/_match.rs
src/librustc/middle/typeck/check/regionck.rs
src/librustc/util/ppaux.rs
src/libstd/arena.rs
src/libstd/ebml.rs
src/libstd/json.rs
src/libstd/serialize.rs
src/libstd/std.rc
src/libsyntax/ast_map.rs
src/libsyntax/parse/parser.rs
src/test/compile-fail/borrowck-uniq-via-box.rs
src/test/compile-fail/regions-infer-borrow-scope-within-loop.rs
src/test/run-pass/borrowck-nested-calls.rs
2013-05-05 15:11:04 -04:00
Tim Chevalier
13df2ea69c
rustc: Handle struct patterns where the expected type is an enum
...
Previously, rustc would ICE if you matched on an enum-typed thing
with a structure pattern. Error out correctly.
2013-05-03 13:03:53 -07:00
Brendan Zabarauskas
e596128bd8
Remove 'Local Variable' comments
2013-05-02 13:22:04 +10:00
bors
55fbc47af1
auto merge of #6148 : erickt/rust/remove-drop, r=pcwalton
...
The drop block has been deprecated for quite some time. This patch series removes support for parsing it and all the related machinery that made drop work.
As a side feature of all this, I also added the ability to annote fields in structs. This allows comments to be properly associated with an individual field. However, I didn't update `rustdoc` to integrate these comment blocks into the documentation it generates.
2013-05-01 09:18:59 -07:00
Erick Tryzelaar
e9688fcfe3
remove some warnings
2013-05-01 07:49:41 -07:00
Erick Tryzelaar
c2e1f47955
rustc: remove the rest of drop
...
Removes:
ast::struct_def::dtor
syntax::ast::ii_dtor
syntax::visit::fk_dtor
syntax::ast_map::node_dtor
syntax:struct_dtor
2013-05-01 07:49:41 -07:00
Brendan Zabarauskas
ee26c7c433
Revert rename of Div to Quot
2013-05-01 15:40:05 +10:00
Niko Matsakis
a896440ca1
new borrow checker (mass squash)
2013-04-30 06:59:32 -04:00
Patrick Walton
f30f54e9d0
librustc: Remove the concept of modes from the compiler.
...
This commit does not remove `ty::arg`, although that should be
possible to do now.
2013-04-29 14:30:55 -07:00
John Clements
1b4ced8bcb
get rid of prec.rs
...
prec.rs no longer had much to do with precedence; the token->binop
function fits better in token.rs, and the one-liner defining the
precedence of 'as' can go next to the other precedence stuff in
ast_util.rs
2013-04-28 09:51:14 -07:00
John Clements
71c0bd5c5d
simplify, based on invariant that items_allowed != foreign_items_allowed
2013-04-28 09:49:20 -07:00
Daniel Micay
f792baba42
only use #[no_core] in libcore
2013-04-27 21:34:24 -04:00
Patrick Walton
25129ee81c
librustc: Remove use mod
from the language
2013-04-22 12:32:59 -07:00
Brendan Zabarauskas
01eb5e8ad3
Rename Div operator trait to Quot and Modulo operator trait to Rem
2013-04-22 01:58:53 +10:00
Alex Crichton
3c7aea3a6a
syntax: de-mode and prepare for de-modeing rustc
2013-04-19 23:21:52 -04:00
John Clements
7e4cd09e2e
added MTWT functions
2013-04-16 10:06:06 -07:00
John Clements
48e7bda826
path -> Path
2013-04-10 09:15:04 -07:00
Niko Matsakis
007abe9352
Rather than storing a list of ty::method per trait, store one ty::method
...
per method and list of def-ids per trait.
2013-04-05 05:36:02 -04:00
Niko Matsakis
6965fe4bce
Add AbiSet and integrate it into the AST.
...
I believe this patch incorporates all expected syntax changes from extern
function reform (#3678 ). You can now write things like:
extern "<abi>" fn foo(s: S) -> T { ... }
extern "<abi>" mod { ... }
extern "<abi>" fn(S) -> T
The ABI for foreign functions is taken from this syntax (rather than from an
annotation). We support the full ABI specification I described on the mailing
list. The correct ABI is chosen based on the target architecture.
Calls by pointer to C functions are not yet supported, and the Rust type of
crust fns is still *u8.
2013-03-29 18:36:20 -07:00
Alex Crichton
be57d745d2
Removing unused imports
2013-03-28 23:56:46 -04:00
Patrick Walton
e7c60c141b
librustc: Remove pure
from libsyntax and librustc.
2013-03-22 12:57:27 -07:00
Andrew Paseltiner
e2abecd3ab
syntax: replace uses of old deriving attribute with new one
2013-03-22 06:30:59 -04:00
Patrick Walton
d18f785457
librustc: Replace all uses of fn()
with &fn()
. rs=defun
2013-03-11 09:35:58 -07:00
Seo Sanghyeon
9e85589ad3
Implement vector destructuring from tail
2013-03-11 19:01:51 +09:00
Patrick Walton
0ea031bcb8
librustc: Remove record patterns from the compiler
2013-03-07 22:37:03 -08:00
Erick Tryzelaar
743cfce703
core: convert vec::{last,last_opt} to return references
2013-03-05 19:39:18 -08:00
bors
eddefbc893
auto merge of #5212 : thestinger/rust/iter, r=graydon
...
A small step towards fixing #2827
2013-03-05 02:06:50 -08:00
Alex Crichton
dfb5c10dea
Remove unused imports throughout src/
2013-03-04 12:27:01 -05:00
Daniel Micay
af645e8487
replace option::iter with a BaseIter impl
2013-03-03 11:01:17 -05:00
Patrick Walton
256afb8a10
libsyntax: Remove fn@
, fn~
, and fn&
from libsyntax. rs=defun
2013-03-02 16:49:31 -08:00
Erick Tryzelaar
85fecd0ba7
Merge remote-tracking branch 'remotes/origin/incoming' into incoming
2013-03-01 07:01:48 -08:00
Alex Crichton
2df07ddc25
Fix implicit leaks of imports throughout libraries
...
Also touch up use of 'pub' and move some tests around so the tested functions
don't have to be 'pub'
2013-02-28 18:00:34 -05:00
Erick Tryzelaar
3953bdd812
Merge remote-tracking branch 'remotes/origin/incoming' into incoming
2013-02-28 07:25:31 -08:00
bors
d0a12347de
auto merge of #5141 : nikomatsakis/rust/region-syntax-expl-lifetimes, r=nikomatsakis
...
Major changes are:
- replace ~[ty_param] with Generics structure, which includes
both OptVec<TyParam> and OptVec<Lifetime>;
- the use of syntax::opt_vec to avoid allocation for empty lists;
cc #4846
r? @graydon
2013-02-27 17:36:41 -08:00
Niko Matsakis
c623d21e38
Introduce lifetime declarations into the lists of type parameters.
...
Major changes are:
- replace ~[ty_param] with Generics structure, which includes
both OptVec<TyParam> and OptVec<Lifetime>;
- the use of syntax::opt_vec to avoid allocation for empty lists;
cc #4846
2013-02-27 19:42:09 -05:00
Erick Tryzelaar
7d0ec86c4a
Merge remote-tracking branch 'remotes/origin/incoming' into incoming
2013-02-27 11:03:21 -08:00
Patrick Walton
07c3f5c0de
librustc: Forbid pub
or priv
before trait implementations
2013-02-27 09:40:16 -08:00
Erick Tryzelaar
bff22cf166
libsyntax: add some explicit copies
2013-02-25 23:37:45 -08:00
Erick Tryzelaar
f14409c528
libsyntax: progress on making syntax::visit vecs_implicitly_copyable-free
2013-02-25 07:49:34 -08:00
Erick Tryzelaar
9ac5262bdf
libsyntax: convert visit to pass ty_params by reference
2013-02-25 07:27:01 -08:00
Luqman Aden
cd82c4566b
librustc: Get rid of structural records save for front/test.rs.
2013-02-20 18:45:50 -08:00
Erick Tryzelaar
bc62bd3782
libsyntax: make enum variants take refs
2013-02-19 10:02:51 -08:00
Luqman Aden
0f09c106f0
libsyntax: Update view_item_use/import to reflect actual usage
2013-02-17 21:45:00 -05:00
Patrick Walton
bb833ca0f0
librustc: Stop parsing impl Type : Trait
and fix several declarations that slipped through. r=tjc
2013-02-15 16:59:56 -08:00
Nick Desaulniers
4445b38df2
Remove die!, raplace invocations with fail! Issue #4524 pt 3
2013-02-13 17:01:32 -08:00
Patrick Walton
31f6534952
libsyntax: Add explicit self to ast_util. rs=explicit-selfing
2013-02-04 09:07:00 -08:00
John Clements
53688addaa
test cases, cleanup
2013-01-31 23:05:12 -08:00
Nick Desaulniers
aee7929469
Replace most invocations of fail keyword with die! macro
2013-01-31 20:12:49 -08:00
Niko Matsakis
0682ad0eb9
Finalize moves-based-on-type implementation.
...
Changes:
- Refactor move mode computation
- Removes move mode arguments, unary move, capture clauses
(though they still parse for backwards compatibility)
- Simplify how moves are handled in trans
- Fix a number of illegal copies that cropped up
- Workaround for bug involving def-ids in params
(see details below)
Future work (I'll open bugs for these...):
- Improve error messages for moves that are due
to bindings
- Add support for moving owned content like a.b.c
to borrow check, test in trans (but I think it'll
"just work")
- Proper fix for def-ids in params
Def ids in params:
Move captures into a map instead of recomputing.
This is a workaround for a larger bug having to do with the def-ids associated
with ty_params, which are not always properly preserved when inlining. I am
not sure of my preferred fix for the larger bug yet. This current fix removes
the only code in trans that I know of which relies on ty_param def-ids, but
feels fragile.
2013-01-31 12:09:00 -08:00
Patrick Walton
49472ec4c9
librustc: Remove legacy exports from the language. r=brson
2013-01-30 18:11:43 -08:00
Patrick Walton
95b892c8a7
libsyntax: De-export a lot of libsyntax. rs=deëxporting
2013-01-29 13:55:30 -08:00
Patrick Walton
eb4d39e1fe
libstd: Remove "dual impls" from the language and enforce coherence rules. r=brson
...
"Dual impls" are impls that are both type implementations and trait
implementations. They can lead to ambiguity and so this patch removes them
from the language.
This also enforces coherence rules. Without this patch, records can implement
traits not defined in the current crate. This patch fixes this, and updates
all of rustc to adhere to the new enforcement. Most of this patch is fixing
rustc to obey the coherence rules, which involves converting a bunch of records
to structs.
2013-01-29 10:42:45 -08:00
Seo Sanghyeon
d10b5c725b
Add is_mutbl field to def_arg
2013-01-22 23:34:34 -08:00
Tim Chevalier
10260bee38
Change debuginfo to not use an option for the output type...
...
...now without a random libuv change.
2013-01-22 15:13:23 -08:00
Tim Chevalier
a36eacc4f9
Revert "Clean up previous commit to not require an Option"
...
I made a mistake and included some submodule weirdness.
About to re-push the patch without that.
This reverts commit 17ea548275
.
2013-01-22 15:12:35 -08:00
Tim Chevalier
17ea548275
Clean up previous commit to not require an Option
2013-01-22 14:28:05 -08:00
Erick Tryzelaar
7f2c399f3a
Convert many libsyntax records into structs
...
Specifically:
ast_map::ctx
ast_util::id_range
diagnostic::{handler_t,codemap_t}
auto_encode::field
ext::base::{macro_def,syntax_expander_tt,syntax_expander_tt_item}
ext::pipes::proto::next_state
2013-01-20 14:08:18 -08:00
Erick Tryzelaar
d5d77b9351
convert the remaining ast record types into structs
...
These are: region,arg,fn_decl,method,_mod,foreign_mod,
variant_arg,enum_def_,variant_,trait_ref.
2013-01-20 14:08:18 -08:00
Erick Tryzelaar
5ba7e55a4c
convert ast::{ty_field_,ty_method} into a struct
2013-01-20 14:08:18 -08:00
Erick Tryzelaar
8cdc3fda11
convert ast::ty into a struct
2013-01-20 14:08:18 -08:00
Erick Tryzelaar
4bcd19f6be
Convert ast::{pat,field_pat,local_,arm} into structs
2013-01-14 20:52:28 -08:00
Erick Tryzelaar
3ea3136e84
convert ast::blk_ into a struct
2013-01-14 19:35:08 -08:00
Erick Tryzelaar
df7d376d25
Convert ast::def_id into a struct.
2013-01-14 18:14:16 -08:00
Erick Tryzelaar
bea67bde21
Change ast::path into a struct.
2013-01-14 18:14:16 -08:00
Tim Chevalier
cfa62cd5ee
Make ast_util::path_name_i take a slice vector, eliminate a bad copy
2013-01-11 15:19:05 -08:00
Niko Matsakis
2b92962aa2
A collection of refactorings that I found it hard/tiresome to divide:
...
- Make `extern fn()` assignable to any closure type, rather than
a subtype.
- Remove unused int_ty_set and float_ty_set
- Refactor variable unification and make it more DRY
- Do fn sub/lub/glb on the level of fn_sig
- Rename infer::to_str::ToStr to infer::to_str::InferStr
- Capitalize names of various types
- Correct hashing of FnMeta
- Convert various records-of-fns into structs-of-fns. This is both
eliminating use of deprecated features and more forwards compatible
with fn reform.
r=pcwalton
2013-01-09 14:59:07 -08:00
Erick Tryzelaar
2891a49f0d
core: rename vec.filter to vec.filtered
2013-01-09 08:55:37 -08:00
Erick Tryzelaar
93c2ebf994
syntax: convert ast::spanned into a struct
2013-01-09 08:55:36 -08:00
Patrick Walton
2db3abddcd
librustc: Make unqualified identifier searches terminate at the nearest module scope. r=tjc
2013-01-08 22:02:35 -08:00
Patrick Walton
44ab00ee37
Revert "librustc: Make unqualified identifier searches terminate at the nearest module scope. r=tjc"
...
This reverts commit a8d37af247
.
2013-01-08 19:29:16 -08:00
Patrick Walton
a8d37af247
librustc: Make unqualified identifier searches terminate at the nearest module scope. r=tjc
2013-01-08 19:27:57 -08:00
Patrick Walton
57c599914a
librustc: Terminate name searches at the nearest module scope for paths that contain at least two components. r=graydon
2012-12-27 10:02:54 -08:00
Erick Tryzelaar
8650c6f683
Switch from serialization to std::serialize. (snapshot)
2012-12-17 20:00:36 -08:00
Jakub Wieczorek
1968cb315a
Add support for destructuring vectors in match expressions
2012-12-17 16:50:40 -08:00
Patrick Walton
cd120736cb
librustc: Allow moves out of self
. r=nmatsakis
2012-12-13 15:49:07 -08:00
Tim Chevalier
0046ed9462
Remove un-needed code for obsolete classes
...
and rename "class" to "struct" everywhere possible (except local
vars, I was too lazy for that) -- that is why this commit is so
big.
No review, just dead code removal and renaming.
Closes #3515
2012-12-10 18:45:01 -08:00
Patrick Walton
56ece46f7d
librustc: Remove all legacy pattern bindings from libsyntax and librustc. rs=refactoring
2012-12-04 14:19:19 -08:00
Graydon Hoare
00c856c0b1
Update license, add license boilerplate to most files. Remainder will follow.
2012-12-03 17:12:14 -08:00
Tim Chevalier
daf28a421a
Disallow dereferencing enum types when the variant is private
...
If an enum type's only variant is private, disallow dereferencing
values of its type.
Due to #4082 , this only applies to enums that are in the same crate.
r=pcwalton
Closes #818
2012-11-30 12:45:10 -08:00
Graydon Hoare
d783f4d7bb
libs: Remove transitionary material on iter_bytes, add workcache to build.
2012-11-30 10:33:16 -08:00
Patrick Walton
a0617eae68
librustc: Eliminate most expressions of the form a.b()
that are not method calls. rs=refactoring
2012-11-29 17:51:56 -08:00
Paul Stansifer
0f707f42c8
Distinguish stmt_mac
s that are followed by semicolons and those that aren't.
2012-11-29 12:09:10 -08:00
Paul Stansifer
ee076f63f9
Allow for macros to occur in statement position.
2012-11-29 12:09:10 -08:00
Patrick Walton
669fbddc44
librustc: Add explicit self to IterBytes. r=nmatsakis
2012-11-28 11:36:04 -08:00
Brian Anderson
81d20156cd
Change spans to use byte offsets instead of char offsets
2012-11-16 12:06:44 -08:00
Brian Anderson
f67bfe9738
Add types for character position and byte position in the codemap
2012-11-14 15:18:29 -08:00
Brian Anderson
4c68084963
Convert most codemap types from records to structs
2012-11-12 16:21:39 -08:00
Patrick Walton
0fc952372a
rustc: Support irrefutable patterns in function arguments. r=nmatsakis
2012-11-07 19:29:30 -08:00
Patrick Walton
599b4208fb
rustc: Translate tuple struct constructors
2012-10-25 11:49:26 -07:00
Patrick Walton
91ae5412d8
rustc: Merge module and type namespaces. r=brson
2012-10-15 15:35:36 -07:00
Niko Matsakis
98887cc7ee
remove ctor from ast (take 2) (no review: just dead code removal)
2012-10-12 19:46:37 -07:00
Niko Matsakis
cb55e246ba
Use the Nth impl when translating a static method call, instead
...
of the 0th. 0th is only correct when there are no bound tps
on the trait.
Fixes #3741 .
2012-10-12 17:46:43 -07:00
Tim Chevalier
6854265161
Remove comment that is now false
2012-10-11 16:00:30 -07:00
Tim Chevalier
22efa39382
Revert "Revert "Remove old auto_serialize2 code (needs snapshot)""
...
This reverts commit a33535e441
.
2012-10-08 17:43:45 -07:00
Tim Chevalier
a33535e441
Revert "Remove old auto_serialize2 code (needs snapshot)"
...
This reverts commit 0bd6da8a8c
.
2012-10-08 11:58:54 -07:00
Erick Tryzelaar
0bd6da8a8c
Remove old auto_serialize2 code (needs snapshot)
2012-10-07 17:20:19 -07:00
Erick Tryzelaar
eb626e7119
Remove the old serializers (needs snapshot)
2012-10-07 17:20:19 -07:00
Erick Tryzelaar
e1c517ca48
migrate libsyntax/rustc to auto_serialize2
2012-10-07 10:32:25 -07:00
Patrick Walton
9284179311
libstd: Switch off legacy modes in both core and std.
2012-10-02 12:20:06 -07:00
Niko Matsakis
21519bc7e0
demode vec
2012-09-28 13:27:45 -07:00
Tim Chevalier
996ec62cbf
Remove spurious by-ref argument to destructors
...
Destructors were internally declared with an extra (hidden) nil-typed
argument that was passed in by-ref mode. This was causing spurious
mode warnings. Deleted it. Also some misc. cleanup because I
couldn't help myself.
2012-09-26 19:42:02 -07:00
Niko Matsakis
67a8e7128a
Demode vec::push (and convert to method)
2012-09-26 18:02:07 -07:00
Erick Tryzelaar
b96af73159
turn ast::ident into a struct
...
This will help with the auto_serialize2 migration. We have to change
ident from a type alias to uint into a unique type. We need to use
a struct instead of a "enum ident = token::str_num" because structs
support constants, but newtypes do not.
2012-09-26 16:20:24 -07:00
Tim Chevalier
101bc62ad9
Revert "fix modes on dtors"
...
This reverts commit d38b97a170
.
(Accidentally checked this in, oops)
2012-09-26 10:43:11 -07:00
Tim Chevalier
d38b97a170
fix modes on dtors
2012-09-26 10:42:11 -07:00
Niko Matsakis
3d59ac3a19
De-mode vec::map, vec::eachi, vec::rev_each, vec::rev_eachi
2012-09-21 19:13:55 -07:00
Niko Matsakis
cfed923600
demode the each() method on vec and other iterables.
2012-09-19 17:03:01 -07:00
Graydon Hoare
1ffd90edbc
Remove redundant hashmap constructor functions.
2012-09-19 15:51:44 -07:00
Niko Matsakis
9cf271fe96
De-mode vec::each() and many of the str iteration routines
...
Note that the method foo.each() is not de-moded, nor the other
vec routines.
2012-09-19 10:52:59 -07:00
Niko Matsakis
8d4928f780
Revert "replace explicit calls to vec::each with vec::each_ref, partially demode str"
...
This reverts commit 1be24f0758
.
Not quite ready.
2012-09-18 21:41:13 -07:00
Niko Matsakis
1be24f0758
replace explicit calls to vec::each with vec::each_ref, partially demode str
2012-09-18 21:31:00 -07:00
Niko Matsakis
5d540de769
fixup mutability of vec::each, make iter_bytes pure
...
also, change DVec() to work with imm vectors rather than mut ones
2012-09-12 13:29:31 -07:00
Tim Chevalier
f8b3eaae82
Make all moves explicit in libsyntax
2012-09-10 18:28:47 -07:00
Brian Anderson
cb7a5395dd
Convert std::map to camel case
2012-09-10 17:08:36 -07:00
Brian Anderson
3bd1f32cd9
Convert all kind bounds to camel case. Remove send, owned keywords.
2012-09-07 18:10:11 -07:00
Graydon Hoare
5d823d46ad
Migrate std::map to use core: #️⃣ :Hash trait. Disable many hokey hashes.
2012-09-07 17:24:16 -07:00
Tim Chevalier
53ce42dc4f
Implement &-patterns
...
Closes #2855
2012-09-07 17:09:07 -07:00
Patrick Walton
c21b3ff818
rustc: Make "ne" use traits
2012-09-07 12:44:53 -07:00
Patrick Walton
8ff18acc82
libsyntax: "import" -> "use"
2012-09-04 11:43:23 -07:00
Tim Chevalier
4128cc4cb4
Make utility funs in core::int, core::uint, etc. not by-reference
...
Closes #3302
2012-08-31 16:21:47 -07:00
Patrick Walton
6e7d5e1cbd
rustc: Implement "use mod"
2012-08-31 11:20:50 -07:00
Patrick Walton
a1c11cab2d
rustc: Make <=
, >=
, and >
use traits as well
2012-08-29 19:23:15 -07:00
Patrick Walton
96534365c2
rustc: Make <
and =
into traits
2012-08-29 18:25:22 -07:00
Brian Anderson
c0c8d3aa8f
core: Demode int/uint mods
2012-08-29 16:23:36 -07:00
Brian Anderson
8337fa1a54
Camel case the option type
2012-08-26 15:56:16 -07:00
Niko Matsakis
a8f1bee457
fix some unused pattern binding warnings
2012-08-24 15:37:21 -07:00
Michael Sullivan
0f996f70a6
Remove purity from fn_decl and move it out to containing AST elements.
2012-08-23 19:40:01 -07:00
Paul Stansifer
1153b5dcc8
intern identifiers
2012-08-22 14:59:25 -07:00
Niko Matsakis
652b312122
more sound treatment of fn& regions; change all & to be distinct
2012-08-21 10:28:34 -07:00
Patrick Walton
3038968f28
rustc: Perform some AST surgery to separate out class fields from methods
2012-08-15 16:20:35 -07:00
Patrick Walton
bdb206f285
rustc: Parse labeled loop, break, and again
2012-08-15 16:20:34 -07:00
Brian Anderson
6a0720b439
Convert impls to new syntax
2012-08-08 18:19:24 -07:00
Patrick Walton
4f98e80db1
rustc: Do some plumbing work in preparation for common fields in enums
2012-08-08 17:15:37 -07:00
Patrick Walton
438765da59
rustc: Box struct_defs
2012-08-07 17:46:51 -07:00
Michael Sullivan
7f7f47620e
Implement static typeclass methods. Closes #3132 .
2012-08-07 17:18:14 -07:00
Patrick Walton
a3f9e18b7a
libsyntax: Allow users of the visitor to visit struct defs
2012-08-07 15:55:33 -07:00
Brian Anderson
42540841f3
Add missing comma
2012-08-07 14:34:00 -07:00
Patrick Walton
727c7c7499
rustc: Add stub support for struct variants to the AST
2012-08-07 14:25:53 -07:00
Brian Anderson
2772b2e5c7
syntax: Make match arm parsing more restrictive again
...
Require comma separators for all expression types except the plain block
2012-08-07 12:23:43 -07:00
Patrick Walton
253dfc3387
rustc: Implement pattern matching for structs
2012-08-06 17:36:24 -07:00
Brian Anderson
ecaf9e39c9
Convert alt to match. Stop parsing alt
2012-08-06 15:36:30 -07:00
Brian Anderson
025d86624d
Switch alts to use arrows
2012-08-05 22:08:09 -07:00
Niko Matsakis
31c5cec55b
Purge placement new; Make borrowck know about unary move.
...
cc #3071
2012-08-02 22:36:36 -07:00
Lindsey Kuper
65e0e30e59
Make typeck::collect aware of provided methods in traits.
2012-08-02 17:15:36 -07:00
Michael Sullivan
2fe299d1a5
Extend ast_map to know about method declarations in traits.
2012-08-02 16:02:30 -07:00
Niko Matsakis
97452c0ca1
Remove modes from map API and replace with regions.
...
API is (for now) mostly by value, there are options to use it by
reference if you like. Hash and equality functions must be pure
and by reference (forward looking to the day when something
like send_map becomes the standard map).
2012-08-02 15:53:28 -07:00
Brian Anderson
b355936b4d
Convert ret to return
2012-08-01 19:16:06 -07:00
Brian Anderson
507fba57d1
syntax: Allow any block-like expr to be used as alt arm w/o comma separator
2012-08-01 17:57:03 -07:00
Patrick Walton
b414db041b
rustc: Parse by-reference pattern bindings with the "ref" keyword
2012-07-31 19:26:25 -07:00
Niko Matsakis
c206d024eb
accept naked exprs with commas in pattern arms
...
pretty printing will use them, but indentation is slightly off
if the expr is long
2012-07-31 15:41:26 -07:00
Paul Stansifer
fd52df1901
Fix pretty-printer breakage: 1000f
-> 1000
.
2012-07-31 11:03:22 -07:00
Graydon Hoare
290f079474
Frontend bits for #2317 , general const-expr classification.
2012-07-30 19:06:06 -07:00
Patrick Walton
93c2f5e0e4
rustc: Use coherence for operator overloading.
...
The only use of the old-style impls is now placement new.
2012-07-27 19:35:24 -07:00
Tim Chevalier
a0d05844ed
Correctly forbid upvars in nested impls, traits and classes
...
Previously, resolve was allowing impls, traits or classes that were
nested within a fn to refer to upvars, as well as referring to type
parameters bound by the fn. Fixing this required adding a new kind of
def: def_typaram_binder, which can refer to any of an impl, trait or
class that has bound ty params. resolve uses this to enforce that
methods can refer to their parent item's type parameters, but not to
outer items' type parameters; other stages ignore it. I also made
sure that impl, trait and class methods get checked inside a
MethodRibKind thing so as to forbid upvars, and changed the definition
of MethodRibKind so that its second argument is an optional node_id
(so that required trait method signatures can be checked with a
MethodRibKind as well).
2012-07-27 17:31:42 -07:00
Patrick Walton
afd9a75c9e
rustc: Fix cross-crate max/min-class-style constructors
2012-07-26 15:30:15 -07:00
Patrick Walton
978ca03cb2
Revert "accept naked exprs with commas in pattern arms" due to pretty-printing failures
...
This reverts commit f712b2d76b
.
In alt arms, the parser needs to do a little lookahead to determine
whether it's looking at a record literal or a block.
Also there are some indentation issues in the expected source.
2012-07-19 07:53:55 -07:00
Niko Matsakis
f712b2d76b
accept naked exprs with commas in pattern arms
...
pretty printing will use them, but indentation is slightly off
if the expr is long
2012-07-18 20:16:41 -07:00
Patrick Walton
db020ab63c
rustc: Implement and enforce instance coherence
2012-07-17 15:46:43 -07:00
Tim Chevalier
b5729bd600
Support attributes on class ctors and dtors
...
Closes #2660
2012-07-17 12:40:59 -07:00
Niko Matsakis
41a21f053c
remove typestate from code, tests, and docs
2012-07-14 17:37:20 -07:00
Michael Sullivan
92743dc2a6
Move the world over to using the new style string literals and types. Closes #2907 .
2012-07-14 01:03:43 -07:00
Michael Sullivan
985b52be6d
Support prefix notation for vstore strings. Closes #2906 .
2012-07-13 17:03:49 -07:00
Lindsey Kuper
fc9c4c3245
Front-end support for default impls in traits.
2012-07-13 11:16:07 -07:00
Tim Chevalier
78ec6fe30c
Obliterate the callee_id hack
...
Exprs that could be applications of overloaded operators
(expr_unary, expr_binary, expr_index) relied on the previous node ID
being "reserved" to carry extra typechecking info. This was
incredibly error-prone. Fixed it; now all exprs have two node IDs
(which will be wasted in some cases; future work could make this
an option instead if the extra int field ends up being a performance
problem).
Closes #2804
2012-07-12 19:02:07 -07:00
Niko Matsakis
b9aa9def85
infer when types are region parameterized rather than requiring /&
...
- removes various fields from various variants in the AST
- also update tests not to use this notation
2012-07-11 14:41:41 -07:00
Gareth Daniel Smith
be0141666d
convert doc-attributes to doc-comments using ./src/etc/sugarise-doc-comments.py (and manually tweaking) - for issue #2498
2012-07-04 19:18:13 -07:00
Brian Anderson
ae6ea068a1
Revert "Remove rule requiring non-nil block-style statements to be semi-terminated"
...
This reverts commit 0f5eaef5fb
.
2012-07-03 17:30:25 -07:00
Brian Anderson
0f5eaef5fb
Remove rule requiring non-nil block-style statements to be semi-terminated
...
This is a subtle rule that no longer seems to be required.
2012-07-03 17:03:52 -07:00
Patrick Walton
f093d374ed
rustc: Implement a new resolve pass behind a compile flag
2012-07-02 18:30:12 -07:00
Brian Anderson
d1fc2b5995
Convert to new closure syntax
2012-07-01 19:19:32 -07:00
Brian Anderson
a3382b6f26
Eliminate usages of old sugared call syntax
2012-06-30 16:01:49 -07:00
Michael Sullivan
98e161f00e
Switch the compiler over to using ~[] notation instead of []/~. Closes #2759 .
2012-06-29 17:41:45 -07:00
Graydon Hoare
697f1e38d6
Change 'native' and 'crust' to 'extern'.
...
This comes with a terminology change. All linkage-symbols are 'extern'
now, including rust syms in other crates. Some extern ABIs are
merely "foreign". The term "native" is retired, not clear/useful.
What was "crust" is now "extern" applied to a _definition_. This
is a bit of an overloading, but should be unambiguous: it means
that the definition should be made available to some non-rust ABI.
2012-06-26 16:18:37 -07:00
Eric Holk
b9d3ad0736
Getting rid of lots more vector +=. (issue #2719 )
2012-06-26 00:39:18 -07:00
Michael Sullivan
329eca6044
Make vectors uglier ([]/~). Sorry. Should be temporary. Closes #2725 .
2012-06-25 20:00:46 -07:00
Tim Chevalier
487cbf8e90
Remove resources
...
Also fixed shapes for classes with dtors, as well as handling
offsets for classes with dtors correctly in take glue.
Closes #2485
2012-06-24 15:09:57 -07:00
Graydon Hoare
312faf31df
Tag all remaining FIXMEs with bugs. Install rule in tidy script to enforce this.
2012-06-21 16:44:10 -07:00
Eric Holk
0e5cfd9f33
Move vector addition out of trans and into libcore.
2012-06-21 16:11:11 -07:00
Tim Chevalier
e3c6e5e5b6
Re-fix whitespace
2012-06-16 15:22:22 -07:00
Tim Chevalier
69447e9002
Revert "Reference and whitespace fixes."
...
This reverts commit 52f1904ddd
.
2012-06-16 15:17:10 -07:00
Eric Holk
52f1904ddd
Reference and whitespace fixes.
2012-06-15 22:14:02 -04:00
Eric Holk
5c9f414a85
id_visitor should handle expr_index and expr_assign_op as well.
2012-06-15 22:00:04 -04:00
Tim Chevalier
093faaabe1
Handle index expressions' callee IDs correctly
...
Some code that handles unary and binary exprs' callee IDs was
forgetting to handle the index expr case (since calls to
user-defined index operators also have callee IDs). This was
manifesting as an ICE in trans because when monomorphizing a
function that had one of these operators in it (an index into a
dvec, in the test case), the callee ID would be unbound to a type.
Fixed it. Closes #2631 .
2012-06-15 15:21:17 -07:00
Tim Chevalier
6b16325f43
Comments only: annotate FIXMEs
2012-06-14 18:46:33 -07:00
Brian Anderson
ce750a7dbc
Box AST idents
2012-06-13 11:30:45 -07:00
Tim Chevalier
aa9d2d88d3
Handle class destructors correctly in metadata
...
This allows destructors to be inlined, which is necessary since
classes can have both ty params and destructors.
2012-06-12 17:37:04 -07:00
Patrick Walton
847c5e4e98
syntax: Remove a bunch of implicit copies
2012-06-07 20:12:05 -07:00