diff options
Diffstat (limited to 'tests/ui/imports/import-crate-with-invalid-spans/auxiliary/crate_with_invalid_spans.rs')
-rw-r--r-- | tests/ui/imports/import-crate-with-invalid-spans/auxiliary/crate_with_invalid_spans.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/tests/ui/imports/import-crate-with-invalid-spans/auxiliary/crate_with_invalid_spans.rs b/tests/ui/imports/import-crate-with-invalid-spans/auxiliary/crate_with_invalid_spans.rs new file mode 100644 index 000000000..b76c1680b --- /dev/null +++ b/tests/ui/imports/import-crate-with-invalid-spans/auxiliary/crate_with_invalid_spans.rs @@ -0,0 +1,20 @@ +#![crate_type = "rlib"] +// no-prefer-dynamic + +// compile-flags: -g + +#[macro_use] +mod crate_with_invalid_spans_macros; + +pub fn exported_generic<T>(x: T, y: u32) -> (T, u32) { + // Using the add1 macro will produce an invalid span, because the `y` passed + // to the macro will have a span from this file, but the rest of the code + // generated from the macro will have spans from the macro-defining file. + // The AST node for the (1 + y) expression generated by the macro will then + // take it's `lo` span bound from the `1` literal in the macro-defining file + // and it's `hi` bound from `y` in this file, which should be lower than the + // `lo` and even lower than the lower bound of the SourceFile it is supposedly + // contained in because the SourceFile for this file was allocated earlier than + // the SourceFile of the macro-defining file. + return (x, add1!(y)); +} |