swift
8c9eeb2e - [ASTScope] In the `isBeforeInSource` predicate, use the end location of the

Commit
1 year ago
[ASTScope] In the `isBeforeInSource` predicate, use the end location of the original source location of a macro expansion when walking up the ancestor list. The original source range of a macro expansion buffer contains the entire range of the code that is replaced by the expansion. In some cases, the original code is type checked, so ASTScope needs to represent both the original code and the macro-expanded code in the scope tree. For accessor macros, the original code -- the initializer expression of the property -- is type checked, but not before macro expansion, so unqualified lookup must deal with the scope tree for the initializer and the expanded accessors. The accessors are inserted in the tree after the initializer scope, but the `isBeforeInSource` was using the start location of the original source range for macro expansions, so the accessor scopes were incorrectly considered to be ordered before a source location in the initializer expression, which caused unqualified lookup of local variables within the initializer to fail.
Author
Parents
Loading