From b2c70190061233f2aaaaacdfb36f8f5181c1f514 Mon Sep 17 00:00:00 2001 From: ringabout <43030857+ringabout@users.noreply.github.com> Date: Tue, 6 Dec 2022 17:19:12 +0800 Subject: definite assignment analysis for let (#21024) * draft for let daa * patch * fixes bugs * errors for global let variable reassignments * checkpoint * out param accepts let * add more tests * add documentation * merge tests --- tests/init/tlet.nim | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 tests/init/tlet.nim (limited to 'tests/init/tlet.nim') diff --git a/tests/init/tlet.nim b/tests/init/tlet.nim new file mode 100644 index 000000000..de0da23a6 --- /dev/null +++ b/tests/init/tlet.nim @@ -0,0 +1,34 @@ +{.experimental: "strictDefs".} + +proc bar(x: out string) = + x = "abc" + +proc foo() = + block: + let x: string + if true: + x = "abc" + else: + x = "def" + doAssert x == "abc" + block: + let y: string + bar(y) + doAssert y == "abc" + block: + let x: string + if true: + x = "abc" + discard "abc" + else: + x = "def" + discard "def" + doAssert x == "abc" + block: # + let x: int + block: # + let x: float + x = 1.234 + doAssert x == 1.234 +static: foo() +foo() -- cgit 1.4.1-2-gfad0