3887 Commits

Author SHA1 Message Date
Marijn Haverbeke
55c938b2c2 Only build debuginfo blocks for blocks that appear in the program text
I.e. a set of curly braces, not everything that creates a block
context in the trans pass.

Issue #1694
2012-01-30 10:06:06 +01:00
Brian Anderson
0ec92a4ca7 rustc: Add a missing llvm linkage type 2012-01-29 23:27:54 -08:00
Brian Anderson
c77f1d47f8 rustc: Add some missing llvm defs. Fix comments 2012-01-29 23:10:39 -08:00
Marijn Haverbeke
2740a6b605 Fix mistake in previous commit 2012-01-29 19:57:57 +01:00
Marijn Haverbeke
d6996c0210 Fix bug where resolve didn't descend method ty params
Closes #1700
2012-01-29 19:46:36 +01:00
Erick Tryzelaar
259636a112 core: rename vec::position* functions
Almost all of the vec functions that predicates don't have a
corresponding function that takes a single element, so this
commit renames the common fn usecase to be the default.
2012-01-28 09:18:34 -08:00
Josh Matthews
a831e7ce13 Merge remote-tracking branch 'mozilla/master' 2012-01-28 11:50:48 -05:00
Josh Matthews
fcb381410d Disable lexical block and function debug info caches to improve compilation time while #1694 is unfixed, and fix stack-exhaustion bug in block parent generation. 2012-01-28 11:50:26 -05:00
Brian Anderson
53dbde6cc2 rustc: Make 'attempted access of field' error non-fatal 2012-01-27 16:58:27 -08:00
Brian Anderson
3321880f13 Merge remote-tracking branch 'killerswan/fixing_strings_2'
Conflicts:
	src/comp/driver/driver.rs
	src/comp/middle/trans/base.rs
	src/comp/syntax/parse/lexer.rs
2012-01-27 16:44:40 -08:00
Marijn Haverbeke
e48bf6f3f4 Make occurs check in ty::fixup_vars more reliable
It wouldn't detect cycles that went through several type vars before.

Closes #1464
2012-01-27 18:58:52 +01:00
Marijn Haverbeke
362625008a Allow moving out of mutable unsafe pointers
This makes it possible to de-initialize values anywhere in
memory, which is needed, for example, for a fast imlementation
of vec::pop.
2012-01-27 17:15:40 +01:00
Marijn Haverbeke
dc55c06aa3 Properly check enum types for recursion
Closes #742
2012-01-27 16:03:43 +01:00
Marijn Haverbeke
03e9dac09a Move various trans_ modules under a trans:: umbrella module
Closes #1304
2012-01-27 13:20:36 +01:00
Marijn Haverbeke
b3f06c7d54 Stop passing spans to middle::trans functions that don't need them
Removes a bunch of (eventually) unused arguments. Makes span passing to debuginfo
explicit, instead of relying on the (usually incorrect) spans held in the contexts.

Closes #1439
2012-01-27 13:20:36 +01:00
Marijn Haverbeke
b80f0a3c9f Use the method name 'unary-' for overloading negation
It's less likely to clash with something than 'neg'.

Issue #1520
2012-01-27 10:06:53 +01:00
Brian Anderson
9f80a17c0e rustc: Add pprust::res_to_str 2012-01-26 20:54:36 -08:00
Brian Anderson
f0ba69a96f Remove the --no-core command-line option
It is superceeded by the #[no_core] attribute
2012-01-26 20:30:46 -08:00
Brian Anderson
28fbb19664 rustc: Switch the --no-core switch to a #[no_core] attribute 2012-01-26 16:43:33 -08:00
Brian Anderson
2220d0f20f rustc: Make core injection a timed pass
It's not much of a pass, but lets be consistent
2012-01-26 16:23:48 -08:00
Brian Anderson
5610205363 rustc: Move core injection to its own module 2012-01-26 16:23:48 -08:00
Marijn Haverbeke
c590bdeea4 Make re-exporting of impls work
Closes #1438
2012-01-26 18:58:35 +01:00
Marijn Haverbeke
6bead0e4cc Use operator names for operator methods
The methods used to implement operators now simply use
the name of the operator itself, except for unary -, which is called
min to not clash with binary -. Index is called [].

Closes #1520
2012-01-26 15:52:28 +01:00
Marijn Haverbeke
305b1c8701 Fix small bug in iface self types
Issue #1661
2012-01-26 15:24:52 +01:00
Marijn Haverbeke
888262b337 Allow operator overloading of the indexing operator
The method `op_index` (which takes a single argument) is used for
this.

Issue #1520
2012-01-26 15:23:11 +01:00
Marijn Haverbeke
87b064b249 First stab at operator overloading
When no built-in interpretation is found for one of the operators
mentioned below, the typechecker will try to turn it into a method
call with the name written next to it. For binary operators, the
method will be called on the LHS with the RHS as only parameter.

Binary:

    +   op_add
    -   op_sub
    *   op_mul
    /   op_div
    %   op_rem
    &   op_and
    |   op_or
    ^   op_xor
    <<  op_shift_left
    >>  op_shift_right
    >>> op_ashift_right

Unary:

    -   op_neg
    !   op_not

Overloading of the indexing ([]) operator isn't finished yet.

Issue #1520
2012-01-26 14:25:06 +01:00
Marijn Haverbeke
1792d9ec96 Use string stored in codemap for pretty-printing comments and literals
Closes #1665
2012-01-26 10:52:08 +01:00
Marijn Haverbeke
ec4d05de3b Remove ty_native_fn
It was being used as a clumsy synonym of ty_fn.
2012-01-26 10:37:50 +01:00
Kevin Cantu
4d7c297bea (FIX) Change encoder::encode_metadata to return a [u8] (which will become an LLVM string) 2012-01-25 22:27:29 -08:00
Brian Anderson
b7b8455e54 rustc: Add pprust::variant_to_str 2012-01-25 17:22:08 -08:00
Brian Anderson
2999479a2d rustc: Allow attributes on enum variants. Closes #1663 2012-01-25 16:24:06 -08:00
Kevin Atkinson
60a146bf0f Correctly increment sess.byte_pos. 2012-01-25 16:01:58 -07:00
Kevin Atkinson
c5e03e0e59 Keep source file around after parsing.
Specifically box the string (to avoid unnecessary copies) and store it
in codemap::filemap.

Remove the hack in driver::diagnostic that rereads the source from the
file and instead just get the source from the filemap.

(This commit is also a prerequisite for issue #1612)
2012-01-25 16:00:47 -07:00
Marijn Haverbeke
2d4d8e8bdb Implement implicit self type parameters for ifaces
Closes #1661
2012-01-25 20:47:11 +01:00
Marijn Haverbeke
76aabbe99d Rename tag to enum throughout the compiler
This should reduce confusion of people trying to read the code.
2012-01-25 14:34:31 +01:00
Marijn Haverbeke
8420f8c52e Repair zero-variant tags
The parser no longer parsed them.
2012-01-25 14:10:33 +01:00
Marijn Haverbeke
2f0f6c782a Add bit-shifting ops to ast_util::eval_const_expr
Closes #1659
2012-01-25 13:19:32 +01:00
Kevin Cantu
87320a9f27 Replacing str::unsafe_from_bytes with str::from_bytes (part 4) 2012-01-25 01:20:55 -08:00
Kevin Cantu
eaa4befd6d Replacing str::unsafe_from_bytes with str::from_bytes (part 3) 2012-01-25 01:07:05 -08:00
Kevin Cantu
9750e83a17 Replace uses of str::unsafe_from_byte 2012-01-24 23:47:32 -08:00
Brian Anderson
0886b69b76 rustc: Bump the error count on non-span errors 2012-01-24 23:07:16 -08:00
Patrick Walton
9ecd5ee81d rustc: Split diagnostics into "span diagnostics" and "diagnostics".
The former contain a codemap (which is per-crate), and the latter don't. This
will be useful in order to allow more than one crate to be compiled in one run
of the compiler.
2012-01-24 21:42:54 -08:00
Brian Anderson
19cd9686e7 comp: Fix syntax error in parser 2012-01-24 14:03:25 -08:00
Brian Anderson
6763051932 Merge pull request #1631 from j-clark/patch-2
Added to bad_expr_word_table reserved words
2012-01-24 13:57:29 -08:00
Tim Chevalier
a3c31a08e5 Add export{} syntax to encapsulate things that should be abstract 2012-01-23 22:36:38 -08:00
Joshua Clark
ceae107e14 Added to bad_expr_word_table reserved words 2012-01-23 23:19:00 -06:00
Niko Matsakis
5e13d19cc0 s/block()/fn()/g 2012-01-23 19:06:33 -08:00
Kevin Atkinson
4795e19d6d When replacing a pattern variable in macro expansion use the span of
the replacement and not the span of the pattern variable.

Fixes issue #1448, and #1387.
2012-01-23 17:37:15 -08:00
Kevin Atkinson
20ab47fe49 Allow ast_fold_precursor to change the span.
This involved changing the prototype for the callbacks to thread the
span though.  A wrapper function, fold::wrap, can be used to wrap the
old style callbacks.
2012-01-23 17:37:15 -08:00
Kevin Atkinson
ad21d9c64a Don't reset the chpos/byte_pos to 0 in new_parser_from_source_str.
This correctly fixes issue #1362.

chpos/byte_pos are now the offsets within a particular file, but
rather the offsets within a virtual file with is formed by combing all
of the modules within a crate.  Thus, resetting them to 0 causes an
overlap and hence, bogus source locations.

Fix #1362 by moving chpos/byte_pos to parse_sess so that
new_parser_from_source_str has access to them and hence can chose an
initial value that is not already been used in the crate.

Note that the trigger for bug 1361 was that syntax/ext/expand.rs calls
parse_expr_from_source_str (which calls new_parser_from_source_str)
using the same codemap as the current crate (and hence causing overlap
with files in the crate as new_parser_from_source_str resets the
chpos/byte_pos to 0).
2012-01-23 17:37:15 -08:00