@@ -108,25 +108,42 @@ public static FunctionDefinitionAst GetFunctionDefByCommandAst(string OldName, i
108
108
109
109
public static Ast GetAst ( int StartLineNumber , int StartColumnNumber , Ast Ast )
110
110
{
111
- Ast token = null ;
112
111
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 =>
114
114
{
115
- return StartLineNumber == ast . Extent . StartLineNumber &&
116
- ast . Extent . EndColumnNumber >= StartColumnNumber &&
117
- StartColumnNumber >= ast . Extent . StartColumnNumber ;
115
+ return StartLineNumber == ast . Extent . StartLineNumber ;
118
116
} , 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
+ }
119
129
120
- IEnumerable < Ast > tokens = token . FindAll ( ast =>
130
+ IEnumerable < Ast > token = null ;
131
+ token = Ast . FindAll ( ast =>
121
132
{
122
- return ast . Extent . EndColumnNumber >= StartColumnNumber
123
- && StartColumnNumber >= ast . Extent . StartColumnNumber ;
133
+ return ast . Extent . StartLineNumber == StartLineNumber &&
134
+ ast . Extent . StartColumnNumber <= StartColumnNumber &&
135
+ ast . Extent . EndColumnNumber >= StartColumnNumber ;
124
136
} , true ) ;
125
- if ( tokens . Count ( ) > 1 )
137
+ if ( token != null )
126
138
{
127
- token = tokens . LastOrDefault ( ) ;
139
+ if ( token . First ( ) is AssignmentStatementAst Assignment )
140
+ {
141
+ return Assignment . Left ;
142
+ }
143
+ return token . Last ( ) ;
128
144
}
129
- return token ;
145
+
146
+ return token . First ( ) ;
130
147
}
131
148
}
132
149
}
0 commit comments