Commit Graph

3173 Commits

Author SHA1 Message Date
Dave Halter
ff7680c15f Generate the expression_list of a statement in any case.
This is a consequence of being able to have Calls as parents of Names. Otherwise we would have changing Name.parent values.
2014-09-09 12:54:46 +02:00
Dave Halter
740fd0657f Add a goto_assignments test for named params 2014-09-09 00:06:24 +02:00
Dave Halter
0dcb91d236 Add a Definition.is_definition function to be able to check if a name is a definition or not. 2014-09-08 23:44:35 +02:00
Dave Halter
851717a968 Publicize jedi.names and add a first test. 2014-09-08 22:39:47 +02:00
Dave Halter
be85391321 Create a 'jedi.names' function with the proper docstring.
Modelled according the discussion in #477.
2014-09-08 21:43:16 +02:00
Dave Halter
ca536baf9b Last fixes, because of the Name.get_definition change. The recent parser.representation changes are now fully working and we're ready to improve Evaluator.goto again. 2014-09-06 13:23:00 +02:00
Dave Halter
ece9fdf4ae Fixing most of the issues that existed, because of the recent Name.get_definition/Call.name.parent change. 2014-09-06 13:02:52 +02:00
Dave Halter
2e7e2f0a29 Name parents are now Calls (once their statements have generated the Calls).
This makes the goto function more powerful. Also fixes an issue with the deep_ast_copy, that I tried to fix previously, but failed, because I hadn't tested it.
2014-09-06 12:19:07 +02:00
Dave Halter
5a3ee02399 Use ExprStmt pretty much everywhere where it should be used.
ExprStmt is now really a normal statement. All the other statements are from now on considered legacy code. As a side effect this increases the parser pickling version.
2014-09-06 11:13:58 +02:00
Dave Halter
cb84bc0829 Start using ExprStmt. 2014-09-06 10:46:59 +02:00
Dave Halter
f57d9ef675 Rename Name.get_parent_stmt to Name.get_definition, because it's not always a statement. Also start using it in the NameFinder. 2014-09-06 10:43:26 +02:00
Dave Halter
99116cdcb7 Add a Name.get_parent_stmt() function. 2014-09-05 22:26:55 +02:00
Dave Halter
6c07c7acfe Create an ExprStatement class to replace the Statement class in the future and separate array parts of actual statements 2014-09-05 22:21:26 +02:00
Dave Halter
12154fdecf Refactor a few name finder things. 2014-09-05 12:12:29 +02:00
Dave Halter
ba805879b4 Updated helpers.deep_ast_copy. Now the function copies statements in a better way.
Previously statement attributes where scanned like every other objects. Now two statements get priority: _assignment_details and _expression_list. This is necessary if we want to switch towards proper name parents (A Call would be the parent of a name, not a Statement)
2014-09-05 11:49:45 +02:00
Dave Halter
42d6b57599 precedence._is_string -> precedence.is_string 2014-09-04 14:13:26 +02:00
Dave Halter
7b2e11d71b Rewrote sys_path._paths_from_assignment. 2014-09-04 14:12:10 +02:00
Dave Halter
4180005893 Forgot to add the the params in the case of a class in the previous commit. 2014-09-04 12:53:42 +02:00
Dave Halter
06699993f1 Class inheritance definitions shouldn't be params. It's just statements. 2014-09-04 12:28:50 +02:00
Dave Halter
1df025c39d Definitions should not be followed in Evaluator.goto. 2014-09-04 11:55:42 +02:00
Dave Halter
e872d9e073 Script.goto_assignments now always needs a call_path. Otherwise it raises a NotFoundError.
This change makes Jedi's behavior more consistent.
2014-09-04 00:56:58 +02:00
Dave Halter
fb10199f37 Remove search_name and search_name_part from goto returns.
The search_name can be retrieved by checking definitions for it. Definitions should always be names or even better name_parts in case of goto. Therefore we can just get it there.
2014-09-03 23:28:19 +02:00
Dave Halter
f7a1c110ba Fix remaining issues with CompiledName.name change. 2014-09-03 19:47:37 +02:00
Dave Halter
bb5ffe9343 CompiledObject.name returns a Name now, not a string. This is more consistent with the Jedi design and doesn't lead to bugs while ducktyping. 2014-09-03 19:43:21 +02:00
Dave Halter
18204c4c19 By trying to get rid of search_name in usages, we had to fix an issue with imports:
If used like 'follow(is_goto)', it could return a ModuleWrapper instead of a Name, which is what we actually want.
2014-09-03 19:30:00 +02:00
Dave Halter
59578966cf Remove code that is not used anymore from Script._goto 2014-09-03 18:02:20 +02:00
Dave Halter
e2ca11435c Script._goto improvements and documentation. 2014-09-03 17:27:26 +02:00
Dave Halter
95852f5e7f Clarify inner workings of Evaluator.goto 2014-09-03 14:58:24 +02:00
Dave Halter
bcc84820fe Fix issues with unreachable flows.
This benefits static analysis as well as autocompletion: Unreachable code (things like code within 'if 0:') should still be resolveable.
2014-09-03 00:05:37 +02:00
Dave Halter
ea5b98905e Make statement_elements_in_statement work with ListComprehensions, Lambdas and 'except foo as' expressions 2014-09-02 14:52:04 +02:00
Dave Halter
38c71fce3f Added tests for statement_elements_in_statement 2014-09-02 12:10:16 +02:00
Dave Halter
f785aa26dd Additional helper methods, to find all the statement elements that are needed. 2014-09-02 03:26:17 +02:00
Dave Halter
be9e77d7d3 Add a temporary api._names, to make it possible to annotate a full script with types. 2014-09-01 18:10:40 +02:00
Dave Halter
bbf1070ad9 Add a helper function to list all name parts of a given module. 2014-09-01 13:20:01 +02:00
Dave Halter
76d91ba72a Rename fast_parent_copy to deep_ast_copy. 2014-08-22 00:59:46 +02:00
Dave Halter
ed3b507ab7 cleanup 2014-08-22 00:47:08 +02:00
Dave Halter
6ba0b7b81e lower than/greater than operators evaluate to a boolean now. This is not a 100% correct, because it doesn't evaluate __gt__, etc. But that's ok for now. 2014-08-22 00:26:55 +02:00
Dave Halter
039a5ecaf9 Fix issues caused by KeywordStatement, which needs to be copied as well. 2014-08-21 16:51:00 +02:00
Dave Halter
0ef030848d refactor fast_parent_copy, use new_elements_default to hand in a dictionary, that contains all the generated duplicates. 2014-08-21 13:17:33 +02:00
Dave Halter
3cf8bfa8e1 Fix a few tests by either fixing the test cases or adding py__bool__ functions to objects that should have such a method. 2014-08-20 17:28:54 +02:00
Dave Halter
f911050300 Rewrote the isistance implementation, so that it works properly with tuples as well as normal classes. 2014-08-20 16:58:19 +02:00
Dave Halter
2a964d4e48 Also implement the or operator. 2014-08-20 16:28:04 +02:00
Dave Halter
148d17b3be Implementation of the and operation. 2014-08-20 16:21:33 +02:00
Dave Halter
d6dd7cd55e Move process_precedence_element from the Evaluator to the precedence module. 2014-08-20 15:59:37 +02:00
Dave Halter
9abc8a19e7 By adding a py__class__ method to CompiledObject and Class, we Jedi is able to understand isinstance checks, now.
This also includes a CheckAttribute class in evaluatue.compiled, because it's way easier to generalize the AttributeErrors there.
2014-08-20 14:46:18 +02:00
Dave Halter
0e66aef511 Use IterableWrapper in the iterable module to be able to add methods like is_class quickly. 2014-08-20 14:01:41 +02:00
Dave Halter
442a1a1d08 wrap some more values with er.wrap 2014-08-20 13:52:49 +02:00
Dave Halter
c9542cbc04 Start implementing an is_class function that will determine if an object is a class or not in the future. 2014-08-20 11:43:25 +02:00
Dave Halter
7f874620db Start documenting all the py__foo__ methods 2014-08-20 11:31:23 +02:00
Dave Halter
2e949b43bb Ignore FunctionExecutions in old style isinstance checks for now, because it collides with new style isinstance checks. 2014-08-20 11:31:11 +02:00