@@ -108,40 +108,42 @@ public static FunctionDefinitionAst GetFunctionDefByCommandAst(string OldName, i
108108
109109 public static Ast GetAst ( int StartLineNumber , int StartColumnNumber , Ast Ast )
110110 {
111- Ast token = null ;
112111
113- token = Ast . Find ( ast =>
112+ // Get all the tokens on the startline so we can look for an appropriate Ast to return
113+ IEnumerable < Ast > tokens = Ast . FindAll ( ast =>
114114 {
115- return StartLineNumber == ast . Extent . StartLineNumber &&
116- ast . Extent . EndColumnNumber >= StartColumnNumber &&
117- StartColumnNumber >= ast . Extent . StartColumnNumber ;
115+ return StartLineNumber == ast . Extent . StartLineNumber ;
118116 } , true ) ;
119-
120- if ( token is NamedBlockAst )
121- {
122- return token . Parent ;
123- }
124-
125- if ( null == token )
117+ // Check if the Ast is a FunctionDefinitionAst
118+ IEnumerable < FunctionDefinitionAst > Functions = tokens . OfType < FunctionDefinitionAst > ( ) ;
119+ if ( Functions . Any ( ) )
126120 {
127- IEnumerable < Ast > LineT = Ast . FindAll ( ast =>
121+ foreach ( FunctionDefinitionAst Function in Functions )
128122 {
129- return StartLineNumber == ast . Extent . StartLineNumber &&
130- StartColumnNumber >= ast . Extent . StartColumnNumber ;
131- } , true ) ;
132- return LineT . OfType < FunctionDefinitionAst > ( ) ? . LastOrDefault ( ) ;
123+ if ( Function . Extent . StartLineNumber != Function . Extent . EndLineNumber )
124+ {
125+ return Function ;
126+ }
127+ }
133128 }
134129
135- IEnumerable < Ast > tokens = token . FindAll ( ast =>
130+ IEnumerable < Ast > token = null ;
131+ token = Ast . FindAll ( ast =>
136132 {
137- return ast . Extent . EndColumnNumber >= StartColumnNumber
138- && StartColumnNumber >= ast . Extent . StartColumnNumber ;
133+ return ast . Extent . StartLineNumber == StartLineNumber &&
134+ ast . Extent . StartColumnNumber <= StartColumnNumber &&
135+ ast . Extent . EndColumnNumber >= StartColumnNumber ;
139136 } , true ) ;
140- if ( tokens . Count ( ) > 1 )
137+ if ( token != null )
141138 {
142- token = tokens . LastOrDefault ( ) ;
139+ if ( token . First ( ) is AssignmentStatementAst Assignment )
140+ {
141+ return Assignment . Left ;
142+ }
143+ return token . Last ( ) ;
143144 }
144- return token ;
145+
146+ return token . First ( ) ;
145147 }
146148 }
147149}
0 commit comments