mirror of
https://github.com/rust-lang/rust.git
synced 2024-10-31 14:31:55 +00:00
Ensure codegen_fn_attrs during collection.
This commit is contained in:
parent
928d14bcd1
commit
dba1503ed3
@ -314,6 +314,7 @@ impl<'tcx> Visitor<'tcx> for CollectItemTypesVisitor<'tcx> {
|
|||||||
if let hir::ExprKind::Closure { .. } = expr.kind {
|
if let hir::ExprKind::Closure { .. } = expr.kind {
|
||||||
let def_id = self.tcx.hir().local_def_id(expr.hir_id);
|
let def_id = self.tcx.hir().local_def_id(expr.hir_id);
|
||||||
self.tcx.ensure().generics_of(def_id);
|
self.tcx.ensure().generics_of(def_id);
|
||||||
|
self.tcx.ensure().codegen_fn_attrs(def_id);
|
||||||
// We do not call `type_of` for closures here as that
|
// We do not call `type_of` for closures here as that
|
||||||
// depends on typecheck and would therefore hide
|
// depends on typecheck and would therefore hide
|
||||||
// any further errors in case one typeck fails.
|
// any further errors in case one typeck fails.
|
||||||
@ -586,8 +587,12 @@ fn convert_item(tcx: TyCtxt<'_>, item_id: hir::ItemId) {
|
|||||||
tcx.ensure().type_of(item.owner_id);
|
tcx.ensure().type_of(item.owner_id);
|
||||||
tcx.ensure().predicates_of(item.owner_id);
|
tcx.ensure().predicates_of(item.owner_id);
|
||||||
match item.kind {
|
match item.kind {
|
||||||
hir::ForeignItemKind::Fn(..) => tcx.ensure().fn_sig(item.owner_id),
|
hir::ForeignItemKind::Fn(..) => {
|
||||||
|
tcx.ensure().codegen_fn_attrs(item.owner_id);
|
||||||
|
tcx.ensure().fn_sig(item.owner_id)
|
||||||
|
}
|
||||||
hir::ForeignItemKind::Static(..) => {
|
hir::ForeignItemKind::Static(..) => {
|
||||||
|
tcx.ensure().codegen_fn_attrs(item.owner_id);
|
||||||
let mut visitor = HirPlaceholderCollector::default();
|
let mut visitor = HirPlaceholderCollector::default();
|
||||||
visitor.visit_foreign_item(item);
|
visitor.visit_foreign_item(item);
|
||||||
placeholder_type_error(
|
placeholder_type_error(
|
||||||
@ -676,6 +681,7 @@ fn convert_item(tcx: TyCtxt<'_>, item_id: hir::ItemId) {
|
|||||||
tcx.ensure().type_of(def_id);
|
tcx.ensure().type_of(def_id);
|
||||||
tcx.ensure().predicates_of(def_id);
|
tcx.ensure().predicates_of(def_id);
|
||||||
tcx.ensure().fn_sig(def_id);
|
tcx.ensure().fn_sig(def_id);
|
||||||
|
tcx.ensure().codegen_fn_attrs(def_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -687,6 +693,7 @@ fn convert_trait_item(tcx: TyCtxt<'_>, trait_item_id: hir::TraitItemId) {
|
|||||||
|
|
||||||
match trait_item.kind {
|
match trait_item.kind {
|
||||||
hir::TraitItemKind::Fn(..) => {
|
hir::TraitItemKind::Fn(..) => {
|
||||||
|
tcx.ensure().codegen_fn_attrs(def_id);
|
||||||
tcx.ensure().type_of(def_id);
|
tcx.ensure().type_of(def_id);
|
||||||
tcx.ensure().fn_sig(def_id);
|
tcx.ensure().fn_sig(def_id);
|
||||||
}
|
}
|
||||||
@ -736,6 +743,7 @@ fn convert_impl_item(tcx: TyCtxt<'_>, impl_item_id: hir::ImplItemId) {
|
|||||||
let impl_item = tcx.hir().impl_item(impl_item_id);
|
let impl_item = tcx.hir().impl_item(impl_item_id);
|
||||||
match impl_item.kind {
|
match impl_item.kind {
|
||||||
hir::ImplItemKind::Fn(..) => {
|
hir::ImplItemKind::Fn(..) => {
|
||||||
|
tcx.ensure().codegen_fn_attrs(def_id);
|
||||||
tcx.ensure().fn_sig(def_id);
|
tcx.ensure().fn_sig(def_id);
|
||||||
}
|
}
|
||||||
hir::ImplItemKind::Type(_) => {
|
hir::ImplItemKind::Type(_) => {
|
||||||
|
@ -219,18 +219,6 @@ impl CheckAttrVisitor<'_> {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME(@lcnr): this doesn't belong here.
|
|
||||||
if matches!(
|
|
||||||
target,
|
|
||||||
Target::Closure
|
|
||||||
| Target::Fn
|
|
||||||
| Target::Method(_)
|
|
||||||
| Target::ForeignFn
|
|
||||||
| Target::ForeignStatic
|
|
||||||
) {
|
|
||||||
self.tcx.ensure().codegen_fn_attrs(self.tcx.hir().local_def_id(hir_id));
|
|
||||||
}
|
|
||||||
|
|
||||||
self.check_repr(attrs, span, target, item, hir_id);
|
self.check_repr(attrs, span, target, item, hir_id);
|
||||||
self.check_used(attrs, target);
|
self.check_used(attrs, target);
|
||||||
}
|
}
|
||||||
|
@ -22,8 +22,6 @@ trait MyIndex<'a, T> {}
|
|||||||
#[lang = "phantom_data"]
|
#[lang = "phantom_data"]
|
||||||
//~^ ERROR `phantom_data` language item must be applied to a struct with 1 generic argument
|
//~^ ERROR `phantom_data` language item must be applied to a struct with 1 generic argument
|
||||||
struct MyPhantomData<T, U>;
|
struct MyPhantomData<T, U>;
|
||||||
//~^ ERROR parameter `T` is never used
|
|
||||||
//~| ERROR parameter `U` is never used
|
|
||||||
|
|
||||||
#[lang = "owned_box"]
|
#[lang = "owned_box"]
|
||||||
//~^ ERROR `owned_box` language item must be applied to a struct with at least 1 generic argument
|
//~^ ERROR `owned_box` language item must be applied to a struct with at least 1 generic argument
|
||||||
|
@ -33,7 +33,7 @@ LL | struct MyPhantomData<T, U>;
|
|||||||
| ------ this struct has 2 generic arguments
|
| ------ this struct has 2 generic arguments
|
||||||
|
|
||||||
error[E0718]: `owned_box` language item must be applied to a struct with at least 1 generic argument
|
error[E0718]: `owned_box` language item must be applied to a struct with at least 1 generic argument
|
||||||
--> $DIR/lang-item-generic-requirements.rs:28:1
|
--> $DIR/lang-item-generic-requirements.rs:26:1
|
||||||
|
|
|
|
||||||
LL | #[lang = "owned_box"]
|
LL | #[lang = "owned_box"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
@ -42,7 +42,7 @@ LL | struct Foo;
|
|||||||
| - this struct has 0 generic arguments
|
| - this struct has 0 generic arguments
|
||||||
|
|
||||||
error[E0718]: `start` language item must be applied to a function with 1 generic argument
|
error[E0718]: `start` language item must be applied to a function with 1 generic argument
|
||||||
--> $DIR/lang-item-generic-requirements.rs:34:1
|
--> $DIR/lang-item-generic-requirements.rs:32:1
|
||||||
|
|
|
|
||||||
LL | #[lang = "start"]
|
LL | #[lang = "start"]
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
@ -50,25 +50,6 @@ LL |
|
|||||||
LL | fn start(_: *const u8, _: isize, _: *const *const u8) -> isize {
|
LL | fn start(_: *const u8, _: isize, _: *const *const u8) -> isize {
|
||||||
| - this function has 0 generic arguments
|
| - this function has 0 generic arguments
|
||||||
|
|
||||||
error[E0392]: parameter `T` is never used
|
error: aborting due to 6 previous errors
|
||||||
--> $DIR/lang-item-generic-requirements.rs:24:22
|
|
||||||
|
|
|
||||||
LL | struct MyPhantomData<T, U>;
|
|
||||||
| ^ unused parameter
|
|
||||||
|
|
|
||||||
= help: consider removing `T` or referring to it in a field
|
|
||||||
= help: if you intended `T` to be a const parameter, use `const T: usize` instead
|
|
||||||
|
|
||||||
error[E0392]: parameter `U` is never used
|
For more information about this error, try `rustc --explain E0718`.
|
||||||
--> $DIR/lang-item-generic-requirements.rs:24:25
|
|
||||||
|
|
|
||||||
LL | struct MyPhantomData<T, U>;
|
|
||||||
| ^ unused parameter
|
|
||||||
|
|
|
||||||
= help: consider removing `U` or referring to it in a field
|
|
||||||
= help: if you intended `U` to be a const parameter, use `const U: usize` instead
|
|
||||||
|
|
||||||
error: aborting due to 8 previous errors
|
|
||||||
|
|
||||||
Some errors have detailed explanations: E0392, E0718.
|
|
||||||
For more information about an error, try `rustc --explain E0392`.
|
|
||||||
|
@ -3,7 +3,11 @@ fn main() {
|
|||||||
.map(
|
.map(
|
||||||
#[target_feature(enable = "")]
|
#[target_feature(enable = "")]
|
||||||
//~^ ERROR: attribute should be applied to a function
|
//~^ ERROR: attribute should be applied to a function
|
||||||
|
//~| ERROR: feature named `` is not valid
|
||||||
|
//~| NOTE: `` is not valid for this target
|
||||||
#[track_caller]
|
#[track_caller]
|
||||||
|
//~^ ERROR: `#[track_caller]` on closures is currently unstable
|
||||||
|
//~| NOTE: see issue #87417
|
||||||
|_| (),
|
|_| (),
|
||||||
//~^ NOTE: not a function
|
//~^ NOTE: not a function
|
||||||
)
|
)
|
||||||
|
@ -7,5 +7,21 @@ LL | #[target_feature(enable = "")]
|
|||||||
LL | |_| (),
|
LL | |_| (),
|
||||||
| ------ not a function definition
|
| ------ not a function definition
|
||||||
|
|
||||||
error: aborting due to previous error
|
error: the feature named `` is not valid for this target
|
||||||
|
--> $DIR/issue-68060.rs:4:30
|
||||||
|
|
|
||||||
|
LL | #[target_feature(enable = "")]
|
||||||
|
| ^^^^^^^^^^^ `` is not valid for this target
|
||||||
|
|
||||||
|
error[E0658]: `#[track_caller]` on closures is currently unstable
|
||||||
|
--> $DIR/issue-68060.rs:8:13
|
||||||
|
|
|
||||||
|
LL | #[track_caller]
|
||||||
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: see issue #87417 <https://github.com/rust-lang/rust/issues/87417> for more information
|
||||||
|
= help: add `#![feature(closure_track_caller)]` to the crate attributes to enable
|
||||||
|
|
||||||
|
error: aborting due to 3 previous errors
|
||||||
|
|
||||||
|
For more information about this error, try `rustc --explain E0658`.
|
||||||
|
@ -8,12 +8,6 @@ LL | fn panic(info: PanicInfo) -> ! {
|
|||||||
= note: first definition in `std` loaded from SYSROOT/libstd-*.rlib
|
= note: first definition in `std` loaded from SYSROOT/libstd-*.rlib
|
||||||
= note: second definition in the local crate (`panic_handler_std`)
|
= note: second definition in the local crate (`panic_handler_std`)
|
||||||
|
|
||||||
error: argument should be `&PanicInfo`
|
error: aborting due to previous error
|
||||||
--> $DIR/panic-handler-std.rs:8:16
|
|
||||||
|
|
|
||||||
LL | fn panic(info: PanicInfo) -> ! {
|
|
||||||
| ^^^^^^^^^
|
|
||||||
|
|
||||||
error: aborting due to 2 previous errors
|
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0152`.
|
For more information about this error, try `rustc --explain E0152`.
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
// error-pattern: `#[panic_handler]` function required, but not found
|
|
||||||
|
|
||||||
// Regression test for #54505 - range borrowing suggestion had
|
// Regression test for #54505 - range borrowing suggestion had
|
||||||
// incorrect syntax (missing parentheses).
|
// incorrect syntax (missing parentheses).
|
||||||
|
|
||||||
@ -18,6 +16,10 @@ extern "C" fn eh_personality() {}
|
|||||||
#[lang = "eh_catch_typeinfo"]
|
#[lang = "eh_catch_typeinfo"]
|
||||||
static EH_CATCH_TYPEINFO: u8 = 0;
|
static EH_CATCH_TYPEINFO: u8 = 0;
|
||||||
|
|
||||||
|
#[panic_handler]
|
||||||
|
fn panic_handler() {}
|
||||||
|
//~^ ERROR return type should be `!`
|
||||||
|
//~| ERROR function should have one argument
|
||||||
|
|
||||||
// take a reference to any built-in range
|
// take a reference to any built-in range
|
||||||
fn take_range(_r: &impl RangeBounds<i8>) {}
|
fn take_range(_r: &impl RangeBounds<i8>) {}
|
||||||
|
@ -1,7 +1,17 @@
|
|||||||
error: `#[panic_handler]` function required, but not found
|
error: return type should be `!`
|
||||||
|
--> $DIR/issue-54505-no-std.rs:20:20
|
||||||
|
|
|
||||||
|
LL | fn panic_handler() {}
|
||||||
|
| ^
|
||||||
|
|
||||||
|
error: function should have one argument
|
||||||
|
--> $DIR/issue-54505-no-std.rs:20:1
|
||||||
|
|
|
||||||
|
LL | fn panic_handler() {}
|
||||||
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/issue-54505-no-std.rs:27:16
|
--> $DIR/issue-54505-no-std.rs:29:16
|
||||||
|
|
|
|
||||||
LL | take_range(0..1);
|
LL | take_range(0..1);
|
||||||
| ---------- ^^^^
|
| ---------- ^^^^
|
||||||
@ -13,13 +23,13 @@ LL | take_range(0..1);
|
|||||||
= note: expected reference `&_`
|
= note: expected reference `&_`
|
||||||
found struct `Range<{integer}>`
|
found struct `Range<{integer}>`
|
||||||
note: function defined here
|
note: function defined here
|
||||||
--> $DIR/issue-54505-no-std.rs:23:4
|
--> $DIR/issue-54505-no-std.rs:25:4
|
||||||
|
|
|
|
||||||
LL | fn take_range(_r: &impl RangeBounds<i8>) {}
|
LL | fn take_range(_r: &impl RangeBounds<i8>) {}
|
||||||
| ^^^^^^^^^^ -------------------------
|
| ^^^^^^^^^^ -------------------------
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/issue-54505-no-std.rs:32:16
|
--> $DIR/issue-54505-no-std.rs:34:16
|
||||||
|
|
|
|
||||||
LL | take_range(1..);
|
LL | take_range(1..);
|
||||||
| ---------- ^^^
|
| ---------- ^^^
|
||||||
@ -31,13 +41,13 @@ LL | take_range(1..);
|
|||||||
= note: expected reference `&_`
|
= note: expected reference `&_`
|
||||||
found struct `RangeFrom<{integer}>`
|
found struct `RangeFrom<{integer}>`
|
||||||
note: function defined here
|
note: function defined here
|
||||||
--> $DIR/issue-54505-no-std.rs:23:4
|
--> $DIR/issue-54505-no-std.rs:25:4
|
||||||
|
|
|
|
||||||
LL | fn take_range(_r: &impl RangeBounds<i8>) {}
|
LL | fn take_range(_r: &impl RangeBounds<i8>) {}
|
||||||
| ^^^^^^^^^^ -------------------------
|
| ^^^^^^^^^^ -------------------------
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/issue-54505-no-std.rs:37:16
|
--> $DIR/issue-54505-no-std.rs:39:16
|
||||||
|
|
|
|
||||||
LL | take_range(..);
|
LL | take_range(..);
|
||||||
| ---------- ^^
|
| ---------- ^^
|
||||||
@ -49,13 +59,13 @@ LL | take_range(..);
|
|||||||
= note: expected reference `&_`
|
= note: expected reference `&_`
|
||||||
found struct `RangeFull`
|
found struct `RangeFull`
|
||||||
note: function defined here
|
note: function defined here
|
||||||
--> $DIR/issue-54505-no-std.rs:23:4
|
--> $DIR/issue-54505-no-std.rs:25:4
|
||||||
|
|
|
|
||||||
LL | fn take_range(_r: &impl RangeBounds<i8>) {}
|
LL | fn take_range(_r: &impl RangeBounds<i8>) {}
|
||||||
| ^^^^^^^^^^ -------------------------
|
| ^^^^^^^^^^ -------------------------
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/issue-54505-no-std.rs:42:16
|
--> $DIR/issue-54505-no-std.rs:44:16
|
||||||
|
|
|
|
||||||
LL | take_range(0..=1);
|
LL | take_range(0..=1);
|
||||||
| ---------- ^^^^^
|
| ---------- ^^^^^
|
||||||
@ -67,13 +77,13 @@ LL | take_range(0..=1);
|
|||||||
= note: expected reference `&_`
|
= note: expected reference `&_`
|
||||||
found struct `RangeInclusive<{integer}>`
|
found struct `RangeInclusive<{integer}>`
|
||||||
note: function defined here
|
note: function defined here
|
||||||
--> $DIR/issue-54505-no-std.rs:23:4
|
--> $DIR/issue-54505-no-std.rs:25:4
|
||||||
|
|
|
|
||||||
LL | fn take_range(_r: &impl RangeBounds<i8>) {}
|
LL | fn take_range(_r: &impl RangeBounds<i8>) {}
|
||||||
| ^^^^^^^^^^ -------------------------
|
| ^^^^^^^^^^ -------------------------
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/issue-54505-no-std.rs:47:16
|
--> $DIR/issue-54505-no-std.rs:49:16
|
||||||
|
|
|
|
||||||
LL | take_range(..5);
|
LL | take_range(..5);
|
||||||
| ---------- ^^^
|
| ---------- ^^^
|
||||||
@ -85,13 +95,13 @@ LL | take_range(..5);
|
|||||||
= note: expected reference `&_`
|
= note: expected reference `&_`
|
||||||
found struct `RangeTo<{integer}>`
|
found struct `RangeTo<{integer}>`
|
||||||
note: function defined here
|
note: function defined here
|
||||||
--> $DIR/issue-54505-no-std.rs:23:4
|
--> $DIR/issue-54505-no-std.rs:25:4
|
||||||
|
|
|
|
||||||
LL | fn take_range(_r: &impl RangeBounds<i8>) {}
|
LL | fn take_range(_r: &impl RangeBounds<i8>) {}
|
||||||
| ^^^^^^^^^^ -------------------------
|
| ^^^^^^^^^^ -------------------------
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
error[E0308]: mismatched types
|
||||||
--> $DIR/issue-54505-no-std.rs:52:16
|
--> $DIR/issue-54505-no-std.rs:54:16
|
||||||
|
|
|
|
||||||
LL | take_range(..=42);
|
LL | take_range(..=42);
|
||||||
| ---------- ^^^^^
|
| ---------- ^^^^^
|
||||||
@ -103,11 +113,11 @@ LL | take_range(..=42);
|
|||||||
= note: expected reference `&_`
|
= note: expected reference `&_`
|
||||||
found struct `RangeToInclusive<{integer}>`
|
found struct `RangeToInclusive<{integer}>`
|
||||||
note: function defined here
|
note: function defined here
|
||||||
--> $DIR/issue-54505-no-std.rs:23:4
|
--> $DIR/issue-54505-no-std.rs:25:4
|
||||||
|
|
|
|
||||||
LL | fn take_range(_r: &impl RangeBounds<i8>) {}
|
LL | fn take_range(_r: &impl RangeBounds<i8>) {}
|
||||||
| ^^^^^^^^^^ -------------------------
|
| ^^^^^^^^^^ -------------------------
|
||||||
|
|
||||||
error: aborting due to 7 previous errors
|
error: aborting due to 8 previous errors
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0308`.
|
For more information about this error, try `rustc --explain E0308`.
|
||||||
|
@ -4,36 +4,6 @@ error: malformed `target_feature` attribute input
|
|||||||
LL | #[target_feature = "+sse2"]
|
LL | #[target_feature = "+sse2"]
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[target_feature(enable = "name")]`
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: must be of the form: `#[target_feature(enable = "name")]`
|
||||||
|
|
||||||
error: the feature named `foo` is not valid for this target
|
|
||||||
--> $DIR/invalid-attribute.rs:19:18
|
|
||||||
|
|
|
||||||
LL | #[target_feature(enable = "foo")]
|
|
||||||
| ^^^^^^^^^^^^^^ `foo` is not valid for this target
|
|
||||||
|
|
||||||
error: malformed `target_feature` attribute input
|
|
||||||
--> $DIR/invalid-attribute.rs:22:18
|
|
||||||
|
|
|
||||||
LL | #[target_feature(bar)]
|
|
||||||
| ^^^ help: must be of the form: `enable = ".."`
|
|
||||||
|
|
||||||
error: malformed `target_feature` attribute input
|
|
||||||
--> $DIR/invalid-attribute.rs:24:18
|
|
||||||
|
|
|
||||||
LL | #[target_feature(disable = "baz")]
|
|
||||||
| ^^^^^^^^^^^^^^^ help: must be of the form: `enable = ".."`
|
|
||||||
|
|
||||||
error[E0658]: `#[target_feature(..)]` can only be applied to `unsafe` functions
|
|
||||||
--> $DIR/invalid-attribute.rs:28:1
|
|
||||||
|
|
|
||||||
LL | #[target_feature(enable = "sse2")]
|
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
|
||||||
...
|
|
||||||
LL | fn bar() {}
|
|
||||||
| -------- not an `unsafe` function
|
|
||||||
|
|
|
||||||
= note: see issue #69098 <https://github.com/rust-lang/rust/issues/69098> for more information
|
|
||||||
= help: add `#![feature(target_feature_11)]` to the crate attributes to enable
|
|
||||||
|
|
||||||
error: attribute should be applied to a function definition
|
error: attribute should be applied to a function definition
|
||||||
--> $DIR/invalid-attribute.rs:34:1
|
--> $DIR/invalid-attribute.rs:34:1
|
||||||
|
|
|
|
||||||
@ -92,12 +62,6 @@ LL |
|
|||||||
LL | trait Baz {}
|
LL | trait Baz {}
|
||||||
| ------------ not a function definition
|
| ------------ not a function definition
|
||||||
|
|
||||||
error: cannot use `#[inline(always)]` with `#[target_feature]`
|
|
||||||
--> $DIR/invalid-attribute.rs:67:1
|
|
||||||
|
|
|
||||||
LL | #[inline(always)]
|
|
||||||
| ^^^^^^^^^^^^^^^^^
|
|
||||||
|
|
||||||
error: attribute should be applied to a function definition
|
error: attribute should be applied to a function definition
|
||||||
--> $DIR/invalid-attribute.rs:85:5
|
--> $DIR/invalid-attribute.rs:85:5
|
||||||
|
|
|
|
||||||
@ -119,6 +83,42 @@ LL |
|
|||||||
LL | || {};
|
LL | || {};
|
||||||
| ----- not a function definition
|
| ----- not a function definition
|
||||||
|
|
||||||
|
error: the feature named `foo` is not valid for this target
|
||||||
|
--> $DIR/invalid-attribute.rs:19:18
|
||||||
|
|
|
||||||
|
LL | #[target_feature(enable = "foo")]
|
||||||
|
| ^^^^^^^^^^^^^^ `foo` is not valid for this target
|
||||||
|
|
||||||
|
error: malformed `target_feature` attribute input
|
||||||
|
--> $DIR/invalid-attribute.rs:22:18
|
||||||
|
|
|
||||||
|
LL | #[target_feature(bar)]
|
||||||
|
| ^^^ help: must be of the form: `enable = ".."`
|
||||||
|
|
||||||
|
error: malformed `target_feature` attribute input
|
||||||
|
--> $DIR/invalid-attribute.rs:24:18
|
||||||
|
|
|
||||||
|
LL | #[target_feature(disable = "baz")]
|
||||||
|
| ^^^^^^^^^^^^^^^ help: must be of the form: `enable = ".."`
|
||||||
|
|
||||||
|
error[E0658]: `#[target_feature(..)]` can only be applied to `unsafe` functions
|
||||||
|
--> $DIR/invalid-attribute.rs:28:1
|
||||||
|
|
|
||||||
|
LL | #[target_feature(enable = "sse2")]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
...
|
||||||
|
LL | fn bar() {}
|
||||||
|
| -------- not an `unsafe` function
|
||||||
|
|
|
||||||
|
= note: see issue #69098 <https://github.com/rust-lang/rust/issues/69098> for more information
|
||||||
|
= help: add `#![feature(target_feature_11)]` to the crate attributes to enable
|
||||||
|
|
||||||
|
error: cannot use `#[inline(always)]` with `#[target_feature]`
|
||||||
|
--> $DIR/invalid-attribute.rs:67:1
|
||||||
|
|
|
||||||
|
LL | #[inline(always)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error[E0658]: `#[target_feature(..)]` can only be applied to `unsafe` functions
|
error[E0658]: `#[target_feature(..)]` can only be applied to `unsafe` functions
|
||||||
--> $DIR/invalid-attribute.rs:77:5
|
--> $DIR/invalid-attribute.rs:77:5
|
||||||
|
|
|
|
||||||
|
@ -7,10 +7,8 @@ trait Sized { } //~ ERROR found duplicate lang item `sized`
|
|||||||
fn ref_Struct(self: &Struct, f: &u32) -> &u32 {
|
fn ref_Struct(self: &Struct, f: &u32) -> &u32 {
|
||||||
//~^ ERROR `self` parameter is only allowed in associated functions
|
//~^ ERROR `self` parameter is only allowed in associated functions
|
||||||
//~| ERROR cannot find type `Struct` in this scope
|
//~| ERROR cannot find type `Struct` in this scope
|
||||||
//~| ERROR mismatched types
|
|
||||||
let x = x << 1;
|
let x = x << 1;
|
||||||
//~^ ERROR the size for values of type `{integer}` cannot be known at compilation time
|
//~^ ERROR cannot find value `x` in this scope
|
||||||
//~| ERROR cannot find value `x` in this scope
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
@ -13,7 +13,7 @@ LL | fn ref_Struct(self: &Struct, f: &u32) -> &u32 {
|
|||||||
| ^^^^^^ not found in this scope
|
| ^^^^^^ not found in this scope
|
||||||
|
|
||||||
error[E0425]: cannot find value `x` in this scope
|
error[E0425]: cannot find value `x` in this scope
|
||||||
--> $DIR/issue-102989.rs:11:13
|
--> $DIR/issue-102989.rs:10:13
|
||||||
|
|
|
|
||||||
LL | let x = x << 1;
|
LL | let x = x << 1;
|
||||||
| ^ help: a local variable with a similar name exists: `f`
|
| ^ help: a local variable with a similar name exists: `f`
|
||||||
@ -28,32 +28,7 @@ LL | trait Sized { }
|
|||||||
= note: first definition in `core` loaded from SYSROOT/libcore-*.rlib
|
= note: first definition in `core` loaded from SYSROOT/libcore-*.rlib
|
||||||
= note: second definition in the local crate (`issue_102989`)
|
= note: second definition in the local crate (`issue_102989`)
|
||||||
|
|
||||||
error[E0277]: the size for values of type `{integer}` cannot be known at compilation time
|
error: aborting due to 4 previous errors
|
||||||
--> $DIR/issue-102989.rs:11:15
|
|
||||||
|
|
|
||||||
LL | let x = x << 1;
|
|
||||||
| ^^ doesn't have a size known at compile-time
|
|
||||||
|
|
|
||||||
= help: the trait `std::marker::Sized` is not implemented for `{integer}`
|
|
||||||
|
|
||||||
error[E0308]: mismatched types
|
Some errors have detailed explanations: E0152, E0412, E0425.
|
||||||
--> $DIR/issue-102989.rs:7:42
|
|
||||||
|
|
|
||||||
LL | fn ref_Struct(self: &Struct, f: &u32) -> &u32 {
|
|
||||||
| ---------- ^^^^ expected `&u32`, found `()`
|
|
||||||
| |
|
|
||||||
| implicitly returns `()` as its body has no tail or `return` expression
|
|
||||||
|
|
|
||||||
note: consider returning one of these bindings
|
|
||||||
--> $DIR/issue-102989.rs:7:30
|
|
||||||
|
|
|
||||||
LL | fn ref_Struct(self: &Struct, f: &u32) -> &u32 {
|
|
||||||
| ^
|
|
||||||
...
|
|
||||||
LL | let x = x << 1;
|
|
||||||
| ^
|
|
||||||
|
|
||||||
error: aborting due to 6 previous errors
|
|
||||||
|
|
||||||
Some errors have detailed explanations: E0152, E0277, E0308, E0412, E0425.
|
|
||||||
For more information about an error, try `rustc --explain E0152`.
|
For more information about an error, try `rustc --explain E0152`.
|
||||||
|
Loading…
Reference in New Issue
Block a user