Commit Graph

3282 Commits

Author SHA1 Message Date
Anna.Kozlova
a5c39af78d NPE
GitOrigin-RevId: a42f146586b4444bd57622440e20cf52cb9bc22e
2019-12-05 07:33:56 +00:00
Tagir Valeev
6ac3052a65 CustomMethodHandlers: evaluate enum name()
GitOrigin-RevId: 2172db0a3c0355359d9e0f822409483b8f3c35e7
2019-12-02 10:33:58 +00:00
Tagir Valeev
546d12c3f8 DFA: make CFG independent on assertion status
GitOrigin-RevId: 4c81f96bb7d6108d4e74898bfc5f014e753132e1
2019-12-02 05:12:00 +00:00
Tagir Valeev
f88bb8439b LiveVariablesAnalyzer: use EscapeInstruction instead of visiting the closure
GitOrigin-RevId: 0856d5b5e4c15d9ce6fd83eefab92fb4a5373aac
2019-11-29 11:10:15 +00:00
Tagir Valeev
e3704df1e9 EmptyInstruction and LambdaInstruction converged to ClosureInstruction
GitOrigin-RevId: 3c17ea3ea8271ee935ccdabb95b8d098c5a6b858
2019-11-29 11:10:15 +00:00
Tagir Valeev
15fe5767f3 DFA: redundant code removed; some warnings fixed
GitOrigin-RevId: 16e2bc4b9e767a96c22ef68050e59e79d3d0086b
2019-11-29 08:03:39 +00:00
Tagir Valeev
66305e31a3 ExpressionPushingInstruction as an abstract class
GitOrigin-RevId: 53d07646ac43396727c0dd0ef52eb812e751c2c6
2019-11-29 08:03:39 +00:00
Tagir Valeev
e7db245b55 BranchingInstruction as an interface
GitOrigin-RevId: 00feaf17e42f8628300367d3b28283abe0e5c953
2019-11-29 08:03:39 +00:00
Tagir Valeev
19283ee76f DataFlowInstructionVisitor: unify method reference results and constant results processing
GitOrigin-RevId: 16b69d9f678f71ab6c9d03a93b96ffe72b5be618
2019-11-29 07:07:42 +00:00
Tagir Valeev
ccb7c7addc DataFlowInstructionVisitor#isInstanceofRedundant fixed
GitOrigin-RevId: eacf2331a6aca6d00a5dbdb1a62d8249fab9ad1e
2019-11-29 06:42:31 +00:00
Tagir Valeev
8af75539ff ExpressionChunk#toString (IDEA-CR-55931)
GitOrigin-RevId: 261eaa11e0f84b95c8a78c011955ff884a7b2a64
2019-11-28 11:02:29 +00:00
Tagir Valeev
cd2d220091 ControlFlowAnalyzer: support polyadic division
GitOrigin-RevId: 80cda272dbfb96b58313575b787fa1b06636b60e
2019-11-28 05:14:49 +00:00
Tagir Valeev
9fae6c627e BranchingInstruction: remove true/false reachable tracking
1. handleBranchingInstruction replaced with reportRedundantInstanceOf
2. reportConstants now reports sub-expressions as well

GitOrigin-RevId: deb69fe4c35ad7500b85e21d0ff153f9ffe60b56
2019-11-28 05:14:49 +00:00
Tagir Valeev
774e67ce88 ControlFlowAnalyzer: remove special handling for boolean XOR
The only special thing we need to do now is to replace XOR token with NE; this is done in BinopInstruction constructor

GitOrigin-RevId: c783785f812c6c3f950296205d3f8a57eac59976
2019-11-27 12:11:41 +00:00
Tagir Valeev
f8fec32e53 Non-short-circuiting and/or: make it simple BinopInstruction
GitOrigin-RevId: b7ceabf9b387bb743643cecc04fa460b07071616
2019-11-27 12:11:41 +00:00
Tagir Valeev
7fe0cb9d74 DataFlowInspectionBase#reportUnreachableSwitchBranches: do not use trueSet and falseSet
GitOrigin-RevId: 15de1c6e33635a8d9ac71fd8db9ed0081632c32f
2019-11-27 12:11:41 +00:00
Toshiaki Kameyama
9c6fcc15f3 LocalCanBeFinal: fix false negative in lambda body
#IDEA-227649

GitOrigin-RevId: 33a5c47c1cad5c2a6057ad97fad74d74962252ae
2019-11-26 21:05:28 +00:00
Vladimir Krivosheev
6f359c7a9d ensure that app is disposed correctly and message bus respect project container state
GitOrigin-RevId: d0ed042a9008c0397030694a2984b159dbd2c31b
2019-11-22 21:31:42 +00:00
Tagir Valeev
cda201cedf DfaMemoryStateImpl: ignore NaNs
GitOrigin-RevId: 33daf7f411fd5ae14ac801eb5b94b420a4a09182
2019-11-22 10:42:45 +00:00
Tagir Valeev
7a16b10a90 Better support for substring in DFA
GitOrigin-RevId: 72a50f3948de1852583432d1b82c11da055bd2ec
2019-11-22 07:03:48 +00:00
Daniil Ovchinnikov
ffbcf84f82 add few FQN constants CommonClassNames and use them
- `JAVA_UTIL_LINKED_HASH_SET`
- `JAVA_UTIL_LINKED_LIST`
- `JAVA_UTIL_QUEUE`
- `JAVA_UTIL_SORTED_SET`
- `JAVA_UTIL_STACK`

GitOrigin-RevId: 14129d2a0ed006a9df3bc84a3d45a182a4c66964
2019-11-21 16:17:15 +00:00
Tagir Valeev
e3e0174973 Inline lambdas from locals that used only once (IDEA-224757)
GitOrigin-RevId: 28030561c5d5a8bd53b944981522ceedb45f1e0e
2019-11-21 03:44:39 +00:00
Tagir Valeev
c3e78325e1 DfaCondition: cosmetic fixes
GitOrigin-RevId: 3f73e3ce19daafa66a8cbb4e3d1d74e668da580d
2019-11-19 09:33:35 +00:00
Anna.Kozlova
6ce30214f3 non blocking read action
IDEA-CR-55249

GitOrigin-RevId: 6cd5bab82c24c350f81a3936612112bd024734f4
2019-11-19 09:12:58 +00:00
Tagir Valeev
e7b0a9cde3 DFA refactoring: DfaRelationValue moved to DfaRelation, separate hierarchy
Now all conditions that could be applied to DfaMemoryState are not DfaValue's and not deduplicated in factory. So we always know whether we are working with DfaValue or with DfaCondition.

GitOrigin-RevId: 10114308c49a4ff20f32025ceec0b8884c6699e9
2019-11-19 08:33:31 +00:00
Tagir Valeev
ae60cb8a7f Warnings fixed
GitOrigin-RevId: b494c1c52d36c22c1da29011581bda15afbdffbc
2019-11-19 08:33:31 +00:00
Tagir Valeev
2dc75f0d1b Warnings fixed
GitOrigin-RevId: 97b4fb42559f9c9e5ab7e79e55a2d2defc2da154
2019-11-19 08:33:31 +00:00
Tagir Valeev
384e3216ff RelationType now top-level class
GitOrigin-RevId: cab23504ed037c689b2b3c652e53a237de5daa69
2019-11-19 05:31:54 +00:00
Tagir Valeev
82a32ee2df DfaAssist: move control flow building to manager thread leaving interpretation in background
Review ID: IDEA-CR-54712

GitOrigin-RevId: 66098a9af496a94a17785ab990a45454c09d66ea
2019-11-19 05:14:43 +00:00
Anna Kozlova
f85dcc7c61 add read actions for global inspections
IDEA-CR-55249

GitOrigin-RevId: 7a0bfebefcc96eb2678d9b34ccd372d525f84ab0
2019-11-18 21:31:51 +00:00
Tagir Valeev
0edbd7dcec analyzeCodeBlock: initialStateAdjuster initial as could be implemented using createInitialInstructionStates
GitOrigin-RevId: 7d744b43bd1bc8272ee95d3073f6c4b1d573cf95
2019-11-18 07:33:38 +00:00
Tagir Valeev
e90f84e72d DataFlowRunner: move ignoreAssertions to the field
GitOrigin-RevId: f43cdfeda78ff6fdb381962d2a2f37a7926fe830
2019-11-18 07:33:38 +00:00
Tagir Valeev
1b98680aa9 DataFlowRunner: context-only ctor
GitOrigin-RevId: c4ec11e99de25ee008d80766f50f6dbe1ffbb4a7
2019-11-18 07:33:38 +00:00
Tagir Valeev
1064a88624 ExpandableArray: tune initial size
GitOrigin-RevId: ebaa2d634946051cbaad35229cd594c3f51ff609
2019-11-18 07:33:38 +00:00
Tagir Valeev
00fcd8cf1c DataFlowRunner: reordering constructor arguments
GitOrigin-RevId: 00ebff95fecc9ab8f8a89afac7550d784033c593
2019-11-18 07:33:38 +00:00
Tagir Valeev
bf7c905768 StandardDataFlowRunner inlined (as it added no real value)
GitOrigin-RevId: bca772ccffa95e89383da84ce0e2e49c8b825937
2019-11-18 07:33:38 +00:00
Anna.Kozlova
3f5dd8da98 global inspections: try to get rid of long read lock (IDEA-226784)
GitOrigin-RevId: ed2c7e44b9f037d892379ab96d4732bedd10f51a
2019-11-14 09:07:48 +00:00
Tagir Valeev
4a0f09175c DataFlowInspectionBase: lambdas dedup
GitOrigin-RevId: 13405f1e08b33ec52d25ee3a6d78b415d22f3b8b
2019-11-12 11:05:04 +00:00
Tagir Valeev
66cf3aaee7 Report nullable returns from lambdas whose nullability is derived via a substitution
Fixes IDEA-226568 Null static analysis does not work for lambda return types

GitOrigin-RevId: 5460e2c650da24368a3b3ee4cf572b2b6f6763ba
2019-11-12 06:33:21 +00:00
Tagir Valeev
881c8edf0d CustomMethodHandlers: expect unknown size
Fixes EA-216984 - IAE: SpecialFieldValue.<init>

GitOrigin-RevId: 383e58d6c517c116ab5657d624df31791eabe4ba
2019-11-08 10:34:40 +00:00
Tagir Valeev
57f085a5ce inferenceResults.kt: expect that single call can be not restored correctly
Fixes EA-217031 - TCE: PurityInferenceResult.callsOnlyPureMethods

GitOrigin-RevId: 8b3e68b3df48aaa6cadd80d0e5f751353dca6c9a
2019-11-08 10:05:02 +00:00
Tagir Valeev
503add0002 SumTerminalStep#pushInitialValue: expect non-primitive type, e.g. if custom sum() is occurred
Fixes EA-217041 - NPE: StreamChainInliner$SumTerminalStep.pushInitialValue

GitOrigin-RevId: 5ff6526308d63ddb0f5e829d8c22750c91f9ba58
2019-11-08 10:05:02 +00:00
Alexey Kudravtsev
850cf546dc replace Logger.getInstance(#fqn) with Logger.getInstance(klass.class) to reduce constant pool and code size and make code more refactorable
GitOrigin-RevId: 4ef94813858973e44449a20cf8b09174c8df5fce
2019-11-07 17:02:46 +00:00
Alexey Kudravtsev
5958b04995 fix invalid class name in Logger.getInstance
GitOrigin-RevId: c0ccd2efdaec8ecdeba9191e560cee27b6531185
2019-11-07 17:02:46 +00:00
Tagir Valeev
a815811dba IDEA-226296 Forward compatibility inspection
GitOrigin-RevId: eadb0e5ec707311f802879dd347fa7a72a67d0af
2019-11-07 02:40:58 +00:00
Tagir Valeev
9ab9138cdf IDEA-226284 Warn about unqualified 'yield' method usage
GitOrigin-RevId: ec260801f8968d0f70f919cf4104fd2c9a3498ed
2019-11-07 02:40:58 +00:00
Tagir Valeev
1731245617 IDEA-226191 Use Java dataflow to assist the step-by-step debugging: draft implementation
For now switched off by default (use debugger.show.values.from.dfa)

GitOrigin-RevId: a983ef0b73ddec7e4987a2c162035e74c72a7b73
2019-11-07 02:40:58 +00:00
Tagir Valeev
8b2be827bc DFA: refactor; separate CFG build phases and abstract interpretation
GitOrigin-RevId: c87ca36055e9d0eb04cb2593955b9f483452fac0
2019-11-07 02:40:58 +00:00
Roman.Ivanov
6aa27315f9 HardcodedContracts: weaken contract for arraycopy, do not check exact bounds of length
GitOrigin-RevId: f1ccbec48e0801248b30bb097e01a0553dc12258
2019-11-07 02:40:58 +00:00
Roman.Ivanov
36e52aee65 IDEA-225974: add contract to System.arraycopy
GitOrigin-RevId: 3416f038435d66e6d8118a51706d629546ded6a3
2019-11-07 02:40:58 +00:00