aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPhilip Herron <philip.herron@embecosm.com>2022-02-18 13:26:24 +0000
committerPhilip Herron <philip.herron@embecosm.com>2022-02-18 13:26:24 +0000
commit3dd4ce76a69e786b56a9af8b911590fc6410cc97 (patch)
treed027b9cb53949ce1ed56d144daf02c9b296cff68 /gcc
parent755d0e5adf2f49a053d10529430753083762b549 (diff)
downloadgcc-3dd4ce76a69e786b56a9af8b911590fc6410cc97.zip
gcc-3dd4ce76a69e786b56a9af8b911590fc6410cc97.tar.gz
gcc-3dd4ce76a69e786b56a9af8b911590fc6410cc97.tar.bz2
Add name resolution to range expressions
Diffstat (limited to 'gcc')
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-expr.cc32
-rw-r--r--gcc/rust/resolve/rust-ast-resolve-expr.h14
-rw-r--r--gcc/rust/resolve/rust-ast-resolve.cc1
3 files changed, 43 insertions, 4 deletions
diff --git a/gcc/rust/resolve/rust-ast-resolve-expr.cc b/gcc/rust/resolve/rust-ast-resolve-expr.cc
index 84fcb42..19f8169 100644
--- a/gcc/rust/resolve/rust-ast-resolve-expr.cc
+++ b/gcc/rust/resolve/rust-ast-resolve-expr.cc
@@ -477,5 +477,37 @@ ResolveExpr::visit (AST::MatchExpr &expr)
}
}
+void
+ResolveExpr::visit (AST::RangeFromToExpr &expr)
+{
+ resolve_expr (expr.get_from_expr ().get (), expr.get_node_id ());
+ resolve_expr (expr.get_to_expr ().get (), expr.get_node_id ());
+}
+
+void
+ResolveExpr::visit (AST::RangeFromExpr &expr)
+{
+ resolve_expr (expr.get_from_expr ().get (), expr.get_node_id ());
+}
+
+void
+ResolveExpr::visit (AST::RangeToExpr &expr)
+{
+ resolve_expr (expr.get_to_expr ().get (), expr.get_node_id ());
+}
+
+void
+ResolveExpr::visit (AST::RangeFullExpr &expr)
+{
+ // nothing to do
+}
+
+void
+ResolveExpr::visit (AST::RangeFromToInclExpr &expr)
+{
+ resolve_expr (expr.get_from_expr ().get (), expr.get_node_id ());
+ resolve_expr (expr.get_to_expr ().get (), expr.get_node_id ());
+}
+
} // namespace Resolver
} // namespace Rust
diff --git a/gcc/rust/resolve/rust-ast-resolve-expr.h b/gcc/rust/resolve/rust-ast-resolve-expr.h
index 8081133..d8bd203 100644
--- a/gcc/rust/resolve/rust-ast-resolve-expr.h
+++ b/gcc/rust/resolve/rust-ast-resolve-expr.h
@@ -21,10 +21,6 @@
#include "rust-ast-resolve-base.h"
#include "rust-ast-full.h"
-#include "rust-ast-resolve-struct-expr-field.h"
-#include "rust-ast-verify-assignee.h"
-#include "rust-ast-resolve-type.h"
-#include "rust-ast-resolve-pattern.h"
namespace Rust {
namespace Resolver {
@@ -140,6 +136,16 @@ public:
void visit (AST::MatchExpr &expr) override;
+ void visit (AST::RangeFromToExpr &expr) override;
+
+ void visit (AST::RangeFromExpr &expr) override;
+
+ void visit (AST::RangeToExpr &expr) override;
+
+ void visit (AST::RangeFullExpr &expr) override;
+
+ void visit (AST::RangeFromToInclExpr &expr) override;
+
protected:
void resolve_expr (AST::Expr *e, NodeId parent)
{
diff --git a/gcc/rust/resolve/rust-ast-resolve.cc b/gcc/rust/resolve/rust-ast-resolve.cc
index 0346988..094fa4a 100644
--- a/gcc/rust/resolve/rust-ast-resolve.cc
+++ b/gcc/rust/resolve/rust-ast-resolve.cc
@@ -22,6 +22,7 @@
#include "rust-ast-resolve-toplevel.h"
#include "rust-ast-resolve-item.h"
#include "rust-ast-resolve-expr.h"
+#include "rust-ast-resolve-struct-expr-field.h"
#define MKBUILTIN_TYPE(_X, _R, _TY) \
do \