]> git.ipfire.org Git - thirdparty/gcc.git/blob - gcc/rust/checks/errors/rust-feature-gate.h
Update copyright years.
[thirdparty/gcc.git] / gcc / rust / checks / errors / rust-feature-gate.h
1 // Copyright (C) 2020-2024 Free Software Foundation, Inc.
2
3 // This file is part of GCC.
4
5 // GCC is free software; you can redistribute it and/or modify it under
6 // the terms of the GNU General Public License as published by the Free
7 // Software Foundation; either version 3, or (at your option) any later
8 // version.
9
10 // GCC is distributed in the hope that it will be useful, but WITHOUT ANY
11 // WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 // for more details.
14
15 // You should have received a copy of the GNU General Public License
16 // along with GCC; see the file COPYING3. If not see
17 // <http://www.gnu.org/licenses/>.
18
19 #ifndef RUST_FEATURE_GATE_H
20 #define RUST_FEATURE_GATE_H
21
22 #include "rust-ast-visitor.h"
23 #include "rust-ast-full.h"
24 #include "rust-feature.h"
25
26 namespace Rust {
27
28 struct Feature;
29
30 class FeatureGate : public AST::ASTVisitor
31 {
32 public:
33 FeatureGate () {}
34
35 void check (AST::Crate &crate);
36
37 void visit (AST::Token &tok) override {}
38 void visit (AST::DelimTokenTree &delim_tok_tree) override {}
39 void visit (AST::AttrInputMetaItemContainer &input) override {}
40 void visit (AST::IdentifierExpr &ident_expr) override {}
41 void visit (AST::Lifetime &lifetime) override {}
42 void visit (AST::LifetimeParam &lifetime_param) override {}
43 void visit (AST::ConstGenericParam &const_param) override {}
44 void visit (AST::PathInExpression &path) override {}
45 void visit (AST::TypePathSegment &segment) override {}
46 void visit (AST::TypePathSegmentGeneric &segment) override {}
47 void visit (AST::TypePathSegmentFunction &segment) override {}
48 void visit (AST::TypePath &path) override {}
49 void visit (AST::QualifiedPathInExpression &path) override {}
50 void visit (AST::QualifiedPathInType &path) override {}
51 void visit (AST::LiteralExpr &expr) override {}
52 void visit (AST::AttrInputLiteral &attr_input) override {}
53 void visit (AST::MetaItemLitExpr &meta_item) override {}
54 void visit (AST::MetaItemPathLit &meta_item) override {}
55 void visit (AST::BorrowExpr &expr) override {}
56 void visit (AST::DereferenceExpr &expr) override {}
57 void visit (AST::ErrorPropagationExpr &expr) override {}
58 void visit (AST::NegationExpr &expr) override {}
59 void visit (AST::ArithmeticOrLogicalExpr &expr) override {}
60 void visit (AST::ComparisonExpr &expr) override {}
61 void visit (AST::LazyBooleanExpr &expr) override {}
62 void visit (AST::TypeCastExpr &expr) override {}
63 void visit (AST::AssignmentExpr &expr) override {}
64 void visit (AST::CompoundAssignmentExpr &expr) override {}
65 void visit (AST::GroupedExpr &expr) override {}
66 void visit (AST::ArrayElemsValues &elems) override {}
67 void visit (AST::ArrayElemsCopied &elems) override {}
68 void visit (AST::ArrayExpr &expr) override {}
69 void visit (AST::ArrayIndexExpr &expr) override {}
70 void visit (AST::TupleExpr &expr) override {}
71 void visit (AST::TupleIndexExpr &expr) override {}
72 void visit (AST::StructExprStruct &expr) override {}
73 void visit (AST::StructExprFieldIdentifier &field) override {}
74 void visit (AST::StructExprFieldIdentifierValue &field) override {}
75 void visit (AST::StructExprFieldIndexValue &field) override {}
76 void visit (AST::StructExprStructFields &expr) override {}
77 void visit (AST::StructExprStructBase &expr) override {}
78 void visit (AST::CallExpr &expr) override {}
79 void visit (AST::MethodCallExpr &expr) override {}
80 void visit (AST::FieldAccessExpr &expr) override {}
81 void visit (AST::ClosureExprInner &expr) override {}
82 void visit (AST::BlockExpr &expr) override {}
83 void visit (AST::ClosureExprInnerTyped &expr) override {}
84 void visit (AST::ContinueExpr &expr) override {}
85 void visit (AST::BreakExpr &expr) override {}
86 void visit (AST::RangeFromToExpr &expr) override {}
87 void visit (AST::RangeFromExpr &expr) override {}
88 void visit (AST::RangeToExpr &expr) override {}
89 void visit (AST::RangeFullExpr &expr) override {}
90 void visit (AST::RangeFromToInclExpr &expr) override {}
91 void visit (AST::RangeToInclExpr &expr) override {}
92 void visit (AST::ReturnExpr &expr) override {}
93 void visit (AST::UnsafeBlockExpr &expr) override {}
94 void visit (AST::LoopExpr &expr) override {}
95 void visit (AST::WhileLoopExpr &expr) override {}
96 void visit (AST::WhileLetLoopExpr &expr) override {}
97 void visit (AST::ForLoopExpr &expr) override {}
98 void visit (AST::IfExpr &expr) override {}
99 void visit (AST::IfExprConseqElse &expr) override {}
100 void visit (AST::IfExprConseqIf &expr) override {}
101 void visit (AST::IfExprConseqIfLet &expr) override {}
102 void visit (AST::IfLetExpr &expr) override {}
103 void visit (AST::IfLetExprConseqElse &expr) override {}
104 void visit (AST::IfLetExprConseqIf &expr) override {}
105 void visit (AST::IfLetExprConseqIfLet &expr) override {}
106 void visit (AST::MatchExpr &expr) override {}
107 void visit (AST::AwaitExpr &expr) override {}
108 void visit (AST::AsyncBlockExpr &expr) override {}
109 void visit (AST::TypeParam &param) override {}
110 void visit (AST::LifetimeWhereClauseItem &item) override {}
111 void visit (AST::TypeBoundWhereClauseItem &item) override {}
112 void visit (AST::Method &method) override {}
113 void visit (AST::Module &module) override {}
114 void visit (AST::ExternCrate &crate) override {}
115 void visit (AST::UseTreeGlob &use_tree) override {}
116 void visit (AST::UseTreeList &use_tree) override {}
117 void visit (AST::UseTreeRebind &use_tree) override {}
118 void visit (AST::UseDeclaration &use_decl) override {}
119 void visit (AST::Function &function) override {}
120 void visit (AST::TypeAlias &type_alias) override {}
121 void visit (AST::StructStruct &struct_item) override {}
122 void visit (AST::TupleStruct &tuple_struct) override {}
123 void visit (AST::EnumItem &item) override {}
124 void visit (AST::EnumItemTuple &item) override {}
125 void visit (AST::EnumItemStruct &item) override {}
126 void visit (AST::EnumItemDiscriminant &item) override {}
127 void visit (AST::Enum &enum_item) override {}
128 void visit (AST::Union &union_item) override {}
129 void visit (AST::ConstantItem &const_item) override {}
130 void visit (AST::StaticItem &static_item) override {}
131 void visit (AST::TraitItemFunc &item) override {}
132 void visit (AST::TraitItemMethod &item) override {}
133 void visit (AST::TraitItemConst &item) override {}
134 void visit (AST::TraitItemType &item) override {}
135 void visit (AST::Trait &trait) override {}
136 void visit (AST::InherentImpl &impl) override {}
137 void visit (AST::TraitImpl &impl) override {}
138 void visit (AST::ExternalStaticItem &item) override {}
139 void visit (AST::ExternalFunctionItem &item) override {}
140 void visit (AST::ExternBlock &block) override;
141 void visit (AST::MacroMatchFragment &match) override {}
142 void visit (AST::MacroMatchRepetition &match) override {}
143 void visit (AST::MacroMatcher &matcher) override {}
144 void visit (AST::MacroRulesDefinition &rules_def) override {}
145 void visit (AST::MacroInvocation &macro_invoc) override {}
146 void visit (AST::MetaItemPath &meta_item) override {}
147 void visit (AST::MetaItemSeq &meta_item) override {}
148 void visit (AST::MetaWord &meta_item) override {}
149 void visit (AST::MetaNameValueStr &meta_item) override {}
150 void visit (AST::MetaListPaths &meta_item) override {}
151 void visit (AST::MetaListNameValueStr &meta_item) override {}
152 void visit (AST::LiteralPattern &pattern) override {}
153 void visit (AST::IdentifierPattern &pattern) override {}
154 void visit (AST::WildcardPattern &pattern) override {}
155 void visit (AST::RangePatternBoundLiteral &bound) override {}
156 void visit (AST::RangePatternBoundPath &bound) override {}
157 void visit (AST::RangePatternBoundQualPath &bound) override {}
158 void visit (AST::RangePattern &pattern) override {}
159 void visit (AST::ReferencePattern &pattern) override {}
160 void visit (AST::StructPatternFieldTuplePat &field) override {}
161 void visit (AST::StructPatternFieldIdentPat &field) override {}
162 void visit (AST::StructPatternFieldIdent &field) override {}
163 void visit (AST::StructPattern &pattern) override {}
164 void visit (AST::TupleStructItemsNoRange &tuple_items) override {}
165 void visit (AST::TupleStructItemsRange &tuple_items) override {}
166 void visit (AST::TupleStructPattern &pattern) override {}
167 void visit (AST::TuplePatternItemsMultiple &tuple_items) override {}
168 void visit (AST::TuplePatternItemsRanged &tuple_items) override {}
169 void visit (AST::TuplePattern &pattern) override {}
170 void visit (AST::GroupedPattern &pattern) override {}
171 void visit (AST::SlicePattern &pattern) override {}
172 void visit (AST::AltPattern &pattern) override {}
173 void visit (AST::EmptyStmt &stmt) override {}
174 void visit (AST::LetStmt &stmt) override {}
175 void visit (AST::ExprStmtWithoutBlock &stmt) override {}
176 void visit (AST::ExprStmtWithBlock &stmt) override {}
177 void visit (AST::TraitBound &bound) override {}
178 void visit (AST::ImplTraitType &type) override {}
179 void visit (AST::TraitObjectType &type) override {}
180 void visit (AST::ParenthesisedType &type) override {}
181 void visit (AST::ImplTraitTypeOneBound &type) override {}
182 void visit (AST::TraitObjectTypeOneBound &type) override {}
183 void visit (AST::TupleType &type) override {}
184 void visit (AST::NeverType &type) override {}
185 void visit (AST::RawPointerType &type) override {}
186 void visit (AST::ReferenceType &type) override {}
187 void visit (AST::ArrayType &type) override {}
188 void visit (AST::SliceType &type) override {}
189 void visit (AST::InferredType &type) override {}
190 void visit (AST::BareFunctionType &type) override {}
191
192 private:
193 void gate (Feature::Name name, Location loc, const std::string &error_msg);
194 std::set<Feature::Name> valid_features;
195 };
196 } // namespace Rust
197 #endif