@@ -1182,5 +1182,213 @@ End Sub
1182
1182
1183
1183
Assert . AreEqual ( 1 , usages . Count ( ) ) ;
1184
1184
}
1185
+
1186
+ [ TestMethod ]
1187
+ public void GivenField_NamedUnambiguously_FieldAssignmentCallResolvesToFieldDeclaration ( )
1188
+ {
1189
+ var code = @"
1190
+ Private Type TestModule1
1191
+ Foo As Integer
1192
+ End Type
1193
+
1194
+ Private Bar As TestModule1
1195
+
1196
+ Public Sub DoSomething()
1197
+ Bar.Foo = 42
1198
+ End Sub
1199
+ " ;
1200
+ var state = Resolve ( code ) ;
1201
+
1202
+ var declaration = state . AllUserDeclarations . Single ( item =>
1203
+ item . DeclarationType == DeclarationType . Variable
1204
+ && item . IdentifierName == "Bar" ) ;
1205
+
1206
+ var usages = declaration . References . Where ( item =>
1207
+ item . ParentScoping . IdentifierName == "DoSomething" ) ;
1208
+
1209
+ Assert . AreEqual ( 1 , usages . Count ( ) ) ;
1210
+ }
1211
+
1212
+ [ TestMethod ]
1213
+ public void GivenField_NamedUnambiguously_InStatementFieldCallResolvesToFieldDeclaration ( )
1214
+ {
1215
+ var code = @"
1216
+ Private Type TestModule1
1217
+ Foo As Integer
1218
+ End Type
1219
+
1220
+ Private Bar As TestModule1
1221
+
1222
+ Public Sub DoSomething()
1223
+ Debug.Print Bar.Foo
1224
+ End Sub
1225
+ " ;
1226
+ var state = Resolve ( code ) ;
1227
+
1228
+ var declaration = state . AllUserDeclarations . Single ( item =>
1229
+ item . DeclarationType == DeclarationType . Variable
1230
+ && item . IdentifierName == "Bar" ) ;
1231
+
1232
+ var usages = declaration . References . Where ( item =>
1233
+ item . ParentScoping . IdentifierName == "DoSomething" ) ;
1234
+
1235
+ Assert . AreEqual ( 1 , usages . Count ( ) ) ;
1236
+ }
1237
+
1238
+ [ TestMethod ]
1239
+ public void GivenField_NamedAmbiguously_FieldAssignmentCallResolvesToFieldDeclaration ( )
1240
+ {
1241
+ var code = @"
1242
+ Private Type TestModule1
1243
+ Foo As Integer
1244
+ End Type
1245
+
1246
+ Private TestModule1 As TestModule1
1247
+
1248
+ Public Sub DoSomething()
1249
+ TestModule1.Foo = 42
1250
+ End Sub
1251
+ " ;
1252
+ var state = Resolve ( code ) ;
1253
+
1254
+ var declaration = state . AllUserDeclarations . Single ( item =>
1255
+ item . DeclarationType == DeclarationType . Variable
1256
+ && item . IdentifierName == item . ComponentName ) ;
1257
+
1258
+ var usages = declaration . References . Where ( item =>
1259
+ item . ParentScoping . IdentifierName == "DoSomething" ) ;
1260
+
1261
+ Assert . AreEqual ( 1 , usages . Count ( ) ) ;
1262
+ }
1263
+
1264
+ [ TestMethod ]
1265
+ public void GivenUDTField_NamedAmbiguously_MemberAssignmentCallResolvesToUDTMember ( )
1266
+ {
1267
+ var code = @"
1268
+ Private Type TestModule1
1269
+ Foo As Integer
1270
+ End Type
1271
+
1272
+ Private TestModule1 As TestModule1
1273
+
1274
+ Public Sub DoSomething()
1275
+ TestModule1.Foo = 42
1276
+ End Sub
1277
+ " ;
1278
+ var state = Resolve ( code ) ;
1279
+
1280
+ var declaration = state . AllUserDeclarations . Single ( item =>
1281
+ item . DeclarationType == DeclarationType . UserDefinedTypeMember
1282
+ && item . IdentifierName == "Foo" ) ;
1283
+
1284
+ var usages = declaration . References . Where ( item =>
1285
+ item . ParentScoping . IdentifierName == "DoSomething" ) ;
1286
+
1287
+ Assert . AreEqual ( 1 , usages . Count ( ) ) ;
1288
+ }
1289
+
1290
+ [ TestMethod ]
1291
+ public void GivenUDTField_NamedAmbiguously_FullyQualifiedMemberAssignmentCallResolvesToUDTMember ( )
1292
+ {
1293
+ var code = @"
1294
+ Private Type TestModule1
1295
+ Foo As Integer
1296
+ End Type
1297
+
1298
+ Private TestModule1 As TestModule1
1299
+
1300
+ Public Sub DoSomething()
1301
+ TestProject1.TestModule1.TestModule1.Foo = 42
1302
+ End Sub
1303
+ " ;
1304
+ var state = Resolve ( code ) ;
1305
+
1306
+ var declaration = state . AllUserDeclarations . Single ( item =>
1307
+ item . DeclarationType == DeclarationType . UserDefinedTypeMember
1308
+ && item . IdentifierName == "Foo" ) ;
1309
+
1310
+ var usages = declaration . References . Where ( item =>
1311
+ item . ParentScoping . IdentifierName == "DoSomething" ) ;
1312
+
1313
+ Assert . AreEqual ( 1 , usages . Count ( ) ) ;
1314
+ }
1315
+
1316
+ [ TestMethod ]
1317
+ public void GivenFullyReferencedUDTFieldMemberCall_ProjectParentMember_ResolvesToProject ( )
1318
+ {
1319
+ var code = @"
1320
+ Private Type TestModule1
1321
+ Foo As Integer
1322
+ End Type
1323
+
1324
+ Private TestModule1 As TestModule1
1325
+
1326
+ Public Sub DoSomething()
1327
+ TestProject1.TestModule1.TestModule1.Foo = 42
1328
+ End Sub
1329
+ " ;
1330
+ var state = Resolve ( code ) ;
1331
+
1332
+ var declaration = state . AllUserDeclarations . Single ( item =>
1333
+ item . DeclarationType == DeclarationType . Project
1334
+ && item . IdentifierName == item . ProjectName ) ;
1335
+
1336
+ var usages = declaration . References . Where ( item =>
1337
+ item . ParentScoping . IdentifierName == "DoSomething" ) ;
1338
+
1339
+ Assert . AreEqual ( 1 , usages . Count ( ) ) ;
1340
+ }
1341
+
1342
+ [ TestMethod ]
1343
+ public void GivenFullyReferencedUDTFieldMemberCall_ModuleParentMember_ResolvesToModule ( )
1344
+ {
1345
+ var code = @"
1346
+ Private Type TestModule1
1347
+ Foo As Integer
1348
+ End Type
1349
+
1350
+ Private TestModule1 As TestModule1
1351
+
1352
+ Public Sub DoSomething()
1353
+ TestProject1.TestModule1.TestModule1.Foo = 42
1354
+ End Sub
1355
+ " ;
1356
+ var state = Resolve ( code ) ;
1357
+
1358
+ var declaration = state . AllUserDeclarations . Single ( item =>
1359
+ item . DeclarationType == DeclarationType . Module
1360
+ && item . IdentifierName == item . ComponentName ) ;
1361
+
1362
+ var usages = declaration . References . Where ( item =>
1363
+ item . ParentScoping . IdentifierName == "DoSomething" ) ;
1364
+
1365
+ Assert . AreEqual ( 1 , usages . Count ( ) ) ;
1366
+ }
1367
+
1368
+ [ TestMethod ]
1369
+ public void GivenFullyReferencedUDTFieldMemberCall_FieldParentMember_ResolvesToVariable ( )
1370
+ {
1371
+ var code = @"
1372
+ Private Type TestModule1
1373
+ Foo As Integer
1374
+ End Type
1375
+
1376
+ Private TestModule1 As TestModule1
1377
+
1378
+ Public Sub DoSomething()
1379
+ TestProject1.TestModule1.TestModule1.Foo = 42
1380
+ End Sub
1381
+ " ;
1382
+ var state = Resolve ( code ) ;
1383
+
1384
+ var declaration = state . AllUserDeclarations . Single ( item =>
1385
+ item . DeclarationType == DeclarationType . Variable
1386
+ && item . IdentifierName == item . ComponentName ) ;
1387
+
1388
+ var usages = declaration . References . Where ( item =>
1389
+ item . ParentScoping . IdentifierName == "DoSomething" ) ;
1390
+
1391
+ Assert . AreEqual ( 1 , usages . Count ( ) ) ;
1392
+ }
1185
1393
}
1186
1394
}
0 commit comments