Dave Halter
fd90dfc4f5
Use a LazyName for module attributes, they should only be generated if needed.
2014-08-15 15:20:40 +02:00
Dave Halter
868dab4f51
small debug change
2014-08-15 02:26:13 +02:00
Dave Halter
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.
2014-08-15 01:55:43 +02:00
Dave Halter
1965469050
fast_parent_copy should also change the parent of NameParts.
2014-08-14 23:48:27 +02:00
Dave Halter
1f9e7ddff8
Remove code in the parser that didn't make sense.
2014-08-14 13:24:26 +02:00
Dave Halter
425290aa8f
Fix an issue with partial keyword inputs.
2014-08-14 12:25:00 +02:00
Dave Halter
1540ac89f8
Implement the descriptor protocoll properly for instances.
2014-08-14 12:15:48 +02:00
Dave Halter
f743619fb8
Tests for conditions in descriptors.
2014-08-13 14:49:42 +02:00
Dave Halter
ec7b3bf433
refactor py_base to py__bases__, because that's the general naming schema
2014-08-13 14:34:37 +02:00
Dave Halter
cd433adf84
Speedup object lookup even further in classes.
2014-08-13 14:17:57 +02:00
Dave Halter
9702c4cdc6
Restructure the way we get self arguments (probably reduces executions of object).
2014-08-13 14:07:09 +02:00
Dave Halter
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).
2014-08-12 18:14:03 +02:00
Dave Halter
eeac77d360
Also support the not operator.
2014-08-12 18:09:59 +02:00
Dave Halter
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.
2014-08-12 17:59:19 +02:00
Dave Halter
6f018e4884
introduce maybe_docstr in parse_statement, which should have been introduced way earlier.
2014-08-12 17:13:14 +02:00
Dave Halter
fb1dba269a
re-enable the interpretation of the None keyword
2014-08-12 14:38:56 +02:00
Dave Halter
469988be9c
actually add tests for the flow analysis of variables.
2014-08-12 09:57:00 +02:00
Dave Halter
968bc45314
even tests should not suffer too much from side effects.
2014-08-12 01:46:07 +02:00
Dave Halter
6b7ce590fa
Simplify get_parent_scope
2014-08-12 01:37:58 +02:00
Dave Halter
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.
2014-08-12 01:19:19 +02:00
Dave Halter
1865284fa9
fix the interpreter (previously broken by flow analysis)
2014-08-12 00:19:20 +02:00
Dave Halter
242072976a
use py__mro__ in a classes scope_names_generator
2014-08-11 23:53:45 +02:00
Dave Halter
526af7ccbe
settings should not be affected by exceptions.
2014-08-11 17:27:40 +02:00
Dave Halter
f1711f8f9c
possible direction of branch checks for name resolution.
2014-08-10 13:17:37 +02:00
Dave Halter
483f5c14ee
Listeneres should be removed even in exception cases. Do a 'finally' cleanup.
2014-08-07 16:27:57 +02:00
Dave Halter
01bdd1e4fa
Test fixes and for loops need to be handled a awell in flow_analysis.
2014-08-07 15:51:41 +02:00
Dave Halter
0ae9e520c1
flow analysis working for elif statements (even in combination with else)
2014-08-07 15:18:30 +02:00
Dave Halter
743d064e6d
exception while using else as a scope
2014-08-07 12:10:31 +02:00
Dave Halter
ee65764c3a
more complicated logic working with else
2014-08-07 12:02:08 +02:00
Dave Halter
d94a70b524
fix a logic issue in the flow_analysis.Status.__and__
2014-08-07 03:02:40 +02:00
Dave Halter
b7151c1ef9
add a first flow analysis test
2014-08-06 23:35:30 +02:00
Dave Halter
138fa1b4de
deletion of returns from SCOPE_CONTENTS was wrong.
2014-08-06 22:42:38 +02:00
Dave Halter
e7e7bd29e8
fix generator tests (multiple yields must be called with an if random.
2014-08-06 12:45:38 +02:00
Dave Halter
23c39eff9a
fix lambda issues
2014-08-06 12:40:08 +02:00
Dave Halter
e3bb0ccc2e
fix a keyword statement issue
2014-08-06 12:10:36 +02:00
Dave Halter
15ec0a77fe
a first very simple implementation of reachable/unreachable return statements.
2014-08-05 17:02:16 +02:00
Dave Halter
f5e49e3218
flow analysis preparation
2014-08-05 12:06:58 +02:00
Dave Halter
c44168f7ad
add a Flow.previous attribute to be able to access the if flow from an else clause.
2014-08-05 11:17:18 +02:00
Dave Halter
54dce0e3b2
fix strange issues of Python's std lib tokenizer, might be in there as well (not sure, cause I modified a lot). fixes #449
2014-08-04 16:47:36 +02:00
Dave Halter
b2b4827ce3
moved test_token to test_tokenize
2014-08-04 16:25:33 +02:00
Dave Halter
cba100a801
test for #414 which doesn't seem to be failing anymore.
2014-08-04 16:08:47 +02:00
Dave Halter
625e88e851
isinstance checks now also give you type hints in class contexts, fixes #241 .
2014-08-04 02:11:30 +02:00
Dave Halter
0a0673e87c
refactoring in dynamic param searching
2014-08-04 01:39:05 +02:00
Dave Halter
7bba12e8c5
comments
2014-08-03 23:00:32 +02:00
Dave Halter
6e5d80a6b2
builtins shouldn't be unique if called by compiled.create
2014-08-01 15:51:59 +02:00
Dave Halter
68cecad996
tests for py__mro__
2014-08-01 15:50:18 +02:00
Dave Halter
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.
2014-07-31 17:47:56 +02:00
Dave Halter
7b4a188948
fix a few small issues that remained in the tests
2014-07-31 17:34:35 +02:00
Dave Halter
59b8c6b015
CompiledObjects should execute everything when reading the return information from docstring (because it's always types, not values)
2014-07-31 17:16:24 +02:00
Dave Halter
332a16a27e
elements in tuples/lists in docstrings were not executed.
2014-07-31 17:13:56 +02:00