Rust-GCC/rusttest-to-dg

Unable to parse `error code` if `source` file has uncomplete error msg

Opened this issue · 2 comments

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

This issue also affects this PR: #6