aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-04-02 14:43:58 +0200
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2020-05-21 17:27:45 +0200
commiteff5e6c1a4e6c36614dcfaa0213e2ccf57e844a3 (patch)
treea644a85a6408ef3c1e53c4af52a459ca047da420
parentdb0a795b145501e456cac5180be03ef697810845 (diff)
downloadsparse-eff5e6c1a4e6c36614dcfaa0213e2ccf57e844a3.tar.gz
scope: add is_in_scope()
Add an helper to check if a scope is included into another one. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
-rw-r--r--scope.c9
-rw-r--r--scope.h2
2 files changed, 11 insertions, 0 deletions
diff --git a/scope.c b/scope.c
index 75ee19cf..635e0d6d 100644
--- a/scope.c
+++ b/scope.c
@@ -162,3 +162,12 @@ int is_outer_scope(struct scope *scope)
return 1;
}
+int is_in_scope(struct scope *outer, struct scope *inner)
+{
+ while (inner != outer) {
+ if (inner == function_scope)
+ return 0;
+ inner = inner->next;
+ }
+ return 1;
+}
diff --git a/scope.h b/scope.h
index ddcb90bd..36a56d6a 100644
--- a/scope.h
+++ b/scope.h
@@ -62,4 +62,6 @@ extern void bind_scope(struct symbol *, struct scope *);
extern void rebind_scope(struct symbol *, struct scope *);
extern int is_outer_scope(struct scope *);
+extern int is_in_scope(struct scope *outer, struct scope *inner);
+
#endif