Dmitry Petrov
d137b04b0a
Pull up logic for ComparisonGenerator selection
2017-07-10 10:51:26 +03:00
Dmitry Petrov
ea95f31f99
Simplify some basic instructions using peephole optimization
...
DUP_X1; POP = SWAP
p1_a; p1_b; SWAP = p1_b; p1_a
where p1_a, p1_b are instructions without side effects pushing value of
size 1 on stack.
E.g.: ACONST_NULL; ALOAD 0; SWAP = ALOAD 0; ACONST_NULL
NOP; NOP = NOP
2017-07-10 10:51:26 +03:00
Dmitry Petrov
224848163d
Use InContinuousRangeExpressionGenerator for primitive range intrinsics
2017-07-10 10:51:26 +03:00
Dmitry Petrov
c855b5c889
Extract SimpleBoundedValue class
2017-07-10 10:51:26 +03:00
Dmitry Petrov
a3409b46b0
Primitive number range literal as BoundedValue
2017-07-10 10:51:26 +03:00
Dmitry Petrov
b693b54a2c
Fix DUPn_Xm handling in PopBackwardPropagationTransformer
...
DUPn_Xm instructions implicitly depend on elements directly under stack
top (which are not "copied", but still required). We can't analyze them
precisely now, and should skip methods containing these instructions.
Fortunately, we didn't generate these instructions under POP before,
but with new range check code generation and constant conditions
elimination such combination of instructions becomes possible.
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
f4ea1a2f41
Minor: move RangeValue-related classes to proper packages
2017-07-10 10:51:26 +03:00
Dmitry Petrov
d19eb05382
Introduce AbstractForInProgressionLoopGenerator
...
AbstractForInProgressionLoopGenerator is a base class for
progression-based 'for' loop generators with progression step unknown
at compile time.
2017-07-10 10:51:26 +03:00
Dmitry Petrov
83ff1a2ef3
Minor: refactor ForInProgressionExpressionLoopGenerator initialization
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
db1dcc68ff
Minor: cleanup in ExpressionCodegen
2017-07-10 10:51:26 +03:00
Dmitry Petrov
614d90d6ef
Skip NOP instructions in fast pop backward propagation
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
05cad83c79
Fix tests for in/in! with primitive range literals
...
- ClosedFloatingPointRange<T>
- IntRange, etc
- extensions in kotlin.ranges for ranges of Byte/Int/Short
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
4320b63922
Ensure that no boolean negation is generated for !in expression
...
#KT-18777 Fixed Target versions 1.1.4
2017-07-10 10:51:26 +03:00
Dmitry Petrov
b9c0ecf2b1
Ensure that ranges are not created for in-Comparable-range-literal
...
#KT-6247 Fixed Target versions 1.1.4
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
bd2021411c
Don't use intrinsic 'in' generator for non-intrinsified 'in' expressions
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
Dmitry Petrov
e3320c53f5
Minor: AbstractForInRangeWithGivenBoundsLoopGenerator
2017-07-10 10:51:26 +03:00
Dmitry Petrov
e261b8edf8
Minor: extract high-level interface for ForLoopGenerator
2017-07-10 10:51:26 +03:00
Dmitry Petrov
c870eeac2e
RangeCodegenUtil: convert to Kotlin + cleanup
2017-07-10 10:51:26 +03:00
Dmitry Petrov
304e4e8dce
RangeCodegenUtil: .java -> .kt
2017-07-10 10:51:26 +03:00
Dmitry Petrov
6140f29818
Ranges: introduce RangeValue class
...
The overall idea is to unify intrinsics for 'for-in' loop generation
and for 'in'/'!in' expression generation.
2017-07-10 10:51:26 +03:00
Ilya Chernikov
25c731241b
Fix parallel daemon start test reporting
2017-07-08 18:16:29 +02:00
Ilya Chernikov
21eed9ee78
Get rid of kotlin.Unit usage in RMI interfaces
...
attempt to fight mysterous "Cannot instantiate kotlin.Unit" exception.
2017-07-08 18:16:29 +02:00
Ilya Chernikov
06d27a9efa
Fix failing tests on TC on Windows by falling back to standard launcher
...
...in one more case
Plus some minor test tweaks, diagnostics improvement and important comments
2017-07-08 18:16:28 +02:00
Ilya Chernikov
e4ed217a3b
Add missing explicit serialVersionUID to the REPL API classes
2017-07-08 18:16:27 +02:00
Ilya Chernikov
8542e878f7
Refactor daemon periodic check and shutdown logic
...
Cleaner logic and logging, improved stability during shutdown, reduced
overhead of the periodic checks, and regular calls, should also eliminate
dying daemons scenario on parallel execution (another attempt to do it).
2017-07-08 18:16:26 +02:00
Ilya Chernikov
2c35675fd6
Refactor daemon parallel start test to improve diagnostics
...
also add daemon info to the RPC
and remove redundant daemon stopping calls, that should speed up
tests execution
2017-07-08 18:16:26 +02:00
Ilya Chernikov
e2d2c5ff42
Refactor daemon startup for better logging and cleaner code
2017-07-08 18:16:25 +02:00
Ilya Chernikov
2ec2a08753
Implement advanced gradle script template selection in the provider, improve diagnostics
2017-07-08 18:16:24 +02:00
Alexander Udalov
127cd1295e
Disable JSR-305 annotations by default, introduce CLI argument
...
No package annotations are going to be loaded, and
TypeQualifierDefault/TypeQualifierNickname are no longer recognized by
default. Use the CLI argument "-Xload-jsr305-annotations" to enable this
behavior back
#KT-10942
2017-07-07 22:08:50 +03:00
Mikhail Glukhikh
1d2017b0fc
Cleanup: apply "cascade if..." inspection (+ some others)
2017-07-07 18:15:32 +03:00
Mikhail Glukhikh
9c06739594
Cleanup: apply "lift out..." inspection (+ some others)
2017-07-07 18:15:30 +03:00
takahirom
fe9d3f16d3
KT-18501: Fix to find KDoc even if KDoc is in ModifierList
2017-07-07 18:12:19 +03:00
Mikhail Zarechenskiy
039729908d
Minor, remove field that never used
2017-07-07 14:20:03 +03:00
Mikhail Zarechenskiy
3fed4e6dc7
Improve diagnostic for unresolved reference when function expected
...
#KT-10657 Fixed
2017-07-07 14:20:02 +03:00
Mikhail Zarechenskiy
c853ac95ad
Improve diagnostic message for annotations with @receiver
...
#KT-14647 Fixed
2017-07-07 14:19:59 +03:00
Mikhail Zarechenskiy
f5cd8c7e4d
Relax name shadowing warning on parameter names
...
#KT-17611 Fixed
2017-07-07 14:19:57 +03:00
Mikhail Zarechenskiy
daa8521729
Avoid getting descriptors for collection literals from built-ins scope
...
#KT-18845 Fixed
2017-07-07 14:14:30 +03:00
Vyacheslav Gerasimov
2ec1a4311a
Implement Kotlin configurator for GSK
...
#KT-14965 Fixed
2017-07-07 03:23:17 +03:00
Alexander Udalov
0f15413d47
Minor, do not output stack trace on invalid contents of build file
2017-07-06 17:03:25 +03:00
Alexander Udalov
55468735df
Rename -module argument to -Xbuild-file
...
To prevent confusion with Java 9 module-related arguments
#KT-18754 Fixed
2017-07-06 17:03:25 +03:00
Alexander Udalov
0b399fe7bb
Ignore testAutomaticModuleNames on older Java 9 builds
2017-07-06 13:01:16 +03:00