Tim Chevalier
a30ea013f5
Handle supertrait calls in default methods
...
Add a new method_super origin for supertrait methods. Also make
coherence create a table that maps pairs of trait IDs and self types
to impl IDs, so that it's possible to check a supertrait method
knowing only its index in its trait's methods (without knowing all
supertraits for a given trait).
r=nmatsakis and graydon -- with hope, we'll revamp all of this code as
per #4678 , but for now this fixes the bug.
Closes #3979
2013-01-29 20:33:22 -08:00
Patrick Walton
226cd68f13
librustc: De-implicit-self the visitor. r=graydon
2013-01-29 10:43:12 -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
Tim Chevalier
2c78169508
Merge pull request #4644 from martica/camel-case-option
...
Update more uses of Option, Some and None to camel case
2013-01-25 19:21:16 -08:00
Tim Chevalier
41adf9d8ef
rustc: Make build_wrap_ret compile on Windows and unrevert ABI patch
...
This reverts commit 625405562c278cb2e45bec6805f13d2c1de8049e.
2013-01-25 18:57:01 -08:00
Tyler Bindon
3a5d2cdbf3
Fix Option camel case in comments
2013-01-25 19:42:23 -07:00
Daniel Micay
d95c9cbe38
replace ConstVector trait with the Container trait
2013-01-24 23:02:44 -05:00
ILyoan
ce85837557
remove unnecessary code
2013-01-24 19:03:49 +09:00
Tim Chevalier
625405562c
Revert "Merge pull request #4590 from crabtw/abi"
...
This reverts commit e4e5d986fa424c00389bd2520ebce7276f58a6e0, reversing
changes made to ab8d77474c474a672873b3edc467323fcf992279.
2013-01-23 20:38:20 -08:00
Jyun-Yan You
b72d4d70a8
add ABIInfo trait and separate x86-64 ABI implementation from foreign trans
...
ABIInfo provides a method to translate the type of foreign function.
The foreign trans uses the method to get ABI-specific type and
uses the result to generate LLVM instructions for wrapper and shim functions.
2013-01-24 09:31:28 +08:00
Graydon Hoare
cb1f957f71
rustc: fix const enums to be packed, r=burningtree.
2013-01-23 16:25:57 -08:00
Patrick Walton
54b2cad8b3
libsyntax: Remove fn() unsafe { ... }
. r=graydon
2013-01-23 14:41:08 -08:00
Tim Chevalier
995ccc0d82
Merge pull request #4596 from Trinick/tomutrename
...
core: Rename to_mut and from_mut to cast_to_mut and cast_from_mut
2013-01-23 10:56:08 -08:00
Trinick
9dc8e96c5f
core: Rename to_mut and from_mut to cast_to_mut and cast_from_mut
2013-01-23 10:09:45 +00:00
Seo Sanghyeon
d10b5c725b
Add is_mutbl field to def_arg
2013-01-22 23:34:34 -08:00
Seo Sanghyeon
9a5d617092
Add is_mutbl field to arg
2013-01-22 23:34:33 -08:00
Graydon Hoare
bcaeb20800
long line police
2013-01-22 17:53:27 -08:00
Josh Matthews
72259e0772
Translate const references to extern functions as *i8 instead of the typical closure pair. Fixes #4522 .
2013-01-22 16:22:55 -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 17ea548275364fac7cb5adbdc442010d1ba0d38d.
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
Josh Matthews
5b4e569bf3
Fix building of all rustc components with -g.
2013-01-22 14:27:21 -08:00
Tim Chevalier
a8d076d2de
syntax/rustc: Make some metadata-related functions take slices, kill bad copies
...
Too small to review.
2013-01-22 11:58:08 -08:00
Erick Tryzelaar
28da4ecdaa
convert librustc record types to structs
...
specifically:
freevars::freevar_entry
ty::{field_ty,AutoAdjustment,AutoRef}
mod::{method_param,method_map_entry}
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
8a3a1fc148
convert ast::expr into a struct
2013-01-20 14:08:18 -08:00
Tim Chevalier
97b20f8e02
rustc: Make type_names and named_types tables in trans use @str instead of ~str
...
Cuts down on bad copies (though there are still a few that can go
away once there are impls of push / append / + for @str)
2013-01-18 14:30:29 -08:00
Patrick Walton
f405e41d7a
librustc: Implement write guards for borrowing @mut
to &
or &mut
. r=nmatsakis
2013-01-17 11:50:20 -08:00
Graydon Hoare
84825ee310
librustc: Make the default sigil for block lambdas &
instead of @
.
2013-01-15 17:57:45 -08:00
Erick Tryzelaar
293cd3480c
convert ast::{field_,capture_item_,mt} and middle::ty::mt into structs
2013-01-14 21:36:27 -08:00
Erick Tryzelaar
4bcd19f6be
Convert ast::{pat,field_pat,local_,arm} into structs
2013-01-14 20:52:28 -08:00
Erick Tryzelaar
530a113bfa
convert ast::item into a struct
2013-01-14 18:15:53 -08:00
Erick Tryzelaar
5c0d674a45
convert ast::foreign_item to a struct
2013-01-14 18:14:16 -08:00
Erick Tryzelaar
df7d376d25
Convert ast::def_id into a struct.
2013-01-14 18:14:16 -08:00
Tim Chevalier
a4dc65baa1
syntax/rustc: Eliminate some bad copies
...
r=pcwalton
2013-01-14 15:49:53 -08:00
ILyoan
b7cefd0c96
allowing the entry point name to be something other than main
...
add build tests
2013-01-14 13:58:13 -08:00
Brian Anderson
e6b57f858f
Add FIXME's for #4404 . Android JNI hacks
2013-01-13 16:43:39 -08:00
kyeongwoon
987f824f23
Support ARM and Android
...
Conflicts:
src/libcore/os.rs
src/librustc/back/link.rs
src/librustc/driver/driver.rs
src/librustc/metadata/loader.rs
src/librustc/middle/trans/base.rs
2013-01-13 16:43:39 -08:00
Tim Chevalier
fbc33e0247
Merge pull request #4459 from jld/constenum
...
Allow consts to be initialized by non-nullary enum constructors
2013-01-13 14:42:57 -08:00
Jed Davis
1b01629f18
Make vectors (& old ports) of zero-size types allocate one byte each.
2013-01-13 14:37:59 -08:00
Jed Davis
1b4f3fad1e
Correct (I hope) amd64 ABI handling for empty structs
2013-01-13 14:37:59 -08:00
Jed Davis
cd01ecfe13
One more place where for loops and their bodies need to be unconfused.
2013-01-13 14:37:59 -08:00
Jed Davis
33414d81d1
Fix long lines in for loop trans change
2013-01-13 14:37:59 -08:00
Niko Matsakis
c75d45d7e3
For for
loop bodies, translate the type of the closure
...
based on the expr_loop_body expression and not the inner closure
2013-01-13 14:37:59 -08:00
Jed Davis
745a020db5
Make () actually size 0
2013-01-13 14:37:59 -08:00
Jed Davis
349fa1e550
Omit needless zeroes for C-like variants of non-C-like enums
2013-01-11 23:42:51 -08:00
Jed Davis
abae61257c
Allow consts to be non-nullary enum constructors
2013-01-11 23:42:51 -08:00
Jed Davis
f76e28aa1c
Allow consts' LLVM types to depend on their initializers.
...
Loosening the connection between the LLVM type and the Rust type
is necessary to use non-nullary enum constructors as const initializers,
because the const needs to be initialized with data of the actual type of
the variant in question, which is (generally) not the same as the u8
array in the `type_of` type.
Thus, referring to a const now requires casting the LLVM global to the
expected pointer type instead of using it as-is.
2013-01-11 23:42:51 -08:00
Jed Davis
452642422d
Factor out base::get_discrim_val from const translation
2013-01-11 23:42:51 -08:00
Patrick Walton
a0c2a9b743
librustc: Implement a #[no_mangle] attribute to suppress name mangling. r=brson
...
This is very helpful for SDL, as SDL wants you to define a function named
`SDL_main`.
2013-01-10 21:44:59 -08:00