2025-05-23  Release Manager

	* GCC 14.3.0 released.

2024-08-01  Release Manager

	* GCC 14.2.0 released.

2024-07-19  Daniel Bertalan  <dani@danielbertalan.dev>

	Backported from master:
	2024-07-12  Daniel Bertalan  <dani@danielbertalan.dev>

	* metadata/rust-imports.cc (Import::try_package_in_directory):
	Change NULL to nullptr.

2024-05-07  Release Manager

	* GCC 14.1.0 released.

2024-04-15  Thomas Schwinge  <tschwinge@baylibre.com>

	* Make-lang.in (RUST_LIBDEPS): Inline into single user.

2024-04-15  Thomas Schwinge  <tschwinge@baylibre.com>

	* Make-lang.in (LIBPROC_MACRO_INTERNAL): New.
	(RUST_LIBDEPS, crab1$(exeext)): Use it.

2024-04-15  Thomas Schwinge  <tschwinge@baylibre.com>

	* Make-lang.in (RUST_LDFLAGS): Inline into single user.

2024-04-15  Thomas Schwinge  <tschwinge@baylibre.com>

	* Make-lang.in (RUST_LDFLAGS): Remove
	'libgrust/libproc_macro_internal'.

2024-04-09  Christophe Lyon  <christophe.lyon@linaro.org>

	* Make-lang.in (rust.install-dvi, rust.install-html): New rules.

2024-03-04  Mark Wielaard  <mark@klomp.org>

	* lang.opt.urls: Regenerate.

2024-02-21  0xn4utilus  <gyanendrabanjare8@gmail.com>

	* checks/errors/rust-ast-validation.cc (ASTValidation::visit):
	Add variadic check on all parameters.

2024-02-21  Owen Avery  <powerboat9.gamer@gmail.com>

	* backend/rust-compile-pattern.cc
	(CompilePatternLet::visit):
	Lookup type of sub-pattern, not tuple pattern itself.

2024-02-21  Marc Poulhiès  <dkm@kataplop.net>

	* backend/rust-builtins.cc
	(BuiltinsContext::register_rust_mappings): Add powi and reformat.
	* backend/rust-builtins.h: Add missing copyright header.

2024-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* expand/rust-macro-expand.h (struct MacroExpander): Nitpick: fix
	formatting of emitted error.

2024-02-21  Owen Avery  <powerboat9.gamer@gmail.com>

	* resolve/rust-ast-resolve-item.cc
	(flatten_glob): Use Import class.
	(flatten_rebind): Likewise.
	(flatten_list): Likewise.
	(flatten): Likewise.
	(flatten_use_dec_to_paths): Likewise.
	(flatten_use_dec_to_imports): Likewise.
	(ResolveItem::visit): Likewise.
	(Import::add_prefix): New.
	(rust_flatten_nested_glob): Adjust test.
	(rust_flatten_glob): Likewise.
	(rust_flatten_rebind_none): Likewise.
	(rust_flatten_rebind): Likewise.
	(rust_flatten_rebind_nested): Likewise.
	(rust_flatten_list): Likewise.
	* resolve/rust-ast-resolve-item.h
	(class Import): New.

2024-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* typecheck/rust-hir-type-check-implitem.h: Fix typo in field
	(region_costraints -> region_constraints).

2024-02-07  Kushal Pal  <kushalpal109@gmail.com>

	* parse/rust-parse-impl.h (Parser::parse_trait_item):
	Handle macros in trait items similar to how its handled for trait
	implementation items.

2024-02-07  Kushal Pal  <kushalpal109@gmail.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit):
	Remove obsolete classes and functions.
	* ast/rust-ast-collector.h:
	Likewise.
	* ast/rust-ast-full-decls.h (class TraitFunctionDecl):
	Likewise.
	(class TraitItemFunc):
	Likewise.
	(class TraitMethodDecl):
	Likewise.
	(class TraitItemMethod):
	Likewise.
	* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit):
	Likewise.
	* ast/rust-ast-visitor.h:
	Likewise.
	* ast/rust-ast.cc (TraitItemFunc::TraitItemFunc):
	Likewise.
	(TraitItemFunc::operator=):
	Likewise.
	(TraitItemFunc::as_string):
	Likewise.
	(TraitFunctionDecl::as_string):
	Likewise.
	(TraitItemMethod::TraitItemMethod):
	Likewise.
	(TraitItemMethod::operator=):
	Likewise.
	(TraitItemMethod::as_string):
	Likewise.
	(TraitMethodDecl::as_string):
	Likewise.
	(TraitItemFunc::accept_vis):
	Likewise.
	(TraitItemMethod::accept_vis):
	Likewise.
	* ast/rust-item.h (class TraitFunctionDecl):
	Likewise.
	(class TraitItemFunc):
	Likewise.
	(class TraitMethodDecl):
	Likewise.
	(class TraitItemMethod):
	Likewise.
	* checks/errors/rust-ast-validation.cc (ASTValidation::visit):
	Likewise.
	* checks/errors/rust-ast-validation.h:
	Likewise.
	* checks/errors/rust-feature-gate.h:
	Likewise.
	* expand/rust-cfg-strip.cc (CfgStrip::maybe_strip_trait_function_decl):
	Likewise.
	(CfgStrip::maybe_strip_trait_method_decl):
	Likewise.
	(CfgStrip::visit):
	Likewise.
	* expand/rust-cfg-strip.h:
	Likewise.
	* expand/rust-derive.h:
	Likewise.
	* expand/rust-expand-visitor.cc (ExpandVisitor::expand_trait_function_decl):
	Likewise.
	(ExpandVisitor::expand_trait_method_decl):
	Likewise.
	(ExpandVisitor::visit):
	Likewise.
	* expand/rust-expand-visitor.h:
	Likewise.
	* hir/rust-ast-lower-base.cc (ASTLoweringBase::visit):
	Likewise.
	* hir/rust-ast-lower-base.h:
	Likewise.
	* hir/rust-ast-lower-implitem.cc (ASTLowerTraitItem::visit):
	Likewise.
	* hir/rust-ast-lower-implitem.h:
	Likewise.
	* resolve/rust-ast-resolve-base.cc (ResolverBase::visit):
	Likewise.
	* resolve/rust-ast-resolve-base.h:
	Likewise.
	* resolve/rust-ast-resolve-implitem.h (visit):
	Likewise.
	* resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit):
	Likewise.
	* resolve/rust-ast-resolve-item.h:
	Likewise.
	* resolve/rust-default-resolver.cc (DefaultResolver::visit):
	Likewise.
	* resolve/rust-default-resolver.h:
	Likewise.
	* resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit):
	Likewise.
	* resolve/rust-toplevel-name-resolver-2.0.h:
	Likewise.
	* util/rust-attributes.cc (AttributeChecker::visit):
	Likewise.
	* util/rust-attributes.h:
	Likewise.

2024-02-07  Kushal Pal  <kushalpal109@gmail.com>

	* parse/rust-parse-impl.h (Parser::parse_trait_item):
	Use parse_function() to parse trait functions.

2024-02-07  Kushal Pal  <kushalpal109@gmail.com>

	* hir/rust-ast-lower-implitem.cc (ASTLowerTraitItem::visit):
	Provide visitor for AST::Function.
	* hir/rust-ast-lower-implitem.h:
	Likewise.
	* resolve/rust-ast-resolve-implitem.h:
	Likewise.
	* resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit):
	Likewise.
	* resolve/rust-ast-resolve-item.h:
	Likewise.

2024-02-07  Kushal Pal  <kushalpal109@gmail.com>

	* checks/errors/rust-ast-validation.cc (ASTValidation::visit):
	Add checks for Trait functions.

2024-02-07  Kushal Pal  <kushalpal109@gmail.com>

	* ast/rust-ast.h: Replace TraitItem with AssociatedItem.
	* ast/rust-item.h (class Trait): Likewise.
	* expand/rust-expand-visitor.cc (ExpandVisitor::visit):
	Likewise.
	* parse/rust-parse-impl.h (Parser::parse_trait): Likewise.
	* parse/rust-parse.h: Likewise.

2024-02-07  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): use destructure

2024-02-07  Nobel Singh  <nobel2073@gmail.com>

	* Make-lang.in: Add rust-ast-lower-implitem.cc to list of objects.
	* hir/rust-ast-lower-implitem.h (RUST_AST_LOWER_IMPLITEM_H): Remove
	implementation.
	* hir/rust-ast-lower-implitem.cc: Copy implementation from header.

2024-02-07  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-type-check.cc (TypeResolution::Resolve): refactor
	* typecheck/rust-hir-type-check.h: new prototype
	* typecheck/rust-typecheck-context.cc (TypeCheckContext::compute_inference_variables): x

2024-02-07  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-type-check-type.cc: remove hack

2024-02-07  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments): remove hack

2024-02-07  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args): fix

2024-02-07  Nobel Singh  <nobel2073@gmail.com>

	* hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_qualifiers):
	Change default ABI to C for extern functions
	(ASTLoweringBase::lower_extern_block): Likewise

2024-02-07  Jakub Dupak  <dev@jakubdupak.com>

	* typecheck/rust-tyty.cc (BaseType::BaseType): Store orig ref.
	(BaseType::get_orig_ref): Add getter.
	* typecheck/rust-tyty.h: Store orig ref.

2024-02-07  Jakub Dupak  <dev@jakubdupak.com>

	* typecheck/rust-hir-type-check-implitem.cc (TypeCheckTopLevelExternItem::visit):
	Add region constraints.
	(TypeCheckImplItem::visit): Add region constraints.
	* typecheck/rust-hir-type-check-implitem.h: Add region constraints.
	* typecheck/rust-hir-type-check-item.cc (TypeCheckItem::ResolveImplBlockSelf):
	Add region constraints.
	(TypeCheckItem::visit): Add region constraints.
	(TypeCheckItem::resolve_impl_item): Add region constraints.
	(TypeCheckItem::resolve_impl_block_substitutions): Add region constraints.
	* typecheck/rust-hir-type-check-item.h: Add region constraints.
	* typecheck/rust-hir-type-check-type.cc (ResolveWhereClauseItem::Resolve):
	Add region constraints.
	(ResolveWhereClauseItem::visit): Add region constraints.
	* typecheck/rust-hir-type-check-type.h (class ResolveWhereClauseItem):
	Add region constraints.
	* typecheck/rust-hir-type-check.cc (TraitItemReference::get_type_from_fn):
	Add region constraints.
	* typecheck/rust-tyty-bounds.cc (TypeBoundPredicate::TypeBoundPredicate):
	Add region constraints.
	* typecheck/rust-tyty-subst.cc (SubstitutionRef::get_region_constraints):
	Add region constraints.
	* typecheck/rust-tyty-subst.h (class BaseType): Add region constraints.
	(struct RegionConstraints): Add region constraints.
	* typecheck/rust-tyty.cc (BaseType::monomorphized_clone): Add region constraints.
	(ADTType::clone): Add region constraints.
	(FnType::clone): Add region constraints.
	(ProjectionType::clone): Add region constraints.
	* typecheck/rust-tyty.h: Add region constraints.

2024-02-07  Jakub Dupak  <dev@jakubdupak.com>

	* typecheck/rust-hir-trait-resolve.cc: add regions
	* typecheck/rust-hir-type-check-base.cc (TypeCheckBase::resolve_literal):
	add regions, resolve generic lifetimes
	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): add regions
	* typecheck/rust-hir-type-check-implitem.cc (TypeCheckTopLevelExternItem::visit):
	add regions, resolve lifetimes
	(TypeCheckImplItem::visit): add regions, resove lifetimes
	* typecheck/rust-hir-type-check-implitem.h: add default value for result
	* typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit): add regions,
	resove lifetimes
	(TypeCheckItem::resolve_impl_block_substitutions): add regions, resove lifetimes
	* typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): add regions,
	resove lifetimes
	(TypeCheckExpr::resolve_root_path): add regions, resove lifetimes
	(TypeCheckExpr::resolve_segments): add regions, resove lifetimes
	* typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): add regions,
	resove lifetimes
	(TypeCheckType::resolve_root_path): add regions, resove lifetimes
	(ResolveWhereClauseItem::Resolve): add regions, resove lifetimes
	(ResolveWhereClauseItem::visit): add regions, resove lifetimes
	* typecheck/rust-hir-type-check.cc (TypeCheckContext::LifetimeResolver::resolve):
	add regions, resolve lifetimes
	(TraitItemReference::get_type_from_fn): add regions, resove lifetimes
	* typecheck/rust-hir-type-check.h: add regions, resove lifetimes
	* typecheck/rust-substitution-mapper.cc (SubstMapper::SubstMapper): add regions,
	resove lifetimes
	(SubstMapper::Resolve): add regions, resove lifetimes
	(SubstMapper::InferSubst): add regions, resove lifetimes
	(SubstMapper::visit): add regions, resove lifetimes
	* typecheck/rust-substitution-mapper.h: add regions, resove lifetimes
	* typecheck/rust-typecheck-context.cc (TypeCheckContext::TypeCheckContext):
	lifetime resolution
	(TypeCheckContext::regions_from_generic_args): lifetime resolution helper
	* typecheck/rust-tyty-bounds.cc (TypeBoundPredicate::TypeBoundPredicate):
	add regions, resove lifetimes
	(TypeBoundPredicate::operator=): add regions, resove lifetimes
	(TypeBoundPredicate::apply_generic_arguments): add regions, resove lifetimes
	(TypeBoundPredicateItem::get_tyty_for_receiver): add regions, resove lifetimes
	* typecheck/rust-tyty-subst.cc (SubstitutionArgumentMappings::get_regions):
	add regions, resove lifetimes
	(SubstitutionArgumentMappings::get_mut_regions): getter
	(SubstitutionArgumentMappings::error): split error and empty
	(SubstitutionArgumentMappings::empty): split error and empty
	(SubstitutionArgumentMappings::find_symbol): helper
	(SubstitutionRef::get_num_lifetime_params): getter
	(SubstitutionRef::get_num_type_params): getter
	(SubstitutionRef::needs_substitution): extend to regions
	(SubstitutionRef::get_mappings_from_generic_args): helper
	(SubstitutionRef::infer_substitions): add regions
	* typecheck/rust-tyty-subst.h (class RegionParamList): region param handler
	* typecheck/rust-tyty.cc (BaseType::monomorphized_clone): add regions, resove lifetimes
	(InferType::default_type): add regions, resove lifetimes
	(FnType::clone): add regions, resove lifetimes
	(ReferenceType::ReferenceType): add regions
	(ReferenceType::get_region): getter
	(ReferenceType::clone): add regions
	* typecheck/rust-tyty.h: add regions, resove

2024-02-07  Jakub Dupak  <dev@jakubdupak.com>

	* hir/tree/rust-hir-item.h: Add missing getter

2024-02-07  Jakub Dupak  <dev@jakubdupak.com>

	* typecheck/rust-tyty-region.h: New file.

2024-02-07  Jakub Dupak  <dev@jakubdupak.com>

	* typecheck/rust-hir-type-check.h (class Lifetime): add interned lifetime class
	* typecheck/rust-typecheck-context.cc (TypeCheckContext::TypeCheckContext): add
	resolution tool
	(TypeCheckContext::intern_lifetime): add method to intern lifetime from tyctx
	(TypeCheckContext::lookup_lifetime): add method to lookup lifetime from tyctx
	(TypeCheckContext::intern_and_insert_lifetime): add a helper method

2024-02-07  Raiki Tamura  <tamaron1203@gmail.com>

	* rust-lang.cc (run_rust_tests): Add test.
	* rust-system.h: Add <algorithm>.
	* util/make-rust-unicode.py: Output NFC_Quick_Check table.
	* util/rust-codepoint.h (struct Codepoint): Add is_supplementary
	method.
	* util/rust-unicode-data.h: Generated.
	* util/rust-unicode.cc (binary_search_sorted_array): Removed.
	(lookup_cc): Remove namespace.
	(is_alphabetic): Use std::binary_search
	(nfc_quick_check): New function.
	(nfc_normalize): Use nfc_quick_check.
	(is_nfc_qc_maybe): New function.
	(is_nfc_qc_no): New function.
	(rust_nfc_qc_test): New test.
	* util/rust-unicode.h (is_nfc_qc_no): New function.
	(is_nfc_qc_maybe): New function.
	(enum class): New enum class.
	(nfc_quick_check): New function.
	(rust_nfc_qc_test): New test.

2024-02-07  Kushal Pal  <kushalpal109@gmail.com>

	* parse/rust-parse-impl.h (Parser::parse_function):
	Skip token if its a COMMA.

2024-01-30  Owen Avery  <powerboat9.gamer@gmail.com>

	* ast/rust-ast-full-decls.h
	(class TraitImplItem): Remove forward declaration.
	(class AssociatedItem): Add forward declaration.
	* ast/rust-ast.h
	(class TraitImplItem): Remove.
	(class TraitItem): Inherit from AssociatedItem.
	(SingleASTNode::take_trait_impl_item):
	Return std::unique_ptr<AssociatedItem> instead of
	std::unique_ptr<TraitImplItem>.
	* ast/rust-item.h
	(class Function): Inherit from AssociatedItem instead of
	TraitImplItem.
	(class TypeAlias): Likewise.
	(class ConstantItem): Likewise.
	(class TraitImpl): Store items as AssociatedItem.
	* expand/rust-derive-clone.cc
	(DeriveClone::clone_fn): Return std::unique_ptr<AssociatedItem>.
	(DeriveClone::clone_impl): Take std::unique_ptr<AssociatedItem>.
	* expand/rust-derive-clone.h
	(DeriveClone::clone_fn): Return std::unique_ptr<AssociatedItem>.
	(DeriveClone::clone_impl): Take std::unique_ptr<AssociatedItem>.
	* expand/rust-expand-visitor.cc
	(ExpandVisitor::visit): Handle changes to
	SingleASTNode::take_trait_impl_item.
	* parse/rust-parse-impl.h
	(Parser::parse_impl): Parse TraitImpl as containing AssociatedItem.
	(Parser::parse_trait_impl_item): Return
	std::unique_ptr<AssociatedItem>.
	(Parser::parse_trait_impl_function_or_method): Likewise.
	* parse/rust-parse.h
	(Parser::parse_trait_impl_item): Return
	std::unique_ptr<AssociatedItem>.
	(Parser::parse_trait_impl_function_or_method): Likewise.

2024-01-30  Robert Goss  <goss.robert@gmail.com>

	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit) Add additional check
	* typecheck/rust-hir-type-check-struct-field.h: A helper method to make error added
	* typecheck/rust-hir-type-check-struct.cc (TypeCheckStructExpr::resolve) Update message

2024-01-30  Jakub Dupak  <dev@jakubdupak.com>

	* hir/rust-ast-lower-type.cc (ASTLoweringTypeBounds::visit): fix for lifetimes
	(ASTLowerWhereClauseItem::visit): fix for lifetimes

2024-01-30  Jakub Dupak  <dev@jakubdupak.com>

	* parse/rust-parse-impl.h (Parser::parse_where_clause): fix parsing
	(Parser::parse_where_clause_item): fix parsing
	(Parser::parse_type_bound_where_clause_item): fix parsing
	(Parser::parse_trait_bound): fix parsing
	* parse/rust-parse.h: fix parsing

2024-01-30  Kushal Pal  <kushalpal109@gmail.com>

	* lex/rust-lex.cc (Lexer::dump_and_skip):
	Changed " " to '\n'

2024-01-30  Owen Avery  <powerboat9.gamer@gmail.com>

	* ast/rust-ast-fragment.cc
	(Fragment::assert_single_fragment): Update.
	* ast/rust-ast.h
	(class TraitImplItem): Move definition before that of TraitItem.
	(class TraitItem):
	Inherit from TraitImplItem instead of AssociatedItem.
	(class SingleASTNode): Unify handling of associated items.
	(SingleASTNode::take_assoc_item): Move from...
	(SingleASTNode::take_impl_item): ...here, but leave stub calling
	take_assoc_item behind.
	(SingleASTNode::take_trait_item):
	Cast associated item to TraitItem.
	(SingleASTNode::take_trait_impl_item):
	Cast associated item to TraitImplItem.
	* ast/rust-ast.cc
	(SingleASTNode::SingleASTNode):
	Unify handling of associated items.
	(SingleASTNode::operator=): Likewise.
	(SingleASTNode::accept_vis): Likewise.
	(SingleASTNode::is_error): Likewise.
	(SingleASTNode::as_string): Likewise.
	* ast/rust-item.h
	(class Function): Remove direct inheritence from AssociatedItem.
	(class ConstantItem): Likewise.
	* ast/rust-macro.h
	(class MacroInvocation):
	Remove direct inheritence from AssociatedItem and TraitImplItem.

2024-01-30  Robert Goss  <goss.robert@gmail.com>

	* typecheck/rust-hir-type-check-struct-field.h: Allow visit to return a bool
	* typecheck/rust-hir-type-check-struct.cc: Improve check of repeat fields

2024-01-30  Kushal Pal  <kushalpal109@gmail.com>

	* parse/rust-parse-impl.h (Parser::parse_inherent_impl_item):
	Added switch-case for ASYNC token.

2024-01-30  Kushal Pal  <kushalpal109@gmail.com>

	* checks/errors/rust-ast-validation.cc (ASTValidation::visit):
	Enclose const in single quotes.

2024-01-30  Kushal Pal  <kushalpal109@gmail.com>

	* checks/errors/rust-ast-validation.cc (ASTValidation::visit):
	Added check for `async` functions inside trait.
	* parse/rust-parse-impl.h (Parser::parse_trait_item):
	Added switch-case for ASYNC token.

2024-01-30  Nirmal Patel  <nirmal@nirmal.dev>

	* lex/rust-lex.cc (Lexer::parse_byte_string): Handle newline
	while parsing byte strings
	(Lexer::parse_string): Handle newline while parsing strings

2024-01-30  Jakub Dupak  <dev@jakubdupak.com>

	* backend/rust-compile-expr.cc (CompileExpr::visit): Use new API.
	* typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): Use new API.
	* typecheck/rust-tyty-cmp.h: Remove old API.
	* typecheck/rust-tyty.cc (FnPtr::is_equal): Use new API.
	* typecheck/rust-tyty.h: Remove old API.
	* typecheck/rust-unify.cc (UnifyRules::expect_fnptr): Use new API.

2024-01-30  Jakub Dupak  <dev@jakubdupak.com>

	* hir/rust-ast-lower-type.cc (ASTLoweringType::visit): For lifetimes.

2024-01-30  Jakub Dupak  <dev@jakubdupak.com>

	* hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_lifetime): Propagate static
	requirement.
	* hir/rust-ast-lower-base.h: Propagate static requirement.
	* hir/rust-ast-lower-implitem.h: Propagate static requirement.
	* hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Propagate static requirement.
	* hir/rust-ast-lower-type.cc (ASTLoweringType::translate): Propagate static requirement.
	(ASTLoweringType::visit): Propagate static requirement.
	* hir/rust-ast-lower-type.h: Propagate static requirement.

2024-01-30  Jakub Dupak  <dev@jakubdupak.com>

	* parse/rust-parse-impl.h (Parser::parse_generic_param): Lifetime elision control.
	(Parser::parse_lifetime_where_clause_item): Lifetime elision control.
	(Parser::parse_type_param_bound): Lifetime elision control.
	(Parser::parse_lifetime_bounds): Lifetime elision control.
	(Parser::parse_lifetime): Lifetime elision control.
	(Parser::parse_path_generic_args): Lifetime elision control.
	(Parser::parse_self_param): Lifetime elision control.
	(Parser::parse_break_expr): Lifetime elision control.
	(Parser::parse_continue_expr): Lifetime elision control.
	(Parser::parse_reference_type_inner): Lifetime elision control.
	* parse/rust-parse.h: Lifetime elision control.

2024-01-30  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast.h: Elided lifetime static constructor
	* ast/rust-type.h: Default lifetime to elided.
	* parse/rust-parse-impl.h (Parser::parse_lifetime_param): Use elided lifetime.
	(Parser::parse_lifetime): Use elided lifetime/
	(Parser::lifetime_from_token): Use elided lifetime.
	(Parser::parse_self_param): Use elided lifetime.
	(Parser::parse_reference_type_inner): Use elided lifetime.

2024-01-30  Jakub Dupak  <dev@jakubdupak.com>

	* parse/rust-parse-impl.h (Parser::lifetime_from_token): Fix matched pattern.

2024-01-30  Kushal Pal  <kushalpal109@gmail.com>

	* checks/errors/rust-ast-validation.cc (ASTValidation::visit):
	Added check for `async` function inside trait.

2024-01-30  Kushal Pal  <kushalpal109@gmail.com>

	* parse/rust-parse-impl.h (Parser::parse_trait_impl_item):
	Handled `async` items

2024-01-30  Raiki Tamura  <tamaron1203@gmail.com>

	* Make-lang.in: Add .o files
	* backend/rust-mangle.cc (struct V0Path): moved to splitted files
	(v0_path): Likewise.
	(legacy_mangle_name): Likewise.
	(legacy_mangle_canonical_path): Likewise.
	(legacy_hash): Likewise.
	(v0_tuple_prefix): Likewise.
	(v0_numeric_prefix): Likewise.
	(v0_simple_type_prefix): Likewise.
	(v0_complex_type_prefix): Likewise.
	(v0_integer_62): Likewise.
	(v0_opt_integer_62): Likewise.
	(v0_disambiguator): Likewise.
	(v0_type_prefix): Likewise.
	(v0_generic_args): Likewise.
	(v0_identifier): Likewise.
	(v0_type_path): Likewise.
	(v0_function_path): Likewise.
	(v0_scope_path): Likewise.
	(v0_crate_path): Likewise.
	(v0_inherent_or_trait_impl_path): Likewise.
	(v0_closure): Likewise.
	(legacy_mangle_item): Likewise.
	(v0_mangle_item): Likewise.
	* backend/rust-mangle.h (legacy_mangle_item): Likewise.
	(v0_mangle_item): Likewise.
	* backend/rust-mangle-legacy.cc: New file.
	* backend/rust-mangle-v0.cc: New file.

2024-01-30  Jakub Dupak  <dev@jakubdupak.com>

	* checks/errors/borrowck/rust-bir-place.h: Cleanup.
	* checks/errors/borrowck/rust-borrow-checker.h: Cleanup.

2024-01-30  Jakub Dupak  <dev@jakubdupak.com>

	* typecheck/rust-tyty.h (BaseType::is): Cast API.
	(SubstitutionRef>): Cast API.
	(BaseType::as): Cast API.
	(BaseType::try_as): Cast API.

2024-01-30  Jakub Dupak  <dev@jakubdupak.com>

	* typecheck/rust-tyty.h (class ClosureType): Inherit interface.
	(class FnPtr): Inherit interface.
	(class FnType): Inherit interface.
	(class CallableTypeInterface): New interface.
	(BaseType::is): Detect interface members API.

2024-01-30  Jakub Dupak  <dev@jakubdupak.com>

	* typecheck/rust-hir-type-check-type.cc (TypeCheckType::resolve_root_path): Refactor.

2024-01-30  Jakub Dupak  <dev@jakubdupak.com>

	* checks/errors/borrowck/rust-bir-builder-internal.h: Replace nodiscard.
	* checks/errors/borrowck/rust-bir-place.h: Replace nodiscard.

2024-01-30  Jakub Dupak  <dev@jakubdupak.com>

	* typecheck/rust-tyty.h: Fix nodiscard to warn unused.

2024-01-30  Jakub Dupak  <dev@jakubdupak.com>

	* hir/tree/rust-hir-item.h: Ad lifetime getter.
	* hir/tree/rust-hir-path.h: Make getter const ref.
	* hir/tree/rust-hir.h: Const ref and new getter.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* Make-lang.in (GRS_OBJS): Add rust-attribs.o.
	* backend/rust-builtins.cc (builtin_const, builtin_noreturn)
	(builtin_novops): Remove.
	(BuiltinsContext::lookup_simple_builtin): Adjust.
	(BuiltinsContext::setup_overflow_fns): Remove.
	(BuiltinsContext::define_function_type): Set builtin type to
	errormark so the builtin is considered unavailable.
	(BuiltinsContext::setup_math_fns): Remove.
	(BuiltinsContext::setup_atomic_fns): Remove.
	(build_c_type_nodes): Refactor based on D frontend.
	(BuiltinsContext::define_builtin_types): Likewise.
	(DEF_PRIMITIVE_TYPE): New.
	(DEF_FUNCTION_TYPE_0): New.
	(DEF_FUNCTION_TYPE_1): New.
	(DEF_FUNCTION_TYPE_2): New.
	(DEF_FUNCTION_TYPE_3): New.
	(DEF_FUNCTION_TYPE_4): New.
	(DEF_FUNCTION_TYPE_5): New.
	(DEF_FUNCTION_TYPE_6): New.
	(DEF_FUNCTION_TYPE_7): New.
	(DEF_FUNCTION_TYPE_8): New.
	(DEF_FUNCTION_TYPE_9): New.
	(DEF_FUNCTION_TYPE_10): New.
	(DEF_FUNCTION_TYPE_11): New.
	(DEF_FUNCTION_TYPE_VAR_0): New.
	(DEF_FUNCTION_TYPE_VAR_1): New.
	(DEF_FUNCTION_TYPE_VAR_2): New.
	(DEF_FUNCTION_TYPE_VAR_3): New.
	(DEF_FUNCTION_TYPE_VAR_4): New.
	(DEF_FUNCTION_TYPE_VAR_5): New.
	(DEF_FUNCTION_TYPE_VAR_6): New.
	(DEF_FUNCTION_TYPE_VAR_7): New.
	(DEF_FUNCTION_TYPE_VAR_11): New.
	(DEF_POINTER_TYPE): New.
	(BuiltinsContext::setup): Adjust.
	(BuiltinsContext::define_builtin_attributes): New.
	(DEF_ATTR_NULL_TREE): New.
	(DEF_ATTR_INT): New.
	(DEF_ATTR_STRING): New.
	(DEF_ATTR_IDENT): New.
	(DEF_ATTR_TREE_LIST): New.
	(handle_flags): Remove.
	(BuiltinsContext::define_builtins): New.
	(DEF_BUILTIN): New.
	(BuiltinsContext::define_builtin): Remove.
	(BuiltinsContext::register_rust_mappings): New. Add all missing
	builtins.
	(BuiltinsContext::lookup_gcc_builtin): Adjust.
	* backend/rust-builtins.h (DEF_PRIMITIVE_TYPE): New.
	(DEF_FUNCTION_TYPE_0): New.
	(DEF_FUNCTION_TYPE_1): New.
	(DEF_FUNCTION_TYPE_2): New.
	(DEF_FUNCTION_TYPE_3): New.
	(DEF_FUNCTION_TYPE_4): New.
	(DEF_FUNCTION_TYPE_5): New.
	(DEF_FUNCTION_TYPE_6): New.
	(DEF_FUNCTION_TYPE_7): New.
	(DEF_FUNCTION_TYPE_8): New.
	(DEF_FUNCTION_TYPE_9): New.
	(DEF_FUNCTION_TYPE_10): New.
	(DEF_FUNCTION_TYPE_11): New.
	(DEF_FUNCTION_TYPE_VAR_0): New.
	(DEF_FUNCTION_TYPE_VAR_1): New.
	(DEF_FUNCTION_TYPE_VAR_2): New.
	(DEF_FUNCTION_TYPE_VAR_3): New.
	(DEF_FUNCTION_TYPE_VAR_4): New.
	(DEF_FUNCTION_TYPE_VAR_5): New.
	(DEF_FUNCTION_TYPE_VAR_6): New.
	(DEF_FUNCTION_TYPE_VAR_7): New.
	(DEF_FUNCTION_TYPE_VAR_11): New.
	(DEF_POINTER_TYPE): New.
	(DEF_ATTR_NULL_TREE): New.
	(DEF_ATTR_INT): New.
	(DEF_ATTR_STRING): New.
	(DEF_ATTR_IDENT): New.
	(DEF_ATTR_TREE_LIST): New.
	* backend/rust-compile-intrinsic.cc (Intrinsics::compile): Add
	comment.
	(op_with_overflow_inner): Adjust.
	(copy_handler_inner): Adjust.
	(prefetch_data_handler): Adjust.
	(build_atomic_builtin_name): Adjust.
	(atomic_load_handler_inner): Adjust.
	(uninit_handler): Adjust.
	(move_val_init_handler): Adjust.
	(expect_handler_inner): Adjust.
	* rust-gcc.cc (fetch_overflow_builtins): Adjust.
	* rust-lang.cc (rust_localize_identifier): Adjust.
	(LANG_HOOKS_COMMON_ATTRIBUTE_TABLE): New.
	* rust-attribs.cc: New file.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* expand/rust-cfg-strip.cc (CfgStrip::visit): Change calls from visitor
	to default visitor.
	(CfgStrip::go): Add call to visit crate.
	* expand/rust-cfg-strip.h (class CfgStrip): Update prototypes and
	remove empty ones.
	* ast/rust-ast-visitor.cc: add WhereClause condition check.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* expand/rust-expand-visitor.cc (ExpandVisitor::go): Add call to visit
	on the crate.
	(ExpandVisitor::visit): Remove some visit functions in favor of their
	default visitor counterpart.
	* expand/rust-expand-visitor.h (class ExpandVisitor): Inherit from
	default visitor and remove now useless function prototypes.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* resolve/rust-default-resolver.cc (DefaultResolver::visit): Remove
	duplicated functions.
	* resolve/rust-default-resolver.h (class DefaultResolver): Make the
	default resolver inherit from the default visitor.

2024-01-30  Owen Avery  <powerboat9.gamer@gmail.com>

	* checks/errors/rust-feature.cc
	(Feature::name_hash_map):
	Add entries for Name::LANG_ITEMS and Name::NO_CORE.
	* checks/errors/rust-feature.h
	(Feature::Name::LANG_ITEMS): New.
	(Feature::Name::NO_CORE): New.

2024-01-30  Kushal Pal  <kushalpal109@gmail.com>

	* backend/rust-compile-base.cc (HIRCompileBase::setup_abi_options):
	Renamed `WIN64` to `WIN_64`
	* util/rust-abi.cc (get_abi_from_string): Likewise
	(get_string_from_abi): Likewise
	* util/rust-abi.h (enum ABI): Likewise

2024-01-30  Nobel Singh  <nobel2073@gmail.com>

	* checks/errors/rust-ast-validation.cc (ASTValidation::visit): Add
	check for const funtion.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* checks/errors/rust-ast-validation.cc (ASTValidation::visit): Add
	a validation check and emit an error depending on the context.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Adapt defintion
	getter.
	* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Likewise.
	* expand/rust-cfg-strip.cc (CfgStrip::visit): Likewise.
	* expand/rust-expand-visitor.cc (ExpandVisitor::visit): Likewise.
	* hir/rust-ast-lower-implitem.h: Likewise.
	* hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Likewise.
	* resolve/rust-ast-resolve-item.cc (ResolveItem::visit): Likewise.
	* resolve/rust-ast-resolve-stmt.h: Likewise.
	* resolve/rust-default-resolver.cc (DefaultResolver::visit): Likewise.
	* util/rust-attributes.cc (AttributeChecker::visit):  Likewise.
	* parse/rust-parse-impl.h: Allow empty function body during parsing.
	* ast/rust-ast.cc (Function::Function): Constructor now take an
	optional for the body.
	(Function::operator=): Adapt to new optional member.
	(Function::as_string): Likewise.
	* ast/rust-item.h (class Function): Make body optional and do not
	rely on nullptr anymore.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* resolve/rust-early-name-resolver.cc (EarlyNameResolver::resolve_generic_args):
	Move function.
	(EarlyNameResolver::resolve_qualified_path_type): Likewise.
	(EarlyNameResolver::visit): Add a top level visit function for crate
	and remove duplicated code.
	* resolve/rust-early-name-resolver.h (class EarlyNameResolver): Update
	overriden function list.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-attributes.cc (AttributeChecker::visit): Add visit function
	for crates.
	* util/rust-attributes.h (class AttributeChecker): Update function
	prototypes.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* checks/errors/rust-feature-gate.cc (FeatureGate::visit): Add a visit
	function for the crate level.
	(FeatureGate::check): Add call to crate visit.
	* checks/errors/rust-feature-gate.h (class FeatureGate): Remove now
	useless visit functions (traversal only).

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* checks/errors/rust-ast-validation.cc (ASTValidation::visit): Add
	const check.
	* checks/errors/rust-ast-validation.h: Add visit function prototype.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* checks/errors/rust-ast-validation.cc (ASTValidation::visit): Add
	async const check.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* parse/rust-parse-impl.h (Parser::parse_vis_item): Allow parsing async
	items in const.
	(Parser::parse_async_item): Account for const offset during async
	lookahead.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-builder.cc (AstBuilder::fn_qualifiers): Change
	constructor to match the new arguments.
	* ast/rust-ast-collector.cc (TokenCollector::visit): Change behavior
	to handle both const and async specifiers at the same time.
	* ast/rust-ast.cc (FunctionQualifiers::as_string): Likewise.
	* ast/rust-item.h (class FunctionQualifiers): Remove AsyncConstStatus
	and replace it with both Async and Const status. Also change the safety
	arguments to use an enum instead of a boolean.
	* hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_qualifiers):
	Update constructor call.
	* hir/tree/rust-hir-item.h: Add Const and Async status, remove
	AsyncConstStatus, update the constructor.
	* hir/tree/rust-hir.cc (FunctionQualifiers::as_string): Update with
	the new status.
	* parse/rust-parse-impl.h (Parser::parse_function_qualifiers): Update
	constructor call.
	* util/rust-common.h (enum Mutability): Make an enum class.
	(enum class): Add Async and Const enum class to avoid booleans.
	(enum Unsafety): Change to an enum class.

2024-01-30  Owen Avery  <powerboat9.gamer@gmail.com>

	* ast/rust-ast-full-decls.h
	(class InherentImplItem): Remove.
	* ast/rust-ast.h
	(class InherentImplItem): Remove.
	(class SingleASTNode):
	Store pointer to AssociatedItem instead of InherentImplItem.
	* ast/rust-ast.cc
	(SingleASTNode::SingleASTNode):
	Use clone_associated_item instead of clone_inherent_impl_item.
	(SingleASTNode::operator=): Likewise.
	* ast/rust-item.h
	(class InherentImpl):
	Use AssociatedItem rather than InherentImplItem.
	(class Function): Likewise.
	(class ConstantItem): Likewise.
	* ast/rust-macro.h
	(class MacroInvocation): Likewise.
	* expand/rust-expand-visitor.cc
	(ExpandVisitor::visit): Likewise.
	* parse/rust-parse-impl.h
	(Parser::parse_impl): Likewise.
	(Parser::parse_inherent_impl_item): Likewise.
	(Parser::parse_inherent_impl_function_or_method): Likewise.
	* parse/rust-parse.h
	(Parser::parse_inherent_impl_item): Likewise.
	(Parser::parse_inherent_impl_function_or_method): Likewise.

2024-01-30  Philip Herron  <herron.philip@googlemail.com>

	* backend/rust-compile-base.cc (HIRCompileBase::compile_locals_for_block): removed
	* backend/rust-compile-base.h: update header
	* backend/rust-compile-block.cc (CompileBlock::visit): remove old logic
	* backend/rust-compile-expr.cc (CompileExpr::generate_closure_function): likewise
	* backend/rust-compile-stmt.cc (CompileStmt::visit): likewise
	* backend/rust-compile-var-decl.h: ensure we setup tuple bindings correctly

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-item.h: Add safety getter to modules.
	* checks/errors/rust-ast-validation.cc (ASTValidation::visit): Check
	a module's safety and emit an error when meeting an unsafe module.
	* checks/errors/rust-ast-validation.h: Add function prototype.
	* parse/rust-parse-impl.h (Parser::parse_module): Move the module locus
	to the first token instead of the mod keyword.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* parse/rust-parse-impl.h (Parser::parse_vis_item): Dispatch to parse
	module when meeting an unsafe module.
	(Parser::parse_module): Set unsafe status when the parser encounter an
	unsafe keyword.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-item.h: Add safety status to Modules in the AST.
	* parse/rust-parse-impl.h (Parser::parse_module): Adapt constructors.

2024-01-30  Owen Avery  <powerboat9.gamer@gmail.com>

	* hir/tree/rust-hir-pattern.h
	(class TupleItems): New.
	(class TupleStructItems): Inherit from TupleItems.
	(class TuplePatternItems): Likewise.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-toplevel-name-resolver-2.0.cc
	(TopLevel::insert_or_error_out): New functions.
	(TopLevel::handle_use_dec): New function.
	(flatten_rebind): Likewise.
	(flatten_list): Likewise.
	(flatten_glob): Likewise.
	(flatten): Likewise.
	(TopLevel::visit): Visit various `use` declaration nodes.
	* resolve/rust-toplevel-name-resolver-2.0.h: Declare functions and
	visitors.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-early-name-resolver-2.0.cc
	(Early::visit): Remove visitors.
	* resolve/rust-early-name-resolver-2.0.h: Likewise.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-item.h (class UseTree): Add `node_id` member.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-toplevel-name-resolver-2.0.cc
	(TopLevel::insert_or_error_out): Add documentation comment.
	(TopLevel::go): Likewise.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-early-name-resolver-2.0.cc
	(Early::insert_once): New function.
	(Early::visit): Likewise.
	* resolve/rust-early-name-resolver-2.0.h: Likewise.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-late-name-resolver-2.0.cc (Late::visit): Store mappings
	after having resolved them.
	* resolve/rust-late-name-resolver-2.0.h: Add `TypePath` visitor.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-late-name-resolver-2.0.cc
	(Late::setup_builtin_types): New function.
	(Late::go): Setup builtin types.
	* resolve/rust-late-name-resolver-2.0.h:
	* resolve/rust-name-resolution-context.cc
	(NameResolutionContext::map_usage): New function.
	* resolve/rust-name-resolution-context.h: Likewise.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-name-resolution-context.h: Store a reference to the
	mappings.
	* resolve/rust-name-resolution-context.cc
	(NameResolutionContext::NameResolutionContext): Likewise.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit): Use
	the DefaultResolver in the toplevel visitor.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* Make-lang.in: Compile late name resolver.
	* resolve/rust-late-name-resolver-2.0.cc: New file.
	* resolve/rust-late-name-resolver-2.0.h: New file.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-name-resolution-context.h: Add a Labels stack.

2024-01-30  M V V S Manoj Kumar  <mvvsmanojkumar@gmail.com>

	* parse/rust-parse-impl.h (Parser::parse_item): Likewise.
	(Parser::parse_vis_item): Likewise.
	(Parser::parse_async_item): Likewise.
	* parse/rust-parse.h: Made declaration for parse_async_item.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* lex/rust-lex.cc (Lexer::classify_keyword): Update keyword map name.
	* lex/rust-token.h (enum PrimitiveCoreType): Remove some deprecated
	comments.
	* util/rust-keyword-values.cc (get_keywords): Update the keyword map
	name.
	(RS_TOKEN): Define as empty
	(RS_TOKEN_KEYWORD_2015): Add the emission value.
	(RS_TOKEN_KEYWORD_2018): Likewise.
	* util/rust-keyword-values.h (RS_KEYWORD_LIST): Introduce the keyword
	list.
	(RS_TOKEN_KEYWORD_2018): Define multiple new keywords.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Replace raw value.
	* parse/rust-parse-impl.h (Parser::is_macro_rules_def): Likewise.
	(Parser::parse_item): Likewise.
	(Parser::parse_vis_item): Likewise.
	(Parser::parse_macro_rules_def): Likewise.
	(Parser::parse_union): Likewise.
	(Parser::parse_trait_impl_item): Likewise.
	(Parser::parse_stmt): Likewise.
	(Parser::parse_stmt_or_expr): Likewise.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-keyword-values.h (class WeakKeywords): Add new class with
	weak keyword constexpr.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Replace raw value
	with keyword call.
	* ast/rust-ast.h: Likewise.
	* parse/rust-parse-impl.h (Parser::parse_path_ident_segment): Likewise.
	(Parser::parse_macro_match_fragment): Likewise.
	(Parser::parse_extern_crate): Likewise.
	(Parser::parse_use_tree): Likewise.
	(Parser::parse_const_item): Likewise.
	(Parser::parse_literal_expr): Likewise.
	(Parser::parse_maybe_named_param): Likewise.
	(Parser::parse_pattern_no_alt): Likewise.
	(Parser::left_denotation): Likewise.
	(Parser::parse_path_in_expression_pratt): Likewise.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* lex/rust-token.h (enum PrimitiveCoreType): Add await keyword
	definition.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* lex/rust-token.h (enum PrimitiveCoreType): Change macro for
	underscore in token list.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* lex/rust-token.h (enum PrimitiveCoreType): Change enum macro calls.
	(RS_TOKEN_KEYWORD): Remove generic token keyword macro.
	(RS_TOKEN_KEYWORD_2015): Introduce keywords for edition 2015.
	(RS_TOKEN_KEYWORD_2018): Likewise with edition 2018.
	* lex/rust-token.cc (RS_TOKEN_KEYWORD): Remove old macro definition.
	(RS_TOKEN_KEYWORD_2015): Replace with 2015 definition...
	(RS_TOKEN_KEYWORD_2018): ... and 2018 definition.
	* util/rust-keyword-values.cc (RS_TOKEN_KEYWORD):  Likewise.
	(RS_TOKEN_KEYWORD_2015): Likewise.
	(RS_TOKEN_KEYWORD_2018): Likewise.
	* util/rust-keyword-values.h (RS_TOKEN_KEYWORD): Likewise.
	(RS_TOKEN_KEYWORD_2015): Likewise.
	(RS_TOKEN_KEYWORD_2018): Likewise.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* lex/rust-token.h (enum PrimitiveCoreType): Change keyword suffix from
	tok to kw.
	* ast/rust-ast-collector.cc (TokenCollector::visit): Update suffix to
	match the new declaration.
	* lex/rust-lex.cc (Lexer::parse_raw_identifier): Likewise.
	* parse/rust-parse-impl.h (can_tok_start_type): Likewise.
	(Parser::parse_item): Likewise.
	(Parser::parse_vis_item): Likewise.
	(Parser::parse_extern_crate): Likewise.
	(Parser::parse_function): Likewise.
	(Parser::parse_function_qualifiers): Likewise.
	(Parser::parse_struct): Likewise.
	(Parser::parse_enum): Likewise.
	(Parser::parse_static_item): Likewise.
	(Parser::parse_trait_item): Likewise.
	(Parser::parse_inherent_impl_item): Likewise.
	(Parser::parse_trait_impl_item): Likewise.
	(Parser::parse_extern_block): Likewise.
	(Parser::parse_external_item): Likewise.
	(Parser::parse_stmt): Likewise.
	(Parser::parse_return_expr): Likewise.
	(Parser::parse_match_expr): Likewise.
	(Parser::parse_type): Likewise.
	(Parser::parse_for_prefixed_type): Likewise.
	(Parser::parse_type_no_bounds): Likewise.
	(Parser::parse_stmt_or_expr): Likewise.
	* parse/rust-parse.cc (peculiar_fragment_match_compatible): Likewie.
	* util/rust-token-converter.cc (convert): Likewise.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* checks/errors/rust-ast-validation.cc (ASTValidation::visit): Add
	zero field check during ast validation pass.
	* checks/errors/rust-ast-validation.h: Add union visit function
	prototype.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* checks/errors/rust-ast-validation.cc (ASTValidation::visit): Add
	ast validation pass to reject variadic arguments on regular functions.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* checks/errors/rust-ast-validation.cc (ASTValidation::visit): Add auto
	trait associated item check in AST validation pass.
	* parse/rust-parse-impl.h: Remove old error emission done during
	parsing pass.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* checks/errors/rust-ast-validation.cc (ASTValidation::visit): Reject
	auto traits with super traits.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* checks/errors/rust-ast-validation.cc (ASTValidation::visit): Add
	check for generics on auto traits.
	* checks/errors/rust-ast-validation.h: Add visit function prototype.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-forever-stack.hxx: Remove debug log.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): Format.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-forever-stack.h: New method.
	* resolve/rust-forever-stack.hxx: Likewise.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-forever-stack.h: New method.
	* resolve/rust-forever-stack.hxx: Likewise.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-forever-stack.hxx: Do not copy segment when
	dereferencing iterator in `find_starting_point`.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-forever-stack.h: Fix `ForeverStack::resolve_path`
	signature.
	* resolve/rust-forever-stack.hxx: Likewise.
	* resolve/rust-early-name-resolver-2.0.cc (Early::visit): Use new API.
	(Early::visit_attributes): Likewise.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-forever-stack.hxx: Add specific behavior for
	`ForeverStack::get` when dealing with labels.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-forever-stack.h: Improve resolve_path API.
	* resolve/rust-forever-stack.hxx: Likewise and fix implementation.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-rib.h: Add Namespace enum.

2024-01-30  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-ast.h: Change Path API to be more consistent.
	* ast/rust-path.h: Likewise.
	* ast/rust-ast-collector.cc (TokenCollector::visit): Use new API.
	* resolve/rust-ast-resolve-item.cc (ResolveItem::visit): Likewise.
	* resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): Likewise.
	* resolve/rust-forever-stack.hxx: Likewise.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* parse/rust-parse-impl.h (Parser::parse_function): Early return on
	unrecoverable errors.
	(Parser::parse_trait_item): Likewise.
	(Parser::parse_self_param): Update return type.
	* parse/rust-parse.h (enum ParseSelfError): Add enumeration to describe
	different self parameter parsing errors.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* parse/rust-parse-impl.h (Parser::parse_self_param): Fix the loop
	exit condition.

2024-01-30  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-item.h (struct Visibility): Move Visibility from here...
	* ast/rust-ast.h (struct Visibility): ...to here.
	* parse/rust-parse-impl.h (Parser::parse_trait_item): Parse visibility
	before giving it back to the item parsing function.
	(Parser::parse_trait_type): Add visibility modifier.
	* parse/rust-parse.h (RUST_PARSE_H): Change function prototype.

2024-01-18  Arthur Cohen  <arthur.cohen@embecosm.com>

	* backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address):
	Cast size_t value to unsigned long.
	* expand/rust-proc-macro.cc (load_macros): Likewise.
	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Likewise.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <tamaron1203@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Move from here...
	* ast/rust-ast-visitor.h: ... to here.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* checks/errors/rust-ast-validation.cc (ASTValidation::visit): Change
	reported error location to the lifetime location.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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<AST::Function> 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  <pierre-emmanuel.patry@embecosm.com>

	* parse/rust-parse-impl.h (Parser::parse_named_function_param): Add
	new parsing ability.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-item.h: Add a getter to check if a given function is
	variadic.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* parse/rust-parse-impl.h (Parser::parse_function_param): Parse
	variadic functions.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* rust-session-manager.cc (Session::compile_crate): Add call to ast
	validation.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast.h: Add override specifier.
	* ast/rust-item.h: Likewise.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <dev@jakubdupak.com>

	* 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  <dev@jakubdupak.com>

	* hir/rust-ast-lower-expr.cc (ASTLoweringExpr::visit): Fix typo.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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 <iomanip>.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* backend/rust-compile-context.h: Add getters.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* backend/rust-compile-base.cc (HIRCompileBase::setup_abi_options):
	Reformat uncorrectly formatted comments.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* backend/rust-compile-context.h (struct CustomDeriveInfo): Add
	new derive procedural macro metadata information holder for
	mappings.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast.h: Add const getter.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <dev@jakubdupak.com>

	* 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  <dev@jakubdupak.com>

	* checks/errors/borrowck/dev-notes.md: New file.

2024-01-16  Jakub Dupak  <dev@jakubdupak.com>

	* checks/errors/borrowck/bir-design-notes.md: New file.

2024-01-16  Jakub Dupak  <dev@jakubdupak.com>

	* 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  <dev@jakubdupak.com>

	* checks/errors/borrowck/rust-bir-builder-expr-stmt.cc (ExprStmtBuilder::visit): Continue.
	(ExprStmtBuilder::setup_loop): Continue.

2024-01-16  Jakub Dupak  <dev@jakubdupak.com>

	* checks/errors/borrowck/rust-bir-dump.cc (simplify_cfg): Detech infinite loops.

2024-01-16  Jakub Dupak  <dev@jakubdupak.com>

	* 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  <dev@jakubdupak.com>

	* 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  <dev@jakubdupak.com>

	* 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  <dev@jakubdupak.com>

	* 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  <dev@jakubdupak.com>

	* 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  <dev@jakubdupak.com>

	* 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  <dev@jakubdupak.com>

	* 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  <dev@jakubdupak.com>

	* lang.opt: CLI flag.
	* rust-session-manager.cc (Session::compile_crate): Guard execution.

2024-01-16  Jakub Dupak  <dev@jakubdupak.com>

	* 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  <dev@jakubdupak.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-pattern.h: Add override modifier to overriding methods.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <dev@jakubdupak.com>

	* hir/tree/rust-hir-path.h: Avoid copy in getter.

2024-01-16  Jakub Dupak  <dev@jakubdupak.com>

	* 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  <dev@jakubdupak.com>

	* 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  <dev@jakubdupak.com>

	* hir/tree/rust-hir-expr.h: Add getter for name.

2024-01-16  Jakub Dupak  <dev@jakubdupak.com>

	* 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  <dev@jakubdupak.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* hir/rust-ast-lower-implitem.h
	(ASTLoweringImplItem::translate): Take AssociatedItem as parameter.
	(ASTLoweringTraitItem::translate): Likewise.

2024-01-16  Jakub Dupak  <dev@jakubdupak.com>

	* backend/rust-compile-expr.cc (CompileExpr::visit): Bail on labelled block.

2024-01-16  Jakub Dupak  <dev@jakubdupak.com>

	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Add loop ctx.

2024-01-16  Jakub Dupak  <dev@jakubdupak.com>

	* resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Resolve using loop logic.

2024-01-16  Jakub Dupak  <dev@jakubdupak.com>

	* 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  <dev@jakubdupak.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <tamaron1203@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-macro.h: Add PATH fragment to follow set restrictions.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* parse/rust-parse-impl.h (Parser::parse_expr): Fix range from expr.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* parse/rust-parse-impl.h (Parser::parse_expr): Add comma delimiter.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <dev@jakubdupak.com>

	* 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  <dev@jakubdupak.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* parse/rust-parse-impl.h (Parser::parse_type_param_bound): Add missing
	case for lifetime switch.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <tamaron1203@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <dkm@kataplop.net>

	* 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  <dev@jakubdupak.com>

	* parse/rust-parse-impl.h: Add missing token consumption

2024-01-16  Mohammed Rizan Farooqui  <rizanfarooqui@gmail.com>

	* 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  <dev@jakubdupak.com>

	* backend/rust-compile.cc (HIRCompileBase::coercion_site1): Fix wrong cast

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* rust-session-manager.cc (Session::expansion): Add early break on
	error.

2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <dkm@kataplop.net>

	* hir/rust-hir-dump.cc (Dump::debug): New.
	(debug): New.
	* hir/rust-hir-dump.h (debug): New.

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <mahadtxt@gmail.com>

	* typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit):
	Added ErrorCode & more fixit hints.

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <dkm@kataplop.net>

	* 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  <dkm@kataplop.net>

	* 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  <powerboat9.gamer@gmail.com>

	* backend/rust-compile-intrinsic.cc
	(get_identifier): Add declaration.
	(assume_handler): New.
	(generic_intrinsics): Add assume_handler entry.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* rust-gcc.cc
	(Backend::wchar_type): Store static wchar tree.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* rust-gcc.cc
	(namespace Backend):
	Use namespace definition instead of qualified names.

2024-01-16  liushuyu  <liushuyu011@gmail.com>

	* backend/rust-compile-intrinsic.cc: add `copy`
	intrinsics and make `copy_nonoverlapping` handler more generic

2024-01-16  liushuyu  <liushuyu011@gmail.com>

	* backend/rust-builtins.cc: add `expect` builtin definition.
	* backend/rust-compile-intrinsic.cc: add `likely` and `unlikely`
	intrinsics handler.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* rust_error_codes.def: Moved to...
	* rust-error-codes.def: ...here...
	* rust-diagnostics.h: ...and update references.

2024-01-16  Guillaume Gomez  <guillaume1.gomez@gmail.com>

	* 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  <dave@dmetwo.org>

	* 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  <guillaume1.gomez@gmail.com>

	* backend/rust-compile-intrinsic.cc: Remove unused argument

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
	Added new error message, rich location and error code.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* expand/rust-proc-macro.cc (tokenstream_from_string): Change
	linemap null pointer to the current linemap.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit):
	Add proc macro definition insertion.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <powerboat9.gamer@gmail.com>

	* rust-backend.h
	(Backend::write_export_data): Remove.
	* rust-gcc.cc
	(Backend::write_export_data): Remove.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* rust-session-manager.cc (Session::load_extern_crate): Change
	variable name, add temporaries and comments.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast.h: Add getters.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast.h (struct Crate): Add proc macro members.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast.h (class BangProcMacro): Add new proc macro
	abstraction.
	(class AttributeProcMacro): Likewise.
	(class CustomDeriveProcMacro): Likewise.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast.cc (Attribute::get_traits_to_derive): Convert
	tokenstream to path list.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast.cc (Attribute::is_derive): Remove tokenstream
	condition.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <herron.philip@googlemail.com>

	* backend/rust-compile-expr.cc (CompileExpr::visit): use a temp for the value

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
	Added error code.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* checks/errors/privacy/rust-privacy-reporter.cc
	(PrivacyReporter::check_for_privacy_violation):
	Added errorcode & richlocation.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* typecheck/rust-hir-type-check-expr.cc
	(TypeCheckExpr::visit): Expect if conditions to have type bool.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <tamaron1203@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit):
	Added richlocation & error code.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <herron.philip@googlemail.com>

	* backend/rust-compile-intrinsic.cc (move_val_init_handler): mark as side-effects

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* backend/rust-compile-intrinsic.cc (uninit_handler): Update fndecl attributes

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* backend/rust-compile-intrinsic.cc (op_with_overflow_inner): fix use before init

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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<void):
	Remove type alias.
	* rust-diagnostics.h: Change collection type.
	* rust-session-manager.cc (Session::expansion): Change
	collection container.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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<void):
	Add type definition for collection.
	* resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit):
	Register macro rule definition in mappings.
	* rust-session-manager.cc (Session::expansion): Add macro
	resolve error collection.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
	Added error code and rich location.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* typecheck/rust-tyty.cc (BaseType::satisfies_bound):
	Added errorcode and user-friendly error message.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <herron.philip@googlemail.com>

	* backend/rust-compile-type.cc (TyTyResolveCompile::visit): do a final lookup

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* parse/rust-parse-impl.h (Parser::parse_generic_params):
	Added more user friendly message.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* expand/rust-macro-builtins.cc
	(MacroBuiltin::include_str_handler): Use vector::data.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* typecheck/rust-hir-type-check-type.cc:
	Added last variant name, errorcode & rich location. for enum candidates.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <tamaron1203@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait):
	Updated errorcode & more userfriendly message.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* hir/rust-ast-lower-item.cc (ASTLoweringItem::visit):
	Added more helpful error message.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <mahadtxt@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* backend/rust-compile-base.cc (HIRCompileBase::handle_inline_attribute_on_fndecl):
	Added rich_location & error code.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* parse/rust-parse-impl.h (Parser::parse_trait):
	added errorcode & updated error message.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* parse/rust-parse-impl.h (Parser::parse_outer_attribute):
	Added errorcode & updated error function.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* backend/rust-compile-base.cc (HIRCompileBase::handle_inline_attribute_on_fndecl):
	Added rich_location & error code.

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* rust-diagnostics.cc: Switch from new[] to xcalloc

2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>

	* util/make-rust-unicode.py: Add type annotation

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address):
	use the single candidate

2024-01-16  Marc Poulhiès  <dkm@kataplop.net>

	* hir/rust-hir-dump.cc (Dump::visit): Remove useless if/else
	already handled by visit_field.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* util/rust-punycode.cc: Add CHECKING_P guard.

2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>

	* backend/rust-mangle.cc (legacy_mangle_name): Use Unicode escape

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): remove hack

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <tamaron1203@gmail.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <dkm@kataplop.net>

	* 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  <mahadtxt@gmail.com>

	* typecheck/rust-casts.cc (TypeCastRules::emit_cast_error):
	Refactored ErrorCodes & error messages.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* backend/rust-compile-base.cc:
	Added ErrorCode.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_qualifiers):
	called error function.
	(ASTLoweringBase::lower_extern_block): likewise.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <tamaron1203@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* backend/rust-compile.cc (HIRCompileBase::verify_array_capacities):
	Added ErrorCode.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* typecheck/rust-hir-type-check.cc (TypeResolution::Resolve):
	added errorcode.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <tamaron1203@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go):
	Added ErrorCode.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-common.h (enum_to_str): Remove extra semicolon after
	the function.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* checks/errors/rust-const-checker.cc (ConstChecker::check_function_call):
	Added errorcode.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args):
	Added errorcode.

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* ast/rust-macro.h: Add new method to `MacroRulesDefinition` to allow
	getting the `MacroKind` contained.

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* rust-session-manager.cc
	(Session::expansion): Use new `Early` name resolution 2.0 pass

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* resolve/rust-name-resolution-context.cc
	(Resolver::insert): Do not call into `rust_unreachable` when resolving
	macros anymore.

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* resolve/rust-rib.h: Add shadowing parameter. Make kind field public.
	* resolve/rust-rib.cc (Rib::insert): Likewise.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit):
	refactored message and called error function.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* checks/errors/rust-feature-gate.cc (FeatureGate::check):
	errorcode support for unknown feature.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* typecheck/rust-unify.cc (UnifyRules::emit_type_mismatch):
	refactored & called error function.

2024-01-16  Marc Poulhiès  <dkm@kataplop.net>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <tamaron1203@gmail.com>

	* 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  <arthur.cohen@embecosm.com>

	* resolve/rust-forever-stack.hxx: assert() -> rust_assert()

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <mahadtxt@gmail.com>

	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
	called error function.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <dkm@kataplop.net>

	* 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  <herron.philip@googlemail.com>

	* 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  <tamaron1203@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* util/rust-unicode.cc: Add CHECKING_P guard.

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
	We need to check if a function context exists

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* rust-backend.h: Include "rust-gcc.h".
	(class Gcc_backend): Move to ...
	* rust-gcc.cc (class Gcc_backend): ... here.

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-type-check-item.cc: add is_error check

2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>

	* Make-lang.in: Add rust-unicode.o
	* rust-lang.cc (run_rust_tests): Add test.
	* rust-system.h: Include <array>
	* 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  <arthur.cohen@embecosm.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
	refactored error message & called error function.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* expand/rust-proc-macro.cc (literal_from_string): Add callback
	function.
	(load_macros_array): Likewise.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* expand/rust-proc-macro.cc: Remove static modifier and move to
	an anonymous namespace.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* expand/rust-proc-macro.cc (available): Add symbol
	registration.
	(load_macros_array): Likewise.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* expand/rust-proc-macro.cc (load_macros_array): Symbol rename.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::go):
	Add visibility verification.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast.h: Remove NodeId from identifiers.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* typecheck/rust-hir-type-check-implitem.cc (TypeCheckTopLevelExternItem::visit):
	Added check for error code support.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItemWithTrait::visit):
	called error function.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* parse/rust-parse-impl.h
	(Parser::parse_macro_match): Use token_id_is_keyword.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-attributes.h (RUST_ATTRIBUTES_H): Add missing header
	guard.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <powerboat9.gamer@gmail.com>

	* ast/rust-ast-collector.h
	(TokenCollector::visit):
	Replace default argument with UNDEF_LOCATION.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit):
	refactored and call error function.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-attributes.cc (AttributeChecker::visit): Add help
	message.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-attributes.cc (AttributeChecker::visit): Add
	attribute input check.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-attributes.cc (AttributeChecker::visit): Add
	attribute check on functions.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-token-converter.cc (from_ident): Adapt code to new
	constructor.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* resolve/rust-forever-stack.h: New file.
	* resolve/rust-forever-stack.hxx: New file.

2024-01-16  Marc Poulhiès  <dkm@kataplop.net>

	* 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  <arthur.cohen@embecosm.com>
	    Matthew Jasper  <mjjasper1@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit):
	called error function.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* rust-gcc.h: Add include guard.

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* 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  <mahadtxt@gmail.com>

	* checks/errors/rust-feature-gate.cc (FeatureGate::gate):
	called error function.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* backend/rust-compile-intrinsic.cc (Intrinsics::compile):
	called error function.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* checks/errors/rust-unsafe-checker.cc (check_unsafe_call):
	called error function.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <dkm@kataplop.net>

	* hir/tree/rust-hir-type.h (MaybeNamedParam::get_type): Remove
	rust_assert.
	(BareFunctionType::get_return_type): Likewise.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast.h: Add virtual destructor.
	* expand/rust-macro-expand.h: Likewise.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <dkm@kataplop.net>

	* 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  <mahadtxt@gmail.com>

	* hir/rust-ast-lower-base.cc (struct_field_name_exists):
	called error function.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* resolve/rust-ast-verify-assignee.h: called error function.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* 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  <arthur.cohen@embecosm.com>

	* util/expected.h: Adapt class to GCC requirements.

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* util/expected.h: New file.

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* util/optional.h: Adapt for GCC.

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* util/optional.h: New file.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Fix abit
	output format.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Fix
	external item trailing semicolon and outer attributes.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Output
	outer attributes on external functions.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Fix method
	qualifier output.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Add where
	clause.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Add outer
	attributes to collector output.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Add
	variadics in collector output.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Add
	generics.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Fix generic
	output.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Reformat
	trait impl block.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Output
	generic in inherent impl.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-dump.cc (Dump::require_spacing): Change dollar
	spacing rule.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Change
	formatting.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Fix trait
	impl block output.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Fix binding
	args.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Output
	function qualifiers after visibility.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Fix self
	param output.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <powerboat9.gamer@gmail.com>

	* expand/rust-macro-invoc-lexer.h
	(class MacroInvocLexerBase): New.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit):
	called error function and changed error message
	similiar to rustc.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* typecheck/rust-hir-type-check-implitem.cc (TypeCheckImplItemWithTrait::visit):
	called error function

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* typecheck/rust-hir-type-check-struct.cc (TypeCheckStructExpr::resolve):
	called error function.

2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* expand/rust-macro-expand.cc
	(transcribe_expression): Skip trailing semicolon.

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* typecheck/rust-hir-type-check-item.cc: called error function.

2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <dkm@kataplop.net>

	* 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  <mahadtxt@gmail.com>

	* typecheck/rust-hir-path-probe.h: called error function

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* typecheck/rust-tyty-subst.cc (SubstitutionRef::get_mappings_from_generic_args):
	called error function

2024-01-16  Marc Poulhiès  <dkm@kataplop.net>

	* 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  <tamaron1203@gmail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <mahadtxt@gmail.com>

	* typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): called rust_error_at

2024-01-16  Marc Poulhiès  <dkm@kataplop.net>

	* 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  <dkm@kataplop.net>

	* 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  <dkm@kataplop.net>

	* 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  <dkm@kataplop.net>

	* 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  <dkm@kataplop.net>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <tamaron1203@gmail.com>

	* lex/rust-lex.cc (Lexer::parse_byte_char):add check for range of codepoint

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Add
	semicolon in extern blocks.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <tamaron1203@gmail.com>

	* lex/rust-lex.cc (Lexer::build_token):add check for all kinds of whitespaces

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast.h: Add default constructors.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <tamaron1203@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): called rust_error_at

2024-01-16  Muhammad Mahad  <mahadtxt@gmail.com>

	* typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): called rust_error_at

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <arthur.cohen@embecosm.com>

	* lang.opt: Add -frust-name-resolution-2.0 option

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-autoderef.cc (AutoderefCycle::cycle): add check for pointers

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <mahadtxt@gmail.com>

	* 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  <mjjasper1@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>
	    Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <mahadtxt@gmail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <mjjasper1@gmail.com>

	* 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  <mjjasper1@gmail.com>

	* 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  <mjjasper1@gmail.com>

	* ast/rust-ast-dump.cc (Dump::visit): Print macro invocations.

2024-01-16  Raiki Tamura  <tamaron1203@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* lex/rust-lex.cc
	(Lexer::classify_keyword): Check if iterator is valid before dereferencing.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* expand/rust-macro-expand.cc
	(MacroExpander::match_repetition): Remove redundant rust_error_at call.

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-unify.cc (UnifyRules::go): dont check bounds on placeholders

2024-01-16  tieway59  <tieway59@foxmail.com>

	* 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  <herron.philip@googlemail.com>

	* backend/rust-compile-base.cc (HIRCompileBase::resolve_method_address):
	match the fntype to the candidate

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <dave@dmetwo.org>

	* 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  <tieway59@foxmail.com>

	* typecheck/rust-hir-type-check-expr.cc: Remove obsolete error diagnostic

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* expand/rust-expand-visitor.cc (get_traits_to_derive): Change
	assertion to allow empty derive directives.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Fix
	attribute collection.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.h: Make trivial visitors public.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-attributes.cc: Add attribute to the table.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Move
	implementation from here...
	* ast/rust-ast-collector.h: ... to here.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* util/rust-optional.h
	(class Optional): Add volatile field to union.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* expand/rust-macro-substitute-ctx.cc
	(SubstituteCtx::substitute_metavar): Substitute crate metavar.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* parse/rust-parse-impl.h
	(Parser::null_denotation): Allow struct expression referencing.

2024-01-16  Charalampos Mitrodimas  <charmitro@gmail.com>

	* ast/rust-ast-dump.cc (Dump::visit):
	print literals based on their type.

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* expand/rust-macro-builtins.cc (MacroBuiltin::dummy): New function.
	* expand/rust-macro-builtins.h: Declare it.

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-token-converter.cc (convert): Use a variable instead
	of multiple nested calls.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-token-converter.cc (convert): Add implementation.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* ast/rust-ast-builder.cc: New file.
	* ast/rust-ast-builder.h: New file.

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* expand/rust-macro-invoc-lexer.cc: Add missing copyright header.
	* expand/rust-macro-substitute-ctx.cc: Likewise.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* rust-session-manager.h:
	Include "rust-optional.h".
	(struct TargetOptions):
	Store values in config key/value pairs as Optional<std::string> rather than std::string.
	* rust-session-manager.cc
	(TargetOptions::dump_target_options):
	Handle Optional<std::string> values.

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-casts.cc (TypeCastRules::check): do coercion
	(TypeCastRules::emit_cast_error): clang-format

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* resolve/rust-ast-resolve-pattern.cc: remove unused

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* resolve/rust-ast-resolve-item.cc (ResolveItem::visit): fix missing pop

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* backend/rust-compile-expr.cc (CompileExpr::visit): remove unused

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* expand/rust-macro-substitute-ctx.cc
	(SubstituteCtx::check_repetition_amount):
	Ignore single fragments while checking repetition amount.

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <dmalcolm@redhat.com>

	* typecheck/rust-hir-trait-reference.cc (TraitItemReference::is_optional): Remove
	stray semicolon.

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* 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  <mjjasper1@gmail.com>

	* resolve/rust-early-name-resolver.cc (EarlyNameResolver::accumulate_escaped_macros):
	Remove unnecessary visit.

2024-01-16  Matthew Jasper  <mjjasper1@gmail.com>

	* ast/rust-ast.cc (Attribute::check_cfg_predicate):
	Only check first item as a predicate.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* util/rust-optional.h
	(operator==): New for Optional<T> == Optional<U>.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* parse/rust-parse-impl.h
	(Parser::parse_attr_input): Parse AttrInputMacro.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-collector.cc (TokenCollector::visit): Propagate
	coretype hint.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* util/rust-optional.h
	(class Optional<T>): Improve inner state.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* ast/rust-macro.h
	(MacroInvocation::clone_macro_invocation_impl): Make public.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* util/rust-optional.h
	(struct std::hash<Optional<T>>): New.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* util/rust-optional.h
	(class Optional<T&>): Use pointers internally.

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-ast-dump.cc (Dump::visit): Implement dump for
	`TupleIndexExpr`.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <mjjasper1@gmail.com>

	* 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  <mjjasper1@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-token-converter.cc (dispatch_float_literals): Invert
	suffix condition.
	(dispatch_integer_literals): Likewise.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-token-converter.cc (convert): Fix style.
	(from_ident): Likewise.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-token-converter.cc (from_tokenstream): Add
	conversion of Ident structures.
	(from_ident): Likewise.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-token-converter.cc (from_punct): Add conversion
	implementation.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-token-converter.cc (from_punct): Add group
	conversion.
	(from_group): Likewise.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* util/rust-token-converter.cc (dispatch_float_literals): Remove
	suffixed temporary variable.
	(dispatch_integer_literals): Likewise.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::collect): Add
	conversion for byte string and string.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::collect): Add Ident
	conversion.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::collect): Add joint
	punct token conversion.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::collect): Add
	conversion for single punctuation tokens.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <mvvsmanojkumar@gmail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* backend/rust-compile-base.cc (HIRCompileBase::compile_function_body):
	add missing coercion_site codegen

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* backend/rust-compile-type.cc (TyTyResolveCompile::visit): add filter

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* checks/lints/rust-lint-unused-var.cc (UnusedVariables::Lint): use the decl not the expr

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* parse/rust-parse-impl.h
	(Parser::parse_trait_impl_function_or_method):
	Parse function/method qualifiers after "default".

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* backend/rust-compile-base.cc: add missing compile_locals call

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-ast.h (class AttrInputMetaItemContainer): Run clang-format.
	(class DelimTokenTree): Likewise.

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* expand/rust-macro-builtins.cc: Include bidirectional map.
	* util/bi-map.h: New file.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* ast/rust-ast.h
	(Stmt::is_expr): New.
	* ast/rust-stmt.h
	(ExprStmt::is_expr): New.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* expand/rust-macro-substitute-ctx.cc
	(SubstituteCtx::substitute_repetition): Fix out-of-bounds.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* Make-lang.in: Link against the static libproc_macro.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <powerboat9.gamer@gmail.com>

	* parse/rust-parse-impl.h
	(Parser::parse_generic_params):
	Handle parameter parsing error.

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-type-check-expr.cc: update for op overload

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::visit): use the predicate
	(TypeCheckExpr::resolve_segments): cleanup

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* typecheck/rust-hir-type-check-pattern.cc
	(TypeCheckPattern::visit): Type check StructPatternFieldIdentPat.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* hir/rust-ast-lower-pattern.cc
	(ASTLoweringPattern::visit): Lower StructPatternFieldIdentPat.

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* hir/rust-ast-lower-implitem.h: add missing where clause lowering

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* hir/tree/rust-hir-item.h: add get_locus() const

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* hir/tree/rust-hir-pattern.h
	(StructPatternFieldIdentPat::get_identifier): New.
	(StructPatternFieldIdentPat::get_pattern): New.

2024-01-16  Marc Poulhiès  <dkm@kataplop.net>

	* ast/rust-ast-dump.cc (Dump::visit): print parentheses around
	unique expression operand.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* rust-session-manager.cc
	(Session::enable_dump): Fix error messages.

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* util/rust-abi.cc (get_abi_from_string): add ABI mapping

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* typecheck/rust-hir-type-check-pattern.h: cleanup

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
	return so we dont hit undefined behaviour

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* backend/rust-compile-implitem.h: remove includes

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* backend/rust-compile-item.cc (CompileItem::visit): remove bad checks

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* lang.opt: add lang option flag
	* rust-lang.cc (grs_langhook_init_options_struct): enable by default

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-tyty-bounds.cc (TypeBoundPredicate::operator=):
	we are done if other is in an error state

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-dot-operator.cc (MethodResolver::select): verify it is a method

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* typecheck/rust-hir-type-check.h: new helper
	* typecheck/rust-typecheck-context.cc (TypeCheckContext::have_function_context):
	implementation

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-type-check.h: Add prototype
	* typecheck/rust-typecheck-context.cc (TypeCheckContextItem::get_defid): implementation

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-type-check-expr.cc: refactor

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* resolve/rust-ast-resolve-pattern.cc
	(PatternDeclaration::visit): Handle StructPatternFieldIdentPat.

2024-01-16  TieWay59  <tieway59@foxmail.com>

	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  <mvvsmanojkumar@gmail.com>

	* 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  <arthur.cohen@embecosm.com>

	* parse/rust-parse-impl.h (Parser::parse_reference_pattern): Do not
	call into `parse_pattern` anymore.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <sephirotheca17@gmail.com>

	* ast/rust-ast-dump.cc: fix bad formatting for associated type.

2024-01-16  Sergey Bugaev  <bugaevc@gmail.com>

	* hir/rust-ast-lower-expr.h, hir/rust-ast-lower-expr.cc:
	Lower AST::ErrorPropagationExpr to HIR::ErrorPropagationExpr

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix scope
	resolution token output.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::visit): Keep
	associated type.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::visit_function_common):
	Fix function body output.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* parse/rust-parse-impl.h (Parser::parse_outer_attribute): Fix
	attribute status.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* lex/rust-token.cc (Token::as_string): Fix lifetime string
	representation.

2024-01-16  Sergey Bugaev  <bugaevc@gmail.com>

	* resolve/rust-ast-resolve-expr.cc: Add "break rust" Easter egg

2024-01-16  Sergey Bugaev  <bugaevc@gmail.com>

	* resolve/rust-ast-resolve-expr.h,
	resolve/rust-ast-resolve-expr.cc: Add ResolveExpr::funny_error

2024-01-16  Sergey Bugaev  <bugaevc@gmail.com>

	* ast/rust-ast.h: Add AST::Kind::IDENTIFIER

2024-01-16  Sergey Bugaev  <bugaevc@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <gnu@kirmayer.eu>

	* parse/rust-parse-impl.h
	(Parser<ManagedTokenSource>::parse_macro_match_repetition):
	reject separator in `?` repetition

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::visit): Add struct
	name and curly braces to output tokenstream.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* parse/rust-parse-impl.h
	(Parser::parse_macro_match): Handle underscore.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix inner
	attribute tokenstream output.

2024-01-16  Marc Poulhiès  <dkm@kataplop.net>

	* 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  <thomas@codesourcery.com>

	* rust-lang.cc (grs_langhook_type_for_mode): Placate clang-format.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* typecheck/rust-hir-path-probe.cc: dont subst with a dynamic object

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* backend/rust-compile-resolve-path.cc (HIRCompileBase::query_compile): remove unused

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* backend/rust-compile-resolve-path.cc (HIRCompileBase::query_compile): call destructure

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* backend/rust-compile-expr.cc (CompileExpr::resolve_method_address):
	call path probe impl trait

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* expand/rust-expand-visitor.cc (ExpandVisitor::visit): Add call
	to attribute expansion function.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix ICE.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::visit): Remove
	default separator.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::visit): Visit inner
	attributes.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::visit): Change token
	type.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix existing
	and implement remaining attribute visitors.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor
	to the union's outer attributes.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::visit): Add call to
	inner attribute visitor.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::visit): Fix ICE.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::visit): Make comma
	mandatory.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <herron.philip@googlemail.com>

	* backend/rust-compile-item.cc (CompileItem::visit): unwrap the constant expression

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <micheletti.emanuele@hotmail.com>

	* typecheck/rust-casts.cc (TypeCastRules::cast_rules):
	case INTEGRAL handles TypeKind::CHAR

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* resolve/rust-ast-resolve-item.cc
	(ResolveTraitItems::visit): add name resolution self param
	(ResolveItem::visit): likewise

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* checks/errors/privacy/rust-privacy-reporter.cc
	(PrivacyReporter::check_base_type_privacy): allow error types to be permissive

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* lex/rust-token.cc (Token::as_string): Add type hint output.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::TokenStream): Add
	constructor.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor.
	* ast/rust-item.h: Add missing getters.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::visit): Add visitor.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-ast-tokenstream.cc (TokenStream::visit): Implement
	visitors.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* util/rust-attributes.cc: Add stable to the table of known attributes

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* parse/rust-parse-impl.h
	(Parser<ManagedTokenSource>::parse_expr_without_block):
	Remove direct array expression handling.

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* resolve/rust-ast-resolve-path.cc (ResolvePath::resolve_path): Set
	resolved_node_id when visiting root segment of SimplePath.

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-ast.h: Call SimplePath constructor differently in
	SimplePath::from_str

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* 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  <powerboat9.gamer@gmail.com>

	* ast/rust-pattern.h: Remove commented out code.

2024-01-16  emanuele-em  <micheletti.emanuele@hotmail.com>

	* typecheck/rust-casts.cc (TypeCastRules::cast_rules): BOOL removed from switch cases

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <herron.philip@googlemail.com>

	* typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit): return a TraitObject

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-trait-resolve.cc: don't inject extra inference variables

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-ast-dump.cc (Dump::visit): Remove extraneous semicolon when
	dumping macro rules.

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <turingki@yeah.net>
	    Thomas Schwinge  <thomas@codesourcery.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <mahadelr19@gmail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <mahadelr19@gmail.com>

	* resolve/rust-ast-resolve-pattern.h (class ResolvePattern): Removed.

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* backend/rust-compile-intrinsic.cc (move_val_init_handler): new intrinsice
	(uninit_handler): use a builtin memcpy

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-coercion.cc (TypeCoercionRules::select): use the result

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <mahadelr19@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <mahadelr19@gmail.com>

	* resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit):
	Push a Product context instead of an Or context.

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-inherent-impl-overlap.h (class ImplItemToName): remove

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* backend/rust-compile-expr.cc (CompileExpr::resolve_method_address): remove unused code

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* typecheck/rust-hir-dot-operator.cc (MethodResolver::select): add debug

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* typecheck/rust-tyty.h: cleanup ordering of header

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <frans.tage@gmail.com>

	* parse/rust-parse.cc: fix follow-sets

2024-01-16  Mahmoud Mohamed  <mahadelr19@gmail.com>

	* 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  <mahadelr19@gmail.com>

	* backend/rust-compile-expr.cc (CompileExpr::generate_closure_function):
	handle closure parameters pattern bindings using CompilePatternBindings visitor

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* 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  <powerboat9.gamer@gmail.com>

	* hir/tree/rust-hir-pattern.h
	(SlicePattern::get_items): Add.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <mahadelr19@gmail.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <dev@jakubdupak.com>

	* hir/rust-hir-dump.cc (Dump::visit): Simplify indentation dump to single line.

2024-01-16  Jakub Dupak  <dev@jakubdupak.com>

	* 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  <mahadelr19@gmail.com>

	* typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit):
	Add the missing infered type assignment

2024-01-16  Marc Poulhiès  <dkm@kataplop.net>

	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  <jfan30@u.rochester.edu>

	* 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  <mahadelr19@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* util/rust-lang-item.h
	(RustLangItem::ItemType): New enumerators.
	(RustLangItem::Parse): Parse new enumerators.
	(RustLangItem::ToString): Handle new enumerators.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <nikos-alexandris@protonmail.com>

	* 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  <mahadelr19@gmail.com>

	* parse/rust-parse-impl.h (Parser::parse_expr):
	split LEFT_SHIFT before null_denotation.

2024-01-16  Parthib  <parthibdutta02@gmail.com>

	* rust-object-export.cc: Modified
	* hir/rust-ast-lower-type.cc (rust_fatal_error): Removed
		(rust_assert): Added

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* resolve/rust-early-name-resolver.cc
	(EarlyNameResolver::visit):
	Check for closure parameter without given type.

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-typecheck-context.cc (TypeCheckContext::insert_resolved_predicate): remove

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* resolve/rust-ast-resolve-type.cc (ResolveRelativeQualTypePath::resolve_qual_seg): fix

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* ast/rust-path.h: add missing copy for node_id

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* rust-gcc.h: remove unused headers

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* typecheck/rust-tyty.cc (ParamType::get_name): call destructure

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-trait-resolve.cc: use unify_and infer

2024-01-16  goar5670  <mahadelr19@gmail.com>

	* parse/rust-parse-impl.h (Parser::parse_closure_param):
	Replace parse_pattern with parse_pattern_no_alt.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* parse/rust-parse-impl.h (Parser::parse_slice_pattern): Add
	closing square bracket check.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* parse/rust-parse-impl.h (Parser::parse_external_type_item):
	Fix compilation error due to unnecessary move.

2024-01-16  Abdul Rafey  <abdulrafeyq@gmail.com>

	* 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  <nikos-alexandris@protonmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* parse/rust-parse-impl.h (Parser::parse_pattern_no_alt): Handle
	RestPattern correctly.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* ast/rust-pattern.h (class RestPattern): Add NodeId as well as
	the clone_impl function.

2024-01-16  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* parse/rust-parse-impl.h (Parser::null_denotation): Fix if let
	parsing.

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* backend/rust-compile-intrinsic.cc (op_with_overflow_inner): wraps op_with_overflow
	(std::function<tree): likewise
	(op_with_overflow): generate the intrinsic based on the tree_code op

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* 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  <mxlol233@outlook.com>

	* 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  <powerboat9.gamer@gmail.com>

	* 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  <mahadelr19@gmail.com>

	* typecheck/rust-casts.cc (TypeCastRules::cast_rules): Perform destructure on `from` type.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <powerboat9.gamer@gmail.com>

	* typecheck/rust-hir-type-check-pattern.cc
	(TypeCheckPattern::visit): Improve error messages.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* typecheck/rust-unify.cc (UnifyRules::go): fix inference check

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* typecheck/rust-unify.cc (UnifyRules::go): respect the emit_errors flag

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* typecheck/rust-unify.cc (UnifyRules::go): allow lhs infer vars

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <herron.philip@googlemail.com>

	* typecheck/rust-unify.cc (UnifyRules::Resolve): refactor
	(UnifyRules::commit): refactor
	* typecheck/rust-unify.h: likewise

2024-01-16  Philip Herron  <herron.philip@googlemail.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <franzohouser@gmail.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* expand/rust-macro-invoc-lexer.cc (MacroInvocLexer::split_current_token):
	Add proper implementation.

2024-01-16  Arthur Cohen  <arthur.cohen@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <pierre-emmanuel.patry@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <arthur.cohen@embecosm.com>

	* 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  <mxlol233@outlook.com>

	* checks/errors/rust-feature-gate.cc: Add implementations
	for `rustc_attri`.
	* checks/errors/rust-feature-gate.h: Likewise.

2024-01-16  Owen Avery  <powerboat9.gamer@gmail.com>

	* 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  <dmalcolm@redhat.com>

	* lang.opt.urls: New file, autogenerated by
	regenerate-opt-urls.py.

2023-12-14  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>
	    Thomas Schwinge  <thomas@codesourcery.com>

	* config-lang.in: Add libgrust as a target module for the rust
	language.

2023-11-19  David Malcolm  <dmalcolm@redhat.com>

	* rust-location.h: Include "rich-location.h".

2023-10-20  Patrick Palka  <ppalka@redhat.com>

	PR rust/111899
	* backend/rust-constexpr.cc (potential_constant_expression_1):
	Remove NON_DEPENDENT_EXPR handling.
	* backend/rust-tree.cc (mark_exp_read): Likewise.
	(mark_use): Likewise.
	(lvalue_kind): Likewise.

2023-09-28  Richard Sandiford  <richard.sandiford@arm.com>

	* backend/rust-constexpr.cc (rs_fold_indirect_ref): Remove unused
	variables.

2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>

	* rust-session-manager.cc (Session::init): Call
	targetrustm.rust_os_info.
	* rust-target.def (rust_os_info): New hook.

2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>

	* rust-lang.cc (rust_add_target_info): Remove sorry.
	* rust-session-manager.cc: Replace include of target.h with
	include of tm.h and rust-target.h.
	(Session::init): Call targetrustm.rust_cpu_info.
	* rust-target.def (rust_cpu_info): New hook.
	* rust-target.h (rust_add_target_info): Declare.

2023-09-21  Iain Buclaw  <ibuclaw@gdcproject.org>

	* rust-target-def.h: New file.
	* rust-target.def: New file.
	* rust-target.h: New file.

2023-09-11  Parthib  <94271200+Parthib314@users.noreply.github.com>

	* Make-lang.in: Removed rust-gcc-diagnostics object file.
	* rust-diagnostics.cc (rust_be_get_quotechars): Added from original file.
		(rust_be_internal_error_at): Likewise.
		(rust_be_error_at): Likewise.
		(class rust_error_code_rule): Likewise.
		(rust_be_warning_at): Likewise.
		(rust_be_fatal_error): Likewise.
		(rust_be_inform): Likewise.
		(rust_be_debug_p): Likewise.
	* rust-gcc-diagnostics.cc: Removed.

2023-09-07  David Malcolm  <dmalcolm@redhat.com>

	* rust-diagnostics.cc (rust_error_at): New overload.
	* rust-diagnostics.h (struct ErrorCode): New struct.
	(rust_error_at): New.
	(rust_be_error_at): Likewise.
	* rust-gcc-diagnostics.cc (class rust_error_code_rule): New class.
	(rust_be_error_at): New function.
	* typecheck/rust-casts.cc (TypeCastRules::emit_cast_error): Emit E0054
	when reporting invalid cast error.

2023-07-05  Robin Dapp  <rdapp@ventanamicro.com>
	    Juzhe-Zhong  <juzhe.zhong@rivai.ai>

	* backend/rust-tree.cc (c_common_type_for_mode): Ditto.

2023-06-22  Paul E. Murphy  <murphyp@linux.ibm.com>

	* rust-object-export.cc [TARGET_AIX]: Rename and update usage to
	TARGET_AIX_OS.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* parse/rust-parse-impl.h
	(Parser::parse_stmt): Handle unsafe expression statements.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* parse/rust-parse-impl.h
	(Parser::parse_expr_stmt): Remove hypothetical unsafe + expr_stmt_without_block handling.

2023-04-06  M V V S Manoj Kumar  <mvvsmanojkumar@gmail.com>

	* ast/rust-ast-full-decls.h (class InlineAsm):Added class declaration.
	* ast/rust-expr.h (class InlineAsm):Added class definition.

2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>

	* rust-diagnostics.h (struct Error): Add new Kind enum and various new
	static constructors to allow for hints as well.
	* rust-diagnostics.cc (Error::Error): Use new `kind` field properly.
	* checks/errors/privacy/rust-visibility-resolver.cc
	(VisibilityResolver::resolve_module_path): Use new Error API.
	* expand/rust-macro-builtins.cc (MacroBuiltin::include_handler): Likewise.
	* expand/rust-macro-expand.cc (parse_many): Likewise.
	(transcribe_type): Likewise.
	* parse/rust-parse-impl.h (Parser::parse_crate): Likewise.
	* rust-session-manager.cc (Session::handle_crate_name): Likewise.
	* ast/rust-ast.cc (Module::load_items): Likewise.

2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-ast.h: Keep location in TraitItem base class
	* ast/rust-item.h (class TraitItemFunc): Use base class location instead.
	(class TraitItemMethod): Likewise.
	(class TraitItemConst): Likewise.
	(class TraitItemType): Likewise.
	* ast/rust-macro.h: Likewise.

2023-04-06  SainiAditya1  <Adityasaini10012001@outlook.com>

	* hir/tree/rust-hir-full-test.cc: Moved to...
	* hir/tree/rust-hir.cc: ...here.
	* Make-lang.in: Rename rust-hir-full-test.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* ast/rust-ast-dump.cc
	(Dump::visit): Add AltPattern visitor.
	* ast/rust-ast-dump.h:
	(Dump::visit): Add AltPattern visitor.
	* ast/rust-ast-full-decls.h
	(class AltPattern): Add declaration.
	* ast/rust-ast-visitor.h:
	(ASTVisitor::visit): Add AltPattern visitor.
	* ast/rust-ast.cc
	(AltPattern::as_string): Add definition.
	(AltPattern::accept_vis): Add definition.
	* ast/rust-pattern.h
	(class AltPattern): Add declaration.
	* checks/errors/rust-feature-gate.h:
	(FeatureGate::visit) Add AltPattern visitor
	* expand/rust-attribute-visitor.cc
	(AttrVisitor::visit): Add AltPattern visitor.
	* expand/rust-attribute-visitor.h:
	(AttrVisitor::visit): Add AltPattern visitor.
	* hir/rust-ast-lower-base.cc
	(ASTLoweringBase::visit): Add AltPattern visitor.
	* hir/rust-ast-lower-base.h:
	(ASTLoweringBase::visit): Add AltPattern visitor.
	* resolve/rust-ast-resolve-base.cc
	(ResolverBase::visit): Add AltPattern visitor.
	* resolve/rust-ast-resolve-base.h:
	(ResolverBase::visit): Add AltPattern visitor.
	* resolve/rust-early-name-resolver.cc
	(EarlyNameResolver::visit): Add AltPattern visitor.
	* resolve/rust-early-name-resolver.h:
	(EarlyNameResolver::visit): Add AltPattern visitor.
	* util/rust-attributes.cc
	(AttributeChecker::visit): Add AltPattern visitor.
	* util/rust-attributes.h:
	(AttributeChecker::visit): Add AltPattern visitor.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* ast/rust-pattern.h: Fix formatting.

2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>

	* expand/rust-macro-builtins.cc (MacroBuiltin::include_handler): Do not
	return nullptr token in expansion of `include!()`

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* checks/errors/rust-feature-gate.h: Add trailing newline before EOF.

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-trait-reference.cc (TraitReference::clear_associated_types): make const
	(TraitReference::clear_associated_type_projections): new interface
	* typecheck/rust-hir-trait-reference.h:
	* typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait): refactor
	(TraitItemReference::associated_type_reset): reset projections
	* typecheck/rust-hir-type-bounds.h:
	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): fix bounds
	* typecheck/rust-tyty-bounds.cc (TypeBoundsProbe::TypeBoundsProbe): refactor into cc file
	(TypeBoundsProbe::Probe): refactor
	(TypeBoundsProbe::is_bound_satisfied_for_type): likewise
	(TypeBoundsProbe::assemble_sized_builtin): add builtin for Sized
	(TypeCheckBase::get_predicate_from_bound): refactor
	(TypeBoundPredicate::lookup_associated_type): refactor
	* typecheck/rust-tyty-subst.cc (SubstitutionRef::lookup_associated_impl)
	(SubstitutionRef::prepare_higher_ranked_bounds): new interface to clear hanging bounds
	(SubstitutionRef::monomorphize): refactor
	* typecheck/rust-tyty-subst.h:
	* typecheck/rust-tyty.cc (BaseType::get_locus): helper
	(BaseType::satisfies_bound): ensure bounds are satisfied and assoicated types
	(ParamType::ParamType): new field in constructor
	(ParamType::clone): update clone
	(ParamType::set_implicit_self_trait): new interface
	(ParamType::is_implicit_self_trait): likewise
	* typecheck/rust-tyty.h: cleanup
	* util/rust-hir-map.cc (Mappings::Mappings): builtin marker
	(Mappings::~Mappings): delete marker
	(Mappings::lookup_builtin_marker): lookup
	* util/rust-hir-map.h: update header

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* hir/tree/rust-hir-item.h: implement virtual function
	* hir/tree/rust-hir.h: add virtual function

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* Make-lang.in: add new dependancy
	* typecheck/rust-hir-type-check-base.cc (TypeCheckBase::query_type): refactor
	* typecheck/rust-hir-type-check-base.h: refactor
	* typecheck/rust-hir-type-check.h (RUST_HIR_TYPE_CHECK): refactor
	* typecheck/rust-type-util.cc: New file.
	* typecheck/rust-type-util.h: New file.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* expand/rust-macro-builtins.cc
	(MacroBuiltin::include_str_handler): Add check for valid UTF-8.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* parse/rust-parse-impl.h
	(Parser::parse_grouped_or_tuple_pattern): Add support for empty tuple patterns.

2023-04-06  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* lex/rust-lex.h: Add file type check.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* backend/rust-compile-pattern.cc
	(CompilePatternLet::visit): Simplify WildcardPattern compilation for let statements.
	* backend/rust-compile-var-decl.h:
	(CompileVarDecl::visit): Remove variable declaration for WildcardPattern.
	* resolve/rust-ast-resolve-pattern.h:
	(PatternDeclaration::visit): Remove name resolution for WildcardPattern.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* typecheck/rust-tyty-call.cc
	(TypeCheckCallExpr::visit): Add variadic argument type checking.
	(TypeCheckCallExpr::visit): Fix comment spelling ("varadic").

2023-04-06  mxlol233  <mxlol233@outlook.com>

	* checks/errors/rust-feature-gate.cc: Add implementation for
	`void FeatureGate::visit (AST::ExternBlock &block)`. Add `valid_feature`
	construction process in `FeatureGate::check`.
	* checks/errors/rust-feature-gate.h: Add declaration for
	`void FeatureGate::visit (AST::ExternBlock &block)`. Add private
	variable `valid_feature`.
	* checks/errors/rust-feature.h: Change `issue` to `m_issue`.

2023-04-06  Thomas Schwinge  <thomas@codesourcery.com>

	* ast/rust-ast-fragment.cc: Update copyright years.
	* ast/rust-ast-fragment.h: Likewise.
	* ast/rust-macro.cc: Likewise.
	* checks/errors/rust-feature-gate.cc: Likewise.
	* checks/errors/rust-feature-gate.h: Likewise.
	* checks/errors/rust-feature.cc: Likewise.
	* checks/errors/rust-feature.h: Likewise.
	* hir/rust-ast-lower-expr.cc: Likewise.
	* hir/rust-ast-lower-type.cc: Likewise.
	* resolve/rust-early-name-resolver.cc: Likewise.
	* resolve/rust-early-name-resolver.h: Likewise.
	* rust-gcc.h: Likewise.
	* typecheck/rust-hir-path-probe.cc: Likewise.
	* typecheck/rust-hir-trait-reference.cc: Likewise.
	* typecheck/rust-tyty-bounds.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-unify.cc: Likewise.
	* typecheck/rust-unify.h: Likewise.
	* util/rust-inline-visitor.h: Likewise.

2023-04-06  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* rust-session-manager.cc (Session::compile_crate): Update the
	environment variable name.

2023-04-06  Pierre-Emmanuel Patry  <pierre-emmanuel.patry@embecosm.com>

	* Make-lang.in: Add `rust-hir-trait-reference.o`.
	* typecheck/rust-hir-trait-reference.h: Remove multiple function body.
	* typecheck/rust-hir-trait-reference.cc: Add multiple function body.

2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>

	* expand/rust-macro-expand.cc (MacroExpander::expand_eager_invocations):
	Add documentation explaining the algorithm.

2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-macro.cc: New file.
	* Make-lang.in: Add `rust-macro.o` object
	* ast/rust-ast-fragment.cc (Fragment::Fragment): Change API around
	the construction of AST fragments.
	(Fragment::operator=): Correct `Fragment::operator=` to take into
	account the fragment tokens.
	(Fragment::create_error): Use new constructor.
	(Fragment::complete): Remove in favor of new constructor.
	(Fragment::unexpanded): Remove as that Fragment type is no longer used
	or possible.
	(Fragment::get_tokens): Add helper to access a fragment's tokens.
	* ast/rust-ast-fragment.h (enum class): Remove `FragmentKind::Unused`
	* ast/rust-ast.cc (MacroInvocation::as_string): Display
	builtin macro invocations properly.
	* ast/rust-ast.h: Fix `DelimTokenTree` class copy constructors and
	handling of its token vector.
	* ast/rust-macro.h (class MacroMatcher): Format.
	(class MetaItemSeq): Likewise.
	(builtin_macro_from_string): Get a `BuiltinMacroKind` from a given
	string, i.e the name of the macro (`assert!`, `cfg!` and so on).
	* expand/rust-attribute-visitor.cc (AttrVisitor::visit): Do not expand
	macros recursively anymore.
	(AttrVisitor::maybe_expand_expr): Likewise.
	(AttrVisitor::maybe_expand_type): Likewise.
	* expand/rust-attribute-visitor.h: Likewise, and remove
	`expand_macro_fragment_recursively` function.
	* expand/rust-macro-builtins.cc (make_token): Add shorthand for
	returning `std::unique_ptr<AST::Token>`s.
	(make_macro_invocation): Add shorthand for returning fragments
	containing builtin macro invocations.
	(try_expand_macro_expression): Do not expand macros recursively.
	(try_expand_single_string_literal): Likewise.
	(try_expand_many_expr): Likewise.
	(parse_single_string_literal): Error out more appropriately.
	(MacroBuiltin::compile_error_handler): Add explanation for eager
	invocation
	(MacroBuiltin::file_handler): Return the proper tokens associated with
	macro invocation, and builtin macros in the case of necessary eager
	expansion.
	(MacroBuiltin::column_handler): Likewise.
	(MacroBuiltin::include_bytes_handler): Likewise.
	(MacroBuiltin::include_str_handler): Likewise.
	(MacroBuiltin::concat_handler): Likewise.
	(MacroBuiltin::env_handler): Likewise.
	(MacroBuiltin::cfg_handler): Likewise.
	(MacroBuiltin::include_handler): Likewise.
	(MacroBuiltin::line_handler): Likewise.
	* expand/rust-macro-expand.cc (MacroExpander::expand_eager_invocations):
	Add function to expand eager invocations *once* in the fixed point
	pipeline.
	(MacroExpander::expand_invoc): Call into `expand_eager_invocations` for
	builtin macro invocations.
	(MacroExpander::expand_crate): Use new `AttrVisitor` API.
	(parse_many): Return tokens in `AST::Fragment`.
	(transcribe_expression): Likewise.
	(transcribe_type): Likewise.
	* expand/rust-macro-expand.h (struct MacroExpander): Add `has_changed`
	flag for fixed point checking.
	* resolve/rust-early-name-resolver.cc (EarlyNameResolver::EarlyNameResolver):
	Keep track of the current macro scope.
	(EarlyNameResolver::go): Use `scoped` API.
	(EarlyNameResolver::visit): Likewise.
	* resolve/rust-early-name-resolver.h: Add `scoped` API.
	* rust-session-manager.cc (Session::expansion): Perform macro expansion
	in a fixed-point fashion.

2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>

	* expand/rust-macro-invoc-lexer.cc (MacroInvocLexer::get_token_slice):
	Add API to retrieve token slices when lexing macro expansions.
	* expand/rust-macro-invoc-lexer.h: Declare `get_token_slice`.

2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>

	* parse/rust-parse.h: Move `parse_macro_invocation` to public API.

2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-item.h (class BlockExpr): Remove forward declaration of
	class `BlockExpr`.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* hir/tree/rust-hir-pattern.h
	(TuplePatternItemsRanged::get_lower_patterns): Add method.
	(TuplePatternItemsRanged::get_upper_patterns): Add method.
	* backend/rust-compile-pattern.cc
	(CompilePatternLet::visit): Implement TuplePattern visitor.
	* backend/rust-compile-pattern.h
	(CompilePatternLet::visit): Move TuplePattern visitor out of header file.

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-unify.cc (UnifyRules::go): ensure the bounds are checked

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): remove error message

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-trait-reference.h: add const infterface
	* typecheck/rust-tyty-subst.cc (SubstitutionParamMapping::get_generic_param): make const
	(SubstitutionRef::monomorphize): fix issue
	* typecheck/rust-tyty-subst.h: constify interface

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* util/rust-lang-item.h:

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-tyty-subst.cc (SubstitutionArg::is_conrete): fix check

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* Make-lang.in: update names
	* backend/rust-compile-expr.cc (CompileExpr::resolve_method_address):
	update to use new interface
	* typecheck/rust-coercion.cc (TypeCoercionRules::coerce_borrowed_pointer): likewise
	* typecheck/rust-hir-type-check-base.cc (TypeCheckBase::unify_site): likewise
	* typecheck/rust-tyty.cc (BaseType::destructure): likewise
	(InferType::unify): removed old unify interface
	(ErrorType::unify): likewise
	(ADTType::unify): likewise
	(TupleType::unify): likewise
	(FnType::unify): likewise
	(FnPtr::unify): likewise
	(ClosureType::unify): likewise
	(ArrayType::unify): likewise
	(SliceType::unify): likewise
	(BoolType::unify): likewise
	(IntType::unify): likewise
	(UintType::unify): likewise
	(FloatType::unify): likewise
	(USizeType::unify): likewise
	(ISizeType::unify): likewise
	(CharType::unify): likewise
	(ReferenceType::unify): likewise
	(PointerType::unify): likewise
	(ParamType::unify): likewise
	(StrType::unify): likewise
	(NeverType::unify): likewise
	(PlaceholderType::unify): likewise
	(ProjectionType::unify): likewise
	(DynamicObjectType::unify): likewise
	* typecheck/rust-tyty.h: update destructure interface
	* typecheck/rust-tyty-rules.h: Removed.
	* typecheck/rust-unify.cc: New file.
	* typecheck/rust-unify.h: New file.

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-trait-reference.h: change interface to return self
	* typecheck/rust-hir-trait-resolve.cc: likewise
	* typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments): likewise
	* typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): remove monomorphization hack

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-tyty-subst.cc: add missing callback

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-tyty-subst.cc: update copy constructors

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-tyty-bounds.cc: refactor to take a reference
	* typecheck/rust-tyty-subst.cc: likewise
	(SubstitutionRef::get_substitution_arguments): likewise
	(SubstitutionRef::infer_substitions): likewise
	* typecheck/rust-tyty-subst.h: likewise
	* typecheck/rust-tyty.cc (ADTType::handle_substitions): likewise
	(TupleType::handle_substitions): likewise
	(FnType::handle_substitions): likewise
	(ClosureType::handle_substitions): likewise
	(ArrayType::handle_substitions): likewise
	(SliceType::handle_substitions): likewise
	(ReferenceType::handle_substitions): likewise
	(PointerType::handle_substitions): likewise
	(ParamType::handle_substitions): likewise
	(ProjectionType::handle_substitions): likewise
	* typecheck/rust-tyty.h: likewise

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-trait-ref.h: Moved to...
	* typecheck/rust-hir-trait-reference.h: ...here.
	* typecheck/rust-hir-trait-resolve.cc: refactor
	* typecheck/rust-hir-trait-resolve.h (RUST_HIR_TRAIT_RESOLVE_H): likewise
	* typecheck/rust-hir-type-check.h: likewise
	* typecheck/rust-tyty.cc: likewise

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* Make-lang.in: update name
	* typecheck/rust-tyctx.cc: Moved to...
	* typecheck/rust-typecheck-context.cc: ...here.

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-type-check.h: refactor
	* typecheck/rust-tyctx.cc (TypeCheckContext::iterate): refactor
	(TypeCheckContext::have_loop_context): likewise
	(TypeCheckContext::push_new_loop_context): likewise
	(TypeCheckContext::push_new_while_loop_context): likewise
	(TypeCheckContext::peek_loop_context): likewise
	(TypeCheckContext::pop_loop_context): likewise
	(TypeCheckContext::swap_head_loop_context): likewise
	(TypeCheckContext::insert_trait_reference): likewise
	(TypeCheckContext::lookup_trait_reference): likewise
	(TypeCheckContext::insert_receiver): likewise
	(TypeCheckContext::lookup_receiver): likewise
	(TypeCheckContext::insert_associated_type_mapping): likewise
	(TypeCheckContext::clear_associated_type_mapping): likewise
	(TypeCheckContext::lookup_associated_type_mapping): likewise
	(TypeCheckContext::insert_variant_definition): likewise
	(TypeCheckContext::lookup_variant_definition): likewise
	(TypeCheckContext::insert_operator_overload): likewise
	(TypeCheckContext::lookup_operator_overload): likewise
	(TypeCheckContext::insert_unconstrained_check_marker): likewise
	(TypeCheckContext::have_checked_for_unconstrained): likewise
	(TypeCheckContext::insert_resolved_predicate): likewise
	(TypeCheckContext::lookup_predicate): likewise
	(TypeCheckContext::insert_query): likewise
	(TypeCheckContext::query_completed): likewise
	(TypeCheckContext::query_in_progress): likewise
	(TypeCheckContext::insert_trait_query): likewise
	(TypeCheckContext::trait_query_completed): likewise
	(TypeCheckContext::trait_query_in_progress): likewise
	(TypeCheckContextItem::Item::Item): likewise
	(TypeCheckContextItem::TypeCheckContextItem): likewise
	(TypeCheckContextItem::get_item): likewise
	(TypeCheckContextItem::get_impl_item): likewise
	(TypeCheckContextItem::get_trait_item): likewise
	(TypeCheckContextItem::get_type): likewise
	* typecheck/rust-tyty.cc (StructFieldType::StructFieldType): likewise
	(StructFieldType::get_ref): likewise
	(StructFieldType::get_name): likewise
	(StructFieldType::get_field_type): likewise
	(StructFieldType::set_field_type): likewise
	(StructFieldType::is_concrete): likewise
	(StructFieldType::debug): likewise
	(StructFieldType::get_locus): likewise
	(VariantDef::variant_type_string): likewise
	(VariantDef::VariantDef): likewise
	(VariantDef::operator=): likewise
	(VariantDef::get_error_node): likewise
	(VariantDef::is_error): likewise
	(VariantDef::get_id): likewise
	(VariantDef::get_defid): likewise
	(VariantDef::get_variant_type): likewise
	(VariantDef::is_data_variant): likewise
	(VariantDef::is_dataless_variant): likewise
	(VariantDef::get_identifier): likewise
	(VariantDef::num_fields): likewise
	(VariantDef::get_field_at_index): likewise
	(VariantDef::get_fields): likewise
	(VariantDef::lookup_field): likewise
	(VariantDef::get_discriminant): likewise
	(VariantDef::as_string): likewise
	(VariantDef::is_equal): likewise
	(VariantDef::clone): likewise
	(VariantDef::monomorphized_clone): likewise
	(VariantDef::get_ident): likewise
	(TupleType::TupleType): likewise
	(TupleType::get_unit_type): likewise
	(TupleType::is_unit): likewise
	(TupleType::num_fields): likewise
	(TupleType::is_concrete): likewise
	(TupleType::get_fields): likewise
	(BoolType::BoolType): likewise
	(BoolType::get_name): likewise
	(BoolType::is_concrete): likewise
	(IntType::IntType): likewise
	(IntType::get_name): likewise
	(IntType::get_int_kind): likewise
	(IntType::is_concrete): likewise
	(UintType::UintType): likewise
	(UintType::get_name): likewise
	(UintType::get_uint_kind): likewise
	(UintType::is_concrete): likewise
	(FloatType::FloatType): likewise
	(FloatType::get_name): likewise
	(FloatType::get_float_kind): likewise
	(FloatType::is_concrete): likewise
	(USizeType::USizeType): likewise
	(USizeType::get_name): likewise
	(USizeType::is_concrete): likewise
	(ISizeType::ISizeType): likewise
	(ISizeType::get_name): likewise
	(ISizeType::is_concrete): likewise
	(CharType::CharType): likewise
	(CharType::is_concrete): likewise
	(CharType::get_name): likewise
	(ReferenceType::ReferenceType): likewise
	(ReferenceType::is_concrete): likewise
	(ReferenceType::mutability): likewise
	(ReferenceType::is_mutable): likewise
	(ReferenceType::is_dyn_object): likewise
	(ReferenceType::is_dyn_slice_type): likewise
	(ReferenceType::is_dyn_str_type): likewise
	(PointerType::PointerType): likewise
	(PointerType::is_concrete): likewise
	(PointerType::mutability): likewise
	(PointerType::is_mutable): likewise
	(PointerType::is_const): likewise
	(PointerType::is_dyn_object): likewise
	(PointerType::is_dyn_slice_type): likewise
	(PointerType::is_dyn_str_type): likewise
	(ParamType::ParamType): likewise
	(ParamType::get_generic_param): likewise
	(ParamType::can_resolve): likewise
	(ParamType::is_concrete): likewise
	(StrType::StrType): likewise
	(StrType::get_name): likewise
	(StrType::is_concrete): likewise
	(NeverType::NeverType): likewise
	(NeverType::get_name): likewise
	(NeverType::is_unit): likewise
	(NeverType::is_concrete): likewise
	(PlaceholderType::PlaceholderType): likewise
	(PlaceholderType::get_name): likewise
	(PlaceholderType::is_unit): likewise
	(PlaceholderType::get_symbol): likewise
	(PlaceholderType::is_concrete): likewise
	(ProjectionType::is_unit): likewise
	(ProjectionType::get_name): likewise
	(ProjectionType::needs_generic_substitutions): likewise
	(ProjectionType::supports_substitutions): likewise
	(ProjectionType::has_subsititions_defined): likewise
	(ProjectionType::get): likewise
	(ProjectionType::is_concrete): likewise
	(DynamicObjectType::is_concrete): likewise
	* typecheck/rust-tyty.h: likewise

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-path-probe.cc (PathProbeCandidate::Candidate::Candidate): refactor
	(PathProbeCandidate::PathProbeCandidate): likewise
	(PathProbeCandidate::as_string): likewise
	(PathProbeCandidate::is_enum_candidate): likewise
	(PathProbeCandidate::is_impl_candidate): likewise
	(PathProbeCandidate::is_trait_candidate): likewise
	(PathProbeCandidate::is_full_trait_item_candidate): likewise
	(PathProbeCandidate::get_error): likewise
	(PathProbeCandidate::is_error): likewise
	(PathProbeCandidate::get_defid): likewise
	(PathProbeCandidate::operator<): likewise
	* typecheck/rust-hir-path-probe.h (struct PathProbeCandidate): likewise

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-hir-path-probe.cc (PathProbeType::PathProbeType): refactor
	(PathProbeType::Probe): likewise
	(PathProbeType::visit): likewise
	(PathProbeType::process_enum_item_for_candiates): likewise
	(PathProbeType::process_impl_items_for_candidates): likewise
	(PathProbeType::is_reciever_generic): likewise
	(PathProbeImplTrait::PathProbeImplTrait): likewise
	(PathProbeImplTrait::Probe): likewise
	(PathProbeImplTrait::process_trait_impl_items_for_candidates): likewise
	* typecheck/rust-hir-path-probe.h (struct PathProbeCandidate): likewise
	* typecheck/rust-hir-trait-resolve.cc
	(PathProbeImplTrait::process_trait_impl_items_for_candidates): likewise

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-tyty.cc (BaseType::BaseType): refactor
	(BaseType::~BaseType): likewise
	(BaseType::get_ref): likewise
	(BaseType::set_ref): likewise
	(BaseType::get_ty_ref): likewise
	(BaseType::set_ty_ref): likewise
	(BaseType::is_equal): likewise
	(BaseType::is_unit): likewise
	(BaseType::get_kind): likewise
	(BaseType::get_combined_refs): likewise
	(BaseType::append_reference): likewise
	(BaseType::supports_substitutions): likewise
	(BaseType::has_subsititions_defined): likewise
	(BaseType::can_substitute): likewise
	(BaseType::needs_generic_substitutions): likewise
	(BaseType::contains_type_parameters): likewise
	(BaseType::get_ident): likewise
	(BaseType::get_locus): likewise
	(InferType::InferType): likewise
	(InferType::get_infer_kind): likewise
	(InferType::get_name): likewise
	(InferType::is_concrete): likewise
	(ErrorType::ErrorType): likewise
	(ErrorType::is_unit): likewise
	(ErrorType::is_concrete): likewise
	(ErrorType::get_name): likewise
	(ErrorType::monomorphized_clone): likewise
	* typecheck/rust-tyty.h (class SubstitutionArgumentMappings): likewise

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-substitution-mapper.cc (SubstMapper::SubstMapper): refactor
	(SubstMapper::Resolve): likewise
	(SubstMapper::InferSubst): likewise
	(SubstMapper::have_generic_args): likewise
	(SubstMapper::visit): likewise
	(SubstMapperInternal::visit): likewise
	(SubstMapperFromExisting::SubstMapperFromExisting): likewise
	(SubstMapperFromExisting::Resolve): likewise
	(SubstMapperFromExisting::visit): likewise
	(GetUsedSubstArgs::GetUsedSubstArgs): likewise
	(GetUsedSubstArgs::From): likewise
	(GetUsedSubstArgs::visit): likewise
	* typecheck/rust-substitution-mapper.h: refactor
	* typecheck/rust-tyty-subst.cc (SubstitutionParamMapping::get_generic_param): likewise

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* Make-lang.in: update the makefile
	* typecheck/rust-tyty.cc (SubstitutionParamMapping::need_substitution): likewise
	(SubstitutionParamMapping::override_context): likewise
	(SubstitutionRef::get_mappings_from_generic_args): likewise
	(SubstitutionRef::infer_substitions): likewise
	(SubstitutionRef::are_mappings_bound): likewise
	(SubstitutionRef::solve_missing_mappings_from_this): likewise
	(SubstitutionRef::monomorphize): likewise
	* typecheck/rust-tyty.h (class SubstitutionParamMapping): likewise
	(class SubstitutionArg): likewise
	(std::function<void): likewise
	(class SubstitutionArgumentMappings): likewise
	(class SubstitutionRef): likewise
	* typecheck/rust-tyty-subst.cc: New file.
	* typecheck/rust-tyty-subst.h: New file.

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* Make-lang.in: update makefile
	* typecheck/rust-tyty.cc (TyVar::TyVar): move to new file
	(TyVar::get_tyty): likewise
	(TyVar::get_implicit_infer_var): likewise
	(TyVar::subst_covariant_var): likewise
	(TyVar::clone): likewise
	(TyVar::monomorphized_clone): likewise
	(TyWithLocation::TyWithLocation): likewise
	* typecheck/rust-tyty.h (class BaseType): cleanup
	(class TypeBoundPredicate): move to its own file
	(class TypeBoundPredicateItem): likewise
	(class TypeBoundsMappings): likewise
	(class TyVar): likewise
	(class TyWithLocation): likewise
	* typecheck/rust-tyty-bounds.h: New file.
	* typecheck/rust-tyty-util.cc: New file.
	* typecheck/rust-tyty-util.h: New file.

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* typecheck/rust-tyty-bounds.cc (TypeBoundPredicateItem::error): refactor
	(TypeBoundPredicateItem::is_error): likewise
	(TypeBoundPredicateItem::get_parent): likewise
	* typecheck/rust-tyty.h: Move the implementation for the above

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* backend/rust-compile-expr.cc (CompileExpr::visit): Removed copy-pasted comment.

2023-04-06  mxlol233  <mxlol233@outlook.com>

	* Make-lang.in: Add object files: `rust-feature.o` and `rust-feature-gate.o`
	* checks/errors/rust-feature-gate.cc: New file.
	* checks/errors/rust-feature-gate.h: New file.
	* checks/errors/rust-feature.cc: New file.
	* checks/errors/rust-feature.h: New file.
	* rust-session-manager.cc: Add FeatureGate check.

2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>

	* parse/rust-parse-impl.h (Parser::parse_closure_expr): Advance tokens
	properly when parsing closure param list.

2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>

	* parse/rust-parse-impl.h (Parser::parse_generic_arg): Handle type
	paths and nested generics properly.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* ast/rust-pattern.h:
	(ReferencePattern::is_double_reference): Add method.
	(ReferencePattern::get_is_mut): Add method.
	* hir/rust-ast-lower-pattern.cc
	(ASTLoweringPattern::visit): Add ReferencePattern visitor.
	* hir/rust-ast-lower-pattern.h:
	(ASTLoweringPattern::visit): Add ReferencePattern visitor.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* hir/tree/rust-hir-pattern.h
	(class ReferencePattern): Remove has_two_amps field.
	* hir/tree/rust-hir-full-test.cc
	(ReferencePattern::as_string): Remove usage of ReferencePattern::has_two_amps.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* backend/rust-compile-fnparam.h
	(CompileFnParam::visit): Remove HIR::GroupedPattern visitor.
	* backend/rust-compile-pattern.cc
	(CompilePatternCaseLabelExpr::visit): Remove HIR::GroupedPattern visitor.
	(CompilePatternBindings::visit): Remove HIR::GroupedPattern visitor.
	* backend/rust-compile-pattern.h
	(CompilePatternCaseLabelExpr::visit): Remove HIR::GroupedPattern visitor.
	(CompilePatternBindings::visit): Remove HIR::GroupedPattern visitor.
	(CompilePatternLet::visit): Remove HIR::GroupedPattern visitor.
	* backend/rust-compile-resolve-path.h
	(ResolvePathRef::visit): Remove HIR::GroupedPattern visitor.
	* backend/rust-compile-var-decl.h
	(CompileVarDecl::visit): Remove HIR::GroupedPattern visitor.
	* checks/errors/rust-const-checker.cc
	(ConstChecker::visit): Remove HIR::GroupedPattern visitor.
	* checks/errors/rust-const-checker.h
	(ConstChecker::visit): Remove HIR::GroupedPattern visitor.
	* checks/errors/rust-unsafe-checker.cc
	(UnsafeChecker::visit): Remove HIR::GroupedPattern visitor.
	* checks/errors/rust-unsafe-checker.h
	(UnsafeChecker::visit): Remove HIR::GroupedPattern visitor.
	* hir/rust-hir-dump.cc (Dump::visit): Remove HIR::GroupedPattern visitor.
	* hir/rust-hir-dump.h (Dump::visit): Remove HIR::GroupedPattern visitor.
	* hir/tree/rust-hir-full-decls.h (class GroupedPattern): Remove class.
	* hir/tree/rust-hir-full-test.cc (GroupedPattern::accept_vis): Remove method.
	* hir/tree/rust-hir-pattern.h (class GroupedPattern): Remove class.
	* hir/tree/rust-hir-visitor.h
	(HIRFullVisitor::visit): Remove HIR::GroupedPattern visitor.
	(HIRFullVisitorBase::visit): Remove HIR::GroupedPattern visitor.
	(HIRPatternVisitor::visit): Remove HIR::GroupedPattern visitor.
	* typecheck/rust-hir-type-check-pattern.cc
	(TypeCheckPattern::visit): Remove HIR::GroupedPattern visitor.
	* typecheck/rust-hir-type-check-pattern.h
	(TypeCheckPattern::visit): Remove HIR::GroupedPattern visitor.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* hir/rust-ast-lower-pattern.cc
	(ASTLoweringPattern::visit): Lower AST::GroupedPattern to its inner pattern.

2023-04-06  MAHAD  <mahadtxt@gmail.com>

	* rust-buffered-queue.h: Moved to...
	* util/rust-buffered-queue.h: ...here.

2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>

	* parse/rust-parse-impl.h (Parser::parse_type): Handle double ampersan
	properly
	(Parser::parse_reference_type): Call into `parse_reference_type_inner`
	and wrap double reference types in another `AST::ReferenceType` node
	(Parser::parse_reference_type_inner): Add parsing implementation
	which does not care about the leading token (& or  &&)
	(Parser::parse_type_no_bounds): Handle double ampersand properly
	* parse/rust-parse.h: Declare `parse_reference_type_inner`

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* backend/rust-compile-pattern.cc (CompilePatternLet::visit): New function.
	* backend/rust-compile-stmt.cc (CompileStmt::visit): Likewise.
	* backend/rust-compile-pattern.h (class CompilePatternLet): New visitor.

2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-macro.h (enum class): Add `BuiltinMacro` enum class.
	* expand/rust-attribute-visitor.cc (AttrVisitor::visit): Mention
	switching on `macro.kind` once builtin macro invocations are properly
	handled.
	* parse/rust-parse-impl.h (Parser::parse_macro_invocation): Switch to new MacroInvocation
	API.
	(Parser::parse_type): Likewise.
	(Parser::parse_type_no_bounds): Likewise.

2023-04-06  Abdul Rafey  <abdulrafeyq@gmail.com>

	* ast/rust-ast-dump.cc (Dump::visit): removed extra indentations in trait ast dump

2023-04-06  Abdul Rafey  <abdulrafeyq@gmail.com>

	* parse/rust-parse-impl.h (Parser::null_denotation): Add proper error
	when seeing wildcard var on right side of assignment.

2023-04-06  Abdul Rafey  <abdulrafeyq@gmail.com>

	* ast/rust-ast.cc: Fix include list.
	* ast/rust-expr.h: Likewise.
	* hir/tree/rust-hir-expr.h: Likewise.
	* rust-backend.h: Likewise.
	* util/rust-lang-item.h: Likewise.
	* operator.h: Moved to...
	* util/rust-operators.h: ...here.

2023-04-06  Parthib  <parthibdutta02@gmail.com>

	* Make-lang.in: Rename object file.
	* ast/rust-ast-full-test.cc: Moved to...
	* ast/rust-ast.cc: ...here.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* backend/rust-compile-pattern.cc (CompilePatternCaseLabelExpr::visit): Add proper
	visitor.
	(CompilePatternBindings::visit): Likewise.
	* backend/rust-compile-pattern.h: Declare them.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Add proper
	visitor.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* hir/tree/rust-hir-pattern.h: Add get_item method.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit): Add proper visitor.
	* hir/rust-ast-lower-pattern.h: Declare it.

2023-04-06  Lyra  <teromene@teromene.fr>

	* expand/rust-macro-expand.cc (transcribe_expression): Fix ICE when expanding
	empty macros.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* resolve/rust-ast-resolve-pattern.h: Support GroupedPattern properly.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* backend/rust-compile-base.cc (HIRCompileBase::compile_locals_for_block):
	Allow patterns to declare zero or multiple variables.
	* backend/rust-compile-var-decl.h: Change function declaration.

2023-04-06  mxlol233  <mxlol233@outlook.com>

	* lex/rust-lex.cc (Lexer::build_token): Make location enclose entire token.
	(Lexer::parse_byte_char): Likewise.
	(Lexer::parse_byte_string): Likewise.
	(Lexer::parse_raw_byte_string): Likewise.
	(Lexer::parse_raw_identifier): Likewise.
	(Lexer::parse_string): Likewise.
	(Lexer::parse_identifier_or_keyword): Likewise.
	(Lexer::parse_raw_string): Likewise.
	(Lexer::parse_non_decimal_int_literal): Likewise.
	(Lexer::parse_decimal_int_or_float): Likewise.
	(Lexer::parse_char_or_lifetime): Likewise.

2023-04-06  mxlol233  <mxlol233@outlook.com>

	* ast/rust-ast.h: Add get_locus method.
	* ast/rust-expr.h: Likewise.
	* ast/rust-macro.h: Likewise.

2023-04-06  Owen Avery  <powerboat9.gamer@gmail.com>

	* typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Cleanup LetStmt
	type checking.

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* hir/tree/rust-hir-path.h: Add const get_identifier and get_type method.
	* typecheck/rust-hir-path-probe.h: Use new SubstitutionArgumentMappings constructor.
	* typecheck/rust-hir-trait-resolve.cc: Likewise.
	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Likewise.
	* typecheck/rust-tyty-bounds.cc (TypeCheckBase::get_predicate_from_bound):
	Do not assert failure on size mismatch anymore.
	(TypeBoundPredicate::TypeBoundPredicate): Use new SubstitutionArgumentMappings constructor.
	(TypeBoundPredicate::operator=): Likewise.
	(TypeBoundPredicate::apply_generic_arguments): Likewise.
	(TypeBoundPredicateItem::get_tyty_for_receiver): Likewise.
	(TypeBoundPredicate::get_num_associated_bindings): Likewise.
	(TypeBoundPredicate::lookup_associated_type): Fix implementation for new system.
	(TypeBoundPredicate::get_associated_type_items): Likewise.
	* typecheck/rust-tyty.cc (SubstitutionRef::get_mappings_from_generic_args): Add new
	behavior.
	(SubstitutionRef::infer_substitions): Use new constructor and add comment.
	(SubstitutionRef::solve_missing_mappings_from_this): Use new constructor.
	* typecheck/rust-tyty.h: Define new constructors.

2023-04-06  Philip Herron  <herron.philip@googlemail.com>

	* resolve/rust-ast-resolve-type.cc (ResolveGenericArgs::go): Add name resolution to
	Trait items.

2023-04-06  Raiki Tamura  <tamaron1203@gmail.com>

	* ast/rust-ast-full-decls.h (class MacroItem): Remove forward declaration.
	* ast/rust-ast-full-test.cc (MacroRulesDefinition):
	Rework MacroRulesDefinition class
	* ast/rust-ast.h (class MacroItem): Remove abstract class.
	* ast/rust-item.h (class MacroItem): Remove forward declaration.
	* ast/rust-macro.h (class MacroItem): Likewise.
	(class MacroRulesDefinition): Add MacroKind enum.
	(class MacroInvocation): Fix inheritance.
	* lex/rust-token.h: Token "macro" is now used.
	* parse/rust-parse-impl.h (Parser::parse_item): Add handling for MACRO.
	(Parser::parse_vis_item): Call into parse_decl_macro_def.
	(Parser::parse_macro_item): Delete function.
	(Parser::parse_macro_rules_def): Return MBE macros only.
	(Parser::parse_decl_macro_def): New function.
	(Parser::parse_stmt): Handle MACRO token.
	(Parser::parse_stmt_or_expr_without_block): Call into parse_macro_rules_def.
	* parse/rust-parse.h: Declare new function.

2023-04-06  mxlol233  <mxlol233@outlook.com>

	* parse/rust-parse-impl.h (Parser::parse_generic_arg): Add proper bound parsing.

2023-04-06  Dave  <dme2223@gmail.com>

	* checks/errors/rust-const-checker.cc (ConstChecker::visit): Use StackedContext
	class.

2023-04-06  Prajwal S N  <prajwalnadig21@gmail.com>

	* checks/errors/rust-unsafe-checker.cc (check_target_attr): New function.
	(UnsafeChecker::check_function_attr): Call into `check_target_attr`.
	(UnsafeChecker::visit): Check for target_feature attributes.
	* checks/errors/rust-unsafe-checker.h: Add declarations.
	* util/rust-attributes.cc: Add attribute.

2023-04-06  Arthur Cohen  <arthur.cohen@embecosm.com>

	* rust-session-manager.cc (Session::compile_crate): Fix typo.

2023-02-22  Thomas Schwinge  <thomas@codesourcery.com>

	* rust-lang.cc (grs_langhook_type_for_mode): Also consider all
	'int_n' modes/types.

2023-02-22  Thomas Schwinge  <thomas@codesourcery.com>

	* rust-lang.cc (grs_langhook_init): Do not initialize
	void_list_node.

2023-02-22  Thomas Schwinge  <thomas@codesourcery.com>

	* config-lang.in (target_libs): Remove.

2023-02-21  Raiki Tamura  <tamaron1203@gmail.com>

	* backend/rust-builtins.cc (BuiltinsContext::setup_math_fns): New functions.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* backend/rust-constexpr.cc (get_nth_callarg): Remove function.
	(rs_bind_parameters_in_call): Use CALL_EXPR_ARG instead.
	(potential_constant_expression_1): Likewise.

2023-02-21  Thomas Schwinge  <thomas@codesourcery.com>

	* lang.opt: Fix ordering of file.

2023-02-21  Philip Herron  <herron.philip@googlemail.com>

	* backend/rust-compile-type.cc (TyTyResolveCompile::visit): Remove unused parameters.
	* backend/rust-constexpr.cc (constant_value_1): Likewise.
	(fold_non_dependent_init): Likewise.
	* backend/rust-tree.cc (publicly_uniquely_derived_p): Likewise.
	(instantiation_dependent_expression_p): Likewise.
	(type_has_nontrivial_copy_init): Likewise.
	(is_normal_capture_proxy): Likewise.
	(resolve_nondeduced_context): Likewise.
	(undeduced_auto_decl): Likewise.
	(require_deduced_type): Likewise.
	* checks/errors/privacy/rust-privacy-reporter.cc (PrivacyReporter::visit): Likewise.
	* checks/errors/privacy/rust-reachability.cc (ReachabilityVisitor::visit): Likewise.
	* checks/errors/privacy/rust-visibility-resolver.cc (VisibilityResolver::visit): Likewise.
	* checks/errors/rust-const-checker.cc (ConstChecker::visit): Likewise.
	* checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise.
	* checks/lints/rust-lint-marklive.cc (MarkLive::go): Likewise.
	* checks/lints/rust-lint-unused-var.cc (unused_var_walk_fn): Likewise.
	* expand/rust-macro-builtins.cc (try_expand_single_string_literal): Likewise.
	(try_expand_many_expr): Likewise.
	(parse_single_string_literal): Likewise.
	(MacroBuiltin::assert_handler): Likewise.
	(MacroBuiltin::file_handler): Likewise.
	(MacroBuiltin::column_handler): Likewise.
	(MacroBuiltin::concat_handler): Likewise.
	(MacroBuiltin::env_handler): Likewise.
	(MacroBuiltin::line_handler): Likewise.
	* hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Likewise.
	(ASTLoweringBase::handle_doc_item_attribute): Likewise.
	* hir/rust-hir-dump.cc (Dump::visit): Likewise.
	* hir/tree/rust-hir-full-test.cc (ConstGenericParam::accept_vis): Likewise.
	* lex/rust-lex.cc (Lexer::parse_utf8_escape): Likewise.
	(Lexer::parse_string): Likewise.
	(Lexer::parse_char_or_lifetime): Likewise.
	* lex/rust-lex.h: Likewise.
	* metadata/rust-export-metadata.cc: Likewise.
	* resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Likewise.
	* resolve/rust-ast-resolve-type.cc (ResolveType::visit): Likewise.
	(ResolveTypeToCanonicalPath::visit): Likewise.
	* resolve/rust-ast-verify-assignee.h: Likewise.
	* resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Likewise.
	* typecheck/rust-hir-type-check-expr.h: Likewise.
	* typecheck/rust-hir-type-check-item.h: Likewise.
	* typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Likewise.
	* typecheck/rust-tyty-rules.h: Likewise.
	* util/rust-attributes.cc (AttributeChecker::visit): Likewise.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* hir/tree/rust-hir-expr.h: Add const `get_method_name`.
	* hir/tree/rust-hir-full-decls.h (struct GenericArgs): Move from `struct`...
	(class GenericArgs): ...to `class`.
	* hir/tree/rust-hir-path.h (struct GenericArgs): Likewise.
	(class GenericArgs): Clear `type_args` in copy constructor.
	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Reorder
	debug print.
	* typecheck/rust-tyty.h: Add default constructors for `SubstitutionArgumentMappings`.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* backend/rust-compile-context.cc (Context::push_closure_context): New function.
	(Context::pop_closure_context): Likewise.
	(Context::insert_closure_binding): Likewise.
	(Context::lookup_closure_binding): Likewise.
	* backend/rust-compile-context.h: Declare new functions and closure mappings.
	* backend/rust-compile-expr.cc (CompileExpr::visit): Visit captures properly.
	(CompileExpr::generate_closure_function): Compile captures properly.
	* backend/rust-compile-resolve-path.cc (ResolvePathRef::resolve): Check for
	closure bindings.
	* backend/rust-compile-type.cc (TyTyResolveCompile::visit): Compile capture list's
	types as well.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Pass captures
	properly to `TyTy::ClosureType` constructor.
	* typecheck/rust-tyty.cc (ClosureType::as_string): Fix string representation.
	(ClosureType::clone): Pass `captures` argument.
	* typecheck/rust-tyty.h: Add `captures` field.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Use proper closure
	contexts.
	* resolve/rust-name-resolver.cc (Scope::lookup_decl_type): New function.
	(Scope::lookup_rib_for_decl): Likewise.
	(Resolver::insert_resolved_name): Insert captured items.
	(Resolver::push_closure_context): New function.
	(Resolver::pop_closure_context): Likewise.
	(Resolver::insert_captured_item): Likewise.
	(Resolver::decl_needs_capture): Likewise.
	(Resolver::get_captures): Likewise.
	* resolve/rust-name-resolver.h: Declare new functions.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Add Rib argument.
	(ResolveExpr::resolve_closure_param): Likewise.
	* resolve/rust-ast-resolve-implitem.h: Likewise.
	* resolve/rust-ast-resolve-item.cc (ResolveTraitItems::visit): Likewise.
	(ResolveItem::visit): Likewise.
	* resolve/rust-ast-resolve-pattern.cc (PatternDeclaration::visit): 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 (Rib::lookup_decl_type): Likewise.
	(Scope::insert): Likewise.
	(Resolver::insert_builtin_types): Likewise.
	* resolve/rust-name-resolver.h: Likewise.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* resolve/rust-name-resolver.cc (MKBUILTIN_TYPE): Remove macro.
	(Rib::Rib): Remove `mappings` field.
	(Resolver::generate_builtins): Use `setup_builtin` instead of macro.
	(Resolver::setup_builtin): New function.
	* resolve/rust-name-resolver.h: Declare `setup_builtin`, add FIXME
	comment.

2023-02-21  Raiki Tamura  <tamaron1203@gmail.com>

	* lex/rust-lex.cc (Lexer::Lexer): Add `dump_lex` boolean flag.
	(Lexer::skip_token): Dump tokens if flag is enabled.
	(Lexer::dump_and_skip): New function.
	* lex/rust-lex.h: Include optional.h and declare functions.
	* parse/rust-parse-impl.h (Parser::debug_dump_lex_output): Remove old
	unused function.
	* parse/rust-parse.h: Likewise.
	* rust-session-manager.cc (Session::compile_crate): Pass lexer dump
	option to lexer.
	(Session::dump_lex): New function.
	* util/rust-optional.h: Add missing constructor.

2023-02-21  Dave  <dme2223@gmail.com>

	* ast/rust-item.h: Remoe default location for Visibility class.
	* parse/rust-parse-impl.h (Parser::parse_visibility): Pass proper location
	when instantiating visibilities.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Fix dumping of fn params.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Remove extraneous string when
	dumping statements.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc: Remove unused include.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add missing visitor.
	* ast/rust-ast-dump.h: Likewise.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add missing visitor.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add missing visitor.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add missing visitor.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add missing visitor.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add missing visitor.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add missing visitor.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add missing visitor.
	* ast/rust-ast-dump.h: Add missing getter declaration.
	* ast/rust-ast-full-test.cc (BareFunctionType::as_string): Fix bare function
	string representation.
	* ast/rust-type.h (class BareFunctionType): Declare said getter.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add missing visitor.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add missing tuple type visitor.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add missing never type visitor.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add missing RawPointer visitor.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add missing array visitor

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add missing slice visitor.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add missing visitors.
	* ast/rust-ast-dump.h: Likewise.
	* ast/rust-ast.h: Add `get_lifetime_bounds` method.
	* ast/rust-item.h: Add missing getter for lifetimes.
	* ast/rust-type.h: Likewise.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add new reference visitor wrapper.
	* ast/rust-ast-dump.h: Declare it.
	* ast/rust-item.h: Add mutable visibility getters.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): Fix extra call
	to `delete`.

2023-02-21  Dave  <dme2223@gmail.com>

	* ast/rust-item.h: Add location member.
	* hir/rust-ast-lower.cc (translate_visibility): Pass location argument.
	* hir/tree/rust-hir-item.h: Fix constructor to accept Location argument.

2023-02-21  Raiki Tamura  <tamaron1203@gmail.com>

	* util/rust-lang-item.h: Add handling for `phantom_data` lang item.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add handling for unit structures.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.h: Fix documentation.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::go): Use new API.
	(Dump::format_function_param): Refactor.
	(Dump::visit_items_joined_by_separator): New function.
	(Dump::emit_attrib): Refactor.
	(Dump::visit_as_line): New function.
	(Dump::visit_items_as_lines): Likewise.
	(Dump::visit_items_as_block): Likewise.
	(Dump::visit): Use new API.
	(Dump::emit_visibility): Likewise.
	(Dump::emit_indented_string): Likewise.
	(Dump::emit_generic_params): Likewise.
	(Dump::format_tuple_field): Likewise.
	(Dump::format_struct_field): Likewise.
	(Dump::format_function_common): Likewise.
	(Dump::visit_function_common): Likewise.
	* ast/rust-ast-dump.h: Declare new functions and add documentation.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add new visit function for overloading.
	* ast/rust-ast-dump.h: Add documentation for layer.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* backend/rust-builtins.cc (BuiltinsContext::setup_atomic_fns): Declare atomic
	load intrinsics.
	* backend/rust-compile-intrinsic.cc (atomic_load_handler_inner): New handler.
	(atomic_load_handler): Likewise.
	(unchecked_op_handler): Remove `static` function qualifier.
	(build_atomic_builtin_name): Handle load intrinsics.
	(atomic_store_handler_inner): New handler.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* backend/rust-compile-intrinsic.cc (check_for_basic_integer_type): New function.
	(build_atomic_builtin_name): Use HIR Type instead of `tree`.
	(atomic_store_handler_inner): Cleanup error handling.
	(unchecked_op_inner): Likewise.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* backend/rust-compile-intrinsic.cc (wrapping_op_handler): Refactor to return
	an `std::function`.
	(wrapping_op_handler_inner): Rename.
	(wrapping_add_handler): Remove function.
	(wrapping_sub_handler): Likewise.
	(wrapping_mul_handler): Likewise.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* backend/rust-compile-intrinsic.cc (is_basic_integer_type): New function.
	(unchecked_op_inner): New handler.
	(unchecked_op_handler): New handler.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* backend/rust-builtins.cc (BuiltinsContext::setup_atomic_fns): New function.
	(BuiltinsContext::setup): Call `setup_atomic_fns`.
	* backend/rust-builtins.h: Declare `setup_atomic_fns`.
	* backend/rust-compile-intrinsic.cc (atomic_store_handler_inner): New function.
	(atomic_store_handler): New handler.
	(make_unsigned_long_tree): Add helper around making unsigned long trees.
	(prefetch_data_handler): Use `make_unsigned_long_tree`.
	(build_atomic_builtin_name): New function.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* backend/rust-constexpr.cc (build_anon_member_initialization): Workaround uninitialized
	values.
	(build_data_member_initialization): Likewise.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* backend/rust-compile-intrinsic.cc (sorry_handler): New intrinsic handler.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* expand/rust-macro-builtins.cc (MacroBuiltin::assert): Rename to...
	(MacroBuiltin::assert_handler): ..this.
	(MacroBuiltin::file): Rename to...
	(MacroBuiltin::file_handler): ..this.
	(MacroBuiltin::column): Rename to...
	(MacroBuiltin::column_handler): ..this.
	(MacroBuiltin::include_bytes): Rename to...
	(MacroBuiltin::include_bytes_handler): ..this.
	(MacroBuiltin::include_str): Rename to...
	(MacroBuiltin::include_str_handler): ..this.
	(MacroBuiltin::compile_error): Rename to...
	(MacroBuiltin::compile_error_handler): ..this.
	(MacroBuiltin::concat): Rename to...
	(MacroBuiltin::concat_handler): ..this.
	(MacroBuiltin::env): Rename to...
	(MacroBuiltin::env_handler): ..this.
	(MacroBuiltin::cfg): Rename to...
	(MacroBuiltin::cfg_handler): ..this.
	(MacroBuiltin::include): Rename to...
	(MacroBuiltin::include_handler): ..this.
	(MacroBuiltin::line): Rename to...
	(MacroBuiltin::line_handler): ..this.
	* expand/rust-macro-builtins.h: Rename all handlers.
	* util/rust-hir-map.cc (Mappings::insert_macro_def): Use new handler
	names.

2023-02-21  Simon Cook  <simon.cook@embecosm.com>

	* util/rust-inline-visitor.h: Remove some offending system includes.

2023-02-21  YizhePKU  <yizhe@pku.edu.cn>

	* util/rust-inline-visitor.h: New file.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* backend/rust-compile-expr.cc (CompileExpr::visit): Refactor checking of closures.
	(CompileExpr::generate_possible_fn_trait_call): New function.
	* backend/rust-compile-expr.h: Declare `generate_possible_fn_trait_call`.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-tyty-bounds.cc (TypeCheckBase::get_predicate_from_bound): Add missing
	implementation.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* Make-lang.in: Compile rust-ast-lower-type.cc.
	* ast/rust-path.h: Add `get_locus` method to `TypePathFunction`.
	* hir/rust-ast-lower-base.cc (ASTLowerTypePath::visit): Move implementation to
	rust-ast-lower-type.cc.
	(ASTLowerQualifiedPathInType::visit): Likewise.
	(ASTLoweringType::visit): Likewise.
	* hir/rust-ast-lower-type.h: Move implementations to source file.
	* hir/tree/rust-hir-path.h: Likewise.
	* hir/rust-ast-lower-type.cc: New file.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): Add missing handling of
	function case.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* backend/rust-compile-context.h: Add new functions: `insert_closure_decl` and
	`lookup_closure_decl`.
	* backend/rust-compile-expr.cc (CompileExpr::visit): Start compiling Closures properly.
	(CompileExpr::generate_closure_function): New function.
	(CompileExpr::generate_closure_fntype): Likewise.
	* backend/rust-compile-expr.h: Declare `generate_closure_function` and
	`generate_closure_fntype`.
	* backend/rust-compile-type.cc (TyTyResolveCompile::visit): Visit closure types properly.
	* backend/rust-mangle.cc (legacy_mangle_name): Add support for closures.
	* backend/rust-tree.h (RS_CLOSURE_FLAG): Add new tree macro.
	(RS_CLOSURE_TYPE_P): And checking for it on tree nodes.
	* typecheck/rust-tyty.cc (ClosureType::is_equal): Add implementation.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* hir/tree/rust-hir-expr.h: Add `get_params` method.
	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Typecheck closure nodes.
	(TypeCheckExpr::resolve_fn_trait_call): New function.
	* typecheck/rust-hir-type-check-expr.h: Declare `resolve_fn_trait_call` and
	`resolve_possible_fn_trait_call_method_name`.
	* typecheck/rust-hir-type-check.h: Declare `get_context_type`.
	* typecheck/rust-tyctx.cc (TypeCheckContextItem::get_context_type): New function.
	* typecheck/rust-tyty-cmp.h: Visit closures properly.
	* typecheck/rust-tyty-rules.h: Likewise.
	* typecheck/rust-tyty.cc (BaseType::bounds_compatible): Add commented out assertin.
	(ClosureType::as_string): Implement it.
	(ClosureType::clone): Fix closure cloning.
	(ClosureType::setup_fn_once_output): New function.
	* typecheck/rust-tyty.h: Improve `ClosureType` class and declare `setup_fn_once_output`.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* checks/errors/rust-const-checker.cc (ConstChecker::visit): Visit closures properly.
	* checks/errors/rust-unsafe-checker.cc (UnsafeChecker::visit): Likewise.
	* checks/lints/rust-lint-marklive.h: Likewise.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Simplify method
	call type checking 	by removing visitor and instead using one static cast. Use the
	new interface.
	* typecheck/rust-tyty-call.cc (TypeCheckMethodCallExpr::visit): Likewise.
	(TypeCheckMethodCallExpr::go): Likewise.
	(TypeCheckMethodCallExpr::check): Likewise.
	* typecheck/rust-tyty-call.h (class TypeCheckMethodCallExpr): Likewise.
	(class Argument): Likewise.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* resolve/rust-ast-resolve-expr.cc (ResolveExpr::visit): Visit closure properly when
	name resolving.
	(ResolveExpr::resolve_closure_param): Implement closure name resolving.
	* resolve/rust-ast-resolve-expr.h: Declare visitors for closure types.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::ASTLoweringPattern):
	Improve formatting.
	(ASTLoweringPattern::translate): Likewise.
	* hir/rust-ast-lower-pattern.h: Likewise.
	* resolve/rust-ast-resolve-expr.h: Likewise.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* Make-lang.in: Add new object file for expression lowering.
	* ast/rust-expr.h: Move implementation of expr lowering to source file.
	* backend/rust-compile-block.h: Likewise.
	* backend/rust-compile-expr.cc (CompileExpr::visit): Likewise.
	* 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.
	* hir/rust-ast-lower-base.h: Likewise.
	* hir/rust-ast-lower-expr.h (RUST_AST_LOWER_EXPR): Likewise.
	* hir/rust-ast-lower.cc (ASTLoweringBase::lower_closure_param): Likewise.
	* hir/rust-hir-dump.cc (Dump::visit): Likewise.
	* hir/rust-hir-dump.h: Likewise.
	* hir/tree/rust-hir-expr.h (class ClosureExpr): Likewise.
	(class ClosureExprInner): Likewise.
	(class ClosureExprInnerTyped): Likewise.
	* hir/tree/rust-hir-full-decls.h (class ClosureExprInner): Likewise.
	(class ClosureExprInnerTyped): Likewise.
	* hir/tree/rust-hir-full-test.cc (ClosureExprInnerTyped::as_string): Likewise.
	(ClosureExprInner::as_string): Likewise.
	(ClosureExprInner::accept_vis): Likewise.
	(ClosureExpr::accept_vis): Likewise.
	(ClosureExprInnerTyped::accept_vis): Likewise.
	* hir/tree/rust-hir-visitor.h: Likewise.
	* hir/tree/rust-hir.h (class Expr): Likewise.
	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Likewise.
	* typecheck/rust-hir-type-check-expr.h: Likewise.
	* hir/rust-ast-lower-expr.cc: New file.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* util/rust-lang-item.h: Add handling for `fn_once_output`.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-ast-fragment.cc (Fragment::Fragment): Add better APIs.
	(Fragment::complete): New function.
	(Fragment::unexpanded): New function.
	* ast/rust-ast-fragment.h: Declare new APIs and add documentation.
	* expand/rust-attribute-visitor.h: Use new Fragment API.
	* expand/rust-macro-builtins.cc (MacroBuiltin::file): Likewise.
	(MacroBuiltin::column): Likewise.
	(MacroBuiltin::include_bytes): Likewise.
	(MacroBuiltin::include_str): Likewise.
	(MacroBuiltin::concat): Likewise.
	(MacroBuiltin::env): Likewise.
	(MacroBuiltin::cfg): Likewise.
	(MacroBuiltin::include): Likewise.
	(MacroBuiltin::line): Likewise.
	* expand/rust-macro-expand.cc (parse_many): Likewise.
	(transcribe_expression): Likewise.
	(transcribe_type): Likewise.
	* expand/rust-macro-expand.h (struct MacroExpander): Likewise.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-ast.h (class ASTFragment): Remove old ASTFragment class.
	* ast/rust-macro.h (class MacroRulesDefinition): Use new Fragment API.
	* expand/rust-attribute-visitor.h: Likewise.
	* expand/rust-macro-builtins.cc (macro_end_token): Likewise.
	(MacroBuiltin::assert): Likewise.
	(MacroBuiltin::file): Likewise.
	(MacroBuiltin::column): Likewise.
	(MacroBuiltin::include_bytes): Likewise.
	(MacroBuiltin::include_str): Likewise.
	(MacroBuiltin::compile_error): Likewise.
	(MacroBuiltin::concat): Likewise.
	(MacroBuiltin::env): Likewise.
	(MacroBuiltin::cfg): Likewise.
	(MacroBuiltin::include): Likewise.
	(MacroBuiltin::line): Likewise.
	* expand/rust-macro-builtins.h: Likewise.
	* expand/rust-macro-expand.cc (MacroExpander::expand_decl_macro): Likewise.
	(MacroExpander::expand_invoc): Likewise.
	(MacroExpander::match_repetition): Likewise.
	(parse_many): Likewise.
	(transcribe_many_items): Likewise.
	(transcribe_many_ext): Likewise.
	(transcribe_many_trait_items): Likewise.
	(transcribe_many_impl_items): Likewise.
	(transcribe_many_trait_impl_items): Likewise.
	(transcribe_expression): Likewise.
	(transcribe_type): Likewise.
	(transcribe_on_delimiter): Likewise.
	(tokens_to_str): Likewise.
	* expand/rust-macro-expand.h (struct MacroExpander): Likewise.
	* util/rust-hir-map.cc (Mappings::insert_macro_def): Likewise.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* Make-lang.in: Add `rust-ast-fragment.o` object file.
	* ast/rust-ast-fragment.cc: New file.
	* ast/rust-ast-fragment.h: New file.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-hir-trait-resolve.cc (TraitResolver::resolve_trait): Check if a
	trait query is currently in progress.
	* typecheck/rust-hir-type-check.h (class TraitQueryGuard): Add helpers around
	checking for trait queries and inserting them.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add missing visitors for macro definition dumping.
	(get_delimiters): New function.
	* ast/rust-ast-dump.h: Declare `get_delimiters` and add documentation.
	* ast/rust-macro.h: Add `get_token_tree` method.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Properly handle unloaded modules.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-ast-dump.cc (Dump::visit): Fix formatting when dumping modules.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-ast-dump.cc (Dump::visit): Dump items in modules properly.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-ast-dump.cc: Emit visibility when dumping items.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* hir/rust-ast-lower-base.h (class ItemWrapper): New class.
	* hir/rust-ast-lower-base.cc (ASTLoweringBase::handle_outer_attributes): Use
	`ItemWrapper` class.
	(ASTLoweringBase::handle_doc_item_attribute): Likewise.
	(ASTLoweringBase::handle_lang_item_attribute): Likewise.
	* hir/rust-ast-lower-implitem.h: Check outer attributes on items.
	* hir/tree/rust-hir-item.h: Add `get_trait_locus` methods.
	* hir/tree/rust-hir.h: Likewise.
	* util/rust-hir-map.h: Add defId mappings and associated functions.
	* util/rust-hir-map.cc (Mappings::insert_defid_mapping): Implement insertion to said
	mappings.
	(Mappings::lookup_trait_item_defid): And looking up said mappings.

2023-02-21  Jakub Dupak  <dev@jakubdupak.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add code for dumping type aliases.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-hir-trait-resolve.cc (TraitResolver::TraitResolver): Do not nullptr init
	`resolved_trait_reference` anymore.
	(TraitResolver::resolve_path): Simplify function and rename to...
	(TraitResolver::resolve_path_to_trait): ...this.
	(TraitResolver::lookup_path): Use new interface.
	* typecheck/rust-hir-trait-resolve.h (class TraitResolver): Do not inherit `HIRFullVisitor`
	class anymore.

2023-02-21  David Faust  <david.faust@oracle.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add dump for RangeExprs.

2023-02-21  David Faust  <david.faust@oracle.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add dump for, BorrowExpr, DereferenceExpr,
	ErrorPropagationExpr, NegationExpr, TypeCastExpr and GroupedExpr.

2023-02-21  David Faust  <david.faust@oracle.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add dump code for ArrayExpr.

2023-02-21  David Faust  <david.faust@oracle.com>

	* ast/rust-ast-dump.cc (Dump::visit): Add dumps for ComparisonExpr and
	LazyBooleanExpr.

2023-02-21  David Faust  <david.faust@oracle.com>

	* ast/rust-ast-dump.cc (Dump::visit): Fix IfExpr formatting.

2023-02-21  David Faust  <david.faust@oracle.com>

	* ast/rust-ast-dump.cc (Dump::visit): Fix block formatting.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-autoderef.cc: Add support for multiple resolution candidates.
	* typecheck/rust-hir-dot-operator.cc (MethodResolver::MethodResolver): Edit
	`try_result` field and change constructor.
	(MethodResolver::Probe): Return set of candidates instead of singular candidate.
	(MethodResolver::select): Add better implementation to account for multiple
	candidates.
	* typecheck/rust-hir-dot-operator.h (struct MethodCandidate): Overload comparison
	operator in order to store them in `std::set`.
	* typecheck/rust-hir-inherent-impl-overlap.h: Do not fail assertion on missing type.
	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Adapt code to use
	multiple candidates.
	* typecheck/rust-tyty.cc (set_cmp_autoderef_mode): Add code to handle automatic
	derefs properly.
	(reset_cmp_autoderef_mode): Add helper function to reset said mode.
	* typecheck/rust-tyty.h (set_cmp_autoderef_mode): Declare function.
	(reset_cmp_autoderef_mode): Likewise.
	* typecheck/rust-tyty-cmp.h: Add handling of `autoderef_cmp_flag`

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* util/rust-abi.cc (get_abi_from_string): Add missing "rust-call"
	possibility for ABI variant.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* util/rust-lang-item.h: Add `fn_once` lang item.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* backend/rust-compile.cc: Add note about missing support for super
	traits.
	* typecheck/rust-tyty.cc (BaseType::satisfies_bound): New function.
	(BaseType::bounds_compatible): New function.
	(DynamicObjectType::get_object_items): New function.
	* typecheck/rust-hir-trait-ref.h: Use new API to perform type resolution
	on dyn objects.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* Make-lang.in: Compile early name resolver.
	* expand/rust-attribute-visitor.cc (AttrVisitor::visit): Move macro
	name resolution.
	* expand/rust-macro-builtins.cc (try_expand_macro_expression): Run ENR
	when recursively expanding macros.
	* expand/rust-macro-expand.cc (MacroExpander::expand_invoc): No longer
	perform name resolution in `expand_invoc`.
	* expand/rust-macro-expand.h (struct MacroExpander): Keep ENR within
	MacroExpander.
	* rust-session-manager.cc (Session::expansion): Run ENR.
	* resolve/rust-early-name-resolver.cc: New file.
	* resolve/rust-early-name-resolver.h: New file.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-path.h: Add `accept_vis` method to `GenericArg` class.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* resolve/rust-ast-resolve-item.cc (ResolveItem::visit): Add note for
	glob import resolving.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* util/rust-hir-map.h: Add new mappings.
	* util/rust-hir-map.cc (Mappings::insert_macro_invocation): Add insertion
	function into mappings.
	(Mappings::lookup_macro_invocation): Add lookup function for mappings.

2023-02-21  Marc Poulhiès  <dkm@kataplop.net>

	* parse/rust-parse-impl.h (Parser::parse_stmt_or_expr_without_block):
	Check if `expr` is valid after parsing it.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* backend/rust-builtins.cc (BuiltinsContext::setup): Declare prefetch
	intrinsics.
	* backend/rust-compile-intrinsic.cc (enum class Prefetch): Add kinds of
	prefetch intrinsics.
	(prefetch_data_handler): New function.
	(prefetch_read_data): Likewise.
	(prefetch_write_data): Likewise.

2023-02-21  David Faust  <david.faust@oracle.com>

	* ast/rust-ast-dump.cc (Dump::visit): Fill empty functions for
	structs, enums and unions.

2023-02-21  David Faust  <david.faust@oracle.com>

	* ast/rust-ast-dump.cc (Dump::format_tuple_field): New.
	(Dump::format_struct_field): New.
	* ast/rust-ast-dump.h (format_tuple_field): New.
	(format_struct_field): New.

2023-02-21  David Faust  <david.faust@oracle.com>

	* ast/rust-ast-dump.cc (Dump::visit): move generic params dump ...
	(Dump::emit_generic_params): ... here.
	* ast/rust-ast-dump.h (emit_generic_params): New.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-hir-trait-ref.h (lookup_trait_item): Add lookup
	in super_trait.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* backend/rust-compile-expr.cc
	(CompileExpr::resolve_method_address): Use auto and minor change
	in candidate init.
	* typecheck/rust-hir-type-check-path.cc
	(TypeCheckExpr::resolve_segments): Likewise.
	* typecheck/rust-hir-type-check-type.cc: Likewise.
	* backend/rust-compile-resolve-path.cc
	(HIRCompileBase::query_compile): Likewise. Removecall to
	set_ty_ref.
	* typecheck/rust-hir-path-probe.h (struct PathProbeCandidate): Add
	locus initializer in ctor, implement get_defid.
	(class PathProbeType::Probe): return a set instead of vector.
	Adjust class impl.
	(class ReportMultipleCandidateError): Do not inherit from
	HIRImplVisitor anymore and remove corresponding impl. Adjust for
	change in Probe. Simplify Report handling.
	(class PathProbeImplTrait::Probe): Adjust return type.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-hir-type-check-enumitem.cc
	(TypeCheckEnumItem::visit): Adjust VariantDef ctor calls with
	DefID.
	* typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit):
	Likewise.
	* typecheck/rust-tyty.h (VariantDef): Add defid parameter to ctor.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* Make-lang.in: Add `rust-builtins.o` as target
	* backend/rust-builtins.h: Refactor to new file.
	* backend/rust-builtins.cc: New file.

2023-02-21  David Faust  <david.faust@oracle.com>

	* ast/rust-ast-dump.cc (Dump::visit): Implement visitor for If
	expressions.

2023-02-21  David Faust  <david.faust@oracle.com>

	* ast/rust-ast-dump.cc (Dump::visit): Dump assignment and compound
	assignment expressions.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-hir-type-check-base.cc (TypeCheckBase::query_type):
	Check for recursive queries.
	* typecheck/rust-hir-type-check.h: New functions: `query_completed`,
	`query_in_progress`, `insert_query`.
	* typecheck/rust-tyty-bounds.cc (TypeBoundsProbe::scan): Use `query_type` API.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-ast-dump.cc (Dump::emit_visibility): New function.
	(Dump::visit): Call into `emit_visibility`.
	(Dump::format_function_common): Likewise.
	* ast/rust-ast-dump.h: Declare `emit_visibility`.

2023-02-21  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-item.h: Rename get_public_vis_type.
	* hir/rust-ast-lower.cc (translate_visibility): Use new name.

2023-02-21  Philip Herron  <philip.herron@embecosm.com>

	* resolve/rust-name-resolver.h: Add miscellenaous item mappings.
	* resolve/rust-name-resolver.cc (Resolver::insert_resolved_misc): Use
	new mappings.
	(Resolver::lookup_resolved_misc): Likewise.
	* typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments):
	Adapt function to insert into miscelleanous mappings.
	* checks/lints/rust-lint-marklive.cc (MarkLive::find_ref_node_id):
	Allow lookup in miscelleanous mappings in mark-live phase.

2023-02-20  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	* backend/rust-tree.cc: Include memmodel.h.

2023-02-17  Thomas Schwinge  <thomas@codesourcery.com>

	* backend/rust-tree.cc: '#include "tm_p.h"'.

2023-01-31  Philip Herron  <philip.herron@embecosm.com>

	* Make-lang.in: Remove `rust-hir-typecheck-toplevel` object and add
	`rust-hir-path-probe` one.
	* typecheck/rust-hir-dot-operator.cc (MethodResolver::MethodResolver):
	Remove no longer used `context` and `mapping` fields, and use new
	`query_type` API.
	(MethodResolver::MethodResolver): Likewise.
	(MethodResolver::select): Use new `query_type` API.
	* typecheck/rust-hir-path-probe.h: New header.
	* typecheck/rust-hir-path-probe.cc: New file.
	* typecheck/rust-hir-dot-operator.h (class MethodResolver): Remove no
	longer used `context` and `mapping` fields, and use new `query_type` API.
	* typecheck/rust-hir-type-check-base.cc (TypeCheckBase::query_type): New function.
	* typecheck/rust-hir-type-check-base.h: Declare `query_type` function.
	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Add debug print.
	* typecheck/rust-hir-type-check-implitem.cc (TypeCheckTopLevelExternItem::Resolve):
	Refactor and make use of new query system.
	(TypeCheckTopLevelExternItem::Resolve): Likewise.
	(TypeCheckTopLevelExternItem::visit): Likewise.
	(TypeCheckTopLevelImplItem::visit): Likewise.
	(TypeCheckImplItem::visit): Likewise.
	(TypeCheckImplItem::TypeCheckImplItem): Likewise.
	(TypeCheckImplItem::Resolve): Likewise.
	(TypeCheckImplItemWithTrait::visit): Likewise.
	* typecheck/rust-hir-type-check-implitem.h (class TypeCheckTopLevelImplItem): Likewise.
	(class TypeCheckImplItemWithTrait): Likewise.
	* typecheck/rust-hir-type-check-item.cc (TypeCheckItem::TypeCheckItem): Likewise.
	(TypeCheckItem::Resolve): Likewise.
	(TypeCheckItem::ResolveImplItem): Likewise.
	(TypeCheckItem::ResolveImplBlockSelf): Likewise.
	(TypeCheckItem::visit): Likewise.
	(TypeCheckItem::resolve_impl_item): Likewise.
	(TypeCheckItem::resolve_impl_block_substitutions): Likewise.
	(TypeCheckItem::resolve_impl_block_self): Likewise.
	* typecheck/rust-hir-type-check-item.h: Likewise.
	* typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_root_path): Likewise.
	(TypeCheckExpr::resolve_segments): Likewise.
	* typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Likewise.
	* typecheck/rust-hir-type-check-stmt.h: Likewise.
	* typecheck/rust-hir-type-check-type.cc (TypeCheckType::Resolve): Likewise.
	(TypeCheckType::visit): Likewise.
	(TypeCheckType::resolve_root_path): Likewise.
	* typecheck/rust-hir-type-check.cc (TypeResolution::Resolve): Likewise.
	* typecheck/rust-hir-type-check.h: Likewise.
	* typecheck/rust-substitution-mapper.h: Likewise.
	* typecheck/rust-tyty-bounds.cc (TypeBoundsProbe::scan): Likewise.
	(TypeCheckBase::get_predicate_from_bound): Likewise.
	(TypeBoundsMappings::add_bound): Likewise.
	* typecheck/rust-tyty-cmp.h: Likewise.
	* typecheck/rust-tyty.h: Likewise.
	* typecheck/rust-tyty.cc (SubstitutionRef::infer_substitions): Likewise.
	(ParamType::resolve): Do not infinite loop anymore.
	* util/rust-hir-map.h: Add new `hirImplBlockTypeMappings` and
	declare `lookup_impl_block_type`.
	* util/rust-hir-map.cc (Mappings::insert_hir_impl_block): Use new
	`hirImplBlockTypeMappings`
	(Mappings::lookup_impl_block_type): New function.

2023-01-31  Philip Herron  <philip.herron@embecosm.com>

	* backend/rust-compile-context.h: Add new optional `asm_name` string
	argument to `lookup_function_decl`.
	* backend/rust-compile-item.cc (CompileItem::visit): Compute assembly
	name and pass it to `lookup_function_decl` when calling it.

2023-01-31  Philip Herron  <philip.herron@embecosm.com>

	* backend/rust-constexpr.cc (eval_store_expression): Remove invalid
	assertion on constexpr constructors.

2023-01-31  Philip Herron  <philip.herron@embecosm.com>

	* backend/rust-compile-expr.h: Formatting.

2023-01-31  liushuyu  <liushuyu011@gmail.com>

	* ast/rust-ast.h (class MacroInvocData): Store expander as
	member of the class.
	(class Expr): Add `is_literal` virtual method
	* ast/rust-expr.h: Override `is_literal` for `LiteralExpr`s.
	* expand/rust-macro-builtins.cc (try_expand_macro_expression): New function.
	(try_extract_string_literal_from_fragment): Likewise.
	(try_expand_single_string_literal): Likewise.
	(try_expand_many_expr): Likewise.
	(parse_single_string_literal): Add macro expander as argument.
	(MacroBuiltin::include_bytes): Pass expander as argument to
	`parse_single_string_literal`.
	(MacroBuiltin::include_str): Likewise.
	(MacroBuiltin::compile_error): Likewise.
	(MacroBuiltin::include): Likewise.
	(MacroBuiltin::concat): Likewise and add better error handling.
	(MacroBuiltin::env): Likewise.
	* expand/rust-macro-expand.cc (MacroExpander::expand_invoc): Expand
	invocations recursively.

2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>

	* lang.opt: Add new ``-frust-compile-until` option.
	* rust-session-manager.cc (Session::compile_crate): Add stops around
	various compilation steps in the pipeline.
	* rust-session-manager.h (struct CompileOptions): Add `CompileStep` enum
	and field.

2023-01-31  Philip Herron  <philip.herron@embecosm.com>

	* backend/rust-tree.cc (rs_type_quals): Comment out bad assertion

2023-01-31  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-hir-type-check-toplevel.cc (TypeCheckTopLevel::visit):
	Make static items behave more similarly to const items.

2023-01-31  Philip Herron  <philip.herron@embecosm.com>

	* backend/rust-compile-item.cc (CompileItem::visit): Const evaluate
	static item expressions.

2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>

	* hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Do not lower
	null items within modules.

2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>

	* util/rust-attributes.cc: Add `macro_use` to list of builtin
	attributes.

2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>

	* checks/errors/rust-const-checker.cc (ConstChecker::ctx_to_str): Allow
	getting an error string from a specific constant context.
	(ConstChecker::ctx_allows_default): New function, check if a context
	allows default values for Const generics.
	(ConstChecker::visit): Call into `ctx_allows_default`.
	* checks/errors/rust-const-checker.h: Declare `ctx_allows_default`.

2023-01-31  liushuyu  <liushuyu011@gmail.com>

	* backend/rust-compile-expr.cc (CompileExpr::visit): Properly formulate
	exit condition when compiling while loops.

2023-01-31  Faisal Abbas  <90.abbasfaisal@gmail.com>

	* typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Turn
	constant item typechecking into a coercion site instead of a unify
	site.

2023-01-31  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-tyty.h: Fix `is_concrete` for unit types with
	substitutions.

2023-01-31  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-tyty-bounds.cc (TypeBoundPredicate::contains_associated_types):
	Check if a type bound predicate contains assocated types.
	* typecheck/rust-tyty.h: Declare the above mentioned function.
	* typecheck/rust-hir-trait-resolve.cc: Use `contains_associated_types`
	function.

2023-01-31  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Add
	more calls to `rust_debug` for development.

2023-01-31  Philip Herron  <philip.herron@embecosm.com>

	* backend/rust-compile-base.cc: Improve compilation pipeline and simplify
	function.

2023-01-31  Philip Herron  <philip.herron@embecosm.com>

	* backend/rust-tree.cc (comptypes): Remove some C++ specific checks in
	Rust const folder for now.

2023-01-31  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-hir-type-check-base.cc (TypeCheckBase::unify_site): Add
	better unification function with debug calls.
	* typecheck/rust-autoderef.cc (AutoderefCycle::cycle): Add more debug
	calls and use new unify API.
	* typecheck/rust-coercion.cc (TypeCoercionRules::do_coercion): Likewise.
	(TypeCoercionRules::coerce_borrowed_pointer): Likewise.
	(TypeCoercionRules::select): Likewise.
	* typecheck/rust-hir-dot-operator.cc (MethodResolver::select): Likewise.
	* typecheck/rust-hir-trait-resolve.cc (TraitItemReference::resolve_item): Likewise.
	(TypeCheckBase::coercion_site): Likewise.
	(TypeCheckBase::cast_site): Likewise.
	* typecheck/rust-hir-type-check-base.h: 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 (TypeCheckTopLevelImplItem::visit): Likewise.
	(TypeCheckImplItem::visit): Likewise.
	* typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit): Likewise.
	* typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments): Likewise.
	* typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Likewise.
	* typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Likewise.
	* typecheck/rust-hir-type-check-struct.cc (TypeCheckStructExpr::resolve): Likewise.
	* typecheck/rust-hir-type-check-toplevel.cc (TypeCheckTopLevel::visit): Likewise.
	* typecheck/rust-hir-type-check-type.cc (TypeCheckType::visit): Likewise.
	* typecheck/rust-hir-type-check.cc (TypeResolution::Resolve): Likewise.
	* typecheck/rust-tyctx.cc (TypeCheckContext::peek_return_type): Likewise.
	* typecheck/rust-tyty-call.cc (TypeCheckMethodCallExpr::visit): Likewise.
	* typecheck/rust-tyty-cmp.h: Likewise.
	* typecheck/rust-tyty-rules.h: Likewise.
	* typecheck/rust-tyty.cc (BaseType::mappings_str): Likewise.
	(BaseType::debug): Print type name more clearly.
	(BaseType::debug_str): Add new function to print type pointer and name.
	(TupleType::get_name): Improve type name fetching function.
	(ReferenceType::get_name): Likewise.
	(PointerType::get_name): Likewise.
	* typecheck/rust-tyty.h: Refactor definitions outside of the header.

2023-01-31  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-hir-type-check-base.cc (TypeCheckBase::TypeCheckBase):
	Remove constructor.
	(TypeCheckBase::coercion_site): Add `Location` argument to function.
	* typecheck/rust-hir-type-check-base.h: Use `TypeCheckBase::coercion_site`
	function with location argument.
	* 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-expr.h (class TypeCheckExpr): 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-toplevel.cc (TypeCheckTopLevel::visit): Likewise.
	* typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): Likewise.
	(TypeCheckMethodCallExpr::visit): Likewise.
	* typecheck/rust-tyty.h: Add missing locus field.
	* typecheck/rust-tyty.cc (StructFieldType::clone): Use locus field.
	(StructFieldType::monomorphized_clone): Likewise.

2023-01-31  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-tyctx.cc (TypeCheckContext::pop_return_type): Add
	guards around `std::vector<T>.pop_back()`.
	(TypeCheckContext::peek_context): Likewise for `std::vector<T>.back()`.

2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>
	    philberty  <philip.herron@embecosm.com>

	* ast/rust-ast.h: Improve assertions within ASTFragment API.

2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-ast.h: Add assertions and accessors for fragment nodes.
	* expand/rust-attribute-visitor.cc (AttrVisitor::visit): Fix expansion
	context typo when visiting `InherentImpl` items.
	(AttrVisitor::maybe_expand_expr): Use new Fragment accessor to fetch
	properly typed node.
	(AttrVisitor::maybe_expand_type): Likewise.
	* expand/rust-macro-expand.cc (transcribe_type): Emit parse errors
	when trying to parse a type.

2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-ast-dump.h: Add shorthand `AST::Dump::debug` function to
	dump an AST node on `stderr`.

2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>
	    philberty  <philip.herron@embecosm.com>

	* expand/rust-macro-expand.cc (parse_many): Return early from parsing
	loop if we encounter an error, and emit that error in the meantime.

2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>

	* expand/rust-macro-expand.cc (MacroExpander::match_matcher): Handle
	fragments differently based on whether or not we are currently trying
	to match a matcher in a repetition context.
	(MacroExpander::match_n_matches): Use new `in_repetition` argument
	properly when calling `match_matcher`.
	* expand/rust-macro-expand.h (MacroExpander::match_matcher): Allow
	passing extra `in_repetition` bool argument

2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>

	* parse/rust-parse-impl.h: Allow parsing full range expressions without
	erroring out.

2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>

	* checks/lints/rust-lint-scan-deadcode.h: Do not report public items
	as dead code.

2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>

	* util/rust-attributes.cc: Add `rustc_inherit_overflow_checks` to list
	of builtin attributes.

2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>

	* backend/rust-compile-expr.cc (CompileExpr::visit): Insert overflow
	checks logic.
	(CompileExpr::array_copied_expr): Insert overflow checks logic.
	* backend/rust-compile-item.cc (CompileItem::visit): Insert overflow
	checks logic.
	* backend/rust-compile-type.cc (TyTyResolveCompile::visit): Insert
	overflow checks logic.
	* rust-gcc.cc (Gcc_backend::arithmetic_or_logical_expression): Differentiate
	existing function from `arithmetic_or_logical_expression_checked`.
	This function does insert perform overflow checks.
	(Gcc_backend::arithmetic_or_logical_expression_checked): New
	function.
	(is_overflowing_expr): New function. Check if an expression is an
	overflowing one (ADD, SUB, MUL).
	(fetch_overflow_builtins): New function.
	* rust-backend.h: Declare `arithmetic_or_logical_expression_checked` in
	abstract `Backend` class.

2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>

	* backend/rust-builtins.h: Refactor builtin context class and add
	overflow builtins.

2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>

	* rust-gcc.cc (class Bvariable): Move class to `rust-gcc.h` header.
	* rust-gcc.h: New file.

2023-01-31  Philip Herron  <philip.herron@embecosm.com>

	* hir/rust-ast-lower-expr.h: Lower double borrow expressions to two
	`HIR::BorrowExpr`s.
	* hir/tree/rust-hir-expr.h: Remove `is_double_borrow` field from
	`HIR::BorrowExpr`.
	* typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Remove
	call to `gcc_unreachable` on double borrow expressions.

2023-01-31  Faisal Abbas  <90.abbasfaisal@gmail.com>

	* backend/rust-tree.cc : Add new includes.
	(scope_chain): New.
	(maybe_add_global): New.
	(init_modules): New (copied from cp)
	(var_in_constexpr_fn): Likewise.
	(member_vec_linear_search): Likewise.
	(member_vec_binary_search): Likewise.
	(is_overloaded_fn): Likewise.
	(ovl_make): Likewise.
	(lookup_add): Likewise.
	(type_memfn_quals): Likewise.
	(struct find_parameter_pack_data): Likewise.
	(struct conv_type_hasher): Likewise.
	(make_conv_op_name): Likewise.
	(builtin_pack_fn_p): Likewise.
	(builtin_pack_call_p): Likewise.
	(has_extra_args_mechanism_p): Likewise.
	(find_parameter_packs_r): Likewise.
	(WALK_SUBTREE): Likewise.
	(type_memfn_rqual): Likewise.
	(maybe_add_lang_type_raw): Likewise.
	(struct c_fileinfo): Likewise.
	(get_fileinfo): Likewise.
	(cxx_make_type): Likewise.
	(build_min_array_type): Likewise.
	(fields_linear_search): Likewise.
	(nothrow_spec_p): Likewise.
	(maybe_get_fns): Likewise.
	(get_fns): Likewise.
	(get_first_fn): Likewise.
	(dependent_name): Likewise.
	(called_fns_equal): Likewise.
	(canonical_eh_spec): Likewise.
	(rs_tree_code_length): Likewise.
	(rs_tree_operand_length): Likewise.
	(rs_tree_equal): Likewise.
	(publicly_uniquely_derived_p): Likewise.
	(comp_except_types): Likewise.
	(comp_except_specs): Likewise.
	(compparms): Likewise.
	(set_array_type_canon): Likewise.
	(struct cplus_array_info): Likewise.
	(struct cplus_array_hasher): Likewise.
	(cplus_array_hasher::hash): Likewise.
	(cplus_array_hasher::equal): Likewise.
	(is_byte_access_type): Likewise.
	(build_cplus_array_type): Likewise.
	(rs_build_qualified_type_real): Likewise.
	(vector_targets_convertible_p): Likewise.
	(comp_array_types): Likewise.
	(same_type_ignoring_top_level_qualifiers_p): Likewise.
	(comp_ptr_ttypes_const): Likewise.
	(similar_type_p): Likewise.
	(structural_comptypes): Likewise.
	(comptypes): Likewise.
	(next_initializable_field): Likewise.
	(sufficient_parms_p): Likewise.
	(default_ctor_p): Likewise.
	(user_provided_p): Likewise.
	(type_has_non_user_provided_default_constructor): Likewise.
	(default_init_uninitialized_part): Likewise.
	(extract_conversion_operator): Likewise.
	(get_class_binding_direct): Likewise.
	(lang_check_failed): Likewise.
	(skip_artificial_parms_for): Likewise.
	(in_class_defaulted_default_constructor): Likewise.
	(is_instantiation_of_constexpr): Likewise.
	(check_for_uninitialized_const_var): Likewise.
	(cv_unqualified): Likewise.
	(make_tree_vector): Likewise.
	(release_tree_vector): Likewise.
	(instantiation_dependent_expression_p): Likewise.
	(cp_get_callee): Likewise.
	(build_nop): Likewise.
	(scalarish_type_p): Likewise.
	(type_has_nontrivial_copy_init): Likewise.
	(build_local_temp): Likewise.
	(is_normal_capture_proxy): Likewise.
	(reject_gcc_builtin): Likewise.
	(is_bitfield_expr_with_lowered_type): Likewise.
	(maybe_undo_parenthesized_ref): Likewise.
	(fold_offsetof): Likewise.
	(char_type_p): Likewise.
	(resolve_nondeduced_context): Likewise.
	(instantiate_non_dependent_or_null): Likewise.
	(resolve_nondeduced_context_or_error): Likewise.
	(really_overloaded_fn): Likewise.
	(invalid_nonstatic_memfn_p): Likewise.
	(strip_top_quals): Likewise.
	(cxx_incomplete_type_inform): Likewise.
	(cxx_incomplete_type_diagnostic): Likewise.
	(decl_constant_var_p): Likewise.
	(undeduced_auto_decl): Likewise.
	(require_deduced_type): Likewise.
	* backend/rust-tree.h (enum c_tree_index): Likewise.
	(GTY): Likewise.
	(enum cp_tree_index): Likewise.
	(wchar_decl_node): Likewise.
	(vtable_entry_type): Likewise.
	(delta_type_node): Likewise.
	(vtable_index_type): Likewise.
	(class_type_node): Likewise.
	(unknown_type_node): Likewise.
	(init_list_type_node): Likewise.
	(explicit_void_list_node): Likewise.
	(vtbl_type_node): Likewise.
	(vtbl_ptr_type_node): Likewise.
	(std_node): Likewise.
	(abi_node): Likewise.
	(global_namespace): Likewise.
	(const_type_info_type_node): Likewise.
	(conv_op_marker): Likewise.
	(abort_fndecl): Likewise.
	(current_aggr): Likewise.
	(nullptr_node): Likewise.
	(nullptr_type_node): Likewise.
	(align_type_node): Likewise.
	(char8_type_node): Likewise.
	(char16_type_node): Likewise.
	(char32_type_node): Likewise.
	(wchar_type_node): Likewise.
	(underlying_wchar_type_node): Likewise.
	(wint_type_node): Likewise.
	(signed_size_type_node): Likewise.
	(unsigned_ptrdiff_type_node): Likewise.
	(intmax_type_node): Likewise.
	(uintmax_type_node): Likewise.
	(widest_integer_literal_type_node): Likewise.
	(widest_unsigned_literal_type_node): Likewise.
	(sig_atomic_type_node): Likewise.
	(int8_type_node): Likewise.
	(int16_type_node): Likewise.
	(int32_type_node): Likewise.
	(int64_type_node): Likewise.
	(uint8_type_node): Likewise.
	(c_uint16_type_node): Likewise.
	(c_uint32_type_node): Likewise.
	(c_uint64_type_node): Likewise.
	(int_least8_type_node): Likewise.
	(int_least16_type_node): Likewise.
	(int_least32_type_node): Likewise.
	(int_least64_type_node): Likewise.
	(uint_least8_type_node): Likewise.
	(uint_least16_type_node): Likewise.
	(uint_least32_type_node): Likewise.
	(uint_least64_type_node): Likewise.
	(int_fast8_type_node): Likewise.
	(int_fast16_type_node): Likewise.
	(int_fast32_type_node): Likewise.
	(int_fast64_type_node): Likewise.
	(uint_fast8_type_node): Likewise.
	(uint_fast16_type_node): Likewise.
	(uint_fast32_type_node): Likewise.
	(uint_fast64_type_node): Likewise.
	(intptr_type_node): Likewise.
	(uintptr_type_node): Likewise.
	(truthvalue_type_node): Likewise.
	(truthvalue_true_node): Likewise.
	(truthvalue_false_node): Likewise.
	(char_array_type_node): Likewise.
	(char8_array_type_node): Likewise.
	(char16_array_type_node): Likewise.
	(char32_array_type_node): Likewise.
	(wchar_array_type_node): Likewise.
	(string_type_node): Likewise.
	(const_string_type_node): Likewise.
	(default_function_type): Likewise.
	(function_name_decl_node): Likewise.
	(pretty_function_name_decl_node): Likewise.
	(c99_function_name_decl_node): Likewise.
	(saved_function_name_decls): Likewise.
	(null_node): Likewise.
	(ctor_identifier): Likewise.
	(complete_ctor_identifier): Likewise.
	(base_ctor_identifier): Likewise.
	(dtor_identifier): Likewise.
	(complete_dtor_identifier): Likewise.
	(base_dtor_identifier): Likewise.
	(deleting_dtor_identifier): Likewise.
	(conv_op_identifier): Likewise.
	(delta_identifier): Likewise.
	(in_charge_identifier): Likewise.
	(vtt_parm_identifier): Likewise.
	(as_base_identifier): Likewise.
	(this_identifier): Likewise.
	(pfn_identifier): Likewise.
	(vptr_identifier): Likewise.
	(global_identifier): Likewise.
	(anon_identifier): Likewise.
	(auto_identifier): Likewise.
	(decltype_auto_identifier): Likewise.
	(init_list_identifier): Likewise.
	(for_range__identifier): Likewise.
	(for_begin__identifier): Likewise.
	(for_end__identifier): Likewise.
	(for_range_identifier): Likewise.
	(for_begin_identifier): Likewise.
	(for_end_identifier): Likewise.
	(abi_tag_identifier): Likewise.
	(aligned_identifier): Likewise.
	(begin_identifier): Likewise.
	(end_identifier): Likewise.
	(get__identifier): Likewise.
	(gnu_identifier): Likewise.
	(tuple_element_identifier): Likewise.
	(tuple_size_identifier): Likewise.
	(type_identifier): Likewise.
	(value_identifier): Likewise.
	(fun_identifier): Likewise.
	(closure_identifier): Likewise.
	(heap_uninit_identifier): Likewise.
	(heap_identifier): Likewise.
	(heap_deleted_identifier): Likewise.
	(heap_vec_uninit_identifier): Likewise.
	(heap_vec_identifier): Likewise.
	(omp_identifier): Likewise.
	(lang_name_c): Likewise.
	(lang_name_cplusplus): Likewise.
	(empty_except_spec): Likewise.
	(noexcept_true_spec): Likewise.
	(noexcept_false_spec): Likewise.
	(noexcept_deferred_spec): Likewise.
	(terminate_fn): Likewise.
	(call_unexpected_fn): Likewise.
	(get_exception_ptr_fn): Likewise.
	(begin_catch_fn): Likewise.
	(end_catch_fn): Likewise.
	(allocate_exception_fn): Likewise.
	(free_exception_fn): Likewise.
	(throw_fn): Likewise.
	(rethrow_fn): Likewise.
	(atexit_fn_ptr_type_node): Likewise.
	(atexit_node): Likewise.
	(dso_handle_node): Likewise.
	(dynamic_cast_node): Likewise.
	(cleanup_type): Likewise.
	(vtt_parm_type): Likewise.
	(any_targ_node): Likewise.
	(source_location_impl): Likewise.
	(OVL_FUNCTION): Likewise.
	(OVL_CHAIN): Likewise.
	(OVL_DEDUP_P): Likewise.
	(OVL_USING_P): Likewise.
	(OVL_HIDDEN_P): Likewise.
	(OVL_NESTED_P): Likewise.
	(OVL_LOOKUP_P): Likewise.
	(OVL_EXPORT_P): Likewise.
	(OVL_FIRST): Likewise.
	(OVL_NAME): Likewise.
	(OVL_P): Likewise.
	(OVL_SINGLE_P): Likewise.
	(TYPE_HAS_DEFAULT_CONSTRUCTOR): Likewise.
	(CLASSTYPE_LAZY_DEFAULT_CTOR): Likewise.
	(CLASSTYPE_CONSTRUCTORS): Likewise.
	(ATTR_IS_DEPENDENT): Likewise.
	(ABI_TAG_IMPLICIT): Likewise.
	(PARENTHESIZED_LIST_P): Likewise.
	(DECL_DEPENDENT_P): Likewise.
	(USING_DECL_SCOPE): Likewise.
	(USING_DECL_DECLS): Likewise.
	(USING_DECL_TYPENAME_P): Likewise.
	(USING_DECL_UNRELATED_P): Likewise.
	(DECL_DECLARES_FUNCTION_P): Likewise.
	(DECL_DECLARES_TYPE_P): Likewise.
	(IDENTIFIER_KIND_BIT_0): Likewise.
	(IDENTIFIER_KIND_BIT_1): Likewise.
	(IDENTIFIER_KIND_BIT_2): Likewise.
	(IDENTIFIER_MARKED): Likewise.
	(IDENTIFIER_VIRTUAL_P): Likewise.
	(IDENTIFIER_KEYWORD_P): Likewise.
	(IDENTIFIER_CDTOR_P): Likewise.
	(IDENTIFIER_CTOR_P): Likewise.
	(IDENTIFIER_DTOR_P): Likewise.
	(IDENTIFIER_ANY_OP_P): Likewise.
	(IDENTIFIER_OVL_OP_P): Likewise.
	(IDENTIFIER_ASSIGN_OP_P): Likewise.
	(IDENTIFIER_CONV_OP_P): Likewise.
	(IDENTIFIER_NEWDEL_OP_P): Likewise.
	(IDENTIFIER_NEW_OP_P): Likewise.
	(CLASSTYPE_DIAMOND_SHAPED_P): Likewise.
	(CLASSTYPE_REPEATED_BASE_P): Likewise.
	(CLASSTYPE_KEY_METHOD): Likewise.
	(CLASSTYPE_MEMBER_VEC): Likewise.
	(CLASSTYPE_DECL_LIST): Likewise.
	(CLASSTYPE_DESTRUCTOR): Likewise.
	(CLASSTYPE_HAS_PRIMARY_BASE_P): Likewise.
	(CLASSTYPE_PRIMARY_BINFO): Likewise.
	(CLASSTYPE_VBASECLASSES): Likewise.
	(CLASSTYPE_AS_BASE): Likewise.
	(DECL_CONV_FN_P): Likewise.
	(DECL_CONV_FN_TYPE): Likewise.
	(same_type_p): Likewise.
	(WILDCARD_TYPE_P): Likewise.
	(MAYBE_CLASS_TYPE_P): Likewise.
	(FUNCTION_REF_QUALIFIED): Likewise.
	(FUNCTION_RVALUE_QUALIFIED): Likewise.
	(TYPE_PTRMEMFUNC_FN_TYPE): Likewise.
	(TYPE_PTRMEMFUNC_FN_TYPE_RAW): Likewise.
	(TYPE_DEPENDENT_P): Likewise.
	(TYPE_DEPENDENT_P_VALID): Likewise.
	(TYPE_HAS_NONTRIVIAL_DESTRUCTOR): Likewise.
	(TYPE_RAISES_EXCEPTIONS): Likewise.
	(IDENTIFIER_BINDING): Likewise.
	(LANG_IDENTIFIER_CAST): Likewise.
	(IF_COND): Likewise.
	(THEN_CLAUSE): Likewise.
	(ELSE_CLAUSE): Likewise.
	(IF_SCOPE): Likewise.
	(IF_STMT_CONSTEXPR_P): Likewise.
	(IF_STMT_CONSTEVAL_P): Likewise.
	(DECLTYPE_TYPE_EXPR): Likewise.
	(SET_CLASSTYPE_INTERFACE_UNKNOWN_X): Likewise.
	(CLASSTYPE_INTERFACE_ONLY): Likewise.
	(TYPE_NAME_STRING): Likewise.
	(TYPE_NAME_LENGTH): Likewise.
	(CONSTRAINT_VAR_P): Likewise.
	(KOENIG_LOOKUP_P): Likewise.
	(DECL_PARM_INDEX): Likewise.
	(DECL_PARM_LEVEL): Likewise.
	(CONV_IMPLICIT): Likewise.
	(CONV_STATIC): Likewise.
	(CONV_CONST): Likewise.
	(CONV_REINTERPRET): Likewise.
	(CONV_PRIVATE): Likewise.
	(CONV_FORCE_TEMP): Likewise.
	(CONV_FOLD): Likewise.
	(CONV_OLD_CONVERT): Likewise.
	(CONV_C_CAST): Likewise.
	(CONV_BACKEND_CONVERT): Likewise.
	(WANT_INT): Likewise.
	(WANT_FLOAT): Likewise.
	(WANT_ENUM): Likewise.
	(WANT_POINTER): Likewise.
	(WANT_NULL): Likewise.
	(WANT_VECTOR_OR_COMPLEX): Likewise.
	(WANT_ARITH): Likewise.
	(COMPARE_STRICT): Likewise.
	(COMPARE_BASE): Likewise.
	(COMPARE_DERIVED): Likewise.
	(COMPARE_REDECLARATION): Likewise.
	(COMPARE_STRUCTURAL): Likewise.
	(SF_DEFAULT): Likewise.
	(SF_PRE_PARSED): Likewise.
	(SF_INCLASS_INLINE): Likewise.
	(SD_UNINITIALIZED): Likewise.
	(SD_INITIALIZED): Likewise.
	(SD_DECOMPOSITION): Likewise.
	(SD_DEFAULTED): Likewise.
	(SD_DELETED): Likewise.
	(TYPE_PTRDATAMEM_P): Likewise.
	(RS_TYPE_CONST_P): Likewise.
	(TYPE_MAIN_DECL): Likewise.
	(DECL_NONTRIVIALLY_INITIALIZED_P): Likewise.
	(DECL_DEFAULTED_FN): Likewise.
	(TYPE_HAS_USER_CONSTRUCTOR): Likewise.
	(DECL_INITIALIZED_IN_CLASS_P): Likewise.
	(DECL_DEFAULTED_IN_CLASS_P): Likewise.
	(DECL_NONSTATIC_MEMBER_FUNCTION_P): Likewise.
	(DECL_HAS_IN_CHARGE_PARM_P): Likewise.
	(DECL_HAS_VTT_PARM_P): Likewise.
	(FUNCTION_FIRST_USER_PARMTYPE): Likewise.
	(FUNCTION_FIRST_USER_PARM): Likewise.
	(DECL_CONSTRUCTOR_P): Likewise.
	(DECL_DELETED_FN): Likewise.
	(BRACE_ENCLOSED_INITIALIZER_P): Likewise.
	(DECL_IMMEDIATE_FUNCTION_P): Likewise.
	(SET_DECL_IMMEDIATE_FUNCTION_P): Likewise.
	(CONSTRUCTOR_MUTABLE_POISON): Likewise.
	(PTRMEM_CST_MEMBER): Likewise.
	(REF_PARENTHESIZED_P): Likewise.
	(TYPE_PTRMEM_P): Likewise.
	(TYPE_PTR_OR_PTRMEM_P): Likewise.
	(DECL_DECOMPOSITION_P): Likewise.
	(DECL_DECOMP_BASE): Likewise.
	(DECL_MAYBE_IN_CHARGE_CDTOR_P): Likewise.
	(DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P): Likewise.
	(DECL_CLONED_FUNCTION_P): Likewise.
	(DECL_CLONED_FUNCTION): Likewise.
	(DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P): Likewise.
	(cp_function_chain): Likewise.
	(cdtor_label): Likewise.
	(current_class_ptr): Likewise.
	(current_class_ref): Likewise.
	(current_eh_spec_block): Likewise.
	(current_in_charge_parm): Likewise.
	(current_vtt_parm): Likewise.
	(current_retval_sentinel): Likewise.
	(current_function_returns_value): Likewise.
	(current_function_returns_null): Likewise.
	(current_function_returns_abnormally): Likewise.
	(current_function_infinite_loop): Likewise.
	(in_base_initializer): Likewise.
	(in_function_try_handler): Likewise.
	(current_function_return_value): Likewise.
	(current_class_type): Likewise.
	(TYPE_BEING_DEFINED): Likewise.
	(DECL_STATIC_FUNCTION_P): Likewise.
	(DECL_FUNCTION_MEMBER_P): Likewise.
	(LANG_DECL_MIN_CHECK): Likewise.
	(LANG_DECL_FN_CHECK): Likewise.
	(LANG_DECL_NS_CHECK): Likewise.
	(LANG_DECL_PARM_CHECK): Likewise.
	(LANG_DECL_DECOMP_CHECK): Likewise.
	(RS_INTEGRAL_TYPE_P): Likewise.
	(STAT_HACK_P): Likewise.
	(STAT_TYPE_VISIBLE_P): Likewise.
	(STAT_TYPE): Likewise.
	(STAT_DECL): Likewise.
	(STAT_VISIBLE): Likewise.
	(MAYBE_STAT_DECL): Likewise.
	(MAYBE_STAT_TYPE): Likewise.
	(STAT_TYPE_HIDDEN_P): Likewise.
	(STAT_DECL_HIDDEN_P): Likewise.
	(class warning_sentinel): Likewise.
	(struct uid_sensitive_constexpr_evaluation_checker): Likewise.
	(class iloc_sentinel): Likewise.
	(struct GTY): Likewise.
	(struct named_decl_hash): Likewise.
	(enum lang_decl_selector): Likewise.
	(LANG_DECL_HAS_MIN): Likewise.
	(struct named_label_entry): Likewise.
	(struct named_label_hash): Likewise.
	(enum ref_operator): Likewise.
	(struct c_fileinfo): Likewise.
	(class ovl_iterator): Likewise.
	(class lkp_iterator): Likewise.
	(enum rs_ref_qualifier): Likewise.
	(enum tsubst_flags): Likewise.
	(enum cp_identifier_kind): Likewise.
	(enum tag_types): Likewise.
	(enum compare_bounds_t): Likewise.
	(mark_rvalue_use): Likewise.
	(type_unknown_p): Likewise.
	(init_modules): Likewise.
	(var_in_constexpr_fn): Likewise.
	(ovl_first): Likewise.
	(lookup_add): Likewise.
	(ovl_make): Likewise.
	(is_overloaded_fn): Likewise.
	(maybe_add_lang_type_raw): Likewise.
	(type_memfn_rqual): Likewise.
	(builtin_pack_fn_p): Likewise.
	(make_conv_op_name): Likewise.
	(type_memfn_quals): Likewise.
	(get_fileinfo): Likewise.
	(cxx_make_type): Likewise.
	(build_cplus_array_type): Likewise.
	(is_byte_access_type): Likewise.
	(comptypes): Likewise.
	(canonical_eh_spec): Likewise.
	(cp_tree_operand_length): Likewise.
	(rs_tree_equal): Likewise.
	(compparms): Likewise.
	(rs_build_qualified_type_real): Likewise.
	(rs_build_qualified_type): Likewise.
	(cv_qualified_p): Likewise.
	(similar_type_p): Likewise.
	(vector_targets_convertible_p): Likewise.
	(same_type_ignoring_top_level_qualifiers_p): Likewise.
	(comp_ptr_ttypes_const): Likewise.
	(get_class_binding_direct): Likewise.
	(skip_artificial_parms_for): Likewise.
	(lang_check_failed): Likewise.
	(default_init_uninitialized_part): Likewise.
	(type_has_non_user_provided_default_constructor): Likewise.
	(default_ctor_p): Likewise.
	(user_provided_p): Likewise.
	(sufficient_parms_p): Likewise.
	(next_initializable_field): Likewise.
	(in_class_defaulted_default_constructor): Likewise.
	(is_instantiation_of_constexpr): Likewise.
	(check_for_uninitialized_const_var): Likewise.
	(reduced_constant_expression_p): Likewise.
	(cv_unqualified): Likewise.
	(cp_get_callee): Likewise.
	(cp_get_callee_fndecl_nofold): Likewise.
	(is_nondependent_static_init_expression): Likewise.
	(maybe_constant_init): Likewise.
	(build_nop): Likewise.
	(scalarish_type_p): Likewise.
	(is_bitfield_expr_with_lowered_type): Likewise.
	(convert_bitfield_to_declared_type): Likewise.
	(cp_fold_maybe_rvalue): Likewise.
	(maybe_undo_parenthesized_ref): Likewise.
	(fold_offsetof): Likewise.
	(cp_truthvalue_conversion): Likewise.
	(fold_non_dependent_expr): Likewise.
	(char_type_p): Likewise.
	(instantiation_dependent_expression_p): Likewise.
	(type_has_nontrivial_copy_init): Likewise.
	(build_local_temp): Likewise.
	(is_normal_capture_proxy): Likewise.
	(reject_gcc_builtin): Likewise.
	(resolve_nondeduced_context): Likewise.
	(cxx_incomplete_type_diagnostic): Likewise.
	(cxx_incomplete_type_error): Likewise.
	(invalid_nonstatic_memfn_p): Likewise.
	(really_overloaded_fn): Likewise.
	(resolve_nondeduced_context_or_error): Likewise.
	(instantiate_non_dependent_or_null): Likewise.
	(cxx_incomplete_type_inform): Likewise.
	(strip_top_quals): Likewise.
	(undeduced_auto_decl): Likewise.
	(require_deduced_type): Likewise.
	(decl_constant_var_p): Likewise.
	(type_of_this_parm): Likewise.
	(class_of_this_parm): Likewise.
	(identifier_p): Likewise.
	(gnu_vector_type_p): Likewise.
	(make_tree_vector): Likewise.
	(release_tree_vector): Likewise.
	(class releasing_vec): Likewise.
	(vec_safe_push): Likewise.
	(null_node_p): Likewise.
	* backend/rust-compile-base.cc (HIRCompileBase::setup_fndecl): Correctly
	set fndecl as constexpr from qualifiers.
	(HIRCompileBase::compile_function): Test if fndecl is constexpr.
	(HIRCompileBase::compile_constant_item): Set fndecl as constexpr.
	* backend/rust-compile-intrinsic.cc : Update include.
	(finalize_intrinsic_block): Set fndecl as constexpr.
	* backend/rust-constexpr.cc : Update include.
	(VERIFY_CONSTANT): New.
	(is_instantiation_of_constexpr): New.
	(literal_type_p): New.
	(verify_constant): New.
	(find_array_ctor_elt): New.
	(array_index_cmp): New.
	(potential_constant_expression_1): New.
	(get_nth_callarg): New.
	(unshare_constructor): New.
	(maybe_save_constexpr_fundef): New.
	(returns): New.
	(breaks): New.
	(continues): New.
	(switches): New.
	(struct constexpr_global_ctx): Add new fields.
	(constexpr_fundef): New.
	(struct constexpr_call): New.
	(constexpr_call_hasher : ggc_ptr_hash<constexpr_call>): New.
	(enum constexpr_switch_state): New.
	(struct constexpr_ctx): Add new fields.
	(struct constexpr_fundef_hasher): New.
	(constexpr_fundef_table): New.
	(constexpr_fundef_hasher::equal): New.
	(constexpr_fundef_hasher::hash): New.
	(retrieve_constexpr_fundef): New.
	(uid_sensitive_constexpr_evaluation_value): New.
	(uid_sensitive_constexpr_evaluation_true_counter): New.
	(uid_sensitive_constexpr_evaluation_p): New.
	(class temp_override): New.
	(struct uid_sensitive_constexpr_evaluation_sentinel): New.
	(struct uid_sensitive_constexpr_evaluation_checker): New.
	(::uid_sensitive_constexpr_evaluation_sentinel): New.
	(::uid_sensitive_constexpr_evaluation_checker): New.
	(uid_sensitive_constexpr_evaluation_checker::evaluation_restricted_p): New.
	(constexpr_call_table): New.
	(constexpr_call_hasher::hash): New.
	(constexpr_call_hasher::equal): New.
	(maybe_initialize_constexpr_call_table): New.
	(fundef_copies_table): New.
	(get_fundef_copy): New.
	(save_fundef_copy): New.
	(constexpr_expression): Refactor in ...
	(eval_constant_expression): ...this.
	(eval_store_expression): Add 3 bool params.
	(eval_call_expression): Likewise.
	(eval_binary_expression): Likewise.
	(eval_statement_list): New.
	(extract_string_elt): New.
	(eval_conditional_expression): New.
	(eval_bit_field_ref): New.
	(eval_loop_expr): New.
	(eval_switch_expr): New.
	(eval_unary_expression): New.
	(call_stack): New.
	(call_stack_tick): New.
	(last_cx_error_tick): New.
	(push_cx_call_context): New.
	(pop_cx_call_context): New.
	(cx_error_context): New.
	(fold_expr): Adjust call to eval_constant_expression.
	(same_type_ignoring_tlq_and_bounds_p): New.
	(union_active_member): Port more for cxx constexpr.
	(fold_indirect_ref_1): New.
	(rs_fold_indirect_ref): Likewise.
	(rs_eval_indirect_ref): New (from corresponding cxx FE file).
	(eval_logical_expression): Adjust parameter list.
	(lookup_placeholder): New (from corresponding cxx FE file).
	(constant_value_1): Remove.
	(inline_asm_in_constexpr_error): New (from corresponding cxx FE file).
	(verify_ctor_sanity): New.
	(get_callee): Remove.
	(initialized_type): New.
	(maybe_constexpr_fn): Remove.
	(init_subob_ctx): New.
	(base_field_constructor_elt): New.
	(get_or_insert_ctor_field): New.
	(eval_vector_conditional_expression): New (from correponding cxx FE file).
	(eval_bare_aggregate): New.
	(cxx_eval_trinary_expression): New.
	(reduced_constant_expression_p): New.
	(adjust_temp_type): New.
	(free_constructor): New.
	(eval_and_check_array_index): New.
	(eval_array_reference): New.
	(eval_component_reference): New.
	(label_matches): New.
	(eval_constant_expression): New.
	(modifying_const_object_error): New.
	(is_empty_field): New.
	(eval_store_expression): New.
	(eval_binary_expression): New.
	(addr_of_non_const_var): New.
	(rs_bind_parameters_in_call): New.
	(eval_builtin_function_call): New.
	(eval_call_expression): New.
	(build_anon_member_initialization): New.
	(build_data_member_initialization): New.
	(constexpr_fn_retval): New.
	(constant_value_1): New.
	(decl_constant_value): New.
	(non_const_var_error): New.
	(get_callee): New.
	(get_function_named_in_call): New.
	(maybe_constexpr_fn): New.
	(get_nth_callarg): New.
	(var_in_maybe_constexpr_fn): New.
	(instantiate_cx_fn_r): New.
	(instantiate_constexpr_fns): New.
	(array_index_cmp): New.
	(unshare_constructor): New.
	(find_array_ctor_elt): New.
	(verify_constant): New.
	(find_heap_var_refs): New.
	(find_immediate_fndecl): New.
	(diag_array_subscript): New.
	(get_array_or_vector_nelts): New.
	(eval_and_check_array_index): New.
	(extract_string_elt): New.
	(is_valid_constexpr_fn): New.
	(explain_invalid_constexpr_fn): New.
	(register_constexpr_fundef): New.
	(maybe_save_constexpr_fundef): New.
	(eval_statement_list): New.
	(eval_conditional_expression): New.
	(eval_bit_field_ref): New.
	(returns): New.
	(breaks): New.
	(continues): New.
	(switches): New.
	(eval_loop_expr): New.
	(eval_switch_expr): New.
	(eval_unary_expression): New.
	(cxx_eval_outermost_constant_expr): New.
	(is_static_init_expression): New.
	(is_constant_expression): New.
	(is_nondependent_static_init_expression): New.
	(maybe_constant_init_1): New.
	(maybe_constant_init): New.
	(is_nondependent_constant_expression): New.
	(cv_cache): New.
	(maybe_constant_value): New.
	(potential_constant_expression): New.
	(struct check_for_return_continue_data): New.
	(check_for_return_continue): New.
	(decl_namespace_context): New.
	(decl_in_std_namespace_p): New.
	(is_std_construct_at): New.
	(cxx_dynamic_cast_fn_p): New.
	(is_std_allocator_allocate): New.
	(is_std_allocator_allocate): New.
	(potential_constant_expression_1): New.
	(potential_constant_expression_1): New.
	(fold_non_dependent_init): New.
	* backend/rust-constexpr.h (maybe_save_constexpr_fundef): New.

2023-01-31  Arthur Cohen  <arthur.cohen@embecosm.com>

	* rust-session-manager.cc (Session::compile_crate): Allow the dump of prettified AST
	(Session::dump_ast_pretty): New
	* rust-session-manager.h: Add new output file for pretty AST dump

2023-01-05  David Malcolm  <dmalcolm@redhat.com>

	* resolve/rust-ast-resolve-item.cc (selftest::rust_flatten_list):
	Remove output to stderr.

2023-01-05  David Malcolm  <dmalcolm@redhat.com>

	* Make-lang.in (selftest-rust-gdb): New.
	(selftest-rust-valgrind): New.

2022-12-20  Marc Poulhiès  <dkm@kataplop.net>

	PR rust/108113
	* Make-lang.in (rust.serial): New variable.
	(rust1$(exeext)): Depend on $(rust.prev). Call LINK_PROGRESS.

2022-12-14  Jakub Jelinek  <jakub@redhat.com>

	PR rust/106072
	* parse/rust-parse-impl.h (parse_closure_param): Store
	pattern->get_locus () in a temporary before std::move (pattern) is
	invoked.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* CONTRIBUTING.md: New.
	* README.md: New.
	* logo.png: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* config-lang.in: New.

2022-12-13  Arthur Cohen  <arthur.cohen@embecosm.com>

	* lang.opt (-frust-incomplete-and-experimental-compiler-do-not-use):
	New.
	* rust-session-manager.cc (Session::compile_crate): Check it.
	* Make-lang.in (RUST_SELFTEST_FLAGS): Add it.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* Make-lang.in: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* lang.opt: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* lang-specs.h: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* rust-lang.cc: New.
	* rust-session-manager.cc: New.
	* rust-session-manager.h: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* rustspec.cc: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* rust-diagnostics.cc: New.
	* rust-diagnostics.h: New.
	* rust-gcc-diagnostics.cc: New.
	* rust-linemap.cc: New.
	* rust-linemap.h: New.
	* rust-location.h: New.
	* rust-system.h: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>
	    David Faust  <david.faust@oracle.com>
	    Faisal Abbas  <90.abbasfaisal@gmail.com>

	* backend/rust-compile-context.cc: New.
	* backend/rust-compile-context.h: New.
	* backend/rust-compile.cc: New.
	* backend/rust-compile.h: New.
	* backend/rust-constexpr.cc: New.
	* backend/rust-constexpr.h: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>
	    David Faust  <david.faust@oracle.com>

	* backend/rust-compile-block.cc: New.
	* backend/rust-compile-block.h: New.
	* backend/rust-compile-expr.cc: New.
	* backend/rust-compile-expr.h: New.
	* backend/rust-compile-extern.h: New.
	* backend/rust-compile-fnparam.cc: New.
	* backend/rust-compile-fnparam.h: New.
	* backend/rust-compile-implitem.cc: New.
	* backend/rust-compile-implitem.h: New.
	* backend/rust-compile-intrinsic.cc: New.
	* backend/rust-compile-intrinsic.h: New.
	* backend/rust-compile-item.cc: New.
	* backend/rust-compile-item.h: New.
	* backend/rust-compile-pattern.cc: New.
	* backend/rust-compile-pattern.h: New.
	* backend/rust-compile-resolve-path.cc: New.
	* backend/rust-compile-resolve-path.h: New.
	* backend/rust-compile-stmt.cc: New.
	* backend/rust-compile-stmt.h: New.
	* backend/rust-compile-struct-field-expr.cc: New.
	* backend/rust-compile-struct-field-expr.h: New.
	* backend/rust-compile-type.cc: New.
	* backend/rust-compile-type.h: New.
	* backend/rust-compile-var-decl.h: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>
	    David Faust  <david.faust@oracle.com>

	* backend/rust-builtins.h: New.
	* backend/rust-compile-base.cc: New.
	* backend/rust-compile-base.h: New.
	* backend/rust-mangle.cc: New.
	* backend/rust-mangle.h: New.
	* backend/rust-tree.cc: New.
	* backend/rust-tree.h: New.
	* rust-backend.h: New.
	* rust-gcc.cc: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* metadata/rust-export-metadata.cc: New.
	* metadata/rust-export-metadata.h: New.
	* metadata/rust-extern-crate.cc: New.
	* metadata/rust-extern-crate.h: New.
	* metadata/rust-import-archive.cc: New.
	* metadata/rust-imports.cc: New.
	* metadata/rust-imports.h: New.
	* rust-object-export.cc: New.
	* rust-object-export.h: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* checks/lints/rust-lint-unused-var.cc: New.
	* checks/lints/rust-lint-unused-var.h: New.

2022-12-13  Thomas Young  <wenzhang5800@gmail.com>

	* checks/lints/rust-lint-marklive-base.h: New.
	* checks/lints/rust-lint-marklive.cc: New.
	* checks/lints/rust-lint-marklive.h: New.
	* checks/lints/rust-lint-scan-deadcode.h: New.

2022-12-13  Arthur Cohen  <arthur.cohen@embecosm.com>

	* checks/errors/privacy/rust-privacy-check.cc: New.
	* checks/errors/privacy/rust-privacy-check.h: New.
	* checks/errors/privacy/rust-privacy-common.h: New.
	* checks/errors/privacy/rust-privacy-ctx.cc: New.
	* checks/errors/privacy/rust-privacy-ctx.h: New.
	* checks/errors/privacy/rust-privacy-reporter.cc: New.
	* checks/errors/privacy/rust-privacy-reporter.h: New.
	* checks/errors/privacy/rust-pub-restricted-visitor.cc: New.
	* checks/errors/privacy/rust-pub-restricted-visitor.h: New.
	* checks/errors/privacy/rust-reachability.cc: New.
	* checks/errors/privacy/rust-reachability.h: New.
	* checks/errors/privacy/rust-visibility-resolver.cc: New.
	* checks/errors/privacy/rust-visibility-resolver.h: New.

2022-12-13  Arthur Cohen  <arthur.cohen@embecosm.com>

	* checks/errors/rust-const-checker.cc: New.
	* checks/errors/rust-const-checker.h: New.

2022-12-13  Arthur Cohen  <arthur.cohen@embecosm.com>

	* checks/errors/rust-unsafe-checker.cc: New.
	* checks/errors/rust-unsafe-checker.h: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-autoderef.cc: New.
	* typecheck/rust-autoderef.h: New.
	* typecheck/rust-casts.cc: New.
	* typecheck/rust-casts.h: New.
	* typecheck/rust-coercion.cc: New.
	* typecheck/rust-coercion.h: New.
	* typecheck/rust-hir-dot-operator.cc: New.
	* typecheck/rust-hir-dot-operator.h: New.
	* typecheck/rust-hir-inherent-impl-overlap.h: New.
	* typecheck/rust-hir-path-probe.h: New.
	* typecheck/rust-hir-trait-ref.h: New.
	* typecheck/rust-hir-type-bounds.h: New.
	* typecheck/rust-substitution-mapper.cc: New.
	* typecheck/rust-substitution-mapper.h: New.
	* typecheck/rust-tycheck-dump.h: New.
	* typecheck/rust-tyctx.cc: New.
	* typecheck/rust-tyty-bounds.cc: New.
	* typecheck/rust-tyty-call.cc: New.
	* typecheck/rust-tyty-call.h: New.
	* typecheck/rust-tyty-cmp.h: New.
	* typecheck/rust-tyty-rules.h: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-tyty.cc: New.
	* typecheck/rust-tyty.h: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* typecheck/rust-hir-trait-resolve.cc: New.
	* typecheck/rust-hir-trait-resolve.h: New.
	* typecheck/rust-hir-type-check-base.cc: New.
	* typecheck/rust-hir-type-check-base.h: New.
	* typecheck/rust-hir-type-check-enumitem.cc: New.
	* typecheck/rust-hir-type-check-enumitem.h: New.
	* typecheck/rust-hir-type-check-expr.cc: New.
	* typecheck/rust-hir-type-check-expr.h: New.
	* typecheck/rust-hir-type-check-implitem.cc: New.
	* typecheck/rust-hir-type-check-implitem.h: New.
	* typecheck/rust-hir-type-check-item.cc: New.
	* typecheck/rust-hir-type-check-item.h: New.
	* typecheck/rust-hir-type-check-path.cc: New.
	* typecheck/rust-hir-type-check-pattern.cc: New.
	* typecheck/rust-hir-type-check-pattern.h: New.
	* typecheck/rust-hir-type-check-stmt.cc: New.
	* typecheck/rust-hir-type-check-stmt.h: New.
	* typecheck/rust-hir-type-check-struct-field.h: New.
	* typecheck/rust-hir-type-check-struct.cc: New.
	* typecheck/rust-hir-type-check-toplevel.cc: New.
	* typecheck/rust-hir-type-check-toplevel.h: New.
	* typecheck/rust-hir-type-check-type.cc: New.
	* typecheck/rust-hir-type-check-type.h: New.
	* typecheck/rust-hir-type-check-util.cc: New.
	* typecheck/rust-hir-type-check-util.h: New.
	* typecheck/rust-hir-type-check.cc: New.
	* typecheck/rust-hir-type-check.h: New.
	* typecheck/rust-tyty-visitor.h: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* util/rust-canonical-path.h: New.
	* util/rust-common.h: New.
	* util/rust-hir-map.cc: New.
	* util/rust-hir-map.h: New.
	* util/rust-identifier.h: New.
	* util/rust-lang-item.h: New.
	* util/rust-mapping-common.h: New.
	* util/rust-stacked-contexts.h: New.

2022-12-13  Arthur Cohen  <arthur.cohen@embecosm.com>

	* util/rust-attributes.cc: New.
	* util/rust-attributes.h: New.

2022-12-13  Arthur Cohen  <arthur.cohen@embecosm.com>

	* util/rust-optional-test.cc: New.
	* util/rust-optional.h: New.

2022-12-13  Arthur Cohen  <arthur.cohen@embecosm.com>

	* util/rust-base62.cc: New.
	* util/rust-base62.h: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* util/rust-abi.cc: New.
	* util/rust-abi.h: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* util/fnv-hash.h: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* util/rust-make-unique.h: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* hir/rust-ast-lower-base.cc: New.
	* hir/rust-ast-lower-base.h: New.
	* hir/rust-ast-lower-block.h: New.
	* hir/rust-ast-lower-enumitem.h: New.
	* hir/rust-ast-lower-expr.h: New.
	* hir/rust-ast-lower-extern.h: New.
	* hir/rust-ast-lower-implitem.h: New.
	* hir/rust-ast-lower-item.cc: New.
	* hir/rust-ast-lower-item.h: New.
	* hir/rust-ast-lower-pattern.cc: New.
	* hir/rust-ast-lower-pattern.h: New.
	* hir/rust-ast-lower-stmt.h: New.
	* hir/rust-ast-lower-struct-field-expr.h: New.
	* hir/rust-ast-lower-type.h: New.
	* hir/rust-ast-lower.cc: New.
	* hir/rust-ast-lower.h: New.
	* hir/rust-hir-dump.cc: New.
	* hir/rust-hir-dump.h: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* hir/tree/rust-hir-full-decls.h: New.
	* hir/tree/rust-hir-full-test.cc: New.
	* hir/tree/rust-hir-full.h: New.
	* hir/tree/rust-hir-visitor.h: New.
	* hir/tree/rust-hir.h: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* hir/tree/rust-hir-expr.h: New.
	* hir/tree/rust-hir-item.h: New.
	* hir/tree/rust-hir-path.h: New.
	* hir/tree/rust-hir-pattern.h: New.
	* hir/tree/rust-hir-stmt.h: New.
	* hir/tree/rust-hir-type.h: New.

2022-12-13  Philip Herron  <philip.herron@embecosm.com>

	* resolve/rust-ast-resolve-base.cc: New.
	* resolve/rust-ast-resolve-base.h: New.
	* resolve/rust-ast-resolve-expr.cc: New.
	* resolve/rust-ast-resolve-expr.h: New.
	* resolve/rust-ast-resolve-implitem.h: New.
	* resolve/rust-ast-resolve-item.cc: New.
	* resolve/rust-ast-resolve-item.h: New.
	* resolve/rust-ast-resolve-path.cc: New.
	* resolve/rust-ast-resolve-path.h: New.
	* resolve/rust-ast-resolve-pattern.cc: New.
	* resolve/rust-ast-resolve-pattern.h: New.
	* resolve/rust-ast-resolve-stmt.cc: New.
	* resolve/rust-ast-resolve-stmt.h: New.
	* resolve/rust-ast-resolve-struct-expr-field.cc: New.
	* resolve/rust-ast-resolve-struct-expr-field.h: New.
	* resolve/rust-ast-resolve-toplevel.h: New.
	* resolve/rust-ast-resolve-type.cc: New.
	* resolve/rust-ast-resolve-type.h: New.
	* resolve/rust-ast-resolve.cc: New.
	* resolve/rust-ast-resolve.h: New.
	* resolve/rust-ast-verify-assignee.h: New.
	* resolve/rust-name-resolver.cc: New.
	* resolve/rust-name-resolver.h: New.

2022-12-13  Arthur Cohen  <arthur.cohen@embecosm.com>
	    Philip Herron  <philip.herron@embecosm.com>
	    Joel Phillips  <simplytheother@gmail.com>

	* expand/rust-attribute-visitor.cc: New.
	* expand/rust-attribute-visitor.h: New.
	* expand/rust-macro-builtins.cc: New.
	* expand/rust-macro-builtins.h: New.
	* expand/rust-macro-expand.cc: New.
	* expand/rust-macro-expand.h: New.
	* expand/rust-macro-invoc-lexer.cc: New.
	* expand/rust-macro-invoc-lexer.h: New.
	* expand/rust-macro-substitute-ctx.cc: New.
	* expand/rust-macro-substitute-ctx.h: New.

2022-12-13  Joel Phillips  <simplytheother@gmail.com>
	    Philip Herron  <philip.herron@embecosm.com>
	    Arthur Cohen  <arthur.cohen@embecosm.com>

	* parse/rust-parse-impl.h: New, second half.

2022-12-13  Joel Phillips  <simplytheother@gmail.com>
	    Philip Herron  <philip.herron@embecosm.com>
	    Arthur Cohen  <arthur.cohen@embecosm.com>

	* parse/rust-cfg-parser.cc: New.
	* parse/rust-cfg-parser.h: New.
	* parse/rust-parse-impl.h: New.
	* parse/rust-parse.cc: New.
	* parse/rust-parse.h: New.

2022-12-13  Joel Phillips  <simplytheother@gmail.com>
	    Philip Herron  <philip.herron@embecosm.com>
	    Arthur Cohen  <arthur.cohen@embecosm.com>
	    Mark Wielaard  <mark@klomp.org>

	* lex/rust-codepoint.h: New.
	* lex/rust-lex.cc: New.
	* lex/rust-lex.h: New.
	* lex/rust-token.cc: New.
	* lex/rust-token.h: New.
	* rust-buffered-queue.h: New.

2022-12-13  Joel Phillips  <simplytheother@gmail.com>
	    Philip Herron  <philip.herron@embecosm.com>
	    Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-ast-dump.cc: New.
	* ast/rust-ast-dump.h: New.
	* ast/rust-ast-visitor.h: New.
	* ast/rust-cond-compilation.h: New.

2022-12-13  Joel Phillips  <simplytheother@gmail.com>
	    Philip Herron  <philip.herron@embecosm.com>

	* ast/rust-expr.h: New.
	* ast/rust-macro.h: New.
	* ast/rust-path.h: New.
	* ast/rust-pattern.h: New.
	* ast/rust-stmt.h: New.
	* ast/rust-type.h: New.

2022-12-13  Joel Phillips  <simplytheother@gmail.com>
	    Philip Herron  <philip.herron@embecosm.com>

	* ast/rust-item.h: New.

2022-12-13  Joel Phillips  <simplytheother@gmail.com>
	    Philip Herron  <philip.herron@embecosm.com>
	    Arthur Cohen  <arthur.cohen@embecosm.com>

	* ast/rust-ast-full-decls.h: New.
	* ast/rust-ast-full-test.cc: New.
	* ast/rust-ast-full.h: New.
	* ast/rust-ast.h: New.
	* operator.h: New.


Copyright (C) 2022-2024 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.
