Skip to content

Unable to parse error code if source file has uncomplete error msg #9

@MahadMuhammad

Description

@MahadMuhammad

Reproducer

I tried this code from https://github.com/rust-lang/rust/blob/master/tests/ui/associated-types/issue-20005.rs

test.rs

trait From<Src> {
    type Result;

    fn from(src: Src) -> Self::Result;
}

trait To {
    fn to<Dst>(
        self //~ ERROR the size for values of type
    ) -> <Dst as From<Self>>::Result where Dst: From<Self> { //~ ERROR the size for values of type
        From::from(self) //~ ERROR the size for values of type
    }
}

fn main() {}
test.stderr

error[E0277]: the size for values of type `Self` cannot be known at compilation time
  --> $DIR/issue-20005.rs:10:49
   |
LL |     ) -> <Dst as From<Self>>::Result where Dst: From<Self> {
   |                                                 ^^^^^^^^^^ doesn't have a size known at compile-time
   |
note: required by an implicit `Sized` bound in `From`
  --> $DIR/issue-20005.rs:1:12
   |
LL | trait From<Src> {
   |            ^^^ required by the implicit `Sized` requirement on this type parameter in `From`
help: consider further restricting `Self`
   |
LL |     ) -> <Dst as From<Self>>::Result where Dst: From<Self>, Self: Sized {
   |                                                           +++++++++++++
help: consider relaxing the implicit `Sized` restriction
   |
LL | trait From<Src: ?Sized> {
   |               ++++++++

error[E0277]: the size for values of type `Self` cannot be known at compilation time
  --> $DIR/issue-20005.rs:9:9
   |
LL |         self
   |         ^^^^ doesn't have a size known at compile-time
   |
   = help: unsized fn params are gated as an unstable feature
help: consider further restricting `Self`
   |
LL |     ) -> <Dst as From<Self>>::Result where Dst: From<Self>, Self: Sized {
   |                                                           +++++++++++++
help: function arguments must have a statically known size, borrowed types always have a known size
   |
LL |         &self
   |         +

error[E0277]: the size for values of type `Self` cannot be known at compilation time
  --> $DIR/issue-20005.rs:11:9
   |
LL |         From::from(self)
   |         ^^^^^^^^^^^^^^^^ doesn't have a size known at compile-time
   |
note: required by an implicit `Sized` bound in `From`
  --> $DIR/issue-20005.rs:1:12
   |
LL | trait From<Src> {
   |            ^^^ required by the implicit `Sized` requirement on this type parameter in `From`
help: consider further restricting `Self`
   |
LL |     ) -> <Dst as From<Self>>::Result where Dst: From<Self>, Self: Sized {
   |                                                           +++++++++++++
help: consider relaxing the implicit `Sized` restriction
   |
LL | trait From<Src: ?Sized> {
   |               ++++++++

error: aborting due to 3 previous errors

For more information about this error, try `rustc --explain E0277`.

Expected behavior:

trait From<Src> {
    type Result;

    fn from(src: Src) -> Self::Result;
}

trait To {
    fn to<Dst>(
        self // { dg-error ".E0277." "" { target *-*-* } }
    ) -> <Dst as From<Self>>::Result where Dst: From<Self> { // { dg-error ".E0277." "" { target *-*-* } }
        From::from(self) // { dg-error ".E0277." "" { target *-*-* } }
    }
}

fn main() {}

Actual behavior:

  • No error codes
trait From<Src> {
    type Result;

    fn from(src: Src) -> Self::Result;
}

trait To {
    fn to<Dst>(
        self // { dg-error "" "" { target *-*-* } }
    ) -> <Dst as From<Self>>::Result where Dst: From<Self> { // { dg-error "" "" { target *-*-* } }
        From::from(self) // { dg-error "" "" { target *-*-* } }
    }
}

fn main() {}

Tool version:

f91da539e62db42c51f74022becdbff901bff1a2

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions