Skip to content

Commit 9864d7f

Browse files
powerboat9P-E-P
authored andcommitted
Replace AST::Method with existing AST::Function
gcc/rust/ChangeLog: * ast/rust-item.h (class Method): Remove. (Function::self_param): New. (Function::has_self_param): New. (Function::Function): Initialize self_param. (Function::operator=): Likewise. (Function::get_self_param): New. * ast/rust-ast.cc (Method::as_string): Remove. (Method::accept_vis): Remove. * ast/rust-ast-collector.cc (TokenCollector::visit): Remove AST::Method visitor, handle self_param in AST::Function visitor. * ast/rust-ast-collector.h (TokenCollector::visit): Remove AST::Method visitor. * ast/rust-ast-full-decls.h (class Method): Remove. * ast/rust-ast-visitor.h (ASTVisitor::visit): Remove AST::Method visitor. (DefaultASTVisitor::visit): Likewise. * ast/rust-ast-visitor.cc (DefaultASTVisitor::visit): Remove AST::Method visitor, handle self_param in AST::Function visitor. * checks/errors/rust-feature-gate.cc (FeatureGate::visit): Remove AST::Method visitor. * checks/errors/rust-feature-gate.h (FeatureGate::visit): Likewise.. * expand/rust-cfg-strip.cc (CfgStrip::visit): Remove AST::Method visitor, handle self_param in AST::Function visitor. * expand/rust-cfg-strip.h (CfgStrip::visit): Remove AST::Method visitor. * expand/rust-derive-clone.cc (DeriveClone::clone_fn): Return AST::Function instead of AST::Method. * expand/rust-derive.h (DeriveVisitor::visit): Remove AST::Method visitor. * expand/rust-expand-visitor.cc (ExpandVisitor::visit): Remove AST::Method visitor, handle self_param in AST::Function visitor. * expand/rust-expand-visitor.h: (ExpandVisitor::visit): Remove AST::Method visitor. * hir/rust-ast-lower-base.cc (ASTLoweringBase::visit): Likewise. * hir/rust-ast-lower-base.h (ASTLoweringBase::visit): Likewise. * hir/rust-ast-lower-implitem.h (ASTLowerImplItem::visit): Remove AST::Method visitor, handle self_param in AST::Function visitor. * parse/rust-parse-impl.h: Include optional.h. (Parser::parse_function): Adjust AST::Function construction. (Parser::parse_inherent_impl_function_or_method): Construct AST::Function instead of AST::Method, adjust AST::Function construction. (Parser::parse_trait_impl_function_or_method): Likewise. (Parser::parse_method): Return std::unique_ptr<AST::Function> instead of AST::Method. * parse/rust-parse.h (Parser::parse_method): Likewise. * resolve/rust-ast-resolve-base.cc (ResolverBase::visit): Remove AST::Method visitor. * resolve/rust-ast-resolve-base.h (ResolverBase::visit): Likewise. * resolve/rust-ast-resolve-implitem.h (ResolveToplevelImplItem::visit): Likewise. * resolve/rust-ast-resolve-item.cc (ResolveItem::visit): Remove AST::Method visitor, handle self_param in AST::Function visitor. * resolve/rust-ast-resolve-item.h (ResolveItem::visit): Remove AST::Method visitor. * resolve/rust-default-resolver.cc (DefaultResolver::visit): Remove AST::Method visitor. * resolve/rust-default-resolver.h (DefaultResolver::visit): Likewise. * resolve/rust-early-name-resolver.cc (EarlyNameResolver::visit): Remove AST::Method visitor, handle self_param in AST::Function visitor. * resolve/rust-early-name-resolver.h (EarlyNameResolver::visit): Remove AST::Method visitor. * resolve/rust-toplevel-name-resolver-2.0.cc (TopLevel::visit): Likewise. * resolve/rust-toplevel-name-resolver-2.0.h (TopLevel::visit): Likewise. * util/rust-attributes.cc (AttributeChecker::visit): Likewise. * util/rust-attributes.h (AttributeChecker::visit): Likewise. Signed-off-by: Owen Avery <[email protected]>
1 parent 25652e2 commit 9864d7f

33 files changed

+123
-692
lines changed

gcc/rust/ast/rust-ast-collector.cc

Lines changed: 8 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1626,41 +1626,6 @@ TokenCollector::visit (TypeBoundWhereClauseItem &item)
16261626
visit_items_joined_by_separator (item.get_type_param_bounds (), PLUS);
16271627
}
16281628

1629-
void
1630-
TokenCollector::visit (Method &method)
1631-
{
1632-
visit (method.get_visibility ());
1633-
auto method_name = method.get_method_name ().as_string ();
1634-
auto qualifiers = method.get_qualifiers ();
1635-
visit (qualifiers);
1636-
1637-
push (Rust::Token::make (FN_TOK, method.get_locus ()));
1638-
push (Rust::Token::make_identifier (UNDEF_LOCATION, std::move (method_name)));
1639-
push (Rust::Token::make (LEFT_PAREN, UNDEF_LOCATION));
1640-
1641-
visit (method.get_self_param ());
1642-
if (!method.get_function_params ().empty ())
1643-
{
1644-
push (Rust::Token::make (COMMA, UNDEF_LOCATION));
1645-
visit_items_joined_by_separator (method.get_function_params (), COMMA);
1646-
}
1647-
1648-
push (Rust::Token::make (RIGHT_PAREN, UNDEF_LOCATION));
1649-
1650-
if (method.has_return_type ())
1651-
{
1652-
push (Rust::Token::make (RETURN_TYPE, UNDEF_LOCATION));
1653-
visit (method.get_return_type ());
1654-
}
1655-
1656-
auto &block = method.get_definition ();
1657-
if (!block)
1658-
push (Rust::Token::make (SEMICOLON, UNDEF_LOCATION));
1659-
else
1660-
visit (block);
1661-
newline ();
1662-
}
1663-
16641629
void
16651630
TokenCollector::visit (Module &module)
16661631
{
@@ -1817,6 +1782,14 @@ TokenCollector::visit (Function &function)
18171782
visit (function.get_generic_params ());
18181783

18191784
push (Rust::Token::make (LEFT_PAREN, UNDEF_LOCATION));
1785+
1786+
if (function.has_self_param ())
1787+
{
1788+
visit (function.get_self_param ());
1789+
if (!function.get_function_params ().empty ())
1790+
push (Rust::Token::make (COMMA, UNDEF_LOCATION));
1791+
}
1792+
18201793
visit_items_joined_by_separator (function.get_function_params ());
18211794
push (Rust::Token::make (RIGHT_PAREN, UNDEF_LOCATION));
18221795

gcc/rust/ast/rust-ast-collector.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -266,7 +266,6 @@ class TokenCollector : public ASTVisitor
266266
void visit (TypeParam &param);
267267
void visit (LifetimeWhereClauseItem &item);
268268
void visit (TypeBoundWhereClauseItem &item);
269-
void visit (Method &method);
270269
void visit (Module &module);
271270
void visit (ExternCrate &crate);
272271
void visit (UseTreeGlob &use_tree);

gcc/rust/ast/rust-ast-full-decls.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,6 @@ class SelfParam;
171171
class FunctionQualifiers;
172172
class FunctionParam;
173173
struct Visibility;
174-
class Method;
175174
class VisItem;
176175
class Module;
177176
class ExternCrate;

gcc/rust/ast/rust-ast-visitor.cc

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -728,23 +728,6 @@ DefaultASTVisitor::visit (AST::FunctionParam &param)
728728
visit (param.get_type ());
729729
}
730730

731-
void
732-
DefaultASTVisitor::visit (AST::Method &method)
733-
{
734-
visit_outer_attrs (method);
735-
visit (method.get_visibility ());
736-
visit (method.get_qualifiers ());
737-
for (auto &generic : method.get_generic_params ())
738-
visit (generic);
739-
visit (method.get_self_param ());
740-
for (auto &param : method.get_function_params ())
741-
visit (param);
742-
if (method.has_return_type ())
743-
visit (method.get_return_type ());
744-
visit (method.get_where_clause ());
745-
visit (method.get_definition ());
746-
}
747-
748731
void
749732
DefaultASTVisitor::visit (AST::Module &module)
750733
{
@@ -794,6 +777,8 @@ DefaultASTVisitor::visit (AST::Function &function)
794777
visit (function.get_qualifiers ());
795778
for (auto &generic : function.get_generic_params ())
796779
visit (generic);
780+
if (function.has_self_param ())
781+
visit (function.get_self_param ());
797782
for (auto &param : function.get_function_params ())
798783
visit (param);
799784
if (function.has_return_type ())

gcc/rust/ast/rust-ast-visitor.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,6 @@ class ASTVisitor
132132
// virtual void visit(WhereClauseItem& item) = 0;
133133
virtual void visit (LifetimeWhereClauseItem &item) = 0;
134134
virtual void visit (TypeBoundWhereClauseItem &item) = 0;
135-
virtual void visit (Method &method) = 0;
136135
virtual void visit (Module &module) = 0;
137136
virtual void visit (ExternCrate &crate) = 0;
138137
// virtual void visit(UseTree& use_tree) = 0;
@@ -308,7 +307,6 @@ class DefaultASTVisitor : public ASTVisitor
308307
virtual void visit (AST::TypeParam &param) override;
309308
virtual void visit (AST::LifetimeWhereClauseItem &item) override;
310309
virtual void visit (AST::TypeBoundWhereClauseItem &item) override;
311-
virtual void visit (AST::Method &method) override;
312310
virtual void visit (AST::Module &module) override;
313311
virtual void visit (AST::ExternCrate &crate) override;
314312
virtual void visit (AST::UseTreeGlob &use_tree) override;

gcc/rust/ast/rust-ast.cc

Lines changed: 0 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -725,69 +725,6 @@ InherentImpl::as_string () const
725725
return str;
726726
}
727727

728-
std::string
729-
Method::as_string () const
730-
{
731-
std::string str ("Method: \n ");
732-
733-
str += vis.as_string () + " " + qualifiers.as_string ();
734-
735-
str += " fn " + method_name.as_string ();
736-
737-
// generic params
738-
str += "\n Generic params: ";
739-
if (generic_params.empty ())
740-
{
741-
str += "none";
742-
}
743-
else
744-
{
745-
for (const auto &param : generic_params)
746-
{
747-
// DEBUG: null pointer check
748-
if (param == nullptr)
749-
{
750-
rust_debug (
751-
"something really terrible has gone wrong - null pointer "
752-
"generic param in method.");
753-
return "NULL_POINTER_MARK";
754-
}
755-
756-
str += "\n " + param->as_string ();
757-
}
758-
}
759-
760-
str += "\n Self param: " + self_param.as_string ();
761-
762-
str += "\n Function params: ";
763-
if (function_params.empty ())
764-
{
765-
str += "none";
766-
}
767-
else
768-
{
769-
for (const auto &param : function_params)
770-
str += "\n " + param.as_string ();
771-
}
772-
773-
str += "\n Return type: ";
774-
if (has_return_type ())
775-
str += return_type->as_string ();
776-
else
777-
str += "none (void)";
778-
779-
str += "\n Where clause: ";
780-
if (has_where_clause ())
781-
str += where_clause.as_string ();
782-
else
783-
str += "none";
784-
785-
str += "\n Block expr (body): \n ";
786-
str += function_body->as_string ();
787-
788-
return str;
789-
}
790-
791728
std::string
792729
StructStruct::as_string () const
793730
{
@@ -4883,12 +4820,6 @@ TypeBoundWhereClauseItem::accept_vis (ASTVisitor &vis)
48834820
vis.visit (*this);
48844821
}
48854822

4886-
void
4887-
Method::accept_vis (ASTVisitor &vis)
4888-
{
4889-
vis.visit (*this);
4890-
}
4891-
48924823
void
48934824
Module::accept_vis (ASTVisitor &vis)
48944825
{

0 commit comments

Comments
 (0)