@@ -700,7 +700,8 @@ public object VisitScriptBlock(ScriptBlockAst scriptBlockAst)
700700
701701 VariableAnalysis previousOuter = OuterAnalysis ;
702702
703- // We already run variable analysis in these cases so check
703+ // We already run variable analysis if the parent is a function so skip these.
704+ // Otherwise, we have to do variable analysis using the outer scope variables.
704705 if ( ! ( scriptBlockAst . Parent is FunctionDefinitionAst ) && ! ( scriptBlockAst . Parent is FunctionMemberAst ) )
705706 {
706707 OuterAnalysis = Helper . Instance . InitializeVariableAnalysisHelper ( scriptBlockAst , OuterAnalysis ) ;
@@ -726,8 +727,15 @@ public object VisitScriptBlock(ScriptBlockAst scriptBlockAst)
726727 scriptBlockAst . EndBlock . Visit ( this ) ;
727728 }
728729
730+ VariableAnalysis innerAnalysis = OuterAnalysis ;
729731 OuterAnalysis = previousOuter ;
730732
733+ if ( ! ( scriptBlockAst . Parent is FunctionDefinitionAst ) && ! ( scriptBlockAst . Parent is FunctionMemberAst ) )
734+ {
735+ // Update the variable analysis of the outer script block
736+ VariableAnalysis . UpdateOuterAnalysis ( OuterAnalysis , innerAnalysis ) ;
737+ }
738+
731739 return null ;
732740 }
733741
@@ -889,6 +897,13 @@ public object VisitCatchClause(CatchClauseAst catchClauseAst)
889897 /// <returns></returns>
890898 public object VisitCommand ( CommandAst commandAst )
891899 {
900+ if ( commandAst == null ) return null ;
901+
902+ foreach ( CommandElementAst ceAst in commandAst . CommandElements )
903+ {
904+ ceAst . Visit ( this ) ;
905+ }
906+
892907 return null ;
893908 }
894909
@@ -1219,12 +1234,19 @@ public object VisitParenExpression(ParenExpressionAst parenExpressionAst)
12191234 }
12201235
12211236 /// <summary>
1222- /// Do nothing
1237+ /// Visit pipeline
12231238 /// </summary>
12241239 /// <param name="pipelineAst"></param>
12251240 /// <returns></returns>
12261241 public object VisitPipeline ( PipelineAst pipelineAst )
12271242 {
1243+ if ( pipelineAst == null ) return null ;
1244+
1245+ foreach ( var command in pipelineAst . PipelineElements )
1246+ {
1247+ command . Visit ( this ) ;
1248+ }
1249+
12281250 return null ;
12291251 }
12301252
0 commit comments