Nikolay Krasko
1b93e2030f
Create isCallee utility function
2017-07-28 01:28:56 +03:00
Andrius Semionovas
68659f5a32
Introduce error "ANNOTATION_USED_AS_ANNOTATION_ARGUMENT" along with QF
...
The relevant inspection has been removed
So #KT-18855 Fixed
2017-07-27 09:54:22 +03:00
Dmitry Petrov
b81ca31aae
Record resolved delegation call for primary ctor if single result
...
Do the same thing as for secondary constructor (looks like it was a
workaround for R&I bug that was used only for secondary constructors
for some reason).
#KT-17464 Fixed Target versions 1.1.5
2017-07-27 09:24:48 +03:00
Dmitry Petrov
c9ad290ad5
Do not store null for temporary in destructuring assignment
...
#KT-19256 Fixed Target versions 1.1.5
2017-07-27 09:02:26 +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
7450899b87
Minor: extract get*CompileTimeConstant
...
Get rid of code duplication.
2017-07-27 09:02:26 +03:00
Mikhael Bogdanov
ff676c050f
Properly generate inner classes when compiling source for inline
...
KT-19175: Compiler generates different bytecode when classes are compiled separately or together
#KT-19175 Fixed
2017-07-26 20:31:14 +02:00
Yan Zhulanow
38449caaed
Parcelable: Fixes after review
2017-07-26 20:19:23 +03:00
Yan Zhulanow
c23bca6afe
Parcelable: Add Parcelable functionality to Android Extensions plugin
2017-07-26 20:19:15 +03:00
Ilya Chernikov
a82f66cf45
Add tests for client/session flags removal, minor fix in shutdown logic
2017-07-26 17:16:38 +02:00
Ilya Chernikov
dc88e1e16c
Fix daemon clients cleanup, fixes hanging daemon processes
2017-07-26 17:16:37 +02:00
Mikhail Glukhikh
e6872c52a3
More accurate deparenthesize (keeping annotations) in some IDE actions
...
So #KT-19004 Fixed
2017-07-26 15:18:30 +03:00
Mikhail Glukhikh
7fb78a0372
Code cleanup: replace chained null-checks with safe-calls
2017-07-26 15:18:22 +03:00
Alexander Udalov
224df7a1ea
Change -Xload-jsr305-annotations argument to -Xjsr305-annotations={ignore|enable}
...
See https://youtrack.jetbrains.com/issue/KT-19229 for a complete
explanation
#KT-19229 Fixed
#KT-10942
2017-07-26 11:45:25 +03:00
Alexander Udalov
2f99f6ad34
Refactor AnalysisFlags and their support in IDE
...
* Support flags with any value (not just Boolean)
* Support all flags by parsing arguments in KotlinFacetSettings, instead
of manually listing known flags
#KT-19210 Fixed
2017-07-26 11:45:24 +03:00
Alexander Udalov
845de7aa4d
Minor, change parameter type of parseCommandLineArguments
2017-07-26 11:45:24 +03:00
Alexander Udalov
593f98190d
Keep .txt and .caps files in compiler.pro
...
Files like org/jline/utils/capabilities.txt are needed for jline to
function correctly
#KT-19237 Fixed
2017-07-26 11:45:23 +03:00
Dmitry Petrov
0391c24ab2
Provide diagnostic for typealias using deprecated class or constructor
...
#KT-19205 Fixed Target versions 1.1.5
2017-07-26 09:02:45 +03:00
Alexander Udalov
f313001b2d
Update to jline 3.3.1 and jansi 1.16
...
Note that the history file name was changed (.kotlin_history ->
.kotlinc_history) because the history is now stored in a different
(incompatible) format.
#KT-11369 Fixed
2017-07-25 11:10:45 +03:00
Pavel V. Talanov
f1811e7f0e
Minor, more precise error message
2017-07-24 18:56:14 +03:00
Dmitry Petrov
f558b4238c
Use counter loop in intrinsic array constructors
...
#KT-19149 Fixed Target versions 1.1.5
2017-07-24 10:17:30 +03:00
Dmitry Petrov
c9d9a8220d
Minor: use IntrinsicMethods.INTRINSICS_CLASS_NAME where appropriate
2017-07-24 10:15:27 +03:00
Dmitry Petrov
fda89e9c72
Add test for KT-19128
...
It looks like the problem was caused by incorrect merging of
StrictBasicValues and was fixed by commit
904c7f9c64 .
#KT-19128 Fixed
2017-07-24 10:15:27 +03:00
Dmitry Petrov
d0c8af5621
Keep track of second receiver type in CallReceiver
...
#KT-17725 Fixed Target versions 1.1.5
2017-07-24 10:15:27 +03:00
Dmitry Petrov
3f34a97880
Minor: extract CallReceiver to a top-level class, move code around
2017-07-24 10:15:27 +03:00
Alexander Udalov
ebdf5aa223
Discriminate header classes in favor of non-header type aliases
...
In the test case, the problem was that Foo.a's type was resolved to the
_class A_, which was written to metadata on JVM instead of the class
AImpl with typealias A as an abbreviation. This metadata was incorrect
because there's no class A from the JVM compiler's point of view; that's
why the error "cannot access class A" was reported
#KT-19151 Fixed
2017-07-21 19:03:15 +03:00
Mikhail Glukhikh
951e8cd91a
Code cleanup: unnecessary local variable applied
2017-07-21 18:58:48 +03:00
Nikolay Krasko
fbe16f7b91
Refactoring: delete unused CachedValueProperty class
2017-07-21 15:41:06 +03:00
Dmitry Petrov
bf3e896464
Update 'this' extension receiver when there's a smart cast
...
If 'this' (implicit or explicit) was used as an extension receiver,
and the corresponding call required a smart-cast,
this information was effectively lost in "old" resolution & inference,
but is required by "old" JVM BE to generate proper CHECKCASTs.
2017-07-21 08:58:52 +03:00
Dmitry Petrov
c9d54d7110
Generate proper error candidates for type aliases
...
#KT-17745 Fixed Target versions 1.1.5
2017-07-21 08:58:12 +03:00
Dmitry Petrov
b4d8337ca5
Ignore test for 'primitive Char == object' in JS (KT-19081)
2017-07-21 08:52:29 +03:00
Dmitry Petrov
709a7e201f
Simplify code for specialized BranchedValues
2017-07-21 08:52:29 +03:00
Dmitry Petrov
e1a55e8dec
Prefer compact bytecode for primitive/object comparisons with Boolean
...
'java.lang.Boolean#valueOf' doesn't allocate new objects
(it uses pre-allocated singletons for 'true' and 'false').
2017-07-21 08:52:29 +03:00
Dmitry Petrov
8e9c0294fe
Do not box primitives for 'primitive == object'
...
NB user-defined 'equals' can violate contract for 'Object#equals', e.g.,
it can be asymmetric.
Thus we can't avoid boxing for 'object == primitive'.
2017-07-21 08:52:29 +03:00
Dmitry Petrov
fa42f202fa
Avoid boxing on 'primitive == boxed' when possible
...
Similar to 'boxed == primitive' case, different bytecode due to
evaluation order.
2017-07-21 08:52:29 +03:00
Dmitry Petrov
e440de3494
Minor: GeneratePrimitiveVsObjectEqualityTestData
2017-07-21 08:52:29 +03:00
Dmitry Petrov
98ee83f4a3
Minor: move condition for boxed==primitive to corresponding isApplicable
2017-07-21 08:52:29 +03:00
Dmitry Petrov
4cba600268
Minor: some more evaluation order tests for 'boxed == primitive'
2017-07-21 08:52:29 +03:00
Dmitry Petrov
81609e4c6f
Generate complex equality comparison only when RHS can have side effects
...
In "short" version, LHS is always evaluated before RHS,
and RHS may be not evaluated if LHS is null.
So, it makes sense to use "short" version in cases when RHS can't have
side effects (because of more compact bytecode and more opportunities
for code elimination).
2017-07-21 08:52:29 +03:00
Dmitry Petrov
8aacddb9f0
Avoid primitive boxing for 'boxed == primitive' if possible
...
This makes sense for non-floating-point primitive type
(boolean, char, byte, short, int, long):
floating-point types use specialized versions of 'areEqual'.
2017-07-21 08:52:29 +03:00
Dmitry Petrov
275c758da1
Cleanup and move code around in BranchedValue
...
- Cleanup inspections
- Move optimized boxed-vs-primitive comparisons to a separate file
2017-07-21 08:52:29 +03:00
Dmitry Petrov
051ac44759
Verify bytecode after mandatory transformations and after optimizations
2017-07-21 08:52:29 +03:00
Alexander Udalov
5128b8a409
Add default implementation for Annotations.findAnnotation
2017-07-20 13:27:34 +03:00
Alexander Udalov
def3f73fdd
Use AnnotationDescriptor.fqName instead of type
...
Also use the annotationClass extension property instead of
TypeUtils.getClassDescriptor(annotation.type)
2017-07-20 13:26:13 +03:00
Alexander Udalov
f39106f75c
Do not use parameter descriptors in AnnotationDescriptorImpl
2017-07-20 13:26:13 +03:00
Alexander Udalov
eb205f620c
Do not use parameter descriptors in most annotation implementations
...
Except AnnotationDescriptorImpl, which is refactored in the subsequent
commit.
Note that we no longer check the presence of parameters with the
corresponding names in the annotation class in
LazyJavaAnnotationDescriptor, this is why test data changed
2017-07-20 13:25:39 +03:00
Alexander Udalov
cc7ed2ba54
Change map key type in AnnotationDescriptor.getAllValueArguments
...
Turns out, only the parameter's name is needed at all usages of this
method. Such a map is both easier to use (no need to call
ValueParameterDescriptor.getName) and easier to construct (no need to
resolve annotation class, its constructor, its parameters). In this
commit, only usages have changed but the implementations are still using
the old logic, this is going to be refactored in subsequent commits
2017-07-20 13:25:39 +03:00
Alexander Udalov
41ea0e8ef8
Introduce AnnotationDescriptor.fqName
...
Could be used instead of ".annotationClass.fqName" to avoid the unneeded
resolution of the annotation class descriptor
2017-07-20 13:25:38 +03:00
Alexander Udalov
1d64b61a8f
J2K AnnotationDescriptor, refactor implementations
2017-07-20 13:25:38 +03:00
Alexander Udalov
9ee4b39e1b
Provide default implementation for Annotations.findExternalAnnotation
2017-07-20 13:25:38 +03:00