Dmitry Petrov
8999e5bfe6
psi2ir: support unsigned integer literals
...
NB in FE unsigned integer constants are now represented using signed
integer types (e.g., UInt constant actually holds an Int value).
So, in IR so far we also represent unsigned constant literals as
constant values of corresponding signed types, but with corresponding
unsigned type:
0xFFFF_FFFFu becomes 'CONST Int type=kotlin.UInt value=-1'
2018-06-21 12:32:00 +03:00
Mikhael Bogdanov
c444db90fb
Basic support of source mapping in inliner
2018-06-21 11:18:41 +02:00
Mikhael Bogdanov
83ab2b1d34
Minor. Code clean
2018-06-21 11:18:40 +02:00
Mikhael Bogdanov
7c615eb7ab
Minor. Reformat
2018-06-21 11:18:40 +02:00
Mikhael Bogdanov
3dff3d61f5
Skip generic signature in bridges
2018-06-21 11:18:39 +02:00
Mikhael Bogdanov
0f7dc6e8af
Fix IMPLICIT_COERCION_TO_UNIT
2018-06-21 11:18:38 +02:00
Mikhael Bogdanov
ede751c074
Support more cases in special bridge lowering
2018-06-21 11:18:37 +02:00
Mikhael Bogdanov
64835c1c9c
Generate synthetic instructions in loops to support non standart stack transformation
2018-06-21 11:18:37 +02:00
Mikhael Bogdanov
f6038aafcc
Fix IMPLICIT_NOT_NULL coercion
2018-06-21 11:18:36 +02:00
Mikhael Bogdanov
a4308e983a
Set proper parent for lowered local declaration
2018-06-21 11:18:35 +02:00
Mikhael Bogdanov
c588d22e6a
Don't sort descriptors in DeclarationStubGenerator
...
Sorting adds 30% time to test execution
2018-06-21 11:18:35 +02:00
Alexey Tsvetkov
32b1c42647
Specify root type in non-existent location warning
2018-06-20 23:58:37 +03:00
Denis Zharkov
5c04a302fa
Add additional checks for RestrictsSuspension-marked functions
...
Namely, check that when one calls a restricted function
the reciever used for that calls is obtained exactly from the enclosing
suspend function
#KT-24859 Fixed
2018-06-20 20:00:10 +03:00
Dmitry Petrov
871dacbf6c
Minor: generated tests update
2018-06-20 17:34:05 +03:00
Dmitry Petrov
f956e8d85d
Record special descriptor in REFERENCE_TARGET for type alias object
...
If a type alias is used to reference an object (companion object) as a
qualifier, record FakeCallableDescriptorForTypeAliasObject in
REFERENCE_TARGET. This tells IDE that type alias was used in the file,
thus, if it's imported, such import isn't redundant.
REFERENCE_TARGET is used mostly by IDE and by ClassifierUsageChecker,
which we also have to update to handle qualifiers with
FakeCallableDescriptorForTypeAliasObject in REFERENCE_TARGET.
Rewrite some parts of ClassifierUsageChecker for cleaner interaction.
#KT-21863 Fixed Target versions 1.2.40
2018-06-20 17:16:25 +03:00
Roman Artemev
c0f53f3a4d
Move IrSuspendableExpression and SuspensionPoint from Kotlin/Native to common part
2018-06-20 15:06:00 +03:00
Dmitry Petrov
c312fddb45
Ignore some 'when' subject variable tests in JS_IR be
2018-06-20 14:06:34 +03:00
Dmitry Petrov
a4b5d74ae3
Generate debug information for 'when' subject variable
...
NB debugger tests currently don't support language version or individual
language feature settings.
2018-06-20 14:06:34 +03:00
Dmitry Petrov
a7492e91c9
Check that subject expression is evaluated only once
2018-06-20 14:06:34 +03:00
Dmitry Petrov
6194cfc782
Additional IEEE754-related tests for subject variable in 'when'
2018-06-20 14:06:34 +03:00
Dmitry Petrov
34b76a3718
Support subject variable in specialized code generators for 'when'
2018-06-20 14:06:34 +03:00
Dmitry Petrov
3528405666
Minor: reformat
2018-06-20 14:06:34 +03:00
Dmitry Petrov
b4dc3dc91b
Fix exhaustiveness check for when with subject variable
2018-06-20 14:06:34 +03:00
Dmitry Petrov
6949610dcb
'val' in 'when': IEEE754 equality
2018-06-20 14:06:34 +03:00
Dmitry Petrov
67247ee490
'val' in 'when' subject can't have modifiers (annotations are ok)
2018-06-20 14:06:34 +03:00
Dmitry Petrov
53fd883e2a
Additional parser tests for both subject val and expression in 'when'
2018-06-20 14:06:34 +03:00
Dmitry Petrov
bf083314dd
Support 'when' with subject variable in psi2ir
2018-06-20 14:06:34 +03:00
Dmitry Petrov
d6894091a9
Support 'when' with subject variable in JVM BE
2018-06-20 14:06:34 +03:00
Dmitry Savvinov
148d03e365
Add some data flow analysis tests on when
2018-06-20 14:06:34 +03:00
Dmitry Petrov
ae929d0f08
Handle nested when with subject properly
...
Hack: callee expression for when with subject variable is the subject
variable declaration. This solves the problem that all sub-calls in the
expression are implicitly considered to have a single common lexical
scope (and 'when (val x = ...)' introduces a new lexical scope, which
contains 'x').
2018-06-20 14:06:34 +03:00
Dmitry Petrov
758548603e
Extra tests for when with val in subject
2018-06-20 14:06:34 +03:00
Dmitry Petrov
c691d64ea8
Minor: fix & reformat after rebase
2018-06-20 14:06:34 +03:00
Dmitry Petrov
8aec99f4b5
Fix parsing variable declaration in when subject
...
- parse destructuring declarations
- parse annotations on variable declaration in when subject
2018-06-20 14:06:34 +03:00
Dmitry Petrov
091b935c2d
Introduce separate callee expression for when with subject variable
...
'Subject.Error' is redundant.
'Subject.None' can be an object.
'Subject#dataFlowValue' can be a lateinit property.
TODO: fix
- parsing local extension properties in 'when' subject
- parsing destructuring declarations in 'when' subject
- non-completed calls in nested 'when' with subject variable
- non-completed calls for subject variable in 'in' pattern
2018-06-20 14:06:34 +03:00
Dmitry Petrov
a76bf57694
Minor: remove redundant cast
2018-06-20 14:06:34 +03:00
Dmitry Petrov
5f0c9490bb
Add test for smart cast on a value bound to when subject variable
...
E.g.:
when (val y = x?.foo()) {
null -> ...
else -> ... // 'x' is also non-null here
}
2018-06-20 14:06:34 +03:00
Dmitry Petrov
0a0bc67e8a
Add test for UNUSED_VALUE on when subject variable
2018-06-20 14:06:34 +03:00
Dmitry Petrov
c20c1abb68
Add test for VAL_REASSIGNMENT on when subject variable
2018-06-20 14:06:34 +03:00
Dmitry Petrov
f6d446da47
It's ok to have no subject expression
2018-06-20 14:06:34 +03:00
Dmitry Petrov
7bc89b8871
Report error on illegal variable declaration in when subject
2018-06-20 14:06:34 +03:00
Dmitry Petrov
4fe894c03d
Minor: extract variable subject processing to a separate fun
2018-06-20 14:06:34 +03:00
Dmitry Petrov
098d3eb235
Make smart casts work with variable declared in when subject
2018-06-20 14:06:34 +03:00
Dmitry Petrov
1eeafc2d0e
Resolve variable declaration in 'when' subject
2018-06-20 14:06:34 +03:00
Mikhail Zarechenskiy
fcacdc1fc5
Fix bridge methods generation when inline class types are used
2018-06-19 20:09:35 +03:00
Mikhail Zarechenskiy
f326fd66be
Propagate KotlinType into if expression codegen for inline classes
2018-06-19 19:54:22 +03:00
Mikhail Zarechenskiy
c8c943e5fe
[NI] Use context for relevant nested call to run call checkers
...
#KT-24808 Fixed
2018-06-19 19:54:21 +03:00
Roman Artemev
f69bd54d6c
[JS IR BE] Update test data
2018-06-19 17:09:31 +03:00
Roman Artemev
b65443dd25
[JS IR BE] Support try-catch-finally in new backend
2018-06-19 17:08:14 +03:00
Pavel V. Talanov
5063a4ce3d
JavaElementFinder: revert to using ContainerUtil.quicksort
...
Fix comparator contract violated exception
Scopes inherited from LibraryScopeBase violate the comparator contract
2018-06-19 13:40:23 +02:00
Alexander Udalov
e689733f69
Revert "Map Kotlin TYPE target to Java TYPE_USE in bytecode"
...
This reverts commit d122406dca .
See KT-23857
#KT-24952 Fixed
2018-06-19 12:08:18 +02:00