aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/rust/expand/rust-proc-macro.cc4
-rw-r--r--gcc/rust/lex/rust-lex.cc4
-rw-r--r--gcc/rust/lex/rust-lex.h2
-rw-r--r--gcc/rust/parse/rust-cfg-parser.cc2
-rw-r--r--gcc/rust/rust-session-manager.cc2
-rw-r--r--gcc/rust/typecheck/rust-hir-trait-resolve.cc20
-rw-r--r--gcc/rust/typecheck/rust-hir-type-check-base.cc17
-rw-r--r--gcc/rust/typecheck/rust-hir-type-check-base.h8
-rw-r--r--gcc/rust/typecheck/rust-hir-type-check-type.cc69
-rw-r--r--gcc/rust/typecheck/rust-hir-type-check-type.h8
-rw-r--r--gcc/rust/typecheck/rust-typecheck-context.cc3
-rw-r--r--gcc/rust/typecheck/rust-tyty-bounds.cc48
-rw-r--r--gcc/rust/util/rust-hir-map.cc21
-rw-r--r--gcc/rust/util/rust-hir-map.h6
-rw-r--r--gcc/rust/util/rust-token-converter.cc4
-rw-r--r--gcc/testsuite/rust/compile/bounds1.rs3
-rw-r--r--gcc/testsuite/rust/compile/canonical_paths1.rs3
-rw-r--r--gcc/testsuite/rust/compile/cast_generics.rs3
-rw-r--r--gcc/testsuite/rust/compile/closure_no_type_anno.rs3
-rw-r--r--gcc/testsuite/rust/compile/complex_qualified_path_in_expr.rs5
-rw-r--r--gcc/testsuite/rust/compile/const-issue1440.rs3
-rw-r--r--gcc/testsuite/rust/compile/const_generics_1.rs3
-rw-r--r--gcc/testsuite/rust/compile/const_generics_8.rs3
-rw-r--r--gcc/testsuite/rust/compile/derive_macro1.rs3
-rw-r--r--gcc/testsuite/rust/compile/derive_macro3.rs3
-rw-r--r--gcc/testsuite/rust/compile/derive_macro4.rs3
-rw-r--r--gcc/testsuite/rust/compile/derive_macro6.rs3
-rw-r--r--gcc/testsuite/rust/compile/expected_type_args2.rs3
-rw-r--r--gcc/testsuite/rust/compile/expected_type_args3.rs3
-rw-r--r--gcc/testsuite/rust/compile/generics1.rs3
-rw-r--r--gcc/testsuite/rust/compile/generics11.rs3
-rw-r--r--gcc/testsuite/rust/compile/generics12.rs3
-rw-r--r--gcc/testsuite/rust/compile/generics2.rs3
-rw-r--r--gcc/testsuite/rust/compile/generics3.rs3
-rw-r--r--gcc/testsuite/rust/compile/generics4.rs3
-rw-r--r--gcc/testsuite/rust/compile/generics6.rs3
-rw-r--r--gcc/testsuite/rust/compile/generics7.rs3
-rw-r--r--gcc/testsuite/rust/compile/generics8.rs3
-rw-r--r--gcc/testsuite/rust/compile/if_let_expr.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1005.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1019.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1031.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1034.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1128.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1129-2.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1130.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1131.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1165.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1173.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1235.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1237.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1289.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1383.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1447.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1589.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1725-1.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1725-2.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1773.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1786.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1893.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1901.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1930.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-1981.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2019-1.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2019-2.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2019-3.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2036.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2037.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2070.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2105.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2106.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2135.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2136-1.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2136-2.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2139.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2142.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2165.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2166.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2190-1.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2190-2.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2195.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2238.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2304.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-2375.rs14
-rw-r--r--gcc/testsuite/rust/compile/issue-850.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-855.rs3
-rw-r--r--gcc/testsuite/rust/compile/issue-925.rs3
-rw-r--r--gcc/testsuite/rust/compile/macro-issue1400.rs3
-rw-r--r--gcc/testsuite/rust/compile/macro20.rs3
-rw-r--r--gcc/testsuite/rust/compile/macro23.rs3
-rw-r--r--gcc/testsuite/rust/compile/macro40.rs3
-rw-r--r--gcc/testsuite/rust/compile/macro54.rs3
-rw-r--r--gcc/testsuite/rust/compile/name_resolution2.rs3
-rw-r--r--gcc/testsuite/rust/compile/name_resolution4.rs3
-rw-r--r--gcc/testsuite/rust/compile/nested_generic.rs3
-rw-r--r--gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg.rs3
-rw-r--r--gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg2.rs3
-rw-r--r--gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg3.rs3
-rw-r--r--gcc/testsuite/rust/compile/parse_complex_generic_application.rs3
-rw-r--r--gcc/testsuite/rust/compile/parse_complex_generic_application2.rs3
-rw-r--r--gcc/testsuite/rust/compile/path_as_generic_arg.rs3
-rw-r--r--gcc/testsuite/rust/compile/privacy4.rs3
-rw-r--r--gcc/testsuite/rust/compile/privacy6.rs3
-rw-r--r--gcc/testsuite/rust/compile/sizeof-stray-infer-var-bug.rs3
-rw-r--r--gcc/testsuite/rust/compile/stmt_with_block_dot.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/associated_types1.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/forward_decl_5.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics1.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics10.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics11.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics12.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics13.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics14.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics15.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics16.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics17.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics18.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics19.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics2.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics20.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics21.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics22.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics23.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics24.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics25.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics26.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics27.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics28.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics29.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics3.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics30.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics31.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics32.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics4.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics5.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics6.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics7.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics8.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/generics9.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/intrinsics-2.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/intrinsics-6.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/intrinsics-7.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/intrinsics-8.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/issue-1024.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/issue-1075.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/issue-1432.rs4
-rw-r--r--gcc/testsuite/rust/compile/torture/issue-1555.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/issue-368.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/issue-808.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/issue-862.rs4
-rw-r--r--gcc/testsuite/rust/compile/torture/issue-893-2.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/issue-893.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/must_use2.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/nested_fn2.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/phantom_data.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/range-lang-item1.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/traits1.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/traits11.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/traits12.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/traits13.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/traits14.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/traits15.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/traits16.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/traits17.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/traits18.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/traits19.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/traits2.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/traits3.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/traits4.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/traits5.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/traits6.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/traits7.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/traits8.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/traits9.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/transmute-size-check-1.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/transmute1.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/uninit-intrinsic-1.rs3
-rw-r--r--gcc/testsuite/rust/compile/torture/utf8_identifiers.rs3
-rw-r--r--gcc/testsuite/rust/compile/traits1.rs3
-rw-r--r--gcc/testsuite/rust/compile/traits10.rs3
-rw-r--r--gcc/testsuite/rust/compile/traits11.rs3
-rw-r--r--gcc/testsuite/rust/compile/traits12.rs3
-rw-r--r--gcc/testsuite/rust/compile/traits2.rs3
-rw-r--r--gcc/testsuite/rust/compile/traits3.rs3
-rw-r--r--gcc/testsuite/rust/compile/traits4.rs3
-rw-r--r--gcc/testsuite/rust/compile/traits5.rs3
-rw-r--r--gcc/testsuite/rust/compile/traits6.rs3
-rw-r--r--gcc/testsuite/rust/compile/traits7.rs3
-rw-r--r--gcc/testsuite/rust/compile/traits8.rs3
-rw-r--r--gcc/testsuite/rust/compile/traits9.rs3
-rw-r--r--gcc/testsuite/rust/compile/type-bindings1.rs3
-rw-r--r--gcc/testsuite/rust/compile/unconstrained_type_param.rs3
-rw-r--r--gcc/testsuite/rust/compile/unsafe10.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/closure1.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/closure2.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/closure3.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/closure4.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/coercion1.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/coercion2.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/coercion3.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/copy_nonoverlapping1.rs4
-rw-r--r--gcc/testsuite/rust/execute/torture/derive_macro1.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/derive_macro3.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/derive_macro4.rs5
-rw-r--r--gcc/testsuite/rust/execute/torture/index1.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-1120.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-1133.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-1198.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-1232.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-1249.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-1436.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-1496.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-1720-2.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-1720.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-2052.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-2179.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-2180.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-2236.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-647.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-845.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-851.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/issue-858.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/macros23.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/macros28.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/method2.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/method3.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/method4.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/operator_overload_1.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/operator_overload_10.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/operator_overload_11.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/operator_overload_12.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/operator_overload_2.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/operator_overload_3.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/operator_overload_4.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/operator_overload_5.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/operator_overload_6.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/operator_overload_7.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/operator_overload_8.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/operator_overload_9.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/prefetch_data.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/ref-pattern2.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/slice-magic.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/slice-magic2.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/slice1.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/str-layout1.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/trait1.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/trait10.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/trait11.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/trait12.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/trait13.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/trait2.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/trait3.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/trait4.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/trait5.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/trait6.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/trait7.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/trait8.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/trait9.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/transmute1.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/wrapping_op1.rs3
-rw-r--r--gcc/testsuite/rust/execute/torture/wrapping_op2.rs3
-rw-r--r--gcc/testsuite/rust/link/generic_function_0.rs3
-rw-r--r--gcc/testsuite/rust/link/generic_function_1.rs3
263 files changed, 925 insertions, 55 deletions
diff --git a/gcc/rust/expand/rust-proc-macro.cc b/gcc/rust/expand/rust-proc-macro.cc
index e9e7918..541a010 100644
--- a/gcc/rust/expand/rust-proc-macro.cc
+++ b/gcc/rust/expand/rust-proc-macro.cc
@@ -31,7 +31,7 @@ namespace {
ProcMacro::Literal
literal_from_string (const std::string &data, bool &error)
{
- Lexer lex (data);
+ Lexer lex (data, nullptr);
const_TokenPtr output = lex.build_token ();
if (output == nullptr || !output->is_literal ())
{
@@ -48,7 +48,7 @@ ProcMacro::TokenStream
tokenstream_from_string (std::string &data, bool &lex_error)
{
// FIXME: Insert location pointing to call site in tokens
- Lexer lex (data);
+ Lexer lex (data, nullptr);
std::vector<const_TokenPtr> tokens;
TokenPtr ptr;
diff --git a/gcc/rust/lex/rust-lex.cc b/gcc/rust/lex/rust-lex.cc
index 8c575a7..7eb9142 100644
--- a/gcc/rust/lex/rust-lex.cc
+++ b/gcc/rust/lex/rust-lex.cc
@@ -136,9 +136,9 @@ is_identifier_continue (uint32_t codepoint)
return cpp_check_xid_property (codepoint) & CPP_XID_CONTINUE;
}
-Lexer::Lexer (const std::string &input)
+Lexer::Lexer (const std::string &input, Linemap *linemap)
: input (RAIIFile::create_error ()), current_line (1), current_column (1),
- line_map (nullptr), dump_lex_out ({}),
+ line_map (linemap), dump_lex_out ({}),
raw_input_source (new BufferInputSource (input, 0)),
input_queue{*raw_input_source}, token_queue (TokenSource (this))
{}
diff --git a/gcc/rust/lex/rust-lex.h b/gcc/rust/lex/rust-lex.h
index e85b562..27286ac 100644
--- a/gcc/rust/lex/rust-lex.h
+++ b/gcc/rust/lex/rust-lex.h
@@ -161,7 +161,7 @@ public:
tl::optional<std::ofstream &> dump_lex_opt = tl::nullopt);
// Lex the contents of a string instead of a file
- Lexer (const std::string &input);
+ Lexer (const std::string &input, Linemap *linemap);
// dtor
~Lexer ();
diff --git a/gcc/rust/parse/rust-cfg-parser.cc b/gcc/rust/parse/rust-cfg-parser.cc
index 0a62dd1..f859399 100644
--- a/gcc/rust/parse/rust-cfg-parser.cc
+++ b/gcc/rust/parse/rust-cfg-parser.cc
@@ -27,7 +27,7 @@ parse_cfg_option (std::string &input, std::string &key, std::string &value)
key.clear ();
value.clear ();
- auto lexer = Lexer (input);
+ auto lexer = Lexer (input, nullptr);
auto parser = Parser<Lexer> (lexer);
auto token = parser.peek_current_token ();
diff --git a/gcc/rust/rust-session-manager.cc b/gcc/rust/rust-session-manager.cc
index ee7dd08..4f779d1 100644
--- a/gcc/rust/rust-session-manager.cc
+++ b/gcc/rust/rust-session-manager.cc
@@ -1021,7 +1021,7 @@ Session::load_extern_crate (const std::string &crate_name, location_t locus)
mappings->set_current_crate (crate_num);
// then lets parse this as a 2nd crate
- Lexer lex (extern_crate.get_metadata ());
+ Lexer lex (extern_crate.get_metadata (), linemap);
Parser<Lexer> parser (lex);
std::unique_ptr<AST::Crate> metadata_crate = parser.parse_crate ();
diff --git a/gcc/rust/typecheck/rust-hir-trait-resolve.cc b/gcc/rust/typecheck/rust-hir-trait-resolve.cc
index f2dd191..1782775 100644
--- a/gcc/rust/typecheck/rust-hir-trait-resolve.cc
+++ b/gcc/rust/typecheck/rust-hir-trait-resolve.cc
@@ -164,8 +164,8 @@ TraitResolver::resolve_trait (HIR::Trait *trait_reference)
TyTy::BaseType *self = nullptr;
std::vector<TyTy::SubstitutionParamMapping> substitutions;
- // FIXME
- // this should use the resolve_generic_params like everywhere else
+ // this needs to be special cased for the sized trait to not auto implemented
+ // Sized on Self
for (auto &generic_param : trait_reference->get_generic_params ())
{
switch (generic_param.get ()->get_kind ())
@@ -177,16 +177,22 @@ TraitResolver::resolve_trait (HIR::Trait *trait_reference)
break;
case HIR::GenericParam::GenericKind::TYPE: {
+ auto &typaram = static_cast<HIR::TypeParam &> (*generic_param);
+ bool is_self
+ = typaram.get_type_representation ().as_string ().compare ("Self")
+ == 0;
+
+ // https://doc.rust-lang.org/std/marker/trait.Sized.html
+ // The one exception is the implicit Self type of a trait
+ bool apply_sized = !is_self;
auto param_type
- = TypeResolveGenericParam::Resolve (generic_param.get ());
+ = TypeResolveGenericParam::Resolve (generic_param.get (),
+ apply_sized);
context->insert_type (generic_param->get_mappings (), param_type);
-
- auto &typaram = static_cast<HIR::TypeParam &> (*generic_param);
substitutions.push_back (
TyTy::SubstitutionParamMapping (typaram, param_type));
- if (typaram.get_type_representation ().as_string ().compare ("Self")
- == 0)
+ if (is_self)
{
rust_assert (param_type->get_kind () == TyTy::TypeKind::PARAM);
TyTy::ParamType *p
diff --git a/gcc/rust/typecheck/rust-hir-type-check-base.cc b/gcc/rust/typecheck/rust-hir-type-check-base.cc
index ae433e8..ac9d0e9 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-base.cc
+++ b/gcc/rust/typecheck/rust-hir-type-check-base.cc
@@ -19,6 +19,7 @@
#include "rust-hir-type-check-base.h"
#include "rust-hir-type-check-expr.h"
#include "rust-hir-type-check-type.h"
+#include "rust-hir-trait-resolve.h"
#include "rust-type-util.h"
namespace Rust {
@@ -399,5 +400,21 @@ TypeCheckBase::resolve_generic_params (
}
}
+TyTy::TypeBoundPredicate
+TypeCheckBase::get_marker_predicate (Analysis::RustLangItem::ItemType item_type,
+ location_t locus)
+{
+ DefId item_id = mappings->get_lang_item (item_type, locus);
+ HIR::Item *item = mappings->lookup_defid (item_id);
+ rust_assert (item != nullptr);
+ rust_assert (item->get_item_kind () == HIR::Item::ItemKind::Trait);
+
+ HIR::Trait &trait = *static_cast<HIR::Trait *> (item);
+ TraitReference *ref = TraitResolver::Resolve (trait);
+ rust_assert (ref != nullptr);
+
+ return TyTy::TypeBoundPredicate (*ref, BoundPolarity::RegularBound, locus);
+}
+
} // namespace Resolver
} // namespace Rust
diff --git a/gcc/rust/typecheck/rust-hir-type-check-base.h b/gcc/rust/typecheck/rust-hir-type-check-base.h
index 0cbcefe..0491e0f 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-base.h
+++ b/gcc/rust/typecheck/rust-hir-type-check-base.h
@@ -38,7 +38,9 @@ protected:
TraitReference *resolve_trait_path (HIR::TypePath &);
TyTy::TypeBoundPredicate
- get_predicate_from_bound (HIR::TypePath &path, HIR::Type *associated_self);
+ get_predicate_from_bound (HIR::TypePath &path, HIR::Type *associated_self,
+ BoundPolarity polarity
+ = BoundPolarity::RegularBound);
bool check_for_unconstrained (
const std::vector<TyTy::SubstitutionParamMapping> &params_to_constrain,
@@ -56,6 +58,10 @@ protected:
const std::vector<std::unique_ptr<HIR::GenericParam> > &generic_params,
std::vector<TyTy::SubstitutionParamMapping> &substitutions);
+ TyTy::TypeBoundPredicate
+ get_marker_predicate (Analysis::RustLangItem::ItemType item_type,
+ location_t locus);
+
Analysis::Mappings *mappings;
Resolver *resolver;
TypeCheckContext *context;
diff --git a/gcc/rust/typecheck/rust-hir-type-check-type.cc b/gcc/rust/typecheck/rust-hir-type-check-type.cc
index c3bc14b..03ee74a 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-type.cc
+++ b/gcc/rust/typecheck/rust-hir-type-check-type.cc
@@ -673,9 +673,9 @@ TypeCheckType::visit (HIR::NeverType &type)
}
TyTy::ParamType *
-TypeResolveGenericParam::Resolve (HIR::GenericParam *param)
+TypeResolveGenericParam::Resolve (HIR::GenericParam *param, bool apply_sized)
{
- TypeResolveGenericParam resolver;
+ TypeResolveGenericParam resolver (apply_sized);
switch (param->get_kind ())
{
case HIR::GenericParam::GenericKind::TYPE:
@@ -733,8 +733,26 @@ TypeResolveGenericParam::visit (HIR::TypeParam &param)
= new HIR::TypePath (mappings, {}, BUILTINS_LOCATION, false);
}
+ std::map<DefId, std::vector<TyTy::TypeBoundPredicate>> predicates;
+
+ // https://doc.rust-lang.org/std/marker/trait.Sized.html
+ // All type parameters have an implicit bound of Sized. The special syntax
+ // ?Sized can be used to remove this bound if it’s not appropriate.
+ //
+ // We can only do this when we are not resolving the implicit Self for Sized
+ // itself
+ rust_debug_loc (param.get_locus (), "apply_sized: %s",
+ apply_sized ? "true" : "false");
+ if (apply_sized)
+ {
+ TyTy::TypeBoundPredicate sized_predicate
+ = get_marker_predicate (Analysis::RustLangItem::ItemType::SIZED,
+ param.get_locus ());
+
+ predicates[sized_predicate.get_id ()] = {sized_predicate};
+ }
+
// resolve the bounds
- std::vector<TyTy::TypeBoundPredicate> specified_bounds;
if (param.has_type_param_bounds ())
{
for (auto &bound : param.get_type_param_bounds ())
@@ -747,9 +765,40 @@ TypeResolveGenericParam::visit (HIR::TypeParam &param)
TyTy::TypeBoundPredicate predicate
= get_predicate_from_bound (b->get_path (),
- implicit_self_bound);
+ implicit_self_bound,
+ b->get_polarity ());
if (!predicate.is_error ())
- specified_bounds.push_back (std::move (predicate));
+ {
+ switch (predicate.get_polarity ())
+ {
+ case BoundPolarity::AntiBound: {
+ bool found = predicates.find (predicate.get_id ())
+ != predicates.end ();
+ if (found)
+ predicates.erase (predicate.get_id ());
+ else
+ {
+ // emit error message
+ rich_location r (line_table, b->get_locus ());
+ r.add_range (predicate.get ()->get_locus ());
+ rust_error_at (
+ r, "antibound for %s is not applied here",
+ predicate.get ()->get_name ().c_str ());
+ }
+ }
+ break;
+
+ default: {
+ if (predicates.find (predicate.get_id ())
+ == predicates.end ())
+ {
+ predicates[predicate.get_id ()] = {};
+ }
+ predicates[predicate.get_id ()].push_back (predicate);
+ }
+ break;
+ }
+ }
}
break;
@@ -759,6 +808,16 @@ TypeResolveGenericParam::visit (HIR::TypeParam &param)
}
}
+ // now to flat map the specified_bounds into the raw specified predicates
+ std::vector<TyTy::TypeBoundPredicate> specified_bounds;
+ for (auto it = predicates.begin (); it != predicates.end (); it++)
+ {
+ for (const auto &predicate : it->second)
+ {
+ specified_bounds.push_back (predicate);
+ }
+ }
+
resolved = new TyTy::ParamType (param.get_type_representation ().as_string (),
param.get_locus (),
param.get_mappings ().get_hirid (), param,
diff --git a/gcc/rust/typecheck/rust-hir-type-check-type.h b/gcc/rust/typecheck/rust-hir-type-check-type.h
index b9b129b..31b4869 100644
--- a/gcc/rust/typecheck/rust-hir-type-check-type.h
+++ b/gcc/rust/typecheck/rust-hir-type-check-type.h
@@ -96,7 +96,8 @@ private:
class TypeResolveGenericParam : public TypeCheckBase
{
public:
- static TyTy::ParamType *Resolve (HIR::GenericParam *param);
+ static TyTy::ParamType *Resolve (HIR::GenericParam *param,
+ bool apply_sized = true);
protected:
void visit (HIR::TypeParam &param);
@@ -104,9 +105,12 @@ protected:
void visit (HIR::ConstGenericParam &param);
private:
- TypeResolveGenericParam () : TypeCheckBase (), resolved (nullptr) {}
+ TypeResolveGenericParam (bool apply_sized)
+ : TypeCheckBase (), resolved (nullptr), apply_sized (apply_sized)
+ {}
TyTy::ParamType *resolved;
+ bool apply_sized;
};
class ResolveWhereClauseItem : public TypeCheckBase
diff --git a/gcc/rust/typecheck/rust-typecheck-context.cc b/gcc/rust/typecheck/rust-typecheck-context.cc
index 7062259..4695468 100644
--- a/gcc/rust/typecheck/rust-typecheck-context.cc
+++ b/gcc/rust/typecheck/rust-typecheck-context.cc
@@ -345,7 +345,6 @@ void
TypeCheckContext::insert_autoderef_mappings (
HirId id, std::vector<Adjustment> &&adjustments)
{
- rust_assert (autoderef_mappings.find (id) == autoderef_mappings.end ());
autoderef_mappings.emplace (id, std::move (adjustments));
}
@@ -365,8 +364,6 @@ void
TypeCheckContext::insert_cast_autoderef_mappings (
HirId id, std::vector<Adjustment> &&adjustments)
{
- rust_assert (cast_autoderef_mappings.find (id)
- == cast_autoderef_mappings.end ());
cast_autoderef_mappings.emplace (id, std::move (adjustments));
}
diff --git a/gcc/rust/typecheck/rust-tyty-bounds.cc b/gcc/rust/typecheck/rust-tyty-bounds.cc
index 5947c21..6239a83 100644
--- a/gcc/rust/typecheck/rust-tyty-bounds.cc
+++ b/gcc/rust/typecheck/rust-tyty-bounds.cc
@@ -103,18 +103,22 @@ TypeBoundsProbe::assemble_sized_builtin ()
{
const TyTy::BaseType *raw = receiver->destructure ();
- // does this thing actually implement sized?
+ // https://runrust.miraheze.org/wiki/Dynamically_Sized_Type
+ // everything is sized except for:
+ //
+ // 1. dyn traits
+ // 2. slices
+ // 3. str
+ // 4. ADT's which contain any of the above
+ // t. tuples which contain any of the above
switch (raw->get_kind ())
{
- case TyTy::ADT:
- case TyTy::STR:
+ case TyTy::ARRAY:
case TyTy::REF:
case TyTy::POINTER:
case TyTy::PARAM:
- case TyTy::SLICE:
case TyTy::FNDEF:
case TyTy::FNPTR:
- case TyTy::TUPLE:
case TyTy::BOOL:
case TyTy::CHAR:
case TyTy::INT:
@@ -124,13 +128,21 @@ TypeBoundsProbe::assemble_sized_builtin ()
case TyTy::ISIZE:
case TyTy::CLOSURE:
case TyTy::INFER:
- assemble_builtin_candidate (Analysis::RustLangItem::SIZED);
- break;
-
- case TyTy::ARRAY:
case TyTy::NEVER:
case TyTy::PLACEHOLDER:
case TyTy::PROJECTION:
+ assemble_builtin_candidate (Analysis::RustLangItem::SIZED);
+ break;
+
+ // FIXME str and slice need to be moved and test cases updated
+ case TyTy::SLICE:
+ case TyTy::STR:
+ case TyTy::ADT:
+ case TyTy::TUPLE:
+ // FIXME add extra checks
+ assemble_builtin_candidate (Analysis::RustLangItem::SIZED);
+ break;
+
case TyTy::DYNAMIC:
case TyTy::ERROR:
break;
@@ -171,7 +183,8 @@ TypeCheckBase::resolve_trait_path (HIR::TypePath &path)
TyTy::TypeBoundPredicate
TypeCheckBase::get_predicate_from_bound (HIR::TypePath &type_path,
- HIR::Type *associated_self)
+ HIR::Type *associated_self,
+ BoundPolarity polarity)
{
TyTy::TypeBoundPredicate lookup = TyTy::TypeBoundPredicate::error ();
bool already_resolved
@@ -184,8 +197,7 @@ TypeCheckBase::get_predicate_from_bound (HIR::TypePath &type_path,
if (trait->is_error ())
return TyTy::TypeBoundPredicate::error ();
- TyTy::TypeBoundPredicate predicate (*trait, BoundPolarity::RegularBound,
- type_path.get_locus ());
+ TyTy::TypeBoundPredicate predicate (*trait, polarity, type_path.get_locus ());
HIR::GenericArgs args
= HIR::GenericArgs::create_empty (type_path.get_locus ());
@@ -234,7 +246,8 @@ TypeCheckBase::get_predicate_from_bound (HIR::TypePath &type_path,
TypeCheckType::Resolve (fn.get_return_type ().get ());
HIR::TraitItem *trait_item = mappings->lookup_trait_item_lang_item (
- Analysis::RustLangItem::ItemType::FN_ONCE_OUTPUT);
+ Analysis::RustLangItem::ItemType::FN_ONCE_OUTPUT,
+ final_seg->get_locus ());
std::vector<HIR::GenericArgsBinding> bindings;
location_t output_locus = fn.get_return_type ()->get_locus ();
@@ -609,10 +622,11 @@ TypeBoundPredicate::handle_substitions (
TyTy::BaseType *type = it.second;
TypeBoundPredicateItem item = lookup_associated_item (identifier);
- rust_assert (!item.is_error ());
-
- const auto item_ref = item.get_raw_item ();
- item_ref->associated_type_set (type);
+ if (!item.is_error ())
+ {
+ const auto item_ref = item.get_raw_item ();
+ item_ref->associated_type_set (type);
+ }
}
// FIXME more error handling at some point
diff --git a/gcc/rust/util/rust-hir-map.cc b/gcc/rust/util/rust-hir-map.cc
index c50836c..647c29f 100644
--- a/gcc/rust/util/rust-hir-map.cc
+++ b/gcc/rust/util/rust-hir-map.cc
@@ -1266,16 +1266,23 @@ Mappings::lookup_builtin_marker ()
return builtinMarker;
}
-HIR::TraitItem *
-Mappings::lookup_trait_item_lang_item (Analysis::RustLangItem::ItemType item)
+DefId
+Mappings::get_lang_item (RustLangItem::ItemType item_type, location_t locus)
{
- DefId trait_item_id = UNKNOWN_DEFID;
- bool trait_item_lang_item_defined = lookup_lang_item (item, &trait_item_id);
+ DefId item = UNKNOWN_DEFID;
+ bool ok = lookup_lang_item (item_type, &item);
+ if (!ok)
+ rust_fatal_error (locus, "failed to find lang item %s",
+ RustLangItem::ToString (item_type).c_str ());
- // FIXME
- // make this an error? what does rustc do when a lang item is not defined?
- rust_assert (trait_item_lang_item_defined);
+ return item;
+}
+HIR::TraitItem *
+Mappings::lookup_trait_item_lang_item (Analysis::RustLangItem::ItemType item,
+ location_t locus)
+{
+ DefId trait_item_id = get_lang_item (item, locus);
return lookup_trait_item_defid (trait_item_id);
}
diff --git a/gcc/rust/util/rust-hir-map.h b/gcc/rust/util/rust-hir-map.h
index b78d4c2..f62885f 100644
--- a/gcc/rust/util/rust-hir-map.h
+++ b/gcc/rust/util/rust-hir-map.h
@@ -271,6 +271,9 @@ public:
return true;
}
+ // This will fatal_error when this lang item does not exist
+ DefId get_lang_item (RustLangItem::ItemType item_type, location_t locus);
+
void insert_macro_def (AST::MacroRulesDefinition *macro);
bool lookup_macro_def (NodeId id, AST::MacroRulesDefinition **def);
@@ -342,7 +345,8 @@ public:
HIR::ImplBlock *lookup_builtin_marker ();
HIR::TraitItem *
- lookup_trait_item_lang_item (Analysis::RustLangItem::ItemType item);
+ lookup_trait_item_lang_item (Analysis::RustLangItem::ItemType item,
+ location_t locus);
private:
Mappings ();
diff --git a/gcc/rust/util/rust-token-converter.cc b/gcc/rust/util/rust-token-converter.cc
index d9fb85c..67d073d 100644
--- a/gcc/rust/util/rust-token-converter.cc
+++ b/gcc/rust/util/rust-token-converter.cc
@@ -279,7 +279,7 @@ from_ident (const ProcMacro::Ident &ident, std::vector<const_TokenPtr> &result)
if (ident.is_raw)
value = "r#" + value;
- Lexer lexer (value);
+ Lexer lexer (value, nullptr);
auto token = lexer.build_token ();
token->set_locus (convert (ident.span));
result.push_back (token);
@@ -349,7 +349,7 @@ from_punct (const ProcMacro::Punct &punct, std::vector<std::uint32_t> &acc,
{
// TODO: UTF-8 string
std::string whole (acc.begin (), acc.end ());
- auto lexer = Lexer (whole);
+ auto lexer = Lexer (whole, nullptr);
auto token = lexer.build_token ();
token->set_locus (convert (punct.span));
result.push_back (token);
diff --git a/gcc/testsuite/rust/compile/bounds1.rs b/gcc/testsuite/rust/compile/bounds1.rs
index 1ace9fb..a02e6f6 100644
--- a/gcc/testsuite/rust/compile/bounds1.rs
+++ b/gcc/testsuite/rust/compile/bounds1.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
mod core {
mod ops {
#[lang = "add"]
diff --git a/gcc/testsuite/rust/compile/canonical_paths1.rs b/gcc/testsuite/rust/compile/canonical_paths1.rs
index 193e7b5..bd6f3b2 100644
--- a/gcc/testsuite/rust/compile/canonical_paths1.rs
+++ b/gcc/testsuite/rust/compile/canonical_paths1.rs
@@ -1,4 +1,7 @@
// { dg-additional-options "-w -fdump-tree-gimple -frust-crate=example" }
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo(i32);
trait TR {
diff --git a/gcc/testsuite/rust/compile/cast_generics.rs b/gcc/testsuite/rust/compile/cast_generics.rs
index 7d18596..469fa94 100644
--- a/gcc/testsuite/rust/compile/cast_generics.rs
+++ b/gcc/testsuite/rust/compile/cast_generics.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
fn test<T>(a: T) -> T {
a
}
diff --git a/gcc/testsuite/rust/compile/closure_no_type_anno.rs b/gcc/testsuite/rust/compile/closure_no_type_anno.rs
index ff2c8b8..b647da7 100644
--- a/gcc/testsuite/rust/compile/closure_no_type_anno.rs
+++ b/gcc/testsuite/rust/compile/closure_no_type_anno.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "fn_once"]
trait FnOnce<Args> {
type Output;
diff --git a/gcc/testsuite/rust/compile/complex_qualified_path_in_expr.rs b/gcc/testsuite/rust/compile/complex_qualified_path_in_expr.rs
index 6244a6b..5036410 100644
--- a/gcc/testsuite/rust/compile/complex_qualified_path_in_expr.rs
+++ b/gcc/testsuite/rust/compile/complex_qualified_path_in_expr.rs
@@ -1,4 +1,7 @@
-struct S; // { dg-warning "struct is never constructed" "" { target *-*-* } .-1 }
+#[lang = "sized"]
+pub trait Sized {}
+
+struct S; // { dg-warning "struct is never constructed" }
impl S {
fn f() -> i32 { return 0; }
// { dg-warning "associated function is never used" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/rust/compile/const-issue1440.rs b/gcc/testsuite/rust/compile/const-issue1440.rs
index 2529a1c..3a2989c 100644
--- a/gcc/testsuite/rust/compile/const-issue1440.rs
+++ b/gcc/testsuite/rust/compile/const-issue1440.rs
@@ -1,6 +1,9 @@
// { dg-additional-options "-w" }
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
mod intrinsics {
extern "rust-intrinsic" {
pub fn wrapping_add<T>(a: T, b: T) -> T;
diff --git a/gcc/testsuite/rust/compile/const_generics_1.rs b/gcc/testsuite/rust/compile/const_generics_1.rs
index bcad8ee..5d4ca64 100644
--- a/gcc/testsuite/rust/compile/const_generics_1.rs
+++ b/gcc/testsuite/rust/compile/const_generics_1.rs
@@ -3,6 +3,9 @@
// There are errors about unused generic parameters, but we can't handle that yet.
// Still, this code is invalid Rust.
+#[lang = "sized"]
+pub trait Sized {}
+
mod sain {
struct Foo<const N: usize>;
struct Bar<T, const N: usize>;
diff --git a/gcc/testsuite/rust/compile/const_generics_8.rs b/gcc/testsuite/rust/compile/const_generics_8.rs
index b0bb262..c781083 100644
--- a/gcc/testsuite/rust/compile/const_generics_8.rs
+++ b/gcc/testsuite/rust/compile/const_generics_8.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Bidule<const N: i32 = 15> {}
enum Bidoule<const N: i32 = 15> {}
diff --git a/gcc/testsuite/rust/compile/derive_macro1.rs b/gcc/testsuite/rust/compile/derive_macro1.rs
index 1318228..779aad78e 100644
--- a/gcc/testsuite/rust/compile/derive_macro1.rs
+++ b/gcc/testsuite/rust/compile/derive_macro1.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Clone {
fn clone(&self) -> Self;
}
diff --git a/gcc/testsuite/rust/compile/derive_macro3.rs b/gcc/testsuite/rust/compile/derive_macro3.rs
index 35284d8..1c7d473 100644
--- a/gcc/testsuite/rust/compile/derive_macro3.rs
+++ b/gcc/testsuite/rust/compile/derive_macro3.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Clone {
fn clone(&self) -> Self;
}
diff --git a/gcc/testsuite/rust/compile/derive_macro4.rs b/gcc/testsuite/rust/compile/derive_macro4.rs
index 564555f..7802e8f 100644
--- a/gcc/testsuite/rust/compile/derive_macro4.rs
+++ b/gcc/testsuite/rust/compile/derive_macro4.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Copy {}
pub trait Clone {
fn clone(&self) -> Self;
diff --git a/gcc/testsuite/rust/compile/derive_macro6.rs b/gcc/testsuite/rust/compile/derive_macro6.rs
index 0254754..b7bf7a7 100644
--- a/gcc/testsuite/rust/compile/derive_macro6.rs
+++ b/gcc/testsuite/rust/compile/derive_macro6.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Copy {}
pub trait Clone {
fn clone(&self) -> Self;
diff --git a/gcc/testsuite/rust/compile/expected_type_args2.rs b/gcc/testsuite/rust/compile/expected_type_args2.rs
index 7945420..11a70be 100644
--- a/gcc/testsuite/rust/compile/expected_type_args2.rs
+++ b/gcc/testsuite/rust/compile/expected_type_args2.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<A>(A);
fn main() {
diff --git a/gcc/testsuite/rust/compile/expected_type_args3.rs b/gcc/testsuite/rust/compile/expected_type_args3.rs
index ba07239..7003f7a 100644
--- a/gcc/testsuite/rust/compile/expected_type_args3.rs
+++ b/gcc/testsuite/rust/compile/expected_type_args3.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<A>(A);
impl Foo {
diff --git a/gcc/testsuite/rust/compile/generics1.rs b/gcc/testsuite/rust/compile/generics1.rs
index de1bbf5..e9bdb3a 100644
--- a/gcc/testsuite/rust/compile/generics1.rs
+++ b/gcc/testsuite/rust/compile/generics1.rs
@@ -1,5 +1,8 @@
// { dg-error "expected .i32. got .i8." "" { target *-*-* } 0 }
+#[lang = "sized"]
+pub trait Sized {}
+
struct GenericStruct<T>(T, usize);
fn main() {
diff --git a/gcc/testsuite/rust/compile/generics11.rs b/gcc/testsuite/rust/compile/generics11.rs
index 4d3b9e1..10b5880 100644
--- a/gcc/testsuite/rust/compile/generics11.rs
+++ b/gcc/testsuite/rust/compile/generics11.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<T>(T, bool);
impl<T> Foo<T> {
diff --git a/gcc/testsuite/rust/compile/generics12.rs b/gcc/testsuite/rust/compile/generics12.rs
index f1ac8b0..b32f566 100644
--- a/gcc/testsuite/rust/compile/generics12.rs
+++ b/gcc/testsuite/rust/compile/generics12.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
fn main() {
bar();
// { dg-error "type annotations needed" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/rust/compile/generics2.rs b/gcc/testsuite/rust/compile/generics2.rs
index 5812b13..fc203ab 100644
--- a/gcc/testsuite/rust/compile/generics2.rs
+++ b/gcc/testsuite/rust/compile/generics2.rs
@@ -1,5 +1,8 @@
// { dg-error "expected .i32. got .i8." "" { target *-*-* } 0 }
+#[lang = "sized"]
+pub trait Sized {}
+
struct GenericStruct<T>(T, usize);
fn main() {
diff --git a/gcc/testsuite/rust/compile/generics3.rs b/gcc/testsuite/rust/compile/generics3.rs
index 2d42105..e28953c 100644
--- a/gcc/testsuite/rust/compile/generics3.rs
+++ b/gcc/testsuite/rust/compile/generics3.rs
@@ -1,4 +1,7 @@
// { dg-error "expected .i32. got .i8." "" { target *-*-* } 0 }
+#[lang = "sized"]
+pub trait Sized {}
+
struct GenericStruct<T>(T, usize);
fn main() {
diff --git a/gcc/testsuite/rust/compile/generics4.rs b/gcc/testsuite/rust/compile/generics4.rs
index e8fe23c..31b681a 100644
--- a/gcc/testsuite/rust/compile/generics4.rs
+++ b/gcc/testsuite/rust/compile/generics4.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct GenericStruct<T>(T, usize);
fn main() {
diff --git a/gcc/testsuite/rust/compile/generics6.rs b/gcc/testsuite/rust/compile/generics6.rs
index ad5b682..00b93c3 100644
--- a/gcc/testsuite/rust/compile/generics6.rs
+++ b/gcc/testsuite/rust/compile/generics6.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<A> {
a: A,
}
diff --git a/gcc/testsuite/rust/compile/generics7.rs b/gcc/testsuite/rust/compile/generics7.rs
index aeb91a6..f2cd607 100644
--- a/gcc/testsuite/rust/compile/generics7.rs
+++ b/gcc/testsuite/rust/compile/generics7.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<A> {
a: A,
}
diff --git a/gcc/testsuite/rust/compile/generics8.rs b/gcc/testsuite/rust/compile/generics8.rs
index ceefc5d..99df0c9 100644
--- a/gcc/testsuite/rust/compile/generics8.rs
+++ b/gcc/testsuite/rust/compile/generics8.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<A, B>(A, B);
impl<T> Foo<i32, T> {
diff --git a/gcc/testsuite/rust/compile/if_let_expr.rs b/gcc/testsuite/rust/compile/if_let_expr.rs
index ffa367b..7bab19a 100644
--- a/gcc/testsuite/rust/compile/if_let_expr.rs
+++ b/gcc/testsuite/rust/compile/if_let_expr.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub enum Option<T> {
None,
Some(T),
diff --git a/gcc/testsuite/rust/compile/issue-1005.rs b/gcc/testsuite/rust/compile/issue-1005.rs
index 46c85ee..15d4bef 100644
--- a/gcc/testsuite/rust/compile/issue-1005.rs
+++ b/gcc/testsuite/rust/compile/issue-1005.rs
@@ -1,4 +1,7 @@
// { dg-additional-options "-w" }
+#[lang = "sized"]
+pub trait Sized {}
+
impl<T> *const T {
fn test(self) {}
}
diff --git a/gcc/testsuite/rust/compile/issue-1019.rs b/gcc/testsuite/rust/compile/issue-1019.rs
index aea86a8..1f77ba9 100644
--- a/gcc/testsuite/rust/compile/issue-1019.rs
+++ b/gcc/testsuite/rust/compile/issue-1019.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait A<T> {
type Output;
diff --git a/gcc/testsuite/rust/compile/issue-1031.rs b/gcc/testsuite/rust/compile/issue-1031.rs
index a9049de..cd1da47 100644
--- a/gcc/testsuite/rust/compile/issue-1031.rs
+++ b/gcc/testsuite/rust/compile/issue-1031.rs
@@ -1,5 +1,8 @@
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
extern "rust-intrinsic" {
#[rustc_const_stable(feature = "const_ptr_offset", since = "1.61.0")]
pub fn offset<T>(dst: *const T, offset: isize) -> *const T;
diff --git a/gcc/testsuite/rust/compile/issue-1034.rs b/gcc/testsuite/rust/compile/issue-1034.rs
index 23d7700..d40005e 100644
--- a/gcc/testsuite/rust/compile/issue-1034.rs
+++ b/gcc/testsuite/rust/compile/issue-1034.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo<T> {
type Output;
diff --git a/gcc/testsuite/rust/compile/issue-1128.rs b/gcc/testsuite/rust/compile/issue-1128.rs
index 462426b..8960ebb 100644
--- a/gcc/testsuite/rust/compile/issue-1128.rs
+++ b/gcc/testsuite/rust/compile/issue-1128.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Hasher {
fn write(&mut self, bytes: &[u8]);
fn write_u8(&mut self, i: u8) {
diff --git a/gcc/testsuite/rust/compile/issue-1129-2.rs b/gcc/testsuite/rust/compile/issue-1129-2.rs
index 25d30fa..cfe01b5 100644
--- a/gcc/testsuite/rust/compile/issue-1129-2.rs
+++ b/gcc/testsuite/rust/compile/issue-1129-2.rs
@@ -1,4 +1,7 @@
// { dg-additional-options "-w" }
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Hasher {
fn finish(&self) -> u64;
fn write(&mut self, bytes: &[u8]);
diff --git a/gcc/testsuite/rust/compile/issue-1130.rs b/gcc/testsuite/rust/compile/issue-1130.rs
index 6d265cb..115e6aa 100644
--- a/gcc/testsuite/rust/compile/issue-1130.rs
+++ b/gcc/testsuite/rust/compile/issue-1130.rs
@@ -1,6 +1,9 @@
// { dg-additional-options "-w" }
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
mod mem {
extern "rust-intrinsic" {
fn size_of<T>() -> usize;
diff --git a/gcc/testsuite/rust/compile/issue-1131.rs b/gcc/testsuite/rust/compile/issue-1131.rs
index 5cb9caf..86eeb98 100644
--- a/gcc/testsuite/rust/compile/issue-1131.rs
+++ b/gcc/testsuite/rust/compile/issue-1131.rs
@@ -1,5 +1,8 @@
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
extern "rust-intrinsic" {
fn size_of<T>() -> usize;
fn offset<T>(dst: *const T, offset: isize) -> *const T;
diff --git a/gcc/testsuite/rust/compile/issue-1165.rs b/gcc/testsuite/rust/compile/issue-1165.rs
index f588969..a637823 100644
--- a/gcc/testsuite/rust/compile/issue-1165.rs
+++ b/gcc/testsuite/rust/compile/issue-1165.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<T>(T);
fn main() {
diff --git a/gcc/testsuite/rust/compile/issue-1173.rs b/gcc/testsuite/rust/compile/issue-1173.rs
index 5c2a917..a8fd93e 100644
--- a/gcc/testsuite/rust/compile/issue-1173.rs
+++ b/gcc/testsuite/rust/compile/issue-1173.rs
@@ -2,6 +2,9 @@
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
mod mem {
extern "rust-intrinsic" {
pub fn transmute<U, V>(_: U) -> V;
diff --git a/gcc/testsuite/rust/compile/issue-1235.rs b/gcc/testsuite/rust/compile/issue-1235.rs
index 098b337..7c85ac4 100644
--- a/gcc/testsuite/rust/compile/issue-1235.rs
+++ b/gcc/testsuite/rust/compile/issue-1235.rs
@@ -1,4 +1,7 @@
// { dg-additional-options "-w" }
+#[lang = "sized"]
+pub trait Sized {}
+
struct FatPtr<T> {
data: *const T,
len: usize,
diff --git a/gcc/testsuite/rust/compile/issue-1237.rs b/gcc/testsuite/rust/compile/issue-1237.rs
index 54a51df..79b60b0 100644
--- a/gcc/testsuite/rust/compile/issue-1237.rs
+++ b/gcc/testsuite/rust/compile/issue-1237.rs
@@ -1,6 +1,9 @@
// { dg-additional-options "-w" }
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
mod intrinsics {
extern "rust-intrinsic" {
pub fn offset<T>(ptr: *const T, count: isize) -> *const T;
diff --git a/gcc/testsuite/rust/compile/issue-1289.rs b/gcc/testsuite/rust/compile/issue-1289.rs
index 3d7716a..9251d79 100644
--- a/gcc/testsuite/rust/compile/issue-1289.rs
+++ b/gcc/testsuite/rust/compile/issue-1289.rs
@@ -1,5 +1,8 @@
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
extern "C" {
fn printf(s: *const i8, ...);
}
diff --git a/gcc/testsuite/rust/compile/issue-1383.rs b/gcc/testsuite/rust/compile/issue-1383.rs
index cca12e8..dac4b2a 100644
--- a/gcc/testsuite/rust/compile/issue-1383.rs
+++ b/gcc/testsuite/rust/compile/issue-1383.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub fn generic_function<X>(a: X) -> X {
a
}
diff --git a/gcc/testsuite/rust/compile/issue-1447.rs b/gcc/testsuite/rust/compile/issue-1447.rs
index e0543e6..6d58f7a 100644
--- a/gcc/testsuite/rust/compile/issue-1447.rs
+++ b/gcc/testsuite/rust/compile/issue-1447.rs
@@ -1,4 +1,7 @@
// { dg-options "-w" }
+#[lang = "sized"]
+pub trait Sized {}
+
struct PhantomData<T>;
struct Hasher<S> {
diff --git a/gcc/testsuite/rust/compile/issue-1589.rs b/gcc/testsuite/rust/compile/issue-1589.rs
index 79a5866..45f2415 100644
--- a/gcc/testsuite/rust/compile/issue-1589.rs
+++ b/gcc/testsuite/rust/compile/issue-1589.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait A: B {}
// { dg-error "trait cycle detected" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/rust/compile/issue-1725-1.rs b/gcc/testsuite/rust/compile/issue-1725-1.rs
index 1ace9fb..a02e6f6 100644
--- a/gcc/testsuite/rust/compile/issue-1725-1.rs
+++ b/gcc/testsuite/rust/compile/issue-1725-1.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
mod core {
mod ops {
#[lang = "add"]
diff --git a/gcc/testsuite/rust/compile/issue-1725-2.rs b/gcc/testsuite/rust/compile/issue-1725-2.rs
index 8bfd0bb..01ed287 100644
--- a/gcc/testsuite/rust/compile/issue-1725-2.rs
+++ b/gcc/testsuite/rust/compile/issue-1725-2.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
mod core {
mod ops {
#[lang = "add"]
diff --git a/gcc/testsuite/rust/compile/issue-1773.rs b/gcc/testsuite/rust/compile/issue-1773.rs
index c627ac0..a4542aea0 100644
--- a/gcc/testsuite/rust/compile/issue-1773.rs
+++ b/gcc/testsuite/rust/compile/issue-1773.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo<T> {
type A;
diff --git a/gcc/testsuite/rust/compile/issue-1786.rs b/gcc/testsuite/rust/compile/issue-1786.rs
index f73b63d..1c46fee 100644
--- a/gcc/testsuite/rust/compile/issue-1786.rs
+++ b/gcc/testsuite/rust/compile/issue-1786.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "clone"]
trait Clone {
fn clone(&self) -> Self;
diff --git a/gcc/testsuite/rust/compile/issue-1893.rs b/gcc/testsuite/rust/compile/issue-1893.rs
index 6be1d6d..46c53e9 100644
--- a/gcc/testsuite/rust/compile/issue-1893.rs
+++ b/gcc/testsuite/rust/compile/issue-1893.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub enum Option<T> {
None,
Some(T),
diff --git a/gcc/testsuite/rust/compile/issue-1901.rs b/gcc/testsuite/rust/compile/issue-1901.rs
index b2a7080..dd41ff8 100644
--- a/gcc/testsuite/rust/compile/issue-1901.rs
+++ b/gcc/testsuite/rust/compile/issue-1901.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
mod intrinsics {
extern "rust-intrinsic" {
pub fn offset<T>(ptr: *const T, count: isize) -> *const T;
diff --git a/gcc/testsuite/rust/compile/issue-1930.rs b/gcc/testsuite/rust/compile/issue-1930.rs
index ab30ccc..071b3da 100644
--- a/gcc/testsuite/rust/compile/issue-1930.rs
+++ b/gcc/testsuite/rust/compile/issue-1930.rs
@@ -1,4 +1,7 @@
// { dg-options "-w" }
+#[lang = "sized"]
+pub trait Sized {}
+
fn test<T>(x: *mut T) {
let x = x as *mut u8;
}
diff --git a/gcc/testsuite/rust/compile/issue-1981.rs b/gcc/testsuite/rust/compile/issue-1981.rs
index 9ad2a55..b1637ac 100644
--- a/gcc/testsuite/rust/compile/issue-1981.rs
+++ b/gcc/testsuite/rust/compile/issue-1981.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
mod intrinsics {
extern "rust-intrinsic" {
pub fn offset<T>(ptr: *const T, count: isize) -> *const T;
diff --git a/gcc/testsuite/rust/compile/issue-2019-1.rs b/gcc/testsuite/rust/compile/issue-2019-1.rs
index f359ea4..e91e347 100644
--- a/gcc/testsuite/rust/compile/issue-2019-1.rs
+++ b/gcc/testsuite/rust/compile/issue-2019-1.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "add"]
pub trait Add<RHS = Self> {
type Output;
diff --git a/gcc/testsuite/rust/compile/issue-2019-2.rs b/gcc/testsuite/rust/compile/issue-2019-2.rs
index 37c8e30..9f7c0c0 100644
--- a/gcc/testsuite/rust/compile/issue-2019-2.rs
+++ b/gcc/testsuite/rust/compile/issue-2019-2.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "add"]
pub trait Add<RHS = Self> {
type Output;
diff --git a/gcc/testsuite/rust/compile/issue-2019-3.rs b/gcc/testsuite/rust/compile/issue-2019-3.rs
index 6789038..c95ce43 100644
--- a/gcc/testsuite/rust/compile/issue-2019-3.rs
+++ b/gcc/testsuite/rust/compile/issue-2019-3.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
macro_rules! forward_ref_binop {
(impl $imp:ident, $method:ident for $t:ty, $u:ty) => {
forward_ref_binop!(impl $imp, $method for $t, $u,
diff --git a/gcc/testsuite/rust/compile/issue-2036.rs b/gcc/testsuite/rust/compile/issue-2036.rs
index d145975..8701b20 100644
--- a/gcc/testsuite/rust/compile/issue-2036.rs
+++ b/gcc/testsuite/rust/compile/issue-2036.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Hash<H> {
fn hash2(&self, hasher: &H) -> u64;
}
diff --git a/gcc/testsuite/rust/compile/issue-2037.rs b/gcc/testsuite/rust/compile/issue-2037.rs
index ec27a0d..8adcb97 100644
--- a/gcc/testsuite/rust/compile/issue-2037.rs
+++ b/gcc/testsuite/rust/compile/issue-2037.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
fn bar(&mut self, other: &mut Foo);
}
diff --git a/gcc/testsuite/rust/compile/issue-2070.rs b/gcc/testsuite/rust/compile/issue-2070.rs
index 46f3520..981e599 100644
--- a/gcc/testsuite/rust/compile/issue-2070.rs
+++ b/gcc/testsuite/rust/compile/issue-2070.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
fn get(self) -> i32;
}
diff --git a/gcc/testsuite/rust/compile/issue-2105.rs b/gcc/testsuite/rust/compile/issue-2105.rs
index 7d1c9a1..28f170e 100644
--- a/gcc/testsuite/rust/compile/issue-2105.rs
+++ b/gcc/testsuite/rust/compile/issue-2105.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub enum Option<T> {
Some(T),
None,
diff --git a/gcc/testsuite/rust/compile/issue-2106.rs b/gcc/testsuite/rust/compile/issue-2106.rs
index a4f235c..4af57c8 100644
--- a/gcc/testsuite/rust/compile/issue-2106.rs
+++ b/gcc/testsuite/rust/compile/issue-2106.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo(u32);
// { dg-warning "struct is never constructed" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/rust/compile/issue-2135.rs b/gcc/testsuite/rust/compile/issue-2135.rs
index 563345e..9f4d3e1 100644
--- a/gcc/testsuite/rust/compile/issue-2135.rs
+++ b/gcc/testsuite/rust/compile/issue-2135.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Foo<A> {
fn foo(self, _: A) -> u16;
}
diff --git a/gcc/testsuite/rust/compile/issue-2136-1.rs b/gcc/testsuite/rust/compile/issue-2136-1.rs
index fcf1efc..f0af551 100644
--- a/gcc/testsuite/rust/compile/issue-2136-1.rs
+++ b/gcc/testsuite/rust/compile/issue-2136-1.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Foo {
fn foo();
}
diff --git a/gcc/testsuite/rust/compile/issue-2136-2.rs b/gcc/testsuite/rust/compile/issue-2136-2.rs
index 7317f3f..b25820d 100644
--- a/gcc/testsuite/rust/compile/issue-2136-2.rs
+++ b/gcc/testsuite/rust/compile/issue-2136-2.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct S;
impl S {
diff --git a/gcc/testsuite/rust/compile/issue-2139.rs b/gcc/testsuite/rust/compile/issue-2139.rs
index 77bf78d..3b9ad95 100644
--- a/gcc/testsuite/rust/compile/issue-2139.rs
+++ b/gcc/testsuite/rust/compile/issue-2139.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Foo {
fn foo();
}
diff --git a/gcc/testsuite/rust/compile/issue-2142.rs b/gcc/testsuite/rust/compile/issue-2142.rs
index 7a8bb2a..a3ec228 100644
--- a/gcc/testsuite/rust/compile/issue-2142.rs
+++ b/gcc/testsuite/rust/compile/issue-2142.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "fn_once"]
pub trait FnOnce<Args> {
#[lang = "fn_once_output"]
diff --git a/gcc/testsuite/rust/compile/issue-2165.rs b/gcc/testsuite/rust/compile/issue-2165.rs
index 199bc13..5bbde65 100644
--- a/gcc/testsuite/rust/compile/issue-2165.rs
+++ b/gcc/testsuite/rust/compile/issue-2165.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Alpha<T = Self> {
type Beta;
}
diff --git a/gcc/testsuite/rust/compile/issue-2166.rs b/gcc/testsuite/rust/compile/issue-2166.rs
index f333888..318f0a6 100644
--- a/gcc/testsuite/rust/compile/issue-2166.rs
+++ b/gcc/testsuite/rust/compile/issue-2166.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Add {
type Output;
diff --git a/gcc/testsuite/rust/compile/issue-2190-1.rs b/gcc/testsuite/rust/compile/issue-2190-1.rs
index 3e43e54..057d7c7 100644
--- a/gcc/testsuite/rust/compile/issue-2190-1.rs
+++ b/gcc/testsuite/rust/compile/issue-2190-1.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "deref"]
trait Deref {
type Target;
diff --git a/gcc/testsuite/rust/compile/issue-2190-2.rs b/gcc/testsuite/rust/compile/issue-2190-2.rs
index 48ab72b..1c93338 100644
--- a/gcc/testsuite/rust/compile/issue-2190-2.rs
+++ b/gcc/testsuite/rust/compile/issue-2190-2.rs
@@ -1,4 +1,7 @@
// { dg-options "-w" }
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "deref"]
trait Deref {
type Target;
diff --git a/gcc/testsuite/rust/compile/issue-2195.rs b/gcc/testsuite/rust/compile/issue-2195.rs
index c955df4..fc158c3 100644
--- a/gcc/testsuite/rust/compile/issue-2195.rs
+++ b/gcc/testsuite/rust/compile/issue-2195.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct A<T> {
// { dg-warning "struct is never constructed" "" { target *-*-* } .-1 }
f: *const T,
diff --git a/gcc/testsuite/rust/compile/issue-2238.rs b/gcc/testsuite/rust/compile/issue-2238.rs
index b0c7e36..38871b3 100644
--- a/gcc/testsuite/rust/compile/issue-2238.rs
+++ b/gcc/testsuite/rust/compile/issue-2238.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
fn main() {
struct Foo;
diff --git a/gcc/testsuite/rust/compile/issue-2304.rs b/gcc/testsuite/rust/compile/issue-2304.rs
index 243cf10..8313033 100644
--- a/gcc/testsuite/rust/compile/issue-2304.rs
+++ b/gcc/testsuite/rust/compile/issue-2304.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "add"]
pub trait Add<RHS = Self> {
type Output;
diff --git a/gcc/testsuite/rust/compile/issue-2375.rs b/gcc/testsuite/rust/compile/issue-2375.rs
new file mode 100644
index 0000000..a61fef8
--- /dev/null
+++ b/gcc/testsuite/rust/compile/issue-2375.rs
@@ -0,0 +1,14 @@
+#[lang = "sized"]
+pub trait Sized {}
+
+pub trait Trait {
+ fn foo(&self) -> Self
+ where
+ Self: Sized;
+}
+
+pub fn static_foo<T: Trait + ?Sized>(_b: &T) {}
+
+pub fn dynamic_bar(a: &dyn Trait) {
+ static_foo(a)
+}
diff --git a/gcc/testsuite/rust/compile/issue-850.rs b/gcc/testsuite/rust/compile/issue-850.rs
index 531cbf4..e42b557 100644
--- a/gcc/testsuite/rust/compile/issue-850.rs
+++ b/gcc/testsuite/rust/compile/issue-850.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
extern "C" {
fn printf(s: *const i8, ...);
}
diff --git a/gcc/testsuite/rust/compile/issue-855.rs b/gcc/testsuite/rust/compile/issue-855.rs
index f48e3a1..9e450dd 100644
--- a/gcc/testsuite/rust/compile/issue-855.rs
+++ b/gcc/testsuite/rust/compile/issue-855.rs
@@ -1,5 +1,8 @@
pub use result::Result::{self, Err, Ok};
+#[lang = "sized"]
+pub trait Sized {}
+
extern "C" {
fn printf(s: *const i8, ...);
}
diff --git a/gcc/testsuite/rust/compile/issue-925.rs b/gcc/testsuite/rust/compile/issue-925.rs
index 930b192..2d536a5 100644
--- a/gcc/testsuite/rust/compile/issue-925.rs
+++ b/gcc/testsuite/rust/compile/issue-925.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct S;
trait A {
fn foo(&self);
diff --git a/gcc/testsuite/rust/compile/macro-issue1400.rs b/gcc/testsuite/rust/compile/macro-issue1400.rs
index 971bd77..5c51b78 100644
--- a/gcc/testsuite/rust/compile/macro-issue1400.rs
+++ b/gcc/testsuite/rust/compile/macro-issue1400.rs
@@ -1,5 +1,8 @@
// { dg-additional-options "-w" }
+#[lang = "sized"]
+pub trait Sized {}
+
macro_rules! foo {
( ( $( $Trait: ident ),+ ) for $Ty: ident ) => {
$(
diff --git a/gcc/testsuite/rust/compile/macro20.rs b/gcc/testsuite/rust/compile/macro20.rs
index 9f3cbca..e03455b 100644
--- a/gcc/testsuite/rust/compile/macro20.rs
+++ b/gcc/testsuite/rust/compile/macro20.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
macro_rules! define_trait {
($assoc:ident, $i:item) => {
type $assoc;
diff --git a/gcc/testsuite/rust/compile/macro23.rs b/gcc/testsuite/rust/compile/macro23.rs
index afaca9b..a6a2afd 100644
--- a/gcc/testsuite/rust/compile/macro23.rs
+++ b/gcc/testsuite/rust/compile/macro23.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
macro_rules! maybe_impl {
($left:ident, $right:ident, $l_fn:ident, $r_fn:ident) => {
fn $l_fn(value: T) -> Maybe<T> {
diff --git a/gcc/testsuite/rust/compile/macro40.rs b/gcc/testsuite/rust/compile/macro40.rs
index 7151f3a..f9d048e 100644
--- a/gcc/testsuite/rust/compile/macro40.rs
+++ b/gcc/testsuite/rust/compile/macro40.rs
@@ -1,5 +1,8 @@
// { dg-additional-options "-w" }
+#[lang = "sized"]
+pub trait Sized {}
+
macro_rules! t {
() => {
i32
diff --git a/gcc/testsuite/rust/compile/macro54.rs b/gcc/testsuite/rust/compile/macro54.rs
index afb20263..d3b3f80 100644
--- a/gcc/testsuite/rust/compile/macro54.rs
+++ b/gcc/testsuite/rust/compile/macro54.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
macro_rules! foo {
() => {"foo"};
(number) => { 12 };
diff --git a/gcc/testsuite/rust/compile/name_resolution2.rs b/gcc/testsuite/rust/compile/name_resolution2.rs
index 343f628..7e4f5a1 100644
--- a/gcc/testsuite/rust/compile/name_resolution2.rs
+++ b/gcc/testsuite/rust/compile/name_resolution2.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Bar;
trait Foo {
diff --git a/gcc/testsuite/rust/compile/name_resolution4.rs b/gcc/testsuite/rust/compile/name_resolution4.rs
index 1c138e8..b2eadbe 100644
--- a/gcc/testsuite/rust/compile/name_resolution4.rs
+++ b/gcc/testsuite/rust/compile/name_resolution4.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
fn foo(&self) {} // { dg-warning "unused name" }
}
diff --git a/gcc/testsuite/rust/compile/nested_generic.rs b/gcc/testsuite/rust/compile/nested_generic.rs
index 6c31099..322b3c5 100644
--- a/gcc/testsuite/rust/compile/nested_generic.rs
+++ b/gcc/testsuite/rust/compile/nested_generic.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub struct A<T>(T);
pub struct B<T>(T);
diff --git a/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg.rs b/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg.rs
index fbe79f0..ba1042a 100644
--- a/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg.rs
+++ b/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
type A;
diff --git a/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg2.rs b/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg2.rs
index ba5d9a3..a2662c2 100644
--- a/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg2.rs
+++ b/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg2.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
type A;
diff --git a/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg3.rs b/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg3.rs
index 72c1b95..b4342e8 100644
--- a/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg3.rs
+++ b/gcc/testsuite/rust/compile/parse_associated_type_as_generic_arg3.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Bar {
type B;
diff --git a/gcc/testsuite/rust/compile/parse_complex_generic_application.rs b/gcc/testsuite/rust/compile/parse_complex_generic_application.rs
index d5c7bf4..02877dd 100644
--- a/gcc/testsuite/rust/compile/parse_complex_generic_application.rs
+++ b/gcc/testsuite/rust/compile/parse_complex_generic_application.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub enum Either<T, E> {
Left(T),
Right(E),
diff --git a/gcc/testsuite/rust/compile/parse_complex_generic_application2.rs b/gcc/testsuite/rust/compile/parse_complex_generic_application2.rs
index 0361931..5ebc94f 100644
--- a/gcc/testsuite/rust/compile/parse_complex_generic_application2.rs
+++ b/gcc/testsuite/rust/compile/parse_complex_generic_application2.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub enum Either<L, R> {
Left(L),
Right(R),
diff --git a/gcc/testsuite/rust/compile/path_as_generic_arg.rs b/gcc/testsuite/rust/compile/path_as_generic_arg.rs
index 35b3160..21baf80 100644
--- a/gcc/testsuite/rust/compile/path_as_generic_arg.rs
+++ b/gcc/testsuite/rust/compile/path_as_generic_arg.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub enum Result<T, E> {
Ok(T),
Err(E),
diff --git a/gcc/testsuite/rust/compile/privacy4.rs b/gcc/testsuite/rust/compile/privacy4.rs
index d1ce0af..648b7b9 100644
--- a/gcc/testsuite/rust/compile/privacy4.rs
+++ b/gcc/testsuite/rust/compile/privacy4.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
mod orange {
mod green {
fn bean<T>(value: T) -> T {
diff --git a/gcc/testsuite/rust/compile/privacy6.rs b/gcc/testsuite/rust/compile/privacy6.rs
index 487ed02..1680c24 100644
--- a/gcc/testsuite/rust/compile/privacy6.rs
+++ b/gcc/testsuite/rust/compile/privacy6.rs
@@ -1,5 +1,8 @@
// { dg-additional-options "-w" }
+#[lang = "sized"]
+pub trait Sized {}
+
struct Adt;
enum EAdt {
V0,
diff --git a/gcc/testsuite/rust/compile/sizeof-stray-infer-var-bug.rs b/gcc/testsuite/rust/compile/sizeof-stray-infer-var-bug.rs
index 310da66..a5f0c2b 100644
--- a/gcc/testsuite/rust/compile/sizeof-stray-infer-var-bug.rs
+++ b/gcc/testsuite/rust/compile/sizeof-stray-infer-var-bug.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
mod mem {
extern "rust-intrinsic" {
pub fn size_of<T>() -> usize;
diff --git a/gcc/testsuite/rust/compile/stmt_with_block_dot.rs b/gcc/testsuite/rust/compile/stmt_with_block_dot.rs
index ae623c3..c7037af 100644
--- a/gcc/testsuite/rust/compile/stmt_with_block_dot.rs
+++ b/gcc/testsuite/rust/compile/stmt_with_block_dot.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub struct A(i32, i32);
trait Clone {
diff --git a/gcc/testsuite/rust/compile/torture/associated_types1.rs b/gcc/testsuite/rust/compile/torture/associated_types1.rs
index bf181df..2be7037 100644
--- a/gcc/testsuite/rust/compile/torture/associated_types1.rs
+++ b/gcc/testsuite/rust/compile/torture/associated_types1.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Foo {
type A;
diff --git a/gcc/testsuite/rust/compile/torture/forward_decl_5.rs b/gcc/testsuite/rust/compile/torture/forward_decl_5.rs
index 73a47fe..670ab0a 100644
--- a/gcc/testsuite/rust/compile/torture/forward_decl_5.rs
+++ b/gcc/testsuite/rust/compile/torture/forward_decl_5.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub fn main() {
let a;
a = foo { a: 123, b: 456f32 };
diff --git a/gcc/testsuite/rust/compile/torture/generics1.rs b/gcc/testsuite/rust/compile/torture/generics1.rs
index 87bcdc8..b32eddd 100644
--- a/gcc/testsuite/rust/compile/torture/generics1.rs
+++ b/gcc/testsuite/rust/compile/torture/generics1.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo {
a: f32,
b: bool,
diff --git a/gcc/testsuite/rust/compile/torture/generics10.rs b/gcc/testsuite/rust/compile/torture/generics10.rs
index 8473d49..1a17e84 100644
--- a/gcc/testsuite/rust/compile/torture/generics10.rs
+++ b/gcc/testsuite/rust/compile/torture/generics10.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<T>(T);
struct Bar<T> {
diff --git a/gcc/testsuite/rust/compile/torture/generics11.rs b/gcc/testsuite/rust/compile/torture/generics11.rs
index 3c8f5ba..9d5e719 100644
--- a/gcc/testsuite/rust/compile/torture/generics11.rs
+++ b/gcc/testsuite/rust/compile/torture/generics11.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<T>(T, u32);
type TypeAlias = Foo<i32>;
diff --git a/gcc/testsuite/rust/compile/torture/generics12.rs b/gcc/testsuite/rust/compile/torture/generics12.rs
index f31be58..9347b24 100644
--- a/gcc/testsuite/rust/compile/torture/generics12.rs
+++ b/gcc/testsuite/rust/compile/torture/generics12.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct GenericStruct<T>(T, usize);
impl GenericStruct<i32> {
diff --git a/gcc/testsuite/rust/compile/torture/generics13.rs b/gcc/testsuite/rust/compile/torture/generics13.rs
index 9eb598f..00b26ec 100644
--- a/gcc/testsuite/rust/compile/torture/generics13.rs
+++ b/gcc/testsuite/rust/compile/torture/generics13.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<A> {
a: A,
// { dg-warning "field is never read" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/rust/compile/torture/generics14.rs b/gcc/testsuite/rust/compile/torture/generics14.rs
index e51a407..5be39eb 100644
--- a/gcc/testsuite/rust/compile/torture/generics14.rs
+++ b/gcc/testsuite/rust/compile/torture/generics14.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<A> {
a: A,
// { dg-warning "field is never read" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/rust/compile/torture/generics15.rs b/gcc/testsuite/rust/compile/torture/generics15.rs
index c16a67c..2b1f31c 100644
--- a/gcc/testsuite/rust/compile/torture/generics15.rs
+++ b/gcc/testsuite/rust/compile/torture/generics15.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<T>(T, bool);
impl Foo<i32> {
diff --git a/gcc/testsuite/rust/compile/torture/generics16.rs b/gcc/testsuite/rust/compile/torture/generics16.rs
index 15b9d7b..a9fa2eb 100644
--- a/gcc/testsuite/rust/compile/torture/generics16.rs
+++ b/gcc/testsuite/rust/compile/torture/generics16.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<T>(T, bool);
impl Foo<i32> {
diff --git a/gcc/testsuite/rust/compile/torture/generics17.rs b/gcc/testsuite/rust/compile/torture/generics17.rs
index d523149..9a04158 100644
--- a/gcc/testsuite/rust/compile/torture/generics17.rs
+++ b/gcc/testsuite/rust/compile/torture/generics17.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<T>(T);
impl<X> Foo<X> {
diff --git a/gcc/testsuite/rust/compile/torture/generics18.rs b/gcc/testsuite/rust/compile/torture/generics18.rs
index 4c98b86..cb7b1fa 100644
--- a/gcc/testsuite/rust/compile/torture/generics18.rs
+++ b/gcc/testsuite/rust/compile/torture/generics18.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<T>(T);
impl<X> Foo<X> {
diff --git a/gcc/testsuite/rust/compile/torture/generics19.rs b/gcc/testsuite/rust/compile/torture/generics19.rs
index 9a5b4cb..c98599f 100644
--- a/gcc/testsuite/rust/compile/torture/generics19.rs
+++ b/gcc/testsuite/rust/compile/torture/generics19.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<X, Y>(X, Y);
impl<T> Foo<u32, T> {
diff --git a/gcc/testsuite/rust/compile/torture/generics2.rs b/gcc/testsuite/rust/compile/torture/generics2.rs
index da0ab99..e720b42 100644
--- a/gcc/testsuite/rust/compile/torture/generics2.rs
+++ b/gcc/testsuite/rust/compile/torture/generics2.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo(f32, bool);
struct GenericStruct<T>(T, usize);
diff --git a/gcc/testsuite/rust/compile/torture/generics20.rs b/gcc/testsuite/rust/compile/torture/generics20.rs
index 8fe1cff..92b022e 100644
--- a/gcc/testsuite/rust/compile/torture/generics20.rs
+++ b/gcc/testsuite/rust/compile/torture/generics20.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<A, B>(A, B);
impl<T> Foo<T, T> {
diff --git a/gcc/testsuite/rust/compile/torture/generics21.rs b/gcc/testsuite/rust/compile/torture/generics21.rs
index dc4e935..1c74ea4 100644
--- a/gcc/testsuite/rust/compile/torture/generics21.rs
+++ b/gcc/testsuite/rust/compile/torture/generics21.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
fn callee<T>(t: &T) -> i32 {
// { dg-warning "unused name" "" { target *-*-* } .-1 }
32
diff --git a/gcc/testsuite/rust/compile/torture/generics22.rs b/gcc/testsuite/rust/compile/torture/generics22.rs
index 465ebb0..b838e6e 100644
--- a/gcc/testsuite/rust/compile/torture/generics22.rs
+++ b/gcc/testsuite/rust/compile/torture/generics22.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
fn callee<T>(t: (T, bool)) -> i32 {
// { dg-warning "unused name" "" { target *-*-* } .-1 }
32
diff --git a/gcc/testsuite/rust/compile/torture/generics23.rs b/gcc/testsuite/rust/compile/torture/generics23.rs
index 2169e36..bf4dfb5 100644
--- a/gcc/testsuite/rust/compile/torture/generics23.rs
+++ b/gcc/testsuite/rust/compile/torture/generics23.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<A = f32>(A);
fn main() {
diff --git a/gcc/testsuite/rust/compile/torture/generics24.rs b/gcc/testsuite/rust/compile/torture/generics24.rs
index 0de45a8..ce782c0 100644
--- a/gcc/testsuite/rust/compile/torture/generics24.rs
+++ b/gcc/testsuite/rust/compile/torture/generics24.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<A = (isize, char)> {
a: A,
}
diff --git a/gcc/testsuite/rust/compile/torture/generics25.rs b/gcc/testsuite/rust/compile/torture/generics25.rs
index e7792e3..4fe952a 100644
--- a/gcc/testsuite/rust/compile/torture/generics25.rs
+++ b/gcc/testsuite/rust/compile/torture/generics25.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<A, B = (A, A)>(A, B);
fn main() {
diff --git a/gcc/testsuite/rust/compile/torture/generics26.rs b/gcc/testsuite/rust/compile/torture/generics26.rs
index 522e16f..0111add 100644
--- a/gcc/testsuite/rust/compile/torture/generics26.rs
+++ b/gcc/testsuite/rust/compile/torture/generics26.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
// github issue #415
fn test<A, B>(a: A, b: B) -> (A, B) {
(a, b)
diff --git a/gcc/testsuite/rust/compile/torture/generics27.rs b/gcc/testsuite/rust/compile/torture/generics27.rs
index 9871638..c4ca4db 100644
--- a/gcc/testsuite/rust/compile/torture/generics27.rs
+++ b/gcc/testsuite/rust/compile/torture/generics27.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
// github issue #415
fn test<A>(a: &A) -> &A {
a
diff --git a/gcc/testsuite/rust/compile/torture/generics28.rs b/gcc/testsuite/rust/compile/torture/generics28.rs
index 8cee8b0..c1ffd9c 100644
--- a/gcc/testsuite/rust/compile/torture/generics28.rs
+++ b/gcc/testsuite/rust/compile/torture/generics28.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<A, B>(A, B);
impl Foo<i32, f32> {
diff --git a/gcc/testsuite/rust/compile/torture/generics29.rs b/gcc/testsuite/rust/compile/torture/generics29.rs
index e09a104..e9c693e 100644
--- a/gcc/testsuite/rust/compile/torture/generics29.rs
+++ b/gcc/testsuite/rust/compile/torture/generics29.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<A, B>(A, B);
impl Foo<i32, f32> {
diff --git a/gcc/testsuite/rust/compile/torture/generics3.rs b/gcc/testsuite/rust/compile/torture/generics3.rs
index ceec8f7..4c5dabc 100644
--- a/gcc/testsuite/rust/compile/torture/generics3.rs
+++ b/gcc/testsuite/rust/compile/torture/generics3.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
fn test<T>(a: T) -> T {
a
}
diff --git a/gcc/testsuite/rust/compile/torture/generics30.rs b/gcc/testsuite/rust/compile/torture/generics30.rs
index 229f6d1..24ae58f 100644
--- a/gcc/testsuite/rust/compile/torture/generics30.rs
+++ b/gcc/testsuite/rust/compile/torture/generics30.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<A, B>(A, B);
impl<T> Foo<T, f32> {
diff --git a/gcc/testsuite/rust/compile/torture/generics31.rs b/gcc/testsuite/rust/compile/torture/generics31.rs
index 68ad4bf..f8e2f36 100644
--- a/gcc/testsuite/rust/compile/torture/generics31.rs
+++ b/gcc/testsuite/rust/compile/torture/generics31.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<A, B>(A, B);
impl<T> Foo<T, f32> {
diff --git a/gcc/testsuite/rust/compile/torture/generics32.rs b/gcc/testsuite/rust/compile/torture/generics32.rs
index 21b9cae..49c4539 100644
--- a/gcc/testsuite/rust/compile/torture/generics32.rs
+++ b/gcc/testsuite/rust/compile/torture/generics32.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<A, B>(A, B);
impl<T> Foo<T, f32> {
diff --git a/gcc/testsuite/rust/compile/torture/generics4.rs b/gcc/testsuite/rust/compile/torture/generics4.rs
index 915cc49..54bdf56 100644
--- a/gcc/testsuite/rust/compile/torture/generics4.rs
+++ b/gcc/testsuite/rust/compile/torture/generics4.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<T> {
a: T,
// { dg-warning "field is never read" "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/rust/compile/torture/generics5.rs b/gcc/testsuite/rust/compile/torture/generics5.rs
index b7f4302..df27fdd 100644
--- a/gcc/testsuite/rust/compile/torture/generics5.rs
+++ b/gcc/testsuite/rust/compile/torture/generics5.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
fn test<T>(a: T) -> T {
a
}
diff --git a/gcc/testsuite/rust/compile/torture/generics6.rs b/gcc/testsuite/rust/compile/torture/generics6.rs
index 5456b6d..16b85fb 100644
--- a/gcc/testsuite/rust/compile/torture/generics6.rs
+++ b/gcc/testsuite/rust/compile/torture/generics6.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<T>(T);
struct Bar<T> {
diff --git a/gcc/testsuite/rust/compile/torture/generics7.rs b/gcc/testsuite/rust/compile/torture/generics7.rs
index e8e5ca6..66454d6 100644
--- a/gcc/testsuite/rust/compile/torture/generics7.rs
+++ b/gcc/testsuite/rust/compile/torture/generics7.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<T>(T);
struct Bar {
diff --git a/gcc/testsuite/rust/compile/torture/generics8.rs b/gcc/testsuite/rust/compile/torture/generics8.rs
index 036d855..bc6d09b 100644
--- a/gcc/testsuite/rust/compile/torture/generics8.rs
+++ b/gcc/testsuite/rust/compile/torture/generics8.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct GenericStruct<T>(T, usize);
impl<T> GenericStruct<T> {
diff --git a/gcc/testsuite/rust/compile/torture/generics9.rs b/gcc/testsuite/rust/compile/torture/generics9.rs
index 307c34f..3d9d748 100644
--- a/gcc/testsuite/rust/compile/torture/generics9.rs
+++ b/gcc/testsuite/rust/compile/torture/generics9.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct GenericStruct<T>(T, usize);
impl<T> GenericStruct<T> {
diff --git a/gcc/testsuite/rust/compile/torture/intrinsics-2.rs b/gcc/testsuite/rust/compile/torture/intrinsics-2.rs
index 6b2339f..a6cd8f8 100644
--- a/gcc/testsuite/rust/compile/torture/intrinsics-2.rs
+++ b/gcc/testsuite/rust/compile/torture/intrinsics-2.rs
@@ -2,6 +2,9 @@
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
extern "rust-intrinsic" {
pub fn size_of<T>() -> usize;
}
diff --git a/gcc/testsuite/rust/compile/torture/intrinsics-6.rs b/gcc/testsuite/rust/compile/torture/intrinsics-6.rs
index 4e510e1..0e26345 100644
--- a/gcc/testsuite/rust/compile/torture/intrinsics-6.rs
+++ b/gcc/testsuite/rust/compile/torture/intrinsics-6.rs
@@ -1,5 +1,8 @@
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
extern "rust-intrinsic" {
pub fn unchecked_add<T>(x: T, y: T) -> T;
pub fn unchecked_sub<T>(x: T, y: T) -> T;
diff --git a/gcc/testsuite/rust/compile/torture/intrinsics-7.rs b/gcc/testsuite/rust/compile/torture/intrinsics-7.rs
index da85fff..754aacb 100644
--- a/gcc/testsuite/rust/compile/torture/intrinsics-7.rs
+++ b/gcc/testsuite/rust/compile/torture/intrinsics-7.rs
@@ -1,5 +1,8 @@
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
extern "rust-intrinsic" {
pub fn unchecked_add<T>(x: T, y: T) -> T;
// { dg-error "unchecked operation intrinsics can only be used with basic integer types .got .NotAdd.." "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/rust/compile/torture/intrinsics-8.rs b/gcc/testsuite/rust/compile/torture/intrinsics-8.rs
index 8788da5..deb19bd 100644
--- a/gcc/testsuite/rust/compile/torture/intrinsics-8.rs
+++ b/gcc/testsuite/rust/compile/torture/intrinsics-8.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
mod intrinsics {
extern "rust-intrinsic" {
pub fn add_with_overflow<T>(x: T, y: T) -> (T, bool);
diff --git a/gcc/testsuite/rust/compile/torture/issue-1024.rs b/gcc/testsuite/rust/compile/torture/issue-1024.rs
index a8503ce..819e329 100644
--- a/gcc/testsuite/rust/compile/torture/issue-1024.rs
+++ b/gcc/testsuite/rust/compile/torture/issue-1024.rs
@@ -1,5 +1,8 @@
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
extern "rust-intrinsic" {
pub fn size_of<T>() -> usize;
}
diff --git a/gcc/testsuite/rust/compile/torture/issue-1075.rs b/gcc/testsuite/rust/compile/torture/issue-1075.rs
index 201a241..d23774b 100644
--- a/gcc/testsuite/rust/compile/torture/issue-1075.rs
+++ b/gcc/testsuite/rust/compile/torture/issue-1075.rs
@@ -1,6 +1,9 @@
// { dg-additional-options "-w" }
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
extern "rust-intrinsic" {
#[rustc_const_stable(feature = "const_ptr_offset", since = "1.61.0")]
pub fn offset<T>(dst: *const T, offset: isize) -> *const T;
diff --git a/gcc/testsuite/rust/compile/torture/issue-1432.rs b/gcc/testsuite/rust/compile/torture/issue-1432.rs
index 0269823..5b526fd 100644
--- a/gcc/testsuite/rust/compile/torture/issue-1432.rs
+++ b/gcc/testsuite/rust/compile/torture/issue-1432.rs
@@ -1,5 +1,9 @@
// { dg-additional-options "-w" }
#![feature(intrinsics)]
+
+#[lang = "sized"]
+pub trait Sized {}
+
mod intrinsics {
extern "rust-intrinsic" {
#[rustc_const_stable(feature = "const_int_wrapping", since = "1.40.0")]
diff --git a/gcc/testsuite/rust/compile/torture/issue-1555.rs b/gcc/testsuite/rust/compile/torture/issue-1555.rs
index adb4891..bee8952 100644
--- a/gcc/testsuite/rust/compile/torture/issue-1555.rs
+++ b/gcc/testsuite/rust/compile/torture/issue-1555.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
extern "C" {
fn printf(s: *const i8, ...);
}
diff --git a/gcc/testsuite/rust/compile/torture/issue-368.rs b/gcc/testsuite/rust/compile/torture/issue-368.rs
index 18bc9bd..775e70d 100644
--- a/gcc/testsuite/rust/compile/torture/issue-368.rs
+++ b/gcc/testsuite/rust/compile/torture/issue-368.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct S;
fn foo<S>(s: S) -> S {
diff --git a/gcc/testsuite/rust/compile/torture/issue-808.rs b/gcc/testsuite/rust/compile/torture/issue-808.rs
index 2e5a81f..4186d54 100644
--- a/gcc/testsuite/rust/compile/torture/issue-808.rs
+++ b/gcc/testsuite/rust/compile/torture/issue-808.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Foo {
type Target;
diff --git a/gcc/testsuite/rust/compile/torture/issue-862.rs b/gcc/testsuite/rust/compile/torture/issue-862.rs
index c1a4609..d9ac912 100644
--- a/gcc/testsuite/rust/compile/torture/issue-862.rs
+++ b/gcc/testsuite/rust/compile/torture/issue-862.rs
@@ -1,4 +1,8 @@
// { dg-additional-options "-w" }
+
+#[lang = "sized"]
+pub trait Sized {}
+
extern "C" {
fn printf(s: *const i8, ...);
}
diff --git a/gcc/testsuite/rust/compile/torture/issue-893-2.rs b/gcc/testsuite/rust/compile/torture/issue-893-2.rs
index 88a865d..3df27b8 100644
--- a/gcc/testsuite/rust/compile/torture/issue-893-2.rs
+++ b/gcc/testsuite/rust/compile/torture/issue-893-2.rs
@@ -1,4 +1,7 @@
// { dg-additional-options "-w" }
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<T>(T);
impl<T> Foo<T> {
fn new<Y>(a: T, b: Y) -> Self {
diff --git a/gcc/testsuite/rust/compile/torture/issue-893.rs b/gcc/testsuite/rust/compile/torture/issue-893.rs
index d8245f3..f96b5c3 100644
--- a/gcc/testsuite/rust/compile/torture/issue-893.rs
+++ b/gcc/testsuite/rust/compile/torture/issue-893.rs
@@ -1,4 +1,7 @@
// { dg-additional-options "-w" }
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<T>(T);
impl<T> Foo<T> {
fn new<Y>(a: T, b: Y) -> Self {
diff --git a/gcc/testsuite/rust/compile/torture/must_use2.rs b/gcc/testsuite/rust/compile/torture/must_use2.rs
index 466f7ee..cf6643e 100644
--- a/gcc/testsuite/rust/compile/torture/must_use2.rs
+++ b/gcc/testsuite/rust/compile/torture/must_use2.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait A {
#[must_use]
fn test() -> i32;
diff --git a/gcc/testsuite/rust/compile/torture/nested_fn2.rs b/gcc/testsuite/rust/compile/torture/nested_fn2.rs
index 7040c86..ad7a10b 100644
--- a/gcc/testsuite/rust/compile/torture/nested_fn2.rs
+++ b/gcc/testsuite/rust/compile/torture/nested_fn2.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub fn main() {
fn test<T>(x: T) -> T {
x
diff --git a/gcc/testsuite/rust/compile/torture/phantom_data.rs b/gcc/testsuite/rust/compile/torture/phantom_data.rs
index 89e76ae..d6c5adc 100644
--- a/gcc/testsuite/rust/compile/torture/phantom_data.rs
+++ b/gcc/testsuite/rust/compile/torture/phantom_data.rs
@@ -1,4 +1,7 @@
// { dg-options "-w" }
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "phantom_data"]
struct PhantomData<T>;
diff --git a/gcc/testsuite/rust/compile/torture/range-lang-item1.rs b/gcc/testsuite/rust/compile/torture/range-lang-item1.rs
index 8694616..604fee8 100644
--- a/gcc/testsuite/rust/compile/torture/range-lang-item1.rs
+++ b/gcc/testsuite/rust/compile/torture/range-lang-item1.rs
@@ -1,4 +1,7 @@
// { dg-additional-options "-w" }
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "RangeFull"]
pub struct RangeFull;
diff --git a/gcc/testsuite/rust/compile/torture/traits1.rs b/gcc/testsuite/rust/compile/torture/traits1.rs
index 9035773..8929501 100644
--- a/gcc/testsuite/rust/compile/torture/traits1.rs
+++ b/gcc/testsuite/rust/compile/torture/traits1.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
fn bar() -> i32;
}
diff --git a/gcc/testsuite/rust/compile/torture/traits11.rs b/gcc/testsuite/rust/compile/torture/traits11.rs
index 41c82f0..02383a5 100644
--- a/gcc/testsuite/rust/compile/torture/traits11.rs
+++ b/gcc/testsuite/rust/compile/torture/traits11.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
type A;
diff --git a/gcc/testsuite/rust/compile/torture/traits12.rs b/gcc/testsuite/rust/compile/torture/traits12.rs
index a55b965..8648022 100644
--- a/gcc/testsuite/rust/compile/torture/traits12.rs
+++ b/gcc/testsuite/rust/compile/torture/traits12.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
type A;
diff --git a/gcc/testsuite/rust/compile/torture/traits13.rs b/gcc/testsuite/rust/compile/torture/traits13.rs
index 326f039..5d9c819 100644
--- a/gcc/testsuite/rust/compile/torture/traits13.rs
+++ b/gcc/testsuite/rust/compile/torture/traits13.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Trait {
const FOO: usize;
type Target;
diff --git a/gcc/testsuite/rust/compile/torture/traits14.rs b/gcc/testsuite/rust/compile/torture/traits14.rs
index 8bca0d5..ab546a8 100644
--- a/gcc/testsuite/rust/compile/torture/traits14.rs
+++ b/gcc/testsuite/rust/compile/torture/traits14.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo<T> {
type A;
diff --git a/gcc/testsuite/rust/compile/torture/traits15.rs b/gcc/testsuite/rust/compile/torture/traits15.rs
index c8c40b7..c1863a8 100644
--- a/gcc/testsuite/rust/compile/torture/traits15.rs
+++ b/gcc/testsuite/rust/compile/torture/traits15.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo<T> {
type A;
diff --git a/gcc/testsuite/rust/compile/torture/traits16.rs b/gcc/testsuite/rust/compile/torture/traits16.rs
index afc4a86..8c8e682 100644
--- a/gcc/testsuite/rust/compile/torture/traits16.rs
+++ b/gcc/testsuite/rust/compile/torture/traits16.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait A {
fn a() -> i32 {
123
diff --git a/gcc/testsuite/rust/compile/torture/traits17.rs b/gcc/testsuite/rust/compile/torture/traits17.rs
index 6da8bcb..268c2bd 100644
--- a/gcc/testsuite/rust/compile/torture/traits17.rs
+++ b/gcc/testsuite/rust/compile/torture/traits17.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait A {
fn a() -> i32 {
123
diff --git a/gcc/testsuite/rust/compile/torture/traits18.rs b/gcc/testsuite/rust/compile/torture/traits18.rs
index 63319dd..512152e 100644
--- a/gcc/testsuite/rust/compile/torture/traits18.rs
+++ b/gcc/testsuite/rust/compile/torture/traits18.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo<'a> {}
trait Bar {
diff --git a/gcc/testsuite/rust/compile/torture/traits19.rs b/gcc/testsuite/rust/compile/torture/traits19.rs
index 4412656..4be898d 100644
--- a/gcc/testsuite/rust/compile/torture/traits19.rs
+++ b/gcc/testsuite/rust/compile/torture/traits19.rs
@@ -1,4 +1,7 @@
// { dg-additional-options "-w" }
+#[lang = "sized"]
+pub trait Sized {}
+
trait Get {
type Value;
fn get(&self) -> &<Self as Get>::Value;
diff --git a/gcc/testsuite/rust/compile/torture/traits2.rs b/gcc/testsuite/rust/compile/torture/traits2.rs
index fc6eb60..a9dca94 100644
--- a/gcc/testsuite/rust/compile/torture/traits2.rs
+++ b/gcc/testsuite/rust/compile/torture/traits2.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
fn bar() -> i32;
}
diff --git a/gcc/testsuite/rust/compile/torture/traits3.rs b/gcc/testsuite/rust/compile/torture/traits3.rs
index deeb81e..d805da5 100644
--- a/gcc/testsuite/rust/compile/torture/traits3.rs
+++ b/gcc/testsuite/rust/compile/torture/traits3.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Foo {
fn Bar(self) -> i32;
}
diff --git a/gcc/testsuite/rust/compile/torture/traits4.rs b/gcc/testsuite/rust/compile/torture/traits4.rs
index 67b012c..49c4db2 100644
--- a/gcc/testsuite/rust/compile/torture/traits4.rs
+++ b/gcc/testsuite/rust/compile/torture/traits4.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
type A;
type B;
diff --git a/gcc/testsuite/rust/compile/torture/traits5.rs b/gcc/testsuite/rust/compile/torture/traits5.rs
index 445b065..c60a259 100644
--- a/gcc/testsuite/rust/compile/torture/traits5.rs
+++ b/gcc/testsuite/rust/compile/torture/traits5.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
type A;
type B;
diff --git a/gcc/testsuite/rust/compile/torture/traits6.rs b/gcc/testsuite/rust/compile/torture/traits6.rs
index 260dde3..f117353 100644
--- a/gcc/testsuite/rust/compile/torture/traits6.rs
+++ b/gcc/testsuite/rust/compile/torture/traits6.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
type A;
diff --git a/gcc/testsuite/rust/compile/torture/traits7.rs b/gcc/testsuite/rust/compile/torture/traits7.rs
index 7bc3384..8e4472d 100644
--- a/gcc/testsuite/rust/compile/torture/traits7.rs
+++ b/gcc/testsuite/rust/compile/torture/traits7.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
const A: i32;
diff --git a/gcc/testsuite/rust/compile/torture/traits8.rs b/gcc/testsuite/rust/compile/torture/traits8.rs
index 459032f..cc0875b 100644
--- a/gcc/testsuite/rust/compile/torture/traits8.rs
+++ b/gcc/testsuite/rust/compile/torture/traits8.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
fn default() -> i32;
}
diff --git a/gcc/testsuite/rust/compile/torture/traits9.rs b/gcc/testsuite/rust/compile/torture/traits9.rs
index 89e4bf1..3a7c37f 100644
--- a/gcc/testsuite/rust/compile/torture/traits9.rs
+++ b/gcc/testsuite/rust/compile/torture/traits9.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
fn default() -> i32;
fn get(self) -> i32;
diff --git a/gcc/testsuite/rust/compile/torture/transmute-size-check-1.rs b/gcc/testsuite/rust/compile/torture/transmute-size-check-1.rs
index 461a35d..6d34fb1 100644
--- a/gcc/testsuite/rust/compile/torture/transmute-size-check-1.rs
+++ b/gcc/testsuite/rust/compile/torture/transmute-size-check-1.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
mod mem {
extern "rust-intrinsic" {
fn size_of<T>() -> usize;
diff --git a/gcc/testsuite/rust/compile/torture/transmute1.rs b/gcc/testsuite/rust/compile/torture/transmute1.rs
index af9a55d..b2a0d07 100644
--- a/gcc/testsuite/rust/compile/torture/transmute1.rs
+++ b/gcc/testsuite/rust/compile/torture/transmute1.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
mod mem {
extern "rust-intrinsic" {
fn size_of<T>() -> usize;
diff --git a/gcc/testsuite/rust/compile/torture/uninit-intrinsic-1.rs b/gcc/testsuite/rust/compile/torture/uninit-intrinsic-1.rs
index 0c6772b..cbb92fe 100644
--- a/gcc/testsuite/rust/compile/torture/uninit-intrinsic-1.rs
+++ b/gcc/testsuite/rust/compile/torture/uninit-intrinsic-1.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
mod intrinsics {
extern "rust-intrinsic" {
pub fn uninit<T>() -> T;
diff --git a/gcc/testsuite/rust/compile/torture/utf8_identifiers.rs b/gcc/testsuite/rust/compile/torture/utf8_identifiers.rs
index 7fb86eb..eeee01c 100644
--- a/gcc/testsuite/rust/compile/torture/utf8_identifiers.rs
+++ b/gcc/testsuite/rust/compile/torture/utf8_identifiers.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub fn f() {
let crab = ();
diff --git a/gcc/testsuite/rust/compile/traits1.rs b/gcc/testsuite/rust/compile/traits1.rs
index 355064e..68f5abb 100644
--- a/gcc/testsuite/rust/compile/traits1.rs
+++ b/gcc/testsuite/rust/compile/traits1.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
fn Bar() -> i32 {}
// { dg-error "expected .i32. got .()." "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/rust/compile/traits10.rs b/gcc/testsuite/rust/compile/traits10.rs
index f8f551b..da6c155 100644
--- a/gcc/testsuite/rust/compile/traits10.rs
+++ b/gcc/testsuite/rust/compile/traits10.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo(i32);
trait Bar {
diff --git a/gcc/testsuite/rust/compile/traits11.rs b/gcc/testsuite/rust/compile/traits11.rs
index d06e47d..ac8ccdf 100644
--- a/gcc/testsuite/rust/compile/traits11.rs
+++ b/gcc/testsuite/rust/compile/traits11.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo(i32);
trait A {
diff --git a/gcc/testsuite/rust/compile/traits12.rs b/gcc/testsuite/rust/compile/traits12.rs
index b170692..b194e07 100644
--- a/gcc/testsuite/rust/compile/traits12.rs
+++ b/gcc/testsuite/rust/compile/traits12.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait A<T> {
type Output;
diff --git a/gcc/testsuite/rust/compile/traits2.rs b/gcc/testsuite/rust/compile/traits2.rs
index 376b3c9..3631a09 100644
--- a/gcc/testsuite/rust/compile/traits2.rs
+++ b/gcc/testsuite/rust/compile/traits2.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
fn Bar() -> i32 {}
// { dg-error "expected .i32. got .()." "" { target *-*-* } .-1 }
diff --git a/gcc/testsuite/rust/compile/traits3.rs b/gcc/testsuite/rust/compile/traits3.rs
index d6d0814..119132f 100644
--- a/gcc/testsuite/rust/compile/traits3.rs
+++ b/gcc/testsuite/rust/compile/traits3.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
type A;
diff --git a/gcc/testsuite/rust/compile/traits4.rs b/gcc/testsuite/rust/compile/traits4.rs
index 486301d..4388b5e 100644
--- a/gcc/testsuite/rust/compile/traits4.rs
+++ b/gcc/testsuite/rust/compile/traits4.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
const A: i32;
diff --git a/gcc/testsuite/rust/compile/traits5.rs b/gcc/testsuite/rust/compile/traits5.rs
index 8b2fb9b..4e9dcc1 100644
--- a/gcc/testsuite/rust/compile/traits5.rs
+++ b/gcc/testsuite/rust/compile/traits5.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
const A: i32;
diff --git a/gcc/testsuite/rust/compile/traits6.rs b/gcc/testsuite/rust/compile/traits6.rs
index 3579b5a..d081dd1 100644
--- a/gcc/testsuite/rust/compile/traits6.rs
+++ b/gcc/testsuite/rust/compile/traits6.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
fn default() -> i32;
}
diff --git a/gcc/testsuite/rust/compile/traits7.rs b/gcc/testsuite/rust/compile/traits7.rs
index 825553c..68f3f38 100644
--- a/gcc/testsuite/rust/compile/traits7.rs
+++ b/gcc/testsuite/rust/compile/traits7.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
fn default() -> i32;
}
diff --git a/gcc/testsuite/rust/compile/traits8.rs b/gcc/testsuite/rust/compile/traits8.rs
index b22590a..ccba9fa 100644
--- a/gcc/testsuite/rust/compile/traits8.rs
+++ b/gcc/testsuite/rust/compile/traits8.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait A {
fn get(self) -> f64;
}
diff --git a/gcc/testsuite/rust/compile/traits9.rs b/gcc/testsuite/rust/compile/traits9.rs
index e1aef53..bb3034d 100644
--- a/gcc/testsuite/rust/compile/traits9.rs
+++ b/gcc/testsuite/rust/compile/traits9.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo(i32);
trait Bar {
fn baz(&self);
diff --git a/gcc/testsuite/rust/compile/type-bindings1.rs b/gcc/testsuite/rust/compile/type-bindings1.rs
index dc0e274..358035b 100644
--- a/gcc/testsuite/rust/compile/type-bindings1.rs
+++ b/gcc/testsuite/rust/compile/type-bindings1.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<A, B>(A, B);
fn main() {
diff --git a/gcc/testsuite/rust/compile/unconstrained_type_param.rs b/gcc/testsuite/rust/compile/unconstrained_type_param.rs
index a510332..1cef0b9 100644
--- a/gcc/testsuite/rust/compile/unconstrained_type_param.rs
+++ b/gcc/testsuite/rust/compile/unconstrained_type_param.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<T>(T, bool);
impl<X, Y> Foo<X> {
diff --git a/gcc/testsuite/rust/compile/unsafe10.rs b/gcc/testsuite/rust/compile/unsafe10.rs
index 927e697..5861c15 100644
--- a/gcc/testsuite/rust/compile/unsafe10.rs
+++ b/gcc/testsuite/rust/compile/unsafe10.rs
@@ -1,5 +1,8 @@
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
extern "rust-intrinsic" {
pub fn rotate_left<T>(l: T, r: T) -> T;
}
diff --git a/gcc/testsuite/rust/execute/torture/closure1.rs b/gcc/testsuite/rust/execute/torture/closure1.rs
index 62afa78..e956413 100644
--- a/gcc/testsuite/rust/execute/torture/closure1.rs
+++ b/gcc/testsuite/rust/execute/torture/closure1.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
extern "C" {
fn printf(s: *const i8, ...);
}
diff --git a/gcc/testsuite/rust/execute/torture/closure2.rs b/gcc/testsuite/rust/execute/torture/closure2.rs
index 8e1502d..deca784 100644
--- a/gcc/testsuite/rust/execute/torture/closure2.rs
+++ b/gcc/testsuite/rust/execute/torture/closure2.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "fn_once"]
pub trait FnOnce<Args> {
#[lang = "fn_once_output"]
diff --git a/gcc/testsuite/rust/execute/torture/closure3.rs b/gcc/testsuite/rust/execute/torture/closure3.rs
index 8fa9445..98ec261 100644
--- a/gcc/testsuite/rust/execute/torture/closure3.rs
+++ b/gcc/testsuite/rust/execute/torture/closure3.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "fn_once"]
pub trait FnOnce<Args> {
#[lang = "fn_once_output"]
diff --git a/gcc/testsuite/rust/execute/torture/closure4.rs b/gcc/testsuite/rust/execute/torture/closure4.rs
index 07dca44..0701776 100644
--- a/gcc/testsuite/rust/execute/torture/closure4.rs
+++ b/gcc/testsuite/rust/execute/torture/closure4.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "fn_once"]
pub trait FnOnce<Args> {
#[lang = "fn_once_output"]
diff --git a/gcc/testsuite/rust/execute/torture/coercion1.rs b/gcc/testsuite/rust/execute/torture/coercion1.rs
index 6ca2823..335f496 100644
--- a/gcc/testsuite/rust/execute/torture/coercion1.rs
+++ b/gcc/testsuite/rust/execute/torture/coercion1.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo(i32);
trait Bar {
fn baz(&self);
diff --git a/gcc/testsuite/rust/execute/torture/coercion2.rs b/gcc/testsuite/rust/execute/torture/coercion2.rs
index 047fd53..6be8602 100644
--- a/gcc/testsuite/rust/execute/torture/coercion2.rs
+++ b/gcc/testsuite/rust/execute/torture/coercion2.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo(i32);
trait Bar {
fn baz(&self);
diff --git a/gcc/testsuite/rust/execute/torture/coercion3.rs b/gcc/testsuite/rust/execute/torture/coercion3.rs
index ca66dfa..e88338a 100644
--- a/gcc/testsuite/rust/execute/torture/coercion3.rs
+++ b/gcc/testsuite/rust/execute/torture/coercion3.rs
@@ -1,4 +1,7 @@
// { dg-output "123\n" }
+#[lang = "sized"]
+pub trait Sized {}
+
trait A {
fn get_int(&self) -> i32;
}
diff --git a/gcc/testsuite/rust/execute/torture/copy_nonoverlapping1.rs b/gcc/testsuite/rust/execute/torture/copy_nonoverlapping1.rs
index 39afd34..15bb811 100644
--- a/gcc/testsuite/rust/execute/torture/copy_nonoverlapping1.rs
+++ b/gcc/testsuite/rust/execute/torture/copy_nonoverlapping1.rs
@@ -1,4 +1,6 @@
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
extern "rust-intrinsic" {
pub fn copy_nonoverlapping<T>(src: *const T, dst: *mut T, count: usize);
@@ -16,4 +18,4 @@ fn main() -> i32 {
*i_copy - *i
}
-} \ No newline at end of file
+}
diff --git a/gcc/testsuite/rust/execute/torture/derive_macro1.rs b/gcc/testsuite/rust/execute/torture/derive_macro1.rs
index 6e0350d..22cfaaa 100644
--- a/gcc/testsuite/rust/execute/torture/derive_macro1.rs
+++ b/gcc/testsuite/rust/execute/torture/derive_macro1.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Clone {
fn clone(&self) -> Self;
}
diff --git a/gcc/testsuite/rust/execute/torture/derive_macro3.rs b/gcc/testsuite/rust/execute/torture/derive_macro3.rs
index 716bd90..7b3a089 100644
--- a/gcc/testsuite/rust/execute/torture/derive_macro3.rs
+++ b/gcc/testsuite/rust/execute/torture/derive_macro3.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Clone {
fn clone(&self) -> Self;
}
diff --git a/gcc/testsuite/rust/execute/torture/derive_macro4.rs b/gcc/testsuite/rust/execute/torture/derive_macro4.rs
index 218bf61..c355ac7 100644
--- a/gcc/testsuite/rust/execute/torture/derive_macro4.rs
+++ b/gcc/testsuite/rust/execute/torture/derive_macro4.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Clone {
fn clone(&self) -> Self;
}
@@ -26,4 +29,4 @@ fn main() -> i32 {
// should be 0 if all fields were cloned correctly
l + r
-} \ No newline at end of file
+}
diff --git a/gcc/testsuite/rust/execute/torture/index1.rs b/gcc/testsuite/rust/execute/torture/index1.rs
index 4682978..19e58e3 100644
--- a/gcc/testsuite/rust/execute/torture/index1.rs
+++ b/gcc/testsuite/rust/execute/torture/index1.rs
@@ -1,4 +1,7 @@
// { dg-additional-options "-w" }
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "index"]
trait Index<Idx> {
type Output;
diff --git a/gcc/testsuite/rust/execute/torture/issue-1120.rs b/gcc/testsuite/rust/execute/torture/issue-1120.rs
index 59792b2..7dfa26f 100644
--- a/gcc/testsuite/rust/execute/torture/issue-1120.rs
+++ b/gcc/testsuite/rust/execute/torture/issue-1120.rs
@@ -1,6 +1,9 @@
// { dg-additional-options "-w" }
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
extern "rust-intrinsic" {
#[rustc_const_stable(feature = "const_ptr_offset", since = "1.61.0")]
pub fn offset<T>(dst: *const T, offset: isize) -> *const T;
diff --git a/gcc/testsuite/rust/execute/torture/issue-1133.rs b/gcc/testsuite/rust/execute/torture/issue-1133.rs
index 8679bb9..29f532e 100644
--- a/gcc/testsuite/rust/execute/torture/issue-1133.rs
+++ b/gcc/testsuite/rust/execute/torture/issue-1133.rs
@@ -1,6 +1,9 @@
// { dg-additional-options "-w" }
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
extern "rust-intrinsic" {
#[rustc_const_stable(feature = "const_ptr_offset", since = "1.61.0")]
pub fn offset<T>(dst: *const T, offset: isize) -> *const T;
diff --git a/gcc/testsuite/rust/execute/torture/issue-1198.rs b/gcc/testsuite/rust/execute/torture/issue-1198.rs
index bbc58f0..d5c3d89 100644
--- a/gcc/testsuite/rust/execute/torture/issue-1198.rs
+++ b/gcc/testsuite/rust/execute/torture/issue-1198.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "deref"]
pub trait Deref {
type Target;
diff --git a/gcc/testsuite/rust/execute/torture/issue-1232.rs b/gcc/testsuite/rust/execute/torture/issue-1232.rs
index ce53da2..6fb42b3 100644
--- a/gcc/testsuite/rust/execute/torture/issue-1232.rs
+++ b/gcc/testsuite/rust/execute/torture/issue-1232.rs
@@ -2,6 +2,9 @@
// { dg-output "slice_access=3\r*\n" }
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
extern "rust-intrinsic" {
#[rustc_const_stable(feature = "const_ptr_offset", since = "1.61.0")]
fn offset<T>(dst: *const T, offset: isize) -> *const T;
diff --git a/gcc/testsuite/rust/execute/torture/issue-1249.rs b/gcc/testsuite/rust/execute/torture/issue-1249.rs
index 0691107..e7a261c 100644
--- a/gcc/testsuite/rust/execute/torture/issue-1249.rs
+++ b/gcc/testsuite/rust/execute/torture/issue-1249.rs
@@ -1,6 +1,9 @@
// { dg-options "-w" }
// { dg-output "1\r*\n2\r*\n" }
+#[lang = "sized"]
+pub trait Sized {}
+
extern "C" {
fn printf(s: *const i8, ...);
}
diff --git a/gcc/testsuite/rust/execute/torture/issue-1436.rs b/gcc/testsuite/rust/execute/torture/issue-1436.rs
index 96de5d6..4e69961 100644
--- a/gcc/testsuite/rust/execute/torture/issue-1436.rs
+++ b/gcc/testsuite/rust/execute/torture/issue-1436.rs
@@ -1,4 +1,7 @@
// { dg-options "-w" }
+#[lang = "sized"]
+pub trait Sized {}
+
mod intrinsics {
extern "rust-intrinsic" {
#[rustc_const_stable(feature = "const_ptr_offset", since = "1.61.0")]
diff --git a/gcc/testsuite/rust/execute/torture/issue-1496.rs b/gcc/testsuite/rust/execute/torture/issue-1496.rs
index af4201b..36291a7 100644
--- a/gcc/testsuite/rust/execute/torture/issue-1496.rs
+++ b/gcc/testsuite/rust/execute/torture/issue-1496.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "deref"]
pub trait Deref {
type Target;
diff --git a/gcc/testsuite/rust/execute/torture/issue-1720-2.rs b/gcc/testsuite/rust/execute/torture/issue-1720-2.rs
index 35833db..9c5356e 100644
--- a/gcc/testsuite/rust/execute/torture/issue-1720-2.rs
+++ b/gcc/testsuite/rust/execute/torture/issue-1720-2.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
mod core {
mod ops {
#[lang = "add"]
diff --git a/gcc/testsuite/rust/execute/torture/issue-1720.rs b/gcc/testsuite/rust/execute/torture/issue-1720.rs
index 771d7ee..2218282 100644
--- a/gcc/testsuite/rust/execute/torture/issue-1720.rs
+++ b/gcc/testsuite/rust/execute/torture/issue-1720.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
mod core {
mod ops {
#[lang = "add"]
diff --git a/gcc/testsuite/rust/execute/torture/issue-2052.rs b/gcc/testsuite/rust/execute/torture/issue-2052.rs
index 6c15eb3..bf5d6a7 100644
--- a/gcc/testsuite/rust/execute/torture/issue-2052.rs
+++ b/gcc/testsuite/rust/execute/torture/issue-2052.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "fn_once"]
pub trait FnOnce<Args> {
#[lang = "fn_once_output"]
diff --git a/gcc/testsuite/rust/execute/torture/issue-2179.rs b/gcc/testsuite/rust/execute/torture/issue-2179.rs
index 53bacaa..86ed11f 100644
--- a/gcc/testsuite/rust/execute/torture/issue-2179.rs
+++ b/gcc/testsuite/rust/execute/torture/issue-2179.rs
@@ -1,4 +1,7 @@
// { dg-output "123\n" }
+#[lang = "sized"]
+pub trait Sized {}
+
trait A {
fn get_int(&self) -> i32;
}
diff --git a/gcc/testsuite/rust/execute/torture/issue-2180.rs b/gcc/testsuite/rust/execute/torture/issue-2180.rs
index 3a7ea10..beed696 100644
--- a/gcc/testsuite/rust/execute/torture/issue-2180.rs
+++ b/gcc/testsuite/rust/execute/torture/issue-2180.rs
@@ -1,4 +1,7 @@
// { dg-output "123\n" }
+#[lang = "sized"]
+pub trait Sized {}
+
trait A {
fn get_int(&self) -> i32;
}
diff --git a/gcc/testsuite/rust/execute/torture/issue-2236.rs b/gcc/testsuite/rust/execute/torture/issue-2236.rs
index 1edc5a5..850b997 100644
--- a/gcc/testsuite/rust/execute/torture/issue-2236.rs
+++ b/gcc/testsuite/rust/execute/torture/issue-2236.rs
@@ -1,4 +1,7 @@
// { dg-options "-w" }
+#[lang = "sized"]
+pub trait Sized {}
+
mod core {
mod ops {
#[lang = "deref"]
diff --git a/gcc/testsuite/rust/execute/torture/issue-647.rs b/gcc/testsuite/rust/execute/torture/issue-647.rs
index d76d43b..6a35655 100644
--- a/gcc/testsuite/rust/execute/torture/issue-647.rs
+++ b/gcc/testsuite/rust/execute/torture/issue-647.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo<T>(T);
struct Bar<T> {
diff --git a/gcc/testsuite/rust/execute/torture/issue-845.rs b/gcc/testsuite/rust/execute/torture/issue-845.rs
index f96714d..b11ccd5 100644
--- a/gcc/testsuite/rust/execute/torture/issue-845.rs
+++ b/gcc/testsuite/rust/execute/torture/issue-845.rs
@@ -4,6 +4,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo {}
trait Bar {
diff --git a/gcc/testsuite/rust/execute/torture/issue-851.rs b/gcc/testsuite/rust/execute/torture/issue-851.rs
index b3b2b48..1361235 100644
--- a/gcc/testsuite/rust/execute/torture/issue-851.rs
+++ b/gcc/testsuite/rust/execute/torture/issue-851.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
enum Foo<T> {
A,
B(T),
diff --git a/gcc/testsuite/rust/execute/torture/issue-858.rs b/gcc/testsuite/rust/execute/torture/issue-858.rs
index 51a1561..0b1118b 100644
--- a/gcc/testsuite/rust/execute/torture/issue-858.rs
+++ b/gcc/testsuite/rust/execute/torture/issue-858.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
enum Foo<T> {
A,
B(T),
diff --git a/gcc/testsuite/rust/execute/torture/macros23.rs b/gcc/testsuite/rust/execute/torture/macros23.rs
index 846352d..b27985d 100644
--- a/gcc/testsuite/rust/execute/torture/macros23.rs
+++ b/gcc/testsuite/rust/execute/torture/macros23.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
trait Valuable {
const VALUE: i32;
}
diff --git a/gcc/testsuite/rust/execute/torture/macros28.rs b/gcc/testsuite/rust/execute/torture/macros28.rs
index b011f92..46d9cfc 100644
--- a/gcc/testsuite/rust/execute/torture/macros28.rs
+++ b/gcc/testsuite/rust/execute/torture/macros28.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
macro_rules! t {
() => {
i32
diff --git a/gcc/testsuite/rust/execute/torture/method2.rs b/gcc/testsuite/rust/execute/torture/method2.rs
index 79a35eb..e5f630a 100644
--- a/gcc/testsuite/rust/execute/torture/method2.rs
+++ b/gcc/testsuite/rust/execute/torture/method2.rs
@@ -4,6 +4,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "deref"]
pub trait Deref {
type Target;
diff --git a/gcc/testsuite/rust/execute/torture/method3.rs b/gcc/testsuite/rust/execute/torture/method3.rs
index 7217d35..9a7865c 100644
--- a/gcc/testsuite/rust/execute/torture/method3.rs
+++ b/gcc/testsuite/rust/execute/torture/method3.rs
@@ -4,6 +4,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "deref"]
pub trait Deref {
type Target;
diff --git a/gcc/testsuite/rust/execute/torture/method4.rs b/gcc/testsuite/rust/execute/torture/method4.rs
index ba1ffd1..e20618f 100644
--- a/gcc/testsuite/rust/execute/torture/method4.rs
+++ b/gcc/testsuite/rust/execute/torture/method4.rs
@@ -4,6 +4,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "deref"]
pub trait Deref {
type Target;
diff --git a/gcc/testsuite/rust/execute/torture/operator_overload_1.rs b/gcc/testsuite/rust/execute/torture/operator_overload_1.rs
index 064a776..9aed393 100644
--- a/gcc/testsuite/rust/execute/torture/operator_overload_1.rs
+++ b/gcc/testsuite/rust/execute/torture/operator_overload_1.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "add"]
pub trait Add<Rhs = Self> {
type Output;
diff --git a/gcc/testsuite/rust/execute/torture/operator_overload_10.rs b/gcc/testsuite/rust/execute/torture/operator_overload_10.rs
index 3fa5afd..921ec5f 100644
--- a/gcc/testsuite/rust/execute/torture/operator_overload_10.rs
+++ b/gcc/testsuite/rust/execute/torture/operator_overload_10.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "deref"]
pub trait Deref {
type Target;
diff --git a/gcc/testsuite/rust/execute/torture/operator_overload_11.rs b/gcc/testsuite/rust/execute/torture/operator_overload_11.rs
index 94bc1cd..f0359fb 100644
--- a/gcc/testsuite/rust/execute/torture/operator_overload_11.rs
+++ b/gcc/testsuite/rust/execute/torture/operator_overload_11.rs
@@ -4,6 +4,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "bitand"]
pub trait BitAnd<Rhs = Self> {
type Output;
diff --git a/gcc/testsuite/rust/execute/torture/operator_overload_12.rs b/gcc/testsuite/rust/execute/torture/operator_overload_12.rs
index d525ec4..2cd5c69 100644
--- a/gcc/testsuite/rust/execute/torture/operator_overload_12.rs
+++ b/gcc/testsuite/rust/execute/torture/operator_overload_12.rs
@@ -4,6 +4,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "bitand_assign"]
pub trait BitAndAssign<Rhs = Self> {
fn bitand_assign(&mut self, rhs: Rhs);
diff --git a/gcc/testsuite/rust/execute/torture/operator_overload_2.rs b/gcc/testsuite/rust/execute/torture/operator_overload_2.rs
index fab3a83..6862415 100644
--- a/gcc/testsuite/rust/execute/torture/operator_overload_2.rs
+++ b/gcc/testsuite/rust/execute/torture/operator_overload_2.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "add"]
pub trait Add<Rhs = Self> {
type Output;
diff --git a/gcc/testsuite/rust/execute/torture/operator_overload_3.rs b/gcc/testsuite/rust/execute/torture/operator_overload_3.rs
index 2bcb1c4..6c1a8b8 100644
--- a/gcc/testsuite/rust/execute/torture/operator_overload_3.rs
+++ b/gcc/testsuite/rust/execute/torture/operator_overload_3.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "add"]
pub trait Add<Rhs = Self> {
type Output;
diff --git a/gcc/testsuite/rust/execute/torture/operator_overload_4.rs b/gcc/testsuite/rust/execute/torture/operator_overload_4.rs
index e1fcbac..c8235c6 100644
--- a/gcc/testsuite/rust/execute/torture/operator_overload_4.rs
+++ b/gcc/testsuite/rust/execute/torture/operator_overload_4.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "neg"]
pub trait Neg {
type Output;
diff --git a/gcc/testsuite/rust/execute/torture/operator_overload_5.rs b/gcc/testsuite/rust/execute/torture/operator_overload_5.rs
index 2ba8728..eeef5bc 100644
--- a/gcc/testsuite/rust/execute/torture/operator_overload_5.rs
+++ b/gcc/testsuite/rust/execute/torture/operator_overload_5.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "not"]
pub trait Not {
type Output;
diff --git a/gcc/testsuite/rust/execute/torture/operator_overload_6.rs b/gcc/testsuite/rust/execute/torture/operator_overload_6.rs
index 50463e7..d5ffae5 100644
--- a/gcc/testsuite/rust/execute/torture/operator_overload_6.rs
+++ b/gcc/testsuite/rust/execute/torture/operator_overload_6.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "add_assign"]
pub trait AddAssign<Rhs = Self> {
fn add_assign(&mut self, rhs: Rhs);
diff --git a/gcc/testsuite/rust/execute/torture/operator_overload_7.rs b/gcc/testsuite/rust/execute/torture/operator_overload_7.rs
index 50107bb..7226b26 100644
--- a/gcc/testsuite/rust/execute/torture/operator_overload_7.rs
+++ b/gcc/testsuite/rust/execute/torture/operator_overload_7.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "deref"]
pub trait Deref {
type Target;
diff --git a/gcc/testsuite/rust/execute/torture/operator_overload_8.rs b/gcc/testsuite/rust/execute/torture/operator_overload_8.rs
index e0338b9..4b589a8 100644
--- a/gcc/testsuite/rust/execute/torture/operator_overload_8.rs
+++ b/gcc/testsuite/rust/execute/torture/operator_overload_8.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "deref"]
pub trait Deref {
type Target;
diff --git a/gcc/testsuite/rust/execute/torture/operator_overload_9.rs b/gcc/testsuite/rust/execute/torture/operator_overload_9.rs
index 608ad0f..5fc0428 100644
--- a/gcc/testsuite/rust/execute/torture/operator_overload_9.rs
+++ b/gcc/testsuite/rust/execute/torture/operator_overload_9.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "deref"]
pub trait Deref {
type Target;
diff --git a/gcc/testsuite/rust/execute/torture/prefetch_data.rs b/gcc/testsuite/rust/execute/torture/prefetch_data.rs
index dc049b1..2a847fb 100644
--- a/gcc/testsuite/rust/execute/torture/prefetch_data.rs
+++ b/gcc/testsuite/rust/execute/torture/prefetch_data.rs
@@ -1,5 +1,8 @@
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
extern "rust-intrinsic" {
fn prefetch_read_data<T>(addr: *const T, locality: i32);
fn prefetch_write_data<T>(addr: *const T, locality: i32);
diff --git a/gcc/testsuite/rust/execute/torture/ref-pattern2.rs b/gcc/testsuite/rust/execute/torture/ref-pattern2.rs
index 4c9e755..8e71724 100644
--- a/gcc/testsuite/rust/execute/torture/ref-pattern2.rs
+++ b/gcc/testsuite/rust/execute/torture/ref-pattern2.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
#[lang = "fn_once"]
pub trait FnOnce<Args> {
#[lang = "fn_once_output"]
diff --git a/gcc/testsuite/rust/execute/torture/slice-magic.rs b/gcc/testsuite/rust/execute/torture/slice-magic.rs
index b52aa3d..1f56187 100644
--- a/gcc/testsuite/rust/execute/torture/slice-magic.rs
+++ b/gcc/testsuite/rust/execute/torture/slice-magic.rs
@@ -1,6 +1,9 @@
// { dg-additional-options "-w" }
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
extern "rust-intrinsic" {
#[rustc_const_stable(feature = "const_ptr_offset", since = "1.61.0")]
pub fn offset<T>(dst: *const T, offset: isize) -> *const T;
diff --git a/gcc/testsuite/rust/execute/torture/slice-magic2.rs b/gcc/testsuite/rust/execute/torture/slice-magic2.rs
index cdc39f3..20f113e 100644
--- a/gcc/testsuite/rust/execute/torture/slice-magic2.rs
+++ b/gcc/testsuite/rust/execute/torture/slice-magic2.rs
@@ -1,6 +1,9 @@
// { dg-additional-options "-w" }
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
extern "rust-intrinsic" {
#[rustc_const_stable(feature = "const_ptr_offset", since = "1.61.0")]
pub fn offset<T>(dst: *const T, offset: isize) -> *const T;
diff --git a/gcc/testsuite/rust/execute/torture/slice1.rs b/gcc/testsuite/rust/execute/torture/slice1.rs
index 206082a..2683179 100644
--- a/gcc/testsuite/rust/execute/torture/slice1.rs
+++ b/gcc/testsuite/rust/execute/torture/slice1.rs
@@ -1,4 +1,7 @@
// { dg-additional-options "-w" }
+#[lang = "sized"]
+pub trait Sized {}
+
struct FatPtr<T> {
data: *const T,
len: usize,
diff --git a/gcc/testsuite/rust/execute/torture/str-layout1.rs b/gcc/testsuite/rust/execute/torture/str-layout1.rs
index c9bcf16..fb3b4e3 100644
--- a/gcc/testsuite/rust/execute/torture/str-layout1.rs
+++ b/gcc/testsuite/rust/execute/torture/str-layout1.rs
@@ -2,6 +2,9 @@
// { dg-output "t1sz=5 t2sz=10\r*" }
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
mod mem {
extern "rust-intrinsic" {
#[rustc_const_stable(feature = "const_transmute", since = "1.46.0")]
diff --git a/gcc/testsuite/rust/execute/torture/trait1.rs b/gcc/testsuite/rust/execute/torture/trait1.rs
index d4f5878..f8a5959 100644
--- a/gcc/testsuite/rust/execute/torture/trait1.rs
+++ b/gcc/testsuite/rust/execute/torture/trait1.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
struct S;
impl S {
diff --git a/gcc/testsuite/rust/execute/torture/trait10.rs b/gcc/testsuite/rust/execute/torture/trait10.rs
index b0bdeab..a595122 100644
--- a/gcc/testsuite/rust/execute/torture/trait10.rs
+++ b/gcc/testsuite/rust/execute/torture/trait10.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo(i32);
trait Bar {
fn baz(&self);
diff --git a/gcc/testsuite/rust/execute/torture/trait11.rs b/gcc/testsuite/rust/execute/torture/trait11.rs
index ed7b7c9..093343c 100644
--- a/gcc/testsuite/rust/execute/torture/trait11.rs
+++ b/gcc/testsuite/rust/execute/torture/trait11.rs
@@ -1,4 +1,7 @@
/* { dg-output "3\r*\n" } */
+#[lang = "sized"]
+pub trait Sized {}
+
extern "C" {
fn printf(s: *const i8, ...);
}
diff --git a/gcc/testsuite/rust/execute/torture/trait12.rs b/gcc/testsuite/rust/execute/torture/trait12.rs
index a4ba5be..83cf107 100644
--- a/gcc/testsuite/rust/execute/torture/trait12.rs
+++ b/gcc/testsuite/rust/execute/torture/trait12.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
trait FnLike<A, R> {
fn call(&self, arg: A) -> R;
}
diff --git a/gcc/testsuite/rust/execute/torture/trait13.rs b/gcc/testsuite/rust/execute/torture/trait13.rs
index 49befb8..928a37c 100644
--- a/gcc/testsuite/rust/execute/torture/trait13.rs
+++ b/gcc/testsuite/rust/execute/torture/trait13.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo(i32);
trait Bar {
fn baz(&self);
diff --git a/gcc/testsuite/rust/execute/torture/trait2.rs b/gcc/testsuite/rust/execute/torture/trait2.rs
index 9974f70..d5fd546 100644
--- a/gcc/testsuite/rust/execute/torture/trait2.rs
+++ b/gcc/testsuite/rust/execute/torture/trait2.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
trait Foo {
const A: i32 = 123;
}
diff --git a/gcc/testsuite/rust/execute/torture/trait3.rs b/gcc/testsuite/rust/execute/torture/trait3.rs
index 6fe92ef..668b437 100644
--- a/gcc/testsuite/rust/execute/torture/trait3.rs
+++ b/gcc/testsuite/rust/execute/torture/trait3.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
trait A {
fn a() -> i32 {
123
diff --git a/gcc/testsuite/rust/execute/torture/trait4.rs b/gcc/testsuite/rust/execute/torture/trait4.rs
index 3b2d000..61c2d15 100644
--- a/gcc/testsuite/rust/execute/torture/trait4.rs
+++ b/gcc/testsuite/rust/execute/torture/trait4.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo(i32);
trait Bar {
fn baz(&self);
diff --git a/gcc/testsuite/rust/execute/torture/trait5.rs b/gcc/testsuite/rust/execute/torture/trait5.rs
index f9c0dfd..7cd7d1a 100644
--- a/gcc/testsuite/rust/execute/torture/trait5.rs
+++ b/gcc/testsuite/rust/execute/torture/trait5.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
struct Foo(i32);
trait Bar {
fn baz(&self);
diff --git a/gcc/testsuite/rust/execute/torture/trait6.rs b/gcc/testsuite/rust/execute/torture/trait6.rs
index 74363c2..de5ddc1 100644
--- a/gcc/testsuite/rust/execute/torture/trait6.rs
+++ b/gcc/testsuite/rust/execute/torture/trait6.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Foo {
type A;
diff --git a/gcc/testsuite/rust/execute/torture/trait7.rs b/gcc/testsuite/rust/execute/torture/trait7.rs
index fc1bbe8..21f1575 100644
--- a/gcc/testsuite/rust/execute/torture/trait7.rs
+++ b/gcc/testsuite/rust/execute/torture/trait7.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Foo {
type A;
diff --git a/gcc/testsuite/rust/execute/torture/trait8.rs b/gcc/testsuite/rust/execute/torture/trait8.rs
index c26737f..69e784e 100644
--- a/gcc/testsuite/rust/execute/torture/trait8.rs
+++ b/gcc/testsuite/rust/execute/torture/trait8.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
pub trait Foo {
type A;
diff --git a/gcc/testsuite/rust/execute/torture/trait9.rs b/gcc/testsuite/rust/execute/torture/trait9.rs
index 738d193..a1642f6 100644
--- a/gcc/testsuite/rust/execute/torture/trait9.rs
+++ b/gcc/testsuite/rust/execute/torture/trait9.rs
@@ -3,6 +3,9 @@ extern "C" {
fn printf(s: *const i8, ...);
}
+#[lang = "sized"]
+pub trait Sized {}
+
trait FnLike<A, R> {
fn call(&self, arg: A) -> R;
}
diff --git a/gcc/testsuite/rust/execute/torture/transmute1.rs b/gcc/testsuite/rust/execute/torture/transmute1.rs
index 40dcfde..d89affd 100644
--- a/gcc/testsuite/rust/execute/torture/transmute1.rs
+++ b/gcc/testsuite/rust/execute/torture/transmute1.rs
@@ -5,6 +5,9 @@ extern "rust-intrinsic" {
fn transmute<T, U>(value: T) -> U;
}
+#[lang = "sized"]
+pub trait Sized {}
+
struct WrapI {
inner: i32,
}
diff --git a/gcc/testsuite/rust/execute/torture/wrapping_op1.rs b/gcc/testsuite/rust/execute/torture/wrapping_op1.rs
index ab4afd7..e0c100c 100644
--- a/gcc/testsuite/rust/execute/torture/wrapping_op1.rs
+++ b/gcc/testsuite/rust/execute/torture/wrapping_op1.rs
@@ -1,5 +1,8 @@
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
extern "rust-intrinsic" {
pub fn wrapping_add<T>(l: T, r: T) -> T;
}
diff --git a/gcc/testsuite/rust/execute/torture/wrapping_op2.rs b/gcc/testsuite/rust/execute/torture/wrapping_op2.rs
index b24ebce..6928992 100644
--- a/gcc/testsuite/rust/execute/torture/wrapping_op2.rs
+++ b/gcc/testsuite/rust/execute/torture/wrapping_op2.rs
@@ -1,5 +1,8 @@
#![feature(intrinsics)]
+#[lang = "sized"]
+pub trait Sized {}
+
extern "rust-intrinsic" {
pub fn wrapping_add<T>(l: T, r: T) -> T;
pub fn wrapping_sub<T>(l: T, r: T) -> T;
diff --git a/gcc/testsuite/rust/link/generic_function_0.rs b/gcc/testsuite/rust/link/generic_function_0.rs
index 58b8eb1..179c822 100644
--- a/gcc/testsuite/rust/link/generic_function_0.rs
+++ b/gcc/testsuite/rust/link/generic_function_0.rs
@@ -1,3 +1,6 @@
+// { dg-xfail-if "https://github.com/Rust-GCC/gccrs/issues/2349" { *-*-* } }
+// { dg-excess-errors "" { xfail *-*-* } }
+
extern crate generic_function_1;
use generic_function_1::generic_function;
diff --git a/gcc/testsuite/rust/link/generic_function_1.rs b/gcc/testsuite/rust/link/generic_function_1.rs
index 8fb0788..46d0e82 100644
--- a/gcc/testsuite/rust/link/generic_function_1.rs
+++ b/gcc/testsuite/rust/link/generic_function_1.rs
@@ -1,3 +1,6 @@
+#[lang = "sized"]
+pub trait Sized {}
+
pub fn generic_function<X>(a: X) -> X {
a
}