diff --git a/ChangeLog b/ChangeLog index 644bea96c4c..9845720a24f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,13 @@ +2024-01-16 Pierre-Emmanuel Patry + + * Makefile.def: Add a dependency to libgrust for all-gcc. + * Makefile.in: Regenerate the file. + +2024-01-16 Pierre-Emmanuel Patry + + * Makefile.def: Add libgrust target to bootstrap. + * Makefile.in: Regenerate. + 2024-01-15 Andrew Pinski * MAINTAINERS (DCO): Add myself. diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9fd99c034d9..01c8b019298 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,72 @@ +2024-01-16 Wilco Dijkstra + + * config/aarch64/aarch64-cores.def (AARCH64_CORE): Add 'cobalt-100' CPU. + * config/aarch64/aarch64-tune.md: Regenerated. + * doc/invoke.texi (-mcpu): Add cobalt-100 core. + +2024-01-16 Wilco Dijkstra + + PR target/112573 + * config/aarch64/aarch64.cc (aarch64_legitimize_address): Reassociate + badly formed CONST expressions. + +2024-01-16 Daniel Cederman + + * config/sparc/sparc.cc (next_active_non_empty_insn): Length 0 treated as empty + +2024-01-16 Daniel Cederman + + * config/sparc/sparc.cc (atomic_insn_for_leon3_p): Treat membar_storeload as atomic + * config/sparc/sync.md (membar_storeload): Turn into named insn + and add GR712RC errata workaround. + (membar_v8): Add GR712RC errata workaround. + +2024-01-16 Andreas Larsson + + * config/sparc/sync.md (*membar_storeload_leon3): Remove + (*membar_storeload): Enable for LEON + +2024-01-16 Jakub Jelinek + + PR tree-optimization/113372 + PR middle-end/90348 + PR middle-end/110115 + PR middle-end/111422 + * cfgexpand.cc (add_scope_conflicts_2): New function. + (add_scope_conflicts_1): Use it. + +2024-01-16 Georg-Johann Lay + + * config/avr/avr-mcus.def (avr16eb14, avr16eb20, avr16eb28, avr16eb32) + (avr16ea28, avr16ea32, avr16ea48, avr32ea28, avr32ea32, avr32ea48): Add. + * doc/avr-mmcu.texi: Regenerate. + +2024-01-16 Feng Xue + + PR tree-optimization/113091 + * tree-vect-slp.cc (vect_slp_has_scalar_use): New function. + (vect_bb_slp_mark_live_stmts): New parameter scalar_use_map, check + scalar use with new function. + (vect_bb_slp_mark_live_stmts): New function as entry to existing + overriden functions with same name. + (vect_slp_analyze_operations): Call new entry function to mark + live statements. + +2024-01-16 Juzhe-Zhong + + PR target/113404 + * config/riscv/riscv.cc (riscv_override_options_internal): Report sorry + for RVV in big-endian mode. + +2024-01-16 Yanzhang Wang + + * config/riscv/riscv.cc (riscv_arg_has_vector): Delete. + (riscv_pass_in_vector_p): Delete. + (riscv_init_cumulative_args): Delete the checking. + (riscv_get_arg_info): Delete the checking. + (riscv_function_value): Delete the checking. + * config/riscv/riscv.h: Delete the member for checking. + 2024-01-15 Georg-Johann Lay * doc/invoke.texi (AVR Options) [-mskip-bug]: Add documentation. diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP index 9952a5e3bfc..6e69a00502c 100644 --- a/gcc/DATESTAMP +++ b/gcc/DATESTAMP @@ -1 +1 @@ -20240116 +20240117 diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog index 47019bd346b..6038d47f9e9 100644 --- a/gcc/c-family/ChangeLog +++ b/gcc/c-family/ChangeLog @@ -1,3 +1,9 @@ +2024-01-16 Eric Botcazou + + PR ada/113397 + * c-ada-spec.cc (check_type_name_conflict): Add guard for the + presence of DECL_NAME on a TYPE_DECL. + 2024-01-11 Julian Brown * c-pretty-print.cc (c_pretty_printer::postfix_expression, diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 49e93ecc0c4..9daad1ffb00 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,40 @@ +2024-01-16 Nathaniel Shead + + PR c++/113292 + * decl2.cc (get_tls_wrapper_fn): Set DECL_CONTEXT. + (c_parse_final_cleanups): Suppress warning for no definition of + TLS wrapper functions in header modules. + * module.cc (trees_out::lang_decl_vals): Write wrapped variable + for TLS wrapper functions. + (trees_in::lang_decl_vals): Read it. + (trees_out::decl_value): Write TLS model for thread-local vars. + (trees_in::decl_value): Read it for new decls. Remember to emit + definitions of TLS wrapper functions later. + +2024-01-16 Nathaniel Shead + + * name-lookup.h (enum scope_kind): Add 'sk_count'. + * name-lookup.cc (cp_binding_level_descriptor): Add missing + scope kinds. Add assertion that the list is up to date. Fix + handling of explicit_spec_p. + +2024-01-16 Marek Polacek + + * decl.cc (grokdeclarator) : Tweak diagnostic + messages. + +2024-01-16 Marek Polacek + + PR c++/113340 + * decl.cc (grokdeclarator) : Clear + is_xobj_member_function in case of an error. + +2024-01-16 waffl3x + + PR c++/113307 + * parser.cc (cp_parser_parameter_declaration): Reject packs + on xobj params. + 2024-01-15 Marek Polacek PR c++/110065 diff --git a/gcc/rust/ChangeLog b/gcc/rust/ChangeLog index 65a4b1c4103..c093556817c 100644 --- a/gcc/rust/ChangeLog +++ b/gcc/rust/ChangeLog @@ -1,3 +1,8328 @@ +2024-01-16 Owen Avery + + * hir/tree/rust-hir-pattern.h + (TupleStructItems::ItemType::RANGE): Rename to... + (TupleStructItems::ItemType::RANGED): ...here. + (TupleStructItems::ItemType::NO_RANGE): Rename to... + (TupleStructItems::ItemType::MULTIPLE): ...here. + (TuplePatternItems::TuplePatternItemType): Rename to... + (TuplePatternItems::ItemType): ...here. + : Handle renames. + * backend/rust-compile-pattern.cc: Likewise. + * typecheck/rust-hir-type-check-pattern.cc: Likewise. + * checks/errors/borrowck/rust-bir-builder-pattern.h: Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * lex/rust-lex.cc (Lexer::parse_decimal_int_or_float): Remove + additional zero after empty floating point. + * parse/rust-parse-impl.h (Parser::left_denotation): Handle float with + empty floating point. + +2024-01-16 Raiki Tamura + + * backend/rust-compile-expr.cc (CompileExpr::generate_closure_function): + Fix reference to node. + * backend/rust-mangle.cc (struct V0Path): Modified to accept closures. + (v0_crate_path): Modified to accept closures. + (v0_closure): New function to mangle closures. + (v0_path): Modified to accept closures + * util/rust-mapping-common.h (UNKNOWN_NODEID): Change to UINT32_MAX. + (UNKNOWN_HIRID): Change to UINT32_MAX. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Move from here... + * ast/rust-ast-visitor.h: ... to here. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Move to header + file. + (TokenCollector::visit_items_joined_by_separator): Likewise. + (TokenCollector::visit_as_line): Likewise. + (TokenCollector::visit_items_as_lines): Likewise. + (TokenCollector::visit_items_as_block): Likewise. + * ast/rust-ast-collector.h: Add implementation. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Add visitor for + VariadicParam and remove Self parameter visitor from Function visit. + * expand/rust-cfg-strip.cc (CfgStrip::maybe_strip_self_param): Remove + function. + (CfgStrip::maybe_strip_trait_method_decl): Remove self parameter visit. + (CfgStrip::maybe_strip_function_params): Handle new function + parameters. + (CfgStrip::visit): Handle VariadicParam, SelfParam and FunctionParam. + * expand/rust-expand-visitor.cc (ExpandVisitor::expand_self_param): + Remove function. + (ExpandVisitor::expand_trait_method_decl): Do not visit self parameter. + (ExpandVisitor::visit): Add visit for VariadicParam, FunctionParam and + SelfParam. + (ExpandVisitor::expand_function_params): Visit parameters instead. + * expand/rust-expand-visitor.h: Update function prototypes. + * resolve/rust-ast-resolve-item.cc (ResolveItem::visit): Update visit + with new parameters. + (ResolveTraitItems::visit): Likewise. + * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): + Update visit functions with the new visitor functions for VariadicParam + SelfParam and FunctionParam. + * resolve/rust-early-name-resolver.h: Update function prototypes. + * ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Update visitor + according to the new function parameter structures. + * ast/rust-ast-visitor.h: Update prototypes and add visitor virtual + functions for SelfParam, FunctionParam and VariadicParam. + * ast/rust-ast.cc (Function::Function): Move constructor in + implementation instead of header. + (Function::operator=): Likewise. + (Function::as_string): Update function with pointer dereference. + (VariadicParam::as_string): Likewise. + (TraitFunctionDecl::as_string): Likewise. + (TraitMethodDecl::as_string): Likewise. + (FunctionParam::accept_vis): Add function for visitor. + (SelfParam::accept_vis): Likewise. + (VariadicParam::accept_vis): Likewise. + (TraitItemFunc::TraitItemFunc): Move constructor to implementation + file. + (TraitItemFunc::operator=): Likewise. + (TraitItemMethod::TraitItemMethod): Likewise. + (TraitItemMethod::operator=): Likewise. + * ast/rust-item.h (class Function): Remove self optional member. + (class TraitMethodDecl): Likewise. + (class TraitFunctionDecl): Likewise. + (class Param): Add abstract parameter class. + (class SelfParam): Inherit from Param and remove parameter common + members. + (class FunctionParam): Likewise. + (class VariadicParam): Likewise. + (struct Visibility): Move structure declaration. + (class VisItem): Likewise. + * checks/errors/rust-ast-validation.cc (ASTValidation::visit): Add + a self parameter check during AST validation. + * checks/errors/rust-ast-validation.h: Add function prototype. + * expand/rust-derive-clone.cc (DeriveClone::clone_fn): Update function + constructor. + * hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_self): Rework + function for the new parameters. + (ASTLoweringBase::visit): Add visit functions for VariadicParam, + FunctionParam and SelfParam. + * hir/rust-ast-lower-base.h: Update function prototypes. + * parse/rust-parse-impl.h (Parser::parse_function): Update function + according to new function representation. + (Parser::parse_function_param): Return vector of abstract param instead + of FunctionParam. + (Parser::parse_method): Update according to new representation. + (Parser::parse_trait_item): Likewise. + (Parser::parse_self_param): Error out with + self pointers and prevent the lexer from eating regular function + parameters. Update return type. + * parse/rust-parse.h: Update function return types. + * ast/rust-ast-collector.h: Add VariadicParam visit prototype. + * ast/rust-ast.h (struct Visibility): Move struct declaration. + (class VisItem): Likewise. + * ast/rust-expr.h: Update included files. + * checks/errors/rust-feature-gate.h: Add visitor functions for + SelfParam, FunctionParam and VariadicParam. + * expand/rust-cfg-strip.h: Update function prototypes. + * expand/rust-derive.h: Likewise. + * hir/rust-ast-lower-implitem.h: Handle special arguments. + * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Likewise. + * metadata/rust-export-metadata.cc (ExportContext::emit_function): + Likewise. + * resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Add visitor + functions. + * resolve/rust-ast-resolve-base.h: Update prototypes. + * resolve/rust-ast-resolve-stmt.h: Handle new parameter kind. + * resolve/rust-default-resolver.cc (DefaultResolver::visit): Likewise. + * resolve/rust-default-resolver.h: Update prototype. + * util/rust-attributes.cc (AttributeChecker::visit): Add visitor + functions for SelfParam and VariadicParam. + * util/rust-attributes.h: Add visit prototypes. + +2024-01-16 Pierre-Emmanuel Patry + + * checks/errors/rust-ast-validation.cc (ASTValidation::visit): Add + check for additional named argument as well as variadic argument's + position. + * checks/errors/rust-ast-validation.h: Add visit function prototype for + external functions. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-visitor.cc (ContextualASTVisitor::visit): Push the new + trait context when visiting a trait. + * ast/rust-ast-visitor.h: Add visit function prototype and TRAIT + context. + +2024-01-16 Pierre-Emmanuel Patry + + * checks/errors/rust-ast-validation.cc (ASTValidation::visit): Change + reported error location to the lifetime location. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Check if there is + a label before visit. + * checks/errors/rust-ast-validation.cc (ASTValidation::visit): Emit an + error when a label has a forbidden name. + * checks/errors/rust-ast-validation.h: Add function prototype. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-expr.h (class BreakExpr): Change Lifetime to LoopLabel. + * hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Lower lifetime + inside the label instead. + * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Resolve the + inner lifetime. + +2024-01-16 Pierre-Emmanuel Patry + + * lex/rust-lex.cc (Lexer::parse_raw_identifier): Use const value. + * parse/rust-parse-impl.h (Parser::parse_simple_path_segment): + Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * lex/rust-lex.cc (RS_TOKEN): Remove local map. + (RS_TOKEN_KEYWORD): Likewise. + (Lexer::classify_keyword): Change call to utils. + * util/rust-keyword-values.cc (get_keywords): Add init function. + (RS_TOKEN_KEYWORD): Call to X macro. + * util/rust-keyword-values.h: Change from set to a map. + +2024-01-16 Pierre-Emmanuel Patry + + * checks/errors/rust-ast-validation.cc (RS_TOKEN): Remove locale set. + (RS_TOKEN_KEYWORD): Likewise. + (ASTValidation::visit): Change keyword set call to the one from utils. + +2024-01-16 Pierre-Emmanuel Patry + + * Make-lang.in: Add rust-keyword-values.cc to the list. + * util/rust-keyword-values.cc: New file. + * util/rust-keyword-values.h: New file. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-attribute-values.h (RUST_ATTRIBUTES_VALUE_H): Remove old + header guard. + (RUST_ATTRIBUTE_VALUES_H): Add new one. + +2024-01-16 Pierre-Emmanuel Patry + + * checks/errors/rust-ast-validation.cc (RS_TOKEN): Add keyword set. + (RS_TOKEN_KEYWORD): Likewise. + (ASTValidation::visit): Add validation on lifetime visit. + * checks/errors/rust-ast-validation.h: Add function prototype. + +2024-01-16 Owen Avery + + * ast/rust-item.h + (class Method): Remove. + (Function::self_param): New. + (Function::has_self_param): New. + (Function::Function): Initialize self_param. + (Function::operator=): Likewise. + (Function::get_self_param): New. + * ast/rust-ast.cc + (Method::as_string): Remove. + (Method::accept_vis): Remove. + * ast/rust-ast-collector.cc + (TokenCollector::visit): + Remove AST::Method visitor, handle self_param in AST::Function visitor. + * ast/rust-ast-collector.h + (TokenCollector::visit): Remove AST::Method visitor. + * ast/rust-ast-full-decls.h (class Method): Remove. + * ast/rust-ast-visitor.h + (ASTVisitor::visit): Remove AST::Method visitor. + (DefaultASTVisitor::visit): Likewise. + * ast/rust-ast-visitor.cc + (DefaultASTVisitor::visit): + Remove AST::Method visitor, handle self_param in AST::Function visitor. + * checks/errors/rust-feature-gate.cc + (FeatureGate::visit): Remove AST::Method visitor. + * checks/errors/rust-feature-gate.h + (FeatureGate::visit): Likewise.. + * expand/rust-cfg-strip.cc + (CfgStrip::visit): + Remove AST::Method visitor, handle self_param in AST::Function visitor. + * expand/rust-cfg-strip.h + (CfgStrip::visit): Remove AST::Method visitor. + * expand/rust-derive-clone.cc + (DeriveClone::clone_fn): Return AST::Function instead of AST::Method. + * expand/rust-derive.h (DeriveVisitor::visit): Remove AST::Method visitor. + * expand/rust-expand-visitor.cc + (ExpandVisitor::visit): + Remove AST::Method visitor, handle self_param in AST::Function visitor. + * expand/rust-expand-visitor.h: + (ExpandVisitor::visit): Remove AST::Method visitor. + * hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Likewise. + * hir/rust-ast-lower-base.h (ASTLoweringBase::visit): Likewise. + * hir/rust-ast-lower-implitem.h + (ASTLowerImplItem::visit): + Remove AST::Method visitor, handle self_param in AST::Function visitor. + * parse/rust-parse-impl.h: Include optional.h. + (Parser::parse_function): Adjust AST::Function construction. + (Parser::parse_inherent_impl_function_or_method): + Construct AST::Function instead of AST::Method, + adjust AST::Function construction. + (Parser::parse_trait_impl_function_or_method): Likewise. + (Parser::parse_method): + Return std::unique_ptr instead of AST::Method. + * parse/rust-parse.h + (Parser::parse_method): Likewise. + * resolve/rust-ast-resolve-base.cc + (ResolverBase::visit): Remove AST::Method visitor. + * resolve/rust-ast-resolve-base.h + (ResolverBase::visit): Likewise. + * resolve/rust-ast-resolve-implitem.h + (ResolveToplevelImplItem::visit): Likewise. + * resolve/rust-ast-resolve-item.cc + (ResolveItem::visit): Remove AST::Method visitor, + handle self_param in AST::Function visitor. + * resolve/rust-ast-resolve-item.h + (ResolveItem::visit): Remove AST::Method visitor. + * resolve/rust-default-resolver.cc + (DefaultResolver::visit): Remove AST::Method visitor. + * resolve/rust-default-resolver.h + (DefaultResolver::visit): Likewise. + * resolve/rust-early-name-resolver.cc + (EarlyNameResolver::visit): Remove AST::Method visitor, + handle self_param in AST::Function visitor. + * resolve/rust-early-name-resolver.h + (EarlyNameResolver::visit): Remove AST::Method visitor. + * resolve/rust-toplevel-name-resolver-2.0.cc + (TopLevel::visit): Likewise. + * resolve/rust-toplevel-name-resolver-2.0.h + (TopLevel::visit): Likewise. + * util/rust-attributes.cc + (AttributeChecker::visit): Likewise. + * util/rust-attributes.h + (AttributeChecker::visit): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * parse/rust-parse-impl.h (Parser::parse_named_function_param): Add + new parsing ability. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.cc (ExternalFunctionItem::as_string): Adapt as_string + function to the new ast representation. + (NamedFunctionParam::as_string): Likewise. + * ast/rust-item.h: Add a function to test whether a FunctionParam has + a name pattern. + * expand/rust-cfg-strip.cc (CfgStrip::visit): Adapt cfg strip visitor + for the new variadic arguments. + * hir/rust-ast-lower-extern.h: Adapt lowering to the new variadic + function representation. + * metadata/rust-export-metadata.cc (ExportContext::emit_function): + Change call to constructor. + * parse/rust-parse-impl.h (Parser::parse_named_function_param): Change + NamedFunctionParam parsing to accomodate new variadic representation. + (Parser::parse_external_item): Change external item parsing to use the + new NamedFunctionParam variadics. + * parse/rust-parse.h: Add new parsing function prototypes. + * ast/rust-ast-collector.cc (TokenCollector::visit): Rework token + collection to take into account variadic parameters. + * ast/rust-ast-visitor.cc: Likewise. + * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Change function + bound to avoid getting the type of a variadic parameter. + * resolve/rust-ast-resolve-item.cc (ResolveExternItem::visit): + Likewise. + * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): + Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-item.h (class NamedFunctionParam): Add variadic boolean and + another constructor. + * hir/rust-ast-lower-extern.h: Avoid last parameter when variadic. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-item.h: Add a getter to check if a given function is + variadic. + +2024-01-16 Pierre-Emmanuel Patry + + * parse/rust-parse-impl.h (Parser::parse_function_param): Parse + variadic functions. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-item.h (class FunctionParam): Add some informations to + function parameters in order to be able to store variadic argument as + a function parameter. + +2024-01-16 Pierre-Emmanuel Patry + + * checks/errors/rust-ast-validation.cc (ASTValidation::visit): Adapt + the call to the new visit functions. + (ASTValidation::check): Launch the parent class visitor root function. + * checks/errors/rust-ast-validation.h (class ASTValidation): Inherit + from the contextual visitor. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-visitor.cc (ContextualASTVisitor::visit): Add multiple + context saving calls. + * ast/rust-ast-visitor.h (class DefaultASTVisitor): Make visit + functions virtual. + (class ContextualASTVisitor): Add a stack like container for the + current context chain. + +2024-01-16 Pierre-Emmanuel Patry + + * Make-lang.in: Add the new visitor object file. + * ast/rust-ast-visitor.h (class DefaultASTVisitor): Create the default + visitor class. + * ast/rust-ast.h: Add a new reference getter for visitor pattern. + * ast/rust-ast-visitor.cc: New file. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.h: Add some missing mutable reference getters. + * ast/rust-expr.h: Likewise. + * ast/rust-item.h: Likewise. + * ast/rust-path.h: Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Check for presence + of a type and use the default value instead of the type. + +2024-01-16 Pierre-Emmanuel Patry + + * checks/errors/rust-ast-validation.cc (ASTValidation::check): Launch + check over the whole given crate. + (ASTValidation::visit): Implement visitor for some members of the ast. + * checks/errors/rust-ast-validation.h: Update some prototype according + to implemented visitor functions. Also add a context tracker. + +2024-01-16 Pierre-Emmanuel Patry + + * rust-session-manager.cc (Session::compile_crate): Add call to ast + validation. + +2024-01-16 Pierre-Emmanuel Patry + + * lang.opt: Add the new compile options and update the enum values. + * rust-session-manager.h (struct CompileOptions): Add the new steps to + the enumeration. + +2024-01-16 Pierre-Emmanuel Patry + + * Make-lang.in: Add the new object file the list. + * checks/errors/rust-ast-validation.cc: New file. + * checks/errors/rust-ast-validation.h: New file. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-cfg-strip.cc (CfgStrip::visit): Add expr value check. + * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Likewise. + * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): + Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.h: Move implementation from here... + * ast/rust-ast.cc (SingleASTNode::SingleASTNode): ...to here. + (SingleASTNode::operator=): ...and here... + (SingleASTNode::accept_vis): ...and here... + (SingleASTNode::is_error): ...and here... + (SingleASTNode::as_string): ...also here. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.h: Add override specifier. + * ast/rust-item.h: Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-macro-invoc-lexer.cc (MacroInvocLexer::split_current_token): + Add implementation for multiple token split. + * expand/rust-macro-invoc-lexer.h: Add function prototype. + * expand/rust-proc-macro-invoc-lexer.cc (ProcMacroInvocLexer::split_current_token): + Add implementation for 2+ token split for procedural macros. + * expand/rust-proc-macro-invoc-lexer.h: Add function prototype. + * lex/rust-lex.cc (Lexer::split_current_token): Add function to split a + token in multiple other tokens. + * lex/rust-lex.h: Add function prototype for split_current_token. + * parse/rust-parse-impl.h (Parser::left_denotation): Handle float tuple + index identified as a float literal. + +2024-01-16 Jakub Dupak + + * hir/rust-hir-dump.cc (Dump::visit): Remove obsolete member. + * hir/tree/rust-hir-expr.h (class BorrowExpr): Remove obsolete member. + * hir/tree/rust-hir.cc (BorrowExpr::as_string): Remove obsolete member. + +2024-01-16 Jakub Dupak + + * hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Fix typo. + +2024-01-16 Owen Avery + + * backend/rust-compile-expr.cc + (patterns_mergeable): Remove. + (struct PatternMerge): Remove. + (sort_tuple_patterns): Remove. + (simplify_tuple_match): Remove. + (CompileExpr::visit): Modify compilation of MatchExpr. + * backend/rust-compile-pattern.cc + (CompilePatternCaseLabelExpr::visit): Replace with... + (CompilePatternCheckExpr::visit): ...this. + * backend/rust-compile-pattern.h + (class CompilePatternCaseLabelExpr): Replace with... + (class CompilePatternCheckExpr): ...this. + * backend/rust-compile-type.cc + (TyTyResolveCompile::get_implicit_enumeral_node_type): + Make enumeral type equivalent to isize. + +2024-01-16 Pierre-Emmanuel Patry + + * backend/rust-compile-base.cc (get_attributes): Add documentation for + indices 3 and 4. + (get_trait_name): Add documentation for index 1. + +2024-01-16 Pierre-Emmanuel Patry + + * Make-lang.in: Add gcc/rust/backend/rust-compile-proc-macro.cc to the + list of file to compile. + * backend/rust-compile.cc (attribute_array): Move to + rust-compile-proc-macro.cc + (derive_proc_macro): Likewise. + (bang_proc_macro): Likewise. + (attribute_proc_macro): Likewise. + (proc_macro_payload): Likewise. + (proc_macro): Likewise. + (proc_macro_buffer): Likewise. + (entrypoint): Likewise. + (proc_macro_array): Likewise. + (CompileCrate::add_proc_macro_symbols): Likewise. + * backend/rust-compile-proc-macro.cc: New file. + +2024-01-16 Pierre-Emmanuel Patry + + * backend/rust-compile.cc (proc_macro_buffer): Update type builder with + array length information. + (proc_macro_array): Update type initializer with array length + information. + +2024-01-16 Pierre-Emmanuel Patry + + * backend/rust-compile.cc (build_attribute_array): Renamed from... + (attribute_array): ...to attribute array. + (build_derive_proc_macro): Likewise from... + (derive_proc_macro): ... to derive_proc_macro. + (build_bang_proc_macro): Likewise from... + (bang_proc_macro): ...to bang_proc_macro. + (build_attribute_proc_macro): Likewise from... + (attribute_proc_macro): ... to attribute_proc_macro. + (build_proc_macro_payload): Likewise from... + (proc_macro_payload): to proc_macro_payload. + (build_proc_macro): Likewise from... + (proc_macro): ...to proc_macro. + (build_proc_macro_buffer): Likewise from... + (proc_macro_buffer): ... to proc_macro_buffer. + (build_entrypoint): Likewise from... + (entrypoint): ...to entrypoint. + (init_derive_proc_macro): Renamed to it's shorter counterpart. + (init_attribute_proc_macro): Likewise. + (init_bang_proc_macro): Likewise. + (init_proc_macro): Likewise. + (initialize_proc_macro_array): Likewise. + (proc_macro_array): Likewise. + (CompileCrate::add_proc_macro_symbols): Update function calls. + +2024-01-16 Pierre-Emmanuel Patry + + * backend/rust-compile-base.h: Make static function address_expression + public. + * backend/rust-compile.cc (CompileCrate::add_proc_macro_symbols): Add + new global variable in export function. + (build_bang_proc_macro): Add a function to build the bang proc macro + structure type. + (build_proc_macro): Add a function to build the proc macro structure + type. + (build_proc_macro_payload): Add a function to build the proc macro + union used in proc macro structures. + (init_derive_proc_macro): Add a function to initialize custom derive + proc macros. + (init_attribute_proc_macro): Add a function to initialize attribute + proc macros. + (init_bang_proc_macro): Add a function to initialize bang proc macros. + (init_proc_macro): Add a function to initialize proc macro structures. + (initialize_proc_macro_array): Add a function to initialize the proc + macro buffer array. + (CompileCrate::add_proc_macro_symbols): Add call to the new functions + to correctly initialize proc macros as well as their entrypoint. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-proc-macro.cc (CustomDeriveProcMacro::CustomDeriveProcMacro): + Remove constant string declaration. + (load_macros_array): Add call to the new generation function. + (generate_proc_macro_decls_symbol): Add a new function to generate the + entrypoint symbol name from the stable crate id. + (PROC_MACRO_DECLS_FMT_ARGS): + New macro to keep formats arguments in sync between each call. + * expand/rust-proc-macro.h (generate_proc_macro_decls_symbol): Add + function prototype. + * rust-system.h: Include . + +2024-01-16 Pierre-Emmanuel Patry + + * backend/rust-compile.cc (build_attribute_array): Add a function to + build the attribute array type. + (build_derive_proc_macro): Add a function to build the derive proc + macro type. + (build_bang_proc_macro): Add a function to build the bang proc macro + type. + (build_attribute_proc_macro): Add a function to build the attribute + proc macro type. + (build_proc_macro): Add a function to build the proc macro tagged union + type. + (build_proc_macro_buffer): Add a function to build the proc macro + buffer type. + (build_entrypoint): Add a function to build the proc macro entrypoint + type. + * backend/rust-compile.h: Add function prototype. + +2024-01-16 Pierre-Emmanuel Patry + + * backend/rust-compile-context.h: Add getters. + +2024-01-16 Pierre-Emmanuel Patry + + * backend/rust-compile-base.cc (HIRCompileBase::setup_fndecl): + Make the function non static in order to be able to access the + compile context. Also add the whole proc macro infomrmation + collection. + (get_attributes): Add a function to retrieve the different + attributes from a derive procedural macro definition attribute. + (get_trait_name): Add a function to retrieve the trait name from + a derive procedural macro definition attribute. + * backend/rust-compile-base.h: Add function prototypes. + +2024-01-16 Pierre-Emmanuel Patry + + * backend/rust-compile-base.cc (HIRCompileBase::setup_abi_options): + Reformat uncorrectly formatted comments. + +2024-01-16 Pierre-Emmanuel Patry + + * backend/rust-compile-context.h (struct CustomDeriveInfo): Add + new derive procedural macro metadata information holder for + mappings. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.h: Add const getter. + +2024-01-16 Pierre-Emmanuel Patry + + * backend/rust-compile-base.cc (handle_proc_macro_common): Add + new attribute "gccrs_proc_macro" to all procedural macro + functions. + (get_abi): Add a function to retrieve the correct ABI depending + on wether the function is a proc macro or not. + +2024-01-16 Pierre-Emmanuel Patry + + * backend/rust-compile-base.cc (HIRCompileBase::setup_fndecl): + Add proc macro handlers dispatch. + (handle_proc_macro_common): Add a function for common behavior + between all kinds of proc macros. + * backend/rust-compile-base.h: Add function prototypes. + +2024-01-16 Jakub Dupak + + * checks/errors/borrowck/rust-bir-builder-expr-stmt.cc (ExprStmtBuilder::setup_loop): Move. + (ExprStmtBuilder::get_label_ctx): Move. + (ExprStmtBuilder::get_unnamed_loop_ctx): Moved. + (ExprStmtBuilder::visit): BIR improvements. + * checks/errors/borrowck/rust-bir-builder-expr-stmt.h: Refactor. + * checks/errors/borrowck/rust-bir-builder-internal.h (class LifetimeResolver): + Refactor. + (struct BuilderContext): Move.Refactor. + (optional_from_ptr): Map on null ptr. + * checks/errors/borrowck/rust-bir-builder-lazyboolexpr.h (class LazyBooleanExprBuilder): + Refactor. + * checks/errors/borrowck/rust-bir-builder-pattern.h: Refactor. + * checks/errors/borrowck/rust-bir-builder-struct.h (class StructBuilder): Refactor. + * checks/errors/borrowck/rust-bir-builder.h: Refactor. + * checks/errors/borrowck/rust-bir-dump.cc (Dump::go): Refactor. + (Dump::visit): Refactor. + (Dump::visit_place): Refactor. + (Dump::visit_move_place): Refactor. + (Dump::visit_lifetime): Refactor. + * checks/errors/borrowck/rust-bir-dump.h: Refactor. + * checks/errors/borrowck/rust-bir-place.h: Refactor. + +2024-01-16 Jakub Dupak + + * checks/errors/borrowck/dev-notes.md: New file. + +2024-01-16 Jakub Dupak + + * checks/errors/borrowck/bir-design-notes.md: New file. + +2024-01-16 Jakub Dupak + + * checks/errors/borrowck/rust-bir-builder-expr-stmt.cc (ExprStmtBuilder::visit): Use goto. + * checks/errors/borrowck/rust-bir-builder-internal.h: Explicit goto. + * checks/errors/borrowck/rust-bir-builder-lazyboolexpr.h: Explicit goto. + +2024-01-16 Jakub Dupak + + * checks/errors/borrowck/rust-bir-builder-expr-stmt.cc (ExprStmtBuilder::visit): Continue. + (ExprStmtBuilder::setup_loop): Continue. + +2024-01-16 Jakub Dupak + + * checks/errors/borrowck/rust-bir-dump.cc (simplify_cfg): Detech infinite loops. + +2024-01-16 Jakub Dupak + + * checks/errors/borrowck/rust-bir-builder-expr-stmt.cc (ExprStmtBuilder::visit): Push ctx. + (ExprStmtBuilder::setup_loop): Common loop infractructure setup. + * checks/errors/borrowck/rust-bir-builder-expr-stmt.h: Loop ctx. + * checks/errors/borrowck/rust-bir-builder-internal.h (struct BuilderContext): Loop ctx. + +2024-01-16 Jakub Dupak + + * checks/errors/borrowck/rust-bir-dump.cc (Dump::go): Improve jumps dump. + (Dump::visit): Improve jumps dump. + * checks/errors/borrowck/rust-bir-dump.h (class Dump): Improve jumps dump. + +2024-01-16 Jakub Dupak + + * checks/errors/borrowck/rust-bir-dump.cc (simplify_cfg): Simplify cfg logic. + (Dump::go): Run simplify cfg. + * checks/errors/borrowck/rust-bir-dump.h: Option to simplify cfg. + +2024-01-16 Jakub Dupak + + * checks/errors/borrowck/rust-bir-dump.cc (Dump::go): Use new print. + (print_comma_separated): Comma separation print. + (Dump::visit): Use new print. + +2024-01-16 Jakub Dupak + + * Make-lang.in: Build BIR dump. + * checks/errors/borrowck/rust-borrow-checker.cc (mkdir_wrapped): Cross-platform mkdir. + (dump_function_bir): Save dump to file. + (BorrowChecker::go): Run dump during borrowck. + * checks/errors/borrowck/rust-bir-dump.cc: New file. + * checks/errors/borrowck/rust-bir-dump.h: New file. + +2024-01-16 Jakub Dupak + + * Make-lang.in: Compile BIR expr visitor. + * checks/errors/borrowck/rust-borrow-checker.cc (BorrowChecker::go): Use BIR builder. + * rust-session-manager.cc (Session::compile_crate): Run borrow checker. + * checks/errors/borrowck/rust-bir-builder-expr-stmt.cc: New file. + * checks/errors/borrowck/rust-bir-builder-expr-stmt.h: New file. + * checks/errors/borrowck/rust-bir-builder-internal.h: New file. + * checks/errors/borrowck/rust-bir-builder-lazyboolexpr.h: New file. + * checks/errors/borrowck/rust-bir-builder-pattern.h: New file. + * checks/errors/borrowck/rust-bir-builder-struct.h: New file. + * checks/errors/borrowck/rust-bir-builder.h: New file. + +2024-01-16 Jakub Dupak + + * checks/errors/borrowck/rust-borrow-checker.cc: Include to compile new code. + * checks/errors/borrowck/rust-bir-place.h: New file. + * checks/errors/borrowck/rust-bir-visitor.h: New file. + * checks/errors/borrowck/rust-bir.h: New file. + +2024-01-16 Jakub Dupak + + * lang.opt: CLI flag. + * rust-session-manager.cc (Session::compile_crate): Guard execution. + +2024-01-16 Jakub Dupak + + * checks/errors/borrowck/rust-borrow-checker.cc (BorrowChecker::BorrowChecker): Opt dump. + (BorrowChecker::go): Opt dump. + * checks/errors/borrowck/rust-borrow-checker.h (class BorrowChecker): Opt dump. + * lang.opt: Add compile until borrowcheck. + * rust-session-manager.cc (Session::enable_dump): Add BIR. + (Session::compile_crate): Handle new options. + * rust-session-manager.h (struct CompileOptions): Add BIR. + +2024-01-16 Jakub Dupak + + * Make-lang.in: Build borrowck. + * checks/errors/borrowck/rust-borrow-checker.cc: New file. + * checks/errors/borrowck/rust-borrow-checker.h: New file. + * checks/errors/borrowck/rust-function-collector.h: New file. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-pattern.h: Add override modifier to overriding methods. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-item.h: Add a new constructor for const with no value + expression. + * parse/rust-parse-impl.h (Parser::parse_const_item): Allow const with + no expression value. + +2024-01-16 Jakub Dupak + + * hir/tree/rust-hir-path.h: Avoid copy in getter. + +2024-01-16 Jakub Dupak + + * backend/rust-compile-expr.cc (CompileExpr::visit): Rename method. + * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): Rename method. + * checks/errors/rust-const-checker.cc (ConstChecker::visit): Rename method. + * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Rename method. + * hir/rust-hir-dump.cc (Dump::visit): Rename method. + * hir/tree/rust-hir-expr.h: Rename method. + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Rename method. + * typecheck/rust-tyty.h: Rename method. + +2024-01-16 Jakub Dupak + + * backend/rust-compile-base.cc: Rename method. + * backend/rust-compile-expr.cc (sort_tuple_patterns): Rename method. + * backend/rust-compile-pattern.cc (CompilePatternCaseLabelExpr::visit): Rename method. + (CompilePatternBindings::visit): Rename method. + (CompilePatternLet::visit): Rename method. + * backend/rust-compile-stmt.cc (CompileStmt::visit): Rename method. + * backend/rust-compile-var-decl.h: Rename method. + * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::translate): Rename method. + * hir/rust-hir-dump.cc (Dump::visit): Rename method. + * hir/tree/rust-hir-path.h: Rename method. + * hir/tree/rust-hir-pattern.h: Rename method. + * hir/tree/rust-hir.h: Rename method. + * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::Resolve): Rename method. + (TypeCheckPattern::visit): Rename method. + (ClosureParamInfer::visit): Rename method. + * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Rename method. + * util/rust-hir-map.cc (Mappings::insert_hir_pattern): Rename method. + +2024-01-16 Jakub Dupak + + * hir/tree/rust-hir-expr.h: Add getter for name. + +2024-01-16 Jakub Dupak + + * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit): Implement for tuple pat. + * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::visit): Implement for tupple pat. + +2024-01-16 Jakub Dupak + + * hir/tree/rust-hir-path.h: Avoid copy in getter. + * hir/tree/rust-hir-pattern.h: Avoid copy in getter. + * hir/tree/rust-hir.h: Avoid copy in getter. + +2024-01-16 Owen Avery + + * resolve/rust-ast-resolve-implitem.h + (ResolveToplevelImplItem::go): Take AssociatedItem as parameter. + (ResolveTopLevelTraitItems::go): Likewise. + * resolve/rust-ast-resolve-item.cc + (ResolveTraitItems::go): Likewise. + (ResolveItem::resolve_impl_item): Likewise. + (ResolveImplItems::go): Likewise. + * resolve/rust-ast-resolve-item.h + (ResolveTraitItems::go): Likewise. + (ResolveItem::resolve_impl_item): Likewise. + (ResolveImplItems::go): Likewise. + +2024-01-16 Owen Avery + + * hir/rust-ast-lower-implitem.h + (ASTLoweringImplItem::translate): Take AssociatedItem as parameter. + (ASTLoweringTraitItem::translate): Likewise. + +2024-01-16 Jakub Dupak + + * backend/rust-compile-expr.cc (CompileExpr::visit): Bail on labelled block. + +2024-01-16 Jakub Dupak + + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Add loop ctx. + +2024-01-16 Jakub Dupak + + * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Resolve using loop logic. + +2024-01-16 Jakub Dupak + + * hir/rust-ast-lower.cc (ASTLoweringBlock::visit): Call loop lowering and add it to constr. + * hir/tree/rust-hir-expr.h (class LoopLabel): Move before BlockExpr and add to BlockExpr. + +2024-01-16 Jakub Dupak + + * ast/rust-ast-builder.cc (AstBuilder::block): Add label arg to constructor call. + * ast/rust-expr.h (class LoopLabel): Move before BlockExpr. + (class BlockExpr): Add LoopLabel member. + * expand/rust-derive-clone.cc (DeriveClone::clone_fn): Add label arg to constructor call. + * parse/rust-parse-impl.h (Parser::parse_block_expr): Add label parameter. + (Parser::parse_labelled_loop_expr): Add label arg to constructor call. + * parse/rust-parse.h: Add label arg to constructor call. + +2024-01-16 Owen Avery + + * ast/rust-ast.h + (class AssociatedItem): + New, based on TraitItem, InherentImplItem, and TraitImplItem classes. + (class TraitItem): Inherit from AssociatedItem. + (class InherentImplItem): Likewise. + (class TraitImplItem): Likewise. + * ast/rust-item.h + (class Method): Update cloning functions. + (class Function): Likewise. + (class TypeAlias): Likewise. + (class ConstantItem): Likewise. + (class TraitItemFunc): Likewise. + (class TraitItemMethod): Likewise. + (class TraitItemConst): Likewise. + (class TraitItemType): Likewise. + * ast/rust-macro.h + (class MacroInvocation): Likewise. + +2024-01-16 Raiki Tamura + + * backend/rust-mangle.cc (v0_identifier): Fix broken encoding. + (v0_scope_path): Modify paramter. + (v0_path): Fix namespace for modules. + +2024-01-16 Pierre-Emmanuel Patry + + * parse/rust-parse-impl.h (Parser::parse_closure_expr_pratt): Fix + closure parsing function to handle consecutive parameter lists. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-macro.h: Add PATH fragment to follow set restrictions. + +2024-01-16 Pierre-Emmanuel Patry + + * parse/rust-parse-impl.h (Parser::is_macro_rules_def): Add a function + that checks tokens given by the lexer represents an accurate macro + definition. This will reduce code duplication. + (Parser::parse_item): Replace condition with call to new checking + function. + (Parser::parse_stmt): Likewise. + * parse/rust-parse.h: Add function prototype for is_macro_rules_def. + +2024-01-16 Pierre-Emmanuel Patry + + * parse/rust-parse-impl.h (Parser::parse_expr): Fix range from expr. + +2024-01-16 Pierre-Emmanuel Patry + + * parse/rust-parse-impl.h (Parser::parse_item): Relax constraints + around default identifier at item scope to accept "default" macros. + +2024-01-16 Pierre-Emmanuel Patry + + * parse/rust-parse-impl.h (Parser::parse_path_expr_segment): Accept + left shift tokens in order to let generic parsing function split the + token. + +2024-01-16 Owen Avery + + * ast/rust-ast.h + (Pattern::get_pattern_node_id): Rename to... + (Pattern::get_node_id): ...here. + * ast/rust-macro.h + (MacroInvocation::get_pattern_node_id): Rename to... + (MacroInvocation::get_node_id): ...here. + * ast/rust-path.h + (PathInExpression::get_pattern_node_id): Remove. + (QualifiedPathInExpression::get_pattern_node_id): Remove. + * ast/rust-pattern.h + (LiteralPattern::get_pattern_node_id): Remove. + (IdentifierPattern::get_pattern_node_id): Remove. + (WildcardPattern::get_pattern_node_id): Remove. + (RestPattern::get_pattern_node_id): Rename to... + (RestPattern::get_node_id): ...here. + (RangePattern::get_pattern_node_id): Remove. + (ReferencePattern::get_pattern_node_id): Remove. + (StructPattern::get_pattern_node_id): Remove. + (TupleStructPattern::get_pattern_node_id): Remove. + (TuplePattern::get_pattern_node_id): Remove. + (GroupedPattern::get_pattern_node_id): Remove. + (SlicePattern::get_pattern_node_id): Remove. + (AltPattern::get_pattern_node_id): Remove. + * resolve/rust-early-name-resolver.cc + (EarlyNameResolver::visit): + Use get_node_id instead of get_pattern_node_id. + +2024-01-16 Pierre-Emmanuel Patry + + * parse/rust-parse-impl.h (Parser::parse_expr): Add comma delimiter. + +2024-01-16 Pierre-Emmanuel Patry + + * parse/rust-parse-impl.h (Parser::parse_visibility): Relax constraints + over public visibility return condition in order to accept pub unit + types. + +2024-01-16 Jakub Dupak + + * typecheck/rust-tyty.cc (BaseType::is_unit): Refactor. + (BaseType::satisfies_bound): Refactor. + (BaseType::get_root): Refactor. + (BaseType::destructure): Refactor. + (BaseType::monomorphized_clone): Refactor. + (BaseType::is_concrete): Refactor. + (InferType::InferType): Refactor. + (InferType::clone): Refactor. + (InferType::apply_primitive_type_hint): Refactor. + (StructFieldType::is_equal): Refactor. + (ADTType::is_equal): Refactor. + (handle_substitions): Refactor. + (ADTType::handle_substitions): Refactor. + (TupleType::TupleType): Refactor. + (TupleType::is_equal): Refactor. + (TupleType::handle_substitions): Refactor. + +2024-01-16 Jakub Dupak + + * typecheck/rust-tyty.cc (InferType::InferType): Use static constant for kind information. + (ErrorType::ErrorType): Use static constant for kind information. + (TupleType::TupleType): Use static constant for kind information. + (BoolType::BoolType): Use static constant for kind information. + (IntType::IntType): Use static constant for kind information. + (UintType::UintType): Use static constant for kind information. + (FloatType::FloatType): Use static constant for kind information. + (USizeType::USizeType): Use static constant for kind information. + (ISizeType::ISizeType): Use static constant for kind information. + (CharType::CharType): Use static constant for kind information. + (ReferenceType::ReferenceType): Use static constant for kind information. + (PointerType::PointerType): Use static constant for kind information. + (ParamType::ParamType): Use static constant for kind information. + (StrType::StrType): Use static constant for kind information. + (NeverType::NeverType): Use static constant for kind information. + (PlaceholderType::PlaceholderType): Use static constant for kind information. + * typecheck/rust-tyty.h: Add static kind information to all TyTy classes. + Create safe cast and check methods. + +2024-01-16 Pierre-Emmanuel Patry + + * parse/rust-parse-impl.h (Parser::parse_type_param_bound): Add missing + case for lifetime switch. + +2024-01-16 Pierre-Emmanuel Patry + + * lex/rust-token.cc (Token::as_string): Update function to output scope + resolution tokens correctly. + * parse/rust-parse-impl.h (Parser::parse_generic_param): Change call to + as_string. + +2024-01-16 Raiki Tamura + + * backend/rust-compile-context.h: Modify declaration. + * backend/rust-mangle.cc (struct V0Path): New struct. + (v0_path): New function. + (legacy_mangle_name): Take Context as argument. + (v0_numeric_prefix): Fix type strings. + (v0_complex_type_prefix): New function. + (v0_add_integer_62): Deleted + (v0_integer_62): New function. + (v0_add_opt_integer_62): Deleted. + (v0_opt_integer_62): New function. + (v0_add_disambiguator): Deleted. + (v0_disambiguator): New function. + (v0_type_prefix): Support more types. + (v0_generic_args): New function. + (v0_add_identifier): Deleted. + (v0_identifier): New function. + (v0_type_path): New function. + (v0_function_path): New function. + (v0_scope_path): New function. + (v0_crate_path): New function. + (v0_inherent_or_trait_impl_path): New function. + (v0_mangle_item): Use v0_path. + (Mangler::mangle_item): Take Context as argument. + * backend/rust-mangle.h (class Context): Add forward declaration. + * hir/tree/rust-hir-item.h: Fix include. + +2024-01-16 Owen Avery + + * hir/tree/rust-hir-pattern.h + (TupleStructItems::clone_tuple_struct_items_impl): Rename to... + (TupleStructItems::clone_tuple_items_impl): ...here. + (TupleStructItemsNoRange::clone_tuple_struct_items_impl): Rename to... + (TupleStructItemsNoRange::clone_tuple_items_impl): ...here. + (TupleStructItemsRange::clone_tuple_struct_items_impl): Rename to... + (TupleStructItemsRange::clone_tuple_items_impl): ...here. + (TuplePatternItems::clone_tuple_pattern_items_impl): Rename to... + (TuplePatternItems::clone_tuple_items_impl): ...here. + (TuplePatternItemsMultiple::clone_tuple_pattern_items_impl): Rename to... + (TuplePatternItemsMultiple::clone_tuple_items_impl): ...here. + (TuplePatternItemsRanged::clone_tuple_pattern_items_impl): Rename to... + (TuplePatternItemsRanged::clone_tuple_items_impl): ...here. + +2024-01-16 Owen Avery + + * hir/tree/rust-hir-pattern.h + (TuplePatternItems::get_pattern_type): Rename to... + (TuplePatternItems::get_item_type): ...here. + (TuplePatternItemsMultiple::get_pattern_type): Rename to... + (TuplePatternItemsMultiple::get_item_type): ...here. + (TuplePatternItemsRanged::get_pattern_type): Rename to... + (TuplePatternItemsRanged::get_item_type): ...here. + * backend/rust-compile-expr.cc: Adjust calls to renamed methods. + * backend/rust-compile-pattern.cc: Likewise. + * typecheck/rust-hir-type-check-pattern.cc: Likewise. + +2024-01-16 Marc Poulhiès + + * backend/rust-compile-expr.cc (CompileExpr::visit): Merge 2 if clauses. + * backend/rust-compile-extern.h: Fix typo in comment. + +2024-01-16 Jakub Dupak + + * parse/rust-parse-impl.h: Add missing token consumption + +2024-01-16 Mohammed Rizan Farooqui + + * expand/rust-macro-builtins.cc (MacroBuiltin::include_str_handler): Comment removed + (MacroBuiltin::env_handler): Comment removed + (MacroBuiltin::cfg_handler): Comment removed + (MacroBuiltin::line_handler): Comment removed + +2024-01-16 Jakub Dupak + + * backend/rust-compile.cc (HIRCompileBase::coercion_site1): Fix wrong cast + +2024-01-16 Pierre-Emmanuel Patry + + * rust-session-manager.cc (Session::expansion): Add early break on + error. + +2024-01-16 Raiki Tamura + + * util/rust-canonical-path.h: Add new segment kind for inherent impl. + * resolve/rust-ast-resolve-item.cc (ResolveItem::visit): Use it. + * resolve/rust-ast-resolve-toplevel.h: Use it. + +2024-01-16 Owen Avery + + * ast/rust-expr.h: Fix spelling of "doesn't". + * backend/rust-compile-expr.cc: Fix spelling of "accessors". + * backend/rust-compile-implitem.h: Fix spelling of "normal". + * backend/rust-constexpr.cc: Fix spelling of "actual". + +2024-01-16 Marc Poulhiès + + * hir/rust-hir-dump.cc (Dump::debug): New. + (debug): New. + * hir/rust-hir-dump.h (debug): New. + +2024-01-16 Philip Herron + + * Make-lang.in: fixup formatting + * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): remove old check + * rust-session-manager.cc (Session::compile_crate): call new lint + * resolve/rust-ast-verify-assignee.h: Removed. + * checks/errors/rust-readonly-check.cc: New file. + * checks/errors/rust-readonly-check.h: New file. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): + Added ErrorCode & more fixit hints. + +2024-01-16 Philip Herron + + * backend/rust-compile-block.h: remove HIR::ForLoopExpr + * backend/rust-compile-expr.h: likewise + * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): likewise + * checks/errors/privacy/rust-privacy-reporter.h: likewise + * checks/errors/rust-const-checker.cc (ConstChecker::visit): likewise + * checks/errors/rust-const-checker.h: likewise + * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): likewise + * checks/errors/rust-unsafe-checker.h: likewise + * checks/lints/rust-lint-marklive.h: likewise + * hir/rust-ast-lower.cc (ASTLoweringExprWithBlock::visit): likewise + * hir/rust-hir-dump.cc (Dump::visit): likewise + * hir/rust-hir-dump.h: likewise + * hir/tree/rust-hir-expr.h (class ForLoopExpr): likewise + * hir/tree/rust-hir-full-decls.h (class ForLoopExpr): likewise + * hir/tree/rust-hir-visitor.h: likewise + * hir/tree/rust-hir.cc (ForLoopExpr::as_string): likewise + (ForLoopExpr::accept_vis): likewise + * typecheck/rust-hir-type-check-expr.h: likewise + +2024-01-16 Marc Poulhiès + + * backend/rust-compile-expr.cc (CompileExpr::visit): Fix typo in varIadic. + * backend/rust-compile-type.cc (TyTyResolveCompile::visit): Likewise. + * rust-backend.h (function_type_varadic): Rename into ... + (function_type_variadic): ... this. + * rust-gcc.cc (function_type_varadic): Rename into ... + (function_type_variadic): ... this. + * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): Likewise. + * typecheck/rust-tyty.h (is_varadic): Renamed into ... + (is_variadic): ... this. + +2024-01-16 Marc Poulhiès + + * backend/rust-compile-base.cc (HIRCompileBase::compile_function): + Fix typo in substitutions. + (HIRCompileBase::resolve_method_address): Likewise. + * backend/rust-compile-extern.h (CompileExternItem::visit): + Likewise. + * backend/rust-compile-implitem.cc (CompileTraitItem::visit): + Likewise. + * backend/rust-compile-intrinsic.cc (maybe_override_ctx): + Likewise. + * backend/rust-compile-item.cc (CompileItem::visit): Likewise. + * backend/rust-compile-resolve-path.cc + (HIRCompileBase::query_compile): Likewise. + * typecheck/rust-coercion.cc (TypeCoercionRules::do_coercion): + Likewise. + * typecheck/rust-hir-type-check-item.cc + (TypeCheckItem::ResolveImplBlockSelfWithInference): Likewise. + * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): + Likewise. + * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): + Likewise. + * typecheck/rust-tyty.cc (BaseType::has_subsititions_defined): + Renamed into ... + (BaseType::has_substitutions_defined): ... this. + (ADTType::is_equal): Fix typo in substitutions. + (handle_substitions): Likewise. + (FnType::is_equal): Likewise. + (FnType::handle_substitions): Likewise. + * typecheck/rust-tyty.h (has_subsititions_defined): Renamed into + ... + (has_substitutions_defined): ... this. + +2024-01-16 Owen Avery + + * backend/rust-compile-intrinsic.cc + (get_identifier): Add declaration. + (assume_handler): New. + (generic_intrinsics): Add assume_handler entry. + +2024-01-16 Owen Avery + + * rust-gcc.cc + (Backend::wchar_type): Store static wchar tree. + +2024-01-16 Owen Avery + + * rust-backend.h + (complex_type): Remove. + (complex_constant_expression): Remove. + (real_part_expression): Remove. + (imag_part_expression): Remove. + (complex_expression): Remove. + * rust-gcc.cc + (complex_type): Remove. + (complex_constant_expression): Remove. + (real_part_expression): Remove. + (imag_part_expression): Remove. + (complex_expression): Remove. + +2024-01-16 Owen Avery + + * rust-gcc.cc + (namespace Backend): + Use namespace definition instead of qualified names. + +2024-01-16 liushuyu + + * backend/rust-compile-intrinsic.cc: add `copy` + intrinsics and make `copy_nonoverlapping` handler more generic + +2024-01-16 liushuyu + + * backend/rust-builtins.cc: add `expect` builtin definition. + * backend/rust-compile-intrinsic.cc: add `likely` and `unlikely` + intrinsics handler. + +2024-01-16 Owen Avery + + * rust_error_codes.def: Moved to... + * rust-error-codes.def: ...here... + * rust-diagnostics.h: ...and update references. + +2024-01-16 Guillaume Gomez + + * backend/rust-compile-intrinsic.cc: Simplify `make_unsigned_long_tree` + * rust-backend.h: Remove `integer_constant_expression` + * rust-gcc.cc: Remove `integer_constant_expression` + +2024-01-16 Dave Evans + + * backend/rust-compile-pattern.cc (CompilePatternCaseLabelExpr::visit): + Add AltPattern visitor function + * backend/rust-compile-pattern.h: + Update CompilePatternCaseLabelExpr::visit(AltPattern&). + * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): + Update AltPattern visitor + +2024-01-16 Guillaume Gomez + + * backend/rust-compile-intrinsic.cc: Remove unused argument + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): + Added new error message, rich location and error code. + +2024-01-16 Owen Avery + + * rust-backend.h + (class Backend): Convert to ... + (namespace Backend): ... namespace. + * rust-gcc.cc + (Backend::Backend): Rename to ... + (Backend::init): ... here. + (rust_get_backend): Remove. + * rust-session-manager.cc + (rust_get_backend): Remove. + (Session::init): Use Backend::init instead of rust_get_backend. + (Session::compile_crate): + Initialize Context without pointer to Backend. + * rust-session-manager.h + (Session::backend): Remove. + * backend/rust-compile-context.cc + (Context::Context): Remove pointer to Backend. + * backend/rust-compile-context.h + (class Context): Remove pointer to Backend, update function calls. + * backend/rust-compile-base.cc: Update function calls. + * backend/rust-compile-block.cc: Likewise. + * backend/rust-compile-expr.cc: Likewise. + * backend/rust-compile-extern.h: Likewise. + * backend/rust-compile-fnparam.cc: Likewise. + * backend/rust-compile-intrinsic.cc: Likewise. + * backend/rust-compile-item.cc: Likewise. + * backend/rust-compile-pattern.cc: Likewise. + * backend/rust-compile-resolve-path.cc: Likewise. + * backend/rust-compile-type.cc: Likewise. + * backend/rust-compile-var-decl.h: Likewise. + * backend/rust-compile.cc: Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.cc (Attribute::check_cfg_predicate): Change raw + string to constexpr call. + (Attribute::separate_cfg_attrs): Likewise. + * backend/rust-compile-base.cc (should_mangle_item): Likewise. + (HIRCompileBase::setup_fndecl): Likewise. + (HIRCompileBase::handle_cold_attribute_on_fndecl): Likewise. + * checks/errors/privacy/rust-privacy-reporter.cc (find_proc_macro_attribute): + Likewise. + * checks/errors/rust-unsafe-checker.cc (check_target_attr): + Likewise. + * expand/rust-cfg-strip.cc (fails_cfg): Likewise. + (fails_cfg_with_expand): Likewise. + (expand_cfg_attrs): Likewise. + * expand/rust-macro-builtins.cc: Likewise. + * hir/rust-ast-lower-base.cc (ASTLoweringBase::handle_outer_attributes): Likewise. + (ASTLoweringBase::lower_macro_definition): Likewise. + * hir/rust-hir-dump.cc (Dump::visit): Likewise. + * parse/rust-parse-impl.h (Parser::parse_doc_comment): Likewise. + * parse/rust-parse.cc (extract_module_path): Likewise. + * resolve/rust-early-name-resolver.cc (is_macro_use_module): + Likewise. + (EarlyNameResolver::visit): Likewise. + * resolve/rust-toplevel-name-resolver-2.0.cc (is_macro_export): + Likwise. + * rust-session-manager.cc (Session::injection): Likewise. + * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::parse_repr_options): Likewise. + * util/rust-attributes.cc (is_proc_macro_type): Likewise. + (AttributeChecker::check_attribute): Likewise. + (AttributeChecker::visit): Likewise. + * util/rust-hir-map.cc (Mappings::insert_macro_def): Likewise. + * util/rust-attribute-values.h: New file. + +2024-01-16 Owen Avery + + * rust-backend.h + (Backend::Backend): New. + (Backend::~Backend): Remove. + (class Gcc_backend): Remove. + * rust-gcc.cc + (Gcc_backend::Gcc_backend): Rename to ... + (Backend::Backend): ... here. + (rust_get_backend): Construct Backend instead of Gcc_backend. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-proc-macro.cc (tokenstream_from_string): Change + linemap null pointer to the current linemap. + +2024-01-16 Pierre-Emmanuel Patry + + * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit): + Add proc macro definition insertion. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-hir-map.cc (Mappings::insert_derive_proc_macro_def): + Change the function body to fetch the node id from the macro + parameter. + (Mappings::insert_bang_proc_macro_def): Likewise. + (Mappings::insert_attribute_proc_macro_def): Likewise. + * util/rust-hir-map.h: Update the function's prototype by + removing the node id from the list of arguments. + +2024-01-16 Pierre-Emmanuel Patry + + * resolve/rust-early-name-resolver-2.0.cc (Early::visit_attributes): + Add proc macro handle retrieval for attribute and derive proc macros. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-hir-map.cc (Mappings::lookup_derive_proc_macro_def): + Update function to accomodate new signature. + (Mappings::lookup_bang_proc_macro_def): Likewise. + (Mappings::lookup_attribute_proc_macro_def): Likewise. + * util/rust-hir-map.h: Update function signatures. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-macro-expand.h (struct MacroExpander): Update + lookup function prototypes. + * util/rust-hir-map.cc (Mappings::lookup_derive_proc_macro_invocation): + Update lookup function according to new signature. + (Mappings::lookup_bang_proc_macro_invocation): Likewise. + (Mappings::lookup_attribute_proc_macro_invocation): Likewise. + * util/rust-hir-map.h: Update function prototypes. + +2024-01-16 Owen Avery + + * rust-backend.h + (Backend::write_export_data): Remove. + * rust-gcc.cc + (Backend::write_export_data): Remove. + +2024-01-16 Owen Avery + + * rust-backend.h + (Backend::real_part_expression): Make non-virtual. + (Backend::imag_part_expression): Likewise. + (Backend::complex_expression): Likewise. + (Backend::convert_expression): Likewise. + (Backend::struct_field_expression): Likewise. + (Backend::compound_expression): Likewise. + (Backend::conditional_expression): Likewise. + (Backend::negation_expression): Likewise. + (Backend::arithmetic_or_logical_expression): Likewise. + (Backend::arithmetic_or_logical_expression_checked): Likewise. + (Backend::comparison_expression): Likewise. + (Backend::lazy_boolean_expression): Likewise. + (Backend::constructor_expression): Likewise. + (Backend::array_constructor_expression): Likewise. + (Backend::array_initializer): Likewise. + (Backend::array_index_expression): Likewise. + (Backend::call_expression): Likewise. + (Gcc_backend::real_part_expression): Remove. + (Gcc_backend::imag_part_expression): Remove. + (Gcc_backend::complex_expression): Remove. + (Gcc_backend::convert_expression): Remove. + (Gcc_backend::struct_field_expression): Remove. + (Gcc_backend::compound_expression): Remove. + (Gcc_backend::conditional_expression): Remove. + (Gcc_backend::negation_expression): Remove. + (Gcc_backend::arithmetic_or_logical_expression): Remove. + (Gcc_backend::arithmetic_or_logical_expression_checked): Remove. + (Gcc_backend::comparison_expression): Remove. + (Gcc_backend::lazy_boolean_expression): Remove. + (Gcc_backend::constructor_expression): Remove. + (Gcc_backend::array_constructor_expression): Remove. + (Gcc_backend::array_initializer): Remove. + (Gcc_backend::array_index_expression): Remove. + (Gcc_backend::call_expression): Remove. + * rust-gcc.cc + (Gcc_backend::real_part_expression): Rename to ... + (Backend::real_part_expression): ... here. + (Gcc_backend::imag_part_expression): Rename to ... + (Backend::imag_part_expression): ... here. + (Gcc_backend::complex_expression): Rename to ... + (Backend::complex_expression): ... here. + (Gcc_backend::convert_expression): Rename to ... + (Backend::convert_expression): ... here. + (Gcc_backend::struct_field_expression): Rename to ... + (Backend::struct_field_expression): ... here. + (Gcc_backend::compound_expression): Rename to ... + (Backend::compound_expression): ... here. + (Gcc_backend::conditional_expression): Rename to ... + (Backend::conditional_expression): ... here. + (Gcc_backend::negation_expression): Rename to ... + (Backend::negation_expression): ... here. + (Gcc_backend::arithmetic_or_logical_expression): Rename to ... + (Backend::arithmetic_or_logical_expression): ... here. + (Gcc_backend::arithmetic_or_logical_expression_checked): Rename to ... + (Backend::arithmetic_or_logical_expression_checked): ... here. + (Gcc_backend::comparison_expression): Rename to ... + (Backend::comparison_expression): ... here. + (Gcc_backend::lazy_boolean_expression): Rename to ... + (Backend::lazy_boolean_expression): ... here. + (Gcc_backend::constructor_expression): Rename to ... + (Backend::constructor_expression): ... here. + (Gcc_backend::array_constructor_expression): Rename to ... + (Backend::array_constructor_expression): ... here. + (Gcc_backend::array_initializer): Rename to ... + (Backend::array_initializer): ... here. + (Gcc_backend::array_index_expression): Rename to ... + (Backend::array_index_expression): ... here. + (Gcc_backend::call_expression): Rename to ... + (Backend::call_expression): ... here. + +2024-01-16 Pierre-Emmanuel Patry + + * rust-session-manager.cc (Session::load_extern_crate): Change + variable name, add temporaries and comments. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-proc-macro.h: Change get_trait_name to get_name in + order to be coherent with the others proc macro type name + convention. + * resolve/rust-toplevel-name-resolver-2.0.cc (insert_macros): + Add a templated funtion that inserts a proc macro into the + context and emit an error on failure. + (TopLevel::visit): Change from manual insertion to a function + call. + +2024-01-16 Pierre-Emmanuel Patry + + * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit): + Change to assertion. + * util/rust-hir-map.cc (Mappings::lookup_derive_proc_macros): + Add empty line. + (Mappings::lookup_bang_proc_macros): Likewise. + (Mappings::lookup_attribute_proc_macros): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * metadata/rust-extern-crate.cc (ExternCrate::ExternCrate): + Update definition to allow Extern crate with no content (pure + proc macros). + (ExternCrate::ok): Panic on no content. + (ExternCrate::load): Likewise. + * metadata/rust-extern-crate.h: Update prototypes. + * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::go): + Remove macro resolution. + (TopLevel::visit): Likewise. + * resolve/rust-toplevel-name-resolver-2.0.h: Add visit prototype + for extern crate. + * rust-session-manager.cc (Session::load_extern_crate): Adapt + content depending on the loaded crate's content. + * util/rust-hir-map.cc (Mappings::lookup_derive_proc_macros): + Change return type to optional because it is way more + convenient. + (Mappings::lookup_bang_proc_macros): Likewise. + (Mappings::lookup_attribute_proc_macros): Likewise. + * util/rust-hir-map.h: Update function prototypes. + +2024-01-16 Pierre-Emmanuel Patry + + * metadata/rust-imports.cc (Import::try_package_in_directory): + Remove error when some macro are found even if no import data is + available. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.h (class BangProcMacro): Move class from here to + rust-proc-macro.h. Also remove related functions. + (class AttributeProcMacro): Likewise. + (class CustomDeriveProcMacro): Likewise. + (struct Crate): Remove proc macro vector members. + * expand/rust-macro-expand.h (struct MacroExpander): Change the + type to the newly created classes. + * expand/rust-proc-macro.cc (BangProcMacro::BangProcMacro): Add + constructor implementation. + (AttributeProcMacro::AttributeProcMacro): Likewise. + (CustomDeriveProcMacro::CustomDeriveProcMacro): Likewise. + * expand/rust-proc-macro.h (class BangProcMacro): Move class to + here. + (class AttributeProcMacro): Likewise. + (class CustomDeriveProcMacro): Likewise. + * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::go): + Change top level visitor to check mappings instead + * rust-session-manager.cc (Session::load_extern_crate): + Add back macro collection to mappings. + * util/rust-hir-map.cc (Mappings::insert_derive_proc_macros): + Update getter signature with new types. + (Mappings::insert_bang_proc_macros): Likewise. + (Mappings::insert_attribute_proc_macros): Likewise. + (Mappings::lookup_derive_proc_macros): Likewise. + (Mappings::lookup_bang_proc_macros): Likewise. + (Mappings::lookup_attribute_proc_macros): Likewise. + (Mappings::insert_derive_proc_macro_def): Likewise. + (Mappings::insert_bang_proc_macro_def): Likewise. + (Mappings::insert_attribute_proc_macro_def): Likewise. + (Mappings::lookup_derive_proc_macro_def): Likewise. + (Mappings::lookup_bang_proc_macro_def): Likewise. + (Mappings::lookup_attribute_proc_macro_def): Likewise. + (Mappings::insert_derive_proc_macro_invocation): Likewise. + (Mappings::lookup_derive_proc_macro_invocation): Likewise. + (Mappings::insert_bang_proc_macro_invocation): Likewise. + (Mappings::lookup_bang_proc_macro_invocation): Likewise. + (Mappings::insert_attribute_proc_macro_invocation): Likewise. + (Mappings::lookup_attribute_proc_macro_invocation): Likewise. + * util/rust-hir-map.h: Update function prototypes as well as map + types. + +2024-01-16 Pierre-Emmanuel Patry + + * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::go): + Visit crate's newly stored proc macros. + * rust-session-manager.cc (Session::load_extern_crate): + Store proc macros in the parsed crate instead of a local + variable to achieve mappings. + +2024-01-16 Pierre-Emmanuel Patry + + * resolve/rust-early-name-resolver-2.0.cc (Early::visit_attributes): + Change argument to reference. + * resolve/rust-early-name-resolver-2.0.h: Update function + prototype. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.h: Add getters. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.h (struct Crate): Add proc macro members. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.h (class BangProcMacro): Add new proc macro + abstraction. + (class AttributeProcMacro): Likewise. + (class CustomDeriveProcMacro): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * resolve/rust-early-name-resolver-2.0.cc (Early::visit_attributes): + Add function to handle attributes. + (Early::visit): Override visitor functions. + * resolve/rust-early-name-resolver-2.0.h: Add prototype. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.cc (Attribute::get_traits_to_derive): Convert + tokenstream to path list. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.cc (Attribute::is_derive): Remove tokenstream + condition. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.cc (Attribute::get_traits_to_derive): Change + return type to a vector of references. + * ast/rust-ast.h: Update constructor. + * expand/rust-expand-visitor.cc (ExpandVisitor::expand_inner_stmts): + Update function call. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.cc (Attribute::get_traits_to_derive): Add + function as member function. + * ast/rust-ast.h: Add prototype. + * expand/rust-expand-visitor.cc (get_traits_to_derive): Remove + function. + (ExpandVisitor::expand_inner_stmts): Update function call. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.cc (Attribute::is_derive): Add member function. + * ast/rust-ast.h: Likewise. + * expand/rust-expand-visitor.cc (is_derive): Remove old + function. + (ExpandVisitor::expand_inner_stmts): Update function call. + (ExpandVisitor::visit_inner_using_attrs): Likewise. + +2024-01-16 Philip Herron + + * backend/rust-compile-expr.cc (CompileExpr::visit): use a temp for the value + +2024-01-16 Owen Avery + + * rust-backend.h + (Backend::block): Make non-virtual. + (Backend::block_add_statements): Likewise. + (Gcc_backend::block): Remove. + (Gcc_backend::block_add_statements): Remove. + * rust-gcc.cc + (Gcc_backend::block): Rename to ... + (Backend::block): ... here. + (Gcc_backend::block_add_statements): Rename to ... + (Backend::block_add_statements): ... here. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-macro-expand.h: Change include directive with the + new name. + * expand/rust-proc-macro.h (RUST_PROC_MACRO_H): Likewise. + * util/rust-hir-map.h: Likewise. + * util/rust-token-converter.h: Likewise. + * util/rust-token-converter.cc: Remove useless include + directive. + * Make-lang.in: Rename library. + +2024-01-16 Owen Avery + + * rust-backend.h + (Backend::init_statement): Make non-virtual. + (Backend::assignment_statement): Likewise. + (Backend::return_statement): Likewise. + (Backend::if_statement): Likewise. + (Backend::loop_expression): Likewise. + (Backend::exit_expression): Likewise. + (Backend::compound_statement): Likewise. + (Backend::statement_list): Likewise. + (Backend::exception_handler_statement): Likewise. + (Gcc_backend::init_statement): Remove. + (Gcc_backend::assignment_statement): Remove. + (Gcc_backend::return_statement): Remove. + (Gcc_backend::if_statement): Remove. + (Gcc_backend::compound_statement): Remove. + (Gcc_backend::statement_list): Remove. + (Gcc_backend::exception_handler_statement): Remove. + (Gcc_backend::loop_expression): Remove. + (Gcc_backend::exit_expression): Remove. + * rust-gcc.cc + (Gcc_backend::init_statement): Rename to ... + (Backend::init_statement): ... here. + (Gcc_backend::assignment_statement): Rename to ... + (Backend::assignment_statement): ... here. + (Gcc_backend::return_statement): Rename to ... + (Backend::return_statement): ... here. + (Gcc_backend::exception_handler_statement): Rename to ... + (Backend::exception_handler_statement): ... here. + (Gcc_backend::if_statement): Rename to ... + (Backend::if_statement): ... here. + (Gcc_backend::loop_expression): Rename to ... + (Backend::loop_expression): ... here. + (Gcc_backend::exit_expression): Rename to ... + (Backend::exit_expression): ... here. + (Gcc_backend::compound_statement): Rename to ... + (Backend::compound_statement): ... here. + (Gcc_backend::statement_list): Rename to ... + (Backend::statement_list): ... here. + +2024-01-16 Owen Avery + + * rust-backend.h + (Backend::function): Make non-virtual. + (Backend::function_defer_statement): Likewise. + (Backend::function_set_parameters): Likewise. + (Backend::write_global_definitions): Likewise. + (Backend::write_export_data): Likewise. + (Gcc_backend::function): Remove. + (Gcc_backend::function_defer_statement): Remove. + (Gcc_backend::function_set_parameters): Remove. + (Gcc_backend::write_global_definitions): Remove. + (Gcc_backend::write_export_data): Remove. + * rust-gcc.cc + (Gcc_backend::function): Rename to ... + (Backend::function): ... here. + (Gcc_backend::function_defer_statement): + Fix a qualified lookup of Backend::label and rename to ... + (Backend::function_defer_statement): ... here. + (Gcc_backend::function_set_parameters) Rename to ... + (Backend::function_set_parameters): ... here. + (Gcc_backend::write_global_definitions): Rename to ... + (Backend::write_global_definitions): ... here. + (Gcc_backend::write_export_data): Rename to ... + (Backend::write_export_data): ... here. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-inherent-impl-overlap.h: + Added rich location and errorcode. + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): + likewise. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): + Added error code. + +2024-01-16 Owen Avery + + * rust-backend.h + (Backend::zero_expression): Make non-virtual. + (Backend::var_expression): Likewise. + (Backend::integer_constant_expression): Likewise. + (Backend::float_constant_expression): Likewise. + (Backend::complex_constant_expression): Likewise. + (Backend::string_constant_expression): Likewise. + (Backend::char_constant_literal): Likewise. + (Backend::wchar_constant_literal): Likewise. + (Backend::boolean_constant_expression): Likewise. + (Gcc_backend::zero_expression): Remove. + (Gcc_backend::var_expression): Remove. + (Gcc_backend::integer_constant_expression): Remove. + (Gcc_backend::float_constant_expression): Remove. + (Gcc_backend::complex_constant_expression): Remove. + (Gcc_backend::string_constant_expression): Remove. + (Gcc_backend::wchar_constant_expression): Remove. + (Gcc_backend::char_constant_expression): Remove. + (Gcc_backend::boolean_constant_expression): Remove. + * rust-gcc.cc + (Gcc_backend::zero_expression): Rename to ... + (Backend::zero_expression): ... here. + (Gcc_backend::var_expression): Rename to ... + (Backend::var_expression): ... here. + (Gcc_backend::integer_constant_expression): Rename to ... + (Backend::integer_constant_expression): ... here. + (Gcc_backend::float_constant_expression): Rename to ... + (Backend::float_constant_expression): ... here. + (Gcc_backend::complex_constant_expression): Rename to ... + (Backend::complex_constant_expression): ... here. + (Gcc_backend::string_constant_expression): Rename to ... + (Backend::string_constant_expression): ... here. + (Gcc_backend::wchar_constant_expression): Rename to ... + (Backend::wchar_constant_expression): ... here. + (Gcc_backend::char_constant_expression): Rename to ... + (Backend::char_constant_expression): ... here. + (Gcc_backend::boolean_constant_expression): Rename to ... + (Backend::boolean_constant_expression): ... here. + +2024-01-16 Owen Avery + + * rust-backend.h + (Backend::global_variable): Make non-virtual. + (Backend::global_variable_set_init): Likewise. + (Backend::local_variable): Likewise. + (Backend::parameter_variable): Likewise. + (Backend::static_chain_variable): Likewise. + (Backend::temporary_variable): Likewise. + (Gcc_backend::global_variable): Remove. + (Gcc_backend::global_variable_set_init): Remove. + (Gcc_backend::local_variable): Remove. + (Gcc_backend::parameter_variable): Remove. + (Gcc_backend::static_chain_variable): Remove. + (Gcc_backend::temporary_variable): Remove. + (Gcc_backend::non_zero_size_type): Move to ... + (Backend::non_zero_size_type): ... here. + (Gcc_backend::convert_tree): Move to ... + (Backend::convert_tree): ... here. + * rust-gcc.cc + (Gcc_backend::non_zero_size_type): Rename to ... + (Backend::non_zero_size_type): ... here. + (Gcc_backend::convert_tree): Rename to ... + (Backend::convert_tree): ... here. + (Gcc_backend::global_variable): Rename to ... + (Backend::global_variable): ... here. + (Gcc_backend::global_variable_set_init): Rename to ... + (Backend::global_variable_set_init): ... here. + (Gcc_backend::local_variable): Rename to ... + (Backend::local_variable): ... here. + (Gcc_backend::parameter_variable): Rename to ... + (Backend::parameter_variable): ... here. + (Gcc_backend::static_chain_variable): Rename to ... + (Backend::static_chain_variable): ... here. + (Gcc_backend::temporary_variable): Rename to ... + (Backend::temporary_variable): ... here. + +2024-01-16 Muhammad Mahad + + * checks/errors/privacy/rust-privacy-reporter.cc + (PrivacyReporter::check_for_privacy_violation): + Added errorcode & richlocation. + +2024-01-16 Owen Avery + + * rust-backend.h + (Backend::debug): Make non-virtual. + (Backend::get_identifier_node): Likewise. + (Gcc_backend::debug): Remove. + (Gcc_backend::get_identifier_node): Remove. + * rust-gcc.cc + (Gcc_backend::debug): Rename to ... + (Backend::debug): ... here. + (Gcc_backend::get_identifier_node): Rename to ... + (Backend::get_identifier_node): ... here. + +2024-01-16 Owen Avery + + * typecheck/rust-hir-type-check-expr.cc + (TypeCheckExpr::visit): Expect if conditions to have type bool. + +2024-01-16 Owen Avery + + * rust-backend.h + (Backend::label): Make non-virtual. + (Backend::label_definition_statement): Likewise. + (Backend::goto_statement): Likewise. + (Backend::label_address): Likewise. + (Gcc_backend::label): Remove. + (Gcc_backend::label_definition_statement): Remove. + (Gcc_backend::goto_statement): Remove. + (Gcc_backend::label_address): Remove. + * rust-gcc.cc + (Gcc_backend::label): Rename to ... + (Backend::label): ... here. + (Gcc_backend::label_definition_statement): Rename to ... + (Backend::label_definition_statement): ... here. + (Gcc_backend::goto_statement): Rename to ... + (Backend::goto_statement): ... here. + (Gcc_backend::label_address): Rename to ... + (Backend::label_address): ... here. + +2024-01-16 Owen Avery + + * backend/rust-constexpr.cc + (struct constexpr_fundef): Rename to ... + (struct rust_constexpr_fundef): ... here. + (struct constexpr_call): Rename to ... + (struct rust_constexpr_call): ... here. + +2024-01-16 Raiki Tamura + + * lex/rust-input-source.h: Move constants from here... + * util/rust-codepoint.h (struct Codepoint): ... to here + * util/rust-attributes.cc (check_no_mangle_function): New function. + (AttributeChecker::visit): Use it. + * util/rust-unicode.cc (is_ascii_only): New function. + * util/rust-unicode.h (is_ascii_only): Likewise. + * backend/rust-mangle.cc (legacy_mangle_name): Use it. + * util/rust-punycode.cc (extract_basic_string): Likewise. + * lex/rust-lex.cc (Lexer::parse_byte_char): Likewise. + +2024-01-16 Muhammad Mahad + + * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit): + Added richlocation & error code. + +2024-01-16 Owen Avery + + * typecheck/rust-hir-type-check-expr.cc + (TypeCheckExpr::resolve_fn_trait_call): Add TODO comment. + * typecheck/rust-tyty-bounds.cc + (TypeBoundPredicate::TypeBoundPredicate): + Add assertions, new error constructor. + (TypeBoundPredicate::error): Use new error constructor. + * typecheck/rust-tyty.h + (struct TypeBoundPredicate::mark_is_error): New. + (TypeBoundPredicate::TypeBoundPredicate): + Add new error constructor. + +2024-01-16 Owen Avery + + * rust-backend.h: + (Backend::wchar_type): Make non-virtual. + (Backend::get_pointer_size): Likewise. + (Backend::raw_str_type): Likewise. + (Backend::integer_type): Likewise. + (Backend::float_type): Likewise. + (Backend::complex_type): Likewise. + (Backend::pointer_type): Likewise. + (Backend::reference_type): Likewise. + (Backend::immutable_type): Likewise. + (Backend::function_type): Likewise. + (Backend::function_type_varadic): Likewise. + (Backend::function_ptr_type): Likewise. + (Backend::struct_type): Likewise. + (Backend::union_type): Likewise. + (Backend::array_type): Likewise. + (Backend::named_type): Likewise. + (Backend::type_size): Likewise. + (Backend::type_alignment): Likewise. + (Backend::type_field_alignment): Likewise. + (Backend::type_field_offset): Likewise. + (Gcc_backend::wchar_type): Remove. + (Gcc_backend::get_pointer_size): Remove. + (Gcc_backend::raw_str_type): Remove. + (Gcc_backend::integer_type): Remove. + (Gcc_backend::float_type): Remove. + (Gcc_backend::complex_type): Remove. + (Gcc_backend::pointer_type): Remove. + (Gcc_backend::reference_type): Remove. + (Gcc_backend::immutable_type): Remove. + (Gcc_backend::function_type): Remove. + (Gcc_backend::function_type_varadic): Remove. + (Gcc_backend::function_ptr_type): Remove. + (Gcc_backend::struct_type): Remove. + (Gcc_backend::union_type): Remove. + (Gcc_backend::array_type): Remove. + (Gcc_backend::named_type): Remove. + (Gcc_backend::type_size): Remove. + (Gcc_backend::type_alignment): Remove. + (Gcc_backend::type_field_alignment): Remove. + (Gcc_backend::type_field_offset): Remove. + (Gcc_backend::fill_in_fields): Move to ... + (Backend::fill_in_fields): ... here. + (Gcc_backend::fill_in_array): Move to ... + (Backend::fill_in_array): ... here. + * rust-gcc.cc + (Gcc_backend::wchar_type): Rename to ... + (Backend::wchar_type): ... here. + (Gcc_backend::get_pointer_size): Rename to ... + (Backend::get_pointer_size): ... here. + (Gcc_backend::raw_str_type): Rename to ... + (Backend::raw_str_type): ... here. + (Gcc_backend::integer_type): Rename to ... + (Backend::integer_type): ... here. + (Gcc_backend::float_type): Rename to ... + (Backend::float_type): ... here. + (Gcc_backend::complex_type): Rename to ... + (Backend::complex_type): ... here. + (Gcc_backend::pointer_type): Rename to ... + (Backend::pointer_type): ... here. + (Gcc_backend::reference_type): Rename to ... + (Backend::reference_type): ... here. + (Gcc_backend::immutable_type): Rename to ... + (Backend::immutable_type): ... here. + (Gcc_backend::function_type): Rename to ... + (Backend::function_type): ... here. + (Gcc_backend::function_type_varadic): Rename to ... + (Backend::function_type_varadic): ... here. + (Gcc_backend::function_ptr_type): Rename to ... + (Backend::function_ptr_type): ... here. + (Gcc_backend::struct_type): Rename to ... + (Backend::struct_type): ... here. + (Gcc_backend::union_type): Rename to ... + (Backend::union_type): ... here. + (Gcc_backend::fill_in_fields): Rename to ... + (Backend::fill_in_fields): ... here. + (Gcc_backend::array_type): Rename to ... + (Backend::array_type): ... here. + (Gcc_backend::fill_in_array): Rename to ... + (Backend::fill_in_array): ... here. + (Gcc_backend::named_type): Rename to ... + (Backend::named_type): ... here. + (Gcc_backend::type_size): Rename to ... + (Backend::type_size): ... here. + (Gcc_backend::type_alignment): Rename to ... + (Backend::type_alignment): ... here. + (Gcc_backend::type_field_alignment): Rename to ... + (Backend::type_field_alignment): ... here. + (Gcc_backend::type_field_offset): Rename to ... + (Backend::type_field_offset): ... here. + +2024-01-16 Philip Herron + + * backend/rust-compile-intrinsic.cc (move_val_init_handler): mark as side-effects + +2024-01-16 Philip Herron + + * backend/rust-compile-intrinsic.cc (uninit_handler): Update fndecl attributes + +2024-01-16 Philip Herron + + * backend/rust-compile-intrinsic.cc (op_with_overflow_inner): fix use before init + +2024-01-16 Philip Herron + + * backend/rust-compile-intrinsic.cc (enter_intrinsic_block): take the locals vector + (uninit_handler): make a temp variable and use the address of it + +2024-01-16 Pierre-Emmanuel Patry + + * resolve/rust-early-name-resolver-2.0.cc (Early::visit): + Collect error instead of lambda. + * resolve/rust-early-name-resolver-2.0.h (std::function + + * resolve/rust-early-name-resolver-2.0.cc (Early::visit): + Collect error instead of emitting it. Also add invocation + registration. + * resolve/rust-early-name-resolver-2.0.h (std::function + + * config-lang.in: + Add "backend/rust-tree.h" and "backend/rust-tree.h" to gtfiles. + * backend/rust-tree.cc: Include new header generated by gengtype. + * backend/rust-tree.h + (struct language_function): Add TODO. + * rust-lang.cc: + Include "rust-tree.h". + (struct lang_type): Remove duplicate definition. + (struct lang_decl): Likewise. + (struct lang_identifier): Likewise. + (struct language_function): Likewise. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): + Added error code and rich location. + +2024-01-16 Owen Avery + + * backend/rust-tree.h + (struct rust_cp_class_binding): Fork from gcc/cp/name_lookup.h. + (struct rust_cp_binding_level): Likewise. + (struct named_label_entry): Remove declaration... + (struct rust_named_label_entry): ... and fork definition from gcc/cp/decl.cc. + +2024-01-16 Muhammad Mahad + + * rust-diagnostics.cc (rust_be_error_at): Added overload function. + (rust_error_at): non-const `rich_location *` function. + * rust-diagnostics.h (rust_error_at): Implementation of overloaded + function. + (rust_be_error_at): likewise. + * rust_error_codes.def: Added GNU license. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-tyty.cc (BaseType::satisfies_bound): + Added errorcode and user-friendly error message. + +2024-01-16 Owen Avery + + * backend/rust-tree.cc + (resort_data): Fork from c++ frontend. + (resort_member_name_cmp): Likewise. + (resort_type_member_vec): Likewise. + * backend/rust-tree.h + (resort_type_member_vec): Likewise. + +2024-01-16 Owen Avery + + * backend/rust-tree.cc + (struct conv_type_hasher): Rename to ... + (struct rust_conv_type_hasher): ... here. + (struct cplus_array_hasher): Rename to ... + (struct rust_cplus_array_hasher): ... here. + (struct source_location_table_entry_hash): Rename to ... + (struct rust_source_location_table_entry_hash): ... here. + * backend/rust-tree.h + (struct named_decl_hash): Rename to ... + (struct rust_named_decl_hash): ... here. + (struct cxx_saved_binding): Rename to ... + (struct rust_cxx_saved_binding): ... here. + (struct named_label_hash): Rename to ... + (struct rust_named_label_hash): ... here. + (struct tree_pair_s): Rename to ... + (struct rust_tree_pair_s): ... here. + (struct tree_pair_p): Rename to ... + (struct rust_tree_pair_p): ... here. + +2024-01-16 Owen Avery + + * backend/rust-tree.cc + (Rust::gt_pch_nx): Move external function declaration ... + (gt_pch_nx): ... out of Rust namespace. + * backend/rust-tree.h + (OVL_FIRST): Qualify function name. + +2024-01-16 Philip Herron + + * backend/rust-compile-type.cc (TyTyResolveCompile::visit): do a final lookup + +2024-01-16 Muhammad Mahad + + * parse/rust-parse-impl.h (Parser::parse_generic_params): + Added more user friendly message. + +2024-01-16 Owen Avery + + * expand/rust-macro-builtins.cc + (MacroBuiltin::include_str_handler): Use vector::data. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-type-check-type.cc: + Added last variant name, errorcode & rich location. for enum candidates. + +2024-01-16 Owen Avery + + * backend/rust-tree.h + (struct stmt_tree_s): Remove. + (typedef stmt_tree): Remove. + (c_language_function::x_stmt_tree): Remove. + (saved_scope::x_stmt_tree): Remove. + (lang_decl_fn::pending_inline_p): Remove. + (lang_decl_fn::spare): Adjust size. + (lang_decl_fn::pending_inline_info): Remove. + +2024-01-16 Owen Avery + + * backend/rust-constexpr.cc: + Include gt-rust-rust-constexpr.h. + (struct constexpr_call_hasher): Rename to ... + (struct rust_constexpr_call_hasher): ... here. + (struct constexpr_fundef_hasher): Rename to ... + (struct rust_constexpr_fundef_hasher): ... here. + * config-lang.in: Add rust-constexpr.cc to gtfiles. + +2024-01-16 Raiki Tamura + + * backend/rust-mangle.cc (v0_add_identifier): Added punycode encoding + (v0_mangle_item): Likewise. + * lex/rust-lex.cc (assert_source_content): Change type + (test_buffer_input_source): Change type + (test_file_input_source): Change type + * resolve/rust-ast-resolve-toplevel.h: fix typo + * rust-session-manager.cc (Session::load_extern_crate): fix typo + * util/rust-canonical-path.h: fix typo + * util/rust-hir-map.cc (NodeMapping::get_error): fix typo + (Mappings::Mappings): fix typo + * util/rust-mapping-common.h (UNKNOWN_CREATENUM): fix typo + (UNKNOWN_CRATENUM): Change 0 to UINT32_MAX + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait): + Updated errorcode & more userfriendly message. + +2024-01-16 Muhammad Mahad + + * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): + Added more helpful error message. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-path-probe.h: + Fixes issue & added rich location message. + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): + Added rich location and error code. + +2024-01-16 Pierre-Emmanuel Patry + + * lex/rust-lex.cc (Lexer::parse_decimal_int_or_float): Only + accept digits after a dot instead of accepting any float + member. + +2024-01-16 Muhammad Mahad + + * ast/rust-pattern.h: No need of assertion, we are handling it. + * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): + Added check which emits error instead of using assertion. + * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): + Added rich location and error code. + +2024-01-16 Muhammad Mahad + + * backend/rust-compile-base.cc (HIRCompileBase::handle_inline_attribute_on_fndecl): + Added rich_location & error code. + +2024-01-16 Muhammad Mahad + + * parse/rust-parse-impl.h (Parser::parse_trait): + added errorcode & updated error message. + +2024-01-16 Muhammad Mahad + + * parse/rust-parse-impl.h (Parser::parse_outer_attribute): + Added errorcode & updated error function. + +2024-01-16 Muhammad Mahad + + * rust-diagnostics.cc (va_constructor): + Added constructor for all possible cases. + (Error::Error): Updated error struct + for all possible cases. + * rust-diagnostics.h (struct Error): + Updated error struct to support error + code & rich location support. + +2024-01-16 Muhammad Mahad + + * backend/rust-compile-base.cc (HIRCompileBase::handle_inline_attribute_on_fndecl): + Added rich_location & error code. + +2024-01-16 Arthur Cohen + + * rust-diagnostics.cc: Switch from new[] to xcalloc + +2024-01-16 Raiki Tamura + + * util/make-rust-unicode.py: Add type annotation + +2024-01-16 Philip Herron + + * backend/rust-compile-intrinsic.cc (check_for_cached_intrinsic): + simplify this cached intrinsic check + * backend/rust-mangle.cc (legacy_mangle_item): use new interface + * typecheck/rust-tyty.h: new managle helper + +2024-01-16 Philip Herron + + * backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address): + use the single candidate + +2024-01-16 Marc Poulhiès + + * hir/rust-hir-dump.cc (Dump::visit): Remove useless if/else + already handled by visit_field. + +2024-01-16 Owen Avery + + * util/rust-punycode.cc: Add CHECKING_P guard. + +2024-01-16 Raiki Tamura + + * backend/rust-mangle.cc (legacy_mangle_name): Use Unicode escape + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): remove hack + +2024-01-16 Owen Avery + + * expand/rust-proc-macro-invoc-lexer.cc + (ProcMacroInvocLexer::skip_token): Remove. + * expand/rust-proc-macro-invoc-lexer.h: + Include "rust-macro-invoc-lexer.h". + (class ProcMacroInvocLexer): + Extend MacroInvocLexerBase. + +2024-01-16 Raiki Tamura + + * lex/rust-codepoint.h: Moved to... + * util/rust-codepoint.h: ...here. + * lex/rust-input-source.h: Add missing license + * util/rust-unicode.cc: Add missing license + * util/rust-punycode.cc (extract_basic_string): Remove constant + +2024-01-16 Arthur Cohen + + * expand/rust-macro-expand.h: Keep optional references for last_def + and last_invoc. + * expand/rust-macro-expand.cc (MacroExpander::expand_invoc): Store + optional references. + * rust-session-manager.cc (Session::expansion): Use tl::optional's APIs + for better checking. + +2024-01-16 Marc Poulhiès + + * hir/rust-hir-dump.h (do_ifexpr): New. + * hir/rust-hir-dump.cc (Dump::do_ifexpr): New. + (Dump::visit): Use do_ifexpr and visit_field + +2024-01-16 Muhammad Mahad + + * typecheck/rust-casts.cc (TypeCastRules::emit_cast_error): + Refactored ErrorCodes & error messages. + +2024-01-16 Muhammad Mahad + + * backend/rust-compile-base.cc: + Added ErrorCode. + +2024-01-16 Muhammad Mahad + + * hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_qualifiers): + called error function. + (ASTLoweringBase::lower_extern_block): likewise. + +2024-01-16 Owen Avery + + * ast/rust-ast-collector.cc: Adjust formatting. + * checks/errors/rust-feature-gate.cc: Add trailing newline. + * rust-diagnostics.h: Remove old comment. + +2024-01-16 Owen Avery + + * rust-gcc.cc + (Gcc_backend::struct_type): Remove references to "this". + (Gcc_backend::union_type): Likewise. + (Gcc_backend::array_type): Likewise. + (Gcc_backend::wchar_constant_expression): Likewise. + (Gcc_backend::convert_expression): Likewise. + (Gcc_backend::constructor_expression): Likewise. + (Gcc_backend::array_initializer): Likewise. + (Gcc_backend::assignment_statement): Likewise. + (Gcc_backend::global_variable): Likewise. + (Gcc_backend::temporary_variable): Likewise. + (Gcc_backend::function_defer_statement): Likewise. + +2024-01-16 Raiki Tamura + + * Make-lang.in: Add rust-punycode.o. + * rust-lang.cc (run_rust_tests): Add selftest. + * util/rust-punycode.cc: New file. + * util/rust-punycode.h: New file. + +2024-01-16 Muhammad Mahad + + * backend/rust-compile.cc (HIRCompileBase::verify_array_capacities): + Added ErrorCode. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-type-check.cc (TypeResolution::Resolve): + added errorcode. + +2024-01-16 Owen Avery + + * rust-backend.h + (Backend::error_variable): Remove. + (Gcc_backend::error_variable): Move to ... + * rust-gcc.cc + (Bvariable::error_variable): ... here ... + * rust-gcc.h + (Bvariable::error_variable): ... and declare here. + (Gcc_backend::global_variable): Update error_variable call. + (Gcc_backend::local_variable): Likewise. + (Gcc_backend::parameter_variable): Likewise. + (Gcc_backend::static_chain_variable): Likewise. + (Gcc_backend::temporary_variable): Likewise. + * backend/rust-compile-extern.h + (CompileExternItem::visit): Likewise. + * backend/rust-compile-fnparam.cc + (CompileFnParam::CompileFnParam): Likewise. + +2024-01-16 Owen Avery + + * backend/rust-compile-type.cc + (TyTyResolveCompile::visit): Inline Backend::bool_type call. + * rust-backend.h + (Backend::bool_type): Remove. + (Backend::char_type): Remove. + (Gcc_backend::bool_type): Remove. + (Gcc_backend::char_type): Remove. + * rust-gcc.cc + (Gcc_backend::char_constant_expression): Inline Backend::char_type call. + +2024-01-16 Raiki Tamura + + * lex/rust-lex.cc (assert_source_content): Fix namespace specifier + (test_buffer_input_source): Likewise. + (test_file_input_source): Likewise. + * lex/rust-lex.h: Move InputSource ... + * lex/rust-input-source.h: ... to here. (New file) + * lex/rust-token.cc (nfc_normalize_token_string): New function + * lex/rust-token.h (nfc_normalize_token_string): New function + * rust-lang.cc (run_rust_tests): Modify order of selftests. + * rust-session-manager.cc (validate_crate_name): Modify interface of Utf8String. + * util/rust-unicode.cc (lookup_cc): Modify codepoint_t typedef. + (lookup_recomp): Likewise. + (recursive_decomp_cano): Likewise. + (decomp_cano): Likewise. + (sort_cano): Likewise. + (compose_hangul): Likewise. + (assert_normalize): Likewise. + (Utf8String::nfc_normalize): New function. + * util/rust-unicode.h: Modify interface of Utf8String. + +2024-01-16 Muhammad Mahad + + * resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): + Added ErrorCode. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-common.h (enum_to_str): Remove extra semicolon after + the function. + +2024-01-16 Muhammad Mahad + + * checks/errors/rust-const-checker.cc (ConstChecker::visit): + Use of mutable reference in constant functions. + * checks/errors/rust-feature-gate.cc (FeatureGate::gate): + ErrorCode for intrinsics are subject to change. + +2024-01-16 Muhammad Mahad + + * checks/errors/rust-const-checker.cc (ConstChecker::check_function_call): + Added errorcode. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args): + Added errorcode. + +2024-01-16 Arthur Cohen + + * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit): Declare + macros in the current rib if they are macros 2.0. + +2024-01-16 Arthur Cohen + + * ast/rust-macro.h: Add new method to `MacroRulesDefinition` to allow + getting the `MacroKind` contained. + +2024-01-16 Arthur Cohen + + * rust-session-manager.cc + (Session::expansion): Use new `Early` name resolution 2.0 pass + +2024-01-16 Arthur Cohen + + * Make-lang.in: Add new object file. + * resolve/rust-early-name-resolver-2.0.cc: New file. + * resolve/rust-early-name-resolver-2.0.h: New file. + +2024-01-16 Arthur Cohen + + * resolve/rust-default-resolver.cc + (DefaultResolver::visit): Visit CallExpr and MethodCallExpr properly. + * resolve/rust-default-resolver.h: Switch "node" to plural in documentation. + +2024-01-16 Arthur Cohen + + * resolve/rust-toplevel-name-resolver-2.0.cc + (TopLevel::insert_or_error_out): Fix format string. + (is_macro_export): New method. + (TopLevel::visit): Handle macro definitions. + +2024-01-16 Arthur Cohen + + * resolve/rust-name-resolution-context.cc + (Resolver::insert): Do not call into `rust_unreachable` when resolving + macros anymore. + +2024-01-16 Arthur Cohen + + * resolve/rust-forever-stack.h + (insert_at_root): New method. + (resolve_path): New method. + (reverse_iter): Iterate on `Node`s instead of `Rib`s + * resolve/rust-forever-stack.hxx: Add path resolution. + +2024-01-16 Arthur Cohen + + * resolve/rust-rib.h: Add shadowing parameter. Make kind field public. + * resolve/rust-rib.cc (Rib::insert): Likewise. + +2024-01-16 Muhammad Mahad + + * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): + refactored message and called error function. + +2024-01-16 Muhammad Mahad + + * checks/errors/rust-feature-gate.cc (FeatureGate::check): + errorcode support for unknown feature. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-unify.cc (UnifyRules::emit_type_mismatch): + refactored & called error function. + +2024-01-16 Marc Poulhiès + + * expand/rust-macro-builtins.cc + (load_file_bytes): Return a tl::optional. + (MacroBuiltin::include_byte_handler): Adjust and check file was + correctly opened. + (MacroBuiltin::include_str_handler): Likewise. + +2024-01-16 Arthur Cohen + + * resolve/rust-toplevel-name-resolver-2.0.h + (class TopLevel): Inherit from DefaultResolver + * resolve/rust-toplevel-name-resolver-2.0.cc + (TopLevel::TopLevel): Remove unecessary methods + +2024-01-16 Arthur Cohen + + * Make-lang.in: Add new object file. + * resolve/rust-default-resolver.cc: New file. + * resolve/rust-default-resolver.h: New file. + +2024-01-16 Raiki Tamura + + * util/rust-unicode.cc (decomp_cano): Decompose Hangul. + (sort_cano): Fix bounds check. + (recomp): use `compose_hangul`. + (compose_hangul): Compose Hangul. + (rust_utf8_normalize_test): Add tests. + +2024-01-16 Arthur Cohen + + * resolve/rust-forever-stack.hxx: assert() -> rust_assert() + +2024-01-16 Arthur Cohen + + * Make-lang.in: Add new object file. + * resolve/rust-toplevel-name-resolver-2.0.cc: New file. + * resolve/rust-toplevel-name-resolver-2.0.h: New file. + +2024-01-16 Arthur Cohen + + * Make-lang.in: Add new object file. + * resolve/rust-name-resolution-context.cc: New file. + * resolve/rust-name-resolution-context.h: New file. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): + called error function. + +2024-01-16 Owen Avery + + * expand/rust-macro-invoc-lexer.cc + (MacroInvocLexer::skip_token): Remove. + * expand/rust-macro-invoc-lexer.h + (class MacroInvocLexer): Extend MacroInvocLexerBase. + +2024-01-16 Marc Poulhiès + + * ast/rust-ast-fragment.cc (Fragment::create_empty): New. + * ast/rust-ast-fragment.h (MacroTranscriberFunc): New. + * ast/rust-macro.h (MacroRulesDefinition): Use MacroTranscriberFunc. + * expand/rust-macro-builtins.cc + (MacroBuiltin::builtin_transcribers): likewise. + (MacroBuiltin::assert_handler): Return optional. + (MacroBuiltin::file_handler): Likewise. + (MacroBuiltin::column_handler): Likewise. + (MacroBuiltin::include_bytes_handler): Likewise. + (MacroBuiltin::include_str_handler): Likewise. + (MacroBuiltin::compile_error_handler): Likewise. + (MacroBuiltin::concat_handler): Likewise. + (MacroBuiltin::env_handler): Likewise. + (MacroBuiltin::cfg_handler): Likewise. + (MacroBuiltin::include_handler): Likewise. + (MacroBuiltin::line_handler): Likewise. + (MacroBuiltin::stringify_handler): Likewise. + (MacroBuiltin::sorry): Likewise. + * expand/rust-macro-builtins.h (builtin_transcribers): Use + MacroTranscriberFunc. + (assert_handler): Return optional. + (file_handler): Likewise. + (column_handler): Likewise. + (include_bytes_handler): Likewise. + (include_str_handler): Likewise. + (compile_error_handler): Likewise. + (concat_handler): Likewise. + (env_handler): Likewise. + (cfg_handler): Likewise. + (include_handler): Likewise. + (line_handler): Likewise. + (stringify_handler): Likewise. + (sorry): Likewise. + * expand/rust-macro-expand.cc (MacroExpander::expand_invoc): + Adjust to transcribers returning optional. + +2024-01-16 Philip Herron + + * typecheck/rust-hir-trait-resolve.cc (TraitItemReference::resolve_item): + always resolve the type even when its an a mandatory trait item + * typecheck/rust-hir-type-check-type.cc (TypeCheckType::resolve_root_path): + Add check for enum candidates otherwise you get undefined behaviour + +2024-01-16 Raiki Tamura + + * lex/rust-codepoint.h: Add comment + * lex/rust-lex.h: New method to get decoded characters + * rust-session-manager.cc (validate_crate_name): Modify unicode check + (rust_crate_name_validation_test): Add testcases + * util/rust-unicode.h (RUST_UNICODE_H): New class Utf8String. + (class Utf8String): New class. + * util/rust-unicode.cc (binary_search_sorted_array): Add comment. + (recursive_decomp_cano): Add comment. + (recomp): Remove dead code. + (dump_string): Removed. + +2024-01-16 Owen Avery + + * util/rust-unicode.cc: Add CHECKING_P guard. + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): + We need to check if a function context exists + +2024-01-16 Philip Herron + + * expand/rust-proc-macro.cc (literal_from_string): update Lexer constructor + (tokenstream_from_string): likewise + * lex/rust-lex.cc (Lexer::Lexer): likewise + * lex/rust-lex.h: pass through Linemap + * parse/rust-cfg-parser.cc (parse_cfg_option): likewise + * rust-session-manager.cc (Session::load_extern_crate): likewise + * typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait): + dont apply Sized on self + * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::get_marker_predicate): new + * typecheck/rust-hir-type-check-base.h: add prototype + * typecheck/rust-hir-type-check-type.cc (TypeResolveGenericParam::Resolve): apply Sized + (TypeResolveGenericParam::visit): likewise + * typecheck/rust-hir-type-check-type.h: update prototypes + * typecheck/rust-typecheck-context.cc: remove bad assertions + * typecheck/rust-tyty-bounds.cc (TypeBoundsProbe::assemble_sized_builtin): cleanup + (TypeCheckBase::get_predicate_from_bound): apply sized rules properly + * util/rust-hir-map.cc (Mappings::lookup_trait_item_lang_item): helpers + (Mappings::get_lang_item): likewise + * util/rust-hir-map.h: likewise + * util/rust-token-converter.cc (from_ident): update lexer ctor + (from_punct): likewise + +2024-01-16 Philip Herron + + * typecheck/rust-hir-path-probe.cc: track regular polarity + * typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait): likewise + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): likewise + * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit): likewise + * typecheck/rust-tyty-bounds.cc (TypeCheckBase::get_predicate_from_bound): likewise + (TypeBoundPredicate::TypeBoundPredicate): update ctor + (TypeBoundPredicate::operator=): update copy assignment ctor + (TypeBoundPredicate::error): update error node + * typecheck/rust-tyty.h: add polarity field to predicate + +2024-01-16 Philip Herron + + * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): use new BoundPolarity enum + * hir/rust-ast-lower-type.cc (ASTLoweringTypeBounds::visit): likewise + * hir/rust-hir-dump.cc (BoundPolarityString): new helper + (Dump::visit): update hir dump + * hir/tree/rust-hir-item.h (class ImplBlock): likewise + * hir/tree/rust-hir-type.h (class TraitBound): likewise + * hir/tree/rust-hir.cc (TraitBound::as_string): fix as string + * util/rust-common.h (enum Polarity): add new anti bound + (enum BoundPolarity): likewise + * util/rust-hir-map.cc (Mappings::Mappings): update naming + +2024-01-16 Owen Avery + + * rust-backend.h: Include "rust-gcc.h". + (class Gcc_backend): Move to ... + * rust-gcc.cc (class Gcc_backend): ... here. + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-item.cc: add is_error check + +2024-01-16 Raiki Tamura + + * Make-lang.in: Add rust-unicode.o + * rust-lang.cc (run_rust_tests): Add test. + * rust-system.h: Include + * util/make-rust-unicode.py: Generater of rust-unicode-data.h. + * util/rust-unicode-data.h: Auto-generated file. + * util/rust-unicode.cc: New file. + * util/rust-unicode.h: New file. + +2024-01-16 Arthur Cohen + + * rust-diagnostics.cc: Rework `make_description` and `make_url` functions. + * rust-diagnostics.h: Specify ErrorCode's underlying type, + remove error_codes_strings table. + * rust_error_codes.def: New file. + +2024-01-16 Owen Avery + + * rust-location.h (typedef Location): Remove. + * expand/rust-proc-macro.cc + (register_callback): Replace Location constructor with UNDEF_LOCATION. + * ast/rust-ast-collector.h: Replace Location with location_t. + * checks/errors/privacy/rust-privacy-reporter.cc: Likewise. + * checks/errors/privacy/rust-privacy-reporter.h: Likewise. + * checks/errors/privacy/rust-pub-restricted-visitor.cc: Likewise. + * checks/errors/privacy/rust-pub-restricted-visitor.h: Likewise. + * checks/errors/rust-feature-gate.cc: Likewise. + * checks/errors/rust-feature-gate.h: Likewise. + * metadata/rust-imports.h: Likewise. + * resolve/rust-ast-resolve-path.h: Likewise. + * resolve/rust-name-resolver.h: Likewise. + * rust-backend.h: Likewise. + * rust-diagnostics.h: Likewise. + * rust-gcc.cc: Likewise. + * rust-linemap.h: Likewise. + * util/rust-attributes.cc: Likewise. + * util/rust-hir-map.cc: Likewise. + * util/rust-hir-map.h: Likewise. + * util/rust-token-converter.cc: Likewise. + +2024-01-16 Owen Avery + + * typecheck/rust-autoderef.cc: Replace Location with location_t. + * typecheck/rust-coercion.cc: Likewise. + * typecheck/rust-coercion.h: Likewise. + * typecheck/rust-hir-path-probe.h: Likewise. + * typecheck/rust-hir-trait-reference.cc: Likewise. + * typecheck/rust-hir-trait-resolve.cc: Likewise. + * typecheck/rust-hir-type-check-base.cc: Likewise. + * typecheck/rust-hir-type-check-expr.cc: Likewise. + * typecheck/rust-hir-type-check-expr.h: Likewise. + * typecheck/rust-hir-type-check-implitem.cc: Likewise. + * typecheck/rust-hir-type-check-item.cc: Likewise. + * typecheck/rust-hir-type-check-path.cc: Likewise. + * typecheck/rust-hir-type-check-pattern.cc: Likewise. + * typecheck/rust-hir-type-check-stmt.cc: Likewise. + * typecheck/rust-hir-type-check-struct.cc: Likewise. + * typecheck/rust-hir-type-check-type.cc: Likewise. + * typecheck/rust-hir-type-check-type.h: Likewise. + * typecheck/rust-type-util.cc: Likewise. + * typecheck/rust-type-util.h: Likewise. + * typecheck/rust-tyty-bounds.cc: Likewise. + * typecheck/rust-tyty-call.cc: Likewise. + * typecheck/rust-tyty-call.h: Likewise. + * typecheck/rust-tyty-cmp.h: Likewise. + * typecheck/rust-tyty-subst.cc: Likewise. + * typecheck/rust-tyty-subst.h: Likewise. + * typecheck/rust-tyty.cc: Likewise. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): + refactored error message & called error function. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-proc-macro.cc (literal_from_string): Add callback + function. + (load_macros_array): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-token-converter.cc (handle_suffix): Rework function + to make it work with the new literal conversion function. + (convert_literal): Add a new function to convert to a proc macro + literal from a literal tokenptr. The function will abort if the + pointer does not point to a literal. + (convert): Add call to convert literal for every literal case. + * util/rust-token-converter.h (convert_literal): Add public + prototype. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-proc-macro.cc: Remove static modifier and move to + an anonymous namespace. + +2024-01-16 Muhammad Mahad + + * backend/rust-compile-intrinsic.cc (Intrinsics::compile): + Formatted according to enum class. + * checks/errors/rust-feature-gate.cc (FeatureGate::gate): likewise. + * checks/errors/rust-unsafe-checker.cc (check_unsafe_call): likewise. + * hir/rust-ast-lower-base.cc (struct_field_name_exists): likewise. + * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): likewise. + * resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): + likewise. + * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::go): likewise. + (PatternDeclaration::add_new_binding): likewise. + * resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): likewise. + * resolve/rust-ast-verify-assignee.h: likewise. + * rust-diagnostics.cc: updated make_desc & url function for enum class. + * rust-diagnostics.h (struct ErrorCode): removed struct to switch to enum. + (enum class): Switched from errorcode struct to enum class. + (XSTR): Macro for converting enum to string. + (STR): macro Used by XSTR for converting to string. + (ERROR_CODE): macro used by map for check. + (TABLE_TO_MAP): macro used by map for check + * typecheck/rust-casts.cc (TypeCastRules::emit_cast_error): + Formatted according to enum class. + * typecheck/rust-hir-path-probe.h: likewise. + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): likewise. + * typecheck/rust-hir-type-check-implitem.cc (TypeCheckTopLevelExternItem::visit): + likewise. + (TypeCheckImplItemWithTrait::visit): likewise. + * typecheck/rust-hir-type-check-item.cc: likewise. + * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): likewise. + (emit_invalid_field_error): likewise. + * typecheck/rust-hir-type-check-struct.cc (TypeCheckStructExpr::resolve): likewise. + * typecheck/rust-tyty-call.cc (emit_unexpected_argument_error): likewise. + (TypeCheckCallExpr::visit): likewise. + * typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args): + likewise. + * typecheck/rust-tyty.cc (BaseType::bounds_compatible): likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-attributes.cc (check_proc_macro_non_root): Add + function to emit this specific error. + (AttributeChecker::visit): Modify visitor to propagate to some + containers that were not handled correctly. + +2024-01-16 Owen Avery + + * backend/rust-compile-base.h: Replace Location with location_t. + * metadata/rust-imports.h: Likewise. + * resolve/rust-name-resolver.cc: Likewise. + * resolve/rust-name-resolver.h: Likewise. + * rust-backend.h: Likewise. + * rust-gcc.cc: Likewise. + * rust-gcc.h: Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-proc-macro.cc (available): Remove function. + (load_macros_array): There was no need for an indirection here. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-proc-macro.cc (available): Add symbol + registration. + (load_macros_array): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-proc-macro.cc (load_macros_array): Symbol rename. + +2024-01-16 Pierre-Emmanuel Patry + + * checks/errors/privacy/rust-privacy-reporter.cc (find_proc_macro_attribute): + Refactor the function to be safer and more efficient. + +2024-01-16 Pierre-Emmanuel Patry + + * checks/errors/privacy/rust-privacy-reporter.cc (find_proc_macro_attribute): + Add a new function to find a potential proc macro type + attribute on a given item. + (proc_macro_privacy_check): Move all proc macro privacy check in + their own function to avoid cluttering the usual privacy check. + (PrivacyReporter::go): Add call to newly created proc macro + privacy check function. + +2024-01-16 Pierre-Emmanuel Patry + + * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::go): + Add visibility verification. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-attributes.cc (is_proc_macro_type): Add function to + identify matching proc macro attribute type. + (check_proc_macro_non_function): Add function to check and emit + error. + (AttributeChecker::visit): Add cal to new check function. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.h: Remove NodeId from identifiers. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-type-check-implitem.cc (TypeCheckTopLevelExternItem::visit): + Added check for error code support. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItemWithTrait::visit): + called error function. + +2024-01-16 Owen Avery + + * backend/rust-compile-base.cc: Replace Location with location_t. + * backend/rust-compile-base.h: Likewise. + * backend/rust-compile-expr.cc: Likewise. + * lex/rust-token.h: Likewise. + * metadata/rust-import-archive.cc: Likewise. + * metadata/rust-imports.cc: Likewise. + * metadata/rust-imports.h: Likewise. + * rust-backend.h: Likewise. + * rust-diagnostics.cc: Likewise. + * rust-diagnostics.h: Likewise. + * rust-gcc.cc: Likewise. + * rust-linemap.cc: Likewise. + * util/rust-token-converter.cc: Likewise. + +2024-01-16 Owen Avery + + * ast/rust-ast-builder.h: Replace Location with location_t. + * ast/rust-ast.h: Likewise. + * ast/rust-expr.h: Likewise. + * ast/rust-item.h: Likewise. + * ast/rust-macro.h: Likewise. + * ast/rust-path.h: Likewise. + * hir/tree/rust-hir-expr.h: Likewise. + * hir/tree/rust-hir-item.h: Likewise. + * hir/tree/rust-hir-path.h: Likewise. + * hir/tree/rust-hir.h: Likewise. + * lex/rust-lex.cc: Likewise. + * lex/rust-lex.h: Likewise. + +2024-01-16 Owen Avery + + * expand/rust-derive-clone.cc: Replace Location with location_t. + * expand/rust-derive-clone.h: Likewise. + * expand/rust-derive-copy.cc: Likewise. + * expand/rust-derive-copy.h: Likewise. + * expand/rust-derive.cc: Likewise. + * expand/rust-derive.h: Likewise. + * expand/rust-macro-builtins.cc: Likewise. + * expand/rust-macro-builtins.h: Likewise. + * expand/rust-macro-expand.cc: Likewise. + * parse/rust-parse-impl.h: Likewise. + * parse/rust-parse.cc: Likewise. + * parse/rust-parse.h: Likewise. + +2024-01-16 Owen Avery + + * parse/rust-parse-impl.h + (Parser::parse_macro_match): Use token_id_is_keyword. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.h (class Identifier): Remove interface + inheritance. + (class SimplePath): Likewise. + * expand/rust-expand-visitor.cc (get_traits_to_derive): Change + return type. + (derive_item): Update according to get_traits_to_derive return + type. + (expand_item_attribute): Likewise. + (ExpandVisitor::expand_inner_stmts): Likewise. + * expand/rust-macro-expand.h (struct MacroExpander): Likewise. + * util/rust-hir-map.cc (Mappings::insert_derive_proc_macro_invocation): + Change input type to SimplePath. + (Mappings::lookup_derive_proc_macro_invocation): Likewise. + (Mappings::insert_attribute_proc_macro_invocation): Likewise. + (Mappings::lookup_attribute_proc_macro_invocation): Likewise. + * util/rust-hir-map.h: Likewise with function prototypes. + * util/rust-proc-macro-invocation.h: Removed. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.h: Add new constructor for SimplePath from an + identifier. + * expand/rust-expand-visitor.cc (get_traits_to_derive): Add + conversion. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-macro-expand.cc (MacroExpander::import_proc_macros): + Remove function. + * expand/rust-macro-expand.h (struct MacroExpander): Remove + import_proc_macro function. + * util/rust-hir-map.cc (Mappings::insert_derive_proc_macro_def): + Add a function to insert a derive proc macro definition. + (Mappings::insert_bang_proc_macro): Remove function. + (Mappings::insert_bang_proc_macro_def): Add function to insert a + bang proc macro definition. + (Mappings::insert_attribute_proc_macro_def): Likewise with + attribute proc macros. + (Mappings::lookup_derive_proc_macro_def): Add a function to + lookup a defined derive proc macro definition. + (Mappings::lookup_bang_proc_macro): Remove function. + (Mappings::lookup_bang_proc_macro_def): Add a function to lookup + a bang proc macro definition. + (Mappings::lookup_attribute_proc_macro_def): Add a function to + lookup an attribute prod macro definition. + (Mappings::insert_derive_proc_macro_invocation): Add a function + to insert a derive proc macro invocation. + (Mappings::lookup_derive_proc_macro_invocation): Add a function + to lookup a derive proc macro invocation. + (Mappings::insert_bang_proc_macro_invocation): Add a function to + insert a bang proc macro invocation. + (Mappings::lookup_bang_proc_macro_invocation): Add a function to + lookup a bang proc macro invocation. + (Mappings::insert_attribute_proc_macro_invocation): Add a + function to insert an attribute proc macro invocation. + (Mappings::lookup_attribute_proc_macro_invocation): Add a + function to lookup an attribute proc macro invocation. + * util/rust-hir-map.h: Add different proc macro mappings + and change function prototypes. + * expand/rust-expand-visitor.cc (get_traits_to_derive): Return a + vector of SimplePath instead. + (derive_item): Accept SimplePath instead of a string. + * ast/rust-ast.h: Add common ProcMacroInvocable interface to + Identifiers and SimplePath nodes. + * ast/rust-ast.cc: Add const modifier. + * ast/rust-macro.h: Change path and identifier getters. + * ast/rust-path.h: Change return type to reference. + * util/rust-proc-macro-invocation.h: New file. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-attributes.h (RUST_ATTRIBUTES_H): Add missing header + guard. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.h (class MetaItem): Add MetaItem dispatch values. + * ast/rust-expr.h: Add LitExpr and PathLit dispatch. + * ast/rust-macro.h: Add remaining dispatch getters. + +2024-01-16 Pierre-Emmanuel Patry + + * metadata/rust-extern-crate.h: Add proc macro getter. + * rust-session-manager.cc (Session::load_extern_crate): Collect + mappings and create mappings. + * util/rust-hir-map.cc: Add insertion and lookup functions for + every mapping. + * util/rust-hir-map.h: Add function prototypes. + +2024-01-16 Pierre-Emmanuel Patry + + * metadata/rust-imports.cc (Import::try_package_in_directory): + Add call to load macros before loading metadatas. + * expand/rust-proc-macro.cc: Return empty vector instead of + panicking on error. + +2024-01-16 Pierre-Emmanuel Patry + + * metadata/rust-import-archive.cc (Stream_concatenate::do_peek): + Remove deletion. + (Stream_concatenate::do_advance): Likewise. + (Import::find_archive_export_data): Replace with a smart + pointer. + * metadata/rust-imports.cc (add_search_path): Change return type + to smart pointer. + (Import::open_package): Likewise. + (Import::try_package_in_directory): Likewise. + (Import::find_export_data): Likewise. + (Import::find_object_export_data): Likewise. + (Import::Import): Change constructor to accept unique_ptr. + * metadata/rust-imports.h: Change constructor prototype. + * rust-session-manager.cc (Session::load_extern_crate): Change + pointer to smart pointer. + +2024-01-16 Pierre-Emmanuel Patry + + * metadata/rust-extern-crate.cc (ExternCrate::ExternCrate): + Change constructor to accept procedural macro vector. + * metadata/rust-extern-crate.h: Add vector of procecural macro + in extern crate. + * rust-session-manager.cc (Session::load_extern_crate): Add + argument to new constructor call. + +2024-01-16 Pierre-Emmanuel Patry + + * metadata/rust-imports.cc (add_search_path): Change prototype, + now return a pair of Stream and procedural macro vector. + (Import::open_package): Likewise. + (Import::try_package_in_directory): Likewise. + * metadata/rust-imports.h: Likewise. + * rust-session-manager.cc (Session::load_extern_crate): + Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * metadata/rust-imports.h: Make the function to load a given + file public. + * rust-session-manager.cc (Session::load_extern_crate): Change + path resolution depending on extern crate declaration in cli + arguments. + +2024-01-16 Owen Avery + + * ast/rust-ast-collector.h + (TokenCollector::visit): + Replace default argument with UNDEF_LOCATION. + +2024-01-16 Owen Avery + + * backend/rust-compile-base.cc: Replace Location with location_t. + * backend/rust-compile-base.h: Likewise. + * backend/rust-compile-block.cc: Likewise. + * backend/rust-compile-expr.cc: Likewise. + * backend/rust-compile-expr.h: Likewise. + * backend/rust-compile-extern.h: Likewise. + * backend/rust-compile-implitem.h: Likewise. + * backend/rust-compile-intrinsic.cc: Likewise. + * backend/rust-compile-item.h: Likewise. + * backend/rust-compile-pattern.h: Likewise. + * backend/rust-compile-resolve-path.cc: Likewise. + * backend/rust-compile-stmt.cc: Likewise. + * backend/rust-compile-type.cc: Likewise. + * backend/rust-compile.cc: Likewise. + * backend/rust-constexpr.cc: Likewise. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): + refactored and call error function. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-attributes.cc (AttributeChecker::visit): Add help + message. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-attributes.cc (AttributeChecker::visit): Add + attribute input check. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-attributes.cc (AttributeChecker::visit): Add + attribute check on functions. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-token-converter.cc (from_ident): Adapt code to new + constructor. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-proc-macro.cc (tokenstream_from_string): Add a + function that creates a tokenstream from a given string. + (load_macros_array): Add call to registration function. + +2024-01-16 Pierre-Emmanuel Patry + + * lang.opt: Add option + * rust-session-manager.cc: Add option registration in session + target options. + * rust-session-manager.h (struct CompileOptions): Add new getter + for proc macros instead of a boolean. + +2024-01-16 Arthur Cohen + + * resolve/rust-forever-stack.h: New file. + * resolve/rust-forever-stack.hxx: New file. + +2024-01-16 Marc Poulhiès + + * hir/rust-hir-dump.cc (convert_param_kind_to_str): New. + (convert_new_bind_type_to_str): New. + (convert_mut_to_str): New. + (Dump::go): New. + (Dump::put): New. + (Dump::begin): New. + (Dump::end): New. + (Dump::begin_field): New. + (Dump::end_field): New. + (Dump::put_field): New. + (Dump::visit_field): New. + (Dump::visit): Refactor. + (Dump::visit_collection): New. + (Dump::do_traititem): New. + (Dump::do_vis_item): New. + (Dump::do_functionparam): New. + (Dump::do_pathpattern): New. + (Dump::do_structexprstruct): New. + (Dump::do_expr): New. + (Dump::do_pathexpr): New. + (Dump::do_typepathsegment): New. + (Dump::do_typepathfunction): New. + (Dump::do_qualifiedpathtype): New. + (Dump::do_operatorexpr): New. + (Dump::do_mappings): New. + (Dump::do_inner_attrs): New. + (Dump::do_outer_attrs): New. + (Dump::do_baseloopexpr): New. + (Dump::do_ifletexpr): New. + (Dump::do_struct): New. + (Dump::do_enumitem): New. + (Dump::do_traitfunctiondecl): New. + (Dump::do_externalitem): New. + (Dump::do_namefunctionparam): New. + (Dump::do_stmt): New. + (Dump::do_type): New. + (Dump::do_item): New. + (Dump::do_tuplefield): New. + (Dump::do_structfield): New. + (Dump::do_genericargs): New. + (Dump::do_maybenamedparam): New. + * hir/rust-hir-dump.h: Refactor. + * hir/tree/rust-hir-item.h (enum_to_str): New. + * hir/tree/rust-hir-type.h (enum_to_str): New. + * hir/tree/rust-hir.cc (enum_to_str): New. + * util/rust-common.h (enum_to_str): New. + +2024-01-16 Arthur Cohen + Matthew Jasper + + * Make-lang.in: Add `rust-rib.cc` object. + * resolve/rust-rib.cc: New file. + * resolve/rust-rib.h: New file. + +2024-01-16 Owen Avery + + * ast/rust-ast.h: Replace Location with location_t. + * ast/rust-expr.h: Likewise. + * ast/rust-item.h: Likewise. + * ast/rust-macro.h: Likewise. + * ast/rust-path.h: Likewise. + * ast/rust-pattern.h: Likewise. + * ast/rust-stmt.h: Likewise. + * ast/rust-type.h: Likewise. + * hir/rust-ast-lower-base.h: Likewise. + * hir/tree/rust-hir-expr.h: Likewise. + * hir/tree/rust-hir-item.h: Likewise. + * hir/tree/rust-hir-path.h: Likewise. + * hir/tree/rust-hir-pattern.h: Likewise. + * hir/tree/rust-hir-stmt.h: Likewise. + * hir/tree/rust-hir-type.h: Likewise. + * hir/tree/rust-hir.h: Likewise. + * lex/rust-token.h: Likewise. + * resolve/rust-ast-resolve-pattern.h: Likewise. + * typecheck/rust-hir-trait-reference.h: Likewise. + * typecheck/rust-tyty-bounds.h: Likewise. + * typecheck/rust-tyty-call.h: Likewise. + * typecheck/rust-tyty-subst.h: Likewise. + * typecheck/rust-tyty-util.h: Likewise. + * typecheck/rust-tyty.h: Likewise. + +2024-01-16 Owen Avery + + * ast/rust-ast-collector.cc: Replace Location with location_t. + * ast/rust-ast.cc: Likewise. + * ast/rust-ast.h: Likewise. + * ast/rust-expr.h: Likewise. + * ast/rust-item.h: Likewise. + * ast/rust-macro.h: Likewise. + * ast/rust-path.cc: Likewise. + * ast/rust-path.h: Likewise. + * ast/rust-pattern.h: Likewise. + * ast/rust-stmt.h: Likewise. + * ast/rust-type.h: Likewise. + * backend/rust-compile-base.cc: Likewise. + * backend/rust-compile-base.h: Likewise. + * backend/rust-compile-block.cc: Likewise. + * backend/rust-compile-expr.cc: Likewise. + * backend/rust-compile-expr.h: Likewise. + * backend/rust-compile-fnparam.cc: Likewise. + * backend/rust-compile-fnparam.h: Likewise. + * backend/rust-compile-intrinsic.cc: Likewise. + * backend/rust-compile-pattern.cc: Likewise. + * backend/rust-compile-resolve-path.h: Likewise. + * backend/rust-compile.cc: Likewise. + * checks/errors/rust-const-checker.cc: Likewise. + * checks/errors/rust-const-checker.h: Likewise. + * checks/errors/rust-unsafe-checker.cc: Likewise. + * checks/errors/rust-unsafe-checker.h: Likewise. + * expand/rust-macro-builtins.cc: Likewise. + * expand/rust-macro-expand.h: Likewise. + * hir/rust-ast-lower-base.h: Likewise. + * hir/rust-ast-lower-implitem.h: Likewise. + * hir/rust-ast-lower-item.cc: Likewise. + * hir/tree/rust-hir-expr.h: Likewise. + * hir/tree/rust-hir-item.h: Likewise. + * hir/tree/rust-hir-path.h: Likewise. + * hir/tree/rust-hir-pattern.h: Likewise. + * hir/tree/rust-hir-stmt.h: Likewise. + * hir/tree/rust-hir-type.h: Likewise. + * hir/tree/rust-hir.cc: Likewise. + * hir/tree/rust-hir.h: Likewise. + * lex/rust-token.h: Likewise. + * metadata/rust-extern-crate.cc: Likewise. + * metadata/rust-extern-crate.h: Likewise. + * parse/rust-parse-impl.h: Likewise. + * parse/rust-parse.h: Likewise. + * resolve/rust-ast-resolve-expr.cc: Likewise. + * resolve/rust-ast-resolve-implitem.h: Likewise. + * resolve/rust-ast-resolve-pattern.h: Likewise. + * resolve/rust-ast-resolve-stmt.h: Likewise. + * resolve/rust-ast-resolve-toplevel.h: Likewise. + * resolve/rust-ast-resolve-type.h: Likewise. + * resolve/rust-name-resolver.cc: Likewise. + * resolve/rust-name-resolver.h: Likewise. + * rust-diagnostics.cc: Likewise. + * rust-diagnostics.h: Likewise. + * rust-gcc.cc: Likewise. + * rust-session-manager.cc: Likewise. + * rust-session-manager.h: Likewise. + * typecheck/rust-casts.cc: Likewise. + * typecheck/rust-casts.h: Likewise. + * typecheck/rust-coercion.cc: Likewise. + * typecheck/rust-coercion.h: Likewise. + * typecheck/rust-hir-path-probe.cc: Likewise. + * typecheck/rust-hir-path-probe.h: Likewise. + * typecheck/rust-hir-trait-reference.cc: Likewise. + * typecheck/rust-hir-trait-reference.h: Likewise. + * typecheck/rust-hir-trait-resolve.cc: Likewise. + * typecheck/rust-hir-type-check-base.cc: Likewise. + * typecheck/rust-hir-type-check-base.h: Likewise. + * typecheck/rust-hir-type-check-item.cc: Likewise. + * typecheck/rust-hir-type-check-item.h: Likewise. + * typecheck/rust-hir-type-check-path.cc: Likewise. + * typecheck/rust-hir-type-check-pattern.cc: Likewise. + * typecheck/rust-hir-type-check-pattern.h: Likewise. + * typecheck/rust-hir-type-check-type.cc: Likewise. + * typecheck/rust-hir-type-check-type.h: Likewise. + * typecheck/rust-hir-type-check.cc: Likewise. + * typecheck/rust-hir-type-check.h: Likewise. + * typecheck/rust-substitution-mapper.cc: Likewise. + * typecheck/rust-substitution-mapper.h: Likewise. + * typecheck/rust-type-util.cc: Likewise. + * typecheck/rust-typecheck-context.cc: Likewise. + * typecheck/rust-tyty-bounds.cc: Likewise. + * typecheck/rust-tyty-call.h: Likewise. + * typecheck/rust-tyty-subst.cc: Likewise. + * typecheck/rust-tyty-subst.h: Likewise. + * typecheck/rust-tyty-util.cc: Likewise. + * typecheck/rust-tyty-util.h: Likewise. + * typecheck/rust-tyty.cc: Likewise. + * typecheck/rust-tyty.h: Likewise. + * typecheck/rust-unify.cc: Likewise. + * typecheck/rust-unify.h: Likewise. + * util/rust-hir-map.cc: Likewise. + * util/rust-hir-map.h: Likewise. + * util/rust-identifier.h: Likewise. + +2024-01-16 Owen Avery + + * rust-gcc.cc + (Gcc_backend::debug): Move out of class declaration. + (Gcc_backend::get_identifier_node): Likewise. + (Gcc_backend::wchar_type): Likewise. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): + called error function. + +2024-01-16 Owen Avery + + * rust-linemap.h (Linemap::predeclared_location): Remove. + * backend/rust-compile-type.cc: + Replace Linemap::predeclared_location with BUILTINS_LOCATION. + * resolve/rust-name-resolver.cc: Likewise. + * typecheck/rust-hir-type-check-type.cc: Likewise. + * typecheck/rust-tyty.cc: Likewise. + +2024-01-16 Owen Avery + + * rust-gcc.h: Add include guard. + +2024-01-16 Arthur Cohen + + * rust-system.h (rust_unreachable): Change definition to fancy_abort + * ast/rust-ast-collector.cc (TokenCollector::visit): Use rust_unreachable + instead of gcc_unreachable. + (get_delimiters): Likewise. + * ast/rust-ast-dump.h: Likewise. + * ast/rust-ast-formatting.cc (get_string_in_delims): Likewise. + (get_mode_dump_desc): Likewise. + * ast/rust-ast.cc (Visibility::as_string): Likewise. + (UseTreeGlob::as_string): Likewise. + * ast/rust-ast.h: Likewise. + * ast/rust-macro.h: Likewise. + * ast/rust-path.h: Likewise. + * backend/rust-compile-expr.cc (sort_tuple_patterns): Likewise. + (CompileExpr::visit): Likewise. + (CompileExpr::generate_closure_fntype): Likewise. + * backend/rust-compile-intrinsic.cc (op_with_overflow_inner): Likewise. + * backend/rust-compile-pattern.cc (CompilePatternBindings::visit): Likewise. + (CompilePatternLet::visit): Likewise. + * backend/rust-constexpr.cc (base_field_constructor_elt): Likewise. + (eval_array_reference): Likewise. + (label_matches): Likewise. + (eval_store_expression): Likewise. + (eval_call_expression): Likewise. + (build_data_member_initialization): Likewise. + (array_index_cmp): Likewise. + (get_array_or_vector_nelts): Likewise. + (eval_bit_field_ref): Likewise. + (eval_loop_expr): Likewise. + (potential_constant_expression_1): Likewise. + * backend/rust-mangle.cc (v0_simple_type_prefix): Likewise. + (v0_type_prefix): Likewise. + (v0_mangle_item): Likewise. + (Mangler::mangle_item): Likewise. + * backend/rust-tree.cc (convert_to_void): Likewise. + (type_memfn_quals): Likewise. + (rs_tree_equal): Likewise. + (fold_offsetof): Likewise. + (fold_builtin_source_location): Likewise. + (lvalue_error): Likewise. + * backend/rust-tree.h (struct named_decl_hash): Likewise. + (struct named_label_hash): Likewise. + * checks/errors/privacy/rust-visibility-resolver.cc + (VisibilityResolver::resolve_visibility): Likewise. + (VisibilityResolver::visit): Likewise. + * checks/errors/rust-const-checker.cc (ConstChecker::ctx_to_str): Likewise. + * checks/errors/rust-feature.cc (Feature::create): Likewise. + * expand/rust-expand-visitor.cc (get_traits_to_derive): Likewise. + (derive_item): Likewise. + (expand_item_attribute): Likewise. + (expand_stmt_attribute): Likewise. + * expand/rust-macro-expand.cc (MacroExpander::match_matcher): Likewise. + (MacroExpander::match_repetition): Likewise. + (transcribe_context): Likewise. + (MacroExpander::import_proc_macros): Likewise. + (MacroExpander::parse_proc_macro_output): Likewise. + * expand/rust-macro-expand.h: Likewise. + * expand/rust-macro-invoc-lexer.h: Likewise. + * expand/rust-macro-substitute-ctx.cc (SubstituteCtx::substitute_token): Likewise. + * expand/rust-proc-macro-invoc-lexer.h: Likewise. + * expand/rust-proc-macro.cc (load_macros): Likewise. + * hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_generic_args): Likewise. + (ASTLoweringBase::lower_literal): Likewise. + * hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Likewise. + * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit): Likewise. + * hir/rust-ast-lower-type.cc (ASTLoweringType::visit): Likewise. + * hir/rust-hir-dump.cc (Dump::visit): Likewise. + * hir/tree/rust-hir.cc (get_string_in_delims): Likewise. + (Visibility::as_string): Likewise. + (UseTreeGlob::as_string): Likewise. + (CompoundAssignmentExpr::as_string): Likewise. + (ArithmeticOrLogicalExpr::as_string): Likewise. + * lex/rust-lex.cc (Lexer::parse_byte_string): Likewise. + (Lexer::parse_string): Likewise. + * lex/rust-token.cc (RS_TOKEN): Likewise. + * parse/rust-parse-impl.h (Parser::parse_simple_path_segment): Likewise. + (Parser::parse_path_ident_segment): Likewise. + (Parser::parse_attr_input): Likewise. + (Parser::parse_inherent_impl_item): Likewise. + (Parser::parse_trait_impl_item): Likewise. + (Parser::parse_type_path_segment): Likewise. + (Parser::parse_reference_type): Likewise. + (get_lbp_for_comparison_expr): Likewise. + * parse/rust-parse.cc (peculiar_fragment_match_compatible): Likewise. + * resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): Likewise. + * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::visit): Likewise. + * resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): Likewise. + (ResolveTypeToCanonicalPath::visit): Likewise. + (ResolveGenericArgs::resolve_disambiguated_generic): Likewise. + * rust-gcc.cc (operator_to_tree_code): Likewise. + (fetch_overflow_builtins): Likewise. + (Gcc_backend::non_zero_size_type): Likewise. + (Gcc_backend::convert_tree): Likewise. + * rust-lang.cc (grs_langhook_type_for_mode): Likewise. + (grs_langhook_global_bindings_p): Likewise. + (grs_langhook_pushdecl): Likewise. + (grs_langhook_getdecls): Likewise. + (convert): Likewise. + * typecheck/rust-autoderef.h: Likewise. + * typecheck/rust-hir-path-probe.cc: Likewise. + * typecheck/rust-hir-trait-reference.cc (TraitItemReference::get_tyty): Likewise. + * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::resolve_literal): Likewise. + * typecheck/rust-hir-type-check-expr.cc: Likewise. + * typecheck/rust-hir-type-check-expr.h: Likewise. + * typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItem::visit): Likewise. + * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Likewise. + * typecheck/rust-hir-type-check-stmt.h: Likewise. + * typecheck/rust-hir-type-check.cc (TraitItemReference::get_type_from_fn): Likewise. + * typecheck/rust-substitution-mapper.h: Likewise. + * typecheck/rust-typecheck-context.cc (TypeCheckContextItem::get_context_type): Likewise. + * typecheck/rust-tyty-call.h: Likewise. + * typecheck/rust-tyty.cc (TypeKindFormat::to_string): Likewise. + (BaseType::monomorphized_clone): Likewise. + (VariantDef::variant_type_string): Likewise. + (ClosureType::handle_substitions): Likewise. + (IntType::as_string): Likewise. + (UintType::as_string): Likewise. + (FloatType::as_string): Likewise. + * typecheck/rust-unify.cc (UnifyRules::expect_projection): Likewise. + * util/rust-token-converter.cc (convert): Likewise. + (from_literal): Likewise. + (from_group): Likewise. + (from_tokentree): Likewise. + +2024-01-16 Muhammad Mahad + + * checks/errors/rust-feature-gate.cc (FeatureGate::gate): + called error function. + +2024-01-16 Muhammad Mahad + + * backend/rust-compile-intrinsic.cc (Intrinsics::compile): + called error function. + +2024-01-16 Muhammad Mahad + + * checks/errors/rust-unsafe-checker.cc (check_unsafe_call): + called error function. + +2024-01-16 Owen Avery + + * rust-location.h + (typedef RichLocation): Remove. + * expand/rust-macro-expand.cc: Replace RichLocation with rich_location. + * hir/rust-ast-lower-base.cc: Likewise. + * resolve/rust-ast-resolve-implitem.h: Likewise. + * resolve/rust-ast-resolve-stmt.h: Likewise. + * resolve/rust-ast-resolve-toplevel.h: Likewise. + * rust-diagnostics.cc: Likewise. + * rust-diagnostics.h: Likewise. + * rust-session-manager.cc: Likewise. + * typecheck/rust-casts.cc: Likewise. + * typecheck/rust-coercion.cc: Likewise. + * typecheck/rust-hir-inherent-impl-overlap.h: Likewise. + * typecheck/rust-hir-path-probe.h: Likewise. + * typecheck/rust-hir-trait-reference.cc: Likewise. + * typecheck/rust-hir-type-check-expr.cc: Likewise. + * typecheck/rust-hir-type-check-implitem.cc: Likewise. + * typecheck/rust-hir-type-check-item.cc: Likewise. + * typecheck/rust-hir-type-check-pattern.cc: Likewise. + * typecheck/rust-tyty-cmp.h: Likewise. + * typecheck/rust-tyty-subst.cc: Likewise. + * typecheck/rust-tyty.cc: Likewise. + * typecheck/rust-unify.cc: Likewise. + +2024-01-16 Owen Avery + + * lex/rust-lex.cc + (Lexer::start_line): Use linemap_line_start. + * rust-linemap.cc + (Linemap::start_line): Remove. + * rust-linemap.h + (Linemap::start_line): Remove. + +2024-01-16 Owen Avery + + * rust-linemap.cc + (RichLocation::RichLocation): Remove. + (RichLocation::~RichLocation): Remove. + (RichLocation::add_range): Remove. + (RichLocation::add_fixit_insert_before): Remove. + (RichLocation::add_fixit_insert_after): Remove. + * rust-location.h + (class RichLocation): Remove. + * rust-diagnostics.cc + (rust_be_error_at): Remove RichLocation::get invocation. + * expand/rust-macro-expand.cc: Fix RichLocation constructor. + * hir/rust-ast-lower-base.cc: Likewise. + * resolve/rust-ast-resolve-implitem.h: Likewise. + * resolve/rust-ast-resolve-stmt.h: Likewise. + * resolve/rust-ast-resolve-toplevel.h: Likewise. + * rust-session-manager.cc: Likewise. + * typecheck/rust-casts.cc: Likewise. + * typecheck/rust-coercion.cc: Likewise. + * typecheck/rust-hir-inherent-impl-overlap.h: Likewise. + * typecheck/rust-hir-path-probe.h: Likewise. + * typecheck/rust-hir-trait-reference.cc: Likewise. + * typecheck/rust-hir-type-check-expr.cc: Likewise. + * typecheck/rust-hir-type-check-implitem.cc: Likewise. + * typecheck/rust-hir-type-check-item.cc: Likewise. + * typecheck/rust-hir-type-check-pattern.cc: Likewise. + * typecheck/rust-tyty-cmp.h: Likewise. + * typecheck/rust-tyty-subst.cc: Likewise. + * typecheck/rust-tyty.cc: Likewise. + * typecheck/rust-unify.cc: Likewise. + +2024-01-16 Owen Avery + + * lex/rust-lex.cc + (Lexer::get_current_location): Use linemap_position_for_column. + * rust-session-manager.cc + (Session::handle_crate_name): Likewise. + * rust-linemap.cc + (Linemap::get_location): Remove. + * rust-linemap.h + (Linemap::get_location): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * lex/rust-token.cc (escape_special_chars): Add a function that + escape a given string. + (Token::as_string): Add call to escape function for string/char + representations. + +2024-01-16 Marc Poulhiès + + * hir/tree/rust-hir-type.h (MaybeNamedParam::get_type): Remove + rust_assert. + (BareFunctionType::get_return_type): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * backend/rust-compile-intrinsic.cc (offset_handler): Remove + braces. + (sizeof_handler): Likewise. + (transmute_handler): Likewise. + (rotate_handler): Likewise. + (wrapping_op_handler_inner): Likewise. + (op_with_overflow_inner): Likewise. + (atomic_load_handler_inner): Likewise. + (unchecked_op_inner): Likewise. + (uninit_handler): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.h: Add virtual destructor. + * expand/rust-macro-expand.h: Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * hir/tree/rust-hir-full-decls.h (struct Crate): Change to + class. + (class Crate): Likewise. + (struct StructField): Likewise. + (class StructField): Likewise. + (struct TupleField): Likewise. + (class TupleField): Likewise. + (struct TraitFunctionDecl): Likewise. + (class TraitFunctionDecl): Likewise. + * rust-session-manager.h (struct Crate): Likewise. + (class Crate): Likewise. + +2024-01-16 Owen Avery + + * ast/rust-expr.h + (MetaItemPathLit::get_locus): Remove copy construction. + * backend/rust-constexpr.cc + (eval_constant_expression): Likewise. + (is_valid_constexpr_fn): Likewise. + * util/rust-token-converter.cc + (convert): Likewise. + +2024-01-16 Owen Avery + + * lex/rust-lex.cc + (Lexer::dump_and_skip): Use location_to_string. + * rust-linemap.cc + (Linemap::to_string): Move to... + (Linemap::location_to_string): ... here. + * rust-linemap.h + (Linemap::to_string): Remove. + (Linemap::location_to_string): Remove definition. + +2024-01-16 Marc Poulhiès + + * hir/tree/rust-hir-expr.h (TypeCastExpr::get_casted_expr): Remove + assert in accessor. + (TypeCastExpr::get_type_to_convert_to): Likewise. + (CompoundAssignmentExpr::get_left_expr): Likewise. + (CompoundAssignmentExpr::get_right_expr): Likewise. + (GroupedExpr::get_expr_in_parens): Likewise. + (TupleIndexExpr::get_tuple_expr): Likewise. + (FieldAccessExpr::get_receiver_expr): Likewise. + (ClosureParam::get_pattern): Likewise. + (ClosureParam::get_type): Likewise. + (ExprType::get_return_type): Likewise. + (IfLetExpr::get_scrutinee_expr): Likewise. + (MatchArm::get_guard_expr): Likewise. + (MatchExpr::get_scrutinee_expr): Likewise. + * hir/tree/rust-hir-item.h (TypeParam::get_type): Likewise. + (SelfParam::get_type): Likewise. + (Function::get_return_type): Likewise. + (TypeAlias::get_type_aliased): Likewise. + (StructField::get_field_type): Likewise. + (TraitFunctionDecl::get_block_expr): Likewise. + (ImplBlock::get_trait_ref): Likewise. + * hir/tree/rust-hir-path.h (ConstGenericArg::get_expression): New. + (TypePathFunction::get_return_type): Remove assert in accessor. + (QualifiedPathType::get_trait): Likewise. + * hir/tree/rust-hir-pattern.h (PatternType::get_lower_bound): Likewise. + (PatternType::get_upper_bound): Likewise. + (ReferencePattern::get_referenced_pattern): Likewise. + * hir/tree/rust-hir.h (ConstGenericParam::get_default_expression): Likewise. + +2024-01-16 Muhammad Mahad + + * hir/rust-ast-lower-base.cc (struct_field_name_exists): + called error function. + +2024-01-16 Owen Avery + + * rust-diagnostics.cc + (rust_be_error_at): Add function accepting location_t and ErrorCode. + (rust_error_at): Likewise. + * rust-diagnostics.h + (rust_error_at): Likewise. + (rust_be_error_at): Likewise. + +2024-01-16 Owen Avery + + * rust-linemap.cc + (class Gcc_linemap): Remove. + (Gcc_linemap::start_file): Move to... + (Linemap::start_file): ... here. + (Gcc_linemap::to_string): Move to... + (Linemap::to_string): ... here. + (Gcc_linemap::stop): Move to... + (Linemap::stop): ... here. + (Gcc_linemap::start_line): Move to... + (Linemap::start_line): ... here. + (Gcc_linemap::get_location): Move to... + (Linemap::get_location): ... here. + (rust_get_linemap): Use Linemap. + * rust-linemap.h + (Linemap::in_file_): New field from Gcc_linemap. + (Linemap::Linemap): Initialize in_file_. + (Linemap::~Linemap): Make non-virtual. + (Linemap::start_file): Likewise. + (Linemap::start_line): Likewise. + (Linemap::get_location): Likewise. + (Linemap::stop): Likewise. + (Linemap::to_string): Likewise. + +2024-01-16 Arthur Cohen + + * Make-lang.in: Remove rust-optional-test.cc's object file + * ast/rust-macro.h: Remove use of Rust::Optional + * backend/rust-compile-base.cc + (HIRCompileBase::resolve_method_address): Likewise. + * checks/errors/privacy/rust-privacy-reporter.cc + (PrivacyReporter::check_for_privacy_violation): Likewise. + (PrivacyReporter::visit): Likewise. + * checks/errors/privacy/rust-privacy-reporter.h: Likewise. + * checks/errors/rust-feature-gate.cc (FeatureGate::check): Likewise. + * checks/errors/rust-feature.cc (Feature::create): Likewise. + (Feature::as_name): Likewise. + * checks/errors/rust-feature.h: Likewise. + * expand/rust-macro-builtins.cc: Likewise. + * lex/rust-lex.cc (Lexer::Lexer): Likewise. + (Lexer::skip_token): Likewise. + (Lexer::dump_and_skip): Likewise. + * lex/rust-lex.h: Likewise. + * resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): Likewise. + * resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): Likewise. + * rust-lang.cc (run_rust_tests): Likewise. + * rust-session-manager.cc (Session::compile_crate): Likewise. + (TargetOptions::dump_target_options): Likewise. + * rust-session-manager.h (struct TargetOptions): Likewise. + * util/rust-hir-map.cc (Mappings::lookup_module_children): Likewise. + (Mappings::lookup_module_chidren_items): Likewise. + (Mappings::lookup_module_child): Likewise. + (Mappings::lookup_parent_module): Likewise. + * util/rust-hir-map.h (RUST_HIR_MAP_H): Likewise. + * util/rust-optional-test.cc: Removed. + * util/rust-optional.h: Removed. + +2024-01-16 Owen Avery + + * rust-linemap.h (Linemap::unknown_location): Remove. + * ast/rust-ast.cc: + Replace Linemap::unknown_location with UNKNOWN_LOCATION. + * ast/rust-path.cc: Likewise. + * hir/tree/rust-hir.cc: Likewise. + * metadata/rust-imports.cc: Likewise. + * parse/rust-parse-impl.h: Likewise. + * parse/rust-parse.h: Likewise. + * rust-backend.h: Likewise. + * rust-diagnostics.cc: Likewise. + * rust-session-manager.cc: Likewise. + * typecheck/rust-tyty.cc: Likewise. + +2024-01-16 Muhammad Mahad + + * resolve/rust-ast-verify-assignee.h: called error function. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-tyty-call.cc (emit_unexpected_argument_error): + Refactored invalid number of argument into one function. + (TypeCheckCallExpr::visit): called refactored function. + (TypeCheckMethodCallExpr::check): likewise. + +2024-01-16 Arthur Cohen + + * util/expected.h: Adapt class to GCC requirements. + +2024-01-16 Arthur Cohen + + * util/expected.h: New file. + +2024-01-16 Arthur Cohen + + * util/optional.h: Adapt for GCC. + +2024-01-16 Arthur Cohen + + * util/optional.h: New file. + +2024-01-16 Owen Avery + + * rust-location.h (UNDEF_LOCATION): New. + * ast/rust-ast-collector.cc: Replace Location () with UNDEF_LOCATION. + * ast/rust-ast-fragment.cc: Likewise. + * ast/rust-ast.h: Likewise. + * ast/rust-expr.h: Likewise. + * ast/rust-item.h: Likewise. + * ast/rust-macro.h: Likewise. + * ast/rust-path.h: Likewise. + * ast/rust-type.h: Likewise. + * backend/rust-compile-expr.cc: Likewise. + * backend/rust-compile-extern.h: Likewise. + * backend/rust-compile-implitem.h: Likewise. + * backend/rust-compile-intrinsic.cc: Likewise. + * backend/rust-compile-item.h: Likewise. + * backend/rust-compile.cc: Likewise. + * backend/rust-constexpr.cc: Likewise. + * expand/rust-expand-visitor.cc: Likewise. + * expand/rust-macro-expand.cc: Likewise. + * expand/rust-macro-expand.h: Likewise. + * expand/rust-macro-invoc-lexer.cc: Likewise. + * expand/rust-proc-macro-invoc-lexer.cc: Likewise. + * expand/rust-proc-macro.cc: Likewise. + * hir/tree/rust-hir-expr.h: Likewise. + * hir/tree/rust-hir-item.h: Likewise. + * hir/tree/rust-hir-path.h: Likewise. + * hir/tree/rust-hir-type.h: Likewise. + * hir/tree/rust-hir.h: Likewise. + * lex/rust-lex.cc: Likewise. + * metadata/rust-export-metadata.cc: Likewise. + * parse/rust-parse-impl.h: Likewise. + * resolve/rust-ast-resolve-item.cc: Likewise. + * resolve/rust-ast-resolve.cc: Likewise. + * rust-diagnostics.h: Likewise. + * rust-session-manager.cc: Likewise. + * typecheck/rust-autoderef.cc: Likewise. + * typecheck/rust-coercion.cc: Likewise. + * typecheck/rust-hir-dot-operator.cc: Likewise. + * typecheck/rust-hir-path-probe.cc: Likewise. + * typecheck/rust-hir-trait-reference.cc: Likewise. + * typecheck/rust-hir-trait-reference.h: Likewise. + * typecheck/rust-hir-type-check-expr.cc: Likewise. + * typecheck/rust-hir-type-check-implitem.cc: Likewise. + * typecheck/rust-hir-type-check-type.cc: Likewise. + * typecheck/rust-hir-type-check.cc: Likewise. + * typecheck/rust-tyty-bounds.cc: Likewise. + * typecheck/rust-tyty-subst.cc: Likewise. + * typecheck/rust-tyty.cc: Likewise. + * util/rust-hir-map.cc: Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Fix abit + output format. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Fix + external item trailing semicolon and outer attributes. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Output + outer attributes on external functions. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Fix method + qualifier output. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Add where + clause. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Add outer + attributes to collector output. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Add + variadics in collector output. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Add + generics. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Fix generic + output. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Reformat + trait impl block. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Output + generic in inherent impl. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-dump.cc (Dump::require_spacing): Change dollar + spacing rule. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Change + formatting. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Fix trait + impl block output. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Fix binding + args. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Output + function qualifiers after visibility. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Fix self + param output. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-dump.cc (Dump::require_spacing): Add a rule to + remove spaces around dots and after references. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Fix several + token collection rules. + * ast/rust-ast-dump.cc (Dump::require_spacing): Add spacing rule + for comma. + +2024-01-16 Owen Avery + + * expand/rust-macro-invoc-lexer.h + (class MacroInvocLexerBase): New. + +2024-01-16 Owen Avery + + * expand/rust-macro-builtins.cc + (source_relative_path): Use LOCATION_FILE. + (MacroBuiltin::file_handler): Likewise. + (MacroBuiltin::column_handler): Use LOCATION_COLUMN. + (MacroBuiltin::line_handler): Use LOCATION_LINE. + * rust-linemap.cc + (Gcc_linemap::location_file): Remove. + (Gcc_linemap::location_line): Remove. + (Gcc_linemap::location_column): Remove. + * rust-linemap.h + (Linemap::location_file): Remove. + (Linemap::location_line): Remove. + (Linemap::location_column): Remove. + (Linemap::location_to_file): Remove. + (Linemap::location_to_line): Remove. + (Linemap::location_to_column): Remove. + +2024-01-16 Muhammad Mahad + + * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): + called error function and changed error message + similiar to rustc. + +2024-01-16 Owen Avery + + * rust-linemap.cc + (Gcc_linemap::get_unknown_location): Remove. + (Gcc_linemap::get_predeclared_location): Remove. + (Gcc_linemap::is_predeclared): Remove. + (Gcc_linemap::is_unknown): Remove. + * rust-linemap.h + (Linemap::get_predeclared_location): Remove. + (Linemap::get_unknown_location): Remove. + (Linemap::is_predeclared): Remove. + (Linemap::is_unknown): Remove. + (Linemap::predeclared_location): Use BUILTINS_LOCATION. + (Linemap::unknown_location): Use UNKNOWN_LOCATION. + (Linemap::is_predeclared_location): Remove. + (Linemap::is_unknown_location): Remove. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItemWithTrait::visit): + called error function + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-type-check-struct.cc (TypeCheckStructExpr::resolve): + called error function. + +2024-01-16 Raiki Tamura + + * lex/rust-lex.cc (Lexer::input_source_is_valid_utf8): New method of `Lexer`. + * lex/rust-lex.h: Likewise. + * rust-session-manager.cc (Session::compile_crate): Add error. + +2024-01-16 Owen Avery + + * expand/rust-macro-expand.cc + (transcribe_expression): Skip trailing semicolon. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-type-check-item.cc: called error function. + +2024-01-16 Raiki Tamura + + * ast/rust-ast.h: Modify constructors of `Rust::Identifier` + * ast/rust-pattern.h: Likewise. + * hir/tree/rust-hir-item.h: Likewise. + * parse/rust-parse-impl.h (Parser::parse_macro_rules_def): Likewise. + (Parser::parse_decl_macro_def): Likewise. + (Parser::parse_macro_match_fragment): Likewise. + (Parser::parse_module): Likewise. + (Parser::parse_use_tree): Likewise. + (Parser::parse_function): Likewise. + (Parser::parse_type_param): Likewise. + (Parser::parse_type_alias): Likewise. + (Parser::parse_struct): Likewise. + (Parser::parse_struct_field): Likewise. + (Parser::parse_enum): Likewise. + (Parser::parse_enum_item): Likewise. + (Parser::parse_union): Likewise. + (Parser::parse_static_item): Likewise. + (Parser::parse_trait): Likewise. + (Parser::parse_trait_item): Likewise. + (Parser::parse_trait_type): Likewise. + (Parser::parse_trait_const): Likewise. + (Parser::parse_external_item): Likewise. + (Parser::parse_generic_args_binding): Likewise. + (Parser::parse_method): Likewise. + (Parser::parse_maybe_named_param): Likewise. + (Parser::parse_identifier_pattern): Likewise. + (Parser::parse_struct_expr_field): Likewise. + (ResolveItem::visit): Likewise. + * typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItem::visit):Add comments + * resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit): Likewise. + * checks/lints/rust-lint-scan-deadcode.h: Fix error location + +2024-01-16 Owen Avery + + * backend/rust-compile-base.cc + (HIRCompileBase::address_expression): Remove gcc_location method call. + (HIRCompileBase::indirect_expression): Likewise. + (HIRCompileBase::compile_constant_item): Likewise. + (HIRCompileBase::named_constant_expression): Likewise. + * backend/rust-compile-expr.cc + (CompileExpr::visit): Remove gcc_location method call, use UNKNOWN_LOCATION to initialize. + (CompileExpr::get_fn_addr_from_dyn): Remove gcc_location method call. + (CompileExpr::type_cast_expression): Likewise. + * backend/rust-compile-intrinsic.cc + (transmute_handler): Replace "Location ().gcc_location ()" with UNKNOWN_LOCATION. + (copy_nonoverlapping_handler): Likewise. + (prefetch_data_handler): Likewise. + (atomic_store_handler_inner): Likewise. + (atomic_load_handler_inner): Likewise. + * resolve/rust-ast-resolve-expr.cc + (ResolveExpr::visit): Remove gcc_location method call. + * rust-diagnostics.cc + (rust_be_error_at): Likewise. + (rust_be_warning_at): Likewise. + (rust_be_fatal_error): Likewise. + (rust_be_inform): Likewise. + * rust-diagnostics.h + (rust_sorry_at): Likewise. + * rust-gcc.cc + (Bvariable::get_tree): Likewise. + (Gcc_backend::fill_in_fields): Likewise. + (Gcc_backend::named_type): Likewise. + (Gcc_backend::real_part_expression): Likewise. + (Gcc_backend::imag_part_expression): Likewise. + (Gcc_backend::complex_expression): Likewise. + (Gcc_backend::convert_expression): Likewise. + (Gcc_backend::struct_field_expression): Likewise. + (Gcc_backend::compound_expression): Likewise. + (Gcc_backend::conditional_expression): Likewise. + (Gcc_backend::negation_expression): Likewise. + (Gcc_backend::arithmetic_or_logical_expression): Likewise. + (Gcc_backend::arithmetic_or_logical_expression_checked): Likewise. + (Gcc_backend::comparison_expression): Likewise. + (Gcc_backend::lazy_boolean_expression): Likewise. + (Gcc_backend::constructor_expression): Likewise. + (Gcc_backend::array_constructor_expression): Likewise. + (Gcc_backend::array_initializer): Likewise. + (Gcc_backend::array_index_expression): Likewise. + (Gcc_backend::call_expression): Likewise. + (Gcc_backend::assignment_statement): Likewise. + (Gcc_backend::return_statement): Likewise. + (Gcc_backend::exception_handler_statement): Likewise. + (Gcc_backend::if_statement): Likewise. + (Gcc_backend::loop_expression): Likewise. + (Gcc_backend::exit_expression): Likewise. + (Gcc_backend::block): Likewise. + (Gcc_backend::convert_tree): Likewise. + (Gcc_backend::global_variable): Likewise. + (Gcc_backend::local_variable): Likewise. + (Gcc_backend::parameter_variable): Likewise. + (Gcc_backend::static_chain_variable): Likewise. + (Gcc_backend::temporary_variable): Likewise. + (Gcc_backend::label): Likewise. + (Gcc_backend::goto_statement): Likewise. + (Gcc_backend::label_address): Likewise. + (Gcc_backend::function): Likewise. + * rust-linemap.cc + (Gcc_linemap::to_string): Likewise. + (Gcc_linemap::location_file): Likewise. + (Gcc_linemap::location_line): Likewise. + (Gcc_linemap::location_column): Likewise. + (Gcc_linemap::is_predeclared): Likewise. + (Gcc_linemap::is_unknown): Likewise. + (RichLocation::RichLocation): Likewise. + (RichLocation::add_range): Likewise. + (RichLocation::add_fixit_insert_before): Likewise. + (RichLocation::add_fixit_insert_after): Likewise. + * rust-location.h + (class Location): Replace with typedef. + (operator<): Remove. + (operator==): Remove. + (operator+): Remove. + (operator-): Remove. + * typecheck/rust-hir-trait-resolve.cc + (AssociatedImplTrait::setup_associated_types): Initialize Location with UNKNOWN_LOCATION. + * typecheck/rust-hir-type-check-stmt.cc + (TypeCheckStmt::visit): Likewise. + * util/rust-token-converter.cc + (convert): Remove gcc_location method call. + +2024-01-16 Marc Poulhiès + + * hir/tree/rust-hir-expr.h (BorrowExpr::is_double_borrow): New. + (ArrayElemsCopied::get_elem_to_copy) + (ArrayElemsCopied::get_num_copies_expr): Return unique_ptr. + (CallExpr::get_fnexpr): Likewise. + (ReturnExpr::get_expr): Likewise. + (StructExprStructFields::get_struct_base): New. + (MethodCallExpr::has_params): New. + (ClosureExpr::has_params): New. + (BlockExpr::get_inner_attrs): New. + (WhileLoopExpr::get_patterns): New. + (ForLoopExpr::get_pattern): New. + (IfLetExpr::get_if_block): Return ref to unique_ptr. + (IfLetExprConseqElse::get_else_block): Likewise. + (MatchExpr::get_inner_attrs): New. + * hir/tree/rust-hir-item.h (Module::get_module_name): New. + (ExternCrate::get_referenced_crate) + (ExternCrate::get_as_clause_name): New. + (UseTreeGlob::get_glob_type, UseTreeGlob::get_path): New. + (UseTreeList::get_path_type, UseTreeList::get_path) + (UseTreeList::get_trees): New. + (TraitItemKind::get_expr): Remove assert. unique_ptr can + be "empty". Must be checked in caller. + * hir/tree/rust-hir-pattern.h (IdentifierPattern::get_is_ref) + (IdentifierPattern::get_to_bind): New. + (RangePatternBoundType::get_has_minus): New. + (RangePattern::get_has_ellipsis_syntax): New. + (StructPatternField::get_outer_attrs): New. + (StructPatternFieldTuplePat::get_index) + (StructPatternFieldTuplePat::get_tuple_pattern): New. + (StructPatternFieldIdent::get_has_ref): New. + * hir/tree/rust-hir-stmt.h (LetStmt::get_outer_attrs): New. + (LetStmt::get_type) + (LetStmt::get_init_expr, LetStmt::get_pattern): Return unique_ptr. + (ExprStmt::get_expr): Likewise. + * hir/tree/rust-hir-type.h (TraitBound::get_for_lifetimes): New. + (TraitBound::get_in_params): New. + (TraitBound::get_opening_question_mark): New. + (ImplTraitType::get_type_param_bounds): New. + (TraitObjectType::get_has_dyn): New. + (TraitBound::get_type_in_parens): New. + (ImplTraitTypeOneBound::get_trait_bound): New. + (BareFunctionType::get_for_lifetimes) + (BareFunctionType::get_is_variadic) + (BareFunctionType::get_function_qualifiers): New. + * hir/tree/rust-hir.h (class Expr): Virtual inherit from FullVisitable. + (class Pattern): Likewise. + (ConstGenericParam::get_name): New. + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Adjust call. + (TypeCheckExpr::resolve_fn_trait_call): Likewise. + * backend/rust-compile-expr.cc (CompileExpr::visit): Adjust call. + (CompileExpr::array_copied_expr): Likewise. + (CompileExpr::generate_possible_fn_trait_call): Likewise. + * backend/rust-compile-stmt.cc (CompileStmt::visit): Likewise. + * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): Likewise. + * checks/errors/rust-const-checker.cc (ConstChecker::visit): Likewise. + * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise. + * hir/rust-hir-dump.cc (Dump::visit): Likewise. + * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Likewise. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-path-probe.h: called error function + +2024-01-16 Muhammad Mahad + + * typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args): + called error function + +2024-01-16 Marc Poulhiès + + * hir/tree/rust-hir-expr.h (class ArrayElems): Inherit from FullVisitable. + (class StructExprField): Likewise. + * hir/tree/rust-hir-item.h (class WhereClauseItem): Likewise. + (class UseTree): Likewise. + (UseTreeRebind::get_path, UseTreeRebind::get_identifier) + (UseTreeRebind::get_bind_type): New. + (UseDeclaration::get_use_tree): New. + (struct TraitFunctionDecl): Change struct to ... + (class TraitFunctionDecl): ... class. + (TraitFunctionDecl::get_where_clause): New. + (StructField::get_outer_attrs): New. + (struct TupleField): Change struct to ... + (class TupleField): ... class. + (TupleField::get_visibility, TupleField::get_outer_attrs): New. + * hir/tree/rust-hir-pattern.h (class TupleStructItems): Inherit + from FullVisitable. + +2024-01-16 Raiki Tamura + + * lex/rust-lex.cc (Lexer::build_token): Replace function call. + (Lexer::parse_string): Likewise. + (Lexer::parse_identifier_or_keyword): Likewise. + (Lexer::parse_raw_string): Likewise. + (Lexer::parse_char_or_lifetime): Likewise. + (Lexer::get_input_codepoint_length): Deleted. + (Lexer::peek_codepoint_input): Deleted. + (Lexer::skip_codepoint_input): Deleted. + * lex/rust-lex.h: Remove some methods and fields + +2024-01-16 Philip Herron + + * typecheck/rust-tyty-bounds.cc (TypeCheckBase::get_predicate_from_bound): track output + * util/rust-hir-map.cc (Mappings::lookup_trait_item_lang_item): new helper + * util/rust-hir-map.h: add prototype for helper + +2024-01-16 Philip Herron + + * backend/rust-compile-expr.cc (CompileExpr::generate_possible_fn_trait_call): use fnexpr + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::resolve_fn_trait_call): likewise + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): called rust_error_at + +2024-01-16 Marc Poulhiès + + * hir/tree/rust-hir.h (struct Crate): Rename struct into ... + (class Crate): ... class, and add get_items. + * backend/rust-compile.cc (CompileCrate::go): Adapt to visibility change of items. + * checks/errors/privacy/rust-privacy-check.cc (Resolver::resolve): Likewise. + * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::go): Likewise. + * checks/errors/privacy/rust-pub-restricted-visitor.cc (PubRestrictedVisitor::go): Likewise. + * checks/errors/privacy/rust-visibility-resolver.cc (VisibilityResolver::go): Likewise. + * checks/errors/rust-const-checker.cc (ConstChecker::go): Likewise. + * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::go): Likewise. + * checks/lints/rust-lint-marklive.cc (FindEntryPoint::find): Likewise. + * checks/lints/rust-lint-scan-deadcode.h (ScanDeadCode::Scan): Likewise. + * metadata/rust-export-metadata.cc (PublicInterface::gather_export_data): Likewise. + * typecheck/rust-hir-type-check.cc (TypeResolution::Resolve): Likewise. + * hir/rust-hir-dump.cc (CompileCrate::go): Likewise. + +2024-01-16 Marc Poulhiès + + * hir/tree/rust-hir-expr.h (AwaitExpr::get_awaited_expr): New. + (AsyncBlockExpr::get_has_move, AsyncBlockExpr::get_block_expr): New. + * hir/tree/rust-hir-item.h (Enum::get_where_clause): New. + (Trait::get_where_clause, Trait::is_unsafe): New. + (ExternalItem::get_visibility): New. + +2024-01-16 Marc Poulhiès + + * hir/tree/rust-hir.h (class FullVisitable): New. + (class Stmt): Adjust with new class. + (class Expr): Likewise. + (class Pattern): Likewise. + (class Type): Likewise. + (class TypeParamBound): Likewise. + (class GenericParam): Likewise. + (class TraitItem): Likewise. + (class ImplItem): Likewise. + +2024-01-16 Marc Poulhiès + + * hir/tree/rust-hir.h (class WithInnerAttrs): New. + (class Item): Adjust to new WithInnerAttrs class. + (struct Crate): Likewise. + * hir/rust-hir-dump.cc (Dump::go): Likewise. + (Dump::visit): Likewise. + * hir/tree/rust-hir-expr.h (class GroupedExpr): Likewise. + (class ArrayExpr): Likewise. + (class TupleExpr): Likewise. + (class StructExprStruct): Likewise. + (class BlockExpr): Likewise. + (class MatchExpr): Likewise. + * hir/tree/rust-hir-item.h (TypeParam::get_outer_attribute): New. + (class Module): Adjust to new WithInnerAttrs class. + (struct StructField): change struct to... + (class StructField): ... a class. + (class ImplBlock): Adjust to new WithInnerAttrs class. + (class ExternBlock): Likewise. + +2024-01-16 Marc Poulhiès + + * hir/tree/rust-hir-type.h (ArrayType::get_element_type): Returns + unique_ptr. + * hir/tree/rust-hir-expr.h (ArithmeticOrLogicalExpr::get_lhs) + (ArithmeticOrLogicalExpr::get_rhs): Likewise. + (ComparisonExpr::get_lhs, ComparisonExpr::get_rhs): Likewise. + (LazyBooleanExpr::get_lhs, LazyBooleanExpr::get_rhs): Likewise. + (AssignmentExpr::get_lhs, AssignmentExpr::get_rhs): Likewise. + (ArrayExpr::get_internal_elements): Likewise. + (ArrayIndexExpr::get_index_expr, ArrayIndexExpr::get_array_expr): + Likewise. + (StructExprFieldWithVal::get_value): Likewise. + (IfExpr::get_if_condition, IfExpr::get_if_block): Likewise. + (ExprWithBlock::get_else_block): Likewise. + * hir/tree/rust-hir-item.h (FunctionParam::get_param_name) + (FunctionParam::get_type): Likewise. + (ConstantItem::get_type, ConstantItem::get_expr): Likewise. + (StaticItem::get_expr, StaticItem::get_type): Likewise. + * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): + Adjust for previous change. + * backend/rust-compile-block.cc (CompileConditionalBlocks::visit): + Likewise. + * backend/rust-compile-expr.cc (CompileExpr::visit): Likewise. + * backend/rust-compile-item.cc (CompileItem::visit): Likewise. + * backend/rust-compile-struct-field-expr.cc + (CompileStructExprField::visit): Likewise. + * checks/errors/privacy/rust-privacy-reporter.cc + (PrivacyReporter::visit): Likewise. + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): + Likewise. + * typecheck/rust-hir-type-check-implitem.cc + (TypeCheckImplItem::visit): Likewise. + * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit): + Likewise. + * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): + Likewise. + * typecheck/rust-hir-type-check-struct.cc + (TypeCheckStructExpr::visit): Likewise. + * typecheck/rust-hir-type-check.cc + (TraitItemReference::get_type_from_fn): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-pattern.h: Change constructor to accept new parameter + instead of defaulting on string type. + * parse/rust-parse-impl.h (Parser::parse_literal_or_range_pattern): + Propagate type hint. + (Parser::parse_pattern_no_alt): Likewise. + +2024-01-16 Raiki Tamura + + * lex/rust-lex.cc (Lexer::parse_byte_char):add check for range of codepoint + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-type-check-pattern.cc (emit_invalid_field_error): Refactored Field + Error Function + (TypeCheckPattern::visit): called emit_invalid_field_error function + +2024-01-16 Owen Avery + + * expand/rust-macro-expand.cc + (MacroExpander::match_matcher): Remove append_fragment inside repetitions. + (MacroExpander::match_n_matches): Use sub_stack push/pop to handle repetitions. + (MatchedFragmentContainer::add_fragment): Add MatchedFragmentContainer accepting version. + * expand/rust-macro-expand.h + (MatchedFragmentContainer::add_fragment): Likewise. + (MatchedFragmentContainerRepetition::add_fragment): Likewise. + (SubstititionScope::append_fragment): Likewise. + +2024-01-16 Philip Herron + + * typecheck/rust-casts.cc (TypeCastRules::check): apply new argument + * typecheck/rust-coercion.cc (TypeCoercionRules::Coerce): track if this is a cast site + (TypeCoercionRules::TryCoerce): update ctor + (TypeCoercionRules::TypeCoercionRules): cleanup error handling + (TypeCoercionRules::do_coercion): likewise + (TypeCoercionRules::coerce_unsafe_ptr): only infer in try mode + (TypeCoercionRules::coerce_borrowed_pointer): cleanup + * typecheck/rust-coercion.h: update header + +2024-01-16 Philip Herron + + * typecheck/rust-hir-trait-reference.h: update prototype + * typecheck/rust-hir-trait-resolve.cc: add generic args as an out param + * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): use the generics + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Add comment + after tail expressions. + * ast/rust-ast-dump.cc (Dump::require_spacing): Check for + missing previous token. + * ast/rust-ast-dump.h: Output formatting characters. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::collect): Collect + CollectItems once done. + (TokenCollector::newline): Add newline formatting + implementation. + (TokenCollector::indentation): Add indentation implementation. + (TokenCollector::increment_indentation): Add indentation + increment. + (TokenCollector::comment): Add new comment formatting option. + * ast/rust-ast-collector.h: Update prototypes. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::collect_tokens): + Filter tokens. + (TokenCollector::visit_items_joined_by_separator): Change store + call. + (TokenCollector::visit_as_line): Likewise. + (TokenCollector::visit_items_as_block): Likewise. + (TokenCollector::trailing_comma): Likewise. + (TokenCollector::visit): Likewise. + (TokenCollector::visit_closure_common): Likewise. + (TokenCollector::visit_function_common): Likewise. + * ast/rust-ast-collector.h (class CollectItem): Add class to + differentiate between formatting and raw data (tokens). + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::TokenCollector): + Remove constructor, changing it to an implicit default + constructor. + * ast/rust-ast-collector.h: Change from container reference to + direct container. + * ast/rust-ast-dump.h: Change call to constructor. + * expand/rust-macro-expand.h (struct MacroExpander): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-dump.cc (Dump::require_spacing): Add a function + to determine wether a space shall output. + * ast/rust-ast-dump.h: Add function prototype as well as + condition. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Add a visit + function for visitable abstract class so we can call a dump on + any visitable item. + * ast/rust-ast-collector.h: Add new visit function prototype. + * ast/rust-ast-dump.cc (Dump::go): Add call to process function. + (Dump::visit): Remove functions. + (Dump::visit_items_joined_by_separator): Likewise. + (Dump::visit_as_line): Likewise. + (Dump::visit_items_as_lines): Likewise. + (Dump::visit_items_as_block): Likewise. + (Dump::visit_function_common): Likewise. + (get_delimiters): Likewise. + (Dump::debug): Update with call to tokencollector. + * ast/rust-ast-dump.h (RUST_AST_DUMP_H): Move include + directives. + (class Dump): Remove multiple prototypes and add generic process + function. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Add + semicolon in extern blocks. + +2024-01-16 Pierre-Emmanuel Patry + + * rust-session-manager.cc (Session::enable_dump): Remove + tokenstream dump. + (Session::compile_crate): Likewise. + (Session::dump_tokenstream): Likewise. + * rust-session-manager.h (struct CompileOptions): Likewise. + +2024-01-16 Raiki Tamura + + * lex/rust-lex.cc (Lexer::build_token):add check for all kinds of whitespaces + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.h: Add default constructors. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Change with + call to getter. + * ast/rust-ast.cc (Module::as_string): Likewise. + (StaticItem::as_string): Likewise. + (TupleStruct::as_string): Likewise. + (Method::as_string): Likewise. + (StructStruct::as_string): Likewise. + (UseTreeRebind::as_string): Likewise. + (Enum::as_string): Likewise. + (Trait::as_string): Likewise. + (Union::as_string): Likewise. + (Function::as_string): Likewise. + (TypeAlias::as_string): Likewise. + (MacroRulesDefinition::as_string): Likewise. + (FieldAccessExpr::as_string): Likewise. + (MacroMatchFragment::as_string): Likewise. + (TypeParam::as_string): Likewise. + (StructExprFieldIdentifierValue::as_string): Likewise. + (EnumItem::as_string): Likewise. + (StructField::as_string): Likewise. + (ExternalTypeItem::as_string): Likewise. + (ExternalStaticItem::as_string): Likewise. + (ExternalFunctionItem::as_string): Likewise. + (TraitFunctionDecl::as_string): Likewise. + (TraitMethodDecl::as_string): Likewise. + (TraitItemConst::as_string): Likewise. + (TraitItemType::as_string): Likewise. + (MaybeNamedParam::as_string): Likewise. + (MetaListPaths::as_string): Likewise. + (MetaListNameValueStr::as_string): Likewise. + (Module::process_file_path): Likewise. + (MetaListNameValueStr::check_cfg_predicate): Likewise. + (MetaListPaths::check_cfg_predicate): Likewise. + (MetaWord::check_cfg_predicate): Likewise. + (MetaNameValueStr::check_cfg_predicate): Likewise. + (MetaNameValueStr::to_attribute): Likewise. + (MetaWord::to_attribute): Likewise. + (MetaListPaths::to_attribute): Likewise. + (MetaListNameValueStr::to_attribute): Likewise. + (operator<<): Change Identifier class << + operator overload for standard output stream. + * ast/rust-ast.h (class Identifier): Change typedef to proper + class definition. + (operator<<): Add prototype for operator overload. + (class Token): Change getter identifier. + (class MetaListNameValueStr): Likewise. + (class PathExpr): Likewise. + * ast/rust-expr.h: Likewise. + * ast/rust-item.h: Likewise. + * ast/rust-macro.h: Likewise. + * ast/rust-path.cc (GenericArg::disambiguate_to_type): Likewise. + (GenericArgsBinding::as_string): Likewise. + (ConstGenericParam::as_string): Likewise. + * ast/rust-path.h: Likewise. + * ast/rust-pattern.cc (IdentifierPattern::as_string): Likewise. + (StructPatternFieldIdentPat::as_string): Likewise. + (StructPatternFieldIdent::as_string): Likewise. + * ast/rust-type.h: Likewise. + * backend/rust-compile-base.cc: Likewise. + * backend/rust-compile-expr.cc (CompileExpr::visit): Likewise. + * backend/rust-compile-extern.h: Likewise. + * backend/rust-compile-fnparam.cc (CompileFnParam::visit): + Likewise. + * backend/rust-compile-implitem.cc (CompileTraitItem::visit): + Likewise. + * backend/rust-compile-item.cc (CompileItem::visit): Likewise. + * backend/rust-compile-pattern.cc (CompilePatternBindings::visit): Likewise. + * backend/rust-compile-struct-field-expr.cc (CompileStructExprField::visit): + Likewise. + * backend/rust-compile-var-decl.h: Likewise. + * backend/rust-compile.cc: Likewise. + * checks/errors/rust-unsafe-checker.cc (check_extern_call): + Likewise. + * checks/lints/rust-lint-marklive.cc (MarkLive::visit): + Likewise. + * checks/lints/rust-lint-scan-deadcode.h: Likewise. + * expand/rust-derive-clone.cc (DeriveClone::clone_fn): Likewise. + (DeriveClone::visit_tuple): Likewise. + (DeriveClone::visit_struct): Likewise. + (DeriveClone::visit_union): Likewise. + * expand/rust-derive-copy.cc (DeriveCopy::visit_struct): + Likewise. + (DeriveCopy::visit_tuple): Likewise. + (DeriveCopy::visit_enum): Likewise. + (DeriveCopy::visit_union): Likewise. + * expand/rust-macro-expand.cc (MacroExpander::match_matcher): + Likewise. + (MacroExpander::match_n_matches): Likewise. + (MacroExpander::match_repetition): Likewise. + (MacroExpander::match_repetition_skipped_metavars): Likewise. + * hir/rust-ast-lower-base.cc (struct_field_name_exists): + Likewise. + * hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Likewise. + * hir/rust-ast-lower-type.cc (ASTLowerGenericParam::visit): + Likewise. + * hir/rust-hir-dump.cc (Dump::visit): Likewise. + * hir/tree/rust-hir-expr.h: Likewise. + * hir/tree/rust-hir-item.h: Likewise. + * hir/tree/rust-hir-path.h: Likewise. + * hir/tree/rust-hir-type.h: Likewise. + * hir/tree/rust-hir.cc (Module::as_string): Likewise. + (StaticItem::as_string): Likewise. + (TupleStruct::as_string): Likewise. + (ConstantItem::as_string): Likewise. + (StructStruct::as_string): Likewise. + (UseTreeRebind::as_string): Likewise. + (Enum::as_string): Likewise. + (Trait::as_string): Likewise. + (Union::as_string): Likewise. + (Function::as_string): Likewise. + (TypeAlias::as_string): Likewise. + (FieldAccessExpr::as_string): Likewise. + (TypeParam::as_string): Likewise. + (GenericArgsBinding::as_string): Likewise. + (StructPatternFieldIdent::as_string): Likewise. + (StructPatternFieldIdentPat::as_string): Likewise. + (IdentifierPattern::as_string): Likewise. + (StructExprFieldIdentifierValue::as_string): Likewise. + (EnumItem::as_string): Likewise. + (StructField::as_string): Likewise. + (ExternalStaticItem::as_string): Likewise. + (ExternalFunctionItem::as_string): Likewise. + (NamedFunctionParam::as_string): Likewise. + (TraitFunctionDecl::as_string): Likewise. + (TraitItemConst::as_string): Likewise. + (TraitItemType::as_string): Likewise. + (MaybeNamedParam::as_string): Likewise. + * hir/tree/rust-hir.h: Likewise. + * parse/rust-parse-impl.h (Parser::parse_macro_match_fragment): + Likewise. + (Parser::parse_module): Likewise. + (Parser::parse_use_tree): Likewise. + (Parser::parse_maybe_named_param): Likewise. + * resolve/rust-ast-resolve-implitem.h: Likewise. + * resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit): + Likewise. + (ResolveItem::visit): Likewise. + (flatten_rebind): Likewise. + (ResolveExternItem::visit): Likewise. + (rust_flatten_rebind): Likewise. + (rust_flatten_rebind_nested): Likewise. + * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::go): + Likewise. + (PatternDeclaration::visit): Likewise. + (PatternDeclaration::add_new_binding): Likewise. + * resolve/rust-ast-resolve-stmt.h: Likewise. + * resolve/rust-ast-resolve-toplevel.h: Likewise. + * resolve/rust-ast-resolve-type.h: Likewise. + * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Likewise. + * typecheck/rust-autoderef.cc: Likewise. + * typecheck/rust-hir-dot-operator.cc (MethodResolver::select): + Likewise. + * typecheck/rust-hir-path-probe.cc (PathProbeType::visit): + Likewise. + * typecheck/rust-hir-trait-reference.cc (TraitReference::get_name): Likewise. + * typecheck/rust-hir-trait-resolve.cc (ResolveTraitItemToRef::visit): Likewise. + (TraitResolver::resolve_trait): Likewise. + (TraitItemReference::resolve_item): Likewise. + (AssociatedImplTrait::setup_raw_associated_types): Likewise. + * typecheck/rust-hir-type-check-enumitem.cc (TypeCheckEnumItem::visit): Likewise. + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): + Likewise. + * typecheck/rust-hir-type-check-implitem.cc (TypeCheckTopLevelExternItem::visit): Likewise. + (TypeCheckImplItem::visit): Likewise. + (TypeCheckImplItemWithTrait::visit): Likewise. + * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit): + Likewise. + * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Likewise. + * typecheck/rust-hir-type-check-struct.cc (TypeCheckStructExpr::visit): Likewise. + * typecheck/rust-hir-type-check-type.cc (TypeResolveGenericParam::visit): Likewise. + * typecheck/rust-hir-type-check.cc (TraitItemReference::get_type_from_fn): Likewise. + * typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args): Likewise. + * util/rust-attributes.cc (check_doc_attribute): Likewise. + * util/rust-hir-map.cc (Mappings::insert_macro_def): Likewise. + +2024-01-16 Raiki Tamura + + * lex/rust-lex.cc (is_float_digit):Change types of param to `uint32_t` + (is_x_digit):Likewise + (is_octal_digit):Likewise + (is_bin_digit):Likewise + (check_valid_float_dot_end):Likewise + (is_whitespace):Likewise + (is_non_decimal_int_literal_separator):Likewise + (is_identifier_start):Likewise + (is_identifier_continue):Likewise + (Lexer::skip_broken_string_input):Likewise + (Lexer::build_token):Remove handling BOM + (Lexer::parse_in_type_suffix):Modify use of `current_char` + (Lexer::parse_in_decimal):Likewise + (Lexer::parse_escape):Likewise + (Lexer::parse_utf8_escape):Likewise + (Lexer::parse_partial_string_continue):Likewise + (Lexer::parse_partial_hex_escape):Likewise + (Lexer::parse_partial_unicode_escape):Likewise + (Lexer::parse_byte_char):Likewise + (Lexer::parse_byte_string):Likewise + (Lexer::parse_raw_byte_string):Likewise + (Lexer::parse_raw_identifier):Likewise + (Lexer::parse_non_decimal_int_literal):Likewise + (Lexer::parse_decimal_int_or_float):Likewise + (Lexer::peek_input):Change return type to `Codepoint` + (Lexer::get_input_codepoint_length):Change to return 1 + (Lexer::peek_codepoint_input):Change to be wrapper of `peek_input` + (Lexer::skip_codepoint_input):Change to be wrapper of `skip_input` + (Lexer::test_get_input_codepoint_n_length):Deleted + (Lexer::split_current_token):Deleted + (Lexer::test_peek_codepoint_input):Deleted + (Lexer::start_line):Move backwards + (assert_source_content):New helper function for selftest + (test_buffer_input_source):New helper function for selftest + (test_file_input_source):Likewise + (rust_input_source_test):New test + * lex/rust-lex.h (rust_input_source_test):New test + * rust-lang.cc (run_rust_tests):Add selftest + +2024-01-16 Owen Avery + + * expand/rust-macro-expand.cc + (MacroExpander::match_repetition_skipped_metavars): New. + (MacroExpander::match_repetition): Use new method. + * expand/rust-macro-expand.h + (MacroExpander::match_repetition_skipped_metavars): New. + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): called rust_error_at + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): called rust_error_at + +2024-01-16 Owen Avery + + * expand/rust-macro-expand.cc + (MacroExpander::match_token): Match token instead of token id. + * parse/rust-parse-impl.h + (Parser::skip_token): Add token-skipping variant. + (Parser::expect_token): Likewise. + * parse/rust-parse.h + (Parser::skip_token): Likewise. + (Parser::expect_token): Likewise. + +2024-01-16 Arthur Cohen + + * lang.opt: Add -frust-name-resolution-2.0 option + +2024-01-16 Philip Herron + + * typecheck/rust-autoderef.cc (AutoderefCycle::cycle): add check for pointers + +2024-01-16 Philip Herron + + * typecheck/rust-autoderef.cc: use new selection filter + * typecheck/rust-hir-dot-operator.cc (MethodResolver::Select): new slection Filter + * typecheck/rust-hir-dot-operator.h: New select prototype + * typecheck/rust-hir-type-check-expr.cc: call select + * typecheck/rust-type-util.cc (try_coercion): new helper + * typecheck/rust-type-util.h (try_coercion): helper prototype + +2024-01-16 Muhammad Mahad + + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): passed "E0277" + * typecheck/rust-tyty.cc (BaseType::bounds_compatible): passed "E0277" + +2024-01-16 Matthew Jasper + + * expand/rust-expand-visitor.cc (ExpandVisitor::visit): + Expand expressions in more contexts. + * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): + Visit enum variants. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.cc (BlockExpr::normalize_tail_expr): Refactor + code and warn about dangling reference. + * expand/rust-expand-visitor.cc (expand_stmt_attribute): + Document function and change argument names to make those + clearer. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-expand-visitor.cc (ExpandVisitor::expand_inner_stmts): + Remove second argument. + (ExpandVisitor::visit): Remove argument from function call. + * expand/rust-expand-visitor.h: Update function prototype. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Change + call to expand_inner_stmts. + (expand_tail_expr): Change argument name and try to expand the + last statement as a tail expression once all statements have + been expanded. + * expand/rust-expand-visitor.h: Change prototype to accept + parent class. + * ast/rust-expr.h: Add try_convert_last_stmt function prototype. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-expr.h: Add a function to take tail expr as well + as a function to set a tail expression. + * expand/rust-expand-visitor.cc (expand_tail_expr): Add tail + expression expansion function. + (ExpandVisitor::visit): Add call to tail expr expansion in for + BlockExpr. + +2024-01-16 Arthur Cohen + Pierre-Emmanuel Patry + + * expand/rust-expand-visitor.cc : Change type from pointer to + reference and expand statements from statements. + * ast/rust-macro.h: Return macro kind. + * ast/rust-ast.h: Add Statement kind. + * ast/rust-item.h: Change module. + * ast/rust-stmt.h: Return kind. + +2024-01-16 Owen Avery + + * expand/rust-macro-expand.cc + (MacroExpander::expand_decl_macro): + Use pointers/smart pointers to refer to MatchedFragmentContainer instances. + (MacroExpander::transcribe_rule): Likewise. + (MatchedFragmentContainer::get_single_fragment): New implementation. + (MatchedFragmentContainer::get_fragments): Likewise. + (MatchedFragmentContainer::add_fragment): Likewise. + (MatchedFragmentContainer::zero): Likewise. + (MatchedFragmentContainer::metavar): Likewise. + * expand/rust-macro-expand.h + (class MatchedFragmentContainer): Make abstract. + (class MatchedFragmentContainerMetaVar): New. + (class MatchedFragmentContainerRepetition): New. + (class SubstitutionScope): + Use pointers/smart pointers to refer to MatchedFragmentContainer instances. + (MacroExpander::transcribe_rule): Likewise. + * expand/rust-macro-substitute-ctx.cc + (SubstituteCtx::substitute_metavar): Likewise. + (SubstituteCtx::check_repetition_amount): Likewise. + (SubstituteCtx::substitute_repetition): Likewise. + * expand/rust-macro-substitute-ctx.h + (class SubstituteCtx): Likewise. + +2024-01-16 Muhammad Mahad + + * resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): called rust_error_at + * resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): called rust_error_at + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::ResolveImplBlockSelfWithInference): + arguments mappings as an out parameter and apply them to the bounds + * typecheck/rust-hir-type-check-item.h: update the prototype + * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments): + apply the arguments to the segment type + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments): + simplify lookup of the respective predicate + * typecheck/rust-tyty-subst.cc (SubstitutionArg::SubstitutionArg): track original parameter + (SubstitutionArg::operator=): update copy ctor + (SubstitutionArg::get_param_ty): use original param + (SubstitutionArg::as_string): update as_string + * typecheck/rust-tyty-subst.h: add new private field + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::ResolveImplBlockSelfWithInference): + New helper utility to infer non concrete types and handle the case where its not a + binding generic type (which inherits SubstitutionRef) + * typecheck/rust-hir-type-check-item.h: new helper prototype + * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments): use this helper + +2024-01-16 Philip Herron + + * typecheck/rust-hir-trait-resolve.cc: use lookup_predicate (DefID) + * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments): fix formatting + +2024-01-16 Matthew Jasper + + * ast/rust-ast.h (MacroInvocation::add_semicolon): New method. + (Expr::to_stmt): Remove method. + * ast/rust-macro.h (MacroInvocation::add_semicolon): Add override. + (MacroInvocation::to_stmt): Remove override. + * ast/rust-stmt.h: Remove use of Expr::to_stmt. + (ExprStmt::add_semicolon): Add override. + * expand/rust-macro-expand.h (struct MacroExpander): + Add EXPR/STMT and remove BLOCK from ContextType. + * expand/rust-expand-visitor.cc (ExpandVisitor::maybe_expand_expr): Use EXPR context. + (ExpandVisitor::expand_inner_stmts): Use STMT context. + (ExpandVisitor::visitor): Remove use of BLOCK context. + * expand/rust-macro-expand.cc (parse_many): Pass enum by value. + (transcribe_on_delimiter): Remove function. + (transcribe_context): Use EXPR/STMT contexts. + (MacroExpander::parse_proc_macro_output): Use EXPR/STMT contexts. + (transcribe_many_stmts): Parse statements with semicolons. + * parse/rust-parse-impl.h (Parser::parse_stmt): + Delegate macro parsing to parse_expr_stmt, check for ! after macro_rules. + (Parser::parse_let_stmt): Work around lack of NT tokens. + (Parser::parse_expr_stmt): Handle statements at end of macro expansions. + (Parser::parse_expr_stmt): Parse macro statements/expression statements + starting with a macro. + (Parser::parse_match_expr): Don't modify flag unnecessarily. + (Parser::parse_stmt_or_expr): + Parse macro statements/expression statements starting with a macro. + (Parser::parse_path_based_stmt_or_expr): Remove method. + (Parser::parse_macro_invocation_maybe_semi): Remove method. + (Parser::parse_expr): Move code into left_denotations. + (Parser::left_denotations): New method. + (Parser::null_denotation): Split out methods for cases with and without paths. + (Parser::null_denotation_path): New method. + (Parser::null_denotation_not_path): New method. + (Parser::parse_macro_invocation_partial): Don't check for semicolon here. + * parse/rust-parse.h: Update declarations. + (struct ParseRestrictions): Additional flag. + +2024-01-16 Matthew Jasper + + * ast/rust-ast.cc (BlockExpr::strip_tail_expr): + Don't normalize tail expression in this method. + (BlockExpr::normalize_tail_expr): New method that only does the normalization. + * ast/rust-expr.h: Declare new method. + * hir/rust-ast-lower-block.h: Normalize tail expressions on blocks before lowering. + +2024-01-16 Matthew Jasper + + * ast/rust-ast-dump.cc (Dump::visit): Print macro invocations. + +2024-01-16 Raiki Tamura + + * lex/rust-lex.cc (is_whitespace):add all lacked codepoints valid as whitespaces + (is_identifier_start):new function to check XID_Start and underscore + (is_identifier_continue):new function to check XID_Continue + (Lexer::build_token):tokenize Unicode identifiers + (Lexer::parse_partial_string_continue):add comments + (Lexer::parse_partial_unicode_escape):add comments + (Lexer::parse_raw_identifier):change to use `is_identifier_scontinue` + (Lexer::parse_identifier_or_keyword):change to use `is_identifier_continue` + (Lexer::parse_char_or_lifetime):change to use `is_identifier_start/continue` + (Lexer::skip_codepoint_input):do not attempt to skip input when bumping EOF + * lex/rust-lex.h:add `current_char32` field + +2024-01-16 Owen Avery + + * lex/rust-lex.cc + (Lexer::classify_keyword): Check if iterator is valid before dereferencing. + +2024-01-16 Owen Avery + + * expand/rust-macro-expand.cc + (MacroExpander::match_repetition): Remove redundant rust_error_at call. + +2024-01-16 Philip Herron + + * typecheck/rust-unify.cc (UnifyRules::go): dont check bounds on placeholders + +2024-01-16 tieway59 + + * typecheck/rust-tycheck-dump.h: Delete this file + * rust-session-manager.cc: Remove `Session::dump_type_resolution` + and `TYPE_RESOLUTION_DUMP` + * rust-session-manager.h: Likewise + +2024-01-16 Philip Herron + + * backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address): + match the fntype to the candidate + +2024-01-16 Arthur Cohen + + * expand/rust-derive.h: Store AstBuilder and location. + * expand/rust-derive.cc (DeriveVisitor::DeriveVisitor): Update constructor. + * expand/rust-derive-clone.h: Remove members now stored in `DeriveVisitor`. + * expand/rust-derive-copy.h: Likewise. + * expand/rust-derive-clone.cc (DeriveClone::DeriveClone): Update constructor. + * expand/rust-derive-copy.cc (DeriveCopy::DeriveCopy): Likewise. + +2024-01-16 Philip Herron + + * backend/rust-compile-item.cc (CompileItem::visit): ensure assoicated types are setup + * typecheck/rust-hir-trait-reference.h: new interface for concrete impl block + * typecheck/rust-hir-trait-resolve.cc (AssociatedImplTrait::setup_raw_associated_types): + ensure we setup assoicated types for this impl block + +2024-01-16 Dave Evans + + * backend/rust-compile-expr.cc (check_match_scrutinee): Add REF type to rust_assert. + (CompileExpr::visit): Add REF type for scrutinee_kind in MatchExpr visitor. + +2024-01-16 TieWay59 + + * typecheck/rust-hir-type-check-expr.cc: Remove obsolete error diagnostic + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItemWithTrait::visit): + use new interface + * typecheck/rust-type-util.cc (types_compatable): implementation of new interface + * typecheck/rust-type-util.h (types_compatable): prototype + * typecheck/rust-unify.cc (UnifyRules::expect_placeholder): + It is allow for unification against placeholders + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-expand-visitor.cc (derive_item): Add const + attribute to the trait name argument. + * expand/rust-macro-expand.h (struct MacroExpander): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-expand-visitor.cc (get_traits_to_derive): Change + assertion to allow empty derive directives. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-expand-visitor.cc (expand_attribute): Add function + to expand a given attribute on a given item. + * expand/rust-macro-expand.h (struct MacroExpander): Change + return type to ast fragment. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-expand-visitor.cc (get_traits_to_derive): Change + the function to get traits in a given attribute instead of an + attribute vector. + (ExpandVisitor::expand_struct_fields): Remove call in visitor. + (ExpandVisitor::expand_function_params): Likewise. + (ExpandVisitor::expand_closure_params): Likewise. + (ExpandVisitor::visit): Likewise. + (ExpandVisitor::expand_outer_attribute): Remove function. + (ExpandVisitor::visit_outer_attrs): Remove function. + * expand/rust-expand-visitor.h: Remove function prototypes. + (ExpandVisitor::visit_outer_attrs): Remove function. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-expand-visitor.h: Remove fragment collection fro + procedural macros. + * expand/rust-macro-expand.h (struct MacroExpander): Remove + procedural macro fragment from expander. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-fragment.cc (Fragment::Fragment): Remove + overwrite member in constructor. + (Fragment::operator=): Removal of overwrite member in copy. + (Fragment::should_overwrite): Remove overwrite getter. + * ast/rust-ast-fragment.h: Remove overwrite boolean member. + * expand/rust-expand-visitor.cc (derive_item): Add a function to + derive items using the expander for now. + (builtin_derive_item): Rename from derive_item to + builtin_derive_item. + (ExpandVisitor::visit): Remove visit to derive attributes. + (ExpandVisitor::expand_derive): Remove derive attribute visitor. + (ExpandVisitor::visit_attrs_with_derive): Likewise. + * expand/rust-expand-visitor.h: Update insertion of other kind + of proc macros. We no longer have an overwrite attribute in the + fragment. + * expand/rust-macro-expand.cc (MacroExpander::parse_procmacro_output): + Return the fragment instead of inserting it. + * expand/rust-macro-expand.h (struct MacroExpander): Return + fragment. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.h: Update enum name to match + definition. + * expand/rust-expand-visitor.cc (ExpandVisitor::expand_derive): + Add call to expander. + (ExpandVisitor::expand_outer_attribute): + Change call to macro expander. + (ExpandVisitor::expand_inner_attribute): Likewise. + * expand/rust-expand-visitor.h: Remove const attribute to match + visitor declaration. Attach result to the AST. Add condition for + item erasure. + * expand/rust-proc-macro.h: Add token collector and expansion + call. Add lexers and parsers for each proc macro type and uses + them to parse macro output. + * expand/rust-macro-expand.h (struct MacroExpander): Add + functions. + * expand/rust-proc-macro.cc (ProcMacroExpander::import_proc_macros): + Moved from here... + * expand/rust-macro-expand.cc (MacroExpander::import_proc_macros): + ... to here. Unify procedural macro parsing under one function. + Add a flag to determine whether it originate from a derive + macro. + (MacroExpander::parse_procmacro_output): + Parse macro output to statements. Store an error on parsing + failure. + * Make-lang.in: Add const_TokenPtr specific lexer. + * expand/rust-proc-macro-invoc-lexer.cc: New file. + * expand/rust-proc-macro-invoc-lexer.h: New file. + * rust-session-manager.cc (Session::expansion): Remove + ProcMacroExpander declaration. + * ast/rust-ast-fragment.cc (Fragment::Fragment): Add overwrite + flag. + (Fragment::should_overwrite): Add a getter to determine whether + the fragment shall overwrite it's parent or be appended after. + * ast/rust-ast-fragment.h: Add flag to declaration. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-hir-map.cc (Mappings::insert_bang_proc_macro): + Add a function to insert a new bang proc macro. + (Mappings::lookup_bang_proc_macro): Add a function to lookup a + bang procedural macro. + (Mappings::insert_derive_proc_macro): Add a function to insert a + derive procedural macro. + (Mappings::lookup_derive_proc_macro): Add a function to lookup a + derive procedural macro. + (Mappings::insert_attribute_proc_macro): Add a function to + insert an attribute procedural macro. + (Mappings::lookup_attribute_proc_macro): Add a function to + lookup an attribute procedural macro. + * util/rust-hir-map.h: Add function prototypes. + * expand/rust-expand-visitor.cc (ExpandVisitor::expand_outer_attribute): + Implement expansion of outer attributes. + (ExpandVisitor::expand_inner_attribute): + Add call for inner attribute expansion. + * expand/rust-expand-visitor.h: + Add new procedural macro expander attribute. + * expand/rust-proc-macro.cc (load_macros_array): Add a function + to load the proc macro array from a given shared object. + (load_macros): Add a function to retrieve procedural macro + vector from a given shared object. + (ProcMacroExpander::import_proc_macros): Add a function to load + procedural macros from a given extern crate name. + * expand/rust-proc-macro.h (RUST_PROC_MACRO_H): Add new + proc-macro file. + (class ProcMacroExpander): Add new ProcMacroExpander class. + * rust-session-manager.cc (Session::expansion): Create new macro + expander and feed it to the expand visitor. + * util/rust-attributes.cc: Add macro_export builtin attribute. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Fix + attribute collection. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.h: Make trivial visitors public. + +2024-01-16 Pierre-Emmanuel Patry + + * Make-lang.in: Add rust-proc-macro object to list. + * expand/rust-proc-macro.cc: New file. + * expand/rust-proc-macro.h: New file. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-attributes.cc: Add attribute to the table. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Move + implementation from here... + * ast/rust-ast-collector.h: ... to here. + +2024-01-16 Owen Avery + + * Make-lang.in: Add "rust-dir-owner.o". + * ast/rust-ast.cc: Include "rust-dir-owner.h". + (Module::process_file_path): + Handle non-mod-rs external file modules properly. + * parse/rust-parse-impl.h: Include "rust-dir-owner.h". + (Parser::parse_module): + Handle non-mod-rs external file modules properly. + * util/rust-dir-owner.cc: New file. + * util/rust-dir-owner.h: New file. + +2024-01-16 Owen Avery + + * expand/rust-macro-builtins.cc: Fix comments. + (MacroBuiltin::proc_macro_builtin): Add error message. + * expand/rust-macro-builtins.h: Fix comments. + +2024-01-16 Philip Herron + + * typecheck/rust-hir-trait-resolve.cc: when the bound is concrete keep the mapping + * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): add missing call + * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): make this the same as paths + +2024-01-16 Owen Avery + + * util/rust-optional.h + (class Optional): Add volatile field to union. + +2024-01-16 Owen Avery + + * expand/rust-macro-substitute-ctx.cc + (SubstituteCtx::substitute_metavar): Substitute crate metavar. + +2024-01-16 Owen Avery + + * parse/rust-parse-impl.h + (Parser::null_denotation): Allow struct expression referencing. + +2024-01-16 Charalampos Mitrodimas + + * ast/rust-ast-dump.cc (Dump::visit): + print literals based on their type. + +2024-01-16 Arthur Cohen + + * expand/rust-macro-builtins.cc (MacroBuiltin::dummy): New function. + * expand/rust-macro-builtins.h: Declare it. + +2024-01-16 Arthur Cohen + + * ast/rust-ast-builder.cc (AstBuilder::struct_expr_struct): New function. + (AstBuilder::let): Likewise. + (AstBuilder::struct_expr): Likewise. + (AstBuilder::struct_expr_field): Likewise. + (AstBuilder::field_access): Likewise. + (AstBuilder::wildcard): Likewise. + * ast/rust-ast-builder.h: Likewise. + * expand/rust-derive-clone.cc (DeriveClone::visit_union): Implement + properly. + +2024-01-16 Arthur Cohen + + * Make-lang.in: Add new files. + * expand/rust-derive.cc (DeriveVisitor::derive): Call into DeriveCopy. + * expand/rust-derive-copy.cc: New file. + * expand/rust-derive-copy.h: New file. + +2024-01-16 Arthur Cohen + + * expand/rust-derive-clone.cc (DeriveClone::visit_struct): Implement proper + cloning for structs with fields. + * ast/rust-ast-builder.cc (AstBuilder::struct_expr): New function. + (AstBuilder::struct_expr_field): Likewise. + (AstBuilder::field_access): Likewise. + (AstBuilder::let): Likewise. + * ast/rust-ast-builder.h: Declare new functions. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-token-converter.cc (convert): Use a variable instead + of multiple nested calls. + +2024-01-16 Pierre-Emmanuel Patry + + * lex/rust-lex.h: Make build_token method public. + * lex/rust-token.h: Add a setter for a token location. + * util/rust-token-converter.cc (convert): Add the function to + convert from a Span to a Location. + (from_ident): Convert Ident span to a Location. + (from_literal): Convert Literal span to a Location. + (from_punct): Convert Punct span to a Location. + (from_group): Convert Group span to a Location. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-token-converter.cc (convert): Add implementation. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-token-converter.cc (convert): Update call to + constructors with location information. + (handle_suffix): Convert token locus to a Span and use it in the + literal. + +2024-01-16 Owen Avery + + * expand/rust-macro-expand.cc + (MacroExpander::try_match_rule): Don't match delimiters for root matcher. + (MacroExpander::match_matcher): Add option to match delimiters. + * expand/rust-macro-expand.h + (MacroExpander::match_matcher): Likewise. + * parse/rust-parse-impl.h + (Parser::skip_token): Add zero argument method. + * parse/rust-parse.h: + (Parser::skip_token): Likewise. + +2024-01-16 Philip Herron + + * Make-lang.in: remove files + * backend/rust-compile-block.h: fix headers + * backend/rust-compile-expr.h: likewise + * backend/rust-compile-fnparam.h: likewise + * backend/rust-compile-item.h: likewise + * backend/rust-compile-pattern.h: likewise + * backend/rust-compile-resolve-path.h: likewise + * backend/rust-compile-stmt.h: likewise + * typecheck/rust-autoderef.cc: likewise + * typecheck/rust-hir-path-probe.cc: likewise + * typecheck/rust-hir-path-probe.h: likewise + * typecheck/rust-hir-trait-reference.h: likewise + * typecheck/rust-hir-trait-resolve.cc: use a for loop instead + * typecheck/rust-hir-trait-resolve.h: fix headers + * typecheck/rust-hir-type-check-expr.h: likewise + * typecheck/rust-hir-type-check-implitem.h: likewise + * typecheck/rust-hir-type-check-item.h: likewise + * typecheck/rust-hir-type-check-path.cc: likewise + * typecheck/rust-hir-type-check-pattern.h: likewise + * typecheck/rust-hir-type-check-stmt.h: likewise + * typecheck/rust-hir-type-check-type.h: likewise + * typecheck/rust-hir-type-check-util.cc: Removed. + * typecheck/rust-hir-type-check-util.h: Removed. + +2024-01-16 Arthur Cohen + + * Make-lang.in: Add new object files to Makefile. + * expand/rust-expand-visitor.cc (is_derive): Move function. + (is_builtin): Likewise. + (get_traits_to_derive): New function. + (derive_item): Likewise. + (ExpandVisitor::visit): Visit item/statements containers. + (ExpandVisitor::visit_outer_attrs): Take a reference on the attribute + instead of a copy. + (ExpandVisitor::is_derive): Deleted function. + (ExpandVisitor::is_builtin): Likewise. + * expand/rust-expand-visitor.h (RUST_EXPAND_VISITOR_H): Add missing #ifdef + guards. + (is_derive): Declare function. + (is_builtin): Likewise. + * expand/rust-macro-builtins.cc (builtin_macro_from_string): Use new + MacroBuiltin::builtins map. + (make_macro_path_str): Likewise. + * expand/rust-macro-builtins.h (enum class): Add builtin derive macros. + * expand/rust-derive-clone.cc: New file. + * expand/rust-derive-clone.h: New file. + * expand/rust-derive.cc: New file. + * expand/rust-derive.h: New file. + * util/rust-hir-map.cc (Mappings::insert_macro_def): Fix logic for + setting builtin macro transcribers. + +2024-01-16 Arthur Cohen + + * ast/rust-ast-builder.cc: New file. + * ast/rust-ast-builder.h: New file. + +2024-01-16 Arthur Cohen + + * expand/rust-macro-invoc-lexer.cc: Add missing copyright header. + * expand/rust-macro-substitute-ctx.cc: Likewise. + +2024-01-16 Owen Avery + + * rust-session-manager.h: + Include "rust-optional.h". + (struct TargetOptions): + Store values in config key/value pairs as Optional rather than std::string. + * rust-session-manager.cc + (TargetOptions::dump_target_options): + Handle Optional values. + +2024-01-16 Philip Herron + + * typecheck/rust-casts.cc (TypeCastRules::check): do coercion + (TypeCastRules::emit_cast_error): clang-format + +2024-01-16 Philip Herron + + * resolve/rust-ast-resolve-stmt.cc (ResolveStmt::visit): add name resolution + * resolve/rust-ast-resolve-stmt.h: likewise + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): insert resolved node + +2024-01-16 Philip Herron + + * resolve/rust-ast-resolve-pattern.cc: remove unused + +2024-01-16 Philip Herron + + * resolve/rust-ast-resolve-item.cc (ResolveItem::visit): fix missing pop + +2024-01-16 Philip Herron + + * backend/rust-compile-expr.cc (CompileExpr::visit): remove unused + +2024-01-16 Philip Herron + + * hir/rust-ast-lower-stmt.cc (ASTLoweringStmt::translate): hir lowering + (ASTLoweringStmt::visit): likewise + * hir/rust-ast-lower-stmt.h: likewise + +2024-01-16 Owen Avery + + * expand/rust-macro-substitute-ctx.cc + (SubstituteCtx::substitute_metavar): Allow substitution failure. + (SubstituteCtx::substitute_token): + Handle substitution failure, include dollar sign in count of tokens to substitute. + (SubstituteCtx::substitute_tokens): + Include dollar sign in count of tokens to substitute. + * expand/rust-macro-substitute-ctx.h + (SubstituteCtx::substitute_metavar): + Adjust signature and document new substitution failure handling. + +2024-01-16 Owen Avery + + * expand/rust-macro-substitute-ctx.cc + (SubstituteCtx::check_repetition_amount): + Ignore single fragments while checking repetition amount. + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments): stop if error + * typecheck/rust-tyty-bounds.cc (TypeBoundsProbe::assemble_sized_builtin): fix sized options + * typecheck/rust-tyty.cc (BaseType::satisfies_bound): its ok if its an ?T + (BaseType::bounds_compatible): likewise + * typecheck/rust-tyty.h: update prototype + * typecheck/rust-unify.cc (UnifyRules::go): check both sides bounds + +2024-01-16 Philip Herron + + * backend/rust-compile-expr.cc (HIRCompileBase::resolve_deref_adjustment): + reuse op overload code + * typecheck/rust-autoderef.cc (Adjuster::try_deref_type): update + (Adjuster::try_raw_deref_type): likewise + * typecheck/rust-autoderef.h: likewise + * typecheck/rust-hir-dot-operator.cc (MethodResolver::select): + improve debug loging + +2024-01-16 Philip Herron + + * backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address): refactor + * backend/rust-compile-base.h: likewise + * backend/rust-compile-expr.cc (CompileExpr::visit): likewise + * backend/rust-compile-resolve-path.cc (HIRCompileBase::query_compile): likewise + +2024-01-16 David Malcolm + + * typecheck/rust-hir-trait-reference.cc (TraitItemReference::is_optional): Remove + stray semicolon. + +2024-01-16 Arthur Cohen + + * resolve/rust-early-name-resolver.cc (EarlyNameResolver::go): Cleanup + order of calls when accumulating #[macro_use] macros. + (EarlyNameResolver::visit): Likewise. + +2024-01-16 Matthew Jasper + + * resolve/rust-early-name-resolver.cc (EarlyNameResolver::accumulate_escaped_macros): + Remove unnecessary visit. + +2024-01-16 Matthew Jasper + + * ast/rust-ast.cc (Attribute::check_cfg_predicate): + Only check first item as a predicate. + +2024-01-16 Owen Avery + + * util/rust-optional.h + (operator==): New for Optional == Optional. + +2024-01-16 Owen Avery + + * parse/rust-parse-impl.h + (Parser::parse_attr_input): Parse AttrInputMacro. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.cc (TokenCollector::visit): Propagate + coretype hint. + +2024-01-16 Owen Avery + + * util/rust-optional.h + (class Optional): Improve inner state. + +2024-01-16 Owen Avery + + * expand/rust-macro-substitute-ctx.cc + (SubstituteCtx::check_repetition_amount): Handle keywords. + (SubstituteCtx::substitute_token): Likewise. + * lex/rust-token.cc + (Token::get_str): Likewise. + * parse/rust-parse-impl.h + (Parser::parse_macro_match_fragment): Likewise. + +2024-01-16 Arthur Cohen + + * ast/rust-ast.h: Add `outer_attrs` to Item. + * ast/rust-expr.h: Make use of new inheritance methods. + * ast/rust-item.h: Likewise. + * ast/rust-macro.h: Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-token-converter.cc (dispatch_float_literals): Remove + function. + (handle_suffix): Rename old dispatch and add one LitKind + argument. + (dispatch_integer_literals): Remove function. + (convert): Change call from dispatch to suffix handler. + +2024-01-16 Pierre-Emmanuel Patry + + * lex/rust-token.h: Implement hash for token id enumeration. + * util/rust-token-converter.cc (dispatch_float_literals): Update + to new internals. + (dispatch_integer_literals): Likewise. + (convert): Likewise. + (string_literal): Remove function. + (byte_string_literal): Likewise. + (unsigned_literal): Likewise. + (signed_literal): Likewise. + (from_literal): Update with new internals. + +2024-01-16 Owen Avery + + * ast/rust-ast-dump.cc + (Dump::visit): Add AttrInputMacro visitor. + * ast/rust-ast-dump.h: + (Dump::visit): Likewise. + * ast/rust-ast-full-decls.h + (class AttrInputMacro): New. + * ast/rust-ast-collector.cc + (TokenCollector::visit): + Add and call out to AttrInputMacro visitor. + * ast/rust-ast-collector.h: + (TokenCollector::visit): Add AttrInputMacro visitor. + * ast/rust-ast-visitor.h: + (ASTVisitor::visit): Likewise. + * ast/rust-ast.cc + (AttrInputMacro::accept_vis): New. + (AttrInputMacro::as_string): New. + (AttrInputMacro::AttrInputMacro): New. + (AttrInputMacro::operator=): New. + * ast/rust-ast.h: + (AttrInput::AttrInputType::MACRO): New. + * ast/rust-expr.h + (class AttrInputMacro): New. + * checks/errors/rust-feature-gate.h: + (FeatureGate::visit): Add AttrInputMacro visitor. + * expand/rust-cfg-strip.cc + (CfgStrip::visit): Likewise. + * expand/rust-cfg-strip.h: + (CfgStrip::visit): Likewise. + * expand/rust-expand-visitor.cc + (ExpandVisitor::visit): Likewise. + * expand/rust-expand-visitor.h: + (ExpandVisitor::visit): Likewise. + * hir/rust-ast-lower-base.cc + (ASTLoweringBase::visit): Likewise. + * hir/rust-ast-lower-base.h: + (ASTLoweringBase::visit): Likewise. + * resolve/rust-ast-resolve-base.cc + (ResolverBase::visit): Likewise. + * resolve/rust-ast-resolve-base.h: + (ResolverBase::visit): Likewise. + * resolve/rust-early-name-resolver.cc + (EarlyNameResolver::visit): Likewise. + * resolve/rust-early-name-resolver.h: + (EarlyNameResolver::visit): Likewise. + * util/rust-attributes.cc + (AttributeChecker::visit): Likewise. + (check_doc_attribute): Handle AttrInputType::MACRO. + * util/rust-attributes.h: + (AttributeChecker::visit): Add AttrInputMacro visitor. + +2024-01-16 Owen Avery + + * ast/rust-macro.h + (MacroInvocation::clone_macro_invocation_impl): Make public. + +2024-01-16 Owen Avery + + * util/rust-optional.h + (struct std::hash>): New. + +2024-01-16 Owen Avery + + * util/rust-optional.h + (class Optional): Use pointers internally. + +2024-01-16 Arthur Cohen + + * ast/rust-ast-dump.cc (Dump::visit): Implement dump for + `TupleIndexExpr`. + +2024-01-16 Owen Avery + + * lex/rust-token.cc + (token_id_keyword_string): Return std::string reference. + * lex/rust-token.h + (token_id_keyword_string): Return std::string reference. + +2024-01-16 Matthew Jasper + + * ast/rust-ast.h (Expr::as_expr_without_block): Remove. + (Expr::set_outer_attrs): Make public in base class. + * expand/rust-macro-expand.cc: + Add fixme comment for pre-existing bug. + * hir/tree/rust-hir.h: Remove Expr::as_expr_without_block. + * parse/rust-parse-impl.h (Parser::parse_lifetime): Use lifetime_from_token. + (Parser::lifetime_from_token): New method. + (Parser::null_denotation): Handle labelled loop expressions and for loop expressions. + (Parser::parse_loop_label): Make initial token a parameter. + (Parser::parse_labelled_loop_expr): Likewise. + (Parser::parse_for_loop_expr): Allow FOR token to already be skipped. + (Parser::parse_expr): Handle expr_can_be_stmt. + (Parser::parse_expr_with_block): Remove. + (Parser::parse_expr_stmt_with_block): Remove. + (Parser::parse_expr_stmt_without_block): Remove. + (Parser::parse_expr_without_block): Remove. + (Parser::parse_stmt_or_expr_with_block): Remove. + (Parser::parse_expr_stmt): Use parse_expr directly. + (Parser::parse_match_expr): Likewise. + (Parser::parse_stmt): Use parse_expr_stmt in more cases. + (Parser::parse_stmt_or_expr): + Rename from parse_stmt_or_expr_without_block, use parse_expr directly. + (Parser::parse_block_expr): Update error message. + * parse/rust-parse.h: Update declarations. + +2024-01-16 Matthew Jasper + + * ast/rust-ast-full-decls.h (class ExprStmtWithoutBlock): Remove. + (class ExprStmtWithBlock): Remove. + * ast/rust-stmt.h (class ExprStmtWithoutBlock): Remove. + (class ExprStmtWithBlock): Remove. + (class ExprStmt): + Make non-abstract, add common functionality from removed base classes. + * ast/rust-ast.h: Move to_stmt to base class. + * ast/rust-ast.cc (ExprStmtWithBlock::as_string): Remove. + * ast/rust-macro.h: Use new signature for to_stmt. + (ExprStmt::as_string): New method. + (ExprStmtWithoutBlock::as_string): Remove. + (BlockExpr::strip_tail_expr): Update for removed classes. + (ExprStmtWithoutBlock::accept_vis): Remove. + (ExprStmtWithBlock::accept_vis): Remove. + (ExprStmt::accept_vis): New method. + * ast/rust-ast-dump.cc (Dump::visit): Update for removed classes. + * ast/rust-ast-dump.h: Likewise. + * ast/rust-ast-collector.h: Likewise. + * ast/rust-ast-collector.cc (TokenStream::visit): Likewise. + * ast/rust-ast-visitor.h: Likewise. + * checks/errors/rust-feature-gate.h: Likewise. + * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Likewise. + * expand/rust-expand-visitor.h: Likewise. + * expand/rust-cfg-strip.cc (CfgStrip::visit): Likewise. + * expand/rust-cfg-strip.h: Likewise. + * hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Likewise. + * hir/rust-ast-lower-base.h: Likewise. + * hir/rust-ast-lower-stmt.cc (ASTLoweringStmt::visit): Likewise. + * hir/rust-ast-lower-stmt.h: Likewise. + * util/rust-attributes.cc (AttributeChecker::visit): Likewise. + * util/rust-attributes.h: Likewise. + * resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Likewise. + * resolve/rust-ast-resolve-base.h: Likewise. + * resolve/rust-ast-resolve-stmt.h: Likewise. + * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): + Likewise. + * resolve/rust-early-name-resolver.h: Likewise. + * parse/rust-parse-impl.h (Parser::parse_match_expr): Likewise. + (Parser::parse_stmt_or_expr_without_block): Likewise. + * parse/rust-parse.h: Likewise. + +2024-01-16 Owen Avery + + * lex/rust-token.cc + (token_id_is_keyword): New. + (token_id_keyword_string): New. + * lex/rust-token.h + (token_id_is_keyword): New. + (token_id_keyword_string): New. + * expand/rust-macro-expand.cc + (MacroExpander::match_fragment): Match keywords for ident fragment. + * parse/rust-parse-impl.h + (Parser::parse_identifier_or_keyword_token): Add. + * parse/rust-parse.h + (Parser::parse_identifier_or_keyword_token): Add. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-token-converter.cc (dispatch_float_literals): Invert + suffix condition. + (dispatch_integer_literals): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-token-converter.cc (convert): Fix style. + (from_ident): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-token-converter.cc (dispatch_float_literals): Make + input immutable. + (dispatch_integer_literals): Likewise. + (convert): Likewise. + * util/rust-token-converter.h (convert): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-token-converter.cc (from_tokenstream): Add + conversion of Ident structures. + (from_ident): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-token-converter.cc (from_literal): Add function + implementation. + (string_literal): String literal specific handler. + (byte_string_literal): Byte string specific handler. + (unsigned_literal): Unsigned literal specific handler. + (signed_literal): Signed literal specific handler. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-token-converter.cc (from_punct): Add conversion + implementation. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-token-converter.cc (dispatch_float_literals): Accept + const_TokenPtr instead of TokenPtr. + (dispatch_integer_literals): Likewise. + (convert): Accept vector of const_TokenPtr instead of a vector + of TokenPtr. + * util/rust-token-converter.h (convert): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-token-converter.cc (from_tokenstream): Add vector + for joined punct accumulation. + (from_ident): Accept const pointer vector. + (from_literal): Likewise. + (from_punct): Likewise. + (from_group): Likewise. + (from_tokentree): Likewise. + (convert): Likewise. + * util/rust-token-converter.h (convert): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-token-converter.cc (from_tokenstream): Add call to + from_tokentree. + (from_tokentree): Add implementation, from the from_tokenstream + function. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-token-converter.cc (from_punct): Add group + conversion. + (from_group): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-token-converter.cc (to_tokenstream): Change function + name from to_tokenstream to convert. + (convert): Likewise. + (from_tokenstream): Add tokenstream handler. + (from_ident): Add empty function. + (from_literal): Likewise. + (from_punct): Likewise. + (from_group): Likewise. + * util/rust-token-converter.h (to_tokenstream): Change function + name from to_tokenstream to convert. + (convert): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * util/rust-token-converter.cc (dispatch_float_literals): Remove + suffixed temporary variable. + (dispatch_integer_literals): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * Make-lang.in: Add new rust-token-converter file. + * ast/rust-ast-collector.cc (pop_group): Function moved from + TokenCollector. + (dispatch_float_literals): Likewise. + (dispatch_integer_literals): Likewise. + (TokenCollector::collect): Removed function. + * ast/rust-ast-collector.h: Removed function prototype. + * util/rust-token-converter.cc: New file. + * util/rust-token-converter.h: New file. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-collector.h (RUST_AST_TOKENSTREAM_H): Rename + headerguard from RUST_AST_TOKENSTREAM_H ... + (RUST_AST_COLLECTOR_H): ... to RUST_AST_COLLECTOR_H. + +2024-01-16 Pierre-Emmanuel Patry + + * Make-lang.in: Change file name. + * ast/rust-ast-tokenstream.cc: Moved to... + * ast/rust-ast-collector.cc: ...here. + * ast/rust-ast-tokenstream.h: Moved to... + * ast/rust-ast-collector.h: ...here. + * rust-session-manager.cc: Change header name. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::TokenStream): Rename + TokenStream to TokenCollector. + (TokenCollector::TokenCollector): Likewise. + (TokenStream::collect_tokens): Likewise. + (TokenCollector::collect_tokens): Likewise. + (TokenStream::collect): Likewise. + (TokenCollector::collect): Likewise. + (TokenStream::visit): Likewise. + (TokenCollector::visit): Likewise. + (TokenStream::visit_items_joined_by_separator): Likewise. + (TokenCollector::visit_items_joined_by_separator): Likewise. + (TokenStream::visit_as_line): Likewise. + (TokenCollector::visit_as_line): Likewise. + (TokenStream::visit_items_as_lines): Likewise. + (TokenCollector::visit_items_as_lines): Likewise. + (TokenStream::visit_items_as_block): Likewise. + (TokenCollector::visit_items_as_block): Likewise. + (TokenStream::trailing_comma): Likewise. + (TokenCollector::trailing_comma): Likewise. + (TokenStream::newline): Likewise. + (TokenCollector::newline): Likewise. + (TokenStream::indentation): Likewise. + (TokenCollector::indentation): Likewise. + (TokenStream::increment_indentation): Likewise. + (TokenCollector::increment_indentation): Likewise. + (TokenStream::decrement_indentation): Likewise. + (TokenCollector::decrement_indentation): Likewise. + (TokenStream::visit_closure_common): Likewise. + (TokenCollector::visit_closure_common): Likewise. + (TokenStream::visit_loop_common): Likewise. + (TokenCollector::visit_loop_common): Likewise. + (TokenStream::visit_function_common): Likewise. + (TokenCollector::visit_function_common): Likewise. + * ast/rust-ast-tokenstream.h (class TokenStream): Likewise. + (class TokenCollector): Likewise. + * rust-session-manager.cc (Session::dump_tokenstream): Rename + token vector for clearer intent. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (dispatch_float_literals): Add + dispatch function for floating point literals. + (TokenStream::collect): Add call to dispatcher. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (dispatch_integer_literals): + Add a static function to dispatch depending on the core type. + (TokenStream::collect): Add call to dispatch function. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::collect): Add + conversion for byte string and string. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::collect): Add Ident + conversion. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::collect): Add joint + punct token conversion. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::collect): Add + conversion for single punctuation tokens. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (pop_group): Add a function to + easily collect a group from a given stack at the end of it. + (TokenStream::collect): Collect tokens as a rust compatible + Tokenstream type. + * ast/rust-ast-tokenstream.h (RUST_AST_TOKENSTREAM_H): Move + includes to stay constrained by guards. + +2024-01-16 M V V S Manoj Kumar + + * ast/rust-ast-full-decls.h (enum class): Added declaration. + (struct AnonConst): Added declaration. + (struct InlineAsmRegOrRegClass): Added declaration. + (struct InlineAsmOperand): Added declaration. + (struct InlineAsmPlaceHolder): Added declaration. + (struct InlineAsmTemplatePiece): Added declaration. + (struct TupleClobber): Added declaration. + (struct TupleTemplateStr): Added declaration. + * ast/rust-expr.h (class InlineAsm): Defined all it's data members outside. + (enum class InlineAsmOptions): Converted this to a enum class so we could use it in the HIR. + (struct AnonConst): Defined it independent of the AST::InlineAsm node. + (struct InlineAsmRegOrRegClass): Defined it independent of the AST::InlineAsm node. + (struct InlineAsmOperand): Defined it independent of the AST::InlineAsm node. + (struct InlineAsmPlaceHolder): Defined it independent of the AST::InlineAsm node. + (struct InlineAsmTemplatePiece): Defined it independent of the AST::InlineAsm node. + (struct TupleClobber): Defined it independent of the AST::InlineAsm node. + (struct TupleTemplateStr): Defined it independent of the AST::InlineAsm node. + * hir/tree/rust-hir-expr.h (class InlineAsmReg): Added defination. + (class InlineAsmRegClass): Added defination. + (struct InlineAsmRegOrRegClass): Added defination. + (class InlineAsm): Added defination. + * hir/tree/rust-hir-full-decls.h (class InlineAsmReg): Added declaration. + (class InlineAsmRegClass): Added declaration. + (struct InlineAsmRegOrRegClass): Added declaration. + (class InlineAsm): Added declaration. + +2024-01-16 Philip Herron + + * backend/rust-compile-base.cc: track return type in fncontext + * backend/rust-compile-context.h (struct fncontext): likewise + * backend/rust-compile-expr.cc (CompileExpr::visit): apply coercion site + (CompileExpr::generate_closure_function): update push_context + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): likewise + +2024-01-16 Philip Herron + + * backend/rust-compile-base.cc (HIRCompileBase::compile_function_body): + add missing coercion_site codegen + +2024-01-16 Philip Herron + + * backend/rust-compile-expr.cc (CompileExpr::visit): refactr + (CompileExpr::get_fn_addr_from_dyn): likewise + (CompileExpr::get_receiver_from_dyn): likewise + (CompileExpr::type_cast_expression): likewise + * backend/rust-compile-type.cc (TyTyResolveCompile::visit): likewise + (TyTyResolveCompile::create_dyn_obj_record): likewise + (TyTyResolveCompile::create_slice_type_record): likewise + (TyTyResolveCompile::create_str_type_record): likewise + * backend/rust-compile-type.h: likewise + * backend/rust-compile.cc (HIRCompileBase::coercion_site1): likewise + (HIRCompileBase::coerce_to_dyn_object): refactor + * backend/rust-tree.h (SLICE_FLAG): removed + (SLICE_TYPE_P): removed + (RS_DST_FLAG): new flag + (RS_DST_FLAG_P): new predicate + * typecheck/rust-tyty.cc (ReferenceType::is_dyn_object): new helper + (ReferenceType::is_dyn_obj_type): likewise + (PointerType::is_dyn_object): likewise + (PointerType::is_dyn_obj_type): likewise + * typecheck/rust-tyty.h (class DynamicObjectType): moved up + +2024-01-16 Philip Herron + + * backend/rust-compile-type.cc (TyTyResolveCompile::visit): add filter + +2024-01-16 Philip Herron + + * backend/rust-compile-base.cc (HIRCompileBase::compile_function_body): use unit_expression + (HIRCompileBase::unit_expression): new helper + * backend/rust-compile-base.h: update prototype + * backend/rust-compile-block.cc (CompileBlock::visit): use unit_expression + * backend/rust-compile-expr.cc (CompileExpr::visit): likewise + (CompileExpr::generate_closure_function): likewise + * backend/rust-compile-implitem.cc (CompileTraitItem::visit): cleanup + * backend/rust-compile-item.cc (CompileItem::visit): likewise + * backend/rust-compile-pattern.cc (CompilePatternLet::visit): likewise + * backend/rust-compile-resolve-path.cc (ResolvePathRef::resolve): likewise + * backend/rust-compile-type.cc (TyTyResolveCompile::get_unit_type): new helper + (TyTyResolveCompile::visit): use new unit_type helper + * backend/rust-compile-type.h: likewise + * rust-backend.h: simplify the return_expression + * rust-gcc.cc (Gcc_backend::function_type): likewise + (Gcc_backend::return_statement): likewise + * backend/rust-constexpr.cc (eval_constant_expression): remove bad assertion + +2024-01-16 Philip Herron + + * checks/lints/rust-lint-unused-var.cc (UnusedVariables::Lint): use the decl not the expr + +2024-01-16 Owen Avery + + * parse/rust-parse-impl.h + (Parser::parse_trait_impl_function_or_method): + Parse function/method qualifiers after "default". + +2024-01-16 Philip Herron + + * backend/rust-compile-base.cc: add missing compile_locals call + +2024-01-16 Arthur Cohen + + * ast/rust-ast.h (class AttrInputMetaItemContainer): Run clang-format. + (class DelimTokenTree): Likewise. + +2024-01-16 Arthur Cohen + + * resolve/rust-early-name-resolver.cc (is_macro_use_module): New function. + (EarlyNameResolver::accumulate_escaped_macros): New function. + (EarlyNameResolver::go): Use `accumulate_escaped_macros`. + (EarlyNameResolver::visit): Likewise. + * resolve/rust-early-name-resolver.h: Declare `accumulate_escaped_macros`. + +2024-01-16 Arthur Cohen + + * ast/rust-ast.h: Add take_items() and set_items() method to Crate. + * ast/rust-item.h: Add take_items() and set_items() method to Module. + +2024-01-16 Arthur Cohen + + * ast/rust-ast.h (enum Kind): Add MODULE variant. + * ast/rust-item.h: Return Kind::MODULE in AST::Module::get_kind(). + +2024-01-16 Arthur Cohen + + * ast/rust-macro.cc (builtin_macro_from_string): Move function. + * ast/rust-macro.h (enum class): Move enum. + (builtin_macro_from_string): Move function. + * expand/rust-macro-builtins.cc (builtin_macro_from_string): New function. + (make_macro_path_str): Use new bi-map. + (parse_single_string_literal): Use new `BuiltinMacro` enum. + (MacroBuiltin::include_bytes_handler): Likewise. + (MacroBuiltin::include_str_handler): Likewise. + (MacroBuiltin::compile_error_handler): Likewise. + (MacroBuiltin::concat_handler): Likewise. + (MacroBuiltin::env_handler): Likewise. + (MacroBuiltin::include_handler): Likewise. + (MacroBuiltin::sorry): New function. + * expand/rust-macro-builtins.h (enum class): Move enum here. + (builtin_macro_from_string): New function declaration. + * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Use + new function. + * util/rust-hir-map.cc (Mappings::insert_macro_def): Remove old + builtin macro map. + +2024-01-16 Arthur Cohen + + * expand/rust-macro-builtins.cc: Include bidirectional map. + * util/bi-map.h: New file. + +2024-01-16 Owen Avery + + * ast/rust-ast.cc + (BlockExpr::strip_tail_expr): + Try to take new tail expression from statements list. + * ast/rust-expr.h + (BlockExpr::strip_tail_expr): + Replace definition with only declaration. + +2024-01-16 Owen Avery + + * ast/rust-ast.h + (Stmt::is_expr): New. + * ast/rust-stmt.h + (ExprStmt::is_expr): New. + +2024-01-16 Owen Avery + + * expand/rust-macro-substitute-ctx.cc + (SubstituteCtx::substitute_repetition): Fix out-of-bounds. + +2024-01-16 Pierre-Emmanuel Patry + + * Make-lang.in: Link against the static libproc_macro. + +2024-01-16 Pierre-Emmanuel Patry + + * lang.opt: Add frust-extern option. + * rust-session-manager.cc (Session::handle_extern_option): Add + frust-extern option handler. + * rust-session-manager.h (struct Session): Add an unordered map + to store library name and locations. + +2024-01-16 Owen Avery + + * parse/rust-parse-impl.h + (Parser::parse_generic_params): + Handle parameter parsing error. + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-expr.cc: update for op overload + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): use the predicate + (TypeCheckExpr::resolve_segments): cleanup + +2024-01-16 Philip Herron + + * typecheck/rust-hir-trait-reference.cc (AssociatedImplTrait::AssociatedImplTrait): + bind the predicate + (AssociatedImplTrait::get_trait): remove + (AssociatedImplTrait::get_predicate): new getter + * typecheck/rust-hir-trait-reference.h: bind predicate + * typecheck/rust-hir-type-check-item.cc: update ctor + * typecheck/rust-type-util.cc (lookup_associated_impl_block): new function + * typecheck/rust-type-util.h (class BaseType): remove unused forward decl + (lookup_associated_impl_block): new helper + * typecheck/rust-tyty-bounds.cc (TypeBoundPredicate::is_equal): new + * typecheck/rust-tyty-subst.cc (SubstitutionRef::lookup_associated_impl): use new helper + (SubstitutionRef::monomorphize): update usage/error handling + * typecheck/rust-tyty-subst.h: remove old prototype + * typecheck/rust-tyty.h: add is_equal decl + +2024-01-16 Owen Avery + + * typecheck/rust-hir-type-check-pattern.cc + (TypeCheckPattern::visit): Type check StructPatternFieldIdentPat. + +2024-01-16 Owen Avery + + * hir/rust-ast-lower-pattern.cc + (ASTLoweringPattern::visit): Lower StructPatternFieldIdentPat. + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::resolve_fn_trait_call): + return the assoicated predicate + * typecheck/rust-hir-type-check-expr.h: update prototype + +2024-01-16 Philip Herron + + * hir/rust-ast-lower-implitem.h: add missing where clause lowering + +2024-01-16 Philip Herron + + * hir/tree/rust-hir-item.h: add get_locus() const + +2024-01-16 Owen Avery + + * hir/tree/rust-hir-pattern.h + (StructPatternFieldIdentPat::get_identifier): New. + (StructPatternFieldIdentPat::get_pattern): New. + +2024-01-16 Marc Poulhiès + + * ast/rust-ast-dump.cc (Dump::visit): print parentheses around + unique expression operand. + +2024-01-16 Owen Avery + + * rust-session-manager.cc + (Session::enable_dump): Fix error messages. + +2024-01-16 Philip Herron + + * typecheck/rust-unify.cc (UnifyRules::emit_abi_mismatch): new error method + (UnifyRules::expect_fndef): add ABI check + * typecheck/rust-unify.h: prototype for new error method + +2024-01-16 Philip Herron + + * util/rust-abi.cc (get_abi_from_string): add ABI mapping + +2024-01-16 Philip Herron + + * hir/tree/rust-hir-pattern.h: add missing get_mutability + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): + use new ClosureParamInfer on untyped parameters + * typecheck/rust-hir-type-check-pattern.cc (ClosureParamInfer::Resolve): interface + (ClosureParamInfer::ClosureParamInfer): constructor + (ClosureParamInfer::visit): visitors for each pattern + * typecheck/rust-hir-type-check-pattern.h (class ClosureParamInfer): new visitor + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-pattern.h: cleanup + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): + return so we dont hit undefined behaviour + +2024-01-16 Philip Herron + + * backend/rust-compile-implitem.h: remove includes + +2024-01-16 Philip Herron + + * backend/rust-compile-item.cc (CompileItem::visit): remove bad checks + +2024-01-16 Philip Herron + + * lang.opt: add lang option flag + * rust-lang.cc (grs_langhook_init_options_struct): enable by default + +2024-01-16 Philip Herron + + * typecheck/rust-tyty-bounds.cc (TypeBoundPredicate::operator=): + we are done if other is in an error state + +2024-01-16 Philip Herron + + * typecheck/rust-hir-dot-operator.cc (MethodResolver::select): verify it is a method + +2024-01-16 Philip Herron + + * typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait): use new interface + * typecheck/rust-hir-type-check-base.h: update prototype to include Self + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): lifewise + * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::resolve_impl_block_substitutions): + likewise + * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): likewise + (TypeCheckExpr::resolve_segments): likewise + * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): likewise + (TypeResolveGenericParam::visit): likewise + (ResolveWhereClauseItem::visit): likewise + * typecheck/rust-tyty-bounds.cc (TypeCheckBase::get_predicate_from_bound): likewise + (TypeBoundPredicate::apply_generic_arguments): likewise + (TypeBoundsMappings::lookup_predicate): likewise + * typecheck/rust-tyty-bounds.h: likewise + * typecheck/rust-tyty.h:likewise + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check.h: New error state and missing copy implementations + * typecheck/rust-typecheck-context.cc (TypeCheckContextItem::TypeCheckContextItem): + missing copy ctor + (TypeCheckContextItem::operator=): missing copy implementation + (TypeCheckContextItem::get_error): new static function + (TypeCheckContextItem::is_error): new method + (TypeCheckContextItem::get_context_type): handle error state + (TypeCheckContextItem::get_defid): handle error state + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check.h: new helper + * typecheck/rust-typecheck-context.cc (TypeCheckContext::have_function_context): + implementation + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check.h: Add prototype + * typecheck/rust-typecheck-context.cc (TypeCheckContextItem::get_defid): implementation + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-expr.cc: refactor + +2024-01-16 Philip Herron + + * typecheck/rust-autoderef.cc: don't take a reference + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): likewise + * typecheck/rust-hir-type-check.h: remove reference + * typecheck/rust-typecheck-context.cc (TypeCheckContext::pop_return_type): likewise + +2024-01-16 Owen Avery + + * resolve/rust-ast-resolve-pattern.cc + (PatternDeclaration::visit): Handle StructPatternFieldIdentPat. + +2024-01-16 TieWay59 + + PR translation/108890 + * lang.opt: Fix translation mistakes 2023 in + GCC/Rust [PR108890] + (line 67): change the inconsistent tab to spaces + (line 75): wrap bare placeholder `integer` + (line 79): remove redundant text of `Choose which` + (line 96): remove redundant text of `Choose which` + (line 112): remove redundant `Flag to` + (line 124): correct the exclusive term `When to stop` + (line 124): correct typo of `copimlation` + +2024-01-16 M V V S Manoj Kumar + + * parse/rust-parse-impl.h (Parser::debug_dump_ast_output): Removed this funtion. + * rust-session-manager.cc (Session::enable_dump): Removed else if (arg == "parse"). + (Session::compile_crate): Removed calls of dump_ast and dump_ast_expanded. + (Session::dump_ast): Removed this function. + (Session::dump_ast_expanded): Removed this function. + * rust-session-manager.h (struct CompileOptions): Removed the PARSER_AST_DUMP option. + +2024-01-16 Arthur Cohen + + * parse/rust-parse-impl.h (Parser::parse_reference_pattern): Do not + call into `parse_pattern` anymore. + +2024-01-16 Owen Avery + + * hir/rust-ast-lower-pattern.cc + (ASTLoweringPattern::translate): Add is_let_top_level parameter. + (ASTLoweringPattern::visit): Handle is_let_top_level. + * hir/rust-ast-lower-pattern.h + (class ASTLoweringPattern): Add is_let_top_level. + * hir/rust-ast-lower-stmt.cc + (ASTLoweringStmt::visit): Set is_let_top_level. + +2024-01-16 Zheyuan Chen + + * ast/rust-ast-dump.cc: fix bad formatting for associated type. + +2024-01-16 Sergey Bugaev + + * hir/rust-ast-lower-expr.h, hir/rust-ast-lower-expr.cc: + Lower AST::ErrorPropagationExpr to HIR::ErrorPropagationExpr + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix scope + resolution token output. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Keep + associated type. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit_function_common): + Fix function body output. + +2024-01-16 Pierre-Emmanuel Patry + + * parse/rust-parse-impl.h (Parser::parse_outer_attribute): Fix + attribute status. + +2024-01-16 Pierre-Emmanuel Patry + + * lex/rust-token.cc (Token::as_string): Fix lifetime string + representation. + +2024-01-16 Sergey Bugaev + + * resolve/rust-ast-resolve-expr.cc: Add "break rust" Easter egg + +2024-01-16 Sergey Bugaev + + * resolve/rust-ast-resolve-expr.h, + resolve/rust-ast-resolve-expr.cc: Add ResolveExpr::funny_error + +2024-01-16 Sergey Bugaev + + * ast/rust-ast.h: Add AST::Kind::IDENTIFIER + +2024-01-16 Sergey Bugaev + + * ast/rust-ast.h (Kind): Convert into a C++ enum class + * expand/rust-macro-builtins.cc: Adapt to the change + +2024-01-16 Owen Avery + + * typecheck/rust-hir-type-check-expr.cc + (TypeCheckExpr::visit): Add implementation for IfLetExprConseqElse. + * typecheck/rust-hir-type-check-expr.h: + (TypeCheckExpr::visit): Remove stub implementation for IfLetExprConseqElse. + * hir/rust-ast-lower-expr.cc + (ASTLoweringExpr::visit): Lower IfLetExpr{,ConseqElse}. + * hir/rust-ast-lower-expr.h: + (ASTLoweringExpr::visit): Likewise. + * hir/rust-ast-lower-block.h + (ASTLoweringIfLetBlock::visit): Lower IfLetExprConseqElse. + (ASTLoweringExprWithBlock::visit): Likewise. + * hir/rust-ast-lower.cc + (ASTLoweringIfLetBlock::visit): Lower IfLetExprConseqElse. + * hir/tree/rust-hir-expr.h + (IfLetExprConseqElse::IfLetExprConseqElse): Make constructor more general. + (IfLetExprConseqElse::vis_else_block): Add. + (IfLetExprConseqElse::get_else_block): Add. + * resolve/rust-ast-resolve-expr.cc + (ResolveExpr::visit): Add IfLetExprConseqElse visitor. + * resolve/rust-ast-resolve-expr.h + (ResolveExpr::visit): Add IfLetExprConseqElse visitor. + +2024-01-16 Sebastian Kirmayer + + * parse/rust-parse-impl.h + (Parser::parse_macro_match_repetition): + reject separator in `?` repetition + +2024-01-16 Owen Avery + + * ast/rust-expr.h + (class IfLetExprConseqElse): Make else_block ExprWithBlock. + (class IfLetExprConseqIf): Remove. + (class IfLetExprConseqIfLet): Remove. + * ast/rust-ast-full-decls.h + (class IfLetExprConseqIf): Remove. + (class IfLetExprConseqIfLet): Remove. + * ast/rust-ast.cc + (IfLetExprConseqElse::as_string): Adjust output. + (IfLetExprConseqIf::as_string): Remove. + (IfLetExprConseqIfLet::as_string): Remove. + (IfLetExprConseqIf::accept_vis): Remove. + (IfLetExprConseqIfLet::accept_vis): Remove. + * ast/rust-ast-visitor.h + (ASTVisitor::visit): Remove IfLetExprConseqIf{,Let} visitors. + * ast/rust-ast-dump.cc + (Dump::visit): Likewise. + * ast/rust-ast-dump.h: + (Dump::visit): Likewise. + * ast/rust-ast-tokenstream.cc + (TokenStream::visit): Likewise. + * ast/rust-ast-tokenstream.h + (TokenStream::visit): Likewise. + * util/rust-attributes.cc + (AttributeChecker::visit): Likewise. + * util/rust-attributes.h: + (AttributeChecker::visit): Likewise. + * resolve/rust-early-name-resolver.cc + (EarlyNameResolver::visit): Likewise. + * resolve/rust-early-name-resolver.h + (EarlyNameResolver::visit): Likewise. + * resolve/rust-ast-resolve-base.h + (ResolverBase::visit): Likewise. + * resolve/rust-ast-resolve-base.cc + (ResolverBase::visit): Likewise. + * checks/errors/rust-feature-gate.h + (FeatureGate::visit): Likewise. + * expand/rust-cfg-strip.cc + (CfgStrip::visit): Likewise. + * expand/rust-cfg-strip.h: + (CfgStrip::visit): Likewise. + * expand/rust-expand-visitor.cc + (ExpandVisitor::visit): Likewise. + * expand/rust-expand-visitor.h + (ExpandVisitor::visit): Likewise. + * hir/rust-ast-lower-base.cc + (ASTLoweringBase::visit): Likewise. + * hir/rust-ast-lower-base.h: + (ASTLoweringBase::visit): Likewise. + * parse/rust-parse-impl.h + (Parser::parse_if_let_expr): Replace IfLetExprConseqIf{,Let} with IfLetExprConseqElse. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add struct + name and curly braces to output tokenstream. + +2024-01-16 Owen Avery + + * parse/rust-parse-impl.h + (Parser::parse_macro_match): Handle underscore. + +2024-01-16 Owen Avery + + * hir/tree/rust-hir-full-decls.h + (class ExprStmtWithoutBlock): Remove. + (class ExprStmtWithBlock): Remove. + * hir/tree/rust-hir-stmt.h + (class ExprStmt): + Add remaining ExprStmtWith{,out}Block functionality. + (class ExprStmtWithoutBlock): Remove. + (class ExprStmtWithBlock): Remove. + * hir/rust-ast-lower-stmt.cc + (ASTLoweringStmt::visit): + Lower to HIR::ExprStmt instead of deriving class. + +2024-01-16 Owen Avery + + * backend/rust-compile-stmt.cc + (CompileStmt::visit): Unify ExprStmtWith{,out}Block visitors. + * backend/rust-compile-stmt.h + (CompileStmt::visit): Likewise. + * backend/rust-compile-item.h + (CompileItem::visit): Likewise. + * hir/rust-hir-dump.cc + (Dump::visit): Likewise. + * hir/rust-hir-dump.h + (Dump::visit): Likewise. + * hir/tree/rust-hir-stmt.h + (ExprStmt::accept_vis): Add. + (ExprStmtWithoutBlock::accept_vis): Remove. + (ExprStmtWithBlock::accept_vis): Remove. + * hir/tree/rust-hir.cc + (ExprStmt::accept_vis): Add. + (ExprStmtWithoutBlock::accept_vis): Remove. + (ExprStmtWithBlock::accept_vis): Remove. + * hir/tree/rust-hir-visitor.h + (HIRFullVisitor::visit): Likewise. + (HIRFullVisitorBase::visit): Likewise. + (HIRStmtVisitor::visit): Likewise. + * checks/errors/rust-const-checker.cc + (ConstChecker::visit): Likewise. + * checks/errors/rust-const-checker.h + (ConstChecker::visit): Likewise. + * checks/errors/rust-unsafe-checker.cc + (UnsafeChecker::visit): Likewise. + * checks/errors/rust-unsafe-checker.h + (UnsafeChecker::visit): Likewise. + * checks/errors/privacy/rust-privacy-reporter.cc + (PrivacyReporter::visit): Likewise. + * checks/errors/privacy/rust-privacy-reporter.h + (PrivacyReporter::visit): Likewise. + * checks/lints/rust-lint-marklive.h + (MarkLive::visit): Likewise. + * typecheck/rust-hir-type-check-stmt.cc + (TypeCheckStmt::visit): Likewise. + * typecheck/rust-hir-type-check-stmt.h + (TypeCheckStmt::visit): Likewise. + * typecheck/rust-tycheck-dump.h + (TypeResolverDump::visit): Likewise. + +2024-01-16 Owen Avery + + * hir/tree/rust-hir-stmt.h + (ExprStmt::expr): Add field. + (ExprStmt::get_expr): Add method. + (ExprStmt::ExprStmt): Add copy/move constructors, modify existing constructor. + (ExprStmt::operator=): Add assignment operator. + (ExprStmtWithoutBlock::expr): Remove field. + (ExprStmtWithoutBlock::get_expr): Remove method. + (ExprStmtWithoutBlock::ExprStmt): + Remove copy/move constructors, modify existing constructor. + (ExprStmtWithoutBlock::operator=): Remove assignment operator. + (ExprStmtWithBlock::expr): Remove field. + (ExprStmtWithBlock::get_expr): Remove method. + (ExprStmtWithBlock::ExprStmt): Remove copy/move constructors, modify existing constructor. + (ExprStmtWithBlock::operator=): Remove assignment operator. + (ExprStmt::as_string): Add method. + (ExprStmtWithBlock::as_string): Remove method. + (ExprStmtWithoutBlock::as_string): Remove method. + * hir/tree/rust-hir.cc + (ExprStmt::as_string): Add method. + (ExprStmtWithBlock::as_string): Remove method. + (ExprStmtWithoutBlock::as_string): Remove method. + +2024-01-16 Owen Avery + + * ast/rust-expr.h + (class IfExprConseqElse): Make else_block ExprWithBlock. + (class IfExprConseqIf): Remove. + (class IfExprConseqIfLet): Remove. + * ast/rust-ast-full-decls.h + (class IfExprConseqIf): Remove. + (class IfExprConseqIfLet): Remove. + * ast/rust-ast.cc + (IfExprConseqElse::as_string): Adjust output. + (IfExprConseqIf::as_string): Remove. + (IfExprConseqIfLet::as_string): Remove. + (IfExprConseqIf::accept_vis): Remove. + (IfExprConseqIfLet::accept_vis): Remove. + * ast/rust-ast-visitor.h + (ASTVisitor::visit): Remove IfExprConseqIf{,Let} visitors. + * ast/rust-ast-tokenstream.cc + (TokenStream::visit): Likewise. + * ast/rust-ast-tokenstream.h + (TokenStream::visit): Likewise. + * ast/rust-ast-dump.cc + (Dump::visit): Likewise. + * ast/rust-ast-dump.h + (Dump::visit): Likewise. + * checks/errors/rust-feature-gate.h + (FeatureGate::visit): Likewise. + * util/rust-attributes.cc + (AttributeChecker::visit): Likewise. + * util/rust-attributes.h + (AttributeChecker::visit): Likewise. + * resolve/rust-early-name-resolver.cc + (EarlyNameResolver::visit): Likewise. + * resolve/rust-early-name-resolver.h + (EarlyNameResolver::visit): Likewise. + * resolve/rust-ast-resolve-base.h + (ResolverBase::visit): Likewise. + * resolve/rust-ast-resolve-base.cc + (ResolverBase::visit): Likewise. + * resolve/rust-ast-resolve-expr.h + (ResolveExpr::visit): Remove IfExprConseqIf visitor. + * resolve/rust-ast-resolve-expr.cc + (ResolveExpr::visit): Likewise. + * expand/rust-cfg-strip.cc + (CfgStrip::visit): Remove IfExprConseqIf{,Let} visitors. + * expand/rust-cfg-strip.h + (CfgStrip::visit): Likewise. + * expand/rust-expand-visitor.cc + (ExpandVisitor::visit): Likewise. + * expand/rust-expand-visitor.h + (ExpandVisitor::visit): Likewise. + * hir/rust-ast-lower-base.cc + (ASTLoweringBase::visit): Likewise. + * hir/rust-ast-lower-base.h + (ASTLoweringBase::visit): Likewise. + * hir/rust-ast-lower-block.h + (ASTLoweringIfBlock::visit): Remove IfExprConseqIf visitor. + (ASTLoweringExprWithBlock::visit): Likewise. + * hir/rust-ast-lower.cc + (ASTLoweringIfBlock::visit): + Remove IfExprConseqIf visitor, adjust IfExprConseqElse lowering. + * hir/rust-ast-lower-expr.h + (ASTLoweringExpr::visit): Remove IfExprConseqIf visitor. + * hir/rust-ast-lower-expr.cc + (ASTLoweringExpr::visit): Likewise. + * parse/rust-parse-impl.h + (Parser::parse_if_expr): Replace IfExprConseqIf{,Let} with IfExprConseqElse. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix inner + attribute tokenstream output. + +2024-01-16 Marc Poulhiès + + * ast/rust-ast-dump.cc (Dump::debug): New. + * ast/rust-ast-dump.h (Dump::debug): Untemplate it. + (debug): New. + * ast/rust-ast.h (class Visitable): New. + (class TokenTree): Inherit from Visitable. + (class MacroMatch): Likewise. + (class AttrInput): Likewise. + (class MetaItemInner): Likewise. + (class Pattern): Likewise. + (classTypeParamBound): Likewise. + (class GenericParam): Likewise. + (class TraitItem): Likewise. + (classInherentImplItem): Likewise. + (class TraitImplItem): Likewise. + (class ExternalItem): Likewise. + (class SingleASTNode): Likewise. + +2024-01-16 Thomas Schwinge + + * rust-lang.cc (grs_langhook_type_for_mode): Placate clang-format. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.h: Add boolean for differenciation. + * parse/rust-parse-impl.h (Parser::parse_doc_comment): Change + function interface to make code cleaner. It should return a body + instead of the whole attribute. + (Parser::parse_inner_attribute): Specify the inner status of the + node. + (Parser::parse_attribute_body): Change function interface to + make the code cleaner much like parse_doc_comment. + (Parser::parse_outer_attribute): Specify outer status of the + node. + * parse/rust-parse.h: Update functions prototypes. + +2024-01-16 Philip Herron + + * backend/rust-compile-resolve-path.cc (HIRCompileBase::query_compile): + reuse resolve_method_address to monomorphize the call if required + * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments): + allow matching against unimplemented trait item bounds + +2024-01-16 Philip Herron + + * typecheck/rust-hir-path-probe.cc: dont subst with a dynamic object + +2024-01-16 Philip Herron + + * backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address): moved here + * backend/rust-compile-base.h: refactored prototype + * backend/rust-compile-expr.cc (CompileExpr::resolve_method_address): refactor + * backend/rust-compile-expr.h: likewise + +2024-01-16 Philip Herron + + * backend/rust-compile-resolve-path.cc (HIRCompileBase::query_compile): remove unused + +2024-01-16 Philip Herron + + * backend/rust-compile-resolve-path.cc (HIRCompileBase::query_compile): call destructure + +2024-01-16 Philip Herron + + * backend/rust-compile-expr.cc (CompileExpr::resolve_method_address): + call path probe impl trait + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Add call + to attribute expansion function. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-expand-visitor.cc (ExpandVisitor::visit_outer_attrs): + Change condition order. + (ExpandVisitor::visit_inner_using_attrs): Likewise. + (ExpandVisitor::visit_attrs_with_derive): Likewise. + (ExpandVisitor::is_builtin): Add builtin identification + function. + * expand/rust-expand-visitor.h: Add function prototype. + * util/rust-attributes.cc: Add missing rustc_builtin_macro + attribute. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-expand-visitor.cc (ExpandVisitor::expand_struct_fields): + Add call to expand structu fields. + (ExpandVisitor::expand_function_params): Add call to expand + function parameters. + (ExpandVisitor::expand_closure_params): Add call to expand + closure parameters. + (ExpandVisitor::visit): Add calls for item outer attribute + expansions. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-expand-visitor.cc (ExpandVisitor::expand_outer_attribute): + Stub for a single attribute expansion. + (ExpandVisitor::visit_outer_attrs): Visit the attributes to + expand on a given item. + * expand/rust-expand-visitor.h: Add function prototypes. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast.h: Add getter to Expr class. + * ast/rust-expr.h: Add override attribute to existing getters. + Also implement it for RangeExpr, attempting to retrieve outer + attributes on those types will crash the compiler. + * ast/rust-macro.h: Add override attribute to existing getters. + * ast/rust-path.h: Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Add call + to inner attribute stub. + (ExpandVisitor::expand_inner_attribute): Expand one single + attribute. + (ExpandVisitor::visit_inner_using_attrs): Expand a given item + using a vector of attributes. + (ExpandVisitor::visit_inner_attrs): Visit inner attributes of a + given item. + * expand/rust-expand-visitor.h: Add function prototypes. + +2024-01-16 Pierre-Emmanuel Patry + + * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Add call + to derive expander. + (ExpandVisitor::expand_derive): Expand a single derive. + (ExpandVisitor::visit_attrs_with_derive): Visit an item with + derive attributes. + (ExpandVisitor::is_derive): Identify a derive attribute. + * expand/rust-expand-visitor.h: Add function prototypes. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix ICE. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Remove + default separator. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Visit inner + attributes. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Change token + type. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix existing + and implement remaining attribute visitors. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor + to the union's outer attributes. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add call to + inner attribute visitor. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix ICE. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Make comma + mandatory. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Remove + additional semicolon output. + * ast/rust-ast-tokenstream.h: Change block visitor prototype + with a default value for trailing tokens. + +2024-01-16 Pierre-Emmanuel Patry + + * Make-lang.in: Add two new files to the list of sources. + * ast/rust-ast-full.h: Add new ast formatting header. + * ast/rust-ast.cc (enum indent_mode): Move formatting function + to it's own file. + (indent_spaces): Likewise. + (get_string_in_delims): Likewise. + (enum AttrMode): Likewise. + (get_mode_dump_desc): Likewise. + (append_attributes): Likewise. + (unquote_string): Likewise. + (GroupedExpr::as_string): Move pattern implementation to it's + own file. + (RangePattern::as_string): Likewise. + (RangePatternBoundLiteral::as_string): Likewise. + (SlicePattern::as_string): Likewise. + (AltPattern::as_string): Likewise. + (TuplePatternItemsMultiple::as_string): Likewise. + (TuplePatternItemsRanged::as_string): Likewise. + (TuplePattern::as_string): Likewise. + (StructPatternField::as_string): Likewise. + (StructPatternFieldIdent::as_string): Likewise. + (StructPatternFieldTuplePat::as_string): Likewise. + (StructPatternFieldIdentPat::as_string): Likewise. + (StructPatternElements::as_string): Likewise. + (StructPattern::as_string): Likewise. + (LiteralPattern::as_string): Likewise. + (ReferencePattern::as_string): Likewise. + (IdentifierPattern::as_string): Likewise. + (TupleStructItemsNoRange::as_string): Likewise. + (TupleStructItemsRange::as_string): Likewise. + (TupleStructPattern::as_string): Likewise. + (GroupedExpr::accept_vis): Likewise. + (LiteralPattern::accept_vis): Likewise. + (IdentifierPattern::accept_vis): Likewise. + (WildcardPattern::accept_vis): Likewise. + (RestPattern::accept_vis): Likewise. + (RangePatternBoundLiteral::accept_vis): Likewise. + (RangePatternBoundPath::accept_vis): Likewise. + (RangePatternBoundQualPath::accept_vis): Likewise. + (RangePattern::accept_vis): Likewise. + (ReferencePattern::accept_vis): Likewise. + (StructPatternFieldTuplePat::accept_vis): Likewise. + (StructPatternFieldIdentPat::accept_vis): Likewise. + (StructPatternFieldIdent::accept_vis): Likewise. + (StructPattern::accept_vis): Likewise. + (TupleStructItemsNoRange::accept_vis): Likewise. + (TupleStructItemsRange::accept_vis): Likewise. + (TupleStructPattern::accept_vis): Likewise. + (TuplePatternItemsMultiple::accept_vis): Likewise. + (TuplePatternItemsRanged::accept_vis): Likewise. + (TuplePattern::accept_vis): Likewise. + (GroupedPattern::accept_vis): Likewise. + (SlicePattern::accept_vis): Likewise. + (AltPattern::accept_vis): Likewise. + * ast/rust-ast-formatting.cc: New file. + * ast/rust-ast-formatting.h: New file. + * ast/rust-pattern.cc: New file. + +2024-01-16 Pierre-Emmanuel Patry + + * Make-lang.in: Add new file for rust-path implementation. + * ast/rust-ast.cc (PathInExpression::as_string): Move function + to the new file. + (PathPattern::as_string): Likewise. + (QualifiedPathInExpression::as_string): Likewise. + (ConstGenericParam::as_string): Likewise. + (QualifiedPathInType::as_string): Likewise. + (TypePath::as_string): Likewise. + (PathPattern::convert_to_simple_path): Likewise. + (TypePath::as_simple_path): Likewise. + (PathExprSegment::as_string): Likewise. + (GenericArgs::as_string): Likewise. + (GenericArgsBinding::as_string): Likewise. + (TypePath::to_trait_bound): Likewise. + (TypePathSegmentGeneric::as_string): Likewise. + (TypePathFunction::as_string): Likewise. + (TypePathSegmentFunction::as_string): Likewise. + (ConstGenericParam::accept_vis): Likewise. + (PathInExpression::accept_vis): Likewise. + (TypePathSegment::accept_vis): Likewise. + (TypePathSegmentGeneric::accept_vis): Likewise. + (TypePathSegmentFunction::accept_vis): Likewise. + (TypePath::accept_vis): Likewise. + (QualifiedPathInExpression::accept_vis): Likewise. + (QualifiedPathInType::accept_vis): Likewise. + (GenericArg::disambiguate_to_const): Likewise. + (GenericArg::disambiguate_to_type): Likewise. + * ast/rust-path.cc: New file. + +2024-01-16 Philip Herron + + * backend/rust-compile-item.cc (CompileItem::visit): unwrap the constant expression + +2024-01-16 Owen Avery + + * util/rust-lang-item.h + (RustLangItem::ItemType::FN): Add. + (RustLangItem::ItemType::FN_MUT): Add. + (RustLangItem::Parse): Handle FN and FN_MUT. + (RustLangItem::ToString): Handle FN and FN_MUT. + +2024-01-16 Emanuele Micheletti + + * typecheck/rust-casts.cc (TypeCastRules::cast_rules): + case INTEGRAL handles TypeKind::CHAR + +2024-01-16 Philip Herron + + * resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit): + add check for reference marker and type's in self params + (ResolveItem::visit): likewise + * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_root_path): + remove bad generics check + (TypeCheckExpr::resolve_segments): likewise + * typecheck/rust-hir-type-check-type.cc (TypeCheckType::resolve_root_path): likewise + +2024-01-16 Philip Herron + + * resolve/rust-ast-resolve-item.cc + (ResolveTraitItems::visit): add name resolution self param + (ResolveItem::visit): likewise + +2024-01-16 Philip Herron + + * typecheck/rust-tyty-bounds.cc (TypeBoundPredicate::TypeBoundPredicate): this is an empty + (TypeBoundPredicate::operator=): likewise + * typecheck/rust-tyty-subst.cc (SubstitutionArgumentMappings::empty): new interface + (SubstitutionArgumentMappings::is_error): this marks it as an error + * typecheck/rust-tyty-subst.h: update prototypes + +2024-01-16 Philip Herron + + * checks/errors/privacy/rust-privacy-reporter.cc + (PrivacyReporter::check_base_type_privacy): allow error types to be permissive + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit_items_as_lines): + Handle trailing chars. + (TokenStream::visit_items_as_block): Likewise. + (TokenStream::visit): Fix visitor. + +2024-01-16 Pierre-Emmanuel Patry + + * lex/rust-token.cc (Token::as_string): Add type hint output. + +2024-01-16 Pierre-Emmanuel Patry + + * rust-session-manager.cc (Session::enable_dump): Enable new + dump. + (Session::compile_crate): CLI argument parsing. + (Session::dump_tokenstream): Dump the tokenstream as a string in + the specified file. + * rust-session-manager.h (struct CompileOptions): Add + tokenstream dump option. + +2024-01-16 Pierre-Emmanuel Patry + + * lex/rust-token.cc (Token::as_string): Add as_string + implementation. + * lex/rust-token.h: Add as_string prototype. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::TokenStream): Add + constructor. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::collect_tokens): Add + getter. + (TokenStream::go): Rename function. + (TokenStream::visit): Likewise. + * ast/rust-ast-tokenstream.h: Add collect prototype. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Change + getter name. + * ast/rust-ast.cc (SimplePath::as_string): Change attribute + name. + * ast/rust-ast.h (class SimplePath): Refactor attribute name and + change getter name. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit_as_line): Add + formatting calls. + (TokenStream::visit_items_as_block): Likewise. + (TokenStream::newline): Add stub. + (TokenStream::indentation): Add stub. + (TokenStream::increment_indentation): Add stub. + (TokenStream::decrement_indentation): Add stub. + (TokenStream::visit): Add formatting calls. + (TokenStream::visit_function_common): Likewise. + * ast/rust-ast-tokenstream.h: Add stub prototypes. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor + implementation. + * ast/rust-ast-tokenstream.h: Add additional function prototype. + * ast/rust-item.h: Add some getters. + * ast/rust-macro.h: Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor. + * ast/rust-item.h: Add missing getters. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add + visitors. + (TokenStream::visit_closure_common): Merge common code for + closure visitors. + * ast/rust-ast-tokenstream.h: Add function prototype. + * ast/rust-expr.h: Add missing move attribute getter. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Add + visitors. + (TokenStream::visit_loop_common): Merge common loop code. + * ast/rust-ast-tokenstream.h: Add function prototypes. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Implement + visitor. + * ast/rust-ast-tokenstream.h: Add function prototype for missing + component. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::trailing_comma): + Output a trailing comma to the token stream according to the + configuration. + * ast/rust-ast-tokenstream.h: Add function prototype. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Implement + visitors. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-tokenstream.cc (TokenStream::visit): Implement + visitors. + * ast/rust-ast-tokenstream.h: Add function prototypes. + * ast/rust-ast.h: Add missing getters. + * ast/rust-expr.h: Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * Make-lang.in: Add rust-as-tokenstream to compile list. + * ast/rust-item.h: Add missing getter for location. + * ast/rust-ast-tokenstream.cc: Add ast visitor implementation. + * ast/rust-ast-tokenstream.h: New file. + * ast/rust-pattern.h: Add getter. + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): + Add implicit unit type as the return type when not specified + +2024-01-16 Philip Herron + + * util/rust-attributes.cc: Add stable to the table of known attributes + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): return early on bad type + * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::TypeCheckPattern): + remove assertion in favor of check + (TypeCheckPattern::visit): likewise + +2024-01-16 Philip Herron + + * backend/rust-compile-expr.cc (CompileExpr::generate_closure_function): + when its not a block we dont have any ribs to generate locals from + +2024-01-16 Owen Avery + + * parse/rust-parse-impl.h + (Parser::parse_expr_without_block): + Remove direct array expression handling. + +2024-01-16 Arthur Cohen + + * ast/rust-item.h: Fix `Visibility::has_path()` implementation. + * checks/errors/privacy/rust-visibility-resolver.cc + (VisibilityResolver::resolve_module_path): Check if we are dealing with pub(crate) properly. + +2024-01-16 Arthur Cohen + + * resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): Set + resolved_node_id when visiting root segment of SimplePath. + +2024-01-16 Arthur Cohen + + * ast/rust-ast.h: Call SimplePath constructor differently in + SimplePath::from_str + +2024-01-16 Arthur Cohen + + * hir/rust-ast-lower-type.h: Move all remaining definitions to source file. + * hir/rust-ast-lower-type.cc (ASTLoweringType::translate): Moved to source file. + (ASTLoweringType::visit): Likewise. + (ASTLowerGenericParam::translate): Likewise. + (ASTLowerGenericParam::visit): Likewise. + (ASTLoweringTypeBounds::translate): Likewise. + (ASTLoweringTypeBounds::visit): Likewise. + (ASTLowerWhereClauseItem::translate): Likewise. + (ASTLowerWhereClauseItem::visit): Likewise. + +2024-01-16 Owen Avery + + * ast/rust-pattern.h: Remove commented out code. + +2024-01-16 emanuele-em + + * typecheck/rust-casts.cc (TypeCastRules::cast_rules): BOOL removed from switch cases + +2024-01-16 Arthur Cohen + + * Make-lang.in: Rename rust-asttribute-visitor.o -> rust-cfg-strip.o + * expand/rust-attribute-visitor.cc: Moved to... + * expand/rust-cfg-strip.cc: ...here. + * expand/rust-attribute-visitor.h: Moved to... + * expand/rust-cfg-strip.h: ...here. + * expand/rust-macro-expand.cc: Fix include of rust-attribute-visitor.h + * expand/rust-macro-builtins.cc: Likewise. + * rust-session-manager.cc (Session::expansion): Call CfgStrip instead of + AttrVisitor. + +2024-01-16 Arthur Cohen + + * Make-lang.in: Add new object file. + * expand/rust-attribute-visitor.cc (AttrVisitor::go): Visit all items of a + crate. + (AttrVisitor::expand_struct_fields): Do not perform macro expansion anymore. + (AttrVisitor::expand_function_params): Likewise. + (AttrVisitor::expand_generic_args): Likewise. + (AttrVisitor::expand_qualified_path_type): Likewise. + (AttrVisitor::expand_self_param): Likewise. + (AttrVisitor::expand_trait_function_decl): Likewise. + (AttrVisitor::expand_trait_method_decl): Likewise. + (AttrVisitor::visit): Likewise. + (AttrVisitor::maybe_expand_expr): Remove function. + (AttrVisitor::maybe_expand_type): Likewise. + * expand/rust-attribute-visitor.h: Do not keep MacroExpander inside AttrVisitor + anymore. + * expand/rust-macro-expand.h (struct MacroExpander): Turn ContextType into an + enum class for more type safety. + * expand/rust-macro-expand.cc (MacroExpander::expand_crate): Use new ContextType + API. + * rust-session-manager.cc (Session::expansion): Call into ExpandVisitor. + * expand/rust-expand-visitor.cc: New file. + * expand/rust-expand-visitor.h: New file. + +2024-01-16 Arthur Cohen + + * expand/rust-macro-expand.cc (MacroExpander::expand_crate): Do not cfg-attr + strip in MacroExpander + (MacroExpander::fails_cfg): Function moved... + (MacroExpander::fails_cfg_with_expand): Function moved... + (MacroExpander::expand_cfg_attrs): Function moved... + * expand/rust-attribute-visitor.cc (fails_cfg): ...here. + (fails_cfg_with_expand): ...here. + (expand_cfg_attrs): ...here. + (AttrVisitor::expand_struct_fields): Use new functions. + (AttrVisitor::expand_tuple_fields): Likewise. + (AttrVisitor::expand_function_params): Likewise. + (AttrVisitor::visit): Likewise. + (AttrVisitor::go): New function. + * expand/rust-attribute-visitor.h: Declare AttrVisitor::go. + * expand/rust-macro-expand.h (struct MacroExpander): Remove cfg-attr related + functions. + +2024-01-16 Arthur Cohen + + * hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_macro_definition): + New function. + * hir/rust-ast-lower-base.h: Declare `lower_macro_definition`. + * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Lower public + macro definitions. + * hir/rust-ast-lower-stmt.cc (ASTLoweringStmt::visit): Likewise. + * hir/rust-ast-lower-stmt.h: Add visitor for `AST::MacroRulesDefinition`. + * hir/rust-ast-lower.cc (ASTLowering::go): Formatting. + (ASTLoweringBlock::visit): Visit `AST::MacroRulesDefinition` + (ASTLoweringIfLetBlock::visit): Formatting. + (ASTLoweringExprWithBlock::visit): Formatting. + +2024-01-16 Arthur Cohen + + * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Add new visitor + for AST::MacroRulesDefinition. + * hir/rust-ast-lower-item.h: Declare above mentioned visitor. + * metadata/rust-export-metadata.cc (ExportContext::emit_macro): New function. + * metadata/rust-export-metadata.h: Declare it. + (PublicInterface::gather_export_data): Go through each exported macro. + * util/rust-hir-map.cc (Mappings::insert_exported_macro): New function. + (Mappings::get_exported_macros): New function. + * util/rust-hir-map.h: Add new mappings for exported macros. + +2024-01-16 Arthur Cohen + + * backend/rust-compile-item.h: Revert 1c946687239b86a92839d57dfbc928ad7ce35eae. + * backend/rust-compile-stmt.h: Likewise. + * checks/errors/privacy/rust-privacy-reporter.cc + (PrivacyReporter::visit): Likewise. + * checks/errors/privacy/rust-privacy-reporter.h: Likewise. + * checks/errors/privacy/rust-pub-restricted-visitor.cc + (PubRestrictedVisitor::visit): Likewise. + * checks/errors/privacy/rust-pub-restricted-visitor.h: Likewise. + * checks/errors/privacy/rust-reachability.cc + (ReachabilityVisitor::visit): Likewise. + * checks/errors/privacy/rust-reachability.h: Likewise. + * checks/errors/privacy/rust-visibility-resolver.cc + (VisibilityResolver::visit): Likewise. + * checks/errors/privacy/rust-visibility-resolver.h: Likewise. + * checks/errors/rust-const-checker.cc (ConstChecker::visit): Likewise. + * checks/errors/rust-const-checker.h: Likewise. + * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise. + * checks/errors/rust-unsafe-checker.h: Likewise. + * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Likewise. + * hir/rust-ast-lower-item.h: Likewise. + * hir/rust-hir-dump.cc (Dump::visit): Likewise. + * hir/rust-hir-dump.h: Likewise. + * hir/tree/rust-hir-full-decls.h (class ExportedMacro): Likewise. + * hir/tree/rust-hir-item.h (class ExportedMacro): Likewise. + * hir/tree/rust-hir-visitor.h: Likewise. + * hir/tree/rust-hir.cc (ExportedMacro::accept_vis): Likewise. + (ExportedMacro::get_locus): Likewise. + (ExportedMacro::get_item_kind): Likewise. + (ExportedMacro::clone_item_impl): Likewise. + * hir/tree/rust-hir.h: Likewise. + * metadata/rust-export-metadata.cc: Likewise. + * typecheck/rust-hir-type-check-item.h: Likewise. + * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Likewise. + * typecheck/rust-hir-type-check-stmt.h: Likewise. + * typecheck/rust-tycheck-dump.h: Likewise. + * util/rust-attributes.cc: Likewise. + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit): return a TraitObject + +2024-01-16 Philip Herron + + * typecheck/rust-hir-trait-resolve.cc: don't inject extra inference variables + +2024-01-16 Arthur Cohen + + * ast/rust-ast-dump.cc (Dump::visit): Remove extraneous semicolon when + dumping macro rules. + +2024-01-16 Arthur Cohen + + * metadata/rust-imports.cc (add_search_path): Change `Go` -> `Rust`. + (Import::try_package_in_directory): Likewise. + (Import::find_export_data): Likewise. + +2024-01-16 Owen Avery + + * hir/rust-ast-lower-pattern.cc + (ASTLoweringPattern::visit): Lower AltPattern. + * hir/rust-ast-lower-pattern.h: + (ASTLoweringPattern::visit): Add AltPattern visitor. + +2024-01-16 Xiao Ma + Thomas Schwinge + + * checks/errors/rust-feature-gate.cc: Adjust 'ld'->'u'. + * checks/errors/rust-feature.h: Adjust + the type of `m_issue`: 'uint64_t' -> 'unsigned'. + +2024-01-16 Philip Herron + + * ast/rust-ast.h: add const get_final_segment helper + * hir/rust-ast-lower-enumitem.h: dont add an item mapping for enumitems + * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): add enum to enum-items mappings + * hir/rust-ast-lower-stmt.cc (ASTLoweringStmt::visit): likewise + * hir/tree/rust-hir-item.h: add non const helper to get variants + * resolve/rust-ast-resolve-item.cc (ResolveItem::visit): resolve the use declaration + * resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): handle self + * resolve/rust-ast-resolve-toplevel.h: add enum item mappings to module mappings + * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_root_path): ensure variant + (TypeCheckExpr::resolve_segments): likewise + * typecheck/rust-type-util.cc (query_type): lookup enum's + * util/rust-hir-map.cc (Mappings::insert_hir_enumitem): enum item mappings + (Mappings::lookup_hir_enumitem): likewise + * util/rust-hir-map.h: likewise + +2024-01-16 Philip Herron + + * resolve/rust-ast-resolve-path.cc (ResolvePath::ResolvePath): return NodeId + (ResolvePath::go): update signiture + (ResolvePath::resolve_path): return resolved_node_id + * resolve/rust-ast-resolve-path.h: update prototypes + +2024-01-16 Mahmoud Mohamed + + * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit): + Add lowering for SlicePattern. + * hir/rust-ast-lower-pattern.h: Likewise. + * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::visit): + Add name resolution visit for SlicePattern. + * resolve/rust-ast-resolve-pattern.h: Likewise. + +2024-01-16 Philip Herron + + * hir/rust-ast-lower-implitem.h (RUST_AST_LOWER_IMPLITEM_H): cleanup header usage + * hir/rust-ast-lower-item.cc: likewise + * hir/rust-ast-lower-item.h (RUST_AST_LOWER_ITEM): likewise + * hir/rust-ast-lower-stmt.cc: likewise + * hir/rust-ast-lower-stmt.h (RUST_AST_LOWER_STMT): likewise + * hir/rust-ast-lower-type.h: likewise + * hir/rust-ast-lower.cc: likewise + * hir/rust-ast-lower.h: likewise + * resolve/rust-ast-resolve-expr.h: likewise + * resolve/rust-ast-resolve-item.cc: likewise + * resolve/rust-ast-resolve-item.h: likewise + * resolve/rust-ast-resolve-stmt.cc: likewise + * resolve/rust-ast-resolve-stmt.h: likewise + * resolve/rust-ast-resolve-struct-expr-field.h: likewise + * resolve/rust-ast-resolve-toplevel.h: likewise + * resolve/rust-ast-resolve-type.h: likewise + * resolve/rust-ast-resolve.h: likewise + +2024-01-16 Mahmoud Mohamed + + * resolve/rust-ast-resolve-pattern.h (class ResolvePattern): Removed. + +2024-01-16 Philip Herron + + * backend/rust-compile-intrinsic.cc (move_val_init_handler): new intrinsice + (uninit_handler): use a builtin memcpy + +2024-01-16 Philip Herron + + * typecheck/rust-coercion.cc (TypeCoercionRules::select): use the result + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::resolve_literal): fix ctor + * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): likewise + * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): likewise + * typecheck/rust-typecheck-context.cc (TypeCheckContext::push_new_loop_context): likewise + * typecheck/rust-tyty-util.cc (TyVar::get_implicit_infer_var): likewise + * typecheck/rust-tyty.cc (InferType::InferType): new ctor with type hint + (InferType::clone): fix ctor + (InferType::apply_primitive_type_hint): new function to apply possible hint + * typecheck/rust-tyty.h: update prototypes + * typecheck/rust-unify.cc (UnifyRules::expect_inference_variable): apply type hints + (UnifyRules::expect_bool): likewise + (UnifyRules::expect_char): likewise + (UnifyRules::expect_int): likewise + (UnifyRules::expect_uint): likewise + (UnifyRules::expect_float): likewise + (UnifyRules::expect_isize): likewise + (UnifyRules::expect_usize): likewise + +2024-01-16 Jiakun Fan <120090316@link.cuhk.edu.cn> + + * hir/rust-hir-dump.cc (Dump::go): fix format + (Dump::visit): impl `visit (AST::Attribute &)`, dump inner attrs and + `visit (Lifetime &)` + * hir/rust-hir-dump.h:add `visit (AST::Attribute &)` + +2024-01-16 Mahmoud Mohamed + + * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::go): + Print out consistency errors. + (PatternDeclaration::visit): Implement visit for AltPattern. + (PatternDeclaration::add_new_binding): New helper function for + adding a binding to identifier. + * resolve/rust-ast-resolve-pattern.h (struct BindingInfo): + New struct to facilitate checking for inconsistencies between bindings. + +2024-01-16 Owen Avery + + * backend/rust-compile-block.h + (CompileConditionalBlocks::visit): Remove IfLetExprConseqIf{,Let} visitors. + (CompileExprWithBlock::visit): Remove IfLetExprConseqIf{,Let} visitors. + * backend/rust-compile-expr.h + (CompileExpr::visit): Remove IfLetExprConseqIf{,Let} visitors. + * checks/errors/rust-unsafe-checker.cc + (UnsafeChecker::visit): Remove IfLetExprConseqIf{,Let} visitors. + * checks/errors/rust-unsafe-checker.h + (UnsafeChecker::visit): Remove IfLetExprConseqIf{,Let} visitors. + * checks/errors/rust-const-checker.cc + (ConstChecker::visit): Remove IfLetExprConseqIf{,Let} visitors. + * checks/errors/rust-const-checker.h + (ConstChecker::visit): Remove IfLetExprConseqIf{,Let} visitors. + * checks/errors/privacy/rust-privacy-reporter.cc + (PrivacyReporter::visit): Remove IfLetExprConseqIf{,Let} visitors. + * checks/errors/privacy/rust-privacy-reporter.h + (PrivacyReporter::visit): Remove IfLetExprConseqIf{,Let} visitors. + * hir/tree/rust-hir-expr.h + (class IfLetExprConseqElse): Make else_block ExprWithBlock. + (class IfLetExprConseqIf): Remove. + (class IfLetExprConseqIfLet): Remove. + * hir/tree/rust-hir-full-decls.h + (class IfLetExprConseqIf): Remove. + (class IfLetExprConseqIfLet): Remove. + * hir/tree/rust-hir.cc + (IfLetExprConseqElse::as_string): Adjust output. + (IfLetExprConseqIf::as_string): Remove. + (IfLetExprConseqIfLet::as_string): Remove. + (IfLetExprConseqIf::accept_vis): Remove. + (IfLetExprConseqIfLet::accept_vis): Remove. + * hir/tree/rust-hir-visitor.h + (HIRFullVisitor::visit): Remove IfLetExprConseqIf{,Let} visitors. + (HIRFullVisitorBase::visit): Remove IfLetExprConseqIf{,Let} visitors. + (HIRExpressionVisitor::visit): Remove IfLetExprConseqIf{,Let} visitors. + * hir/rust-hir-dump.cc + (Dump::visit): Remove IfLetExprConseqIf{,Let} visitors. + * hir/rust-hir-dump.h + (Dump::visit): Remove IfLetExprConseqIf{,Let} visitors. + * typecheck/rust-hir-type-check-expr.h + (TypeCheckExpr::visit): Remove IfLetExprConseqIf{,Let} visitors. + +2024-01-16 Owen Avery + + * typecheck/rust-hir-type-check-expr.cc + (TypeCheckExpr::visit): Remove IfExprConseqIf visitor. + * typecheck/rust-hir-type-check-expr.h + (TypeCheckExpr::visit): Remove IfExprConseqIf{,Let} visitor. + * backend/rust-compile-block.cc + (CompileConditionalBlocks::visit): Remove IfExprConseqIf visitor. + * backend/rust-compile-block.h + (CompileConditionalBlocks::visit): Remove IfExprConseqIf{,Let} visitors. + (CompileExprWithBlock::visit): + Remove IfExprConseqIf{,Let} visitors, implement BlockExpr visitor. + * backend/rust-compile-expr.cc + (CompileExpr::visit): Remove IfExprConseqIf visitor. + * backend/rust-compile-expr.h + (CompileExpr::visit): Remove IfExprConseqIf{,Let} visitors. + * checks/lints/rust-lint-marklive.h + (MarkLive::visit): Remove IfExprConseqIf visitor. + * checks/errors/rust-const-checker.cc + (ConstChecker::visit): Remove IfExprConseqIf{,Let} visitors. + * checks/errors/rust-const-checker.h + (ConstChecker::visit): Remove IfExprConseqIf{,Let} visitors. + * checks/errors/rust-unsafe-checker.cc + (UnsafeChecker::visit): Remove IfExprConseqIf{,Let} visitors. + * checks/errors/rust-unsafe-checker.h + (UnsafeChecker::visit): Remove IfExprConseqIf{,Let} visitors. + * checks/errors/privacy/rust-privacy-reporter.cc + (PrivacyReporter::visit): Remove IfExprConseqIf{,Let} visitors. + * checks/errors/privacy/rust-privacy-reporter.h + (PrivacyReporter::visit): Remove IfExprConseqIf{,Let} visitors. + * hir/tree/rust-hir-expr.h + (class IfExprConseqElse): Make else_block ExprWithBlock. + (class IfExprConseqIf): Remove. + (class IfExprConseqIfLet): Remove. + * hir/tree/rust-hir-full-decls.h + (class IfExprConseqIf): Remove. + (class IfExprConseqIfLet): Remove. + * hir/tree/rust-hir.cc + (IfExprConseqElse::as_string): Adjust output. + (IfExprConseqIf::as_string): Remove. + (IfExprConseqIfLet::as_string): Remove. + (IfExprConseqIf::accept_vis): Remove. + (IfExprConseqIfLet::accept_vis): Remove. + * hir/tree/rust-hir-visitor.h + (HIRFullVisitor::visit): Remove IfExprConseqIf{,Let} visitors. + (HIRFullVisitorBase::visit): Remove IfExprConseqIf{,Let} visitors. + (HIRExpressionVisitor::visit): Remove IfExprConseqIf{,Let} visitors. + * hir/rust-hir-dump.cc + (Dump::visit): Remove IfExprConseqIf{,Let} visitors. + * hir/rust-hir-dump.h + (Dump::visit): Remove IfExprConseqIf{,Let} visitors. + * hir/rust-ast-lower.cc + (ASTLoweringIfBlock::visit): Replace HIR::IfExprConseqIf with HIR::IfExprConseqElse. + +2024-01-16 Mahmoud Mohamed + + * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): + Push a Product context instead of an Or context. + +2024-01-16 Philip Herron + + * typecheck/rust-hir-inherent-impl-overlap.h (class ImplItemToName): remove + +2024-01-16 Philip Herron + + * backend/rust-compile-expr.cc (CompileExpr::resolve_method_address): remove unused code + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): remove infer call + (TypeCheckExpr::resolve_root_path): only infer when we need to + +2024-01-16 Philip Herron + + * typecheck/rust-hir-dot-operator.cc (MethodResolver::select): add debug + +2024-01-16 Philip Herron + + * backend/rust-compile.cc: use unify_and instead + * typecheck/rust-tyty-subst.cc (SubstitutionRef::solve_missing_mappings_from_this): remove + * typecheck/rust-tyty-subst.h: update header + +2024-01-16 Philip Herron + + * typecheck/rust-coercion.cc (TypeCoercionRules::select): use new unify_and interface + * typecheck/rust-hir-dot-operator.cc (MethodResolver::try_hook): grab bounds behind refs + +2024-01-16 Philip Herron + + * backend/rust-compile-base.cc: fix headers + * backend/rust-compile-base.h: likewise + * backend/rust-compile-expr.cc: likewise + * backend/rust-compile-extern.h: likewise + * backend/rust-compile-pattern.cc: likewise + * backend/rust-compile.cc: likewise + * typecheck/rust-autoderef.cc: likewise + * typecheck/rust-hir-dot-operator.cc: likewise + * typecheck/rust-hir-inherent-impl-overlap.h: likewise + * typecheck/rust-hir-path-probe.cc: likewise + * typecheck/rust-hir-trait-resolve.cc: likewise + * typecheck/rust-hir-type-check-base.cc: likewise + * typecheck/rust-hir-type-check-base.h (RUST_HIR_TYPE_CHECK_BASE): likewise + * typecheck/rust-hir-type-check-enumitem.cc: likewise + * typecheck/rust-hir-type-check-expr.cc: likewise + * typecheck/rust-hir-type-check-implitem.cc: likewise + * typecheck/rust-hir-type-check-item.cc: likewise + * typecheck/rust-hir-type-check-path.cc: likewise + * typecheck/rust-hir-type-check-pattern.cc: likewise + * typecheck/rust-hir-type-check-stmt.cc: likewise + * typecheck/rust-hir-type-check-struct.cc: likewise + * typecheck/rust-hir-type-check-type.cc: likewise + * typecheck/rust-hir-type-check-type.h: likewise + * typecheck/rust-hir-type-check.h (RUST_HIR_TYPE_CHECK): likewise + * typecheck/rust-tyty-bounds.cc: likewise + * typecheck/rust-tyty-call.cc: likewise + * typecheck/rust-tyty-subst.cc: likewise + * typecheck/rust-tyty.cc: likewise + +2024-01-16 Philip Herron + + * typecheck/rust-tyty.cc (BaseType::has_subsititions_defined): new implementation + (BaseType::needs_generic_substitutions): likewise + (ProjectionType::needs_generic_substitutions): remove + (ProjectionType::has_subsititions_defined): remove + * typecheck/rust-tyty.h: update header + +2024-01-16 Philip Herron + + * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): update to use new interface + (TypeCheckExpr::resolve_root_path): likewise + (TypeCheckExpr::resolve_segments): likewise + * typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): likewise + (TypeCheckType::resolve_root_path): likewise + * typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args): likewise + * typecheck/rust-tyty.cc (BaseType::supports_substitutions): likewise + (BaseType::can_substitute): remove + (BaseType::contains_type_parameters): remove + (handle_substitions): cleanup + (TupleType::handle_substitions): update + (FnType::handle_substitions): update + (ProjectionType::supports_substitutions): update + * typecheck/rust-tyty.h: update header + +2024-01-16 Philip Herron + + * typecheck/rust-tyty.h: cleanup ordering of header + +2024-01-16 Philip Herron + + * typecheck/rust-tyty.cc (BaseType::monomorphized_clone): new impl + (InferType::monomorphized_clone): remove + (ErrorType::monomorphized_clone): likewise + (ADTType::monomorphized_clone): likewise + (TupleType::monomorphized_clone): likewise + (FnType::monomorphized_clone): likewise + (FnPtr::monomorphized_clone): likewise + (ClosureType::monomorphized_clone): likewise + (ArrayType::clone): likewise + (ArrayType::get_var_element_type): likewise + (ArrayType::monomorphized_clone): likewise + (SliceType::clone): likewise + (SliceType::get_var_element_type): likewise + (SliceType::monomorphized_clone): likewise + (BoolType::monomorphized_clone): likewise + (IntType::monomorphized_clone): likewise + (UintType::monomorphized_clone): likewise + (FloatType::monomorphized_clone): likewise + (USizeType::monomorphized_clone): likewise + (ISizeType::monomorphized_clone): likewise + (CharType::monomorphized_clone): likewise + (ReferenceType::clone): likewise + (ReferenceType::get_var_element_type): likewise + (ReferenceType::monomorphized_clone): likewise + (PointerType::clone): likewise + (PointerType::get_var_element_type): likewise + (PointerType::monomorphized_clone): likewise + (ParamType::monomorphized_clone): likewise + (StrType::monomorphized_clone): likewise + (NeverType::monomorphized_clone): likewise + (PlaceholderType::monomorphized_clone): likewise + (ProjectionType::monomorphized_clone): likewise + (DynamicObjectType::monomorphized_clone): likewise + * typecheck/rust-tyty.h: update header + +2024-01-16 Philip Herron + + * typecheck/rust-tyty.cc (BaseType::is_unit): new implementation + (ErrorType::is_unit): remove + (TupleType::is_unit): likewise + (NeverType::is_unit): likewise + (PlaceholderType::is_unit): likewise + (ProjectionType::is_unit): likewise + * typecheck/rust-tyty.h: update header + +2024-01-16 Philip Herron + + * typecheck/rust-tyty.cc (BaseType::is_concrete): new implementation + (InferType::is_concrete): remove + (ErrorType::is_concrete): likewise + (StructFieldType::is_concrete): likewise + (ADTType::is_concrete): likewise + (TupleType::is_concrete): likewise + (BoolType::is_concrete): likewise + (IntType::is_concrete): likewise + (UintType::is_concrete): likewise + (FloatType::is_concrete): likewise + (USizeType::is_concrete): likewise + (ISizeType::is_concrete): likewise + (CharType::is_concrete): likewise + (ReferenceType::is_concrete): likewise + (PointerType::is_concrete): likewise + (ParamType::is_concrete): likewise + (StrType::is_concrete): likewise + (NeverType::is_concrete): likewise + (PlaceholderType::is_concrete): likewise + (ProjectionType::is_concrete): likewise + (DynamicObjectType::is_concrete): likewise + * typecheck/rust-tyty.h: update header + +2024-01-16 Philip Herron + + * backend/rust-compile-type.cc (TyTyResolveCompile::TyTyResolveCompile): call destructure + (TyTyResolveCompile::compile): use error_mark_node + (TyTyResolveCompile::visit): use error_mark_node + * backend/rust-compile-type.h: remove recursive ops + +2024-01-16 Tage Johansson + + * parse/rust-parse.cc: fix follow-sets + +2024-01-16 Mahmoud Mohamed + + * resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit) :declare and + pass bindings to PatternDeclaration::go. + (ResolveExpr::resolve_closure_param): Likewise. + * resolve/rust-ast-resolve-expr.h: Likewise. + * resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit): Likewise. + (ResolveItem::visit): Likewise. + * resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::go): Likewise. + (PatternDeclaration::visit): check for previous identifier bindings + before inserting the new one. + * resolve/rust-ast-resolve-pattern.h (enum PatternBoundCtx): New enum. + * resolve/rust-ast-resolve-stmt.h: pass bindings to PatterDeclaration::go. + +2024-01-16 Mahmoud Mohamed + + * backend/rust-compile-expr.cc (CompileExpr::generate_closure_function): + handle closure parameters pattern bindings using CompilePatternBindings visitor + +2024-01-16 Arthur Cohen + + * README.md (process): Rename `rust1` to `crab1` in examples. + * Make-lang.in: Rename `rust1` to `crab1`. + * config-lang.in: Likewise. + * lang-specs.h: Likewise. + * rustspec.cc (lang_specific_driver): Likewise. + +2024-01-16 Owen Avery + + * hir/tree/rust-hir-pattern.h + (SlicePattern::get_items): Add. + +2024-01-16 Owen Avery + + * hir/tree/rust-hir-full-decls.h + (struct GenericArgsBinding): Convert to class. + (class GenericArgsBinding): Convert from struct. + (struct TypePathFunction): See above. + (class TypePathFunction): See above. + (struct QualifiedPathType): See above. + (class QualifiedPathType): See above. + * ast/rust-ast-full-decls.h + (struct WhereClause): See above. + (class WhereClause): See above. + (struct SelfParam): See above. + (class SelfParam): See above. + (struct FunctionQualifiers): See above. + (class FunctionQualifiers): See above. + (struct FunctionParam): See above. + (class FunctionParam): See above. + (struct StructField): See above. + (class StructField): See above. + (struct TupleField): See above. + (class TupleField): See above. + (struct TraitFunctionDecl): See above. + (class TraitFunctionDecl): See above. + (struct TraitMethodDecl): See above. + (class TraitMethodDecl): See above. + (struct NamedFunctionParam): See above. + (class NamedFunctionParam): See above. + * hir/tree/rust-hir-path.h + (struct GenericArgsBinding): See above. + (class GenericArgsBinding): See above. + (struct TypePathFunction): See above. + (class TypePathFunction): See above. + (struct QualifiedPathType): See above. + (class QualifiedPathType): See above. + * ast/rust-item.h + (struct WhereClause): See above. + (class WhereClause): See above. + (struct SelfParam): See above. + (class SelfParam): See above. + (struct FunctionQualifiers): See above. + (class FunctionQualifiers): See above. + (struct FunctionParam): See above. + (class FunctionParam): See above. + (struct StructField): See above. + (class StructField): See above. + (struct TupleField): See above. + (class TupleField): See above. + (struct TraitFunctionDecl): See above. + (class TraitFunctionDecl): See above. + (struct TraitMethodDecl): See above. + (class TraitMethodDecl): See above. + (struct NamedFunctionParam): See above. + (class NamedFunctionParam): See above. + +2024-01-16 Owen Avery + + * hir/tree/rust-hir-pattern.h + (class AltPattern): Remove duplicate access specifier. + (AltPattern::get_alts): Add. + * hir/tree/rust-hir.cc + (AltPattern::as_string): Add. + (AltPattern::accept_vis): Add. + +2024-01-16 Arthur Cohen + + * hir/tree/rust-hir-item.h (class ExportedMacro): Add new ExportedMacro class. + * hir/tree/rust-hir.cc (ExportedMacro::accept_vis): New function. + (ExportedMacro::get_locus): Likewise. + (ExportedMacro::get_item_kind): Likewise. + (ExportedMacro::clone_item_impl): Likewise. + * hir/tree/rust-hir-full-decls.h (class ExportedMacro): Forward declare class. + * backend/rust-compile-item.h: Add visitor for ExportedMacro. + * backend/rust-compile-stmt.h: Likewise. + * checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): Likewise. + * checks/errors/privacy/rust-privacy-reporter.h: Likewise. + * checks/errors/privacy/rust-pub-restricted-visitor.cc (PubRestrictedVisitor::visit): + Likewise. + * checks/errors/privacy/rust-pub-restricted-visitor.h: Likewise. + * checks/errors/privacy/rust-reachability.cc (ReachabilityVisitor::visit): Likewise. + * checks/errors/privacy/rust-reachability.h: Likewise. + * checks/errors/privacy/rust-visibility-resolver.cc (VisibilityResolver::visit): Likewise. + * checks/errors/privacy/rust-visibility-resolver.h: Likewise. + * checks/errors/rust-const-checker.cc (ConstChecker::visit): Likewise. + * checks/errors/rust-const-checker.h: Likewise. + * checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise. + * checks/errors/rust-unsafe-checker.h: Likewise. + * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Likewise. + * hir/rust-ast-lower-item.h: Likewise. + * hir/rust-hir-dump.cc (Dump::visit): Likewise. + * hir/rust-hir-dump.h: Likewise. + * hir/tree/rust-hir-visitor.h: Likewise. + * metadata/rust-export-metadata.cc: Likewise. + * typecheck/rust-hir-type-check-item.h: Likewise. + * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Likewise. + * typecheck/rust-hir-type-check-stmt.h: Likewise. + * typecheck/rust-tycheck-dump.h: Likewise. + * hir/tree/rust-hir.h: Add new ItemKind::MacroExport variant. + * util/rust-attributes.cc: Add #[macro_export] attribute. + +2024-01-16 Mahmoud Mohamed + + * backend/rust-compile-fnparam.cc (CompileFnParam::visit): + Added visit implementation for ReferencePattern. + (CompileFnParam::create_tmp_param_var): + Refactored duplicated code into a helper function. + * backend/rust-compile-fnparam.h: Added visit implementation for + ReferencePattern. + * backend/rust-compile-pattern.cc (CompilePatternBindings::visit): + Added visit implementation for ReferencePattern and + IdentifierPattern. + * backend/rust-compile-pattern.h: Added visit implementation for + ReferencePattern and IdentifierPattern. + +2024-01-16 Arthur Cohen + + * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Move + unloaded module item loading to... + * expand/rust-attribute-visitor.cc (AttrVisitor::visit): ...here. + +2024-01-16 Jakub Dupak + + * hir/rust-hir-dump.cc (Dump::visit): Simplify indentation dump to single line. + +2024-01-16 Jakub Dupak + + * ast/rust-ast-dump.cc (Indent::Indent): Move to separate file. + (operator<<): Move to separate file. + (Indent::increment): Move to separate file. + (Indent::decrement): Move to separate file. + * ast/rust-ast-dump.h (class Indent): Move to separate file. + * hir/rust-hir-dump.cc (Dump::Dump): Use new indentation object. + (Dump::go): Use new indentation object. + (Dump::visit): Use new indention object. + * hir/rust-hir-dump.h: Use new indentation object. + * util/rust-dump.h: New file. Moved Indentation from rust-ast-dump.cc + +2024-01-16 Mahmoud Mohamed + + * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): + Add the missing infered type assignment + +2024-01-16 Marc Poulhiès + + PR rust/108111 + * ast/rust-ast-full-decls.h (StructPatternElements): Declare as a + class. + * ast/rust-item.h (EnumItem): Mark several method as being + overrides. + * ast/rust-pattern.h (StructPattern::get_locus): Add override. + * lex/rust-lex.h (BufferInputSource): Use reference_wrapper + instead of bare reference. + (TokenSource::get): Add method to implement the reference_wrapper + interface. + * typecheck/rust-tyty.h (TypeBoundPredicate): Add empty dtor. + * util/rust-buffered-queue.h (peek): Source token stream is now + using a reference_wrapper, use .get() + +2024-01-16 vincent + + * typecheck/rust-hir-type-check-pattern.cc + (TypeCheckPattern::visit): rewrite part code to helper function + (TypeCheckPattern::typecheck_range_pattern_bound): helper function + * typecheck/rust-hir-type-check-pattern.h + (TypeCheckPattern::typecheck_range_pattern_bound): + change the parameter of the function + +2024-01-16 goar5670 + + * hir/tree/rust-hir-pattern.h (HIR::ReferencePattern): + added get_referenced_pattern function. + * resolve/rust-ast-resolve-pattern.h + (Resolve::PatternDeclaration): add visit function for + AST::ReferencePattern + * typecheck/rust-hir-type-check-pattern.cc + (Resolver::TypeCheckPattern): add visit function for + HIR::ReferencePattern + +2024-01-16 Owen Avery + + * util/rust-lang-item.h + (RustLangItem::ItemType): New enumerators. + (RustLangItem::Parse): Parse new enumerators. + (RustLangItem::ToString): Handle new enumerators. + +2024-01-16 Owen Avery + + * backend/rust-compile-fnparam.h: + (CompileFnParam::visit): Add AltPattern visitor. + * backend/rust-compile-pattern.h: + (CompilePatternCaseLabelExpr::visit): Add AltPattern visitor. + (CompilePatternBindings::visit): Add AltPattern visitor. + (CompilePatternLet::visit): Add AltPattern visitor. + * backend/rust-compile-resolve-path.h: + (ResolvePathRef::visit): Add AltPattern visitor. + * backend/rust-compile-var-decl.h: + (CompileVarDecl::visit): Add AltPattern visitor. + * checks/errors/rust-const-checker.cc + (ConstChecker::visit): Add AltPattern visitor. + * checks/errors/rust-const-checker.h: + (ConstChecker::visit): Add AltPattern visitor. + * checks/errors/rust-unsafe-checker.cc + (UnsafeChecker::visit): Add AltPattern visitor. + * checks/errors/rust-unsafe-checker.h: + (UnsafeChecker::visit): Add AltPattern visitor. + * hir/rust-hir-dump.cc + (Dump::visit): Add AltPattern visitor. + * hir/rust-hir-dump.h: + (Dump::visit): Add AltPattern visitor. + * hir/tree/rust-hir-full-decls.h + (class AltPattern): Add forward declaration. + * hir/tree/rust-hir-pattern.h + (class AltPattern): New class. + * hir/tree/rust-hir-visitor.h: + (HIRFullVisitor::visit): Add AltPattern visitor. + (HIRFullVisitorBase::visit): Add AltPattern visitor. + (HIRPatternVisitor::visit): Add AltPattern visitor. + * hir/tree/rust-hir.h: + (Pattern::PatternType::ALT): New enumerator. + * typecheck/rust-hir-type-check-pattern.cc + (TypeCheckPattern::visit): Add AltPattern visitor. + * typecheck/rust-hir-type-check-pattern.h: + (TypeCheckPattern::visit): Add AltPattern visitor. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-macro.cc (builtin_macro_from_string): Add identifier + identification. + * ast/rust-macro.h (enum class): Add Stringify builtin macro + type. + * expand/rust-macro-builtins.cc (make_macro_path_str): Add path + for builtin stringify macro. + (MacroBuiltin::stringify_handler): Add handler for builtin + stringify macro. + * expand/rust-macro-builtins.h: Add stringify handler's + prototype. + * util/rust-hir-map.cc (Mappings::insert_macro_def): Add + stringify handler to builtin hir map. + +2024-01-16 Nikos Alexandris + + * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): + Add length checking for tuple patterns. + (TypeCheckPattern::emit_pattern_size_error): New function. + * typecheck/rust-hir-type-check-pattern.h: New function + emit_pattern_size_error. + +2024-01-16 goar5670 + + * parse/rust-parse-impl.h (Parser::parse_expr): + split LEFT_SHIFT before null_denotation. + +2024-01-16 Parthib + + * rust-object-export.cc: Modified + * hir/rust-ast-lower-type.cc (rust_fatal_error): Removed + (rust_assert): Added + +2024-01-16 Owen Avery + + * resolve/rust-early-name-resolver.cc + (EarlyNameResolver::visit): + Check for closure parameter without given type. + +2024-01-16 Philip Herron + + * typecheck/rust-typecheck-context.cc (TypeCheckContext::insert_resolved_predicate): remove + +2024-01-16 Philip Herron + + * resolve/rust-ast-resolve-type.cc (ResolveRelativeQualTypePath::resolve_qual_seg): fix + +2024-01-16 Philip Herron + + * ast/rust-path.h: add missing copy for node_id + +2024-01-16 Philip Herron + + * rust-gcc.h: remove unused headers + +2024-01-16 Philip Herron + + * ast/rust-ast.cc (QualifiedPathInType::as_string): add missing to string + * ast/rust-path.h: add missing copy+move constructors and assignment overloads + * hir/tree/rust-hir-path.h: likewise + * hir/tree/rust-hir.cc (QualifiedPathInType::as_string): add missing to string + +2024-01-16 Philip Herron + + * typecheck/rust-tyty.cc (ParamType::get_name): call destructure + +2024-01-16 Philip Herron + + * typecheck/rust-hir-trait-resolve.cc: use unify_and infer + +2024-01-16 goar5670 + + * parse/rust-parse-impl.h (Parser::parse_closure_param): + Replace parse_pattern with parse_pattern_no_alt. + +2024-01-16 Pierre-Emmanuel Patry + + * parse/rust-parse-impl.h (Parser::parse_while_let_loop_expr): + Prevent hard error on token skip. + (Parser::null_denotation): Fix parser for while let expressions. + +2024-01-16 Philip Herron + + * backend/rust-builtins.cc (BuiltinsContext::setup): add memset builtin to the map + * backend/rust-compile-intrinsic.cc (uninit_handler): implement uninit intrinsic + +2024-01-16 Pierre-Emmanuel Patry + + * parse/rust-parse-impl.h (Parser::parse_slice_pattern): Add + closing square bracket check. + +2024-01-16 Pierre-Emmanuel Patry + + * parse/rust-parse-impl.h (Parser::parse_external_type_item): + Fix compilation error due to unnecessary move. + +2024-01-16 Abdul Rafey + + * hir/rust-hir-dump.cc (Dump::go): support inner attrs, crate items and node mappings + (Dump::visit): support functions, arith/logical exprs, let stmts and literals + +2024-01-16 Nikos Alexandris + + * expand/rust-macro-builtins.cc (load_file_bytes): Add location parameter. + (MacroBuiltin::include_bytes_handler): Pass location to load_file_bytes. + (MacroBuiltin::include_str_handler): Pass location to load_file_bytes. + +2024-01-16 Pierre-Emmanuel Patry + + * parse/rust-parse-impl.h (Parser::parse_pattern_no_alt): Handle + RestPattern correctly. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-pattern.h (class RestPattern): Add NodeId as well as + the clone_impl function. + +2024-01-16 Pierre-Emmanuel Patry + + * parse/rust-parse-impl.h (Parser::null_denotation): Fix if let + parsing. + +2024-01-16 Philip Herron + + * backend/rust-compile-intrinsic.cc (op_with_overflow_inner): wraps op_with_overflow + (std::function + + * Make-lang.in: Add rust-ast-lower-stmt.o + * hir/rust-ast-lower-stmt.h: Move definitions to... + * hir/rust-ast-lower-stmt.cc: ...here. + +2024-01-16 mxlol233 + + * checks/errors/rust-feature-gate.cc: Add definition + for `extern_types`. + * checks/errors/rust-feature-gate.h: Likewise. + * checks/errors/rust-feature.cc: Likewise. + * checks/errors/rust-feature.h: Likewise. + +2024-01-16 Owen Avery + + * ast/rust-pattern.h + (StructPatternElements::operator=): Clear vector before inserting. + (TupleStructItemsNoRange::operator=): Clear vector before inserting. + (TupleStructItemsRange::operator=): Clear vectors before inserting. + (TuplePatternItemsMultiple::operator=): Clear vector before inserting. + (TuplePatternItemsRanged::operator=): Clear vectors before inserting. + (SlicePattern::operator=): Clear vector before inserting. + (AltPattern::operator=): Clear vector before inserting. + * hir/tree/rust-hir-pattern.h + (StructPatternElements::operator=): Clear vector before inserting. + (TupleStructItemsNoRange::operator=): Clear vector before inserting. + (TupleStructItemsRange::operator=): Clear vectors before inserting. + (TuplePatternItemsMultiple::operator=): Clear vector before inserting. + (TuplePatternItemsRanged::operator=): Clear vectors before inserting. + (SlicePattern::operator=): Clear vector before inserting. + +2024-01-16 bl7awy + + * typecheck/rust-casts.cc (TypeCastRules::cast_rules): Perform destructure on `from` type. + +2024-01-16 Owen Avery + + * ast/rust-pattern.h + (struct StructPatternElements): Change to class. + (class StructPatternElements): Change from struct. + * hir/tree/rust-hir-pattern.h + (struct StructPatternElements): Change to class. + (class StructPatternElements): Change from struct. + +2024-01-16 Owen Avery + + * typecheck/rust-hir-type-check-pattern.cc + (TypeCheckPattern::visit): Improve error messages. + +2024-01-16 Owen Avery + + * hir/tree/rust-hir-pattern.h + (class TupleStructItemsNoRange): Fix formatting. + (class TupleStructItemsRange): Fix formatting. + (class TuplePatternItemsMultiple): Fix formatting. + (class TuplePatternItemsRanged): Fix formatting. + (class SlicePattern): Fix formatting. + +2024-01-16 Pierre-Emmanuel Patry + + * ast/rust-ast-dump.cc (Dump::visit): Add visitor. + * ast/rust-ast-dump.h: Add visitor prototype. + * ast/rust-ast-full-decls.h (class RestPattern): Add forward + declaration for class RestPattern. + * ast/rust-ast-visitor.h: Add visitor prototype. + * ast/rust-ast.cc (RestPattern::accept_vis): Add function to + accept a foreign visitor. + * ast/rust-pattern.h (class RestPattern): Add class RestPattern. + * checks/errors/rust-feature-gate.h: Add visitor prototype. + * expand/rust-attribute-visitor.cc (AttrVisitor::visit): Add + visitor implementation. + * expand/rust-attribute-visitor.h: Add visitor prototype. + * hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Add + visitor implementation. + * hir/rust-ast-lower-base.h: Add visitor prototype. + * resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Add + visitor implementation. + * resolve/rust-ast-resolve-base.h: Add visitor prototype. + * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): + Add visitor implementation. + * resolve/rust-early-name-resolver.h: Add visitor prototype. + * util/rust-attributes.cc (AttributeChecker::visit): Add visitor + implementation. + * util/rust-attributes.h: Add visitor prototype. + +2024-01-16 Philip Herron + + * typecheck/rust-tyty-cmp.h: remove + * typecheck/rust-tyty.cc (set_cmp_autoderef_mode): likewise + (reset_cmp_autoderef_mode): likewise + * typecheck/rust-tyty.h (set_cmp_autoderef_mode): likewise + (reset_cmp_autoderef_mode): likewise + +2024-01-16 Philip Herron + + * typecheck/rust-coercion.cc (TypeCoercionRules::Coerce): Add new try_flag + (TypeCoercionRules::TypeCoercionRules): set new try flag + (TypeCoercionRules::do_coercion): default to a final unify_and in the else case + (TypeCoercionRules::coerce_unsafe_ptr): cannot coerce to a ptr from ref during autoderef + (TypeCoercionRules::coerce_borrowed_pointer): respect coerceable mutability + * typecheck/rust-coercion.h: update header + * typecheck/rust-hir-dot-operator.cc (MethodResolver::select): use new TryCoerce interface + (MethodResolver::append_adjustments): ensure we maintain adjustment mappings + * typecheck/rust-hir-dot-operator.h: add new method append_adjustments + * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): extra logging + +2024-01-16 Philip Herron + + * typecheck/rust-unify.cc (UnifyRules::go): fix inference check + +2024-01-16 Philip Herron + + * backend/rust-compile-base.h: unconsify + * backend/rust-compile.cc (HIRCompileBase::coercion_site): likewise + (HIRCompileBase::coercion_site1): likewise + * typecheck/rust-autoderef.cc (Adjuster::try_deref_type): likewise + (Adjuster::try_raw_deref_type): likewise + (Adjuster::try_unsize_type): likewise + (AutoderefCycle::cycle): likewise + (AutoderefCycle::try_autoderefed): likewise + * typecheck/rust-autoderef.h: likewise + * typecheck/rust-coercion.cc (TypeCoercionRules::select): likewise + * typecheck/rust-coercion.h: likewise + * typecheck/rust-hir-dot-operator.cc (MethodResolver::Probe): likewise + (MethodResolver::select): likewise + * typecheck/rust-hir-dot-operator.h: likewise + +2024-01-16 Philip Herron + + * typecheck/rust-unify.cc (UnifyRules::go): respect the emit_errors flag + +2024-01-16 Philip Herron + + * typecheck/rust-casts.cc (TypeCastRules::check): update to new interface + * typecheck/rust-coercion.cc (TypeCoercionRules::Coerce): likewise + (TypeCoercionRules::TryCoerce): likewise + (TypeCoercionRules::TypeCoercionRules): likewise + * typecheck/rust-coercion.h: likewise + * typecheck/rust-type-util.cc (coercion_site): likewise + +2024-01-16 Philip Herron + + * typecheck/rust-unify.cc (UnifyRules::go): allow lhs infer vars + +2024-01-16 Philip Herron + + * backend/rust-compile-expr.cc (CompileExpr::resolve_method_address): update to new inteface + * typecheck/rust-coercion.cc (TypeCoercionRules::coerce_unsafe_ptr): likewise + (TypeCoercionRules::coerce_borrowed_pointer): likewise + * typecheck/rust-hir-type-check.h: likewise + * typecheck/rust-type-util.cc (unify_site_and): new interface to allow for infer and commit + * typecheck/rust-type-util.h (unify_site_and): likewise + * typecheck/rust-typecheck-context.cc (TypeCheckContext::clear_type): new interface + * typecheck/rust-unify.cc (UnifyRules::UnifyRules): update + (UnifyRules::Resolve): new optional flags for commit and infer + (UnifyRules::go): likewise + (UnifyRules::expect_adt): refactor to use new interface + (UnifyRules::expect_reference): likewise + (UnifyRules::expect_pointer): likewise + (UnifyRules::expect_array): likewise + (UnifyRules::expect_slice): likewise + (UnifyRules::expect_fndef): likewise + (UnifyRules::expect_fnptr): likewise + (UnifyRules::expect_tuple): likewise + (UnifyRules::expect_closure): likewise + * typecheck/rust-unify.h: refactor interface + +2024-01-16 Philip Herron + + * typecheck/rust-unify.cc (UnifyRules::Resolve): refactor + (UnifyRules::commit): refactor + * typecheck/rust-unify.h: likewise + +2024-01-16 Philip Herron + + * typecheck/rust-tyty.cc (ADTType::is_concrete): need to consider if is a num_variant + * typecheck/rust-tyty.h: refactor to cc file + +2024-01-16 Pierre-Emmanuel Patry + + * parse/rust-parse-impl.h (Parser::parse_external_type_item): + Add function to parser an external type item. + (Parser::parse_external_item): + Add identification and parsing for external type items. + * parse/rust-parse.h: + Add parser_external_type_item prototype. + +2024-01-16 omkar-mohanty + + * expand/rust-macro-builtins.cc + (MacroBuiltin::include_str_handler): eager expansion + (make_macro_path_str): macto to string + (parse_single_string_literal): check for eager invocation + (MacroBuiltin::assert_handler): eager expansion + (MacroBuiltin::include_bytes_handler): eager expansion + (MacroBuiltin::include_str_handler): eager expansion + (MacroBuiltin::compile_error_handler): eager expansion + (MacroBuiltin::include_handler): eager expansion + +2024-01-16 Arthur Cohen + + * ast/rust-item.h (class Method): Add `is_default` field. + (class Function): Likewise. + * parse/rust-parse-impl.h (Parser::parse_item): Add nice error when + parsing `default` outside of an `impl` block + (Parser::parse_trait_impl_item): Allow parsing functions + or methods when seeing `default`. + +2024-01-16 Pierre-Emmanuel Patry + + * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::cast_site): + Remove cast_site. + * typecheck/rust-hir-type-check-base.h: Remove cast_site + prototype. + * typecheck/rust-type-util.cc (cast_site): Add cast_site. + * typecheck/rust-type-util.h (cast_site): Add cast_site + prototype. + +2024-01-16 Arthur Cohen + + * ast/rust-item.h: Add non-const `get_visibility` to ExternalTypeItem. + * ast/rust-ast-dump.cc (Dump::visit): Add implementation for ExternalTypeItem. + * expand/rust-attribute-visitor.cc (AttrVisitor::visit): Likewise. + +2024-01-16 Arthur Cohen + + * ast/rust-item.h (class ExternalTypeItem): New class. + * ast/rust-ast.cc (ExternalTypeItem::as_string): New function. + (ExternalTypeItem::accept_vis): Likewise. + * ast/rust-ast-full-decls.h (class ExternalTypeItem): Declare class. + * ast/rust-ast-dump.cc (Dump::visit): Add base visitor for ExternalTypeItem. + * ast/rust-ast-dump.h: Likewise. + * ast/rust-ast-visitor.h: Likewise. + * checks/errors/rust-feature-gate.h: Likewise. + * expand/rust-attribute-visitor.cc (AttrVisitor::visit): Likewise. + * expand/rust-attribute-visitor.h: Likewise. + * hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Likewise. + * hir/rust-ast-lower-base.h: Likewise. + * resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Likewise. + * resolve/rust-ast-resolve-base.h: Likewise. + * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Likewise. + * resolve/rust-early-name-resolver.h: Likewise. + * util/rust-attributes.cc (AttributeChecker::visit): Likewise. + * util/rust-attributes.h: Likewise. + +2024-01-16 Arthur Cohen + + * expand/rust-macro-invoc-lexer.cc (MacroInvocLexer::split_current_token): + Add proper implementation. + +2024-01-16 Arthur Cohen + + * ast/rust-item.h (class Trait): Add `has_auto` field. + * checks/errors/rust-feature.cc: Add handling for `feature(optin_builtin_traits)` + * checks/errors/rust-feature.h: Likewise. + * lex/rust-lex.cc: Fix keyword classification using hashmap. + * lex/rust-token.h: Add `auto` keyword token. + * parse/rust-parse-impl.h (Parser::parse_vis_item): Parse auto traits + on `auto` keyword. + +2024-01-16 Pierre-Emmanuel Patry + + * typecheck/rust-hir-trait-resolve.cc (TraitItemReference::resolve_item): + Remove TypeCheckBase namespace qualifier. + * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::coercion_site): + Remove coercion_site function. + * typecheck/rust-hir-type-check-base.h: Remove coercion_site + prototype. + * typecheck/rust-type-util.cc (coercion_site): Add coercion_site + function. + * typecheck/rust-type-util.h (coercion_site): Add coercion_site + prototype. + * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): + Remove TypeCheckBase namespace qualifier. + (TypeCheckMethodCallExpr::check): Remove TypeCheckBase namespace + qualifier. + +2024-01-16 Pierre-Emmanuel Patry + + * typecheck/rust-autoderef.cc: Remove TypeCheckBase qualifier. + * typecheck/rust-hir-trait-resolve.cc: Remove TypeCheckBase + qualifier. + * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::unify_site): + Remove unify_site. + * typecheck/rust-hir-type-check-base.h: Remove unify_site + header. + * typecheck/rust-hir-type-check.cc (TypeResolution::Resolve): + Remove TypeCheckBase qualifier. + * typecheck/rust-type-util.cc (unify_site): Add unify_site + function. + * typecheck/rust-type-util.h (unify_site): Add unify_site + prototype. + * typecheck/rust-tyty-call.cc (TypeCheckMethodCallExpr::check): + Remove TypeCheckBase qualifier. + +2024-01-16 Arthur Cohen + + * parse/rust-parse-impl.h (Parser::parse_type): Allow LEFT_SHIFT to + start a type and then split it in `parse_qualified_path_type` + +2024-01-16 Arthur Cohen + + * parse/rust-parse-impl.h (Parser::parse_path_generic_args): Split leading + `LEFT_SHIFT` token into two `LEFT_ANGLE` tokens when parsing generic arguments. + (Parser::parse_type_path_segment): Allow `LEFT_ANGLE` as starting token for + parsing generic arguments. + +2024-01-16 mxlol233 + + * checks/errors/rust-feature-gate.cc: Add implementations + for `rustc_attri`. + * checks/errors/rust-feature-gate.h: Likewise. + +2024-01-16 Owen Avery + + * parse/rust-parse-impl.h + (Parser::parse_pattern): Add. + (Parser::parse_pattern_no_alt): Rename. + * parse/rust-parse.h: + (Parser::parse_pattern): Add. + (Parser::parse_pattern_no_alt): Rename. + 2024-01-04 David Malcolm * lang.opt.urls: New file, autogenerated by diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ef27cf1aedf..9cb5a9dc3ef 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,1702 @@ +2024-01-16 Nathaniel Shead + + PR c++/113292 + * g++.dg/modules/pr113292_a.H: New test. + * g++.dg/modules/pr113292_b.C: New test. + * g++.dg/modules/pr113292_c.C: New test. + +2024-01-16 Marek Polacek + + PR c++/113340 + * g++.dg/cpp23/explicit-obj-diagnostics9.C: New test. + +2024-01-16 John David Anglin + + * gcc.dg/pr111409.c: Add hppa*-*-hpux* to targets which do + not support split DWARF. + +2024-01-16 waffl3x + + PR c++/113307 + * g++.dg/cpp23/explicit-obj-diagnostics3.C: Add test for + rejection of packs. + +2024-01-16 John David Anglin + + * gcc.dg/array-quals-1.c: Add .data.rel.ro.local to read only + sections. + +2024-01-16 John David Anglin + + * gcc.dg/atomic/stdatomic-flag.c: Remove xfail. + * gcc.dg/atomic/stdatomic-flag-2.c: Likewise. + +2024-01-16 John David Anglin + + PR tree-optimization/110794 + * g++.dg/pr99966.C: xfail scan-tree-dump-not throw on hppa*64*-*-*. + +2024-01-16 John David Anglin + + * gcc.dg/c23-tag-alias-2.c: Require target lto. + * gcc.dg/c23-tag-alias-3.c: Likewise. + * gcc.dg/gnu23-tag-alias-3.c: Likewise. + * gcc.dg/scantest-lto.c: Likewise. + +2024-01-16 John David Anglin + + * gcc.dg/cmp-mem-const-3.c: Skip on lp64 hppa*-*-*. + * gcc.dg/cmp-mem-const-4.c: Likewise. + * gcc.dg/cmp-mem-const-5.c: Likewise. + * gcc.dg/cmp-mem-const-6.c: Likewise. + +2024-01-16 John David Anglin + + PR tree-optimization/91624 + * gcc.dg/tree-ssa/sra-17.c: xfail all scan-tree-dump-times + checks on hppa*64*-*-*. + * gcc.dg/tree-ssa/sra-18.c: Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/tuple_float_index.rs: New test. + +2024-01-16 Raiki Tamura + + * rust/compile/v0-mangle2.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/invalid_variadics.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/invalid_label_name.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/lifetime_name_validation.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/pattern_variadic.rs: New test. + * rust/execute/torture/named_variadic.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/extern_c_named_variadic.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/parse_variadic_function.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/issue-2709.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/not_a_float_literal_tuple_index.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/issue-2665.rs: New test. + +2024-01-16 Jakub Dupak + + * rust/compile/tupple_struct_pattern_tuple.rs: New test. + +2024-01-16 Raiki Tamura + + * rust/compile/v0-mangle1.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/closure_in_closure.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/macro-issue2653.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/macro57.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/macro_rules_macro_rules.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/while_break_expr.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/range_from_expr_for_loop.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/parse_item_default_macro.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/parse_generic_path_expr.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/match_break.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/parse_pub_unit_type.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/parse_global_path_generic.rs: New test. + +2024-01-16 Jakub Dupak + + * rust/compile/issue-2645.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/wrong_lhs_assignment.rs: update error message + * rust/compile/issue-2391.rs: New test. + +2024-01-16 Muhammad Mahad + + * rust/compile/variadic.rs: Added new checks. + +2024-01-16 Owen Avery + + * rust/compile/assume.rs: New test. + +2024-01-16 Dave Evans + + * rust/compile/issue-2431.rs: New test. + +2024-01-16 Arthur Cohen + + * rust/compile/privacy6.rs: Uncomment commented out functions. + * rust/compile/privacy9.rs: Fix unused variables. + +2024-01-16 Arthur Cohen + + * rust/compile/privacy9.rs: New test. + +2024-01-16 Muhammad Mahad + + * rust/compile/cfg2.rs: Updated according to new message. + * rust/compile/issue-2139.rs: likewise. + * rust/compile/issue-2190-1.rs: likewise. + * rust/compile/method1.rs: likewise. + +2024-01-16 Philip Herron + + * rust/execute/torture/iter1.rs: New test. + +2024-01-16 Muhammad Mahad + + * rust/compile/generics7.rs: Added Errorcode hint. + * rust/compile/generics8.rs: Updated dejagnu comment. + * rust/compile/issue-925.rs: Added Errorcode hint. + +2024-01-16 Muhammad Mahad + + * rust/compile/issue-2029.rs: + Updated for dejagnu testcase. + +2024-01-16 Muhammad Mahad + + * rust/compile/privacy1.rs: Added errorcode. + * rust/compile/privacy3.rs: likewise. + * rust/compile/privacy4.rs: likewise. + * rust/compile/privacy5.rs: likewise. + +2024-01-16 Owen Avery + + * rust/compile/type-if.rs: New test. + +2024-01-16 Muhammad Mahad + + * rust/compile/let_alt.rs: Updated comment. + +2024-01-16 Philip Herron + + * rust/compile/iterators1.rs: this should be casting to the $ty + +2024-01-16 Philip Herron + + * rust/execute/torture/issue-2583.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/nested_macro_definition.rs: New test. + +2024-01-16 Muhammad Mahad + + * rust/compile/match4.rs: + Updated new error commment. + +2024-01-16 Muhammad Mahad + + * rust/compile/issue-1725-2.rs: + Updated dejagnu message. + +2024-01-16 Philip Herron + + * rust/compile/iterators1.rs: New test. + +2024-01-16 Muhammad Mahad + + * rust/compile/generics13.rs: + for dejagnu, + +2024-01-16 Muhammad Mahad + + * rust/compile/issue-2479.rs: Updated comment. + +2024-01-16 Muhammad Mahad + + * rust/compile/issue-1589.rs: Updated comment for dejagnu. + * rust/compile/trait-cycle.rs: New relevant test. + +2024-01-16 Muhammad Mahad + + * rust/compile/generics10.rs: for dejagnu. + +2024-01-16 Muhammad Mahad + + * rust/compile/generics6.rs: Updated dejagnu comment. + * rust/compile/generics7.rs: likewise. + * rust/compile/issue-925.rs: likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/issue-2514.rs: New test. + +2024-01-16 Muhammad Mahad + + * rust/compile/match5.rs: + Updated comment for dejagnu. + * rust/compile/pattern-struct.rs: New test for ICE. + +2024-01-16 Muhammad Mahad + + * rust/compile/inline_2.rs: Added new message. + +2024-01-16 Muhammad Mahad + + * rust/compile/auto_trait_invalid.rs: + Updated comment. + +2024-01-16 Muhammad Mahad + + * rust/compile/bad_inner_doc.rs: + Updated comment to pass testcase. + +2024-01-16 Muhammad Mahad + + * rust/compile/inline_2.rs: Added new case. + +2024-01-16 Muhammad Mahad + + * rust/compile/bad_as_bool_char.rs: + Updated comment to pass test case. + * rust/compile/cast1.rs: likewise. + * rust/compile/cast4.rs: likewise. + * rust/compile/cast5.rs: likewise. + * rust/compile/all-cast.rs: New test for all error codes. + +2024-01-16 Muhammad Mahad + + * rust/compile/attr_deprecated_2.rs: + Updated comment to pass the testcase. + +2024-01-16 Muhammad Mahad + + * rust/compile/abi-options1.rs: updated comment for testcase. + +2024-01-16 Muhammad Mahad + + * rust/compile/arrays2.rs: changed comment to pass + testcase. + +2024-01-16 Raiki Tamura + + * rust/compile/unicode_norm1.rs: New test. + +2024-01-16 Arthur Cohen + + * rust/compile/name_resolution10.rs: New test. + +2024-01-16 Arthur Cohen + + * rust/compile/name_resolution6.rs: New test. + * rust/compile/name_resolution7.rs: New test. + * rust/compile/name_resolution8.rs: New test. + * rust/compile/name_resolution9.rs: New test. + +2024-01-16 Muhammad Mahad + + * rust/compile/undeclared_label.rs: New test for E0426. + +2024-01-16 Muhammad Mahad + + * rust/compile/feature.rs: Added new unknown feature. + +2024-01-16 Muhammad Mahad + + * rust/compile/arrays1.rs: changed comment to pass testcase. + * rust/compile/bad_type1.rs: likewise. + * rust/compile/bad_type2.rs: likewise. + * rust/compile/const_generics_6.rs: likewise. + * rust/compile/deadcode_err1.rs: likewise. + * rust/compile/deadcode_err2.rs: likewise. + * rust/compile/func1.rs: likewise. + * rust/compile/func3.rs: likewise. + * rust/compile/func4.rs: likewise. + * rust/compile/func5.rs: likewise. + * rust/compile/generics1.rs: likewise. + * rust/compile/generics2.rs: likewise. + * rust/compile/generics3.rs: likewise. + * rust/compile/implicit_returns_err1.rs: likewise. + * rust/compile/implicit_returns_err2.rs: likewise. + * rust/compile/implicit_returns_err3.rs: likewise. + * rust/compile/implicit_returns_err4.rs: likewise. + * rust/compile/issue-1152.rs: likewise. + * rust/compile/issue-2477.rs: likewise. + * rust/compile/reference1.rs: likewise. + * rust/compile/stmt_with_block_err1.rs: likewise. + * rust/compile/traits1.rs: likewise. + * rust/compile/traits2.rs: likewise. + * rust/compile/tuple_mismatch.rs: likewise. + * rust/compile/tuple_struct3.rs: likewise. + * rust/compile/mismatched-types.rs: New test from rustc. + +2024-01-16 Marc Poulhiès + + * rust/compile/empty_file: New file. + * rust/compile/issue-2421_str.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2479.rs: New test. + +2024-01-16 Raiki Tamura + + * rust/compile/bad-crate-name.rs: Moved to... + * rust/compile/bad-crate-name1.rs: ...here. + * rust/compile/bad-crate-name2.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2477.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/bounds1.rs: Apply sized trait + * rust/compile/canonical_paths1.rs: likewise + * rust/compile/cast_generics.rs: likewise + * rust/compile/closure_no_type_anno.rs: likewise + * rust/compile/complex_qualified_path_in_expr.rs: likewise + * rust/compile/const-issue1440.rs: likewise + * rust/compile/const_generics_1.rs: likewise + * rust/compile/const_generics_8.rs: likewise + * rust/compile/derive_macro1.rs: likewise + * rust/compile/derive_macro3.rs: likewise + * rust/compile/derive_macro4.rs: likewise + * rust/compile/derive_macro6.rs: likewise + * rust/compile/expected_type_args2.rs: likewise + * rust/compile/expected_type_args3.rs: likewise + * rust/compile/generics1.rs: likewise + * rust/compile/generics11.rs: likewise + * rust/compile/generics12.rs: likewise + * rust/compile/generics2.rs: likewise + * rust/compile/generics3.rs: likewise + * rust/compile/generics4.rs: likewise + * rust/compile/generics6.rs: likewise + * rust/compile/generics7.rs: likewise + * rust/compile/generics8.rs: likewise + * rust/compile/if_let_expr.rs: likewise + * rust/compile/issue-1005.rs: likewise + * rust/compile/issue-1019.rs: likewise + * rust/compile/issue-1031.rs: likewise + * rust/compile/issue-1034.rs: likewise + * rust/compile/issue-1128.rs: likewise + * rust/compile/issue-1129-2.rs: likewise + * rust/compile/issue-1130.rs: likewise + * rust/compile/issue-1131.rs: likewise + * rust/compile/issue-1165.rs: likewise + * rust/compile/issue-1173.rs: likewise + * rust/compile/issue-1235.rs: likewise + * rust/compile/issue-1237.rs: likewise + * rust/compile/issue-1289.rs: likewise + * rust/compile/issue-1383.rs: likewise + * rust/compile/issue-1447.rs: likewise + * rust/compile/issue-1589.rs: likewise + * rust/compile/issue-1725-1.rs: likewise + * rust/compile/issue-1725-2.rs: likewise + * rust/compile/issue-1773.rs: likewise + * rust/compile/issue-1786.rs: likewise + * rust/compile/issue-1893.rs: likewise + * rust/compile/issue-1901.rs: likewise + * rust/compile/issue-1930.rs: likewise + * rust/compile/issue-1981.rs: likewise + * rust/compile/issue-2019-1.rs: likewise + * rust/compile/issue-2019-2.rs: likewise + * rust/compile/issue-2019-3.rs: likewise + * rust/compile/issue-2036.rs: likewise + * rust/compile/issue-2037.rs: likewise + * rust/compile/issue-2070.rs: likewise + * rust/compile/issue-2105.rs: likewise + * rust/compile/issue-2106.rs: likewise + * rust/compile/issue-2135.rs: likewise + * rust/compile/issue-2136-1.rs: likewise + * rust/compile/issue-2136-2.rs: likewise + * rust/compile/issue-2139.rs: likewise + * rust/compile/issue-2142.rs: likewise + * rust/compile/issue-2165.rs: likewise + * rust/compile/issue-2166.rs: likewise + * rust/compile/issue-2190-1.rs: likewise + * rust/compile/issue-2190-2.rs: likewise + * rust/compile/issue-2195.rs: likewise + * rust/compile/issue-2238.rs: likewise + * rust/compile/issue-2304.rs: likewise + * rust/compile/issue-850.rs: likewise + * rust/compile/issue-855.rs: likewise + * rust/compile/issue-925.rs: likewise + * rust/compile/macro-issue1400.rs: likewise + * rust/compile/macro20.rs: likewise + * rust/compile/macro23.rs: likewise + * rust/compile/macro40.rs: likewise + * rust/compile/macro54.rs: likewise + * rust/compile/name_resolution2.rs: likewise + * rust/compile/name_resolution4.rs: likewise + * rust/compile/nested_generic.rs: likewise + * rust/compile/parse_associated_type_as_generic_arg.rs: likewise + * rust/compile/parse_associated_type_as_generic_arg2.rs: likewise + * rust/compile/parse_associated_type_as_generic_arg3.rs: likewise + * rust/compile/parse_complex_generic_application.rs: likewise + * rust/compile/parse_complex_generic_application2.rs: likewise + * rust/compile/path_as_generic_arg.rs: likewise + * rust/compile/privacy4.rs: likewise + * rust/compile/privacy6.rs: likewise + * rust/compile/sizeof-stray-infer-var-bug.rs: likewise + * rust/compile/stmt_with_block_dot.rs: likewise + * rust/compile/torture/associated_types1.rs: likewise + * rust/compile/torture/forward_decl_5.rs: likewise + * rust/compile/torture/generics1.rs: likewise + * rust/compile/torture/generics10.rs: likewise + * rust/compile/torture/generics11.rs: likewise + * rust/compile/torture/generics12.rs: likewise + * rust/compile/torture/generics13.rs: likewise + * rust/compile/torture/generics14.rs: likewise + * rust/compile/torture/generics15.rs: likewise + * rust/compile/torture/generics16.rs: likewise + * rust/compile/torture/generics17.rs: likewise + * rust/compile/torture/generics18.rs: likewise + * rust/compile/torture/generics19.rs: likewise + * rust/compile/torture/generics2.rs: likewise + * rust/compile/torture/generics20.rs: likewise + * rust/compile/torture/generics21.rs: likewise + * rust/compile/torture/generics22.rs: likewise + * rust/compile/torture/generics23.rs: likewise + * rust/compile/torture/generics24.rs: likewise + * rust/compile/torture/generics25.rs: likewise + * rust/compile/torture/generics26.rs: likewise + * rust/compile/torture/generics27.rs: likewise + * rust/compile/torture/generics28.rs: likewise + * rust/compile/torture/generics29.rs: likewise + * rust/compile/torture/generics3.rs: likewise + * rust/compile/torture/generics30.rs: likewise + * rust/compile/torture/generics31.rs: likewise + * rust/compile/torture/generics32.rs: likewise + * rust/compile/torture/generics4.rs: likewise + * rust/compile/torture/generics5.rs: likewise + * rust/compile/torture/generics6.rs: likewise + * rust/compile/torture/generics7.rs: likewise + * rust/compile/torture/generics8.rs: likewise + * rust/compile/torture/generics9.rs: likewise + * rust/compile/torture/intrinsics-2.rs: likewise + * rust/compile/torture/intrinsics-6.rs: likewise + * rust/compile/torture/intrinsics-7.rs: likewise + * rust/compile/torture/intrinsics-8.rs: likewise + * rust/compile/torture/issue-1024.rs: likewise + * rust/compile/torture/issue-1075.rs: likewise + * rust/compile/torture/issue-1432.rs: likewise + * rust/compile/torture/issue-1555.rs: likewise + * rust/compile/torture/issue-368.rs: likewise + * rust/compile/torture/issue-808.rs: likewise + * rust/compile/torture/issue-862.rs: likewise + * rust/compile/torture/issue-893-2.rs: likewise + * rust/compile/torture/issue-893.rs: likewise + * rust/compile/torture/must_use2.rs: likewise + * rust/compile/torture/nested_fn2.rs: likewise + * rust/compile/torture/phantom_data.rs: likewise + * rust/compile/torture/range-lang-item1.rs: likewise + * rust/compile/torture/traits1.rs: likewise + * rust/compile/torture/traits11.rs: likewise + * rust/compile/torture/traits12.rs: likewise + * rust/compile/torture/traits13.rs: likewise + * rust/compile/torture/traits14.rs: likewise + * rust/compile/torture/traits15.rs: likewise + * rust/compile/torture/traits16.rs: likewise + * rust/compile/torture/traits17.rs: likewise + * rust/compile/torture/traits18.rs: likewise + * rust/compile/torture/traits19.rs: likewise + * rust/compile/torture/traits2.rs: likewise + * rust/compile/torture/traits3.rs: likewise + * rust/compile/torture/traits4.rs: likewise + * rust/compile/torture/traits5.rs: likewise + * rust/compile/torture/traits6.rs: likewise + * rust/compile/torture/traits7.rs: likewise + * rust/compile/torture/traits8.rs: likewise + * rust/compile/torture/traits9.rs: likewise + * rust/compile/torture/transmute-size-check-1.rs: likewise + * rust/compile/torture/transmute1.rs: likewise + * rust/compile/torture/uninit-intrinsic-1.rs: likewise + * rust/compile/torture/utf8_identifiers.rs: likewise + * rust/compile/traits1.rs: likewise + * rust/compile/traits10.rs: likewise + * rust/compile/traits11.rs: likewise + * rust/compile/traits12.rs: likewise + * rust/compile/traits2.rs: likewise + * rust/compile/traits3.rs: likewise + * rust/compile/traits4.rs: likewise + * rust/compile/traits5.rs: likewise + * rust/compile/traits6.rs: likewise + * rust/compile/traits7.rs: likewise + * rust/compile/traits8.rs: likewise + * rust/compile/traits9.rs: likewise + * rust/compile/type-bindings1.rs: likewise + * rust/compile/unconstrained_type_param.rs: likewise + * rust/compile/unsafe10.rs: likewise + * rust/execute/torture/closure1.rs: likewise + * rust/execute/torture/closure2.rs: likewise + * rust/execute/torture/closure3.rs: likewise + * rust/execute/torture/closure4.rs: likewise + * rust/execute/torture/coercion1.rs: likewise + * rust/execute/torture/coercion2.rs: likewise + * rust/execute/torture/coercion3.rs: likewise + * rust/execute/torture/copy_nonoverlapping1.rs: likewise + * rust/execute/torture/derive_macro1.rs: likewise + * rust/execute/torture/derive_macro3.rs: likewise + * rust/execute/torture/derive_macro4.rs: likewise + * rust/execute/torture/index1.rs: likewise + * rust/execute/torture/issue-1120.rs: likewise + * rust/execute/torture/issue-1133.rs: likewise + * rust/execute/torture/issue-1198.rs: likewise + * rust/execute/torture/issue-1232.rs: likewise + * rust/execute/torture/issue-1249.rs: likewise + * rust/execute/torture/issue-1436.rs: likewise + * rust/execute/torture/issue-1496.rs: likewise + * rust/execute/torture/issue-1720-2.rs: likewise + * rust/execute/torture/issue-1720.rs: likewise + * rust/execute/torture/issue-2052.rs: likewise + * rust/execute/torture/issue-2179.rs: likewise + * rust/execute/torture/issue-2180.rs: likewise + * rust/execute/torture/issue-2236.rs: likewise + * rust/execute/torture/issue-647.rs: likewise + * rust/execute/torture/issue-845.rs: likewise + * rust/execute/torture/issue-851.rs: likewise + * rust/execute/torture/issue-858.rs: likewise + * rust/execute/torture/macros23.rs: likewise + * rust/execute/torture/macros28.rs: likewise + * rust/execute/torture/method2.rs: likewise + * rust/execute/torture/method3.rs: likewise + * rust/execute/torture/method4.rs: likewise + * rust/execute/torture/operator_overload_1.rs: likewise + * rust/execute/torture/operator_overload_10.rs: likewise + * rust/execute/torture/operator_overload_11.rs: likewise + * rust/execute/torture/operator_overload_12.rs: likewise + * rust/execute/torture/operator_overload_2.rs: likewise + * rust/execute/torture/operator_overload_3.rs: likewise + * rust/execute/torture/operator_overload_4.rs: likewise + * rust/execute/torture/operator_overload_5.rs: likewise + * rust/execute/torture/operator_overload_6.rs: likewise + * rust/execute/torture/operator_overload_7.rs: likewise + * rust/execute/torture/operator_overload_8.rs: likewise + * rust/execute/torture/operator_overload_9.rs: likewise + * rust/execute/torture/prefetch_data.rs: likewise + * rust/execute/torture/ref-pattern2.rs: likewise + * rust/execute/torture/slice-magic.rs: likewise + * rust/execute/torture/slice-magic2.rs: likewise + * rust/execute/torture/slice1.rs: likewise + * rust/execute/torture/str-layout1.rs: likewise + * rust/execute/torture/trait1.rs: likewise + * rust/execute/torture/trait10.rs: likewise + * rust/execute/torture/trait11.rs: likewise + * rust/execute/torture/trait12.rs: likewise + * rust/execute/torture/trait13.rs: likewise + * rust/execute/torture/trait2.rs: likewise + * rust/execute/torture/trait3.rs: likewise + * rust/execute/torture/trait4.rs: likewise + * rust/execute/torture/trait5.rs: likewise + * rust/execute/torture/trait6.rs: likewise + * rust/execute/torture/trait7.rs: likewise + * rust/execute/torture/trait8.rs: likewise + * rust/execute/torture/trait9.rs: likewise + * rust/execute/torture/transmute1.rs: likewise + * rust/execute/torture/wrapping_op1.rs: likewise + * rust/execute/torture/wrapping_op2.rs: likewise + * rust/link/generic_function_0.rs: likewise + * rust/link/generic_function_1.rs: likewise + * rust/compile/issue-2375.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/non_member_const.rs: add missing error message + * rust/compile/issue-2478.rs: New test. + +2024-01-16 Muhammad Mahad + + * rust/compile/break2.rs: Modified file to pass test case. + * rust/compile/break_with_value_inside_loop.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/proc_macro_attribute_non_root_function.rs: New test. + * rust/compile/proc_macro_attribute_non_root_method.rs: New test. + * rust/compile/proc_macro_attribute_non_root_module.rs: New test. + * rust/compile/proc_macro_derive_non_root_function.rs: New test. + * rust/compile/proc_macro_derive_non_root_method.rs: New test. + * rust/compile/proc_macro_derive_non_root_module.rs: New test. + * rust/compile/proc_macro_non_root_function.rs: New test. + * rust/compile/proc_macro_non_root_method.rs: New test. + * rust/compile/proc_macro_non_root_module.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/proc_macro_pub_function.rs: New test. + * rust/compile/proc_macro_pub_module.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/proc_macro_attribute_crate_type.rs: Replace + dg-excess-errors with dg-error and fix the line so the test + can pass. + * rust/compile/proc_macro_crate_type.rs: Likewise. + * rust/compile/proc_macro_derive_crate_type.rs: Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/proc_macro_attribute_private.rs: New test. + * rust/compile/proc_macro_derive_private.rs: New test. + * rust/compile/proc_macro_private.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/proc_macro_derive_non_function.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/proc_macro_attribute_non_function.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/proc_macro_non_function.rs: New test. + +2024-01-16 Muhammad Mahad + + * rust/compile/abi-vardaic.rs: New test. + +2024-01-16 Muhammad Mahad + + * rust/compile/non_member_const.rs: New test. + +2024-01-16 Muhammad Mahad + + * rust/compile/break1.rs: Modified to pass test case. + * rust/compile/continue1.rs: likewise. + * rust/compile/break_continue_outside_loop.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/proc_macro_derive_malformed.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/proc_macro_attribute_crate_type.rs: New test. + * rust/compile/proc_macro_crate_type.rs: New test. + * rust/compile/proc_macro_derive_crate_type.rs: New test. + +2024-01-16 Muhammad Mahad + + * rust/compile/found_struct.rs: New test. + +2024-01-16 Muhammad Mahad + + * rust/compile/changed_intrinsics.rs: New test. + +2024-01-16 Muhammad Mahad + + * rust/compile/torture/intrinsics-3.rs: Updated comment to pass the test case. + +2024-01-16 Muhammad Mahad + + * rust/compile/bad_pub_enumitems.rs: changed comment to pass test cases. + * rust/compile/dup_fields.rs: likewise. + * rust/execute/same_field_name.rs: New test. + +2024-01-16 Muhammad Mahad + + * rust/compile/wrong_lhs_assignment.rs: New test. + +2024-01-16 Muhammad Mahad + + * rust/compile/func2.rs: updated comment to pass new test cases. + * rust/compile/tuple_struct2.rs: likewise. + * rust/compile/wrong_no_of_parameters.rs: New test. + +2024-01-16 Arthur Cohen + GuillaumeGomez + + * rust/compile/name_resolution1.rs: New test. + * rust/compile/name_resolution2.rs: New test. + * rust/compile/name_resolution3.rs: New test. + * rust/compile/name_resolution4.rs: New test. + * rust/compile/name_resolution5.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/link/trait_import_0.rs: Mark test as xfail. + +2024-01-16 Muhammad Mahad + + * rust/compile/break-rust2.rs: Updated comment to pass testcase. + * rust/compile/const_generics_3.rs: likewise. + * rust/compile/const_generics_4.rs: likewise. + * rust/compile/not_find_value_in_scope.rs: New test. + +2024-01-16 Muhammad Mahad + + * rust/compile/missing_constructor_fields.rs: New test. + +2024-01-16 Raiki Tamura + + * rust/compile/broken_utf8.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/macro-issue2273.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2105.rs: New test. + +2024-01-16 Arthur Cohen + + * rust/compile/rust_abi.rs: New test. + +2024-01-16 Raiki Tamura + + * rust/compile/bytecharstring.rs:add test for it + +2024-01-16 Owen Avery + + * rust/compile/macro56.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-1981.rs: Fix badly copied libcore code test + * rust/compile/issue-2330.rs: New test. + +2024-01-16 Raiki Tamura + + * rust/compile/torture/raw_identifiers.rs: New test. + * rust/compile/torture/utf8_identifiers.rs: New test. + +2024-01-16 Raiki Tamura + + * rust/compile/torture/utf8_whitespaces.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/macro-issue2268.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/macro-issue2264.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2304.rs: New test. + +2024-01-16 Matthew Jasper + + * rust/compile/macro54.rs: New test. + * rust/compile/macro55.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-1893.rs: fully compile the test case + +2024-01-16 Matthew Jasper + + * rust/compile/braced_macro_arm.rs: New test. + * rust/compile/braced_macro_statements1.rs: New test. + * rust/compile/braced_macro_statements2.rs: New test. + * rust/compile/braced_macro_statements3.rs: New test. + * rust/compile/issue-2225.rs: Update test. + * rust/compile/macro53.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/macro6.rs: Remove check for direct error. + * rust/compile/macro7.rs: Likewise. + * rust/compile/macro-issue2229.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2036.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2019-2.rs: New test. + * rust/compile/issue-2019-3.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2019-1.rs: New test. + +2024-01-16 Dave Evans + + * rust/compile/issue-1813.rs: New test. + +2024-01-16 TieWay59 + + * rust/compile/break1.rs: remove dg-error "failed to type resolve expression" + * rust/compile/break2.rs: Likewise + * rust/compile/cfg2.rs: Likewise + * rust/compile/continue1.rs: Likewise + * rust/compile/generics4.rs: Likewise + * rust/compile/generics6.rs: Likewise + * rust/compile/generics7.rs: Likewise + * rust/compile/issue-2029.rs: Likewise + * rust/compile/issue-2139.rs: Likewise + * rust/compile/issue-2190-1.rs: Likewise + * rust/compile/issue-925.rs: Likewise + * rust/compile/method1.rs: Likewise + * rust/compile/shadow1.rs: Likewise + * rust/compile/type-bindings1.rs: Likewise + * rust/compile/unary_negation.rs: Likewise + * rust/compile/unary_not.rs: Likewise + * rust/compile/unconstrained_type_param.rs: Likewise + * rust/compile/usize1.rs: Likewise + +2024-01-16 Philip Herron + + * rust/compile/traits2.rs: update error message + * rust/compile/traits3.rs: update error message + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/derive_empty.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/test_mod.rs: Moved to... + * rust/compile/issue-1089/test_mod.rs: ...here. + * rust/compile/mod_missing_middle.rs: Fix paths. + * rust/compile/missing_middle/both_path.rs: Moved to... + * rust/compile/mod_missing_middle/missing_middle/both_path.rs: ...here. + * rust/compile/missing_middle/explicit.not.rs: Moved to... + * rust/compile/mod_missing_middle/missing_middle/explicit.not.rs: ...here. + * rust/compile/missing_middle/other.rs: Moved to... + * rust/compile/mod_missing_middle/missing_middle/explicit.not/other.rs: ...here. + * rust/compile/missing_middle/inner_path.rs: Moved to... + * rust/compile/mod_missing_middle/missing_middle/inner_path.rs: ...here. + * rust/compile/missing_middle/outer_path.rs: Moved to... + * rust/compile/mod_missing_middle/missing_middle/outer_path.rs: ...here. + * rust/compile/missing_middle/sub/mod.rs: Moved to... + * rust/compile/mod_missing_middle/missing_middle/sub/mod.rs: ...here. + * rust/compile/torture/modules/mod.rs: Moved to... + * rust/compile/torture/extern_mod1/modules/mod.rs: ...here. + * rust/execute/torture/modules/mod.rs: Moved to... + * rust/execute/torture/extern_mod4/modules/mod.rs: ...here. + +2024-01-16 Owen Avery + + * rust/compile/derive_macro8.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2165.rs: New test. + * rust/compile/issue-2166.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/struct-expr-parse.rs: New test. + +2024-01-16 Arthur Cohen + + * rust/compile/derive_macro7.rs: New test. + +2024-01-16 Arthur Cohen + + * rust/compile/derive_macro4.rs: New test. + * rust/compile/derive_macro6.rs: New test. + +2024-01-16 Arthur Cohen + + * rust/execute/torture/derive_macro4.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/macro-delim.rs: New test. + +2024-01-16 Arthur Cohen + + * rust/compile/macro43.rs: Fix test with new derive macros. + * rust/compile/derive_macro1.rs: New test. + * rust/compile/derive_macro3.rs: New test. + * rust/execute/torture/derive_macro1.rs: New test. + * rust/execute/torture/derive_macro3.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/cfg6.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2195.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2238.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/issue-2225.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/issue-2207.rs: New test. + +2024-01-16 Philip Herron + + * rust/execute/torture/issue-2236.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2190-1.rs: New test. + * rust/compile/issue-2190-2.rs: New test. + +2024-01-16 Matthew Jasper + + * rust/compile/nested_macro_use3.rs: New test. + +2024-01-16 Matthew Jasper + + * rust/compile/cfg-attr.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/doc_macro.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/macro-issue2194.rs: New test. + +2024-01-16 Matthew Jasper + + * rust/compile/for_expr.rs: New test. + * rust/compile/issue-407-2.rs: Update compiler output. + * rust/compile/issue-407.rs: Update compiler output. + * rust/compile/issue-867.rs: Update compiler output. + * rust/compile/issue-2189.rs: New test. + * rust/compile/macro_call_statement.rs: New test. + * rust/compile/stmt_with_block_dot.rs: New test. + * rust/compile/torture/loop8.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/macro-issue2192.rs: New test. + +2024-01-16 Arthur Cohen + + * rust/compile/const-issue1440.rs: Remove LE conditional compilation. + * rust/compile/torture/issue-1432.rs: Likewise. + +2024-01-16 Philip Herron + + * rust/execute/torture/coercion3.rs: New test. + +2024-01-16 Philip Herron + + * rust/execute/torture/issue-2179.rs: New test. + +2024-01-16 Philip Herron + + * rust/execute/torture/issue-2180.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2188.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/parse_specialization.rs: + Add "default unsafe" coverage. + +2024-01-16 Philip Herron + + * rust/compile/issue-2178.rs: New test. + +2024-01-16 Arthur Cohen + + * rust/compile/macro_use1.rs: New test. + * rust/execute/torture/macro_use1.rs: New test. + * rust/compile/nested_macro_use1.rs: New test. + * rust/compile/nested_macro_use2.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/issue-1446.rs: New test. + +2024-01-16 Owen Avery + + * rust/execute/torture/cfg-tail.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/macro52.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/issue-2125.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2135.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2106.rs: New test. + * rust/compile/issue-1524.rs: regression (placeholder generic) + +2024-01-16 Philip Herron + + * rust/compile/issue-2142.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2136-1.rs: New test. + * rust/compile/issue-2136-2.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2139.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-1893.rs: regression + * rust/compile/traits12.rs: rustc uses a custom error message here + * rust/compile/unconstrained_type_param.rs: extra error message + +2024-01-16 Arthur Cohen + + * rust/execute/torture/issue-1852-1.rs: New test. + * rust/execute/torture/issue-1852.rs: New test. + +2024-01-16 Arthur Cohen + + * rust/compile/issue-1807.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/let_alt.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-852.rs: New test. + +2024-01-16 Sergey Bugaev + + * lib/prune.exp (prune_ices): + Also prune "You have broken GCC Rust. This is a feature." + * rust/compile/break-rust1.rs: New test + * rust/compile/break-rust2.rs: New test + * rust/compile/break-rust3.rs: New test + +2024-01-16 Owen Avery + + * rust/compile/if_let_expr.rs: Increase test coverage. + +2024-01-16 Sebastian Kirmayer + + * rust/compile/macro-issue2092.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/macro51.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2070.rs: New test. + +2024-01-16 Philip Herron + + * rust/execute/torture/issue-2080.rs: New test. + +2024-01-16 Emanuele Micheletti + + * rust/compile/cast5.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/const_generics_5.rs: update test case + * rust/compile/issue-2043.rs: New test. + * rust/compile/issue-2039.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2042.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-925.rs: New test. + +2024-01-16 Philip Herron + + * rust/bounds1.rs: Moved to... + * rust/compile/bounds1.rs: ...here. + +2024-01-16 Philip Herron + + * rust/compile/issue-2029.rs: New test. + +2024-01-16 Philip Herron + + * rust/execute/torture/issue-2052.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/array4.rs: New test. + * rust/execute/torture/arrays.rs: New test. + +2024-01-16 Arthur Cohen + + * rust/compile/privacy8.rs: New test. + +2024-01-16 emanuele-em + + * rust/compile/cast4.rs: New test. + +2024-01-16 Arthur Cohen + + * rust/compile/macro49.rs: New test. + * rust/compile/macro50.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-2037.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-1893.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-850.rs: New test. + * rust/compile/issue-855.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-1981.rs: New test. + +2024-01-16 Mahmoud Mohamed + + * rust/compile/torture/alt_patterns1.rs: New test. + +2024-01-16 Mahmoud Mohamed + + * rust/compile/multiple_bindings2.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/sizeof-stray-infer-var-bug.rs: New test. + +2024-01-16 Tage Johansson + + * rust/compile/macro47.rs: Test that :vis can be followed by some keywords + * rust/compile/macro48.rs: Test that :vis cannot be followed by the keyword priv + +2024-01-16 Mahmoud Mohamed + + * rust/compile/multiple_bindings1.rs: New test. + +2024-01-16 Mahmoud Mohamed + + * rust/execute/torture/closure4.rs: New test. + * rust/execute/torture/ref-pattern2.rs: New test. + +2024-01-16 Mahmoud Mohamed + + * rust/compile/ref_pattern_fn_param.rs: Moved to... + * rust/compile/ref_pattern_fn_param1.rs: ...here. + * rust/compile/ref_pattern_fn_param2.rs: New test. + * rust/execute/torture/ref-pattern1.rs: New test. + +2024-01-16 goar5670 + + * rust/compile/ref_pattern_fn_param.rs: New test. + +2024-01-16 Owen Avery + + * rust/compile/lang-impl.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/stringify.rs: Add a basic test with some text. + * rust/execute/torture/builtin_macro_stringify.rs: Verify the + text is left as is without any other macro expansion. + +2024-01-16 Nikos Alexandris + + * rust/compile/tuple_mismatch.rs: New test. + +2024-01-16 goar5670 + + * rust/compile/complex_qualified_path_in_expr.rs : New test. + +2024-01-16 Owen Avery + + * rust/compile/closure_no_type_anno.rs: Extend test. + +2024-01-16 Philip Herron + + * rust/compile/issue-1524.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/parse_associated_type_as_generic_arg3.rs: remove -fsyntax-only + +2024-01-16 Philip Herron + + * rust/compile/parse_associated_type_as_generic_arg.rs: it now works without -fsyntax-only + * rust/compile/parse_associated_type_as_generic_arg2.rs: likewise + +2024-01-16 goar5670 + + * rust/compile/closure_no_type_anno.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/while_let_expr.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/torture/uninit-intrinsic-1.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/zero_sized_slice.rs: New test. + +2024-01-16 Nikos Alexandris + + * rust/compile/builtin_macro_include_bytes_location_info.rs: New test. + * rust/compile/builtin_macro_include_str_location_info.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/slice_rest_pattern.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/if_let_expr.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/torture/intrinsics-8.rs: New test. + +2024-01-16 mxlol233 + + * rust/compile/feature_extern_types.rs:New file. + +2024-01-16 bl7awy + + * rust/compile/cast_generics.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-1901.rs: New test. + +2024-01-16 Philip Herron + + * rust/compile/issue-1930.rs: New test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/extern_type_item_missing_semi.rs: New failing + test. + +2024-01-16 Pierre-Emmanuel Patry + + * rust/compile/extern_type_item.rs: New test. + +2024-01-16 omkar-mohanty + + * rust/compile/builtin_macro_eager3.rs: New test. + +2024-01-16 Arthur Cohen + + * rust/compile/parse_invalid_specialization.rs: New test. + * rust/compile/parse_specialization.rs: New test. + * rust/compile/default_not_a_kw.rs: New test. + +2024-01-16 Arthur Cohen + + * rust/compile/expand_macro_qual_path_in_type.rs: New test. + +2024-01-16 Arthur Cohen + + * rust/compile/auto_trait_invalid.rs: New test. + * rust/compile/auto_trait_valid.rs: New test. + +2024-01-16 Arthur Cohen + + * rust/compile/parse_associated_type_as_generic_arg3.rs: New test. + +2024-01-16 Arthur Cohen + + * rust/compile/parse_associated_type_as_generic_arg.rs: New test. + * rust/compile/parse_associated_type_as_generic_arg2.rs: New test. + * rust/compile/path_as_generic_arg.rs: New test. + * rust/compile/nested_generic.rs: New test. + +2024-01-16 mxlol233 + + * rust/compile/builtin_macro_compile_error.rs: Add + crate feature `rustc_attri`. + * rust/compile/builtin_macro_concat.rs: Likewise. + * rust/compile/builtin_macro_eager1.rs: Likewise. + * rust/compile/builtin_macro_eager2.rs: Likewise. + * rust/compile/builtin_macro_env.rs: Likewise. + * rust/compile/builtin_macro_include_bytes.rs: + Likewise. + * rust/compile/builtin_macro_include_str.rs: + Likewise. + * rust/compile/builtin_macro_not_found.rs: + Likewise. + * rust/compile/builtin_macro_recurse2.rs: + Likewise. + * rust/compile/feature_rust_attri0.rs:New file. + * rust/compile/feature_rust_attri1.rs:New file. + * rust/compile/include_empty.rs:Add crate feature + `rustc_attri`. + * rust/compile/issue-1830_bytes.rs:Likewise. + * rust/compile/issue-1830_str.rs:Likewise. + * rust/compile/macro42.rs:Likewise. + * rust/execute/torture/builtin_macro_cfg.rs: + Likewise. + * rust/execute/torture/builtin_macro_concat.rs: + Likewise. + * rust/execute/torture/builtin_macro_env.rs: + Likewise. + * rust/execute/torture/builtin_macro_include_bytes.rs: + Likewise. + * rust/execute/torture/builtin_macro_include_str.rs: + Likewise. + * rust/execute/torture/builtin_macro_line.rs: + Likewise. + * rust/execute/torture/builtin_macros1.rs: + Likewise. + * rust/execute/torture/builtin_macros3.rs: + Likewise. + * rust/execute/torture/macros29.rs:Likewise. + * rust/execute/torture/macros30.rs:Likewise. + * rust/execute/torture/macros31.rs:Likewise. + +2024-01-16 Wilco Dijkstra + + PR target/112573 + * gcc.target/aarch64/pr112573.c: Add new test. + +2024-01-16 Owen Avery + + * rust/compile/pattern-or.rs: New test. + +2024-01-16 Daniel Cederman + + * gcc.dg/lto/pr88077_0.c: Change type to match alignment for SPARC + +2024-01-16 Daniel Cederman + + * gcc.dg/ifcvt-4.c: Skip for SPARC V8 + +2024-01-16 Jakub Jelinek + + PR tree-optimization/113372 + PR middle-end/90348 + PR middle-end/110115 + PR middle-end/111422 + * gcc.dg/torture/bitint-49.c: New test. + * gcc.c-torture/execute/pr90348.c: New test. + * gcc.c-torture/execute/pr110115.c: New test. + * gcc.c-torture/execute/pr111422.c: New test. + +2024-01-16 Feng Xue + + * gcc.target/aarch64/bb-slp-pr113091.c: New test. + +2024-01-16 Juzhe-Zhong + + PR target/113404 + * gcc.target/riscv/rvv/base/big_endian-1.c: New test. + * gcc.target/riscv/rvv/base/big_endian-2.c: New test. + +2024-01-16 Kewen Lin + + PR testsuite/109705 + * lib/target-supports.exp (check_effective_target_vect_long_mult): + Fix powerpc*-*-* checks. + +2024-01-16 Yanzhang Wang + + * gcc.target/riscv/rvv/base/abi-call-args-1-run.c: Delete the + -Wno-psabi. + * gcc.target/riscv/rvv/base/abi-call-args-1.c: Ditto. + * gcc.target/riscv/rvv/base/abi-call-args-2-run.c: Ditto. + * gcc.target/riscv/rvv/base/abi-call-args-2.c: Ditto. + * gcc.target/riscv/rvv/base/abi-call-args-3-run.c: Ditto. + * gcc.target/riscv/rvv/base/abi-call-args-3.c: Ditto. + * gcc.target/riscv/rvv/base/abi-call-args-4-run.c: Ditto. + * gcc.target/riscv/rvv/base/abi-call-args-4.c: Ditto. + * gcc.target/riscv/rvv/base/abi-call-error-1.c: Ditto. + * gcc.target/riscv/rvv/base/abi-call-return-run.c: Ditto. + * gcc.target/riscv/rvv/base/abi-call-return.c: Ditto. + * gcc.target/riscv/rvv/base/abi-call-variant_cc.c: Ditto. + * gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-1.c: Ditto. + * gcc.target/riscv/rvv/base/abi-callee-saved-1-fixed-2.c: Ditto. + * gcc.target/riscv/rvv/base/abi-callee-saved-1-save-restore.c: Ditto. + * gcc.target/riscv/rvv/base/abi-callee-saved-1-zcmp.c: Ditto. + * gcc.target/riscv/rvv/base/abi-callee-saved-1.c: Ditto. + * gcc.target/riscv/rvv/base/abi-callee-saved-2-save-restore.c: Ditto. + * gcc.target/riscv/rvv/base/abi-callee-saved-2-zcmp.c: Ditto. + * gcc.target/riscv/rvv/base/abi-callee-saved-2.c: Ditto. + * gcc.target/riscv/rvv/base/fixed-point-vxrm-error.c: Ditto. + * gcc.target/riscv/rvv/base/fixed-point-vxrm.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-cvt-f.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-cvt-x.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-cvt-xu.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-1.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-10.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-11.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-12.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-13.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-14.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-15.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-16.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-17.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-18.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-19.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-2.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-20.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-21.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-22.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-23.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-24.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-25.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-26.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-27.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-28.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-29.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-3.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-30.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-31.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-32.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-33.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-34.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-35.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-36.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-37.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-38.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-39.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-4.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-40.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-41.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-42.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-43.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-44.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-45.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-46.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-47.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-48.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-49.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-5.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-50.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-51.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-52.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-53.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-54.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-55.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-56.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-57.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-58.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-59.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-6.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-60.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-61.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-62.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-63.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-64.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-65.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-66.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-67.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-68.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-69.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-7.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-70.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-71.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-72.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-73.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-74.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-75.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-76.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-77.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-8.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-dynamic-frm-9.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-autovec-1.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-autovec-2.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-autovec-3.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-autovec-4.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-error.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-insert-1.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-insert-10.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-insert-2.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-insert-3.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-insert-4.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-insert-5.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-insert-7.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-insert-8.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-insert-9.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-run-1.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-run-2.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-run-3.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-run-4.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm-run-5.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-frm.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-fwmacc.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-macc.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-madd.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-msac.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-msub.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-ncvt-f.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-ncvt-x.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-ncvt-xu.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-nmacc.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-nmadd.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-nmsac.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-nmsub.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-rec7.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-redosum.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-redusum.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-single-div.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-single-mul.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-single-rdiv.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-single-rsub.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-single-sub.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-sqrt.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-wcvt-x.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-wcvt-xu.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-widening-add.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-widening-mul.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-widening-sub.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-wmsac.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-wnmacc.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-wnmsac.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-wredosum.c: Ditto. + * gcc.target/riscv/rvv/base/float-point-wredusum.c: Ditto. + * gcc.target/riscv/rvv/base/intrisinc-vrgatherei16.c: Ditto. + * gcc.target/riscv/rvv/base/no-honor-frm-1.c: Ditto. + * gcc.target/riscv/rvv/base/overloaded_rv32_vadd.c: Ditto. + * gcc.target/riscv/rvv/base/overloaded_rv32_vfadd.c: Ditto. + * gcc.target/riscv/rvv/base/overloaded_rv32_vget_vset.c: Ditto. + * gcc.target/riscv/rvv/base/overloaded_rv32_vloxseg2ei16.c: Ditto. + * gcc.target/riscv/rvv/base/overloaded_rv32_vmv.c: Ditto. + * gcc.target/riscv/rvv/base/overloaded_rv32_vreinterpret.c: Ditto. + * gcc.target/riscv/rvv/base/overloaded_rv64_vadd.c: Ditto. + * gcc.target/riscv/rvv/base/overloaded_rv64_vfadd.c: Ditto. + * gcc.target/riscv/rvv/base/overloaded_rv64_vget_vset.c: Ditto. + * gcc.target/riscv/rvv/base/overloaded_rv64_vloxseg2ei16.c: Ditto. + * gcc.target/riscv/rvv/base/overloaded_rv64_vmv.c: Ditto. + * gcc.target/riscv/rvv/base/overloaded_rv64_vreinterpret.c: Ditto. + * gcc.target/riscv/rvv/base/pr110119-1.c: Ditto. + * gcc.target/riscv/rvv/base/pr110119-2.c: Ditto. + * gcc.target/riscv/rvv/base/pr110265-1.c: Ditto. + * gcc.target/riscv/rvv/base/pr110265-2.c: Ditto. + * gcc.target/riscv/rvv/base/pr110265-3.c: Ditto. + * gcc.target/riscv/rvv/base/pr110277-1.c: Ditto. + * gcc.target/riscv/rvv/base/pr110277-2.c: Ditto. + * gcc.target/riscv/rvv/base/pr110299-1.c: Ditto. + * gcc.target/riscv/rvv/base/pr110299-2.c: Ditto. + * gcc.target/riscv/rvv/base/pr110299-3.c: Ditto. + * gcc.target/riscv/rvv/base/pr110299-4.c: Ditto. + * gcc.target/riscv/rvv/base/pr111720-0.c: Ditto. + * gcc.target/riscv/rvv/base/pr111720-1.c: Ditto. + * gcc.target/riscv/rvv/base/pr111720-10.c: Ditto. + * gcc.target/riscv/rvv/base/pr111720-2.c: Ditto. + * gcc.target/riscv/rvv/base/pr111720-3.c: Ditto. + * gcc.target/riscv/rvv/base/pr111720-4.c: Ditto. + * gcc.target/riscv/rvv/base/pr111720-5.c: Ditto. + * gcc.target/riscv/rvv/base/pr111720-6.c: Ditto. + * gcc.target/riscv/rvv/base/pr111720-7.c: Ditto. + * gcc.target/riscv/rvv/base/pr111720-8.c: Ditto. + * gcc.target/riscv/rvv/base/pr111720-9.c: Ditto. + * gcc.target/riscv/rvv/base/pr111935.c: Ditto. + * gcc.target/riscv/rvv/base/scalar-move-merged-run-1.c: Ditto. + * gcc.target/riscv/rvv/base/simplify-vdiv.c: Ditto. + * gcc.target/riscv/rvv/base/simplify-vrsub.c: Ditto. + * gcc.target/riscv/rvv/base/tuple-intrinsic.c: Ditto. + * gcc.target/riscv/rvv/base/tuple_vundefined.c: Ditto. + * gcc.target/riscv/rvv/base/vcreate.c: Ditto. + * gcc.target/riscv/rvv/base/vlmul_ext-2.c: Ditto. + * gcc.target/riscv/rvv/base/vslide1down-1.c: Ditto. + * gcc.target/riscv/rvv/base/vslide1down-2.c: Ditto. + * gcc.target/riscv/rvv/base/vslide1down-3.c: Ditto. + * gcc.target/riscv/rvv/base/vslide1up-1.c: Ditto. + * gcc.target/riscv/rvv/base/vslide1up-2.c: Ditto. + * gcc.target/riscv/rvv/base/vslide1up-3.c: Ditto. + * gcc.target/riscv/rvv/base/zvbb-intrinsic.c: Ditto. + * gcc.target/riscv/rvv/base/zvbb_vandn_vx_constraint.c: Ditto. + * gcc.target/riscv/rvv/base/zvbc-intrinsic.c: Ditto. + * gcc.target/riscv/rvv/base/zvbc_vx_constraint-1.c: Ditto. + * gcc.target/riscv/rvv/base/zvbc_vx_constraint-2.c: Ditto. + * gcc.target/riscv/rvv/base/zvfhmin-intrinsic.c: Ditto. + * gcc.target/riscv/rvv/base/zvkg-intrinsic.c: Ditto. + * gcc.target/riscv/rvv/base/zvkned-intrinsic.c: Ditto. + * gcc.target/riscv/rvv/base/zvknha-intrinsic.c: Ditto. + * gcc.target/riscv/rvv/base/zvknhb-intrinsic.c: Ditto. + * gcc.target/riscv/rvv/base/zvksed-intrinsic.c: Ditto. + * gcc.target/riscv/rvv/base/zvksh-intrinsic.c: Ditto. + +2024-01-16 Yanzhang Wang + + * gcc.target/riscv/rvv/base/binop_vx_constraint-120.c: Delete the -Wno-psabi. + * gcc.target/riscv/rvv/base/integer_compare_insn_shortcut.c: Ditto. + * gcc.target/riscv/rvv/base/mask_insn_shortcut.c: Ditto. + * gcc.target/riscv/rvv/base/misc_vreinterpret_vbool_vint.c: Ditto. + * gcc.target/riscv/rvv/base/pr110109-2.c: Ditto. + * gcc.target/riscv/rvv/base/scalar_move-9.c: Ditto. + * gcc.target/riscv/rvv/base/spill-10.c: Ditto. + * gcc.target/riscv/rvv/base/spill-11.c: Ditto. + * gcc.target/riscv/rvv/base/spill-9.c: Ditto. + * gcc.target/riscv/rvv/base/vlmul_ext-1.c: Ditto. + * gcc.target/riscv/rvv/base/zero_base_load_store_optimization.c: Ditto. + * gcc.target/riscv/rvv/base/zvfh-intrinsic.c: Ditto. + * gcc.target/riscv/rvv/base/zvfh-over-zvfhmin.c: Ditto. + * gcc.target/riscv/rvv/vsetvl/vsetvl-1.c: Ditto. + * gcc.target/riscv/rvv/base/vector-abi-1.c: Removed. + * gcc.target/riscv/rvv/base/vector-abi-2.c: Removed. + * gcc.target/riscv/rvv/base/vector-abi-3.c: Removed. + * gcc.target/riscv/rvv/base/vector-abi-4.c: Removed. + * gcc.target/riscv/rvv/base/vector-abi-5.c: Removed. + * gcc.target/riscv/rvv/base/vector-abi-6.c: Removed. + * gcc.target/riscv/rvv/base/vector-abi-7.c: Removed. + * gcc.target/riscv/rvv/base/vector-abi-8.c: Removed. + 2024-01-16 David Malcolm PR analyzer/106229 diff --git a/libgrust/ChangeLog b/libgrust/ChangeLog index fa9e2104031..06974682ae7 100644 --- a/libgrust/ChangeLog +++ b/libgrust/ChangeLog @@ -1,3 +1,679 @@ +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro_internal/proc_macro.h (enum ProcmacroTag): Add + explicit value for proc macro tag enum. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/bridge.rs: Add license text. + * libproc_macro/bridge/ffistring.rs: Likewise. + * libproc_macro/bridge/group.rs: Likewise. + * libproc_macro/bridge/ident.rs: Likewise. + * libproc_macro/bridge/literal.rs: Likewise. + * libproc_macro/bridge/punct.rs: Likewise. + * libproc_macro/bridge/span.rs: Likewise. + * libproc_macro/bridge/token_stream.rs: Likewise. + * libproc_macro/group.rs: Likewise. + * libproc_macro/ident.rs: Likewise. + * libproc_macro/lib.rs: Likewise. + * libproc_macro/literal.rs: Likewise. + * libproc_macro/punct.rs: Likewise. + * libproc_macro/span.rs: Likewise. + * libproc_macro/token_stream.rs: Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro_internal/rust/bridge.rs: Moved to... + * libproc_macro/bridge.rs: ...here. + * libproc_macro_internal/rust/bridge/ffistring.rs: Moved to... + * libproc_macro/bridge/ffistring.rs: ...here. + * libproc_macro_internal/rust/bridge/group.rs: Moved to... + * libproc_macro/bridge/group.rs: ...here. + * libproc_macro_internal/rust/bridge/ident.rs: Moved to... + * libproc_macro/bridge/ident.rs: ...here. + * libproc_macro_internal/rust/bridge/literal.rs: Moved to... + * libproc_macro/bridge/literal.rs: ...here. + * libproc_macro_internal/rust/bridge/punct.rs: Moved to... + * libproc_macro/bridge/punct.rs: ...here. + * libproc_macro_internal/rust/bridge/span.rs: Moved to... + * libproc_macro/bridge/span.rs: ...here. + * libproc_macro_internal/rust/bridge/token_stream.rs: Moved to... + * libproc_macro/bridge/token_stream.rs: ...here. + * libproc_macro_internal/rust/group.rs: Moved to... + * libproc_macro/group.rs: ...here. + * libproc_macro_internal/rust/ident.rs: Moved to... + * libproc_macro/ident.rs: ...here. + * libproc_macro_internal/rust/lib.rs: Moved to... + * libproc_macro/lib.rs: ...here. + * libproc_macro_internal/rust/literal.rs: Moved to... + * libproc_macro/literal.rs: ...here. + * libproc_macro_internal/rust/punct.rs: Moved to... + * libproc_macro/punct.rs: ...here. + * libproc_macro_internal/rust/span.rs: Moved to... + * libproc_macro/span.rs: ...here. + * libproc_macro_internal/rust/token_stream.rs: Moved to... + * libproc_macro/token_stream.rs: ...here. + +2024-01-16 Pierre-Emmanuel Patry + + * Makefile.am: Change library name. + * Makefile.in: Likewise. + * configure.ac: Likewise. + * configure: Regenerate. + * libproc_macro/Makefile.am: Moved to... + * libproc_macro_internal/Makefile.am: ...here. + * libproc_macro/Makefile.in: Moved to... + * libproc_macro_internal/Makefile.in: ...here. + * libproc_macro/bridge.h: Moved to... + * libproc_macro_internal/bridge.h: ...here. + * libproc_macro/ffistring.cc: Moved to... + * libproc_macro_internal/ffistring.cc: ...here. + * libproc_macro/ffistring.h: Moved to... + * libproc_macro_internal/ffistring.h: ...here. + * libproc_macro/group.cc: Moved to... + * libproc_macro_internal/group.cc: ...here. + * libproc_macro/group.h: Moved to... + * libproc_macro_internal/group.h: ...here. + * libproc_macro/ident.cc: Moved to... + * libproc_macro_internal/ident.cc: ...here. + * libproc_macro/ident.h: Moved to... + * libproc_macro_internal/ident.h: ...here. + * libproc_macro/literal.cc: Moved to... + * libproc_macro_internal/literal.cc: ...here. + * libproc_macro/literal.h: Moved to... + * libproc_macro_internal/literal.h: ...here. + * libproc_macro/proc_macro.cc: Moved to... + * libproc_macro_internal/proc_macro.cc: ...here. + * libproc_macro/proc_macro.h: Moved to... + * libproc_macro_internal/proc_macro.h: ...here. + * libproc_macro/punct.cc: Moved to... + * libproc_macro_internal/punct.cc: ...here. + * libproc_macro/punct.h: Moved to... + * libproc_macro_internal/punct.h: ...here. + * libproc_macro/registration.h: Moved to... + * libproc_macro_internal/registration.h: ...here. + * libproc_macro/rust/bridge.rs: Moved to... + * libproc_macro_internal/rust/bridge.rs: ...here. + * libproc_macro/rust/bridge/ffistring.rs: Moved to... + * libproc_macro_internal/rust/bridge/ffistring.rs: ...here. + * libproc_macro/rust/bridge/group.rs: Moved to... + * libproc_macro_internal/rust/bridge/group.rs: ...here. + * libproc_macro/rust/bridge/ident.rs: Moved to... + * libproc_macro_internal/rust/bridge/ident.rs: ...here. + * libproc_macro/rust/bridge/literal.rs: Moved to... + * libproc_macro_internal/rust/bridge/literal.rs: ...here. + * libproc_macro/rust/bridge/punct.rs: Moved to... + * libproc_macro_internal/rust/bridge/punct.rs: ...here. + * libproc_macro/rust/bridge/span.rs: Moved to... + * libproc_macro_internal/rust/bridge/span.rs: ...here. + * libproc_macro/rust/bridge/token_stream.rs: Moved to... + * libproc_macro_internal/rust/bridge/token_stream.rs: ...here. + * libproc_macro/rust/group.rs: Moved to... + * libproc_macro_internal/rust/group.rs: ...here. + * libproc_macro/rust/ident.rs: Moved to... + * libproc_macro_internal/rust/ident.rs: ...here. + * libproc_macro/rust/lib.rs: Moved to... + * libproc_macro_internal/rust/lib.rs: ...here. + * libproc_macro/rust/literal.rs: Moved to... + * libproc_macro_internal/rust/literal.rs: ...here. + * libproc_macro/rust/punct.rs: Moved to... + * libproc_macro_internal/rust/punct.rs: ...here. + * libproc_macro/rust/span.rs: Moved to... + * libproc_macro_internal/rust/span.rs: ...here. + * libproc_macro/rust/token_stream.rs: Moved to... + * libproc_macro_internal/rust/token_stream.rs: ...here. + * libproc_macro/span.cc: Moved to... + * libproc_macro_internal/span.cc: ...here. + * libproc_macro/span.h: Moved to... + * libproc_macro_internal/span.h: ...here. + * libproc_macro/tokenstream.cc: Moved to... + * libproc_macro_internal/tokenstream.cc: ...here. + * libproc_macro/tokenstream.h: Moved to... + * libproc_macro_internal/tokenstream.h: ...here. + * libproc_macro/tokentree.cc: Moved to... + * libproc_macro_internal/tokentree.cc: ...here. + * libproc_macro/tokentree.h: Moved to... + * libproc_macro_internal/tokentree.h: ...here. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/literal.cc (Literal__from_string): Add + implementation with call to constructor. + (Literal::make_literal): Add new constructor which calls the + callback. + * libproc_macro/literal.h: Add new constructor's + prototype. + * libproc_macro/proc_macro.cc (bridge_is_available): + Change symbol name to match convention. + * libproc_macro/registration.h: Add lit_from_str + symbol. + * libproc_macro/tokenstream.cc (TokenStream::make_tokenstream): + Change symbol name to disambiguate with literal from string. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/proc_macro.cc: Remove type alias. + * libproc_macro/registration.h: Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/proc_macro.h (proc_macro_register_from_str): + Remove rogue function prototype. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/proc_macro.cc (not_available): Remove + function. + * libproc_macro/proc_macro.h (not_available): Remove + function prototype. + * libproc_macro/registration.h: Change symbol type. + * libproc_macro/bridge.h: New file. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/proc_macro.cc (bridge_is_available): + Add bridge function. + * libproc_macro/proc_macro.h (bridge_is_available): + Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/proc_macro.cc (not_available): Add a + function to express bridge unavailability. + * libproc_macro/proc_macro.h (not_available): Likewise. + * libproc_macro/registration.h: Add symbol type. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/proc_macro.cc (Procmacro::make_bang): + Change symbol name. + * libproc_macro/registration.h: Likewise. + * libproc_macro/tokenstream.cc (TokenStream::make_tokenstream): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/literal.cc (Literal__from_string): + Update to match rust interface. + * libproc_macro/literal.h (Literal__from_string): + Likewise. + * libproc_macro/tokenstream.cc (TokenStream__from_string): + Likewise. + * libproc_macro/tokenstream.h (TokenStream__from_string): + Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/rust/bridge/literal.rs: Change extern C + function argument from raw string pointer and length to + FFIString. + * libproc_macro/rust/bridge/token_stream.rs: Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/rust/bridge/ident.rs: Change raw + pointer string with an FFIString. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/ident.cc (Ident__new): Constructor + accepts an FFIString now. + (Ident__new_raw): Likewise. + (Ident::clone): Internal members change means clone also change. + (Ident::make_ident): Change constructor call. + (Ident::drop): Add call to FFIString::clone. + * libproc_macro/ident.h (struct Ident): Remove raw + pointer and length, add an FFIString inside instead. + (Ident__new): Change constructor. + (Ident__new_raw): Change constructor. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/proc_macro.cc (proc_macro_register_from_str): + Add registration function. + * libproc_macro/proc_macro.h (proc_macro_register_from_str): + Add registration function prototype. + * libproc_macro/tokenstream.cc (TokenStream::make_tokenstream): + Add a new constructor from a string that uses the registered + callback. + (TokenStream__from_string): Add call to new constructor. + * libproc_macro/tokenstream.h: Add registration + declaration. + * libproc_macro/registration.h: New file. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/ffistring.cc (FFIString::make_ffistring): + Add explicit sizeof and utf-8 warning. + (FFIString::clone): Add explicit sizeof and utf-8 warning. + * libproc_macro/ident.cc (Ident::clone): Likewise. + (Ident::make_ident): Likewise. + * libproc_macro/tokenstream.cc (TokenStream::grow): + Fix vector growth. + (TokenStream__clone): Add explicit sizeof. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/tokenstream.cc (TokenStream::grow): Add + minimum growing capacity. + (TokenStream::push): Change condition. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/proc_macro.h (struct CustomDerivePayload): + Rename from CustomDerivePayload to... + (struct CustomDerive): ... CustomDerive + (struct AttrPayload): Rename from AttrPayload to ... + (struct Attribute): ... Attribute + (struct BangPayload): Rename from BangPayload to ... + (struct Bang): ... Bang + (union ProcmacroPayload): Update union with new names. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/proc_macro.h (struct ProcmacroArray): + Add ProcmacroArray definition. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/Makefile.am: Add span.cc + * libproc_macro/Makefile.in: Regenerate. + * libproc_macro/span.cc: New file. + * libproc_macro/span.h: New file. + * libproc_macro/group.cc (Group::make_group): Add span + argument. + * libproc_macro/group.h (GROUP_H): Add include + directive for spans. + * libproc_macro/ident.cc (Ident__new): Add span + argument. + (Ident__new_raw): Likewise. + (Ident::make_ident): Likewise. + * libproc_macro/ident.h (Ident__new): Likewise. + (Ident__new_raw): Likewise. + * libproc_macro/literal.cc (Literal::clone): Clone the + span. + (Literal::make_literal): Add span argument. + (Literal::make_u8): Likewise. + (Literal::make_u16): Likewise. + (Literal::make_u32): Likewise. + (Literal::make_u64): Likewise. + (Literal::make_i8): Likewise. + (Literal::make_i16): Likewise. + (Literal::make_i32): Likewise. + (Literal::make_i64): Likewise. + (Literal::make_string): Likewise. + (Literal::make_byte_string): Likewise. + (Literal::make_f32): Likewise. + (Literal::make_f64): Likewise. + (Literal::make_char): Likewise. + (Literal::make_usize): Likewise. + (Literal::make_isize): Likewise. + * libproc_macro/literal.h (struct Literal): Add span to + Literal structure. + * libproc_macro/punct.cc (Punct::make_punct): Add span + argument to punct constructor. + * libproc_macro/punct.h (struct Punct): Add span to + Punct structure. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/rust/bridge/group.rs: Add span member + to the Group structure. + * libproc_macro/rust/bridge/ident.rs: Likewise with the + Ident structure. + * libproc_macro/rust/bridge/literal.rs: Likewise with + the Literal structure. + * libproc_macro/rust/bridge/punct.rs: Likewise with the + Punct structure. + * libproc_macro/rust/bridge/span.rs: Add span + internals. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/rust/bridge/ffistring.rs: Implement + From trait for FFIString. + * libproc_macro/rust/bridge/literal.rs: Change + constructor call. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/ffistring.cc (FFIString::make_ffistring): + Add copy from source pointer. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/literal.h: Remove has_suffix member + attribute from Literal. + * libproc_macro/literal.cc: Update constructors. + * libproc_macro/rust/bridge/literal.rs: Remove + has_suffix attribute from Literal. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/Makefile.am: Add ffistring unit to + compiled objects list. + * libproc_macro/Makefile.in: Regenerate. + * libproc_macro/literal.cc (Literal::drop): Change with + a call to ffistring drop function. + (Literal::make_literal): Add new helper constructor + (Literal__drop): Remove this function. + (Literal__string): Likewise. + (Literal__byte_string): Likewise. + (Literal__from_string): Moved this function. + (Literal::make_unsigned): Changed the constructor to match the + new layout. + (Literal::make_signed): Likewise. + (Literal::clone): Reimplement th eclone function. + (Literal::make_u8): Changed the constructor, make suffixed by + default. + (Literal::make_u16): Likewise. + (Literal::make_u32): Likewise. + (Literal::make_u64): Likewise. + (Literal::make_i8): Likewise. + (Literal::make_i16): Likewise. + (Literal::make_i32): Likewise. + (Literal::make_i64): Likewise. + (Literal::make_string): Likewise. + (Literal::make_byte_string): Likewise. + (Literal::make_f32): Likewise. + (Literal::make_f64): Likewise. + (Literal::make_char): Likewise. + (Literal::make_usize): Likewise. + (Literal::make_isize): Likewise. + (LitKind::make_byte): Add new helper constructor to avoid having + to set the payload value. + (LitKind::make_char): Likewise. + (LitKind::make_integer): Likewise. + (LitKind::make_float): Likewise. + (LitKind::make_str): Likewise. + (LitKind::make_str_raw): Add a new helper constructor which + takes the payload value as an argument. + (LitKind::make_byte_str): Add new helper constructor to avoid + mistakes with payload value. + (LitKind::make_byte_str_raw): Add a new helper constructor which + takes the payload value as an argument. + * libproc_macro/literal.h: Add new functions prototype. + (enum UnsignedTag): Removed because it is now unused. + (struct Payload128): Likewise. + (union UnsignedPayload): Likewise. + (struct Unsigned): Likewise. + (enum SignedTag): Likewise. + (union SignedPayload): Likewise. + (struct Signed): Likewise. + (enum LiteralTag): Likewise. + (enum LitKindTag): Likewise. + (struct StringPayload): Likewise. + (struct ByteStringPayload): Likewise. + (union LitKindPayload): Likewise. + (struct UnsignedSuffixPayload): Likewise. + (struct LitKind): Add new literal kind struct representation to + match the enum on rust side. + (struct SignedSuffixPayload): Removed because now unused. + (struct UsizePayload): Likewise. + (struct IsizePayload): Likewise. + (struct Float32Payload): Likewise. + (struct Float64Payload): Likewise. + (union LiteralPayload): Likewise. + (struct Literal): Changed the internals of the structure. + (Literal__drop): Removed the drop function fom the c interface. + (Literal__string): Removed unused function. + (Literal__byte_string): Removed unused function. + * libproc_macro/ffistring.cc: New file. + * libproc_macro/ffistring.h: New file. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/rust/bridge.rs: Add ffistring module. + * libproc_macro/rust/bridge/literal.rs: Rework type + internals. + * libproc_macro/rust/bridge/ffistring.rs: New file. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/proc_macro.cc (Procmacro::make_derive): + Add custom derive macro constructor. + (Procmacro::make_attribute): Add attribute macro constructor. + (Procmacro::make_bang): Add bang macro constructor. + * libproc_macro/proc_macro.h (struct Procmacro): + Add helper function prototypes. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/proc_macro.h (struct CustomDerivePayload): + Add C compatible payload structure. + (struct AttrPayload): Likewise. + (struct BangPayload): Likewise. + (enum ProcmacroTag): Add tag for tagged union. + (union ProcmacroPayload): Proc macro payload union. + (struct Procmacro): Tagged union. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/proc_macro.h: Add Literal, Punct, + Group, TokenTree and Tokenstream headers. + +2024-01-16 Pierre-Emmanuel Patry + + * Makefile.am: Remove libtool forwarding. + * Makefile.in: Regenerate. + * libproc_macro/Makefile.am: Creates an archive instead + of using libtool. + * libproc_macro/Makefile.in: Regenerate. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/group.cc (Group::make_group): Remove + internal namespace. + (Group::drop): Likewise. + * libproc_macro/group.h (enum Delimiter): Make members + upercase. + (struct Group): + * libproc_macro/ident.cc (Ident::drop): Remove internal + namespace. + * libproc_macro/ident.h (Ident__clone): Likewise. + * libproc_macro/literal.cc (Literal::make_isize): + Likewise. + * libproc_macro/literal.h (union LiteralPayload): + Likewise. + (Literal__from_string): Likewise. + * libproc_macro/punct.cc (Punct::make_punct): Likewise. + * libproc_macro/punct.h (enum Spacing): Make members + uppercase. + * libproc_macro/tokenstream.cc (TokenStream::make_tokenstream): + Remove internal namespace. + (TokenStream::grow): Likewise. + (TokenStream::push): Likewise. + (TokenSream__push): Likewise. + (TokenStream__clone): Likewise. + (TokenStream__drop): Likewise. + * libproc_macro/tokenstream.h (struct TokenStream): + Likewise. + (TokenSream__push): Likewise. + (TokenStream__drop): Likewise. + * libproc_macro/tokentree.cc (TokenTree::make_tokentree): + Likewise. + (TokenTree::drop): Likewise. + * libproc_macro/tokentree.h (union TokenTreePayload): + Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/group.cc (Group::drop): Add Procmacro + namespace. + * libproc_macro/group.h: Likewise. + * libproc_macro/ident.cc (Ident::drop): Likewise. + * libproc_macro/ident.h (Ident__clone): Likewise. + * libproc_macro/literal.cc (Literal::make_isize): + Likewise. + * libproc_macro/literal.h (Literal__from_string): + Likewise. + * libproc_macro/punct.cc (Punct::make_punct): Likewise. + * libproc_macro/punct.h: Likewise. + * libproc_macro/tokenstream.cc (TokenStream__drop): + Likewise. + * libproc_macro/tokenstream.h (TokenStream__drop): + Likewise. + * libproc_macro/tokentree.cc (TokenTree::drop): + Likewise. + * libproc_macro/tokentree.h: Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/literal.cc (Literal::drop): Change + delete operator to delete[]. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/rust/bridge/token_stream.rs: Implement + drop. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/group.cc (Group::drop): Add drop + implementation. + * libproc_macro/group.h: Add drop prototype. + * libproc_macro/tokenstream.cc (TokenStream::drop): Add + drop implementation. + (TokenStream__drop): Change to a call to TokenStream::drop. + * libproc_macro/tokenstream.h: Add drop prototype. + * libproc_macro/tokentree.cc (TokenTree::drop): Add + drop implementation. + * libproc_macro/tokentree.h: Add drop prototype. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/literal.cc (Literal__drop): Replace + implementation by a call to Literal::drop. + (Literal::drop): Add drop implementation. + * libproc_macro/literal.h: Add function prototype. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/ident.cc (Ident__drop): Replace by call + to Ident::drop. + (Ident::drop): Add drop function. + * libproc_macro/ident.h: Add drop prototype. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/group.cc: New file. + * libproc_macro/group.h: New file. + * libproc_macro/tokenstream.cc: New file. + * libproc_macro/tokenstream.h: New file. + * libproc_macro/tokentree.cc: New file. + * libproc_macro/tokentree.h: New file. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/punct.cc: New file. + * libproc_macro/punct.h: New file. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/ident.cc (Ident::make_ident): Add Ident + namespace. + * libproc_macro/ident.h (Ident__clone): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/ident.cc (Ident__new): Use named + constructor. + (Ident__new_raw): Use named constructor. + (Ident__clone): Use clone member function. + (Ident::clone): Make clone const. + (Ident::make_ident): Add named construcot. + * libproc_macro/ident.h (struct Ident): Add named + constructor prototypes. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/rust/bridge/ident.rs: Change drop + function interface. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/ident.cc: New file. + * libproc_macro/ident.h: New file. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/literal.cc (Literal__string): Add call + to named constructor. + (Literal__byte_string): Likewise. + (Literal::make_unsigned): Add function. + (Literal::make_signed): Add function. + (Literal::clone): Likewise. + (Literal::make_u8): Likewise. + (Literal::make_u16): Likewise. + (Literal::make_u32): Likewise. + (Literal::make_u64): Likewise. + (Literal::make_i8): Likewise. + (Literal::make_i16): Likewise. + (Literal::make_i32): Likewise. + (Literal::make_i64): Likewise. + (Literal::make_string): Likewise. + (Literal::make_byte_string): Likewise. + (Literal::make_f32): Likewise. + (Literal::make_f64): Likewise. + (make_char): Likewise. + (Literal::make_char): Likewise. + (make_usize): Likewise. + (Literal::make_usize): Likewise. + (make_isize): Likewise. + (Literal::make_isize): Likewise. + * libproc_macro/literal.h: Add prototypes. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/literal.cc (Literal__from_string): + Add abort because unimplemented. + * libproc_macro/literal.h (Literal__from_string): Add + namespace. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/rust/bridge/literal.rs: Make the + pointer mutable. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/literal.h (Literal__drop): Implement + drop. + (Literal__string): Constructor from a string function prototype. + (Literal__byte_string): Constructor from a byte string function + prototype. + (Literal__from_string): Add function body, no implementation + yet. + * libproc_macro/literal.cc: New file. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/proc_macro.h (PROC_MACRO_H): Add + literal header include directive. + * libproc_macro/literal.h: New file. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/proc_macro.cc (test): Remove dummy + function. + * libproc_macro/proc_macro.h (test): Likewise. + +2024-01-16 Pierre-Emmanuel Patry + + * libproc_macro/rust/bridge.rs: New file. + * libproc_macro/rust/bridge/group.rs: New file. + * libproc_macro/rust/bridge/ident.rs: New file. + * libproc_macro/rust/bridge/literal.rs: New file. + * libproc_macro/rust/bridge/punct.rs: New file. + * libproc_macro/rust/bridge/span.rs: New file. + * libproc_macro/rust/bridge/token_stream.rs: New file. + * libproc_macro/rust/group.rs: New file. + * libproc_macro/rust/ident.rs: New file. + * libproc_macro/rust/lib.rs: New file. + * libproc_macro/rust/literal.rs: New file. + * libproc_macro/rust/punct.rs: New file. + * libproc_macro/rust/span.rs: New file. + * libproc_macro/rust/token_stream.rs: New file. + 2024-01-08 Thomas Schwinge PR rust/113056