about summary refs log tree commit diff
path: root/src/test/ui/duplicate
AgeCommit message (Collapse)AuthorLines
2021-01-13Update code to account for extern ABI requirementMark Rousskov-4/+4
2020-08-22Use smaller def span for functionsAaron Hill-25/+12
Currently, the def span of a funtion encompasses the entire function signature and body. However, this is usually unnecessarily verbose - when we are pointing at an entire function in a diagnostic, we almost always want to point at the signature. The actual contents of the body tends to be irrelevant to the diagnostic we are emitting, and just takes up additional screen space. This commit changes the `def_span` of all function items (freestanding functions, `impl`-block methods, and `trait`-block methods) to be the span of the signature. For example, the function ```rust pub fn foo<T>(val: T) -> T { val } ``` now has a `def_span` corresponding to `pub fn foo<T>(val: T) -> T` (everything before the opening curly brace). Trait methods without a body have a `def_span` which includes the trailing semicolon. For example: ```rust trait Foo { fn bar(); }``` the function definition `Foo::bar` has a `def_span` of `fn bar();` This makes our diagnostic output much shorter, and emphasizes information that is relevant to whatever diagnostic we are reporting. We continue to use the full span (including the body) in a few of places: * MIR building uses the full span when building source scopes. * 'Outlives suggestions' use the full span to sort the diagnostics being emitted. * The `#[rustc_on_unimplemented(enclosing_scope="in this scope")]` attribute points the entire scope body. * The 'unconditional recursion' lint uses the full span to show additional context for the recursive call. All of these cases work only with local items, so we don't need to add anything extra to crate metadata.
2020-02-23Fail on multiple declarations of `main`.jumbatm-2/+29
Previously, when inserting the entry function, we only checked for duplicate _definitions_ of `main`. However, it's possible to cause problems even only having a duplicate _declaration_. For example, shadowing `main` using an extern block isn't caught by the current check, and causes an assertion failure down the line in in LLVM code.
2019-12-21rework run-fail and support check,build-failMazdak Farrokhzad-7/+21
2019-08-17Move type parameter shadowing errors to resolveMatthew Jasper-7/+7
For some reason type checking did this. Further it didn't consider hygiene.
2019-07-08normalize use of backticks for compiler messages in librustc_codegenSamy Kacimi-1/+1
https://github.com/rust-lang/rust/issues/60532
2019-04-18hide `--explain` hint if error has no extended infoAndy Russell-1/+1
2019-04-14normalize away spurious errorRalf Jung-1/+5
2019-03-11Update testsVadim Petrochenkov-5/+5
2019-02-07Update testsvarkor-7/+7
Co-Authored-By: Gabriel Smith <yodaldevoid@users.noreply.github.com>
2018-12-25Remove licensesMark Rousskov-110/+17
2018-10-17fix other tests failing due to change in case or new suggestion for extern crateFrançois Mockers-1/+1
2018-08-17Stabilize `use_extern_macros`Vadim Petrochenkov-3/+1
2018-08-14Merged migrated compile-fail tests and ui tests. Fixes #46841.David Wood-0/+382