1630 Commits

Author SHA1 Message Date
Niko Matsakis
051f24da25 add static region and also fix regions to be contravariant 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
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
Niko Matsakis
79cbdba037 new tests for things we'll have to fix eventually 2012-04-05 15:18:26 -07:00
Tim Chevalier
98b07ddc82 Rename task::task_builder to task::builder
Closes #2120.
2012-04-05 14:09:32 -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
Graydon Hoare
2577e3eafc Tidy up predicate names in libcore. Should close #1431. 2012-04-04 18:08:55 -07:00
Brian Anderson
38ed2ea096 rustc: Allow consts to refer to other consts 2012-04-04 15:03:39 -07:00
Brian Anderson
e325146eb4 Merge remote-tracking branch 'brson/mainthread'
Conflicts:
	src/rt/rust_kernel.cpp
	src/rt/rust_scheduler.cpp
	src/rt/rust_scheduler.h
2012-04-03 20:30:01 -07:00
Brian Anderson
c0e12854ed rt: Fix bugs in the osmain scheduler 2012-04-03 18:01:13 -07:00
Tim Chevalier
5571a9a193 also xfail class-typarams (doesn't work on Windows) 2012-04-03 17:47:07 -07:00
Tim Chevalier
bc5e10dd1b xfail - metadata encoding doesn't work, which breaks Windows 2012-04-03 17:16:14 -07:00
Tim Chevalier
1f892dcb01 Monomorphize class constructors, support generic classes and class methods
Allow class methods to have type parameters (this is a change from the
original classes proposal).

Add test cases for classes with type parameters, and classes with methods
that have their own type parameters.
2012-04-03 16:23:50 -07:00
Brian Anderson
bef72447e7 core: Add a scheduler mode, osmain, to spawn onto the main scheduler 2012-04-03 14:28:30 -07:00
Brian Anderson
5d54defce4 core: Add extension methods for vec 2012-03-29 20:56:50 -07:00
Niko Matsakis
76d0a13ae5 resolve type variables with no constraints to bot 2012-03-29 19:41:09 -07:00
Tim Chevalier
c7082ce8e8 Require "self" as base expression for intra-class method or field references
All field or method references within a class must begin with "self." now.
A bare reference to a field or method in the same class will no longer
typecheck.
2012-03-29 12:22:01 -07:00
Tim Chevalier
f7bbe537c1 Allow explicit self-calls within classes
Allow writing self.f() within a class that has a method f. In a future
commit, this syntax will be required. For now, you can write either
self.f() or f().

I added a "privacy" field to all methods (whether class methods or not),
which allowed me to refactor the AST somewhat (getting rid of the
class_item type; now there's just class_member).
2012-03-28 20:30:07 -07:00
Niko Matsakis
23f92ea370 Detect and report types which could never be instantiated.
Fixes #2063.
2012-03-28 17:02:54 -07:00
Patrick Walton
18a97d71f9 test: Un-XFAIL regions-mock-trans.rs and regions-mock-trans-impls.rs 2012-03-28 14:31:23 -07:00
Patrick Walton
3c398d28a4 rustc: Universally quantify regions when calling functions. Un-XFAIL regions-addr-of-ret.rs. 2012-03-28 14:24:18 -07:00
Tim Chevalier
ca6636d6b6 Allow references to "self" within classes
Allow writing self.f within a class that has a field f. Currently,
the compiler accepts either self.f or f. In a future commit I'll
require writing self.f and not f.

Not sure whether self.f() works if f is a method (making sure that
works next).
2012-03-28 14:19:00 -07:00
Tim Chevalier
edb747ceed Enforce mutability declarations in classes; correct shapes for classes
1. Enforce mutability declarations on class fields. Don't allow any
mutation of class fields not declared as mutable (except inside the
constructor).

2. Handle classes correctly in shape (treat classes like records).
2012-03-27 22:11:58 -07:00
Marijn Haverbeke
064f82d68d Support returning from loop blocks
The code is somewhat invasive, but it seems hard to do this in a
clean way, since the design itself involves a bunch of 'action
at a distance'.

Issue #1819
2012-03-27 12:33:13 +02:00
Graydon Hoare
6e6798c4e1 Bulk-edit mutable -> mut. 2012-03-26 18:35:18 -07:00
Brian Anderson
45a709766c rustc: Begin eliminating ext's dependency on the session 2012-03-26 17:16:26 -07:00
Tim Chevalier
c282810ab0 Enforce privacy declarations for class fields and methods 2012-03-26 10:00:33 -07:00
Marijn Haverbeke
87e097a853 Disallow ret inside of block functions
Also adds proper checking for cont/break being inside a loop.

Closes #1854
Issue #1619
2012-03-26 12:45:47 +02:00
Niko Matsakis
ac4294a176 add test that was failing from tedh 2012-03-24 21:59:16 -07:00
Niko Matsakis
bf9d714d46 Avoid unifying vars when possible; handle bot (more) correctly 2012-03-24 21:38:43 -07:00
Patrick Walton
f507b54f19 test: Rename run-pass/simple-regions.rs to run-pass/regions-simple.rs
This groups all the region tests under regions-*.
2012-03-24 19:21:51 -07:00
Tim Chevalier
aae14e352a Allow methods to call other methods in the same class 2012-03-23 23:10:45 -07:00
Tim Chevalier
bebdfe8ce8 Add another test for cross-crate method calls 2012-03-23 23:10:45 -07:00
Niko Matsakis
f5edb5ee18 xfail-test regions tests 2012-03-23 22:06:39 -07:00
Tim Chevalier
8bbd78075f Handle self correctly when translating classes
This change uses the same code for handling the "self" reference for
classes as is already used for impls/ifaces. This allows removing the
extra maybe_self_id argument (which was just for classes) to trans_closure
that I added before. I also rewrote the translation for class ctors so
that it doesn't generate new AST nodes (instead translating directly).

Also changed visit so that it visits class ctors correctly with visit_fn,
and changed typestate to not do return-checking when visiting a class ctor.
2012-03-23 20:37:50 -07:00
Patrick Walton
cab4f1685b test: Add a test case that ensures ret &EXPR works. 2012-03-23 16:18:28 -07:00
Patrick Walton
7592dae949 test: Fix unresolved name in regions-mock-trans-impls.rs 2012-03-23 15:44:37 -07:00
Patrick Walton
c56ec7b02a test: Add a version of the "mock-trans" regions test case that uses impls 2012-03-23 15:28:47 -07:00
Patrick Walton
b9c4dbeb33 test: Fix leak in regions-mock-trans 2012-03-23 15:17:34 -07:00
Patrick Walton
df77eb433b test: Fix whitespace at EOL 2012-03-23 15:05:39 -07:00
Patrick Walton
aa0f25ae31 test: Add a trans.rs-workalike test case for regions 2012-03-23 14:42:39 -07:00
Patrick Walton
7931a61ebb rustc: Redo region inference to be a bit less broken 2012-03-23 12:22:58 -07:00
Marijn Haverbeke
84019aa0dc Keep an explicit map of things that have to be spilled
This prevents us from spilling locals more than once.

Closes #2040
2012-03-23 16:08:01 +01:00
Marijn Haverbeke
894b7469d6 Replace most uses of intrinsics in core with builtins
Issue #1981
2012-03-23 10:49:47 +01:00
Tim Chevalier
73a0c17d77 Make cross-crate calls to class methods work 2012-03-22 20:32:47 -07:00
Brian Anderson
f7f1490d6e rt: Run resource destructors during cycle collection 2012-03-22 19:07:31 -07:00
Niko Matsakis
dc07280b08 make --enforce-mut-vars always on, add mut annotations to remaining files 2012-03-22 09:58:19 -07:00
Tim Chevalier
30c272cb3a methods work
Cross-crate method calls don't work yet. Added
run-pass/class-method-cross-crate to test that, but it's xfailed

References to fields within methods don't work yet. Added
run-pass/class-methods to test that, but it's also xfailed
2012-03-21 13:53:21 -07:00
Niko Matsakis
7cc0f554ae add test for commit 9502fb99e0d535c8ced17ac61e63ebbd67b7dba7 2012-03-21 08:23:31 -07:00