Commit graph

4462 commits

Author SHA1 Message Date
Alex Crichton
eeb94886ad std: Remove deprecated/unstable num functionality
This commit removes all the old casting/generic traits from `std::num` that are
no longer in use by the standard library. This additionally removes the old
`strconv` module which has not seen much use in quite a long time. All generic
functionality has been supplanted with traits in the `num` crate and the
`strconv` module is supplanted with the [rust-strconv crate][rust-strconv].

[rust-strconv]: https://github.com/lifthrasiir/rust-strconv

This is a breaking change due to the removal of these deprecated crates, and the
alternative crates are listed above.

[breaking-change]
2015-04-21 11:37:43 -07:00
Piotr Czarnecki
13bc8afa4b Model lexer: Fix remaining issues 2015-04-21 12:02:12 +02:00
Manish Goregaokar
cb7a12757b Rollup merge of #24542 - michaelsproul:rollup, r=alexcrichton
I did a manual merge of all the extended error PRs as we were getting merge conflicts yesterday. I think this is preferable to merging separately as I ended up having to manually merge @nham and @GuillaumeGomez's commits.

Rollup of #24458, #24482 and #24488.

#24482 and #24488 were already re-approved, and would need to be cancelled if this is merged instead.
2015-04-18 23:29:57 +05:30
bors
7a5754b330 Auto merge of #24428 - kwantam:deprecate_unicode_fns, r=alexcrichton
This patch
1. renames libunicode to librustc_unicode,
2. deprecates several pieces of libunicode (see below), and
3. removes references to deprecated functions from
   librustc_driver and libsyntax. This may change pretty-printed
   output from these modules in cases involving wide or combining
   characters used in filenames, identifiers, etc.

The following functions are marked deprecated:

1. char.width() and str.width():
   --> use unicode-width crate

2. str.graphemes() and str.grapheme_indices():
   --> use unicode-segmentation crate

3. str.nfd_chars(), str.nfkd_chars(), str.nfc_chars(), str.nfkc_chars(),
   char.compose(), char.decompose_canonical(), char.decompose_compatible(),
   char.canonical_combining_class():
   --> use unicode-normalization crate
2015-04-18 07:09:22 +00:00
bors
1284be4044 Auto merge of #23985 - erickt:derive-cleanup, r=erickt
This extracts some of the minor cleanup patches from #23905.
2015-04-18 00:48:34 +00:00
Manish Goregaokar
9c4995f694 Rollup merge of #24454 - aochagavia:debug, r=alexcrichton
Implement `Debug`, `Display` and `Error` for `FatalError` and `ExplicitBug`
2015-04-17 18:32:26 +05:30
Manish Goregaokar
373463615a Rollup merge of #24430 - laumann:trace-macros-flag, r=pnkfelix
This is the second attempt at turning the trace_macros macro into a compiler flag.

See #22619
2015-04-17 18:32:25 +05:30
Michael Sproul
6d2b6d5a19 Enforce 80 char lines in extended errors. 2015-04-17 21:35:24 +10:00
Michael Sproul
dd5eed4b81 Validate format of extended error descriptions. 2015-04-17 21:30:41 +10:00
Luke Gallagher
6d36714633 Fix some documentation typos 2015-04-16 22:23:36 -04:00
Mathijs van de Nes
0afdab11ec Omit 'obsolete' note for warning if -Awarning 2015-04-16 22:23:36 -04:00
kwantam
29d1252e4d deprecate Unicode functions that will be moved to crates.io
This patch
1. renames libunicode to librustc_unicode,
2. deprecates several pieces of libunicode (see below), and
3. removes references to deprecated functions from
   librustc_driver and libsyntax. This may change pretty-printed
   output from these modules in cases involving wide or combining
   characters used in filenames, identifiers, etc.

The following functions are marked deprecated:

1. char.width() and str.width():
   --> use unicode-width crate

2. str.graphemes() and str.grapheme_indices():
   --> use unicode-segmentation crate

3. str.nfd_chars(), str.nfkd_chars(), str.nfc_chars(), str.nfkc_chars(),
   char.compose(), char.decompose_canonical(), char.decompose_compatible(),
   char.canonical_combining_class():
   --> use unicode-normalization crate
2015-04-16 17:03:05 -04:00
bors
8f209d5a3e Auto merge of #24423 - tbelaire:include_bytes, r=alexcrichton
This is a little bit tricky, since with include_str!, we know that we
are including utf-8 content, so it's safe to store the source as a
String in a FileMap. We don't know that for include_bytes!, but I don't
think we actually need to track the contents anyways, so I'm passing "".

new_filemap does check for the zero length content, and it should be
reasonable, howeven I'm not sure if it would be better to pass None
instead of Some(Rc::new("")) as the src component of a FileMap.

Fixes bug #24348
2015-04-16 08:28:27 +00:00
bors
288809c8f3 Auto merge of #23682 - tamird:DRY-is-empty, r=alexcrichton
r? @alexcrichton
2015-04-16 03:22:21 +00:00
Erick Tryzelaar
ed437cd8fc syntax: Clean up the indentation for #[derive(Eq)] 2015-04-15 19:49:25 -07:00
Erick Tryzelaar
9edc7deb8d syntax: Change deriving methods to take a &mut FnMut(P<Item>)
This allows #[derive(...)]` to create more than one impl
2015-04-15 19:49:25 -07:00
Erick Tryzelaar
6557f4b269 syntax: Rename deriving/cmp/* to match their current names 2015-04-15 19:48:09 -07:00
bors
e40449e0d5 Auto merge of #24485 - brson:is, r=alexcrichton
It was an oversight that this was not done in the great int upheaval.

[breaking-change]
2015-04-16 01:17:04 +00:00
Brian Anderson
5a3a599428 Forbid is/us suffixes. Fixes #22496
It was an oversight that this was not done in the great int upheaval.

[breaking-change]
2015-04-15 16:13:26 -07:00
Steve Klabnik
63d524d4ab Rollup merge of #24438 - nrc:tuple-span, r=sfackler 2015-04-15 17:26:07 -04:00
bors
ce27d024ff Auto merge of #24436 - fhahn:fix-small-typo, r=steveklabnik 2015-04-15 16:19:00 +00:00
Adolfo Ochagavía
9891ea74d6 Implement traits for parser error structs
Implement `Debug`, `Display` and `Error` for `FatalError` and `ExplicitBug`
2015-04-15 11:17:58 +02:00
Tamir Duberstein
10f15e72e6 Negative case of len() -> is_empty()
`s/([^\(\s]+\.)len\(\) [(?:!=)>] 0/!$1is_empty()/g`
2015-04-14 20:26:03 -07:00
Tamir Duberstein
29ac04402d Positive case of len() -> is_empty()
`s/(?<!\{ self)(?<=\.)len\(\) == 0/is_empty()/g`
2015-04-14 20:26:03 -07:00
Nick Cameron
f37365ea92 Fix the span for tuple expressions 2015-04-15 11:20:17 +12:00
Florian Hahn
4f3d400b3d Remove superfluous the from custom_attribute feature gate message 2015-04-14 23:27:16 +02:00
Alex Crichton
30425bfe54 Test fixes and rebase conflicts 2015-04-14 13:50:03 -07:00
Alex Crichton
d7ff4f5195 rollup merge of #24391: nrc/visit-vis 2015-04-14 10:55:55 -07:00
Alex Crichton
52067fd58f rollup merge of #24381: erickt/cleanup
Just some minor patches I've been sitting on.
2015-04-14 10:55:53 -07:00
Theo Belaire
9f481b8514 include_bytes! now registers the file included
This is a little bit tricky, since with include_str!, we know that we
are including utf-8 content, so it's safe to store the source as a
String in a FileMap. We don't know that for include_bytes!, but I don't
think we actually need to track the contents anyways, so I'm passing "".

new_filemap does check for the zero length content, and it should be
reasonable, howeven I'm not sure if it would be better to pass None
instead of Some(Rc::new("")) as the src component of a FileMap.

Fixes bug #24348
2015-04-14 13:53:23 -04:00
Alex Crichton
dddfbe0441 syntax: Remove derive(Rand) 2015-04-14 10:14:19 -07:00
Alex Crichton
bf4e77d4b5 std: Remove old_io/old_path/rand modules
This commit entirely removes the old I/O, path, and rand modules. All
functionality has been deprecated and unstable for quite some time now!
2015-04-14 10:14:11 -07:00
bors
dabf0c6371 Auto merge of #24312 - rprichard:destabilize-format-args, r=alexcrichton
Fixes #22953.
2015-04-14 14:41:15 +00:00
Thomas Jespersen
d14109ec7e Add "trace-macros" as a compiler flag
Fixes #22619
2015-04-14 15:36:38 +02:00
bors
a4eb5a66a5 Auto merge of #24295 - contradictioned:master, r=alexcrichton
As i proposed in #24262 (and found acceptance in the IRC channel), added a compiler warning for wrong escaping of curly braces.
2015-04-14 06:54:20 +00:00
Nick Cameron
01678acf50 Expose visibility for fns in syntax::visit 2015-04-14 09:54:58 +12:00
Erick Tryzelaar
951db77267 syntax: Publically expose printing where clauses, and add attr_to_string 2015-04-13 10:49:34 -07:00
Manuel Hoffmann
4abade50d7 Added a help span which informs the user about the escaping of curly braces in a format string if a wrongly escaped one is detected in a string. 2015-04-13 15:56:10 +02:00
bors
49798c597f Auto merge of #24323 - rprichard:panic-line-type, r=alexcrichton
There are syntax extensions that call `std::rt::begin_unwind` passing it a `usize`.  I updated the syntax extension to instead pass `u32`, but for bootstrapping reasons, I needed to create a `#[cfg(stage0)]` version of `std::rt::begin_unwind` and therefore also `panic!`.
2015-04-13 05:55:50 +00:00
Ryan Prichard
bd26307411 Use the ecx.call_site() span for generating refs to format_args! internals
`format_args!` uses `#[allow_internal_unstable]` to access internal
functions and structs that are marked unstable. For this to work, the
spans on AST nodes referencing unstable internals must be equal (same
lo/hi values) to the `format_args!` call site, so that the stability
checker can recognize that the AST node was generated by the macro.
2015-04-12 22:01:55 -07:00
bors
a1e3c25a26 Auto merge of #24248 - nrc:macro-span, r=sfackler 2015-04-12 09:03:04 +00:00
bors
feeb23d42e Auto merge of #24003 - rprichard:span-fixes, r=huonw
* In `noop_fold_expr`, call `new_span` in these cases:
    - `ExprMethodCall`'s identifier
    - `ExprField`'s identifier
    - `ExprTupField`'s integer

   Calling `new_span` for `ExprMethodCall`'s identifier is necessary to print
   an acceptable diagnostic for `write!(&2, "")`. We see this error:
   ```
   <std macros>:2:20: 2:66 error: type `&mut _` does not implement any method in scope named `write_fmt`
   <std macros>:2 ( & mut * $ dst ) . write_fmt ( format_args ! ( $ ( $ arg ) * ) ) )
                                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   ```
   With this change, we also see a macro expansion backtrace leading to
   the `write!(&2, "")` call site.

 * After fully expanding a macro, we replace the expansion expression's
   span with the original span. Call `fld.new_span` to add a backtrace to
   this span. (Note that I'm call `new_span` after `bt.pop()`, so the macro
   just expanded isn't on the backtrace.)

   The motivating example for this change is `println!("{}")`. The format
   string literal is `concat!($fmt, "arg")` and is inside the libstd macro.
   We need to see the backtrace to find the `println!` call site.

 * Add a backtrace to the `format_args!` format expression span.

r?  alexcrichton

Addresses #23459
2015-04-12 06:48:28 +00:00
Nick Cameron
b9fa6c67fb Fix spans for macros 2015-04-12 13:28:17 +12:00
bors
5afa2704a6 Auto merge of #23011 - nagisa:the-war-of-symbol-and-symbol, r=pnkfelix
We provide tools to tell what exact symbols to emit for any fn or static, but
don’t quite check if that won’t cause any issues later on. Some of the issues
include LLVM mangling our names again and our names pointing to wrong locations,
us generating dumb foreign call wrappers, linker errors, extern functions
resolving to different symbols altogether (`extern {fn fail();} fail();` in some
cases calling `fail1()`), etc.

Before the commit we had a function called `note_unique_llvm_symbol`, so it is
clear somebody was aware of the issue at some point, but the function was barely
used, mostly in irrelevant locations.

Along with working on it I took liberty to start refactoring trans/base into
a few smaller modules. The refactoring is incomplete and I hope I will find some
motivation to carry on with it.

This is possibly a [breaking-change] because it makes dumbly written code
properly invalid.

This fixes all those issues about incorrect use of #[no_mangle] being not reported/misreported/ICEd by the compiler.

NB. This PR does not attempt to tackle the parallel codegen issue that was mentioned in https://github.com/rust-lang/rust/pull/22811, but I believe it should be very straightforward in a follow up PR by modifying `trans::declare::get_defined_value` to look at all the contexts.

cc @alexcrichton @huonw @nrc because you commented on the original RFC issue.

EDIT: wow, this became much bigger than I initially intended.
2015-04-12 01:26:53 +00:00
Ryan Prichard
ddbdf51f39 Remove the vestigial ExtCtxt::print_backtrace function.
It was added in 2011-08-05 and reduced to a no-op ten days later.
2015-04-11 16:48:52 -07:00
Ryan Prichard
fab3295cba Suppress the macro backtrace for fileline_note and fileline_help. 2015-04-11 16:48:31 -07:00
Ryan Prichard
0f46e4f1f2 Propagate macro backtraces more often, improve formatting diagnostics
* In noop_fold_expr, call new_span in these cases:
    - ExprMethodCall's identifier
    - ExprField's identifier
    - ExprTupField's integer

   Calling new_span for ExprMethodCall's identifier is necessary to print
   an acceptable diagnostic for write!(&2, ""). We see this error:

       <std macros>:2:20: 2:66 error: type `&mut _` does not implement any method in scope named `write_fmt`
       <std macros>:2 ( & mut * $ dst ) . write_fmt ( format_args ! ( $ ( $ arg ) * ) ) )
                                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

   With this change, we also see a macro expansion backtrace leading to
   the write!(&2, "") call site.

 * After fully expanding a macro, we replace the expansion expression's
   span with the original span. Call fld.new_span to add a backtrace to
   this span. (Note that I'm call new_span after bt.pop(), so the macro
   just expanded isn't on the backtrace.)

   The motivating example for this change is println!("{}"). The format
   string literal is concat!($fmt, "arg") and is inside the libstd macro.
   We need to see the backtrace to find the println! call site.

 * Add a backtrace to the format_args! format expression span.

Addresses #23459
2015-04-11 16:00:58 -07:00
Manish Goregaokar
5bbe386a5c Rollup merge of #24242 - nikomatsakis:escaping-closure-error-message, r=brson
Example showing sample inputs, old message, new message:

https://gist.github.com/nikomatsakis/11126784ac678b7eb6ba

Also adds infrastructure for reporting suggestions \"in situ\" and does some (minor) cleanups to `CodeMap`.

r? @brson
2015-04-11 19:04:03 +05:30
Ryan Prichard
ef25b7d538 Change the rt::unwind line argument type from usize to u32. 2015-04-11 02:46:57 -07:00
bors
0be4e0ec50 Auto merge of #24155 - chris-chambers:stmt_macros, r=sfackler
Statement macros are now treated somewhat like item macros, in that a statement macro can now expand into a series of statements, rather than just a single statement.

This allows statement macros to be nested inside other kinds of macros and expand properly, where previously the expansion would only work when no nesting was present.

See:
- `src/test/run-pass/macro-stmt_macro_in_expr_macro.rs`
- `src/test/run-pass/macro-nested_stmt_macro.rs`

This changes the interface of the MacResult trait.  make_stmt has become make_stmts and now returns a vector, rather than a single item.  Plugin writers who were implementing MacResult will have breakage, as well as anyone using MacEager::stmt.

See:
- `src/libsyntax/ext/base.rs`

This also causes a minor difference in behavior to the diagnostics produced by certain malformed macros.

See:
- `src/test/compile-fail/macro-incomplete-parse.rs`
2015-04-11 08:07:34 +00:00