diff --git a/gcc/rust/checks/errors/rust-feature-gate.cc b/gcc/rust/checks/errors/rust-feature-gate.cc index b2ef807371ef..2b15f1142a62 100644 --- a/gcc/rust/checks/errors/rust-feature-gate.cc +++ b/gcc/rust/checks/errors/rust-feature-gate.cc @@ -275,15 +275,9 @@ FeatureGate::visit (AST::ImplTraitTypeOneBound &type) void FeatureGate::visit (AST::Attribute &attr) { - if (attr.get_path().as_string() == "register_tool") + if (attr.get_path ().as_string () == "register_tool") gate (Feature::Name::REGISTER_TOOL, attr.get_locus (), "register tool is an experimental feature"); } -void -FeatureGate::visit (AST::TypeAlias &type) -{ - -} - } // namespace Rust diff --git a/gcc/rust/checks/errors/rust-feature-gate.h b/gcc/rust/checks/errors/rust-feature-gate.h index 73c448948b31..d5b5041de8b0 100644 --- a/gcc/rust/checks/errors/rust-feature-gate.h +++ b/gcc/rust/checks/errors/rust-feature-gate.h @@ -55,7 +55,6 @@ class FeatureGate : public AST::DefaultASTVisitor void visit (AST::ImplTraitType &type) override; void visit (AST::ImplTraitTypeOneBound &type) override; void visit (AST::Attribute &attr) override; - void visit (AST::TypeAlias &attr) override; private: void gate (Feature::Name name, location_t loc, const std::string &error_msg); diff --git a/gcc/rust/checks/errors/rust-feature.cc b/gcc/rust/checks/errors/rust-feature.cc index e02ef21c9268..5d0c2344f877 100644 --- a/gcc/rust/checks/errors/rust-feature.cc +++ b/gcc/rust/checks/errors/rust-feature.cc @@ -59,17 +59,22 @@ Feature::create (Feature::Name f) return Feature (f, Feature::State::ACTIVE, "optin_builtin_traits", "1.0.0", 13231); case Feature::Name::ARBITRARY_SELF_TYPES: - return Feature (f, Feature::State::ACCEPTED, "arbitrary_self_types", "1.49.0", 44874); + return Feature (f, Feature::State::ACCEPTED, "arbitrary_self_types", + "1.49.0", 44874); case Feature::Name::DOC_CFG: return Feature (f, Feature::State::ACCEPTED, "doc_cfg", "1.49.0", 43781); case Feature::Name::IMPL_TRAIT_IN_ASSOC_TYPE: - return Feature (f, Feature::State::ACCEPTED, "impl_trait_in_assoc_type", "1.49.0", 63063); + return Feature (f, Feature::State::ACCEPTED, "impl_trait_in_assoc_type", + "1.49.0", 63063); case Feature::Name::REGISTER_TOOL: - return Feature (f, Feature::State::ACCEPTED, "register_tool", "1.49.0", 66079); + return Feature (f, Feature::State::ACCEPTED, "register_tool", "1.49.0", + 66079); case Feature::Name::ASSOCIATED_TYPE_DEFAULTS: - return Feature (f, Feature::State::ACCEPTED, "associated_type_defaults", "1.49.0", 29661); + return Feature (f, Feature::State::ACCEPTED, "associated_type_defaults", + "1.49.0", 29661); case Feature::Name::CONST_TRAIT_IMPL: - return Feature (f, Feature::State::ACCEPTED, "const_trait_impl", "1.49.0", 67792); + return Feature (f, Feature::State::ACCEPTED, "const_trait_impl", "1.49.0", + 67792); default: rust_unreachable (); } diff --git a/gcc/testsuite/rust/compile/features/associated_type_defaults_activated.rs b/gcc/testsuite/rust/compile/features/associated_type_defaults_activated.rs index ab4d135b6626..90bb023f7055 100644 --- a/gcc/testsuite/rust/compile/features/associated_type_defaults_activated.rs +++ b/gcc/testsuite/rust/compile/features/associated_type_defaults_activated.rs @@ -1 +1,15 @@ +// check-pass + +// This is another instance of the "normalizations don't work" issue with +// defaulted associated types. + #![feature(associated_type_defaults)] + +pub trait Emitter<'a> { + type Ctxt: 'a; + type CtxtBrw: 'a = &'a Self::Ctxt; + + fn get_cx(&'a self) -> Self::CtxtBrw; +} + +fn main() {} diff --git a/gcc/testsuite/rust/compile/features/associated_type_defaults_not_activated.rs b/gcc/testsuite/rust/compile/features/associated_type_defaults_not_activated.rs new file mode 100644 index 000000000000..579703a1d132 --- /dev/null +++ b/gcc/testsuite/rust/compile/features/associated_type_defaults_not_activated.rs @@ -0,0 +1,15 @@ +// check-pass + +// This is another instance of the "normalizations don't work" issue with +// defaulted associated types. + +// #![feature(associated_type_defaults)] + +pub trait Emitter<'a> { + type Ctxt: 'a; + type CtxtBrw: 'a = &'a Self::Ctxt; + + fn get_cx(&'a self) -> Self::CtxtBrw; +} + +fn main() {}