aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/analysis/scope.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/rust/analysis/scope.h')
-rw-r--r--gcc/rust/analysis/scope.h57
1 files changed, 0 insertions, 57 deletions
diff --git a/gcc/rust/analysis/scope.h b/gcc/rust/analysis/scope.h
deleted file mode 100644
index 41bcee6..0000000
--- a/gcc/rust/analysis/scope.h
+++ /dev/null
@@ -1,57 +0,0 @@
-#pragma once
-
-#include "rust-system.h"
-#include "rust-ast-full.h"
-
-namespace Rust {
-namespace Analysis {
-
-template <class T> class Scope
-{
-public:
- Scope () : scopeStack () {}
-
- ~Scope () {}
-
- bool Insert (std::string key, T val)
- {
- if (scopeStack.back ().find (key) != scopeStack.back ().end ())
- {
- return false;
- }
-
- scopeStack.back ().insert (std::make_pair (key, std::move (val)));
- return true;
- }
-
- bool Lookup (std::string key, T *result)
- {
- for (auto it = scopeStack.rbegin (); it != scopeStack.rend (); ++it)
- {
- auto lookup = it->find (key);
- if (lookup != it->end ())
- {
- *result = lookup->second;
- return true;
- }
- }
- return false;
- }
-
- void Push () { scopeStack.push_back ({}); }
-
- std ::map<std::string, T> Pop ()
- {
- auto toplevel = scopeStack.back ();
- scopeStack.pop_back ();
- return toplevel;
- }
-
- std ::map<std::string, T> Peek () { return scopeStack.back (); }
-
-private:
- std::vector<std::map<std::string, T> > scopeStack;
-};
-
-} // namespace Analysis
-} // namespace Rust