summaryrefslogtreecommitdiff
path: root/examples/python/shadow.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/python/shadow.py')
-rw-r--r--examples/python/shadow.py58
1 files changed, 0 insertions, 58 deletions
diff --git a/examples/python/shadow.py b/examples/python/shadow.py
deleted file mode 100644
index 0556cfc553ce..000000000000
--- a/examples/python/shadow.py
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/python
-
-import lldb
-import shlex
-
-
-@lldb.command("shadow")
-def check_shadow_command(debugger, command, exe_ctx, result, dict):
- '''Check the currently selected stack frame for shadowed variables'''
- process = exe_ctx.GetProcess()
- state = process.GetState()
- if state != lldb.eStateStopped:
- print >>result, "process must be stopped, state is %s" % lldb.SBDebugger.StateAsCString(
- state)
- return
- frame = exe_ctx.GetFrame()
- if not frame:
- print >>result, "invalid frame"
- return
- # Parse command line args
- command_args = shlex.split(command)
- # TODO: add support for using arguments that are passed to this command...
-
- # Make a dictionary of variable name to "SBBlock and SBValue"
- shadow_dict = {}
-
- num_shadowed_variables = 0
- # Get the deepest most block from the current frame
- block = frame.GetBlock()
- # Iterate through the block and all of its parents
- while block.IsValid():
- # Get block variables from the current block only
- block_vars = block.GetVariables(frame, True, True, True, 0)
- # Iterate through all variables in the current block
- for block_var in block_vars:
- # Since we can have multiple shadowed variables, we our variable
- # name dictionary to have an array or "block + variable" pairs so
- # We can correctly print out all shadowed variables and whow which
- # blocks they come from
- block_var_name = block_var.GetName()
- if block_var_name in shadow_dict:
- shadow_dict[block_var_name].append(block_var)
- else:
- shadow_dict[block_var_name] = [block_var]
- # Get the parent block and continue
- block = block.GetParent()
-
- num_shadowed_variables = 0
- if shadow_dict:
- for name in shadow_dict.keys():
- shadow_vars = shadow_dict[name]
- if len(shadow_vars) > 1:
- print '"%s" is shadowed by the following declarations:' % (name)
- num_shadowed_variables += 1
- for shadow_var in shadow_vars:
- print >>result, str(shadow_var.GetDeclaration())
- if num_shadowed_variables == 0:
- print >>result, 'no variables are shadowed'