Commit Graph

3440 Commits

Author SHA1 Message Date
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