Haitao Li
bd300636ee
rustc: Implement re-export of renamed modules
...
Issue #1115
2011-12-20 15:38:40 +08:00
Niko Matsakis
55a2fd18ec
implement capture clauses (move, in particular) and integrate
...
them into type state and so forth
2011-12-19 14:07:46 -08:00
Niko Matsakis
41ae146057
integrate cap clause into type state, but not trans
2011-12-19 14:07:46 -08:00
Niko Matsakis
b2b2a430df
resolve capture clauses
2011-12-19 14:07:46 -08:00
Niko Matsakis
b0f1a5f051
when collecting free vars, track the span where it is used too
2011-12-19 14:07:46 -08:00
Niko Matsakis
98cbbbb642
impl the proper partial order between fn types
2011-12-19 14:07:46 -08:00
Erick Tryzelaar
9db3525e42
Fix a typo.
2011-12-19 07:27:16 -08:00
Marijn Haverbeke
e4e2d6d1a1
Fix bug in type parameter handling for impl methods
...
The parameters of the impl weren't being combined in the right way
with the parameters of the methods. The test worked only by accident.
Issue #1227
2011-12-19 15:43:02 +01:00
Marijn Haverbeke
619d7c3f72
Associate names with types introduced by items
...
Issue #828
This is not a full solution yet. To really get sane error messages,
we'll also have to guess the name to apply to literals, which seems
non-trivial.
2011-12-19 13:52:58 +01:00
Marijn Haverbeke
60acae4df7
Add type argument field to expr_path
...
This way, you can explicitly provide type parameters when calling a
generic method.
Issue #1227
2011-12-19 10:43:23 +01:00
Marijn Haverbeke
4d524b957f
Complain when multiple methods in the same scope match a call
...
Issue #1227
2011-12-19 10:13:42 +01:00
Marijn Haverbeke
7185ea35c3
Use quotes around tokens in parser error messages to make them more readable
...
Closes #1328
2011-12-19 09:59:51 +01:00
Josh Matthews
6637340c28
Properly calculate base working dir for compile units.
2011-12-19 03:42:58 -05:00
Josh Matthews
1d3d28bdf1
Long lines.
2011-12-19 02:52:21 -05:00
Josh Matthews
52dbe4cc1d
Fix merge error and rebasing changes for debug information.
2011-12-19 01:36:37 -05:00
Josh Matthews
df6052c4f8
Remove source line generation craziness. Ensure incorrect subprogram caches are not conflated. Generate ast_map entries for object members and resource constructors and destructors.
2011-12-18 23:53:44 -05:00
Josh Matthews
c6f16ed2c4
Hide extended, unfinished debug information behind --xg compiler flag.
2011-12-18 23:48:04 -05:00
Josh Matthews
8597077b7a
Clean up some names and factor out some common code.
2011-12-18 23:46:39 -05:00
Josh Matthews
61e8b44f20
Add support for vectors.
2011-12-18 23:46:39 -05:00
Josh Matthews
30d019d520
Add record debug information.
2011-12-18 23:46:39 -05:00
Josh Matthews
f43ed8f1bd
Fix up ast types after literal changes.
2011-12-18 23:44:21 -05:00
Josh Matthews
134585bb06
Add debug information for boxed and unique values.
2011-12-18 23:44:21 -05:00
Josh Matthews
064d757ece
Handle inferred basic types when generating debug information for types.
2011-12-18 23:44:21 -05:00
Josh Matthews
6c26b892e4
Add argument metadata and aborted return value code.
2011-12-18 23:44:21 -05:00
Josh Matthews
0752252737
Use proper size and alignment of types for debuginfo.
2011-12-18 23:44:21 -05:00
Josh Matthews
1da4b3b987
Fix build error after rebasing.
2011-12-18 23:44:21 -05:00
Josh Matthews
0b303523bd
Fix up local variable support so it actually works.
2011-12-18 23:44:21 -05:00
Josh Matthews
e95c56f855
Fix up subprogram composite type nodes, and lexical block context nodes.
2011-12-18 23:44:21 -05:00
Josh Matthews
544bcfece2
Fix LLVM assertions when lowering log statements.
2011-12-18 23:44:21 -05:00
Josh Matthews
fa6d871e11
Build fix.
2011-12-18 23:43:37 -05:00
Josh Matthews
e383004985
Add debug info for local vars, basic fundamental types, and lexical blocks, along with source line information generation for individual instructions.
2011-12-18 23:41:03 -05:00
Josh Matthews
10030a37d5
Generate basic debug info for files, functions and compile units.
2011-12-18 23:39:54 -05:00
Stefan Plantikow
fa27724a4b
std: getopts now uses result::t ( fixes #1289 )
2011-12-18 18:55:39 -08:00
Marijn Haverbeke
f4acaf6934
Only look for a matching method when normal field access fails
...
We should probalby warn when defining a method foo on {foo: int} etc.
This should reduce the amount of useless typevars that are allocated.
Issue #1227
2011-12-18 19:41:44 +01:00
Marijn Haverbeke
b36ade1367
Improve efficienty of impl cache in resolve
...
And fix a bug where importing anything from an external module would
import all impls in the module.
Issue #1227
2011-12-18 19:07:26 +01:00
Brian Anderson
cb5f636ff1
rustc: Don't emit compact unwind info on mac
...
It's not compatible with the subtlety of __morestack
2011-12-18 00:42:37 -08:00
Brian Anderson
555006a304
rustc: Remove --stack-growth option
2011-12-17 16:58:26 -08:00
Graham Fawcett
f14bc54b06
allow #[link_args] with #[nolink]. For now, fail if two modules link same lib, and second has link_args.
...
I think it should undefined to have multiple modules that link in the same
library, but provide different link arguments. Unfortunately we don't track
link_args by module -- they are just appended as discovered into the crate
store -- but for now, it should be an error to provide link_args on a module
that's already been included (with or without link_args).
2011-12-16 15:29:59 -08:00
Graham Fawcett
7ddd353ef6
implement #[nolink]; deprecate #[link_name = ""]; note in stdlib to remove empty link_name.
...
Can't remove them from stdlib until the snapshotted compiler supports #[nolink].
2011-12-16 15:29:59 -08:00
Marijn Haverbeke
b11268780e
Fix arg order for vec::map call
2011-12-16 22:29:01 +01:00
Marijn Haverbeke
58a81a68ed
Finish resolving and calling of crate-external impls
...
Issue #1227
2011-12-16 22:18:38 +01:00
Marijn Haverbeke
dd9693f211
Reserve node_id 0 for the crate top-level module
...
And define a const to refer to it.
2011-12-16 22:17:47 +01:00
Graydon Hoare
d1bca753b8
Switch fmt extension to reference extfmt that's in core.
2011-12-16 10:59:11 -08:00
Niko Matsakis
21cc0c6e69
revoke cleanup of sendable closure once construction completes
2011-12-16 08:06:44 -08:00
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
Marijn Haverbeke
e47f8fc709
Handle external-crate case when printing full unresolved paths
...
Closes #1283
2011-12-12 13:36:29 +01:00
Marijn Haverbeke
44ffd8e3aa
Allow type annotations for blocks
...
I.e. {|foo: int| -> int foo + 2}
Issue #1275
2011-12-09 09:42:22 +01:00
Brian Anderson
54f72fbc10
rustc: Actually hook the crate_type attribute into session
2011-12-08 21:31:50 -08:00
Brian Anderson
4f17131855
Add crate_type attributes to rustc, std, core
2011-12-08 21:09:48 -08:00
Brian Anderson
9116a6d9b1
rustc: Support 'crate_type' attribute
...
[crate_type = "lib"] builds it as a library.
[crate_type = "bin"] builds it as an executable.
Executable is the default. --lib and --bin switches override.
2011-12-08 21:09:15 -08:00
Brian Anderson
6156295a4c
rustc: Move linking into compile_input
2011-12-08 20:33:31 -08:00