@@ -108,42 +108,26 @@ 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 IEnumerable < Ast > token = null ;
131121 token = Ast . FindAll ( ast =>
132122 {
133- return ast . Extent . StartLineNumber == StartLineNumber &&
134- ast . Extent . StartColumnNumber <= StartColumnNumber &&
135- ast . Extent . EndColumnNumber >= StartColumnNumber ;
123+ return ast . Extent . EndColumnNumber >= StartColumnNumber
124+ && StartColumnNumber >= ast . Extent . StartColumnNumber ;
136125 } , true ) ;
137- if ( token != null )
126+ if ( tokens . Count ( ) > 1 )
138127 {
139- if ( token . First ( ) is AssignmentStatementAst Assignment )
140- {
141- return Assignment . Left ;
142- }
143- return token . Last ( ) ;
128+ token = tokens . LastOrDefault ( ) ;
144129 }
145-
146- return token . First ( ) ;
130+ return token ;
147131 }
148132 }
149133}
0 commit comments