mirror of
https://forge.sourceware.org/marek/gcc.git
synced 2026-02-22 03:47:02 -05:00
gcc/rust/ChangeLog: * ast/rust-fmt.cc (ffi::RustHamster::to_string): New. (Pieces::collect): Adapt to use new handle API. (Pieces::~Pieces): Likewise. (Pieces::Pieces): Likewise. (Pieces::operator=): Likewise. * ast/rust-fmt.h (struct RustString): Add members. (struct FormatArgsHandle): New. (clone_pieces): Adapt for new FFI API. (destroy_pieces): Likewise. (struct Pieces): Store new FormatArgsHandle type. * expand/rust-expand-format-args.cc (expand_format_args): Use proper namespace. * resolve/rust-ast-resolve-base.cc (ResolverBase::visit): FormatArgs nodes are already resolved, so do nothing. libgrust/ChangeLog: * libformat_parser/src/lib.rs: Use new Handle struct and expose it.
655 lines
9.2 KiB
C++
655 lines
9.2 KiB
C++
// Copyright (C) 2020-2024 Free Software Foundation, Inc.
|
|
|
|
// This file is part of GCC.
|
|
|
|
// GCC is free software; you can redistribute it and/or modify it under
|
|
// the terms of the GNU General Public License as published by the Free
|
|
// Software Foundation; either version 3, or (at your option) any later
|
|
// version.
|
|
|
|
// GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
// for more details.
|
|
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with GCC; see the file COPYING3. If not see
|
|
// <http://www.gnu.org/licenses/>.
|
|
|
|
#include "rust-ast-resolve-base.h"
|
|
#include "rust-ast-resolve-expr.h"
|
|
#include "rust-ast-resolve-path.h"
|
|
#include "rust-item.h"
|
|
|
|
namespace Rust {
|
|
namespace Resolver {
|
|
|
|
bool
|
|
ResolverBase::resolve_visibility (const AST::Visibility &vis)
|
|
{
|
|
if (vis.has_path ())
|
|
{
|
|
auto path = vis.get_path ();
|
|
ResolvePath::go (path);
|
|
|
|
// Do we need to lookup something here?
|
|
// Is it just about resolving the names correctly so we can look them up
|
|
// later?
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
// Default visitors implementations
|
|
|
|
void
|
|
ResolverBase::visit (AST::Token &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::DelimTokenTree &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::AttrInputMetaItemContainer &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::IdentifierExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::Lifetime &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::LifetimeParam &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ConstGenericParam &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::PathInExpression &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TypePathSegment &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TypePathSegmentGeneric &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TypePathSegmentFunction &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TypePath &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::QualifiedPathInExpression &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::QualifiedPathInType &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::LiteralExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::AttrInputLiteral &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::AttrInputMacro &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::MetaItemLitExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::MetaItemPathLit &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::BorrowExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::DereferenceExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ErrorPropagationExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::NegationExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ArithmeticOrLogicalExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ComparisonExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::LazyBooleanExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TypeCastExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::AssignmentExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::CompoundAssignmentExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::GroupedExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ArrayElemsValues &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ArrayElemsCopied &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ArrayExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ArrayIndexExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TupleExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TupleIndexExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::StructExprStruct &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::StructExprFieldIdentifier &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::StructExprFieldIdentifierValue &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::StructExprFieldIndexValue &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::StructExprStructFields &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::StructExprStructBase &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::CallExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::MethodCallExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::FieldAccessExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ClosureExprInner &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::BlockExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ClosureExprInnerTyped &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ContinueExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::BreakExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::RangeFromToExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::RangeFromExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::RangeToExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::RangeFullExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::RangeFromToInclExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::RangeToInclExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ReturnExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::UnsafeBlockExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::LoopExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::WhileLoopExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::WhileLetLoopExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ForLoopExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::IfExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::IfExprConseqElse &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::IfLetExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::IfLetExprConseqElse &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::MatchExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::AwaitExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::AsyncBlockExpr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TypeParam &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::LifetimeWhereClauseItem &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TypeBoundWhereClauseItem &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::Module &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ExternCrate &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::UseTreeGlob &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::UseTreeList &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::UseTreeRebind &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::UseDeclaration &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::Function &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TypeAlias &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::StructStruct &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TupleStruct &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::EnumItem &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::EnumItemTuple &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::EnumItemStruct &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::EnumItemDiscriminant &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::Enum &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::Union &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ConstantItem &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::StaticItem &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TraitItemConst &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TraitItemType &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::Trait &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::InherentImpl &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TraitImpl &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ExternalTypeItem &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ExternalStaticItem &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ExternBlock &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::MacroMatchFragment &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::MacroMatchRepetition &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::MacroMatcher &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::MacroRulesDefinition &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::MacroInvocation &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::MetaItemPath &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::MetaItemSeq &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::MetaWord &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::MetaNameValueStr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::MetaListPaths &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::MetaListNameValueStr &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::LiteralPattern &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::IdentifierPattern &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::WildcardPattern &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::RestPattern &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::RangePatternBoundLiteral &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::RangePatternBoundPath &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::RangePatternBoundQualPath &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::RangePattern &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ReferencePattern &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::StructPatternFieldTuplePat &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::StructPatternFieldIdentPat &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::StructPatternFieldIdent &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::StructPattern &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TupleStructItemsNoRange &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TupleStructItemsRange &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TupleStructPattern &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TuplePatternItemsMultiple &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TuplePatternItemsRanged &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TuplePattern &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::GroupedPattern &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::SlicePattern &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::AltPattern &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::EmptyStmt &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::LetStmt &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ExprStmt &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TraitBound &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ImplTraitType &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TraitObjectType &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ParenthesisedType &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ImplTraitTypeOneBound &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TraitObjectTypeOneBound &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::TupleType &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::NeverType &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::RawPointerType &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ReferenceType &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::ArrayType &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::SliceType &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::InferredType &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::BareFunctionType &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::SelfParam &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::VariadicParam &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::FunctionParam &)
|
|
{}
|
|
|
|
void
|
|
ResolverBase::visit (AST::FormatArgs &fmt)
|
|
{}
|
|
|
|
} // namespace Resolver
|
|
} // namespace Rust
|