mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-25 16:24:46 +00:00
Replace item names containing an error code with something more meaningful
or inline such functions if useless.
This commit is contained in:
parent
dec1d16a9b
commit
2a1d748254
@ -632,20 +632,19 @@ impl<'a> AstValidator<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn emit_e0568(&self, span: Span, ident: Span) {
|
|
||||||
self.dcx().emit_err(errors::AutoTraitBounds { span, ident });
|
|
||||||
}
|
|
||||||
|
|
||||||
fn deny_super_traits(&self, bounds: &GenericBounds, ident_span: Span) {
|
fn deny_super_traits(&self, bounds: &GenericBounds, ident_span: Span) {
|
||||||
if let [.., last] = &bounds[..] {
|
if let [.., last] = &bounds[..] {
|
||||||
let span = ident_span.shrink_to_hi().to(last.span());
|
let span = ident_span.shrink_to_hi().to(last.span());
|
||||||
self.emit_e0568(span, ident_span);
|
self.dcx().emit_err(errors::AutoTraitBounds { span, ident: ident_span });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn deny_where_clause(&self, where_clause: &WhereClause, ident_span: Span) {
|
fn deny_where_clause(&self, where_clause: &WhereClause, ident_span: Span) {
|
||||||
if !where_clause.predicates.is_empty() {
|
if !where_clause.predicates.is_empty() {
|
||||||
self.emit_e0568(where_clause.span, ident_span);
|
// FIXME: The current diagnostic is misleading since it only talks about
|
||||||
|
// super trait and lifetime bounds while we should just say “bounds”.
|
||||||
|
self.dcx()
|
||||||
|
.emit_err(errors::AutoTraitBounds { span: where_clause.span, ident: ident_span });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -201,6 +201,12 @@ hir_analysis_inherent_ty_outside_relevant = cannot define inherent `impl` for a
|
|||||||
.help = consider moving this inherent impl into the crate defining the type if possible
|
.help = consider moving this inherent impl into the crate defining the type if possible
|
||||||
.span_help = alternatively add `#[rustc_allow_incoherent_impl]` to the relevant impl items
|
.span_help = alternatively add `#[rustc_allow_incoherent_impl]` to the relevant impl items
|
||||||
|
|
||||||
|
hir_analysis_invalid_receiver_ty = invalid `self` parameter type: `{$receiver_ty}`
|
||||||
|
.note = type of `self` must be `Self` or a type that dereferences to it
|
||||||
|
|
||||||
|
hir_analysis_invalid_receiver_ty_help =
|
||||||
|
consider changing to `self`, `&self`, `&mut self`, `self: Box<Self>`, `self: Rc<Self>`, `self: Arc<Self>`, or `self: Pin<P>` (where P is one of the previous types except `Self`)
|
||||||
|
|
||||||
hir_analysis_invalid_union_field =
|
hir_analysis_invalid_union_field =
|
||||||
field must implement `Copy` or be wrapped in `ManuallyDrop<...>` to be used in a union
|
field must implement `Copy` or be wrapped in `ManuallyDrop<...>` to be used in a union
|
||||||
.note = union fields must not have drop side-effects, which is currently enforced via either `Copy` or `ManuallyDrop<...>`
|
.note = union fields must not have drop side-effects, which is currently enforced via either `Copy` or `ManuallyDrop<...>`
|
||||||
|
@ -2,6 +2,7 @@ use crate::autoderef::Autoderef;
|
|||||||
use crate::collect::CollectItemTypesVisitor;
|
use crate::collect::CollectItemTypesVisitor;
|
||||||
use crate::constrained_generic_params::{identify_constrained_generic_params, Parameter};
|
use crate::constrained_generic_params::{identify_constrained_generic_params, Parameter};
|
||||||
use crate::errors;
|
use crate::errors;
|
||||||
|
use crate::fluent_generated as fluent;
|
||||||
|
|
||||||
use hir::intravisit::Visitor;
|
use hir::intravisit::Visitor;
|
||||||
use rustc_ast as ast;
|
use rustc_ast as ast;
|
||||||
@ -1636,10 +1637,6 @@ fn check_fn_or_method<'tcx>(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const HELP_FOR_SELF_TYPE: &str = "consider changing to `self`, `&self`, `&mut self`, `self: Box<Self>`, \
|
|
||||||
`self: Rc<Self>`, `self: Arc<Self>`, or `self: Pin<P>` (where P is one \
|
|
||||||
of the previous types except `Self`)";
|
|
||||||
|
|
||||||
#[instrument(level = "debug", skip(wfcx))]
|
#[instrument(level = "debug", skip(wfcx))]
|
||||||
fn check_method_receiver<'tcx>(
|
fn check_method_receiver<'tcx>(
|
||||||
wfcx: &WfCheckingCtxt<'_, 'tcx>,
|
wfcx: &WfCheckingCtxt<'_, 'tcx>,
|
||||||
@ -1675,7 +1672,7 @@ fn check_method_receiver<'tcx>(
|
|||||||
if tcx.features().arbitrary_self_types {
|
if tcx.features().arbitrary_self_types {
|
||||||
if !receiver_is_valid(wfcx, span, receiver_ty, self_ty, true) {
|
if !receiver_is_valid(wfcx, span, receiver_ty, self_ty, true) {
|
||||||
// Report error; `arbitrary_self_types` was enabled.
|
// Report error; `arbitrary_self_types` was enabled.
|
||||||
return Err(e0307(tcx, span, receiver_ty));
|
return Err(tcx.dcx().emit_err(errors::InvalidReceiverTy { span, receiver_ty }));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if !receiver_is_valid(wfcx, span, receiver_ty, self_ty, false) {
|
if !receiver_is_valid(wfcx, span, receiver_ty, self_ty, false) {
|
||||||
@ -1690,24 +1687,17 @@ fn check_method_receiver<'tcx>(
|
|||||||
the `arbitrary_self_types` feature",
|
the `arbitrary_self_types` feature",
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
.with_help(HELP_FOR_SELF_TYPE)
|
.with_help(fluent::hir_analysis_invalid_receiver_ty_help)
|
||||||
.emit()
|
.emit()
|
||||||
} else {
|
} else {
|
||||||
// Report error; would not have worked with `arbitrary_self_types`.
|
// Report error; would not have worked with `arbitrary_self_types`.
|
||||||
e0307(tcx, span, receiver_ty)
|
tcx.dcx().emit_err(errors::InvalidReceiverTy { span, receiver_ty })
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn e0307(tcx: TyCtxt<'_>, span: Span, receiver_ty: Ty<'_>) -> ErrorGuaranteed {
|
|
||||||
struct_span_code_err!(tcx.dcx(), span, E0307, "invalid `self` parameter type: {receiver_ty}")
|
|
||||||
.with_note("type of `self` must be `Self` or a type that dereferences to it")
|
|
||||||
.with_help(HELP_FOR_SELF_TYPE)
|
|
||||||
.emit()
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Returns whether `receiver_ty` would be considered a valid receiver type for `self_ty`. If
|
/// Returns whether `receiver_ty` would be considered a valid receiver type for `self_ty`. If
|
||||||
/// `arbitrary_self_types` is enabled, `receiver_ty` must transitively deref to `self_ty`, possibly
|
/// `arbitrary_self_types` is enabled, `receiver_ty` must transitively deref to `self_ty`, possibly
|
||||||
/// through a `*const/mut T` raw pointer. If the feature is not enabled, the requirements are more
|
/// through a `*const/mut T` raw pointer. If the feature is not enabled, the requirements are more
|
||||||
|
@ -1641,3 +1641,13 @@ pub struct NonConstRange {
|
|||||||
#[primary_span]
|
#[primary_span]
|
||||||
pub span: Span,
|
pub span: Span,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Diagnostic)]
|
||||||
|
#[diag(hir_analysis_invalid_receiver_ty, code = E0307)]
|
||||||
|
#[note]
|
||||||
|
#[help(hir_analysis_invalid_receiver_ty_help)]
|
||||||
|
pub struct InvalidReceiverTy<'tcx> {
|
||||||
|
#[primary_span]
|
||||||
|
pub span: Span,
|
||||||
|
pub receiver_ty: Ty<'tcx>,
|
||||||
|
}
|
||||||
|
@ -1228,16 +1228,22 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Pattern has wrong number of fields.
|
let e = self.emit_err_pat_wrong_number_of_fields(
|
||||||
let e =
|
pat.span,
|
||||||
self.e0023(pat.span, res, qpath, subpats, &variant.fields.raw, expected, had_err);
|
res,
|
||||||
|
qpath,
|
||||||
|
subpats,
|
||||||
|
&variant.fields.raw,
|
||||||
|
expected,
|
||||||
|
had_err,
|
||||||
|
);
|
||||||
on_error(e);
|
on_error(e);
|
||||||
return Ty::new_error(tcx, e);
|
return Ty::new_error(tcx, e);
|
||||||
}
|
}
|
||||||
pat_ty
|
pat_ty
|
||||||
}
|
}
|
||||||
|
|
||||||
fn e0023(
|
fn emit_err_pat_wrong_number_of_fields(
|
||||||
&self,
|
&self,
|
||||||
pat_span: Span,
|
pat_span: Span,
|
||||||
res: Res,
|
res: Res,
|
||||||
|
@ -10,9 +10,7 @@ use rustc_arena::{DroplessArena, TypedArena};
|
|||||||
use rustc_ast::Mutability;
|
use rustc_ast::Mutability;
|
||||||
use rustc_data_structures::fx::FxIndexSet;
|
use rustc_data_structures::fx::FxIndexSet;
|
||||||
use rustc_data_structures::stack::ensure_sufficient_stack;
|
use rustc_data_structures::stack::ensure_sufficient_stack;
|
||||||
use rustc_errors::{
|
use rustc_errors::{codes::*, struct_span_code_err, Applicability, ErrorGuaranteed, MultiSpan};
|
||||||
codes::*, struct_span_code_err, Applicability, Diag, ErrorGuaranteed, MultiSpan,
|
|
||||||
};
|
|
||||||
use rustc_hir::def::*;
|
use rustc_hir::def::*;
|
||||||
use rustc_hir::def_id::LocalDefId;
|
use rustc_hir::def_id::LocalDefId;
|
||||||
use rustc_hir::{self as hir, BindingMode, ByRef, HirId};
|
use rustc_hir::{self as hir, BindingMode, ByRef, HirId};
|
||||||
@ -24,7 +22,6 @@ use rustc_middle::ty::{self, AdtDef, Ty, TyCtxt};
|
|||||||
use rustc_session::lint::builtin::{
|
use rustc_session::lint::builtin::{
|
||||||
BINDINGS_WITH_VARIANT_NAME, IRREFUTABLE_LET_PATTERNS, UNREACHABLE_PATTERNS,
|
BINDINGS_WITH_VARIANT_NAME, IRREFUTABLE_LET_PATTERNS, UNREACHABLE_PATTERNS,
|
||||||
};
|
};
|
||||||
use rustc_session::Session;
|
|
||||||
use rustc_span::hygiene::DesugaringKind;
|
use rustc_span::hygiene::DesugaringKind;
|
||||||
use rustc_span::{sym, Span};
|
use rustc_span::{sym, Span};
|
||||||
|
|
||||||
@ -64,10 +61,6 @@ pub(crate) fn check_match(tcx: TyCtxt<'_>, def_id: LocalDefId) -> Result<(), Err
|
|||||||
visitor.error
|
visitor.error
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_e0004(sess: &Session, sp: Span, error_message: String) -> Diag<'_> {
|
|
||||||
struct_span_code_err!(sess.dcx(), sp, E0004, "{}", &error_message)
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(Debug, Copy, Clone, PartialEq)]
|
#[derive(Debug, Copy, Clone, PartialEq)]
|
||||||
enum RefutableFlag {
|
enum RefutableFlag {
|
||||||
Irrefutable,
|
Irrefutable,
|
||||||
@ -975,10 +968,11 @@ fn report_non_exhaustive_match<'p, 'tcx>(
|
|||||||
|
|
||||||
// FIXME: migration of this diagnostic will require list support
|
// FIXME: migration of this diagnostic will require list support
|
||||||
let joined_patterns = joined_uncovered_patterns(cx, &witnesses);
|
let joined_patterns = joined_uncovered_patterns(cx, &witnesses);
|
||||||
let mut err = create_e0004(
|
let mut err = struct_span_code_err!(
|
||||||
cx.tcx.sess,
|
cx.tcx.dcx(),
|
||||||
sp,
|
sp,
|
||||||
format!("non-exhaustive patterns: {joined_patterns} not covered"),
|
E0004,
|
||||||
|
"non-exhaustive patterns: {joined_patterns} not covered"
|
||||||
);
|
);
|
||||||
err.span_label(
|
err.span_label(
|
||||||
sp,
|
sp,
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
trait Foo {
|
trait Foo {
|
||||||
async fn foo(self: &dyn Foo) {
|
async fn foo(self: &dyn Foo) {
|
||||||
//~^ ERROR: `Foo` cannot be made into an object
|
//~^ ERROR: `Foo` cannot be made into an object
|
||||||
//~| ERROR invalid `self` parameter type: &dyn Foo
|
//~| ERROR invalid `self` parameter type: `&dyn Foo`
|
||||||
todo!()
|
todo!()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,7 +13,7 @@ LL | async fn foo(self: &dyn Foo) {
|
|||||||
| ^^^ ...because method `foo` is `async`
|
| ^^^ ...because method `foo` is `async`
|
||||||
= help: consider moving `foo` to another trait
|
= help: consider moving `foo` to another trait
|
||||||
|
|
||||||
error[E0307]: invalid `self` parameter type: &dyn Foo
|
error[E0307]: invalid `self` parameter type: `&dyn Foo`
|
||||||
--> $DIR/inference_var_self_argument.rs:5:24
|
--> $DIR/inference_var_self_argument.rs:5:24
|
||||||
|
|
|
|
||||||
LL | async fn foo(self: &dyn Foo) {
|
LL | async fn foo(self: &dyn Foo) {
|
||||||
|
@ -4,7 +4,7 @@ error[E0308]: mismatched types
|
|||||||
LL | if x.is_some() {
|
LL | if x.is_some() {
|
||||||
| ^^^^^^^^^^^ expected `bool`, found `()`
|
| ^^^^^^^^^^^ expected `bool`, found `()`
|
||||||
|
|
||||||
error[E0307]: invalid `self` parameter type: T
|
error[E0307]: invalid `self` parameter type: `T`
|
||||||
--> $DIR/issue-66312.rs:4:22
|
--> $DIR/issue-66312.rs:4:22
|
||||||
|
|
|
|
||||||
LL | fn is_some(self: T);
|
LL | fn is_some(self: T);
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
use std::cell::Cell;
|
use std::cell::Cell;
|
||||||
|
|
||||||
trait Trait{
|
trait Trait{
|
||||||
fn cell(self: Cell<&Self>); //~ ERROR invalid `self` parameter type: Cell<&Self>
|
fn cell(self: Cell<&Self>); //~ ERROR invalid `self` parameter type: `Cell<&Self>`
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error[E0307]: invalid `self` parameter type: Cell<&Self>
|
error[E0307]: invalid `self` parameter type: `Cell<&Self>`
|
||||||
--> $DIR/feature-gate-dispatch-from-dyn-cell.rs:6:19
|
--> $DIR/feature-gate-dispatch-from-dyn-cell.rs:6:19
|
||||||
|
|
|
|
||||||
LL | fn cell(self: Cell<&Self>);
|
LL | fn cell(self: Cell<&Self>);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error[E0307]: invalid `self` parameter type: Box<(dyn Trait + 'static)>
|
error[E0307]: invalid `self` parameter type: `Box<(dyn Trait + 'static)>`
|
||||||
--> $DIR/issue-56806.rs:2:34
|
--> $DIR/issue-56806.rs:2:34
|
||||||
|
|
|
|
||||||
LL | fn dyn_instead_of_self(self: Box<dyn Trait>);
|
LL | fn dyn_instead_of_self(self: Box<dyn Trait>);
|
||||||
|
@ -6,7 +6,7 @@ type Bar = impl Sized;
|
|||||||
|
|
||||||
impl Foo {
|
impl Foo {
|
||||||
fn foo(self: Bar) {}
|
fn foo(self: Bar) {}
|
||||||
//~^ ERROR: invalid `self` parameter type: Bar
|
//~^ ERROR: invalid `self` parameter type: `Bar`
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {}
|
fn main() {}
|
||||||
|
@ -6,7 +6,7 @@ LL | type Bar = impl Sized;
|
|||||||
|
|
|
|
||||||
= note: `Bar` must be used in combination with a concrete type within the same module
|
= note: `Bar` must be used in combination with a concrete type within the same module
|
||||||
|
|
||||||
error[E0307]: invalid `self` parameter type: Bar
|
error[E0307]: invalid `self` parameter type: `Bar`
|
||||||
--> $DIR/arbitrary-self-opaque.rs:8:18
|
--> $DIR/arbitrary-self-opaque.rs:8:18
|
||||||
|
|
|
|
||||||
LL | fn foo(self: Bar) {}
|
LL | fn foo(self: Bar) {}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
error[E0307]: invalid `self` parameter type: &SomeType
|
error[E0307]: invalid `self` parameter type: `&SomeType`
|
||||||
--> $DIR/issue-27522.rs:6:22
|
--> $DIR/issue-27522.rs:6:22
|
||||||
|
|
|
|
||||||
LL | fn handler(self: &SomeType);
|
LL | fn handler(self: &SomeType);
|
||||||
|
@ -26,7 +26,7 @@ help: consider changing method `bar`'s `self` parameter to be `&self`
|
|||||||
LL | fn bar(self: &Self) {}
|
LL | fn bar(self: &Self) {}
|
||||||
| ~~~~~
|
| ~~~~~
|
||||||
|
|
||||||
error[E0307]: invalid `self` parameter type: ()
|
error[E0307]: invalid `self` parameter type: `()`
|
||||||
--> $DIR/object-unsafe-trait-should-use-where-sized.rs:6:18
|
--> $DIR/object-unsafe-trait-should-use-where-sized.rs:6:18
|
||||||
|
|
|
|
||||||
LL | fn bar(self: ()) {}
|
LL | fn bar(self: ()) {}
|
||||||
|
@ -6,7 +6,7 @@ impl<T> DispatchFromDyn<Smaht<U, MISC>> for T {} //~ ERROR cannot find type `U`
|
|||||||
//~| ERROR the trait `DispatchFromDyn` may only be implemented for a coercion between structures
|
//~| ERROR the trait `DispatchFromDyn` may only be implemented for a coercion between structures
|
||||||
trait Foo: X<u32> {}
|
trait Foo: X<u32> {}
|
||||||
trait X<T> {
|
trait X<T> {
|
||||||
fn foo(self: Smaht<Self, T>); //~ ERROR: invalid `self`
|
fn foo(self: Smaht<Self, T>); //~ ERROR: invalid `self` parameter type
|
||||||
}
|
}
|
||||||
trait Marker {}
|
trait Marker {}
|
||||||
impl Marker for dyn Foo {}
|
impl Marker for dyn Foo {}
|
||||||
|
@ -79,7 +79,7 @@ LL | trait X<T> {
|
|||||||
LL | fn foo(self: Smaht<Self, T>);
|
LL | fn foo(self: Smaht<Self, T>);
|
||||||
| ^^^^^^^^^^^^^^ ...because method `foo`'s `self` parameter cannot be dispatched on
|
| ^^^^^^^^^^^^^^ ...because method `foo`'s `self` parameter cannot be dispatched on
|
||||||
|
|
||||||
error[E0307]: invalid `self` parameter type: Smaht<Self, T>
|
error[E0307]: invalid `self` parameter type: `Smaht<Self, T>`
|
||||||
--> $DIR/issue-78372.rs:9:18
|
--> $DIR/issue-78372.rs:9:18
|
||||||
|
|
|
|
||||||
LL | fn foo(self: Smaht<Self, T>);
|
LL | fn foo(self: Smaht<Self, T>);
|
||||||
|
@ -15,7 +15,7 @@ LL | fn dummy2(&self);
|
|||||||
= note: expected signature `fn(&&'a Bar<_>)`
|
= note: expected signature `fn(&&'a Bar<_>)`
|
||||||
found signature `fn(&Bar<_>)`
|
found signature `fn(&Bar<_>)`
|
||||||
|
|
||||||
error[E0307]: invalid `self` parameter type: isize
|
error[E0307]: invalid `self` parameter type: `isize`
|
||||||
--> $DIR/ufcs-explicit-self-bad.rs:8:18
|
--> $DIR/ufcs-explicit-self-bad.rs:8:18
|
||||||
|
|
|
|
||||||
LL | fn foo(self: isize, x: isize) -> isize {
|
LL | fn foo(self: isize, x: isize) -> isize {
|
||||||
@ -24,7 +24,7 @@ LL | fn foo(self: isize, x: isize) -> isize {
|
|||||||
= note: type of `self` must be `Self` or a type that dereferences to it
|
= note: type of `self` must be `Self` or a type that dereferences to it
|
||||||
= help: consider changing to `self`, `&self`, `&mut self`, `self: Box<Self>`, `self: Rc<Self>`, `self: Arc<Self>`, or `self: Pin<P>` (where P is one of the previous types except `Self`)
|
= help: consider changing to `self`, `&self`, `&mut self`, `self: Box<Self>`, `self: Rc<Self>`, `self: Arc<Self>`, or `self: Pin<P>` (where P is one of the previous types except `Self`)
|
||||||
|
|
||||||
error[E0307]: invalid `self` parameter type: Bar<isize>
|
error[E0307]: invalid `self` parameter type: `Bar<isize>`
|
||||||
--> $DIR/ufcs-explicit-self-bad.rs:19:18
|
--> $DIR/ufcs-explicit-self-bad.rs:19:18
|
||||||
|
|
|
|
||||||
LL | fn foo(self: Bar<isize>, x: isize) -> isize {
|
LL | fn foo(self: Bar<isize>, x: isize) -> isize {
|
||||||
@ -33,7 +33,7 @@ LL | fn foo(self: Bar<isize>, x: isize) -> isize {
|
|||||||
= note: type of `self` must be `Self` or a type that dereferences to it
|
= note: type of `self` must be `Self` or a type that dereferences to it
|
||||||
= help: consider changing to `self`, `&self`, `&mut self`, `self: Box<Self>`, `self: Rc<Self>`, `self: Arc<Self>`, or `self: Pin<P>` (where P is one of the previous types except `Self`)
|
= help: consider changing to `self`, `&self`, `&mut self`, `self: Box<Self>`, `self: Rc<Self>`, `self: Arc<Self>`, or `self: Pin<P>` (where P is one of the previous types except `Self`)
|
||||||
|
|
||||||
error[E0307]: invalid `self` parameter type: &Bar<usize>
|
error[E0307]: invalid `self` parameter type: `&Bar<usize>`
|
||||||
--> $DIR/ufcs-explicit-self-bad.rs:23:18
|
--> $DIR/ufcs-explicit-self-bad.rs:23:18
|
||||||
|
|
|
|
||||||
LL | fn bar(self: &Bar<usize>, x: isize) -> isize {
|
LL | fn bar(self: &Bar<usize>, x: isize) -> isize {
|
||||||
|
Loading…
Reference in New Issue
Block a user