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