Skip to content

Commit 649fdd4

Browse files
dchiquitoyouknowone
authored andcommitted
Fix type param order during source location
There is a `debug_assert!` during source location which verifies that there is no backtracking during the location scanning process. Type params were being folded after everything else, which required a backtrack. This caused any code with function or class type parameters to break when run in debug mode.
1 parent 6a2aa26 commit 649fdd4

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

ast/src/source_locator.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -156,11 +156,11 @@ impl crate::fold::Fold<TextRange> for LinearLocator<'_> {
156156
let context = self.will_map_user(&range);
157157

158158
let name = self.fold(name)?;
159+
let type_params = self.fold(type_params)?;
159160
let bases = self.fold(bases)?;
160161
let keywords = self.fold(keywords)?;
161162
let body = self.fold(body)?;
162163
let range = self.map_user(range, context)?;
163-
let type_params = self.fold(type_params)?;
164164

165165
Ok(crate::StmtClassDef {
166166
name,
@@ -190,11 +190,11 @@ impl crate::fold::Fold<TextRange> for LinearLocator<'_> {
190190
let context = self.will_map_user(&range);
191191

192192
let name = self.fold(name)?;
193+
let type_params = self.fold(type_params)?;
193194
let args: Box<crate::Arguments<SourceRange>> = self.fold(args)?;
194195
let returns = self.fold(returns)?;
195196
let body = self.fold(body)?;
196197
let type_comment = self.fold(type_comment)?;
197-
let type_params = self.fold(type_params)?;
198198
let range = self.map_user(range, context)?;
199199
Ok(crate::StmtFunctionDef {
200200
name,
@@ -225,11 +225,11 @@ impl crate::fold::Fold<TextRange> for LinearLocator<'_> {
225225
let context = self.will_map_user(&range);
226226

227227
let name = self.fold(name)?;
228+
let type_params = self.fold(type_params)?;
228229
let args: Box<crate::Arguments<SourceRange>> = self.fold(args)?;
229230
let returns = self.fold(returns)?;
230231
let body = self.fold(body)?;
231232
let type_comment = self.fold(type_comment)?;
232-
let type_params = self.fold(type_params)?;
233233
let range = self.map_user(range, context)?;
234234
Ok(crate::StmtAsyncFunctionDef {
235235
name,

0 commit comments

Comments
 (0)