Commit Graph

305 Commits

Author SHA1 Message Date
Alexey Sedunov
e3e4c447fa Generate equals/hashCode(): Use class literals when possible
#KT-18683 Fixed
2017-06-29 17:42:18 +03:00
Alexey Sedunov
9681f5ca42 Generate equals/hashCode(): Enable for classes without properties
Also:
- forbid for enum classes
- use javaClass.hashCode() instead of 0 if class has no properties

 #KT-18418 Fixed
2017-06-22 19:50:55 +03:00
Toshiaki Kameyama
b9fb7cc3a5 Add quick fix to generate equals / hashcode in data class with arrays
So #KT-15893 Fixed
2017-06-16 15:03:52 +03:00
Alexey Sedunov
1544467725 Presentation: Fix NPE on star projection rendering
EA-100480 Fixed
2017-06-15 17:26:39 +03:00
Toshiaki Kameyama
af941bfdf5 KT-18158 Expand selection should select the comment after expression getter on the same line (#1122)
* Expand selection should select the comment after expression getter on the same line #KT-18158 Fixed

* Fixed expand selection behavior for the declaration with comment #KT-18158

* Remove redundant code #KT-18158
2017-06-14 12:28:56 +02:00
Dmitry Jemerov
b1f84676d1 Update tests according to new formatter behavior 2017-06-14 11:40:41 +02:00
Dmitry Neverov
3b4dafe691 Detect recursive property accessors #KT-17221 Fixed 2017-05-19 20:36:09 +03:00
Dmitry Jemerov
af043843b7 Don't show disambiguation for "Show expression type" on "this"
#KT-17840 Fixed
2017-05-18 21:02:24 +02:00
Alexey Sedunov
0994474e87 Presentation: Fix NPE on functional type rendering
#KT-17638 Fixed
2017-05-18 14:22:40 +03:00
Dmitry Jemerov
c778e0454d Show line markers for suspending iteration
#KT-16803 Fixed
2017-05-10 14:27:23 +02:00
Dmitry Jemerov
baa43a2a55 Show line markers for sealed classes
#KT-16755 Fixed
2017-05-10 14:27:22 +02:00
Dmitry Jemerov
66ce2a6998 Render anonymous objects in Show Expression Type
#KT-17304 Fixed
2017-05-10 14:25:03 +02:00
Alexey Sedunov
0a5f9d8181 Move: Specify conflict containing declaration more precisely
Also do not render class fqname for member declarations

 #KT-17547 Fixed
2017-05-10 14:49:51 +03:00
Dmitry Jemerov
d49e9d7064 Fix override navigation from properties defined in primary constructor
EA-91185 - CCE: KotlinLineMarkerProviderKt$OVERRIDDEN_PROPERTY$.browse
2017-04-28 12:02:20 +02:00
Alexey Sedunov
aa0f0ef02d Presentation: Do not use resolve to compute element description
Invoking analysis on EDT may degrade editor performance
2017-04-17 23:00:08 +03:00
Pavel V. Talanov
4f701285b1 Light class builder: do not generate methods delegating to DefaultImpls in kotlin classes
Class APIs from java point of view stays the same so we can avoid generating those methods
Otherwise we have to calculate all supertypes when getMethods() is called,
    which imposes severe performance penalties
We have to pretend these methods are not 'abstract' (also we consider them 'default' for safety)
    so java highlighting does not report "class should be abstract" for all inheritors
We have to manually report "class should be abstract" on some of the java inheritors,
    specifically those that are implementing interfaces directly
	    as opposed to extending kotlin classes implementing those interfaces
2017-04-09 15:09:01 +03:00
Denis Zharkov
dcc98e3839 Improve check for statements-only postfix templates
Before this change the check was quite complicated
because of cases like:
for (i in 1..9)
    foo(i)<caret>

It's not located in a block, but in the same time it's a stament.
So we had a tricky heuristics that if is parent is not a block, then
we should check if element isn't used as expression.

Of course this heuristics is wrong, e.g. for import/package nodes.

The solution is to reuse similar logic from BasicExpressionTypingVisitor.
it has been checked once that statement container is one of:
- KtBlockExpression
- KtContainerNodeForControlStructureBody
- KtWhenEntry

So there's no need to check anything else

 #KT-14986 Fixed
 #KT-14483 Fixed
2017-03-15 10:47:12 +03:00
Denis Zharkov
bd88919411 Refine predicate for 'iter' postfix template
Use IterableTypesDetection to determine if the given expression may be iterated

 #KT-14134 Fixed
 #KT-14129 Fixed
2017-03-15 10:47:12 +03:00
Alexey Sedunov
983ad55357 Code Insight: Preserve identifier quotes in "Generate equals()/hashCode()/toString()" actions
#KT-15883 Fixed
2017-01-25 14:24:51 +03:00
Alexey Sedunov
8c882f0d27 Override Members: Allow overriding virtual synthetic members (e.g. equals(), hashCode(), toString(), etc.) in data classes
#KT-15563 Fixed
2017-01-13 15:17:35 +03:00
Alexey Sedunov
862966fd33 Override/Implement Members: Support all nullability annotations respected by the Kotlin compiler
#KT-12704 Fixed
 #KT-15583 Fixed
2017-01-13 15:17:34 +03:00
Alexey Sedunov
612dffb893 Highlighting: Add line markers for suspend function calls in coroutines
#KT-14689 Fixed
2017-01-10 21:16:10 +03:00
Mikhail Glukhikh
a846e41b46 Cleanup: KotlinLineMarkerProvider 2016-12-19 15:46:27 +03:00
Nikolay Krasko
2bb48fc802 Allow empty single-line bodies in property accessors 2016-12-14 13:40:44 +03:00
Ilya Gorbunov
daac46bce5 Fix rendering in test output after introducing type aliases for the types used in those tests. 2016-11-16 18:47:42 +03:00
Dmitry Jemerov
25c7dccd3b Don't consider function names as candidates for "Show expression type" (KT-14384) 2016-10-28 16:40:27 +02:00
Dmitry Jemerov
4246fcf256 "Show expression type" no longer shows elements which enclose the element at caret (KT-14436) 2016-10-28 16:40:27 +02:00
Dmitry Jemerov
57680ae003 Don't show literals in "show expression type" popup 2016-10-28 16:40:27 +02:00
Dmitry Jemerov
e6c05c3a19 Don't show type for reference expressions inside KtCallableReference (KT-14530) 2016-10-28 16:40:27 +02:00
Dmitry Jemerov
f933cf5395 Specify test framework to use explicitly in generate test tests 2016-10-19 17:04:42 +02:00
Alexey Sedunov
5bb035282f Generate 'toString()': Permit for data classes
#KT-14122 Fixed
2016-10-05 11:32:42 +03:00
Valentin Kipyatkov
75d56e4902 Better tooltip for try 2016-10-04 19:36:07 +03:00
Valentin Kipyatkov
a2976ac281 Better presentation for property accessor 2016-10-04 19:36:07 +03:00
Dmitry Jemerov
dbbba45d63 show type of control statements used as expressions 2016-10-04 18:23:32 +02:00
Dmitry Jemerov
02a5856ffd don't show function literals and selectors of qualified expressions in "show expression type" 2016-10-04 18:23:32 +02:00
Dmitry Jemerov
256fd04e95 show detailed smart cast info in "Show expression type" (KT-8803) 2016-10-04 18:23:32 +02:00
Dmitry Jemerov
2141cd268c don't include properties with declared return type and property accessors in "show expression type" popup 2016-10-04 18:23:32 +02:00
Dmitry Jemerov
e8fcd194f9 add test for obsolete KT-11601 2016-10-04 18:23:32 +02:00
Dmitry Jemerov
4f1f313b36 don't show type of statements if they are not used as expressions 2016-10-04 18:23:32 +02:00
Dmitry Jemerov
6dccfd3b22 use short names in Show Expression Type
#KT-11310 Fixed
2016-10-04 18:23:32 +02:00
Dmitry Jemerov
4346afa19e test for handling smart casts in "show expression type"
#KT-10588 Fixed
2016-10-04 18:23:32 +02:00
Dmitry Jemerov
032d50bbbf handle multi-declarations in "show expression type" 2016-10-04 18:23:32 +02:00
Dmitry Jemerov
fbd2c48fbd don't offer functions with block body and functions with declared return type as candidates for "show expression type" 2016-10-04 18:23:32 +02:00
Dmitry Jemerov
7b644e2c52 support "show expression type" in variable declaration position
#KT-10095 Fixed
2016-10-04 18:23:32 +02:00
Dmitry Petrov
06101dba52 KT-13961 REDECLARATION not reported on private-in-file 'foo' vs public 'foo' in different file
Private-in-file declarations conflict with public overload-equivalent declarations
in other files in the same package.

Move functions for grouping possible redeclarations to OverloadResolver
(since they are used only there).

Refactor redeclarations / conflicting overloads reporting.
2016-10-03 11:50:29 +03:00
Denis Zharkov
0120085443 Refine expression kind definition in postfix templates
- Do not treat if without else as values
- Some statements aren't contained in block (see tests)

 #KT-14107 Fixed
 #KT-14110 Fixed
2016-10-03 10:36:48 +03:00
Denis Zharkov
3c24996073 Refine default postfix templates selector
There is new settings checkCanBeUsedAsValue
Also expression filtering are split into to parts:
- getNonFilteredExpressions is trivially goes until it reaches
first block body of some declarations
- all additional filtering is merged into Condition that is passed into
PostfixTemplateExpressionSelectorBase super-call

Notable changes for users:
- do not suggest try for non-top-level expressions
- do not suggest var/par/etc for loops
2016-10-03 10:36:48 +03:00
Denis Zharkov
ba2d2a036e Suggest postfix templates on lambda expressions 2016-10-03 10:36:48 +03:00
Denis Zharkov
54d9b4bee6 Do not suggest assignment as a subject in postfix templates
#KT-14077 Fixed
2016-10-03 10:36:48 +03:00
Denis Zharkov
18146fafdf Allow if/when/try postfix templates in expression position
#KT-14078 Fixed
2016-10-03 10:36:48 +03:00