Commit graph

4226 commits

Author SHA1 Message Date
root
0e1880d8fe syntax: Join consecutive string literals in format strings together
Emit a single rt::Piece per consecutive string literals. String literals
are split on {{ or }} escapes.

Saves a small amount of static storage and emitted code size.
2014-07-21 09:54:35 -07:00
John Clements
1607064cfe repair macro docs
In f1ad425199, I changed the handling
of macros, to prevent macro invocations from occurring in fully expanded
source. Instead, I added a side table. It contained only the
spans of the macros, because this was the only information required
in order to make macro export work.

However, librustdoc was also affected by this change, since it
extracts macro information in a similar way. As a result of the earlier
change, exported macros were no longer documented.

In order to repair this, I've adjusted the side table to contain whole
items, rather than just the spans.
2014-07-21 09:54:07 -07:00
bors
8748a69e6c auto merge of #15808 : jakub-/rust/use-mod, r=alexcrichton
Implements RFC #168.
2014-07-20 21:06:32 +00:00
bors
c4dd47df34 auto merge of #15805 : Sawyer47/rust/issue-8709, r=alexcrichton
Closes #8709
2014-07-20 19:26:31 +00:00
bors
df997e53af auto merge of #15814 : kvark/rust/ast, r=huonw
Makes working with syntax deriving a bit more pleasuring. For instance, once can use local (non-static) strings anywhere inside `TraitDef` now.
2014-07-20 16:01:32 +00:00
Jakub Wieczorek
4b9bc2e8f2 Implement new mod import sugar
Implements RFC #168.
2014-07-20 12:40:08 +02:00
bors
4f55b52b1a auto merge of #15785 : treeman/rust/fix-15780, r=alexcrichton
Fix for #15780.
2014-07-20 09:31:29 +00:00
Piotr Jawniak
20df4ccafe Correctly stringify! types and paths inside macros
Closes #8709
2014-07-20 08:47:14 +02:00
Alex Crichton
707cf47ac8 Register new snapshots 2014-07-19 20:38:00 -07:00
Dzmitry Malyshau
a2467b945c Fixed lifetimes on syntax deriving structs, implemented Clone 2014-07-19 17:33:17 -04:00
bors
f05a2c97b8 auto merge of #15754 : jakub-/rust/diagnostics, r=alexcrichton 2014-07-19 08:51:34 +00:00
Jonas Hietala
820a55857a Special case for 0 arguments given in format! 2014-07-18 20:39:38 +02:00
Jakub Wieczorek
5274e997ab Assign more diagnostic codes 2014-07-18 20:13:19 +02:00
Jonas Hietala
18717fcf68 Correct plural of arguments in format_args! 2014-07-18 19:25:46 +02:00
Patrick Walton
02adaca4dc librustc: Implement unboxed closures with mutable receivers 2014-07-18 09:01:37 -07:00
bors
d9f1d6b7f6 auto merge of #15732 : bgamari/rust/to-tokens, r=alexcrichton
Here I add a `ToTokens` impl for `Attribute_` and `Option<T>`, as well as generalize the impl for `Vec<T>`
2014-07-18 09:31:22 +00:00
bors
8a308b167f auto merge of #15725 : aochagavia/rust/vec, r=alexcrichton
* Deprecated `to_owned` in favor of `to_vec`
* Deprecated `into_owned` in favor of `into_vec`

[breaking-change]
2014-07-18 03:46:23 +00:00
Patrick Walton
de70d76373 librustc: Remove cross-borrowing of Box<T> to &T from the language,
except where trait objects are involved.

Part of issue #15349, though I'm leaving it open for trait objects.
Cross borrowing for trait objects remains because it is needed until we
have DST.

This will break code like:

    fn foo(x: &int) { ... }

    let a = box 3i;
    foo(a);

Change this code to:

    fn foo(x: &int) { ... }

    let a = box 3i;
    foo(&*a);

[breaking-change]
2014-07-17 14:05:36 -07:00
bors
c4b1077dfb auto merge of #15706 : phi-gamma/rust/master, r=huonw
I kept changes to each file in a separate commit. Please let me know if you prefer them
squashed!
2014-07-17 17:16:23 +00:00
Adolfo Ochagavía
8107ef77f0 Rename functions in the CloneableVector trait
* Deprecated `to_owned` in favor of `to_vec`
* Deprecated `into_owned` in favor of `into_vec`

[breaking-change]
2014-07-17 16:35:48 +02:00
Ben Gamari
e4f8cec416 syntax: Add ToTokens impl for Method 2014-07-17 08:54:43 -04:00
Ben Gamari
a807aa1fca syntax: Add quote_method! 2014-07-17 01:02:27 -04:00
Patrick Walton
fe49cbeb82 libsyntax: Remove Send from PtrTy in deriving.
It'll be complex to port to the new explicit-self regime and it seems to
be unused.
2014-07-16 20:01:53 -07:00
Patrick Walton
357d5cd96c librustc: Implement the fully-expanded, UFCS form of explicit self.
This makes two changes to region inference: (1) it allows region
inference to relate early-bound regions; and (2) it allows regions to be
related before variance runs. The former is needed because there is no
relation between the two regions before region substitution happens,
while the latter is needed because type collection has to run before
variance. We assume that, before variance is inferred, that lifetimes
are invariant. This is a conservative overapproximation.

This relates to #13885. This does not remove `~self` from the language
yet, however.

[breaking-change]
2014-07-16 20:01:52 -07:00
Ben Gamari
96072d6efc syntax: Generalize ToTokens impl for Vec<T>
It will now `flat_map` over the elements of a `Vec<T>` if
`T: ToTokens`
2014-07-16 22:24:42 -04:00
Ben Gamari
8659889ed9 syntax: Add ToTokens for Attribute_ 2014-07-16 22:17:16 -04:00
Ben Gamari
eddc3ccce8 syntax: Add ToTokens for Option<T> 2014-07-16 22:16:55 -04:00
bors
efbbb51ec0 auto merge of #15691 : jbclements/rust/method-field-cleanup, r=alexcrichton
This patch applies the excellent suggestion of @pnkfelix to group the helper methods for method field access into a Trait, making the code much more readable, and much more similar to the way it was before.
2014-07-16 10:26:16 +00:00
Philipp Gesang
778529b13e
obsolete.rs: fix typo in message 2014-07-16 08:01:54 +02:00
Ben Gamari
69ffcdcccf libsyntax::ast: Derive Show impls 2014-07-15 18:54:47 -04:00
John Clements
ca05828cb7 change to new trait style for method field refs
Per @pnkfelix 's suggestion, using a trait to make these
field accesses more readable (and vastly more similar
to the original code.

oops fix new ast_map fix
2014-07-15 14:46:32 -07:00
John Clements
154ca08388 use trait rather than fns
please note the snapshot-waiting unpleasantness. I'm
unable to use the traditional #[cfg(stage0)] mechanism
to swap the new style in for later compiler stages,
because macros invocations in method positions cause
the parser to choke before cfg can strip it out.

Parenthetical note: this problem wouldn't arise with
an interleaved parsing/expansion....
2014-07-15 14:33:14 -07:00
bors
de111e69a8 auto merge of #15615 : jakub-/rust/diagnostics, r=brson 2014-07-15 21:06:12 +00:00
Adolfo Ochagavía
584fbde5d1 Fix errors 2014-07-15 20:34:16 +02:00
Adolfo Ochagavía
211f1caa29 Deprecate str::from_utf8_owned
Use `String::from_utf8` instead

[breaking-change]
2014-07-15 19:55:17 +02:00
Felix S. Klock II
e64f594f10 Extend --pretty flowgraph=ID to include dataflow results in output.
Use one or more of the following `-Z` flag options to tell the
graphviz renderer to include the corresponding dataflow sets (after
the iterative constraint propagation reaches a fixed-point solution):

  * `-Z flowgraph-print-loans` : loans computed via middle::borrowck
  * `-Z flowgraph-print-moves` : moves computed via middle::borrowck::move_data
  * `-Z flowgraph-print-assigns` : assignments, via middle::borrowck::move_data
  * `-Z flowgraph-print-all` : all of the available sets are included.

Fix #15016.

----

This also adds a module, `syntax::ast_map::blocks`, that captures a
common abstraction shared amongst code blocks and procedure-like
things.  As part of this, moved `ast_map.rs` to subdir
`ast_map/mod.rs`, to follow our directory layout conventions.

(incorporated review feedback from huon, acrichto.)
2014-07-15 12:26:56 +02:00
bors
7a6208f2cc auto merge of #15646 : jbclements/rust/method-macros, r=cmr
This patch adds support for macros in method position. It follows roughly the template for Item macros, where an outer `Method` wrapper contains a `Method_` enum which can either be a macro invocation or a standard macro definition. 

One note; adding support for macros that expand into multiple methods is not included here, but should be a simple parser change, since this patch updates the type of fold_macro to return a smallvector of methods.

For reviewers, please pay special attention to the parser changes; these are the ones I'm most concerned about.

Because of the small change to the interface of fold_method, this is a ...

[breaking change]
2014-07-13 19:16:28 +00:00
John Clements
aee5917556 macro expansion for methods
Closes #4621
2014-07-13 10:22:43 -07:00
John Clements
bb333ca392 expansion abstraction 2014-07-13 10:10:38 -07:00
John Clements
2c4b6d6f7d add make_method method to MacResult trait
this allows macro results to be parsed as methods
2014-07-13 10:10:38 -07:00
John Clements
6c8bb5a68a macro in method position parsing 2014-07-13 10:10:38 -07:00
John Clements
6ee2155fe0 remove no-stmt check
nothing wrong with a statement expanding into 0 stmts, that I can see.
2014-07-13 10:10:38 -07:00
John Clements
c4cc3ba130 update fold_method to return a smallvector
This is nice for macros, to allow them to expand into multiple methods
2014-07-13 10:10:38 -07:00
John Clements
b293a6604b macro method unit test case fix 2014-07-13 10:10:27 -07:00
John Clements
b0b4b3122a refactor Method definition to make space for macros
This change propagates to many locations, but because of the
Macro Exterminator (or, more properly, the invariant that it
protects), macro invocations can't occur downstream of expansion.
This means that in librustc and librustdoc, extracting the
desired field can simply assume that it can't be a macro
invocation. Functions in ast_util abstract over this check.
2014-07-13 10:08:27 -07:00
bors
13dc0d7938 auto merge of #15584 : alexcrichton/rust/warn-annoyances, r=cmr
* Don't warn about `#[crate_name]` if `--crate-name` is specified
* Don't warn about non camel case identifiers on `#[repr(C)]` structs
* Switch `mode` to `mode_t` in libc.
2014-07-13 04:46:31 +00:00
Corey Richardson
2dfbe7f989 Use a nicer Show impl for Name 2014-07-12 20:31:55 -07:00
bors
ad7ef8c27c auto merge of #15621 : sfackler/rust/attr-span, r=cmr
They used to be one token too long, so you'd see things like
```
rust/rust/test.rs:1:1: 2:2 warning: unused attribute,
rust/rust/test.rs:1 #![foo]
rust/rust/test.rs:2 #![bar]
```
instead of
```
test.rs:1:1: 1:8 warning: unused attribute, #[warn(unused_attribute)] on
by default
test.rs:1 #![foo]
          ^~~~~~~
```
2014-07-13 03:01:32 +00:00
Jakub Wieczorek
a5fe176e97 Convert a first batch of diagnostics to have error codes 2014-07-12 21:53:34 +02:00
bors
f2d251d12e auto merge of #15610 : brson/rust/0.12.0, r=alexcrichton 2014-07-12 18:06:36 +00:00