Commit Graph

1068 Commits

Author SHA1 Message Date
Anna.Kozlova
12554167e7 inference on incomplete code (EA-90195 - AIOOBE: PsiTypesUtil.getParameterType) 2016-10-20 19:04:25 +02:00
Anna.Kozlova
41c2429966 new inference: postpone unresolved variables in favor to variables with proper equals bound 2016-10-11 10:27:29 +02:00
Anna.Kozlova
98094c72de lambda: ensure deep nested lambdas get target types from top level inference (IDEA-157314) 2016-10-07 13:55:01 +02:00
Anna.Kozlova
b560ee5910 lambda highlighting: if return statement has problem, try to highlight only corresponding return even if containing inference failed 2016-10-07 13:55:01 +02:00
Anna.Kozlova
62d25f9d05 new inference: provide incomplete inference results for lambda (IDEA-162035; IDEA-155230) 2016-10-06 16:21:05 +02:00
Anna.Kozlova
031f71c5b3 redundant cast: don't highlight conditional with functional branches (IDEA-161971) 2016-10-04 18:45:14 +02:00
Anna.Kozlova
3332a677a6 allow functional interfaces in conditionals inside assignment or invocation contexts only 2016-10-04 18:45:14 +02:00
peter
53867e057f IDEA-161862 Lambda Expressions not showing as implementations of an interface 2016-09-29 11:31:20 +02:00
Anna Kozlova
c95ba9968d testdata 2016-09-22 17:25:47 +03:00
Anna Kozlova
926d7063f5 fix testdata 2016-09-19 18:50:55 +03:00
Anna Kozlova
b8f0e626b9 java 8 diamonds: include constructor's type parameters in inference constraints (IDEA-160918) 2016-09-19 17:43:55 +03:00
Anna Kozlova
f4dae32d7f overload resolution: prefer candidates with functional formal type if lambda is passed; this way conflict would be resolved and nested error would be shown instead 2016-09-16 08:34:15 +03:00
peter
d408fdc798 IDEA-161250 Semicolon added in the middle of code 2016-09-15 12:03:42 +02:00
Anna Kozlova
2ec75e05a1 method refs: prefer unhandled exception to wrong return type error (IDEA-160251) 2016-08-25 17:36:03 +03:00
Anna Kozlova
1bece25b95 inference: when unchecked conversion was applied, resolve variables against raw substitutor 2016-08-17 13:53:02 +03:00
peter
9776d5a28d speedup functional expression search (IDEA-159107)
* filter inapplicable expressions without loading AST if possible, via approximate resolve
* for that, store the approximate call chains in index
* iterate over files once, not for each empty marker Runnable interface separately
* don't rely on generic method parameter index: it's huge, memory-hungry and works only in Java
2016-08-13 12:12:19 +02:00
peter
e8ea2598f3 fun expr search: minor improvements after reviews 2016-08-13 12:12:19 +02:00
Anna.Kozlova
369c9a24b4 diamonds: fix conflicting names between constructor and class type parameters (rename the constructor type parameters) 2016-08-09 15:52:11 +02:00
Anna.Kozlova
0e3d077bfe fix inheritance of abstract and default methods when multiple defaults are present 2016-08-09 15:52:11 +02:00
Anna Kozlova
8ac15c13de check context for functional expressions once (IDEA-159362) 2016-08-08 08:35:27 +02:00
Anna Kozlova
ccf3beba42 check diamond applicability over static factory underneath (IDEA-159287) 2016-08-08 08:35:27 +02:00
peter
522e0b9c2d don't visit jdk Stream API usages when searching for unrelated functional interface implementations 2016-08-03 12:49:11 +02:00
peter
c71a1e7136 IDEA-158267 Parameter completion overwrites the following lambda declaration ' () -> {}' 2016-07-27 12:15:56 +02:00
peter
22b9dc61a6 fin functional expressions of SAM interfaces related to the given one 2016-07-23 23:05:56 +02:00
peter
2a93e063bd rewrite functional expression search to use stub index 2016-07-22 17:41:21 +02:00
Anna.Kozlova
035b6d9d1f lambda return type inconsistency: highlight all found errors (IDEA-158853) 2016-07-21 19:03:45 +02:00
peter
1c451db9ad a test that lambdas in constructor calls are found 2016-07-21 12:16:42 +02:00
peter
0a4f995460 find lambdas passed into vararg methods 2016-07-21 12:16:41 +02:00
Anna.Kozlova
3ee60dba1d method ref: ensure top substitutor is not overridden with raw replacement from second method ref search (IDEA-158636) 2016-07-18 14:57:04 +02:00
Anna Kozlova
1193a54876 warn about unused parameter if method is used locally as method reference as it could be transformed to equivalent lambda (IDEA-157988) 2016-06-29 20:32:32 +03:00
Anna Kozlova
3cfd5be8c0 bombed test for resolution with cycle 2016-06-29 16:18:27 +03:00
Anna Kozlova
7968b2bbbb apply capture conversion for captured wildcard bound according to the direct supertype of parameterized type specification (IDEA-157586) 2016-06-22 15:24:15 +03:00
Anna Kozlova
3805d51554 subtyping constraint: apply capture conversion for captured wildcard bound according to the direct supertype of parameterized type specification 2016-06-22 15:24:15 +03:00
Anna Kozlova
a330f9c2f7 inference: treeWalkUp if overload is done under current argumentList caused by lambda parameter type inference (IDEA-157676) 2016-06-22 15:24:15 +03:00
Anna Kozlova
1fcb534fcb highlight diamonds as type parameter list (IDEA-156859) 2016-06-06 17:52:24 +03:00
Anna Kozlova
3e7b1dca62 conditional: treat nulls separately and accept them as numeric/boolean branches (IDEA-157025) 2016-06-03 15:28:58 +03:00
Anna Kozlova
9c95fa5524 don't try to infer from top if overloaded flag is on (IDEA-156937) 2016-06-02 17:01:51 +03:00
Anna Kozlova
d9c65ce4ee ensure functional interface is found if assigned to field in another file (IDEA-156592) 2016-05-31 20:21:14 +03:00
Anna Kozlova
99fe682d0b Revert: overload resolution: don't prefer concrete over abstract if the signatures are not override-equivalent (2bedb80d81) 2016-05-31 11:44:10 +03:00
Anna Kozlova
2bedb80d81 overload resolution: don't prefer concrete over abstract if the signatures are not override-equivalent 2016-05-30 11:28:01 +03:00
Anna Kozlova
7f8b5f8952 redundant cast: process branches of conditional expressions with respect to expected type for functional expressions (IDEA-156480) 2016-05-25 18:40:17 +03:00
peter
dc64af7f22 IDEA-156379 Suggested "collect(Collectors.toList())" ignores static Collectors import 2016-05-24 15:21:50 +02:00
Anna.Kozlova
107abaf891 good code red: applicability check for non-generic method requires types calculation 2016-05-20 21:44:12 +02:00
Anna.Kozlova
ce58f62d19 lambda.isValueCompatible should not cache inference results for calls inside lambda body as they may depend on incomplete top level inference where LambdaExpressionCompatibilityConstraint is reduced (IDEA-156311) 2016-05-20 18:52:45 +02:00
Anna.Kozlova
ad6352ce0b upcoming changes to the spec and javac (JDK-8145614; JDK-8142876) 2016-05-20 18:52:45 +02:00
Anna.Kozlova
25352dce0b avoid checks over not applicable methods (IDEA-156196) 2016-05-19 16:47:28 +02:00
peter
d167a4e820 don't suggest break/continue inside lambda/anonymous inside a loop (IDEA-CR-10869) 2016-05-19 10:58:51 +02:00
Anna.Kozlova
3dd26b5936 testdata on partially raw types inferred by javac 2016-05-09 19:42:35 +02:00
Anna.Kozlova
d85c70d870 invocation type inference: don't create fresh variables for all type parameters but only for those where wildcards are used in return type (IDEA-155627; IDEA-151220; IDEA-151387) 2016-05-06 18:00:16 +02:00
peter
20f69c8111 remove wrong capture treatment: the completion result is incorrect (IDEA-155188) 2016-05-03 14:25:59 +02:00