@@ -48,6 +48,12 @@ TEST(SourceLoc, AssignExpr) {
48
48
C.Ctx .getIdentifier (" bb" ),
49
49
DeclNameLoc (start.getAdvancedLoc (3 )),
50
50
/* implicit*/ false );
51
+ auto destImplicit = new (C.Ctx ) UnresolvedDotExpr (
52
+ destBase,
53
+ start.getAdvancedLoc (2 ),
54
+ C.Ctx .getIdentifier (" bb" ),
55
+ DeclNameLoc (start.getAdvancedLoc (3 )),
56
+ /* implicit*/ true );
51
57
52
58
auto sourceBase = new (C.Ctx ) UnresolvedDeclRefExpr (
53
59
C.Ctx .getIdentifier (" cc" ),
@@ -59,6 +65,13 @@ TEST(SourceLoc, AssignExpr) {
59
65
C.Ctx .getIdentifier (" dd" ),
60
66
DeclNameLoc (start.getAdvancedLoc (11 )),
61
67
/* implicit*/ false );
68
+ auto sourceImplicit = new (C.Ctx ) UnresolvedDotExpr (
69
+ sourceBase,
70
+ start.getAdvancedLoc (10 ),
71
+ C.Ctx .getIdentifier (" dd" ),
72
+ DeclNameLoc (start.getAdvancedLoc (11 )),
73
+ /* implicit*/ true );
74
+
62
75
63
76
auto invalid = new (C.Ctx ) UnresolvedDeclRefExpr (
64
77
C.Ctx .getIdentifier (" invalid" ),
@@ -74,8 +87,30 @@ TEST(SourceLoc, AssignExpr) {
74
87
EXPECT_EQ (SourceRange (start, start.getAdvancedLoc (11 )),
75
88
complete->getSourceRange ());
76
89
90
+ // Implicit dest should not change the source range.
91
+ auto completeImplDest = new (C.Ctx ) AssignExpr ( destImplicit
92
+ , start.getAdvancedLoc (6 )
93
+ , source, /* implicit*/ false );
94
+ EXPECT_EQ (start, completeImplDest->getStartLoc ());
95
+ EXPECT_EQ (start.getAdvancedLoc (6 ), completeImplDest->getEqualLoc ());
96
+ EXPECT_EQ (start.getAdvancedLoc (6 ), completeImplDest->getLoc ());
97
+ EXPECT_EQ (start.getAdvancedLoc (11 ), completeImplDest->getEndLoc ());
98
+ EXPECT_EQ (SourceRange (start, start.getAdvancedLoc (11 )),
99
+ completeImplDest->getSourceRange ());
100
+
101
+ // Implicit source should not change the source range.
102
+ auto completeImplSrc = new (C.Ctx ) AssignExpr ( dest, start.getAdvancedLoc (6 )
103
+ , sourceImplicit
104
+ , /* implicit*/ false );
105
+ EXPECT_EQ (start, completeImplSrc->getStartLoc ());
106
+ EXPECT_EQ (start.getAdvancedLoc (6 ), completeImplSrc->getEqualLoc ());
107
+ EXPECT_EQ (start.getAdvancedLoc (6 ), completeImplSrc->getLoc ());
108
+ EXPECT_EQ (start.getAdvancedLoc (11 ), completeImplSrc->getEndLoc ());
109
+ EXPECT_EQ (SourceRange (start, start.getAdvancedLoc (11 )),
110
+ completeImplSrc->getSourceRange ());
111
+
77
112
auto invalidSource = new (C.Ctx ) AssignExpr (dest, SourceLoc (), invalid,
78
- /* implicit*/ true );
113
+ /* implicit*/ false );
79
114
EXPECT_EQ (start, invalidSource->getStartLoc ());
80
115
EXPECT_EQ (SourceLoc (), invalidSource->getEqualLoc ());
81
116
EXPECT_EQ (SourceLoc (), invalidSource->getLoc ());
@@ -84,7 +119,7 @@ TEST(SourceLoc, AssignExpr) {
84
119
invalidSource->getSourceRange ());
85
120
86
121
auto invalidDest = new (C.Ctx ) AssignExpr (invalid, SourceLoc (), source,
87
- /* implicit*/ true );
122
+ /* implicit*/ false );
88
123
EXPECT_EQ (start.getAdvancedLoc (8 ), invalidDest->getStartLoc ());
89
124
EXPECT_EQ (SourceLoc (), invalidDest->getEqualLoc ());
90
125
EXPECT_EQ (SourceLoc (), invalidDest->getLoc ());
@@ -93,7 +128,7 @@ TEST(SourceLoc, AssignExpr) {
93
128
invalidDest->getSourceRange ());
94
129
95
130
auto invalidAll = new (C.Ctx ) AssignExpr (invalid, SourceLoc (), invalid,
96
- /* implicit*/ true );
131
+ /* implicit*/ false );
97
132
EXPECT_EQ (SourceLoc (), invalidAll->getStartLoc ());
98
133
EXPECT_EQ (SourceLoc (), invalidAll->getEqualLoc ());
99
134
EXPECT_EQ (SourceLoc (), invalidAll->getLoc ());
0 commit comments