| Age | Commit message (Collapse) | Author | Files | Lines |
|
We recently modified all tests with lang items to add the lang feature
gate switch but we did not introduce any test to check that a proper
error message is printed when this switch is not used.
gcc/testsuite/ChangeLog:
* rust/compile/lang_feature_gate.rs: New test.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
|
|
This fixes a false positive with undefined features, improves the
implementation of Feature::as_name, and configures the testsuite to
check further stages of libcore compilation.
gcc/rust/ChangeLog:
* ast/rust-macro.h (MetaNameValueStr::get_name): New function.
(MetaNameValueStr::get_value): Likewise.
* checks/errors/feature/rust-feature-gate.cc
(FeatureGate::visit): Tweak unknown feature detection.
(FeatureGate::gate): Handle field rename.
(FeatureGate::note_stability_attribute): New function
definition.
* checks/errors/feature/rust-feature-gate.h
(FeatureGate::note_stability_attribute): New function
declaration.
(FeatureGate::Stability): New enum class.
(FeatureGate::valid_features): Rename field to...
(FeatureGate::valid_lang_features): ...here.
(FeatureGate::valid_lib_features): New field.
(FeatureGate::defined_lib_features): Likewise.
* checks/errors/feature/rust-feature.cc (Feature::as_name):
Improve implementation.
gcc/testsuite/ChangeLog:
* rust/core/core.exp: Change -frust-compile-until=astvalidation
to -frust-compile-until=nameresolution.
Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
|
|
gcc/testsuite/ChangeLog:
* rust/borrowck/reference.rs: Add attributes.
* rust/borrowck/tmp.rs: Likewise.
* rust/compile/additional-trait-bounds1.rs: Likewise.
* rust/compile/additional-trait-bounds2.rs: Likewise.
* rust/compile/additional-trait-bounds2nr2.rs: Likewise.
* rust/compile/auto_traits1.rs: Likewise.
* rust/compile/auto_traits2.rs: Likewise.
* rust/compile/bad-rpit1.rs: Likewise.
* rust/compile/black_box.rs: Likewise.
* rust/compile/bounds1.rs: Likewise.
* rust/compile/box_syntax_feature_gate.rs: Likewise.
* rust/compile/bug-with-default-generic.rs: Likewise.
* rust/compile/canonical_paths1.rs: Likewise.
* rust/compile/cast_generics.rs: Likewise.
* rust/compile/closure_no_type_anno.rs: Likewise.
* rust/compile/cmp1.rs: Likewise.
* rust/compile/complex_qualified_path_in_expr.rs: Likewise.
* rust/compile/const-issue1440.rs: Likewise.
* rust/compile/const_generics_1.rs: Likewise.
* rust/compile/const_generics_10.rs: Likewise.
* rust/compile/const_generics_11.rs: Likewise.
* rust/compile/const_generics_12.rs: Likewise.
* rust/compile/const_generics_13.rs: Likewise.
* rust/compile/const_generics_14.rs: Likewise.
* rust/compile/const_generics_15.rs: Likewise.
* rust/compile/const_generics_16.rs: Likewise.
* rust/compile/const_generics_18.rs: Likewise.
* rust/compile/const_generics_19.rs: Likewise.
* rust/compile/const_generics_3.rs: Likewise.
* rust/compile/const_generics_8.rs: Likewise.
* rust/compile/const_generics_9.rs: Likewise.
* rust/compile/derive-debug1.rs: Likewise.
* rust/compile/derive-default1.rs: Likewise.
* rust/compile/derive-eq-invalid.rs: Likewise.
* rust/compile/derive-hash1.rs: Likewise.
* rust/compile/derive-partialeq1.rs: Likewise.
* rust/compile/derive_clone_enum1.rs: Likewise.
* rust/compile/derive_clone_enum2.rs: Likewise.
* rust/compile/derive_clone_enum3.rs: Likewise.
* rust/compile/derive_macro1.rs: Likewise.
* rust/compile/derive_macro3.rs: Likewise.
* rust/compile/derive_macro4.rs: Likewise.
* rust/compile/derive_macro6.rs: Likewise.
* rust/compile/derive_partial_ord1.rs: Likewise.
* rust/compile/expand_macro_qual_path_in_type.rs: Likewise.
* rust/compile/expected_type_args2.rs: Likewise.
* rust/compile/expected_type_args3.rs: Likewise.
* rust/compile/extern_generics.rs: Likewise.
* rust/compile/for-loop1.rs: Likewise.
* rust/compile/for-loop2.rs: Likewise.
* rust/compile/format_args_basic_expansion.rs: Likewise.
* rust/compile/format_args_concat.rs: Likewise.
* rust/compile/format_args_extra_comma.rs: Likewise.
* rust/compile/generics1.rs: Likewise.
* rust/compile/generics11.rs: Likewise.
* rust/compile/generics12.rs: Likewise.
* rust/compile/generics2.rs: Likewise.
* rust/compile/generics3.rs: Likewise.
* rust/compile/generics4.rs: Likewise.
* rust/compile/generics6.rs: Likewise.
* rust/compile/generics7.rs: Likewise.
* rust/compile/generics8.rs: Likewise.
* rust/compile/if_let_expr.rs: Likewise.
* rust/compile/impl_fnptr.rs: Likewise.
* rust/compile/impl_trait_diag.rs: Likewise.
* rust/compile/impl_trait_generic_arg.rs: Likewise.
* rust/compile/issue-1005.rs: Likewise.
* rust/compile/issue-1019.rs: Likewise.
* rust/compile/issue-1031.rs: Likewise.
* rust/compile/issue-1034.rs: Likewise.
* rust/compile/issue-1128.rs: Likewise.
* rust/compile/issue-1129-2.rs: Likewise.
* rust/compile/issue-1130.rs: Likewise.
* rust/compile/issue-1131.rs: Likewise.
* rust/compile/issue-1165.rs: Likewise.
* rust/compile/issue-1173.rs: Likewise.
* rust/compile/issue-1235.rs: Likewise.
* rust/compile/issue-1237.rs: Likewise.
* rust/compile/issue-1289.rs: Likewise.
* rust/compile/issue-1383.rs: Likewise.
* rust/compile/issue-1447.rs: Likewise.
* rust/compile/issue-1483.rs: Likewise.
* rust/compile/issue-1485.rs: Likewise.
* rust/compile/issue-1487.rs: Likewise.
* rust/compile/issue-1589.rs: Likewise.
* rust/compile/issue-1725-1.rs: Likewise.
* rust/compile/issue-1725-2.rs: Likewise.
* rust/compile/issue-1786.rs: Likewise.
* rust/compile/issue-1893.rs: Likewise.
* rust/compile/issue-1901.rs: Likewise.
* rust/compile/issue-1930.rs: Likewise.
* rust/compile/issue-1981.rs: Likewise.
* rust/compile/issue-2015.rs: Likewise.
* rust/compile/issue-2019-1.rs: Likewise.
* rust/compile/issue-2019-2.rs: Likewise.
* rust/compile/issue-2019-3.rs: Likewise.
* rust/compile/issue-2036.rs: Likewise.
* rust/compile/issue-2037.rs: Likewise.
* rust/compile/issue-2070.rs: Likewise.
* rust/compile/issue-2105.rs: Likewise.
* rust/compile/issue-2106.rs: Likewise.
* rust/compile/issue-2135.rs: Likewise.
* rust/compile/issue-2136-1.rs: Likewise.
* rust/compile/issue-2136-2.rs: Likewise.
* rust/compile/issue-2139.rs: Likewise.
* rust/compile/issue-2142.rs: Likewise.
* rust/compile/issue-2165.rs: Likewise.
* rust/compile/issue-2166.rs: Likewise.
* rust/compile/issue-2190-1.rs: Likewise.
* rust/compile/issue-2190-2.rs: Likewise.
* rust/compile/issue-2195.rs: Likewise.
* rust/compile/issue-2238.rs: Likewise.
* rust/compile/issue-2304.rs: Likewise.
* rust/compile/issue-2323.rs: Likewise.
* rust/compile/issue-2330.rs: Likewise.
* rust/compile/issue-2369.rs: Likewise.
* rust/compile/issue-2375.rs: Likewise.
* rust/compile/issue-2478.rs: Likewise.
* rust/compile/issue-2499.rs: Likewise.
* rust/compile/issue-2723-1.rs: Likewise.
* rust/compile/issue-2723-2.rs: Likewise.
* rust/compile/issue-2725.rs: Likewise.
* rust/compile/issue-2747.rs: Likewise.
* rust/compile/issue-2772-1.rs: Likewise.
* rust/compile/issue-2772-2.rs: Likewise.
* rust/compile/issue-2775.rs: Likewise.
* rust/compile/issue-2782.rs: Likewise.
* rust/compile/issue-2907.rs: Likewise.
* rust/compile/issue-2951.rs: Likewise.
* rust/compile/issue-2953-1.rs: Likewise.
* rust/compile/issue-2953-2.rs: Likewise.
* rust/compile/issue-2954.rs: Likewise.
* rust/compile/issue-2987.rs: Likewise.
* rust/compile/issue-3009.rs: Likewise.
* rust/compile/issue-3022.rs: Likewise.
* rust/compile/issue-3030.rs: Likewise.
* rust/compile/issue-3032-1.rs: Likewise.
* rust/compile/issue-3032-2.rs: Likewise.
* rust/compile/issue-3033.rs: Likewise.
* rust/compile/issue-3035.rs: Likewise.
* rust/compile/issue-3036.rs: Likewise.
* rust/compile/issue-3045-1.rs: Likewise.
* rust/compile/issue-3045-2.rs: Likewise.
* rust/compile/issue-3144.rs: Likewise.
* rust/compile/issue-3242.rs: Likewise.
* rust/compile/issue-3304.rs: Likewise.
* rust/compile/issue-3382.rs: Likewise.
* rust/compile/issue-3402-1.rs: Likewise.
* rust/compile/issue-3402-2.rs: Likewise.
* rust/compile/issue-3403.rs: Likewise.
* rust/compile/issue-3454.rs: Likewise.
* rust/compile/issue-3551.rs: Likewise.
* rust/compile/issue-3554-2.rs: Likewise.
* rust/compile/issue-3599.rs: Likewise.
* rust/compile/issue-3642.rs: Likewise.
* rust/compile/issue-3711.rs: Likewise.
* rust/compile/issue-3836.rs: Likewise.
* rust/compile/issue-3898.rs: Likewise.
* rust/compile/issue-3915.rs: Likewise.
* rust/compile/issue-3916.rs: Likewise.
* rust/compile/issue-3969.rs: Likewise.
* rust/compile/issue-402.rs: Likewise.
* rust/compile/issue-4090-1.rs: Likewise.
* rust/compile/issue-4090-2.rs: Likewise.
* rust/compile/issue-850.rs: Likewise.
* rust/compile/issue-855.rs: Likewise.
* rust/compile/issue-925.rs: Likewise.
* rust/compile/iterators1.rs: Likewise.
* rust/compile/macros/builtin/option_env1.rs: Likewise.
* rust/compile/macros/builtin/option_env2.rs: Likewise.
* rust/compile/macros/builtin/option_env3.rs: Likewise.
* rust/compile/macros/mbe/macro-issue1400.rs: Likewise.
* rust/compile/macros/mbe/macro-issue3708.rs: Likewise.
* rust/compile/macros/mbe/macro-issue3709-2.rs: Likewise.
* rust/compile/macros/mbe/macro20.rs: Likewise.
* rust/compile/macros/mbe/macro23.rs: Likewise.
* rust/compile/macros/mbe/macro40.rs: Likewise.
* rust/compile/macros/mbe/macro49.rs: Likewise.
* rust/compile/macros/mbe/macro54.rs: Likewise.
* rust/compile/multiple_bindings1.rs: Likewise.
* rust/compile/name_resolution2.rs: Likewise.
* rust/compile/name_resolution4.rs: Likewise.
* rust/compile/nested_generic.rs: Likewise.
* rust/compile/parse_associated_type_as_generic_arg.rs: Likewise.
* rust/compile/parse_associated_type_as_generic_arg2.rs: Likewise.
* rust/compile/parse_associated_type_as_generic_arg3.rs: Likewise.
* rust/compile/parse_closure_bind.rs: Likewise.
* rust/compile/parse_complex_generic_application.rs: Likewise.
* rust/compile/parse_complex_generic_application2.rs: Likewise.
* rust/compile/path_as_generic_arg.rs: Likewise.
* rust/compile/privacy4.rs: Likewise.
* rust/compile/privacy6.rs: Likewise.
* rust/compile/silly-order-bug.rs: Likewise.
* rust/compile/sizeof-stray-infer-var-bug.rs: Likewise.
* rust/compile/stmt_with_block_dot.rs: Likewise.
* rust/compile/structural-eq-peq.rs: Likewise.
* rust/compile/torture/associated_types1.rs: Likewise.
* rust/compile/torture/forward_decl_5.rs: Likewise.
* rust/compile/torture/generics1.rs: Likewise.
* rust/compile/torture/generics10.rs: Likewise.
* rust/compile/torture/generics11.rs: Likewise.
* rust/compile/torture/generics12.rs: Likewise.
* rust/compile/torture/generics13.rs: Likewise.
* rust/compile/torture/generics14.rs: Likewise.
* rust/compile/torture/generics15.rs: Likewise.
* rust/compile/torture/generics16.rs: Likewise.
* rust/compile/torture/generics17.rs: Likewise.
* rust/compile/torture/generics18.rs: Likewise.
* rust/compile/torture/generics19.rs: Likewise.
* rust/compile/torture/generics2.rs: Likewise.
* rust/compile/torture/generics20.rs: Likewise.
* rust/compile/torture/generics21.rs: Likewise.
* rust/compile/torture/generics22.rs: Likewise.
* rust/compile/torture/generics23.rs: Likewise.
* rust/compile/torture/generics24.rs: Likewise.
* rust/compile/torture/generics25.rs: Likewise.
* rust/compile/torture/generics26.rs: Likewise.
* rust/compile/torture/generics27.rs: Likewise.
* rust/compile/torture/generics28.rs: Likewise.
* rust/compile/torture/generics29.rs: Likewise.
* rust/compile/torture/generics3.rs: Likewise.
* rust/compile/torture/generics30.rs: Likewise.
* rust/compile/torture/generics31.rs: Likewise.
* rust/compile/torture/generics32.rs: Likewise.
* rust/compile/torture/generics4.rs: Likewise.
* rust/compile/torture/generics5.rs: Likewise.
* rust/compile/torture/generics6.rs: Likewise.
* rust/compile/torture/generics7.rs: Likewise.
* rust/compile/torture/generics8.rs: Likewise.
* rust/compile/torture/generics9.rs: Likewise.
* rust/compile/torture/intrinsics-2.rs: Likewise.
* rust/compile/torture/intrinsics-4.rs: Likewise.
* rust/compile/torture/intrinsics-5.rs: Likewise.
* rust/compile/torture/intrinsics-6.rs: Likewise.
* rust/compile/torture/intrinsics-7.rs: Likewise.
* rust/compile/torture/intrinsics-8.rs: Likewise.
* rust/compile/torture/issue-1024.rs: Likewise.
* rust/compile/torture/issue-1075.rs: Likewise.
* rust/compile/torture/issue-1432.rs: Likewise.
* rust/compile/torture/issue-1555.rs: Likewise.
* rust/compile/torture/issue-368.rs: Likewise.
* rust/compile/torture/issue-808.rs: Likewise.
* rust/compile/torture/issue-862.rs: Likewise.
* rust/compile/torture/issue-893-2.rs: Likewise.
* rust/compile/torture/issue-893.rs: Likewise.
* rust/compile/torture/must_use2.rs: Likewise.
* rust/compile/torture/nested_fn2.rs: Likewise.
* rust/compile/torture/phantom_data.rs: Likewise.
* rust/compile/torture/range-lang-item1.rs: Likewise.
* rust/compile/torture/traits1.rs: Likewise.
* rust/compile/torture/traits10.rs: Likewise.
* rust/compile/torture/traits11.rs: Likewise.
* rust/compile/torture/traits12.rs: Likewise.
* rust/compile/torture/traits13.rs: Likewise.
* rust/compile/torture/traits14.rs: Likewise.
* rust/compile/torture/traits15.rs: Likewise.
* rust/compile/torture/traits16.rs: Likewise.
* rust/compile/torture/traits17.rs: Likewise.
* rust/compile/torture/traits18.rs: Likewise.
* rust/compile/torture/traits19.rs: Likewise.
* rust/compile/torture/traits2.rs: Likewise.
* rust/compile/torture/traits3.rs: Likewise.
* rust/compile/torture/traits4.rs: Likewise.
* rust/compile/torture/traits5.rs: Likewise.
* rust/compile/torture/traits6.rs: Likewise.
* rust/compile/torture/traits7.rs: Likewise.
* rust/compile/torture/traits8.rs: Likewise.
* rust/compile/torture/traits9.rs: Likewise.
* rust/compile/torture/transmute-size-check-1.rs: Likewise.
* rust/compile/torture/transmute1.rs: Likewise.
* rust/compile/torture/uninit-intrinsic-1.rs: Likewise.
* rust/compile/torture/utf8_identifiers.rs: Likewise.
* rust/compile/traits1.rs: Likewise.
* rust/compile/traits10.rs: Likewise.
* rust/compile/traits11.rs: Likewise.
* rust/compile/traits12.rs: Likewise.
* rust/compile/traits2.rs: Likewise.
* rust/compile/traits3.rs: Likewise.
* rust/compile/traits4.rs: Likewise.
* rust/compile/traits5.rs: Likewise.
* rust/compile/traits6.rs: Likewise.
* rust/compile/traits7.rs: Likewise.
* rust/compile/traits8.rs: Likewise.
* rust/compile/traits9.rs: Likewise.
* rust/compile/try-expr1.rs: Likewise.
* rust/compile/try-trait.rs: Likewise.
* rust/compile/try_block1.rs: Likewise.
* rust/compile/type-bindings1.rs: Likewise.
* rust/compile/unconstrained_type_param.rs: Likewise.
* rust/compile/unify-errors1.rs: Likewise.
* rust/compile/unsafe10.rs: Likewise.
* rust/compile/v0-mangle1.rs: Likewise.
* rust/compile/v0-mangle2.rs: Likewise.
* rust/compile/while_let1.rs: Likewise.
* rust/execute/black_box.rs: Likewise.
* rust/execute/torture/atomic_load.rs: Likewise.
* rust/execute/torture/atomic_store.rs: Likewise.
* rust/execute/torture/basic_partial_ord1.rs: Likewise.
* rust/execute/torture/basic_partial_ord2.rs: Likewise.
* rust/execute/torture/builtin_macro_option_env.rs: Likewise.
* rust/execute/torture/closure1.rs: Likewise.
* rust/execute/torture/closure2.rs: Likewise.
* rust/execute/torture/closure3.rs: Likewise.
* rust/execute/torture/closure4.rs: Likewise.
* rust/execute/torture/coercion1.rs: Likewise.
* rust/execute/torture/coercion2.rs: Likewise.
* rust/execute/torture/coercion3.rs: Likewise.
* rust/execute/torture/const-generics-1.rs: Likewise.
* rust/execute/torture/const-generics-2.rs: Likewise.
* rust/execute/torture/const-generics-3.rs: Likewise.
* rust/execute/torture/const-generics-4.rs: Likewise.
* rust/execute/torture/const-generics-5.rs: Likewise.
* rust/execute/torture/const-generics-6.rs: Likewise.
* rust/execute/torture/const-generics-7.rs: Likewise.
* rust/execute/torture/copy_nonoverlapping1.rs: Likewise.
* rust/execute/torture/derive-default1.rs: Likewise.
* rust/execute/torture/derive-partialeq1.rs: Likewise.
* rust/execute/torture/derive-partialeq2.rs: Likewise.
* rust/execute/torture/derive_clone_enum1.rs: Likewise.
* rust/execute/torture/derive_macro1.rs: Likewise.
* rust/execute/torture/derive_macro3.rs: Likewise.
* rust/execute/torture/derive_macro4.rs: Likewise.
* rust/execute/torture/enum_intrinsics1.rs: Likewise.
* rust/execute/torture/enum_intrinsics2.rs: Likewise.
* rust/execute/torture/for-loop1.rs: Likewise.
* rust/execute/torture/for-loop2.rs: Likewise.
* rust/execute/torture/gat1.rs: Likewise.
* rust/execute/torture/impl_desugar-2.rs: Likewise.
* rust/execute/torture/impl_desugar.rs: Likewise.
* rust/execute/torture/impl_rpit1.rs: Likewise.
* rust/execute/torture/impl_rpit2.rs: Likewise.
* rust/execute/torture/impl_rpit3.rs: Likewise.
* rust/execute/torture/impl_trait1.rs: Likewise.
* rust/execute/torture/impl_trait2.rs: Likewise.
* rust/execute/torture/impl_trait3.rs: Likewise.
* rust/execute/torture/impl_trait4.rs: Likewise.
* rust/execute/torture/index1.rs: Likewise.
* rust/execute/torture/issue-1120.rs: Likewise.
* rust/execute/torture/issue-1133.rs: Likewise.
* rust/execute/torture/issue-1198.rs: Likewise.
* rust/execute/torture/issue-1232.rs: Likewise.
* rust/execute/torture/issue-1249.rs: Likewise.
* rust/execute/torture/issue-1436.rs: Likewise.
* rust/execute/torture/issue-1481.rs: Likewise.
* rust/execute/torture/issue-1482.rs: Likewise.
* rust/execute/torture/issue-1496.rs: Likewise.
* rust/execute/torture/issue-1720-2.rs: Likewise.
* rust/execute/torture/issue-1720.rs: Likewise.
* rust/execute/torture/issue-2005.rs: Likewise.
* rust/execute/torture/issue-2052.rs: Likewise.
* rust/execute/torture/issue-2179.rs: Likewise.
* rust/execute/torture/issue-2180.rs: Likewise.
* rust/execute/torture/issue-2236.rs: Likewise.
* rust/execute/torture/issue-2583.rs: Likewise.
* rust/execute/torture/issue-3126.rs: Likewise.
* rust/execute/torture/issue-3381.rs: Likewise.
* rust/execute/torture/issue-3502.rs: Likewise.
* rust/execute/torture/issue-3836.rs: Likewise.
* rust/execute/torture/issue-647.rs: Likewise.
* rust/execute/torture/issue-845.rs: Likewise.
* rust/execute/torture/issue-851.rs: Likewise.
* rust/execute/torture/issue-858.rs: Likewise.
* rust/execute/torture/iter1.rs: Likewise.
* rust/execute/torture/macros23.rs: Likewise.
* rust/execute/torture/macros28.rs: Likewise.
* rust/execute/torture/method2.rs: Likewise.
* rust/execute/torture/method3.rs: Likewise.
* rust/execute/torture/method4.rs: Likewise.
* rust/execute/torture/min_specialization2.rs: Likewise.
* rust/execute/torture/min_specialization3.rs: Likewise.
* rust/execute/torture/operator_overload_1.rs: Likewise.
* rust/execute/torture/operator_overload_10.rs: Likewise.
* rust/execute/torture/operator_overload_11.rs: Likewise.
* rust/execute/torture/operator_overload_12.rs: Likewise.
* rust/execute/torture/operator_overload_2.rs: Likewise.
* rust/execute/torture/operator_overload_3.rs: Likewise.
* rust/execute/torture/operator_overload_4.rs: Likewise.
* rust/execute/torture/operator_overload_5.rs: Likewise.
* rust/execute/torture/operator_overload_6.rs: Likewise.
* rust/execute/torture/operator_overload_7.rs: Likewise.
* rust/execute/torture/operator_overload_8.rs: Likewise.
* rust/execute/torture/operator_overload_9.rs: Likewise.
* rust/execute/torture/partial-eq-1.rs: Likewise.
* rust/execute/torture/partial-eq-2.rs: Likewise.
* rust/execute/torture/partial-eq-3.rs: Likewise.
* rust/execute/torture/partial-eq-4.rs: Likewise.
* rust/execute/torture/partial-ord-1.rs: Likewise.
* rust/execute/torture/partial-ord-2.rs: Likewise.
* rust/execute/torture/partial-ord-3.rs: Likewise.
* rust/execute/torture/partial-ord-4.rs: Likewise.
* rust/execute/torture/partial-ord-5.rs: Likewise.
* rust/execute/torture/partial-ord-6.rs: Likewise.
* rust/execute/torture/prefetch_data.rs: Likewise.
* rust/execute/torture/ref-pattern2.rs: Likewise.
* rust/execute/torture/sip-hasher.rs: Likewise.
* rust/execute/torture/slice-magic.rs: Likewise.
* rust/execute/torture/slice-magic2.rs: Likewise.
* rust/execute/torture/slice1.rs: Likewise.
* rust/execute/torture/str-layout1.rs: Likewise.
* rust/execute/torture/trait1.rs: Likewise.
* rust/execute/torture/trait10.rs: Likewise.
* rust/execute/torture/trait11.rs: Likewise.
* rust/execute/torture/trait12.rs: Likewise.
* rust/execute/torture/trait13.rs: Likewise.
* rust/execute/torture/trait14.rs: Likewise.
* rust/execute/torture/trait15.rs: Likewise.
* rust/execute/torture/trait2.rs: Likewise.
* rust/execute/torture/trait3.rs: Likewise.
* rust/execute/torture/trait4.rs: Likewise.
* rust/execute/torture/trait5.rs: Likewise.
* rust/execute/torture/trait6.rs: Likewise.
* rust/execute/torture/trait7.rs: Likewise.
* rust/execute/torture/trait8.rs: Likewise.
* rust/execute/torture/trait9.rs: Likewise.
* rust/execute/torture/transmute1.rs: Likewise.
* rust/execute/torture/wrapping_op1.rs: Likewise.
* rust/execute/torture/wrapping_op2.rs: Likewise.
* rust/link/generic_function_1.rs: Likewise.
* rust/link/trait_import_1.rs: Likewise.
Signed-off-by: Raiki Tamura <tamaron1203@gmail.com>
|
|
gcc/rust/ChangeLog:
* parse/rust-parse-impl.h (Parser::parse_function): Return a nullptr on
error instead of a valid function.
(Parser::parse_let_stmt): Remove non leaf error.
(Parser::parse_if_expr): Likewise.
(Parser::parse_loop_expr): Likewise.
(Parser::parse_expr): Return error on null denotation error.
gcc/testsuite/ChangeLog:
* rust/compile/braced_macro_arm.rs: Remove parent errors.
* rust/compile/issue-407-2.rs: Likewise.
* rust/compile/issue-407.rs: Likewise.
* rust/compile/issue-4162.rs: Likewise.
* rust/compile/issue-867.rs: Likewise.
* rust/compile/raw_ref_op_invalid.rs: Likewise.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
|
|
gcc/rust/ChangeLog:
* parse/rust-parse-impl.h (Parser::parse_delim_token_tree):
Remove error message.
(Parser::parse_token_tree): Split error message.
gcc/testsuite/ChangeLog:
* rust/compile/macros/mbe/macro-issue3608.rs: Remove error.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
|
|
gcc/rust/ChangeLog:
* parse/rust-parse-impl.h (Parser::parse_items): Remove item parsing
error.
gcc/testsuite/ChangeLog:
* rust/compile/braced_macro_arm.rs: Remove superfluous error message
matching.
* rust/compile/decl_macro6.rs: Likewise.
* rust/compile/decl_macro7.rs: Likewise.
* rust/compile/extern_type_item_missing_semi.rs: Likewise.
* rust/compile/issue-2187.rs: Likewise.
* rust/compile/issue-407-2.rs: Likewise.
* rust/compile/issue-407.rs: Likewise.
* rust/compile/issue-4162.rs: Likewise.
* rust/compile/issue-867.rs: Likewise.
* rust/compile/macros/mbe/macro-issue1053-2.rs: Likewise.
* rust/compile/macros/mbe/macro-issue1395-2.rs: Likewise.
* rust/compile/macros/mbe/macro-issue3608.rs: Likewise.
* rust/compile/macros/mbe/macro27.rs: Likewise.
* rust/compile/macros/mbe/macro28.rs: Likewise.
* rust/compile/macros/mbe/macro29.rs: Likewise.
* rust/compile/macros/mbe/macro30.rs: Likewise.
* rust/compile/macros/mbe/macro31.rs: Likewise.
* rust/compile/macros/mbe/macro33.rs: Likewise.
* rust/compile/macros/mbe/macro35.rs: Likewise.
* rust/compile/macros/mbe/macro37.rs: Likewise.
* rust/compile/macros/mbe/macro38.rs: Likewise.
* rust/compile/macros/mbe/macro39.rs: Likewise.
* rust/compile/macros/mbe/macro48.rs: Likewise.
* rust/compile/parse_invalid_specialization.rs: Likewise.
* rust/compile/parse_simple_path_fail_1.rs: Likewise.
* rust/compile/parse_simple_path_fail_2.rs: Likewise.
* rust/compile/raw-string-loc.rs: Likewise.
* rust/compile/raw-byte-string-loc.rs: Likewise.
* rust/compile/self_const_ptr.rs: Likewise.
* rust/compile/self_mut_ptr.rs: Likewise.
* rust/compile/static_var1.rs: Likewise.
* rust/compile/self_ptr.rs: Likewise.
* rust/compile/torture/identifier-missing-impl-1.rs: Likewise.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
|
|
gcc/testsuite/ChangeLog:
* rust/compile/macros/mbe/macro-issue3608.rs: New Test. The test skips an issue at line 11
Signed-off-by: LĂșcio Boari Fleury <lucboari@gmail.com>
|
|
This patch is the initial part in supporting generic associated types. In rust we have
trait item types that get implemented for example:
trait Foo<T> {
type Bar
}
impl<T> Foo for T {
type Bar = T
}
The trait position uses a Ty::Placeholder which is just a thing that gets set for
lazy evaluation to the impl type alias which is actually a Ty::Projection see:
0798add3d3c1bf4b20ecc1b4fa1047ba4ba19759
For more info the projection type needs to hold onto generics in order to properly
support generic types this GAT's support extends this all the way to the placeholder
which still needs to be done.
Fixes Rust-GCC#4276
gcc/rust/ChangeLog:
* ast/rust-ast.cc (TraitItemType::as_string): add generic params
* ast/rust-ast.h: remove old comment
* ast/rust-item.h: add generic params to associated type
* ast/rust-type.h: remove old comment
* hir/rust-ast-lower-implitem.cc (ASTLowerTraitItem::visit): hir lowering for gat's
* hir/tree/rust-hir-item.cc (TraitItemType::TraitItemType): gat's on TraitItemType
(TraitItemType::operator=): preserve generic params
* hir/tree/rust-hir-item.h: likewise
* hir/tree/rust-hir.cc (TraitItemType::as_string): likewise
* parse/rust-parse-impl.h (Parser::parse_trait_type): hit the < and parse params
* typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItemWithTrait::visit): typecheck
* typecheck/rust-tyty.cc (BaseType::has_substitutions_defined): dont destructure
gcc/testsuite/ChangeLog:
* rust/compile/gat1.rs: New test.
* rust/execute/torture/gat1.rs: New test.
Signed-off-by: Philip Herron <herron.philip@googlemail.com>
|
|
Derive may only be applied to structs, enums and unions.
gcc/rust/ChangeLog:
* expand/rust-derive.cc (DeriveVisitor::derive):
Add check and error.
gcc/testsuite/ChangeLog:
* rust/compile/issue-3971.rs: New test.
Signed-off-by: Lucas Ly Ba <lucas.ly-ba@outlook.com>
|
|
gcc/rust/ChangeLog:
* hir/rust-ast-lower-base.cc (ASTLoweringBase::handle_doc_item_attribute): Make error.
gcc/testsuite/ChangeLog:
* rust/compile/issue-4226.rs: New test.
Signed-off-by: Lucas Ly Ba <lucas.ly-ba@outlook.com>
|
|
gcc/rust/ChangeLog:
* backend/rust-compile-expr.cc (compile_float_literal): Add is_negative
check to compile negative float literals properly.
* backend/rust-compile-pattern.cc (CompilePatternCheckExpr::visit(RangePattern)):
Minor optimization to E0579 checks to reduce memory copy.
Signed-off-by: Yap Zhi Heng <yapzhhg@gmail.com>
|
|
gcc/rust/ChangeLog:
* ast/rust-ast.cc (Attribute::check_cfg_predicate): Make error when attribute has no input.
gcc/testsuite/ChangeLog:
* rust/compile/issue-4262.rs: New test.
Signed-off-by: Lucas Ly Ba <lucas.ly-ba@outlook.com>
|
|
Fixes previously added tests.
Fixes Rust-GCC#4140
gcc/testsuite/ChangeLog:
* rust/compile/issue-4140-1.rs: Fixes test.
* rust/compile/issue-4140-2.rs: Likewise.
Signed-off-by: lenny.chiadmi-delage <lenny.chiadmi-delage@epita.fr>
|
|
Adds tests for testsuite.
Fixes Rust-GCC#4140
gcc/testsuite/ChangeLog:
* rust/compile/issue-4140-1.rs: New test.
* rust/compile/issue-4140-2.rs: Likewise.
Signed-off-by: lenny.chiadmi-delage <lenny.chiadmi-delage@epita.fr>
|
|
When we typecheck a trait impl block item, at the end we validate it
against the trait definition by doing a final unify but if the type check
fails on the the impl item it returns NULL here. The other issue was that
if we fail to resolve the specified lifetime we return error early, this
changes the typechecking to default to an anon lifetime so we can continue
typechecking.
Fixes Rust-GCC#4188
gcc/rust/ChangeLog:
* typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItemWithTrait::visit): null guard
* typecheck/rust-hir-type-check.cc (TraitItemReference::get_type_from_fn): default to anon
gcc/testsuite/ChangeLog:
* rust/compile/issue-4188.rs: New test.
Signed-off-by: Philip Herron <herron.philip@googlemail.com>
|
|
Impl items can have constants defined which could in turn be generic this was
not supported by gccrs and missed. So for example:
impl<T> Foo<T> {
const MAGIC: usize = mem::size_of::<T>();
}
This is a normal type parameter but in order to setup the generics we need to
create a synthetic TyTy::FnType so we can bind the parent's impl generics to
the type system and it just works like any other generic item at that point.
Then for example we have:
impl<const N: usize> Foo<N> {
const VALUE: usize = N;
}
Again we consistently bind the this const generic parameter the same way so
the lazy evaluation of the generic can take place.
gcc/rust/ChangeLog:
* backend/rust-compile-item.cc (CompileItem::visit): support the synthetic function consts
* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::Resolve): likewise
* typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItem::visit): create the synth
* typecheck/rust-tyty.h: new flag for synthetic constant
gcc/testsuite/ChangeLog:
* rust/execute/torture/const-generics-5.rs: New test.
* rust/execute/torture/const-generics-6.rs: New test.
* rust/execute/torture/const-generics-7.rs: New test.
Signed-off-by: Philip Herron <herron.philip@googlemail.com>
|
|
When we were processing generic const param types on arrays the size type
was overriding the const param decl because of a hirid reference mismatch
Fixes Rust-GCC#3879
gcc/rust/ChangeLog:
* typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): fix mappings
gcc/testsuite/ChangeLog:
* rust/compile/const_generics_18.rs: New test.
* rust/compile/const_generics_19.rs: New test.
* rust/execute/torture/const-generics-3.rs: New test.
* rust/execute/torture/const-generics-4.rs: New test.
Signed-off-by: Philip Herron <herron.philip@googlemail.com>
|
|
gcc/rust/ChangeLog:
* ast/rust-ast.cc (Attribute::is_derive):
Change is_derive method with its valid path.
* util/rust-attribute-values.h:
Delete redudant derive attribute.
* util/rust-attributes.cc (AttributeChecker::check_inner_attribute):
Helper method for check_inner_attributes
(AttributeChecker::check_inner_attributes):
Implement method for errors check.
* util/rust-attributes.h:
Add methods above in header.
gcc/testsuite/ChangeLog:
* rust/compile/issue-4212.rs:
* rust/compile/issue-4219.rs: New test.
Signed-off-by: Lucas Ly Ba <lucas.ly-ba@outlook.com>
|
|
Adds a proper check for missing patterns in while expressions.
Fixes Rust-GCC#4162
gcc/rust/ChangeLog:
* parse/rust-parse-impl.h(Parser<ManagedTokenSource>::parse_while_let_loop_expr):
Add check for missing pattern.
gcc/testsuite/ChangeLog:
* rust/compile/issue-4162.rs: New test.
Signed-off-by: Lucas Ly Ba <lucas.ly-ba@outlook.com>
|
|
gcc/rust/ChangeLog:
* ast/rust-ast.cc (MetaItemLitExpr::check_cfg_predicate): Make error.
gcc/testsuite/ChangeLog:
* rust/compile/issue-4222.rs: New test.
Signed-off-by: Lucas Ly Ba <lucas.ly-ba@outlook.com>
|
|
gcc/rust/ChangeLog:
* ast/rust-ast.cc (Attribute::check_cfg_predicate): add cfg path in condition
gcc/testsuite/ChangeLog:
* rust/compile/issue-4261.rs: New test.
Signed-off-by: Lucas Ly Ba <lucas.ly-ba@outlook.com>
|
|
gcc/rust/ChangeLog:
* ast/rust-ast.cc (Attribute::check_cfg_predicate):
Make error.
gcc/testsuite/ChangeLog:
* rust/compile/issue-4267.rs: New test.
Signed-off-by: Lucas Ly Ba <lucas.ly-ba@outlook.com>
|
|
Const generics bind values which can be accessed like a normal path but the difference
is that they can be true expression values not just type paths. This patch adds support
to resolving a method inference which passes a generic value into the method and fixes
some missed bugs along the way. The tricky part was that there is a case where in the
return position of a method returning a const param type vs the type of the method
there is a special case in the unify rules so that we unify the specified type of the
const param type not the const param itself.
gcc/rust/ChangeLog:
* backend/rust-compile-resolve-path.cc: handle const param values
* typecheck/rust-hir-type-check-item.cc: generate const infer vars when required
* typecheck/rust-type-util.cc (unify_site_and): handle a null param cleanup
* typecheck/rust-tyty-util.cc (TyVar::get_implicit_const_infer_var): helper interface
* typecheck/rust-tyty-util.h: update header prototypes
* typecheck/rust-tyty.cc (BaseType::is_concrete): correctly handle const types
(ConstParamType::get_name): emit the specified type
(ConstParamType::is_equal): fix recursion loop
* typecheck/rust-unify.cc (UnifyRules::go): const infer vars need cleanup too
* typecheck/rust-unify.h: support base generics
gcc/testsuite/ChangeLog:
* rust/execute/torture/const-generics-2.rs: New test.
Signed-off-by: Philip Herron <herron.philip@googlemail.com>
|
|
Checks whether upper bound of range is not lower or equal to the lower bound.
gcc/rust/ChangeLog:
* backend/rust-compile-pattern.cc(compilePatternCheckExpr::visit(RangePattern)):
Add E0579 check to ensure that lower bound is always below upper bound.
Signed-off-by: Yap Zhi Heng <yapzhhg@gmail.com>
|
|
GIMPLE output for compile/issue-4242.rs:
...
x = 1;
RUSTTMP.2 = x;
_1 = RUSTTMP.2 >= -55;
_2 = RUSTTMP.2 < 0;
_3 = _1 & _2;
if (_3 != 0) goto <D.112>; else goto <D.113>;
<D.112>:
{
RUSTTMP.1 = 2;
goto <D.105>;
}
<D.113>:
_4 = RUSTTMP.2 >= -99;
_5 = RUSTTMP.2 < -55;
_6 = _4 & _5;
if (_6 != 0) goto <D.114>; else goto <D.115>;
<D.114>:
{
RUSTTMP.1 = 3;
goto <D.105>;
}
...
gcc/rust/ChangeLog:
* backend/rust-compile-pattern.cc (compile_range_pattern_bound): Set litexpr
to negative if has_minus is present in the RangePatternBoundLiteral param.
Signed-off-by: Yap Zhi Heng <yapzhhg@gmail.com>
|
|
When a const generic with a default value is not trailing, emit an
error.
gcc/rust/ChangeLog:
* parse/rust-parse-impl.h (Parser::parse_generic_params): Emit
an error when const generics with a default value is not
trailing.
gcc/testsuite/ChangeLog:
* rust/compile/const_generics_17.rs: New test.
* rust/compile/generics14.rs: New test.
Signed-off-by: vishruth-thimmaiah <vishruththimmaiah@gmail.com>
|
|
GIMPLE output for literalpattern_neg.rs test case:
...
x = -55;
RUSTTMP.2 = x;
if (RUSTTMP.2 == 55) goto <D.113>; else goto <D.114>;
<D.113>:
{
RUSTTMP.1 = 1;
goto <D.107>;
}
<D.114>:
if (RUSTTMP.2 == -55) goto <D.115>; else goto <D.116>;
<D.115>:
{
RUSTTMP.1 = 0;
goto <D.107>;
}
<D.116>:
if (1 != 0) goto <D.117>; else goto <D.118>;
<D.117>:
{
RUSTTMP.1 = 1;
goto <D.107>;
}
...
gcc/rust/ChangeLog:
* parse/rust-parse-impl.h (parse_literal_or_range_pattern): Parse minus sign
properly for LiteralPattern.
* ast/rust-pattern.h (LiteralPattern): Add has_minus boolean for LiteralPattern.
* hir/tree/rust-hir-pattern.h (LiteralPattern): Ditto.
* ast/rust-pattern.cc (LiteralPattern::as_string): Update to include minus sign
if present.
* hir/tree/rust-hir.cc (LiteralPattern::as_string): Ditto.
* hir/rust-ast-lower-pattern.cc (visit(LiteralPattern)): Pass has_minus boolean
from AST to HIR.
* backend/rust-compile-pattern.cc (CompilePatternCheckExpr::visit(LiteralPattern)):
Compile litexpr as negative if minus sign is present.
Signed-off-by: Yap Zhi Heng <yapzhhg@gmail.com>
|
|
An imbricated exported macro leads to a segfault.
gcc/rust/ChangeLog:
* metadata/rust-export-metadata.cc (ExportContext::emit_macro):
Change method argument NodeId to AST::MacroRulesDefinition.
* metadata/rust-export-metadata.h:
Likewise.
* util/rust-hir-map.cc (Mappings::insert_exported_macro):
Insert AST::MacroRulesDefinition instead of NodeId.
* util/rust-hir-map.h:
Change methods declarations of exported macros.
gcc/testsuite/ChangeLog:
* rust/compile/issue-3617.rs: New test.
Signed-off-by: Lucas Ly Ba <lucas.ly-ba@outlook.fr>
|
|
gcc/rust/ChangeLog:
* typecheck/rust-hir-type-check-pattern.cc (visit(TuplePattern)): Update HAS_REST
case to continue to attempt to resolve pattern items after emitting size error.
Signed-off-by: Yap Zhi Heng <yapzhhg@gmail.com>
|
|
When we typecheck a tuple struct pattern and the type of its path is
an enum, it may refer to the enum itself and not a variant. Emit an
E0532 error on such cases.
Fixes Rust-GCC/gccrs#3917
Fixes Rust-GCC/gccrs#3918
Fixes Rust-GCC/gccrs#3926
gcc/rust/ChangeLog:
* typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Emit
an error when the path refers to an enum itself rather than its variant.
gcc/testsuite/ChangeLog:
* rust/compile/match-tuplestructpattern-non-variant.rs: New test.
Signed-off-by: Ryo Yoshida <low.ryoshida@gmail.com>
|
|
gcc/rust/ChangeLog:
* typecheck/rust-hir-type-check-base.cc (parse_repr_options): Changed TOKEN_TREE
assert into error, update malformed repr attribute error message to be inline
with other attribute error messages.
Signed-off-by: Yap Zhi Heng <yapzhhg@gmail.com>
|
|
gcc/rust/ChangeLog:
* ast/rust-ast.cc (Attribute::is_derive):
Change string derive to its definition.
* util/rust-attribute-values.h:
Add attribute definition derive.
* util/rust-attributes.cc (AttributeChecker::visit):
Add method check_inner_attributes.
(AttributeChecker::check_inner_attributes):
Check if there is a bad inner attribute.
* util/rust-attributes.h:
Add method check_inner_attributes in .h.
gcc/testsuite/ChangeLog:
* rust/compile/issue-4212.rs: New test.
Signed-off-by: Lucas Ly Ba <lucas.ly-ba@outlook.fr>
|
|
gcc/rust/ChangeLog:
* typecheck/rust-tyty-util.cc (TyVar::TyVar): Add null check to avoid ICE.
(TyVar::get_tyty): Return nullptr when lookup fails.
(TyVar::clone): Handle null base type safely.
(TyVar::monomorphized_clone): Add fallback for error types.
gcc/testsuite/ChangeLog:
* rust/compile/issue-3556.rs: New test.
Signed-off-by: lishin <lishin1008@gmail.com>
|
|
Fixes Rust-GCC#3927
gcc/rust/ChangeLog:
* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): check
and properly emit an error when the tuple index is on a non-tuple-struct.
gcc/testsuite/ChangeLog:
* rust/compile/tuple_index_on_non_tuple.rs: New test.
Signed-off-by: Ryo Yoshida <low.ryoshida@gmail.com>
|
|
gcc/testsuite/ChangeLog:
* rust/compile/issue-4145.rs: New test.
Signed-off-by: Elle Rhumsaa <elle@weathered-steel.dev>
|
|
Doc attribute checking was not performed on traits.
gcc/rust/ChangeLog:
* util/rust-attributes.cc (check_doc_attribute): Change message.
(AttributeChecker::visit): Add doc attribute checking on traits.
gcc/testsuite/ChangeLog:
* rust/compile/attr_malformed_doc.rs: New test.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
|
|
Add location for malformed attribute errors and avoid processing of
malformed attributes.
gcc/rust/ChangeLog:
* ast/rust-ast.cc (AttrInputMetaItemContainer::separate_cfg_attrs):
Avoid malformed attributes.
* util/rust-attributes.cc (AttributeChecker::visit): Change location.
gcc/testsuite/ChangeLog:
* rust/compile/attr_malformed_path.rs: New test.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
|
|
gcc/rust/ChangeLog:
* typecheck/rust-hir-type-check-pattern.cc (visit(TupleStructPattern)):
Update error for mismatched number of fields to use rich_location.
Signed-off-by: Yap Zhi Heng <yapzhhg@gmail.com>
|
|
gcc/rust/ChangeLog:
* backend/rust-compile-pattern.cc: Add compilation support for TupleStructItemsHasRest
in CompilePatternCheckExpr(TupleStructPattern) & CompilePatternBindings(TupleStructPattern)
Signed-off-by: Yap Zhi Heng <yapzhhg@gmail.com>
|
|
Adds a test to verify extra parentheses are discarded, and the source is
compiled as expected.
Resolves: Rust-GCC/gccrs#2886
gcc/testsuite/ChangeLog:
* rust/compile/issue-4148.rs: New test.
Signed-off-by: Elle Rhumsaa <elle@weathered-steel.dev>
|
|
This adds compilation of libcore up to the AST validation phase to the
testsuite.
gcc/testsuite/ChangeLog:
* rust/core/core.exp: New test.
Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
|
|
gcc/rust/ChangeLog:
* ast/rust-pattern.h (StructPatternElements): Rename has_struct_pattern_etc
to has_rest_pattern, and has_etc to has_rest to signify presense of rest
patterns more clearly.
* ast/rust-pattern.cc (StructPatternElements::as_string): Rename variables
accordingly.
* ast/rust-ast-collector.cc: Rename variables accordingly.
* expand/rust-cfg-strip.cc: Rename variables accordingly.
* parse/rust-parse-impl.h: Rename variable accordingly.
* hir/tree/rust-hir-pattern.h (StructPatternElements): Add a boolean to track
presense of rest pattern.
* hir/rust-ast-lower-pattern.cc (visit(StructPattern)): Add support for
lowering rest pattern to HIR.
* typecheck/rust-hir-type-check-pattern.cc (visit(StructPattern)): Remove
size check when rest pattern is present.
Signed-off-by: Yap Zhi Heng <yapzhhg@gmail.com>
|
|
gcc/rust/ChangeLog:
* backend/rust-compile-extern.h: Add includes.
(CompileExternItem::visit): Use get_link_name.
(CompileExternItem::get_link_name): New static member function.
* util/rust-attribute-values.h (Attributes::LINK_NAME): New
static constexpr member variable.
* util/rust-attributes.cc (__definitions): New entry for
LINK_NAME.
* util/rust-ggc.cc: Include "rust-ast.h".
(Ident::Ident): Add overload for Rust::Identifier.
* util/rust-ggc.h (class Identifier): Forward declare.
(Ident::Ident): Add overload for Rust::Identifier.
gcc/testsuite/ChangeLog:
* rust/execute/torture/link-name.rs: New test.
Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
|
|
gcc/rust/ChangeLog:
* expand/rust-macro-expand.cc: Forward invocation tree locus to
substitution context.
* expand/rust-macro-substitute-ctx.cc: Use origin location for expanded
tokens.
* expand/rust-macro-substitute-ctx.h (class SubstituteCtx): Save
invocation location.
gcc/testsuite/ChangeLog:
* rust/compile/macros/mbe/macro58.rs: New test.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
|
|
This changes the assertion into a valid error diagnostic.
Fixes Rust-GCC#3538
gcc/rust/ChangeLog:
* backend/rust-compile-resolve-path.cc: add error diag
gcc/testsuite/ChangeLog:
* rust/compile/issue-3538.rs: New test.
Signed-off-by: Philip Herron <herron.philip@googlemail.com>
|
|
self params dont have a type unless used within impl blocks. Rustc as far as I
can tell in this senario generics a synthetic param of type Self in this senario
so that it keeps consistent error diagnostic for number of parameters but the
logic for what the parameter typpe should be seems unclear.
Fixes Rust-GCC#3592
gcc/rust/ChangeLog:
* hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): add error diagnostic
gcc/testsuite/ChangeLog:
* rust/compile/issue-3592.rs: New test.
Signed-off-by: Philip Herron <herron.philip@googlemail.com>
|
|
We need to check for errors on the number of copies expression before
trying to const fold it otherwise it will just fail in the const evaluator.
Fixes Rust-GCC#4165
gcc/rust/ChangeLog:
* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): check for error
gcc/testsuite/ChangeLog:
* rust/compile/issue-4165.rs: New test.
Signed-off-by: Philip Herron <herron.philip@googlemail.com>
|
|
This patch adds support to recursively walk fnptr types to do generic
substitutions.
Fixes Rust-GCC/gccrs#4090
gcc/rust/ChangeLog:
* typecheck/rust-substitution-mapper.cc (SubstMapperInternal::visit): handle fnptr
* typecheck/rust-tyty.cc (FnPtr::handle_substitions): new
* typecheck/rust-tyty.h: likewise
gcc/testsuite/ChangeLog:
* rust/compile/issue-4090-1.rs: New test.
* rust/compile/issue-4090-2.rs: New test.
Signed-off-by: Philip Herron <herron.philip@googlemail.com>
|
|
When we have an invalid capacity expression we can't try to then also
const fold it as GCC will assert on invalid conversions.
Fixes Rust-GCC#4168
gcc/rust/ChangeLog:
* typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): check for invalid capacity
gcc/testsuite/ChangeLog:
* rust/compile/issue-4168.rs: New test.
Signed-off-by: Philip Herron <herron.philip@googlemail.com>
|
|
This pulls over more constexpr support from C++ front-end.
Fixes Rust-GCC#4146
gcc/rust/ChangeLog:
* backend/rust-constexpr.cc (eval_constant_expression): port over missing bits
(eval_store_expression): likewise
(eval_call_expression): likewise
(eval_binary_expression): likewise
(eval_bit_field_ref): likewise
(eval_check_shift_p): likewise
(fold_pointer_plus_expression): likewise
(maybe_fold_addr_pointer_plus): likewise
(fold_expr): likewise
(union_active_member): likewise
(fold_indirect_ref_1): likewise
(rs_fold_indirect_ref): likewise
(rs_eval_indirect_ref): likewise
(eval_logical_expression): likewise
(eval_vector_conditional_expression): likewise
(eval_bare_aggregate): likewise
(cxx_eval_trinary_expression): likewise
(eval_and_check_array_index): likewise
(eval_array_reference): likewise
(eval_component_reference): likewise
(rs_bind_parameters_in_call): likewise
(eval_builtin_function_call): likewise
(constexpr_fn_retval): likewise
(verify_constant): likewise
(get_array_or_vector_nelts): likewise
(eval_conditional_expression): likewise
(eval_switch_expr): likewise
(eval_unary_expression): likewise
(cxx_eval_outermost_constant_expr): likewise
(potential_constant_expression_1): likewise
gcc/testsuite/ChangeLog:
* rust/compile/issue-2394.rs: Update test case
* rust/compile/issue-4146.rs: New test.
Signed-off-by: Philip Herron <herron.philip@googlemail.com>
|