Niko Matsakis
52f76400b5
extend with ty_send_type and ty_opaque_closure
2011-12-16 08:06:44 -08:00
Niko Matsakis
ac6aba016e
rename iter2 to iteri to match typical convention
2011-12-16 07:17:29 -08:00
Niko Matsakis
2833ca478c
reorder args to the various vec, option fns so blk comes last
2011-12-16 07:17:23 -08:00
Marijn Haverbeke
0a3626161d
Write impl data to crate library files
...
(No one is actually reading it yet.)
Issue #1227
2011-12-16 14:17:52 +01:00
Marijn Haverbeke
d529757515
Make polymorphic impl methods work
...
Something will still have to be done to the AST to make it possible to
say `x.foo::<int>()`, since currently field access never allows type
parameters.
Issue #1227
2011-12-16 13:47:48 +01:00
Marijn Haverbeke
cff6bdd036
Change syntax for impl
...
Move the name of the bundle to the front, allow type parameters (not
handled yet), and add a 'for' keyword:
impl utils for int {
fn str() -> str { int::str(self) }
fn times(f: block()) { ... }
}
2011-12-16 11:46:57 +01:00
Marijn Haverbeke
4f826d81f6
Make 1.f parse as a field access on the integer 1
...
A dot is only considered part of a number when not followed by a letter
Closes #1306
2011-12-16 11:46:57 +01:00
Marijn Haverbeke
14fcb135a9
Improve resolution of impls
...
Issue #1227
2011-12-16 11:46:57 +01:00
Marijn Haverbeke
7efef98901
Make uses of self in impls compile
...
Get rid of expr_self_call, introduces def_self. `self` is now,
syntactically, simply a variable. A method implicitly brings a `self`
binding into scope.
Issue #1227
2011-12-16 11:46:57 +01:00
Marijn Haverbeke
1dd2f1ec03
Get very simple impl method calls to compile
...
Resolution is still dumb, and no self support yet.
2011-12-16 11:46:57 +01:00
Marijn Haverbeke
6a16f57c0a
Get a very primitive form of typechecking/resolving to work for impls
...
No conflict resolution or polymorphism yet.
Issue #1227
2011-12-16 11:46:57 +01:00
Marijn Haverbeke
888bc80025
Parse and resolve implementations.
...
Issue #1227
2011-12-16 11:46:57 +01:00
Haitao Li
9bb290c725
rustc: Implement non-renamed re-export across crates
...
First patch for issue #1115 . Not yet ready for re-exported modules which
are renamed when importing them.
2011-12-16 17:16:00 +08:00
Brian Anderson
1f8f6054d2
rustc: Box tag variants to avoid copies
2011-12-15 17:25:58 -08:00
Brian Anderson
26db74c811
rustc: Box the vectors returned from ty::tag_variants
2011-12-15 17:14:58 -08:00
Brian Anderson
a1b3e3ea10
rustc: Cache results of ty::tag_variants
2011-12-15 16:27:18 -08:00
Graydon Hoare
8f0c475562
Add an --out-dir option to rustc.
2011-12-15 13:52:43 -08:00
Niko Matsakis
aa3d58c8c0
restore old buggy behavior where n_obj_params is always 0 for fns
2011-12-15 13:44:06 -08:00
Niko Matsakis
1e3259e119
massive refactor of how closures work
2011-12-15 13:44:06 -08:00
Niko Matsakis
d381cc072a
resurrect tps_fn() and put it to use this time.
2011-12-15 13:44:06 -08:00
Graydon Hoare
7694689044
Fix bug in library output filename construction: /tmp/foo.rc was being linked as lib/tmp/foo-<hash>-<vers>.so not /tmp/foo-<hash>-<vers>.so
2011-12-15 11:33:57 -08:00
Marijn Haverbeke
f82d101511
Iterate over an array when creating the parser's reserved word table
2011-12-15 08:18:38 +01:00
Marijn Haverbeke
2cd3d1ff59
Don't try to look up crate modules in ext_map in resolve
...
Closes #1305
2011-12-15 08:17:13 +01:00
Niko Matsakis
f7540b165c
remove unused tps_fn(); comment out unused var
2011-12-14 15:41:41 -08:00
Niko Matsakis
6cdb69cccb
refactor trans into trans_closure; restore original closure repr
2011-12-14 14:32:28 -08:00
Niko Matsakis
5a5f33c779
treat native fns as shared closures
2011-12-14 14:32:27 -08:00
Niko Matsakis
d32d0f28d5
insert a field into the closure storing number of ty descs
2011-12-14 14:32:27 -08:00
Niko Matsakis
f7cce6b819
pull out the code from iter_structural_ty for handling functions,
...
as we will have to do very careful and non-generic things
2011-12-14 14:32:26 -08:00
Niko Matsakis
7c7cb26487
treat different kinds of closures differently
2011-12-14 14:32:25 -08:00
Niko Matsakis
1869306a7e
change syntax from lambda[send] to sendfn
2011-12-14 14:32:24 -08:00
Niko Matsakis
85f381fb8a
restructure, temporarily working around what looks like an LLVM bug
2011-12-14 14:32:23 -08:00
Niko Matsakis
eaaa3c30bf
translate unique closure env better
2011-12-14 14:32:23 -08:00
Niko Matsakis
e51c29fab0
remove unused options
2011-12-14 14:32:22 -08:00
Niko Matsakis
6b744b284e
remove extra trailing semicolon
2011-12-14 14:32:21 -08:00
Niko Matsakis
ba6da950f1
restore old functionality for now
2011-12-14 14:32:21 -08:00
Niko Matsakis
6a8cb704d9
get basic code generation working, clone type descs for lambda[send]
2011-12-14 14:32:20 -08:00
Niko Matsakis
36177dd3e9
make fact that trans'ing lvar does not modify bcx explicit in type
2011-12-14 14:32:20 -08:00
Niko Matsakis
7fbca4e31c
sendable functions now "work", meaning pass through trans/typestate
...
but they do not generate correct code
2011-12-14 14:32:19 -08:00
Niko Matsakis
aa1cd61c84
push changes through to get things compiling, if not running.
2011-12-14 14:32:18 -08:00
Niko Matsakis
c28ada0368
first attempt, not happy with it
2011-12-14 14:32:18 -08:00
Niko Matsakis
941101a9cd
define ty and update parser for sendable lambdas
2011-12-14 14:32:17 -08:00
Brian Anderson
5b35c9caf5
rustc: Always write split stack prologues
2011-12-14 11:07:48 -08:00
Graydon Hoare
fa9ad984fb
Copy first batch of material from libstd to libcore.
2011-12-13 16:34:50 -08:00
Marijn Haverbeke
7c3d78013a
Reorganize some code in typeck
...
This should cut down a lot on the amount of closures being allocated, and removes
some duplicated code.
2011-12-13 15:28:22 +01:00
Haitao Li
76f13c95a0
rustc: Work around a segmentation fault
...
On Linux/Mac, I got a segmentation fault:
(gdb) bt
#0 0x00000000007519af in glue_take584 ()
#1 0x00000000006d4bec in
back::rpath::get_rpath_flags::_3899df2ca513c603 ()
#2 0x00000000006c7655 in back:🔗 :link_binary::_7afde00a9791031c ()
#3 0x00000000007d3ff5 in driver::rustc::compile_input::thunk9212 ()
#4 0x0000000000710f24 in driver::rustc::time::_3e691b2a4ba58aee ()
#5 0x000000000071a79d in
driver::rustc::compile_input::_7b4a41b87c18e034 ()
#6 0x000000000072f0a9 in driver::rustc::main::_cd8b8c8185af3dee ()
#7 0x000000000072f1ed in _rust_main ()
#8 0x00007ffff7e6e146 in task_start_wrapper (a=<optimized out>) at
../src/rt/rust_task.cpp:176
The variable `output` or `out_filename` becomes (null) after the definition
of `fn unlib`. Move the function defintion to the beginning seems
prevent the crash on Linux.
2011-12-12 16:15:29 -08:00
Haitao Li
6c6f83f693
rustc: Refactor and get built on Windows
2011-12-12 16:15:29 -08:00
Haitao Li
ba0649cb41
rustc: Hash includes direct dependent crates
2011-12-12 16:15:29 -08:00
Haitao Li
f3c206c9f4
rustc: Encode crate hash into metadata
2011-12-12 16:15:29 -08:00
Haitao Li
6dbd4c21e9
rustc: build versioned library with hash in its name
...
Also updated build to install versioned libraries and added a few
missing actions for `make clean`.
2011-12-12 16:15:29 -08:00
Haitao Li
b4f450a793
Using filename when finding libraries for linking
...
Revert #999 commit 16dad84f7b
2011-12-12 16:15:29 -08:00