@@ -15,7 +15,9 @@ function visitAst(ast, previsit, postvisit, data)
1515 ast .isAst = true ;
1616 data = data or {};
1717 data .scopeStack = {};
18- data .functionData = {};
18+ data .functionData = {
19+ scope = ast .body .scope ;
20+ };
1921 data .scope = ast .globalScope ;
2022 data .globalScope = ast .globalScope ;
2123 if (type (previsit ) == " function" ) then
@@ -98,11 +100,15 @@ function visitStatement(statement, previsit, postvisit, data)
98100 for i , expression in ipairs (statement .rhs ) do
99101 statement .rhs [i ] = visitExpression (expression , previsit , postvisit , data );
100102 end
101- elseif (statement .kind == AstKind .DoStatement or statement . kind == AstKind . FunctionDeclaration or statement .kind == AstKind .LocalFunctionDeclaration ) then
103+ elseif (statement .kind == AstKind .FunctionDeclaration or statement .kind == AstKind .LocalFunctionDeclaration ) then
102104 local parentFunctionData = data .functionData ;
103- data .functionData = {};
105+ data .functionData = {
106+ scope = statement .body .scope ;
107+ };
104108 statement .body = visitBlock (statement .body , previsit , postvisit , data , true );
105109 data .functionData = parentFunctionData ;
110+ elseif (statement .kind == AstKind .DoStatement ) then
111+ statement .body = visitBlock (statement .body , previsit , postvisit , data , true );
106112 elseif (statement .kind == AstKind .WhileStatement ) then
107113 statement .condition = visitExpression (statement .condition , previsit , postvisit , data );
108114 statement .body = visitBlock (statement .body , previsit , postvisit , data , false );
@@ -190,7 +196,9 @@ function visitExpression(expression, previsit, postvisit, data)
190196
191197 if (expression .kind == AstKind .FunctionLiteralExpression ) then
192198 local parentFunctionData = data .functionData ;
193- data .functionData = {};
199+ data .functionData = {
200+ scope = expression .body .scope ;
201+ };
194202 expression .body = visitBlock (expression .body , previsit , postvisit , data , true );
195203 data .functionData = parentFunctionData ;
196204 end
0 commit comments