Ilya Gorbunov
ec5c15f190
test-dagger-maven-example: kotlin version comes as a parameter
2017-07-21 20:15:34 +03:00
Ilya Gorbunov
d8ea3ddcc8
Cleanup poms of projects migrated to gradle
2017-07-21 20:15:34 +03:00
Alexander Udalov
f69e96b240
Fix IAE at protoDifferenceUtils.kt on new metadata field
...
The class_local_variable/package_local_variable JVM extensions were
added in 616d575fb6
#KT-19155 Fixed
2017-07-21 20:11:43 +03:00
Nikolay Krasko
b6bd3e15c5
Fix outdated highlighting for Kotlin injected fragments (KT-18842)
...
Do not use cached value for injection in non-dispatch threads and throw
PCE if value isn't ready. Otherwise outdated value may be stored in
highlighting.
#KT-18842 Fixed
2017-07-21 19:57:21 +03:00
Alexander Udalov
7f8e7c66f5
Suppress FNFE in .kotlin_metadata index
...
Similarly to VirtualFileKotlinClass.create.
This could happen for example when some files are removed from
kotlin-stdlib-common
2017-07-21 19:03:15 +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
6ee94dae6f
Code cleanup: KotlinSafeDeleteProcessor
2017-07-21 18:59:13 +03:00
Mikhail Glukhikh
d05a525d8d
Search for KtTypeAlias in safe delete processor
...
Related to KT-16046
2017-07-21 18:59:07 +03:00
Mikhail Glukhikh
dd0cf8219e
Add type aliases into UnusedSymbolInspection / safe delete
...
So #KT-16046 Fixed
2017-07-21 18:59:01 +03:00
Mikhail Glukhikh
951e8cd91a
Code cleanup: unnecessary local variable applied
2017-07-21 18:58:48 +03:00
Mikhail Glukhikh
202fb19cf6
If-then to safe access: more correct receiver calculation
...
So #KT-18928 Fixed
2017-07-21 18:58:33 +03:00
Mikhail Glukhikh
31bb1cc0f9
Invoke back setting "show inline dialog for local variables"
...
So #KT-19130 Fixed
2017-07-21 18:58:27 +03:00
Kirill Rakhman
a7084ceb9b
Fix some type hints related issues ( #1204 )
...
* Type hints shouldn't appear for negative literals
Fixes #KT-18974
* Make type hints work for destructuring declarations
Fixes #KT-18444
* Hide type hints for generic constructor calls if type arguments are explicitly specified
Fixes #KT-19167
2017-07-21 16:31:46 +02:00
Nikolay Krasko
f4038f7109
Fix slow typing because of counting injected fragments (KT-18842)
...
- cache result of kotlin injection on modification tracker
- never count injection in dispatch thread, use cached result instead
- compute injection with write action priority, reuse cache if unfinished
#KT-18842 Fixed
2017-07-21 15:41:06 +03:00
Nikolay Krasko
436b637282
Refactoring: show using ProcessCancelException in method name
2017-07-21 15:41:06 +03:00
Nikolay Krasko
fbe16f7b91
Refactoring: delete unused CachedValueProperty class
2017-07-21 15:41:06 +03:00
Mikhail Glukhikh
1cb6128f2f
Minor: J2K test fix
2017-07-21 12:21:04 +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
Simon Ogorodnik
7ed1669050
KT-19011: Fix import optimizing when extension functional type is used
...
It should check is extension functional type imported from companion
is actually called on companion instance
#KT-19011 fixed
2017-07-21 03:08:06 +03:00
Dimach
65e603c1ed
KT-13552: Fix J2K to generate else block while converting switch
...
#KT-13552 fixed
2017-07-20 23:35:11 +03:00
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