Commit graph

6673 commits

Author SHA1 Message Date
Marijn Haverbeke
4e88d5ae92 Make resolution of dictionaries on bounded params work
Issue #1227
2012-01-03 16:37:41 +01:00
Marijn Haverbeke
5ea3c96938 Wire in resolution of param bounds for method calls
Issue #1227
2012-01-03 16:18:40 +01:00
Marijn Haverbeke
506a6ec38b Make syntax for impls less magical
The trick of interpreting parameters to the iface type as parameters
to the impl was just too magical.

Issue #1227
2012-01-03 15:37:41 +01:00
Marijn Haverbeke
e1dc40b271 More work on translating dictionary-passing
Reached a point where simple uses of interfaces without bounds work.

Issue #1227
2012-01-03 15:36:57 +01:00
Brian Anderson
45b153adfe llvm: Revert unneeded debugging change 2012-01-02 12:18:23 -08:00
Marijn Haverbeke
b162f33396 Fix expected error messages for better printing of ty_ptr 2012-01-02 15:59:04 +01:00
Marijn Haverbeke
cdd806d324 Add a clause ty_ptr to ppaux::ty_to_str
Closes #1383
2012-01-02 15:42:13 +01:00
Marijn Haverbeke
15be2fc73a Add 'copy' bounds to functions that were faultily accepted without
Issue #1390
2012-01-02 15:31:58 +01:00
Marijn Haverbeke
8c14943dea Properly handle expression blocks in kind.rs
It was only noticing them in expr_block form, not as function
bodies.

Closes #1390
2012-01-02 15:23:11 +01:00
Lenny222
86279e8693 typo 2012-01-02 15:16:15 +01:00
Marijn Haverbeke
1741ef75ac Write out vtables for interface implementations
Issue #1227
2012-01-02 15:15:28 +01:00
Marijn Haverbeke
371b61a23d Drop two useless sub-passes from trans
Neither collect_tag_ctors nor the second pass in collect_items needed
to be separate passes.

Also remove obsolete obj_methods table kludge.
2012-01-02 15:15:28 +01:00
Marijn Haverbeke
a4694ce146 Create a trans_impl module 2012-01-02 15:15:27 +01:00
Marijn Haverbeke
3a1710d21e Key tcx.ty_param_bounds on node_ids, not def_ids
This makes it clearer that it's only valid for local nodes.
2012-01-02 15:15:27 +01:00
Marijn Haverbeke
9f2369dc9f Box arrays of parameter bounds 2012-01-02 15:15:27 +01:00
Marijn Haverbeke
270b4273e7 Pass bounds to trans::type_of_fn 2012-01-02 15:15:27 +01:00
Marijn Haverbeke
664a0443ad More resolving and typechecking of bounded type parameters.
Extern interfaces still don't get recognized.

Issue #1227
2012-01-02 15:15:27 +01:00
Marijn Haverbeke
40d5f288c3 Check that type parameter bounds are interface types
Issue #1227
2012-01-02 15:15:27 +01:00
Marijn Haverbeke
bd6646e698 Make last-use pass properly handle closed-over variables
Closes #1399
2012-01-02 10:20:58 +01:00
Brian Anderson
1c125d8829 llvm: Upgrade LLVM with FreeBSD segmented stack support 2012-01-01 20:26:34 -08:00
Jyun-Yan You
4566578fbd link with gcc44+ 2012-01-01 20:18:55 -08:00
Jyun-Yan You
274fc1b59c fix link error 2012-01-01 20:18:55 -08:00
Jyun-Yan You
21eadbe6f1 add missing library, enable segmented stacks for freebsd 2012-01-01 20:18:55 -08:00
Jyun-Yan You
d4884b6c6e forgot to add parentheses 2012-01-01 20:18:55 -08:00
User Jyyou
a59c4b1b47 freebsd support 2012-01-01 20:18:55 -08:00
Lenny222
f8d7a1c258 "str": extract to_upper/lower_case() into "char" 2012-01-01 13:15:30 -08:00
Stefan Plantikow
16405386f0 core: added support for bessel functions 2011-12-31 03:45:17 +01:00
Stefan Plantikow
a72b1413ed Removed now obsolete mtypes module 2011-12-31 03:45:17 +01:00
Stefan Plantikow
57ac67a5aa core: killed all math wrappers 2011-12-31 03:45:17 +01:00
Stefan Plantikow
49d36c7f85 Trying to remove wrappers from float 2011-12-31 03:45:17 +01:00
Stefan Plantikow
c314a9cad1 added more ops to cmath 2011-12-31 03:45:17 +01:00
Stefan Plantikow
d124c6eda2 removes std::mtypes 2011-12-31 03:45:17 +01:00
Stefan Plantikow
e0cd06053a added useful constants to math 2011-12-31 03:45:17 +01:00
Niko Matsakis
8319b5a252 add cap clause to pretty printer, with a test 2011-12-30 16:25:55 -08:00
Graydon Hoare
bfc9a499c2 Print usage messages to rustc and rustdoc when invoked with no args. Close #1394. 2011-12-30 15:26:49 -08:00
Lenny222
ab2a643f27 add test for list:is_empty() 2011-12-30 10:54:31 +01:00
Niko Matsakis
aa5382bb13 split proto from fn_decl, as not all fn_decls know the proto.
this will address the (crashing) new test added.
2011-12-29 20:29:28 -08:00
Graydon Hoare
ca7d389e1d Of course there were overlong lines. 2011-12-29 17:30:43 -08:00
Graydon Hoare
1cd132eef0 Teach unicode script to emit canonical and compat decomp mappings. Annoyingly large encoding. 2011-12-29 17:24:04 -08:00
Graydon Hoare
36c55b20a8 Add support in lexer for utf8 identifiers. No NFKC logic in char yet. 2011-12-29 14:45:18 -08:00
Lenny222
d07c6e8a0e list: use predicate to enforce non-empty requirement 2011-12-29 21:24:03 +01:00
Graydon Hoare
5fd0a3be0c Save and restore xmm regs across the call to UPCALL_NEW_STACK during __morestack, close #1388. 2011-12-29 11:49:29 -08:00
Graydon Hoare
884adf38a1 Remove obsolete comments. 2011-12-29 10:21:05 -08:00
Marijn Haverbeke
816b0ac8ae Box ty_param_bounds_and_ty
It contains a vector, which shouldn't be copied all the time.
2011-12-29 09:29:08 +01:00
Graydon Hoare
2ed1005bd7 On second thought, re-land pull request #1385 with backquotes; easier to grep, can change in the future. 2011-12-28 13:41:31 -08:00
Graydon Hoare
f2c88c1b80 Merge pull request #1385 from Lenny222/quotes
Use singlequotes in the typechecker error messages too, to distinguish code and English
2011-12-28 13:08:28 -08:00
Graydon Hoare
51227c1e8a Merge pull request #1389 from erickt/master
misc standard library additions
2011-12-28 13:05:02 -08:00
Marijn Haverbeke
9236fdf39f Move the kind datatype to middle::ty
The AST no longer references it.
2011-12-28 21:18:16 +01:00
Marijn Haverbeke
1ed6a27548 Change representation of type params to handle interface bounds
Issue #1227
2011-12-28 21:18:16 +01:00
Graydon Hoare
5930463faa Tidy up some drift in runtime logging, close #1380. 2011-12-28 11:53:12 -08:00
Erick Tryzelaar
b6cecdd4de libstd: add bytes_reader and bytes_writer
This parallels nicely with string_reader and string_writer, but
working with raw byte strings. I'm not quite sure if the return
type for bytes_writer.get_bytes should be [u8] or [mutable u8]
though, so I'm arbitrarily picking mutable for now.
2011-12-28 11:19:41 -08:00
Erick Tryzelaar
1f0757c684 libstd: Allow io writer to write mutable arrays 2011-12-28 11:19:41 -08:00
Erick Tryzelaar
af41564747 libstd: add a method to generate random bytestrings. 2011-12-28 11:19:41 -08:00
Erick Tryzelaar
5d84652f51 comp: minor cleanup. 2011-12-28 11:19:41 -08:00
Erick Tryzelaar
38e796b943 libcore: Fix a typo. 2011-12-28 11:19:41 -08:00
Stefan Plantikow
7fd62bb2b5 Made matching machine types equal to float, int, uint (fixes #1376) 2011-12-28 18:02:49 +01:00
Brian Anderson
b9b9b3e570 rt: Set the initial obstack size to 128 bytes
Double the size on each allocation
2011-12-25 19:18:05 -08:00
Lenny222
0b9751b141 Use singlequotes in the typechecker too, to distinguish code and English 2011-12-25 20:27:09 +01:00
Graydon Hoare
b3eb9a0031 Merge pull request #1382 from Lenny222/char
"char": add is_lowercase(), is_uppercase()
2011-12-24 11:55:39 -08:00
Graydon Hoare
900bc1298d Merge pull request #1377 from Lenny222/icu
std::unicode::icu: add "is*" functions + unit test
2011-12-24 11:54:07 -08:00
Lenny222
eb0cdc02e3 char: add is_lowercase(), is_uppercase() 2011-12-24 10:41:11 +01:00
Graydon Hoare
47271ab4c8 Forgot typo-fix. 2011-12-23 18:53:52 -08:00
Graydon Hoare
ac13f0da9e Add support to libcore for encoded-in-rust unicode character properties, at least. Add script to compute them from unicode.org. 2011-12-23 18:48:08 -08:00
Marijn Haverbeke
46cddffb8f Go back to a single visit_fn function in visit.rs 2011-12-23 18:45:02 +01:00
Marijn Haverbeke
711ff657e2 Get rid of visit_fn_block in visit.rs
It seems redundant and error-prone.
2011-12-23 18:24:49 +01:00
Marijn Haverbeke
25e65239ad Check impls methods against the type of their iface. 2011-12-23 18:11:36 +01:00
Marijn Haverbeke
057617c665 Parse iface items and interface references in impl items.
The (temporary) syntax is

    iface seq<T> {
        fn len() -> uint;
        fn iter(f: block(T));
    }

    // The 'blah<T>' can be left of to default the name of the
    // impl to seq<T>. The 'of seq<T>' can be left off when
    // not implementing a named interface.
    impl blah<T> of seq<T> for [T] {
        fn len() -> uint { vec::len(self) }
        fn iter(f: block(T)) { for x in self { f(x); } }
    }
2011-12-23 18:09:25 +01:00
Marijn Haverbeke
9292744959 Use the same type of record in ty::ty_fn and ty::method
Removes some more code duplication.
2011-12-23 16:11:35 +01:00
Marijn Haverbeke
970f5cc0e4 Make ast::ty_method hold a fn_decl, rather than duplicating its fields 2011-12-23 13:32:17 +01:00
Graydon Hoare
f0dfbe7b1b Register new snapshots, purge log_err and log_full in favour of log(...). 2011-12-22 17:53:53 -08:00
Graydon Hoare
ccb5b6fb25 Switch core macros to expand to log(level, ...). 2011-12-22 16:36:55 -08:00
Graydon Hoare
389329ef1e Merge all 3 log syntaxes, tidy up residual misuses. 2011-12-22 16:14:00 -08:00
Erick Tryzelaar
f816d8c71c cargo: Adding my package index. 2011-12-22 15:05:59 -08:00
Erick Tryzelaar
43a6bd110e Whitespace cleanup. 2011-12-22 15:05:59 -08:00
Graydon Hoare
dcd771cd48 Merge branch 'master' of github.com:graydon/rust 2011-12-22 14:50:52 -08:00
Graydon Hoare
8b580954fe Register snapshots and switch logging over to use of log_full or #error / #debug. 2011-12-22 14:42:52 -08:00
Lenny222
d812d06bc8 std::unicode: add functions, unit test 2011-12-22 22:58:38 +01:00
Marijn Haverbeke
9587c67230 Fix rustdoc for AST changes 2011-12-22 22:16:02 +01:00
Marijn Haverbeke
eacb629442 Work around unwinding bug
See issue #1374
2011-12-22 20:38:09 +01:00
Marijn Haverbeke
0490c36143 Unify some data structures in syntax::ast that were doing the same thing
As a preparation to removing some duplication in typeck.
2011-12-22 20:18:56 +01:00
Graydon Hoare
3b61064631 Revert all of yesterday's snapshots and try again. Cursed! 2011-12-22 10:30:04 -08:00
Graydon Hoare
47d27af228 Merge branch 'master' of github.com:graydon/rust 2011-12-22 09:30:03 -08:00
Graydon Hoare
8005f0c564 Register another snapshot. There was nothing redeeming about the last one. 2011-12-22 09:29:45 -08:00
Marijn Haverbeke
07d7f828cd Fix tag_var_cache to cache crate-external tags
And to not return a bogus mutable box.
2011-12-22 16:23:49 +01:00
Marijn Haverbeke
44f921c8a9 Do not use == and != to compare ty::t values
Issue #828
2011-12-22 15:05:38 +01:00
Marijn Haverbeke
3ee630bbee Add ty::new_ty_hash, clean up comparing of ty::t's 2011-12-22 15:05:38 +01:00
Marijn Haverbeke
e2e077c831 Remove trivial cast checker
I consider the added complexity not justified at this point, and it
interacts badly with the patches for issue #828. Feel free to discuss.
2011-12-22 15:04:00 +01:00
Lenny222
7beb21c6e3 tests: add corner case (empty list) 2011-12-22 08:59:22 +01:00
Lenny222
341e4151d6 json: to_str() also for "null" 2011-12-22 08:46:50 +01:00
Lenny222
6f5a0a3b3b json: add "null" 2011-12-22 08:46:49 +01:00
Graydon Hoare
047b02d5bc More flailing on log syntax due to call-expr ambiguity in previous attempt. 2011-12-21 18:05:08 -08:00
Graydon Hoare
7bf12f3723 Register fixed snapshots. 2011-12-21 16:47:13 -08:00
Graydon Hoare
5d1cf2a872 Out-of-order-code typo. Snapshot again. 2011-12-21 15:43:38 -08:00
Graydon Hoare
8fd5802c65 Register snapshots. 2011-12-21 15:29:18 -08:00
Graydon Hoare
8d9e7deab5 Switch log_expr to carrying a full expr:u32 for level. Add log_full variant that parses that expr, prepare for snapshot. 2011-12-21 14:31:31 -08:00
Niko Matsakis
66856a39b3 add tests I forgot to add 2011-12-21 08:41:41 -08:00
Niko Matsakis
627217fa55 valid cap clause for kind-ness too 2011-12-21 06:14:36 -08:00
Niko Matsakis
c03d14a33d upgrade kind check 2011-12-21 06:14:36 -08:00
Niko Matsakis
01cb1044f7 update pprinter to understand ret type of block, add warnings 2011-12-21 06:14:35 -08:00
Niko Matsakis
6a90140941 Make { || ... } sugar for any type of closure, inferred 2011-12-21 06:14:35 -08:00
Haitao Li
1e4de33374 rustc: Exclude stdin from codemap files when lookup_pos
Fixes issue #1362
2011-12-21 22:07:48 +08:00
Brian Anderson
085c813fe3 Merge pull request #1365 from elly/cargo
cargo: allow 'ref' package key for git packages.
2011-12-20 20:59:03 -08:00
Brian Anderson
dedfef4c4c Revert "wip"
This reverts commit aeadc6269e.
2011-12-20 20:57:04 -08:00
Brian Anderson
854daaec0c rt: Lock before using the random number generator
Seeing crashes here trying to stress test concurrent tasks
2011-12-20 20:56:06 -08:00
Elly Jones
bbc534bccc cargo: allow 'ref' package key for git packages.
This lets you specify e.g. a tag or a branch name to be checked out for that
package.

Signed-off-by: Elly Jones <elly@leptoquark.net>
2011-12-20 23:41:22 -05:00
Brian Anderson
aeadc6269e wip 2011-12-20 20:15:09 -08:00
Brian Anderson
128621be97 rt: Remove rust_task::grow. Obsolete 2011-12-20 20:02:57 -08:00
Graydon Hoare
2841ce7822 Missing comma. 2011-12-20 19:09:53 -08:00
Graydon Hoare
200439406d Add pointer to cargo-central. 2011-12-20 19:04:02 -08:00
Elly Jones
2bdb0b6d40 cargo: syntax fixes 2011-12-20 21:52:50 -05:00
Elly Jones
9834321615 cargo: Add list and search.
In aid of search, add a new field to the packages.json format, called "tags",
whose value is a list of strings. Search accepts a list of tags, all of which
must match for the package to be shown.

Signed-off-by: Elly Jones <elly@leptoquark.net>
2011-12-20 20:41:23 -05:00
Elly Jones
af564caff7 cargo: support optional signing of packages.json files. 2011-12-20 20:10:21 -05:00
Brian Anderson
cab4da70c8 rt: Don't check the stack canary on most upcalls 2011-12-20 16:50:54 -08:00
Brian Anderson
a5d48ce286 cargo: Make sources.json parsable again 2011-12-20 16:38:54 -08:00
Brian Anderson
82cdbfc818 cargo: Add my package index 2011-12-20 16:35:25 -08:00
Brian Anderson
2a490d1cf8 Revert "rt: Reduce the mac red zone to 2K"
This reverts commit ba8f369f89.
2011-12-20 15:17:30 -08:00
Brian Anderson
ba8f369f89 rt: Reduce the mac red zone to 2K 2011-12-20 14:24:13 -08:00
Graydon Hoare
f5c4cc70d6 Merge pull request #1361 from elly/rustdoc
rustdoc: delete bogus license text
2011-12-20 14:22:41 -08:00
Elly Jones
c83cc5792f rustdoc: Some rights reserved? 2011-12-20 17:19:46 -05:00
Elly Jones
00af3406fe rustdoc: delete bogus license text
Rustdoc is under the same license as the rest of Rust, not under apache-2.0.

Signed-off-by: Elly Jones <elly@leptoquark.net>
2011-12-20 17:15:49 -05:00
Graydon Hoare
f2715f3c64 Merge pull request #1360 from elly/rustdoc
rustdoc: Add.
2011-12-20 14:07:55 -08:00
Brian Anderson
2e230b1cf9 rt: Reduce the linux red zone to 2K 2011-12-20 14:02:59 -08:00
Brian Anderson
6443a7b513 rt: Do fewer stack canary checks 2011-12-20 13:54:47 -08:00
Elly Jones
fb0896fe7b rustdoc: Add.
Parses #[doc] attributes on top-level module items and generates Markdown.

Signed-off-by: Elly Jones <elly@leptoquark.net>
2011-12-20 16:52:04 -05:00
Graydon Hoare
3bc4da96f1 Inject "core macros" into default syntax-expansion environment. Bit of a kludge but enough to work on logging-via-macros. 2011-12-20 13:38:10 -08:00
Graydon Hoare
a24c19e867 Add companion-module core.rs that exports log levels and option/some/none everywhere. 2011-12-20 12:41:44 -08:00
Graydon Hoare
8bde865d09 Merge pull request #1349 from lht/driver
Separate driver rustc and librustc
2011-12-20 12:28:40 -08:00
Graydon Hoare
96d7f83eb0 Merge pull request #1350 from boggle/kmath
removed math leftovers from std
2011-12-20 12:28:07 -08:00
Brian Anderson
93fef2e113 rt: Parenthesize the red zone macros 2011-12-20 11:57:22 -08:00
Brian Anderson
784713ec68 rt: Add a canary value to the end of every stack
Check it on upcall entry and exit, and on stack deletion
2011-12-20 11:48:47 -08:00
Marijn Haverbeke
4475ec863d Fix misleading comment about type_is_pod 2011-12-20 20:47:03 +01:00
Brian Anderson
56ec9cb278 rt: Run yet more task_start_wrapper cleanup on the C stack 2011-12-20 10:29:40 -08:00
Stefan Plantikow
b957916e06 removed math leftovers from std 2011-12-20 18:07:36 +01:00
Haitao Li
bc95ccb536 Separate driver rustc and librustc
rustc is now a minimal wrapper of librustc.
2011-12-20 21:06:04 +08:00
Haitao Li
28b825d846 test: Remove 'error:' from error pattern
May include ansi escape code for color rendering on certain terminal.
2011-12-20 15:38:40 +08:00
Haitao Li
5cfcf20b25 rustc: Cleanup unused ext_map 2011-12-20 15:38:40 +08:00
Haitao Li
5e3ffb6cbd rustc: Re-export the same name in different namespaces
Issue #1115.
2011-12-20 15:38:40 +08:00
Haitao Li
bd300636ee rustc: Implement re-export of renamed modules
Issue #1115
2011-12-20 15:38:40 +08:00
Brian Anderson
25f7c844df rt: Don't reuse stack segments when they are not big enough 2011-12-19 22:47:28 -08:00
Brian Anderson
05bf105c90 rt: Rename asm_call_on_stack to __morestack
Newer gdb's will backtrace through functions named __morestack even
if they change the stack.
2011-12-19 22:05:40 -08:00
Brian Anderson
f302b79d61 Register snapshots 2011-12-19 21:43:01 -08:00
Brian Anderson
edf6e1ec0e rt: Zero the bottom frame's return address and base pointer
My reading of libunwind leads me to believe this is expected.

Closes #1322
2011-12-19 18:47:39 -08:00
Brian Anderson
586281e2d6 libcore: Remove stack alignment from task spawning
This is already done by the native task start code. Closes #1324
2011-12-19 18:43:39 -08:00
Brian Anderson
1bfc4e2e6c rt: Save and restore %rax/%eax in __morestack
This doesn't matter now since we use an out pointer for return
values but it's sure to show up mysteriously someday.
2011-12-19 18:16:21 -08:00
Brian Anderson
c3569abb8c rt: Remove some unused stack from i386/morestack.S 2011-12-19 18:16:19 -08:00
Brian Anderson
d2e7336a01 rt: Remove unused saves from __morestack 2011-12-19 16:24:10 -08:00
Brian Anderson
50dc80f617 rt: Give upcall_new_stack the same convention as other upcalls 2011-12-19 16:24:10 -08:00
Brian Anderson
bedcaad97e rt: Give upcall_del_stack the same convention as other upcalls 2011-12-19 16:24:10 -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
Graydon Hoare
1bc6e72b97 Remove cargo from snapshot file-list again; overestimated. 2011-12-19 13:42:33 -08:00
Graydon Hoare
abbd86f1e6 Merge pull request #1334 from boggle/kmath
preparing for removing math from std
2011-12-19 11:58:19 -08:00
Erick Tryzelaar
02d84d89e0 libcore: add splitn to split a string N times. 2011-12-19 10:22:07 -08:00
Erick Tryzelaar
8e54e74be4 libcore: add vec push.
This is a simple wrapper around grow for the common
case of pushing a value on the end of a vector.
2011-12-19 10:22:07 -08:00
Erick Tryzelaar
6b1c60d312 libcore: Add vec any2 and all2 functions. 2011-12-19 10:22:07 -08:00
Erick Tryzelaar
f9df32adac vim comment highlighting can contain comments. 2011-12-19 07:27:17 -08:00
Erick Tryzelaar
a66f0688fd getopts: add test for strings with spaces. 2011-12-19 07:27:16 -08:00
Erick Tryzelaar
8e9be037d1 Simplify getopts::find_opt. 2011-12-19 07:27:16 -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
e25f6d03eb Remove rebase error. 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
Stefan Plantikow
e1a9668ab2 preparing for removing math from std 2011-12-19 03:19:37 +01:00
Brian Anderson
bd6b80c972 rt: Get rid of the rethrow in upcall_fail
Throwing in upcall_fail ends up running lots of code in the red zone. To avoid
it we have the personality function figure out which stack it's on and switch
as needed.
2011-12-18 17:17:31 -08:00
Brian Anderson
c73eb8ff51 rt: Create different stack-switching paths for upcalls and shims
Shims need to play with the stack limit, upcalls don't. Only one upcall,
upcall_fail is allowed to catch, and we need a find a way to get rid of that
catch as well because it results in _Unwind_Resume running off the end of the
Rust stack.
2011-12-18 16:17:55 -08:00
Brian Anderson
f57fd8de1f rt: Run the cycle collector on the C stack 2011-12-18 15:23:44 -08:00
Brian Anderson
74d5faa86e rt: Give each platform its own red zone definition 2011-12-18 15:23:41 -08:00
Brian Anderson
762d7e43a6 rt: Trim the red zone to 20k on all platforms 2011-12-18 15:22:56 -08:00
Brian Anderson
12cde6ebee libcore: Remove task::set_min_stack
This existed to make up for the lack of stack growth, and wasn't generally
safe.
2011-12-18 14:10:41 -08:00
Brian Anderson
22ac628e8c test: Enable all morestack tests 2011-12-18 13:37:33 -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
3fa930f598 rt: Remove a bogus FIXME from ~rust_task 2011-12-18 02:09:41 -08:00
Brian Anderson
1a1fdf34b1 rt: Add lots of documentation to __morestack 2011-12-18 02:02:35 -08:00
Brian Anderson
7359fa422b Revert "rt: Turn on big stacks again. Unwinding still doesn't always succeed on mac"
This reverts commit 68f4849f0f.
2011-12-18 00:42:46 -08: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
68f4849f0f rt: Turn on big stacks again. Unwinding still doesn't always succeed on mac 2011-12-17 17:54:43 -08:00
Brian Anderson
39c8f0cb4a libstd: Long lines 2011-12-17 17:02:07 -08:00
Brian Anderson
555006a304 rustc: Remove --stack-growth option 2011-12-17 16:58:26 -08:00
Brian Anderson
fe683dfb80 rt: Get rid of the valgrind guard bytes at the end of the stack
Preventing us from writing beyond our allocations is _what valgrind does_,
so telling valgrind not to let us write to the end of the stack isn't
buying anything.
2011-12-17 16:46:50 -08:00
Brian Anderson
00be346089 libstd: Add 'xterm-256-color' to list of color-enabled terminals 2011-12-17 16:44:27 -08:00
Brian Anderson
471b4d6e58 rt: Use a DWARF CFI scheme that works on mac in __morestack 2011-12-17 14:10:44 -08:00
Brian Anderson
7da8ab8fab rt: Turn on stack alignment checks for mac 2011-12-17 14:10:40 -08:00
Brian Anderson
4ac345939c rt: Cache an extra stack segment to avoid bad behavior at stack boundaries 2011-12-17 13:45:38 -08:00
Brian Anderson
0ed5117a9d rt: Set the default stack size to 768 bytes. Double on each alloc 2011-12-17 13:45:38 -08:00
Elly Jones
bb2c1f7613 cargo: complain if rustc fails 2011-12-16 20:40:10 -08:00
Brian Anderson
f8d06a2a84 Merge pull request #1320 from elly/cargo
cargo: shorten a line
2011-12-16 20:16:13 -08:00
Elly Jones
648b69d692 cargo: shorten a line 2011-12-16 23:15:13 -05:00
Graydon Hoare
bf4efa3a20 Merge pull request #1319 from elly/cargo
cargo: support distributed package indexes
2011-12-16 19:48:19 -08:00
Elly Jones
c8427e4ffd cargo: fix lib detection logic 2011-12-16 22:39:33 -05:00
Graydon Hoare
c758e11fd3 Install and snapshot cargo by default. 2011-12-16 19:37:27 -08:00
Elly Jones
b7e30bc4c5 cargo: fix remaining warnings 2011-12-16 22:31:49 -05:00
Elly Jones
7bd003a1d0 cargo: remove obsolete rust-pkg-index lookup code 2011-12-16 22:27:47 -05:00
Elly Jones
9a0b89b534 cargo: fix some warnings 2011-12-16 22:27:04 -05:00
Elly Jones
327af5b9f3 cargo: flesh out usage 2011-12-16 22:24:01 -05:00
Elly Jones
8b7a41f23d cargo: Support distributed package indexes.
Indexes are listed in ~/.cargo/sources.json and ~/.cargo/local-sources.json, the
former of which is stored in the rust source tree in src/cargo. Each entry in
either of these files is a source, which is a dictionary with (currently) a
single key, "url". The supplied url should point to a json list, each element of
which should be a dictionary with four keys: "name", "uuid", "url", and
"method". The name and uuid serve to identify the package; the method describes
how to fetch the package; the url describes where to fetch it from. Currently
supported methods are "git", "http", and "file".

Signed-off-by: Elly Jones <elly@leptoquark.net>
2011-12-16 22:08:25 -05:00
Brian Anderson
b5b2ac0ec4 rt: Make 32-bit morestack compatible with fastcc 2011-12-16 18:18:43 -08:00
Brian Anderson
7d51961b6f rt: Fix saved address of unwinding %rsp in __morestack
I haven't thought too deeply about this, but I think I was telling the
unwinder to use the stack pointer for the wrong frame when unwinding. Not sure
how that could have worked at all, but this results in the correct alignment
for cleanups.
2011-12-16 18:18:43 -08:00
Brian Anderson
9d70c1949e rt: Fix alignment of the call to upcall_del_stack in __morestack 2011-12-16 18:18:43 -08:00
Brian Anderson
23df4de86d rt: Fix alignment of new stack segments 2011-12-16 18:18:43 -08:00
Brian Anderson
ab4f35c1f1 rt: Only call check_stack_alignment on linux 2011-12-16 18:18:43 -08:00
Brian Anderson
121c420184 rt: Insert stack alignment checks into upcalls 2011-12-16 18:18:43 -08:00
Elly Jones
10cf4a1b0a cargo: wip 2011-12-16 20:33:39 -05:00
Graydon Hoare
4f826b34cb Update build machinery to build and install librustc everywhere (including snapshots). 2011-12-16 17:21:28 -08:00
Brian Anderson
1477fb3f2b libstd: Temporarily use #[link_name = ""] 2011-12-16 15:29:59 -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
Elly Jones
89e880d613 std: file_is_dir -> path_is_dir, add path_exists 2011-12-16 17:37:21 -05: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
dbfa1b5689 Merge pull request #1317 from boggle/fix1315
fix to #1315 + small additions to std::either and result
2011-12-16 13:01:47 -08:00
Graydon Hoare
1bf078f988 Remove hopefully-now-redundant chops of ./ at the beginning of filenames in cargo. 2011-12-16 12:28:39 -08:00
Graydon Hoare
d1bca753b8 Switch fmt extension to reference extfmt that's in core. 2011-12-16 10:59:11 -08:00
Stefan Plantikow
7d786318a1 std: declared fns as pure where sensible 2011-12-16 18:18:34 +01:00
Stefan Plantikow
bfbaadc694 core: marked fns as pure where possible 2011-12-16 17:41:07 +01:00
Niko Matsakis
88818334b7 update to not look at descs[], which is not necessarily valid
if the input is a statically allocated type_desc
2011-12-16 08:06:45 -08:00
Niko Matsakis
34283c6a78 add test that requires capturing generic descriptors 2011-12-16 08:06:45 -08:00
Niko Matsakis
4465c1ad02 first test of sendable fns (passes) 2011-12-16 08:06:45 -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
b5e5043d5d reorder block() argument to bitv::process() 2011-12-16 08:01:05 -08:00
Stefan Plantikow
1fe4bd0f43 std: added either::flip, to_result and result::to_either 2011-12-16 16:31:42 +01: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
42fb9b2c5f cargo: Fix long lines 2011-12-16 17:17:24 +08: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
91249fed82 Merge pull request #1314 from elly/cargo
Cargo: install-by-name and install-by-uuid
2011-12-15 18:26:11 -08:00
Elly Jones
7953a5dcfc cargo: update to new rust-pkg-index API. 2011-12-15 21:22:42 -05:00
Patrick Walton
fd1dd76977 stdlib: Add a str::split_str() to split on a delimiter string of any length 2011-12-15 17:39:53 -08:00
Elly Jones
ce9fbf7517 cargo: support uuid:<uuid> and shortname package forms.
'cargo install rustcrypto' now works.
2011-12-15 20:27:55 -05: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
Brian Anderson
ce24ce1b5f Merge pull request #1307 from elly/cargo
cargo: detect library installs properly
2011-12-15 13:53:24 -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
Elly Jones
a87d80f6e2 cargo: detect library installs properly 2011-12-15 10:11:01 -05:00
Marijn Haverbeke
1753607f6a Suppress unused variable warnings in cargo 2011-12-15 13:46:27 +01: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
Graydon Hoare
dde5860380 Remove some duplicated unused parts of std now that they're present in core. 2011-12-14 18:04:45 -08:00
Niko Matsakis
f7540b165c remove unused tps_fn(); comment out unused var 2011-12-14 15:41:41 -08:00
Stefan Plantikow
af8e471908 Fixed type resolution error in math tests 2011-12-14 14:54:16 -08:00
Stefan Plantikow
50db7ce906 Moved std::math to std::core
- merges math and float into core::float
- Splits core::ctypes into core::ctypes and core::mtypes
- cmath is not exported
- stdtest::math passes
2011-12-14 14:54:16 -08:00
Stefan Plantikow
6d0901cb4d std: export math_f* as math::f* submods and use tailcalls in std::math 2011-12-14 14:54:16 -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
35fe86dab7 export upcall_clone_type_desc 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
f512e67fb9 clone type desc into exchange heap 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