@@ -108,24 +108,14 @@ public static FunctionDefinitionAst GetFunctionDefByCommandAst(string OldName, i
108108
109109 public static Ast GetAst ( int StartLineNumber , int StartColumnNumber , Ast Ast )
110110 {
111+ Ast token = null ;
111112
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 =>
113+ token = Ast . Find ( ast =>
114114 {
115- return StartLineNumber == ast . Extent . StartLineNumber ;
115+ return StartLineNumber == ast . Extent . StartLineNumber &&
116+ ast . Extent . EndColumnNumber >= StartColumnNumber &&
117+ StartColumnNumber >= ast . Extent . StartColumnNumber ;
116118 } , true ) ;
117- // Check if the Ast is a FunctionDefinitionAst
118- IEnumerable < FunctionDefinitionAst > Functions = tokens . OfType < FunctionDefinitionAst > ( ) ;
119- if ( Functions . Any ( ) )
120- {
121- foreach ( FunctionDefinitionAst Function in Functions )
122- {
123- if ( Function . Extent . StartLineNumber != Function . Extent . EndLineNumber )
124- {
125- return Function ;
126- }
127- }
128- }
129119
130120 if ( token is NamedBlockAst )
131121 {
@@ -144,20 +134,14 @@ public static Ast GetAst(int StartLineNumber, int StartColumnNumber, Ast Ast)
144134
145135 IEnumerable < Ast > tokens = token . FindAll ( ast =>
146136 {
147- return ast . Extent . StartLineNumber == StartLineNumber &&
148- ast . Extent . StartColumnNumber <= StartColumnNumber &&
149- ast . Extent . EndColumnNumber >= StartColumnNumber ;
137+ return ast . Extent . EndColumnNumber >= StartColumnNumber
138+ && StartColumnNumber >= ast . Extent . StartColumnNumber ;
150139 } , true ) ;
151- if ( token != null )
140+ if ( tokens . Count ( ) > 1 )
152141 {
153- if ( token . First ( ) is AssignmentStatementAst Assignment )
154- {
155- return Assignment . Left ;
156- }
157- return token . Last ( ) ;
142+ token = tokens . LastOrDefault ( ) ;
158143 }
159-
160- return token . First ( ) ;
144+ return token ;
161145 }
162146 }
163147}
0 commit comments