Skip to content

Commit 8172b1a

Browse files
author
quoctruong
committed
Merge pull request #25 from PowerShell/changeinterface
Change the interface to ICustomAstVisitor instead of ICustomAstVisitor2 for ScriptAnalysis
2 parents ced28f8 + e976538 commit 8172b1a

File tree

1 file changed

+26
-63
lines changed

1 file changed

+26
-63
lines changed

Engine/Helper.cs

Lines changed: 26 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -637,7 +637,7 @@ public int Compare(Tuple<int, int> t1, Tuple<int, int> t2)
637637
/// <summary>
638638
/// Class used to do variable analysis on the whole script
639639
/// </summary>
640-
public class ScriptAnalysis: ICustomAstVisitor2
640+
public class ScriptAnalysis: ICustomAstVisitor
641641
{
642642
private VariableAnalysis OuterAnalysis;
643643

@@ -696,77 +696,40 @@ public object VisitScriptBlock(ScriptBlockAst scriptBlockAst)
696696
}
697697

698698
/// <summary>
699-
/// Do nothing
700-
/// </summary>
701-
/// <param name="baseCtorInvokeMemberExpressionAst"></param>
702-
/// <returns></returns>
703-
public object VisitBaseCtorInvokeMemberExpression(BaseCtorInvokeMemberExpressionAst baseCtorInvokeMemberExpressionAst)
704-
{
705-
return null;
706-
}
707-
708-
/// <summary>
709-
/// Do nothing
699+
/// perform special visiting action if statement is a typedefinitionast
710700
/// </summary>
711-
/// <param name="configurationDefinitionAst"></param>
701+
/// <param name="statementAst"></param>
712702
/// <returns></returns>
713-
public object VisitConfigurationDefinition(ConfigurationDefinitionAst configurationDefinitionAst)
703+
private object VisitStatementHelper(StatementAst statementAst)
714704
{
715-
return null;
716-
}
705+
if (statementAst == null)
706+
{
707+
return null;
708+
}
717709

718-
/// <summary>
719-
/// Do nothing
720-
/// </summary>
721-
/// <param name="dynamicKeywordAst"></param>
722-
/// <returns></returns>
723-
public object VisitDynamicKeywordStatement(DynamicKeywordStatementAst dynamicKeywordAst)
724-
{
725-
return null;
726-
}
710+
TypeDefinitionAst typeAst = statementAst as TypeDefinitionAst;
727711

728-
/// <summary>
729-
/// Set outer analysis before further visiting.
730-
/// </summary>
731-
/// <param name="functionMemberAst"></param>
732-
/// <returns></returns>
733-
public object VisitFunctionMember(FunctionMemberAst functionMemberAst)
734-
{
735-
var previousOuter = OuterAnalysis;
736-
OuterAnalysis = Helper.Instance.InitializeVariableAnalysisHelper(functionMemberAst, OuterAnalysis);
737-
738-
if (functionMemberAst != null)
712+
if (typeAst == null)
739713
{
740-
functionMemberAst.Body.Visit(this);
714+
statementAst.Visit(this);
715+
return null;
741716
}
742717

743-
OuterAnalysis = previousOuter;
718+
foreach (var member in typeAst.Members)
719+
{
720+
FunctionMemberAst functionMemberAst = member as FunctionMemberAst;
744721

745-
return null;
746-
}
722+
if (functionMemberAst != null)
723+
{
724+
var previousOuter = OuterAnalysis;
725+
OuterAnalysis = Helper.Instance.InitializeVariableAnalysisHelper(functionMemberAst, OuterAnalysis);
747726

748-
/// <summary>
749-
/// Do nothing
750-
/// </summary>
751-
/// <param name="propertyMemberAst"></param>
752-
/// <returns></returns>
753-
public object VisitPropertyMember(PropertyMemberAst propertyMemberAst)
754-
{
755-
return null;
756-
}
727+
if (functionMemberAst != null)
728+
{
729+
functionMemberAst.Body.Visit(this);
730+
}
757731

758-
/// <summary>
759-
/// Visit the functions defined in class
760-
/// </summary>
761-
/// <param name="typeDefinitionAst"></param>
762-
/// <returns></returns>
763-
public object VisitTypeDefinition(TypeDefinitionAst typeDefinitionAst)
764-
{
765-
if (typeDefinitionAst != null)
766-
{
767-
foreach (var member in typeDefinitionAst.Members)
768-
{
769-
member.Visit(this);
732+
OuterAnalysis = previousOuter;
770733
}
771734
}
772735

@@ -1182,7 +1145,7 @@ public object VisitNamedBlock(NamedBlockAst namedBlockAst)
11821145
{
11831146
foreach (var statement in namedBlockAst.Statements)
11841147
{
1185-
statement.Visit(this);
1148+
VisitStatementHelper(statement);
11861149
}
11871150
}
11881151

@@ -1265,7 +1228,7 @@ public object VisitStatementBlock(StatementBlockAst statementBlockAst)
12651228
{
12661229
foreach (var statement in statementBlockAst.Statements)
12671230
{
1268-
statement.Visit(this);
1231+
VisitStatementHelper(statement);
12691232
}
12701233
}
12711234

0 commit comments

Comments
 (0)