Daily bump.
[official-gcc.git] / gcc / rust / ChangeLog
bloba834a8fbc48ea58a72fd28f762879a705662f91c
1 2024-01-18  Arthur Cohen  <arthur.cohen@embecosm.com>
3         * backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address):
4         Cast size_t value to unsigned long.
5         * expand/rust-proc-macro.cc (load_macros): Likewise.
6         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Likewise.
8 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
10         * hir/tree/rust-hir-pattern.h
11         (TupleStructItems::ItemType::RANGE): Rename to...
12         (TupleStructItems::ItemType::RANGED): ...here.
13         (TupleStructItems::ItemType::NO_RANGE): Rename to...
14         (TupleStructItems::ItemType::MULTIPLE): ...here.
15         (TuplePatternItems::TuplePatternItemType): Rename to...
16         (TuplePatternItems::ItemType): ...here.
17         : Handle renames.
18         * backend/rust-compile-pattern.cc: Likewise.
19         * typecheck/rust-hir-type-check-pattern.cc: Likewise.
20         * checks/errors/borrowck/rust-bir-builder-pattern.h: Likewise.
22 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
24         * lex/rust-lex.cc (Lexer::parse_decimal_int_or_float): Remove
25         additional zero after empty floating point.
26         * parse/rust-parse-impl.h (Parser::left_denotation): Handle float with
27         empty floating point.
29 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
31         * backend/rust-compile-expr.cc (CompileExpr::generate_closure_function):
32         Fix reference to node.
33         * backend/rust-mangle.cc (struct V0Path): Modified to accept closures.
34         (v0_crate_path): Modified to accept closures.
35         (v0_closure): New function to mangle closures.
36         (v0_path): Modified to accept closures
37         * util/rust-mapping-common.h (UNKNOWN_NODEID): Change to UINT32_MAX.
38         (UNKNOWN_HIRID): Change to UINT32_MAX.
40 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
42         * ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Move from here...
43         * ast/rust-ast-visitor.h: ... to here.
45 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
47         * ast/rust-ast-collector.cc (TokenCollector::visit): Move to header
48         file.
49         (TokenCollector::visit_items_joined_by_separator): Likewise.
50         (TokenCollector::visit_as_line): Likewise.
51         (TokenCollector::visit_items_as_lines): Likewise.
52         (TokenCollector::visit_items_as_block): Likewise.
53         * ast/rust-ast-collector.h: Add implementation.
55 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
57         * ast/rust-ast-collector.cc (TokenCollector::visit): Add visitor for
58         VariadicParam and remove Self parameter visitor from Function visit.
59         * expand/rust-cfg-strip.cc (CfgStrip::maybe_strip_self_param): Remove
60         function.
61         (CfgStrip::maybe_strip_trait_method_decl): Remove self parameter visit.
62         (CfgStrip::maybe_strip_function_params): Handle new function
63         parameters.
64         (CfgStrip::visit): Handle VariadicParam, SelfParam and FunctionParam.
65         * expand/rust-expand-visitor.cc (ExpandVisitor::expand_self_param):
66         Remove function.
67         (ExpandVisitor::expand_trait_method_decl): Do not visit self parameter.
68         (ExpandVisitor::visit): Add visit for VariadicParam, FunctionParam and
69         SelfParam.
70         (ExpandVisitor::expand_function_params): Visit parameters instead.
71         * expand/rust-expand-visitor.h: Update function prototypes.
72         * resolve/rust-ast-resolve-item.cc (ResolveItem::visit): Update visit
73         with new parameters.
74         (ResolveTraitItems::visit): Likewise.
75         * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit):
76         Update visit functions with the new visitor functions for VariadicParam
77         SelfParam and FunctionParam.
78         * resolve/rust-early-name-resolver.h: Update function prototypes.
79         * ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Update visitor
80         according to the new function parameter structures.
81         * ast/rust-ast-visitor.h: Update prototypes and add visitor virtual
82         functions for SelfParam, FunctionParam and VariadicParam.
83         * ast/rust-ast.cc (Function::Function): Move constructor in
84         implementation instead of header.
85         (Function::operator=): Likewise.
86         (Function::as_string): Update function with pointer dereference.
87         (VariadicParam::as_string): Likewise.
88         (TraitFunctionDecl::as_string): Likewise.
89         (TraitMethodDecl::as_string): Likewise.
90         (FunctionParam::accept_vis): Add function for visitor.
91         (SelfParam::accept_vis): Likewise.
92         (VariadicParam::accept_vis): Likewise.
93         (TraitItemFunc::TraitItemFunc): Move constructor to implementation
94         file.
95         (TraitItemFunc::operator=): Likewise.
96         (TraitItemMethod::TraitItemMethod): Likewise.
97         (TraitItemMethod::operator=): Likewise.
98         * ast/rust-item.h (class Function): Remove self optional member.
99         (class TraitMethodDecl): Likewise.
100         (class TraitFunctionDecl): Likewise.
101         (class Param): Add abstract parameter class.
102         (class SelfParam): Inherit from Param and remove parameter common
103         members.
104         (class FunctionParam): Likewise.
105         (class VariadicParam): Likewise.
106         (struct Visibility): Move structure declaration.
107         (class VisItem):  Likewise.
108         * checks/errors/rust-ast-validation.cc (ASTValidation::visit): Add
109         a self parameter check during AST validation.
110         * checks/errors/rust-ast-validation.h: Add function prototype.
111         * expand/rust-derive-clone.cc (DeriveClone::clone_fn): Update function
112         constructor.
113         * hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_self): Rework
114         function for the new parameters.
115         (ASTLoweringBase::visit): Add visit functions for VariadicParam,
116         FunctionParam and SelfParam.
117         * hir/rust-ast-lower-base.h: Update function prototypes.
118         * parse/rust-parse-impl.h (Parser::parse_function): Update function
119         according to new function representation.
120         (Parser::parse_function_param): Return vector of abstract param instead
121         of FunctionParam.
122         (Parser::parse_method): Update according to new representation.
123         (Parser::parse_trait_item): Likewise.
124         (Parser::parse_self_param): Error out with
125         self pointers and prevent the lexer from eating regular function
126         parameters. Update return type.
127         * parse/rust-parse.h: Update function return types.
128         * ast/rust-ast-collector.h: Add VariadicParam visit prototype.
129         * ast/rust-ast.h (struct Visibility): Move struct declaration.
130         (class VisItem): Likewise.
131         * ast/rust-expr.h: Update included files.
132         * checks/errors/rust-feature-gate.h: Add visitor functions for
133         SelfParam, FunctionParam and VariadicParam.
134         * expand/rust-cfg-strip.h: Update function prototypes.
135         * expand/rust-derive.h: Likewise.
136         * hir/rust-ast-lower-implitem.h: Handle special arguments.
137         * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Likewise.
138         * metadata/rust-export-metadata.cc (ExportContext::emit_function):
139         Likewise.
140         * resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Add visitor
141         functions.
142         * resolve/rust-ast-resolve-base.h: Update prototypes.
143         * resolve/rust-ast-resolve-stmt.h: Handle new parameter kind.
144         * resolve/rust-default-resolver.cc (DefaultResolver::visit): Likewise.
145         * resolve/rust-default-resolver.h: Update prototype.
146         * util/rust-attributes.cc (AttributeChecker::visit): Add visitor
147         functions for SelfParam and VariadicParam.
148         * util/rust-attributes.h: Add visit prototypes.
150 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
152         * checks/errors/rust-ast-validation.cc (ASTValidation::visit): Add
153         check for additional named argument as well as variadic argument's
154         position.
155         * checks/errors/rust-ast-validation.h: Add visit function prototype for
156         external functions.
158 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
160         * ast/rust-ast-visitor.cc (ContextualASTVisitor::visit): Push the new
161         trait context when visiting a trait.
162         * ast/rust-ast-visitor.h: Add visit function prototype and TRAIT
163         context.
165 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
167         * checks/errors/rust-ast-validation.cc (ASTValidation::visit): Change
168         reported error location to the lifetime location.
170 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
172         * ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Check if there is
173         a label before visit.
174         * checks/errors/rust-ast-validation.cc (ASTValidation::visit): Emit an
175         error when a label has a forbidden name.
176         * checks/errors/rust-ast-validation.h: Add function prototype.
178 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
180         * ast/rust-expr.h (class BreakExpr): Change Lifetime to LoopLabel.
181         * hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Lower lifetime
182         inside the label instead.
183         * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Resolve the
184         inner lifetime.
186 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
188         * lex/rust-lex.cc (Lexer::parse_raw_identifier): Use const value.
189         * parse/rust-parse-impl.h (Parser::parse_simple_path_segment):
190         Likewise.
192 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
194         * lex/rust-lex.cc (RS_TOKEN): Remove local map.
195         (RS_TOKEN_KEYWORD): Likewise.
196         (Lexer::classify_keyword): Change call to utils.
197         * util/rust-keyword-values.cc (get_keywords): Add init function.
198         (RS_TOKEN_KEYWORD): Call to X macro.
199         * util/rust-keyword-values.h: Change from set to a map.
201 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
203         * checks/errors/rust-ast-validation.cc (RS_TOKEN): Remove locale set.
204         (RS_TOKEN_KEYWORD): Likewise.
205         (ASTValidation::visit): Change keyword set call to the one from utils.
207 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
209         * Make-lang.in: Add rust-keyword-values.cc to the list.
210         * util/rust-keyword-values.cc: New file.
211         * util/rust-keyword-values.h: New file.
213 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
215         * util/rust-attribute-values.h (RUST_ATTRIBUTES_VALUE_H): Remove old
216         header guard.
217         (RUST_ATTRIBUTE_VALUES_H): Add new one.
219 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
221         * checks/errors/rust-ast-validation.cc (RS_TOKEN): Add keyword set.
222         (RS_TOKEN_KEYWORD): Likewise.
223         (ASTValidation::visit): Add validation on lifetime visit.
224         * checks/errors/rust-ast-validation.h: Add function prototype.
226 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
228         * ast/rust-item.h
229         (class Method): Remove.
230         (Function::self_param): New.
231         (Function::has_self_param): New.
232         (Function::Function): Initialize self_param.
233         (Function::operator=): Likewise.
234         (Function::get_self_param): New.
235         * ast/rust-ast.cc
236         (Method::as_string): Remove.
237         (Method::accept_vis): Remove.
238         * ast/rust-ast-collector.cc
239         (TokenCollector::visit):
240         Remove AST::Method visitor, handle self_param in AST::Function visitor.
241         * ast/rust-ast-collector.h
242         (TokenCollector::visit): Remove AST::Method visitor.
243         * ast/rust-ast-full-decls.h (class Method): Remove.
244         * ast/rust-ast-visitor.h
245         (ASTVisitor::visit): Remove AST::Method visitor.
246         (DefaultASTVisitor::visit): Likewise.
247         * ast/rust-ast-visitor.cc
248         (DefaultASTVisitor::visit):
249         Remove AST::Method visitor, handle self_param in AST::Function visitor.
250         * checks/errors/rust-feature-gate.cc
251         (FeatureGate::visit): Remove AST::Method visitor.
252         * checks/errors/rust-feature-gate.h
253         (FeatureGate::visit): Likewise..
254         * expand/rust-cfg-strip.cc
255         (CfgStrip::visit):
256         Remove AST::Method visitor, handle self_param in AST::Function visitor.
257         * expand/rust-cfg-strip.h
258         (CfgStrip::visit): Remove AST::Method visitor.
259         * expand/rust-derive-clone.cc
260         (DeriveClone::clone_fn): Return AST::Function instead of AST::Method.
261         * expand/rust-derive.h (DeriveVisitor::visit): Remove AST::Method visitor.
262         * expand/rust-expand-visitor.cc
263         (ExpandVisitor::visit):
264         Remove AST::Method visitor, handle self_param in AST::Function visitor.
265         * expand/rust-expand-visitor.h:
266         (ExpandVisitor::visit): Remove AST::Method visitor.
267         * hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Likewise.
268         * hir/rust-ast-lower-base.h (ASTLoweringBase::visit): Likewise.
269         * hir/rust-ast-lower-implitem.h
270         (ASTLowerImplItem::visit):
271         Remove AST::Method visitor, handle self_param in AST::Function visitor.
272         * parse/rust-parse-impl.h: Include optional.h.
273         (Parser::parse_function): Adjust AST::Function construction.
274         (Parser::parse_inherent_impl_function_or_method):
275         Construct AST::Function instead of AST::Method,
276         adjust AST::Function construction.
277         (Parser::parse_trait_impl_function_or_method): Likewise.
278         (Parser::parse_method):
279         Return std::unique_ptr<AST::Function> instead of AST::Method.
280         * parse/rust-parse.h
281         (Parser::parse_method): Likewise.
282         * resolve/rust-ast-resolve-base.cc
283         (ResolverBase::visit): Remove AST::Method visitor.
284         * resolve/rust-ast-resolve-base.h
285         (ResolverBase::visit): Likewise.
286         * resolve/rust-ast-resolve-implitem.h
287         (ResolveToplevelImplItem::visit): Likewise.
288         * resolve/rust-ast-resolve-item.cc
289         (ResolveItem::visit): Remove AST::Method visitor,
290         handle self_param in AST::Function visitor.
291         * resolve/rust-ast-resolve-item.h
292         (ResolveItem::visit): Remove AST::Method visitor.
293         * resolve/rust-default-resolver.cc
294         (DefaultResolver::visit): Remove AST::Method visitor.
295         * resolve/rust-default-resolver.h
296         (DefaultResolver::visit): Likewise.
297         * resolve/rust-early-name-resolver.cc
298         (EarlyNameResolver::visit): Remove AST::Method visitor,
299         handle self_param in AST::Function visitor.
300         * resolve/rust-early-name-resolver.h
301         (EarlyNameResolver::visit): Remove AST::Method visitor.
302         * resolve/rust-toplevel-name-resolver-2.0.cc
303         (TopLevel::visit): Likewise.
304         * resolve/rust-toplevel-name-resolver-2.0.h
305         (TopLevel::visit): Likewise.
306         * util/rust-attributes.cc
307         (AttributeChecker::visit): Likewise.
308         * util/rust-attributes.h
309         (AttributeChecker::visit): Likewise.
311 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
313         * parse/rust-parse-impl.h (Parser::parse_named_function_param): Add
314         new parsing ability.
316 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
318         * ast/rust-ast.cc (ExternalFunctionItem::as_string): Adapt as_string
319         function to the new ast representation.
320         (NamedFunctionParam::as_string): Likewise.
321         * ast/rust-item.h: Add a function to test whether a FunctionParam has
322         a name pattern.
323         * expand/rust-cfg-strip.cc (CfgStrip::visit): Adapt cfg strip visitor
324         for the new variadic arguments.
325         * hir/rust-ast-lower-extern.h: Adapt lowering to the new variadic
326         function representation.
327         * metadata/rust-export-metadata.cc (ExportContext::emit_function):
328         Change call to constructor.
329         * parse/rust-parse-impl.h (Parser::parse_named_function_param): Change
330         NamedFunctionParam parsing to accomodate new variadic representation.
331         (Parser::parse_external_item): Change external item parsing to use the
332         new NamedFunctionParam variadics.
333         * parse/rust-parse.h: Add new parsing function prototypes.
334         * ast/rust-ast-collector.cc (TokenCollector::visit): Rework token
335         collection to take into account variadic parameters.
336         * ast/rust-ast-visitor.cc: Likewise.
337         * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Change function
338         bound to avoid getting the type of a variadic parameter.
339         * resolve/rust-ast-resolve-item.cc (ResolveExternItem::visit):
340         Likewise.
341         * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit):
342         Likewise.
344 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
346         * ast/rust-item.h (class NamedFunctionParam): Add variadic boolean and
347         another constructor.
348         * hir/rust-ast-lower-extern.h: Avoid last parameter when variadic.
350 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
352         * ast/rust-item.h: Add a getter to check if a given function is
353         variadic.
355 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
357         * parse/rust-parse-impl.h (Parser::parse_function_param): Parse
358         variadic functions.
360 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
362         * ast/rust-item.h (class FunctionParam): Add some informations to
363         function parameters in order to be able to store variadic argument as
364         a function parameter.
366 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
368         * checks/errors/rust-ast-validation.cc (ASTValidation::visit): Adapt
369         the call to the new visit functions.
370         (ASTValidation::check): Launch the parent class visitor root function.
371         * checks/errors/rust-ast-validation.h (class ASTValidation): Inherit
372         from the contextual visitor.
374 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
376         * ast/rust-ast-visitor.cc (ContextualASTVisitor::visit): Add multiple
377         context saving calls.
378         * ast/rust-ast-visitor.h (class DefaultASTVisitor): Make visit
379         functions virtual.
380         (class ContextualASTVisitor): Add a stack like container for the
381         current context chain.
383 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
385         * Make-lang.in: Add the new visitor object file.
386         * ast/rust-ast-visitor.h (class DefaultASTVisitor): Create the default
387         visitor class.
388         * ast/rust-ast.h: Add a new reference getter for visitor pattern.
389         * ast/rust-ast-visitor.cc: New file.
391 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
393         * ast/rust-ast.h: Add some missing mutable reference getters.
394         * ast/rust-expr.h: Likewise.
395         * ast/rust-item.h: Likewise.
396         * ast/rust-path.h: Likewise.
398 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
400         * ast/rust-ast-collector.cc (TokenCollector::visit): Check for presence
401         of a type and use the default value instead of the type.
403 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
405         * checks/errors/rust-ast-validation.cc (ASTValidation::check): Launch
406         check over the whole given crate.
407         (ASTValidation::visit): Implement visitor for some members of the ast.
408         * checks/errors/rust-ast-validation.h: Update some prototype according
409         to implemented visitor functions. Also add a context tracker.
411 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
413         * rust-session-manager.cc (Session::compile_crate): Add call to ast
414         validation.
416 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
418         * lang.opt: Add the new compile options and update the enum values.
419         * rust-session-manager.h (struct CompileOptions): Add the new steps to
420         the enumeration.
422 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
424         * Make-lang.in: Add the new object file the list.
425         * checks/errors/rust-ast-validation.cc: New file.
426         * checks/errors/rust-ast-validation.h: New file.
428 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
430         * expand/rust-cfg-strip.cc (CfgStrip::visit): Add expr value check.
431         * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Likewise.
432         * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit):
433         Likewise.
435 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
437         * ast/rust-ast.h: Move implementation from here...
438         * ast/rust-ast.cc (SingleASTNode::SingleASTNode): ...to here.
439         (SingleASTNode::operator=): ...and here...
440         (SingleASTNode::accept_vis): ...and here...
441         (SingleASTNode::is_error): ...and here...
442         (SingleASTNode::as_string): ...also here.
444 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
446         * ast/rust-ast.h: Add override specifier.
447         * ast/rust-item.h: Likewise.
449 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
451         * expand/rust-macro-invoc-lexer.cc (MacroInvocLexer::split_current_token):
452         Add implementation for multiple token split.
453         * expand/rust-macro-invoc-lexer.h: Add function prototype.
454         * expand/rust-proc-macro-invoc-lexer.cc (ProcMacroInvocLexer::split_current_token):
455         Add implementation for 2+ token split for procedural macros.
456         * expand/rust-proc-macro-invoc-lexer.h: Add function prototype.
457         * lex/rust-lex.cc (Lexer::split_current_token): Add function to split a
458         token in multiple other tokens.
459         * lex/rust-lex.h: Add function prototype for split_current_token.
460         * parse/rust-parse-impl.h (Parser::left_denotation): Handle float tuple
461         index identified as a float literal.
463 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
465         * hir/rust-hir-dump.cc (Dump::visit): Remove obsolete member.
466         * hir/tree/rust-hir-expr.h (class BorrowExpr): Remove obsolete member.
467         * hir/tree/rust-hir.cc (BorrowExpr::as_string): Remove obsolete member.
469 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
471         * hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Fix typo.
473 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
475         * backend/rust-compile-expr.cc
476         (patterns_mergeable): Remove.
477         (struct PatternMerge): Remove.
478         (sort_tuple_patterns): Remove.
479         (simplify_tuple_match): Remove.
480         (CompileExpr::visit): Modify compilation of MatchExpr.
481         * backend/rust-compile-pattern.cc
482         (CompilePatternCaseLabelExpr::visit): Replace with...
483         (CompilePatternCheckExpr::visit): ...this.
484         * backend/rust-compile-pattern.h
485         (class CompilePatternCaseLabelExpr): Replace with...
486         (class CompilePatternCheckExpr): ...this.
487         * backend/rust-compile-type.cc
488         (TyTyResolveCompile::get_implicit_enumeral_node_type):
489         Make enumeral type equivalent to isize.
491 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
493         * backend/rust-compile-base.cc (get_attributes): Add documentation for
494         indices 3 and 4.
495         (get_trait_name): Add documentation for index 1.
497 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
499         * Make-lang.in: Add gcc/rust/backend/rust-compile-proc-macro.cc to the
500         list of file to compile.
501         * backend/rust-compile.cc (attribute_array): Move to
502         rust-compile-proc-macro.cc
503         (derive_proc_macro): Likewise.
504         (bang_proc_macro): Likewise.
505         (attribute_proc_macro): Likewise.
506         (proc_macro_payload): Likewise.
507         (proc_macro): Likewise.
508         (proc_macro_buffer): Likewise.
509         (entrypoint): Likewise.
510         (proc_macro_array): Likewise.
511         (CompileCrate::add_proc_macro_symbols): Likewise.
512         * backend/rust-compile-proc-macro.cc: New file.
514 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
516         * backend/rust-compile.cc (proc_macro_buffer): Update type builder with
517         array length information.
518         (proc_macro_array): Update type initializer with array length
519         information.
521 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
523         * backend/rust-compile.cc (build_attribute_array): Renamed from...
524         (attribute_array): ...to attribute array.
525         (build_derive_proc_macro): Likewise from...
526         (derive_proc_macro): ... to derive_proc_macro.
527         (build_bang_proc_macro): Likewise from...
528         (bang_proc_macro): ...to bang_proc_macro.
529         (build_attribute_proc_macro): Likewise from...
530         (attribute_proc_macro): ... to attribute_proc_macro.
531         (build_proc_macro_payload): Likewise from...
532         (proc_macro_payload): to proc_macro_payload.
533         (build_proc_macro): Likewise from...
534         (proc_macro): ...to proc_macro.
535         (build_proc_macro_buffer): Likewise from...
536         (proc_macro_buffer): ... to proc_macro_buffer.
537         (build_entrypoint): Likewise from...
538         (entrypoint): ...to entrypoint.
539         (init_derive_proc_macro): Renamed to it's shorter counterpart.
540         (init_attribute_proc_macro): Likewise.
541         (init_bang_proc_macro): Likewise.
542         (init_proc_macro): Likewise.
543         (initialize_proc_macro_array): Likewise.
544         (proc_macro_array): Likewise.
545         (CompileCrate::add_proc_macro_symbols): Update function calls.
547 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
549         * backend/rust-compile-base.h: Make static function address_expression
550         public.
551         * backend/rust-compile.cc (CompileCrate::add_proc_macro_symbols): Add
552         new global variable in export function.
553         (build_bang_proc_macro): Add a function to build the bang proc macro
554         structure type.
555         (build_proc_macro): Add a function to build the proc macro structure
556         type.
557         (build_proc_macro_payload): Add a function to build the proc macro
558         union used in proc macro structures.
559         (init_derive_proc_macro): Add a function to initialize custom derive
560         proc macros.
561         (init_attribute_proc_macro): Add a function to initialize attribute
562         proc macros.
563         (init_bang_proc_macro): Add a function to initialize bang proc macros.
564         (init_proc_macro): Add a function to initialize proc macro structures.
565         (initialize_proc_macro_array): Add a function to initialize the proc
566         macro buffer array.
567         (CompileCrate::add_proc_macro_symbols): Add call to the new functions
568         to correctly initialize proc macros as well as their entrypoint.
570 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
572         * expand/rust-proc-macro.cc (CustomDeriveProcMacro::CustomDeriveProcMacro):
573         Remove constant string declaration.
574         (load_macros_array): Add call to the new generation function.
575         (generate_proc_macro_decls_symbol): Add a new function to generate the
576         entrypoint symbol name from the stable crate id.
577         (PROC_MACRO_DECLS_FMT_ARGS):
578         New macro to keep formats arguments in sync between each call.
579         * expand/rust-proc-macro.h (generate_proc_macro_decls_symbol): Add
580         function prototype.
581         * rust-system.h: Include <iomanip>.
583 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
585         * backend/rust-compile.cc (build_attribute_array): Add a function to
586         build the attribute array type.
587         (build_derive_proc_macro): Add a function to build the derive proc
588         macro type.
589         (build_bang_proc_macro): Add a function to build the bang proc macro
590         type.
591         (build_attribute_proc_macro): Add a function to build the attribute
592         proc macro type.
593         (build_proc_macro): Add a function to build the proc macro tagged union
594         type.
595         (build_proc_macro_buffer): Add a function to build the proc macro
596         buffer type.
597         (build_entrypoint): Add a function to build the proc macro entrypoint
598         type.
599         * backend/rust-compile.h: Add function prototype.
601 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
603         * backend/rust-compile-context.h: Add getters.
605 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
607         * backend/rust-compile-base.cc (HIRCompileBase::setup_fndecl):
608         Make the function non static in order to be able to access the
609         compile context. Also add the whole proc macro infomrmation
610         collection.
611         (get_attributes): Add a function to retrieve the different
612         attributes from a derive procedural macro definition attribute.
613         (get_trait_name): Add a function to retrieve the trait name from
614         a derive procedural macro definition attribute.
615         * backend/rust-compile-base.h: Add function prototypes.
617 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
619         * backend/rust-compile-base.cc (HIRCompileBase::setup_abi_options):
620         Reformat uncorrectly formatted comments.
622 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
624         * backend/rust-compile-context.h (struct CustomDeriveInfo): Add
625         new derive procedural macro metadata information holder for
626         mappings.
628 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
630         * ast/rust-ast.h: Add const getter.
632 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
634         * backend/rust-compile-base.cc (handle_proc_macro_common): Add
635         new attribute "gccrs_proc_macro" to all procedural macro
636         functions.
637         (get_abi): Add a function to retrieve the correct ABI depending
638         on wether the function is a proc macro or not.
640 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
642         * backend/rust-compile-base.cc (HIRCompileBase::setup_fndecl):
643         Add proc macro handlers dispatch.
644         (handle_proc_macro_common): Add a function for common behavior
645         between all kinds of proc macros.
646         * backend/rust-compile-base.h: Add function prototypes.
648 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
650         * checks/errors/borrowck/rust-bir-builder-expr-stmt.cc (ExprStmtBuilder::setup_loop): Move.
651         (ExprStmtBuilder::get_label_ctx): Move.
652         (ExprStmtBuilder::get_unnamed_loop_ctx): Moved.
653         (ExprStmtBuilder::visit): BIR improvements.
654         * checks/errors/borrowck/rust-bir-builder-expr-stmt.h: Refactor.
655         * checks/errors/borrowck/rust-bir-builder-internal.h (class LifetimeResolver):
656         Refactor.
657         (struct BuilderContext): Move.Refactor.
658         (optional_from_ptr): Map on null ptr.
659         * checks/errors/borrowck/rust-bir-builder-lazyboolexpr.h (class LazyBooleanExprBuilder):
660         Refactor.
661         * checks/errors/borrowck/rust-bir-builder-pattern.h: Refactor.
662         * checks/errors/borrowck/rust-bir-builder-struct.h (class StructBuilder): Refactor.
663         * checks/errors/borrowck/rust-bir-builder.h: Refactor.
664         * checks/errors/borrowck/rust-bir-dump.cc (Dump::go): Refactor.
665         (Dump::visit): Refactor.
666         (Dump::visit_place): Refactor.
667         (Dump::visit_move_place): Refactor.
668         (Dump::visit_lifetime): Refactor.
669         * checks/errors/borrowck/rust-bir-dump.h: Refactor.
670         * checks/errors/borrowck/rust-bir-place.h: Refactor.
672 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
674         * checks/errors/borrowck/dev-notes.md: New file.
676 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
678         * checks/errors/borrowck/bir-design-notes.md: New file.
680 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
682         * checks/errors/borrowck/rust-bir-builder-expr-stmt.cc (ExprStmtBuilder::visit): Use goto.
683         * checks/errors/borrowck/rust-bir-builder-internal.h: Explicit goto.
684         * checks/errors/borrowck/rust-bir-builder-lazyboolexpr.h: Explicit goto.
686 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
688         * checks/errors/borrowck/rust-bir-builder-expr-stmt.cc (ExprStmtBuilder::visit): Continue.
689         (ExprStmtBuilder::setup_loop): Continue.
691 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
693         * checks/errors/borrowck/rust-bir-dump.cc (simplify_cfg): Detech infinite loops.
695 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
697         * checks/errors/borrowck/rust-bir-builder-expr-stmt.cc (ExprStmtBuilder::visit): Push ctx.
698         (ExprStmtBuilder::setup_loop): Common loop infractructure setup.
699         * checks/errors/borrowck/rust-bir-builder-expr-stmt.h: Loop ctx.
700         * checks/errors/borrowck/rust-bir-builder-internal.h (struct BuilderContext): Loop ctx.
702 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
704         * checks/errors/borrowck/rust-bir-dump.cc (Dump::go): Improve jumps dump.
705         (Dump::visit): Improve jumps dump.
706         * checks/errors/borrowck/rust-bir-dump.h (class Dump): Improve jumps dump.
708 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
710         * checks/errors/borrowck/rust-bir-dump.cc (simplify_cfg): Simplify cfg logic.
711         (Dump::go): Run simplify cfg.
712         * checks/errors/borrowck/rust-bir-dump.h: Option to simplify cfg.
714 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
716         * checks/errors/borrowck/rust-bir-dump.cc (Dump::go): Use new print.
717         (print_comma_separated): Comma separation print.
718         (Dump::visit): Use new print.
720 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
722         * Make-lang.in: Build BIR dump.
723         * checks/errors/borrowck/rust-borrow-checker.cc (mkdir_wrapped): Cross-platform mkdir.
724         (dump_function_bir): Save dump to file.
725         (BorrowChecker::go): Run dump during borrowck.
726         * checks/errors/borrowck/rust-bir-dump.cc: New file.
727         * checks/errors/borrowck/rust-bir-dump.h: New file.
729 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
731         * Make-lang.in: Compile BIR expr visitor.
732         * checks/errors/borrowck/rust-borrow-checker.cc (BorrowChecker::go): Use BIR builder.
733         * rust-session-manager.cc (Session::compile_crate): Run borrow checker.
734         * checks/errors/borrowck/rust-bir-builder-expr-stmt.cc: New file.
735         * checks/errors/borrowck/rust-bir-builder-expr-stmt.h: New file.
736         * checks/errors/borrowck/rust-bir-builder-internal.h: New file.
737         * checks/errors/borrowck/rust-bir-builder-lazyboolexpr.h: New file.
738         * checks/errors/borrowck/rust-bir-builder-pattern.h: New file.
739         * checks/errors/borrowck/rust-bir-builder-struct.h: New file.
740         * checks/errors/borrowck/rust-bir-builder.h: New file.
742 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
744         * checks/errors/borrowck/rust-borrow-checker.cc: Include to compile new code.
745         * checks/errors/borrowck/rust-bir-place.h: New file.
746         * checks/errors/borrowck/rust-bir-visitor.h: New file.
747         * checks/errors/borrowck/rust-bir.h: New file.
749 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
751         * lang.opt: CLI flag.
752         * rust-session-manager.cc (Session::compile_crate): Guard execution.
754 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
756         * checks/errors/borrowck/rust-borrow-checker.cc (BorrowChecker::BorrowChecker): Opt dump.
757         (BorrowChecker::go): Opt dump.
758         * checks/errors/borrowck/rust-borrow-checker.h (class BorrowChecker): Opt dump.
759         * lang.opt: Add compile until borrowcheck.
760         * rust-session-manager.cc (Session::enable_dump): Add BIR.
761         (Session::compile_crate): Handle new options.
762         * rust-session-manager.h (struct CompileOptions): Add BIR.
764 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
766         * Make-lang.in: Build borrowck.
767         * checks/errors/borrowck/rust-borrow-checker.cc: New file.
768         * checks/errors/borrowck/rust-borrow-checker.h: New file.
769         * checks/errors/borrowck/rust-function-collector.h: New file.
771 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
773         * ast/rust-pattern.h: Add override modifier to overriding methods.
775 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
777         * ast/rust-item.h: Add a new constructor for const with no value
778         expression.
779         * parse/rust-parse-impl.h (Parser::parse_const_item): Allow const with
780         no expression value.
782 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
784         * hir/tree/rust-hir-path.h: Avoid copy in getter.
786 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
788         * backend/rust-compile-expr.cc (CompileExpr::visit): Rename method.
789         * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): Rename method.
790         * checks/errors/rust-const-checker.cc (ConstChecker::visit): Rename method.
791         * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Rename method.
792         * hir/rust-hir-dump.cc (Dump::visit): Rename method.
793         * hir/tree/rust-hir-expr.h: Rename method.
794         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Rename method.
795         * typecheck/rust-tyty.h: Rename method.
797 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
799         * backend/rust-compile-base.cc: Rename method.
800         * backend/rust-compile-expr.cc (sort_tuple_patterns): Rename method.
801         * backend/rust-compile-pattern.cc (CompilePatternCaseLabelExpr::visit): Rename method.
802         (CompilePatternBindings::visit): Rename method.
803         (CompilePatternLet::visit): Rename method.
804         * backend/rust-compile-stmt.cc (CompileStmt::visit): Rename method.
805         * backend/rust-compile-var-decl.h: Rename method.
806         * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::translate): Rename method.
807         * hir/rust-hir-dump.cc (Dump::visit): Rename method.
808         * hir/tree/rust-hir-path.h: Rename method.
809         * hir/tree/rust-hir-pattern.h: Rename method.
810         * hir/tree/rust-hir.h: Rename method.
811         * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::Resolve): Rename method.
812         (TypeCheckPattern::visit): Rename method.
813         (ClosureParamInfer::visit): Rename method.
814         * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Rename method.
815         * util/rust-hir-map.cc (Mappings::insert_hir_pattern): Rename method.
817 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
819         * hir/tree/rust-hir-expr.h: Add getter for name.
821 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
823         * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit): Implement for tuple pat.
824         * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::visit): Implement for tupple pat.
826 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
828         * hir/tree/rust-hir-path.h: Avoid copy in getter.
829         * hir/tree/rust-hir-pattern.h: Avoid copy in getter.
830         * hir/tree/rust-hir.h: Avoid copy in getter.
832 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
834         * resolve/rust-ast-resolve-implitem.h
835         (ResolveToplevelImplItem::go): Take AssociatedItem as parameter.
836         (ResolveTopLevelTraitItems::go): Likewise.
837         * resolve/rust-ast-resolve-item.cc
838         (ResolveTraitItems::go): Likewise.
839         (ResolveItem::resolve_impl_item): Likewise.
840         (ResolveImplItems::go): Likewise.
841         * resolve/rust-ast-resolve-item.h
842         (ResolveTraitItems::go): Likewise.
843         (ResolveItem::resolve_impl_item): Likewise.
844         (ResolveImplItems::go): Likewise.
846 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
848         * hir/rust-ast-lower-implitem.h
849         (ASTLoweringImplItem::translate): Take AssociatedItem as parameter.
850         (ASTLoweringTraitItem::translate): Likewise.
852 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
854         * backend/rust-compile-expr.cc (CompileExpr::visit): Bail on labelled block.
856 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
858         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Add loop ctx.
860 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
862         * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Resolve using loop logic.
864 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
866         * hir/rust-ast-lower.cc (ASTLoweringBlock::visit): Call loop lowering and add it to constr.
867         * hir/tree/rust-hir-expr.h (class LoopLabel): Move before BlockExpr and add to BlockExpr.
869 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
871         * ast/rust-ast-builder.cc (AstBuilder::block): Add label arg to constructor call.
872         * ast/rust-expr.h (class LoopLabel): Move before BlockExpr.
873         (class BlockExpr): Add LoopLabel member.
874         * expand/rust-derive-clone.cc (DeriveClone::clone_fn): Add label arg to constructor call.
875         * parse/rust-parse-impl.h (Parser::parse_block_expr): Add label parameter.
876         (Parser::parse_labelled_loop_expr): Add label arg to constructor call.
877         * parse/rust-parse.h: Add label arg to constructor call.
879 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
881         * ast/rust-ast.h
882         (class AssociatedItem):
883         New, based on TraitItem, InherentImplItem, and TraitImplItem classes.
884         (class TraitItem): Inherit from AssociatedItem.
885         (class InherentImplItem): Likewise.
886         (class TraitImplItem): Likewise.
887         * ast/rust-item.h
888         (class Method): Update cloning functions.
889         (class Function): Likewise.
890         (class TypeAlias): Likewise.
891         (class ConstantItem): Likewise.
892         (class TraitItemFunc): Likewise.
893         (class TraitItemMethod): Likewise.
894         (class TraitItemConst): Likewise.
895         (class TraitItemType): Likewise.
896         * ast/rust-macro.h
897         (class MacroInvocation): Likewise.
899 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
901         * backend/rust-mangle.cc (v0_identifier): Fix broken encoding.
902         (v0_scope_path): Modify paramter.
903         (v0_path): Fix namespace for modules.
905 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
907         * parse/rust-parse-impl.h (Parser::parse_closure_expr_pratt): Fix
908         closure parsing function to handle consecutive parameter lists.
910 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
912         * ast/rust-macro.h: Add PATH fragment to follow set restrictions.
914 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
916         * parse/rust-parse-impl.h (Parser::is_macro_rules_def): Add a function
917         that checks tokens given by the lexer represents an accurate macro
918         definition. This will reduce code duplication.
919         (Parser::parse_item): Replace condition with call to new checking
920         function.
921         (Parser::parse_stmt): Likewise.
922         * parse/rust-parse.h: Add function prototype for is_macro_rules_def.
924 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
926         * parse/rust-parse-impl.h (Parser::parse_expr): Fix range from expr.
928 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
930         * parse/rust-parse-impl.h (Parser::parse_item): Relax constraints
931         around default identifier at item scope to accept "default" macros.
933 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
935         * parse/rust-parse-impl.h (Parser::parse_path_expr_segment): Accept
936         left shift tokens in order to let generic parsing function split the
937         token.
939 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
941         * ast/rust-ast.h
942         (Pattern::get_pattern_node_id): Rename to...
943         (Pattern::get_node_id): ...here.
944         * ast/rust-macro.h
945         (MacroInvocation::get_pattern_node_id): Rename to...
946         (MacroInvocation::get_node_id): ...here.
947         * ast/rust-path.h
948         (PathInExpression::get_pattern_node_id): Remove.
949         (QualifiedPathInExpression::get_pattern_node_id): Remove.
950         * ast/rust-pattern.h
951         (LiteralPattern::get_pattern_node_id): Remove.
952         (IdentifierPattern::get_pattern_node_id): Remove.
953         (WildcardPattern::get_pattern_node_id): Remove.
954         (RestPattern::get_pattern_node_id): Rename to...
955         (RestPattern::get_node_id): ...here.
956         (RangePattern::get_pattern_node_id): Remove.
957         (ReferencePattern::get_pattern_node_id): Remove.
958         (StructPattern::get_pattern_node_id): Remove.
959         (TupleStructPattern::get_pattern_node_id): Remove.
960         (TuplePattern::get_pattern_node_id): Remove.
961         (GroupedPattern::get_pattern_node_id): Remove.
962         (SlicePattern::get_pattern_node_id): Remove.
963         (AltPattern::get_pattern_node_id): Remove.
964         * resolve/rust-early-name-resolver.cc
965         (EarlyNameResolver::visit):
966         Use get_node_id instead of get_pattern_node_id.
968 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
970         * parse/rust-parse-impl.h (Parser::parse_expr): Add comma delimiter.
972 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
974         * parse/rust-parse-impl.h (Parser::parse_visibility): Relax constraints
975         over public visibility return condition in order to accept pub unit
976         types.
978 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
980         * typecheck/rust-tyty.cc (BaseType::is_unit): Refactor.
981         (BaseType::satisfies_bound): Refactor.
982         (BaseType::get_root): Refactor.
983         (BaseType::destructure): Refactor.
984         (BaseType::monomorphized_clone): Refactor.
985         (BaseType::is_concrete): Refactor.
986         (InferType::InferType): Refactor.
987         (InferType::clone): Refactor.
988         (InferType::apply_primitive_type_hint): Refactor.
989         (StructFieldType::is_equal): Refactor.
990         (ADTType::is_equal): Refactor.
991         (handle_substitions): Refactor.
992         (ADTType::handle_substitions): Refactor.
993         (TupleType::TupleType): Refactor.
994         (TupleType::is_equal): Refactor.
995         (TupleType::handle_substitions): Refactor.
997 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
999         * typecheck/rust-tyty.cc (InferType::InferType): Use static constant for kind information.
1000         (ErrorType::ErrorType): Use static constant for kind information.
1001         (TupleType::TupleType): Use static constant for kind information.
1002         (BoolType::BoolType): Use static constant for kind information.
1003         (IntType::IntType): Use static constant for kind information.
1004         (UintType::UintType): Use static constant for kind information.
1005         (FloatType::FloatType): Use static constant for kind information.
1006         (USizeType::USizeType): Use static constant for kind information.
1007         (ISizeType::ISizeType): Use static constant for kind information.
1008         (CharType::CharType): Use static constant for kind information.
1009         (ReferenceType::ReferenceType): Use static constant for kind information.
1010         (PointerType::PointerType): Use static constant for kind information.
1011         (ParamType::ParamType): Use static constant for kind information.
1012         (StrType::StrType): Use static constant for kind information.
1013         (NeverType::NeverType): Use static constant for kind information.
1014         (PlaceholderType::PlaceholderType): Use static constant for kind information.
1015         * typecheck/rust-tyty.h: Add static kind information to all TyTy classes.
1016         Create safe cast and check methods.
1018 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1020         * parse/rust-parse-impl.h (Parser::parse_type_param_bound): Add missing
1021         case for lifetime switch.
1023 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1025         * lex/rust-token.cc (Token::as_string): Update function to output scope
1026         resolution tokens correctly.
1027         * parse/rust-parse-impl.h (Parser::parse_generic_param): Change call to
1028         as_string.
1030 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
1032         * backend/rust-compile-context.h: Modify declaration.
1033         * backend/rust-mangle.cc (struct V0Path): New struct.
1034         (v0_path): New function.
1035         (legacy_mangle_name): Take Context as argument.
1036         (v0_numeric_prefix): Fix type strings.
1037         (v0_complex_type_prefix): New function.
1038         (v0_add_integer_62): Deleted
1039         (v0_integer_62): New function.
1040         (v0_add_opt_integer_62): Deleted.
1041         (v0_opt_integer_62): New function.
1042         (v0_add_disambiguator): Deleted.
1043         (v0_disambiguator): New function.
1044         (v0_type_prefix): Support more types.
1045         (v0_generic_args): New function.
1046         (v0_add_identifier): Deleted.
1047         (v0_identifier): New function.
1048         (v0_type_path): New function.
1049         (v0_function_path): New function.
1050         (v0_scope_path): New function.
1051         (v0_crate_path): New function.
1052         (v0_inherent_or_trait_impl_path): New function.
1053         (v0_mangle_item): Use v0_path.
1054         (Mangler::mangle_item): Take Context as argument.
1055         * backend/rust-mangle.h (class Context): Add forward declaration.
1056         * hir/tree/rust-hir-item.h: Fix include.
1058 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1060         * hir/tree/rust-hir-pattern.h
1061         (TupleStructItems::clone_tuple_struct_items_impl): Rename to...
1062         (TupleStructItems::clone_tuple_items_impl): ...here.
1063         (TupleStructItemsNoRange::clone_tuple_struct_items_impl): Rename to...
1064         (TupleStructItemsNoRange::clone_tuple_items_impl): ...here.
1065         (TupleStructItemsRange::clone_tuple_struct_items_impl): Rename to...
1066         (TupleStructItemsRange::clone_tuple_items_impl): ...here.
1067         (TuplePatternItems::clone_tuple_pattern_items_impl): Rename to...
1068         (TuplePatternItems::clone_tuple_items_impl): ...here.
1069         (TuplePatternItemsMultiple::clone_tuple_pattern_items_impl): Rename to...
1070         (TuplePatternItemsMultiple::clone_tuple_items_impl): ...here.
1071         (TuplePatternItemsRanged::clone_tuple_pattern_items_impl): Rename to...
1072         (TuplePatternItemsRanged::clone_tuple_items_impl): ...here.
1074 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1076         * hir/tree/rust-hir-pattern.h
1077         (TuplePatternItems::get_pattern_type): Rename to...
1078         (TuplePatternItems::get_item_type): ...here.
1079         (TuplePatternItemsMultiple::get_pattern_type): Rename to...
1080         (TuplePatternItemsMultiple::get_item_type): ...here.
1081         (TuplePatternItemsRanged::get_pattern_type): Rename to...
1082         (TuplePatternItemsRanged::get_item_type): ...here.
1083         * backend/rust-compile-expr.cc: Adjust calls to renamed methods.
1084         * backend/rust-compile-pattern.cc: Likewise.
1085         * typecheck/rust-hir-type-check-pattern.cc: Likewise.
1087 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
1089         * backend/rust-compile-expr.cc (CompileExpr::visit): Merge 2 if clauses.
1090         * backend/rust-compile-extern.h: Fix typo in comment.
1092 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
1094         * parse/rust-parse-impl.h: Add missing token consumption
1096 2024-01-16  Mohammed Rizan Farooqui  <rizanfarooqui@gmail.com>
1098         * expand/rust-macro-builtins.cc (MacroBuiltin::include_str_handler): Comment removed
1099         (MacroBuiltin::env_handler): Comment removed
1100         (MacroBuiltin::cfg_handler): Comment removed
1101         (MacroBuiltin::line_handler): Comment removed
1103 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
1105         * backend/rust-compile.cc (HIRCompileBase::coercion_site1): Fix wrong cast
1107 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1109         * rust-session-manager.cc (Session::expansion): Add early break on
1110         error.
1112 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
1114         * util/rust-canonical-path.h: Add new segment kind for inherent impl.
1115         * resolve/rust-ast-resolve-item.cc (ResolveItem::visit): Use it.
1116         * resolve/rust-ast-resolve-toplevel.h: Use it.
1118 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1120         * ast/rust-expr.h: Fix spelling of "doesn't".
1121         * backend/rust-compile-expr.cc: Fix spelling of "accessors".
1122         * backend/rust-compile-implitem.h: Fix spelling of "normal".
1123         * backend/rust-constexpr.cc: Fix spelling of "actual".
1125 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
1127         * hir/rust-hir-dump.cc (Dump::debug): New.
1128         (debug): New.
1129         * hir/rust-hir-dump.h (debug): New.
1131 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
1133         * Make-lang.in: fixup formatting
1134         * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): remove old check
1135         * rust-session-manager.cc (Session::compile_crate): call new lint
1136         * resolve/rust-ast-verify-assignee.h: Removed.
1137         * checks/errors/rust-readonly-check.cc: New file.
1138         * checks/errors/rust-readonly-check.h: New file.
1140 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
1142         * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit):
1143         Added ErrorCode & more fixit hints.
1145 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
1147         * backend/rust-compile-block.h: remove HIR::ForLoopExpr
1148         * backend/rust-compile-expr.h: likewise
1149         * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): likewise
1150         * checks/errors/privacy/rust-privacy-reporter.h: likewise
1151         * checks/errors/rust-const-checker.cc (ConstChecker::visit): likewise
1152         * checks/errors/rust-const-checker.h: likewise
1153         * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): likewise
1154         * checks/errors/rust-unsafe-checker.h: likewise
1155         * checks/lints/rust-lint-marklive.h: likewise
1156         * hir/rust-ast-lower.cc (ASTLoweringExprWithBlock::visit): likewise
1157         * hir/rust-hir-dump.cc (Dump::visit): likewise
1158         * hir/rust-hir-dump.h: likewise
1159         * hir/tree/rust-hir-expr.h (class ForLoopExpr): likewise
1160         * hir/tree/rust-hir-full-decls.h (class ForLoopExpr): likewise
1161         * hir/tree/rust-hir-visitor.h: likewise
1162         * hir/tree/rust-hir.cc (ForLoopExpr::as_string): likewise
1163         (ForLoopExpr::accept_vis): likewise
1164         * typecheck/rust-hir-type-check-expr.h: likewise
1166 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
1168         * backend/rust-compile-expr.cc (CompileExpr::visit): Fix typo in varIadic.
1169         * backend/rust-compile-type.cc (TyTyResolveCompile::visit): Likewise.
1170         * rust-backend.h (function_type_varadic): Rename into ...
1171         (function_type_variadic): ... this.
1172         * rust-gcc.cc (function_type_varadic): Rename into ...
1173         (function_type_variadic): ... this.
1174         * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): Likewise.
1175         * typecheck/rust-tyty.h (is_varadic): Renamed into ...
1176         (is_variadic): ... this.
1178 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
1180         * backend/rust-compile-base.cc (HIRCompileBase::compile_function):
1181         Fix typo in substitutions.
1182         (HIRCompileBase::resolve_method_address): Likewise.
1183         * backend/rust-compile-extern.h (CompileExternItem::visit):
1184         Likewise.
1185         * backend/rust-compile-implitem.cc (CompileTraitItem::visit):
1186         Likewise.
1187         * backend/rust-compile-intrinsic.cc (maybe_override_ctx):
1188         Likewise.
1189         * backend/rust-compile-item.cc (CompileItem::visit): Likewise.
1190         * backend/rust-compile-resolve-path.cc
1191         (HIRCompileBase::query_compile): Likewise.
1192         * typecheck/rust-coercion.cc (TypeCoercionRules::do_coercion):
1193         Likewise.
1194         * typecheck/rust-hir-type-check-item.cc
1195         (TypeCheckItem::ResolveImplBlockSelfWithInference): Likewise.
1196         * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit):
1197         Likewise.
1198         * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit):
1199         Likewise.
1200         * typecheck/rust-tyty.cc (BaseType::has_subsititions_defined):
1201         Renamed into ...
1202         (BaseType::has_substitutions_defined): ... this.
1203         (ADTType::is_equal): Fix typo in substitutions.
1204         (handle_substitions): Likewise.
1205         (FnType::is_equal): Likewise.
1206         (FnType::handle_substitions): Likewise.
1207         * typecheck/rust-tyty.h (has_subsititions_defined): Renamed into
1208         ...
1209         (has_substitutions_defined): ... this.
1211 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1213         * backend/rust-compile-intrinsic.cc
1214         (get_identifier): Add declaration.
1215         (assume_handler): New.
1216         (generic_intrinsics): Add assume_handler entry.
1218 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1220         * rust-gcc.cc
1221         (Backend::wchar_type): Store static wchar tree.
1223 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1225         * rust-backend.h
1226         (complex_type): Remove.
1227         (complex_constant_expression): Remove.
1228         (real_part_expression): Remove.
1229         (imag_part_expression): Remove.
1230         (complex_expression): Remove.
1231         * rust-gcc.cc
1232         (complex_type): Remove.
1233         (complex_constant_expression): Remove.
1234         (real_part_expression): Remove.
1235         (imag_part_expression): Remove.
1236         (complex_expression): Remove.
1238 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1240         * rust-gcc.cc
1241         (namespace Backend):
1242         Use namespace definition instead of qualified names.
1244 2024-01-16  liushuyu  <liushuyu011@gmail.com>
1246         * backend/rust-compile-intrinsic.cc: add `copy`
1247         intrinsics and make `copy_nonoverlapping` handler more generic
1249 2024-01-16  liushuyu  <liushuyu011@gmail.com>
1251         * backend/rust-builtins.cc: add `expect` builtin definition.
1252         * backend/rust-compile-intrinsic.cc: add `likely` and `unlikely`
1253         intrinsics handler.
1255 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1257         * rust_error_codes.def: Moved to...
1258         * rust-error-codes.def: ...here...
1259         * rust-diagnostics.h: ...and update references.
1261 2024-01-16  Guillaume Gomez  <guillaume1.gomez@gmail.com>
1263         * backend/rust-compile-intrinsic.cc: Simplify `make_unsigned_long_tree`
1264         * rust-backend.h: Remove `integer_constant_expression`
1265         * rust-gcc.cc: Remove `integer_constant_expression`
1267 2024-01-16  Dave Evans  <dave@dmetwo.org>
1269         * backend/rust-compile-pattern.cc (CompilePatternCaseLabelExpr::visit):
1270         Add AltPattern visitor function
1271         * backend/rust-compile-pattern.h:
1272         Update CompilePatternCaseLabelExpr::visit(AltPattern&).
1273         * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
1274         Update AltPattern visitor
1276 2024-01-16  Guillaume Gomez  <guillaume1.gomez@gmail.com>
1278         * backend/rust-compile-intrinsic.cc: Remove unused argument
1280 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
1282         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
1283         Added new error message, rich location and error code.
1285 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1287         * rust-backend.h
1288         (class Backend): Convert to ...
1289         (namespace Backend): ... namespace.
1290         * rust-gcc.cc
1291         (Backend::Backend): Rename to ...
1292         (Backend::init): ... here.
1293         (rust_get_backend): Remove.
1294         * rust-session-manager.cc
1295         (rust_get_backend): Remove.
1296         (Session::init): Use Backend::init instead of rust_get_backend.
1297         (Session::compile_crate):
1298         Initialize Context without pointer to Backend.
1299         * rust-session-manager.h
1300         (Session::backend): Remove.
1301         * backend/rust-compile-context.cc
1302         (Context::Context): Remove pointer to Backend.
1303         * backend/rust-compile-context.h
1304         (class Context): Remove pointer to Backend, update function calls.
1305         * backend/rust-compile-base.cc: Update function calls.
1306         * backend/rust-compile-block.cc: Likewise.
1307         * backend/rust-compile-expr.cc: Likewise.
1308         * backend/rust-compile-extern.h: Likewise.
1309         * backend/rust-compile-fnparam.cc: Likewise.
1310         * backend/rust-compile-intrinsic.cc: Likewise.
1311         * backend/rust-compile-item.cc: Likewise.
1312         * backend/rust-compile-pattern.cc: Likewise.
1313         * backend/rust-compile-resolve-path.cc: Likewise.
1314         * backend/rust-compile-type.cc: Likewise.
1315         * backend/rust-compile-var-decl.h: Likewise.
1316         * backend/rust-compile.cc: Likewise.
1318 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1320         * ast/rust-ast.cc (Attribute::check_cfg_predicate): Change raw
1321         string to constexpr call.
1322         (Attribute::separate_cfg_attrs): Likewise.
1323         * backend/rust-compile-base.cc (should_mangle_item): Likewise.
1324         (HIRCompileBase::setup_fndecl): Likewise.
1325         (HIRCompileBase::handle_cold_attribute_on_fndecl): Likewise.
1326         * checks/errors/privacy/rust-privacy-reporter.cc (find_proc_macro_attribute):
1327         Likewise.
1328         * checks/errors/rust-unsafe-checker.cc (check_target_attr):
1329         Likewise.
1330         * expand/rust-cfg-strip.cc (fails_cfg): Likewise.
1331         (fails_cfg_with_expand): Likewise.
1332         (expand_cfg_attrs): Likewise.
1333         * expand/rust-macro-builtins.cc: Likewise.
1334         * hir/rust-ast-lower-base.cc (ASTLoweringBase::handle_outer_attributes): Likewise.
1335         (ASTLoweringBase::lower_macro_definition): Likewise.
1336         * hir/rust-hir-dump.cc (Dump::visit): Likewise.
1337         * parse/rust-parse-impl.h (Parser::parse_doc_comment): Likewise.
1338         * parse/rust-parse.cc (extract_module_path): Likewise.
1339         * resolve/rust-early-name-resolver.cc (is_macro_use_module):
1340         Likewise.
1341         (EarlyNameResolver::visit): Likewise.
1342         * resolve/rust-toplevel-name-resolver-2.0.cc (is_macro_export):
1343         Likwise.
1344         * rust-session-manager.cc (Session::injection): Likewise.
1345         * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::parse_repr_options): Likewise.
1346         * util/rust-attributes.cc (is_proc_macro_type): Likewise.
1347         (AttributeChecker::check_attribute): Likewise.
1348         (AttributeChecker::visit): Likewise.
1349         * util/rust-hir-map.cc (Mappings::insert_macro_def): Likewise.
1350         * util/rust-attribute-values.h: New file.
1352 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1354         * rust-backend.h
1355         (Backend::Backend): New.
1356         (Backend::~Backend): Remove.
1357         (class Gcc_backend): Remove.
1358         * rust-gcc.cc
1359         (Gcc_backend::Gcc_backend): Rename to ...
1360         (Backend::Backend): ... here.
1361         (rust_get_backend): Construct Backend instead of Gcc_backend.
1363 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1365         * expand/rust-proc-macro.cc (tokenstream_from_string): Change
1366         linemap null pointer to the current linemap.
1368 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1370         * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit):
1371         Add proc macro definition insertion.
1373 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1375         * util/rust-hir-map.cc (Mappings::insert_derive_proc_macro_def):
1376         Change the function body to fetch the node id from the macro
1377         parameter.
1378         (Mappings::insert_bang_proc_macro_def): Likewise.
1379         (Mappings::insert_attribute_proc_macro_def): Likewise.
1380         * util/rust-hir-map.h: Update the function's prototype by
1381         removing the node id from the list of arguments.
1383 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1385         * resolve/rust-early-name-resolver-2.0.cc (Early::visit_attributes):
1386         Add proc macro handle retrieval for attribute and derive proc macros.
1388 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1390         * util/rust-hir-map.cc (Mappings::lookup_derive_proc_macro_def):
1391         Update function to accomodate new signature.
1392         (Mappings::lookup_bang_proc_macro_def): Likewise.
1393         (Mappings::lookup_attribute_proc_macro_def): Likewise.
1394         * util/rust-hir-map.h: Update function signatures.
1396 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1398         * expand/rust-macro-expand.h (struct MacroExpander): Update
1399         lookup function prototypes.
1400         * util/rust-hir-map.cc (Mappings::lookup_derive_proc_macro_invocation):
1401         Update lookup function according to new signature.
1402         (Mappings::lookup_bang_proc_macro_invocation): Likewise.
1403         (Mappings::lookup_attribute_proc_macro_invocation): Likewise.
1404         * util/rust-hir-map.h: Update function prototypes.
1406 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1408         * rust-backend.h
1409         (Backend::write_export_data): Remove.
1410         * rust-gcc.cc
1411         (Backend::write_export_data): Remove.
1413 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1415         * rust-backend.h
1416         (Backend::real_part_expression): Make non-virtual.
1417         (Backend::imag_part_expression): Likewise.
1418         (Backend::complex_expression): Likewise.
1419         (Backend::convert_expression): Likewise.
1420         (Backend::struct_field_expression): Likewise.
1421         (Backend::compound_expression): Likewise.
1422         (Backend::conditional_expression): Likewise.
1423         (Backend::negation_expression): Likewise.
1424         (Backend::arithmetic_or_logical_expression): Likewise.
1425         (Backend::arithmetic_or_logical_expression_checked): Likewise.
1426         (Backend::comparison_expression): Likewise.
1427         (Backend::lazy_boolean_expression): Likewise.
1428         (Backend::constructor_expression): Likewise.
1429         (Backend::array_constructor_expression): Likewise.
1430         (Backend::array_initializer): Likewise.
1431         (Backend::array_index_expression): Likewise.
1432         (Backend::call_expression): Likewise.
1433         (Gcc_backend::real_part_expression): Remove.
1434         (Gcc_backend::imag_part_expression): Remove.
1435         (Gcc_backend::complex_expression): Remove.
1436         (Gcc_backend::convert_expression): Remove.
1437         (Gcc_backend::struct_field_expression): Remove.
1438         (Gcc_backend::compound_expression): Remove.
1439         (Gcc_backend::conditional_expression): Remove.
1440         (Gcc_backend::negation_expression): Remove.
1441         (Gcc_backend::arithmetic_or_logical_expression): Remove.
1442         (Gcc_backend::arithmetic_or_logical_expression_checked): Remove.
1443         (Gcc_backend::comparison_expression): Remove.
1444         (Gcc_backend::lazy_boolean_expression): Remove.
1445         (Gcc_backend::constructor_expression): Remove.
1446         (Gcc_backend::array_constructor_expression): Remove.
1447         (Gcc_backend::array_initializer): Remove.
1448         (Gcc_backend::array_index_expression): Remove.
1449         (Gcc_backend::call_expression): Remove.
1450         * rust-gcc.cc
1451         (Gcc_backend::real_part_expression): Rename to ...
1452         (Backend::real_part_expression): ... here.
1453         (Gcc_backend::imag_part_expression): Rename to ...
1454         (Backend::imag_part_expression): ... here.
1455         (Gcc_backend::complex_expression): Rename to ...
1456         (Backend::complex_expression): ... here.
1457         (Gcc_backend::convert_expression): Rename to ...
1458         (Backend::convert_expression): ... here.
1459         (Gcc_backend::struct_field_expression): Rename to ...
1460         (Backend::struct_field_expression): ... here.
1461         (Gcc_backend::compound_expression): Rename to ...
1462         (Backend::compound_expression): ... here.
1463         (Gcc_backend::conditional_expression): Rename to ...
1464         (Backend::conditional_expression): ... here.
1465         (Gcc_backend::negation_expression): Rename to ...
1466         (Backend::negation_expression): ... here.
1467         (Gcc_backend::arithmetic_or_logical_expression): Rename to ...
1468         (Backend::arithmetic_or_logical_expression): ... here.
1469         (Gcc_backend::arithmetic_or_logical_expression_checked): Rename to ...
1470         (Backend::arithmetic_or_logical_expression_checked): ... here.
1471         (Gcc_backend::comparison_expression): Rename to ...
1472         (Backend::comparison_expression): ... here.
1473         (Gcc_backend::lazy_boolean_expression): Rename to ...
1474         (Backend::lazy_boolean_expression): ... here.
1475         (Gcc_backend::constructor_expression): Rename to ...
1476         (Backend::constructor_expression): ... here.
1477         (Gcc_backend::array_constructor_expression): Rename to ...
1478         (Backend::array_constructor_expression): ... here.
1479         (Gcc_backend::array_initializer): Rename to ...
1480         (Backend::array_initializer): ... here.
1481         (Gcc_backend::array_index_expression): Rename to ...
1482         (Backend::array_index_expression): ... here.
1483         (Gcc_backend::call_expression): Rename to ...
1484         (Backend::call_expression): ... here.
1486 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1488         * rust-session-manager.cc (Session::load_extern_crate): Change
1489         variable name, add temporaries and comments.
1491 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1493         * expand/rust-proc-macro.h: Change get_trait_name to get_name in
1494         order to be coherent with the others proc macro type name
1495         convention.
1496         * resolve/rust-toplevel-name-resolver-2.0.cc (insert_macros):
1497         Add a templated funtion that inserts a proc macro into the
1498         context and emit an error on failure.
1499         (TopLevel::visit): Change from manual insertion to a function
1500         call.
1502 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1504         * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit):
1505         Change to assertion.
1506         * util/rust-hir-map.cc (Mappings::lookup_derive_proc_macros):
1507         Add empty line.
1508         (Mappings::lookup_bang_proc_macros): Likewise.
1509         (Mappings::lookup_attribute_proc_macros): Likewise.
1511 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1513         * metadata/rust-extern-crate.cc (ExternCrate::ExternCrate):
1514         Update definition to allow Extern crate with no content (pure
1515         proc macros).
1516         (ExternCrate::ok): Panic on no content.
1517         (ExternCrate::load): Likewise.
1518         * metadata/rust-extern-crate.h: Update prototypes.
1519         * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::go):
1520         Remove macro resolution.
1521         (TopLevel::visit): Likewise.
1522         * resolve/rust-toplevel-name-resolver-2.0.h: Add visit prototype
1523         for extern crate.
1524         * rust-session-manager.cc (Session::load_extern_crate): Adapt
1525         content depending on the loaded crate's content.
1526         * util/rust-hir-map.cc (Mappings::lookup_derive_proc_macros):
1527         Change return type to optional because it is way more
1528         convenient.
1529         (Mappings::lookup_bang_proc_macros): Likewise.
1530         (Mappings::lookup_attribute_proc_macros): Likewise.
1531         * util/rust-hir-map.h: Update function prototypes.
1533 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1535         * metadata/rust-imports.cc (Import::try_package_in_directory):
1536         Remove error when some macro are found even if no import data is
1537         available.
1539 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1541         * ast/rust-ast.h (class BangProcMacro): Move class from here to
1542         rust-proc-macro.h. Also remove related functions.
1543         (class AttributeProcMacro): Likewise.
1544         (class CustomDeriveProcMacro): Likewise.
1545         (struct Crate): Remove proc macro vector members.
1546         * expand/rust-macro-expand.h (struct MacroExpander): Change the
1547         type to the newly created classes.
1548         * expand/rust-proc-macro.cc (BangProcMacro::BangProcMacro): Add
1549         constructor implementation.
1550         (AttributeProcMacro::AttributeProcMacro): Likewise.
1551         (CustomDeriveProcMacro::CustomDeriveProcMacro): Likewise.
1552         * expand/rust-proc-macro.h (class BangProcMacro): Move class to
1553         here.
1554         (class AttributeProcMacro): Likewise.
1555         (class CustomDeriveProcMacro): Likewise.
1556         * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::go):
1557         Change top level visitor to check mappings instead
1558         * rust-session-manager.cc (Session::load_extern_crate):
1559         Add back macro collection to mappings.
1560         * util/rust-hir-map.cc (Mappings::insert_derive_proc_macros):
1561         Update getter signature with new types.
1562         (Mappings::insert_bang_proc_macros): Likewise.
1563         (Mappings::insert_attribute_proc_macros): Likewise.
1564         (Mappings::lookup_derive_proc_macros): Likewise.
1565         (Mappings::lookup_bang_proc_macros): Likewise.
1566         (Mappings::lookup_attribute_proc_macros): Likewise.
1567         (Mappings::insert_derive_proc_macro_def): Likewise.
1568         (Mappings::insert_bang_proc_macro_def): Likewise.
1569         (Mappings::insert_attribute_proc_macro_def): Likewise.
1570         (Mappings::lookup_derive_proc_macro_def): Likewise.
1571         (Mappings::lookup_bang_proc_macro_def): Likewise.
1572         (Mappings::lookup_attribute_proc_macro_def): Likewise.
1573         (Mappings::insert_derive_proc_macro_invocation): Likewise.
1574         (Mappings::lookup_derive_proc_macro_invocation): Likewise.
1575         (Mappings::insert_bang_proc_macro_invocation): Likewise.
1576         (Mappings::lookup_bang_proc_macro_invocation): Likewise.
1577         (Mappings::insert_attribute_proc_macro_invocation): Likewise.
1578         (Mappings::lookup_attribute_proc_macro_invocation): Likewise.
1579         * util/rust-hir-map.h: Update function prototypes as well as map
1580         types.
1582 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1584         * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::go):
1585         Visit crate's newly stored proc macros.
1586         * rust-session-manager.cc (Session::load_extern_crate):
1587         Store proc macros in the parsed crate instead of a local
1588         variable to achieve mappings.
1590 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1592         * resolve/rust-early-name-resolver-2.0.cc (Early::visit_attributes):
1593         Change argument to reference.
1594         * resolve/rust-early-name-resolver-2.0.h: Update function
1595         prototype.
1597 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1599         * ast/rust-ast.h: Add getters.
1601 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1603         * ast/rust-ast.h (struct Crate): Add proc macro members.
1605 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1607         * ast/rust-ast.h (class BangProcMacro): Add new proc macro
1608         abstraction.
1609         (class AttributeProcMacro): Likewise.
1610         (class CustomDeriveProcMacro): Likewise.
1612 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1614         * resolve/rust-early-name-resolver-2.0.cc (Early::visit_attributes):
1615         Add function to handle attributes.
1616         (Early::visit): Override visitor functions.
1617         * resolve/rust-early-name-resolver-2.0.h: Add prototype.
1619 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1621         * ast/rust-ast.cc (Attribute::get_traits_to_derive): Convert
1622         tokenstream to path list.
1624 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1626         * ast/rust-ast.cc (Attribute::is_derive): Remove tokenstream
1627         condition.
1629 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1631         * ast/rust-ast.cc (Attribute::get_traits_to_derive): Change
1632         return type to a vector of references.
1633         * ast/rust-ast.h: Update constructor.
1634         * expand/rust-expand-visitor.cc (ExpandVisitor::expand_inner_stmts):
1635         Update function call.
1637 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1639         * ast/rust-ast.cc (Attribute::get_traits_to_derive): Add
1640         function as member function.
1641         * ast/rust-ast.h: Add prototype.
1642         * expand/rust-expand-visitor.cc (get_traits_to_derive): Remove
1643         function.
1644         (ExpandVisitor::expand_inner_stmts): Update function call.
1646 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1648         * ast/rust-ast.cc (Attribute::is_derive): Add member function.
1649         * ast/rust-ast.h: Likewise.
1650         * expand/rust-expand-visitor.cc (is_derive): Remove old
1651         function.
1652         (ExpandVisitor::expand_inner_stmts): Update function call.
1653         (ExpandVisitor::visit_inner_using_attrs): Likewise.
1655 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
1657         * backend/rust-compile-expr.cc (CompileExpr::visit): use a temp for the value
1659 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1661         * rust-backend.h
1662         (Backend::block): Make non-virtual.
1663         (Backend::block_add_statements): Likewise.
1664         (Gcc_backend::block): Remove.
1665         (Gcc_backend::block_add_statements): Remove.
1666         * rust-gcc.cc
1667         (Gcc_backend::block): Rename to ...
1668         (Backend::block): ... here.
1669         (Gcc_backend::block_add_statements): Rename to ...
1670         (Backend::block_add_statements): ... here.
1672 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
1674         * expand/rust-macro-expand.h: Change include directive with the
1675         new name.
1676         * expand/rust-proc-macro.h (RUST_PROC_MACRO_H): Likewise.
1677         * util/rust-hir-map.h: Likewise.
1678         * util/rust-token-converter.h: Likewise.
1679         * util/rust-token-converter.cc: Remove useless include
1680         directive.
1681         * Make-lang.in: Rename library.
1683 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1685         * rust-backend.h
1686         (Backend::init_statement): Make non-virtual.
1687         (Backend::assignment_statement): Likewise.
1688         (Backend::return_statement): Likewise.
1689         (Backend::if_statement): Likewise.
1690         (Backend::loop_expression): Likewise.
1691         (Backend::exit_expression): Likewise.
1692         (Backend::compound_statement): Likewise.
1693         (Backend::statement_list): Likewise.
1694         (Backend::exception_handler_statement): Likewise.
1695         (Gcc_backend::init_statement): Remove.
1696         (Gcc_backend::assignment_statement): Remove.
1697         (Gcc_backend::return_statement): Remove.
1698         (Gcc_backend::if_statement): Remove.
1699         (Gcc_backend::compound_statement): Remove.
1700         (Gcc_backend::statement_list): Remove.
1701         (Gcc_backend::exception_handler_statement): Remove.
1702         (Gcc_backend::loop_expression): Remove.
1703         (Gcc_backend::exit_expression): Remove.
1704         * rust-gcc.cc
1705         (Gcc_backend::init_statement): Rename to ...
1706         (Backend::init_statement): ... here.
1707         (Gcc_backend::assignment_statement): Rename to ...
1708         (Backend::assignment_statement): ... here.
1709         (Gcc_backend::return_statement): Rename to ...
1710         (Backend::return_statement): ... here.
1711         (Gcc_backend::exception_handler_statement): Rename to ...
1712         (Backend::exception_handler_statement): ... here.
1713         (Gcc_backend::if_statement): Rename to ...
1714         (Backend::if_statement): ... here.
1715         (Gcc_backend::loop_expression): Rename to ...
1716         (Backend::loop_expression): ... here.
1717         (Gcc_backend::exit_expression): Rename to ...
1718         (Backend::exit_expression): ... here.
1719         (Gcc_backend::compound_statement): Rename to ...
1720         (Backend::compound_statement): ... here.
1721         (Gcc_backend::statement_list): Rename to ...
1722         (Backend::statement_list): ... here.
1724 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1726         * rust-backend.h
1727         (Backend::function): Make non-virtual.
1728         (Backend::function_defer_statement): Likewise.
1729         (Backend::function_set_parameters): Likewise.
1730         (Backend::write_global_definitions): Likewise.
1731         (Backend::write_export_data): Likewise.
1732         (Gcc_backend::function): Remove.
1733         (Gcc_backend::function_defer_statement): Remove.
1734         (Gcc_backend::function_set_parameters): Remove.
1735         (Gcc_backend::write_global_definitions): Remove.
1736         (Gcc_backend::write_export_data): Remove.
1737         * rust-gcc.cc
1738         (Gcc_backend::function): Rename to ...
1739         (Backend::function): ... here.
1740         (Gcc_backend::function_defer_statement):
1741         Fix a qualified lookup of Backend::label and rename to ...
1742         (Backend::function_defer_statement): ... here.
1743         (Gcc_backend::function_set_parameters) Rename to ...
1744         (Backend::function_set_parameters): ... here.
1745         (Gcc_backend::write_global_definitions): Rename to ...
1746         (Backend::write_global_definitions): ... here.
1747         (Gcc_backend::write_export_data): Rename to ...
1748         (Backend::write_export_data): ... here.
1750 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
1752         * typecheck/rust-hir-inherent-impl-overlap.h:
1753         Added rich location and errorcode.
1754         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
1755         likewise.
1757 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
1759         * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
1760         Added error code.
1762 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1764         * rust-backend.h
1765         (Backend::zero_expression): Make non-virtual.
1766         (Backend::var_expression): Likewise.
1767         (Backend::integer_constant_expression): Likewise.
1768         (Backend::float_constant_expression): Likewise.
1769         (Backend::complex_constant_expression): Likewise.
1770         (Backend::string_constant_expression): Likewise.
1771         (Backend::char_constant_literal): Likewise.
1772         (Backend::wchar_constant_literal): Likewise.
1773         (Backend::boolean_constant_expression): Likewise.
1774         (Gcc_backend::zero_expression): Remove.
1775         (Gcc_backend::var_expression): Remove.
1776         (Gcc_backend::integer_constant_expression): Remove.
1777         (Gcc_backend::float_constant_expression): Remove.
1778         (Gcc_backend::complex_constant_expression): Remove.
1779         (Gcc_backend::string_constant_expression): Remove.
1780         (Gcc_backend::wchar_constant_expression): Remove.
1781         (Gcc_backend::char_constant_expression): Remove.
1782         (Gcc_backend::boolean_constant_expression): Remove.
1783         * rust-gcc.cc
1784         (Gcc_backend::zero_expression): Rename to ...
1785         (Backend::zero_expression): ... here.
1786         (Gcc_backend::var_expression): Rename to ...
1787         (Backend::var_expression): ... here.
1788         (Gcc_backend::integer_constant_expression): Rename to ...
1789         (Backend::integer_constant_expression): ... here.
1790         (Gcc_backend::float_constant_expression): Rename to ...
1791         (Backend::float_constant_expression): ... here.
1792         (Gcc_backend::complex_constant_expression): Rename to ...
1793         (Backend::complex_constant_expression): ... here.
1794         (Gcc_backend::string_constant_expression): Rename to ...
1795         (Backend::string_constant_expression): ... here.
1796         (Gcc_backend::wchar_constant_expression): Rename to ...
1797         (Backend::wchar_constant_expression): ... here.
1798         (Gcc_backend::char_constant_expression): Rename to ...
1799         (Backend::char_constant_expression): ... here.
1800         (Gcc_backend::boolean_constant_expression): Rename to ...
1801         (Backend::boolean_constant_expression): ... here.
1803 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1805         * rust-backend.h
1806         (Backend::global_variable): Make non-virtual.
1807         (Backend::global_variable_set_init): Likewise.
1808         (Backend::local_variable): Likewise.
1809         (Backend::parameter_variable): Likewise.
1810         (Backend::static_chain_variable): Likewise.
1811         (Backend::temporary_variable): Likewise.
1812         (Gcc_backend::global_variable): Remove.
1813         (Gcc_backend::global_variable_set_init): Remove.
1814         (Gcc_backend::local_variable): Remove.
1815         (Gcc_backend::parameter_variable): Remove.
1816         (Gcc_backend::static_chain_variable): Remove.
1817         (Gcc_backend::temporary_variable): Remove.
1818         (Gcc_backend::non_zero_size_type): Move to ...
1819         (Backend::non_zero_size_type): ... here.
1820         (Gcc_backend::convert_tree): Move to ...
1821         (Backend::convert_tree): ... here.
1822         * rust-gcc.cc
1823         (Gcc_backend::non_zero_size_type): Rename to ...
1824         (Backend::non_zero_size_type): ... here.
1825         (Gcc_backend::convert_tree): Rename to ...
1826         (Backend::convert_tree): ... here.
1827         (Gcc_backend::global_variable): Rename to ...
1828         (Backend::global_variable): ... here.
1829         (Gcc_backend::global_variable_set_init): Rename to ...
1830         (Backend::global_variable_set_init): ... here.
1831         (Gcc_backend::local_variable): Rename to ...
1832         (Backend::local_variable): ... here.
1833         (Gcc_backend::parameter_variable): Rename to ...
1834         (Backend::parameter_variable): ... here.
1835         (Gcc_backend::static_chain_variable): Rename to ...
1836         (Backend::static_chain_variable): ... here.
1837         (Gcc_backend::temporary_variable): Rename to ...
1838         (Backend::temporary_variable): ... here.
1840 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
1842         * checks/errors/privacy/rust-privacy-reporter.cc
1843         (PrivacyReporter::check_for_privacy_violation):
1844         Added errorcode & richlocation.
1846 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1848         * rust-backend.h
1849         (Backend::debug): Make non-virtual.
1850         (Backend::get_identifier_node): Likewise.
1851         (Gcc_backend::debug): Remove.
1852         (Gcc_backend::get_identifier_node): Remove.
1853         * rust-gcc.cc
1854         (Gcc_backend::debug): Rename to ...
1855         (Backend::debug): ... here.
1856         (Gcc_backend::get_identifier_node): Rename to ...
1857         (Backend::get_identifier_node): ... here.
1859 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1861         * typecheck/rust-hir-type-check-expr.cc
1862         (TypeCheckExpr::visit): Expect if conditions to have type bool.
1864 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1866         * rust-backend.h
1867         (Backend::label): Make non-virtual.
1868         (Backend::label_definition_statement): Likewise.
1869         (Backend::goto_statement): Likewise.
1870         (Backend::label_address): Likewise.
1871         (Gcc_backend::label): Remove.
1872         (Gcc_backend::label_definition_statement): Remove.
1873         (Gcc_backend::goto_statement): Remove.
1874         (Gcc_backend::label_address): Remove.
1875         * rust-gcc.cc
1876         (Gcc_backend::label): Rename to ...
1877         (Backend::label): ... here.
1878         (Gcc_backend::label_definition_statement): Rename to ...
1879         (Backend::label_definition_statement): ... here.
1880         (Gcc_backend::goto_statement): Rename to ...
1881         (Backend::goto_statement): ... here.
1882         (Gcc_backend::label_address): Rename to ...
1883         (Backend::label_address): ... here.
1885 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1887         * backend/rust-constexpr.cc
1888         (struct constexpr_fundef): Rename to ...
1889         (struct rust_constexpr_fundef): ... here.
1890         (struct constexpr_call): Rename to ...
1891         (struct rust_constexpr_call): ... here.
1893 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
1895         * lex/rust-input-source.h: Move constants from here...
1896         * util/rust-codepoint.h (struct Codepoint): ... to here
1897         * util/rust-attributes.cc (check_no_mangle_function): New function.
1898         (AttributeChecker::visit): Use it.
1899         * util/rust-unicode.cc (is_ascii_only): New function.
1900         * util/rust-unicode.h (is_ascii_only): Likewise.
1901         * backend/rust-mangle.cc (legacy_mangle_name): Use it.
1902         * util/rust-punycode.cc (extract_basic_string): Likewise.
1903         * lex/rust-lex.cc (Lexer::parse_byte_char): Likewise.
1905 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
1907         * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit):
1908         Added richlocation & error code.
1910 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1912         * typecheck/rust-hir-type-check-expr.cc
1913         (TypeCheckExpr::resolve_fn_trait_call): Add TODO comment.
1914         * typecheck/rust-tyty-bounds.cc
1915         (TypeBoundPredicate::TypeBoundPredicate):
1916         Add assertions, new error constructor.
1917         (TypeBoundPredicate::error): Use new error constructor.
1918         * typecheck/rust-tyty.h
1919         (struct TypeBoundPredicate::mark_is_error): New.
1920         (TypeBoundPredicate::TypeBoundPredicate):
1921         Add new error constructor.
1923 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
1925         * rust-backend.h:
1926         (Backend::wchar_type): Make non-virtual.
1927         (Backend::get_pointer_size): Likewise.
1928         (Backend::raw_str_type): Likewise.
1929         (Backend::integer_type): Likewise.
1930         (Backend::float_type): Likewise.
1931         (Backend::complex_type): Likewise.
1932         (Backend::pointer_type): Likewise.
1933         (Backend::reference_type): Likewise.
1934         (Backend::immutable_type): Likewise.
1935         (Backend::function_type): Likewise.
1936         (Backend::function_type_varadic): Likewise.
1937         (Backend::function_ptr_type): Likewise.
1938         (Backend::struct_type): Likewise.
1939         (Backend::union_type): Likewise.
1940         (Backend::array_type): Likewise.
1941         (Backend::named_type): Likewise.
1942         (Backend::type_size): Likewise.
1943         (Backend::type_alignment): Likewise.
1944         (Backend::type_field_alignment): Likewise.
1945         (Backend::type_field_offset): Likewise.
1946         (Gcc_backend::wchar_type): Remove.
1947         (Gcc_backend::get_pointer_size): Remove.
1948         (Gcc_backend::raw_str_type): Remove.
1949         (Gcc_backend::integer_type): Remove.
1950         (Gcc_backend::float_type): Remove.
1951         (Gcc_backend::complex_type): Remove.
1952         (Gcc_backend::pointer_type): Remove.
1953         (Gcc_backend::reference_type): Remove.
1954         (Gcc_backend::immutable_type): Remove.
1955         (Gcc_backend::function_type): Remove.
1956         (Gcc_backend::function_type_varadic): Remove.
1957         (Gcc_backend::function_ptr_type): Remove.
1958         (Gcc_backend::struct_type): Remove.
1959         (Gcc_backend::union_type): Remove.
1960         (Gcc_backend::array_type): Remove.
1961         (Gcc_backend::named_type): Remove.
1962         (Gcc_backend::type_size): Remove.
1963         (Gcc_backend::type_alignment): Remove.
1964         (Gcc_backend::type_field_alignment): Remove.
1965         (Gcc_backend::type_field_offset): Remove.
1966         (Gcc_backend::fill_in_fields): Move to ...
1967         (Backend::fill_in_fields): ... here.
1968         (Gcc_backend::fill_in_array): Move to ...
1969         (Backend::fill_in_array): ... here.
1970         * rust-gcc.cc
1971         (Gcc_backend::wchar_type): Rename to ...
1972         (Backend::wchar_type): ... here.
1973         (Gcc_backend::get_pointer_size): Rename to ...
1974         (Backend::get_pointer_size): ... here.
1975         (Gcc_backend::raw_str_type): Rename to ...
1976         (Backend::raw_str_type): ... here.
1977         (Gcc_backend::integer_type): Rename to ...
1978         (Backend::integer_type): ... here.
1979         (Gcc_backend::float_type): Rename to ...
1980         (Backend::float_type): ... here.
1981         (Gcc_backend::complex_type): Rename to ...
1982         (Backend::complex_type): ... here.
1983         (Gcc_backend::pointer_type): Rename to ...
1984         (Backend::pointer_type): ... here.
1985         (Gcc_backend::reference_type): Rename to ...
1986         (Backend::reference_type): ... here.
1987         (Gcc_backend::immutable_type): Rename to ...
1988         (Backend::immutable_type): ... here.
1989         (Gcc_backend::function_type): Rename to ...
1990         (Backend::function_type): ... here.
1991         (Gcc_backend::function_type_varadic): Rename to ...
1992         (Backend::function_type_varadic): ... here.
1993         (Gcc_backend::function_ptr_type): Rename to ...
1994         (Backend::function_ptr_type): ... here.
1995         (Gcc_backend::struct_type): Rename to ...
1996         (Backend::struct_type): ... here.
1997         (Gcc_backend::union_type): Rename to ...
1998         (Backend::union_type): ... here.
1999         (Gcc_backend::fill_in_fields): Rename to ...
2000         (Backend::fill_in_fields): ... here.
2001         (Gcc_backend::array_type): Rename to ...
2002         (Backend::array_type): ... here.
2003         (Gcc_backend::fill_in_array): Rename to ...
2004         (Backend::fill_in_array): ... here.
2005         (Gcc_backend::named_type): Rename to ...
2006         (Backend::named_type): ... here.
2007         (Gcc_backend::type_size): Rename to ...
2008         (Backend::type_size): ... here.
2009         (Gcc_backend::type_alignment): Rename to ...
2010         (Backend::type_alignment): ... here.
2011         (Gcc_backend::type_field_alignment): Rename to ...
2012         (Backend::type_field_alignment): ... here.
2013         (Gcc_backend::type_field_offset): Rename to ...
2014         (Backend::type_field_offset): ... here.
2016 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
2018         * backend/rust-compile-intrinsic.cc (move_val_init_handler): mark as side-effects
2020 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
2022         * backend/rust-compile-intrinsic.cc (uninit_handler): Update fndecl attributes
2024 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
2026         * backend/rust-compile-intrinsic.cc (op_with_overflow_inner): fix use before init
2028 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
2030         * backend/rust-compile-intrinsic.cc (enter_intrinsic_block): take the locals vector
2031         (uninit_handler): make a temp variable and use the address of it
2033 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2035         * resolve/rust-early-name-resolver-2.0.cc (Early::visit):
2036         Collect error instead of lambda.
2037         * resolve/rust-early-name-resolver-2.0.h (std::function<void):
2038         Remove type alias.
2039         * rust-diagnostics.h: Change collection type.
2040         * rust-session-manager.cc (Session::expansion): Change
2041         collection container.
2043 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2045         * resolve/rust-early-name-resolver-2.0.cc (Early::visit):
2046         Collect error instead of emitting it. Also add invocation
2047         registration.
2048         * resolve/rust-early-name-resolver-2.0.h (std::function<void):
2049         Add type definition for collection.
2050         * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit):
2051         Register macro rule definition in mappings.
2052         * rust-session-manager.cc (Session::expansion): Add macro
2053         resolve error collection.
2055 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2057         * config-lang.in:
2058         Add "backend/rust-tree.h" and "backend/rust-tree.h" to gtfiles.
2059         * backend/rust-tree.cc: Include new header generated by gengtype.
2060         * backend/rust-tree.h
2061         (struct language_function): Add TODO.
2062         * rust-lang.cc:
2063         Include "rust-tree.h".
2064         (struct lang_type): Remove duplicate definition.
2065         (struct lang_decl): Likewise.
2066         (struct lang_identifier): Likewise.
2067         (struct language_function): Likewise.
2069 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2071         * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
2072         Added error code and rich location.
2074 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2076         * backend/rust-tree.h
2077         (struct rust_cp_class_binding): Fork from gcc/cp/name_lookup.h.
2078         (struct rust_cp_binding_level): Likewise.
2079         (struct named_label_entry): Remove declaration...
2080         (struct rust_named_label_entry): ... and fork definition from gcc/cp/decl.cc.
2082 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2084         * rust-diagnostics.cc (rust_be_error_at): Added overload function.
2085         (rust_error_at): non-const `rich_location *` function.
2086         * rust-diagnostics.h (rust_error_at): Implementation of overloaded
2087         function.
2088         (rust_be_error_at): likewise.
2089         * rust_error_codes.def: Added GNU license.
2091 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2093         * typecheck/rust-tyty.cc (BaseType::satisfies_bound):
2094         Added errorcode and user-friendly error message.
2096 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2098         * backend/rust-tree.cc
2099         (resort_data): Fork from c++ frontend.
2100         (resort_member_name_cmp): Likewise.
2101         (resort_type_member_vec): Likewise.
2102         * backend/rust-tree.h
2103         (resort_type_member_vec): Likewise.
2105 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2107         * backend/rust-tree.cc
2108         (struct conv_type_hasher): Rename to ...
2109         (struct rust_conv_type_hasher): ... here.
2110         (struct cplus_array_hasher): Rename to ...
2111         (struct rust_cplus_array_hasher): ... here.
2112         (struct source_location_table_entry_hash): Rename to ...
2113         (struct rust_source_location_table_entry_hash): ... here.
2114         * backend/rust-tree.h
2115         (struct named_decl_hash): Rename to ...
2116         (struct rust_named_decl_hash): ... here.
2117         (struct cxx_saved_binding): Rename to ...
2118         (struct rust_cxx_saved_binding): ... here.
2119         (struct named_label_hash): Rename to ...
2120         (struct rust_named_label_hash): ... here.
2121         (struct tree_pair_s): Rename to ...
2122         (struct rust_tree_pair_s): ... here.
2123         (struct tree_pair_p): Rename to ...
2124         (struct rust_tree_pair_p): ... here.
2126 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2128         * backend/rust-tree.cc
2129         (Rust::gt_pch_nx): Move external function declaration ...
2130         (gt_pch_nx): ... out of Rust namespace.
2131         * backend/rust-tree.h
2132         (OVL_FIRST): Qualify function name.
2134 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
2136         * backend/rust-compile-type.cc (TyTyResolveCompile::visit): do a final lookup
2138 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2140         * parse/rust-parse-impl.h (Parser::parse_generic_params):
2141         Added more user friendly message.
2143 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2145         * expand/rust-macro-builtins.cc
2146         (MacroBuiltin::include_str_handler): Use vector::data.
2148 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2150         * typecheck/rust-hir-type-check-type.cc:
2151         Added last variant name, errorcode & rich location. for enum candidates.
2153 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2155         * backend/rust-tree.h
2156         (struct stmt_tree_s): Remove.
2157         (typedef stmt_tree): Remove.
2158         (c_language_function::x_stmt_tree): Remove.
2159         (saved_scope::x_stmt_tree): Remove.
2160         (lang_decl_fn::pending_inline_p): Remove.
2161         (lang_decl_fn::spare): Adjust size.
2162         (lang_decl_fn::pending_inline_info): Remove.
2164 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2166         * backend/rust-constexpr.cc:
2167         Include gt-rust-rust-constexpr.h.
2168         (struct constexpr_call_hasher): Rename to ...
2169         (struct rust_constexpr_call_hasher): ... here.
2170         (struct constexpr_fundef_hasher): Rename to ...
2171         (struct rust_constexpr_fundef_hasher): ... here.
2172         * config-lang.in: Add rust-constexpr.cc to gtfiles.
2174 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
2176         * backend/rust-mangle.cc (v0_add_identifier): Added punycode encoding
2177         (v0_mangle_item): Likewise.
2178         * lex/rust-lex.cc (assert_source_content): Change type
2179         (test_buffer_input_source): Change type
2180         (test_file_input_source): Change type
2181         * resolve/rust-ast-resolve-toplevel.h: fix typo
2182         * rust-session-manager.cc (Session::load_extern_crate): fix typo
2183         * util/rust-canonical-path.h: fix typo
2184         * util/rust-hir-map.cc (NodeMapping::get_error): fix typo
2185         (Mappings::Mappings): fix typo
2186         * util/rust-mapping-common.h (UNKNOWN_CREATENUM): fix typo
2187         (UNKNOWN_CRATENUM): Change 0 to UINT32_MAX
2189 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2191         * typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait):
2192         Updated errorcode & more userfriendly message.
2194 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2196         * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit):
2197         Added more helpful error message.
2199 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2201         * typecheck/rust-hir-path-probe.h:
2202         Fixes issue & added rich location message.
2203         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
2204         Added rich location and error code.
2206 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2208         * lex/rust-lex.cc (Lexer::parse_decimal_int_or_float): Only
2209         accept digits after a dot instead of accepting any float
2210         member.
2212 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2214         * ast/rust-pattern.h: No need of assertion, we are handling it.
2215         * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit):
2216         Added check which emits error instead of using assertion.
2217         * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
2218         Added rich location and error code.
2220 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2222         * backend/rust-compile-base.cc (HIRCompileBase::handle_inline_attribute_on_fndecl):
2223         Added rich_location & error code.
2225 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2227         * parse/rust-parse-impl.h (Parser::parse_trait):
2228         added errorcode & updated error message.
2230 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2232         * parse/rust-parse-impl.h (Parser::parse_outer_attribute):
2233         Added errorcode & updated error function.
2235 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2237         * rust-diagnostics.cc (va_constructor):
2238         Added constructor for all possible cases.
2239         (Error::Error): Updated error struct
2240         for all possible cases.
2241         * rust-diagnostics.h (struct Error):
2242         Updated error struct to support error
2243         code & rich location support.
2245 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2247         * backend/rust-compile-base.cc (HIRCompileBase::handle_inline_attribute_on_fndecl):
2248         Added rich_location & error code.
2250 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
2252         * rust-diagnostics.cc: Switch from new[] to xcalloc
2254 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
2256         * util/make-rust-unicode.py: Add type annotation
2258 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
2260         * backend/rust-compile-intrinsic.cc (check_for_cached_intrinsic):
2261         simplify this cached intrinsic check
2262         * backend/rust-mangle.cc (legacy_mangle_item): use new interface
2263         * typecheck/rust-tyty.h: new managle helper
2265 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
2267         * backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address):
2268         use the single candidate
2270 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
2272         * hir/rust-hir-dump.cc (Dump::visit): Remove useless if/else
2273         already handled by visit_field.
2275 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2277         * util/rust-punycode.cc: Add CHECKING_P guard.
2279 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
2281         * backend/rust-mangle.cc (legacy_mangle_name): Use Unicode escape
2283 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
2285         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): remove hack
2287 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2289         * expand/rust-proc-macro-invoc-lexer.cc
2290         (ProcMacroInvocLexer::skip_token): Remove.
2291         * expand/rust-proc-macro-invoc-lexer.h:
2292         Include "rust-macro-invoc-lexer.h".
2293         (class ProcMacroInvocLexer):
2294         Extend MacroInvocLexerBase.
2296 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
2298         * lex/rust-codepoint.h: Moved to...
2299         * util/rust-codepoint.h: ...here.
2300         * lex/rust-input-source.h: Add missing license
2301         * util/rust-unicode.cc: Add missing license
2302         * util/rust-punycode.cc (extract_basic_string): Remove constant
2304 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
2306         * expand/rust-macro-expand.h: Keep optional references for last_def
2307         and last_invoc.
2308         * expand/rust-macro-expand.cc (MacroExpander::expand_invoc): Store
2309         optional references.
2310         * rust-session-manager.cc (Session::expansion): Use tl::optional's APIs
2311         for better checking.
2313 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
2315         * hir/rust-hir-dump.h (do_ifexpr): New.
2316         * hir/rust-hir-dump.cc (Dump::do_ifexpr): New.
2317         (Dump::visit): Use do_ifexpr and visit_field
2319 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2321         * typecheck/rust-casts.cc (TypeCastRules::emit_cast_error):
2322         Refactored ErrorCodes & error messages.
2324 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2326         * backend/rust-compile-base.cc:
2327         Added ErrorCode.
2329 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2331         * hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_qualifiers):
2332         called error function.
2333         (ASTLoweringBase::lower_extern_block): likewise.
2335 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2337         * ast/rust-ast-collector.cc: Adjust formatting.
2338         * checks/errors/rust-feature-gate.cc: Add trailing newline.
2339         * rust-diagnostics.h: Remove old comment.
2341 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2343         * rust-gcc.cc
2344         (Gcc_backend::struct_type): Remove references to "this".
2345         (Gcc_backend::union_type): Likewise.
2346         (Gcc_backend::array_type): Likewise.
2347         (Gcc_backend::wchar_constant_expression): Likewise.
2348         (Gcc_backend::convert_expression): Likewise.
2349         (Gcc_backend::constructor_expression): Likewise.
2350         (Gcc_backend::array_initializer): Likewise.
2351         (Gcc_backend::assignment_statement): Likewise.
2352         (Gcc_backend::global_variable): Likewise.
2353         (Gcc_backend::temporary_variable): Likewise.
2354         (Gcc_backend::function_defer_statement): Likewise.
2356 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
2358         * Make-lang.in: Add rust-punycode.o.
2359         * rust-lang.cc (run_rust_tests): Add selftest.
2360         * util/rust-punycode.cc: New file.
2361         * util/rust-punycode.h: New file.
2363 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2365         * backend/rust-compile.cc (HIRCompileBase::verify_array_capacities):
2366         Added ErrorCode.
2368 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2370         * typecheck/rust-hir-type-check.cc (TypeResolution::Resolve):
2371         added errorcode.
2373 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2375         * rust-backend.h
2376         (Backend::error_variable): Remove.
2377         (Gcc_backend::error_variable): Move to ...
2378         * rust-gcc.cc
2379         (Bvariable::error_variable): ... here ...
2380         * rust-gcc.h
2381         (Bvariable::error_variable): ... and declare here.
2382         (Gcc_backend::global_variable): Update error_variable call.
2383         (Gcc_backend::local_variable): Likewise.
2384         (Gcc_backend::parameter_variable): Likewise.
2385         (Gcc_backend::static_chain_variable): Likewise.
2386         (Gcc_backend::temporary_variable): Likewise.
2387         * backend/rust-compile-extern.h
2388         (CompileExternItem::visit): Likewise.
2389         * backend/rust-compile-fnparam.cc
2390         (CompileFnParam::CompileFnParam): Likewise.
2392 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2394         * backend/rust-compile-type.cc
2395         (TyTyResolveCompile::visit): Inline Backend::bool_type call.
2396         * rust-backend.h
2397         (Backend::bool_type): Remove.
2398         (Backend::char_type): Remove.
2399         (Gcc_backend::bool_type): Remove.
2400         (Gcc_backend::char_type): Remove.
2401         * rust-gcc.cc
2402         (Gcc_backend::char_constant_expression): Inline Backend::char_type call.
2404 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
2406         * lex/rust-lex.cc (assert_source_content): Fix namespace specifier
2407         (test_buffer_input_source): Likewise.
2408         (test_file_input_source): Likewise.
2409         * lex/rust-lex.h: Move InputSource ...
2410         * lex/rust-input-source.h: ... to here. (New file)
2411         * lex/rust-token.cc (nfc_normalize_token_string): New function
2412         * lex/rust-token.h (nfc_normalize_token_string): New function
2413         * rust-lang.cc (run_rust_tests): Modify order of selftests.
2414         * rust-session-manager.cc (validate_crate_name): Modify interface of Utf8String.
2415         * util/rust-unicode.cc (lookup_cc): Modify codepoint_t typedef.
2416         (lookup_recomp): Likewise.
2417         (recursive_decomp_cano): Likewise.
2418         (decomp_cano): Likewise.
2419         (sort_cano): Likewise.
2420         (compose_hangul): Likewise.
2421         (assert_normalize): Likewise.
2422         (Utf8String::nfc_normalize): New function.
2423         * util/rust-unicode.h: Modify interface of Utf8String.
2425 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2427         * resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go):
2428         Added ErrorCode.
2430 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2432         * util/rust-common.h (enum_to_str): Remove extra semicolon after
2433         the function.
2435 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2437         * checks/errors/rust-const-checker.cc (ConstChecker::visit):
2438         Use of mutable reference in constant functions.
2439         * checks/errors/rust-feature-gate.cc (FeatureGate::gate):
2440         ErrorCode for intrinsics are subject to change.
2442 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2444         * checks/errors/rust-const-checker.cc (ConstChecker::check_function_call):
2445         Added errorcode.
2447 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2449         * typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args):
2450         Added errorcode.
2452 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
2454         * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit): Declare
2455         macros in the current rib if they are macros 2.0.
2457 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
2459         * ast/rust-macro.h: Add new method to `MacroRulesDefinition` to allow
2460         getting the `MacroKind` contained.
2462 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
2464         * rust-session-manager.cc
2465         (Session::expansion): Use new `Early` name resolution 2.0 pass
2467 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
2469         * Make-lang.in: Add new object file.
2470         * resolve/rust-early-name-resolver-2.0.cc: New file.
2471         * resolve/rust-early-name-resolver-2.0.h: New file.
2473 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
2475         * resolve/rust-default-resolver.cc
2476         (DefaultResolver::visit): Visit CallExpr and MethodCallExpr properly.
2477         * resolve/rust-default-resolver.h: Switch "node" to plural in documentation.
2479 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
2481         * resolve/rust-toplevel-name-resolver-2.0.cc
2482         (TopLevel::insert_or_error_out): Fix format string.
2483         (is_macro_export): New method.
2484         (TopLevel::visit): Handle macro definitions.
2486 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
2488         * resolve/rust-name-resolution-context.cc
2489         (Resolver::insert): Do not call into `rust_unreachable` when resolving
2490         macros anymore.
2492 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
2494         * resolve/rust-forever-stack.h
2495         (insert_at_root): New method.
2496         (resolve_path): New method.
2497         (reverse_iter): Iterate on `Node`s instead of `Rib`s
2498         * resolve/rust-forever-stack.hxx: Add path resolution.
2500 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
2502         * resolve/rust-rib.h: Add shadowing parameter. Make kind field public.
2503         * resolve/rust-rib.cc (Rib::insert): Likewise.
2505 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2507         * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit):
2508         refactored message and called error function.
2510 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2512         * checks/errors/rust-feature-gate.cc (FeatureGate::check):
2513         errorcode support for unknown feature.
2515 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2517         * typecheck/rust-unify.cc (UnifyRules::emit_type_mismatch):
2518         refactored & called error function.
2520 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
2522         * expand/rust-macro-builtins.cc
2523         (load_file_bytes): Return a tl::optional.
2524         (MacroBuiltin::include_byte_handler): Adjust and check file was
2525         correctly opened.
2526         (MacroBuiltin::include_str_handler): Likewise.
2528 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
2530         * resolve/rust-toplevel-name-resolver-2.0.h
2531         (class TopLevel): Inherit from DefaultResolver
2532         * resolve/rust-toplevel-name-resolver-2.0.cc
2533         (TopLevel::TopLevel): Remove unecessary methods
2535 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
2537         * Make-lang.in: Add new object file.
2538         * resolve/rust-default-resolver.cc: New file.
2539         * resolve/rust-default-resolver.h: New file.
2541 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
2543         * util/rust-unicode.cc (decomp_cano): Decompose Hangul.
2544         (sort_cano): Fix bounds check.
2545         (recomp): use `compose_hangul`.
2546         (compose_hangul): Compose Hangul.
2547         (rust_utf8_normalize_test): Add tests.
2549 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
2551         * resolve/rust-forever-stack.hxx: assert() -> rust_assert()
2553 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
2555         * Make-lang.in: Add new object file.
2556         * resolve/rust-toplevel-name-resolver-2.0.cc: New file.
2557         * resolve/rust-toplevel-name-resolver-2.0.h: New file.
2559 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
2561         * Make-lang.in: Add new object file.
2562         * resolve/rust-name-resolution-context.cc: New file.
2563         * resolve/rust-name-resolution-context.h: New file.
2565 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2567         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
2568         called error function.
2570 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2572         * expand/rust-macro-invoc-lexer.cc
2573         (MacroInvocLexer::skip_token): Remove.
2574         * expand/rust-macro-invoc-lexer.h
2575         (class MacroInvocLexer): Extend MacroInvocLexerBase.
2577 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
2579         * ast/rust-ast-fragment.cc (Fragment::create_empty): New.
2580         * ast/rust-ast-fragment.h (MacroTranscriberFunc): New.
2581         * ast/rust-macro.h (MacroRulesDefinition): Use MacroTranscriberFunc.
2582         * expand/rust-macro-builtins.cc
2583         (MacroBuiltin::builtin_transcribers): likewise.
2584         (MacroBuiltin::assert_handler): Return optional.
2585         (MacroBuiltin::file_handler): Likewise.
2586         (MacroBuiltin::column_handler): Likewise.
2587         (MacroBuiltin::include_bytes_handler): Likewise.
2588         (MacroBuiltin::include_str_handler): Likewise.
2589         (MacroBuiltin::compile_error_handler): Likewise.
2590         (MacroBuiltin::concat_handler): Likewise.
2591         (MacroBuiltin::env_handler): Likewise.
2592         (MacroBuiltin::cfg_handler): Likewise.
2593         (MacroBuiltin::include_handler): Likewise.
2594         (MacroBuiltin::line_handler): Likewise.
2595         (MacroBuiltin::stringify_handler): Likewise.
2596         (MacroBuiltin::sorry): Likewise.
2597         * expand/rust-macro-builtins.h (builtin_transcribers): Use
2598         MacroTranscriberFunc.
2599         (assert_handler): Return optional.
2600         (file_handler): Likewise.
2601         (column_handler): Likewise.
2602         (include_bytes_handler): Likewise.
2603         (include_str_handler): Likewise.
2604         (compile_error_handler): Likewise.
2605         (concat_handler): Likewise.
2606         (env_handler): Likewise.
2607         (cfg_handler): Likewise.
2608         (include_handler): Likewise.
2609         (line_handler): Likewise.
2610         (stringify_handler): Likewise.
2611         (sorry): Likewise.
2612         * expand/rust-macro-expand.cc (MacroExpander::expand_invoc):
2613         Adjust to transcribers returning optional.
2615 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
2617         * typecheck/rust-hir-trait-resolve.cc (TraitItemReference::resolve_item):
2618         always resolve the type even when its an a mandatory trait item
2619         * typecheck/rust-hir-type-check-type.cc (TypeCheckType::resolve_root_path):
2620         Add check for enum candidates otherwise you get undefined behaviour
2622 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
2624         * lex/rust-codepoint.h: Add comment
2625         * lex/rust-lex.h: New method to get decoded characters
2626         * rust-session-manager.cc (validate_crate_name): Modify unicode check
2627         (rust_crate_name_validation_test): Add testcases
2628         * util/rust-unicode.h (RUST_UNICODE_H): New class Utf8String.
2629         (class Utf8String): New class.
2630         * util/rust-unicode.cc (binary_search_sorted_array): Add comment.
2631         (recursive_decomp_cano): Add comment.
2632         (recomp): Remove dead code.
2633         (dump_string): Removed.
2635 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2637         * util/rust-unicode.cc: Add CHECKING_P guard.
2639 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
2641         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
2642         We need to check if a function context exists
2644 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
2646         * expand/rust-proc-macro.cc (literal_from_string): update Lexer constructor
2647         (tokenstream_from_string): likewise
2648         * lex/rust-lex.cc (Lexer::Lexer): likewise
2649         * lex/rust-lex.h: pass through Linemap
2650         * parse/rust-cfg-parser.cc (parse_cfg_option): likewise
2651         * rust-session-manager.cc (Session::load_extern_crate): likewise
2652         * typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait):
2653         dont apply Sized on self
2654         * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::get_marker_predicate): new
2655         * typecheck/rust-hir-type-check-base.h: add prototype
2656         * typecheck/rust-hir-type-check-type.cc (TypeResolveGenericParam::Resolve): apply Sized
2657         (TypeResolveGenericParam::visit): likewise
2658         * typecheck/rust-hir-type-check-type.h: update prototypes
2659         * typecheck/rust-typecheck-context.cc: remove bad assertions
2660         * typecheck/rust-tyty-bounds.cc (TypeBoundsProbe::assemble_sized_builtin): cleanup
2661         (TypeCheckBase::get_predicate_from_bound): apply sized rules properly
2662         * util/rust-hir-map.cc (Mappings::lookup_trait_item_lang_item): helpers
2663         (Mappings::get_lang_item): likewise
2664         * util/rust-hir-map.h: likewise
2665         * util/rust-token-converter.cc (from_ident): update lexer ctor
2666         (from_punct): likewise
2668 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
2670         * typecheck/rust-hir-path-probe.cc: track regular polarity
2671         * typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait): likewise
2672         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): likewise
2673         * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit): likewise
2674         * typecheck/rust-tyty-bounds.cc (TypeCheckBase::get_predicate_from_bound): likewise
2675         (TypeBoundPredicate::TypeBoundPredicate): update ctor
2676         (TypeBoundPredicate::operator=): update copy assignment ctor
2677         (TypeBoundPredicate::error): update error node
2678         * typecheck/rust-tyty.h: add polarity field to predicate
2680 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
2682         * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): use new BoundPolarity enum
2683         * hir/rust-ast-lower-type.cc (ASTLoweringTypeBounds::visit): likewise
2684         * hir/rust-hir-dump.cc (BoundPolarityString): new helper
2685         (Dump::visit): update hir dump
2686         * hir/tree/rust-hir-item.h (class ImplBlock): likewise
2687         * hir/tree/rust-hir-type.h (class TraitBound): likewise
2688         * hir/tree/rust-hir.cc (TraitBound::as_string): fix as string
2689         * util/rust-common.h (enum Polarity): add new anti bound
2690         (enum BoundPolarity): likewise
2691         * util/rust-hir-map.cc (Mappings::Mappings): update naming
2693 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2695         * rust-backend.h: Include "rust-gcc.h".
2696         (class Gcc_backend): Move to ...
2697         * rust-gcc.cc (class Gcc_backend): ... here.
2699 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
2701         * typecheck/rust-hir-type-check-item.cc: add is_error check
2703 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
2705         * Make-lang.in: Add rust-unicode.o
2706         * rust-lang.cc (run_rust_tests): Add test.
2707         * rust-system.h: Include <array>
2708         * util/make-rust-unicode.py: Generater of rust-unicode-data.h.
2709         * util/rust-unicode-data.h: Auto-generated file.
2710         * util/rust-unicode.cc: New file.
2711         * util/rust-unicode.h: New file.
2713 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
2715         * rust-diagnostics.cc: Rework `make_description` and `make_url` functions.
2716         * rust-diagnostics.h: Specify ErrorCode's underlying type,
2717         remove error_codes_strings table.
2718         * rust_error_codes.def: New file.
2720 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2722         * rust-location.h (typedef Location): Remove.
2723         * expand/rust-proc-macro.cc
2724         (register_callback): Replace Location constructor with UNDEF_LOCATION.
2725         * ast/rust-ast-collector.h: Replace Location with location_t.
2726         * checks/errors/privacy/rust-privacy-reporter.cc: Likewise.
2727         * checks/errors/privacy/rust-privacy-reporter.h: Likewise.
2728         * checks/errors/privacy/rust-pub-restricted-visitor.cc: Likewise.
2729         * checks/errors/privacy/rust-pub-restricted-visitor.h: Likewise.
2730         * checks/errors/rust-feature-gate.cc: Likewise.
2731         * checks/errors/rust-feature-gate.h: Likewise.
2732         * metadata/rust-imports.h: Likewise.
2733         * resolve/rust-ast-resolve-path.h: Likewise.
2734         * resolve/rust-name-resolver.h: Likewise.
2735         * rust-backend.h: Likewise.
2736         * rust-diagnostics.h: Likewise.
2737         * rust-gcc.cc: Likewise.
2738         * rust-linemap.h: Likewise.
2739         * util/rust-attributes.cc: Likewise.
2740         * util/rust-hir-map.cc: Likewise.
2741         * util/rust-hir-map.h: Likewise.
2742         * util/rust-token-converter.cc: Likewise.
2744 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2746         * typecheck/rust-autoderef.cc: Replace Location with location_t.
2747         * typecheck/rust-coercion.cc: Likewise.
2748         * typecheck/rust-coercion.h: Likewise.
2749         * typecheck/rust-hir-path-probe.h: Likewise.
2750         * typecheck/rust-hir-trait-reference.cc: Likewise.
2751         * typecheck/rust-hir-trait-resolve.cc: Likewise.
2752         * typecheck/rust-hir-type-check-base.cc: Likewise.
2753         * typecheck/rust-hir-type-check-expr.cc: Likewise.
2754         * typecheck/rust-hir-type-check-expr.h: Likewise.
2755         * typecheck/rust-hir-type-check-implitem.cc: Likewise.
2756         * typecheck/rust-hir-type-check-item.cc: Likewise.
2757         * typecheck/rust-hir-type-check-path.cc: Likewise.
2758         * typecheck/rust-hir-type-check-pattern.cc: Likewise.
2759         * typecheck/rust-hir-type-check-stmt.cc: Likewise.
2760         * typecheck/rust-hir-type-check-struct.cc: Likewise.
2761         * typecheck/rust-hir-type-check-type.cc: Likewise.
2762         * typecheck/rust-hir-type-check-type.h: Likewise.
2763         * typecheck/rust-type-util.cc: Likewise.
2764         * typecheck/rust-type-util.h: Likewise.
2765         * typecheck/rust-tyty-bounds.cc: Likewise.
2766         * typecheck/rust-tyty-call.cc: Likewise.
2767         * typecheck/rust-tyty-call.h: Likewise.
2768         * typecheck/rust-tyty-cmp.h: Likewise.
2769         * typecheck/rust-tyty-subst.cc: Likewise.
2770         * typecheck/rust-tyty-subst.h: Likewise.
2771         * typecheck/rust-tyty.cc: Likewise.
2773 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2775         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
2776         refactored error message & called error function.
2778 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2780         * expand/rust-proc-macro.cc (literal_from_string): Add callback
2781         function.
2782         (load_macros_array): Likewise.
2784 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2786         * util/rust-token-converter.cc (handle_suffix): Rework function
2787         to make it work with the new literal conversion function.
2788         (convert_literal): Add a new function to convert to a proc macro
2789         literal from a literal tokenptr. The function will abort if the
2790         pointer does not point to a literal.
2791         (convert): Add call to convert literal for every literal case.
2792         * util/rust-token-converter.h (convert_literal): Add public
2793         prototype.
2795 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2797         * expand/rust-proc-macro.cc: Remove static modifier and move to
2798         an anonymous namespace.
2800 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2802         * backend/rust-compile-intrinsic.cc (Intrinsics::compile):
2803         Formatted according to enum class.
2804         * checks/errors/rust-feature-gate.cc (FeatureGate::gate): likewise.
2805         * checks/errors/rust-unsafe-checker.cc (check_unsafe_call): likewise.
2806         * hir/rust-ast-lower-base.cc (struct_field_name_exists): likewise.
2807         * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): likewise.
2808         * resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path):
2809         likewise.
2810         * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::go): likewise.
2811         (PatternDeclaration::add_new_binding): likewise.
2812         * resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): likewise.
2813         * resolve/rust-ast-verify-assignee.h: likewise.
2814         * rust-diagnostics.cc: updated make_desc & url function for enum class.
2815         * rust-diagnostics.h (struct ErrorCode): removed struct to switch to enum.
2816         (enum class): Switched from errorcode struct to enum class.
2817         (XSTR): Macro for converting enum to string.
2818         (STR): macro Used by XSTR for converting to string.
2819         (ERROR_CODE): macro used by map for check.
2820         (TABLE_TO_MAP): macro used by map for check
2821         * typecheck/rust-casts.cc (TypeCastRules::emit_cast_error):
2822         Formatted according to enum class.
2823         * typecheck/rust-hir-path-probe.h: likewise.
2824         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): likewise.
2825         * typecheck/rust-hir-type-check-implitem.cc (TypeCheckTopLevelExternItem::visit):
2826         likewise.
2827         (TypeCheckImplItemWithTrait::visit): likewise.
2828         * typecheck/rust-hir-type-check-item.cc: likewise.
2829         * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): likewise.
2830         (emit_invalid_field_error): likewise.
2831         * typecheck/rust-hir-type-check-struct.cc (TypeCheckStructExpr::resolve): likewise.
2832         * typecheck/rust-tyty-call.cc (emit_unexpected_argument_error): likewise.
2833         (TypeCheckCallExpr::visit): likewise.
2834         * typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args):
2835         likewise.
2836         * typecheck/rust-tyty.cc (BaseType::bounds_compatible): likewise.
2838 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2840         * util/rust-attributes.cc (check_proc_macro_non_root): Add
2841         function to emit this specific error.
2842         (AttributeChecker::visit): Modify visitor to propagate to some
2843         containers that were not handled correctly.
2845 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2847         * backend/rust-compile-base.h: Replace Location with location_t.
2848         * metadata/rust-imports.h: Likewise.
2849         * resolve/rust-name-resolver.cc: Likewise.
2850         * resolve/rust-name-resolver.h: Likewise.
2851         * rust-backend.h: Likewise.
2852         * rust-gcc.cc: Likewise.
2853         * rust-gcc.h: Likewise.
2855 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2857         * expand/rust-proc-macro.cc (available): Remove function.
2858         (load_macros_array): There was no need for an indirection here.
2860 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2862         * expand/rust-proc-macro.cc (available): Add symbol
2863         registration.
2864         (load_macros_array): Likewise.
2866 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2868         * expand/rust-proc-macro.cc (load_macros_array): Symbol rename.
2870 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2872         * checks/errors/privacy/rust-privacy-reporter.cc (find_proc_macro_attribute):
2873         Refactor the function to be safer and more efficient.
2875 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2877         * checks/errors/privacy/rust-privacy-reporter.cc (find_proc_macro_attribute):
2878         Add a new function to find a potential proc macro type
2879         attribute on a given item.
2880         (proc_macro_privacy_check): Move all proc macro privacy check in
2881         their own function to avoid cluttering the usual privacy check.
2882         (PrivacyReporter::go): Add call to newly created proc macro
2883         privacy check function.
2885 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2887         * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::go):
2888         Add visibility verification.
2890 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2892         * util/rust-attributes.cc (is_proc_macro_type): Add function to
2893         identify matching proc macro attribute type.
2894         (check_proc_macro_non_function): Add function to check and emit
2895         error.
2896         (AttributeChecker::visit): Add cal to new check function.
2898 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2900         * ast/rust-ast.h: Remove NodeId from identifiers.
2902 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2904         * typecheck/rust-hir-type-check-implitem.cc (TypeCheckTopLevelExternItem::visit):
2905         Added check for error code support.
2907 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
2909         * typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItemWithTrait::visit):
2910         called error function.
2912 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2914         * backend/rust-compile-base.cc: Replace Location with location_t.
2915         * backend/rust-compile-base.h: Likewise.
2916         * backend/rust-compile-expr.cc: Likewise.
2917         * lex/rust-token.h: Likewise.
2918         * metadata/rust-import-archive.cc: Likewise.
2919         * metadata/rust-imports.cc: Likewise.
2920         * metadata/rust-imports.h: Likewise.
2921         * rust-backend.h: Likewise.
2922         * rust-diagnostics.cc: Likewise.
2923         * rust-diagnostics.h: Likewise.
2924         * rust-gcc.cc: Likewise.
2925         * rust-linemap.cc: Likewise.
2926         * util/rust-token-converter.cc: Likewise.
2928 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2930         * ast/rust-ast-builder.h: Replace Location with location_t.
2931         * ast/rust-ast.h: Likewise.
2932         * ast/rust-expr.h: Likewise.
2933         * ast/rust-item.h: Likewise.
2934         * ast/rust-macro.h: Likewise.
2935         * ast/rust-path.h: Likewise.
2936         * hir/tree/rust-hir-expr.h: Likewise.
2937         * hir/tree/rust-hir-item.h: Likewise.
2938         * hir/tree/rust-hir-path.h: Likewise.
2939         * hir/tree/rust-hir.h: Likewise.
2940         * lex/rust-lex.cc: Likewise.
2941         * lex/rust-lex.h: Likewise.
2943 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2945         * expand/rust-derive-clone.cc: Replace Location with location_t.
2946         * expand/rust-derive-clone.h: Likewise.
2947         * expand/rust-derive-copy.cc: Likewise.
2948         * expand/rust-derive-copy.h: Likewise.
2949         * expand/rust-derive.cc: Likewise.
2950         * expand/rust-derive.h: Likewise.
2951         * expand/rust-macro-builtins.cc: Likewise.
2952         * expand/rust-macro-builtins.h: Likewise.
2953         * expand/rust-macro-expand.cc: Likewise.
2954         * parse/rust-parse-impl.h: Likewise.
2955         * parse/rust-parse.cc: Likewise.
2956         * parse/rust-parse.h: Likewise.
2958 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
2960         * parse/rust-parse-impl.h
2961         (Parser::parse_macro_match): Use token_id_is_keyword.
2963 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2965         * ast/rust-ast.h (class Identifier): Remove interface
2966         inheritance.
2967         (class SimplePath): Likewise.
2968         * expand/rust-expand-visitor.cc (get_traits_to_derive): Change
2969         return type.
2970         (derive_item): Update according to get_traits_to_derive return
2971         type.
2972         (expand_item_attribute): Likewise.
2973         (ExpandVisitor::expand_inner_stmts): Likewise.
2974         * expand/rust-macro-expand.h (struct MacroExpander): Likewise.
2975         * util/rust-hir-map.cc (Mappings::insert_derive_proc_macro_invocation):
2976         Change input type to SimplePath.
2977         (Mappings::lookup_derive_proc_macro_invocation): Likewise.
2978         (Mappings::insert_attribute_proc_macro_invocation): Likewise.
2979         (Mappings::lookup_attribute_proc_macro_invocation): Likewise.
2980         * util/rust-hir-map.h: Likewise with function prototypes.
2981         * util/rust-proc-macro-invocation.h: Removed.
2983 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2985         * ast/rust-ast.h: Add new constructor for SimplePath from an
2986         identifier.
2987         * expand/rust-expand-visitor.cc (get_traits_to_derive): Add
2988         conversion.
2990 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
2992         * expand/rust-macro-expand.cc (MacroExpander::import_proc_macros):
2993         Remove function.
2994         * expand/rust-macro-expand.h (struct MacroExpander): Remove
2995         import_proc_macro function.
2996         * util/rust-hir-map.cc (Mappings::insert_derive_proc_macro_def):
2997         Add a function to insert a derive proc macro definition.
2998         (Mappings::insert_bang_proc_macro): Remove function.
2999         (Mappings::insert_bang_proc_macro_def): Add function to insert a
3000         bang proc macro definition.
3001         (Mappings::insert_attribute_proc_macro_def): Likewise with
3002         attribute proc macros.
3003         (Mappings::lookup_derive_proc_macro_def): Add a function to
3004         lookup a defined derive proc macro definition.
3005         (Mappings::lookup_bang_proc_macro): Remove function.
3006         (Mappings::lookup_bang_proc_macro_def): Add a function to lookup
3007         a bang proc macro definition.
3008         (Mappings::lookup_attribute_proc_macro_def): Add a function to
3009         lookup an attribute prod macro definition.
3010         (Mappings::insert_derive_proc_macro_invocation): Add a function
3011         to insert a derive proc macro invocation.
3012         (Mappings::lookup_derive_proc_macro_invocation): Add a function
3013         to lookup a derive proc macro invocation.
3014         (Mappings::insert_bang_proc_macro_invocation): Add a function to
3015         insert a bang proc macro invocation.
3016         (Mappings::lookup_bang_proc_macro_invocation): Add a function to
3017         lookup a bang proc macro invocation.
3018         (Mappings::insert_attribute_proc_macro_invocation): Add a
3019         function to insert an attribute proc macro invocation.
3020         (Mappings::lookup_attribute_proc_macro_invocation): Add a
3021         function to lookup an attribute proc macro invocation.
3022         * util/rust-hir-map.h: Add different proc macro mappings
3023         and change function prototypes.
3024         * expand/rust-expand-visitor.cc (get_traits_to_derive): Return a
3025         vector of SimplePath instead.
3026         (derive_item): Accept SimplePath instead of a string.
3027         * ast/rust-ast.h: Add common ProcMacroInvocable interface to
3028         Identifiers and SimplePath nodes.
3029         * ast/rust-ast.cc: Add const modifier.
3030         * ast/rust-macro.h: Change path and identifier getters.
3031         * ast/rust-path.h: Change return type to reference.
3032         * util/rust-proc-macro-invocation.h: New file.
3034 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3036         * util/rust-attributes.h (RUST_ATTRIBUTES_H): Add missing header
3037         guard.
3039 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3041         * ast/rust-ast.h (class MetaItem): Add MetaItem dispatch values.
3042         * ast/rust-expr.h: Add LitExpr and PathLit dispatch.
3043         * ast/rust-macro.h: Add remaining dispatch getters.
3045 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3047         * metadata/rust-extern-crate.h: Add proc macro getter.
3048         * rust-session-manager.cc (Session::load_extern_crate): Collect
3049         mappings and create mappings.
3050         * util/rust-hir-map.cc: Add insertion and lookup functions for
3051         every mapping.
3052         * util/rust-hir-map.h: Add function prototypes.
3054 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3056         * metadata/rust-imports.cc (Import::try_package_in_directory):
3057         Add call to load macros before loading metadatas.
3058         * expand/rust-proc-macro.cc: Return empty vector instead of
3059         panicking on error.
3061 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3063         * metadata/rust-import-archive.cc (Stream_concatenate::do_peek):
3064         Remove deletion.
3065         (Stream_concatenate::do_advance): Likewise.
3066         (Import::find_archive_export_data): Replace with a smart
3067         pointer.
3068         * metadata/rust-imports.cc (add_search_path): Change return type
3069         to smart pointer.
3070         (Import::open_package): Likewise.
3071         (Import::try_package_in_directory): Likewise.
3072         (Import::find_export_data): Likewise.
3073         (Import::find_object_export_data): Likewise.
3074         (Import::Import): Change constructor to accept unique_ptr.
3075         * metadata/rust-imports.h: Change constructor prototype.
3076         * rust-session-manager.cc (Session::load_extern_crate): Change
3077         pointer to smart pointer.
3079 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3081         * metadata/rust-extern-crate.cc (ExternCrate::ExternCrate):
3082         Change constructor to accept procedural macro vector.
3083         * metadata/rust-extern-crate.h: Add vector of procecural macro
3084         in extern crate.
3085         * rust-session-manager.cc (Session::load_extern_crate): Add
3086         argument to new constructor call.
3088 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3090         * metadata/rust-imports.cc (add_search_path): Change prototype,
3091         now return a pair of Stream and procedural macro vector.
3092         (Import::open_package): Likewise.
3093         (Import::try_package_in_directory): Likewise.
3094         * metadata/rust-imports.h: Likewise.
3095         * rust-session-manager.cc (Session::load_extern_crate):
3096         Likewise.
3098 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3100         * metadata/rust-imports.h: Make the function to load a given
3101         file public.
3102         * rust-session-manager.cc (Session::load_extern_crate): Change
3103         path resolution depending on extern crate declaration in cli
3104         arguments.
3106 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3108         * ast/rust-ast-collector.h
3109         (TokenCollector::visit):
3110         Replace default argument with UNDEF_LOCATION.
3112 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3114         * backend/rust-compile-base.cc: Replace Location with location_t.
3115         * backend/rust-compile-base.h: Likewise.
3116         * backend/rust-compile-block.cc: Likewise.
3117         * backend/rust-compile-expr.cc: Likewise.
3118         * backend/rust-compile-expr.h: Likewise.
3119         * backend/rust-compile-extern.h: Likewise.
3120         * backend/rust-compile-implitem.h: Likewise.
3121         * backend/rust-compile-intrinsic.cc: Likewise.
3122         * backend/rust-compile-item.h: Likewise.
3123         * backend/rust-compile-pattern.h: Likewise.
3124         * backend/rust-compile-resolve-path.cc: Likewise.
3125         * backend/rust-compile-stmt.cc: Likewise.
3126         * backend/rust-compile-type.cc: Likewise.
3127         * backend/rust-compile.cc: Likewise.
3128         * backend/rust-constexpr.cc: Likewise.
3130 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
3132         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
3133         refactored and call error function.
3135 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3137         * util/rust-attributes.cc (AttributeChecker::visit): Add help
3138         message.
3140 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3142         * util/rust-attributes.cc (AttributeChecker::visit): Add
3143         attribute input check.
3145 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3147         * util/rust-attributes.cc (AttributeChecker::visit): Add
3148         attribute check on functions.
3150 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3152         * util/rust-token-converter.cc (from_ident): Adapt code to new
3153         constructor.
3155 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3157         * expand/rust-proc-macro.cc (tokenstream_from_string): Add a
3158         function that creates a tokenstream from a given string.
3159         (load_macros_array): Add call to registration function.
3161 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3163         * lang.opt: Add option
3164         * rust-session-manager.cc: Add option registration in session
3165         target options.
3166         * rust-session-manager.h (struct CompileOptions): Add new getter
3167         for proc macros instead of a boolean.
3169 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
3171         * resolve/rust-forever-stack.h: New file.
3172         * resolve/rust-forever-stack.hxx: New file.
3174 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
3176         * hir/rust-hir-dump.cc (convert_param_kind_to_str): New.
3177         (convert_new_bind_type_to_str): New.
3178         (convert_mut_to_str): New.
3179         (Dump::go): New.
3180         (Dump::put): New.
3181         (Dump::begin): New.
3182         (Dump::end): New.
3183         (Dump::begin_field): New.
3184         (Dump::end_field): New.
3185         (Dump::put_field): New.
3186         (Dump::visit_field): New.
3187         (Dump::visit): Refactor.
3188         (Dump::visit_collection): New.
3189         (Dump::do_traititem): New.
3190         (Dump::do_vis_item): New.
3191         (Dump::do_functionparam): New.
3192         (Dump::do_pathpattern): New.
3193         (Dump::do_structexprstruct): New.
3194         (Dump::do_expr): New.
3195         (Dump::do_pathexpr): New.
3196         (Dump::do_typepathsegment): New.
3197         (Dump::do_typepathfunction): New.
3198         (Dump::do_qualifiedpathtype): New.
3199         (Dump::do_operatorexpr): New.
3200         (Dump::do_mappings): New.
3201         (Dump::do_inner_attrs): New.
3202         (Dump::do_outer_attrs): New.
3203         (Dump::do_baseloopexpr): New.
3204         (Dump::do_ifletexpr): New.
3205         (Dump::do_struct): New.
3206         (Dump::do_enumitem): New.
3207         (Dump::do_traitfunctiondecl): New.
3208         (Dump::do_externalitem): New.
3209         (Dump::do_namefunctionparam): New.
3210         (Dump::do_stmt): New.
3211         (Dump::do_type): New.
3212         (Dump::do_item): New.
3213         (Dump::do_tuplefield): New.
3214         (Dump::do_structfield): New.
3215         (Dump::do_genericargs): New.
3216         (Dump::do_maybenamedparam): New.
3217         * hir/rust-hir-dump.h: Refactor.
3218         * hir/tree/rust-hir-item.h (enum_to_str): New.
3219         * hir/tree/rust-hir-type.h (enum_to_str): New.
3220         * hir/tree/rust-hir.cc (enum_to_str): New.
3221         * util/rust-common.h (enum_to_str): New.
3223 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
3224             Matthew Jasper  <mjjasper1@gmail.com>
3226         * Make-lang.in: Add `rust-rib.cc` object.
3227         * resolve/rust-rib.cc: New file.
3228         * resolve/rust-rib.h: New file.
3230 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3232         * ast/rust-ast.h: Replace Location with location_t.
3233         * ast/rust-expr.h: Likewise.
3234         * ast/rust-item.h: Likewise.
3235         * ast/rust-macro.h: Likewise.
3236         * ast/rust-path.h: Likewise.
3237         * ast/rust-pattern.h: Likewise.
3238         * ast/rust-stmt.h: Likewise.
3239         * ast/rust-type.h: Likewise.
3240         * hir/rust-ast-lower-base.h: Likewise.
3241         * hir/tree/rust-hir-expr.h: Likewise.
3242         * hir/tree/rust-hir-item.h: Likewise.
3243         * hir/tree/rust-hir-path.h: Likewise.
3244         * hir/tree/rust-hir-pattern.h: Likewise.
3245         * hir/tree/rust-hir-stmt.h: Likewise.
3246         * hir/tree/rust-hir-type.h: Likewise.
3247         * hir/tree/rust-hir.h: Likewise.
3248         * lex/rust-token.h: Likewise.
3249         * resolve/rust-ast-resolve-pattern.h: Likewise.
3250         * typecheck/rust-hir-trait-reference.h: Likewise.
3251         * typecheck/rust-tyty-bounds.h: Likewise.
3252         * typecheck/rust-tyty-call.h: Likewise.
3253         * typecheck/rust-tyty-subst.h: Likewise.
3254         * typecheck/rust-tyty-util.h: Likewise.
3255         * typecheck/rust-tyty.h: Likewise.
3257 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3259         * ast/rust-ast-collector.cc: Replace Location with location_t.
3260         * ast/rust-ast.cc: Likewise.
3261         * ast/rust-ast.h: Likewise.
3262         * ast/rust-expr.h: Likewise.
3263         * ast/rust-item.h: Likewise.
3264         * ast/rust-macro.h: Likewise.
3265         * ast/rust-path.cc: Likewise.
3266         * ast/rust-path.h: Likewise.
3267         * ast/rust-pattern.h: Likewise.
3268         * ast/rust-stmt.h: Likewise.
3269         * ast/rust-type.h: Likewise.
3270         * backend/rust-compile-base.cc: Likewise.
3271         * backend/rust-compile-base.h: Likewise.
3272         * backend/rust-compile-block.cc: Likewise.
3273         * backend/rust-compile-expr.cc: Likewise.
3274         * backend/rust-compile-expr.h: Likewise.
3275         * backend/rust-compile-fnparam.cc: Likewise.
3276         * backend/rust-compile-fnparam.h: Likewise.
3277         * backend/rust-compile-intrinsic.cc: Likewise.
3278         * backend/rust-compile-pattern.cc: Likewise.
3279         * backend/rust-compile-resolve-path.h: Likewise.
3280         * backend/rust-compile.cc: Likewise.
3281         * checks/errors/rust-const-checker.cc: Likewise.
3282         * checks/errors/rust-const-checker.h: Likewise.
3283         * checks/errors/rust-unsafe-checker.cc: Likewise.
3284         * checks/errors/rust-unsafe-checker.h: Likewise.
3285         * expand/rust-macro-builtins.cc: Likewise.
3286         * expand/rust-macro-expand.h: Likewise.
3287         * hir/rust-ast-lower-base.h: Likewise.
3288         * hir/rust-ast-lower-implitem.h: Likewise.
3289         * hir/rust-ast-lower-item.cc: Likewise.
3290         * hir/tree/rust-hir-expr.h: Likewise.
3291         * hir/tree/rust-hir-item.h: Likewise.
3292         * hir/tree/rust-hir-path.h: Likewise.
3293         * hir/tree/rust-hir-pattern.h: Likewise.
3294         * hir/tree/rust-hir-stmt.h: Likewise.
3295         * hir/tree/rust-hir-type.h: Likewise.
3296         * hir/tree/rust-hir.cc: Likewise.
3297         * hir/tree/rust-hir.h: Likewise.
3298         * lex/rust-token.h: Likewise.
3299         * metadata/rust-extern-crate.cc: Likewise.
3300         * metadata/rust-extern-crate.h: Likewise.
3301         * parse/rust-parse-impl.h: Likewise.
3302         * parse/rust-parse.h: Likewise.
3303         * resolve/rust-ast-resolve-expr.cc: Likewise.
3304         * resolve/rust-ast-resolve-implitem.h: Likewise.
3305         * resolve/rust-ast-resolve-pattern.h: Likewise.
3306         * resolve/rust-ast-resolve-stmt.h: Likewise.
3307         * resolve/rust-ast-resolve-toplevel.h: Likewise.
3308         * resolve/rust-ast-resolve-type.h: Likewise.
3309         * resolve/rust-name-resolver.cc: Likewise.
3310         * resolve/rust-name-resolver.h: Likewise.
3311         * rust-diagnostics.cc: Likewise.
3312         * rust-diagnostics.h: Likewise.
3313         * rust-gcc.cc: Likewise.
3314         * rust-session-manager.cc: Likewise.
3315         * rust-session-manager.h: Likewise.
3316         * typecheck/rust-casts.cc: Likewise.
3317         * typecheck/rust-casts.h: Likewise.
3318         * typecheck/rust-coercion.cc: Likewise.
3319         * typecheck/rust-coercion.h: Likewise.
3320         * typecheck/rust-hir-path-probe.cc: Likewise.
3321         * typecheck/rust-hir-path-probe.h: Likewise.
3322         * typecheck/rust-hir-trait-reference.cc: Likewise.
3323         * typecheck/rust-hir-trait-reference.h: Likewise.
3324         * typecheck/rust-hir-trait-resolve.cc: Likewise.
3325         * typecheck/rust-hir-type-check-base.cc: Likewise.
3326         * typecheck/rust-hir-type-check-base.h: Likewise.
3327         * typecheck/rust-hir-type-check-item.cc: Likewise.
3328         * typecheck/rust-hir-type-check-item.h: Likewise.
3329         * typecheck/rust-hir-type-check-path.cc: Likewise.
3330         * typecheck/rust-hir-type-check-pattern.cc: Likewise.
3331         * typecheck/rust-hir-type-check-pattern.h: Likewise.
3332         * typecheck/rust-hir-type-check-type.cc: Likewise.
3333         * typecheck/rust-hir-type-check-type.h: Likewise.
3334         * typecheck/rust-hir-type-check.cc: Likewise.
3335         * typecheck/rust-hir-type-check.h: Likewise.
3336         * typecheck/rust-substitution-mapper.cc: Likewise.
3337         * typecheck/rust-substitution-mapper.h: Likewise.
3338         * typecheck/rust-type-util.cc: Likewise.
3339         * typecheck/rust-typecheck-context.cc: Likewise.
3340         * typecheck/rust-tyty-bounds.cc: Likewise.
3341         * typecheck/rust-tyty-call.h: Likewise.
3342         * typecheck/rust-tyty-subst.cc: Likewise.
3343         * typecheck/rust-tyty-subst.h: Likewise.
3344         * typecheck/rust-tyty-util.cc: Likewise.
3345         * typecheck/rust-tyty-util.h: Likewise.
3346         * typecheck/rust-tyty.cc: Likewise.
3347         * typecheck/rust-tyty.h: Likewise.
3348         * typecheck/rust-unify.cc: Likewise.
3349         * typecheck/rust-unify.h: Likewise.
3350         * util/rust-hir-map.cc: Likewise.
3351         * util/rust-hir-map.h: Likewise.
3352         * util/rust-identifier.h: Likewise.
3354 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3356         * rust-gcc.cc
3357         (Gcc_backend::debug): Move out of class declaration.
3358         (Gcc_backend::get_identifier_node): Likewise.
3359         (Gcc_backend::wchar_type): Likewise.
3361 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
3363         * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit):
3364         called error function.
3366 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3368         * rust-linemap.h (Linemap::predeclared_location): Remove.
3369         * backend/rust-compile-type.cc:
3370         Replace Linemap::predeclared_location with BUILTINS_LOCATION.
3371         * resolve/rust-name-resolver.cc: Likewise.
3372         * typecheck/rust-hir-type-check-type.cc: Likewise.
3373         * typecheck/rust-tyty.cc: Likewise.
3375 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3377         * rust-gcc.h: Add include guard.
3379 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
3381         * rust-system.h (rust_unreachable): Change definition to fancy_abort
3382         * ast/rust-ast-collector.cc (TokenCollector::visit): Use rust_unreachable
3383         instead of gcc_unreachable.
3384         (get_delimiters): Likewise.
3385         * ast/rust-ast-dump.h: Likewise.
3386         * ast/rust-ast-formatting.cc (get_string_in_delims): Likewise.
3387         (get_mode_dump_desc): Likewise.
3388         * ast/rust-ast.cc (Visibility::as_string): Likewise.
3389         (UseTreeGlob::as_string): Likewise.
3390         * ast/rust-ast.h: Likewise.
3391         * ast/rust-macro.h: Likewise.
3392         * ast/rust-path.h: Likewise.
3393         * backend/rust-compile-expr.cc (sort_tuple_patterns): Likewise.
3394         (CompileExpr::visit): Likewise.
3395         (CompileExpr::generate_closure_fntype): Likewise.
3396         * backend/rust-compile-intrinsic.cc (op_with_overflow_inner): Likewise.
3397         * backend/rust-compile-pattern.cc (CompilePatternBindings::visit): Likewise.
3398         (CompilePatternLet::visit): Likewise.
3399         * backend/rust-constexpr.cc (base_field_constructor_elt): Likewise.
3400         (eval_array_reference): Likewise.
3401         (label_matches): Likewise.
3402         (eval_store_expression): Likewise.
3403         (eval_call_expression): Likewise.
3404         (build_data_member_initialization): Likewise.
3405         (array_index_cmp): Likewise.
3406         (get_array_or_vector_nelts): Likewise.
3407         (eval_bit_field_ref): Likewise.
3408         (eval_loop_expr): Likewise.
3409         (potential_constant_expression_1): Likewise.
3410         * backend/rust-mangle.cc (v0_simple_type_prefix): Likewise.
3411         (v0_type_prefix): Likewise.
3412         (v0_mangle_item): Likewise.
3413         (Mangler::mangle_item): Likewise.
3414         * backend/rust-tree.cc (convert_to_void): Likewise.
3415         (type_memfn_quals): Likewise.
3416         (rs_tree_equal): Likewise.
3417         (fold_offsetof): Likewise.
3418         (fold_builtin_source_location): Likewise.
3419         (lvalue_error): Likewise.
3420         * backend/rust-tree.h (struct named_decl_hash): Likewise.
3421         (struct named_label_hash): Likewise.
3422         * checks/errors/privacy/rust-visibility-resolver.cc
3423         (VisibilityResolver::resolve_visibility): Likewise.
3424         (VisibilityResolver::visit): Likewise.
3425         * checks/errors/rust-const-checker.cc (ConstChecker::ctx_to_str): Likewise.
3426         * checks/errors/rust-feature.cc (Feature::create): Likewise.
3427         * expand/rust-expand-visitor.cc (get_traits_to_derive): Likewise.
3428         (derive_item): Likewise.
3429         (expand_item_attribute): Likewise.
3430         (expand_stmt_attribute): Likewise.
3431         * expand/rust-macro-expand.cc (MacroExpander::match_matcher): Likewise.
3432         (MacroExpander::match_repetition): Likewise.
3433         (transcribe_context): Likewise.
3434         (MacroExpander::import_proc_macros): Likewise.
3435         (MacroExpander::parse_proc_macro_output): Likewise.
3436         * expand/rust-macro-expand.h: Likewise.
3437         * expand/rust-macro-invoc-lexer.h: Likewise.
3438         * expand/rust-macro-substitute-ctx.cc (SubstituteCtx::substitute_token): Likewise.
3439         * expand/rust-proc-macro-invoc-lexer.h: Likewise.
3440         * expand/rust-proc-macro.cc (load_macros): Likewise.
3441         * hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_generic_args): Likewise.
3442         (ASTLoweringBase::lower_literal): Likewise.
3443         * hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Likewise.
3444         * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit): Likewise.
3445         * hir/rust-ast-lower-type.cc (ASTLoweringType::visit): Likewise.
3446         * hir/rust-hir-dump.cc (Dump::visit): Likewise.
3447         * hir/tree/rust-hir.cc (get_string_in_delims): Likewise.
3448         (Visibility::as_string): Likewise.
3449         (UseTreeGlob::as_string): Likewise.
3450         (CompoundAssignmentExpr::as_string): Likewise.
3451         (ArithmeticOrLogicalExpr::as_string): Likewise.
3452         * lex/rust-lex.cc (Lexer::parse_byte_string): Likewise.
3453         (Lexer::parse_string): Likewise.
3454         * lex/rust-token.cc (RS_TOKEN): Likewise.
3455         * parse/rust-parse-impl.h (Parser::parse_simple_path_segment): Likewise.
3456         (Parser::parse_path_ident_segment): Likewise.
3457         (Parser::parse_attr_input): Likewise.
3458         (Parser::parse_inherent_impl_item): Likewise.
3459         (Parser::parse_trait_impl_item): Likewise.
3460         (Parser::parse_type_path_segment): Likewise.
3461         (Parser::parse_reference_type): Likewise.
3462         (get_lbp_for_comparison_expr): Likewise.
3463         * parse/rust-parse.cc (peculiar_fragment_match_compatible): Likewise.
3464         * resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): Likewise.
3465         * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::visit): Likewise.
3466         * resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): Likewise.
3467         (ResolveTypeToCanonicalPath::visit): Likewise.
3468         (ResolveGenericArgs::resolve_disambiguated_generic): Likewise.
3469         * rust-gcc.cc (operator_to_tree_code): Likewise.
3470         (fetch_overflow_builtins): Likewise.
3471         (Gcc_backend::non_zero_size_type): Likewise.
3472         (Gcc_backend::convert_tree): Likewise.
3473         * rust-lang.cc (grs_langhook_type_for_mode): Likewise.
3474         (grs_langhook_global_bindings_p): Likewise.
3475         (grs_langhook_pushdecl): Likewise.
3476         (grs_langhook_getdecls): Likewise.
3477         (convert): Likewise.
3478         * typecheck/rust-autoderef.h: Likewise.
3479         * typecheck/rust-hir-path-probe.cc: Likewise.
3480         * typecheck/rust-hir-trait-reference.cc (TraitItemReference::get_tyty): Likewise.
3481         * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::resolve_literal): Likewise.
3482         * typecheck/rust-hir-type-check-expr.cc: Likewise.
3483         * typecheck/rust-hir-type-check-expr.h: Likewise.
3484         * typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItem::visit): Likewise.
3485         * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Likewise.
3486         * typecheck/rust-hir-type-check-stmt.h: Likewise.
3487         * typecheck/rust-hir-type-check.cc (TraitItemReference::get_type_from_fn): Likewise.
3488         * typecheck/rust-substitution-mapper.h: Likewise.
3489         * typecheck/rust-typecheck-context.cc (TypeCheckContextItem::get_context_type): Likewise.
3490         * typecheck/rust-tyty-call.h: Likewise.
3491         * typecheck/rust-tyty.cc (TypeKindFormat::to_string): Likewise.
3492         (BaseType::monomorphized_clone): Likewise.
3493         (VariantDef::variant_type_string): Likewise.
3494         (ClosureType::handle_substitions): Likewise.
3495         (IntType::as_string): Likewise.
3496         (UintType::as_string): Likewise.
3497         (FloatType::as_string): Likewise.
3498         * typecheck/rust-unify.cc (UnifyRules::expect_projection): Likewise.
3499         * util/rust-token-converter.cc (convert): Likewise.
3500         (from_literal): Likewise.
3501         (from_group): Likewise.
3502         (from_tokentree): Likewise.
3504 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
3506         * checks/errors/rust-feature-gate.cc (FeatureGate::gate):
3507         called error function.
3509 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
3511         * backend/rust-compile-intrinsic.cc (Intrinsics::compile):
3512         called error function.
3514 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
3516         * checks/errors/rust-unsafe-checker.cc (check_unsafe_call):
3517         called error function.
3519 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3521         * rust-location.h
3522         (typedef RichLocation): Remove.
3523         * expand/rust-macro-expand.cc: Replace RichLocation with rich_location.
3524         * hir/rust-ast-lower-base.cc: Likewise.
3525         * resolve/rust-ast-resolve-implitem.h: Likewise.
3526         * resolve/rust-ast-resolve-stmt.h: Likewise.
3527         * resolve/rust-ast-resolve-toplevel.h: Likewise.
3528         * rust-diagnostics.cc: Likewise.
3529         * rust-diagnostics.h: Likewise.
3530         * rust-session-manager.cc: Likewise.
3531         * typecheck/rust-casts.cc: Likewise.
3532         * typecheck/rust-coercion.cc: Likewise.
3533         * typecheck/rust-hir-inherent-impl-overlap.h: Likewise.
3534         * typecheck/rust-hir-path-probe.h: Likewise.
3535         * typecheck/rust-hir-trait-reference.cc: Likewise.
3536         * typecheck/rust-hir-type-check-expr.cc: Likewise.
3537         * typecheck/rust-hir-type-check-implitem.cc: Likewise.
3538         * typecheck/rust-hir-type-check-item.cc: Likewise.
3539         * typecheck/rust-hir-type-check-pattern.cc: Likewise.
3540         * typecheck/rust-tyty-cmp.h: Likewise.
3541         * typecheck/rust-tyty-subst.cc: Likewise.
3542         * typecheck/rust-tyty.cc: Likewise.
3543         * typecheck/rust-unify.cc: Likewise.
3545 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3547         * lex/rust-lex.cc
3548         (Lexer::start_line): Use linemap_line_start.
3549         * rust-linemap.cc
3550         (Linemap::start_line): Remove.
3551         * rust-linemap.h
3552         (Linemap::start_line): Remove.
3554 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3556         * rust-linemap.cc
3557         (RichLocation::RichLocation): Remove.
3558         (RichLocation::~RichLocation): Remove.
3559         (RichLocation::add_range): Remove.
3560         (RichLocation::add_fixit_insert_before): Remove.
3561         (RichLocation::add_fixit_insert_after): Remove.
3562         * rust-location.h
3563         (class RichLocation): Remove.
3564         * rust-diagnostics.cc
3565         (rust_be_error_at): Remove RichLocation::get invocation.
3566         * expand/rust-macro-expand.cc: Fix RichLocation constructor.
3567         * hir/rust-ast-lower-base.cc: Likewise.
3568         * resolve/rust-ast-resolve-implitem.h: Likewise.
3569         * resolve/rust-ast-resolve-stmt.h: Likewise.
3570         * resolve/rust-ast-resolve-toplevel.h: Likewise.
3571         * rust-session-manager.cc: Likewise.
3572         * typecheck/rust-casts.cc: Likewise.
3573         * typecheck/rust-coercion.cc: Likewise.
3574         * typecheck/rust-hir-inherent-impl-overlap.h: Likewise.
3575         * typecheck/rust-hir-path-probe.h: Likewise.
3576         * typecheck/rust-hir-trait-reference.cc: Likewise.
3577         * typecheck/rust-hir-type-check-expr.cc: Likewise.
3578         * typecheck/rust-hir-type-check-implitem.cc: Likewise.
3579         * typecheck/rust-hir-type-check-item.cc: Likewise.
3580         * typecheck/rust-hir-type-check-pattern.cc: Likewise.
3581         * typecheck/rust-tyty-cmp.h: Likewise.
3582         * typecheck/rust-tyty-subst.cc: Likewise.
3583         * typecheck/rust-tyty.cc: Likewise.
3584         * typecheck/rust-unify.cc: Likewise.
3586 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3588         * lex/rust-lex.cc
3589         (Lexer::get_current_location): Use linemap_position_for_column.
3590         * rust-session-manager.cc
3591         (Session::handle_crate_name): Likewise.
3592         * rust-linemap.cc
3593         (Linemap::get_location): Remove.
3594         * rust-linemap.h
3595         (Linemap::get_location): Likewise.
3597 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3599         * lex/rust-token.cc (escape_special_chars): Add a function that
3600         escape a given string.
3601         (Token::as_string): Add call to escape function for string/char
3602         representations.
3604 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
3606         * hir/tree/rust-hir-type.h (MaybeNamedParam::get_type): Remove
3607         rust_assert.
3608         (BareFunctionType::get_return_type): Likewise.
3610 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3612         * backend/rust-compile-intrinsic.cc (offset_handler): Remove
3613         braces.
3614         (sizeof_handler): Likewise.
3615         (transmute_handler): Likewise.
3616         (rotate_handler): Likewise.
3617         (wrapping_op_handler_inner): Likewise.
3618         (op_with_overflow_inner): Likewise.
3619         (atomic_load_handler_inner): Likewise.
3620         (unchecked_op_inner): Likewise.
3621         (uninit_handler): Likewise.
3623 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3625         * ast/rust-ast.h: Add virtual destructor.
3626         * expand/rust-macro-expand.h: Likewise.
3628 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3630         * hir/tree/rust-hir-full-decls.h (struct Crate): Change to
3631         class.
3632         (class Crate): Likewise.
3633         (struct StructField): Likewise.
3634         (class StructField): Likewise.
3635         (struct TupleField): Likewise.
3636         (class TupleField): Likewise.
3637         (struct TraitFunctionDecl): Likewise.
3638         (class TraitFunctionDecl): Likewise.
3639         * rust-session-manager.h (struct Crate): Likewise.
3640         (class Crate): Likewise.
3642 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3644         * ast/rust-expr.h
3645         (MetaItemPathLit::get_locus): Remove copy construction.
3646         * backend/rust-constexpr.cc
3647         (eval_constant_expression): Likewise.
3648         (is_valid_constexpr_fn): Likewise.
3649         * util/rust-token-converter.cc
3650         (convert): Likewise.
3652 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3654         * lex/rust-lex.cc
3655         (Lexer::dump_and_skip): Use location_to_string.
3656         * rust-linemap.cc
3657         (Linemap::to_string): Move to...
3658         (Linemap::location_to_string): ... here.
3659         * rust-linemap.h
3660         (Linemap::to_string): Remove.
3661         (Linemap::location_to_string): Remove definition.
3663 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
3665         * hir/tree/rust-hir-expr.h (TypeCastExpr::get_casted_expr): Remove
3666         assert in accessor.
3667         (TypeCastExpr::get_type_to_convert_to): Likewise.
3668         (CompoundAssignmentExpr::get_left_expr): Likewise.
3669         (CompoundAssignmentExpr::get_right_expr): Likewise.
3670         (GroupedExpr::get_expr_in_parens): Likewise.
3671         (TupleIndexExpr::get_tuple_expr): Likewise.
3672         (FieldAccessExpr::get_receiver_expr): Likewise.
3673         (ClosureParam::get_pattern): Likewise.
3674         (ClosureParam::get_type): Likewise.
3675         (ExprType::get_return_type): Likewise.
3676         (IfLetExpr::get_scrutinee_expr): Likewise.
3677         (MatchArm::get_guard_expr): Likewise.
3678         (MatchExpr::get_scrutinee_expr): Likewise.
3679         * hir/tree/rust-hir-item.h (TypeParam::get_type): Likewise.
3680         (SelfParam::get_type): Likewise.
3681         (Function::get_return_type): Likewise.
3682         (TypeAlias::get_type_aliased): Likewise.
3683         (StructField::get_field_type): Likewise.
3684         (TraitFunctionDecl::get_block_expr): Likewise.
3685         (ImplBlock::get_trait_ref): Likewise.
3686         * hir/tree/rust-hir-path.h (ConstGenericArg::get_expression): New.
3687         (TypePathFunction::get_return_type): Remove assert in accessor.
3688         (QualifiedPathType::get_trait): Likewise.
3689         * hir/tree/rust-hir-pattern.h (PatternType::get_lower_bound): Likewise.
3690         (PatternType::get_upper_bound): Likewise.
3691         (ReferencePattern::get_referenced_pattern): Likewise.
3692         * hir/tree/rust-hir.h (ConstGenericParam::get_default_expression): Likewise.
3694 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
3696         * hir/rust-ast-lower-base.cc (struct_field_name_exists):
3697         called error function.
3699 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3701         * rust-diagnostics.cc
3702         (rust_be_error_at): Add function accepting location_t and ErrorCode.
3703         (rust_error_at): Likewise.
3704         * rust-diagnostics.h
3705         (rust_error_at): Likewise.
3706         (rust_be_error_at): Likewise.
3708 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3710         * rust-linemap.cc
3711         (class Gcc_linemap): Remove.
3712         (Gcc_linemap::start_file): Move to...
3713         (Linemap::start_file): ... here.
3714         (Gcc_linemap::to_string): Move to...
3715         (Linemap::to_string): ... here.
3716         (Gcc_linemap::stop): Move to...
3717         (Linemap::stop): ... here.
3718         (Gcc_linemap::start_line): Move to...
3719         (Linemap::start_line): ... here.
3720         (Gcc_linemap::get_location): Move to...
3721         (Linemap::get_location): ... here.
3722         (rust_get_linemap): Use Linemap.
3723         * rust-linemap.h
3724         (Linemap::in_file_): New field from Gcc_linemap.
3725         (Linemap::Linemap): Initialize in_file_.
3726         (Linemap::~Linemap): Make non-virtual.
3727         (Linemap::start_file): Likewise.
3728         (Linemap::start_line): Likewise.
3729         (Linemap::get_location): Likewise.
3730         (Linemap::stop): Likewise.
3731         (Linemap::to_string): Likewise.
3733 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
3735         * Make-lang.in: Remove rust-optional-test.cc's object file
3736         * ast/rust-macro.h: Remove use of Rust::Optional
3737         * backend/rust-compile-base.cc
3738         (HIRCompileBase::resolve_method_address): Likewise.
3739         * checks/errors/privacy/rust-privacy-reporter.cc
3740         (PrivacyReporter::check_for_privacy_violation): Likewise.
3741         (PrivacyReporter::visit): Likewise.
3742         * checks/errors/privacy/rust-privacy-reporter.h: Likewise.
3743         * checks/errors/rust-feature-gate.cc (FeatureGate::check): Likewise.
3744         * checks/errors/rust-feature.cc (Feature::create): Likewise.
3745         (Feature::as_name): Likewise.
3746         * checks/errors/rust-feature.h: Likewise.
3747         * expand/rust-macro-builtins.cc: Likewise.
3748         * lex/rust-lex.cc (Lexer::Lexer): Likewise.
3749         (Lexer::skip_token): Likewise.
3750         (Lexer::dump_and_skip): Likewise.
3751         * lex/rust-lex.h: Likewise.
3752         * resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): Likewise.
3753         * resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): Likewise.
3754         * rust-lang.cc (run_rust_tests): Likewise.
3755         * rust-session-manager.cc (Session::compile_crate): Likewise.
3756         (TargetOptions::dump_target_options): Likewise.
3757         * rust-session-manager.h (struct TargetOptions): Likewise.
3758         * util/rust-hir-map.cc (Mappings::lookup_module_children): Likewise.
3759         (Mappings::lookup_module_chidren_items): Likewise.
3760         (Mappings::lookup_module_child): Likewise.
3761         (Mappings::lookup_parent_module): Likewise.
3762         * util/rust-hir-map.h (RUST_HIR_MAP_H): Likewise.
3763         * util/rust-optional-test.cc: Removed.
3764         * util/rust-optional.h: Removed.
3766 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3768         * rust-linemap.h (Linemap::unknown_location): Remove.
3769         * ast/rust-ast.cc:
3770         Replace Linemap::unknown_location with UNKNOWN_LOCATION.
3771         * ast/rust-path.cc: Likewise.
3772         * hir/tree/rust-hir.cc: Likewise.
3773         * metadata/rust-imports.cc: Likewise.
3774         * parse/rust-parse-impl.h: Likewise.
3775         * parse/rust-parse.h: Likewise.
3776         * rust-backend.h: Likewise.
3777         * rust-diagnostics.cc: Likewise.
3778         * rust-session-manager.cc: Likewise.
3779         * typecheck/rust-tyty.cc: Likewise.
3781 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
3783         * resolve/rust-ast-verify-assignee.h: called error function.
3785 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
3787         * typecheck/rust-tyty-call.cc (emit_unexpected_argument_error):
3788         Refactored invalid number of argument into one function.
3789         (TypeCheckCallExpr::visit): called refactored function.
3790         (TypeCheckMethodCallExpr::check): likewise.
3792 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
3794         * util/expected.h: Adapt class to GCC requirements.
3796 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
3798         * util/expected.h: New file.
3800 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
3802         * util/optional.h: Adapt for GCC.
3804 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
3806         * util/optional.h: New file.
3808 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3810         * rust-location.h (UNDEF_LOCATION): New.
3811         * ast/rust-ast-collector.cc: Replace Location () with UNDEF_LOCATION.
3812         * ast/rust-ast-fragment.cc: Likewise.
3813         * ast/rust-ast.h: Likewise.
3814         * ast/rust-expr.h: Likewise.
3815         * ast/rust-item.h: Likewise.
3816         * ast/rust-macro.h: Likewise.
3817         * ast/rust-path.h: Likewise.
3818         * ast/rust-type.h: Likewise.
3819         * backend/rust-compile-expr.cc: Likewise.
3820         * backend/rust-compile-extern.h: Likewise.
3821         * backend/rust-compile-implitem.h: Likewise.
3822         * backend/rust-compile-intrinsic.cc: Likewise.
3823         * backend/rust-compile-item.h: Likewise.
3824         * backend/rust-compile.cc: Likewise.
3825         * backend/rust-constexpr.cc: Likewise.
3826         * expand/rust-expand-visitor.cc: Likewise.
3827         * expand/rust-macro-expand.cc: Likewise.
3828         * expand/rust-macro-expand.h: Likewise.
3829         * expand/rust-macro-invoc-lexer.cc: Likewise.
3830         * expand/rust-proc-macro-invoc-lexer.cc: Likewise.
3831         * expand/rust-proc-macro.cc: Likewise.
3832         * hir/tree/rust-hir-expr.h: Likewise.
3833         * hir/tree/rust-hir-item.h: Likewise.
3834         * hir/tree/rust-hir-path.h: Likewise.
3835         * hir/tree/rust-hir-type.h: Likewise.
3836         * hir/tree/rust-hir.h: Likewise.
3837         * lex/rust-lex.cc: Likewise.
3838         * metadata/rust-export-metadata.cc: Likewise.
3839         * parse/rust-parse-impl.h: Likewise.
3840         * resolve/rust-ast-resolve-item.cc: Likewise.
3841         * resolve/rust-ast-resolve.cc: Likewise.
3842         * rust-diagnostics.h: Likewise.
3843         * rust-session-manager.cc: Likewise.
3844         * typecheck/rust-autoderef.cc: Likewise.
3845         * typecheck/rust-coercion.cc: Likewise.
3846         * typecheck/rust-hir-dot-operator.cc: Likewise.
3847         * typecheck/rust-hir-path-probe.cc: Likewise.
3848         * typecheck/rust-hir-trait-reference.cc: Likewise.
3849         * typecheck/rust-hir-trait-reference.h: Likewise.
3850         * typecheck/rust-hir-type-check-expr.cc: Likewise.
3851         * typecheck/rust-hir-type-check-implitem.cc: Likewise.
3852         * typecheck/rust-hir-type-check-type.cc: Likewise.
3853         * typecheck/rust-hir-type-check.cc: Likewise.
3854         * typecheck/rust-tyty-bounds.cc: Likewise.
3855         * typecheck/rust-tyty-subst.cc: Likewise.
3856         * typecheck/rust-tyty.cc: Likewise.
3857         * util/rust-hir-map.cc: Likewise.
3859 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3861         * ast/rust-ast-collector.cc (TokenCollector::visit): Fix abit
3862         output format.
3864 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3866         * ast/rust-ast-collector.cc (TokenCollector::visit): Fix
3867         external item trailing semicolon and outer attributes.
3869 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3871         * ast/rust-ast-collector.cc (TokenCollector::visit): Output
3872         outer attributes on external functions.
3874 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3876         * ast/rust-ast-collector.cc (TokenCollector::visit): Fix method
3877         qualifier output.
3879 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3881         * ast/rust-ast-collector.cc (TokenCollector::visit): Add where
3882         clause.
3884 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3886         * ast/rust-ast-collector.cc (TokenCollector::visit): Add outer
3887         attributes to collector output.
3889 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3891         * ast/rust-ast-collector.cc (TokenCollector::visit): Add
3892         variadics in collector output.
3894 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3896         * ast/rust-ast-collector.cc (TokenCollector::visit): Add
3897         generics.
3899 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3901         * ast/rust-ast-collector.cc (TokenCollector::visit): Fix generic
3902         output.
3904 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3906         * ast/rust-ast-collector.cc (TokenCollector::visit): Reformat
3907         trait impl block.
3909 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3911         * ast/rust-ast-collector.cc (TokenCollector::visit): Output
3912         generic in inherent impl.
3914 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3916         * ast/rust-ast-dump.cc (Dump::require_spacing): Change dollar
3917         spacing rule.
3919 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3921         * ast/rust-ast-collector.cc (TokenCollector::visit): Change
3922         formatting.
3924 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3926         * ast/rust-ast-collector.cc (TokenCollector::visit): Fix trait
3927         impl block output.
3929 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3931         * ast/rust-ast-collector.cc (TokenCollector::visit): Fix binding
3932         args.
3934 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3936         * ast/rust-ast-collector.cc (TokenCollector::visit): Output
3937         function qualifiers after visibility.
3939 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3941         * ast/rust-ast-collector.cc (TokenCollector::visit): Fix self
3942         param output.
3944 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3946         * ast/rust-ast-dump.cc (Dump::require_spacing): Add a rule to
3947         remove spaces around dots and after references.
3949 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
3951         * ast/rust-ast-collector.cc (TokenCollector::visit): Fix several
3952         token collection rules.
3953         * ast/rust-ast-dump.cc (Dump::require_spacing): Add spacing rule
3954         for comma.
3956 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3958         * expand/rust-macro-invoc-lexer.h
3959         (class MacroInvocLexerBase): New.
3961 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3963         * expand/rust-macro-builtins.cc
3964         (source_relative_path): Use LOCATION_FILE.
3965         (MacroBuiltin::file_handler): Likewise.
3966         (MacroBuiltin::column_handler): Use LOCATION_COLUMN.
3967         (MacroBuiltin::line_handler): Use LOCATION_LINE.
3968         * rust-linemap.cc
3969         (Gcc_linemap::location_file): Remove.
3970         (Gcc_linemap::location_line): Remove.
3971         (Gcc_linemap::location_column): Remove.
3972         * rust-linemap.h
3973         (Linemap::location_file): Remove.
3974         (Linemap::location_line): Remove.
3975         (Linemap::location_column): Remove.
3976         (Linemap::location_to_file): Remove.
3977         (Linemap::location_to_line): Remove.
3978         (Linemap::location_to_column): Remove.
3980 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
3982         * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit):
3983         called error function and changed error message
3984         similiar to rustc.
3986 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
3988         * rust-linemap.cc
3989         (Gcc_linemap::get_unknown_location): Remove.
3990         (Gcc_linemap::get_predeclared_location): Remove.
3991         (Gcc_linemap::is_predeclared): Remove.
3992         (Gcc_linemap::is_unknown): Remove.
3993         * rust-linemap.h
3994         (Linemap::get_predeclared_location): Remove.
3995         (Linemap::get_unknown_location): Remove.
3996         (Linemap::is_predeclared): Remove.
3997         (Linemap::is_unknown): Remove.
3998         (Linemap::predeclared_location): Use BUILTINS_LOCATION.
3999         (Linemap::unknown_location): Use UNKNOWN_LOCATION.
4000         (Linemap::is_predeclared_location): Remove.
4001         (Linemap::is_unknown_location): Remove.
4003 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
4005         * typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItemWithTrait::visit):
4006         called error function
4008 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
4010         * typecheck/rust-hir-type-check-struct.cc (TypeCheckStructExpr::resolve):
4011         called error function.
4013 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
4015         * lex/rust-lex.cc (Lexer::input_source_is_valid_utf8): New method of `Lexer`.
4016         * lex/rust-lex.h: Likewise.
4017         * rust-session-manager.cc (Session::compile_crate): Add error.
4019 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
4021         * expand/rust-macro-expand.cc
4022         (transcribe_expression): Skip trailing semicolon.
4024 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
4026         * typecheck/rust-hir-type-check-item.cc: called error function.
4028 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
4030         * ast/rust-ast.h: Modify constructors of `Rust::Identifier`
4031         * ast/rust-pattern.h: Likewise.
4032         * hir/tree/rust-hir-item.h: Likewise.
4033         * parse/rust-parse-impl.h (Parser::parse_macro_rules_def): Likewise.
4034         (Parser::parse_decl_macro_def): Likewise.
4035         (Parser::parse_macro_match_fragment): Likewise.
4036         (Parser::parse_module): Likewise.
4037         (Parser::parse_use_tree): Likewise.
4038         (Parser::parse_function): Likewise.
4039         (Parser::parse_type_param): Likewise.
4040         (Parser::parse_type_alias): Likewise.
4041         (Parser::parse_struct): Likewise.
4042         (Parser::parse_struct_field): Likewise.
4043         (Parser::parse_enum): Likewise.
4044         (Parser::parse_enum_item): Likewise.
4045         (Parser::parse_union): Likewise.
4046         (Parser::parse_static_item): Likewise.
4047         (Parser::parse_trait): Likewise.
4048         (Parser::parse_trait_item): Likewise.
4049         (Parser::parse_trait_type): Likewise.
4050         (Parser::parse_trait_const): Likewise.
4051         (Parser::parse_external_item): Likewise.
4052         (Parser::parse_generic_args_binding): Likewise.
4053         (Parser::parse_method): Likewise.
4054         (Parser::parse_maybe_named_param): Likewise.
4055         (Parser::parse_identifier_pattern): Likewise.
4056         (Parser::parse_struct_expr_field): Likewise.
4057         (ResolveItem::visit): Likewise.
4058         * typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItem::visit):Add comments
4059         * resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit): Likewise.
4060         * checks/lints/rust-lint-scan-deadcode.h: Fix error location
4062 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
4064         * backend/rust-compile-base.cc
4065         (HIRCompileBase::address_expression): Remove gcc_location method call.
4066         (HIRCompileBase::indirect_expression): Likewise.
4067         (HIRCompileBase::compile_constant_item): Likewise.
4068         (HIRCompileBase::named_constant_expression): Likewise.
4069         * backend/rust-compile-expr.cc
4070         (CompileExpr::visit): Remove gcc_location method call, use UNKNOWN_LOCATION to initialize.
4071         (CompileExpr::get_fn_addr_from_dyn): Remove gcc_location method call.
4072         (CompileExpr::type_cast_expression): Likewise.
4073         * backend/rust-compile-intrinsic.cc
4074         (transmute_handler): Replace "Location ().gcc_location ()" with UNKNOWN_LOCATION.
4075         (copy_nonoverlapping_handler): Likewise.
4076         (prefetch_data_handler): Likewise.
4077         (atomic_store_handler_inner): Likewise.
4078         (atomic_load_handler_inner): Likewise.
4079         * resolve/rust-ast-resolve-expr.cc
4080         (ResolveExpr::visit): Remove gcc_location method call.
4081         * rust-diagnostics.cc
4082         (rust_be_error_at): Likewise.
4083         (rust_be_warning_at): Likewise.
4084         (rust_be_fatal_error): Likewise.
4085         (rust_be_inform): Likewise.
4086         * rust-diagnostics.h
4087         (rust_sorry_at): Likewise.
4088         * rust-gcc.cc
4089         (Bvariable::get_tree): Likewise.
4090         (Gcc_backend::fill_in_fields): Likewise.
4091         (Gcc_backend::named_type): Likewise.
4092         (Gcc_backend::real_part_expression): Likewise.
4093         (Gcc_backend::imag_part_expression): Likewise.
4094         (Gcc_backend::complex_expression): Likewise.
4095         (Gcc_backend::convert_expression): Likewise.
4096         (Gcc_backend::struct_field_expression): Likewise.
4097         (Gcc_backend::compound_expression): Likewise.
4098         (Gcc_backend::conditional_expression): Likewise.
4099         (Gcc_backend::negation_expression): Likewise.
4100         (Gcc_backend::arithmetic_or_logical_expression): Likewise.
4101         (Gcc_backend::arithmetic_or_logical_expression_checked): Likewise.
4102         (Gcc_backend::comparison_expression): Likewise.
4103         (Gcc_backend::lazy_boolean_expression): Likewise.
4104         (Gcc_backend::constructor_expression): Likewise.
4105         (Gcc_backend::array_constructor_expression): Likewise.
4106         (Gcc_backend::array_initializer): Likewise.
4107         (Gcc_backend::array_index_expression): Likewise.
4108         (Gcc_backend::call_expression): Likewise.
4109         (Gcc_backend::assignment_statement): Likewise.
4110         (Gcc_backend::return_statement): Likewise.
4111         (Gcc_backend::exception_handler_statement): Likewise.
4112         (Gcc_backend::if_statement): Likewise.
4113         (Gcc_backend::loop_expression): Likewise.
4114         (Gcc_backend::exit_expression): Likewise.
4115         (Gcc_backend::block): Likewise.
4116         (Gcc_backend::convert_tree): Likewise.
4117         (Gcc_backend::global_variable): Likewise.
4118         (Gcc_backend::local_variable): Likewise.
4119         (Gcc_backend::parameter_variable): Likewise.
4120         (Gcc_backend::static_chain_variable): Likewise.
4121         (Gcc_backend::temporary_variable): Likewise.
4122         (Gcc_backend::label): Likewise.
4123         (Gcc_backend::goto_statement): Likewise.
4124         (Gcc_backend::label_address): Likewise.
4125         (Gcc_backend::function): Likewise.
4126         * rust-linemap.cc
4127         (Gcc_linemap::to_string): Likewise.
4128         (Gcc_linemap::location_file): Likewise.
4129         (Gcc_linemap::location_line): Likewise.
4130         (Gcc_linemap::location_column): Likewise.
4131         (Gcc_linemap::is_predeclared): Likewise.
4132         (Gcc_linemap::is_unknown): Likewise.
4133         (RichLocation::RichLocation): Likewise.
4134         (RichLocation::add_range): Likewise.
4135         (RichLocation::add_fixit_insert_before): Likewise.
4136         (RichLocation::add_fixit_insert_after): Likewise.
4137         * rust-location.h
4138         (class Location): Replace with typedef.
4139         (operator<): Remove.
4140         (operator==): Remove.
4141         (operator+): Remove.
4142         (operator-): Remove.
4143         * typecheck/rust-hir-trait-resolve.cc
4144         (AssociatedImplTrait::setup_associated_types): Initialize Location with UNKNOWN_LOCATION.
4145         * typecheck/rust-hir-type-check-stmt.cc
4146         (TypeCheckStmt::visit): Likewise.
4147         * util/rust-token-converter.cc
4148         (convert): Remove gcc_location method call.
4150 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
4152         * hir/tree/rust-hir-expr.h (BorrowExpr::is_double_borrow): New.
4153         (ArrayElemsCopied::get_elem_to_copy)
4154         (ArrayElemsCopied::get_num_copies_expr): Return unique_ptr.
4155         (CallExpr::get_fnexpr): Likewise.
4156         (ReturnExpr::get_expr): Likewise.
4157         (StructExprStructFields::get_struct_base): New.
4158         (MethodCallExpr::has_params): New.
4159         (ClosureExpr::has_params): New.
4160         (BlockExpr::get_inner_attrs): New.
4161         (WhileLoopExpr::get_patterns): New.
4162         (ForLoopExpr::get_pattern): New.
4163         (IfLetExpr::get_if_block): Return ref to unique_ptr.
4164         (IfLetExprConseqElse::get_else_block): Likewise.
4165         (MatchExpr::get_inner_attrs): New.
4166         * hir/tree/rust-hir-item.h (Module::get_module_name): New.
4167         (ExternCrate::get_referenced_crate)
4168         (ExternCrate::get_as_clause_name): New.
4169         (UseTreeGlob::get_glob_type, UseTreeGlob::get_path): New.
4170         (UseTreeList::get_path_type, UseTreeList::get_path)
4171         (UseTreeList::get_trees): New.
4172         (TraitItemKind::get_expr): Remove assert. unique_ptr can
4173         be "empty". Must be checked in caller.
4174         * hir/tree/rust-hir-pattern.h (IdentifierPattern::get_is_ref)
4175         (IdentifierPattern::get_to_bind): New.
4176         (RangePatternBoundType::get_has_minus): New.
4177         (RangePattern::get_has_ellipsis_syntax): New.
4178         (StructPatternField::get_outer_attrs): New.
4179         (StructPatternFieldTuplePat::get_index)
4180         (StructPatternFieldTuplePat::get_tuple_pattern): New.
4181         (StructPatternFieldIdent::get_has_ref): New.
4182         * hir/tree/rust-hir-stmt.h (LetStmt::get_outer_attrs): New.
4183         (LetStmt::get_type)
4184         (LetStmt::get_init_expr, LetStmt::get_pattern): Return unique_ptr.
4185         (ExprStmt::get_expr): Likewise.
4186         * hir/tree/rust-hir-type.h (TraitBound::get_for_lifetimes): New.
4187         (TraitBound::get_in_params): New.
4188         (TraitBound::get_opening_question_mark): New.
4189         (ImplTraitType::get_type_param_bounds): New.
4190         (TraitObjectType::get_has_dyn): New.
4191         (TraitBound::get_type_in_parens): New.
4192         (ImplTraitTypeOneBound::get_trait_bound): New.
4193         (BareFunctionType::get_for_lifetimes)
4194         (BareFunctionType::get_is_variadic)
4195         (BareFunctionType::get_function_qualifiers): New.
4196         * hir/tree/rust-hir.h (class Expr): Virtual inherit from FullVisitable.
4197         (class Pattern): Likewise.
4198         (ConstGenericParam::get_name): New.
4199         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Adjust call.
4200         (TypeCheckExpr::resolve_fn_trait_call): Likewise.
4201         * backend/rust-compile-expr.cc (CompileExpr::visit): Adjust call.
4202         (CompileExpr::array_copied_expr): Likewise.
4203         (CompileExpr::generate_possible_fn_trait_call): Likewise.
4204         * backend/rust-compile-stmt.cc (CompileStmt::visit): Likewise.
4205         * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): Likewise.
4206         * checks/errors/rust-const-checker.cc (ConstChecker::visit): Likewise.
4207         * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise.
4208         * hir/rust-hir-dump.cc (Dump::visit): Likewise.
4209         * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Likewise.
4211 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
4213         * typecheck/rust-hir-path-probe.h: called error function
4215 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
4217         * typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args):
4218         called error function
4220 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
4222         * hir/tree/rust-hir-expr.h (class ArrayElems): Inherit from FullVisitable.
4223         (class StructExprField): Likewise.
4224         * hir/tree/rust-hir-item.h (class WhereClauseItem): Likewise.
4225         (class UseTree): Likewise.
4226         (UseTreeRebind::get_path, UseTreeRebind::get_identifier)
4227         (UseTreeRebind::get_bind_type): New.
4228         (UseDeclaration::get_use_tree): New.
4229         (struct TraitFunctionDecl): Change struct to ...
4230         (class TraitFunctionDecl): ... class.
4231         (TraitFunctionDecl::get_where_clause): New.
4232         (StructField::get_outer_attrs): New.
4233         (struct TupleField): Change struct to ...
4234         (class TupleField): ... class.
4235         (TupleField::get_visibility, TupleField::get_outer_attrs): New.
4236         * hir/tree/rust-hir-pattern.h (class TupleStructItems): Inherit
4237         from FullVisitable.
4239 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
4241         * lex/rust-lex.cc (Lexer::build_token): Replace function call.
4242         (Lexer::parse_string): Likewise.
4243         (Lexer::parse_identifier_or_keyword): Likewise.
4244         (Lexer::parse_raw_string): Likewise.
4245         (Lexer::parse_char_or_lifetime): Likewise.
4246         (Lexer::get_input_codepoint_length): Deleted.
4247         (Lexer::peek_codepoint_input): Deleted.
4248         (Lexer::skip_codepoint_input): Deleted.
4249         * lex/rust-lex.h: Remove some methods and fields
4251 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
4253         * typecheck/rust-tyty-bounds.cc (TypeCheckBase::get_predicate_from_bound): track output
4254         * util/rust-hir-map.cc (Mappings::lookup_trait_item_lang_item): new helper
4255         * util/rust-hir-map.h: add prototype for helper
4257 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
4259         * backend/rust-compile-expr.cc (CompileExpr::generate_possible_fn_trait_call): use fnexpr
4260         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::resolve_fn_trait_call): likewise
4262 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
4264         * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): called rust_error_at
4266 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
4268         * hir/tree/rust-hir.h (struct Crate): Rename struct into ...
4269         (class Crate): ... class, and add get_items.
4270         * backend/rust-compile.cc (CompileCrate::go): Adapt to visibility change of items.
4271         * checks/errors/privacy/rust-privacy-check.cc (Resolver::resolve): Likewise.
4272         * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::go): Likewise.
4273         * checks/errors/privacy/rust-pub-restricted-visitor.cc (PubRestrictedVisitor::go): Likewise.
4274         * checks/errors/privacy/rust-visibility-resolver.cc (VisibilityResolver::go): Likewise.
4275         * checks/errors/rust-const-checker.cc (ConstChecker::go): Likewise.
4276         * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::go): Likewise.
4277         * checks/lints/rust-lint-marklive.cc (FindEntryPoint::find): Likewise.
4278         * checks/lints/rust-lint-scan-deadcode.h (ScanDeadCode::Scan): Likewise.
4279         * metadata/rust-export-metadata.cc (PublicInterface::gather_export_data): Likewise.
4280         * typecheck/rust-hir-type-check.cc (TypeResolution::Resolve): Likewise.
4281         * hir/rust-hir-dump.cc (CompileCrate::go): Likewise.
4283 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
4285         * hir/tree/rust-hir-expr.h (AwaitExpr::get_awaited_expr): New.
4286         (AsyncBlockExpr::get_has_move, AsyncBlockExpr::get_block_expr): New.
4287         * hir/tree/rust-hir-item.h (Enum::get_where_clause): New.
4288         (Trait::get_where_clause, Trait::is_unsafe): New.
4289         (ExternalItem::get_visibility): New.
4291 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
4293         * hir/tree/rust-hir.h (class FullVisitable): New.
4294         (class Stmt): Adjust with new class.
4295         (class Expr): Likewise.
4296         (class Pattern): Likewise.
4297         (class Type): Likewise.
4298         (class TypeParamBound): Likewise.
4299         (class GenericParam): Likewise.
4300         (class TraitItem): Likewise.
4301         (class ImplItem): Likewise.
4303 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
4305         * hir/tree/rust-hir.h (class WithInnerAttrs): New.
4306         (class Item): Adjust to new WithInnerAttrs class.
4307         (struct Crate): Likewise.
4308         * hir/rust-hir-dump.cc (Dump::go): Likewise.
4309         (Dump::visit): Likewise.
4310         * hir/tree/rust-hir-expr.h (class GroupedExpr): Likewise.
4311         (class ArrayExpr): Likewise.
4312         (class TupleExpr): Likewise.
4313         (class StructExprStruct): Likewise.
4314         (class BlockExpr): Likewise.
4315         (class MatchExpr): Likewise.
4316         * hir/tree/rust-hir-item.h (TypeParam::get_outer_attribute): New.
4317         (class Module): Adjust to new  WithInnerAttrs class.
4318         (struct StructField): change struct to...
4319         (class StructField): ... a class.
4320         (class ImplBlock): Adjust to new  WithInnerAttrs class.
4321         (class ExternBlock): Likewise.
4323 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
4325         * hir/tree/rust-hir-type.h (ArrayType::get_element_type): Returns
4326         unique_ptr.
4327         * hir/tree/rust-hir-expr.h (ArithmeticOrLogicalExpr::get_lhs)
4328         (ArithmeticOrLogicalExpr::get_rhs): Likewise.
4329         (ComparisonExpr::get_lhs, ComparisonExpr::get_rhs): Likewise.
4330         (LazyBooleanExpr::get_lhs, LazyBooleanExpr::get_rhs): Likewise.
4331         (AssignmentExpr::get_lhs, AssignmentExpr::get_rhs): Likewise.
4332         (ArrayExpr::get_internal_elements): Likewise.
4333         (ArrayIndexExpr::get_index_expr, ArrayIndexExpr::get_array_expr):
4334         Likewise.
4335         (StructExprFieldWithVal::get_value): Likewise.
4336         (IfExpr::get_if_condition, IfExpr::get_if_block): Likewise.
4337         (ExprWithBlock::get_else_block): Likewise.
4338         * hir/tree/rust-hir-item.h (FunctionParam::get_param_name)
4339         (FunctionParam::get_type): Likewise.
4340         (ConstantItem::get_type, ConstantItem::get_expr): Likewise.
4341         (StaticItem::get_expr, StaticItem::get_type): Likewise.
4342         * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit):
4343         Adjust for previous change.
4344         * backend/rust-compile-block.cc (CompileConditionalBlocks::visit):
4345         Likewise.
4346         * backend/rust-compile-expr.cc (CompileExpr::visit): Likewise.
4347         * backend/rust-compile-item.cc (CompileItem::visit): Likewise.
4348         * backend/rust-compile-struct-field-expr.cc
4349         (CompileStructExprField::visit): Likewise.
4350         * checks/errors/privacy/rust-privacy-reporter.cc
4351         (PrivacyReporter::visit): Likewise.
4352         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
4353         Likewise.
4354         * typecheck/rust-hir-type-check-implitem.cc
4355         (TypeCheckImplItem::visit): Likewise.
4356         * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit):
4357         Likewise.
4358         * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit):
4359         Likewise.
4360         * typecheck/rust-hir-type-check-struct.cc
4361         (TypeCheckStructExpr::visit): Likewise.
4362         * typecheck/rust-hir-type-check.cc
4363         (TraitItemReference::get_type_from_fn): Likewise.
4365 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
4367         * ast/rust-pattern.h: Change constructor to accept new parameter
4368         instead of defaulting on string type.
4369         * parse/rust-parse-impl.h (Parser::parse_literal_or_range_pattern):
4370         Propagate type hint.
4371         (Parser::parse_pattern_no_alt): Likewise.
4373 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
4375         * lex/rust-lex.cc (Lexer::parse_byte_char):add check for range of codepoint
4377 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
4379         * typecheck/rust-hir-type-check-pattern.cc (emit_invalid_field_error): Refactored Field
4380         Error Function
4381         (TypeCheckPattern::visit): called emit_invalid_field_error function
4383 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
4385         * expand/rust-macro-expand.cc
4386         (MacroExpander::match_matcher): Remove append_fragment inside repetitions.
4387         (MacroExpander::match_n_matches): Use sub_stack push/pop to handle repetitions.
4388         (MatchedFragmentContainer::add_fragment): Add MatchedFragmentContainer accepting version.
4389         * expand/rust-macro-expand.h
4390         (MatchedFragmentContainer::add_fragment): Likewise.
4391         (MatchedFragmentContainerRepetition::add_fragment): Likewise.
4392         (SubstititionScope::append_fragment): Likewise.
4394 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
4396         * typecheck/rust-casts.cc (TypeCastRules::check): apply new argument
4397         * typecheck/rust-coercion.cc (TypeCoercionRules::Coerce): track if this is a cast site
4398         (TypeCoercionRules::TryCoerce): update ctor
4399         (TypeCoercionRules::TypeCoercionRules): cleanup error handling
4400         (TypeCoercionRules::do_coercion): likewise
4401         (TypeCoercionRules::coerce_unsafe_ptr): only infer in try mode
4402         (TypeCoercionRules::coerce_borrowed_pointer): cleanup
4403         * typecheck/rust-coercion.h: update header
4405 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
4407         * typecheck/rust-hir-trait-reference.h: update prototype
4408         * typecheck/rust-hir-trait-resolve.cc: add generic args as an out param
4409         * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): use the generics
4411 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
4413         * ast/rust-ast-collector.cc (TokenCollector::visit): Add comment
4414         after tail expressions.
4415         * ast/rust-ast-dump.cc (Dump::require_spacing): Check for
4416         missing previous token.
4417         * ast/rust-ast-dump.h: Output formatting characters.
4419 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
4421         * ast/rust-ast-collector.cc (TokenCollector::collect): Collect
4422         CollectItems once done.
4423         (TokenCollector::newline): Add newline formatting
4424         implementation.
4425         (TokenCollector::indentation): Add indentation implementation.
4426         (TokenCollector::increment_indentation): Add indentation
4427         increment.
4428         (TokenCollector::comment): Add new comment formatting option.
4429         * ast/rust-ast-collector.h: Update prototypes.
4431 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
4433         * ast/rust-ast-collector.cc (TokenCollector::collect_tokens):
4434         Filter tokens.
4435         (TokenCollector::visit_items_joined_by_separator): Change store
4436         call.
4437         (TokenCollector::visit_as_line): Likewise.
4438         (TokenCollector::visit_items_as_block): Likewise.
4439         (TokenCollector::trailing_comma): Likewise.
4440         (TokenCollector::visit): Likewise.
4441         (TokenCollector::visit_closure_common): Likewise.
4442         (TokenCollector::visit_function_common): Likewise.
4443         * ast/rust-ast-collector.h (class CollectItem): Add class to
4444         differentiate between formatting and raw data (tokens).
4446 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
4448         * ast/rust-ast-collector.cc (TokenCollector::TokenCollector):
4449         Remove constructor, changing it to an implicit default
4450         constructor.
4451         * ast/rust-ast-collector.h: Change from container reference to
4452         direct container.
4453         * ast/rust-ast-dump.h: Change call to constructor.
4454         * expand/rust-macro-expand.h (struct MacroExpander): Likewise.
4456 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
4458         * ast/rust-ast-dump.cc (Dump::require_spacing): Add a function
4459         to determine wether a space shall output.
4460         * ast/rust-ast-dump.h: Add function prototype as well as
4461         condition.
4463 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
4465         * ast/rust-ast-collector.cc (TokenCollector::visit): Add a visit
4466         function for visitable abstract class so we can call a dump on
4467         any visitable item.
4468         * ast/rust-ast-collector.h: Add new visit function prototype.
4469         * ast/rust-ast-dump.cc (Dump::go): Add call to process function.
4470         (Dump::visit): Remove functions.
4471         (Dump::visit_items_joined_by_separator): Likewise.
4472         (Dump::visit_as_line): Likewise.
4473         (Dump::visit_items_as_lines): Likewise.
4474         (Dump::visit_items_as_block): Likewise.
4475         (Dump::visit_function_common): Likewise.
4476         (get_delimiters): Likewise.
4477         (Dump::debug): Update with call to tokencollector.
4478         * ast/rust-ast-dump.h (RUST_AST_DUMP_H): Move include
4479         directives.
4480         (class Dump): Remove multiple prototypes and add generic process
4481         function.
4483 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
4485         * ast/rust-ast-collector.cc (TokenCollector::visit): Add
4486         semicolon in extern blocks.
4488 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
4490         * rust-session-manager.cc (Session::enable_dump): Remove
4491         tokenstream dump.
4492         (Session::compile_crate): Likewise.
4493         (Session::dump_tokenstream): Likewise.
4494         * rust-session-manager.h (struct CompileOptions): Likewise.
4496 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
4498         * lex/rust-lex.cc (Lexer::build_token):add check for all kinds of whitespaces
4500 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
4502         * ast/rust-ast.h: Add default constructors.
4504 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
4506         * ast/rust-ast-collector.cc (TokenCollector::visit): Change with
4507         call to getter.
4508         * ast/rust-ast.cc (Module::as_string): Likewise.
4509         (StaticItem::as_string): Likewise.
4510         (TupleStruct::as_string): Likewise.
4511         (Method::as_string): Likewise.
4512         (StructStruct::as_string): Likewise.
4513         (UseTreeRebind::as_string): Likewise.
4514         (Enum::as_string): Likewise.
4515         (Trait::as_string): Likewise.
4516         (Union::as_string): Likewise.
4517         (Function::as_string): Likewise.
4518         (TypeAlias::as_string): Likewise.
4519         (MacroRulesDefinition::as_string): Likewise.
4520         (FieldAccessExpr::as_string): Likewise.
4521         (MacroMatchFragment::as_string): Likewise.
4522         (TypeParam::as_string): Likewise.
4523         (StructExprFieldIdentifierValue::as_string): Likewise.
4524         (EnumItem::as_string): Likewise.
4525         (StructField::as_string): Likewise.
4526         (ExternalTypeItem::as_string): Likewise.
4527         (ExternalStaticItem::as_string): Likewise.
4528         (ExternalFunctionItem::as_string): Likewise.
4529         (TraitFunctionDecl::as_string): Likewise.
4530         (TraitMethodDecl::as_string): Likewise.
4531         (TraitItemConst::as_string): Likewise.
4532         (TraitItemType::as_string): Likewise.
4533         (MaybeNamedParam::as_string): Likewise.
4534         (MetaListPaths::as_string): Likewise.
4535         (MetaListNameValueStr::as_string): Likewise.
4536         (Module::process_file_path): Likewise.
4537         (MetaListNameValueStr::check_cfg_predicate): Likewise.
4538         (MetaListPaths::check_cfg_predicate): Likewise.
4539         (MetaWord::check_cfg_predicate): Likewise.
4540         (MetaNameValueStr::check_cfg_predicate): Likewise.
4541         (MetaNameValueStr::to_attribute): Likewise.
4542         (MetaWord::to_attribute): Likewise.
4543         (MetaListPaths::to_attribute): Likewise.
4544         (MetaListNameValueStr::to_attribute): Likewise.
4545         (operator<<): Change Identifier class <<
4546         operator overload for standard output stream.
4547         * ast/rust-ast.h (class Identifier): Change typedef to proper
4548         class definition.
4549         (operator<<): Add prototype for operator overload.
4550         (class Token): Change getter identifier.
4551         (class MetaListNameValueStr): Likewise.
4552         (class PathExpr): Likewise.
4553         * ast/rust-expr.h: Likewise.
4554         * ast/rust-item.h: Likewise.
4555         * ast/rust-macro.h: Likewise.
4556         * ast/rust-path.cc (GenericArg::disambiguate_to_type): Likewise.
4557         (GenericArgsBinding::as_string): Likewise.
4558         (ConstGenericParam::as_string): Likewise.
4559         * ast/rust-path.h: Likewise.
4560         * ast/rust-pattern.cc (IdentifierPattern::as_string): Likewise.
4561         (StructPatternFieldIdentPat::as_string): Likewise.
4562         (StructPatternFieldIdent::as_string): Likewise.
4563         * ast/rust-type.h: Likewise.
4564         * backend/rust-compile-base.cc: Likewise.
4565         * backend/rust-compile-expr.cc (CompileExpr::visit): Likewise.
4566         * backend/rust-compile-extern.h: Likewise.
4567         * backend/rust-compile-fnparam.cc (CompileFnParam::visit):
4568         Likewise.
4569         * backend/rust-compile-implitem.cc (CompileTraitItem::visit):
4570         Likewise.
4571         * backend/rust-compile-item.cc (CompileItem::visit): Likewise.
4572         * backend/rust-compile-pattern.cc (CompilePatternBindings::visit): Likewise.
4573         * backend/rust-compile-struct-field-expr.cc (CompileStructExprField::visit):
4574         Likewise.
4575         * backend/rust-compile-var-decl.h: Likewise.
4576         * backend/rust-compile.cc: Likewise.
4577         * checks/errors/rust-unsafe-checker.cc (check_extern_call):
4578         Likewise.
4579         * checks/lints/rust-lint-marklive.cc (MarkLive::visit):
4580         Likewise.
4581         * checks/lints/rust-lint-scan-deadcode.h: Likewise.
4582         * expand/rust-derive-clone.cc (DeriveClone::clone_fn): Likewise.
4583         (DeriveClone::visit_tuple): Likewise.
4584         (DeriveClone::visit_struct): Likewise.
4585         (DeriveClone::visit_union): Likewise.
4586         * expand/rust-derive-copy.cc (DeriveCopy::visit_struct):
4587         Likewise.
4588         (DeriveCopy::visit_tuple): Likewise.
4589         (DeriveCopy::visit_enum): Likewise.
4590         (DeriveCopy::visit_union): Likewise.
4591         * expand/rust-macro-expand.cc (MacroExpander::match_matcher):
4592         Likewise.
4593         (MacroExpander::match_n_matches): Likewise.
4594         (MacroExpander::match_repetition): Likewise.
4595         (MacroExpander::match_repetition_skipped_metavars): Likewise.
4596         * hir/rust-ast-lower-base.cc (struct_field_name_exists):
4597         Likewise.
4598         * hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Likewise.
4599         * hir/rust-ast-lower-type.cc (ASTLowerGenericParam::visit):
4600         Likewise.
4601         * hir/rust-hir-dump.cc (Dump::visit): Likewise.
4602         * hir/tree/rust-hir-expr.h: Likewise.
4603         * hir/tree/rust-hir-item.h: Likewise.
4604         * hir/tree/rust-hir-path.h: Likewise.
4605         * hir/tree/rust-hir-type.h: Likewise.
4606         * hir/tree/rust-hir.cc (Module::as_string): Likewise.
4607         (StaticItem::as_string): Likewise.
4608         (TupleStruct::as_string): Likewise.
4609         (ConstantItem::as_string): Likewise.
4610         (StructStruct::as_string): Likewise.
4611         (UseTreeRebind::as_string): Likewise.
4612         (Enum::as_string): Likewise.
4613         (Trait::as_string): Likewise.
4614         (Union::as_string): Likewise.
4615         (Function::as_string): Likewise.
4616         (TypeAlias::as_string): Likewise.
4617         (FieldAccessExpr::as_string): Likewise.
4618         (TypeParam::as_string): Likewise.
4619         (GenericArgsBinding::as_string): Likewise.
4620         (StructPatternFieldIdent::as_string): Likewise.
4621         (StructPatternFieldIdentPat::as_string): Likewise.
4622         (IdentifierPattern::as_string): Likewise.
4623         (StructExprFieldIdentifierValue::as_string): Likewise.
4624         (EnumItem::as_string): Likewise.
4625         (StructField::as_string): Likewise.
4626         (ExternalStaticItem::as_string): Likewise.
4627         (ExternalFunctionItem::as_string): Likewise.
4628         (NamedFunctionParam::as_string): Likewise.
4629         (TraitFunctionDecl::as_string): Likewise.
4630         (TraitItemConst::as_string): Likewise.
4631         (TraitItemType::as_string): Likewise.
4632         (MaybeNamedParam::as_string): Likewise.
4633         * hir/tree/rust-hir.h: Likewise.
4634         * parse/rust-parse-impl.h (Parser::parse_macro_match_fragment):
4635         Likewise.
4636         (Parser::parse_module): Likewise.
4637         (Parser::parse_use_tree): Likewise.
4638         (Parser::parse_maybe_named_param): Likewise.
4639         * resolve/rust-ast-resolve-implitem.h: Likewise.
4640         * resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit):
4641         Likewise.
4642         (ResolveItem::visit): Likewise.
4643         (flatten_rebind): Likewise.
4644         (ResolveExternItem::visit): Likewise.
4645         (rust_flatten_rebind): Likewise.
4646         (rust_flatten_rebind_nested): Likewise.
4647         * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::go):
4648         Likewise.
4649         (PatternDeclaration::visit): Likewise.
4650         (PatternDeclaration::add_new_binding): Likewise.
4651         * resolve/rust-ast-resolve-stmt.h: Likewise.
4652         * resolve/rust-ast-resolve-toplevel.h: Likewise.
4653         * resolve/rust-ast-resolve-type.h: Likewise.
4654         * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Likewise.
4655         * typecheck/rust-autoderef.cc: Likewise.
4656         * typecheck/rust-hir-dot-operator.cc (MethodResolver::select):
4657         Likewise.
4658         * typecheck/rust-hir-path-probe.cc (PathProbeType::visit):
4659         Likewise.
4660         * typecheck/rust-hir-trait-reference.cc (TraitReference::get_name): Likewise.
4661         * typecheck/rust-hir-trait-resolve.cc (ResolveTraitItemToRef::visit): Likewise.
4662         (TraitResolver::resolve_trait): Likewise.
4663         (TraitItemReference::resolve_item): Likewise.
4664         (AssociatedImplTrait::setup_raw_associated_types): Likewise.
4665         * typecheck/rust-hir-type-check-enumitem.cc (TypeCheckEnumItem::visit): Likewise.
4666         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
4667         Likewise.
4668         * typecheck/rust-hir-type-check-implitem.cc (TypeCheckTopLevelExternItem::visit): Likewise.
4669         (TypeCheckImplItem::visit): Likewise.
4670         (TypeCheckImplItemWithTrait::visit): Likewise.
4671         * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit):
4672         Likewise.
4673         * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Likewise.
4674         * typecheck/rust-hir-type-check-struct.cc (TypeCheckStructExpr::visit): Likewise.
4675         * typecheck/rust-hir-type-check-type.cc (TypeResolveGenericParam::visit): Likewise.
4676         * typecheck/rust-hir-type-check.cc (TraitItemReference::get_type_from_fn): Likewise.
4677         * typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args): Likewise.
4678         * util/rust-attributes.cc (check_doc_attribute): Likewise.
4679         * util/rust-hir-map.cc (Mappings::insert_macro_def): Likewise.
4681 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
4683         * lex/rust-lex.cc (is_float_digit):Change types of param to `uint32_t`
4684         (is_x_digit):Likewise
4685         (is_octal_digit):Likewise
4686         (is_bin_digit):Likewise
4687         (check_valid_float_dot_end):Likewise
4688         (is_whitespace):Likewise
4689         (is_non_decimal_int_literal_separator):Likewise
4690         (is_identifier_start):Likewise
4691         (is_identifier_continue):Likewise
4692         (Lexer::skip_broken_string_input):Likewise
4693         (Lexer::build_token):Remove handling BOM
4694         (Lexer::parse_in_type_suffix):Modify use of `current_char`
4695         (Lexer::parse_in_decimal):Likewise
4696         (Lexer::parse_escape):Likewise
4697         (Lexer::parse_utf8_escape):Likewise
4698         (Lexer::parse_partial_string_continue):Likewise
4699         (Lexer::parse_partial_hex_escape):Likewise
4700         (Lexer::parse_partial_unicode_escape):Likewise
4701         (Lexer::parse_byte_char):Likewise
4702         (Lexer::parse_byte_string):Likewise
4703         (Lexer::parse_raw_byte_string):Likewise
4704         (Lexer::parse_raw_identifier):Likewise
4705         (Lexer::parse_non_decimal_int_literal):Likewise
4706         (Lexer::parse_decimal_int_or_float):Likewise
4707         (Lexer::peek_input):Change return type to `Codepoint`
4708         (Lexer::get_input_codepoint_length):Change to return 1
4709         (Lexer::peek_codepoint_input):Change to be wrapper of `peek_input`
4710         (Lexer::skip_codepoint_input):Change to be wrapper of `skip_input`
4711         (Lexer::test_get_input_codepoint_n_length):Deleted
4712         (Lexer::split_current_token):Deleted
4713         (Lexer::test_peek_codepoint_input):Deleted
4714         (Lexer::start_line):Move backwards
4715         (assert_source_content):New helper function for selftest
4716         (test_buffer_input_source):New helper function for selftest
4717         (test_file_input_source):Likewise
4718         (rust_input_source_test):New test
4719         * lex/rust-lex.h (rust_input_source_test):New test
4720         * rust-lang.cc (run_rust_tests):Add selftest
4722 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
4724         * expand/rust-macro-expand.cc
4725         (MacroExpander::match_repetition_skipped_metavars): New.
4726         (MacroExpander::match_repetition): Use new method.
4727         * expand/rust-macro-expand.h
4728         (MacroExpander::match_repetition_skipped_metavars): New.
4730 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
4732         * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): called rust_error_at
4734 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
4736         * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): called rust_error_at
4738 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
4740         * expand/rust-macro-expand.cc
4741         (MacroExpander::match_token): Match token instead of token id.
4742         * parse/rust-parse-impl.h
4743         (Parser::skip_token): Add token-skipping variant.
4744         (Parser::expect_token): Likewise.
4745         * parse/rust-parse.h
4746         (Parser::skip_token): Likewise.
4747         (Parser::expect_token): Likewise.
4749 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
4751         * lang.opt: Add -frust-name-resolution-2.0 option
4753 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
4755         * typecheck/rust-autoderef.cc (AutoderefCycle::cycle): add check for pointers
4757 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
4759         * typecheck/rust-autoderef.cc: use new selection filter
4760         * typecheck/rust-hir-dot-operator.cc (MethodResolver::Select): new slection Filter
4761         * typecheck/rust-hir-dot-operator.h: New select prototype
4762         * typecheck/rust-hir-type-check-expr.cc: call select
4763         * typecheck/rust-type-util.cc (try_coercion): new helper
4764         * typecheck/rust-type-util.h (try_coercion): helper prototype
4766 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
4768         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): passed "E0277"
4769         * typecheck/rust-tyty.cc (BaseType::bounds_compatible): passed "E0277"
4771 2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
4773         * expand/rust-expand-visitor.cc (ExpandVisitor::visit):
4774         Expand expressions in more contexts.
4775         * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit):
4776         Visit enum variants.
4778 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
4780         * ast/rust-ast.cc (BlockExpr::normalize_tail_expr): Refactor
4781         code and warn about dangling reference.
4782         * expand/rust-expand-visitor.cc (expand_stmt_attribute):
4783         Document function and change argument names to make those
4784         clearer.
4786 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
4788         * expand/rust-expand-visitor.cc (ExpandVisitor::expand_inner_stmts):
4789         Remove second argument.
4790         (ExpandVisitor::visit): Remove argument from function call.
4791         * expand/rust-expand-visitor.h: Update function prototype.
4793 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
4795         * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Change
4796         call to expand_inner_stmts.
4797         (expand_tail_expr): Change argument name and try to expand the
4798         last statement as a tail expression once all statements have
4799         been expanded.
4800         * expand/rust-expand-visitor.h: Change prototype to accept
4801         parent class.
4802         * ast/rust-expr.h: Add try_convert_last_stmt function prototype.
4804 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
4806         * ast/rust-expr.h: Add a function to take tail expr as well
4807         as a function to set a tail expression.
4808         * expand/rust-expand-visitor.cc (expand_tail_expr): Add tail
4809         expression expansion function.
4810         (ExpandVisitor::visit): Add call to tail expr expansion in for
4811         BlockExpr.
4813 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
4814             Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
4816         * expand/rust-expand-visitor.cc : Change type from pointer to
4817         reference and expand statements from statements.
4818         * ast/rust-macro.h: Return macro kind.
4819         * ast/rust-ast.h: Add Statement kind.
4820         * ast/rust-item.h: Change module.
4821         * ast/rust-stmt.h: Return kind.
4823 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
4825         * expand/rust-macro-expand.cc
4826         (MacroExpander::expand_decl_macro):
4827         Use pointers/smart pointers to refer to MatchedFragmentContainer instances.
4828         (MacroExpander::transcribe_rule): Likewise.
4829         (MatchedFragmentContainer::get_single_fragment): New implementation.
4830         (MatchedFragmentContainer::get_fragments): Likewise.
4831         (MatchedFragmentContainer::add_fragment): Likewise.
4832         (MatchedFragmentContainer::zero): Likewise.
4833         (MatchedFragmentContainer::metavar): Likewise.
4834         * expand/rust-macro-expand.h
4835         (class MatchedFragmentContainer): Make abstract.
4836         (class MatchedFragmentContainerMetaVar): New.
4837         (class MatchedFragmentContainerRepetition): New.
4838         (class SubstitutionScope):
4839         Use pointers/smart pointers to refer to MatchedFragmentContainer instances.
4840         (MacroExpander::transcribe_rule): Likewise.
4841         * expand/rust-macro-substitute-ctx.cc
4842         (SubstituteCtx::substitute_metavar): Likewise.
4843         (SubstituteCtx::check_repetition_amount): Likewise.
4844         (SubstituteCtx::substitute_repetition): Likewise.
4845         * expand/rust-macro-substitute-ctx.h
4846         (class SubstituteCtx): Likewise.
4848 2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>
4850         * resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): called rust_error_at
4851         * resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): called rust_error_at
4853 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
4855         * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::ResolveImplBlockSelfWithInference):
4856         arguments mappings as an out parameter and apply them to the bounds
4857         * typecheck/rust-hir-type-check-item.h: update the prototype
4858         * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments):
4859         apply the arguments to the segment type
4861 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
4863         * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments):
4864         simplify lookup of the respective predicate
4865         * typecheck/rust-tyty-subst.cc (SubstitutionArg::SubstitutionArg): track original parameter
4866         (SubstitutionArg::operator=): update copy ctor
4867         (SubstitutionArg::get_param_ty): use original param
4868         (SubstitutionArg::as_string): update as_string
4869         * typecheck/rust-tyty-subst.h: add new private field
4871 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
4873         * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::ResolveImplBlockSelfWithInference):
4874         New helper utility to infer non concrete types and handle the case where its not a
4875         binding generic type (which inherits SubstitutionRef)
4876         * typecheck/rust-hir-type-check-item.h: new helper prototype
4877         * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments): use this helper
4879 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
4881         * typecheck/rust-hir-trait-resolve.cc: use lookup_predicate (DefID)
4882         * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments): fix formatting
4884 2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
4886         * ast/rust-ast.h (MacroInvocation::add_semicolon): New method.
4887         (Expr::to_stmt): Remove method.
4888         * ast/rust-macro.h (MacroInvocation::add_semicolon): Add override.
4889         (MacroInvocation::to_stmt): Remove override.
4890         * ast/rust-stmt.h: Remove use of Expr::to_stmt.
4891         (ExprStmt::add_semicolon): Add override.
4892         * expand/rust-macro-expand.h (struct MacroExpander):
4893         Add EXPR/STMT and remove BLOCK from ContextType.
4894         * expand/rust-expand-visitor.cc (ExpandVisitor::maybe_expand_expr): Use EXPR context.
4895         (ExpandVisitor::expand_inner_stmts): Use STMT context.
4896         (ExpandVisitor::visitor): Remove use of BLOCK context.
4897         * expand/rust-macro-expand.cc (parse_many): Pass enum by value.
4898         (transcribe_on_delimiter): Remove function.
4899         (transcribe_context): Use EXPR/STMT contexts.
4900         (MacroExpander::parse_proc_macro_output): Use EXPR/STMT contexts.
4901         (transcribe_many_stmts): Parse statements with semicolons.
4902         * parse/rust-parse-impl.h (Parser::parse_stmt):
4903         Delegate macro parsing to parse_expr_stmt, check for ! after macro_rules.
4904         (Parser::parse_let_stmt): Work around lack of NT tokens.
4905         (Parser::parse_expr_stmt): Handle statements at end of macro expansions.
4906         (Parser::parse_expr_stmt): Parse macro statements/expression statements
4907         starting with a macro.
4908         (Parser::parse_match_expr): Don't modify flag unnecessarily.
4909         (Parser::parse_stmt_or_expr):
4910         Parse macro statements/expression statements starting with a macro.
4911         (Parser::parse_path_based_stmt_or_expr): Remove method.
4912         (Parser::parse_macro_invocation_maybe_semi): Remove method.
4913         (Parser::parse_expr): Move code into left_denotations.
4914         (Parser::left_denotations): New method.
4915         (Parser::null_denotation): Split out methods for cases with and without paths.
4916         (Parser::null_denotation_path): New method.
4917         (Parser::null_denotation_not_path): New method.
4918         (Parser::parse_macro_invocation_partial): Don't check for semicolon here.
4919         * parse/rust-parse.h: Update declarations.
4920         (struct ParseRestrictions): Additional flag.
4922 2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
4924         * ast/rust-ast.cc (BlockExpr::strip_tail_expr):
4925         Don't normalize tail expression in this method.
4926         (BlockExpr::normalize_tail_expr): New method that only does the normalization.
4927         * ast/rust-expr.h: Declare new method.
4928         * hir/rust-ast-lower-block.h: Normalize tail expressions on blocks before lowering.
4930 2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
4932         * ast/rust-ast-dump.cc (Dump::visit): Print macro invocations.
4934 2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>
4936         * lex/rust-lex.cc (is_whitespace):add all lacked codepoints valid as whitespaces
4937         (is_identifier_start):new function to check XID_Start and underscore
4938         (is_identifier_continue):new function to check XID_Continue
4939         (Lexer::build_token):tokenize Unicode identifiers
4940         (Lexer::parse_partial_string_continue):add comments
4941         (Lexer::parse_partial_unicode_escape):add comments
4942         (Lexer::parse_raw_identifier):change to use `is_identifier_scontinue`
4943         (Lexer::parse_identifier_or_keyword):change to use `is_identifier_continue`
4944         (Lexer::parse_char_or_lifetime):change to use `is_identifier_start/continue`
4945         (Lexer::skip_codepoint_input):do not attempt to skip input when bumping EOF
4946         * lex/rust-lex.h:add `current_char32` field
4948 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
4950         * lex/rust-lex.cc
4951         (Lexer::classify_keyword): Check if iterator is valid before dereferencing.
4953 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
4955         * expand/rust-macro-expand.cc
4956         (MacroExpander::match_repetition): Remove redundant rust_error_at call.
4958 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
4960         * typecheck/rust-unify.cc (UnifyRules::go): dont check bounds on placeholders
4962 2024-01-16  tieway59  <tieway59@foxmail.com>
4964         * typecheck/rust-tycheck-dump.h: Delete this file
4965         * rust-session-manager.cc: Remove `Session::dump_type_resolution`
4966         and `TYPE_RESOLUTION_DUMP`
4967         * rust-session-manager.h: Likewise
4969 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
4971         * backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address):
4972         match the fntype to the candidate
4974 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
4976         * expand/rust-derive.h: Store AstBuilder and location.
4977         * expand/rust-derive.cc (DeriveVisitor::DeriveVisitor): Update constructor.
4978         * expand/rust-derive-clone.h: Remove members now stored in `DeriveVisitor`.
4979         * expand/rust-derive-copy.h: Likewise.
4980         * expand/rust-derive-clone.cc (DeriveClone::DeriveClone): Update constructor.
4981         * expand/rust-derive-copy.cc (DeriveCopy::DeriveCopy): Likewise.
4983 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
4985         * backend/rust-compile-item.cc (CompileItem::visit): ensure assoicated types are setup
4986         * typecheck/rust-hir-trait-reference.h: new interface for concrete impl block
4987         * typecheck/rust-hir-trait-resolve.cc (AssociatedImplTrait::setup_raw_associated_types):
4988         ensure we setup assoicated types for this impl block
4990 2024-01-16  Dave Evans  <dave@dmetwo.org>
4992         * backend/rust-compile-expr.cc (check_match_scrutinee): Add REF type to rust_assert.
4993         (CompileExpr::visit): Add REF type for scrutinee_kind in MatchExpr visitor.
4995 2024-01-16  TieWay59  <tieway59@foxmail.com>
4997         * typecheck/rust-hir-type-check-expr.cc: Remove obsolete error diagnostic
4999 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5001         * typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItemWithTrait::visit):
5002         use new interface
5003         * typecheck/rust-type-util.cc (types_compatable): implementation of new interface
5004         * typecheck/rust-type-util.h (types_compatable): prototype
5005         * typecheck/rust-unify.cc (UnifyRules::expect_placeholder):
5006         It is allow for unification against placeholders
5008 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5010         * expand/rust-expand-visitor.cc (derive_item): Add const
5011         attribute to the trait name argument.
5012         * expand/rust-macro-expand.h (struct MacroExpander): Likewise.
5014 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5016         * expand/rust-expand-visitor.cc (get_traits_to_derive): Change
5017         assertion to allow empty derive directives.
5019 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5021         * expand/rust-expand-visitor.cc (expand_attribute): Add function
5022         to expand a given attribute on a given item.
5023         * expand/rust-macro-expand.h (struct MacroExpander): Change
5024         return type to ast fragment.
5026 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5028         * expand/rust-expand-visitor.cc (get_traits_to_derive): Change
5029         the function to get traits in a given attribute instead of an
5030         attribute vector.
5031         (ExpandVisitor::expand_struct_fields): Remove call in visitor.
5032         (ExpandVisitor::expand_function_params): Likewise.
5033         (ExpandVisitor::expand_closure_params): Likewise.
5034         (ExpandVisitor::visit): Likewise.
5035         (ExpandVisitor::expand_outer_attribute): Remove function.
5036         (ExpandVisitor::visit_outer_attrs): Remove function.
5037         * expand/rust-expand-visitor.h: Remove function prototypes.
5038         (ExpandVisitor::visit_outer_attrs): Remove function.
5040 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5042         * expand/rust-expand-visitor.h: Remove fragment collection fro
5043         procedural macros.
5044         * expand/rust-macro-expand.h (struct MacroExpander): Remove
5045         procedural macro fragment from expander.
5047 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5049         * ast/rust-ast-fragment.cc (Fragment::Fragment): Remove
5050         overwrite member in constructor.
5051         (Fragment::operator=): Removal of overwrite member in copy.
5052         (Fragment::should_overwrite): Remove overwrite getter.
5053         * ast/rust-ast-fragment.h: Remove overwrite boolean member.
5054         * expand/rust-expand-visitor.cc (derive_item): Add a function to
5055         derive items using the expander for now.
5056         (builtin_derive_item): Rename from derive_item to
5057         builtin_derive_item.
5058         (ExpandVisitor::visit): Remove visit to derive attributes.
5059         (ExpandVisitor::expand_derive): Remove derive attribute visitor.
5060         (ExpandVisitor::visit_attrs_with_derive): Likewise.
5061         * expand/rust-expand-visitor.h: Update insertion of other kind
5062         of proc macros. We no longer have an overwrite attribute in the
5063         fragment.
5064         * expand/rust-macro-expand.cc (MacroExpander::parse_procmacro_output):
5065         Return the fragment instead of inserting it.
5066         * expand/rust-macro-expand.h (struct MacroExpander): Return
5067         fragment.
5069 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5071         * ast/rust-ast-collector.h: Update enum name to match
5072         definition.
5073         * expand/rust-expand-visitor.cc (ExpandVisitor::expand_derive):
5074         Add call to expander.
5075         (ExpandVisitor::expand_outer_attribute):
5076         Change call to macro expander.
5077         (ExpandVisitor::expand_inner_attribute): Likewise.
5078         * expand/rust-expand-visitor.h: Remove const attribute to match
5079         visitor declaration. Attach result to the AST. Add condition for
5080         item erasure.
5081         * expand/rust-proc-macro.h: Add token collector and expansion
5082         call. Add lexers and parsers for each proc macro type and uses
5083         them to parse macro output.
5084         * expand/rust-macro-expand.h (struct MacroExpander): Add
5085         functions.
5086         * expand/rust-proc-macro.cc (ProcMacroExpander::import_proc_macros):
5087         Moved from here...
5088         * expand/rust-macro-expand.cc (MacroExpander::import_proc_macros):
5089         ... to here. Unify procedural macro parsing under one function.
5090         Add a flag to determine whether it originate from a derive
5091         macro.
5092         (MacroExpander::parse_procmacro_output):
5093         Parse macro output to statements. Store an error on parsing
5094         failure.
5095         * Make-lang.in: Add const_TokenPtr specific lexer.
5096         * expand/rust-proc-macro-invoc-lexer.cc: New file.
5097         * expand/rust-proc-macro-invoc-lexer.h: New file.
5098         * rust-session-manager.cc (Session::expansion): Remove
5099         ProcMacroExpander declaration.
5100         * ast/rust-ast-fragment.cc (Fragment::Fragment): Add overwrite
5101         flag.
5102         (Fragment::should_overwrite): Add a getter to determine whether
5103         the fragment shall overwrite it's parent or be appended after.
5104         * ast/rust-ast-fragment.h: Add flag to declaration.
5106 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5108         * util/rust-hir-map.cc (Mappings::insert_bang_proc_macro):
5109         Add a function to insert a new bang proc macro.
5110         (Mappings::lookup_bang_proc_macro): Add a function to lookup a
5111         bang procedural macro.
5112         (Mappings::insert_derive_proc_macro): Add a function to insert a
5113         derive procedural macro.
5114         (Mappings::lookup_derive_proc_macro): Add a function to lookup a
5115         derive procedural macro.
5116         (Mappings::insert_attribute_proc_macro): Add a function to
5117         insert an attribute procedural macro.
5118         (Mappings::lookup_attribute_proc_macro): Add a function to
5119         lookup an attribute procedural macro.
5120         * util/rust-hir-map.h: Add function prototypes.
5121         * expand/rust-expand-visitor.cc (ExpandVisitor::expand_outer_attribute):
5122         Implement expansion of outer attributes.
5123         (ExpandVisitor::expand_inner_attribute):
5124         Add call for inner attribute expansion.
5125         * expand/rust-expand-visitor.h:
5126         Add new procedural macro expander attribute.
5127         * expand/rust-proc-macro.cc (load_macros_array): Add a function
5128         to load the proc macro array from a given shared object.
5129         (load_macros): Add a function to retrieve procedural macro
5130         vector from a given shared object.
5131         (ProcMacroExpander::import_proc_macros): Add a function to load
5132         procedural macros from a given extern crate name.
5133         * expand/rust-proc-macro.h (RUST_PROC_MACRO_H): Add new
5134         proc-macro file.
5135         (class ProcMacroExpander): Add new ProcMacroExpander class.
5136         * rust-session-manager.cc (Session::expansion): Create new macro
5137         expander and feed it to the expand visitor.
5138         * util/rust-attributes.cc: Add macro_export builtin attribute.
5140 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5142         * ast/rust-ast-collector.cc (TokenCollector::visit): Fix
5143         attribute collection.
5145 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5147         * ast/rust-ast-collector.h: Make trivial visitors public.
5149 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5151         * Make-lang.in: Add rust-proc-macro object to list.
5152         * expand/rust-proc-macro.cc: New file.
5153         * expand/rust-proc-macro.h: New file.
5155 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5157         * util/rust-attributes.cc: Add attribute to the table.
5159 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5161         * ast/rust-ast-collector.cc (TokenCollector::visit): Move
5162         implementation from here...
5163         * ast/rust-ast-collector.h: ... to here.
5165 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5167         * Make-lang.in: Add "rust-dir-owner.o".
5168         * ast/rust-ast.cc: Include "rust-dir-owner.h".
5169         (Module::process_file_path):
5170         Handle non-mod-rs external file modules properly.
5171         * parse/rust-parse-impl.h: Include "rust-dir-owner.h".
5172         (Parser::parse_module):
5173         Handle non-mod-rs external file modules properly.
5174         * util/rust-dir-owner.cc: New file.
5175         * util/rust-dir-owner.h: New file.
5177 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5179         * expand/rust-macro-builtins.cc: Fix comments.
5180         (MacroBuiltin::proc_macro_builtin): Add error message.
5181         * expand/rust-macro-builtins.h: Fix comments.
5183 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5185         * typecheck/rust-hir-trait-resolve.cc: when the bound is concrete keep the mapping
5186         * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): add missing call
5187         * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): make this the same as paths
5189 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5191         * util/rust-optional.h
5192         (class Optional): Add volatile field to union.
5194 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5196         * expand/rust-macro-substitute-ctx.cc
5197         (SubstituteCtx::substitute_metavar): Substitute crate metavar.
5199 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5201         * parse/rust-parse-impl.h
5202         (Parser::null_denotation): Allow struct expression referencing.
5204 2024-01-16  Charalampos Mitrodimas  <charmitro@gmail.com>
5206         * ast/rust-ast-dump.cc (Dump::visit):
5207         print literals based on their type.
5209 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
5211         * expand/rust-macro-builtins.cc (MacroBuiltin::dummy): New function.
5212         * expand/rust-macro-builtins.h: Declare it.
5214 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
5216         * ast/rust-ast-builder.cc (AstBuilder::struct_expr_struct): New function.
5217         (AstBuilder::let): Likewise.
5218         (AstBuilder::struct_expr): Likewise.
5219         (AstBuilder::struct_expr_field): Likewise.
5220         (AstBuilder::field_access): Likewise.
5221         (AstBuilder::wildcard): Likewise.
5222         * ast/rust-ast-builder.h: Likewise.
5223         * expand/rust-derive-clone.cc (DeriveClone::visit_union): Implement
5224         properly.
5226 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
5228         * Make-lang.in: Add new files.
5229         * expand/rust-derive.cc (DeriveVisitor::derive): Call into DeriveCopy.
5230         * expand/rust-derive-copy.cc: New file.
5231         * expand/rust-derive-copy.h: New file.
5233 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
5235         * expand/rust-derive-clone.cc (DeriveClone::visit_struct): Implement proper
5236         cloning for structs with fields.
5237         * ast/rust-ast-builder.cc (AstBuilder::struct_expr): New function.
5238         (AstBuilder::struct_expr_field): Likewise.
5239         (AstBuilder::field_access): Likewise.
5240         (AstBuilder::let): Likewise.
5241         * ast/rust-ast-builder.h: Declare new functions.
5243 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5245         * util/rust-token-converter.cc (convert): Use a variable instead
5246         of multiple nested calls.
5248 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5250         * lex/rust-lex.h: Make build_token method public.
5251         * lex/rust-token.h: Add a setter for a token location.
5252         * util/rust-token-converter.cc (convert): Add the function to
5253         convert from a Span to a Location.
5254         (from_ident): Convert Ident span to a Location.
5255         (from_literal): Convert Literal span to a Location.
5256         (from_punct): Convert Punct span to a Location.
5257         (from_group): Convert Group span to a Location.
5259 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5261         * util/rust-token-converter.cc (convert): Add implementation.
5263 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5265         * util/rust-token-converter.cc (convert): Update call to
5266         constructors with location information.
5267         (handle_suffix): Convert token locus to a Span and use it in the
5268         literal.
5270 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5272         * expand/rust-macro-expand.cc
5273         (MacroExpander::try_match_rule): Don't match delimiters for root matcher.
5274         (MacroExpander::match_matcher): Add option to match delimiters.
5275         * expand/rust-macro-expand.h
5276         (MacroExpander::match_matcher): Likewise.
5277         * parse/rust-parse-impl.h
5278         (Parser::skip_token): Add zero argument method.
5279         * parse/rust-parse.h:
5280         (Parser::skip_token): Likewise.
5282 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5284         * Make-lang.in: remove files
5285         * backend/rust-compile-block.h: fix headers
5286         * backend/rust-compile-expr.h: likewise
5287         * backend/rust-compile-fnparam.h: likewise
5288         * backend/rust-compile-item.h: likewise
5289         * backend/rust-compile-pattern.h: likewise
5290         * backend/rust-compile-resolve-path.h: likewise
5291         * backend/rust-compile-stmt.h: likewise
5292         * typecheck/rust-autoderef.cc: likewise
5293         * typecheck/rust-hir-path-probe.cc: likewise
5294         * typecheck/rust-hir-path-probe.h: likewise
5295         * typecheck/rust-hir-trait-reference.h: likewise
5296         * typecheck/rust-hir-trait-resolve.cc: use a for loop instead
5297         * typecheck/rust-hir-trait-resolve.h: fix headers
5298         * typecheck/rust-hir-type-check-expr.h: likewise
5299         * typecheck/rust-hir-type-check-implitem.h: likewise
5300         * typecheck/rust-hir-type-check-item.h: likewise
5301         * typecheck/rust-hir-type-check-path.cc: likewise
5302         * typecheck/rust-hir-type-check-pattern.h: likewise
5303         * typecheck/rust-hir-type-check-stmt.h: likewise
5304         * typecheck/rust-hir-type-check-type.h: likewise
5305         * typecheck/rust-hir-type-check-util.cc: Removed.
5306         * typecheck/rust-hir-type-check-util.h: Removed.
5308 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
5310         * Make-lang.in: Add new object files to Makefile.
5311         * expand/rust-expand-visitor.cc (is_derive): Move function.
5312         (is_builtin): Likewise.
5313         (get_traits_to_derive): New function.
5314         (derive_item): Likewise.
5315         (ExpandVisitor::visit): Visit item/statements containers.
5316         (ExpandVisitor::visit_outer_attrs): Take a reference on the attribute
5317         instead of a copy.
5318         (ExpandVisitor::is_derive): Deleted function.
5319         (ExpandVisitor::is_builtin): Likewise.
5320         * expand/rust-expand-visitor.h (RUST_EXPAND_VISITOR_H): Add missing #ifdef
5321         guards.
5322         (is_derive): Declare function.
5323         (is_builtin): Likewise.
5324         * expand/rust-macro-builtins.cc (builtin_macro_from_string): Use new
5325         MacroBuiltin::builtins map.
5326         (make_macro_path_str): Likewise.
5327         * expand/rust-macro-builtins.h (enum class): Add builtin derive macros.
5328         * expand/rust-derive-clone.cc: New file.
5329         * expand/rust-derive-clone.h: New file.
5330         * expand/rust-derive.cc: New file.
5331         * expand/rust-derive.h: New file.
5332         * util/rust-hir-map.cc (Mappings::insert_macro_def): Fix logic for
5333         setting builtin macro transcribers.
5335 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
5337         * ast/rust-ast-builder.cc: New file.
5338         * ast/rust-ast-builder.h: New file.
5340 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
5342         * expand/rust-macro-invoc-lexer.cc: Add missing copyright header.
5343         * expand/rust-macro-substitute-ctx.cc: Likewise.
5345 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5347         * rust-session-manager.h:
5348         Include "rust-optional.h".
5349         (struct TargetOptions):
5350         Store values in config key/value pairs as Optional<std::string> rather than std::string.
5351         * rust-session-manager.cc
5352         (TargetOptions::dump_target_options):
5353         Handle Optional<std::string> values.
5355 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5357         * typecheck/rust-casts.cc (TypeCastRules::check): do coercion
5358         (TypeCastRules::emit_cast_error): clang-format
5360 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5362         * resolve/rust-ast-resolve-stmt.cc (ResolveStmt::visit): add name resolution
5363         * resolve/rust-ast-resolve-stmt.h: likewise
5364         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): insert resolved node
5366 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5368         * resolve/rust-ast-resolve-pattern.cc: remove unused
5370 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5372         * resolve/rust-ast-resolve-item.cc (ResolveItem::visit): fix missing pop
5374 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5376         * backend/rust-compile-expr.cc (CompileExpr::visit): remove unused
5378 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5380         * hir/rust-ast-lower-stmt.cc (ASTLoweringStmt::translate): hir lowering
5381         (ASTLoweringStmt::visit): likewise
5382         * hir/rust-ast-lower-stmt.h: likewise
5384 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5386         * expand/rust-macro-substitute-ctx.cc
5387         (SubstituteCtx::substitute_metavar): Allow substitution failure.
5388         (SubstituteCtx::substitute_token):
5389         Handle substitution failure, include dollar sign in count of tokens to substitute.
5390         (SubstituteCtx::substitute_tokens):
5391         Include dollar sign in count of tokens to substitute.
5392         * expand/rust-macro-substitute-ctx.h
5393         (SubstituteCtx::substitute_metavar):
5394         Adjust signature and document new substitution failure handling.
5396 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5398         * expand/rust-macro-substitute-ctx.cc
5399         (SubstituteCtx::check_repetition_amount):
5400         Ignore single fragments while checking repetition amount.
5402 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5404         * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments): stop if error
5405         * typecheck/rust-tyty-bounds.cc (TypeBoundsProbe::assemble_sized_builtin): fix sized options
5406         * typecheck/rust-tyty.cc (BaseType::satisfies_bound): its ok if its an ?T
5407         (BaseType::bounds_compatible): likewise
5408         * typecheck/rust-tyty.h: update prototype
5409         * typecheck/rust-unify.cc (UnifyRules::go): check both sides bounds
5411 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5413         * backend/rust-compile-expr.cc (HIRCompileBase::resolve_deref_adjustment):
5414         reuse op overload code
5415         * typecheck/rust-autoderef.cc (Adjuster::try_deref_type): update
5416         (Adjuster::try_raw_deref_type): likewise
5417         * typecheck/rust-autoderef.h: likewise
5418         * typecheck/rust-hir-dot-operator.cc (MethodResolver::select):
5419         improve debug loging
5421 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5423         * backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address): refactor
5424         * backend/rust-compile-base.h: likewise
5425         * backend/rust-compile-expr.cc (CompileExpr::visit): likewise
5426         * backend/rust-compile-resolve-path.cc (HIRCompileBase::query_compile): likewise
5428 2024-01-16  David Malcolm  <dmalcolm@redhat.com>
5430         * typecheck/rust-hir-trait-reference.cc (TraitItemReference::is_optional): Remove
5431         stray semicolon.
5433 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
5435         * resolve/rust-early-name-resolver.cc (EarlyNameResolver::go): Cleanup
5436         order of calls when accumulating #[macro_use] macros.
5437         (EarlyNameResolver::visit): Likewise.
5439 2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
5441         * resolve/rust-early-name-resolver.cc (EarlyNameResolver::accumulate_escaped_macros):
5442         Remove unnecessary visit.
5444 2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
5446         * ast/rust-ast.cc (Attribute::check_cfg_predicate):
5447         Only check first item as a predicate.
5449 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5451         * util/rust-optional.h
5452         (operator==): New for Optional<T> == Optional<U>.
5454 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5456         * parse/rust-parse-impl.h
5457         (Parser::parse_attr_input): Parse AttrInputMacro.
5459 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5461         * ast/rust-ast-collector.cc (TokenCollector::visit): Propagate
5462         coretype hint.
5464 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5466         * util/rust-optional.h
5467         (class Optional<T>): Improve inner state.
5469 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5471         * expand/rust-macro-substitute-ctx.cc
5472         (SubstituteCtx::check_repetition_amount): Handle keywords.
5473         (SubstituteCtx::substitute_token): Likewise.
5474         * lex/rust-token.cc
5475         (Token::get_str): Likewise.
5476         * parse/rust-parse-impl.h
5477         (Parser::parse_macro_match_fragment): Likewise.
5479 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
5481         * ast/rust-ast.h: Add `outer_attrs` to Item.
5482         * ast/rust-expr.h: Make use of new inheritance methods.
5483         * ast/rust-item.h: Likewise.
5484         * ast/rust-macro.h: Likewise.
5486 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5488         * util/rust-token-converter.cc (dispatch_float_literals): Remove
5489         function.
5490         (handle_suffix): Rename old dispatch and add one LitKind
5491         argument.
5492         (dispatch_integer_literals): Remove function.
5493         (convert): Change call from dispatch to suffix handler.
5495 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5497         * lex/rust-token.h: Implement hash for token id enumeration.
5498         * util/rust-token-converter.cc (dispatch_float_literals): Update
5499         to new internals.
5500         (dispatch_integer_literals): Likewise.
5501         (convert): Likewise.
5502         (string_literal): Remove function.
5503         (byte_string_literal): Likewise.
5504         (unsigned_literal): Likewise.
5505         (signed_literal): Likewise.
5506         (from_literal): Update with new internals.
5508 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5510         * ast/rust-ast-dump.cc
5511         (Dump::visit): Add AttrInputMacro visitor.
5512         * ast/rust-ast-dump.h:
5513         (Dump::visit): Likewise.
5514         * ast/rust-ast-full-decls.h
5515         (class AttrInputMacro): New.
5516         * ast/rust-ast-collector.cc
5517         (TokenCollector::visit):
5518         Add and call out to AttrInputMacro visitor.
5519         * ast/rust-ast-collector.h:
5520         (TokenCollector::visit): Add AttrInputMacro visitor.
5521         * ast/rust-ast-visitor.h:
5522         (ASTVisitor::visit): Likewise.
5523         * ast/rust-ast.cc
5524         (AttrInputMacro::accept_vis): New.
5525         (AttrInputMacro::as_string): New.
5526         (AttrInputMacro::AttrInputMacro): New.
5527         (AttrInputMacro::operator=): New.
5528         * ast/rust-ast.h:
5529         (AttrInput::AttrInputType::MACRO): New.
5530         * ast/rust-expr.h
5531         (class AttrInputMacro): New.
5532         * checks/errors/rust-feature-gate.h:
5533         (FeatureGate::visit): Add AttrInputMacro visitor.
5534         * expand/rust-cfg-strip.cc
5535         (CfgStrip::visit): Likewise.
5536         * expand/rust-cfg-strip.h:
5537         (CfgStrip::visit): Likewise.
5538         * expand/rust-expand-visitor.cc
5539         (ExpandVisitor::visit): Likewise.
5540         * expand/rust-expand-visitor.h:
5541         (ExpandVisitor::visit): Likewise.
5542         * hir/rust-ast-lower-base.cc
5543         (ASTLoweringBase::visit): Likewise.
5544         * hir/rust-ast-lower-base.h:
5545         (ASTLoweringBase::visit): Likewise.
5546         * resolve/rust-ast-resolve-base.cc
5547         (ResolverBase::visit): Likewise.
5548         * resolve/rust-ast-resolve-base.h:
5549         (ResolverBase::visit): Likewise.
5550         * resolve/rust-early-name-resolver.cc
5551         (EarlyNameResolver::visit): Likewise.
5552         * resolve/rust-early-name-resolver.h:
5553         (EarlyNameResolver::visit): Likewise.
5554         * util/rust-attributes.cc
5555         (AttributeChecker::visit): Likewise.
5556         (check_doc_attribute): Handle AttrInputType::MACRO.
5557         * util/rust-attributes.h:
5558         (AttributeChecker::visit): Add AttrInputMacro visitor.
5560 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5562         * ast/rust-macro.h
5563         (MacroInvocation::clone_macro_invocation_impl): Make public.
5565 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5567         * util/rust-optional.h
5568         (struct std::hash<Optional<T>>): New.
5570 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5572         * util/rust-optional.h
5573         (class Optional<T&>): Use pointers internally.
5575 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
5577         * ast/rust-ast-dump.cc (Dump::visit): Implement dump for
5578         `TupleIndexExpr`.
5580 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5582         * lex/rust-token.cc
5583         (token_id_keyword_string): Return std::string reference.
5584         * lex/rust-token.h
5585         (token_id_keyword_string): Return std::string reference.
5587 2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
5589         * ast/rust-ast.h (Expr::as_expr_without_block): Remove.
5590         (Expr::set_outer_attrs): Make public in base class.
5591         * expand/rust-macro-expand.cc:
5592         Add fixme comment for pre-existing bug.
5593         * hir/tree/rust-hir.h: Remove Expr::as_expr_without_block.
5594         * parse/rust-parse-impl.h (Parser::parse_lifetime): Use lifetime_from_token.
5595         (Parser::lifetime_from_token): New method.
5596         (Parser::null_denotation): Handle labelled loop expressions and for loop expressions.
5597         (Parser::parse_loop_label): Make initial token a parameter.
5598         (Parser::parse_labelled_loop_expr): Likewise.
5599         (Parser::parse_for_loop_expr): Allow FOR token to already be skipped.
5600         (Parser::parse_expr): Handle expr_can_be_stmt.
5601         (Parser::parse_expr_with_block): Remove.
5602         (Parser::parse_expr_stmt_with_block): Remove.
5603         (Parser::parse_expr_stmt_without_block): Remove.
5604         (Parser::parse_expr_without_block): Remove.
5605         (Parser::parse_stmt_or_expr_with_block): Remove.
5606         (Parser::parse_expr_stmt): Use parse_expr directly.
5607         (Parser::parse_match_expr): Likewise.
5608         (Parser::parse_stmt): Use parse_expr_stmt in more cases.
5609         (Parser::parse_stmt_or_expr):
5610         Rename from parse_stmt_or_expr_without_block, use parse_expr directly.
5611         (Parser::parse_block_expr): Update error message.
5612         * parse/rust-parse.h: Update declarations.
5614 2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>
5616         * ast/rust-ast-full-decls.h (class ExprStmtWithoutBlock): Remove.
5617         (class ExprStmtWithBlock): Remove.
5618         * ast/rust-stmt.h (class ExprStmtWithoutBlock): Remove.
5619         (class ExprStmtWithBlock): Remove.
5620         (class ExprStmt):
5621         Make non-abstract, add common functionality from removed base classes.
5622         * ast/rust-ast.h: Move to_stmt to base class.
5623         * ast/rust-ast.cc (ExprStmtWithBlock::as_string): Remove.
5624         * ast/rust-macro.h: Use new signature for to_stmt.
5625         (ExprStmt::as_string): New method.
5626         (ExprStmtWithoutBlock::as_string): Remove.
5627         (BlockExpr::strip_tail_expr): Update for removed classes.
5628         (ExprStmtWithoutBlock::accept_vis): Remove.
5629         (ExprStmtWithBlock::accept_vis): Remove.
5630         (ExprStmt::accept_vis): New method.
5631         * ast/rust-ast-dump.cc (Dump::visit): Update for removed classes.
5632         * ast/rust-ast-dump.h: Likewise.
5633         * ast/rust-ast-collector.h: Likewise.
5634         * ast/rust-ast-collector.cc (TokenStream::visit): Likewise.
5635         * ast/rust-ast-visitor.h: Likewise.
5636         * checks/errors/rust-feature-gate.h: Likewise.
5637         * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Likewise.
5638         * expand/rust-expand-visitor.h: Likewise.
5639         * expand/rust-cfg-strip.cc (CfgStrip::visit): Likewise.
5640         * expand/rust-cfg-strip.h: Likewise.
5641         * hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Likewise.
5642         * hir/rust-ast-lower-base.h: Likewise.
5643         * hir/rust-ast-lower-stmt.cc (ASTLoweringStmt::visit): Likewise.
5644         * hir/rust-ast-lower-stmt.h: Likewise.
5645         * util/rust-attributes.cc (AttributeChecker::visit): Likewise.
5646         * util/rust-attributes.h: Likewise.
5647         * resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Likewise.
5648         * resolve/rust-ast-resolve-base.h: Likewise.
5649         * resolve/rust-ast-resolve-stmt.h: Likewise.
5650         * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit):
5651         Likewise.
5652         * resolve/rust-early-name-resolver.h: Likewise.
5653         * parse/rust-parse-impl.h (Parser::parse_match_expr): Likewise.
5654         (Parser::parse_stmt_or_expr_without_block): Likewise.
5655         * parse/rust-parse.h: Likewise.
5657 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5659         * lex/rust-token.cc
5660         (token_id_is_keyword): New.
5661         (token_id_keyword_string): New.
5662         * lex/rust-token.h
5663         (token_id_is_keyword): New.
5664         (token_id_keyword_string): New.
5665         * expand/rust-macro-expand.cc
5666         (MacroExpander::match_fragment): Match keywords for ident fragment.
5667         * parse/rust-parse-impl.h
5668         (Parser::parse_identifier_or_keyword_token): Add.
5669         * parse/rust-parse.h
5670         (Parser::parse_identifier_or_keyword_token): Add.
5672 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5674         * util/rust-token-converter.cc (dispatch_float_literals): Invert
5675         suffix condition.
5676         (dispatch_integer_literals): Likewise.
5678 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5680         * util/rust-token-converter.cc (convert): Fix style.
5681         (from_ident): Likewise.
5683 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5685         * util/rust-token-converter.cc (dispatch_float_literals): Make
5686         input immutable.
5687         (dispatch_integer_literals): Likewise.
5688         (convert): Likewise.
5689         * util/rust-token-converter.h (convert): Likewise.
5691 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5693         * util/rust-token-converter.cc (from_tokenstream): Add
5694         conversion of Ident structures.
5695         (from_ident): Likewise.
5697 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5699         * util/rust-token-converter.cc (from_literal): Add function
5700         implementation.
5701         (string_literal): String literal specific handler.
5702         (byte_string_literal): Byte string specific handler.
5703         (unsigned_literal): Unsigned literal specific handler.
5704         (signed_literal): Signed literal specific handler.
5706 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5708         * util/rust-token-converter.cc (from_punct): Add conversion
5709         implementation.
5711 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5713         * util/rust-token-converter.cc (dispatch_float_literals): Accept
5714         const_TokenPtr instead of TokenPtr.
5715         (dispatch_integer_literals): Likewise.
5716         (convert): Accept vector of const_TokenPtr instead of a vector
5717         of TokenPtr.
5718         * util/rust-token-converter.h (convert): Likewise.
5720 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5722         * util/rust-token-converter.cc (from_tokenstream): Add vector
5723         for joined punct accumulation.
5724         (from_ident): Accept const pointer vector.
5725         (from_literal): Likewise.
5726         (from_punct): Likewise.
5727         (from_group): Likewise.
5728         (from_tokentree): Likewise.
5729         (convert): Likewise.
5730         * util/rust-token-converter.h (convert): Likewise.
5732 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5734         * util/rust-token-converter.cc (from_tokenstream): Add call to
5735         from_tokentree.
5736         (from_tokentree): Add implementation, from the from_tokenstream
5737         function.
5739 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5741         * util/rust-token-converter.cc (from_punct): Add group
5742         conversion.
5743         (from_group): Likewise.
5745 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5747         * util/rust-token-converter.cc (to_tokenstream): Change function
5748         name from to_tokenstream to convert.
5749         (convert): Likewise.
5750         (from_tokenstream): Add tokenstream handler.
5751         (from_ident): Add empty function.
5752         (from_literal): Likewise.
5753         (from_punct): Likewise.
5754         (from_group): Likewise.
5755         * util/rust-token-converter.h (to_tokenstream): Change function
5756         name from to_tokenstream to convert.
5757         (convert): Likewise.
5759 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5761         * util/rust-token-converter.cc (dispatch_float_literals): Remove
5762         suffixed temporary variable.
5763         (dispatch_integer_literals): Likewise.
5765 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5767         * Make-lang.in: Add new rust-token-converter file.
5768         * ast/rust-ast-collector.cc (pop_group): Function moved from
5769         TokenCollector.
5770         (dispatch_float_literals): Likewise.
5771         (dispatch_integer_literals): Likewise.
5772         (TokenCollector::collect): Removed function.
5773         * ast/rust-ast-collector.h: Removed function prototype.
5774         * util/rust-token-converter.cc: New file.
5775         * util/rust-token-converter.h: New file.
5777 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5779         * ast/rust-ast-collector.h (RUST_AST_TOKENSTREAM_H): Rename
5780         headerguard from RUST_AST_TOKENSTREAM_H ...
5781         (RUST_AST_COLLECTOR_H): ... to RUST_AST_COLLECTOR_H.
5783 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5785         * Make-lang.in: Change file name.
5786         * ast/rust-ast-tokenstream.cc: Moved to...
5787         * ast/rust-ast-collector.cc: ...here.
5788         * ast/rust-ast-tokenstream.h: Moved to...
5789         * ast/rust-ast-collector.h: ...here.
5790         * rust-session-manager.cc: Change header name.
5792 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5794         * ast/rust-ast-tokenstream.cc (TokenStream::TokenStream): Rename
5795         TokenStream to TokenCollector.
5796         (TokenCollector::TokenCollector): Likewise.
5797         (TokenStream::collect_tokens): Likewise.
5798         (TokenCollector::collect_tokens): Likewise.
5799         (TokenStream::collect): Likewise.
5800         (TokenCollector::collect): Likewise.
5801         (TokenStream::visit): Likewise.
5802         (TokenCollector::visit): Likewise.
5803         (TokenStream::visit_items_joined_by_separator): Likewise.
5804         (TokenCollector::visit_items_joined_by_separator): Likewise.
5805         (TokenStream::visit_as_line): Likewise.
5806         (TokenCollector::visit_as_line): Likewise.
5807         (TokenStream::visit_items_as_lines): Likewise.
5808         (TokenCollector::visit_items_as_lines): Likewise.
5809         (TokenStream::visit_items_as_block): Likewise.
5810         (TokenCollector::visit_items_as_block): Likewise.
5811         (TokenStream::trailing_comma): Likewise.
5812         (TokenCollector::trailing_comma): Likewise.
5813         (TokenStream::newline): Likewise.
5814         (TokenCollector::newline): Likewise.
5815         (TokenStream::indentation): Likewise.
5816         (TokenCollector::indentation): Likewise.
5817         (TokenStream::increment_indentation): Likewise.
5818         (TokenCollector::increment_indentation): Likewise.
5819         (TokenStream::decrement_indentation): Likewise.
5820         (TokenCollector::decrement_indentation): Likewise.
5821         (TokenStream::visit_closure_common): Likewise.
5822         (TokenCollector::visit_closure_common): Likewise.
5823         (TokenStream::visit_loop_common): Likewise.
5824         (TokenCollector::visit_loop_common): Likewise.
5825         (TokenStream::visit_function_common): Likewise.
5826         (TokenCollector::visit_function_common): Likewise.
5827         * ast/rust-ast-tokenstream.h (class TokenStream): Likewise.
5828         (class TokenCollector): Likewise.
5829         * rust-session-manager.cc (Session::dump_tokenstream): Rename
5830         token vector for clearer intent.
5832 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5834         * ast/rust-ast-tokenstream.cc (dispatch_float_literals): Add
5835         dispatch function for floating point literals.
5836         (TokenStream::collect): Add call to dispatcher.
5838 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5840         * ast/rust-ast-tokenstream.cc (dispatch_integer_literals):
5841         Add a static function to dispatch depending on the core type.
5842         (TokenStream::collect): Add call to dispatch function.
5844 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5846         * ast/rust-ast-tokenstream.cc (TokenStream::collect): Add
5847         conversion for byte string and string.
5849 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5851         * ast/rust-ast-tokenstream.cc (TokenStream::collect): Add Ident
5852         conversion.
5854 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5856         * ast/rust-ast-tokenstream.cc (TokenStream::collect): Add joint
5857         punct token conversion.
5859 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5861         * ast/rust-ast-tokenstream.cc (TokenStream::collect): Add
5862         conversion for single punctuation tokens.
5864 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
5866         * ast/rust-ast-tokenstream.cc (pop_group): Add a function to
5867         easily collect a group from a given stack at the end of it.
5868         (TokenStream::collect): Collect tokens as a rust compatible
5869         Tokenstream type.
5870         * ast/rust-ast-tokenstream.h (RUST_AST_TOKENSTREAM_H): Move
5871         includes to stay constrained by guards.
5873 2024-01-16  M V V S Manoj Kumar  <mvvsmanojkumar@gmail.com>
5875         * ast/rust-ast-full-decls.h (enum class): Added declaration.
5876         (struct AnonConst): Added declaration.
5877         (struct InlineAsmRegOrRegClass): Added declaration.
5878         (struct InlineAsmOperand): Added declaration.
5879         (struct InlineAsmPlaceHolder): Added declaration.
5880         (struct InlineAsmTemplatePiece): Added declaration.
5881         (struct TupleClobber): Added declaration.
5882         (struct TupleTemplateStr): Added declaration.
5883         * ast/rust-expr.h (class InlineAsm): Defined all it's data members outside.
5884         (enum class InlineAsmOptions): Converted this to a enum class so we could use it in the HIR.
5885         (struct AnonConst): Defined it independent of the AST::InlineAsm node.
5886         (struct InlineAsmRegOrRegClass): Defined it independent of the AST::InlineAsm node.
5887         (struct InlineAsmOperand): Defined it independent of the AST::InlineAsm node.
5888         (struct InlineAsmPlaceHolder): Defined it independent of the AST::InlineAsm node.
5889         (struct InlineAsmTemplatePiece): Defined it independent of the AST::InlineAsm node.
5890         (struct TupleClobber): Defined it independent of the AST::InlineAsm node.
5891         (struct TupleTemplateStr): Defined it independent of the AST::InlineAsm node.
5892         * hir/tree/rust-hir-expr.h (class InlineAsmReg): Added defination.
5893         (class InlineAsmRegClass): Added defination.
5894         (struct InlineAsmRegOrRegClass): Added defination.
5895         (class InlineAsm): Added defination.
5896         * hir/tree/rust-hir-full-decls.h (class InlineAsmReg): Added declaration.
5897         (class InlineAsmRegClass): Added declaration.
5898         (struct InlineAsmRegOrRegClass): Added declaration.
5899         (class InlineAsm): Added declaration.
5901 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5903         * backend/rust-compile-base.cc: track return type in fncontext
5904         * backend/rust-compile-context.h (struct fncontext): likewise
5905         * backend/rust-compile-expr.cc (CompileExpr::visit): apply coercion site
5906         (CompileExpr::generate_closure_function): update push_context
5907         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): likewise
5909 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5911         * backend/rust-compile-base.cc (HIRCompileBase::compile_function_body):
5912         add missing coercion_site codegen
5914 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5916         * backend/rust-compile-expr.cc (CompileExpr::visit): refactr
5917         (CompileExpr::get_fn_addr_from_dyn): likewise
5918         (CompileExpr::get_receiver_from_dyn): likewise
5919         (CompileExpr::type_cast_expression): likewise
5920         * backend/rust-compile-type.cc (TyTyResolveCompile::visit): likewise
5921         (TyTyResolveCompile::create_dyn_obj_record): likewise
5922         (TyTyResolveCompile::create_slice_type_record): likewise
5923         (TyTyResolveCompile::create_str_type_record): likewise
5924         * backend/rust-compile-type.h: likewise
5925         * backend/rust-compile.cc (HIRCompileBase::coercion_site1): likewise
5926         (HIRCompileBase::coerce_to_dyn_object): refactor
5927         * backend/rust-tree.h (SLICE_FLAG): removed
5928         (SLICE_TYPE_P): removed
5929         (RS_DST_FLAG): new flag
5930         (RS_DST_FLAG_P): new predicate
5931         * typecheck/rust-tyty.cc (ReferenceType::is_dyn_object): new helper
5932         (ReferenceType::is_dyn_obj_type): likewise
5933         (PointerType::is_dyn_object): likewise
5934         (PointerType::is_dyn_obj_type): likewise
5935         * typecheck/rust-tyty.h (class DynamicObjectType): moved up
5937 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5939         * backend/rust-compile-type.cc (TyTyResolveCompile::visit): add filter
5941 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5943         * backend/rust-compile-base.cc (HIRCompileBase::compile_function_body): use unit_expression
5944         (HIRCompileBase::unit_expression): new helper
5945         * backend/rust-compile-base.h: update prototype
5946         * backend/rust-compile-block.cc (CompileBlock::visit): use unit_expression
5947         * backend/rust-compile-expr.cc (CompileExpr::visit): likewise
5948         (CompileExpr::generate_closure_function): likewise
5949         * backend/rust-compile-implitem.cc (CompileTraitItem::visit): cleanup
5950         * backend/rust-compile-item.cc (CompileItem::visit): likewise
5951         * backend/rust-compile-pattern.cc (CompilePatternLet::visit): likewise
5952         * backend/rust-compile-resolve-path.cc (ResolvePathRef::resolve): likewise
5953         * backend/rust-compile-type.cc (TyTyResolveCompile::get_unit_type): new helper
5954         (TyTyResolveCompile::visit): use new unit_type helper
5955         * backend/rust-compile-type.h: likewise
5956         * rust-backend.h: simplify the return_expression
5957         * rust-gcc.cc (Gcc_backend::function_type): likewise
5958         (Gcc_backend::return_statement): likewise
5959         * backend/rust-constexpr.cc (eval_constant_expression): remove bad assertion
5961 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5963         * checks/lints/rust-lint-unused-var.cc (UnusedVariables::Lint): use the decl not the expr
5965 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
5967         * parse/rust-parse-impl.h
5968         (Parser::parse_trait_impl_function_or_method):
5969         Parse function/method qualifiers after "default".
5971 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
5973         * backend/rust-compile-base.cc: add missing compile_locals call
5975 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
5977         * ast/rust-ast.h (class AttrInputMetaItemContainer): Run clang-format.
5978         (class DelimTokenTree): Likewise.
5980 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
5982         * resolve/rust-early-name-resolver.cc (is_macro_use_module): New function.
5983         (EarlyNameResolver::accumulate_escaped_macros): New function.
5984         (EarlyNameResolver::go): Use `accumulate_escaped_macros`.
5985         (EarlyNameResolver::visit): Likewise.
5986         * resolve/rust-early-name-resolver.h: Declare `accumulate_escaped_macros`.
5988 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
5990         * ast/rust-ast.h: Add take_items() and set_items() method to Crate.
5991         * ast/rust-item.h: Add take_items() and set_items() method to Module.
5993 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
5995         * ast/rust-ast.h (enum Kind): Add MODULE variant.
5996         * ast/rust-item.h: Return Kind::MODULE in AST::Module::get_kind().
5998 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
6000         * ast/rust-macro.cc (builtin_macro_from_string): Move function.
6001         * ast/rust-macro.h (enum class): Move enum.
6002         (builtin_macro_from_string): Move function.
6003         * expand/rust-macro-builtins.cc (builtin_macro_from_string): New function.
6004         (make_macro_path_str): Use new bi-map.
6005         (parse_single_string_literal): Use new `BuiltinMacro` enum.
6006         (MacroBuiltin::include_bytes_handler): Likewise.
6007         (MacroBuiltin::include_str_handler): Likewise.
6008         (MacroBuiltin::compile_error_handler): Likewise.
6009         (MacroBuiltin::concat_handler): Likewise.
6010         (MacroBuiltin::env_handler): Likewise.
6011         (MacroBuiltin::include_handler): Likewise.
6012         (MacroBuiltin::sorry): New function.
6013         * expand/rust-macro-builtins.h (enum class): Move enum here.
6014         (builtin_macro_from_string): New function declaration.
6015         * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Use
6016         new function.
6017         * util/rust-hir-map.cc (Mappings::insert_macro_def): Remove old
6018         builtin macro map.
6020 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
6022         * expand/rust-macro-builtins.cc: Include bidirectional map.
6023         * util/bi-map.h: New file.
6025 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
6027         * ast/rust-ast.cc
6028         (BlockExpr::strip_tail_expr):
6029         Try to take new tail expression from statements list.
6030         * ast/rust-expr.h
6031         (BlockExpr::strip_tail_expr):
6032         Replace definition with only declaration.
6034 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
6036         * ast/rust-ast.h
6037         (Stmt::is_expr): New.
6038         * ast/rust-stmt.h
6039         (ExprStmt::is_expr): New.
6041 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
6043         * expand/rust-macro-substitute-ctx.cc
6044         (SubstituteCtx::substitute_repetition): Fix out-of-bounds.
6046 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6048         * Make-lang.in: Link against the static libproc_macro.
6050 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6052         * lang.opt: Add frust-extern option.
6053         * rust-session-manager.cc (Session::handle_extern_option): Add
6054         frust-extern option handler.
6055         * rust-session-manager.h (struct Session): Add an unordered map
6056         to store library name and locations.
6058 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
6060         * parse/rust-parse-impl.h
6061         (Parser::parse_generic_params):
6062         Handle parameter parsing error.
6064 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6066         * typecheck/rust-hir-type-check-expr.cc: update for op overload
6068 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6070         * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): use the predicate
6071         (TypeCheckExpr::resolve_segments): cleanup
6073 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6075         * typecheck/rust-hir-trait-reference.cc (AssociatedImplTrait::AssociatedImplTrait):
6076         bind the predicate
6077         (AssociatedImplTrait::get_trait): remove
6078         (AssociatedImplTrait::get_predicate): new getter
6079         * typecheck/rust-hir-trait-reference.h: bind predicate
6080         * typecheck/rust-hir-type-check-item.cc: update ctor
6081         * typecheck/rust-type-util.cc (lookup_associated_impl_block): new function
6082         * typecheck/rust-type-util.h (class BaseType): remove unused forward decl
6083         (lookup_associated_impl_block): new helper
6084         * typecheck/rust-tyty-bounds.cc (TypeBoundPredicate::is_equal): new
6085         * typecheck/rust-tyty-subst.cc (SubstitutionRef::lookup_associated_impl): use new helper
6086         (SubstitutionRef::monomorphize): update usage/error handling
6087         * typecheck/rust-tyty-subst.h: remove old prototype
6088         * typecheck/rust-tyty.h: add is_equal decl
6090 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
6092         * typecheck/rust-hir-type-check-pattern.cc
6093         (TypeCheckPattern::visit): Type check StructPatternFieldIdentPat.
6095 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
6097         * hir/rust-ast-lower-pattern.cc
6098         (ASTLoweringPattern::visit): Lower StructPatternFieldIdentPat.
6100 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6102         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::resolve_fn_trait_call):
6103         return the assoicated predicate
6104         * typecheck/rust-hir-type-check-expr.h: update prototype
6106 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6108         * hir/rust-ast-lower-implitem.h: add missing where clause lowering
6110 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6112         * hir/tree/rust-hir-item.h: add get_locus() const
6114 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
6116         * hir/tree/rust-hir-pattern.h
6117         (StructPatternFieldIdentPat::get_identifier): New.
6118         (StructPatternFieldIdentPat::get_pattern): New.
6120 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
6122         * ast/rust-ast-dump.cc (Dump::visit): print parentheses around
6123         unique expression operand.
6125 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
6127         * rust-session-manager.cc
6128         (Session::enable_dump): Fix error messages.
6130 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6132         * typecheck/rust-unify.cc (UnifyRules::emit_abi_mismatch): new error method
6133         (UnifyRules::expect_fndef): add ABI check
6134         * typecheck/rust-unify.h: prototype for new error method
6136 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6138         * util/rust-abi.cc (get_abi_from_string): add ABI mapping
6140 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6142         * hir/tree/rust-hir-pattern.h: add missing get_mutability
6143         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
6144         use new ClosureParamInfer on untyped parameters
6145         * typecheck/rust-hir-type-check-pattern.cc (ClosureParamInfer::Resolve): interface
6146         (ClosureParamInfer::ClosureParamInfer): constructor
6147         (ClosureParamInfer::visit): visitors for each pattern
6148         * typecheck/rust-hir-type-check-pattern.h (class ClosureParamInfer): new visitor
6150 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6152         * typecheck/rust-hir-type-check-pattern.h: cleanup
6154 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6156         * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
6157         return so we dont hit undefined behaviour
6159 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6161         * backend/rust-compile-implitem.h: remove includes
6163 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6165         * backend/rust-compile-item.cc (CompileItem::visit): remove bad checks
6167 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6169         * lang.opt: add lang option flag
6170         * rust-lang.cc (grs_langhook_init_options_struct): enable by default
6172 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6174         * typecheck/rust-tyty-bounds.cc (TypeBoundPredicate::operator=):
6175         we are done if other is in an error state
6177 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6179         * typecheck/rust-hir-dot-operator.cc (MethodResolver::select): verify it is a method
6181 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6183         * typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait): use new interface
6184         * typecheck/rust-hir-type-check-base.h: update prototype to include Self
6185         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): lifewise
6186         * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::resolve_impl_block_substitutions):
6187         likewise
6188         * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): likewise
6189         (TypeCheckExpr::resolve_segments): likewise
6190         * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): likewise
6191         (TypeResolveGenericParam::visit): likewise
6192         (ResolveWhereClauseItem::visit): likewise
6193         * typecheck/rust-tyty-bounds.cc (TypeCheckBase::get_predicate_from_bound): likewise
6194         (TypeBoundPredicate::apply_generic_arguments): likewise
6195         (TypeBoundsMappings::lookup_predicate): likewise
6196         * typecheck/rust-tyty-bounds.h: likewise
6197         * typecheck/rust-tyty.h:likewise
6199 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6201         * typecheck/rust-hir-type-check.h: New error state and missing copy implementations
6202         * typecheck/rust-typecheck-context.cc (TypeCheckContextItem::TypeCheckContextItem):
6203         missing copy ctor
6204         (TypeCheckContextItem::operator=): missing copy implementation
6205         (TypeCheckContextItem::get_error): new static function
6206         (TypeCheckContextItem::is_error): new method
6207         (TypeCheckContextItem::get_context_type): handle error state
6208         (TypeCheckContextItem::get_defid): handle error state
6210 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6212         * typecheck/rust-hir-type-check.h: new helper
6213         * typecheck/rust-typecheck-context.cc (TypeCheckContext::have_function_context):
6214         implementation
6216 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6218         * typecheck/rust-hir-type-check.h: Add prototype
6219         * typecheck/rust-typecheck-context.cc (TypeCheckContextItem::get_defid): implementation
6221 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6223         * typecheck/rust-hir-type-check-expr.cc: refactor
6225 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6227         * typecheck/rust-autoderef.cc: don't take a reference
6228         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): likewise
6229         * typecheck/rust-hir-type-check.h: remove reference
6230         * typecheck/rust-typecheck-context.cc (TypeCheckContext::pop_return_type): likewise
6232 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
6234         * resolve/rust-ast-resolve-pattern.cc
6235         (PatternDeclaration::visit): Handle StructPatternFieldIdentPat.
6237 2024-01-16  TieWay59  <tieway59@foxmail.com>
6239         PR translation/108890
6240         * lang.opt: Fix translation mistakes 2023 in
6241         GCC/Rust [PR108890]
6242         (line 67): change the inconsistent tab to spaces
6243         (line 75): wrap bare placeholder `integer`
6244         (line 79): remove redundant text of `Choose which`
6245         (line 96): remove redundant text of `Choose which`
6246         (line 112): remove redundant `Flag to`
6247         (line 124): correct the exclusive term `When to stop`
6248         (line 124): correct typo of `copimlation`
6250 2024-01-16  M V V S Manoj Kumar  <mvvsmanojkumar@gmail.com>
6252         * parse/rust-parse-impl.h (Parser::debug_dump_ast_output): Removed this funtion.
6253         * rust-session-manager.cc (Session::enable_dump): Removed else if (arg == "parse").
6254         (Session::compile_crate): Removed calls of dump_ast and dump_ast_expanded.
6255         (Session::dump_ast): Removed this function.
6256         (Session::dump_ast_expanded): Removed this function.
6257         * rust-session-manager.h (struct CompileOptions): Removed the PARSER_AST_DUMP option.
6259 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
6261         * parse/rust-parse-impl.h (Parser::parse_reference_pattern): Do not
6262         call into `parse_pattern` anymore.
6264 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
6266         * hir/rust-ast-lower-pattern.cc
6267         (ASTLoweringPattern::translate): Add is_let_top_level parameter.
6268         (ASTLoweringPattern::visit): Handle is_let_top_level.
6269         * hir/rust-ast-lower-pattern.h
6270         (class ASTLoweringPattern): Add is_let_top_level.
6271         * hir/rust-ast-lower-stmt.cc
6272         (ASTLoweringStmt::visit): Set is_let_top_level.
6274 2024-01-16  Zheyuan Chen  <sephirotheca17@gmail.com>
6276         * ast/rust-ast-dump.cc: fix bad formatting for associated type.
6278 2024-01-16  Sergey Bugaev  <bugaevc@gmail.com>
6280         * hir/rust-ast-lower-expr.h, hir/rust-ast-lower-expr.cc:
6281         Lower AST::ErrorPropagationExpr to HIR::ErrorPropagationExpr
6283 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6285         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix scope
6286         resolution token output.
6288 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6290         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Keep
6291         associated type.
6293 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6295         * ast/rust-ast-tokenstream.cc (TokenStream::visit_function_common):
6296         Fix function body output.
6298 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6300         * parse/rust-parse-impl.h (Parser::parse_outer_attribute): Fix
6301         attribute status.
6303 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6305         * lex/rust-token.cc (Token::as_string): Fix lifetime string
6306         representation.
6308 2024-01-16  Sergey Bugaev  <bugaevc@gmail.com>
6310         * resolve/rust-ast-resolve-expr.cc: Add "break rust" Easter egg
6312 2024-01-16  Sergey Bugaev  <bugaevc@gmail.com>
6314         * resolve/rust-ast-resolve-expr.h,
6315         resolve/rust-ast-resolve-expr.cc: Add ResolveExpr::funny_error
6317 2024-01-16  Sergey Bugaev  <bugaevc@gmail.com>
6319         * ast/rust-ast.h: Add AST::Kind::IDENTIFIER
6321 2024-01-16  Sergey Bugaev  <bugaevc@gmail.com>
6323         * ast/rust-ast.h (Kind): Convert into a C++ enum class
6324         * expand/rust-macro-builtins.cc: Adapt to the change
6326 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
6328         * typecheck/rust-hir-type-check-expr.cc
6329         (TypeCheckExpr::visit): Add implementation for IfLetExprConseqElse.
6330         * typecheck/rust-hir-type-check-expr.h:
6331         (TypeCheckExpr::visit): Remove stub implementation for IfLetExprConseqElse.
6332         * hir/rust-ast-lower-expr.cc
6333         (ASTLoweringExpr::visit): Lower IfLetExpr{,ConseqElse}.
6334         * hir/rust-ast-lower-expr.h:
6335         (ASTLoweringExpr::visit): Likewise.
6336         * hir/rust-ast-lower-block.h
6337         (ASTLoweringIfLetBlock::visit): Lower IfLetExprConseqElse.
6338         (ASTLoweringExprWithBlock::visit): Likewise.
6339         * hir/rust-ast-lower.cc
6340         (ASTLoweringIfLetBlock::visit): Lower IfLetExprConseqElse.
6341         * hir/tree/rust-hir-expr.h
6342         (IfLetExprConseqElse::IfLetExprConseqElse): Make constructor more general.
6343         (IfLetExprConseqElse::vis_else_block): Add.
6344         (IfLetExprConseqElse::get_else_block): Add.
6345         * resolve/rust-ast-resolve-expr.cc
6346         (ResolveExpr::visit): Add IfLetExprConseqElse visitor.
6347         * resolve/rust-ast-resolve-expr.h
6348         (ResolveExpr::visit): Add IfLetExprConseqElse visitor.
6350 2024-01-16  Sebastian Kirmayer  <gnu@kirmayer.eu>
6352         * parse/rust-parse-impl.h
6353         (Parser<ManagedTokenSource>::parse_macro_match_repetition):
6354         reject separator in `?` repetition
6356 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
6358         * ast/rust-expr.h
6359         (class IfLetExprConseqElse): Make else_block ExprWithBlock.
6360         (class IfLetExprConseqIf): Remove.
6361         (class IfLetExprConseqIfLet): Remove.
6362         * ast/rust-ast-full-decls.h
6363         (class IfLetExprConseqIf): Remove.
6364         (class IfLetExprConseqIfLet): Remove.
6365         * ast/rust-ast.cc
6366         (IfLetExprConseqElse::as_string): Adjust output.
6367         (IfLetExprConseqIf::as_string): Remove.
6368         (IfLetExprConseqIfLet::as_string): Remove.
6369         (IfLetExprConseqIf::accept_vis): Remove.
6370         (IfLetExprConseqIfLet::accept_vis): Remove.
6371         * ast/rust-ast-visitor.h
6372         (ASTVisitor::visit): Remove IfLetExprConseqIf{,Let} visitors.
6373         * ast/rust-ast-dump.cc
6374         (Dump::visit): Likewise.
6375         * ast/rust-ast-dump.h:
6376         (Dump::visit): Likewise.
6377         * ast/rust-ast-tokenstream.cc
6378         (TokenStream::visit): Likewise.
6379         * ast/rust-ast-tokenstream.h
6380         (TokenStream::visit): Likewise.
6381         * util/rust-attributes.cc
6382         (AttributeChecker::visit): Likewise.
6383         * util/rust-attributes.h:
6384         (AttributeChecker::visit): Likewise.
6385         * resolve/rust-early-name-resolver.cc
6386         (EarlyNameResolver::visit): Likewise.
6387         * resolve/rust-early-name-resolver.h
6388         (EarlyNameResolver::visit): Likewise.
6389         * resolve/rust-ast-resolve-base.h
6390         (ResolverBase::visit): Likewise.
6391         * resolve/rust-ast-resolve-base.cc
6392         (ResolverBase::visit): Likewise.
6393         * checks/errors/rust-feature-gate.h
6394         (FeatureGate::visit): Likewise.
6395         * expand/rust-cfg-strip.cc
6396         (CfgStrip::visit): Likewise.
6397         * expand/rust-cfg-strip.h:
6398         (CfgStrip::visit): Likewise.
6399         * expand/rust-expand-visitor.cc
6400         (ExpandVisitor::visit): Likewise.
6401         * expand/rust-expand-visitor.h
6402         (ExpandVisitor::visit): Likewise.
6403         * hir/rust-ast-lower-base.cc
6404         (ASTLoweringBase::visit): Likewise.
6405         * hir/rust-ast-lower-base.h:
6406         (ASTLoweringBase::visit): Likewise.
6407         * parse/rust-parse-impl.h
6408         (Parser::parse_if_let_expr): Replace IfLetExprConseqIf{,Let} with IfLetExprConseqElse.
6410 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6412         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add struct
6413         name and curly braces to output tokenstream.
6415 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
6417         * parse/rust-parse-impl.h
6418         (Parser::parse_macro_match): Handle underscore.
6420 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
6422         * hir/tree/rust-hir-full-decls.h
6423         (class ExprStmtWithoutBlock): Remove.
6424         (class ExprStmtWithBlock): Remove.
6425         * hir/tree/rust-hir-stmt.h
6426         (class ExprStmt):
6427         Add remaining ExprStmtWith{,out}Block functionality.
6428         (class ExprStmtWithoutBlock): Remove.
6429         (class ExprStmtWithBlock): Remove.
6430         * hir/rust-ast-lower-stmt.cc
6431         (ASTLoweringStmt::visit):
6432         Lower to HIR::ExprStmt instead of deriving class.
6434 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
6436         * backend/rust-compile-stmt.cc
6437         (CompileStmt::visit): Unify ExprStmtWith{,out}Block visitors.
6438         * backend/rust-compile-stmt.h
6439         (CompileStmt::visit): Likewise.
6440         * backend/rust-compile-item.h
6441         (CompileItem::visit): Likewise.
6442         * hir/rust-hir-dump.cc
6443         (Dump::visit): Likewise.
6444         * hir/rust-hir-dump.h
6445         (Dump::visit): Likewise.
6446         * hir/tree/rust-hir-stmt.h
6447         (ExprStmt::accept_vis): Add.
6448         (ExprStmtWithoutBlock::accept_vis): Remove.
6449         (ExprStmtWithBlock::accept_vis): Remove.
6450         * hir/tree/rust-hir.cc
6451         (ExprStmt::accept_vis): Add.
6452         (ExprStmtWithoutBlock::accept_vis): Remove.
6453         (ExprStmtWithBlock::accept_vis): Remove.
6454         * hir/tree/rust-hir-visitor.h
6455         (HIRFullVisitor::visit): Likewise.
6456         (HIRFullVisitorBase::visit): Likewise.
6457         (HIRStmtVisitor::visit): Likewise.
6458         * checks/errors/rust-const-checker.cc
6459         (ConstChecker::visit): Likewise.
6460         * checks/errors/rust-const-checker.h
6461         (ConstChecker::visit): Likewise.
6462         * checks/errors/rust-unsafe-checker.cc
6463         (UnsafeChecker::visit): Likewise.
6464         * checks/errors/rust-unsafe-checker.h
6465         (UnsafeChecker::visit): Likewise.
6466         * checks/errors/privacy/rust-privacy-reporter.cc
6467         (PrivacyReporter::visit): Likewise.
6468         * checks/errors/privacy/rust-privacy-reporter.h
6469         (PrivacyReporter::visit): Likewise.
6470         * checks/lints/rust-lint-marklive.h
6471         (MarkLive::visit): Likewise.
6472         * typecheck/rust-hir-type-check-stmt.cc
6473         (TypeCheckStmt::visit): Likewise.
6474         * typecheck/rust-hir-type-check-stmt.h
6475         (TypeCheckStmt::visit): Likewise.
6476         * typecheck/rust-tycheck-dump.h
6477         (TypeResolverDump::visit): Likewise.
6479 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
6481         * hir/tree/rust-hir-stmt.h
6482         (ExprStmt::expr): Add field.
6483         (ExprStmt::get_expr): Add method.
6484         (ExprStmt::ExprStmt): Add copy/move constructors, modify existing constructor.
6485         (ExprStmt::operator=): Add assignment operator.
6486         (ExprStmtWithoutBlock::expr): Remove field.
6487         (ExprStmtWithoutBlock::get_expr): Remove method.
6488         (ExprStmtWithoutBlock::ExprStmt):
6489         Remove copy/move constructors, modify existing constructor.
6490         (ExprStmtWithoutBlock::operator=): Remove assignment operator.
6491         (ExprStmtWithBlock::expr): Remove field.
6492         (ExprStmtWithBlock::get_expr): Remove method.
6493         (ExprStmtWithBlock::ExprStmt): Remove copy/move constructors, modify existing constructor.
6494         (ExprStmtWithBlock::operator=): Remove assignment operator.
6495         (ExprStmt::as_string): Add method.
6496         (ExprStmtWithBlock::as_string): Remove method.
6497         (ExprStmtWithoutBlock::as_string): Remove method.
6498         * hir/tree/rust-hir.cc
6499         (ExprStmt::as_string): Add method.
6500         (ExprStmtWithBlock::as_string): Remove method.
6501         (ExprStmtWithoutBlock::as_string): Remove method.
6503 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
6505         * ast/rust-expr.h
6506         (class IfExprConseqElse): Make else_block ExprWithBlock.
6507         (class IfExprConseqIf): Remove.
6508         (class IfExprConseqIfLet): Remove.
6509         * ast/rust-ast-full-decls.h
6510         (class IfExprConseqIf): Remove.
6511         (class IfExprConseqIfLet): Remove.
6512         * ast/rust-ast.cc
6513         (IfExprConseqElse::as_string): Adjust output.
6514         (IfExprConseqIf::as_string): Remove.
6515         (IfExprConseqIfLet::as_string): Remove.
6516         (IfExprConseqIf::accept_vis): Remove.
6517         (IfExprConseqIfLet::accept_vis): Remove.
6518         * ast/rust-ast-visitor.h
6519         (ASTVisitor::visit): Remove IfExprConseqIf{,Let} visitors.
6520         * ast/rust-ast-tokenstream.cc
6521         (TokenStream::visit): Likewise.
6522         * ast/rust-ast-tokenstream.h
6523         (TokenStream::visit): Likewise.
6524         * ast/rust-ast-dump.cc
6525         (Dump::visit): Likewise.
6526         * ast/rust-ast-dump.h
6527         (Dump::visit): Likewise.
6528         * checks/errors/rust-feature-gate.h
6529         (FeatureGate::visit): Likewise.
6530         * util/rust-attributes.cc
6531         (AttributeChecker::visit): Likewise.
6532         * util/rust-attributes.h
6533         (AttributeChecker::visit): Likewise.
6534         * resolve/rust-early-name-resolver.cc
6535         (EarlyNameResolver::visit): Likewise.
6536         * resolve/rust-early-name-resolver.h
6537         (EarlyNameResolver::visit): Likewise.
6538         * resolve/rust-ast-resolve-base.h
6539         (ResolverBase::visit): Likewise.
6540         * resolve/rust-ast-resolve-base.cc
6541         (ResolverBase::visit): Likewise.
6542         * resolve/rust-ast-resolve-expr.h
6543         (ResolveExpr::visit): Remove IfExprConseqIf visitor.
6544         * resolve/rust-ast-resolve-expr.cc
6545         (ResolveExpr::visit): Likewise.
6546         * expand/rust-cfg-strip.cc
6547         (CfgStrip::visit): Remove IfExprConseqIf{,Let} visitors.
6548         * expand/rust-cfg-strip.h
6549         (CfgStrip::visit): Likewise.
6550         * expand/rust-expand-visitor.cc
6551         (ExpandVisitor::visit): Likewise.
6552         * expand/rust-expand-visitor.h
6553         (ExpandVisitor::visit): Likewise.
6554         * hir/rust-ast-lower-base.cc
6555         (ASTLoweringBase::visit): Likewise.
6556         * hir/rust-ast-lower-base.h
6557         (ASTLoweringBase::visit): Likewise.
6558         * hir/rust-ast-lower-block.h
6559         (ASTLoweringIfBlock::visit): Remove IfExprConseqIf visitor.
6560         (ASTLoweringExprWithBlock::visit): Likewise.
6561         * hir/rust-ast-lower.cc
6562         (ASTLoweringIfBlock::visit):
6563         Remove IfExprConseqIf visitor, adjust IfExprConseqElse lowering.
6564         * hir/rust-ast-lower-expr.h
6565         (ASTLoweringExpr::visit): Remove IfExprConseqIf visitor.
6566         * hir/rust-ast-lower-expr.cc
6567         (ASTLoweringExpr::visit): Likewise.
6568         * parse/rust-parse-impl.h
6569         (Parser::parse_if_expr): Replace IfExprConseqIf{,Let} with IfExprConseqElse.
6571 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6573         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix inner
6574         attribute tokenstream output.
6576 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
6578         * ast/rust-ast-dump.cc (Dump::debug): New.
6579         * ast/rust-ast-dump.h (Dump::debug): Untemplate it.
6580         (debug): New.
6581         * ast/rust-ast.h (class Visitable): New.
6582         (class TokenTree): Inherit from Visitable.
6583         (class MacroMatch): Likewise.
6584         (class AttrInput): Likewise.
6585         (class MetaItemInner): Likewise.
6586         (class Pattern): Likewise.
6587         (classTypeParamBound): Likewise.
6588         (class GenericParam): Likewise.
6589         (class TraitItem): Likewise.
6590         (classInherentImplItem): Likewise.
6591         (class TraitImplItem): Likewise.
6592         (class ExternalItem): Likewise.
6593         (class SingleASTNode): Likewise.
6595 2024-01-16  Thomas Schwinge  <thomas@codesourcery.com>
6597         * rust-lang.cc (grs_langhook_type_for_mode): Placate clang-format.
6599 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6601         * ast/rust-ast.h: Add boolean for differenciation.
6602         * parse/rust-parse-impl.h (Parser::parse_doc_comment): Change
6603         function interface to make code cleaner. It should return a body
6604         instead of the whole attribute.
6605         (Parser::parse_inner_attribute): Specify the inner status of the
6606         node.
6607         (Parser::parse_attribute_body): Change function interface to
6608         make the code cleaner much like parse_doc_comment.
6609         (Parser::parse_outer_attribute): Specify outer status of the
6610         node.
6611         * parse/rust-parse.h: Update functions prototypes.
6613 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6615         * backend/rust-compile-resolve-path.cc (HIRCompileBase::query_compile):
6616         reuse resolve_method_address to monomorphize the call if required
6617         * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments):
6618         allow matching against unimplemented trait item bounds
6620 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6622         * typecheck/rust-hir-path-probe.cc: dont subst with a dynamic object
6624 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6626         * backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address): moved here
6627         * backend/rust-compile-base.h: refactored prototype
6628         * backend/rust-compile-expr.cc (CompileExpr::resolve_method_address): refactor
6629         * backend/rust-compile-expr.h: likewise
6631 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6633         * backend/rust-compile-resolve-path.cc (HIRCompileBase::query_compile): remove unused
6635 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6637         * backend/rust-compile-resolve-path.cc (HIRCompileBase::query_compile): call destructure
6639 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6641         * backend/rust-compile-expr.cc (CompileExpr::resolve_method_address):
6642         call path probe impl trait
6644 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6646         * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Add call
6647         to attribute expansion function.
6649 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6651         * expand/rust-expand-visitor.cc (ExpandVisitor::visit_outer_attrs):
6652         Change condition order.
6653         (ExpandVisitor::visit_inner_using_attrs): Likewise.
6654         (ExpandVisitor::visit_attrs_with_derive): Likewise.
6655         (ExpandVisitor::is_builtin): Add builtin identification
6656         function.
6657         * expand/rust-expand-visitor.h: Add function prototype.
6658         * util/rust-attributes.cc: Add missing rustc_builtin_macro
6659         attribute.
6661 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6663         * expand/rust-expand-visitor.cc (ExpandVisitor::expand_struct_fields):
6664         Add call to expand structu fields.
6665         (ExpandVisitor::expand_function_params): Add call to expand
6666         function parameters.
6667         (ExpandVisitor::expand_closure_params): Add call to expand
6668         closure parameters.
6669         (ExpandVisitor::visit): Add calls for item outer attribute
6670         expansions.
6672 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6674         * expand/rust-expand-visitor.cc (ExpandVisitor::expand_outer_attribute):
6675         Stub for a single attribute expansion.
6676         (ExpandVisitor::visit_outer_attrs): Visit the attributes to
6677         expand on a given item.
6678         * expand/rust-expand-visitor.h: Add function prototypes.
6680 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6682         * ast/rust-ast.h: Add getter to Expr class.
6683         * ast/rust-expr.h: Add override attribute to existing getters.
6684         Also implement it for RangeExpr, attempting to retrieve outer
6685         attributes on those types will crash the compiler.
6686         * ast/rust-macro.h: Add override attribute to existing getters.
6687         * ast/rust-path.h: Likewise.
6689 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6691         * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Add call
6692         to inner attribute stub.
6693         (ExpandVisitor::expand_inner_attribute): Expand one single
6694         attribute.
6695         (ExpandVisitor::visit_inner_using_attrs): Expand a given item
6696         using a vector of attributes.
6697         (ExpandVisitor::visit_inner_attrs): Visit inner attributes of a
6698         given item.
6699         * expand/rust-expand-visitor.h: Add function prototypes.
6701 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6703         * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Add call
6704         to derive expander.
6705         (ExpandVisitor::expand_derive): Expand a single derive.
6706         (ExpandVisitor::visit_attrs_with_derive): Visit an item with
6707         derive attributes.
6708         (ExpandVisitor::is_derive): Identify a derive attribute.
6709         * expand/rust-expand-visitor.h: Add function prototypes.
6711 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6713         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix ICE.
6715 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6717         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Remove
6718         default separator.
6720 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6722         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Visit inner
6723         attributes.
6725 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6727         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Change token
6728         type.
6730 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6732         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix existing
6733         and implement remaining attribute visitors.
6735 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6737         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor
6738         to the union's outer attributes.
6740 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6742         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add call to
6743         inner attribute visitor.
6745 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6747         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix ICE.
6749 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6751         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Make comma
6752         mandatory.
6754 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6756         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Remove
6757         additional semicolon output.
6758         * ast/rust-ast-tokenstream.h: Change block visitor prototype
6759         with a default value for trailing tokens.
6761 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6763         * Make-lang.in: Add two new files to the list of sources.
6764         * ast/rust-ast-full.h: Add new ast formatting header.
6765         * ast/rust-ast.cc (enum indent_mode): Move formatting function
6766         to it's own file.
6767         (indent_spaces): Likewise.
6768         (get_string_in_delims): Likewise.
6769         (enum AttrMode): Likewise.
6770         (get_mode_dump_desc): Likewise.
6771         (append_attributes): Likewise.
6772         (unquote_string): Likewise.
6773         (GroupedExpr::as_string): Move pattern implementation to it's
6774         own file.
6775         (RangePattern::as_string): Likewise.
6776         (RangePatternBoundLiteral::as_string): Likewise.
6777         (SlicePattern::as_string): Likewise.
6778         (AltPattern::as_string): Likewise.
6779         (TuplePatternItemsMultiple::as_string): Likewise.
6780         (TuplePatternItemsRanged::as_string): Likewise.
6781         (TuplePattern::as_string): Likewise.
6782         (StructPatternField::as_string): Likewise.
6783         (StructPatternFieldIdent::as_string): Likewise.
6784         (StructPatternFieldTuplePat::as_string): Likewise.
6785         (StructPatternFieldIdentPat::as_string): Likewise.
6786         (StructPatternElements::as_string): Likewise.
6787         (StructPattern::as_string): Likewise.
6788         (LiteralPattern::as_string): Likewise.
6789         (ReferencePattern::as_string): Likewise.
6790         (IdentifierPattern::as_string): Likewise.
6791         (TupleStructItemsNoRange::as_string): Likewise.
6792         (TupleStructItemsRange::as_string): Likewise.
6793         (TupleStructPattern::as_string): Likewise.
6794         (GroupedExpr::accept_vis): Likewise.
6795         (LiteralPattern::accept_vis): Likewise.
6796         (IdentifierPattern::accept_vis): Likewise.
6797         (WildcardPattern::accept_vis): Likewise.
6798         (RestPattern::accept_vis): Likewise.
6799         (RangePatternBoundLiteral::accept_vis): Likewise.
6800         (RangePatternBoundPath::accept_vis): Likewise.
6801         (RangePatternBoundQualPath::accept_vis): Likewise.
6802         (RangePattern::accept_vis): Likewise.
6803         (ReferencePattern::accept_vis): Likewise.
6804         (StructPatternFieldTuplePat::accept_vis): Likewise.
6805         (StructPatternFieldIdentPat::accept_vis): Likewise.
6806         (StructPatternFieldIdent::accept_vis): Likewise.
6807         (StructPattern::accept_vis): Likewise.
6808         (TupleStructItemsNoRange::accept_vis): Likewise.
6809         (TupleStructItemsRange::accept_vis): Likewise.
6810         (TupleStructPattern::accept_vis): Likewise.
6811         (TuplePatternItemsMultiple::accept_vis): Likewise.
6812         (TuplePatternItemsRanged::accept_vis): Likewise.
6813         (TuplePattern::accept_vis): Likewise.
6814         (GroupedPattern::accept_vis): Likewise.
6815         (SlicePattern::accept_vis): Likewise.
6816         (AltPattern::accept_vis): Likewise.
6817         * ast/rust-ast-formatting.cc: New file.
6818         * ast/rust-ast-formatting.h: New file.
6819         * ast/rust-pattern.cc: New file.
6821 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6823         * Make-lang.in: Add new file for rust-path implementation.
6824         * ast/rust-ast.cc (PathInExpression::as_string): Move function
6825         to the new file.
6826         (PathPattern::as_string): Likewise.
6827         (QualifiedPathInExpression::as_string): Likewise.
6828         (ConstGenericParam::as_string): Likewise.
6829         (QualifiedPathInType::as_string): Likewise.
6830         (TypePath::as_string): Likewise.
6831         (PathPattern::convert_to_simple_path): Likewise.
6832         (TypePath::as_simple_path): Likewise.
6833         (PathExprSegment::as_string): Likewise.
6834         (GenericArgs::as_string): Likewise.
6835         (GenericArgsBinding::as_string): Likewise.
6836         (TypePath::to_trait_bound): Likewise.
6837         (TypePathSegmentGeneric::as_string): Likewise.
6838         (TypePathFunction::as_string): Likewise.
6839         (TypePathSegmentFunction::as_string): Likewise.
6840         (ConstGenericParam::accept_vis): Likewise.
6841         (PathInExpression::accept_vis): Likewise.
6842         (TypePathSegment::accept_vis): Likewise.
6843         (TypePathSegmentGeneric::accept_vis): Likewise.
6844         (TypePathSegmentFunction::accept_vis): Likewise.
6845         (TypePath::accept_vis): Likewise.
6846         (QualifiedPathInExpression::accept_vis): Likewise.
6847         (QualifiedPathInType::accept_vis): Likewise.
6848         (GenericArg::disambiguate_to_const): Likewise.
6849         (GenericArg::disambiguate_to_type): Likewise.
6850         * ast/rust-path.cc: New file.
6852 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6854         * backend/rust-compile-item.cc (CompileItem::visit): unwrap the constant expression
6856 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
6858         * util/rust-lang-item.h
6859         (RustLangItem::ItemType::FN): Add.
6860         (RustLangItem::ItemType::FN_MUT): Add.
6861         (RustLangItem::Parse): Handle FN and FN_MUT.
6862         (RustLangItem::ToString): Handle FN and FN_MUT.
6864 2024-01-16  Emanuele Micheletti  <micheletti.emanuele@hotmail.com>
6866         * typecheck/rust-casts.cc (TypeCastRules::cast_rules):
6867         case INTEGRAL handles TypeKind::CHAR
6869 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6871         * resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit):
6872         add check for reference marker and type's in self params
6873         (ResolveItem::visit): likewise
6874         * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_root_path):
6875         remove bad generics check
6876         (TypeCheckExpr::resolve_segments): likewise
6877         * typecheck/rust-hir-type-check-type.cc (TypeCheckType::resolve_root_path): likewise
6879 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6881         * resolve/rust-ast-resolve-item.cc
6882         (ResolveTraitItems::visit): add name resolution self param
6883         (ResolveItem::visit): likewise
6885 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6887         * typecheck/rust-tyty-bounds.cc (TypeBoundPredicate::TypeBoundPredicate): this is an empty
6888         (TypeBoundPredicate::operator=): likewise
6889         * typecheck/rust-tyty-subst.cc (SubstitutionArgumentMappings::empty): new interface
6890         (SubstitutionArgumentMappings::is_error): this marks it as an error
6891         * typecheck/rust-tyty-subst.h: update prototypes
6893 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
6895         * checks/errors/privacy/rust-privacy-reporter.cc
6896         (PrivacyReporter::check_base_type_privacy): allow error types to be permissive
6898 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6900         * ast/rust-ast-tokenstream.cc (TokenStream::visit_items_as_lines):
6901         Handle trailing chars.
6902         (TokenStream::visit_items_as_block): Likewise.
6903         (TokenStream::visit): Fix visitor.
6905 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6907         * lex/rust-token.cc (Token::as_string): Add type hint output.
6909 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6911         * rust-session-manager.cc (Session::enable_dump): Enable new
6912         dump.
6913         (Session::compile_crate): CLI argument parsing.
6914         (Session::dump_tokenstream): Dump the tokenstream as a string in
6915         the specified file.
6916         * rust-session-manager.h (struct CompileOptions): Add
6917         tokenstream dump option.
6919 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6921         * lex/rust-token.cc (Token::as_string): Add as_string
6922         implementation.
6923         * lex/rust-token.h: Add as_string prototype.
6925 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6927         * ast/rust-ast-tokenstream.cc (TokenStream::TokenStream): Add
6928         constructor.
6930 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6932         * ast/rust-ast-tokenstream.cc (TokenStream::collect_tokens): Add
6933         getter.
6934         (TokenStream::go): Rename function.
6935         (TokenStream::visit): Likewise.
6936         * ast/rust-ast-tokenstream.h: Add collect prototype.
6938 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6940         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Change
6941         getter name.
6942         * ast/rust-ast.cc (SimplePath::as_string): Change attribute
6943         name.
6944         * ast/rust-ast.h (class SimplePath): Refactor attribute name and
6945         change getter name.
6947 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6949         * ast/rust-ast-tokenstream.cc (TokenStream::visit_as_line): Add
6950         formatting calls.
6951         (TokenStream::visit_items_as_block): Likewise.
6952         (TokenStream::newline): Add stub.
6953         (TokenStream::indentation): Add stub.
6954         (TokenStream::increment_indentation): Add stub.
6955         (TokenStream::decrement_indentation): Add stub.
6956         (TokenStream::visit): Add formatting calls.
6957         (TokenStream::visit_function_common): Likewise.
6958         * ast/rust-ast-tokenstream.h: Add stub prototypes.
6960 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6962         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor.
6964 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6966         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor
6967         implementation.
6968         * ast/rust-ast-tokenstream.h: Add additional function prototype.
6969         * ast/rust-item.h: Add some getters.
6970         * ast/rust-macro.h: Likewise.
6972 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6974         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor.
6975         * ast/rust-item.h: Add missing getters.
6977 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6979         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor.
6981 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6983         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add
6984         visitors.
6985         (TokenStream::visit_closure_common): Merge common code for
6986         closure visitors.
6987         * ast/rust-ast-tokenstream.h: Add function prototype.
6988         * ast/rust-expr.h: Add missing move attribute getter.
6990 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6992         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add
6993         visitors.
6994         (TokenStream::visit_loop_common): Merge common loop code.
6995         * ast/rust-ast-tokenstream.h: Add function prototypes.
6997 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
6999         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Implement
7000         visitor.
7001         * ast/rust-ast-tokenstream.h: Add function prototype for missing
7002         component.
7004 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
7006         * ast/rust-ast-tokenstream.cc (TokenStream::trailing_comma):
7007         Output a trailing comma to the token stream according to the
7008         configuration.
7009         * ast/rust-ast-tokenstream.h: Add function prototype.
7011 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
7013         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Implement
7014         visitors.
7016 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
7018         * ast/rust-ast-tokenstream.cc (TokenStream::visit): Implement
7019         visitors.
7020         * ast/rust-ast-tokenstream.h: Add function prototypes.
7021         * ast/rust-ast.h: Add missing getters.
7022         * ast/rust-expr.h: Likewise.
7024 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
7026         * Make-lang.in: Add rust-as-tokenstream to compile list.
7027         * ast/rust-item.h: Add missing getter for location.
7028         * ast/rust-ast-tokenstream.cc: Add ast visitor implementation.
7029         * ast/rust-ast-tokenstream.h: New file.
7030         * ast/rust-pattern.h: Add getter.
7032 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7034         * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit):
7035         Add implicit unit type as the return type when not specified
7037 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7039         * util/rust-attributes.cc: Add stable to the table of known attributes
7041 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7043         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): return early on bad type
7044         * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::TypeCheckPattern):
7045         remove assertion in favor of check
7046         (TypeCheckPattern::visit): likewise
7048 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7050         * backend/rust-compile-expr.cc (CompileExpr::generate_closure_function):
7051         when its not a block we dont have any ribs to generate locals from
7053 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
7055         * parse/rust-parse-impl.h
7056         (Parser<ManagedTokenSource>::parse_expr_without_block):
7057         Remove direct array expression handling.
7059 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
7061         * ast/rust-item.h: Fix `Visibility::has_path()` implementation.
7062         * checks/errors/privacy/rust-visibility-resolver.cc
7063         (VisibilityResolver::resolve_module_path): Check if we are dealing with pub(crate) properly.
7065 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
7067         * resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): Set
7068         resolved_node_id when visiting root segment of SimplePath.
7070 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
7072         * ast/rust-ast.h: Call SimplePath constructor differently in
7073         SimplePath::from_str
7075 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
7077         * hir/rust-ast-lower-type.h: Move all remaining definitions to source file.
7078         * hir/rust-ast-lower-type.cc (ASTLoweringType::translate): Moved to source file.
7079         (ASTLoweringType::visit): Likewise.
7080         (ASTLowerGenericParam::translate): Likewise.
7081         (ASTLowerGenericParam::visit): Likewise.
7082         (ASTLoweringTypeBounds::translate): Likewise.
7083         (ASTLoweringTypeBounds::visit): Likewise.
7084         (ASTLowerWhereClauseItem::translate): Likewise.
7085         (ASTLowerWhereClauseItem::visit): Likewise.
7087 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
7089         * ast/rust-pattern.h: Remove commented out code.
7091 2024-01-16  emanuele-em  <micheletti.emanuele@hotmail.com>
7093         * typecheck/rust-casts.cc (TypeCastRules::cast_rules): BOOL removed from switch cases
7095 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
7097         * Make-lang.in: Rename rust-asttribute-visitor.o -> rust-cfg-strip.o
7098         * expand/rust-attribute-visitor.cc: Moved to...
7099         * expand/rust-cfg-strip.cc: ...here.
7100         * expand/rust-attribute-visitor.h: Moved to...
7101         * expand/rust-cfg-strip.h: ...here.
7102         * expand/rust-macro-expand.cc: Fix include of rust-attribute-visitor.h
7103         * expand/rust-macro-builtins.cc: Likewise.
7104         * rust-session-manager.cc (Session::expansion): Call CfgStrip instead of
7105         AttrVisitor.
7107 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
7109         * Make-lang.in: Add new object file.
7110         * expand/rust-attribute-visitor.cc (AttrVisitor::go): Visit all items of a
7111         crate.
7112         (AttrVisitor::expand_struct_fields): Do not perform macro expansion anymore.
7113         (AttrVisitor::expand_function_params): Likewise.
7114         (AttrVisitor::expand_generic_args): Likewise.
7115         (AttrVisitor::expand_qualified_path_type): Likewise.
7116         (AttrVisitor::expand_self_param): Likewise.
7117         (AttrVisitor::expand_trait_function_decl): Likewise.
7118         (AttrVisitor::expand_trait_method_decl): Likewise.
7119         (AttrVisitor::visit): Likewise.
7120         (AttrVisitor::maybe_expand_expr): Remove function.
7121         (AttrVisitor::maybe_expand_type): Likewise.
7122         * expand/rust-attribute-visitor.h: Do not keep MacroExpander inside AttrVisitor
7123         anymore.
7124         * expand/rust-macro-expand.h (struct MacroExpander): Turn ContextType into an
7125         enum class for more type safety.
7126         * expand/rust-macro-expand.cc (MacroExpander::expand_crate): Use new ContextType
7127         API.
7128         * rust-session-manager.cc (Session::expansion): Call into ExpandVisitor.
7129         * expand/rust-expand-visitor.cc: New file.
7130         * expand/rust-expand-visitor.h: New file.
7132 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
7134         * expand/rust-macro-expand.cc (MacroExpander::expand_crate): Do not cfg-attr
7135         strip in MacroExpander
7136         (MacroExpander::fails_cfg): Function moved...
7137         (MacroExpander::fails_cfg_with_expand): Function moved...
7138         (MacroExpander::expand_cfg_attrs): Function moved...
7139         * expand/rust-attribute-visitor.cc (fails_cfg): ...here.
7140         (fails_cfg_with_expand): ...here.
7141         (expand_cfg_attrs): ...here.
7142         (AttrVisitor::expand_struct_fields): Use new functions.
7143         (AttrVisitor::expand_tuple_fields): Likewise.
7144         (AttrVisitor::expand_function_params): Likewise.
7145         (AttrVisitor::visit): Likewise.
7146         (AttrVisitor::go): New function.
7147         * expand/rust-attribute-visitor.h: Declare AttrVisitor::go.
7148         * expand/rust-macro-expand.h (struct MacroExpander): Remove cfg-attr related
7149         functions.
7151 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
7153         * hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_macro_definition):
7154         New function.
7155         * hir/rust-ast-lower-base.h: Declare `lower_macro_definition`.
7156         * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Lower public
7157         macro definitions.
7158         * hir/rust-ast-lower-stmt.cc (ASTLoweringStmt::visit): Likewise.
7159         * hir/rust-ast-lower-stmt.h: Add visitor for `AST::MacroRulesDefinition`.
7160         * hir/rust-ast-lower.cc (ASTLowering::go): Formatting.
7161         (ASTLoweringBlock::visit): Visit `AST::MacroRulesDefinition`
7162         (ASTLoweringIfLetBlock::visit): Formatting.
7163         (ASTLoweringExprWithBlock::visit): Formatting.
7165 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
7167         * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Add new visitor
7168         for AST::MacroRulesDefinition.
7169         * hir/rust-ast-lower-item.h: Declare above mentioned visitor.
7170         * metadata/rust-export-metadata.cc (ExportContext::emit_macro): New function.
7171         * metadata/rust-export-metadata.h: Declare it.
7172         (PublicInterface::gather_export_data): Go through each exported macro.
7173         * util/rust-hir-map.cc (Mappings::insert_exported_macro): New function.
7174         (Mappings::get_exported_macros): New function.
7175         * util/rust-hir-map.h: Add new mappings for exported macros.
7177 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
7179         * backend/rust-compile-item.h: Revert 1c946687239b86a92839d57dfbc928ad7ce35eae.
7180         * backend/rust-compile-stmt.h: Likewise.
7181         * checks/errors/privacy/rust-privacy-reporter.cc
7182         (PrivacyReporter::visit): Likewise.
7183         * checks/errors/privacy/rust-privacy-reporter.h: Likewise.
7184         * checks/errors/privacy/rust-pub-restricted-visitor.cc
7185         (PubRestrictedVisitor::visit): Likewise.
7186         * checks/errors/privacy/rust-pub-restricted-visitor.h: Likewise.
7187         * checks/errors/privacy/rust-reachability.cc
7188         (ReachabilityVisitor::visit): Likewise.
7189         * checks/errors/privacy/rust-reachability.h: Likewise.
7190         * checks/errors/privacy/rust-visibility-resolver.cc
7191         (VisibilityResolver::visit): Likewise.
7192         * checks/errors/privacy/rust-visibility-resolver.h: Likewise.
7193         * checks/errors/rust-const-checker.cc (ConstChecker::visit): Likewise.
7194         * checks/errors/rust-const-checker.h: Likewise.
7195         * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise.
7196         * checks/errors/rust-unsafe-checker.h: Likewise.
7197         * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Likewise.
7198         * hir/rust-ast-lower-item.h: Likewise.
7199         * hir/rust-hir-dump.cc (Dump::visit): Likewise.
7200         * hir/rust-hir-dump.h: Likewise.
7201         * hir/tree/rust-hir-full-decls.h (class ExportedMacro): Likewise.
7202         * hir/tree/rust-hir-item.h (class ExportedMacro): Likewise.
7203         * hir/tree/rust-hir-visitor.h: Likewise.
7204         * hir/tree/rust-hir.cc (ExportedMacro::accept_vis): Likewise.
7205         (ExportedMacro::get_locus): Likewise.
7206         (ExportedMacro::get_item_kind): Likewise.
7207         (ExportedMacro::clone_item_impl): Likewise.
7208         * hir/tree/rust-hir.h: Likewise.
7209         * metadata/rust-export-metadata.cc: Likewise.
7210         * typecheck/rust-hir-type-check-item.h: Likewise.
7211         * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Likewise.
7212         * typecheck/rust-hir-type-check-stmt.h: Likewise.
7213         * typecheck/rust-tycheck-dump.h: Likewise.
7214         * util/rust-attributes.cc: Likewise.
7216 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7218         * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit): return a TraitObject
7220 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7222         * typecheck/rust-hir-trait-resolve.cc: don't inject extra inference variables
7224 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
7226         * ast/rust-ast-dump.cc (Dump::visit): Remove extraneous semicolon when
7227         dumping macro rules.
7229 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
7231         * metadata/rust-imports.cc (add_search_path): Change `Go` -> `Rust`.
7232         (Import::try_package_in_directory): Likewise.
7233         (Import::find_export_data): Likewise.
7235 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
7237         * hir/rust-ast-lower-pattern.cc
7238         (ASTLoweringPattern::visit): Lower AltPattern.
7239         * hir/rust-ast-lower-pattern.h:
7240         (ASTLoweringPattern::visit): Add AltPattern visitor.
7242 2024-01-16  Xiao Ma  <turingki@yeah.net>
7243             Thomas Schwinge  <thomas@codesourcery.com>
7245         * checks/errors/rust-feature-gate.cc: Adjust 'ld'->'u'.
7246         * checks/errors/rust-feature.h: Adjust
7247         the type of `m_issue`: 'uint64_t' -> 'unsigned'.
7249 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7251         * ast/rust-ast.h: add const get_final_segment helper
7252         * hir/rust-ast-lower-enumitem.h: dont add an item mapping for enumitems
7253         * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): add enum to enum-items mappings
7254         * hir/rust-ast-lower-stmt.cc (ASTLoweringStmt::visit): likewise
7255         * hir/tree/rust-hir-item.h: add non const helper to get variants
7256         * resolve/rust-ast-resolve-item.cc (ResolveItem::visit): resolve the use declaration
7257         * resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): handle self
7258         * resolve/rust-ast-resolve-toplevel.h: add enum item mappings to module mappings
7259         * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_root_path): ensure variant
7260         (TypeCheckExpr::resolve_segments): likewise
7261         * typecheck/rust-type-util.cc (query_type): lookup enum's
7262         * util/rust-hir-map.cc (Mappings::insert_hir_enumitem): enum item mappings
7263         (Mappings::lookup_hir_enumitem): likewise
7264         * util/rust-hir-map.h: likewise
7266 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7268         * resolve/rust-ast-resolve-path.cc (ResolvePath::ResolvePath): return NodeId
7269         (ResolvePath::go): update signiture
7270         (ResolvePath::resolve_path): return resolved_node_id
7271         * resolve/rust-ast-resolve-path.h: update prototypes
7273 2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
7275         * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit):
7276         Add lowering for SlicePattern.
7277         * hir/rust-ast-lower-pattern.h: Likewise.
7278         * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::visit):
7279         Add name resolution visit for SlicePattern.
7280         * resolve/rust-ast-resolve-pattern.h: Likewise.
7282 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7284         * hir/rust-ast-lower-implitem.h (RUST_AST_LOWER_IMPLITEM_H): cleanup header usage
7285         * hir/rust-ast-lower-item.cc: likewise
7286         * hir/rust-ast-lower-item.h (RUST_AST_LOWER_ITEM): likewise
7287         * hir/rust-ast-lower-stmt.cc: likewise
7288         * hir/rust-ast-lower-stmt.h (RUST_AST_LOWER_STMT): likewise
7289         * hir/rust-ast-lower-type.h: likewise
7290         * hir/rust-ast-lower.cc: likewise
7291         * hir/rust-ast-lower.h: likewise
7292         * resolve/rust-ast-resolve-expr.h: likewise
7293         * resolve/rust-ast-resolve-item.cc: likewise
7294         * resolve/rust-ast-resolve-item.h: likewise
7295         * resolve/rust-ast-resolve-stmt.cc: likewise
7296         * resolve/rust-ast-resolve-stmt.h: likewise
7297         * resolve/rust-ast-resolve-struct-expr-field.h: likewise
7298         * resolve/rust-ast-resolve-toplevel.h: likewise
7299         * resolve/rust-ast-resolve-type.h: likewise
7300         * resolve/rust-ast-resolve.h: likewise
7302 2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
7304         * resolve/rust-ast-resolve-pattern.h (class ResolvePattern): Removed.
7306 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7308         * backend/rust-compile-intrinsic.cc (move_val_init_handler): new intrinsice
7309         (uninit_handler): use a builtin memcpy
7311 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7313         * typecheck/rust-coercion.cc (TypeCoercionRules::select): use the result
7315 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7317         * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::resolve_literal): fix ctor
7318         * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): likewise
7319         * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): likewise
7320         * typecheck/rust-typecheck-context.cc (TypeCheckContext::push_new_loop_context): likewise
7321         * typecheck/rust-tyty-util.cc (TyVar::get_implicit_infer_var): likewise
7322         * typecheck/rust-tyty.cc (InferType::InferType): new ctor with type hint
7323         (InferType::clone): fix ctor
7324         (InferType::apply_primitive_type_hint): new function to apply possible hint
7325         * typecheck/rust-tyty.h: update prototypes
7326         * typecheck/rust-unify.cc (UnifyRules::expect_inference_variable): apply type hints
7327         (UnifyRules::expect_bool): likewise
7328         (UnifyRules::expect_char): likewise
7329         (UnifyRules::expect_int): likewise
7330         (UnifyRules::expect_uint): likewise
7331         (UnifyRules::expect_float): likewise
7332         (UnifyRules::expect_isize): likewise
7333         (UnifyRules::expect_usize): likewise
7335 2024-01-16  Jiakun Fan  <120090316@link.cuhk.edu.cn>
7337         * hir/rust-hir-dump.cc (Dump::go): fix format
7338         (Dump::visit): impl `visit (AST::Attribute &)`, dump inner attrs and
7339         `visit (Lifetime &)`
7340         * hir/rust-hir-dump.h:add `visit (AST::Attribute &)`
7342 2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
7344         * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::go):
7345         Print out consistency errors.
7346         (PatternDeclaration::visit): Implement visit for AltPattern.
7347         (PatternDeclaration::add_new_binding): New helper function for
7348         adding a binding to identifier.
7349         * resolve/rust-ast-resolve-pattern.h (struct BindingInfo):
7350         New struct to facilitate checking for inconsistencies between bindings.
7352 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
7354         * backend/rust-compile-block.h
7355         (CompileConditionalBlocks::visit): Remove IfLetExprConseqIf{,Let} visitors.
7356         (CompileExprWithBlock::visit): Remove IfLetExprConseqIf{,Let} visitors.
7357         * backend/rust-compile-expr.h
7358         (CompileExpr::visit): Remove IfLetExprConseqIf{,Let} visitors.
7359         * checks/errors/rust-unsafe-checker.cc
7360         (UnsafeChecker::visit): Remove IfLetExprConseqIf{,Let} visitors.
7361         * checks/errors/rust-unsafe-checker.h
7362         (UnsafeChecker::visit): Remove IfLetExprConseqIf{,Let} visitors.
7363         * checks/errors/rust-const-checker.cc
7364         (ConstChecker::visit): Remove IfLetExprConseqIf{,Let} visitors.
7365         * checks/errors/rust-const-checker.h
7366         (ConstChecker::visit): Remove IfLetExprConseqIf{,Let} visitors.
7367         * checks/errors/privacy/rust-privacy-reporter.cc
7368         (PrivacyReporter::visit): Remove IfLetExprConseqIf{,Let} visitors.
7369         * checks/errors/privacy/rust-privacy-reporter.h
7370         (PrivacyReporter::visit): Remove IfLetExprConseqIf{,Let} visitors.
7371         * hir/tree/rust-hir-expr.h
7372         (class IfLetExprConseqElse): Make else_block ExprWithBlock.
7373         (class IfLetExprConseqIf): Remove.
7374         (class IfLetExprConseqIfLet): Remove.
7375         * hir/tree/rust-hir-full-decls.h
7376         (class IfLetExprConseqIf): Remove.
7377         (class IfLetExprConseqIfLet): Remove.
7378         * hir/tree/rust-hir.cc
7379         (IfLetExprConseqElse::as_string): Adjust output.
7380         (IfLetExprConseqIf::as_string): Remove.
7381         (IfLetExprConseqIfLet::as_string): Remove.
7382         (IfLetExprConseqIf::accept_vis): Remove.
7383         (IfLetExprConseqIfLet::accept_vis): Remove.
7384         * hir/tree/rust-hir-visitor.h
7385         (HIRFullVisitor::visit): Remove IfLetExprConseqIf{,Let} visitors.
7386         (HIRFullVisitorBase::visit): Remove IfLetExprConseqIf{,Let} visitors.
7387         (HIRExpressionVisitor::visit): Remove IfLetExprConseqIf{,Let} visitors.
7388         * hir/rust-hir-dump.cc
7389         (Dump::visit): Remove IfLetExprConseqIf{,Let} visitors.
7390         * hir/rust-hir-dump.h
7391         (Dump::visit): Remove IfLetExprConseqIf{,Let} visitors.
7392         * typecheck/rust-hir-type-check-expr.h
7393         (TypeCheckExpr::visit): Remove IfLetExprConseqIf{,Let} visitors.
7395 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
7397         * typecheck/rust-hir-type-check-expr.cc
7398         (TypeCheckExpr::visit): Remove IfExprConseqIf visitor.
7399         * typecheck/rust-hir-type-check-expr.h
7400         (TypeCheckExpr::visit): Remove IfExprConseqIf{,Let} visitor.
7401         * backend/rust-compile-block.cc
7402         (CompileConditionalBlocks::visit): Remove IfExprConseqIf visitor.
7403         * backend/rust-compile-block.h
7404         (CompileConditionalBlocks::visit): Remove IfExprConseqIf{,Let} visitors.
7405         (CompileExprWithBlock::visit):
7406         Remove IfExprConseqIf{,Let} visitors, implement BlockExpr visitor.
7407         * backend/rust-compile-expr.cc
7408         (CompileExpr::visit): Remove IfExprConseqIf visitor.
7409         * backend/rust-compile-expr.h
7410         (CompileExpr::visit): Remove IfExprConseqIf{,Let} visitors.
7411         * checks/lints/rust-lint-marklive.h
7412         (MarkLive::visit): Remove IfExprConseqIf visitor.
7413         * checks/errors/rust-const-checker.cc
7414         (ConstChecker::visit): Remove IfExprConseqIf{,Let} visitors.
7415         * checks/errors/rust-const-checker.h
7416         (ConstChecker::visit): Remove IfExprConseqIf{,Let} visitors.
7417         * checks/errors/rust-unsafe-checker.cc
7418         (UnsafeChecker::visit): Remove IfExprConseqIf{,Let} visitors.
7419         * checks/errors/rust-unsafe-checker.h
7420         (UnsafeChecker::visit): Remove IfExprConseqIf{,Let} visitors.
7421         * checks/errors/privacy/rust-privacy-reporter.cc
7422         (PrivacyReporter::visit): Remove IfExprConseqIf{,Let} visitors.
7423         * checks/errors/privacy/rust-privacy-reporter.h
7424         (PrivacyReporter::visit): Remove IfExprConseqIf{,Let} visitors.
7425         * hir/tree/rust-hir-expr.h
7426         (class IfExprConseqElse): Make else_block ExprWithBlock.
7427         (class IfExprConseqIf): Remove.
7428         (class IfExprConseqIfLet): Remove.
7429         * hir/tree/rust-hir-full-decls.h
7430         (class IfExprConseqIf): Remove.
7431         (class IfExprConseqIfLet): Remove.
7432         * hir/tree/rust-hir.cc
7433         (IfExprConseqElse::as_string): Adjust output.
7434         (IfExprConseqIf::as_string): Remove.
7435         (IfExprConseqIfLet::as_string): Remove.
7436         (IfExprConseqIf::accept_vis): Remove.
7437         (IfExprConseqIfLet::accept_vis): Remove.
7438         * hir/tree/rust-hir-visitor.h
7439         (HIRFullVisitor::visit): Remove IfExprConseqIf{,Let} visitors.
7440         (HIRFullVisitorBase::visit): Remove IfExprConseqIf{,Let} visitors.
7441         (HIRExpressionVisitor::visit): Remove IfExprConseqIf{,Let} visitors.
7442         * hir/rust-hir-dump.cc
7443         (Dump::visit): Remove IfExprConseqIf{,Let} visitors.
7444         * hir/rust-hir-dump.h
7445         (Dump::visit): Remove IfExprConseqIf{,Let} visitors.
7446         * hir/rust-ast-lower.cc
7447         (ASTLoweringIfBlock::visit): Replace HIR::IfExprConseqIf with HIR::IfExprConseqElse.
7449 2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
7451         * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit):
7452         Push a Product context instead of an Or context.
7454 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7456         * typecheck/rust-hir-inherent-impl-overlap.h (class ImplItemToName): remove
7458 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7460         * backend/rust-compile-expr.cc (CompileExpr::resolve_method_address): remove unused code
7462 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7464         * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): remove infer call
7465         (TypeCheckExpr::resolve_root_path): only infer when we need to
7467 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7469         * typecheck/rust-hir-dot-operator.cc (MethodResolver::select): add debug
7471 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7473         * backend/rust-compile.cc: use unify_and instead
7474         * typecheck/rust-tyty-subst.cc (SubstitutionRef::solve_missing_mappings_from_this): remove
7475         * typecheck/rust-tyty-subst.h: update header
7477 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7479         * typecheck/rust-coercion.cc (TypeCoercionRules::select): use new unify_and interface
7480         * typecheck/rust-hir-dot-operator.cc (MethodResolver::try_hook): grab bounds behind refs
7482 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7484         * backend/rust-compile-base.cc: fix headers
7485         * backend/rust-compile-base.h: likewise
7486         * backend/rust-compile-expr.cc: likewise
7487         * backend/rust-compile-extern.h: likewise
7488         * backend/rust-compile-pattern.cc: likewise
7489         * backend/rust-compile.cc: likewise
7490         * typecheck/rust-autoderef.cc: likewise
7491         * typecheck/rust-hir-dot-operator.cc: likewise
7492         * typecheck/rust-hir-inherent-impl-overlap.h: likewise
7493         * typecheck/rust-hir-path-probe.cc: likewise
7494         * typecheck/rust-hir-trait-resolve.cc: likewise
7495         * typecheck/rust-hir-type-check-base.cc: likewise
7496         * typecheck/rust-hir-type-check-base.h (RUST_HIR_TYPE_CHECK_BASE): likewise
7497         * typecheck/rust-hir-type-check-enumitem.cc: likewise
7498         * typecheck/rust-hir-type-check-expr.cc: likewise
7499         * typecheck/rust-hir-type-check-implitem.cc: likewise
7500         * typecheck/rust-hir-type-check-item.cc: likewise
7501         * typecheck/rust-hir-type-check-path.cc: likewise
7502         * typecheck/rust-hir-type-check-pattern.cc: likewise
7503         * typecheck/rust-hir-type-check-stmt.cc: likewise
7504         * typecheck/rust-hir-type-check-struct.cc: likewise
7505         * typecheck/rust-hir-type-check-type.cc: likewise
7506         * typecheck/rust-hir-type-check-type.h: likewise
7507         * typecheck/rust-hir-type-check.h (RUST_HIR_TYPE_CHECK): likewise
7508         * typecheck/rust-tyty-bounds.cc: likewise
7509         * typecheck/rust-tyty-call.cc: likewise
7510         * typecheck/rust-tyty-subst.cc: likewise
7511         * typecheck/rust-tyty.cc: likewise
7513 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7515         * typecheck/rust-tyty.cc (BaseType::has_subsititions_defined): new implementation
7516         (BaseType::needs_generic_substitutions): likewise
7517         (ProjectionType::needs_generic_substitutions): remove
7518         (ProjectionType::has_subsititions_defined): remove
7519         * typecheck/rust-tyty.h: update header
7521 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7523         * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): update to use new interface
7524         (TypeCheckExpr::resolve_root_path): likewise
7525         (TypeCheckExpr::resolve_segments): likewise
7526         * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): likewise
7527         (TypeCheckType::resolve_root_path): likewise
7528         * typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args): likewise
7529         * typecheck/rust-tyty.cc (BaseType::supports_substitutions): likewise
7530         (BaseType::can_substitute): remove
7531         (BaseType::contains_type_parameters): remove
7532         (handle_substitions): cleanup
7533         (TupleType::handle_substitions): update
7534         (FnType::handle_substitions): update
7535         (ProjectionType::supports_substitutions): update
7536         * typecheck/rust-tyty.h: update header
7538 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7540         * typecheck/rust-tyty.h: cleanup ordering of header
7542 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7544         * typecheck/rust-tyty.cc (BaseType::monomorphized_clone): new impl
7545         (InferType::monomorphized_clone): remove
7546         (ErrorType::monomorphized_clone): likewise
7547         (ADTType::monomorphized_clone): likewise
7548         (TupleType::monomorphized_clone): likewise
7549         (FnType::monomorphized_clone): likewise
7550         (FnPtr::monomorphized_clone): likewise
7551         (ClosureType::monomorphized_clone): likewise
7552         (ArrayType::clone): likewise
7553         (ArrayType::get_var_element_type): likewise
7554         (ArrayType::monomorphized_clone): likewise
7555         (SliceType::clone): likewise
7556         (SliceType::get_var_element_type): likewise
7557         (SliceType::monomorphized_clone): likewise
7558         (BoolType::monomorphized_clone): likewise
7559         (IntType::monomorphized_clone): likewise
7560         (UintType::monomorphized_clone): likewise
7561         (FloatType::monomorphized_clone): likewise
7562         (USizeType::monomorphized_clone): likewise
7563         (ISizeType::monomorphized_clone): likewise
7564         (CharType::monomorphized_clone): likewise
7565         (ReferenceType::clone): likewise
7566         (ReferenceType::get_var_element_type): likewise
7567         (ReferenceType::monomorphized_clone): likewise
7568         (PointerType::clone): likewise
7569         (PointerType::get_var_element_type): likewise
7570         (PointerType::monomorphized_clone): likewise
7571         (ParamType::monomorphized_clone): likewise
7572         (StrType::monomorphized_clone): likewise
7573         (NeverType::monomorphized_clone): likewise
7574         (PlaceholderType::monomorphized_clone): likewise
7575         (ProjectionType::monomorphized_clone): likewise
7576         (DynamicObjectType::monomorphized_clone): likewise
7577         * typecheck/rust-tyty.h: update header
7579 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7581         * typecheck/rust-tyty.cc (BaseType::is_unit): new implementation
7582         (ErrorType::is_unit): remove
7583         (TupleType::is_unit): likewise
7584         (NeverType::is_unit): likewise
7585         (PlaceholderType::is_unit): likewise
7586         (ProjectionType::is_unit): likewise
7587         * typecheck/rust-tyty.h: update header
7589 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7591         * typecheck/rust-tyty.cc (BaseType::is_concrete): new implementation
7592         (InferType::is_concrete): remove
7593         (ErrorType::is_concrete): likewise
7594         (StructFieldType::is_concrete): likewise
7595         (ADTType::is_concrete): likewise
7596         (TupleType::is_concrete): likewise
7597         (BoolType::is_concrete): likewise
7598         (IntType::is_concrete): likewise
7599         (UintType::is_concrete): likewise
7600         (FloatType::is_concrete): likewise
7601         (USizeType::is_concrete): likewise
7602         (ISizeType::is_concrete): likewise
7603         (CharType::is_concrete): likewise
7604         (ReferenceType::is_concrete): likewise
7605         (PointerType::is_concrete): likewise
7606         (ParamType::is_concrete): likewise
7607         (StrType::is_concrete): likewise
7608         (NeverType::is_concrete): likewise
7609         (PlaceholderType::is_concrete): likewise
7610         (ProjectionType::is_concrete): likewise
7611         (DynamicObjectType::is_concrete): likewise
7612         * typecheck/rust-tyty.h: update header
7614 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7616         * backend/rust-compile-type.cc (TyTyResolveCompile::TyTyResolveCompile): call destructure
7617         (TyTyResolveCompile::compile): use error_mark_node
7618         (TyTyResolveCompile::visit): use error_mark_node
7619         * backend/rust-compile-type.h: remove recursive ops
7621 2024-01-16  Tage Johansson  <frans.tage@gmail.com>
7623         * parse/rust-parse.cc: fix follow-sets
7625 2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
7627         * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit) :declare and
7628         pass bindings to PatternDeclaration::go.
7629         (ResolveExpr::resolve_closure_param): Likewise.
7630         * resolve/rust-ast-resolve-expr.h: Likewise.
7631         * resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit): Likewise.
7632         (ResolveItem::visit): Likewise.
7633         * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::go): Likewise.
7634         (PatternDeclaration::visit): check for previous identifier bindings
7635         before inserting the new one.
7636         * resolve/rust-ast-resolve-pattern.h (enum PatternBoundCtx): New enum.
7637         * resolve/rust-ast-resolve-stmt.h: pass bindings to PatterDeclaration::go.
7639 2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
7641         * backend/rust-compile-expr.cc (CompileExpr::generate_closure_function):
7642         handle closure parameters pattern bindings using CompilePatternBindings visitor
7644 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
7646         * README.md (process): Rename `rust1` to `crab1` in examples.
7647         * Make-lang.in: Rename `rust1` to `crab1`.
7648         * config-lang.in: Likewise.
7649         * lang-specs.h: Likewise.
7650         * rustspec.cc (lang_specific_driver): Likewise.
7652 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
7654         * hir/tree/rust-hir-pattern.h
7655         (SlicePattern::get_items): Add.
7657 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
7659         * hir/tree/rust-hir-full-decls.h
7660         (struct GenericArgsBinding): Convert to class.
7661         (class GenericArgsBinding): Convert from struct.
7662         (struct TypePathFunction): See above.
7663         (class TypePathFunction): See above.
7664         (struct QualifiedPathType): See above.
7665         (class QualifiedPathType): See above.
7666         * ast/rust-ast-full-decls.h
7667         (struct WhereClause): See above.
7668         (class WhereClause): See above.
7669         (struct SelfParam): See above.
7670         (class SelfParam): See above.
7671         (struct FunctionQualifiers): See above.
7672         (class FunctionQualifiers): See above.
7673         (struct FunctionParam): See above.
7674         (class FunctionParam): See above.
7675         (struct StructField): See above.
7676         (class StructField): See above.
7677         (struct TupleField): See above.
7678         (class TupleField): See above.
7679         (struct TraitFunctionDecl): See above.
7680         (class TraitFunctionDecl): See above.
7681         (struct TraitMethodDecl): See above.
7682         (class TraitMethodDecl): See above.
7683         (struct NamedFunctionParam): See above.
7684         (class NamedFunctionParam): See above.
7685         * hir/tree/rust-hir-path.h
7686         (struct GenericArgsBinding): See above.
7687         (class GenericArgsBinding): See above.
7688         (struct TypePathFunction): See above.
7689         (class TypePathFunction): See above.
7690         (struct QualifiedPathType): See above.
7691         (class QualifiedPathType): See above.
7692         * ast/rust-item.h
7693         (struct WhereClause): See above.
7694         (class WhereClause): See above.
7695         (struct SelfParam): See above.
7696         (class SelfParam): See above.
7697         (struct FunctionQualifiers): See above.
7698         (class FunctionQualifiers): See above.
7699         (struct FunctionParam): See above.
7700         (class FunctionParam): See above.
7701         (struct StructField): See above.
7702         (class StructField): See above.
7703         (struct TupleField): See above.
7704         (class TupleField): See above.
7705         (struct TraitFunctionDecl): See above.
7706         (class TraitFunctionDecl): See above.
7707         (struct TraitMethodDecl): See above.
7708         (class TraitMethodDecl): See above.
7709         (struct NamedFunctionParam): See above.
7710         (class NamedFunctionParam): See above.
7712 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
7714         * hir/tree/rust-hir-pattern.h
7715         (class AltPattern): Remove duplicate access specifier.
7716         (AltPattern::get_alts): Add.
7717         * hir/tree/rust-hir.cc
7718         (AltPattern::as_string): Add.
7719         (AltPattern::accept_vis): Add.
7721 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
7723         * hir/tree/rust-hir-item.h (class ExportedMacro): Add new ExportedMacro class.
7724         * hir/tree/rust-hir.cc (ExportedMacro::accept_vis): New function.
7725         (ExportedMacro::get_locus): Likewise.
7726         (ExportedMacro::get_item_kind): Likewise.
7727         (ExportedMacro::clone_item_impl): Likewise.
7728         * hir/tree/rust-hir-full-decls.h (class ExportedMacro): Forward declare class.
7729         * backend/rust-compile-item.h: Add visitor for ExportedMacro.
7730         * backend/rust-compile-stmt.h: Likewise.
7731         * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): Likewise.
7732         * checks/errors/privacy/rust-privacy-reporter.h: Likewise.
7733         * checks/errors/privacy/rust-pub-restricted-visitor.cc (PubRestrictedVisitor::visit):
7734         Likewise.
7735         * checks/errors/privacy/rust-pub-restricted-visitor.h: Likewise.
7736         * checks/errors/privacy/rust-reachability.cc (ReachabilityVisitor::visit): Likewise.
7737         * checks/errors/privacy/rust-reachability.h: Likewise.
7738         * checks/errors/privacy/rust-visibility-resolver.cc (VisibilityResolver::visit): Likewise.
7739         * checks/errors/privacy/rust-visibility-resolver.h: Likewise.
7740         * checks/errors/rust-const-checker.cc (ConstChecker::visit): Likewise.
7741         * checks/errors/rust-const-checker.h: Likewise.
7742         * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise.
7743         * checks/errors/rust-unsafe-checker.h: Likewise.
7744         * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Likewise.
7745         * hir/rust-ast-lower-item.h: Likewise.
7746         * hir/rust-hir-dump.cc (Dump::visit): Likewise.
7747         * hir/rust-hir-dump.h: Likewise.
7748         * hir/tree/rust-hir-visitor.h: Likewise.
7749         * metadata/rust-export-metadata.cc: Likewise.
7750         * typecheck/rust-hir-type-check-item.h: Likewise.
7751         * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Likewise.
7752         * typecheck/rust-hir-type-check-stmt.h: Likewise.
7753         * typecheck/rust-tycheck-dump.h: Likewise.
7754         * hir/tree/rust-hir.h: Add new ItemKind::MacroExport variant.
7755         * util/rust-attributes.cc: Add #[macro_export] attribute.
7757 2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
7759         * backend/rust-compile-fnparam.cc (CompileFnParam::visit):
7760         Added visit implementation for ReferencePattern.
7761         (CompileFnParam::create_tmp_param_var):
7762         Refactored duplicated code into a helper function.
7763         * backend/rust-compile-fnparam.h: Added visit implementation for
7764         ReferencePattern.
7765         * backend/rust-compile-pattern.cc (CompilePatternBindings::visit):
7766         Added visit implementation for ReferencePattern and
7767         IdentifierPattern.
7768         * backend/rust-compile-pattern.h: Added visit implementation for
7769         ReferencePattern and IdentifierPattern.
7771 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
7773         * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Move
7774         unloaded module item loading to...
7775         * expand/rust-attribute-visitor.cc (AttrVisitor::visit): ...here.
7777 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
7779         * hir/rust-hir-dump.cc (Dump::visit): Simplify indentation dump to single line.
7781 2024-01-16  Jakub Dupak  <dev@jakubdupak.com>
7783         * ast/rust-ast-dump.cc (Indent::Indent): Move to separate file.
7784         (operator<<): Move to separate file.
7785         (Indent::increment): Move to separate file.
7786         (Indent::decrement): Move to separate file.
7787         * ast/rust-ast-dump.h (class Indent): Move to separate file.
7788         * hir/rust-hir-dump.cc (Dump::Dump): Use new indentation object.
7789         (Dump::go): Use new indentation object.
7790         (Dump::visit): Use new indention object.
7791         * hir/rust-hir-dump.h: Use new indentation object.
7792         * util/rust-dump.h: New file. Moved Indentation from rust-ast-dump.cc
7794 2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>
7796         * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
7797         Add the missing infered type assignment
7799 2024-01-16  Marc Poulhiès  <dkm@kataplop.net>
7801         PR rust/108111
7802         * ast/rust-ast-full-decls.h (StructPatternElements): Declare as a
7803         class.
7804         * ast/rust-item.h (EnumItem): Mark several method as being
7805         overrides.
7806         * ast/rust-pattern.h (StructPattern::get_locus): Add override.
7807         * lex/rust-lex.h (BufferInputSource): Use reference_wrapper
7808         instead of bare reference.
7809         (TokenSource::get): Add method to implement the reference_wrapper
7810         interface.
7811         * typecheck/rust-tyty.h (TypeBoundPredicate): Add empty dtor.
7812         * util/rust-buffered-queue.h (peek): Source token stream is now
7813         using a reference_wrapper, use .get()
7815 2024-01-16  vincent  <jfan30@u.rochester.edu>
7817         * typecheck/rust-hir-type-check-pattern.cc
7818         (TypeCheckPattern::visit): rewrite part code to helper function
7819         (TypeCheckPattern::typecheck_range_pattern_bound): helper function
7820         * typecheck/rust-hir-type-check-pattern.h
7821         (TypeCheckPattern::typecheck_range_pattern_bound):
7822         change the parameter of the function
7824 2024-01-16  goar5670  <mahadelr19@gmail.com>
7826         * hir/tree/rust-hir-pattern.h (HIR::ReferencePattern):
7827         added get_referenced_pattern function.
7828         * resolve/rust-ast-resolve-pattern.h
7829         (Resolve::PatternDeclaration): add visit function for
7830         AST::ReferencePattern
7831         * typecheck/rust-hir-type-check-pattern.cc
7832         (Resolver::TypeCheckPattern): add visit function for
7833         HIR::ReferencePattern
7835 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
7837         * util/rust-lang-item.h
7838         (RustLangItem::ItemType): New enumerators.
7839         (RustLangItem::Parse): Parse new enumerators.
7840         (RustLangItem::ToString): Handle new enumerators.
7842 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
7844         * backend/rust-compile-fnparam.h:
7845         (CompileFnParam::visit): Add AltPattern visitor.
7846         * backend/rust-compile-pattern.h:
7847         (CompilePatternCaseLabelExpr::visit): Add AltPattern visitor.
7848         (CompilePatternBindings::visit): Add AltPattern visitor.
7849         (CompilePatternLet::visit): Add AltPattern visitor.
7850         * backend/rust-compile-resolve-path.h:
7851         (ResolvePathRef::visit): Add AltPattern visitor.
7852         * backend/rust-compile-var-decl.h:
7853         (CompileVarDecl::visit): Add AltPattern visitor.
7854         * checks/errors/rust-const-checker.cc
7855         (ConstChecker::visit): Add AltPattern visitor.
7856         * checks/errors/rust-const-checker.h:
7857         (ConstChecker::visit): Add AltPattern visitor.
7858         * checks/errors/rust-unsafe-checker.cc
7859         (UnsafeChecker::visit): Add AltPattern visitor.
7860         * checks/errors/rust-unsafe-checker.h:
7861         (UnsafeChecker::visit): Add AltPattern visitor.
7862         * hir/rust-hir-dump.cc
7863         (Dump::visit): Add AltPattern visitor.
7864         * hir/rust-hir-dump.h:
7865         (Dump::visit): Add AltPattern visitor.
7866         * hir/tree/rust-hir-full-decls.h
7867         (class AltPattern): Add forward declaration.
7868         * hir/tree/rust-hir-pattern.h
7869         (class AltPattern): New class.
7870         * hir/tree/rust-hir-visitor.h:
7871         (HIRFullVisitor::visit): Add AltPattern visitor.
7872         (HIRFullVisitorBase::visit): Add AltPattern visitor.
7873         (HIRPatternVisitor::visit): Add AltPattern visitor.
7874         * hir/tree/rust-hir.h:
7875         (Pattern::PatternType::ALT): New enumerator.
7876         * typecheck/rust-hir-type-check-pattern.cc
7877         (TypeCheckPattern::visit): Add AltPattern visitor.
7878         * typecheck/rust-hir-type-check-pattern.h:
7879         (TypeCheckPattern::visit): Add AltPattern visitor.
7881 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
7883         * ast/rust-macro.cc (builtin_macro_from_string): Add identifier
7884         identification.
7885         * ast/rust-macro.h (enum class): Add Stringify builtin macro
7886         type.
7887         * expand/rust-macro-builtins.cc (make_macro_path_str): Add path
7888         for builtin stringify macro.
7889         (MacroBuiltin::stringify_handler): Add handler for builtin
7890         stringify macro.
7891         * expand/rust-macro-builtins.h: Add stringify handler's
7892         prototype.
7893         * util/rust-hir-map.cc (Mappings::insert_macro_def): Add
7894         stringify handler to builtin hir map.
7896 2024-01-16  Nikos Alexandris  <nikos-alexandris@protonmail.com>
7898         * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
7899                 Add length checking for tuple patterns.
7900         (TypeCheckPattern::emit_pattern_size_error): New function.
7901         * typecheck/rust-hir-type-check-pattern.h: New function
7902                 emit_pattern_size_error.
7904 2024-01-16  goar5670  <mahadelr19@gmail.com>
7906         * parse/rust-parse-impl.h (Parser::parse_expr):
7907         split LEFT_SHIFT before null_denotation.
7909 2024-01-16  Parthib  <parthibdutta02@gmail.com>
7911         * rust-object-export.cc: Modified
7912         * hir/rust-ast-lower-type.cc (rust_fatal_error): Removed
7913                 (rust_assert): Added
7915 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
7917         * resolve/rust-early-name-resolver.cc
7918         (EarlyNameResolver::visit):
7919         Check for closure parameter without given type.
7921 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7923         * typecheck/rust-typecheck-context.cc (TypeCheckContext::insert_resolved_predicate): remove
7925 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7927         * resolve/rust-ast-resolve-type.cc (ResolveRelativeQualTypePath::resolve_qual_seg): fix
7929 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7931         * ast/rust-path.h: add missing copy for node_id
7933 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7935         * rust-gcc.h: remove unused headers
7937 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7939         * ast/rust-ast.cc (QualifiedPathInType::as_string): add missing to string
7940         * ast/rust-path.h: add missing copy+move constructors and assignment overloads
7941         * hir/tree/rust-hir-path.h: likewise
7942         * hir/tree/rust-hir.cc (QualifiedPathInType::as_string): add missing to string
7944 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7946         * typecheck/rust-tyty.cc (ParamType::get_name): call destructure
7948 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7950         * typecheck/rust-hir-trait-resolve.cc: use unify_and infer
7952 2024-01-16  goar5670  <mahadelr19@gmail.com>
7954         * parse/rust-parse-impl.h (Parser::parse_closure_param):
7955         Replace parse_pattern with parse_pattern_no_alt.
7957 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
7959         * parse/rust-parse-impl.h (Parser::parse_while_let_loop_expr):
7960         Prevent hard error on token skip.
7961         (Parser::null_denotation): Fix parser for while let expressions.
7963 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
7965         * backend/rust-builtins.cc (BuiltinsContext::setup): add memset builtin to the map
7966         * backend/rust-compile-intrinsic.cc (uninit_handler): implement uninit intrinsic
7968 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
7970         * parse/rust-parse-impl.h (Parser::parse_slice_pattern): Add
7971         closing square bracket check.
7973 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
7975         * parse/rust-parse-impl.h (Parser::parse_external_type_item):
7976         Fix compilation error due to unnecessary move.
7978 2024-01-16  Abdul Rafey  <abdulrafeyq@gmail.com>
7980         * hir/rust-hir-dump.cc (Dump::go): support inner attrs, crate items and node mappings
7981         (Dump::visit): support functions, arith/logical exprs, let stmts and literals
7983 2024-01-16  Nikos Alexandris  <nikos-alexandris@protonmail.com>
7985         * expand/rust-macro-builtins.cc (load_file_bytes): Add location parameter.
7986         (MacroBuiltin::include_bytes_handler): Pass location to load_file_bytes.
7987         (MacroBuiltin::include_str_handler): Pass location to load_file_bytes.
7989 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
7991         * parse/rust-parse-impl.h (Parser::parse_pattern_no_alt): Handle
7992         RestPattern correctly.
7994 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
7996         * ast/rust-pattern.h (class RestPattern): Add NodeId as well as
7997         the clone_impl function.
7999 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
8001         * parse/rust-parse-impl.h (Parser::null_denotation): Fix if let
8002         parsing.
8004 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
8006         * backend/rust-compile-intrinsic.cc (op_with_overflow_inner): wraps op_with_overflow
8007         (std::function<tree): likewise
8008         (op_with_overflow): generate the intrinsic based on the tree_code op
8010 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
8012         * Make-lang.in: Add rust-ast-lower-stmt.o
8013         * hir/rust-ast-lower-stmt.h: Move definitions to...
8014         * hir/rust-ast-lower-stmt.cc: ...here.
8016 2024-01-16  mxlol233  <mxlol233@outlook.com>
8018         * checks/errors/rust-feature-gate.cc: Add definition
8019         for `extern_types`.
8020         * checks/errors/rust-feature-gate.h: Likewise.
8021         * checks/errors/rust-feature.cc: Likewise.
8022         * checks/errors/rust-feature.h: Likewise.
8024 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
8026         * ast/rust-pattern.h
8027         (StructPatternElements::operator=): Clear vector before inserting.
8028         (TupleStructItemsNoRange::operator=): Clear vector before inserting.
8029         (TupleStructItemsRange::operator=): Clear vectors before inserting.
8030         (TuplePatternItemsMultiple::operator=): Clear vector before inserting.
8031         (TuplePatternItemsRanged::operator=): Clear vectors before inserting.
8032         (SlicePattern::operator=): Clear vector before inserting.
8033         (AltPattern::operator=): Clear vector before inserting.
8034         * hir/tree/rust-hir-pattern.h
8035         (StructPatternElements::operator=): Clear vector before inserting.
8036         (TupleStructItemsNoRange::operator=): Clear vector before inserting.
8037         (TupleStructItemsRange::operator=): Clear vectors before inserting.
8038         (TuplePatternItemsMultiple::operator=): Clear vector before inserting.
8039         (TuplePatternItemsRanged::operator=): Clear vectors before inserting.
8040         (SlicePattern::operator=): Clear vector before inserting.
8042 2024-01-16  bl7awy  <mahadelr19@gmail.com>
8044         * typecheck/rust-casts.cc (TypeCastRules::cast_rules): Perform destructure on `from` type.
8046 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
8048         * ast/rust-pattern.h
8049         (struct StructPatternElements): Change to class.
8050         (class StructPatternElements): Change from struct.
8051         * hir/tree/rust-hir-pattern.h
8052         (struct StructPatternElements): Change to class.
8053         (class StructPatternElements): Change from struct.
8055 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
8057         * typecheck/rust-hir-type-check-pattern.cc
8058         (TypeCheckPattern::visit): Improve error messages.
8060 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
8062         * hir/tree/rust-hir-pattern.h
8063         (class TupleStructItemsNoRange): Fix formatting.
8064         (class TupleStructItemsRange): Fix formatting.
8065         (class TuplePatternItemsMultiple): Fix formatting.
8066         (class TuplePatternItemsRanged): Fix formatting.
8067         (class SlicePattern): Fix formatting.
8069 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
8071         * ast/rust-ast-dump.cc (Dump::visit): Add visitor.
8072         * ast/rust-ast-dump.h: Add visitor prototype.
8073         * ast/rust-ast-full-decls.h (class RestPattern): Add forward
8074         declaration for class RestPattern.
8075         * ast/rust-ast-visitor.h: Add visitor prototype.
8076         * ast/rust-ast.cc (RestPattern::accept_vis): Add function to
8077         accept a foreign visitor.
8078         * ast/rust-pattern.h (class RestPattern): Add class RestPattern.
8079         * checks/errors/rust-feature-gate.h: Add visitor prototype.
8080         * expand/rust-attribute-visitor.cc (AttrVisitor::visit): Add
8081         visitor implementation.
8082         * expand/rust-attribute-visitor.h: Add visitor prototype.
8083         * hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Add
8084         visitor implementation.
8085         * hir/rust-ast-lower-base.h: Add visitor prototype.
8086         * resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Add
8087         visitor implementation.
8088         * resolve/rust-ast-resolve-base.h: Add visitor prototype.
8089         * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit):
8090         Add visitor implementation.
8091         * resolve/rust-early-name-resolver.h: Add visitor prototype.
8092         * util/rust-attributes.cc (AttributeChecker::visit): Add visitor
8093         implementation.
8094         * util/rust-attributes.h: Add visitor prototype.
8096 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
8098         * typecheck/rust-tyty-cmp.h: remove
8099         * typecheck/rust-tyty.cc (set_cmp_autoderef_mode): likewise
8100         (reset_cmp_autoderef_mode): likewise
8101         * typecheck/rust-tyty.h (set_cmp_autoderef_mode): likewise
8102         (reset_cmp_autoderef_mode): likewise
8104 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
8106         * typecheck/rust-coercion.cc (TypeCoercionRules::Coerce): Add new try_flag
8107         (TypeCoercionRules::TypeCoercionRules): set new try flag
8108         (TypeCoercionRules::do_coercion): default to a final unify_and in the else case
8109         (TypeCoercionRules::coerce_unsafe_ptr): cannot coerce to a ptr from ref during autoderef
8110         (TypeCoercionRules::coerce_borrowed_pointer): respect coerceable mutability
8111         * typecheck/rust-coercion.h: update header
8112         * typecheck/rust-hir-dot-operator.cc (MethodResolver::select): use new TryCoerce interface
8113         (MethodResolver::append_adjustments): ensure we maintain adjustment mappings
8114         * typecheck/rust-hir-dot-operator.h: add new method append_adjustments
8115         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): extra logging
8117 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
8119         * typecheck/rust-unify.cc (UnifyRules::go): fix inference check
8121 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
8123         * backend/rust-compile-base.h: unconsify
8124         * backend/rust-compile.cc (HIRCompileBase::coercion_site): likewise
8125         (HIRCompileBase::coercion_site1): likewise
8126         * typecheck/rust-autoderef.cc (Adjuster::try_deref_type): likewise
8127         (Adjuster::try_raw_deref_type): likewise
8128         (Adjuster::try_unsize_type): likewise
8129         (AutoderefCycle::cycle): likewise
8130         (AutoderefCycle::try_autoderefed): likewise
8131         * typecheck/rust-autoderef.h: likewise
8132         * typecheck/rust-coercion.cc (TypeCoercionRules::select): likewise
8133         * typecheck/rust-coercion.h: likewise
8134         * typecheck/rust-hir-dot-operator.cc (MethodResolver::Probe): likewise
8135         (MethodResolver::select): likewise
8136         * typecheck/rust-hir-dot-operator.h: likewise
8138 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
8140         * typecheck/rust-unify.cc (UnifyRules::go): respect the emit_errors flag
8142 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
8144         * typecheck/rust-casts.cc (TypeCastRules::check): update to new interface
8145         * typecheck/rust-coercion.cc (TypeCoercionRules::Coerce): likewise
8146         (TypeCoercionRules::TryCoerce): likewise
8147         (TypeCoercionRules::TypeCoercionRules): likewise
8148         * typecheck/rust-coercion.h: likewise
8149         * typecheck/rust-type-util.cc (coercion_site): likewise
8151 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
8153         * typecheck/rust-unify.cc (UnifyRules::go): allow lhs infer vars
8155 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
8157         * backend/rust-compile-expr.cc (CompileExpr::resolve_method_address): update to new inteface
8158         * typecheck/rust-coercion.cc (TypeCoercionRules::coerce_unsafe_ptr): likewise
8159         (TypeCoercionRules::coerce_borrowed_pointer): likewise
8160         * typecheck/rust-hir-type-check.h: likewise
8161         * typecheck/rust-type-util.cc (unify_site_and): new interface to allow for infer and commit
8162         * typecheck/rust-type-util.h (unify_site_and): likewise
8163         * typecheck/rust-typecheck-context.cc (TypeCheckContext::clear_type): new interface
8164         * typecheck/rust-unify.cc (UnifyRules::UnifyRules): update
8165         (UnifyRules::Resolve): new optional flags for commit and infer
8166         (UnifyRules::go): likewise
8167         (UnifyRules::expect_adt): refactor to use new interface
8168         (UnifyRules::expect_reference): likewise
8169         (UnifyRules::expect_pointer): likewise
8170         (UnifyRules::expect_array): likewise
8171         (UnifyRules::expect_slice): likewise
8172         (UnifyRules::expect_fndef): likewise
8173         (UnifyRules::expect_fnptr): likewise
8174         (UnifyRules::expect_tuple): likewise
8175         (UnifyRules::expect_closure): likewise
8176         * typecheck/rust-unify.h: refactor interface
8178 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
8180         * typecheck/rust-unify.cc (UnifyRules::Resolve): refactor
8181         (UnifyRules::commit): refactor
8182         * typecheck/rust-unify.h: likewise
8184 2024-01-16  Philip Herron  <herron.philip@googlemail.com>
8186         * typecheck/rust-tyty.cc (ADTType::is_concrete):  need to consider if is a num_variant
8187         * typecheck/rust-tyty.h: refactor to cc file
8189 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
8191         * parse/rust-parse-impl.h (Parser::parse_external_type_item):
8192         Add function to parser an external type item.
8193         (Parser::parse_external_item):
8194         Add identification and parsing for external type items.
8195         * parse/rust-parse.h:
8196         Add parser_external_type_item prototype.
8198 2024-01-16  omkar-mohanty  <franzohouser@gmail.com>
8200         * expand/rust-macro-builtins.cc
8201         (MacroBuiltin::include_str_handler): eager expansion
8202         (make_macro_path_str): macto to string
8203         (parse_single_string_literal): check for eager invocation
8204         (MacroBuiltin::assert_handler): eager expansion
8205         (MacroBuiltin::include_bytes_handler): eager expansion
8206         (MacroBuiltin::include_str_handler): eager expansion
8207         (MacroBuiltin::compile_error_handler): eager expansion
8208         (MacroBuiltin::include_handler): eager expansion
8210 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
8212         * ast/rust-item.h (class Method): Add `is_default` field.
8213         (class Function): Likewise.
8214         * parse/rust-parse-impl.h (Parser::parse_item): Add nice error when
8215         parsing `default` outside of an `impl` block
8216         (Parser::parse_trait_impl_item): Allow parsing functions
8217         or methods when seeing `default`.
8219 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
8221         * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::cast_site):
8222         Remove cast_site.
8223         * typecheck/rust-hir-type-check-base.h: Remove cast_site
8224         prototype.
8225         * typecheck/rust-type-util.cc (cast_site): Add cast_site.
8226         * typecheck/rust-type-util.h (cast_site): Add cast_site
8227         prototype.
8229 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
8231         * ast/rust-item.h: Add non-const `get_visibility` to ExternalTypeItem.
8232         * ast/rust-ast-dump.cc (Dump::visit): Add implementation for ExternalTypeItem.
8233         * expand/rust-attribute-visitor.cc (AttrVisitor::visit): Likewise.
8235 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
8237         * ast/rust-item.h (class ExternalTypeItem): New class.
8238         * ast/rust-ast.cc (ExternalTypeItem::as_string): New function.
8239         (ExternalTypeItem::accept_vis): Likewise.
8240         * ast/rust-ast-full-decls.h (class ExternalTypeItem): Declare class.
8241         * ast/rust-ast-dump.cc (Dump::visit): Add base visitor for ExternalTypeItem.
8242         * ast/rust-ast-dump.h: Likewise.
8243         * ast/rust-ast-visitor.h: Likewise.
8244         * checks/errors/rust-feature-gate.h: Likewise.
8245         * expand/rust-attribute-visitor.cc (AttrVisitor::visit): Likewise.
8246         * expand/rust-attribute-visitor.h: Likewise.
8247         * hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Likewise.
8248         * hir/rust-ast-lower-base.h: Likewise.
8249         * resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Likewise.
8250         * resolve/rust-ast-resolve-base.h: Likewise.
8251         * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Likewise.
8252         * resolve/rust-early-name-resolver.h: Likewise.
8253         * util/rust-attributes.cc (AttributeChecker::visit): Likewise.
8254         * util/rust-attributes.h: Likewise.
8256 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
8258         * expand/rust-macro-invoc-lexer.cc (MacroInvocLexer::split_current_token):
8259         Add proper implementation.
8261 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
8263         * ast/rust-item.h (class Trait): Add `has_auto` field.
8264         * checks/errors/rust-feature.cc: Add handling for `feature(optin_builtin_traits)`
8265         * checks/errors/rust-feature.h: Likewise.
8266         * lex/rust-lex.cc: Fix keyword classification using hashmap.
8267         * lex/rust-token.h: Add `auto` keyword token.
8268         * parse/rust-parse-impl.h (Parser::parse_vis_item): Parse auto traits
8269         on `auto` keyword.
8271 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
8273         * typecheck/rust-hir-trait-resolve.cc (TraitItemReference::resolve_item):
8274         Remove TypeCheckBase namespace qualifier.
8275         * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::coercion_site):
8276         Remove coercion_site function.
8277         * typecheck/rust-hir-type-check-base.h: Remove coercion_site
8278         prototype.
8279         * typecheck/rust-type-util.cc (coercion_site): Add coercion_site
8280         function.
8281         * typecheck/rust-type-util.h (coercion_site): Add coercion_site
8282         prototype.
8283         * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit):
8284         Remove TypeCheckBase namespace qualifier.
8285         (TypeCheckMethodCallExpr::check): Remove TypeCheckBase namespace
8286         qualifier.
8288 2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
8290         * typecheck/rust-autoderef.cc: Remove TypeCheckBase qualifier.
8291         * typecheck/rust-hir-trait-resolve.cc: Remove TypeCheckBase
8292         qualifier.
8293         * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::unify_site):
8294         Remove unify_site.
8295         * typecheck/rust-hir-type-check-base.h: Remove unify_site
8296         header.
8297         * typecheck/rust-hir-type-check.cc (TypeResolution::Resolve):
8298         Remove TypeCheckBase qualifier.
8299         * typecheck/rust-type-util.cc (unify_site): Add unify_site
8300         function.
8301         * typecheck/rust-type-util.h (unify_site): Add unify_site
8302         prototype.
8303         * typecheck/rust-tyty-call.cc (TypeCheckMethodCallExpr::check):
8304         Remove TypeCheckBase qualifier.
8306 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
8308         * parse/rust-parse-impl.h (Parser::parse_type): Allow LEFT_SHIFT to
8309         start a type and then split it in `parse_qualified_path_type`
8311 2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>
8313         * parse/rust-parse-impl.h (Parser::parse_path_generic_args): Split leading
8314         `LEFT_SHIFT` token into two `LEFT_ANGLE` tokens when parsing generic arguments.
8315         (Parser::parse_type_path_segment): Allow `LEFT_ANGLE` as starting token for
8316         parsing generic arguments.
8318 2024-01-16  mxlol233  <mxlol233@outlook.com>
8320         * checks/errors/rust-feature-gate.cc: Add implementations
8321         for `rustc_attri`.
8322         * checks/errors/rust-feature-gate.h: Likewise.
8324 2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>
8326         * parse/rust-parse-impl.h
8327         (Parser::parse_pattern): Add.
8328         (Parser::parse_pattern_no_alt): Rename.
8329         * parse/rust-parse.h:
8330         (Parser::parse_pattern): Add.
8331         (Parser::parse_pattern_no_alt): Rename.
8333 2024-01-04  David Malcolm  <dmalcolm@redhat.com>
8335         * lang.opt.urls: New file, autogenerated by
8336         regenerate-opt-urls.py.
8338 2023-12-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
8339             Thomas Schwinge  <thomas@codesourcery.com>
8341         * config-lang.in: Add libgrust as a target module for the rust
8342         language.
8344 2023-11-19  David Malcolm  <dmalcolm@redhat.com>
8346         * rust-location.h: Include "rich-location.h".
8348 2023-10-20  Patrick Palka  <ppalka@redhat.com>
8350         PR rust/111899
8351         * backend/rust-constexpr.cc (potential_constant_expression_1):
8352         Remove NON_DEPENDENT_EXPR handling.
8353         * backend/rust-tree.cc (mark_exp_read): Likewise.
8354         (mark_use): Likewise.
8355         (lvalue_kind): Likewise.
8357 2023-09-28  Richard Sandiford  <richard.sandiford@arm.com>
8359         * backend/rust-constexpr.cc (rs_fold_indirect_ref): Remove unused
8360         variables.
8362 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
8364         * rust-session-manager.cc (Session::init): Call
8365         targetrustm.rust_os_info.
8366         * rust-target.def (rust_os_info): New hook.
8368 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
8370         * rust-lang.cc (rust_add_target_info): Remove sorry.
8371         * rust-session-manager.cc: Replace include of target.h with
8372         include of tm.h and rust-target.h.
8373         (Session::init): Call targetrustm.rust_cpu_info.
8374         * rust-target.def (rust_cpu_info): New hook.
8375         * rust-target.h (rust_add_target_info): Declare.
8377 2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>
8379         * rust-target-def.h: New file.
8380         * rust-target.def: New file.
8381         * rust-target.h: New file.
8383 2023-09-11  Parthib  <94271200+Parthib314@users.noreply.github.com>
8385         * Make-lang.in: Removed rust-gcc-diagnostics object file.
8386         * rust-diagnostics.cc (rust_be_get_quotechars): Added from original file.
8387                 (rust_be_internal_error_at): Likewise.
8388                 (rust_be_error_at): Likewise.
8389                 (class rust_error_code_rule): Likewise.
8390                 (rust_be_warning_at): Likewise.
8391                 (rust_be_fatal_error): Likewise.
8392                 (rust_be_inform): Likewise.
8393                 (rust_be_debug_p): Likewise.
8394         * rust-gcc-diagnostics.cc: Removed.
8396 2023-09-07  David Malcolm  <dmalcolm@redhat.com>
8398         * rust-diagnostics.cc (rust_error_at): New overload.
8399         * rust-diagnostics.h (struct ErrorCode): New struct.
8400         (rust_error_at): New.
8401         (rust_be_error_at): Likewise.
8402         * rust-gcc-diagnostics.cc (class rust_error_code_rule): New class.
8403         (rust_be_error_at): New function.
8404         * typecheck/rust-casts.cc (TypeCastRules::emit_cast_error): Emit E0054
8405         when reporting invalid cast error.
8407 2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
8408             Juzhe-Zhong  <juzhe.zhong@rivai.ai>
8410         * backend/rust-tree.cc (c_common_type_for_mode): Ditto.
8412 2023-06-22  Paul E. Murphy  <murphyp@linux.ibm.com>
8414         * rust-object-export.cc [TARGET_AIX]: Rename and update usage to
8415         TARGET_AIX_OS.
8417 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
8419         * parse/rust-parse-impl.h
8420         (Parser::parse_stmt): Handle unsafe expression statements.
8422 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
8424         * parse/rust-parse-impl.h
8425         (Parser::parse_expr_stmt): Remove hypothetical unsafe + expr_stmt_without_block handling.
8427 2023-04-06  M V V S Manoj Kumar  <mvvsmanojkumar@gmail.com>
8429         * ast/rust-ast-full-decls.h (class InlineAsm):Added class declaration.
8430         * ast/rust-expr.h (class InlineAsm):Added class definition.
8432 2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>
8434         * rust-diagnostics.h (struct Error): Add new Kind enum and various new
8435         static constructors to allow for hints as well.
8436         * rust-diagnostics.cc (Error::Error): Use new `kind` field properly.
8437         * checks/errors/privacy/rust-visibility-resolver.cc
8438         (VisibilityResolver::resolve_module_path): Use new Error API.
8439         * expand/rust-macro-builtins.cc (MacroBuiltin::include_handler): Likewise.
8440         * expand/rust-macro-expand.cc (parse_many): Likewise.
8441         (transcribe_type): Likewise.
8442         * parse/rust-parse-impl.h (Parser::parse_crate): Likewise.
8443         * rust-session-manager.cc (Session::handle_crate_name): Likewise.
8444         * ast/rust-ast.cc (Module::load_items): Likewise.
8446 2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>
8448         * ast/rust-ast.h: Keep location in TraitItem base class
8449         * ast/rust-item.h (class TraitItemFunc): Use base class location instead.
8450         (class TraitItemMethod): Likewise.
8451         (class TraitItemConst): Likewise.
8452         (class TraitItemType): Likewise.
8453         * ast/rust-macro.h: Likewise.
8455 2023-04-06  SainiAditya1  <Adityasaini10012001@outlook.com>
8457         * hir/tree/rust-hir-full-test.cc: Moved to...
8458         * hir/tree/rust-hir.cc: ...here.
8459         * Make-lang.in: Rename rust-hir-full-test.
8461 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
8463         * ast/rust-ast-dump.cc
8464         (Dump::visit): Add AltPattern visitor.
8465         * ast/rust-ast-dump.h:
8466         (Dump::visit): Add AltPattern visitor.
8467         * ast/rust-ast-full-decls.h
8468         (class AltPattern): Add declaration.
8469         * ast/rust-ast-visitor.h:
8470         (ASTVisitor::visit): Add AltPattern visitor.
8471         * ast/rust-ast.cc
8472         (AltPattern::as_string): Add definition.
8473         (AltPattern::accept_vis): Add definition.
8474         * ast/rust-pattern.h
8475         (class AltPattern): Add declaration.
8476         * checks/errors/rust-feature-gate.h:
8477         (FeatureGate::visit) Add AltPattern visitor
8478         * expand/rust-attribute-visitor.cc
8479         (AttrVisitor::visit): Add AltPattern visitor.
8480         * expand/rust-attribute-visitor.h:
8481         (AttrVisitor::visit): Add AltPattern visitor.
8482         * hir/rust-ast-lower-base.cc
8483         (ASTLoweringBase::visit): Add AltPattern visitor.
8484         * hir/rust-ast-lower-base.h:
8485         (ASTLoweringBase::visit): Add AltPattern visitor.
8486         * resolve/rust-ast-resolve-base.cc
8487         (ResolverBase::visit): Add AltPattern visitor.
8488         * resolve/rust-ast-resolve-base.h:
8489         (ResolverBase::visit): Add AltPattern visitor.
8490         * resolve/rust-early-name-resolver.cc
8491         (EarlyNameResolver::visit): Add AltPattern visitor.
8492         * resolve/rust-early-name-resolver.h:
8493         (EarlyNameResolver::visit): Add AltPattern visitor.
8494         * util/rust-attributes.cc
8495         (AttributeChecker::visit): Add AltPattern visitor.
8496         * util/rust-attributes.h:
8497         (AttributeChecker::visit): Add AltPattern visitor.
8499 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
8501         * ast/rust-pattern.h: Fix formatting.
8503 2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>
8505         * expand/rust-macro-builtins.cc (MacroBuiltin::include_handler): Do not
8506         return nullptr token in expansion of `include!()`
8508 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
8510         * checks/errors/rust-feature-gate.h: Add trailing newline before EOF.
8512 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
8514         * typecheck/rust-hir-trait-reference.cc (TraitReference::clear_associated_types): make const
8515         (TraitReference::clear_associated_type_projections): new interface
8516         * typecheck/rust-hir-trait-reference.h:
8517         * typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait): refactor
8518         (TraitItemReference::associated_type_reset): reset projections
8519         * typecheck/rust-hir-type-bounds.h:
8520         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): fix bounds
8521         * typecheck/rust-tyty-bounds.cc (TypeBoundsProbe::TypeBoundsProbe): refactor into cc file
8522         (TypeBoundsProbe::Probe): refactor
8523         (TypeBoundsProbe::is_bound_satisfied_for_type): likewise
8524         (TypeBoundsProbe::assemble_sized_builtin): add builtin for Sized
8525         (TypeCheckBase::get_predicate_from_bound): refactor
8526         (TypeBoundPredicate::lookup_associated_type): refactor
8527         * typecheck/rust-tyty-subst.cc (SubstitutionRef::lookup_associated_impl)
8528         (SubstitutionRef::prepare_higher_ranked_bounds): new interface to clear hanging bounds
8529         (SubstitutionRef::monomorphize): refactor
8530         * typecheck/rust-tyty-subst.h:
8531         * typecheck/rust-tyty.cc (BaseType::get_locus): helper
8532         (BaseType::satisfies_bound): ensure bounds are satisfied and assoicated types
8533         (ParamType::ParamType): new field in constructor
8534         (ParamType::clone): update clone
8535         (ParamType::set_implicit_self_trait): new interface
8536         (ParamType::is_implicit_self_trait): likewise
8537         * typecheck/rust-tyty.h: cleanup
8538         * util/rust-hir-map.cc (Mappings::Mappings): builtin marker
8539         (Mappings::~Mappings): delete marker
8540         (Mappings::lookup_builtin_marker): lookup
8541         * util/rust-hir-map.h: update header
8543 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
8545         * hir/tree/rust-hir-item.h: implement virtual function
8546         * hir/tree/rust-hir.h: add virtual function
8548 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
8550         * Make-lang.in: add new dependancy
8551         * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::query_type): refactor
8552         * typecheck/rust-hir-type-check-base.h: refactor
8553         * typecheck/rust-hir-type-check.h (RUST_HIR_TYPE_CHECK): refactor
8554         * typecheck/rust-type-util.cc: New file.
8555         * typecheck/rust-type-util.h: New file.
8557 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
8559         * expand/rust-macro-builtins.cc
8560         (MacroBuiltin::include_str_handler): Add check for valid UTF-8.
8562 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
8564         * parse/rust-parse-impl.h
8565         (Parser::parse_grouped_or_tuple_pattern): Add support for empty tuple patterns.
8567 2023-04-06  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
8569         * lex/rust-lex.h: Add file type check.
8571 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
8573         * backend/rust-compile-pattern.cc
8574         (CompilePatternLet::visit): Simplify WildcardPattern compilation for let statements.
8575         * backend/rust-compile-var-decl.h:
8576         (CompileVarDecl::visit): Remove variable declaration for WildcardPattern.
8577         * resolve/rust-ast-resolve-pattern.h:
8578         (PatternDeclaration::visit): Remove name resolution for WildcardPattern.
8580 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
8582         * typecheck/rust-tyty-call.cc
8583         (TypeCheckCallExpr::visit): Add variadic argument type checking.
8584         (TypeCheckCallExpr::visit): Fix comment spelling ("varadic").
8586 2023-04-06  mxlol233  <mxlol233@outlook.com>
8588         * checks/errors/rust-feature-gate.cc: Add implementation for
8589         `void FeatureGate::visit (AST::ExternBlock &block)`. Add `valid_feature`
8590         construction process in `FeatureGate::check`.
8591         * checks/errors/rust-feature-gate.h: Add declaration for
8592         `void FeatureGate::visit (AST::ExternBlock &block)`. Add private
8593         variable `valid_feature`.
8594         * checks/errors/rust-feature.h: Change `issue` to `m_issue`.
8596 2023-04-06  Thomas Schwinge  <thomas@codesourcery.com>
8598         * ast/rust-ast-fragment.cc: Update copyright years.
8599         * ast/rust-ast-fragment.h: Likewise.
8600         * ast/rust-macro.cc: Likewise.
8601         * checks/errors/rust-feature-gate.cc: Likewise.
8602         * checks/errors/rust-feature-gate.h: Likewise.
8603         * checks/errors/rust-feature.cc: Likewise.
8604         * checks/errors/rust-feature.h: Likewise.
8605         * hir/rust-ast-lower-expr.cc: Likewise.
8606         * hir/rust-ast-lower-type.cc: Likewise.
8607         * resolve/rust-early-name-resolver.cc: Likewise.
8608         * resolve/rust-early-name-resolver.h: Likewise.
8609         * rust-gcc.h: Likewise.
8610         * typecheck/rust-hir-path-probe.cc: Likewise.
8611         * typecheck/rust-hir-trait-reference.cc: Likewise.
8612         * typecheck/rust-tyty-bounds.h: Likewise.
8613         * typecheck/rust-tyty-subst.cc: Likewise.
8614         * typecheck/rust-tyty-subst.h: Likewise.
8615         * typecheck/rust-tyty-util.cc: Likewise.
8616         * typecheck/rust-tyty-util.h: Likewise.
8617         * typecheck/rust-unify.cc: Likewise.
8618         * typecheck/rust-unify.h: Likewise.
8619         * util/rust-inline-visitor.h: Likewise.
8621 2023-04-06  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
8623         * rust-session-manager.cc (Session::compile_crate): Update the
8624         environment variable name.
8626 2023-04-06  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
8628         * Make-lang.in: Add `rust-hir-trait-reference.o`.
8629         * typecheck/rust-hir-trait-reference.h: Remove multiple function body.
8630         * typecheck/rust-hir-trait-reference.cc: Add multiple function body.
8632 2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>
8634         * expand/rust-macro-expand.cc (MacroExpander::expand_eager_invocations):
8635         Add documentation explaining the algorithm.
8637 2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>
8639         * ast/rust-macro.cc: New file.
8640         * Make-lang.in: Add `rust-macro.o` object
8641         * ast/rust-ast-fragment.cc (Fragment::Fragment): Change API around
8642         the construction of AST fragments.
8643         (Fragment::operator=): Correct `Fragment::operator=` to take into
8644         account the fragment tokens.
8645         (Fragment::create_error): Use new constructor.
8646         (Fragment::complete): Remove in favor of new constructor.
8647         (Fragment::unexpanded): Remove as that Fragment type is no longer used
8648         or possible.
8649         (Fragment::get_tokens): Add helper to access a fragment's tokens.
8650         * ast/rust-ast-fragment.h (enum class): Remove `FragmentKind::Unused`
8651         * ast/rust-ast.cc (MacroInvocation::as_string): Display
8652         builtin macro invocations properly.
8653         * ast/rust-ast.h: Fix `DelimTokenTree` class copy constructors and
8654         handling of its token vector.
8655         * ast/rust-macro.h (class MacroMatcher): Format.
8656         (class MetaItemSeq): Likewise.
8657         (builtin_macro_from_string): Get a `BuiltinMacroKind` from a given
8658         string, i.e the name of the macro (`assert!`, `cfg!` and so on).
8659         * expand/rust-attribute-visitor.cc (AttrVisitor::visit): Do not expand
8660         macros recursively anymore.
8661         (AttrVisitor::maybe_expand_expr): Likewise.
8662         (AttrVisitor::maybe_expand_type): Likewise.
8663         * expand/rust-attribute-visitor.h: Likewise, and remove
8664         `expand_macro_fragment_recursively` function.
8665         * expand/rust-macro-builtins.cc (make_token): Add shorthand for
8666         returning `std::unique_ptr<AST::Token>`s.
8667         (make_macro_invocation): Add shorthand for returning fragments
8668         containing builtin macro invocations.
8669         (try_expand_macro_expression): Do not expand macros recursively.
8670         (try_expand_single_string_literal): Likewise.
8671         (try_expand_many_expr): Likewise.
8672         (parse_single_string_literal): Error out more appropriately.
8673         (MacroBuiltin::compile_error_handler): Add explanation for eager
8674         invocation
8675         (MacroBuiltin::file_handler): Return the proper tokens associated with
8676         macro invocation, and builtin macros in the case of necessary eager
8677         expansion.
8678         (MacroBuiltin::column_handler): Likewise.
8679         (MacroBuiltin::include_bytes_handler): Likewise.
8680         (MacroBuiltin::include_str_handler): Likewise.
8681         (MacroBuiltin::concat_handler): Likewise.
8682         (MacroBuiltin::env_handler): Likewise.
8683         (MacroBuiltin::cfg_handler): Likewise.
8684         (MacroBuiltin::include_handler): Likewise.
8685         (MacroBuiltin::line_handler): Likewise.
8686         * expand/rust-macro-expand.cc (MacroExpander::expand_eager_invocations):
8687         Add function to expand eager invocations *once* in the fixed point
8688         pipeline.
8689         (MacroExpander::expand_invoc): Call into `expand_eager_invocations` for
8690         builtin macro invocations.
8691         (MacroExpander::expand_crate): Use new `AttrVisitor` API.
8692         (parse_many): Return tokens in `AST::Fragment`.
8693         (transcribe_expression): Likewise.
8694         (transcribe_type): Likewise.
8695         * expand/rust-macro-expand.h (struct MacroExpander): Add `has_changed`
8696         flag for fixed point checking.
8697         * resolve/rust-early-name-resolver.cc (EarlyNameResolver::EarlyNameResolver):
8698         Keep track of the current macro scope.
8699         (EarlyNameResolver::go): Use `scoped` API.
8700         (EarlyNameResolver::visit): Likewise.
8701         * resolve/rust-early-name-resolver.h: Add `scoped` API.
8702         * rust-session-manager.cc (Session::expansion): Perform macro expansion
8703         in a fixed-point fashion.
8705 2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>
8707         * expand/rust-macro-invoc-lexer.cc (MacroInvocLexer::get_token_slice):
8708         Add API to retrieve token slices when lexing macro expansions.
8709         * expand/rust-macro-invoc-lexer.h: Declare `get_token_slice`.
8711 2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>
8713         * parse/rust-parse.h: Move `parse_macro_invocation` to public API.
8715 2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>
8717         * ast/rust-item.h (class BlockExpr): Remove forward declaration of
8718         class `BlockExpr`.
8720 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
8722         * hir/tree/rust-hir-pattern.h
8723         (TuplePatternItemsRanged::get_lower_patterns): Add method.
8724         (TuplePatternItemsRanged::get_upper_patterns): Add method.
8725         * backend/rust-compile-pattern.cc
8726         (CompilePatternLet::visit): Implement TuplePattern visitor.
8727         * backend/rust-compile-pattern.h
8728         (CompilePatternLet::visit): Move TuplePattern visitor out of header file.
8730 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
8732         * typecheck/rust-unify.cc (UnifyRules::go): ensure the bounds are checked
8734 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
8736         * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): remove error message
8738 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
8740         * typecheck/rust-hir-trait-reference.h: add const infterface
8741         * typecheck/rust-tyty-subst.cc (SubstitutionParamMapping::get_generic_param): make const
8742         (SubstitutionRef::monomorphize): fix issue
8743         * typecheck/rust-tyty-subst.h: constify interface
8745 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
8747         * util/rust-lang-item.h:
8749 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
8751         * typecheck/rust-tyty-subst.cc (SubstitutionArg::is_conrete): fix check
8753 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
8755         * Make-lang.in: update names
8756         * backend/rust-compile-expr.cc (CompileExpr::resolve_method_address):
8757         update to use new interface
8758         * typecheck/rust-coercion.cc (TypeCoercionRules::coerce_borrowed_pointer): likewise
8759         * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::unify_site): likewise
8760         * typecheck/rust-tyty.cc (BaseType::destructure): likewise
8761         (InferType::unify): removed old unify interface
8762         (ErrorType::unify): likewise
8763         (ADTType::unify): likewise
8764         (TupleType::unify): likewise
8765         (FnType::unify): likewise
8766         (FnPtr::unify): likewise
8767         (ClosureType::unify): likewise
8768         (ArrayType::unify): likewise
8769         (SliceType::unify): likewise
8770         (BoolType::unify): likewise
8771         (IntType::unify): likewise
8772         (UintType::unify): likewise
8773         (FloatType::unify): likewise
8774         (USizeType::unify): likewise
8775         (ISizeType::unify): likewise
8776         (CharType::unify): likewise
8777         (ReferenceType::unify): likewise
8778         (PointerType::unify): likewise
8779         (ParamType::unify): likewise
8780         (StrType::unify): likewise
8781         (NeverType::unify): likewise
8782         (PlaceholderType::unify): likewise
8783         (ProjectionType::unify): likewise
8784         (DynamicObjectType::unify): likewise
8785         * typecheck/rust-tyty.h: update destructure interface
8786         * typecheck/rust-tyty-rules.h: Removed.
8787         * typecheck/rust-unify.cc: New file.
8788         * typecheck/rust-unify.h: New file.
8790 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
8792         * typecheck/rust-hir-trait-reference.h: change interface to return self
8793         * typecheck/rust-hir-trait-resolve.cc: likewise
8794         * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments): likewise
8795         * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): remove monomorphization hack
8797 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
8799         * typecheck/rust-tyty-subst.cc: add missing callback
8801 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
8803         * typecheck/rust-tyty-subst.cc: update copy constructors
8805 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
8807         * typecheck/rust-tyty-bounds.cc: refactor to take a reference
8808         * typecheck/rust-tyty-subst.cc: likewise
8809         (SubstitutionRef::get_substitution_arguments): likewise
8810         (SubstitutionRef::infer_substitions): likewise
8811         * typecheck/rust-tyty-subst.h: likewise
8812         * typecheck/rust-tyty.cc (ADTType::handle_substitions): likewise
8813         (TupleType::handle_substitions): likewise
8814         (FnType::handle_substitions): likewise
8815         (ClosureType::handle_substitions): likewise
8816         (ArrayType::handle_substitions): likewise
8817         (SliceType::handle_substitions): likewise
8818         (ReferenceType::handle_substitions): likewise
8819         (PointerType::handle_substitions): likewise
8820         (ParamType::handle_substitions): likewise
8821         (ProjectionType::handle_substitions): likewise
8822         * typecheck/rust-tyty.h: likewise
8824 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
8826         * typecheck/rust-hir-trait-ref.h: Moved to...
8827         * typecheck/rust-hir-trait-reference.h: ...here.
8828         * typecheck/rust-hir-trait-resolve.cc: refactor
8829         * typecheck/rust-hir-trait-resolve.h (RUST_HIR_TRAIT_RESOLVE_H): likewise
8830         * typecheck/rust-hir-type-check.h: likewise
8831         * typecheck/rust-tyty.cc: likewise
8833 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
8835         * Make-lang.in: update name
8836         * typecheck/rust-tyctx.cc: Moved to...
8837         * typecheck/rust-typecheck-context.cc: ...here.
8839 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
8841         * typecheck/rust-hir-type-check.h: refactor
8842         * typecheck/rust-tyctx.cc (TypeCheckContext::iterate): refactor
8843         (TypeCheckContext::have_loop_context): likewise
8844         (TypeCheckContext::push_new_loop_context): likewise
8845         (TypeCheckContext::push_new_while_loop_context): likewise
8846         (TypeCheckContext::peek_loop_context): likewise
8847         (TypeCheckContext::pop_loop_context): likewise
8848         (TypeCheckContext::swap_head_loop_context): likewise
8849         (TypeCheckContext::insert_trait_reference): likewise
8850         (TypeCheckContext::lookup_trait_reference): likewise
8851         (TypeCheckContext::insert_receiver): likewise
8852         (TypeCheckContext::lookup_receiver): likewise
8853         (TypeCheckContext::insert_associated_type_mapping): likewise
8854         (TypeCheckContext::clear_associated_type_mapping): likewise
8855         (TypeCheckContext::lookup_associated_type_mapping): likewise
8856         (TypeCheckContext::insert_variant_definition): likewise
8857         (TypeCheckContext::lookup_variant_definition): likewise
8858         (TypeCheckContext::insert_operator_overload): likewise
8859         (TypeCheckContext::lookup_operator_overload): likewise
8860         (TypeCheckContext::insert_unconstrained_check_marker): likewise
8861         (TypeCheckContext::have_checked_for_unconstrained): likewise
8862         (TypeCheckContext::insert_resolved_predicate): likewise
8863         (TypeCheckContext::lookup_predicate): likewise
8864         (TypeCheckContext::insert_query): likewise
8865         (TypeCheckContext::query_completed): likewise
8866         (TypeCheckContext::query_in_progress): likewise
8867         (TypeCheckContext::insert_trait_query): likewise
8868         (TypeCheckContext::trait_query_completed): likewise
8869         (TypeCheckContext::trait_query_in_progress): likewise
8870         (TypeCheckContextItem::Item::Item): likewise
8871         (TypeCheckContextItem::TypeCheckContextItem): likewise
8872         (TypeCheckContextItem::get_item): likewise
8873         (TypeCheckContextItem::get_impl_item): likewise
8874         (TypeCheckContextItem::get_trait_item): likewise
8875         (TypeCheckContextItem::get_type): likewise
8876         * typecheck/rust-tyty.cc (StructFieldType::StructFieldType): likewise
8877         (StructFieldType::get_ref): likewise
8878         (StructFieldType::get_name): likewise
8879         (StructFieldType::get_field_type): likewise
8880         (StructFieldType::set_field_type): likewise
8881         (StructFieldType::is_concrete): likewise
8882         (StructFieldType::debug): likewise
8883         (StructFieldType::get_locus): likewise
8884         (VariantDef::variant_type_string): likewise
8885         (VariantDef::VariantDef): likewise
8886         (VariantDef::operator=): likewise
8887         (VariantDef::get_error_node): likewise
8888         (VariantDef::is_error): likewise
8889         (VariantDef::get_id): likewise
8890         (VariantDef::get_defid): likewise
8891         (VariantDef::get_variant_type): likewise
8892         (VariantDef::is_data_variant): likewise
8893         (VariantDef::is_dataless_variant): likewise
8894         (VariantDef::get_identifier): likewise
8895         (VariantDef::num_fields): likewise
8896         (VariantDef::get_field_at_index): likewise
8897         (VariantDef::get_fields): likewise
8898         (VariantDef::lookup_field): likewise
8899         (VariantDef::get_discriminant): likewise
8900         (VariantDef::as_string): likewise
8901         (VariantDef::is_equal): likewise
8902         (VariantDef::clone): likewise
8903         (VariantDef::monomorphized_clone): likewise
8904         (VariantDef::get_ident): likewise
8905         (TupleType::TupleType): likewise
8906         (TupleType::get_unit_type): likewise
8907         (TupleType::is_unit): likewise
8908         (TupleType::num_fields): likewise
8909         (TupleType::is_concrete): likewise
8910         (TupleType::get_fields): likewise
8911         (BoolType::BoolType): likewise
8912         (BoolType::get_name): likewise
8913         (BoolType::is_concrete): likewise
8914         (IntType::IntType): likewise
8915         (IntType::get_name): likewise
8916         (IntType::get_int_kind): likewise
8917         (IntType::is_concrete): likewise
8918         (UintType::UintType): likewise
8919         (UintType::get_name): likewise
8920         (UintType::get_uint_kind): likewise
8921         (UintType::is_concrete): likewise
8922         (FloatType::FloatType): likewise
8923         (FloatType::get_name): likewise
8924         (FloatType::get_float_kind): likewise
8925         (FloatType::is_concrete): likewise
8926         (USizeType::USizeType): likewise
8927         (USizeType::get_name): likewise
8928         (USizeType::is_concrete): likewise
8929         (ISizeType::ISizeType): likewise
8930         (ISizeType::get_name): likewise
8931         (ISizeType::is_concrete): likewise
8932         (CharType::CharType): likewise
8933         (CharType::is_concrete): likewise
8934         (CharType::get_name): likewise
8935         (ReferenceType::ReferenceType): likewise
8936         (ReferenceType::is_concrete): likewise
8937         (ReferenceType::mutability): likewise
8938         (ReferenceType::is_mutable): likewise
8939         (ReferenceType::is_dyn_object): likewise
8940         (ReferenceType::is_dyn_slice_type): likewise
8941         (ReferenceType::is_dyn_str_type): likewise
8942         (PointerType::PointerType): likewise
8943         (PointerType::is_concrete): likewise
8944         (PointerType::mutability): likewise
8945         (PointerType::is_mutable): likewise
8946         (PointerType::is_const): likewise
8947         (PointerType::is_dyn_object): likewise
8948         (PointerType::is_dyn_slice_type): likewise
8949         (PointerType::is_dyn_str_type): likewise
8950         (ParamType::ParamType): likewise
8951         (ParamType::get_generic_param): likewise
8952         (ParamType::can_resolve): likewise
8953         (ParamType::is_concrete): likewise
8954         (StrType::StrType): likewise
8955         (StrType::get_name): likewise
8956         (StrType::is_concrete): likewise
8957         (NeverType::NeverType): likewise
8958         (NeverType::get_name): likewise
8959         (NeverType::is_unit): likewise
8960         (NeverType::is_concrete): likewise
8961         (PlaceholderType::PlaceholderType): likewise
8962         (PlaceholderType::get_name): likewise
8963         (PlaceholderType::is_unit): likewise
8964         (PlaceholderType::get_symbol): likewise
8965         (PlaceholderType::is_concrete): likewise
8966         (ProjectionType::is_unit): likewise
8967         (ProjectionType::get_name): likewise
8968         (ProjectionType::needs_generic_substitutions): likewise
8969         (ProjectionType::supports_substitutions): likewise
8970         (ProjectionType::has_subsititions_defined): likewise
8971         (ProjectionType::get): likewise
8972         (ProjectionType::is_concrete): likewise
8973         (DynamicObjectType::is_concrete): likewise
8974         * typecheck/rust-tyty.h: likewise
8976 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
8978         * typecheck/rust-hir-path-probe.cc (PathProbeCandidate::Candidate::Candidate): refactor
8979         (PathProbeCandidate::PathProbeCandidate): likewise
8980         (PathProbeCandidate::as_string): likewise
8981         (PathProbeCandidate::is_enum_candidate): likewise
8982         (PathProbeCandidate::is_impl_candidate): likewise
8983         (PathProbeCandidate::is_trait_candidate): likewise
8984         (PathProbeCandidate::is_full_trait_item_candidate): likewise
8985         (PathProbeCandidate::get_error): likewise
8986         (PathProbeCandidate::is_error): likewise
8987         (PathProbeCandidate::get_defid): likewise
8988         (PathProbeCandidate::operator<): likewise
8989         * typecheck/rust-hir-path-probe.h (struct PathProbeCandidate): likewise
8991 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
8993         * typecheck/rust-hir-path-probe.cc (PathProbeType::PathProbeType): refactor
8994         (PathProbeType::Probe): likewise
8995         (PathProbeType::visit): likewise
8996         (PathProbeType::process_enum_item_for_candiates): likewise
8997         (PathProbeType::process_impl_items_for_candidates): likewise
8998         (PathProbeType::is_reciever_generic): likewise
8999         (PathProbeImplTrait::PathProbeImplTrait): likewise
9000         (PathProbeImplTrait::Probe): likewise
9001         (PathProbeImplTrait::process_trait_impl_items_for_candidates): likewise
9002         * typecheck/rust-hir-path-probe.h (struct PathProbeCandidate): likewise
9003         * typecheck/rust-hir-trait-resolve.cc
9004         (PathProbeImplTrait::process_trait_impl_items_for_candidates): likewise
9006 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
9008         * typecheck/rust-tyty.cc (BaseType::BaseType): refactor
9009         (BaseType::~BaseType): likewise
9010         (BaseType::get_ref): likewise
9011         (BaseType::set_ref): likewise
9012         (BaseType::get_ty_ref): likewise
9013         (BaseType::set_ty_ref): likewise
9014         (BaseType::is_equal): likewise
9015         (BaseType::is_unit): likewise
9016         (BaseType::get_kind): likewise
9017         (BaseType::get_combined_refs): likewise
9018         (BaseType::append_reference): likewise
9019         (BaseType::supports_substitutions): likewise
9020         (BaseType::has_subsititions_defined): likewise
9021         (BaseType::can_substitute): likewise
9022         (BaseType::needs_generic_substitutions): likewise
9023         (BaseType::contains_type_parameters): likewise
9024         (BaseType::get_ident): likewise
9025         (BaseType::get_locus): likewise
9026         (InferType::InferType): likewise
9027         (InferType::get_infer_kind): likewise
9028         (InferType::get_name): likewise
9029         (InferType::is_concrete): likewise
9030         (ErrorType::ErrorType): likewise
9031         (ErrorType::is_unit): likewise
9032         (ErrorType::is_concrete): likewise
9033         (ErrorType::get_name): likewise
9034         (ErrorType::monomorphized_clone): likewise
9035         * typecheck/rust-tyty.h (class SubstitutionArgumentMappings): likewise
9037 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
9039         * typecheck/rust-substitution-mapper.cc (SubstMapper::SubstMapper): refactor
9040         (SubstMapper::Resolve): likewise
9041         (SubstMapper::InferSubst): likewise
9042         (SubstMapper::have_generic_args): likewise
9043         (SubstMapper::visit): likewise
9044         (SubstMapperInternal::visit): likewise
9045         (SubstMapperFromExisting::SubstMapperFromExisting): likewise
9046         (SubstMapperFromExisting::Resolve): likewise
9047         (SubstMapperFromExisting::visit): likewise
9048         (GetUsedSubstArgs::GetUsedSubstArgs): likewise
9049         (GetUsedSubstArgs::From): likewise
9050         (GetUsedSubstArgs::visit): likewise
9051         * typecheck/rust-substitution-mapper.h: refactor
9052         * typecheck/rust-tyty-subst.cc (SubstitutionParamMapping::get_generic_param): likewise
9054 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
9056         * Make-lang.in: update the makefile
9057         * typecheck/rust-tyty.cc (SubstitutionParamMapping::need_substitution): likewise
9058         (SubstitutionParamMapping::override_context): likewise
9059         (SubstitutionRef::get_mappings_from_generic_args): likewise
9060         (SubstitutionRef::infer_substitions): likewise
9061         (SubstitutionRef::are_mappings_bound): likewise
9062         (SubstitutionRef::solve_missing_mappings_from_this): likewise
9063         (SubstitutionRef::monomorphize): likewise
9064         * typecheck/rust-tyty.h (class SubstitutionParamMapping): likewise
9065         (class SubstitutionArg): likewise
9066         (std::function<void): likewise
9067         (class SubstitutionArgumentMappings): likewise
9068         (class SubstitutionRef): likewise
9069         * typecheck/rust-tyty-subst.cc: New file.
9070         * typecheck/rust-tyty-subst.h: New file.
9072 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
9074         * Make-lang.in: update makefile
9075         * typecheck/rust-tyty.cc (TyVar::TyVar): move to new file
9076         (TyVar::get_tyty): likewise
9077         (TyVar::get_implicit_infer_var): likewise
9078         (TyVar::subst_covariant_var): likewise
9079         (TyVar::clone): likewise
9080         (TyVar::monomorphized_clone): likewise
9081         (TyWithLocation::TyWithLocation): likewise
9082         * typecheck/rust-tyty.h (class BaseType): cleanup
9083         (class TypeBoundPredicate): move to its own file
9084         (class TypeBoundPredicateItem): likewise
9085         (class TypeBoundsMappings): likewise
9086         (class TyVar): likewise
9087         (class TyWithLocation): likewise
9088         * typecheck/rust-tyty-bounds.h: New file.
9089         * typecheck/rust-tyty-util.cc: New file.
9090         * typecheck/rust-tyty-util.h: New file.
9092 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
9094         * typecheck/rust-tyty-bounds.cc (TypeBoundPredicateItem::error): refactor
9095         (TypeBoundPredicateItem::is_error): likewise
9096         (TypeBoundPredicateItem::get_parent): likewise
9097         * typecheck/rust-tyty.h: Move the implementation for the above
9099 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
9101         * backend/rust-compile-expr.cc (CompileExpr::visit): Removed copy-pasted comment.
9103 2023-04-06  mxlol233  <mxlol233@outlook.com>
9105         * Make-lang.in: Add object files: `rust-feature.o` and `rust-feature-gate.o`
9106         * checks/errors/rust-feature-gate.cc: New file.
9107         * checks/errors/rust-feature-gate.h: New file.
9108         * checks/errors/rust-feature.cc: New file.
9109         * checks/errors/rust-feature.h: New file.
9110         * rust-session-manager.cc: Add FeatureGate check.
9112 2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>
9114         * parse/rust-parse-impl.h (Parser::parse_closure_expr): Advance tokens
9115         properly when parsing closure param list.
9117 2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>
9119         * parse/rust-parse-impl.h (Parser::parse_generic_arg): Handle type
9120         paths and nested generics properly.
9122 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
9124         * ast/rust-pattern.h:
9125         (ReferencePattern::is_double_reference): Add method.
9126         (ReferencePattern::get_is_mut): Add method.
9127         * hir/rust-ast-lower-pattern.cc
9128         (ASTLoweringPattern::visit): Add ReferencePattern visitor.
9129         * hir/rust-ast-lower-pattern.h:
9130         (ASTLoweringPattern::visit): Add ReferencePattern visitor.
9132 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
9134         * hir/tree/rust-hir-pattern.h
9135         (class ReferencePattern): Remove has_two_amps field.
9136         * hir/tree/rust-hir-full-test.cc
9137         (ReferencePattern::as_string): Remove usage of ReferencePattern::has_two_amps.
9139 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
9141         * backend/rust-compile-fnparam.h
9142         (CompileFnParam::visit): Remove HIR::GroupedPattern visitor.
9143         * backend/rust-compile-pattern.cc
9144         (CompilePatternCaseLabelExpr::visit): Remove HIR::GroupedPattern visitor.
9145         (CompilePatternBindings::visit): Remove HIR::GroupedPattern visitor.
9146         * backend/rust-compile-pattern.h
9147         (CompilePatternCaseLabelExpr::visit): Remove HIR::GroupedPattern visitor.
9148         (CompilePatternBindings::visit): Remove HIR::GroupedPattern visitor.
9149         (CompilePatternLet::visit): Remove HIR::GroupedPattern visitor.
9150         * backend/rust-compile-resolve-path.h
9151         (ResolvePathRef::visit): Remove HIR::GroupedPattern visitor.
9152         * backend/rust-compile-var-decl.h
9153         (CompileVarDecl::visit): Remove HIR::GroupedPattern visitor.
9154         * checks/errors/rust-const-checker.cc
9155         (ConstChecker::visit): Remove HIR::GroupedPattern visitor.
9156         * checks/errors/rust-const-checker.h
9157         (ConstChecker::visit): Remove HIR::GroupedPattern visitor.
9158         * checks/errors/rust-unsafe-checker.cc
9159         (UnsafeChecker::visit): Remove HIR::GroupedPattern visitor.
9160         * checks/errors/rust-unsafe-checker.h
9161         (UnsafeChecker::visit): Remove HIR::GroupedPattern visitor.
9162         * hir/rust-hir-dump.cc (Dump::visit): Remove HIR::GroupedPattern visitor.
9163         * hir/rust-hir-dump.h (Dump::visit): Remove HIR::GroupedPattern visitor.
9164         * hir/tree/rust-hir-full-decls.h (class GroupedPattern): Remove class.
9165         * hir/tree/rust-hir-full-test.cc (GroupedPattern::accept_vis): Remove method.
9166         * hir/tree/rust-hir-pattern.h (class GroupedPattern): Remove class.
9167         * hir/tree/rust-hir-visitor.h
9168         (HIRFullVisitor::visit): Remove HIR::GroupedPattern visitor.
9169         (HIRFullVisitorBase::visit): Remove HIR::GroupedPattern visitor.
9170         (HIRPatternVisitor::visit): Remove HIR::GroupedPattern visitor.
9171         * typecheck/rust-hir-type-check-pattern.cc
9172         (TypeCheckPattern::visit): Remove HIR::GroupedPattern visitor.
9173         * typecheck/rust-hir-type-check-pattern.h
9174         (TypeCheckPattern::visit): Remove HIR::GroupedPattern visitor.
9176 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
9178         * hir/rust-ast-lower-pattern.cc
9179         (ASTLoweringPattern::visit): Lower AST::GroupedPattern to its inner pattern.
9181 2023-04-06  MAHAD  <mahadtxt@gmail.com>
9183         * rust-buffered-queue.h: Moved to...
9184         * util/rust-buffered-queue.h: ...here.
9186 2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>
9188         * parse/rust-parse-impl.h (Parser::parse_type): Handle double ampersan
9189         properly
9190         (Parser::parse_reference_type): Call into `parse_reference_type_inner`
9191         and wrap double reference types in another `AST::ReferenceType` node
9192         (Parser::parse_reference_type_inner): Add parsing implementation
9193         which does not care about the leading token (& or  &&)
9194         (Parser::parse_type_no_bounds): Handle double ampersand properly
9195         * parse/rust-parse.h: Declare `parse_reference_type_inner`
9197 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
9199         * backend/rust-compile-pattern.cc (CompilePatternLet::visit): New function.
9200         * backend/rust-compile-stmt.cc (CompileStmt::visit): Likewise.
9201         * backend/rust-compile-pattern.h (class CompilePatternLet): New visitor.
9203 2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>
9205         * ast/rust-macro.h (enum class): Add `BuiltinMacro` enum class.
9206         * expand/rust-attribute-visitor.cc (AttrVisitor::visit): Mention
9207         switching on `macro.kind` once builtin macro invocations are properly
9208         handled.
9209         * parse/rust-parse-impl.h (Parser::parse_macro_invocation): Switch to new MacroInvocation
9210         API.
9211         (Parser::parse_type): Likewise.
9212         (Parser::parse_type_no_bounds): Likewise.
9214 2023-04-06  Abdul Rafey  <abdulrafeyq@gmail.com>
9216         * ast/rust-ast-dump.cc (Dump::visit): removed extra indentations in trait ast dump
9218 2023-04-06  Abdul Rafey  <abdulrafeyq@gmail.com>
9220         * parse/rust-parse-impl.h (Parser::null_denotation): Add proper error
9221         when seeing wildcard var on right side of assignment.
9223 2023-04-06  Abdul Rafey  <abdulrafeyq@gmail.com>
9225         * ast/rust-ast.cc: Fix include list.
9226         * ast/rust-expr.h: Likewise.
9227         * hir/tree/rust-hir-expr.h: Likewise.
9228         * rust-backend.h: Likewise.
9229         * util/rust-lang-item.h: Likewise.
9230         * operator.h: Moved to...
9231         * util/rust-operators.h: ...here.
9233 2023-04-06  Parthib  <parthibdutta02@gmail.com>
9235         * Make-lang.in: Rename object file.
9236         * ast/rust-ast-full-test.cc: Moved to...
9237         * ast/rust-ast.cc: ...here.
9239 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
9241         * backend/rust-compile-pattern.cc (CompilePatternCaseLabelExpr::visit): Add proper
9242         visitor.
9243         (CompilePatternBindings::visit): Likewise.
9244         * backend/rust-compile-pattern.h: Declare them.
9246 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
9248         * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Add proper
9249         visitor.
9251 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
9253         * hir/tree/rust-hir-pattern.h: Add get_item method.
9255 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
9257         * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit): Add proper visitor.
9258         * hir/rust-ast-lower-pattern.h: Declare it.
9260 2023-04-06  Lyra  <teromene@teromene.fr>
9262         * expand/rust-macro-expand.cc (transcribe_expression): Fix ICE when expanding
9263         empty macros.
9265 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
9267         * resolve/rust-ast-resolve-pattern.h: Support GroupedPattern properly.
9269 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
9271         * backend/rust-compile-base.cc (HIRCompileBase::compile_locals_for_block):
9272         Allow patterns to declare zero or multiple variables.
9273         * backend/rust-compile-var-decl.h: Change function declaration.
9275 2023-04-06  mxlol233  <mxlol233@outlook.com>
9277         * lex/rust-lex.cc (Lexer::build_token): Make location enclose entire token.
9278         (Lexer::parse_byte_char): Likewise.
9279         (Lexer::parse_byte_string): Likewise.
9280         (Lexer::parse_raw_byte_string): Likewise.
9281         (Lexer::parse_raw_identifier): Likewise.
9282         (Lexer::parse_string): Likewise.
9283         (Lexer::parse_identifier_or_keyword): Likewise.
9284         (Lexer::parse_raw_string): Likewise.
9285         (Lexer::parse_non_decimal_int_literal): Likewise.
9286         (Lexer::parse_decimal_int_or_float): Likewise.
9287         (Lexer::parse_char_or_lifetime): Likewise.
9289 2023-04-06  mxlol233  <mxlol233@outlook.com>
9291         * ast/rust-ast.h: Add get_locus method.
9292         * ast/rust-expr.h: Likewise.
9293         * ast/rust-macro.h: Likewise.
9295 2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>
9297         * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Cleanup LetStmt
9298         type checking.
9300 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
9302         * hir/tree/rust-hir-path.h: Add const get_identifier and get_type method.
9303         * typecheck/rust-hir-path-probe.h: Use new SubstitutionArgumentMappings constructor.
9304         * typecheck/rust-hir-trait-resolve.cc: Likewise.
9305         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Likewise.
9306         * typecheck/rust-tyty-bounds.cc (TypeCheckBase::get_predicate_from_bound):
9307         Do not assert failure on size mismatch anymore.
9308         (TypeBoundPredicate::TypeBoundPredicate): Use new SubstitutionArgumentMappings constructor.
9309         (TypeBoundPredicate::operator=): Likewise.
9310         (TypeBoundPredicate::apply_generic_arguments): Likewise.
9311         (TypeBoundPredicateItem::get_tyty_for_receiver): Likewise.
9312         (TypeBoundPredicate::get_num_associated_bindings): Likewise.
9313         (TypeBoundPredicate::lookup_associated_type): Fix implementation for new system.
9314         (TypeBoundPredicate::get_associated_type_items): Likewise.
9315         * typecheck/rust-tyty.cc (SubstitutionRef::get_mappings_from_generic_args): Add new
9316         behavior.
9317         (SubstitutionRef::infer_substitions): Use new constructor and add comment.
9318         (SubstitutionRef::solve_missing_mappings_from_this): Use new constructor.
9319         * typecheck/rust-tyty.h: Define new constructors.
9321 2023-04-06  Philip Herron  <herron.philip@googlemail.com>
9323         * resolve/rust-ast-resolve-type.cc (ResolveGenericArgs::go): Add name resolution to
9324         Trait items.
9326 2023-04-06  Raiki Tamura  <tamaron1203@gmail.com>
9328         * ast/rust-ast-full-decls.h (class MacroItem): Remove forward declaration.
9329         * ast/rust-ast-full-test.cc (MacroRulesDefinition):
9330         Rework MacroRulesDefinition class
9331         * ast/rust-ast.h (class MacroItem): Remove abstract class.
9332         * ast/rust-item.h (class MacroItem): Remove forward declaration.
9333         * ast/rust-macro.h (class MacroItem): Likewise.
9334         (class MacroRulesDefinition): Add MacroKind enum.
9335         (class MacroInvocation): Fix inheritance.
9336         * lex/rust-token.h: Token "macro" is now used.
9337         * parse/rust-parse-impl.h (Parser::parse_item): Add handling for MACRO.
9338         (Parser::parse_vis_item): Call into parse_decl_macro_def.
9339         (Parser::parse_macro_item): Delete function.
9340         (Parser::parse_macro_rules_def): Return MBE macros only.
9341         (Parser::parse_decl_macro_def): New function.
9342         (Parser::parse_stmt): Handle MACRO token.
9343         (Parser::parse_stmt_or_expr_without_block): Call into parse_macro_rules_def.
9344         * parse/rust-parse.h: Declare new function.
9346 2023-04-06  mxlol233  <mxlol233@outlook.com>
9348         * parse/rust-parse-impl.h (Parser::parse_generic_arg): Add proper bound parsing.
9350 2023-04-06  Dave  <dme2223@gmail.com>
9352         * checks/errors/rust-const-checker.cc (ConstChecker::visit): Use StackedContext
9353         class.
9355 2023-04-06  Prajwal S N  <prajwalnadig21@gmail.com>
9357         * checks/errors/rust-unsafe-checker.cc (check_target_attr): New function.
9358         (UnsafeChecker::check_function_attr): Call into `check_target_attr`.
9359         (UnsafeChecker::visit): Check for target_feature attributes.
9360         * checks/errors/rust-unsafe-checker.h: Add declarations.
9361         * util/rust-attributes.cc: Add attribute.
9363 2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>
9365         * rust-session-manager.cc (Session::compile_crate): Fix typo.
9367 2023-02-22  Thomas Schwinge  <thomas@codesourcery.com>
9369         * rust-lang.cc (grs_langhook_type_for_mode): Also consider all
9370         'int_n' modes/types.
9372 2023-02-22  Thomas Schwinge  <thomas@codesourcery.com>
9374         * rust-lang.cc (grs_langhook_init): Do not initialize
9375         void_list_node.
9377 2023-02-22  Thomas Schwinge  <thomas@codesourcery.com>
9379         * config-lang.in (target_libs): Remove.
9381 2023-02-21  Raiki Tamura  <tamaron1203@gmail.com>
9383         * backend/rust-builtins.cc (BuiltinsContext::setup_math_fns): New functions.
9385 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
9387         * backend/rust-constexpr.cc (get_nth_callarg): Remove function.
9388         (rs_bind_parameters_in_call): Use CALL_EXPR_ARG instead.
9389         (potential_constant_expression_1): Likewise.
9391 2023-02-21  Thomas Schwinge  <thomas@codesourcery.com>
9393         * lang.opt: Fix ordering of file.
9395 2023-02-21  Philip Herron  <herron.philip@googlemail.com>
9397         * backend/rust-compile-type.cc (TyTyResolveCompile::visit): Remove unused parameters.
9398         * backend/rust-constexpr.cc (constant_value_1): Likewise.
9399         (fold_non_dependent_init): Likewise.
9400         * backend/rust-tree.cc (publicly_uniquely_derived_p): Likewise.
9401         (instantiation_dependent_expression_p): Likewise.
9402         (type_has_nontrivial_copy_init): Likewise.
9403         (is_normal_capture_proxy): Likewise.
9404         (resolve_nondeduced_context): Likewise.
9405         (undeduced_auto_decl): Likewise.
9406         (require_deduced_type): Likewise.
9407         * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): Likewise.
9408         * checks/errors/privacy/rust-reachability.cc (ReachabilityVisitor::visit): Likewise.
9409         * checks/errors/privacy/rust-visibility-resolver.cc (VisibilityResolver::visit): Likewise.
9410         * checks/errors/rust-const-checker.cc (ConstChecker::visit): Likewise.
9411         * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise.
9412         * checks/lints/rust-lint-marklive.cc (MarkLive::go): Likewise.
9413         * checks/lints/rust-lint-unused-var.cc (unused_var_walk_fn): Likewise.
9414         * expand/rust-macro-builtins.cc (try_expand_single_string_literal): Likewise.
9415         (try_expand_many_expr): Likewise.
9416         (parse_single_string_literal): Likewise.
9417         (MacroBuiltin::assert_handler): Likewise.
9418         (MacroBuiltin::file_handler): Likewise.
9419         (MacroBuiltin::column_handler): Likewise.
9420         (MacroBuiltin::concat_handler): Likewise.
9421         (MacroBuiltin::env_handler): Likewise.
9422         (MacroBuiltin::line_handler): Likewise.
9423         * hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Likewise.
9424         (ASTLoweringBase::handle_doc_item_attribute): Likewise.
9425         * hir/rust-hir-dump.cc (Dump::visit): Likewise.
9426         * hir/tree/rust-hir-full-test.cc (ConstGenericParam::accept_vis): Likewise.
9427         * lex/rust-lex.cc (Lexer::parse_utf8_escape): Likewise.
9428         (Lexer::parse_string): Likewise.
9429         (Lexer::parse_char_or_lifetime): Likewise.
9430         * lex/rust-lex.h: Likewise.
9431         * metadata/rust-export-metadata.cc: Likewise.
9432         * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Likewise.
9433         * resolve/rust-ast-resolve-type.cc (ResolveType::visit): Likewise.
9434         (ResolveTypeToCanonicalPath::visit): Likewise.
9435         * resolve/rust-ast-verify-assignee.h: Likewise.
9436         * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Likewise.
9437         * typecheck/rust-hir-type-check-expr.h: Likewise.
9438         * typecheck/rust-hir-type-check-item.h: Likewise.
9439         * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Likewise.
9440         * typecheck/rust-tyty-rules.h: Likewise.
9441         * util/rust-attributes.cc (AttributeChecker::visit): Likewise.
9443 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9445         * hir/tree/rust-hir-expr.h: Add const `get_method_name`.
9446         * hir/tree/rust-hir-full-decls.h (struct GenericArgs): Move from `struct`...
9447         (class GenericArgs): ...to `class`.
9448         * hir/tree/rust-hir-path.h (struct GenericArgs): Likewise.
9449         (class GenericArgs): Clear `type_args` in copy constructor.
9450         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Reorder
9451         debug print.
9452         * typecheck/rust-tyty.h: Add default constructors for `SubstitutionArgumentMappings`.
9454 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9456         * backend/rust-compile-context.cc (Context::push_closure_context): New function.
9457         (Context::pop_closure_context): Likewise.
9458         (Context::insert_closure_binding): Likewise.
9459         (Context::lookup_closure_binding): Likewise.
9460         * backend/rust-compile-context.h: Declare new functions and closure mappings.
9461         * backend/rust-compile-expr.cc (CompileExpr::visit): Visit captures properly.
9462         (CompileExpr::generate_closure_function): Compile captures properly.
9463         * backend/rust-compile-resolve-path.cc (ResolvePathRef::resolve): Check for
9464         closure bindings.
9465         * backend/rust-compile-type.cc (TyTyResolveCompile::visit): Compile capture list's
9466         types as well.
9468 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9470         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Pass captures
9471         properly to `TyTy::ClosureType` constructor.
9472         * typecheck/rust-tyty.cc (ClosureType::as_string): Fix string representation.
9473         (ClosureType::clone): Pass `captures` argument.
9474         * typecheck/rust-tyty.h: Add `captures` field.
9476 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9478         * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Use proper closure
9479         contexts.
9480         * resolve/rust-name-resolver.cc (Scope::lookup_decl_type): New function.
9481         (Scope::lookup_rib_for_decl): Likewise.
9482         (Resolver::insert_resolved_name): Insert captured items.
9483         (Resolver::push_closure_context): New function.
9484         (Resolver::pop_closure_context): Likewise.
9485         (Resolver::insert_captured_item): Likewise.
9486         (Resolver::decl_needs_capture): Likewise.
9487         (Resolver::get_captures): Likewise.
9488         * resolve/rust-name-resolver.h: Declare new functions.
9490 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9492         * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Add Rib argument.
9493         (ResolveExpr::resolve_closure_param): Likewise.
9494         * resolve/rust-ast-resolve-implitem.h: Likewise.
9495         * resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit): Likewise.
9496         (ResolveItem::visit): Likewise.
9497         * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::visit): Likewise.
9498         * resolve/rust-ast-resolve-pattern.h: Likewise.
9499         * resolve/rust-ast-resolve-stmt.h: Likewise.
9500         * resolve/rust-ast-resolve-toplevel.h: Likewise.
9501         * resolve/rust-ast-resolve-type.h: Likewise.
9502         * resolve/rust-name-resolver.cc (Rib::lookup_decl_type): Likewise.
9503         (Scope::insert): Likewise.
9504         (Resolver::insert_builtin_types): Likewise.
9505         * resolve/rust-name-resolver.h: Likewise.
9507 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9509         * resolve/rust-name-resolver.cc (MKBUILTIN_TYPE): Remove macro.
9510         (Rib::Rib): Remove `mappings` field.
9511         (Resolver::generate_builtins): Use `setup_builtin` instead of macro.
9512         (Resolver::setup_builtin): New function.
9513         * resolve/rust-name-resolver.h: Declare `setup_builtin`, add FIXME
9514         comment.
9516 2023-02-21  Raiki Tamura  <tamaron1203@gmail.com>
9518         * lex/rust-lex.cc (Lexer::Lexer): Add `dump_lex` boolean flag.
9519         (Lexer::skip_token): Dump tokens if flag is enabled.
9520         (Lexer::dump_and_skip): New function.
9521         * lex/rust-lex.h: Include optional.h and declare functions.
9522         * parse/rust-parse-impl.h (Parser::debug_dump_lex_output): Remove old
9523         unused function.
9524         * parse/rust-parse.h: Likewise.
9525         * rust-session-manager.cc (Session::compile_crate): Pass lexer dump
9526         option to lexer.
9527         (Session::dump_lex): New function.
9528         * util/rust-optional.h: Add missing constructor.
9530 2023-02-21  Dave  <dme2223@gmail.com>
9532         * ast/rust-item.h: Remoe default location for Visibility class.
9533         * parse/rust-parse-impl.h (Parser::parse_visibility): Pass proper location
9534         when instantiating visibilities.
9536 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9538         * ast/rust-ast-dump.cc (Dump::visit): Fix dumping of fn params.
9540 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9542         * ast/rust-ast-dump.cc (Dump::visit): Remove extraneous string when
9543         dumping statements.
9545 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9547         * ast/rust-ast-dump.cc: Remove unused include.
9549 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9551         * ast/rust-ast-dump.cc (Dump::visit): Add missing visitor.
9552         * ast/rust-ast-dump.h: Likewise.
9554 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9556         * ast/rust-ast-dump.cc (Dump::visit): Add missing visitor.
9558 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9560         * ast/rust-ast-dump.cc (Dump::visit): Add missing visitor.
9562 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9564         * ast/rust-ast-dump.cc (Dump::visit): Add missing visitor.
9566 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9568         * ast/rust-ast-dump.cc (Dump::visit): Add missing visitor.
9570 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9572         * ast/rust-ast-dump.cc (Dump::visit): Add missing visitor.
9574 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9576         * ast/rust-ast-dump.cc (Dump::visit): Add missing visitor.
9578 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9580         * ast/rust-ast-dump.cc (Dump::visit): Add missing visitor.
9581         * ast/rust-ast-dump.h: Add missing getter declaration.
9582         * ast/rust-ast-full-test.cc (BareFunctionType::as_string): Fix bare function
9583         string representation.
9584         * ast/rust-type.h (class BareFunctionType): Declare said getter.
9586 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9588         * ast/rust-ast-dump.cc (Dump::visit): Add missing visitor.
9590 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9592         * ast/rust-ast-dump.cc (Dump::visit): Add missing tuple type visitor.
9594 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9596         * ast/rust-ast-dump.cc (Dump::visit): Add missing never type visitor.
9598 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9600         * ast/rust-ast-dump.cc (Dump::visit): Add missing RawPointer visitor.
9602 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9604         * ast/rust-ast-dump.cc (Dump::visit): Add missing array visitor
9606 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9608         * ast/rust-ast-dump.cc (Dump::visit): Add missing slice visitor.
9610 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9612         * ast/rust-ast-dump.cc (Dump::visit): Add missing visitors.
9613         * ast/rust-ast-dump.h: Likewise.
9614         * ast/rust-ast.h: Add `get_lifetime_bounds` method.
9615         * ast/rust-item.h: Add missing getter for lifetimes.
9616         * ast/rust-type.h: Likewise.
9618 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9620         * ast/rust-ast-dump.cc (Dump::visit): Add new reference visitor wrapper.
9621         * ast/rust-ast-dump.h: Declare it.
9622         * ast/rust-item.h: Add mutable visibility getters.
9624 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
9626         * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): Fix extra call
9627         to `delete`.
9629 2023-02-21  Dave  <dme2223@gmail.com>
9631         * ast/rust-item.h: Add location member.
9632         * hir/rust-ast-lower.cc (translate_visibility): Pass location argument.
9633         * hir/tree/rust-hir-item.h: Fix constructor to accept Location argument.
9635 2023-02-21  Raiki Tamura  <tamaron1203@gmail.com>
9637         * util/rust-lang-item.h: Add handling for `phantom_data` lang item.
9639 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9641         * ast/rust-ast-dump.cc (Dump::visit): Add handling for unit structures.
9643 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9645         * ast/rust-ast-dump.h: Fix documentation.
9647 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9649         * ast/rust-ast-dump.cc (Dump::go): Use new API.
9650         (Dump::format_function_param): Refactor.
9651         (Dump::visit_items_joined_by_separator): New function.
9652         (Dump::emit_attrib): Refactor.
9653         (Dump::visit_as_line): New function.
9654         (Dump::visit_items_as_lines): Likewise.
9655         (Dump::visit_items_as_block): Likewise.
9656         (Dump::visit): Use new API.
9657         (Dump::emit_visibility): Likewise.
9658         (Dump::emit_indented_string): Likewise.
9659         (Dump::emit_generic_params): Likewise.
9660         (Dump::format_tuple_field): Likewise.
9661         (Dump::format_struct_field): Likewise.
9662         (Dump::format_function_common): Likewise.
9663         (Dump::visit_function_common): Likewise.
9664         * ast/rust-ast-dump.h: Declare new functions and add documentation.
9666 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9668         * ast/rust-ast-dump.cc (Dump::visit): Add new visit function for overloading.
9669         * ast/rust-ast-dump.h: Add documentation for layer.
9671 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
9673         * backend/rust-builtins.cc (BuiltinsContext::setup_atomic_fns): Declare atomic
9674         load intrinsics.
9675         * backend/rust-compile-intrinsic.cc (atomic_load_handler_inner): New handler.
9676         (atomic_load_handler): Likewise.
9677         (unchecked_op_handler): Remove `static` function qualifier.
9678         (build_atomic_builtin_name): Handle load intrinsics.
9679         (atomic_store_handler_inner): New handler.
9681 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
9683         * backend/rust-compile-intrinsic.cc (check_for_basic_integer_type): New function.
9684         (build_atomic_builtin_name): Use HIR Type instead of `tree`.
9685         (atomic_store_handler_inner): Cleanup error handling.
9686         (unchecked_op_inner): Likewise.
9688 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
9690         * backend/rust-compile-intrinsic.cc (wrapping_op_handler): Refactor to return
9691         an `std::function`.
9692         (wrapping_op_handler_inner): Rename.
9693         (wrapping_add_handler): Remove function.
9694         (wrapping_sub_handler): Likewise.
9695         (wrapping_mul_handler): Likewise.
9697 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
9699         * backend/rust-compile-intrinsic.cc (is_basic_integer_type): New function.
9700         (unchecked_op_inner): New handler.
9701         (unchecked_op_handler): New handler.
9703 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
9705         * backend/rust-builtins.cc (BuiltinsContext::setup_atomic_fns): New function.
9706         (BuiltinsContext::setup): Call `setup_atomic_fns`.
9707         * backend/rust-builtins.h: Declare `setup_atomic_fns`.
9708         * backend/rust-compile-intrinsic.cc (atomic_store_handler_inner): New function.
9709         (atomic_store_handler): New handler.
9710         (make_unsigned_long_tree): Add helper around making unsigned long trees.
9711         (prefetch_data_handler): Use `make_unsigned_long_tree`.
9712         (build_atomic_builtin_name): New function.
9714 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
9716         * backend/rust-constexpr.cc (build_anon_member_initialization): Workaround uninitialized
9717         values.
9718         (build_data_member_initialization): Likewise.
9720 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
9722         * backend/rust-compile-intrinsic.cc (sorry_handler): New intrinsic handler.
9724 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
9726         * expand/rust-macro-builtins.cc (MacroBuiltin::assert): Rename to...
9727         (MacroBuiltin::assert_handler): ..this.
9728         (MacroBuiltin::file): Rename to...
9729         (MacroBuiltin::file_handler): ..this.
9730         (MacroBuiltin::column): Rename to...
9731         (MacroBuiltin::column_handler): ..this.
9732         (MacroBuiltin::include_bytes): Rename to...
9733         (MacroBuiltin::include_bytes_handler): ..this.
9734         (MacroBuiltin::include_str): Rename to...
9735         (MacroBuiltin::include_str_handler): ..this.
9736         (MacroBuiltin::compile_error): Rename to...
9737         (MacroBuiltin::compile_error_handler): ..this.
9738         (MacroBuiltin::concat): Rename to...
9739         (MacroBuiltin::concat_handler): ..this.
9740         (MacroBuiltin::env): Rename to...
9741         (MacroBuiltin::env_handler): ..this.
9742         (MacroBuiltin::cfg): Rename to...
9743         (MacroBuiltin::cfg_handler): ..this.
9744         (MacroBuiltin::include): Rename to...
9745         (MacroBuiltin::include_handler): ..this.
9746         (MacroBuiltin::line): Rename to...
9747         (MacroBuiltin::line_handler): ..this.
9748         * expand/rust-macro-builtins.h: Rename all handlers.
9749         * util/rust-hir-map.cc (Mappings::insert_macro_def): Use new handler
9750         names.
9752 2023-02-21  Simon Cook  <simon.cook@embecosm.com>
9754         * util/rust-inline-visitor.h: Remove some offending system includes.
9756 2023-02-21  YizhePKU  <yizhe@pku.edu.cn>
9758         * util/rust-inline-visitor.h: New file.
9760 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9762         * backend/rust-compile-expr.cc (CompileExpr::visit): Refactor checking of closures.
9763         (CompileExpr::generate_possible_fn_trait_call): New function.
9764         * backend/rust-compile-expr.h: Declare `generate_possible_fn_trait_call`.
9766 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9768         * typecheck/rust-tyty-bounds.cc (TypeCheckBase::get_predicate_from_bound): Add missing
9769         implementation.
9771 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9773         * Make-lang.in: Compile rust-ast-lower-type.cc.
9774         * ast/rust-path.h: Add `get_locus` method to `TypePathFunction`.
9775         * hir/rust-ast-lower-base.cc (ASTLowerTypePath::visit): Move implementation to
9776         rust-ast-lower-type.cc.
9777         (ASTLowerQualifiedPathInType::visit): Likewise.
9778         (ASTLoweringType::visit): Likewise.
9779         * hir/rust-ast-lower-type.h: Move implementations to source file.
9780         * hir/tree/rust-hir-path.h: Likewise.
9781         * hir/rust-ast-lower-type.cc: New file.
9783 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9785         * resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): Add missing handling of
9786         function case.
9788 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9790         * backend/rust-compile-context.h: Add new functions: `insert_closure_decl` and
9791         `lookup_closure_decl`.
9792         * backend/rust-compile-expr.cc (CompileExpr::visit): Start compiling Closures properly.
9793         (CompileExpr::generate_closure_function): New function.
9794         (CompileExpr::generate_closure_fntype): Likewise.
9795         * backend/rust-compile-expr.h: Declare `generate_closure_function` and
9796         `generate_closure_fntype`.
9797         * backend/rust-compile-type.cc (TyTyResolveCompile::visit): Visit closure types properly.
9798         * backend/rust-mangle.cc (legacy_mangle_name): Add support for closures.
9799         * backend/rust-tree.h (RS_CLOSURE_FLAG): Add new tree macro.
9800         (RS_CLOSURE_TYPE_P): And checking for it on tree nodes.
9801         * typecheck/rust-tyty.cc (ClosureType::is_equal): Add implementation.
9803 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9805         * hir/tree/rust-hir-expr.h: Add `get_params` method.
9806         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Typecheck closure nodes.
9807         (TypeCheckExpr::resolve_fn_trait_call): New function.
9808         * typecheck/rust-hir-type-check-expr.h: Declare `resolve_fn_trait_call` and
9809         `resolve_possible_fn_trait_call_method_name`.
9810         * typecheck/rust-hir-type-check.h: Declare `get_context_type`.
9811         * typecheck/rust-tyctx.cc (TypeCheckContextItem::get_context_type): New function.
9812         * typecheck/rust-tyty-cmp.h: Visit closures properly.
9813         * typecheck/rust-tyty-rules.h: Likewise.
9814         * typecheck/rust-tyty.cc (BaseType::bounds_compatible): Add commented out assertin.
9815         (ClosureType::as_string): Implement it.
9816         (ClosureType::clone): Fix closure cloning.
9817         (ClosureType::setup_fn_once_output): New function.
9818         * typecheck/rust-tyty.h: Improve `ClosureType` class and declare `setup_fn_once_output`.
9820 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9822         * checks/errors/rust-const-checker.cc (ConstChecker::visit): Visit closures properly.
9823         * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise.
9824         * checks/lints/rust-lint-marklive.h: Likewise.
9826 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9828         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Simplify method
9829         call type checking      by removing visitor and instead using one static cast. Use the
9830         new interface.
9831         * typecheck/rust-tyty-call.cc (TypeCheckMethodCallExpr::visit): Likewise.
9832         (TypeCheckMethodCallExpr::go): Likewise.
9833         (TypeCheckMethodCallExpr::check): Likewise.
9834         * typecheck/rust-tyty-call.h (class TypeCheckMethodCallExpr): Likewise.
9835         (class Argument): Likewise.
9837 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9839         * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Visit closure properly when
9840         name resolving.
9841         (ResolveExpr::resolve_closure_param): Implement closure name resolving.
9842         * resolve/rust-ast-resolve-expr.h: Declare visitors for closure types.
9844 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9846         * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::ASTLoweringPattern):
9847         Improve formatting.
9848         (ASTLoweringPattern::translate): Likewise.
9849         * hir/rust-ast-lower-pattern.h: Likewise.
9850         * resolve/rust-ast-resolve-expr.h: Likewise.
9852 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9854         * Make-lang.in: Add new object file for expression lowering.
9855         * ast/rust-expr.h: Move implementation of expr lowering to source file.
9856         * backend/rust-compile-block.h: Likewise.
9857         * backend/rust-compile-expr.cc (CompileExpr::visit): Likewise.
9858         * backend/rust-compile-expr.h: Likewise.
9859         * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): Likewise.
9860         * checks/errors/privacy/rust-privacy-reporter.h: Likewise.
9861         * checks/errors/rust-const-checker.cc (ConstChecker::visit): Likewise.
9862         * checks/errors/rust-const-checker.h: Likewise.
9863         * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise.
9864         * checks/errors/rust-unsafe-checker.h: Likewise.
9865         * hir/rust-ast-lower-base.h: Likewise.
9866         * hir/rust-ast-lower-expr.h (RUST_AST_LOWER_EXPR): Likewise.
9867         * hir/rust-ast-lower.cc (ASTLoweringBase::lower_closure_param): Likewise.
9868         * hir/rust-hir-dump.cc (Dump::visit): Likewise.
9869         * hir/rust-hir-dump.h: Likewise.
9870         * hir/tree/rust-hir-expr.h (class ClosureExpr): Likewise.
9871         (class ClosureExprInner): Likewise.
9872         (class ClosureExprInnerTyped): Likewise.
9873         * hir/tree/rust-hir-full-decls.h (class ClosureExprInner): Likewise.
9874         (class ClosureExprInnerTyped): Likewise.
9875         * hir/tree/rust-hir-full-test.cc (ClosureExprInnerTyped::as_string): Likewise.
9876         (ClosureExprInner::as_string): Likewise.
9877         (ClosureExprInner::accept_vis): Likewise.
9878         (ClosureExpr::accept_vis): Likewise.
9879         (ClosureExprInnerTyped::accept_vis): Likewise.
9880         * hir/tree/rust-hir-visitor.h: Likewise.
9881         * hir/tree/rust-hir.h (class Expr): Likewise.
9882         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Likewise.
9883         * typecheck/rust-hir-type-check-expr.h: Likewise.
9884         * hir/rust-ast-lower-expr.cc: New file.
9886 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9888         * util/rust-lang-item.h: Add handling for `fn_once_output`.
9890 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
9892         * ast/rust-ast-fragment.cc (Fragment::Fragment): Add better APIs.
9893         (Fragment::complete): New function.
9894         (Fragment::unexpanded): New function.
9895         * ast/rust-ast-fragment.h: Declare new APIs and add documentation.
9896         * expand/rust-attribute-visitor.h: Use new Fragment API.
9897         * expand/rust-macro-builtins.cc (MacroBuiltin::file): Likewise.
9898         (MacroBuiltin::column): Likewise.
9899         (MacroBuiltin::include_bytes): Likewise.
9900         (MacroBuiltin::include_str): Likewise.
9901         (MacroBuiltin::concat): Likewise.
9902         (MacroBuiltin::env): Likewise.
9903         (MacroBuiltin::cfg): Likewise.
9904         (MacroBuiltin::include): Likewise.
9905         (MacroBuiltin::line): Likewise.
9906         * expand/rust-macro-expand.cc (parse_many): Likewise.
9907         (transcribe_expression): Likewise.
9908         (transcribe_type): Likewise.
9909         * expand/rust-macro-expand.h (struct MacroExpander): Likewise.
9911 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
9913         * ast/rust-ast.h (class ASTFragment): Remove old ASTFragment class.
9914         * ast/rust-macro.h (class MacroRulesDefinition): Use new Fragment API.
9915         * expand/rust-attribute-visitor.h: Likewise.
9916         * expand/rust-macro-builtins.cc (macro_end_token): Likewise.
9917         (MacroBuiltin::assert): Likewise.
9918         (MacroBuiltin::file): Likewise.
9919         (MacroBuiltin::column): Likewise.
9920         (MacroBuiltin::include_bytes): Likewise.
9921         (MacroBuiltin::include_str): Likewise.
9922         (MacroBuiltin::compile_error): Likewise.
9923         (MacroBuiltin::concat): Likewise.
9924         (MacroBuiltin::env): Likewise.
9925         (MacroBuiltin::cfg): Likewise.
9926         (MacroBuiltin::include): Likewise.
9927         (MacroBuiltin::line): Likewise.
9928         * expand/rust-macro-builtins.h: Likewise.
9929         * expand/rust-macro-expand.cc (MacroExpander::expand_decl_macro): Likewise.
9930         (MacroExpander::expand_invoc): Likewise.
9931         (MacroExpander::match_repetition): Likewise.
9932         (parse_many): Likewise.
9933         (transcribe_many_items): Likewise.
9934         (transcribe_many_ext): Likewise.
9935         (transcribe_many_trait_items): Likewise.
9936         (transcribe_many_impl_items): Likewise.
9937         (transcribe_many_trait_impl_items): Likewise.
9938         (transcribe_expression): Likewise.
9939         (transcribe_type): Likewise.
9940         (transcribe_on_delimiter): Likewise.
9941         (tokens_to_str): Likewise.
9942         * expand/rust-macro-expand.h (struct MacroExpander): Likewise.
9943         * util/rust-hir-map.cc (Mappings::insert_macro_def): Likewise.
9945 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
9947         * Make-lang.in: Add `rust-ast-fragment.o` object file.
9948         * ast/rust-ast-fragment.cc: New file.
9949         * ast/rust-ast-fragment.h: New file.
9951 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9953         * typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait): Check if a
9954         trait query is currently in progress.
9955         * typecheck/rust-hir-type-check.h (class TraitQueryGuard): Add helpers around
9956         checking for trait queries and inserting them.
9958 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
9960         * ast/rust-ast-dump.cc (Dump::visit): Add missing visitors for macro definition dumping.
9961         (get_delimiters): New function.
9962         * ast/rust-ast-dump.h: Declare `get_delimiters` and add documentation.
9963         * ast/rust-macro.h: Add `get_token_tree` method.
9965 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9967         * ast/rust-ast-dump.cc (Dump::visit): Properly handle unloaded modules.
9969 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
9971         * ast/rust-ast-dump.cc (Dump::visit): Fix formatting when dumping modules.
9973 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
9975         * ast/rust-ast-dump.cc (Dump::visit): Dump items in modules properly.
9977 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
9979         * ast/rust-ast-dump.cc: Emit visibility when dumping items.
9981 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
9983         * hir/rust-ast-lower-base.h (class ItemWrapper): New class.
9984         * hir/rust-ast-lower-base.cc (ASTLoweringBase::handle_outer_attributes): Use
9985         `ItemWrapper` class.
9986         (ASTLoweringBase::handle_doc_item_attribute): Likewise.
9987         (ASTLoweringBase::handle_lang_item_attribute): Likewise.
9988         * hir/rust-ast-lower-implitem.h: Check outer attributes on items.
9989         * hir/tree/rust-hir-item.h: Add `get_trait_locus` methods.
9990         * hir/tree/rust-hir.h: Likewise.
9991         * util/rust-hir-map.h: Add defId mappings and associated functions.
9992         * util/rust-hir-map.cc (Mappings::insert_defid_mapping): Implement insertion to said
9993         mappings.
9994         (Mappings::lookup_trait_item_defid): And looking up said mappings.
9996 2023-02-21  Jakub Dupak  <dev@jakubdupak.com>
9998         * ast/rust-ast-dump.cc (Dump::visit): Add code for dumping type aliases.
10000 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
10002         * typecheck/rust-hir-trait-resolve.cc (TraitResolver::TraitResolver): Do not nullptr init
10003         `resolved_trait_reference` anymore.
10004         (TraitResolver::resolve_path): Simplify function and rename to...
10005         (TraitResolver::resolve_path_to_trait): ...this.
10006         (TraitResolver::lookup_path): Use new interface.
10007         * typecheck/rust-hir-trait-resolve.h (class TraitResolver): Do not inherit `HIRFullVisitor`
10008         class anymore.
10010 2023-02-21  David Faust  <david.faust@oracle.com>
10012         * ast/rust-ast-dump.cc (Dump::visit): Add dump for RangeExprs.
10014 2023-02-21  David Faust  <david.faust@oracle.com>
10016         * ast/rust-ast-dump.cc (Dump::visit): Add dump for, BorrowExpr, DereferenceExpr,
10017         ErrorPropagationExpr, NegationExpr, TypeCastExpr and GroupedExpr.
10019 2023-02-21  David Faust  <david.faust@oracle.com>
10021         * ast/rust-ast-dump.cc (Dump::visit): Add dump code for ArrayExpr.
10023 2023-02-21  David Faust  <david.faust@oracle.com>
10025         * ast/rust-ast-dump.cc (Dump::visit): Add dumps for ComparisonExpr and
10026         LazyBooleanExpr.
10028 2023-02-21  David Faust  <david.faust@oracle.com>
10030         * ast/rust-ast-dump.cc (Dump::visit): Fix IfExpr formatting.
10032 2023-02-21  David Faust  <david.faust@oracle.com>
10034         * ast/rust-ast-dump.cc (Dump::visit): Fix block formatting.
10036 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
10038         * typecheck/rust-autoderef.cc: Add support for multiple resolution candidates.
10039         * typecheck/rust-hir-dot-operator.cc (MethodResolver::MethodResolver): Edit
10040         `try_result` field and change constructor.
10041         (MethodResolver::Probe): Return set of candidates instead of singular candidate.
10042         (MethodResolver::select): Add better implementation to account for multiple
10043         candidates.
10044         * typecheck/rust-hir-dot-operator.h (struct MethodCandidate): Overload comparison
10045         operator in order to store them in `std::set`.
10046         * typecheck/rust-hir-inherent-impl-overlap.h: Do not fail assertion on missing type.
10047         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Adapt code to use
10048         multiple candidates.
10049         * typecheck/rust-tyty.cc (set_cmp_autoderef_mode): Add code to handle automatic
10050         derefs properly.
10051         (reset_cmp_autoderef_mode): Add helper function to reset said mode.
10052         * typecheck/rust-tyty.h (set_cmp_autoderef_mode): Declare function.
10053         (reset_cmp_autoderef_mode): Likewise.
10054         * typecheck/rust-tyty-cmp.h: Add handling of `autoderef_cmp_flag`
10056 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
10058         * util/rust-abi.cc (get_abi_from_string): Add missing "rust-call"
10059         possibility for ABI variant.
10061 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
10063         * util/rust-lang-item.h: Add `fn_once` lang item.
10065 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
10067         * backend/rust-compile.cc: Add note about missing support for super
10068         traits.
10069         * typecheck/rust-tyty.cc (BaseType::satisfies_bound): New function.
10070         (BaseType::bounds_compatible): New function.
10071         (DynamicObjectType::get_object_items): New function.
10072         * typecheck/rust-hir-trait-ref.h: Use new API to perform type resolution
10073         on dyn objects.
10075 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
10077         * Make-lang.in: Compile early name resolver.
10078         * expand/rust-attribute-visitor.cc (AttrVisitor::visit): Move macro
10079         name resolution.
10080         * expand/rust-macro-builtins.cc (try_expand_macro_expression): Run ENR
10081         when recursively expanding macros.
10082         * expand/rust-macro-expand.cc (MacroExpander::expand_invoc): No longer
10083         perform name resolution in `expand_invoc`.
10084         * expand/rust-macro-expand.h (struct MacroExpander): Keep ENR within
10085         MacroExpander.
10086         * rust-session-manager.cc (Session::expansion): Run ENR.
10087         * resolve/rust-early-name-resolver.cc: New file.
10088         * resolve/rust-early-name-resolver.h: New file.
10090 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
10092         * ast/rust-path.h: Add `accept_vis` method to `GenericArg` class.
10094 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
10096         * resolve/rust-ast-resolve-item.cc (ResolveItem::visit): Add note for
10097         glob import resolving.
10099 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
10101         * util/rust-hir-map.h: Add new mappings.
10102         * util/rust-hir-map.cc (Mappings::insert_macro_invocation): Add insertion
10103         function into mappings.
10104         (Mappings::lookup_macro_invocation): Add lookup function for mappings.
10106 2023-02-21  Marc Poulhiès  <dkm@kataplop.net>
10108         * parse/rust-parse-impl.h (Parser::parse_stmt_or_expr_without_block):
10109         Check if `expr` is valid after parsing it.
10111 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
10113         * backend/rust-builtins.cc (BuiltinsContext::setup): Declare prefetch
10114         intrinsics.
10115         * backend/rust-compile-intrinsic.cc (enum class Prefetch): Add kinds of
10116         prefetch intrinsics.
10117         (prefetch_data_handler): New function.
10118         (prefetch_read_data): Likewise.
10119         (prefetch_write_data): Likewise.
10121 2023-02-21  David Faust  <david.faust@oracle.com>
10123         * ast/rust-ast-dump.cc (Dump::visit): Fill empty functions for
10124         structs, enums and unions.
10126 2023-02-21  David Faust  <david.faust@oracle.com>
10128         * ast/rust-ast-dump.cc (Dump::format_tuple_field): New.
10129         (Dump::format_struct_field): New.
10130         * ast/rust-ast-dump.h (format_tuple_field): New.
10131         (format_struct_field): New.
10133 2023-02-21  David Faust  <david.faust@oracle.com>
10135         * ast/rust-ast-dump.cc (Dump::visit): move generic params dump ...
10136         (Dump::emit_generic_params): ... here.
10137         * ast/rust-ast-dump.h (emit_generic_params): New.
10139 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
10141         * typecheck/rust-hir-trait-ref.h (lookup_trait_item): Add lookup
10142         in super_trait.
10144 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
10146         * backend/rust-compile-expr.cc
10147         (CompileExpr::resolve_method_address): Use auto and minor change
10148         in candidate init.
10149         * typecheck/rust-hir-type-check-path.cc
10150         (TypeCheckExpr::resolve_segments): Likewise.
10151         * typecheck/rust-hir-type-check-type.cc: Likewise.
10152         * backend/rust-compile-resolve-path.cc
10153         (HIRCompileBase::query_compile): Likewise. Removecall to
10154         set_ty_ref.
10155         * typecheck/rust-hir-path-probe.h (struct PathProbeCandidate): Add
10156         locus initializer in ctor, implement get_defid.
10157         (class PathProbeType::Probe): return a set instead of vector.
10158         Adjust class impl.
10159         (class ReportMultipleCandidateError): Do not inherit from
10160         HIRImplVisitor anymore and remove corresponding impl. Adjust for
10161         change in Probe. Simplify Report handling.
10162         (class PathProbeImplTrait::Probe): Adjust return type.
10164 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
10166         * typecheck/rust-hir-type-check-enumitem.cc
10167         (TypeCheckEnumItem::visit): Adjust VariantDef ctor calls with
10168         DefID.
10169         * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit):
10170         Likewise.
10171         * typecheck/rust-tyty.h (VariantDef): Add defid parameter to ctor.
10173 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
10175         * Make-lang.in: Add `rust-builtins.o` as target
10176         * backend/rust-builtins.h: Refactor to new file.
10177         * backend/rust-builtins.cc: New file.
10179 2023-02-21  David Faust  <david.faust@oracle.com>
10181         * ast/rust-ast-dump.cc (Dump::visit): Implement visitor for If
10182         expressions.
10184 2023-02-21  David Faust  <david.faust@oracle.com>
10186         * ast/rust-ast-dump.cc (Dump::visit): Dump assignment and compound
10187         assignment expressions.
10189 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
10191         * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::query_type):
10192         Check for recursive queries.
10193         * typecheck/rust-hir-type-check.h: New functions: `query_completed`,
10194         `query_in_progress`, `insert_query`.
10195         * typecheck/rust-tyty-bounds.cc (TypeBoundsProbe::scan): Use `query_type` API.
10197 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
10199         * ast/rust-ast-dump.cc (Dump::emit_visibility): New function.
10200         (Dump::visit): Call into `emit_visibility`.
10201         (Dump::format_function_common): Likewise.
10202         * ast/rust-ast-dump.h: Declare `emit_visibility`.
10204 2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>
10206         * ast/rust-item.h: Rename get_public_vis_type.
10207         * hir/rust-ast-lower.cc (translate_visibility): Use new name.
10209 2023-02-21  Philip Herron  <philip.herron@embecosm.com>
10211         * resolve/rust-name-resolver.h: Add miscellenaous item mappings.
10212         * resolve/rust-name-resolver.cc (Resolver::insert_resolved_misc): Use
10213         new mappings.
10214         (Resolver::lookup_resolved_misc): Likewise.
10215         * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments):
10216         Adapt function to insert into miscelleanous mappings.
10217         * checks/lints/rust-lint-marklive.cc (MarkLive::find_ref_node_id):
10218         Allow lookup in miscelleanous mappings in mark-live phase.
10220 2023-02-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
10222         * backend/rust-tree.cc: Include memmodel.h.
10224 2023-02-17  Thomas Schwinge  <thomas@codesourcery.com>
10226         * backend/rust-tree.cc: '#include "tm_p.h"'.
10228 2023-01-31  Philip Herron  <philip.herron@embecosm.com>
10230         * Make-lang.in: Remove `rust-hir-typecheck-toplevel` object and add
10231         `rust-hir-path-probe` one.
10232         * typecheck/rust-hir-dot-operator.cc (MethodResolver::MethodResolver):
10233         Remove no longer used `context` and `mapping` fields, and use new
10234         `query_type` API.
10235         (MethodResolver::MethodResolver): Likewise.
10236         (MethodResolver::select): Use new `query_type` API.
10237         * typecheck/rust-hir-path-probe.h: New header.
10238         * typecheck/rust-hir-path-probe.cc: New file.
10239         * typecheck/rust-hir-dot-operator.h (class MethodResolver): Remove no
10240         longer used `context` and `mapping` fields, and use new `query_type` API.
10241         * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::query_type): New function.
10242         * typecheck/rust-hir-type-check-base.h: Declare `query_type` function.
10243         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Add debug print.
10244         * typecheck/rust-hir-type-check-implitem.cc (TypeCheckTopLevelExternItem::Resolve):
10245         Refactor and make use of new query system.
10246         (TypeCheckTopLevelExternItem::Resolve): Likewise.
10247         (TypeCheckTopLevelExternItem::visit): Likewise.
10248         (TypeCheckTopLevelImplItem::visit): Likewise.
10249         (TypeCheckImplItem::visit): Likewise.
10250         (TypeCheckImplItem::TypeCheckImplItem): Likewise.
10251         (TypeCheckImplItem::Resolve): Likewise.
10252         (TypeCheckImplItemWithTrait::visit): Likewise.
10253         * typecheck/rust-hir-type-check-implitem.h (class TypeCheckTopLevelImplItem): Likewise.
10254         (class TypeCheckImplItemWithTrait): Likewise.
10255         * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::TypeCheckItem): Likewise.
10256         (TypeCheckItem::Resolve): Likewise.
10257         (TypeCheckItem::ResolveImplItem): Likewise.
10258         (TypeCheckItem::ResolveImplBlockSelf): Likewise.
10259         (TypeCheckItem::visit): Likewise.
10260         (TypeCheckItem::resolve_impl_item): Likewise.
10261         (TypeCheckItem::resolve_impl_block_substitutions): Likewise.
10262         (TypeCheckItem::resolve_impl_block_self): Likewise.
10263         * typecheck/rust-hir-type-check-item.h: Likewise.
10264         * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_root_path): Likewise.
10265         (TypeCheckExpr::resolve_segments): Likewise.
10266         * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Likewise.
10267         * typecheck/rust-hir-type-check-stmt.h: Likewise.
10268         * typecheck/rust-hir-type-check-type.cc (TypeCheckType::Resolve): Likewise.
10269         (TypeCheckType::visit): Likewise.
10270         (TypeCheckType::resolve_root_path): Likewise.
10271         * typecheck/rust-hir-type-check.cc (TypeResolution::Resolve): Likewise.
10272         * typecheck/rust-hir-type-check.h: Likewise.
10273         * typecheck/rust-substitution-mapper.h: Likewise.
10274         * typecheck/rust-tyty-bounds.cc (TypeBoundsProbe::scan): Likewise.
10275         (TypeCheckBase::get_predicate_from_bound): Likewise.
10276         (TypeBoundsMappings::add_bound): Likewise.
10277         * typecheck/rust-tyty-cmp.h: Likewise.
10278         * typecheck/rust-tyty.h: Likewise.
10279         * typecheck/rust-tyty.cc (SubstitutionRef::infer_substitions): Likewise.
10280         (ParamType::resolve): Do not infinite loop anymore.
10281         * util/rust-hir-map.h: Add new `hirImplBlockTypeMappings` and
10282         declare `lookup_impl_block_type`.
10283         * util/rust-hir-map.cc (Mappings::insert_hir_impl_block): Use new
10284         `hirImplBlockTypeMappings`
10285         (Mappings::lookup_impl_block_type): New function.
10287 2023-01-31  Philip Herron  <philip.herron@embecosm.com>
10289         * backend/rust-compile-context.h: Add new optional `asm_name` string
10290         argument to `lookup_function_decl`.
10291         * backend/rust-compile-item.cc (CompileItem::visit): Compute assembly
10292         name and pass it to `lookup_function_decl` when calling it.
10294 2023-01-31  Philip Herron  <philip.herron@embecosm.com>
10296         * backend/rust-constexpr.cc (eval_store_expression): Remove invalid
10297         assertion on constexpr constructors.
10299 2023-01-31  Philip Herron  <philip.herron@embecosm.com>
10301         * backend/rust-compile-expr.h: Formatting.
10303 2023-01-31  liushuyu  <liushuyu011@gmail.com>
10305         * ast/rust-ast.h (class MacroInvocData): Store expander as
10306         member of the class.
10307         (class Expr): Add `is_literal` virtual method
10308         * ast/rust-expr.h: Override `is_literal` for `LiteralExpr`s.
10309         * expand/rust-macro-builtins.cc (try_expand_macro_expression): New function.
10310         (try_extract_string_literal_from_fragment): Likewise.
10311         (try_expand_single_string_literal): Likewise.
10312         (try_expand_many_expr): Likewise.
10313         (parse_single_string_literal): Add macro expander as argument.
10314         (MacroBuiltin::include_bytes): Pass expander as argument to
10315         `parse_single_string_literal`.
10316         (MacroBuiltin::include_str): Likewise.
10317         (MacroBuiltin::compile_error): Likewise.
10318         (MacroBuiltin::include): Likewise.
10319         (MacroBuiltin::concat): Likewise and add better error handling.
10320         (MacroBuiltin::env): Likewise.
10321         * expand/rust-macro-expand.cc (MacroExpander::expand_invoc): Expand
10322         invocations recursively.
10324 2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>
10326         * lang.opt: Add new ``-frust-compile-until` option.
10327         * rust-session-manager.cc (Session::compile_crate): Add stops around
10328         various compilation steps in the pipeline.
10329         * rust-session-manager.h (struct CompileOptions): Add `CompileStep` enum
10330         and field.
10332 2023-01-31  Philip Herron  <philip.herron@embecosm.com>
10334         * backend/rust-tree.cc (rs_type_quals): Comment out bad assertion
10336 2023-01-31  Philip Herron  <philip.herron@embecosm.com>
10338         * typecheck/rust-hir-type-check-toplevel.cc (TypeCheckTopLevel::visit):
10339         Make static items behave more similarly to const items.
10341 2023-01-31  Philip Herron  <philip.herron@embecosm.com>
10343         * backend/rust-compile-item.cc (CompileItem::visit): Const evaluate
10344         static item expressions.
10346 2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>
10348         * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Do not lower
10349         null items within modules.
10351 2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>
10353         * util/rust-attributes.cc: Add `macro_use` to list of builtin
10354         attributes.
10356 2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>
10358         * checks/errors/rust-const-checker.cc (ConstChecker::ctx_to_str): Allow
10359         getting an error string from a specific constant context.
10360         (ConstChecker::ctx_allows_default): New function, check if a context
10361         allows default values for Const generics.
10362         (ConstChecker::visit): Call into `ctx_allows_default`.
10363         * checks/errors/rust-const-checker.h: Declare `ctx_allows_default`.
10365 2023-01-31  liushuyu  <liushuyu011@gmail.com>
10367         * backend/rust-compile-expr.cc (CompileExpr::visit): Properly formulate
10368         exit condition when compiling while loops.
10370 2023-01-31  Faisal Abbas  <90.abbasfaisal@gmail.com>
10372         * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Turn
10373         constant item typechecking into a coercion site instead of a unify
10374         site.
10376 2023-01-31  Philip Herron  <philip.herron@embecosm.com>
10378         * typecheck/rust-tyty.h: Fix `is_concrete` for unit types with
10379         substitutions.
10381 2023-01-31  Philip Herron  <philip.herron@embecosm.com>
10383         * typecheck/rust-tyty-bounds.cc (TypeBoundPredicate::contains_associated_types):
10384         Check if a type bound predicate contains assocated types.
10385         * typecheck/rust-tyty.h: Declare the above mentioned function.
10386         * typecheck/rust-hir-trait-resolve.cc: Use `contains_associated_types`
10387         function.
10389 2023-01-31  Philip Herron  <philip.herron@embecosm.com>
10391         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Add
10392         more calls to `rust_debug` for development.
10394 2023-01-31  Philip Herron  <philip.herron@embecosm.com>
10396         * backend/rust-compile-base.cc: Improve compilation pipeline and simplify
10397         function.
10399 2023-01-31  Philip Herron  <philip.herron@embecosm.com>
10401         * backend/rust-tree.cc (comptypes): Remove some C++ specific checks in
10402         Rust const folder for now.
10404 2023-01-31  Philip Herron  <philip.herron@embecosm.com>
10406         * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::unify_site): Add
10407         better unification function with debug calls.
10408         * typecheck/rust-autoderef.cc (AutoderefCycle::cycle): Add more debug
10409         calls and use new unify API.
10410         * typecheck/rust-coercion.cc (TypeCoercionRules::do_coercion): Likewise.
10411         (TypeCoercionRules::coerce_borrowed_pointer): Likewise.
10412         (TypeCoercionRules::select): Likewise.
10413         * typecheck/rust-hir-dot-operator.cc (MethodResolver::select): Likewise.
10414         * typecheck/rust-hir-trait-resolve.cc (TraitItemReference::resolve_item): Likewise.
10415         (TypeCheckBase::coercion_site): Likewise.
10416         (TypeCheckBase::cast_site): Likewise.
10417         * typecheck/rust-hir-type-check-base.h: Likewise.
10418         * typecheck/rust-hir-type-check-enumitem.cc (TypeCheckEnumItem::visit): Likewise.
10419         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Likewise.
10420         * typecheck/rust-hir-type-check-implitem.cc (TypeCheckTopLevelImplItem::visit): Likewise.
10421         (TypeCheckImplItem::visit): Likewise.
10422         * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit): Likewise.
10423         * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments): Likewise.
10424         * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Likewise.
10425         * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Likewise.
10426         * typecheck/rust-hir-type-check-struct.cc (TypeCheckStructExpr::resolve): Likewise.
10427         * typecheck/rust-hir-type-check-toplevel.cc (TypeCheckTopLevel::visit): Likewise.
10428         * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): Likewise.
10429         * typecheck/rust-hir-type-check.cc (TypeResolution::Resolve): Likewise.
10430         * typecheck/rust-tyctx.cc (TypeCheckContext::peek_return_type): Likewise.
10431         * typecheck/rust-tyty-call.cc (TypeCheckMethodCallExpr::visit): Likewise.
10432         * typecheck/rust-tyty-cmp.h: Likewise.
10433         * typecheck/rust-tyty-rules.h: Likewise.
10434         * typecheck/rust-tyty.cc (BaseType::mappings_str): Likewise.
10435         (BaseType::debug): Print type name more clearly.
10436         (BaseType::debug_str): Add new function to print type pointer and name.
10437         (TupleType::get_name): Improve type name fetching function.
10438         (ReferenceType::get_name): Likewise.
10439         (PointerType::get_name): Likewise.
10440         * typecheck/rust-tyty.h: Refactor definitions outside of the header.
10442 2023-01-31  Philip Herron  <philip.herron@embecosm.com>
10444         * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::TypeCheckBase):
10445         Remove constructor.
10446         (TypeCheckBase::coercion_site): Add `Location` argument to function.
10447         * typecheck/rust-hir-type-check-base.h: Use `TypeCheckBase::coercion_site`
10448         function with location argument.
10449         * typecheck/rust-hir-type-check-enumitem.cc (TypeCheckEnumItem::visit): Likewise.
10450         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Likewise.
10451         * typecheck/rust-hir-type-check-expr.h (class TypeCheckExpr): Likewise.
10452         * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Likewise.
10453         * typecheck/rust-hir-type-check-struct.cc (TypeCheckStructExpr::visit): Likewise.
10454         * typecheck/rust-hir-type-check-toplevel.cc (TypeCheckTopLevel::visit): Likewise.
10455         * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): Likewise.
10456         (TypeCheckMethodCallExpr::visit): Likewise.
10457         * typecheck/rust-tyty.h: Add missing locus field.
10458         * typecheck/rust-tyty.cc (StructFieldType::clone): Use locus field.
10459         (StructFieldType::monomorphized_clone): Likewise.
10461 2023-01-31  Philip Herron  <philip.herron@embecosm.com>
10463         * typecheck/rust-tyctx.cc (TypeCheckContext::pop_return_type): Add
10464         guards around `std::vector<T>.pop_back()`.
10465         (TypeCheckContext::peek_context): Likewise for `std::vector<T>.back()`.
10467 2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>
10468             philberty  <philip.herron@embecosm.com>
10470         * ast/rust-ast.h: Improve assertions within ASTFragment API.
10472 2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>
10474         * ast/rust-ast.h: Add assertions and accessors for fragment nodes.
10475         * expand/rust-attribute-visitor.cc (AttrVisitor::visit): Fix expansion
10476         context typo when visiting `InherentImpl` items.
10477         (AttrVisitor::maybe_expand_expr): Use new Fragment accessor to fetch
10478         properly typed node.
10479         (AttrVisitor::maybe_expand_type): Likewise.
10480         * expand/rust-macro-expand.cc (transcribe_type): Emit parse errors
10481         when trying to parse a type.
10483 2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>
10485         * ast/rust-ast-dump.h: Add shorthand `AST::Dump::debug` function to
10486         dump an AST node on `stderr`.
10488 2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>
10489             philberty  <philip.herron@embecosm.com>
10491         * expand/rust-macro-expand.cc (parse_many): Return early from parsing
10492         loop if we encounter an error, and emit that error in the meantime.
10494 2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>
10496         * expand/rust-macro-expand.cc (MacroExpander::match_matcher): Handle
10497         fragments differently based on whether or not we are currently trying
10498         to match a matcher in a repetition context.
10499         (MacroExpander::match_n_matches): Use new `in_repetition` argument
10500         properly when calling `match_matcher`.
10501         * expand/rust-macro-expand.h (MacroExpander::match_matcher): Allow
10502         passing extra `in_repetition` bool argument
10504 2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>
10506         * parse/rust-parse-impl.h: Allow parsing full range expressions without
10507         erroring out.
10509 2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>
10511         * checks/lints/rust-lint-scan-deadcode.h: Do not report public items
10512         as dead code.
10514 2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>
10516         * util/rust-attributes.cc: Add `rustc_inherit_overflow_checks` to list
10517         of builtin attributes.
10519 2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>
10521         * backend/rust-compile-expr.cc (CompileExpr::visit): Insert overflow
10522         checks logic.
10523         (CompileExpr::array_copied_expr): Insert overflow checks logic.
10524         * backend/rust-compile-item.cc (CompileItem::visit): Insert overflow
10525         checks logic.
10526         * backend/rust-compile-type.cc (TyTyResolveCompile::visit): Insert
10527         overflow checks logic.
10528         * rust-gcc.cc (Gcc_backend::arithmetic_or_logical_expression): Differentiate
10529         existing function from `arithmetic_or_logical_expression_checked`.
10530         This function does insert perform overflow checks.
10531         (Gcc_backend::arithmetic_or_logical_expression_checked): New
10532         function.
10533         (is_overflowing_expr): New function. Check if an expression is an
10534         overflowing one (ADD, SUB, MUL).
10535         (fetch_overflow_builtins): New function.
10536         * rust-backend.h: Declare `arithmetic_or_logical_expression_checked` in
10537         abstract `Backend` class.
10539 2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>
10541         * backend/rust-builtins.h: Refactor builtin context class and add
10542         overflow builtins.
10544 2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>
10546         * rust-gcc.cc (class Bvariable): Move class to `rust-gcc.h` header.
10547         * rust-gcc.h: New file.
10549 2023-01-31  Philip Herron  <philip.herron@embecosm.com>
10551         * hir/rust-ast-lower-expr.h: Lower double borrow expressions to two
10552         `HIR::BorrowExpr`s.
10553         * hir/tree/rust-hir-expr.h: Remove `is_double_borrow` field from
10554         `HIR::BorrowExpr`.
10555         * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Remove
10556         call to `gcc_unreachable` on double borrow expressions.
10558 2023-01-31  Faisal Abbas  <90.abbasfaisal@gmail.com>
10560         * backend/rust-tree.cc : Add new includes.
10561         (scope_chain): New.
10562         (maybe_add_global): New.
10563         (init_modules): New (copied from cp)
10564         (var_in_constexpr_fn): Likewise.
10565         (member_vec_linear_search): Likewise.
10566         (member_vec_binary_search): Likewise.
10567         (is_overloaded_fn): Likewise.
10568         (ovl_make): Likewise.
10569         (lookup_add): Likewise.
10570         (type_memfn_quals): Likewise.
10571         (struct find_parameter_pack_data): Likewise.
10572         (struct conv_type_hasher): Likewise.
10573         (make_conv_op_name): Likewise.
10574         (builtin_pack_fn_p): Likewise.
10575         (builtin_pack_call_p): Likewise.
10576         (has_extra_args_mechanism_p): Likewise.
10577         (find_parameter_packs_r): Likewise.
10578         (WALK_SUBTREE): Likewise.
10579         (type_memfn_rqual): Likewise.
10580         (maybe_add_lang_type_raw): Likewise.
10581         (struct c_fileinfo): Likewise.
10582         (get_fileinfo): Likewise.
10583         (cxx_make_type): Likewise.
10584         (build_min_array_type): Likewise.
10585         (fields_linear_search): Likewise.
10586         (nothrow_spec_p): Likewise.
10587         (maybe_get_fns): Likewise.
10588         (get_fns): Likewise.
10589         (get_first_fn): Likewise.
10590         (dependent_name): Likewise.
10591         (called_fns_equal): Likewise.
10592         (canonical_eh_spec): Likewise.
10593         (rs_tree_code_length): Likewise.
10594         (rs_tree_operand_length): Likewise.
10595         (rs_tree_equal): Likewise.
10596         (publicly_uniquely_derived_p): Likewise.
10597         (comp_except_types): Likewise.
10598         (comp_except_specs): Likewise.
10599         (compparms): Likewise.
10600         (set_array_type_canon): Likewise.
10601         (struct cplus_array_info): Likewise.
10602         (struct cplus_array_hasher): Likewise.
10603         (cplus_array_hasher::hash): Likewise.
10604         (cplus_array_hasher::equal): Likewise.
10605         (is_byte_access_type): Likewise.
10606         (build_cplus_array_type): Likewise.
10607         (rs_build_qualified_type_real): Likewise.
10608         (vector_targets_convertible_p): Likewise.
10609         (comp_array_types): Likewise.
10610         (same_type_ignoring_top_level_qualifiers_p): Likewise.
10611         (comp_ptr_ttypes_const): Likewise.
10612         (similar_type_p): Likewise.
10613         (structural_comptypes): Likewise.
10614         (comptypes): Likewise.
10615         (next_initializable_field): Likewise.
10616         (sufficient_parms_p): Likewise.
10617         (default_ctor_p): Likewise.
10618         (user_provided_p): Likewise.
10619         (type_has_non_user_provided_default_constructor): Likewise.
10620         (default_init_uninitialized_part): Likewise.
10621         (extract_conversion_operator): Likewise.
10622         (get_class_binding_direct): Likewise.
10623         (lang_check_failed): Likewise.
10624         (skip_artificial_parms_for): Likewise.
10625         (in_class_defaulted_default_constructor): Likewise.
10626         (is_instantiation_of_constexpr): Likewise.
10627         (check_for_uninitialized_const_var): Likewise.
10628         (cv_unqualified): Likewise.
10629         (make_tree_vector): Likewise.
10630         (release_tree_vector): Likewise.
10631         (instantiation_dependent_expression_p): Likewise.
10632         (cp_get_callee): Likewise.
10633         (build_nop): Likewise.
10634         (scalarish_type_p): Likewise.
10635         (type_has_nontrivial_copy_init): Likewise.
10636         (build_local_temp): Likewise.
10637         (is_normal_capture_proxy): Likewise.
10638         (reject_gcc_builtin): Likewise.
10639         (is_bitfield_expr_with_lowered_type): Likewise.
10640         (maybe_undo_parenthesized_ref): Likewise.
10641         (fold_offsetof): Likewise.
10642         (char_type_p): Likewise.
10643         (resolve_nondeduced_context): Likewise.
10644         (instantiate_non_dependent_or_null): Likewise.
10645         (resolve_nondeduced_context_or_error): Likewise.
10646         (really_overloaded_fn): Likewise.
10647         (invalid_nonstatic_memfn_p): Likewise.
10648         (strip_top_quals): Likewise.
10649         (cxx_incomplete_type_inform): Likewise.
10650         (cxx_incomplete_type_diagnostic): Likewise.
10651         (decl_constant_var_p): Likewise.
10652         (undeduced_auto_decl): Likewise.
10653         (require_deduced_type): Likewise.
10654         * backend/rust-tree.h (enum c_tree_index): Likewise.
10655         (GTY): Likewise.
10656         (enum cp_tree_index): Likewise.
10657         (wchar_decl_node): Likewise.
10658         (vtable_entry_type): Likewise.
10659         (delta_type_node): Likewise.
10660         (vtable_index_type): Likewise.
10661         (class_type_node): Likewise.
10662         (unknown_type_node): Likewise.
10663         (init_list_type_node): Likewise.
10664         (explicit_void_list_node): Likewise.
10665         (vtbl_type_node): Likewise.
10666         (vtbl_ptr_type_node): Likewise.
10667         (std_node): Likewise.
10668         (abi_node): Likewise.
10669         (global_namespace): Likewise.
10670         (const_type_info_type_node): Likewise.
10671         (conv_op_marker): Likewise.
10672         (abort_fndecl): Likewise.
10673         (current_aggr): Likewise.
10674         (nullptr_node): Likewise.
10675         (nullptr_type_node): Likewise.
10676         (align_type_node): Likewise.
10677         (char8_type_node): Likewise.
10678         (char16_type_node): Likewise.
10679         (char32_type_node): Likewise.
10680         (wchar_type_node): Likewise.
10681         (underlying_wchar_type_node): Likewise.
10682         (wint_type_node): Likewise.
10683         (signed_size_type_node): Likewise.
10684         (unsigned_ptrdiff_type_node): Likewise.
10685         (intmax_type_node): Likewise.
10686         (uintmax_type_node): Likewise.
10687         (widest_integer_literal_type_node): Likewise.
10688         (widest_unsigned_literal_type_node): Likewise.
10689         (sig_atomic_type_node): Likewise.
10690         (int8_type_node): Likewise.
10691         (int16_type_node): Likewise.
10692         (int32_type_node): Likewise.
10693         (int64_type_node): Likewise.
10694         (uint8_type_node): Likewise.
10695         (c_uint16_type_node): Likewise.
10696         (c_uint32_type_node): Likewise.
10697         (c_uint64_type_node): Likewise.
10698         (int_least8_type_node): Likewise.
10699         (int_least16_type_node): Likewise.
10700         (int_least32_type_node): Likewise.
10701         (int_least64_type_node): Likewise.
10702         (uint_least8_type_node): Likewise.
10703         (uint_least16_type_node): Likewise.
10704         (uint_least32_type_node): Likewise.
10705         (uint_least64_type_node): Likewise.
10706         (int_fast8_type_node): Likewise.
10707         (int_fast16_type_node): Likewise.
10708         (int_fast32_type_node): Likewise.
10709         (int_fast64_type_node): Likewise.
10710         (uint_fast8_type_node): Likewise.
10711         (uint_fast16_type_node): Likewise.
10712         (uint_fast32_type_node): Likewise.
10713         (uint_fast64_type_node): Likewise.
10714         (intptr_type_node): Likewise.
10715         (uintptr_type_node): Likewise.
10716         (truthvalue_type_node): Likewise.
10717         (truthvalue_true_node): Likewise.
10718         (truthvalue_false_node): Likewise.
10719         (char_array_type_node): Likewise.
10720         (char8_array_type_node): Likewise.
10721         (char16_array_type_node): Likewise.
10722         (char32_array_type_node): Likewise.
10723         (wchar_array_type_node): Likewise.
10724         (string_type_node): Likewise.
10725         (const_string_type_node): Likewise.
10726         (default_function_type): Likewise.
10727         (function_name_decl_node): Likewise.
10728         (pretty_function_name_decl_node): Likewise.
10729         (c99_function_name_decl_node): Likewise.
10730         (saved_function_name_decls): Likewise.
10731         (null_node): Likewise.
10732         (ctor_identifier): Likewise.
10733         (complete_ctor_identifier): Likewise.
10734         (base_ctor_identifier): Likewise.
10735         (dtor_identifier): Likewise.
10736         (complete_dtor_identifier): Likewise.
10737         (base_dtor_identifier): Likewise.
10738         (deleting_dtor_identifier): Likewise.
10739         (conv_op_identifier): Likewise.
10740         (delta_identifier): Likewise.
10741         (in_charge_identifier): Likewise.
10742         (vtt_parm_identifier): Likewise.
10743         (as_base_identifier): Likewise.
10744         (this_identifier): Likewise.
10745         (pfn_identifier): Likewise.
10746         (vptr_identifier): Likewise.
10747         (global_identifier): Likewise.
10748         (anon_identifier): Likewise.
10749         (auto_identifier): Likewise.
10750         (decltype_auto_identifier): Likewise.
10751         (init_list_identifier): Likewise.
10752         (for_range__identifier): Likewise.
10753         (for_begin__identifier): Likewise.
10754         (for_end__identifier): Likewise.
10755         (for_range_identifier): Likewise.
10756         (for_begin_identifier): Likewise.
10757         (for_end_identifier): Likewise.
10758         (abi_tag_identifier): Likewise.
10759         (aligned_identifier): Likewise.
10760         (begin_identifier): Likewise.
10761         (end_identifier): Likewise.
10762         (get__identifier): Likewise.
10763         (gnu_identifier): Likewise.
10764         (tuple_element_identifier): Likewise.
10765         (tuple_size_identifier): Likewise.
10766         (type_identifier): Likewise.
10767         (value_identifier): Likewise.
10768         (fun_identifier): Likewise.
10769         (closure_identifier): Likewise.
10770         (heap_uninit_identifier): Likewise.
10771         (heap_identifier): Likewise.
10772         (heap_deleted_identifier): Likewise.
10773         (heap_vec_uninit_identifier): Likewise.
10774         (heap_vec_identifier): Likewise.
10775         (omp_identifier): Likewise.
10776         (lang_name_c): Likewise.
10777         (lang_name_cplusplus): Likewise.
10778         (empty_except_spec): Likewise.
10779         (noexcept_true_spec): Likewise.
10780         (noexcept_false_spec): Likewise.
10781         (noexcept_deferred_spec): Likewise.
10782         (terminate_fn): Likewise.
10783         (call_unexpected_fn): Likewise.
10784         (get_exception_ptr_fn): Likewise.
10785         (begin_catch_fn): Likewise.
10786         (end_catch_fn): Likewise.
10787         (allocate_exception_fn): Likewise.
10788         (free_exception_fn): Likewise.
10789         (throw_fn): Likewise.
10790         (rethrow_fn): Likewise.
10791         (atexit_fn_ptr_type_node): Likewise.
10792         (atexit_node): Likewise.
10793         (dso_handle_node): Likewise.
10794         (dynamic_cast_node): Likewise.
10795         (cleanup_type): Likewise.
10796         (vtt_parm_type): Likewise.
10797         (any_targ_node): Likewise.
10798         (source_location_impl): Likewise.
10799         (OVL_FUNCTION): Likewise.
10800         (OVL_CHAIN): Likewise.
10801         (OVL_DEDUP_P): Likewise.
10802         (OVL_USING_P): Likewise.
10803         (OVL_HIDDEN_P): Likewise.
10804         (OVL_NESTED_P): Likewise.
10805         (OVL_LOOKUP_P): Likewise.
10806         (OVL_EXPORT_P): Likewise.
10807         (OVL_FIRST): Likewise.
10808         (OVL_NAME): Likewise.
10809         (OVL_P): Likewise.
10810         (OVL_SINGLE_P): Likewise.
10811         (TYPE_HAS_DEFAULT_CONSTRUCTOR): Likewise.
10812         (CLASSTYPE_LAZY_DEFAULT_CTOR): Likewise.
10813         (CLASSTYPE_CONSTRUCTORS): Likewise.
10814         (ATTR_IS_DEPENDENT): Likewise.
10815         (ABI_TAG_IMPLICIT): Likewise.
10816         (PARENTHESIZED_LIST_P): Likewise.
10817         (DECL_DEPENDENT_P): Likewise.
10818         (USING_DECL_SCOPE): Likewise.
10819         (USING_DECL_DECLS): Likewise.
10820         (USING_DECL_TYPENAME_P): Likewise.
10821         (USING_DECL_UNRELATED_P): Likewise.
10822         (DECL_DECLARES_FUNCTION_P): Likewise.
10823         (DECL_DECLARES_TYPE_P): Likewise.
10824         (IDENTIFIER_KIND_BIT_0): Likewise.
10825         (IDENTIFIER_KIND_BIT_1): Likewise.
10826         (IDENTIFIER_KIND_BIT_2): Likewise.
10827         (IDENTIFIER_MARKED): Likewise.
10828         (IDENTIFIER_VIRTUAL_P): Likewise.
10829         (IDENTIFIER_KEYWORD_P): Likewise.
10830         (IDENTIFIER_CDTOR_P): Likewise.
10831         (IDENTIFIER_CTOR_P): Likewise.
10832         (IDENTIFIER_DTOR_P): Likewise.
10833         (IDENTIFIER_ANY_OP_P): Likewise.
10834         (IDENTIFIER_OVL_OP_P): Likewise.
10835         (IDENTIFIER_ASSIGN_OP_P): Likewise.
10836         (IDENTIFIER_CONV_OP_P): Likewise.
10837         (IDENTIFIER_NEWDEL_OP_P): Likewise.
10838         (IDENTIFIER_NEW_OP_P): Likewise.
10839         (CLASSTYPE_DIAMOND_SHAPED_P): Likewise.
10840         (CLASSTYPE_REPEATED_BASE_P): Likewise.
10841         (CLASSTYPE_KEY_METHOD): Likewise.
10842         (CLASSTYPE_MEMBER_VEC): Likewise.
10843         (CLASSTYPE_DECL_LIST): Likewise.
10844         (CLASSTYPE_DESTRUCTOR): Likewise.
10845         (CLASSTYPE_HAS_PRIMARY_BASE_P): Likewise.
10846         (CLASSTYPE_PRIMARY_BINFO): Likewise.
10847         (CLASSTYPE_VBASECLASSES): Likewise.
10848         (CLASSTYPE_AS_BASE): Likewise.
10849         (DECL_CONV_FN_P): Likewise.
10850         (DECL_CONV_FN_TYPE): Likewise.
10851         (same_type_p): Likewise.
10852         (WILDCARD_TYPE_P): Likewise.
10853         (MAYBE_CLASS_TYPE_P): Likewise.
10854         (FUNCTION_REF_QUALIFIED): Likewise.
10855         (FUNCTION_RVALUE_QUALIFIED): Likewise.
10856         (TYPE_PTRMEMFUNC_FN_TYPE): Likewise.
10857         (TYPE_PTRMEMFUNC_FN_TYPE_RAW): Likewise.
10858         (TYPE_DEPENDENT_P): Likewise.
10859         (TYPE_DEPENDENT_P_VALID): Likewise.
10860         (TYPE_HAS_NONTRIVIAL_DESTRUCTOR): Likewise.
10861         (TYPE_RAISES_EXCEPTIONS): Likewise.
10862         (IDENTIFIER_BINDING): Likewise.
10863         (LANG_IDENTIFIER_CAST): Likewise.
10864         (IF_COND): Likewise.
10865         (THEN_CLAUSE): Likewise.
10866         (ELSE_CLAUSE): Likewise.
10867         (IF_SCOPE): Likewise.
10868         (IF_STMT_CONSTEXPR_P): Likewise.
10869         (IF_STMT_CONSTEVAL_P): Likewise.
10870         (DECLTYPE_TYPE_EXPR): Likewise.
10871         (SET_CLASSTYPE_INTERFACE_UNKNOWN_X): Likewise.
10872         (CLASSTYPE_INTERFACE_ONLY): Likewise.
10873         (TYPE_NAME_STRING): Likewise.
10874         (TYPE_NAME_LENGTH): Likewise.
10875         (CONSTRAINT_VAR_P): Likewise.
10876         (KOENIG_LOOKUP_P): Likewise.
10877         (DECL_PARM_INDEX): Likewise.
10878         (DECL_PARM_LEVEL): Likewise.
10879         (CONV_IMPLICIT): Likewise.
10880         (CONV_STATIC): Likewise.
10881         (CONV_CONST): Likewise.
10882         (CONV_REINTERPRET): Likewise.
10883         (CONV_PRIVATE): Likewise.
10884         (CONV_FORCE_TEMP): Likewise.
10885         (CONV_FOLD): Likewise.
10886         (CONV_OLD_CONVERT): Likewise.
10887         (CONV_C_CAST): Likewise.
10888         (CONV_BACKEND_CONVERT): Likewise.
10889         (WANT_INT): Likewise.
10890         (WANT_FLOAT): Likewise.
10891         (WANT_ENUM): Likewise.
10892         (WANT_POINTER): Likewise.
10893         (WANT_NULL): Likewise.
10894         (WANT_VECTOR_OR_COMPLEX): Likewise.
10895         (WANT_ARITH): Likewise.
10896         (COMPARE_STRICT): Likewise.
10897         (COMPARE_BASE): Likewise.
10898         (COMPARE_DERIVED): Likewise.
10899         (COMPARE_REDECLARATION): Likewise.
10900         (COMPARE_STRUCTURAL): Likewise.
10901         (SF_DEFAULT): Likewise.
10902         (SF_PRE_PARSED): Likewise.
10903         (SF_INCLASS_INLINE): Likewise.
10904         (SD_UNINITIALIZED): Likewise.
10905         (SD_INITIALIZED): Likewise.
10906         (SD_DECOMPOSITION): Likewise.
10907         (SD_DEFAULTED): Likewise.
10908         (SD_DELETED): Likewise.
10909         (TYPE_PTRDATAMEM_P): Likewise.
10910         (RS_TYPE_CONST_P): Likewise.
10911         (TYPE_MAIN_DECL): Likewise.
10912         (DECL_NONTRIVIALLY_INITIALIZED_P): Likewise.
10913         (DECL_DEFAULTED_FN): Likewise.
10914         (TYPE_HAS_USER_CONSTRUCTOR): Likewise.
10915         (DECL_INITIALIZED_IN_CLASS_P): Likewise.
10916         (DECL_DEFAULTED_IN_CLASS_P): Likewise.
10917         (DECL_NONSTATIC_MEMBER_FUNCTION_P): Likewise.
10918         (DECL_HAS_IN_CHARGE_PARM_P): Likewise.
10919         (DECL_HAS_VTT_PARM_P): Likewise.
10920         (FUNCTION_FIRST_USER_PARMTYPE): Likewise.
10921         (FUNCTION_FIRST_USER_PARM): Likewise.
10922         (DECL_CONSTRUCTOR_P): Likewise.
10923         (DECL_DELETED_FN): Likewise.
10924         (BRACE_ENCLOSED_INITIALIZER_P): Likewise.
10925         (DECL_IMMEDIATE_FUNCTION_P): Likewise.
10926         (SET_DECL_IMMEDIATE_FUNCTION_P): Likewise.
10927         (CONSTRUCTOR_MUTABLE_POISON): Likewise.
10928         (PTRMEM_CST_MEMBER): Likewise.
10929         (REF_PARENTHESIZED_P): Likewise.
10930         (TYPE_PTRMEM_P): Likewise.
10931         (TYPE_PTR_OR_PTRMEM_P): Likewise.
10932         (DECL_DECOMPOSITION_P): Likewise.
10933         (DECL_DECOMP_BASE): Likewise.
10934         (DECL_MAYBE_IN_CHARGE_CDTOR_P): Likewise.
10935         (DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P): Likewise.
10936         (DECL_CLONED_FUNCTION_P): Likewise.
10937         (DECL_CLONED_FUNCTION): Likewise.
10938         (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P): Likewise.
10939         (cp_function_chain): Likewise.
10940         (cdtor_label): Likewise.
10941         (current_class_ptr): Likewise.
10942         (current_class_ref): Likewise.
10943         (current_eh_spec_block): Likewise.
10944         (current_in_charge_parm): Likewise.
10945         (current_vtt_parm): Likewise.
10946         (current_retval_sentinel): Likewise.
10947         (current_function_returns_value): Likewise.
10948         (current_function_returns_null): Likewise.
10949         (current_function_returns_abnormally): Likewise.
10950         (current_function_infinite_loop): Likewise.
10951         (in_base_initializer): Likewise.
10952         (in_function_try_handler): Likewise.
10953         (current_function_return_value): Likewise.
10954         (current_class_type): Likewise.
10955         (TYPE_BEING_DEFINED): Likewise.
10956         (DECL_STATIC_FUNCTION_P): Likewise.
10957         (DECL_FUNCTION_MEMBER_P): Likewise.
10958         (LANG_DECL_MIN_CHECK): Likewise.
10959         (LANG_DECL_FN_CHECK): Likewise.
10960         (LANG_DECL_NS_CHECK): Likewise.
10961         (LANG_DECL_PARM_CHECK): Likewise.
10962         (LANG_DECL_DECOMP_CHECK): Likewise.
10963         (RS_INTEGRAL_TYPE_P): Likewise.
10964         (STAT_HACK_P): Likewise.
10965         (STAT_TYPE_VISIBLE_P): Likewise.
10966         (STAT_TYPE): Likewise.
10967         (STAT_DECL): Likewise.
10968         (STAT_VISIBLE): Likewise.
10969         (MAYBE_STAT_DECL): Likewise.
10970         (MAYBE_STAT_TYPE): Likewise.
10971         (STAT_TYPE_HIDDEN_P): Likewise.
10972         (STAT_DECL_HIDDEN_P): Likewise.
10973         (class warning_sentinel): Likewise.
10974         (struct uid_sensitive_constexpr_evaluation_checker): Likewise.
10975         (class iloc_sentinel): Likewise.
10976         (struct GTY): Likewise.
10977         (struct named_decl_hash): Likewise.
10978         (enum lang_decl_selector): Likewise.
10979         (LANG_DECL_HAS_MIN): Likewise.
10980         (struct named_label_entry): Likewise.
10981         (struct named_label_hash): Likewise.
10982         (enum ref_operator): Likewise.
10983         (struct c_fileinfo): Likewise.
10984         (class ovl_iterator): Likewise.
10985         (class lkp_iterator): Likewise.
10986         (enum rs_ref_qualifier): Likewise.
10987         (enum tsubst_flags): Likewise.
10988         (enum cp_identifier_kind): Likewise.
10989         (enum tag_types): Likewise.
10990         (enum compare_bounds_t): Likewise.
10991         (mark_rvalue_use): Likewise.
10992         (type_unknown_p): Likewise.
10993         (init_modules): Likewise.
10994         (var_in_constexpr_fn): Likewise.
10995         (ovl_first): Likewise.
10996         (lookup_add): Likewise.
10997         (ovl_make): Likewise.
10998         (is_overloaded_fn): Likewise.
10999         (maybe_add_lang_type_raw): Likewise.
11000         (type_memfn_rqual): Likewise.
11001         (builtin_pack_fn_p): Likewise.
11002         (make_conv_op_name): Likewise.
11003         (type_memfn_quals): Likewise.
11004         (get_fileinfo): Likewise.
11005         (cxx_make_type): Likewise.
11006         (build_cplus_array_type): Likewise.
11007         (is_byte_access_type): Likewise.
11008         (comptypes): Likewise.
11009         (canonical_eh_spec): Likewise.
11010         (cp_tree_operand_length): Likewise.
11011         (rs_tree_equal): Likewise.
11012         (compparms): Likewise.
11013         (rs_build_qualified_type_real): Likewise.
11014         (rs_build_qualified_type): Likewise.
11015         (cv_qualified_p): Likewise.
11016         (similar_type_p): Likewise.
11017         (vector_targets_convertible_p): Likewise.
11018         (same_type_ignoring_top_level_qualifiers_p): Likewise.
11019         (comp_ptr_ttypes_const): Likewise.
11020         (get_class_binding_direct): Likewise.
11021         (skip_artificial_parms_for): Likewise.
11022         (lang_check_failed): Likewise.
11023         (default_init_uninitialized_part): Likewise.
11024         (type_has_non_user_provided_default_constructor): Likewise.
11025         (default_ctor_p): Likewise.
11026         (user_provided_p): Likewise.
11027         (sufficient_parms_p): Likewise.
11028         (next_initializable_field): Likewise.
11029         (in_class_defaulted_default_constructor): Likewise.
11030         (is_instantiation_of_constexpr): Likewise.
11031         (check_for_uninitialized_const_var): Likewise.
11032         (reduced_constant_expression_p): Likewise.
11033         (cv_unqualified): Likewise.
11034         (cp_get_callee): Likewise.
11035         (cp_get_callee_fndecl_nofold): Likewise.
11036         (is_nondependent_static_init_expression): Likewise.
11037         (maybe_constant_init): Likewise.
11038         (build_nop): Likewise.
11039         (scalarish_type_p): Likewise.
11040         (is_bitfield_expr_with_lowered_type): Likewise.
11041         (convert_bitfield_to_declared_type): Likewise.
11042         (cp_fold_maybe_rvalue): Likewise.
11043         (maybe_undo_parenthesized_ref): Likewise.
11044         (fold_offsetof): Likewise.
11045         (cp_truthvalue_conversion): Likewise.
11046         (fold_non_dependent_expr): Likewise.
11047         (char_type_p): Likewise.
11048         (instantiation_dependent_expression_p): Likewise.
11049         (type_has_nontrivial_copy_init): Likewise.
11050         (build_local_temp): Likewise.
11051         (is_normal_capture_proxy): Likewise.
11052         (reject_gcc_builtin): Likewise.
11053         (resolve_nondeduced_context): Likewise.
11054         (cxx_incomplete_type_diagnostic): Likewise.
11055         (cxx_incomplete_type_error): Likewise.
11056         (invalid_nonstatic_memfn_p): Likewise.
11057         (really_overloaded_fn): Likewise.
11058         (resolve_nondeduced_context_or_error): Likewise.
11059         (instantiate_non_dependent_or_null): Likewise.
11060         (cxx_incomplete_type_inform): Likewise.
11061         (strip_top_quals): Likewise.
11062         (undeduced_auto_decl): Likewise.
11063         (require_deduced_type): Likewise.
11064         (decl_constant_var_p): Likewise.
11065         (type_of_this_parm): Likewise.
11066         (class_of_this_parm): Likewise.
11067         (identifier_p): Likewise.
11068         (gnu_vector_type_p): Likewise.
11069         (make_tree_vector): Likewise.
11070         (release_tree_vector): Likewise.
11071         (class releasing_vec): Likewise.
11072         (vec_safe_push): Likewise.
11073         (null_node_p): Likewise.
11074         * backend/rust-compile-base.cc (HIRCompileBase::setup_fndecl): Correctly
11075         set fndecl as constexpr from qualifiers.
11076         (HIRCompileBase::compile_function): Test if fndecl is constexpr.
11077         (HIRCompileBase::compile_constant_item): Set fndecl as constexpr.
11078         * backend/rust-compile-intrinsic.cc : Update include.
11079         (finalize_intrinsic_block): Set fndecl as constexpr.
11080         * backend/rust-constexpr.cc : Update include.
11081         (VERIFY_CONSTANT): New.
11082         (is_instantiation_of_constexpr): New.
11083         (literal_type_p): New.
11084         (verify_constant): New.
11085         (find_array_ctor_elt): New.
11086         (array_index_cmp): New.
11087         (potential_constant_expression_1): New.
11088         (get_nth_callarg): New.
11089         (unshare_constructor): New.
11090         (maybe_save_constexpr_fundef): New.
11091         (returns): New.
11092         (breaks): New.
11093         (continues): New.
11094         (switches): New.
11095         (struct constexpr_global_ctx): Add new fields.
11096         (constexpr_fundef): New.
11097         (struct constexpr_call): New.
11098         (constexpr_call_hasher : ggc_ptr_hash<constexpr_call>): New.
11099         (enum constexpr_switch_state): New.
11100         (struct constexpr_ctx): Add new fields.
11101         (struct constexpr_fundef_hasher): New.
11102         (constexpr_fundef_table): New.
11103         (constexpr_fundef_hasher::equal): New.
11104         (constexpr_fundef_hasher::hash): New.
11105         (retrieve_constexpr_fundef): New.
11106         (uid_sensitive_constexpr_evaluation_value): New.
11107         (uid_sensitive_constexpr_evaluation_true_counter): New.
11108         (uid_sensitive_constexpr_evaluation_p): New.
11109         (class temp_override): New.
11110         (struct uid_sensitive_constexpr_evaluation_sentinel): New.
11111         (struct uid_sensitive_constexpr_evaluation_checker): New.
11112         (::uid_sensitive_constexpr_evaluation_sentinel): New.
11113         (::uid_sensitive_constexpr_evaluation_checker): New.
11114         (uid_sensitive_constexpr_evaluation_checker::evaluation_restricted_p): New.
11115         (constexpr_call_table): New.
11116         (constexpr_call_hasher::hash): New.
11117         (constexpr_call_hasher::equal): New.
11118         (maybe_initialize_constexpr_call_table): New.
11119         (fundef_copies_table): New.
11120         (get_fundef_copy): New.
11121         (save_fundef_copy): New.
11122         (constexpr_expression): Refactor in ...
11123         (eval_constant_expression): ...this.
11124         (eval_store_expression): Add 3 bool params.
11125         (eval_call_expression): Likewise.
11126         (eval_binary_expression): Likewise.
11127         (eval_statement_list): New.
11128         (extract_string_elt): New.
11129         (eval_conditional_expression): New.
11130         (eval_bit_field_ref): New.
11131         (eval_loop_expr): New.
11132         (eval_switch_expr): New.
11133         (eval_unary_expression): New.
11134         (call_stack): New.
11135         (call_stack_tick): New.
11136         (last_cx_error_tick): New.
11137         (push_cx_call_context): New.
11138         (pop_cx_call_context): New.
11139         (cx_error_context): New.
11140         (fold_expr): Adjust call to eval_constant_expression.
11141         (same_type_ignoring_tlq_and_bounds_p): New.
11142         (union_active_member): Port more for cxx constexpr.
11143         (fold_indirect_ref_1): New.
11144         (rs_fold_indirect_ref): Likewise.
11145         (rs_eval_indirect_ref): New (from corresponding cxx FE file).
11146         (eval_logical_expression): Adjust parameter list.
11147         (lookup_placeholder): New (from corresponding cxx FE file).
11148         (constant_value_1): Remove.
11149         (inline_asm_in_constexpr_error): New (from corresponding cxx FE file).
11150         (verify_ctor_sanity): New.
11151         (get_callee): Remove.
11152         (initialized_type): New.
11153         (maybe_constexpr_fn): Remove.
11154         (init_subob_ctx): New.
11155         (base_field_constructor_elt): New.
11156         (get_or_insert_ctor_field): New.
11157         (eval_vector_conditional_expression): New (from correponding cxx FE file).
11158         (eval_bare_aggregate): New.
11159         (cxx_eval_trinary_expression): New.
11160         (reduced_constant_expression_p): New.
11161         (adjust_temp_type): New.
11162         (free_constructor): New.
11163         (eval_and_check_array_index): New.
11164         (eval_array_reference): New.
11165         (eval_component_reference): New.
11166         (label_matches): New.
11167         (eval_constant_expression): New.
11168         (modifying_const_object_error): New.
11169         (is_empty_field): New.
11170         (eval_store_expression): New.
11171         (eval_binary_expression): New.
11172         (addr_of_non_const_var): New.
11173         (rs_bind_parameters_in_call): New.
11174         (eval_builtin_function_call): New.
11175         (eval_call_expression): New.
11176         (build_anon_member_initialization): New.
11177         (build_data_member_initialization): New.
11178         (constexpr_fn_retval): New.
11179         (constant_value_1): New.
11180         (decl_constant_value): New.
11181         (non_const_var_error): New.
11182         (get_callee): New.
11183         (get_function_named_in_call): New.
11184         (maybe_constexpr_fn): New.
11185         (get_nth_callarg): New.
11186         (var_in_maybe_constexpr_fn): New.
11187         (instantiate_cx_fn_r): New.
11188         (instantiate_constexpr_fns): New.
11189         (array_index_cmp): New.
11190         (unshare_constructor): New.
11191         (find_array_ctor_elt): New.
11192         (verify_constant): New.
11193         (find_heap_var_refs): New.
11194         (find_immediate_fndecl): New.
11195         (diag_array_subscript): New.
11196         (get_array_or_vector_nelts): New.
11197         (eval_and_check_array_index): New.
11198         (extract_string_elt): New.
11199         (is_valid_constexpr_fn): New.
11200         (explain_invalid_constexpr_fn): New.
11201         (register_constexpr_fundef): New.
11202         (maybe_save_constexpr_fundef): New.
11203         (eval_statement_list): New.
11204         (eval_conditional_expression): New.
11205         (eval_bit_field_ref): New.
11206         (returns): New.
11207         (breaks): New.
11208         (continues): New.
11209         (switches): New.
11210         (eval_loop_expr): New.
11211         (eval_switch_expr): New.
11212         (eval_unary_expression): New.
11213         (cxx_eval_outermost_constant_expr): New.
11214         (is_static_init_expression): New.
11215         (is_constant_expression): New.
11216         (is_nondependent_static_init_expression): New.
11217         (maybe_constant_init_1): New.
11218         (maybe_constant_init): New.
11219         (is_nondependent_constant_expression): New.
11220         (cv_cache): New.
11221         (maybe_constant_value): New.
11222         (potential_constant_expression): New.
11223         (struct check_for_return_continue_data): New.
11224         (check_for_return_continue): New.
11225         (decl_namespace_context): New.
11226         (decl_in_std_namespace_p): New.
11227         (is_std_construct_at): New.
11228         (cxx_dynamic_cast_fn_p): New.
11229         (is_std_allocator_allocate): New.
11230         (is_std_allocator_allocate): New.
11231         (potential_constant_expression_1): New.
11232         (potential_constant_expression_1): New.
11233         (fold_non_dependent_init): New.
11234         * backend/rust-constexpr.h (maybe_save_constexpr_fundef): New.
11236 2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>
11238         * rust-session-manager.cc (Session::compile_crate): Allow the dump of prettified AST
11239         (Session::dump_ast_pretty): New
11240         * rust-session-manager.h: Add new output file for pretty AST dump
11242 2023-01-05  David Malcolm  <dmalcolm@redhat.com>
11244         * resolve/rust-ast-resolve-item.cc (selftest::rust_flatten_list):
11245         Remove output to stderr.
11247 2023-01-05  David Malcolm  <dmalcolm@redhat.com>
11249         * Make-lang.in (selftest-rust-gdb): New.
11250         (selftest-rust-valgrind): New.
11252 2022-12-20  Marc Poulhiès  <dkm@kataplop.net>
11254         PR rust/108113
11255         * Make-lang.in (rust.serial): New variable.
11256         (rust1$(exeext)): Depend on $(rust.prev). Call LINK_PROGRESS.
11258 2022-12-14  Jakub Jelinek  <jakub@redhat.com>
11260         PR rust/106072
11261         * parse/rust-parse-impl.h (parse_closure_param): Store
11262         pattern->get_locus () in a temporary before std::move (pattern) is
11263         invoked.
11265 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11267         * CONTRIBUTING.md: New.
11268         * README.md: New.
11269         * logo.png: New.
11271 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11273         * config-lang.in: New.
11275 2022-12-13  Arthur Cohen  <arthur.cohen@embecosm.com>
11277         * lang.opt (-frust-incomplete-and-experimental-compiler-do-not-use):
11278         New.
11279         * rust-session-manager.cc (Session::compile_crate): Check it.
11280         * Make-lang.in (RUST_SELFTEST_FLAGS): Add it.
11282 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11284         * Make-lang.in: New.
11286 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11288         * lang.opt: New.
11290 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11292         * lang-specs.h: New.
11294 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11296         * rust-lang.cc: New.
11297         * rust-session-manager.cc: New.
11298         * rust-session-manager.h: New.
11300 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11302         * rustspec.cc: New.
11304 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11306         * rust-diagnostics.cc: New.
11307         * rust-diagnostics.h: New.
11308         * rust-gcc-diagnostics.cc: New.
11309         * rust-linemap.cc: New.
11310         * rust-linemap.h: New.
11311         * rust-location.h: New.
11312         * rust-system.h: New.
11314 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11315             David Faust  <david.faust@oracle.com>
11316             Faisal Abbas  <90.abbasfaisal@gmail.com>
11318         * backend/rust-compile-context.cc: New.
11319         * backend/rust-compile-context.h: New.
11320         * backend/rust-compile.cc: New.
11321         * backend/rust-compile.h: New.
11322         * backend/rust-constexpr.cc: New.
11323         * backend/rust-constexpr.h: New.
11325 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11326             David Faust  <david.faust@oracle.com>
11328         * backend/rust-compile-block.cc: New.
11329         * backend/rust-compile-block.h: New.
11330         * backend/rust-compile-expr.cc: New.
11331         * backend/rust-compile-expr.h: New.
11332         * backend/rust-compile-extern.h: New.
11333         * backend/rust-compile-fnparam.cc: New.
11334         * backend/rust-compile-fnparam.h: New.
11335         * backend/rust-compile-implitem.cc: New.
11336         * backend/rust-compile-implitem.h: New.
11337         * backend/rust-compile-intrinsic.cc: New.
11338         * backend/rust-compile-intrinsic.h: New.
11339         * backend/rust-compile-item.cc: New.
11340         * backend/rust-compile-item.h: New.
11341         * backend/rust-compile-pattern.cc: New.
11342         * backend/rust-compile-pattern.h: New.
11343         * backend/rust-compile-resolve-path.cc: New.
11344         * backend/rust-compile-resolve-path.h: New.
11345         * backend/rust-compile-stmt.cc: New.
11346         * backend/rust-compile-stmt.h: New.
11347         * backend/rust-compile-struct-field-expr.cc: New.
11348         * backend/rust-compile-struct-field-expr.h: New.
11349         * backend/rust-compile-type.cc: New.
11350         * backend/rust-compile-type.h: New.
11351         * backend/rust-compile-var-decl.h: New.
11353 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11354             David Faust  <david.faust@oracle.com>
11356         * backend/rust-builtins.h: New.
11357         * backend/rust-compile-base.cc: New.
11358         * backend/rust-compile-base.h: New.
11359         * backend/rust-mangle.cc: New.
11360         * backend/rust-mangle.h: New.
11361         * backend/rust-tree.cc: New.
11362         * backend/rust-tree.h: New.
11363         * rust-backend.h: New.
11364         * rust-gcc.cc: New.
11366 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11368         * metadata/rust-export-metadata.cc: New.
11369         * metadata/rust-export-metadata.h: New.
11370         * metadata/rust-extern-crate.cc: New.
11371         * metadata/rust-extern-crate.h: New.
11372         * metadata/rust-import-archive.cc: New.
11373         * metadata/rust-imports.cc: New.
11374         * metadata/rust-imports.h: New.
11375         * rust-object-export.cc: New.
11376         * rust-object-export.h: New.
11378 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11380         * checks/lints/rust-lint-unused-var.cc: New.
11381         * checks/lints/rust-lint-unused-var.h: New.
11383 2022-12-13  Thomas Young  <wenzhang5800@gmail.com>
11385         * checks/lints/rust-lint-marklive-base.h: New.
11386         * checks/lints/rust-lint-marklive.cc: New.
11387         * checks/lints/rust-lint-marklive.h: New.
11388         * checks/lints/rust-lint-scan-deadcode.h: New.
11390 2022-12-13  Arthur Cohen  <arthur.cohen@embecosm.com>
11392         * checks/errors/privacy/rust-privacy-check.cc: New.
11393         * checks/errors/privacy/rust-privacy-check.h: New.
11394         * checks/errors/privacy/rust-privacy-common.h: New.
11395         * checks/errors/privacy/rust-privacy-ctx.cc: New.
11396         * checks/errors/privacy/rust-privacy-ctx.h: New.
11397         * checks/errors/privacy/rust-privacy-reporter.cc: New.
11398         * checks/errors/privacy/rust-privacy-reporter.h: New.
11399         * checks/errors/privacy/rust-pub-restricted-visitor.cc: New.
11400         * checks/errors/privacy/rust-pub-restricted-visitor.h: New.
11401         * checks/errors/privacy/rust-reachability.cc: New.
11402         * checks/errors/privacy/rust-reachability.h: New.
11403         * checks/errors/privacy/rust-visibility-resolver.cc: New.
11404         * checks/errors/privacy/rust-visibility-resolver.h: New.
11406 2022-12-13  Arthur Cohen  <arthur.cohen@embecosm.com>
11408         * checks/errors/rust-const-checker.cc: New.
11409         * checks/errors/rust-const-checker.h: New.
11411 2022-12-13  Arthur Cohen  <arthur.cohen@embecosm.com>
11413         * checks/errors/rust-unsafe-checker.cc: New.
11414         * checks/errors/rust-unsafe-checker.h: New.
11416 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11418         * typecheck/rust-autoderef.cc: New.
11419         * typecheck/rust-autoderef.h: New.
11420         * typecheck/rust-casts.cc: New.
11421         * typecheck/rust-casts.h: New.
11422         * typecheck/rust-coercion.cc: New.
11423         * typecheck/rust-coercion.h: New.
11424         * typecheck/rust-hir-dot-operator.cc: New.
11425         * typecheck/rust-hir-dot-operator.h: New.
11426         * typecheck/rust-hir-inherent-impl-overlap.h: New.
11427         * typecheck/rust-hir-path-probe.h: New.
11428         * typecheck/rust-hir-trait-ref.h: New.
11429         * typecheck/rust-hir-type-bounds.h: New.
11430         * typecheck/rust-substitution-mapper.cc: New.
11431         * typecheck/rust-substitution-mapper.h: New.
11432         * typecheck/rust-tycheck-dump.h: New.
11433         * typecheck/rust-tyctx.cc: New.
11434         * typecheck/rust-tyty-bounds.cc: New.
11435         * typecheck/rust-tyty-call.cc: New.
11436         * typecheck/rust-tyty-call.h: New.
11437         * typecheck/rust-tyty-cmp.h: New.
11438         * typecheck/rust-tyty-rules.h: New.
11440 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11442         * typecheck/rust-tyty.cc: New.
11443         * typecheck/rust-tyty.h: New.
11445 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11447         * typecheck/rust-hir-trait-resolve.cc: New.
11448         * typecheck/rust-hir-trait-resolve.h: New.
11449         * typecheck/rust-hir-type-check-base.cc: New.
11450         * typecheck/rust-hir-type-check-base.h: New.
11451         * typecheck/rust-hir-type-check-enumitem.cc: New.
11452         * typecheck/rust-hir-type-check-enumitem.h: New.
11453         * typecheck/rust-hir-type-check-expr.cc: New.
11454         * typecheck/rust-hir-type-check-expr.h: New.
11455         * typecheck/rust-hir-type-check-implitem.cc: New.
11456         * typecheck/rust-hir-type-check-implitem.h: New.
11457         * typecheck/rust-hir-type-check-item.cc: New.
11458         * typecheck/rust-hir-type-check-item.h: New.
11459         * typecheck/rust-hir-type-check-path.cc: New.
11460         * typecheck/rust-hir-type-check-pattern.cc: New.
11461         * typecheck/rust-hir-type-check-pattern.h: New.
11462         * typecheck/rust-hir-type-check-stmt.cc: New.
11463         * typecheck/rust-hir-type-check-stmt.h: New.
11464         * typecheck/rust-hir-type-check-struct-field.h: New.
11465         * typecheck/rust-hir-type-check-struct.cc: New.
11466         * typecheck/rust-hir-type-check-toplevel.cc: New.
11467         * typecheck/rust-hir-type-check-toplevel.h: New.
11468         * typecheck/rust-hir-type-check-type.cc: New.
11469         * typecheck/rust-hir-type-check-type.h: New.
11470         * typecheck/rust-hir-type-check-util.cc: New.
11471         * typecheck/rust-hir-type-check-util.h: New.
11472         * typecheck/rust-hir-type-check.cc: New.
11473         * typecheck/rust-hir-type-check.h: New.
11474         * typecheck/rust-tyty-visitor.h: New.
11476 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11478         * util/rust-canonical-path.h: New.
11479         * util/rust-common.h: New.
11480         * util/rust-hir-map.cc: New.
11481         * util/rust-hir-map.h: New.
11482         * util/rust-identifier.h: New.
11483         * util/rust-lang-item.h: New.
11484         * util/rust-mapping-common.h: New.
11485         * util/rust-stacked-contexts.h: New.
11487 2022-12-13  Arthur Cohen  <arthur.cohen@embecosm.com>
11489         * util/rust-attributes.cc: New.
11490         * util/rust-attributes.h: New.
11492 2022-12-13  Arthur Cohen  <arthur.cohen@embecosm.com>
11494         * util/rust-optional-test.cc: New.
11495         * util/rust-optional.h: New.
11497 2022-12-13  Arthur Cohen  <arthur.cohen@embecosm.com>
11499         * util/rust-base62.cc: New.
11500         * util/rust-base62.h: New.
11502 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11504         * util/rust-abi.cc: New.
11505         * util/rust-abi.h: New.
11507 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11509         * util/fnv-hash.h: New.
11511 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11513         * util/rust-make-unique.h: New.
11515 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11517         * hir/rust-ast-lower-base.cc: New.
11518         * hir/rust-ast-lower-base.h: New.
11519         * hir/rust-ast-lower-block.h: New.
11520         * hir/rust-ast-lower-enumitem.h: New.
11521         * hir/rust-ast-lower-expr.h: New.
11522         * hir/rust-ast-lower-extern.h: New.
11523         * hir/rust-ast-lower-implitem.h: New.
11524         * hir/rust-ast-lower-item.cc: New.
11525         * hir/rust-ast-lower-item.h: New.
11526         * hir/rust-ast-lower-pattern.cc: New.
11527         * hir/rust-ast-lower-pattern.h: New.
11528         * hir/rust-ast-lower-stmt.h: New.
11529         * hir/rust-ast-lower-struct-field-expr.h: New.
11530         * hir/rust-ast-lower-type.h: New.
11531         * hir/rust-ast-lower.cc: New.
11532         * hir/rust-ast-lower.h: New.
11533         * hir/rust-hir-dump.cc: New.
11534         * hir/rust-hir-dump.h: New.
11536 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11538         * hir/tree/rust-hir-full-decls.h: New.
11539         * hir/tree/rust-hir-full-test.cc: New.
11540         * hir/tree/rust-hir-full.h: New.
11541         * hir/tree/rust-hir-visitor.h: New.
11542         * hir/tree/rust-hir.h: New.
11544 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11546         * hir/tree/rust-hir-expr.h: New.
11547         * hir/tree/rust-hir-item.h: New.
11548         * hir/tree/rust-hir-path.h: New.
11549         * hir/tree/rust-hir-pattern.h: New.
11550         * hir/tree/rust-hir-stmt.h: New.
11551         * hir/tree/rust-hir-type.h: New.
11553 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
11555         * resolve/rust-ast-resolve-base.cc: New.
11556         * resolve/rust-ast-resolve-base.h: New.
11557         * resolve/rust-ast-resolve-expr.cc: New.
11558         * resolve/rust-ast-resolve-expr.h: New.
11559         * resolve/rust-ast-resolve-implitem.h: New.
11560         * resolve/rust-ast-resolve-item.cc: New.
11561         * resolve/rust-ast-resolve-item.h: New.
11562         * resolve/rust-ast-resolve-path.cc: New.
11563         * resolve/rust-ast-resolve-path.h: New.
11564         * resolve/rust-ast-resolve-pattern.cc: New.
11565         * resolve/rust-ast-resolve-pattern.h: New.
11566         * resolve/rust-ast-resolve-stmt.cc: New.
11567         * resolve/rust-ast-resolve-stmt.h: New.
11568         * resolve/rust-ast-resolve-struct-expr-field.cc: New.
11569         * resolve/rust-ast-resolve-struct-expr-field.h: New.
11570         * resolve/rust-ast-resolve-toplevel.h: New.
11571         * resolve/rust-ast-resolve-type.cc: New.
11572         * resolve/rust-ast-resolve-type.h: New.
11573         * resolve/rust-ast-resolve.cc: New.
11574         * resolve/rust-ast-resolve.h: New.
11575         * resolve/rust-ast-verify-assignee.h: New.
11576         * resolve/rust-name-resolver.cc: New.
11577         * resolve/rust-name-resolver.h: New.
11579 2022-12-13  Arthur Cohen  <arthur.cohen@embecosm.com>
11580             Philip Herron  <philip.herron@embecosm.com>
11581             Joel Phillips  <simplytheother@gmail.com>
11583         * expand/rust-attribute-visitor.cc: New.
11584         * expand/rust-attribute-visitor.h: New.
11585         * expand/rust-macro-builtins.cc: New.
11586         * expand/rust-macro-builtins.h: New.
11587         * expand/rust-macro-expand.cc: New.
11588         * expand/rust-macro-expand.h: New.
11589         * expand/rust-macro-invoc-lexer.cc: New.
11590         * expand/rust-macro-invoc-lexer.h: New.
11591         * expand/rust-macro-substitute-ctx.cc: New.
11592         * expand/rust-macro-substitute-ctx.h: New.
11594 2022-12-13  Joel Phillips  <simplytheother@gmail.com>
11595             Philip Herron  <philip.herron@embecosm.com>
11596             Arthur Cohen  <arthur.cohen@embecosm.com>
11598         * parse/rust-parse-impl.h: New, second half.
11600 2022-12-13  Joel Phillips  <simplytheother@gmail.com>
11601             Philip Herron  <philip.herron@embecosm.com>
11602             Arthur Cohen  <arthur.cohen@embecosm.com>
11604         * parse/rust-cfg-parser.cc: New.
11605         * parse/rust-cfg-parser.h: New.
11606         * parse/rust-parse-impl.h: New.
11607         * parse/rust-parse.cc: New.
11608         * parse/rust-parse.h: New.
11610 2022-12-13  Joel Phillips  <simplytheother@gmail.com>
11611             Philip Herron  <philip.herron@embecosm.com>
11612             Arthur Cohen  <arthur.cohen@embecosm.com>
11613             Mark Wielaard  <mark@klomp.org>
11615         * lex/rust-codepoint.h: New.
11616         * lex/rust-lex.cc: New.
11617         * lex/rust-lex.h: New.
11618         * lex/rust-token.cc: New.
11619         * lex/rust-token.h: New.
11620         * rust-buffered-queue.h: New.
11622 2022-12-13  Joel Phillips  <simplytheother@gmail.com>
11623             Philip Herron  <philip.herron@embecosm.com>
11624             Arthur Cohen  <arthur.cohen@embecosm.com>
11626         * ast/rust-ast-dump.cc: New.
11627         * ast/rust-ast-dump.h: New.
11628         * ast/rust-ast-visitor.h: New.
11629         * ast/rust-cond-compilation.h: New.
11631 2022-12-13  Joel Phillips  <simplytheother@gmail.com>
11632             Philip Herron  <philip.herron@embecosm.com>
11634         * ast/rust-expr.h: New.
11635         * ast/rust-macro.h: New.
11636         * ast/rust-path.h: New.
11637         * ast/rust-pattern.h: New.
11638         * ast/rust-stmt.h: New.
11639         * ast/rust-type.h: New.
11641 2022-12-13  Joel Phillips  <simplytheother@gmail.com>
11642             Philip Herron  <philip.herron@embecosm.com>
11644         * ast/rust-item.h: New.
11646 2022-12-13  Joel Phillips  <simplytheother@gmail.com>
11647             Philip Herron  <philip.herron@embecosm.com>
11648             Arthur Cohen  <arthur.cohen@embecosm.com>
11650         * ast/rust-ast-full-decls.h: New.
11651         * ast/rust-ast-full-test.cc: New.
11652         * ast/rust-ast-full.h: New.
11653         * ast/rust-ast.h: New.
11654         * operator.h: New.
11657 Copyright (C) 2022-2024 Free Software Foundation, Inc.
11659 Copying and distribution of this file, with or without modification,
11660 are permitted in any medium without royalty provided the copyright
11661 notice and this notice are preserved.