2023-04-26 Release Manager * GCC 13.1.0 released. 2023-04-06 Owen Avery * parse/rust-parse-impl.h (Parser::parse_stmt): Handle unsafe expression statements. 2023-04-06 Owen Avery * 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 * 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 * 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 * 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 * 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 * 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 * ast/rust-pattern.h: Fix formatting. 2023-04-06 Arthur Cohen * expand/rust-macro-builtins.cc (MacroBuiltin::include_handler): Do not return nullptr token in expansion of `include!()` 2023-04-06 Owen Avery * checks/errors/rust-feature-gate.h: Add trailing newline before EOF. 2023-04-06 Philip Herron * 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 * hir/tree/rust-hir-item.h: implement virtual function * hir/tree/rust-hir.h: add virtual function 2023-04-06 Philip Herron * 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 * expand/rust-macro-builtins.cc (MacroBuiltin::include_str_handler): Add check for valid UTF-8. 2023-04-06 Owen Avery * parse/rust-parse-impl.h (Parser::parse_grouped_or_tuple_pattern): Add support for empty tuple patterns. 2023-04-06 Pierre-Emmanuel Patry * lex/rust-lex.h: Add file type check. 2023-04-06 Owen Avery * 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 * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): Add variadic argument type checking. (TypeCheckCallExpr::visit): Fix comment spelling ("varadic"). 2023-04-06 mxlol233 * 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 * 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 * rust-session-manager.cc (Session::compile_crate): Update the environment variable name. 2023-04-06 Pierre-Emmanuel Patry * 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 * expand/rust-macro-expand.cc (MacroExpander::expand_eager_invocations): Add documentation explaining the algorithm. 2023-04-06 Arthur Cohen * 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`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 * 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 * parse/rust-parse.h: Move `parse_macro_invocation` to public API. 2023-04-06 Arthur Cohen * ast/rust-item.h (class BlockExpr): Remove forward declaration of class `BlockExpr`. 2023-04-06 Owen Avery * 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 * typecheck/rust-unify.cc (UnifyRules::go): ensure the bounds are checked 2023-04-06 Philip Herron * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): remove error message 2023-04-06 Philip Herron * 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 * util/rust-lang-item.h: 2023-04-06 Philip Herron * typecheck/rust-tyty-subst.cc (SubstitutionArg::is_conrete): fix check 2023-04-06 Philip Herron * 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 * 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 * typecheck/rust-tyty-subst.cc: add missing callback 2023-04-06 Philip Herron * typecheck/rust-tyty-subst.cc: update copy constructors 2023-04-06 Philip Herron * 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 * 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 * Make-lang.in: update name * typecheck/rust-tyctx.cc: Moved to... * typecheck/rust-typecheck-context.cc: ...here. 2023-04-06 Philip Herron * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * backend/rust-compile-expr.cc (CompileExpr::visit): Removed copy-pasted comment. 2023-04-06 mxlol233 * 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 * parse/rust-parse-impl.h (Parser::parse_closure_expr): Advance tokens properly when parsing closure param list. 2023-04-06 Arthur Cohen * parse/rust-parse-impl.h (Parser::parse_generic_arg): Handle type paths and nested generics properly. 2023-04-06 Owen Avery * 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 * 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 * 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 * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit): Lower AST::GroupedPattern to its inner pattern. 2023-04-06 MAHAD * rust-buffered-queue.h: Moved to... * util/rust-buffered-queue.h: ...here. 2023-04-06 Arthur Cohen * 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 * 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 * 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 * ast/rust-ast-dump.cc (Dump::visit): removed extra indentations in trait ast dump 2023-04-06 Abdul Rafey * 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 * 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 * Make-lang.in: Rename object file. * ast/rust-ast-full-test.cc: Moved to... * ast/rust-ast.cc: ...here. 2023-04-06 Owen Avery * 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 * typecheck/rust-hir-type-check-pattern.cc (TypeCheckPattern::visit): Add proper visitor. 2023-04-06 Owen Avery * hir/tree/rust-hir-pattern.h: Add get_item method. 2023-04-06 Owen Avery * hir/rust-ast-lower-pattern.cc (ASTLoweringPattern::visit): Add proper visitor. * hir/rust-ast-lower-pattern.h: Declare it. 2023-04-06 Lyra * expand/rust-macro-expand.cc (transcribe_expression): Fix ICE when expanding empty macros. 2023-04-06 Owen Avery * resolve/rust-ast-resolve-pattern.h: Support GroupedPattern properly. 2023-04-06 Owen Avery * 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 * 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 * ast/rust-ast.h: Add get_locus method. * ast/rust-expr.h: Likewise. * ast/rust-macro.h: Likewise. 2023-04-06 Owen Avery * typecheck/rust-hir-type-check-stmt.cc (TypeCheckStmt::visit): Cleanup LetStmt type checking. 2023-04-06 Philip Herron * 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 * resolve/rust-ast-resolve-type.cc (ResolveGenericArgs::go): Add name resolution to Trait items. 2023-04-06 Raiki Tamura * 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 * parse/rust-parse-impl.h (Parser::parse_generic_arg): Add proper bound parsing. 2023-04-06 Dave * checks/errors/rust-const-checker.cc (ConstChecker::visit): Use StackedContext class. 2023-04-06 Prajwal S N * 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 * rust-session-manager.cc (Session::compile_crate): Fix typo. 2023-02-22 Thomas Schwinge * rust-lang.cc (grs_langhook_type_for_mode): Also consider all 'int_n' modes/types. 2023-02-22 Thomas Schwinge * rust-lang.cc (grs_langhook_init): Do not initialize void_list_node. 2023-02-22 Thomas Schwinge * config-lang.in (target_libs): Remove. 2023-02-21 Raiki Tamura * backend/rust-builtins.cc (BuiltinsContext::setup_math_fns): New functions. 2023-02-21 Arthur Cohen * 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 * lang.opt: Fix ordering of file. 2023-02-21 Philip Herron * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * ast/rust-ast-dump.cc (Dump::visit): Fix dumping of fn params. 2023-02-21 Jakub Dupak * ast/rust-ast-dump.cc (Dump::visit): Remove extraneous string when dumping statements. 2023-02-21 Jakub Dupak * ast/rust-ast-dump.cc: Remove unused include. 2023-02-21 Jakub Dupak * ast/rust-ast-dump.cc (Dump::visit): Add missing visitor. * ast/rust-ast-dump.h: Likewise. 2023-02-21 Jakub Dupak * ast/rust-ast-dump.cc (Dump::visit): Add missing visitor. 2023-02-21 Jakub Dupak * ast/rust-ast-dump.cc (Dump::visit): Add missing visitor. 2023-02-21 Jakub Dupak * ast/rust-ast-dump.cc (Dump::visit): Add missing visitor. 2023-02-21 Jakub Dupak * ast/rust-ast-dump.cc (Dump::visit): Add missing visitor. 2023-02-21 Jakub Dupak * ast/rust-ast-dump.cc (Dump::visit): Add missing visitor. 2023-02-21 Jakub Dupak * ast/rust-ast-dump.cc (Dump::visit): Add missing visitor. 2023-02-21 Jakub Dupak * 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 * ast/rust-ast-dump.cc (Dump::visit): Add missing visitor. 2023-02-21 Jakub Dupak * ast/rust-ast-dump.cc (Dump::visit): Add missing tuple type visitor. 2023-02-21 Jakub Dupak * ast/rust-ast-dump.cc (Dump::visit): Add missing never type visitor. 2023-02-21 Jakub Dupak * ast/rust-ast-dump.cc (Dump::visit): Add missing RawPointer visitor. 2023-02-21 Jakub Dupak * ast/rust-ast-dump.cc (Dump::visit): Add missing array visitor 2023-02-21 Jakub Dupak * ast/rust-ast-dump.cc (Dump::visit): Add missing slice visitor. 2023-02-21 Jakub Dupak * 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 * 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 * typecheck/rust-tyty-call.cc (TypeCheckCallExpr::visit): Fix extra call to `delete`. 2023-02-21 Dave * 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 * util/rust-lang-item.h: Add handling for `phantom_data` lang item. 2023-02-21 Jakub Dupak * ast/rust-ast-dump.cc (Dump::visit): Add handling for unit structures. 2023-02-21 Jakub Dupak * ast/rust-ast-dump.h: Fix documentation. 2023-02-21 Jakub Dupak * 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 * 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 * 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 * 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 * 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 * 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 * 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 * backend/rust-constexpr.cc (build_anon_member_initialization): Workaround uninitialized values. (build_data_member_initialization): Likewise. 2023-02-21 Arthur Cohen * backend/rust-compile-intrinsic.cc (sorry_handler): New intrinsic handler. 2023-02-21 Arthur Cohen * 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 * util/rust-inline-visitor.h: Remove some offending system includes. 2023-02-21 YizhePKU * util/rust-inline-visitor.h: New file. 2023-02-21 Philip Herron * 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 * typecheck/rust-tyty-bounds.cc (TypeCheckBase::get_predicate_from_bound): Add missing implementation. 2023-02-21 Philip Herron * 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 * resolve/rust-ast-resolve-type.cc (ResolveRelativeTypePath::go): Add missing handling of function case. 2023-02-21 Philip Herron * 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 * 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 * 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 * 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 * 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 * 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 * 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 * util/rust-lang-item.h: Add handling for `fn_once_output`. 2023-02-21 Arthur Cohen * 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 * 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 * 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 * 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 * 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 * ast/rust-ast-dump.cc (Dump::visit): Properly handle unloaded modules. 2023-02-21 Arthur Cohen * ast/rust-ast-dump.cc (Dump::visit): Fix formatting when dumping modules. 2023-02-21 Arthur Cohen * ast/rust-ast-dump.cc (Dump::visit): Dump items in modules properly. 2023-02-21 Arthur Cohen * ast/rust-ast-dump.cc: Emit visibility when dumping items. 2023-02-21 Philip Herron * 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 * ast/rust-ast-dump.cc (Dump::visit): Add code for dumping type aliases. 2023-02-21 Philip Herron * 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 * ast/rust-ast-dump.cc (Dump::visit): Add dump for RangeExprs. 2023-02-21 David Faust * ast/rust-ast-dump.cc (Dump::visit): Add dump for, BorrowExpr, DereferenceExpr, ErrorPropagationExpr, NegationExpr, TypeCastExpr and GroupedExpr. 2023-02-21 David Faust * ast/rust-ast-dump.cc (Dump::visit): Add dump code for ArrayExpr. 2023-02-21 David Faust * ast/rust-ast-dump.cc (Dump::visit): Add dumps for ComparisonExpr and LazyBooleanExpr. 2023-02-21 David Faust * ast/rust-ast-dump.cc (Dump::visit): Fix IfExpr formatting. 2023-02-21 David Faust * ast/rust-ast-dump.cc (Dump::visit): Fix block formatting. 2023-02-21 Philip Herron * 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 * util/rust-abi.cc (get_abi_from_string): Add missing "rust-call" possibility for ABI variant. 2023-02-21 Philip Herron * util/rust-lang-item.h: Add `fn_once` lang item. 2023-02-21 Philip Herron * 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 * 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 * ast/rust-path.h: Add `accept_vis` method to `GenericArg` class. 2023-02-21 Arthur Cohen * resolve/rust-ast-resolve-item.cc (ResolveItem::visit): Add note for glob import resolving. 2023-02-21 Arthur Cohen * 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 * 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 * 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 * ast/rust-ast-dump.cc (Dump::visit): Fill empty functions for structs, enums and unions. 2023-02-21 David Faust * 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 * 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 * typecheck/rust-hir-trait-ref.h (lookup_trait_item): Add lookup in super_trait. 2023-02-21 Philip Herron * 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 * 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 * 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 * ast/rust-ast-dump.cc (Dump::visit): Implement visitor for If expressions. 2023-02-21 David Faust * ast/rust-ast-dump.cc (Dump::visit): Dump assignment and compound assignment expressions. 2023-02-21 Philip Herron * 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 * 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 * ast/rust-item.h: Rename get_public_vis_type. * hir/rust-ast-lower.cc (translate_visibility): Use new name. 2023-02-21 Philip Herron * 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 * backend/rust-tree.cc: Include memmodel.h. 2023-02-17 Thomas Schwinge * backend/rust-tree.cc: '#include "tm_p.h"'. 2023-01-31 Philip Herron * 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 * 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 * backend/rust-constexpr.cc (eval_store_expression): Remove invalid assertion on constexpr constructors. 2023-01-31 Philip Herron * backend/rust-compile-expr.h: Formatting. 2023-01-31 liushuyu * 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 * 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 * backend/rust-tree.cc (rs_type_quals): Comment out bad assertion 2023-01-31 Philip Herron * typecheck/rust-hir-type-check-toplevel.cc (TypeCheckTopLevel::visit): Make static items behave more similarly to const items. 2023-01-31 Philip Herron * backend/rust-compile-item.cc (CompileItem::visit): Const evaluate static item expressions. 2023-01-31 Arthur Cohen * hir/rust-ast-lower-item.cc (ASTLoweringItem::visit): Do not lower null items within modules. 2023-01-31 Arthur Cohen * util/rust-attributes.cc: Add `macro_use` to list of builtin attributes. 2023-01-31 Arthur Cohen * 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 * 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 * typecheck/rust-tyty.h: Fix `is_concrete` for unit types with substitutions. 2023-01-31 Philip Herron * 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 * typecheck/rust-hir-type-check-expr.cc (TypeCheckExpr::visit): Add more calls to `rust_debug` for development. 2023-01-31 Philip Herron * backend/rust-compile-base.cc: Improve compilation pipeline and simplify function. 2023-01-31 Philip Herron * backend/rust-tree.cc (comptypes): Remove some C++ specific checks in Rust const folder for now. 2023-01-31 Philip Herron * 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 * 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 * typecheck/rust-tyctx.cc (TypeCheckContext::pop_return_type): Add guards around `std::vector.pop_back()`. (TypeCheckContext::peek_context): Likewise for `std::vector.back()`. 2023-01-31 Arthur Cohen philberty * ast/rust-ast.h: Improve assertions within ASTFragment API. 2023-01-31 Arthur Cohen * 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 * ast/rust-ast-dump.h: Add shorthand `AST::Dump::debug` function to dump an AST node on `stderr`. 2023-01-31 Arthur Cohen philberty * 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 * 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 * parse/rust-parse-impl.h: Allow parsing full range expressions without erroring out. 2023-01-31 Arthur Cohen * checks/lints/rust-lint-scan-deadcode.h: Do not report public items as dead code. 2023-01-31 Arthur Cohen * util/rust-attributes.cc: Add `rustc_inherit_overflow_checks` to list of builtin attributes. 2023-01-31 Arthur Cohen * 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 * backend/rust-builtins.h: Refactor builtin context class and add overflow builtins. 2023-01-31 Arthur Cohen * rust-gcc.cc (class Bvariable): Move class to `rust-gcc.h` header. * rust-gcc.h: New file. 2023-01-31 Philip Herron * 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): 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 * 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 * resolve/rust-ast-resolve-item.cc (selftest::rust_flatten_list): Remove output to stderr. 2023-01-05 David Malcolm * Make-lang.in (selftest-rust-gdb): New. (selftest-rust-valgrind): New. 2022-12-20 Marc Poulhiès PR rust/108113 * Make-lang.in (rust.serial): New variable. (rust1$(exeext)): Depend on $(rust.prev). Call LINK_PROGRESS. 2022-12-14 Jakub Jelinek 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 * CONTRIBUTING.md: New. * README.md: New. * logo.png: New. 2022-12-13 Philip Herron * config-lang.in: New. 2022-12-13 Arthur Cohen * 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 * Make-lang.in: New. 2022-12-13 Philip Herron * lang.opt: New. 2022-12-13 Philip Herron * lang-specs.h: New. 2022-12-13 Philip Herron * rust-lang.cc: New. * rust-session-manager.cc: New. * rust-session-manager.h: New. 2022-12-13 Philip Herron * rustspec.cc: New. 2022-12-13 Philip Herron * 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 David Faust 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 David Faust * 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 David Faust * 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 * 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 * checks/lints/rust-lint-unused-var.cc: New. * checks/lints/rust-lint-unused-var.h: New. 2022-12-13 Thomas Young * 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 * 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 * checks/errors/rust-const-checker.cc: New. * checks/errors/rust-const-checker.h: New. 2022-12-13 Arthur Cohen * checks/errors/rust-unsafe-checker.cc: New. * checks/errors/rust-unsafe-checker.h: New. 2022-12-13 Philip Herron * 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 * typecheck/rust-tyty.cc: New. * typecheck/rust-tyty.h: New. 2022-12-13 Philip Herron * 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 * 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 * util/rust-attributes.cc: New. * util/rust-attributes.h: New. 2022-12-13 Arthur Cohen * util/rust-optional-test.cc: New. * util/rust-optional.h: New. 2022-12-13 Arthur Cohen * util/rust-base62.cc: New. * util/rust-base62.h: New. 2022-12-13 Philip Herron * util/rust-abi.cc: New. * util/rust-abi.h: New. 2022-12-13 Philip Herron * util/fnv-hash.h: New. 2022-12-13 Philip Herron * util/rust-make-unique.h: New. 2022-12-13 Philip Herron * 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 * 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 * 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 * 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 Philip Herron Joel Phillips * 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 Philip Herron Arthur Cohen * parse/rust-parse-impl.h: New, second half. 2022-12-13 Joel Phillips Philip Herron Arthur Cohen * 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 Philip Herron Arthur Cohen Mark Wielaard * 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 Philip Herron Arthur Cohen * 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 Philip Herron * 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 Philip Herron * ast/rust-item.h: New. 2022-12-13 Joel Phillips Philip Herron Arthur Cohen * 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-2023 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.