2054 Commits

Author SHA1 Message Date
John Clements
0c31c930ff add test case for macro token comparison 2013-09-06 13:35:10 -07:00
John Clements
963dab5dcb marking on both input and output from macros. nice shiny new test case framework 2013-09-06 13:35:10 -07:00
John Clements
58e7598c2e added gensym_copy mechanism to ensure sharing of pointers in the interner
this makes comparisons constant-time, and enables spelling-comparison
of identifiers, crucial in many parts of resolve.
2013-09-06 13:35:10 -07:00
John Clements
9d33001a90 added test for ptr_eq on fresh_name-generated idents 2013-09-06 13:35:09 -07:00
John Clements
cd4e637ae4 fixed bug in fold's traversal of cast exprs 2013-09-06 13:35:09 -07:00
John Clements
d876a721d2 new test that uncovers bug in fold 2013-09-06 13:35:09 -07:00
John Clements
015ba31c02 test case support fns, remove debugging test case 2013-09-06 13:35:09 -07:00
John Clements
62fee04ae9 test case work 2013-09-06 13:35:09 -07:00
John Clements
1f8e856430 re-add lost call to expand_block_elts 2013-09-06 13:35:09 -07:00
John Clements
9071ac60b6 re-add debug version 2013-09-06 13:35:09 -07:00
John Clements
7a9af098f0 test case work 2013-09-06 13:35:09 -07:00
John Clements
f5ab867119 use empty_ctxt to simplify downstream 2013-09-06 13:35:09 -07:00
John Clements
a666ddc135 make comparison of special_idents non-hygienic 2013-09-06 13:35:08 -07:00
John Clements
3965725d51 comments 2013-09-06 13:35:08 -07:00
John Clements
d1c01734f3 drop back to a simple gensym approach for fresh-name.
this is necessary so that the new idents are connected to the original strings.
this is important both for error messages, and so that top-level refs get connected
to the right things.
2013-09-06 13:35:08 -07:00
John Clements
7bf75adfd9 added FIXME comment 2013-09-06 13:35:08 -07:00
John Clements
9de40dfc87 remove FIXME #2888, now bug is fixed 2013-09-06 13:35:08 -07:00
John Clements
98a6cbdba3 comments only 2013-09-06 13:35:08 -07:00
John Clements
91d3c36430 adding test case to check marking/unmarking 2013-09-06 13:35:08 -07:00
John Clements
b7c0512b27 refactor so tt_fold only requires an ident->ident fn 2013-09-06 13:35:08 -07:00
John Clements
93337f0daa separate ItemDecorator from ItemDecorator 2013-09-06 13:35:08 -07:00
John Clements
431ede40df removed unneccessary SyntaxExpander structs 2013-09-06 13:35:07 -07:00
John Clements
d8276e75f0 comments in ast.rs 2013-09-06 13:35:07 -07:00
John Clements
6c6d053b01 renaming test cases 2013-09-06 13:35:07 -07:00
John Clements
2f6498f7b4 flip the switch on let renaming 2013-09-06 13:35:07 -07:00
John Clements
fa6c981606 add hygiene support fns, move them around.
also adds test cases
2013-09-06 13:35:06 -07:00
John Clements
72ee6af4d4 compare macro tokens hygienically (commented out) 2013-09-06 13:35:06 -07:00
John Clements
e1734f6d38 rename resolve to mtwt_resolve 2013-09-06 13:35:06 -07:00
John Clements
acad9f35b3 commenting out special Eq implementation for now
See the comments for details on why I'm leaving this code
in, though commented out.
2013-09-06 13:34:58 -07:00
John Clements
77c96d754e disallow ident equality checks when contexts are not equal 2013-09-06 09:28:45 -07:00
bors
6f9ce0948a auto merge of #8997 : fhahn/rust/issue_8985, r=catamorphism,brson
Patch for #8985
2013-09-05 15:00:49 -07:00
bors
d1dde99e4b auto merge of #8992 : chris-morgan/rust/unreachable-macro, r=brson
Rationale: having a function which fails means that the location of
failure which is output is that of the unreachable() function, rather
than the caller.

This is part of #8991 but is not all of it; current usage of
``std::util::unreachable()`` must remain so for the moment, until a new
snapshot is made; then I will remove that function entirely in favour of
using this macro.
2013-09-05 13:50:46 -07:00
Florian Hahn
de39874801 Rename str::from_bytes to str::from_utf8, closes #8985 2013-09-05 14:17:24 +02:00
Alex Crichton
8a966183fe Remove the __log function for __log_level
Also redefine all of the standard logging macros to use more rust code instead
of custom LLVM translation code. This makes them a bit easier to understand, but
also more flexibile for future types of logging.

Additionally, this commit removes the LogType language item in preparation for
changing how logging is performed.
2013-09-05 01:48:20 -07:00
bors
3c3ae1d0e2 auto merge of #8875 : alexcrichton/rust/fix-inner-static-library-bug, r=huonw
These commits fix bugs related to identically named statics in functions of implementations in various situations. The commit messages have most of the information about what bugs are being fixed and why.

As a bonus, while I was messing around with name mangling, I improved the backtraces we'll get in gdb by removing `__extensions__` for the trait/type being implemented and by adding the method name as well. Yay!
2013-09-04 23:55:46 -07:00
Chris Morgan
6b7b8f2682 Add an `unreachable!()` macro.
Rationale: having a function which fails means that the location of
failure which is output is that of the unreachable() function, rather
than the caller.

This is part of #8991 but is not all of it; current usage of
``std::util::unreachable()`` must remain so for the moment, until a new
snapshot is made; then I will remove that function entirely in favour of
using this macro.
2013-09-05 16:41:27 +10:00
Alex Crichton
7baff57f26 Improve name mangling for gdb
Remove __extensions__ from method symbols as well as the meth_XXX. The XXX is
now used to append a few characters at the end of the name of the symbol.

Closes #6602
2013-09-04 23:28:23 -07:00
bors
b161e09e03 auto merge of #8977 : pnkfelix/rust/fsk-followup-on-6009-rebased, r=alexcrichton
Fix #6009.  Rebased version of #8970.  Inherits review from alexcrichton.
2013-09-04 16:20:46 -07:00
Michael Woerister
5b94ae93f3 debuginfo: Fixed some merge fallout 2013-09-04 19:31:13 +02:00
Michael Woerister
b81ea86530 debuginfo: Support for variables captured in closures and closure type descriptions. 2013-09-04 18:38:46 +02:00
Daniel Micay
62a3434529 stop treating char as an integer type
Closes #7609
2013-09-04 08:07:56 -04:00
Felix S. Klock II
6fbb64acbe Make non-pub condition! expand to non-pub mod. Fix #6009. 2013-09-04 10:05:10 +02:00
bors
383073883f auto merge of #8963 : jmgrosen/rust/issue-8881, r=alexcrichton 2013-09-03 19:46:42 -07:00
jmgrosen
4a18d46130 Fixes #8881. condition! imports parent's pub identifiers 2013-09-03 16:11:00 -07:00
bors
b4ff0bca4c auto merge of #8921 : huonw/rust/stability, r=brson
Significant progress on #6875, enough that I'll open new bugs and turn that into a metabug when this lands.

Description & example in the commit message.
2013-09-03 12:22:16 -07:00
bors
dee9d7f97f auto merge of #8945 : alexcrichton/rust/ifmt-dont-move, r=thestinger 2013-09-03 09:50:58 -07:00
Huon Wilson
506f69aed7 Implement support for indicating the stability of items.
There are 6 new compiler recognised attributes: deprecated, experimental,
unstable, stable, frozen, locked (these levels are taken directly from
Node's "stability index"[1]). These indicate the stability of the
item to which they are attached; e.g. `#[deprecated] fn foo() { .. }`
says that `foo` is deprecated.

This comes with 3 lints for the first 3 levels (with matching names) that
will detect the use of items marked with them (the `unstable` lint
includes items with no stability attribute). The attributes can be given
a short text note that will be displayed by the lint. An example:

    #[warn(unstable)]; // `allow` by default

    #[deprecated="use `bar`"]
    fn foo() { }

    #[stable]
    fn bar() { }

    fn baz() { }

    fn main() {
        foo(); // "warning: use of deprecated item: use `bar`"

        bar(); // all fine

        baz(); // "warning: use of unmarked item"
    }

The lints currently only check the "edges" of the AST: i.e. functions,
methods[2], structs and enum variants. Any stability attributes on modules,
enums, traits and impls are not checked.

[1]: http://nodejs.org/api/documentation.html
[2]: the method check is currently incorrect and doesn't work.
2013-09-04 00:12:27 +10:00
bors
d252d810fc auto merge of #8939 : Kimundi/rust/master, r=huonw 2013-09-03 04:36:03 -07:00
Marvin Löbel
7419085337 Modernized a few more types in syntax::ast 2013-09-03 14:45:06 +02:00
bors
8183c74ec1 auto merge of #8940 : pnkfelix/rust/fsk-8468-allow-underscore-paramname-in-trait-default-method, r=alexcrichton
Fix #8468.  (Though the right answer in the end, as noted on the dialogue on the ticket, might be to just require trait methods to name their parameters, regardless of whether they have a default method implementation or not.)
2013-09-03 02:56:03 -07:00