From f5e4f95069e03cbf715bde95f95710ee7b25a8a3 Mon Sep 17 00:00:00 2001 From: Bob Nystrom Date: Sat, 14 Dec 2013 16:36:19 -0800 Subject: [PATCH] Write some more scope edge case tests. --- test/variable/global_in_initializer.wren | 2 ++ test/variable/local_in_initializer.wren | 5 +++++ test/variable/shadow_and_local.wren | 8 ++++++++ test/variable/shadow_in_initializer.wren | 11 +++++++++++ 4 files changed, 26 insertions(+) create mode 100644 test/variable/global_in_initializer.wren create mode 100644 test/variable/local_in_initializer.wren create mode 100644 test/variable/shadow_and_local.wren create mode 100644 test/variable/shadow_in_initializer.wren diff --git a/test/variable/global_in_initializer.wren b/test/variable/global_in_initializer.wren new file mode 100644 index 00000000..73182fe8 --- /dev/null +++ b/test/variable/global_in_initializer.wren @@ -0,0 +1,2 @@ +var a = a == null +io.write(a) // expect: true diff --git a/test/variable/local_in_initializer.wren b/test/variable/local_in_initializer.wren new file mode 100644 index 00000000..1b83963a --- /dev/null +++ b/test/variable/local_in_initializer.wren @@ -0,0 +1,5 @@ +// skip: Variables should not be in scope in their initializer. +{ + var a = a + 1 // expect error + io.write(a) +} diff --git a/test/variable/shadow_and_local.wren b/test/variable/shadow_and_local.wren new file mode 100644 index 00000000..7430c442 --- /dev/null +++ b/test/variable/shadow_and_local.wren @@ -0,0 +1,8 @@ +{ + var a = "outer" + { + io.write(a) // expect: outer + var a = "inner" + io.write(a) // expect: inner + } +} \ No newline at end of file diff --git a/test/variable/shadow_in_initializer.wren b/test/variable/shadow_in_initializer.wren new file mode 100644 index 00000000..ecf43acb --- /dev/null +++ b/test/variable/shadow_in_initializer.wren @@ -0,0 +1,11 @@ +// skip: Variables should not be in scope in their initializer. +{ + var a = "outer" + { + var a = a + " inner" + io.write(a) // expect: outer inner + } +} + +// TODO: Test referring to class name inside class for class at global scope +// and in local scope.