gdb/testsuite: test get/set value of unregistered Guile parameter
authorSimon Marchi <simon.marchi@polymtl.ca>
Wed, 14 Jul 2021 01:07:32 +0000 (21:07 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Fri, 23 Jul 2021 19:38:54 +0000 (15:38 -0400)
When creating a parameter in Guile, you have to create it using
make-parameter and then register it with GDB with register-parameter!.
In between, it's still possible (though not documented) to set the
parameter's value.  I broke this use case by mistake while writing this
series, so thought it would be good to have a test for it.

I suppose that people could use this "feature" to give their parameter
an initial value, even though make-parameter has an initial-value
parameter for this.  Nevertheless, changing this behavior could break
some scripts, which is why I think it's important for it to be tested.

Change-Id: I5b2103e3cec0cfdcccf7ffb00eb05fed8626e66d

gdb/testsuite/gdb.guile/scm-parameter.exp

index 67120b23366451bd24599f7a115fdeb77486d9c7..5a2fb42503d0cc37a3a38777585c396738eb1e8d 100644 (file)
@@ -176,6 +176,14 @@ with_test_prefix "test-restricted-param" {
 gdb_test "guile (register-parameter! (make-parameter \"height\"))" \
     "ERROR.*is already defined.*" "error registering existing parameter"
 
+# Test printing and setting the value of an unregistered parameter.
+gdb_test "guile (print (parameter-value (make-parameter \"foo\")))" \
+    "= #f"
+gdb_test "guile (define myparam (make-parameter \"foo\"))"
+gdb_test_no_output "guile (set-parameter-value! myparam #t)"
+gdb_test "guile (print (parameter-value myparam))" \
+    "= #t"
+
 # Test registering a parameter named with what was an ambiguous spelling
 # of existing parameters.