public async Task ClassDefinition() { var code = @"class ClassBase(object): pass class ClassDerived(ClassBase): pass obj = ClassDerived() obj "; using (var helper = new NavigableHelper(code, Version)) { // ClassBase await helper.CheckDefinitionLocations(57, 9, Location(1, 1), Location(1, 7)); // ClassDerived await helper.CheckDefinitionLocations(88, 12, Location(4, 1), Location(4, 7)); // object await helper.CheckDefinitionLocations(16, 6, null); // obj await helper.CheckDefinitionLocations(82, 3, Location(7, 1)); // obj await helper.CheckDefinitionLocations(104, 3, Location(7, 1)); } }
public async Task NamedArgumentDefinition() { var code = @"class MyClass(object): def my_class_func1(self, param2 = True): pass def my_class_func2(self, param3 = True): pass def my_func(param3 = True): pass def different_func(): pass my_func(param3=False) obj = MyClass() obj.my_class_func1(param2=False) obj.my_class_func2(param3=False) "; using (var helper = new NavigableHelper(code, Version)) { // param3 in my_func(param3=False) await helper.CheckDefinitionLocations(232, 6, Location(8, 13)); // param2 in obj.my_class_func1(param2=False) await helper.CheckDefinitionLocations(285, 6, Location(2, 30)); // param3 in obj.my_class_func2(param3=False) await helper.CheckDefinitionLocations(319, 6, Location(5, 30)); } }
public async Task ParameterDefinition() { var code = @"def my_func(param1, param2 = True): print(param1) print(param2) my_func(1) my_func(2, param2=False) "; using (var helper = new NavigableHelper(code, Version)) { // param1 await helper.CheckDefinitionLocations(12, 6, Location(1, 13)); await helper.CheckDefinitionLocations(47, 6, Location(1, 13)); // param2 await helper.CheckDefinitionLocations(20, 6, Location(1, 21)); await helper.CheckDefinitionLocations(66, 6, Location(1, 21)); await helper.CheckDefinitionLocations(100, 6, Location(1, 21)); // my_func await helper.CheckDefinitionLocations(4, 7, Location(1, 1), Location(1, 5)); await helper.CheckDefinitionLocations(77, 7, Location(1, 1), Location(1, 5)); await helper.CheckDefinitionLocations(89, 7, Location(1, 1), Location(1, 5)); } }
public async Task NamedArgumentDefinition() { var code = @"class MyClass(object): def my_class_func1(self, param2 = True): pass def my_class_func2(self, param3 = True): pass def my_func(param3 = True): pass my_func(param3=False) obj = MyClass() obj.my_class_func1(param2=False) obj.my_class_func2(param3=False) "; using (var helper = new NavigableHelper(code, Version)) { // param3 in my_func(param3=False) await helper.CheckDefinitionLocation(197, 6, Location(8, 13)); // BUG: can't go to definition // param2 in obj.my_class_func1(param2=False) await helper.CheckDefinitionLocation(250, 6, Location(2, 30)); // BUG: goes to my_func instead of my_class_func2 // param3 in obj.my_class_func2(param3=False) await helper.CheckDefinitionLocation(284, 6, Location(5, 30)); } }
public async Task PropertyDefinition() { var code = @"class MyClass(object): _my_attr_val = 0 @property def my_attr(self): return self._my_attr_val @my_attr.setter def my_attr(self, val): self._my_attr_val = val obj = MyClass() obj.my_attr = 5 print(obj.my_attr) print(obj._my_attr_val) "; using (NavigableHelper helper = new NavigableHelper(code, Version)) { // my_attr await helper.CheckDefinitionLocations(71, 7, Location(4, 5), Location(8, 5), Location(9, 9)); await helper.CheckDefinitionLocations(128, 7, Location(4, 5), Location(8, 5), Location(9, 9)); await helper.CheckDefinitionLocations(152, 7, Location(4, 5), Location(8, 5), Location(9, 9)); await helper.CheckDefinitionLocations(229, 7, Location(4, 5), Location(5, 9), Location(8, 5), Location(9, 9), Location(13, 5)); await helper.CheckDefinitionLocations(252, 7, Location(4, 5), Location(5, 9), Location(8, 5), Location(9, 9), Location(13, 5)); // val await helper.CheckDefinitionLocations(166, 3, Location(9, 23)); await helper.CheckDefinitionLocations(201, 3, Location(9, 23)); // _my_attr_val await helper.CheckDefinitionLocations(28, 12, Location(2, 5)); await helper.CheckDefinitionLocations(107, 12, Location(2, 5), Location(10, 14)); await helper.CheckDefinitionLocations(186, 12, Location(2, 5), Location(10, 14)); await helper.CheckDefinitionLocations(272, 12, Location(2, 5), Location(10, 14)); // self await helper.CheckDefinitionLocations(79, 4, Location(1, 1)); await helper.CheckDefinitionLocations(102, 4, Location(1, 1)); await helper.CheckDefinitionLocations(160, 4, Location(1, 1)); await helper.CheckDefinitionLocations(181, 4, Location(1, 1)); } }
public async Task ModuleDefinition() { var code = @"import os "; using (var helper = new NavigableHelper(code, Version)) { // os await helper.CheckDefinitionLocations(7, 2, ExternalLocation(1, 1, "os.py"), Location(1, 8)); } }
public async Task VariableDefinition() { var code = @"my_var = 0 my_var = 1 res = my_var * 10 "; using (var helper = new NavigableHelper(code, Version)) { // 2 definitions for my_var await helper.CheckDefinitionLocations(30, 6, Location(1, 1), Location(2, 1)); } }
public async Task ModuleImportDefinition() { var code = @"import sys sys.version "; using (var helper = new NavigableHelper(code, Version)) { // sys await helper.CheckDefinitionLocations(14, 3, Location(1, 8)); // version await helper.CheckDefinitionLocations(18, 7, null); } }