Skip to content

Commit 88a58ed

Browse files
committed
fix infinite recursion in some cases
1 parent 87f3ad9 commit 88a58ed

6 files changed

Lines changed: 15 additions & 1 deletion

File tree

nattlua/analyzer/expressions/import.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ return {
1414

1515
if self.loaded_modules[cache] then return self.loaded_modules[cache] end
1616

17+
self.loaded_modules[cache] = Nil()
18+
1719
if root then
1820
self.loaded_modules[cache] = self:AnalyzeRootStatement(root)
1921
elseif node.data then

nattlua/analyzer/expressions/postfix_call.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ return {
9595
node.left.value.sub_type ~= "dofile" and
9696
node.left.value.sub_type ~= "loadfile"
9797
then
98-
return AnalyzeImport(self, node, node.left.value.sub_type == "require" and node.path)
98+
return AnalyzeImport(self, node, node.path)
9999
end
100100

101101
self:PushAnalyzerEnvironment(node.type_call and "typesystem" or "runtime")
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
_G.a_counter = (_G.a_counter or 0) + 1
2+
import("./test/tests/nattlua/analyzer/file_importing/recursive/b.nlua")
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
_G.b_counter = (_G.b_counter or 0) + 1
2+
import("./test/tests/nattlua/analyzer/file_importing/recursive/a.nlua")
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
analyze([[
2+
import("test/tests/nattlua/analyzer/file_importing/recursive/a.nlua")
3+
]])
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
test("recursive import crash repro", function()
2+
analyze([[
3+
import("test/tests/nattlua/analyzer/file_importing/recursive/a.nlua")
4+
]])
5+
end)

0 commit comments

Comments
 (0)