Skip to content

Commit b8cccb1

Browse files
committed
ASTScope: Fix SourceFileScope source range
A SourceFile might contain TopLevelCodeDecls with guard statements, which introduce names until the end of the file, so plumb that through.
1 parent dac68ca commit b8cccb1

File tree

2 files changed

+12
-14
lines changed

2 files changed

+12
-14
lines changed

lib/AST/ASTScopeCreation.cpp

+2-4
Original file line numberDiff line numberDiff line change
@@ -994,10 +994,8 @@ ASTSourceFileScope::expandAScopeThatCreatesANewInsertionPoint(
994994
ScopeCreator &scopeCreator) {
995995
ASTScopeAssert(SF, "Must already have a SourceFile.");
996996
ArrayRef<Decl *> decls = SF->getTopLevelDecls();
997-
// Assume that decls are only added at the end, in source order
998-
Optional<SourceLoc> endLoc = None;
999-
if (!decls.empty())
1000-
endLoc = decls.back()->getEndLoc();
997+
998+
SourceLoc endLoc = getSourceRangeOfThisASTNode().End;
1001999

10021000
std::vector<ASTNode> newNodes(decls.begin(), decls.end());
10031001
insertionPoint =

test/NameLookup/scope_map_top_level.swift

+10-10
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,20 @@ var i: Int = b.my_identity()
2929
// CHECK-EXPANDED-NEXT: ASTSourceFileScope {{.*}}, (uncached) [1:1 - 61:1] 'SOURCE_DIR{{[/\\]}}test{{[/\\]}}NameLookup{{[/\\]}}scope_map_top_level.swift'
3030
// CHECK-EXPANDED-NEXT: |-NominalTypeDeclScope {{.*}}, [4:1 - 4:13]
3131
// CHECK-EXPANDED-NEXT: `-NominalTypeBodyScope {{.*}}, [4:11 - 4:13]
32-
// CHECK-EXPANDED-NEXT: `-TopLevelCodeScope {{.*}}, [6:1 - 21:28]
33-
// CHECK-EXPANDED-NEXT: `-BraceStmtScope {{.*}}, [6:1 - 21:28]
32+
// CHECK-EXPANDED-NEXT: `-TopLevelCodeScope {{.*}}, [6:1 - 61:1]
33+
// CHECK-EXPANDED-NEXT: `-BraceStmtScope {{.*}}, [6:1 - 61:1]
3434
// CHECK-EXPANDED-NEXT: |-PatternEntryDeclScope {{.*}}, [6:5 - 6:15] entry 0 'a'
3535
// CHECK-EXPANDED-NEXT: `-PatternEntryInitializerScope {{.*}}, [6:15 - 6:15] entry 0 'a'
36-
// CHECK-EXPANDED-NEXT: `-TopLevelCodeScope {{.*}}, [8:1 - 21:28]
37-
// CHECK-EXPANDED-NEXT: `-BraceStmtScope {{.*}}, [8:1 - 21:28]
38-
// CHECK-EXPANDED-NEXT: `-GuardStmtScope {{.*}}, [8:1 - 21:28]
39-
// CHECK-EXPANDED-NEXT: `-ConditionalClausePatternUseScope, [8:15 - 21:28] let b{{\??}}
36+
// CHECK-EXPANDED-NEXT: `-TopLevelCodeScope {{.*}}, [8:1 - 61:1]
37+
// CHECK-EXPANDED-NEXT: `-BraceStmtScope {{.*}}, [8:1 - 61:1]
38+
// CHECK-EXPANDED-NEXT: `-GuardStmtScope {{.*}}, [8:1 - 61:1]
39+
// CHECK-EXPANDED-NEXT: `-ConditionalClausePatternUseScope, [8:15 - 61:1] let b{{\??}}
4040
// CHECK-EXPANDED-NEXT: |-ConditionalClauseInitializerScope, [8:15 - 8:15]
4141
// CHECK-EXPANDED-NEXT: |-AbstractFunctionDeclScope {{.*}}, [11:1 - 11:19] 'foo(x:)'
4242
// CHECK-EXPANDED-NEXT: |-ParameterListScope {{.*}}, [11:9 - 11:16]
4343
// CHECK-EXPANDED-NEXT: `-FunctionBodyScope {{.*}}, [11:18 - 11:19]
44-
// CHECK-EXPANDED-NEXT: `-TopLevelCodeScope {{.*}}, [13:1 - 21:28]
45-
// CHECK-EXPANDED-NEXT: `-BraceStmtScope {{.*}}, [13:1 - 21:28]
44+
// CHECK-EXPANDED-NEXT: `-TopLevelCodeScope {{.*}}, [13:1 - 61:1]
45+
// CHECK-EXPANDED-NEXT: `-BraceStmtScope {{.*}}, [13:1 - 61:1]
4646
// CHECK-EXPANDED-NEXT: |-PatternEntryDeclScope {{.*}}, [13:5 - 13:9] entry 0 'c'
4747
// CHECK-EXPANDED-NEXT: `-PatternEntryInitializerScope {{.*}}, [13:9 - 13:9] entry 0 'c'
4848
// CHECK-EXPANDED-NEXT: |-TypeAliasDeclScope {{.*}}, [15:1 - 15:15]
@@ -51,8 +51,8 @@ var i: Int = b.my_identity()
5151
// CHECK-EXPANDED-NEXT: `-AbstractFunctionDeclScope {{.*}}, [18:3 - 18:43] 'my_identity()'
5252
// CHECK-EXPANDED-NEXT: `-FunctionBodyScope {{.*}}, [18:29 - 18:43]
5353
// CHECK-EXPANDED-NEXT: `-BraceStmtScope {{.*}}, [18:29 - 18:43]
54-
// CHECK-EXPANDED-NEXT: `-TopLevelCodeScope {{.*}}, [21:1 - 21:28]
55-
// CHECK-EXPANDED-NEXT: `-BraceStmtScope {{.*}}, [21:1 - 21:28]
54+
// CHECK-EXPANDED-NEXT: `-TopLevelCodeScope {{.*}}, [21:1 - 61:1]
55+
// CHECK-EXPANDED-NEXT: `-BraceStmtScope {{.*}}, [21:1 - 61:1]
5656
// CHECK-EXPANDED-NEXT: `-PatternEntryDeclScope {{.*}}, [21:5 - 21:28] entry 0 'i'
5757
// CHECK-EXPANDED-NEXT: `-PatternEntryInitializerScope {{.*}}, [21:14 - 21:28] entry 0 'i'
5858

0 commit comments

Comments
 (0)