Dmitry Petrov
8f9ea3e08b
Fix const range bounds generation
2017-09-25 17:49:33 +03:00
Dmitry Petrov
21cdf9dd5b
Add cast to expected type in call-based in-expression generation
...
#KT-20106 Fixed
2017-09-05 15:32:53 +03:00
Dmitry Petrov
b867c46f72
Generate for-in-range loop as counter loop when possible
...
If an upper bound is a compile-time constant != Int.MAX_VALUE,
we can generate 'for (i in x..N)' as 'for (i in x until N+1)'.
2017-07-27 09:02:26 +03:00
Dmitry Petrov
2849e19af5
Add test for indices.reversed()
2017-07-12 15:56:29 +03:00
Dmitry Petrov
6a673a03e4
Generate test data for in-expression tests, fix bug with indices
2017-07-12 15:56:29 +03:00
Dmitry Petrov
0ce6bac7eb
Generate proper 'compareTo' calls for non-primitive 'a in x .. y'
...
When we have some custom implementation of Comparable, it's important
that we compare values exactly as 'lowBound <= a && a <= highBound'.
Make sure that evaluation order and compareTo calls match for
optimized and non-optimized case.
2017-07-10 10:51:26 +03:00
Dmitry Petrov
dd5bb78178
Minor: don't use StringBuilder#setLength(0) - absent in JS
2017-07-10 10:51:26 +03:00
Dmitry Petrov
0962aec456
Minor: don't use java.lang.Integer in common test
2017-07-10 10:51:26 +03:00
Dmitry Petrov
905a16e1df
Maintain proper evaluation order for 'a in x .. y'
...
As of Kotlin 1.0 and 1.1, expression 'a in x .. y' is considered
equivalent to 'x.rangeTo(y).a', and should be evaluated in the following
order:
1. x
2. y
3. a
4. compare x with a
5. compare y with a (if needed)
2017-07-10 10:51:26 +03:00
Dmitry Petrov
64f880ba71
Add test for in/!in in a custom object range
2017-07-10 10:51:26 +03:00
Dmitry Petrov
9d1901fc7c
Intrinsify some mismatching range/element combinations for in/in!
...
It's safe to upcast integer types to Long,
floating-point types to Double.
So we don't have to create a range instance for cases such as
fun testLongInInt(x: Long, a: Int, b: Int) =
x in a .. b
which is equivalent to
fun testLongInInt(x: Long, a: Int, b: Int) =
x in a.toLong() .. b.toLong()
2017-07-10 10:51:26 +03:00
Dmitry Petrov
4480a9bdfb
Introduce BoundedValue as a generalization of (low..high) range
...
Provide BoundedValue-based implementation of InExpressionGenerator,
test it on range of comparable values.
Drop unneeded test (range of comparables is already tested by
ranges/contains/inComparableRanges.kt).
2017-07-10 10:51:26 +03:00
Dmitry Petrov
6551fdc695
Add test for nullable primitive in range
2017-07-10 10:51:26 +03:00
Dmitry Petrov
36cbc0defd
Ensure that {Collection, CharSequence}.indices intrinsic works with 'in'
2017-07-10 10:51:26 +03:00
Dmitry Petrov
ec99fa2142
Ensure that 'in/!in x until y' intrinsic works
2017-07-10 10:51:26 +03:00
Dmitry Petrov
5decf65d6a
Ensure that no range instance is created for 'x in array.indices'
2017-07-10 10:51:26 +03:00
Dmitry Petrov
7175361c97
Ensure that BranchedValue for in/!in work well with boolean operations
2017-07-10 10:51:26 +03:00
Dmitry Petrov
a3cd4f415a
Add test for comparison used for primitives and Comparable
...
There's a subtle difference in behavior between comparing
primitive Float/Double (comparison follows IEEE standard)
and boxed Float/Double (comparison is a total order).
Make sure this corner case is preserved.
2017-07-10 10:51:26 +03:00
Dmitry Petrov
fd402cb76c
Provide intrinsic for in/in! expression with range of Comparable
2017-07-10 10:51:26 +03:00
Dmitry Petrov
a7071ae7af
Provide intrinsic generators for in/!in expression
...
TODO some tests should fail because range of comparables
(e.g., '"Alpha" .. "Omega"') is currently not implemented
2017-07-10 10:51:26 +03:00
Anton Bannykh
e098de5e33
JS: fix char boxing in elvis expressions (#KT-17700 fixed)
2017-05-11 21:31:38 +03:00
Dmitry Petrov
506941e7e0
Optimize range operations for 'until' extension from stdlib (KT-9900)
...
NB: for-in-until loop is generated as precondition loop, because the
corresponding range is right-exclusive (and thus we have no problems
with integer overflows).
2017-05-04 10:09:42 +03:00
Anton Bannykh
867bd13ce4
JS: make tests dependent on primitive array is checks pass even when -Xtypedarray is disabled (related: KT-17137)
2017-03-28 21:41:20 +03:00
Anton Bannykh
9b34e21619
JS: fixed <Type>Array.iterator methods; added -Xtypedarray compiler key
...
The <Type>Array.iterator used to lack next<Type>() method (KT-16626).
The -Xtypedarray compiler key enables translation of primitive arrays
to TypedArrays, and primitive array`is`-checks (KT-15358, KT-14007,
KT-14614, KT-16056).
2017-03-27 23:09:34 +03:00
Mikhail Zarechenskiy
05ef705609
Add IGNORE_BACKEND directive for native automatically
...
Also parse correctly case IGNORE_BACKEND: JS, NATIVE
2017-03-13 19:56:13 +03:00
Ilya Matveev
29e5ad5abe
Mute tests with '::class' in native backend
2017-03-10 19:59:37 +03:00
Ilya Matveev
a5e4e0284e
Mute some box tests for native backend
...
This patch mutes the following test categories:
* Tests with java dependencies (System class,
java stdlib, jvm-oriented annotations etc).
* Coroutines tests.
* Reflection tests.
* Tests with an inheritance from the standard
collections.
2017-03-10 19:59:37 +03:00
Alexey Andreev
ef38761dc2
JS: unmute now passing tests and mute test that passed by accident.
2017-03-07 10:46:09 +03:00
Ilya Gorbunov
10f8e70322
Rename ClosedComparableRange to ClosedFloatingPointRange
2016-12-19 18:36:52 +03:00
Ilya Gorbunov
d60fc7d9a8
Introduce ClosedComparableRange interface which inherits ClosedRange to provide special comparison operation for double and float.
2016-12-08 20:50:11 +03:00
Ilya Gorbunov
d91f3cba0b
Add additional invariant to check in Range.contains optimization tests.
...
Change expectations for double and float ranges according to #KT-4481
#KT-5044 #KT-4481
Custom 'rangeTo' might be unoptimized, but still 'in' should not diverge from 'contains'.
2016-12-08 20:47:25 +03:00
Ilya Gorbunov
38840bb529
Do not reference java.util in tests that run on JS backend.
2016-11-21 18:20:33 +03:00
Alexey Andreev
b5358122e2
JS: unmute shared box tests
2016-11-16 19:50:10 +03:00
Zalim Bashorov
ee129bebb6
Automatically mute failed generated tests from compiler/testData/codegen/box/ranges
2016-11-09 21:41:12 +03:00
Zalim Bashorov
596f3364c6
Automatically mute failed tests
2016-11-09 21:41:12 +03:00
Vsevolod
e788ef408f
KT-5044 code cleanup, test added
2016-10-13 10:11:32 +03:00
Vsevolod
d7ad27ac3b
KT-5044 implement missing Range#contains tests and move it to separate package
2016-10-13 10:11:32 +03:00
Vsevolod
1ac07340c9
KT-13931 generate IntRange#contains with respect to side-effects on argument loading, test added
2016-09-29 17:56:18 +03:00
Dmitry Petrov
26c8bc87fd
KT-13241 Indices optimization leads to VerifyError with smart cast receiver
...
Use expected receiver type from the corresponding extension function.
2016-07-27 13:21:22 +03:00
Dmitry Petrov
3445fe0d30
KT-12985 Do not create range instances for 'for' loop in CharSequence.indices
2016-07-06 12:50:41 +03:00
Dmitry Petrov
3dc23a0e02
KT-12983 java.lang.VerifyError: Bad type on operand stack in arraylength
...
Use proper receiver value type.
2016-07-06 09:59:00 +03:00
Dmitry Petrov
bf4f26318e
KT-6916: do not create Progression instances in for-in-downTo loops
2016-07-04 13:38:37 +03:00
Dmitry Petrov
9240c82934
KT-12733 'rangeTo' as a non-qualified call is not optimized in 'for'
...
Use ResolvedCall corresponding to 'for' loop range expression
for optimized "for-in-range-literal".
Cleanup.
2016-06-16 11:30:05 +03:00
Dmitry Petrov
a17b0dd1b5
KT-5075 Optimize array/collection indices usage in 'for' loop
...
Use specialized 'for' loop code generation strategy for loops over array indices and collection indices.
2016-06-15 14:01:18 +03:00
Mikhael Bogdanov
a6cf169646
Fix for KT-12582: "VerifyError: Bad local variable type" caused by explicit loop variable type
...
#KT-12582 Fixed
2016-06-02 16:01:05 +03:00
Alexander Udalov
06a67e6602
Merge boxWithStdlib testData into box, delete BoxWithStdlib test
2016-03-09 10:25:38 +03:00
Alexander Udalov
20e36438e2
Move some tests from boxWithStdlib/ to box/
...
Move those tests which do not require neither stdlib nor reflect
2016-03-09 10:25:38 +03:00
Evgeny Gerashchenko
21c37951d6
Removed old range test which were spread all over the place.
2013-01-30 19:23:51 +04:00
Alexander Udalov
10c5949199
Extract some codegen tests to black box testData
2013-01-28 18:20:33 +04:00