@@ -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