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.
Dave Halter2014-08-22 00:26:55 +02:00
039a5ecaf9
Fix issues caused by KeywordStatement, which needs to be copied as well.
Dave Halter2014-08-21 16:51:00 +02:00
0ef030848d
refactor fast_parent_copy, use new_elements_default to hand in a dictionary, that contains all the generated duplicates.
Dave Halter2014-08-21 13:17:33 +02:00
3cf8bfa8e1
Fix a few tests by either fixing the test cases or adding py__bool__ functions to objects that should have such a method.
Dave Halter2014-08-20 17:28:54 +02:00
f911050300
Rewrote the isistance implementation, so that it works properly with tuples as well as normal classes.
Dave Halter2014-08-20 16:58:19 +02:00
148d17b3be
Implementation of the and operation.
Dave Halter2014-08-20 16:21:33 +02:00
d6dd7cd55e
Move process_precedence_element from the Evaluator to the precedence module.
Dave Halter2014-08-20 15:59:37 +02:00
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.
Dave Halter2014-08-20 14:46:18 +02:00
0e66aef511
Use IterableWrapper in the iterable module to be able to add methods like is_class quickly.
Dave Halter2014-08-20 14:01:41 +02:00
c9542cbc04
Start implementing an is_class function that will determine if an object is a class or not in the future.
Dave Halter2014-08-20 11:43:25 +02:00
7f874620db
Start documenting all the py__foo__ methods
Dave Halter2014-08-20 11:31:23 +02:00
2e949b43bb
Ignore FunctionExecutions in old style isinstance checks for now, because it collides with new style isinstance checks.
Dave Halter2014-08-20 11:31:11 +02:00
09ca47fa93
Introduce a dedicated isinstance function implementation.
Dave Halter2014-08-19 23:57:59 +02:00
3189ba7662
Add type check to jedi.Interpreter() namespace argument and remove default value
Phillip Berndt2014-08-18 17:22:11 +02:00
49163e135c
flow_analysis test for isinstance as well as and/or operations.
Dave Halter2014-08-19 01:03:14 +02:00
77673ba986
Add an optional param 'parent' to parser.representation.Simple, which simplifies some calls to that superclass.
Dave Halter2014-08-19 00:30:17 +02:00
8bde89cc58
Fix the remaining issues with the StatementElement.next refactoring.
Dave Halter2014-08-19 00:12:14 +02:00
8006d6f190
Change implementation of StatementElement. Instead of having both next and execution as attributes, we now only have next, because it's an execution if there's an array.
Dave Halter2014-08-18 22:25:55 +02:00
7619bf27d1
Simplify goto_definition in case it done on a function.
Dave Halter2014-08-18 15:00:14 +02:00
00d15da143
refactor search_call_signatures. Now we don't need to set Call.next.parent in a strange way anymore and the whole thing seems to be more logical.
Dave Halter2014-08-18 14:51:38 +02:00
542648f5a0
first step in refactoring call_signature_array_for_pos, use original_call as a param.
Dave Halter2014-08-18 13:39:01 +02:00
9f38f10366
fix tests. Operators should not equal to other operators with a different position. or even parent.
Dave Halter2014-08-18 13:12:39 +02:00
1d812c2414
Use the "wrong" parents again for next/execution in StatementElement. This is important for call_signature lookups. We might still be able to change this somewhere in time.
Dave Halter2014-08-18 11:22:38 +02:00
fd90dfc4f5
Use a LazyName for module attributes, they should only be generated if needed.
Dave Halter2014-08-15 15:20:40 +02:00
89ab0ba137
Fix fast_parent_copy. The caching is now more solid than before (and doesn't produce weird side effects. This also solves an issue with Lambdas. However, by fixing all of this we have broken some other things.
Dave Halter2014-08-15 01:55:43 +02:00
1965469050
fast_parent_copy should also change the parent of NameParts.
Dave Halter2014-08-14 23:47:22 +02:00
1f9e7ddff8
Remove code in the parser that didn't make sense.
Dave Halter2014-08-14 13:24:26 +02:00
425290aa8f
Fix an issue with partial keyword inputs.
Dave Halter2014-08-14 12:24:54 +02:00
1540ac89f8
Implement the descriptor protocoll properly for instances.
Dave Halter2014-08-14 12:15:48 +02:00
f743619fb8
Tests for conditions in descriptors.
Dave Halter2014-08-13 14:49:42 +02:00
ec7b3bf433
refactor py_base to py__bases__, because that's the general naming schema
Dave Halter2014-08-13 14:34:37 +02:00
cd433adf84
Speedup object lookup even further in classes.
Dave Halter2014-08-13 14:17:57 +02:00
9702c4cdc6
Restructure the way we get self arguments (probably reduces executions of object).
Dave Halter2014-08-13 14:07:09 +02:00
cf32e15f65
Remove the old 'is not' logic to detect if not instances and use them to do branch predictions. This is not necessary anymore, since we now support that in a more general way (flow_analysis).
Dave Halter2014-08-12 18:14:03 +02:00
8ed89e8245
implement !=, ==, is, is not operators to work in if statements (they also work in in non if contexts and return a bool value.), includes tests.
Dave Halter2014-08-12 17:59:09 +02:00
6f018e4884
introduce maybe_docstr in parse_statement, which should have been introduced way earlier.
Dave Halter2014-08-12 17:13:14 +02:00
fb1dba269a
re-enable the interpretation of the None keyword
Dave Halter2014-08-12 14:38:56 +02:00
469988be9c
actually add tests for the flow analysis of variables.
Dave Halter2014-08-12 09:57:00 +02:00
968bc45314
even tests should not suffer too much from side effects.
Dave Halter2014-08-12 01:46:07 +02:00
33e5a3280a
Remove IsScope in favor of an is_scope function. This function was partially implemented anway. Now we've also added a function called 'get_parent_scope', to make it easy to get a scope of a Call, Statement, whatever.
Dave Halter2014-08-12 01:19:19 +02:00
1865284fa9
fix the interpreter (previously broken by flow analysis)
Dave Halter2014-08-12 00:19:20 +02:00
242072976a
use py__mro__ in a classes scope_names_generator
Dave Halter2014-08-11 20:59:29 +02:00
526af7ccbe
settings should not be affected by exceptions.
Dave Halter2014-08-11 17:27:40 +02:00
f1711f8f9c
possible direction of branch checks for name resolution.
Dave Halter2014-08-10 13:17:37 +02:00
483f5c14ee
Listeneres should be removed even in exception cases. Do a 'finally' cleanup.
Dave Halter2014-08-07 16:27:42 +02:00
01bdd1e4fa
Test fixes and for loops need to be handled a awell in flow_analysis.
Dave Halter2014-08-07 15:51:41 +02:00
0ae9e520c1
flow analysis working for elif statements (even in combination with else)
Dave Halter2014-08-07 12:15:25 +02:00
743d064e6d
exception while using else as a scope
Dave Halter2014-08-07 12:10:31 +02:00
ee65764c3a
more complicated logic working with else
Dave Halter2014-08-07 12:02:08 +02:00
d94a70b524
fix a logic issue in the flow_analysis.Status.__and__
Dave Halter2014-08-07 03:02:40 +02:00
c44168f7ad
add a Flow.previous attribute to be able to access the if flow from an else clause.
Dave Halter2014-08-05 11:17:18 +02:00
54dce0e3b2
fix strange issues of Python's std lib tokenizer, might be in there as well (not sure, cause I modified a lot). fixes#449Dave Halter2014-08-04 16:47:36 +02:00
2c0a46fafe
Fix an issue with CallSignatures: If used in a longer statement, it could happen that parts of the statement was still evaluated, but the call signature is only valid at the cursor.
Dave Halter2014-07-31 17:47:56 +02:00
7b4a188948
fix a few small issues that remained in the tests
Dave Halter2014-07-31 17:34:35 +02:00
59b8c6b015
CompiledObjects should execute everything when reading the return information from docstring (because it's always types, not values)
Dave Halter2014-07-31 17:16:24 +02:00
332a16a27e
elements in tuples/lists in docstrings were not executed.
Dave Halter2014-07-31 17:13:56 +02:00
d09279e0ad
change tests that provided wrong instance information
Dave Halter2014-07-31 15:16:24 +02:00
50fa3a732d
actually start checking if the integration tests are instances on both sides of the comparison. This wasnt necessary for just autocompletion, but it's way more important now.
Dave Halter2014-07-31 14:58:32 +02:00
d899f69686
simplify a lot of the current InstanceElement behavior, because we know now, that there's either a Statement or a Function inside (or maybe some other parser objects like an Array.
Dave Halter2014-07-31 13:41:10 +02:00
0fbd5efefd
wrap instance element creation so that it only contains functions and statements, not CompiledObject or Instance.
Dave Halter2014-07-31 13:16:11 +02:00
870abe73d4
Calling an InstanceElement of an Instance of CompiledObject doesn't raise an error anymore. Yes, it's really that complicated.
Dave Halter2014-07-30 19:49:41 +02:00
7bd76022bf
get rid of the whole is_callable stuff, because now we can just check for hasattr(obj, 'py__call__')
Dave Halter2014-07-30 15:50:47 +02:00
e58dc0a3d9
simplify evaluator.execute, because now everything is using py__call__
Dave Halter2014-07-30 15:40:10 +02:00
373ff2c45a
fix most issues related to the py__call__ stuff and generalize it.
Dave Halter2014-07-30 15:23:41 +02:00
1e6a950aec
further progress in changing to py__call__
Dave Halter2014-07-30 14:40:56 +02:00
ccd304bcb7
start switching to a more python similar approach of naming, start by naming execution stuff py__call__
Dave Halter2014-07-30 14:06:32 +02:00
07d0a43f7e
Add preceding whitespace collection to tokenizer
Joel Wright2014-07-30 11:59:20 +01:00
196afaacbf
always operate on class in super and not on an instance. that's the proper way.
Dave Halter2014-07-30 11:34:27 +02:00
e81749bbe1
Merge branch 'dev' of github.com:davidhalter/jedi into dev
Dave Halter2014-07-30 11:27:46 +02:00
3c92d175da
using super() in actual executed classes wasn't possible. fixes#421Dave Halter2014-07-30 11:27:27 +02:00
53671bca84
replace get_super_classes with py_bases
Dave Halter2014-07-30 10:54:39 +02:00