40 Commits

Author SHA1 Message Date
Vadim Petrochenkov
fff01ccfa8 Do not abort compilation if expansion produces errors
Fix a number of uncovered deficiencies in diagnostics
2018-12-27 15:51:36 +03:00
Mark Rousskov
2a663555dd Remove licenses 2018-12-25 21:08:33 -07:00
Bruce Mitchener
a62af858e0 Fix typos. 2018-11-11 20:52:36 +07:00
Felix S. Klock II
a2e090624e Removed #[rustc_error] from tests that are all // compile-pass.
I also added `// skip-codegen` to each one, to address potential concerns
that this change would otherwise slow down our test suite spending time
generating code for files that are really just meant to be checks of
compiler diagnostics.

(However, I will say: My preference is to not use `// skip-codegen` if
one can avoid it. We can use all the testing of how we drive LLVM that
we can get...)

(Updated post rebase.)
2018-11-07 13:09:52 +01:00
Felix S. Klock II
0332a39f07 Replaced use of #[rustc_error] with // skip-codegen.
This test specifically notes that it does not want to invoke the
linker, due to the way it (IMO weakly) exercises the `#[link=...]`
attribute.

In any case, removing the the `#[rustc_error]` here uncovered an
"invalid windows subsystem" error that was previously not included in
the transcript of diagnostic output. So that's a step forward, (right?).
2018-11-07 13:09:52 +01:00
Alex Crichton
d7d7045374 rustc: Allow #[no_mangle] anywhere in a crate
This commit updates the compiler to allow the `#[no_mangle]` (and
`#[export_name]` attributes) to be located anywhere within a crate.
These attributes are unconditionally processed, causing the compiler to
always generate an exported symbol with the appropriate name.

After some discussion on #54135 it was found that not a great reason
this hasn't been allowed already, and it seems to match the behavior
that many expect! Previously the compiler would only export a
`#[no_mangle]` symbol if it were *publicly reachable*, meaning that it
itself is `pub` and it's otherwise publicly reachable from the root of
the crate. This new definition is that `#[no_mangle]` *is always
reachable*, no matter where it is in a crate or whether it has `pub` or
not.

This should make it much easier to declare an exported symbol with a
known and unique name, even when it's an internal implementation detail
of the crate itself. Note that these symbols will persist beyond LTO as
well, always making their way to the linker.

Along the way this commit removes the `private_no_mangle_functions` lint
(also for statics) as there's no longer any need to lint these
situations. Furthermore a good number of tests were updated now that
symbol visibility has been changed.

Closes #54135
2018-10-06 13:57:30 -07:00
Vadim Petrochenkov
615eaba14b Feature gate non-builtin attributes in inner attribute position 2018-09-10 03:35:47 +03:00
varkor
120989195f Convert unknown_features lint into an error 2018-08-05 15:54:49 +01:00
varkor
47619c0dc7 Turn the duplicate feature lint into an error 2018-08-05 15:54:49 +01:00
varkor
1511df2521 Add a test for feature attribute consistency
Note that this doesn't test consistency of some properties, like `reason`.
2018-08-05 15:54:49 +01:00
varkor
372e128476 Add test for duplicate features 2018-08-05 15:54:49 +01:00
varkor
c717ccba17 Add a test for unknown features 2018-08-05 15:54:49 +01:00
Oliver Schneider
15a8a66d5c Lint the use of async as an identifier 2018-07-14 20:44:19 +02:00
Esteban Küber
0e3f19d3f1 Do not account for inner/outer attr 2018-06-06 17:39:58 -07:00
Esteban Küber
3cc09c8380 Use consistent span for repr attr suggestion 2018-06-06 17:36:28 -07:00
Esteban Küber
9a80c2b994 Change repr documentation link 2018-06-06 14:33:07 -07:00
Esteban Küber
48e45eec30 Add transparent as valid repr hint 2018-06-06 14:25:50 -07:00
Esteban Küber
3580de8c6d Turn warning into lint 2018-06-06 14:11:48 -07:00
Esteban Küber
2c7099baeb Expand output and suggestions, fix tests 2018-06-06 12:31:43 -07:00
Vadim Petrochenkov
730c7222ee Fix an error from "unused" lint + Fix rebase 2018-05-01 17:02:18 +03:00
Vadim Petrochenkov
300b6bb417 Remove macro_reexport
It's subsumed by `feature(use_extern_macros)` and `pub use`
2018-05-01 15:58:42 +03:00
Zack M. Davis
3dbdccc6a9 stabilize #[must_use] for functions and must-use operators
This is in the matter of RFC 1940 and tracking issue #43302.
2018-04-28 20:32:49 -07:00
Amanieu d'Antras
5f2c111165 Allow #[inline] on closures
Fixes #49632
2018-04-27 12:34:01 +02:00
Zack M. Davis
e77110e1f6 don't see issue #0
The unstable-feature attribute requires an issue (neglecting it is
E0547), which gets used in the error messages. Unfortunately, there are
some cases where "0" is apparently used a placeholder where no issue
exists, directing the user to see the (nonexistent) issue #0. (It would
have been better to either let `issue` be optional—compare to how issue
is an `Option<u32>` in the feature-gate declarations in
libsyntax/feature-gate.rs—or actually require that an issue be created.)
Rather than endeavoring to change how `#[unstable]` works at this time
(given competing contributor and reviewer priorities), this simple patch
proposes the less-ambitious solution of just not adding the "(see
issue)" note when the number is zero.

Resolves #49983.
2018-04-15 11:12:33 -07:00
Guillaume Gomez
812656dc95 Rename must-compile-successfully into compile-pass 2018-04-13 23:28:03 +02:00
John Kåre Alsaker
b1d872b38e Update tests 2018-03-16 11:52:46 +01:00
Eric Huss
2f1b34cc15 Add backticks to main not found errors. 2018-03-14 12:23:29 -07:00
Eric Huss
b08e6d305f Add suggestion where to add main function. 2018-03-14 12:23:29 -07:00
Eric Huss
6aa4dcb9cf Add empty main() to tests where it is missing. 2018-03-14 12:23:28 -07:00
Eric Huss
b4b7ccbd1c Add crate name to "main function not found" error message.
Fixes #44798 and rust-lang/cargo#4948.
2018-03-14 11:40:13 -07:00
Guillaume Gomez
2e104a77cf update tests 2018-03-14 00:53:24 +01:00
Vadim Petrochenkov
7ba5fd168a Update UI tests 2018-02-26 20:24:42 +03:00
Vadim Petrochenkov
fa2d9fc4b9 Update UI tests 2018-02-26 20:24:02 +03:00
Guillaume Gomez
5747fd6611 Update ui tests 2018-02-25 12:15:05 +01:00
Matthias Krüger
4452446292 fix more typos found by codespell. 2018-02-17 17:38:49 +01:00
Alex Crichton
0ecaa67e90 rustc: Refactor attribute checking to operate on HIR
This'll enable running queries that could be cached and overall be more amenable
to the query infastructure.
2018-01-13 16:07:13 -08:00
Robin Kruppe
95c3fc05a9 Remove deprecated unstable attribute #[simd]
The `#[simd]` attribute has been deprecated since c8b6d5b23cc8b2d43ece9f06252c7e98280fb8e5 back in 2015. Any nightly crates using it have had ample time to switch to `#[repr(simd)]`, and if they didn't they're likely broken by now anyway.
2018-01-07 16:33:45 +01:00
Rafael Fernández López
063607eecb
Only bump error count when we are sure that the diagnostic is not a repetition.
This ensures that if we emit the same diagnostic twice, the error count will
match the real number of errors shown to the user.

Fixes #42106
2018-01-03 00:42:12 +01:00
Esteban Küber
95a0458358 Resolve type on return type suggestion 2017-12-09 15:19:39 -08:00
est31
38438c618c Migrate a few feature gate tests to ui
Renames only in this commit, and obviously
.stderr file additions.
2017-12-07 10:14:39 +01:00