904 Commits

Author SHA1 Message Date
Brian Anderson
79e572ebbb rustc: Fix handling of - and _ in lint pass 2012-04-12 18:11:23 -07:00
Graydon Hoare
8a7fd4a04f Support general warnings and errors in lint pass via flags and attrs. Close #1543. 2012-04-12 17:31:49 -07:00
Brian Anderson
891dc84be2 rustc: Long lines 2012-04-11 21:32:05 -07:00
Brian Anderson
e7409859ce rustc: Fix typo in error message 2012-04-11 21:25:32 -07:00
Niko Matsakis
e712ad8f73 rewrite lookup_method(), lookup_method_inner(), and lookup_method_inner_() 2012-04-11 17:21:53 -07:00
Niko Matsakis
3e6943d820 refactor fixup_self 2012-04-11 17:21:53 -07:00
Niko Matsakis
c1c60c023e first attempt at an assignability check 2012-04-11 17:21:53 -07:00
Niko Matsakis
8967c4b409 simplify demand module 2012-04-11 17:21:53 -07:00
Tim Chevalier
5c12cd72f4 Allow classes to implement ifaces
Introduce syntax like:

iface animal { ... }
class cat implements animal { ... }

to allow classes to implement ifaces. Casting classes to ifaces
is *not* yet supported. ifaces that a class implements are not
yet included in metadata.

The syntax is subject to change, and may go away completely if we
decide to use duck typing to relate classes with ifaces (see
http://smallcultfollowing.com/babysteps/blog/2012/04/10/declared-vs-duckish-typing/ )
2012-04-11 16:20:01 -07:00
Graydon Hoare
f34eae8802 Translate slice-strings and make fixed-strings carry their null. 2012-04-11 12:07:19 -07:00
Graydon Hoare
c720ffdbc4 Improve region code surrounding slice types. 2012-04-11 12:07:19 -07:00
Graydon Hoare
9d7e4aefee Add enough tyencode stuff to stop faulting when we hit error messages. 2012-04-11 11:08:40 -07:00
Graydon Hoare
7a3b290245 Add vstore/evec/estr to compiler. 2012-04-11 11:08:40 -07:00
Tim Chevalier
fd26743bed Generic classes and generic class methods work cross-crate
Classes can have ty params now. So can methods inside classes.
That was probably true before, but now it should still work if you
call methods in a class that's defined in a different crate. Yay!
2012-04-10 11:01:36 -07:00
Niko Matsakis
24e921f7d4 make anything used in a resource body always reachable
(they appear to be uncond. inlined)

Fixes #2170.
2012-04-09 16:36:59 -07:00
Brian Anderson
a1d59704ed rustc: Add more creader logging 2012-04-09 15:06:38 -07:00
Haitao Li
46e4aaa0be rustc: External fns declared as fns not global variables
Issue #2167
2012-04-09 14:38:53 +08:00
Haitao Li
460b92a37f rustc: Declare rust_start as a function
Issue #2167
2012-04-09 12:02:16 +08:00
Haitao Li
7d227f21f7 Check metadata hash when loading transitive dependent crates
Fix issue #2138
2012-04-08 21:19:15 +08:00
Haitao Li
18597b22b5 Remove a FIXME note about closed issue #1001 2012-04-08 18:24:32 +08:00
Brian Anderson
a6e748a1d9 rustc: Hash the CMH into symbol names 2012-04-07 17:50:49 -07:00
Brian Anderson
d9070b4751 rustc: Append the crate version to symbols 2012-04-07 17:39:55 -07:00
Brian Anderson
19b7a7d803 Revert "Mangle exported names using node IDs rather than types"
This reverts commit c83d61de936f2910001fe72de01ac58479d90524.
2012-04-07 17:29:06 -07:00
Niko Matsakis
1e42c9a367 Do not consider ty_bot to be a "resolved type".
Fixes #2149. Fixes #2150. Fixes #2151.
2012-04-07 17:12:48 -07:00
Haitao Li
7aaa120bcc Check version when resolving transitive dependent crates
Issue #2138
2012-04-08 02:05:09 +08:00
Haitao Li
5aa5220f8a Encode crate dependencies' hash and version data 2012-04-08 02:00:58 +08:00
Niko Matsakis
5300662b4e Refactor inference so that subtyping/lub/glb share more code 2012-04-07 07:25:41 -07:00
Haitao Li
2f42b14b4f Use version and hash in crate_map name
Related issue #2137
2012-04-07 22:11:23 +08:00
Haitao Li
13686b6778 Use real crate name in crate_map name
`use` statement may introduce an crate name alias. This patch always
uses the link attrbute "name" as the crate's name when building the
crate map.

Closes #1706
2012-04-07 22:08:54 +08:00
Tim Chevalier
9d274ec5f2 Re-rename option functions
get_with_default (nee from_maybe) => get_default
with_option (nee maybe) => map_default
with_option_do (nee may) => iter

As per discussion of 21be1379d561b6679a8a2ea47dce88f948c5acca
2012-04-06 12:20:13 -07:00
Marijn Haverbeke
fc202ca034 Remove support for old-style for
Closes #1619
2012-04-06 20:38:23 +02:00
Marijn Haverbeke
c902eafa14 Convert old-style for loops to new-style
Most could use the each method, but because of the hack used to
disambiguate old- and new-style loops, some had to use vec::each.

(This hack will go away soon.)

Issue #1619
2012-04-06 20:38:23 +02:00
Brian Anderson
5dd1677b0a rustc: Warn when linking to multiple versions of the same crate
This is not something most people want to be doing and may
be a source of error.
2012-04-06 10:58:03 -07:00
Brian Anderson
de3528846f rustc: Fail when there are multiple matches for 'use' 2012-04-06 10:58:03 -07:00
Niko Matsakis
0255bf30ea continue refactoring to remove commutativity assumption
and introduce more indirection where it may be needed
2012-04-06 10:35:44 -07:00
Niko Matsakis
586b072eef Make tps invariant for now. Fixes #1973. 2012-04-06 08:31:12 -07:00
Niko Matsakis
9de288c35f further refactoring away from commutativity 2012-04-06 08:10:07 -07:00
Niko Matsakis
4856eab844 refactor to make combine less inherently commutative 2012-04-06 08:03:59 -07:00
Niko Matsakis
2c56ba7e43 improve error messages 2012-04-06 06:59:00 -07:00
Niko Matsakis
051f24da25 add static region and also fix regions to be contravariant 2012-04-05 21:16:28 -07:00
Niko Matsakis
f1afb0b3e2 utilities for indented logs 2012-04-05 21:16:28 -07:00
Brian Anderson
2577bd9df3 rustc: Don't assume that all crates with the same name are the same 2012-04-05 20:53:16 -07:00
Brian Anderson
d13c0c77a2 Explicitly use version 0.2 of crates 2012-04-05 20:29:42 -07:00
Tim Chevalier
c83d61de93 Mangle exported names using node IDs rather than types
Use node IDs rather than types to ensure exported names are unique.
duplicate symbol. Closes #2074.
2012-04-05 18:22:53 -07:00
Niko Matsakis
b91c9f803d simplify typing rule for vector addition: use mutability of LHS 2012-04-05 15:18:26 -07:00
Tim Chevalier
5a3875e998 Print "expected a record with field..." fields in the right order
Because terr_record_mismatch was getting called by infer::flds,
which takes types a and b where it's trying to prove a <: b, the
expected and actual fields were switched. Fixed it. Closes #2094
2012-04-05 15:16:12 -07:00
Niko Matsakis
c0d61795de wip: refactor repr of regions
- we now distinguish bound/free parameters (see region-param
  test case for why this is necessary)
- we also track bounds on region variables
- also, restructure fold_ty() to have multiple variants without
  duplication instead of one overloaded folder.  This also allows
  for using block functions.
2012-04-04 19:41:23 -07:00
Niko Matsakis
1956d11f84 refactor to condense common usage pattern 2012-04-04 19:17:06 -07:00
Graydon Hoare
ab4105d9e8 Make nonconstructable enums noncopyable, close #1907. 2012-04-04 19:07:52 -07:00
Brian Anderson
9aa7241f05 rustc: Don't allow recursive constants 2012-04-04 16:12:57 -07:00