Dmitry Petrov
3bbd8979e4
KT-9670: optimize Class <-> KClass wrapping/unwrapping as a special case of boxing/unboxing.
...
NB doesn't work for arrays of classes.
2016-03-04 10:14:21 +03:00
Alexander Udalov
647e188a08
Migrate bytecode text tests to multi-file framework
...
Get rid of BytecodeTextMultifileTestGenerated
2016-03-02 15:44:28 +03:00
Denis Zharkov
36e84ff23a
Minor. Add tests for obsolete issues
...
#KT-8900 Obsolete
#KT-8901 Obsolete
2016-02-25 08:31:58 +03:00
Denis Zharkov
914447b7eb
Do not treat uninitialized value as a reason to retain boxing
...
See testData/simpleUnitializedMerge.kt
On exit from `if` we merge value in variable with slot 1 (x):
- from `if` body we get BoxedBasicValue
- from outer block we get UNITIALIZED_VALUE
So we just suppose `x` is unitialized after `if`
and there's no need to mark BoxedValue as unsafe to remove
because it's anyway can't be used after `if`
#KT-6842 Fixed
2016-02-25 08:31:19 +03:00
Michael Bogdanov
0283fea835
Optimize recursive string concatenation
2016-02-17 16:53:19 +03:00
Michael Bogdanov
8835b0599a
Inline preevaluated string and primitive only constants in compilation time, don't inline const references in non-annotation context, fix for KT-11025: Don't inline const val in compare instuctions
...
#KT-11025 Fixed
2016-02-17 16:53:18 +03:00
Michael Bogdanov
384d2ea0d1
Use bipush, sipush for byte and short constants
2016-02-12 11:55:21 +03:00
Anton Sukhonosenko
0073257841
Fix for KT-10313: ClassCastException with Generics
...
#KT-10313 Fixed
2016-02-12 10:53:28 +03:00
Michael Bogdanov
848549dd5d
Rollback "Fix for KT-10659: Debugger: Evaluate Expression and Watches fail for inline function parameter passed by reference"
2016-02-08 16:43:22 +03:00
Denis Zharkov
0efe28a12a
Do not inline non-const vals
...
#KT-10425 Fixed
2016-02-05 17:43:55 +03:00
Ilya Gorbunov
801a26a544
Fix testData
2016-02-01 22:20:30 +03:00
Michael Bogdanov
328b9bfeda
Removed old default generation
2016-02-01 18:32:12 +03:00
Michael Bogdanov
b9c30c739e
Test for obsolete KT-7224: Redundant result boxing on ?. call on a primitive
...
#KT-7224 Obsolete
2016-01-29 12:13:16 +03:00
Michael Bogdanov
c9cc9c55cd
Added assertion for super call with default arguments in function default impl body
2016-01-29 11:02:21 +03:00
Michael Bogdanov
d4df7aaabc
Fix for KT-10659: Debugger: Evaluate Expression and Watches fail for inline function parameter passed by reference
...
#KT-10659 Fixed
2016-01-28 14:23:24 +03:00
Michael Bogdanov
a76d16931c
Temporary generate old default method
2016-01-22 10:10:32 +03:00
Ilya Gorbunov
4d5ec9be3f
Drop identityEquals from builtins, compiler and tests.
2016-01-22 05:54:38 +03:00
Michael Bogdanov
0274ce4619
Always generate ACC_SUPER flag for all classes; Fix for KT-10260: java.lang.VerifyError in Android 4.x when Instant Run is used
...
#KT-10260 Fixed
2016-01-11 09:55:56 +03:00
Dmitry Petrov
b736880787
KT-6646, KT-10482:
...
when a method (or a property getter) returns Nothing, emit
ACONST_NULL
ATHROW
after a call so that class files verifier knows that this is an exit point in a method.
Note that if an inline method returning Nothing throws an exception explicitly
(or via a chain of inline methods), this code will be deleted by DCE.
2015-12-31 11:07:56 +03:00
Mikhail Glukhikh
7d6ccc40c2
Implicit exhaustive whens now have exception in else branch #KT-8700 Fixed
2015-12-26 10:46:39 +03:00
Michael Bogdanov
f870e365fa
Removed accessors for const properties
2015-12-25 11:28:10 +03:00
Michael Bogdanov
b4db23a7b3
Removed 'INSTANCE' field from companions
2015-12-24 13:59:45 +03:00
Michael Bogdanov
2e73559f33
Removed 'INSTANCE$' field generation
2015-12-24 13:59:44 +03:00
Michael Bogdanov
9cad1a912a
Choose proper context for accessor generation: skip inline ones; Fix for KT-6102: Bypass synthetic accessor when inlining lambda which calls private member
...
#KT-6102 Fixed
2015-12-17 09:51:41 +03:00
Denis Zharkov
b4bb92d136
Fix overload resolution ambiguity for types intersection
...
There are two different forms of types intestion:
1. Type parameters with multiple bounds
2. Smart casts
The problem was that when member scope of type intersection contained
effective duplicates and that lead to overload resolution ambiguity in
strange cases like `x.hashCode()`
For first type we do effectively the same thing as when building member
scope for class extending several interfaces: group all descriptors by
both-way-overridability relation and then choose most-specific in each
group.
For smart casts we do basically the same thing but with special
treatments:
1. From all descriptors that _equal_ to most specific we choose
the one that works without smartcast if possible (i.e. we choose first from candidates list)
2. If smart-cast value seems to be unstable we use only member scope
of receiver type + all descriptors from smart cast possible types
that has incompatible signature. If we'd include all of them and
choose one as more specific, and it would lead to false
SMART_CAST_IMPOSIBLE (see test unstableSmartCast.kt)
#KT-3996 Fixed
#KT-10315 Fixed
2015-12-15 16:18:31 +03:00
Michael Bogdanov
b950bf0e6e
Fix for KT-10259: Proguard can't find generated lambda class of lambda nested inside object?.let lambda
...
#Fixed KT-10259
2015-12-11 16:14:59 +03:00
Michael Bogdanov
4b8017e34b
Fix for KT-7999: Wrong result when use nullable types as reified parameter, KT-8043: Unsafe cast to reified parameter throws NPE instead of TypeCastException
...
#KT-7999 Fixed
#KT-8043 Fixed
~
2015-12-03 15:09:54 +03:00
Michael Bogdanov
1bf521c645
Don't generate accessors for @JvmField properties in primary constructor
2015-11-30 16:24:05 +03:00
Ilya Gorbunov
b4256f0c89
Replace increment with step in For Loop codegen for progressions
2015-11-30 14:12:10 +03:00
Yan Zhulanow
9d1af5a17e
Fix tests: "infix modifier required" and "operator modifier required" errors
2015-11-27 15:51:11 +03:00
Yan Zhulanow
a3ff3ffc45
Fix tests: "Placing function type parameters after the function name" error
2015-11-27 15:51:11 +03:00
Michael Bogdanov
2d3d526ccd
Fix for KT-10110: ClassReader$BadClassFile undeclared type variable: E
...
#KT-10110 Fixed
2015-11-26 13:29:30 +03:00
Denis Zharkov
fa99ea1e98
Generate type-safe barrier in method body
...
In cases when signature of special bridge is the same as current method,
but type is not 'Any?'.
Also there is tiny optimization:
only null check needed if value parameter type is mapped to Object,
but it's not nullable.
#KT-9973 Fixed
2015-11-17 16:27:02 +03:00
Denis Zharkov
1f704e0c4d
Minor. Split BytecodeText tests about special builtin bridges
2015-11-17 16:27:02 +03:00
Ilya Gorbunov
96f301fdec
Support only integer primitive ranges and progressions in optimized for loop codegen.
...
Do not call getProgressionFinalElement, use new progression properties 'first' and 'last' instead.
2015-11-13 20:58:18 +03:00
Ilya Gorbunov
5e6d16103e
Remove deprecated ranges from tests and take into account that Byte and Short rangeTo now returns IntRange.
2015-11-11 03:53:31 +03:00
Mikhail Glukhikh
0d35033106
Introduction of CastedClassReceiver and its handling in codegen #KT-6744 Fixed
...
ClassReceiver converted to Kotlin
Also #KT-7617 Fixed
2015-11-10 20:20:51 +03:00
Dmitry Petrov
882827bf04
KT-9717, KT-9603:
...
pass getter/setter-related flags to AccessorForPropertyDescriptor
2015-10-27 12:02:27 +03:00
Michael Bogdanov
18f3eb87e4
INSTANCE field deprecated in companion object
...
Fix for KT-9692: Deadlock between <clinit> of a class (KtSimpleNameExpressionImpl) and <clinit> of its companion object
#KT-9692 Fixed
2015-10-23 17:39:27 +03:00
Michael Bogdanov
98b818203f
Test data fixed
2015-10-20 19:19:41 +03:00
Dmitry Petrov
dda508234f
Drop package facades:
...
- update tests
- cleanup JetTyMapper after rebase
2015-10-19 16:03:22 +03:00
Dmitry Petrov
3502c393fc
Drop package facades: JVM BE tests passed.
2015-10-19 16:03:16 +03:00
Denis Zharkov
fafca76ac5
Generate common bridges for final builtin declaration
...
#KT-9596 Fixed
2015-10-17 17:46:17 +03:00
Natalia Ukhorskaya
9168572b8c
Write local variable for inline function and inline argument
2015-10-17 17:02:55 +03:00
Michael Bogdanov
3452fc8d02
Don't initialize const properties in constructor
...
#KT-9532 Fixed
2015-10-17 15:31:57 +03:00
Denis Zharkov
7cbab5816c
Fix lost testData
2015-10-16 21:11:05 +03:00
Denis Zharkov
495780f5ab
Generate INVOKEVIRTUAL 'contains(Object)' instead of 'contains(String)'
...
In cases when callee overrides Collection<String>.contains
2015-10-16 18:16:02 +03:00
Denis Zharkov
d335f71dfe
Generate special bridges for builtins with same name but different JVM descriptor
2015-10-16 18:16:02 +03:00
Denis Zharkov
5c2fd75389
Minor. Clarified comments in test
2015-10-14 20:39:46 +03:00
Alexey Tsvetkov
62c25c0370
Replace is Array<T> with .isArrayOf<T>()
2015-10-14 18:36:53 +03:00