Commit Graph

40287 Commits

Author SHA1 Message Date
Mikhail Glukhikh 44790eccaf Use "unnecessary variable" inspection in J2K
Unused variables are no more treated as unnecessary
Related to KT-15958
2017-07-20 17:48:27 +03:00
Mikhail Glukhikh 39f1ef390e Do not report "redundant Unit" for generic calls coerced to Unit
So #KT-18999 Fixed
2017-07-20 17:48:20 +03:00
Mikhail Glukhikh c554bfa20d Move: RemoveSetterParameterTypeInspection to inspections package 2017-07-20 17:48:14 +03:00
Mikhail Glukhikh e154e4cf75 Move: RedundantUnitReturnTypeInspection to inspections package 2017-07-20 17:48:07 +03:00
Simon Ogorodnik 8f78446bff Minor: Clarify code for KT-18786: Fix J2K to move properties to top 2017-07-20 16:04:07 +03:00
Dmitry Jemerov 9213c4a1ab EA-104855 - (1.1.4) NPE: KotlinCommonBlockKt.isFirstParameter 2017-07-20 12:50:12 +02:00
Dmitry Jemerov fbcc519098 Fix tests affected by annotation wrapping changes 2017-07-20 12:32:48 +02: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 541b9dab52 Introduce optimized BuiltInAnnotationDescriptor for built-in annotations
It's built on a FQ name and avoids resolution of the annotation class
descriptor as much as possible
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 7ec67505c5 Optimize Annotations.isEmpty in some 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
Alexander Udalov 5636318eb4 Optimize DeserializedAnnotations in terms of memory traffic
Do not wrap every annotation object into an AnnotationWithTarget
2017-07-20 13:25:38 +03:00
Alexander Udalov 21197b53aa Do not load annotations on value parameter if there are none
Also fix an error in the doc in descriptors.proto
2017-07-20 13:25:38 +03:00
Alexander Udalov c197db9c69 Remove some unnecessary lazy computations in LazyJavaClassDescriptor 2017-07-20 13:25:38 +03:00
Mikhail Glukhikh bdc44ff4cf Unnecessary variable: do not start inlining in write action
So #KT-19110 Fixed

(cherry picked from commit 6325fb1)
2017-07-20 12:39:52 +03:00
Ilya Chernikov e38aaf3e07 Fix xmx setting for the daemon in tests 2017-07-20 10:54:05 +02:00
Ilya Chernikov 17a189a24b Improve logging and exception handling in the daemon 2017-07-20 10:54:05 +02:00
Denis Zharkov 904c7f9c64 Fix nullable variables spilling in coroutines
See the last comment in testData for clarification

 #KT-18983 Fixed
2017-07-20 10:53:32 +03:00
Denis Zharkov 90e894b171 Use known jvm binary class for package part if possible 2017-07-20 10:53:09 +03:00
Denis Zharkov 99a10d8d63 Minor. Rename compactIfPossible -> compact
As ArrayList can always be compacted
2017-07-20 10:53:09 +03:00
Denis Zharkov f454858bbb Optimize memory footprint for case of empty annotations in types
It seems that most of the simple types don't have any annotations,
so for that case it's worth removing the field from SimpleTypeImpl

Also introduce a NotNullSimpleType being used when replacing nullability
2017-07-20 10:53:09 +03:00
Denis Zharkov f8a12a0ec3 Optimize JavaTypeResolver by avoiding using some language features
It's quite a hot point and using local functions with default
parameters seem to affect negatively to overall performance
(at least some of compiler benchmark have shown it)
2017-07-20 10:53:09 +03:00
Denis Zharkov d7cee95d95 Call compactIfPossible where it's possible in BinaryJava*
It helps to avoid retaining a lot of redundant empty SmartList's
instances
2017-07-20 10:53:09 +03:00
Denis Zharkov e2ce285ec3 Reduce memory footprint after functions substitution
Do not recreate new instances if descriptors' parts remain
effectively the same
2017-07-20 10:53:09 +03:00
Denis Zharkov 4a73fbb70a Reduce memory footprint of TypeSubstitutor
Avoid creating new instances if types remain unchanged
2017-07-20 10:53:09 +03:00
Denis Zharkov 4385ce8828 Reduce memory footprint for basic case of flexible types
The case is when we have a simple type constructor
(not array nor collection) and type is not raw:
A<T1, >..A<T1>?

Actually these types are almost equal besides of nullability,
but we create and resolve two different simple types,
they have different arguments' lists, etc.

The idea is to add NullableSimpleType subclass with delegate
to another simple type

It should help a lot both with common cases and with corner ones:
flexibles types in spark for Function22 having exponential size
because of its flexibility

 #KT-14375 Fixed
 #KT-14323 Fixed
2017-07-20 10:53:09 +03:00
Denis Zharkov 59f2ba98a6 Avoid creating SimpleType instances for default type 2017-07-20 10:53:09 +03:00
Denis Zharkov 8576054788 Use SmartList instead of SmartSet for overridden descriptors
SmartSet was used because it was the only lightweight collection
available in core, but now there is org.jetbrains.kotlin.utils.SmartList
2017-07-20 10:53:09 +03:00
Denis Zharkov 729f20ed81 Reduce memory size retained by LookupTrackerImpl
By default SmartList is used there for storing values of a multimap,
so a lot of duplicated items is stored there (file names are being
duplicated).

Even although there is a separate interner for these values,
retained memory size has been reduced for 30M when compiling `idea`
module in Kotlin project
2017-07-20 10:53:09 +03:00
Denis Zharkov c7e6f200da Use SmartList for storing annotations in binary classes
Looks like in the most cases there are <= 1 annotations
in real declarations
2017-07-20 10:53:09 +03:00
Simon Ogorodnik 36ab31f2f7 Minor: fix test after merge 2017-07-20 02:30:34 +03:00
Toshiaki Kameyama fe599463ac KT-18978 Intention Move to class body generates incorrect code for vararg val/var (#1188)
Intention Move to class body generates incorrect code for vararg val/var #KT-18978 Fixed
2017-07-20 01:29:56 +03:00
Dimach a59021a25e KT-18786: J2K should move all properties to top of class
#KT-18786 fixed
2017-07-20 01:15:15 +03:00
Simon Ogorodnik ccfcfd8721 Add benchmark for local completion and improve benchmarking 2017-07-19 21:18:58 +03:00
Dmitry Jemerov 4df6db141c Advance source stub version which wasn't advanced in 5d87276cf
#KT-19113 Fixed
2017-07-19 18:52:29 +02:00
Dmitry Petrov 891799c853 Generate 'Deprecated' annotation on invisible companion object field
Design decision: if the field for a companion object should have
non-public visibility, generate it with @Deprecated annotation in
language version 1.2.

TODO: generate it with proper visibility in 1.3 and later.

KT-11567 Companion object INSTANCE field more visible than companion object class itself
2017-07-19 17:38:17 +03:00
Dmitry Jemerov 951392005b Add options for wrapping local variable and property annotations
#KT-14950 Fixed
2017-07-19 15:03:00 +02:00
Dmitry Jemerov 050ff03b07 Implement wrapping options for enum constants
#KT-14126 Fixed
2017-07-19 15:02:59 +02:00
Dmitry Jemerov 7555bb6c3c Support formatting of 'where' clauses
#KT-14083 Fixed
2017-07-19 15:02:58 +02:00
Dmitry Jemerov 325e950bfe Reformat expression body property accessors
#KT-17394 Fixed
2017-07-19 15:02:52 +02:00
Dmitry Jemerov 4db8639bf8 Consistent name for option controlling spaces around .. 2017-07-19 15:02:50 +02:00
Dmitry Jemerov 31840fa328 Fix GradleLanguageFeatureQuickFixTest on Windows 2017-07-19 13:56:00 +02:00
Toshiaki Kameyama 366b9d1d79 KT-12195 Quickfix @JvmStatic on main() method in an object (#1192)
* Quickfix @JvmStatic on main() method in an object #KT-12195 Fixed

* Fixed #KT-12195
2017-07-19 13:37:12 +02:00
Toshiaki Kameyama a8da79a130 KT-12504 Intention to make open class with only private constructors sealed (#1193)
* Intention to make open class with only private constructors sealed #KT-12504 Fixed

* Fixed #KT-12504
2017-07-19 13:36:36 +02:00