Dmitry Savvinov
5cb949ad7f
Fix language features in tests for gradual migration to 1.3 (part 2)
...
In 1.3, due to changes in language, testdata for some tests can be
different from 1.2
We want to simlultaneously test both versions, so instead of fixing
language version in such tests, we split them into two: one with fixed
1.2, another with fixed 1.3
2018-07-05 10:42:49 +03:00
Alexander Udalov
6e410cb182
Make TypeConstructor.isFinal return false for enums
...
The reason is that before dc02b2e3ab and 8a0dcca957 ,
TypeConstructor.isFinal for some class descriptors
(DeserializedClassDescriptor, LazyJavaClassDescriptor,
MutableClassDescriptor) were implemented as `isFinalClass` (which is
`modality == FINAL && kind != ENUM_CLASS`), and all others as
`modality == FINAL` or simply true/false. This led to differences in
behavior depending on the exact instance of the class descriptor.
Now that TypeConstructor.isFinal is always `modality == FINAL`, some
tests (PseudoValueTestGenerated) fail because the finality of some type
constructors changed and these tests render final vs non-final type
constructors differently.
In this commit, TypeConstructor.isFinal is now made to behave safer,
i.e. considering enum class type constructor to be non-final (as was the
case earlier for some ClassDescriptor instances). Some diagnostics might
disappear (e.g. FINAL_UPPER_BOUND) but it doesn't look like a big deal
2017-10-18 12:45:45 +02:00
Denis Zharkov
edbf360852
Do not render trivial variables in DataFlow tests
...
The reason is that while there are optimizations for them
definition of their state is both rather simple and may be
confusing in testData
2017-10-02 10:04:16 +03:00
Denis Zharkov
477aeef90c
Update test data for rendered CFA results after optimizations
2017-10-02 10:04:16 +03:00
Denis Zharkov
59f2ba98a6
Avoid creating SimpleType instances for default type
2017-07-20 10:53:09 +03:00
Denis Zharkov
02b40326cc
Fix incorrect coroutines codegen behavior
...
If all the suspension calls in a suspend function were "hidden"
under the for-convention (iterator/next/hasNext) calls,
control-flow didn't find them, thus supposing that there is no
suspension points and there is no need to generate a coroutine state machine
The solution is to add relevant calls to CFG
#KT-15824 Fixed
2017-01-25 13:54:01 +03:00
Mikhail Glukhikh
b81268cca1
Control-flow analysis: do-while scope is ended after condition but before jump #KT-15334 Fixed
2017-01-10 17:57:43 +03:00
Nikolay Krasko
08d628537c
Assign trailing and preceding whitespaces to lambda block until the last comment in parser
2016-10-27 14:26:10 +03:00
Mikhail Glukhikh
a19d178867
Initialization analysis : more accurate handling of non-local variables while merging data #KT-14304 Fixed
2016-10-20 19:52:44 +03:00
Valentin Kipyatkov
8baa9ba1de
No parameter names in type of lambda expression and anonymous function
2016-10-11 23:38:54 +03:00
Valentin Kipyatkov
41ee06ec96
Use parameter names in DescriptorRenderer
2016-10-11 23:38:49 +03:00
Mikhail Glukhikh
f95dcad179
CFA minor: retain initialization state while analyzing variable declaration
...
(cherry picked from commit c89f4db)
2016-09-29 15:57:01 +03:00
Mikhail Glukhikh
436b0ec873
CFA merge for definition / initialization : more accurate handling of unknown variables #KT-13969 Fixed
...
(cherry picked from commit 4a96589)
2016-09-29 15:56:47 +03:00
Mikhail Glukhikh
f8039249c6
CFA: additional jumps to catch / finally generated in the end of try / before exits from try #KT-5469 Fixed
...
Also #KT-13612 Fixed
(cherry picked from commit 7c188b3)
2016-08-31 19:28:09 +03:00
Mikhail Glukhikh
6a9d058db4
UNUSED_VALUE is now reported on expression only if this expression is unused in all (e.g. finally) branches #KT-9825 Fixed
...
(cherry picked from commit aac8e94)
2016-08-31 19:28:00 +03:00
Ilya Gorbunov
58a010464a
Exception typealiases rendering in test output (CFG)
2016-08-17 12:40:50 +03:00
Mikhail Glukhikh
35446037bb
UNINITIALIZED_ENUM_ENTRY compiler warning introduced #KT-2349 Fixed
...
(cherry picked from commit 76ac6d1)
2016-08-08 17:47:56 +03:00
Mikhail Glukhikh
d24528f6bb
Control flow analysis: nested finally blocks now appear in correct order in CFG #KT-4764 Fixed
2016-04-22 15:16:57 +03:00
Mikhail Glukhikh
b975b7d26e
More accurate CFG for local class constructors (now they are not considered unconditionally executed) #KT-10042 Fixed
2016-03-23 15:04:05 +03:00
Mikhail Glukhikh
b805ce06c2
CFG exhaustive when else instruction for KT-8700
2015-12-26 10:46:01 +03:00
Mikhail Glukhikh
ea3a65d0b8
Additional tests for KT-10243
2015-12-02 18:14:59 +03:00
Mikhail Glukhikh
fe13f39de9
Use of uninitialized variables in lambdas / object literals / local functions is forbidden now #KT-4475 Fixed
...
Local declarations CFA: variable initialization information before them is now taken into account
2015-11-17 18:21:09 +03:00
Stanislav Erokhin
ff00bde607
Removed dispatch receiver parameter for SyntheticFieldDescriptor
2015-10-27 15:36:38 +03:00
Mikhail Glukhikh
d6988ad69e
Get rid of FIELD_IDENTIFIER at syntax level, two errors dropped, a set of tests fixed / deleted #KT-9539 Fixed
2015-10-21 16:36:55 +03:00
Denis Zharkov
73799e2c3c
Replace deprecated lambda syntax in testData
...
It's done with similar constructions where possible trying to preserve
intended behavior.
Some usages are removed because they test exactly the feature that
we are going to drop soon.
2015-09-25 08:29:25 +03:00
Mikhail Glukhikh
285d5d06c7
More precise value reassignment analysis. #KT-7418 Fixed. #KT-6902 Fixed.
...
Variable can now be "exactly initialized", "may be initialized" and "not initialized".
A set of relevant tests. Some fixed tests.
2015-09-02 12:07:18 +03:00
Alexey Sedunov
3d3b5591e1
Control-Flow: Improve debug text of ReadValueInstruction
2015-05-26 19:28:09 +03:00
Dmitry Jemerov
4bdf598bfe
compiler testdata: s/trait/interface
2015-05-12 19:43:17 +02:00
Dmitry Jemerov
f93eeeb563
fix tests by adding missing 'init' keywords to testdata
2015-04-29 14:07:05 +02:00
Denis Zharkov
7d963e8e07
Differ this/non-this instances for vars initialization in class
...
When deal with constructed object (not this) treat it like it's fully initialized.
Otherwise (this or access with no receiver) access instruction
should be handled as it was before.
#KT-6788 Fixed
#KT-4126 Fixed
2015-03-11 17:45:25 +03:00
Svetlana Isakova
7a5124215a
Updated test data for Array<out T> vararg type
2014-12-12 23:08:28 +03:00
Alexey Sedunov
a3a0edca58
Pseudocode: Drop CompilationErrorInstruction
2014-10-14 01:59:43 +04:00
Svetlana Isakova
976d5ab030
Pseudocode: don't write full label name when jump on it
2014-09-07 01:04:00 +04:00
Svetlana Isakova
61dc110cc7
Report 'break or continue outside a loop'
...
for break/continue outside a loop body (e.g. in loop condition)
#KT-5724 Fixed
2014-09-07 01:03:57 +04:00
Svetlana Isakova
0b4f313b6d
Jump on 'continue' to condition entry points for all loops
2014-09-05 18:31:53 +04:00
Svetlana Isakova
3d7c22f242
Added exact label names for labels
2014-09-05 18:31:53 +04:00
Alexey Sedunov
77bbf8f73b
Pseudocode: Generate fake values for Unit/Nothing-typed expressions
2014-07-28 13:07:29 +04:00
Alexey Sedunov
b0bf11c51e
Pseudocode: Consume value of true condition in while-loop
2014-07-28 13:04:01 +04:00
Alexey Sedunov
487e7f2a91
Pseudocode: Replace {<: Any?} type predicate with *
2014-07-11 19:13:52 +04:00
Alexey Sedunov
4707f4a5e9
Pseudocode: Add debug information to magic instructions
2014-07-11 19:13:49 +04:00
Alexey Sedunov
0a8fa404bf
Pseudocode: Generate additional returns for implicit return values (lambdas, functions with expression bodies)
2014-07-11 19:13:26 +04:00
Alexey Sedunov
1c75a5f642
Pseudocode: Generate instructions for superclass constructor calls. Consume value of delegate expression in the by-clause
2014-07-11 19:13:21 +04:00
Svetlana Isakova
aa26db0538
Updated tests for control flow: call instruction stores call element
...
instead of callee expression
2014-07-08 14:57:38 +04:00
Alexey Sedunov
f226d99d36
Pseudocode: Add valued instructions and unbound values to AbstractPseudoValueTest
2014-06-26 13:06:23 +04:00
Alexey Sedunov
5e2c2b4eca
Pseudocode: Implement computation of expected type predicates
2014-06-23 19:32:25 +04:00
Svetlana Isakova
9480907514
Mark some expressions after processing their components
...
when it's semantically correct
Expressions: calls, 'for' loops, elvis operators
It's significant for reporting 'unreachable code' correctly
2014-06-21 12:26:32 +04:00
Alexey Sedunov
45bd3a520e
Pseudocode: Generate pseudo-values for implicit receivers
2014-06-19 22:04:45 +04:00
Alexey Sedunov
168b32920b
Pseudocode: Do not bind call value to callee expressions
2014-06-19 22:04:44 +04:00
Alexey Sedunov
4a5d2e6728
Add tests for element -> pseudo-value mapping
2014-06-03 18:17:07 +04:00
Alexey Sedunov
d2c055e9da
Pseudocode: Introduce pseudo-value analysis
2014-06-03 18:17:05 +04:00