diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2022-06-30 15:52:01 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-30 15:52:01 +0000 |
commit | 33912c1a08d3892d3c72506aed38771754b9cf54 (patch) | |
tree | de1e4342203a3567c8a719c8d689a3a097abc71a /gcc/rust/ast/rust-ast.h | |
parent | 81abc8623cb75fa18315c65e94c5965ec36fdb54 (diff) | |
parent | 93f63a94d4389f31d5b225ad220ebea5f7288fb7 (diff) | |
download | gcc-33912c1a08d3892d3c72506aed38771754b9cf54.zip gcc-33912c1a08d3892d3c72506aed38771754b9cf54.tar.gz gcc-33912c1a08d3892d3c72506aed38771754b9cf54.tar.bz2 |
Merge #1336
1336: Resolve const generic parameters r=CohenArthur a=CohenArthur
Fixes #1319.
This can only resolve the simpler test cases: Anything that is ambiguous is ignored and does not get resolved. This will be fixed very soon :)
Co-authored-by: Arthur Cohen <arthur.cohen@embecosm.com>
Diffstat (limited to 'gcc/rust/ast/rust-ast.h')
-rw-r--r-- | gcc/rust/ast/rust-ast.h | 69 |
1 files changed, 0 insertions, 69 deletions
diff --git a/gcc/rust/ast/rust-ast.h b/gcc/rust/ast/rust-ast.h index 51fe3c4..461a246 100644 --- a/gcc/rust/ast/rust-ast.h +++ b/gcc/rust/ast/rust-ast.h @@ -1344,75 +1344,6 @@ protected: } }; -/** - * Representation of const generic parameters - */ -class ConstGenericParam : public GenericParam -{ - /* Name of the parameter */ - Identifier name; - - /* Mandatory type of the const parameter - a null pointer is an error */ - std::unique_ptr<AST::Type> type; - - /** - * Default value for the const generic parameter - nullptr indicates a lack - * of default value, not an error, as these errors are reported during - * parsing. - */ - std::unique_ptr<AST::Expr> default_value; - - Attribute outer_attr; - Location locus; - -public: - ConstGenericParam (Identifier name, std::unique_ptr<AST::Type> type, - std::unique_ptr<AST::Expr> default_value, - Attribute outer_attr, Location locus) - : name (name), type (std::move (type)), - default_value (std::move (default_value)), outer_attr (outer_attr), - locus (locus) - {} - - ConstGenericParam (const ConstGenericParam &other) - : GenericParam (), name (other.name), type (other.type->clone_type ()), - outer_attr (other.outer_attr), locus (other.locus) - { - if (other.default_value) - default_value = other.default_value->clone_expr (); - } - - bool has_type () { return type != nullptr; } - bool has_default_value () { return default_value != nullptr; } - - const Identifier &get_name () const { return name; } - - std::unique_ptr<AST::Type> &get_type () - { - rust_assert (has_type ()); - - return type; - } - - std::unique_ptr<AST::Expr> &get_default_value () { return default_value; } - - std::string as_string () const override; - - void accept_vis (ASTVisitor &vis) override; - - Location get_locus () const override final { return locus; } - - Kind get_kind () const override final { return Kind::Const; } - -protected: - /* Use covariance to implement clone function as returning this object rather - * than base */ - ConstGenericParam *clone_generic_param_impl () const override - { - return new ConstGenericParam (*this); - } -}; - // A macro item AST node - abstract base class class MacroItem : public Item { |