Merge remote-tracking branch 'origin/master'
authorIlya.Kazakevich <Ilya.Kazakevich@jetbrains.com>
Thu, 10 Mar 2016 22:15:23 +0000 (01:15 +0300)
committerIlya.Kazakevich <Ilya.Kazakevich@jetbrains.com>
Thu, 10 Mar 2016 22:15:23 +0000 (01:15 +0300)
679 files changed:
.idea/libraries/junit5_rt.xml [new file with mode: 0644]
.idea/libraries/opentest4j.xml [new file with mode: 0644]
.idea/modules.xml
build/conf/nsis/idea.nsi
build/conf/nsis/idea_en.nsi
build/scripts/dist.gant
build/scripts/layouts.gant
build/scripts/libLicenses.gant
colorSchemes/src/colorSchemes/all_hallows_eve.xml
colorSchemes/src/colorSchemes/blackboard.xml
colorSchemes/src/colorSchemes/cobalt.xml
colorSchemes/src/colorSchemes/github.xml
colorSchemes/src/colorSchemes/monokai.xml
colorSchemes/src/colorSchemes/rails_casts.xml
colorSchemes/src/colorSchemes/twilight.xml
java/compiler/impl/src/com/intellij/compiler/actions/CompileActionBase.java
java/compiler/impl/src/com/intellij/compiler/server/BuildManager.java
java/debugger/impl/debugger-impl.iml
java/debugger/impl/src/com/intellij/debugger/engine/evaluation/CodeFragmentFactoryContextWrapper.java
java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/CatchEvaluator.java [new file with mode: 0644]
java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/CodeFragmentEvaluator.java
java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/EvaluatorBuilderImpl.java
java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/ExpressionEvaluatorImpl.java
java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/ReturnEvaluator.java [new file with mode: 0644]
java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/ThrowEvaluator.java [new file with mode: 0644]
java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/TryEvaluator.java [new file with mode: 0644]
java/debugger/openapi/src/com/intellij/debugger/engine/DebuggerUtils.java
java/execution/impl/src/com/intellij/execution/junit/InheritorChooser.java
java/execution/impl/src/com/intellij/execution/junit/JUnitUtil.java
java/java-analysis-impl/src/com/intellij/codeInspection/AnnotateMethodFix.java
java/java-analysis-impl/src/com/intellij/codeInspection/javaDoc/JavaDocLocalInspectionBase.java
java/java-analysis-impl/src/com/intellij/codeInspection/javaDoc/JavaDocReferenceInspectionBase.java
java/java-analysis-impl/src/com/intellij/codeInspection/javaDoc/JavadocHighlightUtil.java [new file with mode: 0644]
java/java-analysis-impl/src/com/intellij/codeInspection/nullable/AnnotateOverriddenMethodParameterFix.java
java/java-analysis-impl/src/com/intellij/codeInspection/uncheckedWarnings/UncheckedWarningLocalInspectionBase.java
java/java-impl/src/com/intellij/codeInsight/completion/JavaDocCompletionContributor.java
java/java-impl/src/com/intellij/codeInsight/daemon/impl/JavaLineMarkerProvider.java
java/java-impl/src/com/intellij/codeInsight/daemon/impl/RecursiveCallLineMarkerProvider.java
java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/CreateLocalFromUsageFix.java
java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/MethodParameterFix.java
java/java-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/ReplacePrimitiveWithBoxedTypeAction.java
java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/JavaSmartEnterProcessor.java
java/java-impl/src/com/intellij/codeInsight/editorActions/smartEnter/MissingTryBodyFixer.java [new file with mode: 0644]
java/java-impl/src/com/intellij/codeInsight/intention/impl/SurroundAutoCloseableAction.java
java/java-impl/src/com/intellij/codeInspection/deadCode/DeadHTMLComposer.java
java/java-impl/src/com/intellij/codeInspection/deadCode/DummyEntryPointsPresentation.java
java/java-impl/src/com/intellij/codeInspection/deadCode/UnusedDeclarationPresentation.java
java/java-impl/src/com/intellij/codeInspection/ex/HTMLJavaHTMLComposerImpl.java
java/java-impl/src/com/intellij/codeInspection/javaDoc/JavaDocLocalInspection.java
java/java-impl/src/com/intellij/javadoc/JavadocConfiguration.java
java/java-impl/src/com/intellij/javadoc/JavadocGenerationManager.java
java/java-impl/src/com/intellij/refactoring/extractMethodObject/ExtractLightMethodObjectHandler.java
java/java-impl/src/com/intellij/refactoring/introduceParameter/AbstractJavaInplaceIntroducer.java
java/java-impl/src/com/intellij/refactoring/typeCook/Util.java
java/java-impl/src/com/intellij/refactoring/ui/TypeSelectorManagerImpl.java
java/java-indexing-api/src/com/intellij/psi/search/searches/DirectClassInheritorsSearch.java
java/java-indexing-impl/src/com/intellij/psi/impl/search/JavaDirectInheritorsSearcher.java
java/java-psi-api/src/com/intellij/codeInsight/AnnotationUtil.java
java/java-psi-api/src/com/intellij/psi/javadoc/JavadocTagInfo.java
java/java-psi-impl/src/com/intellij/psi/impl/source/PsiJavaCodeReferenceElementImpl.java
java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/ExceptionTagInfo.java
java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/JavadocManagerImpl.java
java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/ParamDocTagInfo.java
java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/ReturnDocTagInfo.java
java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/SeeDocTagInfo.java
java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/SerialDocTagInfo.java
java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/SimpleDocTagInfo.java
java/java-psi-impl/src/com/intellij/psi/impl/source/javadoc/ValueDocTagInfo.java
java/java-psi-impl/src/com/intellij/psi/impl/source/resolve/graphInference/constraints/ExpressionCompatibilityConstraint.java
java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/PsiLambdaExpressionImpl.java
java/java-psi-impl/src/com/intellij/psi/impl/source/tree/java/ReplaceExpressionUtil.java
java/java-tests/testData/codeInsight/completeStatement/InsideResourceVariable.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/completeStatement/InsideResourceVariable_after.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/genericsHighlighting8/LooseInvocationContextForProperPrimitiveTypes.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/DoubleMissedTags.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/DuplicateDeprecated.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/DuplicateParam.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/DuplicateReturn.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/DuplicateSerial.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/DuplicateThrows.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/EnumConstructor.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/GenericsParams.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/IgnoreAccessors.java [moved from java/java-tests/testData/inspection/javaDocInspection/ignoreAccessors/src/Test.java with 85% similarity]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/IgnoreDuplicateThrows.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/LinkToItself.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/LinksInJavaDoc.java
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/MisplacedThrowsTag.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/MissedTags.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/MissedThrowsTag.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/See2.java
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/See6.java [deleted file]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/javaDoc/SeeNonRefs.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newLambda/CLikeArrayDeclarationInLambdaWithExplicitTypes.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/lambda/newMethodRef/IDEA152659.java [new file with mode: 0644]
java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/generifyFile/before2.java [new file with mode: 0644]
java/java-tests/testData/inspection/javaDocInspection/doubleMissedTags/expected.xml [deleted file]
java/java-tests/testData/inspection/javaDocInspection/doubleMissedTags/src/Foo.java [deleted file]
java/java-tests/testData/inspection/javaDocInspection/duplicateDeprecated/expected.xml [deleted file]
java/java-tests/testData/inspection/javaDocInspection/duplicateDeprecated/src/Foo.java [deleted file]
java/java-tests/testData/inspection/javaDocInspection/duplicateParam/expected.xml [deleted file]
java/java-tests/testData/inspection/javaDocInspection/duplicateParam/src/Foo.java [deleted file]
java/java-tests/testData/inspection/javaDocInspection/duplicateReturn/expected.xml [deleted file]
java/java-tests/testData/inspection/javaDocInspection/duplicateReturn/src/Foo.java [deleted file]
java/java-tests/testData/inspection/javaDocInspection/duplicateSerial/expected.xml [deleted file]
java/java-tests/testData/inspection/javaDocInspection/duplicateSerial/src/Foo.java [deleted file]
java/java-tests/testData/inspection/javaDocInspection/duplicateThrows/expected.xml [deleted file]
java/java-tests/testData/inspection/javaDocInspection/duplicateThrows/src/Foo.java [deleted file]
java/java-tests/testData/inspection/javaDocInspection/enumConstructor/expected.xml [deleted file]
java/java-tests/testData/inspection/javaDocInspection/enumConstructor/src/Foo.java [deleted file]
java/java-tests/testData/inspection/javaDocInspection/genericsParams/expected.xml [deleted file]
java/java-tests/testData/inspection/javaDocInspection/genericsParams/src/Foo.java [deleted file]
java/java-tests/testData/inspection/javaDocInspection/ignoreAccessors/expected.xml [deleted file]
java/java-tests/testData/inspection/javaDocInspection/ignoreDuplicateThrows/expected.xml [deleted file]
java/java-tests/testData/inspection/javaDocInspection/ignoreDuplicateThrows/src/Test.java [deleted file]
java/java-tests/testData/inspection/javaDocInspection/misorderedThrowsTag/expected.xml [deleted file]
java/java-tests/testData/inspection/javaDocInspection/misorderedThrowsTag/src/Test.java [deleted file]
java/java-tests/testData/inspection/javaDocInspection/missedTags/expected.xml [deleted file]
java/java-tests/testData/inspection/javaDocInspection/missedTags/src/Bar.java [deleted file]
java/java-tests/testData/inspection/javaDocInspection/missedTags/src/Foo.java [deleted file]
java/java-tests/testData/inspection/javaDocInspection/missedThrowsTag/expected.xml [deleted file]
java/java-tests/testData/inspection/javaDocInspection/missedThrowsTag/src/Test.java [deleted file]
java/java-tests/testData/refactoring/inlineLocal/ParenthesisAroundInlinedLambda.java [new file with mode: 0644]
java/java-tests/testData/refactoring/inlineLocal/ParenthesisAroundInlinedLambda.java.after [new file with mode: 0644]
java/java-tests/testData/refactoring/typeCook/convertToDiamond/after/Test.1.items [new file with mode: 0644]
java/java-tests/testData/refactoring/typeCook/convertToDiamond/after/Test.items [new file with mode: 0644]
java/java-tests/testData/refactoring/typeCook/convertToDiamond/after/test.java [new file with mode: 0644]
java/java-tests/testData/refactoring/typeCook/convertToDiamond/before/test.java [new file with mode: 0644]
java/java-tests/testSrc/com/intellij/codeInsight/CompleteStatementTest.java
java/java-tests/testSrc/com/intellij/codeInsight/daemon/JavadocHighlightingTest.java
java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/GenericsHighlighting8Test.java
java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/NewLambdaHighlightingTest.java
java/java-tests/testSrc/com/intellij/codeInsight/daemon/lambda/NewMethodRefHighlightingTest.java
java/java-tests/testSrc/com/intellij/codeInspection/JavaDocInspectionTest.java
java/java-tests/testSrc/com/intellij/index/IndexTest.groovy
java/java-tests/testSrc/com/intellij/index/StringIndex.java
java/java-tests/testSrc/com/intellij/refactoring/TypeCookTest.java
java/java-tests/testSrc/com/intellij/refactoring/inline/InlineLocalTest.java
java/structuralsearch-java/src/com/intellij/structuralsearch/JavaPredefinedConfigurations.java
java/structuralsearch-java/src/com/intellij/structuralsearch/JavaReplaceHandler.java
java/structuralsearch-java/src/com/intellij/structuralsearch/JavaStructuralSearchProfile.java
java/structuralsearch-java/src/com/intellij/structuralsearch/impl/matcher/JavaMatchingVisitor.java
java/testFramework/src/com/intellij/codeInsight/daemon/DaemonAnalyzerTestCase.java
java/typeMigration/src/com/intellij/refactoring/typeMigration/intentions/ConvertAtomicToLongAdderIntention.java
json/src/com/jetbrains/jsonSchema/JsonSchemaMappingsConfigurable.java
json/src/com/jetbrains/jsonSchema/impl/JsonSchemaReader.java
platform/analysis-api/src/com/intellij/codeInsight/intention/IntentionAction.java
platform/analysis-api/src/com/intellij/codeInspection/HTMLComposer.java
platform/analysis-api/src/com/intellij/codeInspection/QuickFix.java
platform/analysis-api/src/com/intellij/openapi/application/WriteActionAware.java [new file with mode: 0644]
platform/analysis-impl/src/com/intellij/codeHighlighting/Pass.java
platform/analysis-impl/src/com/intellij/codeHighlighting/TextEditorHighlightingPassRegistrar.java
platform/analysis-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java
platform/analysis-impl/src/com/intellij/codeInspection/ex/HTMLComposerImpl.java
platform/analysis-impl/src/com/intellij/codeInspection/ex/QuickFixWrapper.java
platform/analysis-impl/src/com/intellij/codeInspection/export/HTMLExporter.java
platform/boot/boot.iml
platform/boot/src/com/intellij/concurrency/IdeaForkJoinWorkerThreadFactory.java [new file with mode: 0644]
platform/core-api/src/com/intellij/lexer/StringLiteralLexer.java
platform/core-api/src/com/intellij/openapi/application/AcceptNestedTransactions.java [new file with mode: 0644]
platform/core-api/src/com/intellij/openapi/application/TransactionGuard.java
platform/core-api/src/com/intellij/openapi/application/TransactionKind.java
platform/core-api/src/com/intellij/openapi/application/WrapInTransaction.java
platform/core-api/src/com/intellij/psi/util/PsiCacheKey.java
platform/core-impl/src/com/intellij/concurrency/Job.java [moved from platform/core-api/src/com/intellij/concurrency/Job.java with 98% similarity]
platform/core-impl/src/com/intellij/openapi/application/TransactionGuardImpl.java
platform/core-impl/src/com/intellij/openapi/vfs/impl/ZipHandler.java
platform/core-impl/src/com/intellij/pom/core/impl/PomModelImpl.java
platform/core-impl/src/com/intellij/psi/impl/DocumentCommitThread.java
platform/core-impl/src/com/intellij/psi/impl/PsiDocumentManagerBase.java
platform/core-impl/src/com/intellij/psi/impl/PsiToDocumentSynchronizer.java
platform/diff-impl/src/com/intellij/diff/util/DiffTaskQueue.java
platform/dvcs-impl/src/com/intellij/dvcs/push/PushController.java
platform/dvcs-impl/src/com/intellij/dvcs/ui/BranchActionGroupPopup.java
platform/editor-ui-ex/src/com/intellij/openapi/editor/colors/ex/DefaultColorSchemesManager.java
platform/editor-ui-ex/src/com/intellij/openapi/editor/colors/impl/AbstractColorsScheme.java
platform/editor-ui-ex/src/com/intellij/openapi/editor/colors/impl/DefaultColorsScheme.java
platform/editor-ui-ex/src/com/intellij/openapi/editor/colors/impl/EmptyColorScheme.java [new file with mode: 0644]
platform/indexing-api/src/com/intellij/util/indexing/FileBasedIndexExtension.java
platform/indexing-api/src/com/intellij/util/indexing/IndexExtension.java [new file with mode: 0644]
platform/lang-api/src/com/intellij/codeInsight/completion/OffsetMap.java
platform/lang-api/src/com/intellij/execution/filters/Filter.java
platform/lang-api/src/com/intellij/execution/filters/RegexpFilter.java
platform/lang-api/src/com/intellij/execution/filters/UrlFilter.java
platform/lang-impl/src/com/intellij/analysis/AnalysisUIOptions.java
platform/lang-impl/src/com/intellij/codeInsight/completion/CodeCompletionHandlerBase.java
platform/lang-impl/src/com/intellij/codeInsight/completion/CompletionProgressIndicator.java
platform/lang-impl/src/com/intellij/codeInsight/completion/actions/BaseCodeCompletionAction.java
platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/SlowLineMarkersPassFactory.java
platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/quickfix/RenameElementFix.java
platform/lang-impl/src/com/intellij/codeInsight/editorActions/moveLeftRight/MoveElementLeftRightActionHandler.java
platform/lang-impl/src/com/intellij/codeInsight/editorActions/moveUpDown/BaseMoveHandler.java
platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/LookupImpl.java
platform/lang-impl/src/com/intellij/codeInsight/lookup/impl/actions/ChooseItemAction.java
platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateManagerImpl.java
platform/lang-impl/src/com/intellij/codeInsight/template/impl/editorActions/ExpandLiveTemplateCustomAction.java
platform/lang-impl/src/com/intellij/codeInspection/actions/RunInspectionIntention.java
platform/lang-impl/src/com/intellij/codeInspection/actions/ViewOfflineResultsAction.java
platform/lang-impl/src/com/intellij/codeInspection/ex/DescriptorComposer.java
platform/lang-impl/src/com/intellij/codeInspection/ex/GlobalInspectionContextImpl.java
platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionRVContentProvider.java
platform/lang-impl/src/com/intellij/codeInspection/ex/InspectionRVContentProviderImpl.java
platform/lang-impl/src/com/intellij/codeInspection/ex/PerformFixesModalTask.java
platform/lang-impl/src/com/intellij/codeInspection/offlineViewer/OfflineInspectionRVContentProvider.java
platform/lang-impl/src/com/intellij/codeInspection/ui/DefaultInspectionToolPresentation.java
platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionResultsView.java
platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionTree.java
platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionTreeLoadingProgressAware.java [moved from platform/core-impl/src/com/intellij/psi/impl/CommitToPsiFileAction.java with 54% similarity]
platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionTreeNode.java
platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionTreeUpdater.java
platform/lang-impl/src/com/intellij/codeInspection/ui/InspectionViewNavigationPanel.java
platform/lang-impl/src/com/intellij/codeInspection/ui/QuickFixToolbar.java
platform/lang-impl/src/com/intellij/codeInspection/ui/actions/ExportHTMLAction.java
platform/lang-impl/src/com/intellij/find/impl/FindDialog.java
platform/lang-impl/src/com/intellij/ide/projectView/impl/AbstractProjectViewPane.java
platform/lang-impl/src/com/intellij/openapi/module/impl/ModuleManagerComponent.java
platform/lang-impl/src/com/intellij/openapi/roots/impl/PushedFilePropertiesUpdaterImpl.java
platform/lang-impl/src/com/intellij/psi/impl/PsiDocumentManagerImpl.java
platform/lang-impl/src/com/intellij/psi/stubs/StubIndexImpl.java
platform/lang-impl/src/com/intellij/psi/stubs/StubUpdatingIndex.java
platform/lang-impl/src/com/intellij/refactoring/BaseRefactoringProcessor.java
platform/lang-impl/src/com/intellij/util/indexing/CustomImplementationFileBasedIndexExtension.java
platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexImpl.java
platform/lang-impl/src/com/intellij/util/indexing/FileBasedIndexProjectHandler.java
platform/lang-impl/src/com/intellij/util/indexing/MapReduceIndex.java
platform/platform-api/src/com/intellij/ide/Prefs.java [new file with mode: 0644]
platform/platform-api/src/com/intellij/ide/PrivacyPolicy.java [new file with mode: 0644]
platform/platform-api/src/com/intellij/openapi/ui/DialogWrapper.java
platform/platform-api/src/com/intellij/ui/SimpleColoredComponent.java
platform/platform-api/src/com/intellij/ui/components/MacScrollBarUI.java
platform/platform-api/src/com/intellij/util/ui/AnimatedIcon.java
platform/platform-api/src/com/intellij/util/ui/Animator.java
platform/platform-api/src/com/intellij/util/ui/ButtonlessScrollBarUI.java
platform/platform-api/src/com/intellij/util/ui/NSScrollerHelper.java
platform/platform-impl/src/com/intellij/concurrency/ApplierCompleter.java
platform/platform-impl/src/com/intellij/concurrency/JobLauncherImpl.java
platform/platform-impl/src/com/intellij/ide/SaveAndSyncHandlerImpl.java
platform/platform-impl/src/com/intellij/ide/actions/SaveAllAction.java
platform/platform-impl/src/com/intellij/idea/StartupUtil.java
platform/platform-impl/src/com/intellij/internal/ToggleDumbModeAction.java
platform/platform-impl/src/com/intellij/internal/statistic/StatisticsUtil.kt
platform/platform-impl/src/com/intellij/notification/EventLog.java
platform/platform-impl/src/com/intellij/notification/impl/NotificationsManagerImpl.java
platform/platform-impl/src/com/intellij/openapi/application/impl/ApplicationImpl.java
platform/platform-impl/src/com/intellij/openapi/components/impl/ServiceManagerImpl.java
platform/platform-impl/src/com/intellij/openapi/editor/colors/impl/EditorColorsManagerImpl.java
platform/platform-impl/src/com/intellij/openapi/editor/impl/CaretImpl.java
platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterComponentImpl.java
platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorImpl.java
platform/platform-impl/src/com/intellij/openapi/keymap/impl/ui/ActionsTreeUtil.java
platform/platform-impl/src/com/intellij/openapi/options/ex/SingleConfigurableEditor.java
platform/platform-impl/src/com/intellij/openapi/options/newEditor/SettingsDialog.java
platform/platform-impl/src/com/intellij/openapi/progress/util/BackgroundTaskUtil.java [moved from platform/diff-impl/src/com/intellij/diff/util/BackgroundTaskUtil.java with 88% similarity]
platform/platform-impl/src/com/intellij/openapi/progress/util/ProgressIndicatorUtils.java
platform/platform-impl/src/com/intellij/openapi/project/DumbServiceImpl.java
platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.java
platform/platform-impl/src/com/intellij/openapi/ui/impl/GlassPaneDialogWrapperPeer.java
platform/platform-impl/src/com/intellij/openapi/ui/impl/ShadowBorderPainter.java
platform/platform-impl/src/com/intellij/openapi/ui/impl/ShadowPainter.java [new file with mode: 0644]
platform/platform-impl/src/com/intellij/openapi/updateSettings/impl/UpdateInfoDialog.java
platform/platform-impl/src/com/intellij/openapi/util/ZipperUpdater.java
platform/platform-impl/src/com/intellij/openapi/wm/impl/FocusManagerImpl.java
platform/platform-impl/src/com/intellij/openapi/wm/impl/IdeFrameImpl.java
platform/platform-impl/src/com/intellij/openapi/wm/impl/status/ClockPanel.java
platform/platform-impl/src/com/intellij/openapi/wm/impl/status/MemoryUsagePanel.java
platform/platform-impl/src/com/intellij/remote/VagrantBasedCredentialsHolder.java
platform/platform-impl/src/com/intellij/ui/BalloonImpl.java
platform/platform-impl/src/com/intellij/ui/FontComboBox.java
platform/platform-impl/src/com/intellij/ui/popup/PopupFactoryImpl.java
platform/platform-impl/src/com/intellij/util/ui/SwingHelper.java
platform/platform-impl/src/net/sf/cglib/proxy/AdvancedEnhancer.java
platform/platform-resources-en/src/messages/CodeInsightBundle.properties
platform/platform-resources-en/src/messages/DiffBundle.properties
platform/platform-resources-en/src/messages/FeatureStatisticsBundle.properties
platform/platform-resources-en/src/messages/InspectionsBundle.properties
platform/platform-resources/src/PrivacyPolicy-1.0.html [moved from platform/platform-resources/src/PrivacyPolicy.html with 100% similarity]
platform/platform-tests/testSrc/com/intellij/internal/statistics/StatisticsUtilTest.kt
platform/platform-tests/testSrc/com/intellij/openapi/editor/impl/EditorImplTest.java
platform/platform-tests/testSrc/com/intellij/psi/impl/PsiDocumentManagerImplTest.java
platform/script-debugger/backend/src/StandaloneVmHelper.kt
platform/script-debugger/debugger-ui/src/DebugProcessImpl.kt
platform/smRunner/src/com/intellij/execution/testframework/sm/runner/GeneralIdBasedToSMTRunnerEventsConvertor.java
platform/smRunner/src/com/intellij/execution/testframework/sm/runner/events/BaseStartedNodeEvent.java
platform/smRunner/src/com/intellij/execution/testframework/sm/runner/events/TestFailedEvent.java
platform/smRunner/src/com/intellij/execution/testframework/sm/runner/events/TestFinishedEvent.java
platform/smRunner/src/com/intellij/execution/testframework/sm/runner/events/TestIgnoredEvent.java
platform/smRunner/src/com/intellij/execution/testframework/sm/runner/events/TestOutputEvent.java
platform/smRunner/src/com/intellij/execution/testframework/sm/runner/events/TestStartedEvent.java
platform/smRunner/src/com/intellij/execution/testframework/sm/runner/events/TestSuiteFinishedEvent.java
platform/smRunner/src/com/intellij/execution/testframework/sm/runner/events/TestSuiteStartedEvent.java
platform/smRunner/src/com/intellij/execution/testframework/sm/runner/events/TreeNodeEvent.java
platform/smRunner/testSrc/com/intellij/execution/testframework/sm/runner/GeneralIdBasedToSMTRunnerEventsConvertorTest.java
platform/structuralsearch/source/com/intellij/structuralsearch/plugin/replace/impl/Replacer.java
platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralReplaceTest.java
platform/structuralsearch/testSource/com/intellij/structuralsearch/StructuralSearchTest.java
platform/testFramework/src/com/intellij/testFramework/PlatformTestUtil.java
platform/util/src/com/intellij/openapi/util/Version.java
platform/util/src/com/intellij/util/containers/ContainerUtil.java
platform/util/src/com/intellij/util/io/FileAccessorCache.java
platform/util/src/com/intellij/util/io/PersistentHashMapValueStorage.java
platform/util/src/com/intellij/util/io/URLUtil.java
platform/util/testSrc/com/intellij/util/VersionTest.java [new file with mode: 0644]
platform/util/testSrc/com/intellij/util/io/UrlUtilTest.java
platform/vcs-impl/src/com/intellij/openapi/vcs/actions/AbstractCommonCheckinAction.java
platform/vcs-impl/src/com/intellij/openapi/vcs/actions/AnnotateDiffViewerAction.java
platform/vcs-impl/src/com/intellij/openapi/vcs/changes/conflicts/ChangelistConflictTracker.java
platform/vcs-impl/src/com/intellij/openapi/vcs/ex/LineStatusTracker.java
platform/vcs-impl/src/com/intellij/openapi/vcs/ex/LineStatusTrackerDrawing.java
platform/vcs-impl/src/com/intellij/openapi/vcs/impl/LineStatusTrackerManager.java
platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsGoToRefComparator.java [new file with mode: 0644]
platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsLogImpl.java
platform/vcs-log/impl/src/com/intellij/vcs/log/ui/VcsLogUiImpl.java
platform/vcs-log/impl/src/com/intellij/vcs/log/ui/actions/GoToHashOrRefAction.java
platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/DetailsPanel.java
platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/MainFrame.java
platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/VcsLogGraphTable.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/XDebugSessionImpl.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/WatchInplaceEditor.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XVariablesView.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XVariablesViewBase.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XWatchesViewImpl.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/actions/XCopyWatchAction.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/actions/XEditWatchAction.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/actions/XRemoveWatchAction.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/XDebugSessionTab.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/TreeInplaceEditor.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/XDebuggerTreeRenderer.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/actions/XFetchValueActionBase.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/WatchMessageNode.java [deleted file]
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/WatchNode.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/WatchNodeImpl.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/WatchesRootNode.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XStackFrameNode.java
platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueContainerNode.java
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/migration/UnnecessaryBoxingInspection.java
plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/packaging/EmptyDirectoryInspection.java
plugins/InspectionGadgets/src/com/siyeh/ig/performance/MethodMayBeStaticInspection.java
plugins/InspectionGadgets/testsrc/com/siyeh/ig/fixes/migration/UnnecessaryBoxingFixTest.java
plugins/devkit/resources/META-INF/plugin.xml
plugins/devkit/src/inspections/QuickFixGetFamilyNameViolationInspection.java
plugins/git4idea/src/git4idea/repo/GitRepositoryReader.java
plugins/git4idea/tests/git4idea/repo/GitRepositoryReaderNewTest.java [deleted file]
plugins/git4idea/tests/git4idea/repo/GitRepositoryReaderNewTest.kt [new file with mode: 0644]
plugins/github/src/org/jetbrains/plugins/github/GithubOpenInBrowserAction.java
plugins/gradle/src/org/jetbrains/plugins/gradle/execution/GradleConsoleFilterProvider.java
plugins/gradle/src/org/jetbrains/plugins/gradle/service/project/GradleProjectResolverUtil.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/annotator/GroovyAnnotator.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/dataFlow/types/TypeInferenceHelper.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/statements/typedef/GrTypeDefinitionMembersCache.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/impl/synthetic/GrReflectedMethodImpl.java
plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/processors/SubstitutorComputer.java
plugins/groovy/src/org/intellij/plugins/intelliLang/inject/groovy/GroovyLanguageInjectionSupport.java
plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/GrMoveToDirFix.java
plugins/groovy/src/org/jetbrains/plugins/groovy/codeInsight/GroovyLineMarkerProvider.java
plugins/groovy/src/org/jetbrains/plugins/groovy/intentions/control/CreateParameterForFieldIntention.java
plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/Gr23HighlightingTest.groovy
plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/Groovy23HighlightingTest.groovy
plugins/groovy/test/org/jetbrains/plugins/groovy/lang/highlighting/GroovyHighlightingTest.groovy
plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/introduceParameter/ExtractClosureTest.groovy
plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/introduceParameter/GrIntroduceParameterTest.groovy
plugins/groovy/test/org/jetbrains/plugins/groovy/refactoring/introduceParameter/IntroduceParameterTest.groovy
plugins/groovy/testdata/highlighting/DefaultInitializersAreNotAllowedInAbstractMethods.groovy
plugins/hg4idea/src/org/zmlx/hg4idea/HgTaskHandler.java
plugins/hg4idea/src/org/zmlx/hg4idea/HgVFSListener.java
plugins/hg4idea/src/org/zmlx/hg4idea/HgVcs.java
plugins/hg4idea/src/org/zmlx/hg4idea/action/HgCompareWithBranchAction.java
plugins/hg4idea/src/org/zmlx/hg4idea/action/HgCreateNewBranchFromLogAction.java
plugins/hg4idea/src/org/zmlx/hg4idea/action/HgCreateTagAction.java
plugins/hg4idea/src/org/zmlx/hg4idea/action/HgInit.java
plugins/hg4idea/src/org/zmlx/hg4idea/action/HgPullAction.java
plugins/hg4idea/src/org/zmlx/hg4idea/action/mq/HgActionFromMqPatches.java
plugins/hg4idea/src/org/zmlx/hg4idea/action/mq/HgQFoldActionFromPatches.java
plugins/hg4idea/src/org/zmlx/hg4idea/action/mq/HgQGotoActionFromMqPatches.java
plugins/hg4idea/src/org/zmlx/hg4idea/action/mq/HgQPushActionFromPatches.java
plugins/hg4idea/src/org/zmlx/hg4idea/action/mq/HgSingleActionFomMqPatches.java
plugins/hg4idea/src/org/zmlx/hg4idea/branch/HgBranchPopupActions.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/HgAddCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/HgBookmarkCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/HgBranchCreateCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/HgChangesetsCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/HgCloneCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/HgCommitTypeCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/HgCopyCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/HgHeadsCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/HgInitCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/HgMergeCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/HgPullCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/HgPushCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/HgRemoteChangesetsCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/HgRemoveCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/HgResolveCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/HgStatusCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/HgTagCreateCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/mq/HgQDeleteCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/mq/HgQFoldCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/mq/HgQImportCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/mq/HgQNewCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/command/mq/HgQPushCommand.java
plugins/hg4idea/src/org/zmlx/hg4idea/execution/HgCommandExecutor.java
plugins/hg4idea/src/org/zmlx/hg4idea/provider/HgChangeProvider.java
plugins/hg4idea/src/org/zmlx/hg4idea/provider/HgCheckoutProvider.java
plugins/hg4idea/src/org/zmlx/hg4idea/provider/commit/HgCheckinEnvironment.java
plugins/hg4idea/src/org/zmlx/hg4idea/provider/update/HgRegularUpdater.java
plugins/hg4idea/src/org/zmlx/hg4idea/push/HgPusher.java
plugins/hg4idea/src/org/zmlx/hg4idea/repo/HgRepositoryImpl.java
plugins/hg4idea/src/org/zmlx/hg4idea/roots/HgIntegrationEnabler.java
plugins/hg4idea/src/org/zmlx/hg4idea/status/HgRemoteStatusUpdater.java
plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgMqUnAppliedPatchesPanel.java
plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgPullDialog.java
plugins/hg4idea/src/org/zmlx/hg4idea/ui/HgRunConflictResolverDialog.java
plugins/hg4idea/src/org/zmlx/hg4idea/util/HgUtil.java
plugins/hg4idea/testSrc/hg4idea/test/HgEncodingTest.java
plugins/hg4idea/testSrc/hg4idea/test/commit/HgCommitTest.java
plugins/hg4idea/testSrc/hg4idea/test/mq/MqPatchTest.java
plugins/hg4idea/testSrc/org/zmlx/hg4idea/test/HgPushTest.java
plugins/hg4idea/testSrc/org/zmlx/hg4idea/test/HgUpdateTest.java
plugins/java-decompiler/plugin/test/org/jetbrains/java/decompiler/IdeaDecompilerTest.kt
plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/GenerateGetterSetterTest.java
plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/AbstractJavaFXTestCase.java
plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXCollapseSubtagToAttributeTest.java
plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXExpandAttributeTest.java
plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXImportTest.java
plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXQuickfixTest.java
plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXRenameTest.java
plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/codeInsight/JavaFxRelatedItemLineMarkerProvider.java
plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxClassBackedElementDescriptor.java
plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyAttributeDescriptor.java
plugins/javaFX/testData/highlighting/readOnly.fxml
plugins/javaFX/testData/jfxrt.jar [deleted file]
plugins/junit/junit.iml
plugins/junit/src/com/intellij/execution/ConfigurationUtil.java
plugins/junit/src/com/intellij/execution/junit/TestClassFilter.java
plugins/junit/src/com/intellij/execution/junit/TestMethod.java
plugins/junit/src/com/intellij/execution/junit/TestObject.java
plugins/junit/src/com/intellij/execution/junit2/inspection/JUnitEntryPoint.java
plugins/junit5_rt/junit5_rt.iml [new file with mode: 0644]
plugins/junit5_rt/lib/junit-commons-5.0.0-ALPHA.jar [new file with mode: 0644]
plugins/junit5_rt/lib/junit-engine-api-5.0.0-ALPHA.jar [new file with mode: 0644]
plugins/junit5_rt/lib/junit-launcher-5.0.0-ALPHA.jar [new file with mode: 0644]
plugins/junit5_rt/lib/junit4-engine-5.0.0-ALPHA.jar [new file with mode: 0644]
plugins/junit5_rt/lib/junit4-runner-5.0.0-ALPHA.jar [new file with mode: 0644]
plugins/junit5_rt/lib/junit5-engine-5.0.0-ALPHA.jar [new file with mode: 0644]
plugins/junit5_rt/lib/opentest4j-1.0.0.jar [new file with mode: 0644]
plugins/junit5_rt/src/com/intellij/junit5/JUnit5IdeaTestRunner.java [new file with mode: 0644]
plugins/junit5_rt/src/com/intellij/junit5/JUnit5TestExecutionListener.java [new file with mode: 0644]
plugins/junit5_rt/src/com/intellij/junit5/JUnit5TestRunnerUtil.java [new file with mode: 0644]
plugins/junit_rt/src/com/intellij/junit4/ExpectedPatterns.java
plugins/junit_rt/src/com/intellij/junit4/JUnit4TestListener.java
plugins/junit_rt/src/com/intellij/junit4/JUnit4TestResultsSender.java
plugins/junit_rt/src/com/intellij/rt/execution/junit/JUnitForkedSplitter.java
plugins/junit_rt/src/com/intellij/rt/execution/junit/JUnitForkedStarter.java
plugins/junit_rt/src/com/intellij/rt/execution/junit/JUnitStarter.java
plugins/maven/src/main/java/org/jetbrains/idea/maven/javadoc/MojoClassAnnotationTagProvider.java
plugins/svn4idea/src/org/jetbrains/idea/svn/SvnUtil.java
plugins/svn4idea/src/org/jetbrains/idea/svn/checkin/SvnCheckinEnvironment.java
plugins/svn4idea/src/org/jetbrains/idea/svn/rollback/SvnRollbackEnvironment.java
python/educational-core/student/src/com/jetbrains/edu/learning/StudyProjectComponent.java
python/educational-core/student/src/com/jetbrains/edu/learning/StudyUtils.java
python/educational-core/student/src/com/jetbrains/edu/learning/ui/StudyToolWindow.java
python/educational-core/student/src/com/jetbrains/edu/learning/ui/StudyToolWindowFactory.java
python/educational-python/src/com/jetbrains/python/edu/PyExecuteFileLineMarkerProvider.java
python/helpers/pydev/_pydev_bundle/pydev_console_utils.py
python/helpers/pydev/_pydev_bundle/pydev_imports.py
python/helpers/pydev/_pydev_bundle/pydev_is_thread_alive.py
python/helpers/pydev/_pydev_bundle/pydev_localhost.py
python/helpers/pydev/_pydev_bundle/pydev_log.py
python/helpers/pydev/_pydev_imps/_pydev_BaseHTTPServer.py
python/helpers/pydev/_pydev_imps/_pydev_Queue.py [deleted file]
python/helpers/pydev/_pydev_imps/_pydev_SocketServer.py
python/helpers/pydev/_pydev_imps/_pydev_saved_modules.py [new file with mode: 0644]
python/helpers/pydev/_pydev_imps/_pydev_select.py [deleted file]
python/helpers/pydev/_pydev_imps/_pydev_socket.py [deleted file]
python/helpers/pydev/_pydev_imps/_pydev_thread.py [deleted file]
python/helpers/pydev/_pydev_imps/_pydev_threading.py [deleted file]
python/helpers/pydev/_pydev_imps/_pydev_time.py [deleted file]
python/helpers/pydev/_pydev_runfiles/pydev_runfiles_parallel.py
python/helpers/pydev/_pydevd_bundle/pydevd_additional_thread_info_regular.py
python/helpers/pydev/_pydevd_bundle/pydevd_breakpoints.py
python/helpers/pydev/_pydevd_bundle/pydevd_comm.py
python/helpers/pydev/_pydevd_bundle/pydevd_constants.py
python/helpers/pydev/_pydevd_bundle/pydevd_custom_frames.py
python/helpers/pydev/_pydevd_bundle/pydevd_cython.c
python/helpers/pydev/_pydevd_bundle/pydevd_cython.pyx
python/helpers/pydev/_pydevd_bundle/pydevd_cython_win32_27_32.pyd
python/helpers/pydev/_pydevd_bundle/pydevd_cython_win32_27_64.pyd
python/helpers/pydev/_pydevd_bundle/pydevd_cython_win32_34_32.pyd
python/helpers/pydev/_pydevd_bundle/pydevd_cython_win32_34_64.pyd
python/helpers/pydev/_pydevd_bundle/pydevd_cython_win32_35_32.cp35-win32.pyd
python/helpers/pydev/_pydevd_bundle/pydevd_cython_win32_35_64.cp35-win_amd64.pyd
python/helpers/pydev/_pydevd_bundle/pydevd_trace_dispatch_regular.py
python/helpers/pydev/_pydevd_bundle/pydevd_tracing.py
python/helpers/pydev/_pydevd_bundle/pydevd_vars.py
python/helpers/pydev/pycompletionserver.py
python/helpers/pydev/pydev_ipython/inputhookglut.py
python/helpers/pydev/pydev_ipython/inputhookpyglet.py
python/helpers/pydev/pydev_ipython/inputhookwx.py
python/helpers/pydev/pydevconsole.py
python/helpers/pydev/pydevd.py
python/helpers/pydev/pydevd_concurrency_analyser/pydevd_concurrency_logger.py
python/helpers/pydev/pydevd_concurrency_analyser/pydevd_thread_wrappers.py
python/helpers/pydev/tests_pydevd/__init__.py [moved from python/helpers/pydev/tests/__init__.py with 100% similarity]
python/helpers/pydev/tests_pydevd/test_check_pydevconsole.py [moved from python/helpers/pydev/tests/test_check_pydevconsole.py with 100% similarity]
python/helpers/pydev/tests_pydevd/test_get_referrers.py [moved from python/helpers/pydev/tests/test_get_referrers.py with 100% similarity]
python/helpers/pydev/tests_pydevd/test_jyserver.py [moved from python/helpers/pydev/tests/test_jyserver.py with 100% similarity]
python/helpers/pydev/tests_pydevd/test_jysimpleTipper.py [moved from python/helpers/pydev/tests/test_jysimpleTipper.py with 100% similarity]
python/helpers/pydev/tests_pydevd/test_pydev_ipython_011.py [moved from python/helpers/pydev/tests/test_pydev_ipython_011.py with 100% similarity]
python/helpers/pydev/tests_pydevd/test_pydevconsole.py [moved from python/helpers/pydev/tests/test_pydevconsole.py with 100% similarity]
python/helpers/pydev/tests_pydevd/test_pyserver.py [moved from python/helpers/pydev/tests/test_pyserver.py with 97% similarity]
python/helpers/pydev/tests_pydevd/test_signature.py [moved from python/helpers/pydev/tests/test_signature.py with 100% similarity]
python/helpers/pydev/tests_pydevd/test_simpleTipper.py [moved from python/helpers/pydev/tests/test_simpleTipper.py with 100% similarity]
python/helpers/pydev/tests_pydevd_mainloop/README [moved from python/helpers/pydev/tests_mainloop/README with 100% similarity]
python/helpers/pydev/tests_pydevd_mainloop/__init__.py [moved from python/helpers/pydev/tests_mainloop/__init__.py with 100% similarity]
python/helpers/pydev/tests_pydevd_mainloop/gui-glut.py [moved from python/helpers/pydev/tests_mainloop/gui-glut.py with 100% similarity]
python/helpers/pydev/tests_pydevd_mainloop/gui-gtk.py [moved from python/helpers/pydev/tests_mainloop/gui-gtk.py with 100% similarity]
python/helpers/pydev/tests_pydevd_mainloop/gui-gtk3.py [moved from python/helpers/pydev/tests_mainloop/gui-gtk3.py with 100% similarity]
python/helpers/pydev/tests_pydevd_mainloop/gui-pyglet.py [moved from python/helpers/pydev/tests_mainloop/gui-pyglet.py with 100% similarity]
python/helpers/pydev/tests_pydevd_mainloop/gui-qt.py [moved from python/helpers/pydev/tests_mainloop/gui-qt.py with 100% similarity]
python/helpers/pydev/tests_pydevd_mainloop/gui-tk.py [moved from python/helpers/pydev/tests_mainloop/gui-tk.py with 100% similarity]
python/helpers/pydev/tests_pydevd_mainloop/gui-wx.py [moved from python/helpers/pydev/tests_mainloop/gui-wx.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/__init__.py [moved from python/helpers/pydev/tests_python/__init__.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case1.py [moved from python/helpers/pydev/tests_python/_debugger_case1.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case10.py [moved from python/helpers/pydev/tests_python/_debugger_case10.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case13.py [moved from python/helpers/pydev/tests_python/_debugger_case13.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case14.py [moved from python/helpers/pydev/tests_python/_debugger_case14.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case15.py [moved from python/helpers/pydev/tests_python/_debugger_case15.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case15_execfile.py [moved from python/helpers/pydev/tests_python/_debugger_case15_execfile.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case16.py [moved from python/helpers/pydev/tests_python/_debugger_case16.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case17.py [moved from python/helpers/pydev/tests_python/_debugger_case17.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case17a.py [moved from python/helpers/pydev/tests_python/_debugger_case17a.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case18.py [moved from python/helpers/pydev/tests_python/_debugger_case18.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case19.py [moved from python/helpers/pydev/tests_python/_debugger_case19.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case2.py [moved from python/helpers/pydev/tests_python/_debugger_case2.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case3.py [moved from python/helpers/pydev/tests_python/_debugger_case3.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case4.py [moved from python/helpers/pydev/tests_python/_debugger_case4.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case56.py [moved from python/helpers/pydev/tests_python/_debugger_case56.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case7.py [moved from python/helpers/pydev/tests_python/_debugger_case7.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case89.py [moved from python/helpers/pydev/tests_python/_debugger_case89.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case_qthread1.py [moved from python/helpers/pydev/tests_python/_debugger_case_qthread1.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case_qthread2.py [moved from python/helpers/pydev/tests_python/_debugger_case_qthread2.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case_qthread3.py [moved from python/helpers/pydev/tests_python/_debugger_case_qthread3.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_debugger_case_set_next_statement.py [moved from python/helpers/pydev/tests_python/_debugger_case_set_next_statement.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/_performance_1.py [moved from python/helpers/pydev/tests_python/_performance_1.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/debugger_unittest.py [moved from python/helpers/pydev/tests_python/debugger_unittest.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/my_django_proj_17/manage.py [moved from python/helpers/pydev/tests_python/my_django_proj_17/manage.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/my_django_proj_17/my_app/__init__.py [moved from python/helpers/pydev/tests_python/my_django_proj_17/my_app/__init__.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/my_django_proj_17/my_app/admin.py [moved from python/helpers/pydev/tests_python/my_django_proj_17/my_app/admin.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/my_django_proj_17/my_app/models.py [moved from python/helpers/pydev/tests_python/my_django_proj_17/my_app/models.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/my_django_proj_17/my_app/templates/my_app/index.html [moved from python/helpers/pydev/tests_python/my_django_proj_17/my_app/templates/my_app/index.html with 100% similarity]
python/helpers/pydev/tests_pydevd_python/my_django_proj_17/my_app/tests.py [moved from python/helpers/pydev/tests_python/my_django_proj_17/my_app/tests.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/my_django_proj_17/my_app/urls.py [moved from python/helpers/pydev/tests_python/my_django_proj_17/my_app/urls.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/my_django_proj_17/my_app/views.py [moved from python/helpers/pydev/tests_python/my_django_proj_17/my_app/views.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/my_django_proj_17/my_django_proj_17/__init__.py [moved from python/helpers/pydev/tests_python/my_django_proj_17/my_django_proj_17/__init__.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/my_django_proj_17/my_django_proj_17/settings.py [moved from python/helpers/pydev/tests_python/my_django_proj_17/my_django_proj_17/settings.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/my_django_proj_17/my_django_proj_17/urls.py [moved from python/helpers/pydev/tests_python/my_django_proj_17/my_django_proj_17/urls.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/my_django_proj_17/my_django_proj_17/wsgi.py [moved from python/helpers/pydev/tests_python/my_django_proj_17/my_django_proj_17/wsgi.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/performance_check.py [moved from python/helpers/pydev/tests_python/performance_check.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/test_additional_thread_info.py [moved from python/helpers/pydev/tests_python/test_additional_thread_info.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/test_debugger.py [moved from python/helpers/pydev/tests_python/test_debugger.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/test_pydev_monkey.py [moved from python/helpers/pydev/tests_python/test_pydev_monkey.py with 100% similarity]
python/helpers/pydev/tests_pydevd_python/test_save_locals.py [moved from python/helpers/pydev/tests_python/test_save_locals.py with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/not_in_default_pythonpath.txt [moved from python/helpers/pydev/tests_runfiles/not_in_default_pythonpath.txt with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/.cvsignore [moved from python/helpers/pydev/tests_runfiles/samples/.cvsignore with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/nested_dir/.cvsignore [moved from python/helpers/pydev/tests_runfiles/samples/nested_dir/.cvsignore with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/nested_dir/__init__.py [moved from python/helpers/pydev/tests_runfiles/samples/nested_dir/__init__.py with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/nested_dir/nested2/.cvsignore [moved from python/helpers/pydev/tests_runfiles/samples/nested_dir/nested2/.cvsignore with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/nested_dir/nested2/__init__.py [moved from python/helpers/pydev/tests_runfiles/samples/nested_dir/nested2/__init__.py with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/nested_dir/nested2/deep_nest_test.py [moved from python/helpers/pydev/tests_runfiles/samples/nested_dir/nested2/deep_nest_test.py with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/nested_dir/nested2/non_test_file.py [moved from python/helpers/pydev/tests_runfiles/samples/nested_dir/nested2/non_test_file.py with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/nested_dir/nested3/.cvsignore [moved from python/helpers/pydev/tests_runfiles/samples/nested_dir/nested3/.cvsignore with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/nested_dir/nested3/__init__.py [moved from python/helpers/pydev/tests_runfiles/samples/nested_dir/nested3/__init__.py with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/nested_dir/nested3/junk.txt [moved from python/helpers/pydev/tests_runfiles/samples/nested_dir/nested3/junk.txt with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/nested_dir/nested3/non_test_file.py [moved from python/helpers/pydev/tests_runfiles/samples/nested_dir/nested3/non_test_file.py with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/nested_dir/non_test_file.py [moved from python/helpers/pydev/tests_runfiles/samples/nested_dir/non_test_file.py with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/nested_dir/simple4_test.py [moved from python/helpers/pydev/tests_runfiles/samples/nested_dir/simple4_test.py with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/non_test_file.py [moved from python/helpers/pydev/tests_runfiles/samples/non_test_file.py with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/not_in_default_pythonpath.txt [moved from python/helpers/pydev/tests_runfiles/samples/not_in_default_pythonpath.txt with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/simple2_test.py [moved from python/helpers/pydev/tests_runfiles/samples/simple2_test.py with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/simple3_test.py [moved from python/helpers/pydev/tests_runfiles/samples/simple3_test.py with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/simpleClass_test.py [moved from python/helpers/pydev/tests_runfiles/samples/simpleClass_test.py with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/simpleModule_test.py [moved from python/helpers/pydev/tests_runfiles/samples/simpleModule_test.py with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/samples/simple_test.py [moved from python/helpers/pydev/tests_runfiles/samples/simple_test.py with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/test_pydevd_property.py [moved from python/helpers/pydev/tests_runfiles/test_pydevd_property.py with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/test_pydevdio.py [moved from python/helpers/pydev/tests_runfiles/test_pydevdio.py with 100% similarity]
python/helpers/pydev/tests_pydevd_runfiles/test_runfiles.py [moved from python/helpers/pydev/tests_runfiles/test_runfiles.py with 100% similarity]
python/helpers/rest_formatter.py
python/ipnb/src/org/jetbrains/plugins/ipnb/configuration/IpnbConnectionManager.java
python/pluginJava/com/jetbrains/python/psi/impl/PyJavaClassType.java
python/psi-api/src/com/jetbrains/python/psi/types/PyClassLikeType.java
python/src/META-INF/python-core-common.xml
python/src/com/jetbrains/python/PyCustomType.java
python/src/com/jetbrains/python/buildout/BuildoutFacet.java
python/src/com/jetbrains/python/codeInsight/PyLineMarkerProvider.java
python/src/com/jetbrains/python/codeInsight/PySubstitutionChunkReference.java
python/src/com/jetbrains/python/codeInsight/PyTypingTypeProvider.java
python/src/com/jetbrains/python/codeInsight/PythonFormattedStringReferenceProvider.java
python/src/com/jetbrains/python/codeInsight/stdlib/PyNamedTupleType.java
python/src/com/jetbrains/python/codeInsight/stdlib/PyStdlibTypeProvider.java
python/src/com/jetbrains/python/codeInsight/userSkeletons/PyUserSkeletonsLineMarkerProvider.java
python/src/com/jetbrains/python/debugger/PySignatureCacheManagerImpl.java
python/src/com/jetbrains/python/documentation/docstrings/PyDocstringGenerator.java
python/src/com/jetbrains/python/inspections/PyTypeCheckerInspection.java
python/src/com/jetbrains/python/inspections/quickfix/PyMakePublicQuickFix.java
python/src/com/jetbrains/python/inspections/quickfix/RenameParameterQuickFix.java
python/src/com/jetbrains/python/inspections/unresolvedReference/PyUnresolvedReferencesInspection.java
python/src/com/jetbrains/python/psi/PyUtil.java
python/src/com/jetbrains/python/psi/impl/PySliceExpressionImpl.java
python/src/com/jetbrains/python/psi/types/PyClassTypeImpl.java
python/src/com/jetbrains/python/psi/types/PyTypeChecker.java
python/src/com/jetbrains/python/pyi/PyiRelatedItemLineMarkerProvider.java
python/src/com/jetbrains/python/refactoring/rename/RenamePyLiteralExpressionProcessor.java [new file with mode: 0644]
python/testData/inspections/PyTypeCheckerInspection/NamedTupleBaseClass.py [new file with mode: 0644]
python/testData/inspections/PyUnresolvedReferencesInspection/bytesIOMethods.py [moved from python/testData/inspections/PyUnresolvedReferencesInspection/bytesIORead.py with 100% similarity]
python/testData/inspections/PyUnresolvedReferencesInspection/fileMethods.py [new file with mode: 0644]
python/testData/inspections/PyUnresolvedReferencesInspection/formatStringDictLiteralArgumentWithNumericExprKeys.py [new file with mode: 0644]
python/testData/inspections/PyUnresolvedReferencesInspection/formatStringDictLiteralArgumentWithReferenceExprKeys.py [new file with mode: 0644]
python/testData/inspections/PyUnresolvedReferencesInspection/formatStringKeyword.py [new file with mode: 0644]
python/testData/inspections/PyUnresolvedReferencesInspection/formatStringPackedDict.py [new file with mode: 0644]
python/testData/inspections/PyUnresolvedReferencesInspection/formatStringPackedDictCall.py [new file with mode: 0644]
python/testData/inspections/PyUnresolvedReferencesInspection/formatStringPackedFunctionCall.py [new file with mode: 0644]
python/testData/inspections/PyUnresolvedReferencesInspection/formatStringPackedReference.py [new file with mode: 0644]
python/testData/inspections/PyUnresolvedReferencesInspection/formatStringPositional.py [new file with mode: 0644]
python/testData/inspections/PyUnresolvedReferencesInspection/percentStringDictLiteralArgumentWithReferenceExprKeys.py [new file with mode: 0644]
python/testData/inspections/PyUnresolvedReferencesInspection/percentStringFunctionCall.py [new file with mode: 0644]
python/testData/inspections/PyUnresolvedReferencesInspection/percentStringKeyword.py [new file with mode: 0644]
python/testData/inspections/PyUnresolvedReferencesInspection/percentStringPositional.py [new file with mode: 0644]
python/testData/inspections/PyUnresolvedReferencesInspection/percentStringReference.py [new file with mode: 0644]
python/testData/inspections/PyUnresolvedReferencesInspection/slotsAndClassAttr.py [new file with mode: 0644]
python/testData/refactoring/rename/formatStringDictLiteral.py [new file with mode: 0644]
python/testData/refactoring/rename/formatStringNumericLiteralExpression.py [new file with mode: 0644]
python/testData/resolve/FormatStringPackedDictCall.py [new file with mode: 0644]
python/testData/resolve/FormatStringWithBinExprAsArg.py [new file with mode: 0644]
python/testData/resolve/FormatStringWithPackedDictAsArgument.py [new file with mode: 0644]
python/testData/resolve/FormatStringWithPackedListAsArgument.py [new file with mode: 0644]
python/testData/resolve/FormatStringWithPackedTupleAsArgument.py [new file with mode: 0644]
python/testData/resolve/FormatStringWithRefAsArgument.py [new file with mode: 0644]
python/testData/resolve/PercentKeyWordArgs.py
python/testData/resolve/PercentStringArgWithRedundantParentheses.py [new file with mode: 0644]
python/testData/resolve/PercentStringBinaryStatementArg.py [new file with mode: 0644]
python/testData/resolve/PercentStringDictCall.py [new file with mode: 0644]
python/testData/resolve/PercentStringKeyWordArgWithParentheses.py [new file with mode: 0644]
python/testData/resolve/PercentStringWithOneStringArgument.py [new file with mode: 0644]
python/testData/resolve/PercentStringWithRefAsArgument.py [new file with mode: 0644]
python/testSrc/com/jetbrains/python/Py3TypeTest.java
python/testSrc/com/jetbrains/python/PyResolveTest.java
python/testSrc/com/jetbrains/python/PyTypeTest.java
python/testSrc/com/jetbrains/python/PyTypingTest.java
python/testSrc/com/jetbrains/python/inspections/PyTypeCheckerInspectionTest.java
python/testSrc/com/jetbrains/python/inspections/PyUnresolvedReferencesInspectionTest.java
python/testSrc/com/jetbrains/python/refactoring/PyRenameTest.java
resources-en/src/tips/ChangeSignatureAfterMovingParameters.html
resources-en/src/tips/FileStructurePopup.html [deleted file]
resources-en/src/tips/GoToAction.html [deleted file]
resources-en/src/tips/GoToInspection.html [deleted file]
resources-en/src/tips/QuickDocOnMouseMove.html [deleted file]
resources-en/src/tips/SearchEverywhere.html [deleted file]
resources-en/src/tips/WildcardsInNavigationPopups.html [deleted file]
resources-en/src/tips/images/file_structure_popup.png [deleted file]
resources-en/src/tips/images/file_structure_popup@2x.png [deleted file]
resources-en/src/tips/images/file_structure_popup@2x_dark.png [deleted file]
resources-en/src/tips/images/file_structure_popup_dark.png [deleted file]
resources-en/src/tips/images/rename.png [deleted file]
resources-en/src/tips/images/rename@2x.png [deleted file]
resources-en/src/tips/images/rename@2x_dark.png [deleted file]
resources-en/src/tips/images/rename_dark.png [deleted file]
resources-en/src/tips/images/searchEverywhere.png [deleted file]
resources-en/src/tips/images/searchEverywhere@2x.png [deleted file]
resources-en/src/tips/images/searchEverywhere@2x_dark.png [deleted file]
resources-en/src/tips/images/searchEverywhere_dark.png [deleted file]
resources-en/src/tips/images/wildcard_goto.png [deleted file]
resources-en/src/tips/images/wildcard_goto@2x.png [deleted file]
resources-en/src/tips/images/wildcard_goto@2x_dark.png [deleted file]
resources-en/src/tips/images/wildcard_goto_dark.png [deleted file]
resources/src/META-INF/IdeTipsAndTricks.xml
resources/src/META-INF/IdeaPlugin.xml
resources/src/ProductivityFeaturesRegistry.xml
xml/dom-impl/src/com/intellij/codeInsight/navigation/NavigationGutterIconBuilder.java
xml/impl/src/com/intellij/codeInsight/editorActions/XmlSlashTypedHandler.java
xml/relaxng/test/org/intellij/plugins/relaxNG/HighlightingTestBase.java
xml/tests/src/com/intellij/codeInsight/daemon/XmlHighlightingTest.java
xml/tests/testData/completion/9.xml [deleted file]

diff --git a/.idea/libraries/junit5_rt.xml b/.idea/libraries/junit5_rt.xml
new file mode 100644 (file)
index 0000000..cd50f3b
--- /dev/null
@@ -0,0 +1,14 @@
+<component name="libraryTable">
+  <library name="junit5_rt">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/plugins/junit5_rt/lib/junit-commons-5.0.0-ALPHA.jar!/" />
+      <root url="jar://$PROJECT_DIR$/plugins/junit5_rt/lib/junit-engine-api-5.0.0-ALPHA.jar!/" />
+      <root url="jar://$PROJECT_DIR$/plugins/junit5_rt/lib/junit-launcher-5.0.0-ALPHA.jar!/" />
+      <root url="jar://$PROJECT_DIR$/plugins/junit5_rt/lib/junit4-engine-5.0.0-ALPHA.jar!/" />
+      <root url="jar://$PROJECT_DIR$/plugins/junit5_rt/lib/junit4-runner-5.0.0-ALPHA.jar!/" />
+      <root url="jar://$PROJECT_DIR$/plugins/junit5_rt/lib/junit5-engine-5.0.0-ALPHA.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
diff --git a/.idea/libraries/opentest4j.xml b/.idea/libraries/opentest4j.xml
new file mode 100644 (file)
index 0000000..a950465
--- /dev/null
@@ -0,0 +1,9 @@
+<component name="libraryTable">
+  <library name="opentest4j">
+    <CLASSES>
+      <root url="jar://$PROJECT_DIR$/plugins/junit5_rt/lib/opentest4j-1.0.0.jar!/" />
+    </CLASSES>
+    <JAVADOC />
+    <SOURCES />
+  </library>
+</component>
\ No newline at end of file
index 15c4ae1ce18a1920c82d100d8f5346dae015bfc4..98246cf2ab4cbf722aa0110db008cca04d800f42 100644 (file)
       <module fileurl="file://$PROJECT_DIR$/java/jsp-openapi/jsp-openapi.iml" filepath="$PROJECT_DIR$/java/jsp-openapi/jsp-openapi.iml" group="java" />
       <module fileurl="file://$PROJECT_DIR$/java/jsp-spi/jsp-spi.iml" filepath="$PROJECT_DIR$/java/jsp-spi/jsp-spi.iml" group="java" />
       <module fileurl="file://$PROJECT_DIR$/plugins/junit/junit.iml" filepath="$PROJECT_DIR$/plugins/junit/junit.iml" group="plugins" />
+      <module fileurl="file://$PROJECT_DIR$/plugins/junit5_rt/junit5_rt.iml" filepath="$PROJECT_DIR$/plugins/junit5_rt/junit5_rt.iml" group="plugins" />
       <module fileurl="file://$PROJECT_DIR$/plugins/junit_rt/junit_rt.iml" filepath="$PROJECT_DIR$/plugins/junit_rt/junit_rt.iml" group="plugins" />
       <module fileurl="file://$PROJECT_DIR$/platform/lang-api/lang-api.iml" filepath="$PROJECT_DIR$/platform/lang-api/lang-api.iml" group="platform" />
       <module fileurl="file://$PROJECT_DIR$/platform/lang-impl/lang-impl.iml" filepath="$PROJECT_DIR$/platform/lang-impl/lang-impl.iml" group="platform" />
index 2b5bd492af2ff0e6f88136fa59b92490ad9b0707..c7a62e0dbcae26c24de11ceaf580f472dec6782d 100644 (file)
@@ -247,32 +247,6 @@ Function VersionSplit
 FunctionEnd
 
 Function OnDirectoryPageLeave
-    StrCpy $IS_UPGRADE_60 "0"
-    ${InstDirState} "$INSTDIR" $R0
-    IntCmp $R0 1 check_build skip_abort skip_abort
-check_build:
-    FileOpen $R1 "$INSTDIR\build.txt" "r"
-    IfErrors do_abort
-    FileRead $R1 $R2
-    FileClose $R1
-    IfErrors do_abort
-    ${VersionSplit} ${MIN_UPGRADE_BUILD} $R3 $R4 $R5
-    ${VersionSplit} ${MAX_UPGRADE_BUILD} $R6 $R7 $R8
-    ${VersionSplit} $R2 $R9 $R2 $R0
-    StrCmp $R9 $R3 0 do_abort
-    IntCmp $R2 $R4 0 do_abort
-    IntCmp $R0 $R5 do_accept do_abort
-
-    StrCmp $R9 $R6 0 do_abort
-    IntCmp $R2 $R7 0 0 do_abort
-    IntCmp $R0 $R8 do_abort do_accept do_abort
-
-do_accept:
-    StrCpy $IS_UPGRADE_60 "1"
-    FileClose $R1
-    Goto skip_abort
-
-do_abort:
   ;check
   ; - if there are no files into $INSTDIR (recursively) just excepted property files
   ; - if property files have the same installation time.
index 762514aef467a7fd4431cad7b3a53892d9a837ef..d6ff31639415450c6a7dcb4cc65c66e62052268c 100644 (file)
@@ -18,5 +18,5 @@ LangString current_version_already_installed ${LANG_ENGLISH} "Current version of
 LangString uninstall_previous_installations_title ${LANG_ENGLISH} "Uninstall old versions"
 LangString uninstall_previous_installations ${LANG_ENGLISH} ""
 LangString uninstall_previous_installations_prompt ${LANG_ENGLISH} "Select the ${MUI_PRODUCT} version$2 that you want to uninstall."
-LangString empty_or_upgrade_folder ${LANG_ENGLISH} "Please select an empty folder or a folder where ${MUI_PRODUCT} ${UPGRADE_VERSION} is installed as the target for installing ${MUI_PRODUCT}."
+LangString empty_or_upgrade_folder ${LANG_ENGLISH} "Please select an empty folder or a folder."
 LangString application_running ${LANG_ENGLISH} "$INSTDIR is running. Close the application and retry the installation."
index df8d269df184d3e53040ab1851a26976d16695b1..45a8b3237e466b73b02171ec4d503fa7ee612a4f 100644 (file)
@@ -88,7 +88,6 @@ target(compile: "Compile project") {
   projectBuilder.targetFolder = "$out/classes"
   clearBuildCaches()
   projectBuilder.cleanOutput()
-  bundledJDKs()
   projectBuilder.buildProduction()
   projectBuilder.makeModuleTests(findModule("jps-builders"))
 }
index e7cc2e2458d857ec53c687009905373ef7fd24fa..8a75218a72ca35b2a4057656e31944a030a45a24 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2015 JetBrains s.r.o.
+ * Copyright 2000-2016 JetBrains s.r.o.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -472,6 +472,12 @@ public def layoutCommunityPlugins(String home, boolean maySkipAndroidPlugin = fa
       jar("junit-rt.jar") {
         module("junit_rt")
       }
+      jar("junit5-rt.jar") {
+        module("junit5_rt")
+      }
+      fileset(dir: "$home/plugins/junit5_rt/lib") {
+        include(name: "*.jar")
+      }
     }
 
     pluginDir("ByteCodeViewer") {
@@ -955,7 +961,6 @@ def layout_core(String home, String target) {
       module("util")
       module("core-api")
       module("core-impl")
-      module("boot")
       module("extensions")
       module("java-psi-api")
       module("java-psi-impl")
index 3f0eaf561e28ce6e07d311250a9e0d001588cebb..9b61c888ba323e8b1ad0d0a776e403e471267506 100644 (file)
@@ -244,6 +244,7 @@ libraryLicense(name: "jsr305", libraryName: "jsr305", version: "snapshot", licen
 libraryLicense(name: "Jsr305", version: "1.3.9", license: "New BSD", url: "http://code.google.com/p/jsr-305/", licenseUrl: "http://opensource.org/licenses/BSD-3-Clause")
 libraryLicense(name: "JUnit", libraryName: "JUnit3", version: "3.8.1", license: "CPL 1.0", url: "http://junit.org/")
 libraryLicense(name: "JUnit", libraryName: "JUnit4", version: "4.11", license: "CPL 1.0", url: "http://junit.org/")
+libraryLicense(name: "junit5_rt", libraryName: "junit5_rt", version: "5.0.0", license: "Eclipse Public License 1.0", url: "http://junit.org/")
 libraryLicense(name: "jzlib", libraryName: "jzlib", version: "1.1.1", license: "BSD", url: "http://www.jcraft.com/jzlib/", licenseUrl: "http://www.jcraft.com/jzlib/LICENSE.txt")
 libraryLicense(name: "Kryo", libraryName: "Kryo", version: "2.22", license: "New BSD License", url: "https://github.com/EsotericSoftware/kryo", licenseUrl: "https://github.com/EsotericSoftware/kryo/blob/master/license.txt")
 libraryLicense(name: "kXML2", libraryName: "kxml2", version: "2.3.0", license: "BSD", url: "http://sourceforge.net/projects/kxml/")
@@ -266,6 +267,7 @@ libraryLicense(name: "NanoXML", version: "2.2.3", license: "zlib/libpng", url: "
 libraryLicense(name: "nekohtml", libraryName: "nekohtml", version: "1.9.14", license: "Apache 2.0", url: "http://nekohtml.sourceforge.net/", licenseUrl: "http://apache.org/licenses/LICENSE-2.0.txt")
 libraryLicense(name: "Netty", libraryName: "Netty", version: "4.1.0.Beta3", license: "Apache 2.0", url: "http://netty.io", licenseUrl: "http://www.apache.org/licenses/LICENSE-2.0")
 libraryLicense(name: "Objenesis", libraryName: "objenesis-1.2.jar", version: "1.2", license: "Apache 2.0", url: "http://objenesis.org/", licenseUrl: "http://apache.org/licenses/LICENSE-2.0")
+libraryLicense(name: "opentest4j", libraryName: "opentest4j", version: "1.0.0", license: "Apache 2.0", url: "https://github.com/ota4j-team/opentest4j", licenseUrl: "http://apache.org/licenses/LICENSE-2.0")
 libraryLicense(name: "pep8.py", attachedTo: "python-helpers", version: "1.6.2", license: "MIT", url: "http://pep8.readthedocs.org/")
 libraryLicense(name: "PicoContainer", libraryName: "picocontainer", version: "1.2", license: "BSD", url: "http://www.picocontainer.org/", licenseUrl: "http://docs.codehaus.org/display/PICO/License")
 libraryLicense(name: "plexus-archiver", libraryName: "plexus-archiver-2.4.4.jar", version: "2.4.4", license: "Apache 2.0", url: "https://github.com/codehaus-plexus/plexus-archiver", licenseUrl: "http://apache.org/licenses/LICENSE-2.0")
index 4b79491f240df8aed65434c3721d7fe7dc4c8585..b78821565e194ef62195628144fec25de1577a2a 100644 (file)
       </value>
     </option>
     <option baseAttributes="TEXT" name="IVAR" />
+    <option name="JADE_FILE_PATH">
+      <value>
+        <option name="FOREGROUND" value="66CC33" />
+      </value>
+    </option>
+    <option baseAttributes="DEFAULT_LABEL" name="JADE_FILTER_NAME" />
+    <option baseAttributes="DEFAULT_IDENTIFIER" name="JADE_JS_BLOCK" />
+    <option name="JADE_STATEMENTS">
+      <value>
+        <option name="FOREGROUND" value="CC7833" />
+      </value>
+    </option>
     <option name="JAVA_BLOCK_COMMENT">
       <value>
         <option name="FOREGROUND" value="9933CC" />
         <option name="BACKGROUND" value="434242" />
       </value>
     </option>
+    <option name="SPY-JS.EXCEPTION">
+      <value>
+        <option name="BACKGROUND" value="723f3f" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="FFFFFF" />
+      </value>
+    </option>
+    <option name="SPY-JS.FUNCTION_SCOPE">
+      <value>
+        <option name="BACKGROUND" value="2e2e1f" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="FFFFFF" />
+      </value>
+    </option>
+    <option name="SPY-JS.PATH_LEVEL_ONE">
+      <value>
+        <option name="BACKGROUND" value="264326" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="FFFFFF" />
+      </value>
+    </option>
+    <option name="SPY-JS.PATH_LEVEL_TWO">
+      <value>
+        <option name="EFFECT_TYPE" value="1" />
+        <option name="EFFECT_COLOR" value="FFFFFF" />
+      </value>
+    </option>
+    <option name="SPY-JS.PROGRAM_SCOPE">
+      <value>
+        <option name="BACKGROUND" value="2b2b2b" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="FFFFFF" />
+      </value>
+    </option>
+    <option baseAttributes="TEXT" name="SPY-JS.VALUE_HINT" />
     <option name="STATIC_FIELD_ATTRIBUTES">
       <value>
         <option name="FOREGROUND" value="fda5ff" />
index a6a9f1e52bb35022941b03aa8c8018188989af5a..0448007e277ea1acd8df2295749ad9965defe02f 100644 (file)
       </value>
     </option>
     <option baseAttributes="TEXT" name="IVAR" />
+    <option name="JADE_FILE_PATH">
+      <value>
+        <option name="FOREGROUND" value="61CE3C" />
+      </value>
+    </option>
+    <option name="JADE_FILTER_NAME">
+      <value>
+        <option name="FOREGROUND" value="FF6400" />
+      </value>
+    </option>
+    <option name="JADE_JS_BLOCK">
+      <value>
+        <option name="FOREGROUND" value="FF6400" />
+      </value>
+    </option>
+    <option name="JADE_STATEMENTS">
+      <value>
+        <option name="FOREGROUND" value="FBDE2D" />
+      </value>
+    </option>
     <option name="JAVA_BLOCK_COMMENT">
       <value>
         <option name="FOREGROUND" value="AEAEAE" />
       </value>
     </option>
     <option baseAttributes="SLIM_STATIC_CONTENT" name="SLIM_TAG_START" />
+    <option name="SPY-JS.EXCEPTION">
+      <value>
+        <option name="BACKGROUND" value="713f3f" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="F8F8F8" />
+      </value>
+    </option>
+    <option name="SPY-JS.FUNCTION_SCOPE">
+      <value>
+        <option name="BACKGROUND" value="2e2e1f" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="F8F8F8" />
+      </value>
+    </option>
+    <option name="SPY-JS.PATH_LEVEL_ONE">
+      <value>
+        <option name="BACKGROUND" value="264326" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="F8F8F8" />
+      </value>
+    </option>
+    <option name="SPY-JS.PATH_LEVEL_TWO">
+      <value>
+        <option name="EFFECT_TYPE" value="1" />
+        <option name="EFFECT_COLOR" value="F8F8F8" />
+      </value>
+    </option>
+    <option name="SPY-JS.PROGRAM_SCOPE">
+      <value>
+        <option name="BACKGROUND" value="2b2b2b" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="F8F8F8" />
+      </value>
+    </option>
+    <option baseAttributes="TEXT" name="SPY-JS.VALUE_HINT" />
     <option name="STATIC_FIELD_ATTRIBUTES">
       <value>
         <option name="FOREGROUND" value="fda5ff" />
index 14e017742588233c6a3458bd0d744d5894eede6e..20d4138fba3919d6499fb7a1e453cbcf92e53986 100644 (file)
         <option name="FOREGROUND" value="CCCCCC" />
       </value>
     </option>
+    <option name="JADE_FILE_PATH">
+      <value>
+        <option name="FOREGROUND" value="3AD900" />
+      </value>
+    </option>
+    <option name="JADE_FILTER_NAME">
+      <value>
+        <option name="FOREGROUND" value="FFDD00" />
+      </value>
+    </option>
+    <option name="JADE_JS_BLOCK">
+      <value>
+        <option name="FOREGROUND" value="FFDD00" />
+      </value>
+    </option>
+    <option name="JADE_STATEMENTS">
+      <value>
+        <option name="FOREGROUND" value="FF9D00" />
+      </value>
+    </option>
     <option name="JAVA_BLOCK_COMMENT">
       <value>
         <option name="FOREGROUND" value="0088FF" />
         <option name="FOREGROUND" value="E1EFFF" />
       </value>
     </option>
+    <option name="SPY-JS.EXCEPTION">
+      <value>
+        <option name="BACKGROUND" value="713f3f" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="FFFFFF" />
+      </value>
+    </option>
+    <option name="SPY-JS.FUNCTION_SCOPE">
+      <value>
+        <option name="BACKGROUND" value="2e2e20" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="FFFFFF" />
+      </value>
+    </option>
+    <option name="SPY-JS.PATH_LEVEL_ONE">
+      <value>
+        <option name="BACKGROUND" value="254226" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="FFFFFF" />
+      </value>
+    </option>
+    <option name="SPY-JS.PATH_LEVEL_TWO">
+      <value>
+        <option name="EFFECT_TYPE" value="1" />
+        <option name="EFFECT_COLOR" value="FFFFFF" />
+      </value>
+    </option>
+    <option name="SPY-JS.PROGRAM_SCOPE">
+      <value>
+        <option name="BACKGROUND" value="2b2b2c" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="FFFFFF" />
+      </value>
+    </option>
+    <option baseAttributes="TEXT" name="SPY-JS.VALUE_HINT" />
     <option name="STATIC_FIELD_ATTRIBUTES">
       <value>
         <option name="FOREGROUND" value="fda5ff" />
index 64870effc6f3785a9f278d3fe2f43c9c1ace59ef..cfd8c2217b3f984acabf29103b164a844f3dbdd6 100644 (file)
         <option name="FOREGROUND" value="108888" />
       </value>
     </option>
+    <option name="JADE_FILE_PATH">
+      <value>
+        <option name="FOREGROUND" value="DD1144" />
+        <option name="BACKGROUND" value="f7e7f1" />
+      </value>
+    </option>
+    <option baseAttributes="DEFAULT_LABEL" name="JADE_FILTER_NAME" />
+    <option baseAttributes="DEFAULT_IDENTIFIER" name="JADE_JS_BLOCK" />
+    <option name="JADE_STATEMENTS">
+      <value>
+        <option name="FOREGROUND" value="000000" />
+        <option name="FONT_TYPE" value="1" />
+      </value>
+    </option>
     <option name="JAVA_BLOCK_COMMENT">
       <value>
         <option name="FOREGROUND" value="DD1144" />
         <option name="FOREGROUND" value="121289" />
       </value>
     </option>
+    <option name="SPY-JS.EXCEPTION">
+      <value>
+        <option name="BACKGROUND" value="fecccc" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="000000" />
+      </value>
+    </option>
+    <option name="SPY-JS.FUNCTION_SCOPE">
+      <value>
+        <option name="BACKGROUND" value="fefef0" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="000000" />
+      </value>
+    </option>
+    <option name="SPY-JS.PATH_LEVEL_ONE">
+      <value>
+        <option name="BACKGROUND" value="e2fee2" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="000000" />
+      </value>
+    </option>
+    <option name="SPY-JS.PATH_LEVEL_TWO">
+      <value>
+        <option name="EFFECT_TYPE" value="1" />
+        <option name="EFFECT_COLOR" value="000000" />
+      </value>
+    </option>
+    <option name="SPY-JS.PROGRAM_SCOPE">
+      <value>
+        <option name="BACKGROUND" value="fefeff" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="000000" />
+      </value>
+    </option>
+    <option baseAttributes="TEXT" name="SPY-JS.VALUE_HINT" />
     <option name="STATIC_FIELD_ATTRIBUTES">
       <value>
         <option name="FOREGROUND" value="660e7a" />
index 710a6b85f98a102c14ac378d7452f1e87875fb12..ced3365a0e51cf9f232ee6a6651ef63ede55fc86 100644 (file)
       </value>
     </option>
     <option baseAttributes="TEXT" name="IVAR" />
+    <option name="JADE_FILE_PATH">
+      <value>
+        <option name="FOREGROUND" value="E6DB74" />
+      </value>
+    </option>
+    <option baseAttributes="DEFAULT_LABEL" name="JADE_FILTER_NAME" />
+    <option baseAttributes="DEFAULT_IDENTIFIER" name="JADE_JS_BLOCK" />
+    <option name="JADE_STATEMENTS">
+      <value>
+        <option name="FOREGROUND" value="F92672" />
+      </value>
+    </option>
     <option name="JAVA_BLOCK_COMMENT">
       <value>
         <option name="FOREGROUND" value="75715E" />
       </value>
     </option>
     <option baseAttributes="SLIM_STATIC_CONTENT" name="SLIM_TAG_START" />
+    <option name="SPY-JS.EXCEPTION">
+      <value>
+        <option name="BACKGROUND" value="713f3f" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="F8F8F2" />
+      </value>
+    </option>
+    <option name="SPY-JS.FUNCTION_SCOPE">
+      <value>
+        <option name="BACKGROUND" value="2e2e1f" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="F8F8F2" />
+      </value>
+    </option>
+    <option name="SPY-JS.PATH_LEVEL_ONE">
+      <value>
+        <option name="BACKGROUND" value="264226" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="F8F8F2" />
+      </value>
+    </option>
+    <option name="SPY-JS.PATH_LEVEL_TWO">
+      <value>
+        <option name="EFFECT_TYPE" value="1" />
+        <option name="EFFECT_COLOR" value="F8F8F2" />
+      </value>
+    </option>
+    <option name="SPY-JS.PROGRAM_SCOPE">
+      <value>
+        <option name="BACKGROUND" value="2b2b2b" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="F8F8F2" />
+      </value>
+    </option>
+    <option baseAttributes="TEXT" name="SPY-JS.VALUE_HINT" />
     <option name="STATIC_FIELD_ATTRIBUTES">
       <value>
         <option name="FOREGROUND" value="fda5ff" />
index 3cd068d379fc55d23ffc09204b669e50223ae451..c5270650fe9239ed7e1e363352c6ef34feb0745a 100644 (file)
         <option name="FOREGROUND" value="D0D0FF" />
       </value>
     </option>
+    <option name="JADE_FILE_PATH">
+      <value>
+        <option name="FOREGROUND" value="A5C261" />
+      </value>
+    </option>
+    <option baseAttributes="DEFAULT_LABEL" name="JADE_FILTER_NAME" />
+    <option baseAttributes="DEFAULT_IDENTIFIER" name="JADE_JS_BLOCK" />
+    <option name="JADE_STATEMENTS">
+      <value>
+        <option name="FOREGROUND" value="CC7833" />
+      </value>
+    </option>
     <option name="JAVA_BLOCK_COMMENT">
       <value>
         <option name="FOREGROUND" value="BC9458" />
       </value>
     </option>
     <option baseAttributes="SLIM_STATIC_CONTENT" name="SLIM_TAG_START" />
+    <option name="SPY-JS.EXCEPTION">
+      <value>
+        <option name="BACKGROUND" value="713f3f" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="E6E1DC" />
+      </value>
+    </option>
+    <option name="SPY-JS.FUNCTION_SCOPE">
+      <value>
+        <option name="BACKGROUND" value="2e2e1f" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="E6E1DC" />
+      </value>
+    </option>
+    <option name="SPY-JS.PATH_LEVEL_ONE">
+      <value>
+        <option name="BACKGROUND" value="264226" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="E6E1DC" />
+      </value>
+    </option>
+    <option name="SPY-JS.PATH_LEVEL_TWO">
+      <value>
+        <option name="EFFECT_TYPE" value="1" />
+        <option name="EFFECT_COLOR" value="E6E1DC" />
+      </value>
+    </option>
+    <option name="SPY-JS.PROGRAM_SCOPE">
+      <value>
+        <option name="BACKGROUND" value="2b2b2b" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="E6E1DC" />
+      </value>
+    </option>
+    <option baseAttributes="TEXT" name="SPY-JS.VALUE_HINT" />
     <option name="STATIC_FIELD_ATTRIBUTES">
       <value>
         <option name="FOREGROUND" value="fda5ff" />
index 9851f8172290fdf9bf57757d30bb0250e2860cb9..9ab3f614e972054ed63169c23d6c27c8a9a8c098 100644 (file)
         <option name="FOREGROUND" value="7587A6" />
       </value>
     </option>
+    <option name="JADE_FILE_PATH">
+      <value>
+        <option name="FOREGROUND" value="8F9D6A" />
+      </value>
+    </option>
+    <option name="JADE_FILTER_NAME">
+      <value>
+        <option name="FOREGROUND" value="9B703F" />
+      </value>
+    </option>
+    <option name="JADE_JS_BLOCK">
+      <value>
+        <option name="FOREGROUND" value="9B703F" />
+      </value>
+    </option>
+    <option name="JADE_STATEMENTS">
+      <value>
+        <option name="FOREGROUND" value="CDA869" />
+      </value>
+    </option>
     <option name="JAVA_BLOCK_COMMENT">
       <value>
         <option name="FOREGROUND" value="5F5A60" />
       </value>
     </option>
     <option baseAttributes="SLIM_STATIC_CONTENT" name="SLIM_TAG_START" />
+    <option name="SPY-JS.EXCEPTION">
+      <value>
+        <option name="BACKGROUND" value="713f3f" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="F8F8F8" />
+      </value>
+    </option>
+    <option name="SPY-JS.FUNCTION_SCOPE">
+      <value>
+        <option name="BACKGROUND" value="2e2e1f" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="F8F8F8" />
+      </value>
+    </option>
+    <option name="SPY-JS.PATH_LEVEL_ONE">
+      <value>
+        <option name="BACKGROUND" value="264326" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="F8F8F8" />
+      </value>
+    </option>
+    <option name="SPY-JS.PATH_LEVEL_TWO">
+      <value>
+        <option name="EFFECT_TYPE" value="1" />
+        <option name="EFFECT_COLOR" value="F8F8F8" />
+      </value>
+    </option>
+    <option name="SPY-JS.PROGRAM_SCOPE">
+      <value>
+        <option name="BACKGROUND" value="2b2b2b" />
+        <option name="EFFECT_TYPE" value="2" />
+        <option name="EFFECT_COLOR" value="F8F8F8" />
+      </value>
+    </option>
+    <option baseAttributes="TEXT" name="SPY-JS.VALUE_HINT" />
     <option name="STATIC_FIELD_ATTRIBUTES">
       <value>
         <option name="FOREGROUND" value="fda5ff" />
index f7f320df8342570a8e4b9cfb8ecb90efe9f83421..1b6ef6c9ad246138eb3ff61ec5c0f2d2ed7ea21e 100644 (file)
@@ -17,6 +17,8 @@ package com.intellij.compiler.actions;
 
 import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer;
 import com.intellij.openapi.actionSystem.*;
+import com.intellij.openapi.application.TransactionKind;
+import com.intellij.openapi.application.WrapInTransaction;
 import com.intellij.openapi.compiler.CompilerManager;
 import com.intellij.openapi.editor.Editor;
 import com.intellij.openapi.project.Project;
@@ -24,6 +26,7 @@ import com.intellij.openapi.project.DumbAware;
 import com.intellij.openapi.project.DumbService;
 import com.intellij.psi.PsiFile;
 
+@WrapInTransaction(TransactionKind.Common.ANY_CHANGE)
 public abstract class CompileActionBase extends AnAction implements DumbAware {
   public void actionPerformed(AnActionEvent e) {
     final DataContext dataContext = e.getDataContext();
index e825106a03e213e2f405597afbce52998294643b..8889dcd727419c49d5b1e2604ea495529c4c3de6 100644 (file)
@@ -36,10 +36,7 @@ import com.intellij.ide.PowerSaveMode;
 import com.intellij.ide.file.BatchFileChangeListener;
 import com.intellij.openapi.Disposable;
 import com.intellij.openapi.actionSystem.CommonDataKeys;
-import com.intellij.openapi.application.Application;
-import com.intellij.openapi.application.ApplicationManager;
-import com.intellij.openapi.application.ModalityState;
-import com.intellij.openapi.application.PathManager;
+import com.intellij.openapi.application.*;
 import com.intellij.openapi.compiler.CompilationStatusListener;
 import com.intellij.openapi.compiler.CompileContext;
 import com.intellij.openapi.compiler.CompilerPaths;
@@ -77,7 +74,6 @@ import com.intellij.openapi.vfs.newvfs.events.VFileEvent;
 import com.intellij.openapi.vfs.newvfs.impl.FileNameCache;
 import com.intellij.openapi.wm.IdeFrame;
 import com.intellij.util.*;
-import com.intellij.util.concurrency.Semaphore;
 import com.intellij.util.concurrency.SequentialTaskExecutor;
 import com.intellij.util.containers.IntArrayList;
 import com.intellij.util.io.storage.HeavyProcessLatch;
@@ -105,7 +101,6 @@ import org.jetbrains.jps.cmdline.ClasspathBootstrap;
 import org.jetbrains.jps.incremental.Utils;
 import org.jetbrains.jps.model.serialization.JpsGlobalLoader;
 
-import javax.swing.*;
 import javax.tools.*;
 import java.awt.*;
 import java.io.File;
@@ -186,25 +181,11 @@ public class BuildManager implements Disposable {
       return Registry.intValue("compiler.document.save.trigger.delay");
     }
 
-    private final Semaphore mySemaphore = new Semaphore();
-    private final Runnable mySaveDocsRunnable = new Runnable() {
-      @Override
-      public void run() {
-        try {
-          ((FileDocumentManagerImpl)FileDocumentManager.getInstance()).saveAllDocuments(false);
-        }
-        finally {
-          mySemaphore.up();
-        }
-      }
-    };
-
     @Override
     public void runTask() {
       if (shouldSaveDocuments()) {
-        mySemaphore.down();
-        ApplicationManager.getApplication().invokeLater(mySaveDocsRunnable, ModalityState.NON_MODAL);
-        mySemaphore.waitFor();
+        TransactionGuard.getInstance().submitTransactionAndWait(TransactionKind.ANY_CHANGE, () ->
+          ((FileDocumentManagerImpl)FileDocumentManager.getInstance()).saveAllDocuments(false));
       }
     }
 
@@ -312,10 +293,10 @@ public class BuildManager implements Disposable {
           }
 
           if (fileIndex.isInContent(eventFile)) {
-            if (ProjectCoreUtil.isProjectOrWorkspaceFile(eventFile)) {
+            if (ProjectCoreUtil.isProjectOrWorkspaceFile(eventFile) || GeneratedSourcesFilter.isGeneratedSourceByAnyFilter(eventFile, project)) {
+              // changes in project files or generated stuff should not trigger auto-make
               continue;
             }
-
             return true;
           }
         }
@@ -772,12 +753,7 @@ public class BuildManager implements Disposable {
                       // ensure project model is saved on disk, so that automake sees the latest model state.
                       // For ordinary make all project, app settings and unsaved docs are always saved before build starts.
                       try {
-                        SwingUtilities.invokeAndWait(new Runnable() {
-                          @Override
-                          public void run() {
-                            project.save();
-                          }
-                        });
+                        TransactionGuard.getInstance().submitTransactionAndWait(TransactionKind.ANY_CHANGE, project::save);
                       }
                       catch (Throwable e) {
                         LOG.info(e);
index b35289246ebb093024a07948b55cbc460f31a7ad..3a9669db998fe3172044d856796163c28ca11a57 100644 (file)
@@ -21,8 +21,6 @@
     <orderEntry type="module" module-name="java-impl" />
     <orderEntry type="module" module-name="platform-impl" />
     <orderEntry type="module" module-name="util" />
-    <orderEntry type="module" module-name="diff-api" />
-    <orderEntry type="module" module-name="jps-builders" />
   </component>
   <component name="copyright">
     <Base>
index f790a0bf68ce755d298dc81f89e1443a9b0aafad..6183d59f03c4e29dd8d27af5ffbf5c96779066a6 100644 (file)
@@ -26,6 +26,7 @@ import com.intellij.psi.JavaRecursiveElementVisitor;
 import com.intellij.psi.PsiElement;
 import com.intellij.psi.PsiLocalVariable;
 import com.intellij.util.StringBuilderSpinAllocator;
+import com.intellij.util.containers.ContainerUtil;
 import com.intellij.xdebugger.XDebugSession;
 import com.intellij.xdebugger.XDebuggerManager;
 import com.intellij.xdebugger.impl.XDebugSessionImpl;
@@ -87,7 +88,7 @@ public class CodeFragmentFactoryContextWrapper extends CodeFragmentFactory {
       XValueMarkers<?, ?> markers = ((XDebugSessionImpl)session).getValueMarkers();
       Map<?, ValueMarkup> markupMap = markers != null ? markers.getAllMarkers() : null;
       //final Map<ObjectReference, ValueMarkup> markupMap = ValueDescriptorImpl.getMarkupMap(process);
-      if (markupMap != null && markupMap.size() > 0) {
+      if (!ContainerUtil.isEmpty(markupMap)) {
         final Pair<String, Map<String, ObjectReference>> markupVariables = createMarkupVariablesText(markupMap);
         int offset = markupVariables.getFirst().length() - 1;
         final TextWithImportsImpl textWithImports = new TextWithImportsImpl(CodeFragmentKind.CODE_BLOCK, markupVariables.getFirst(), "", myDelegate.getFileType());
diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/CatchEvaluator.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/CatchEvaluator.java
new file mode 100644 (file)
index 0000000..0ad1723
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2000-2016 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.intellij.debugger.engine.evaluation.expression;
+
+import com.intellij.debugger.engine.evaluation.EvaluateException;
+import com.intellij.debugger.engine.evaluation.EvaluationContextImpl;
+import com.sun.jdi.ObjectReference;
+
+/**
+ * @author egor
+ */
+public class CatchEvaluator implements Evaluator {
+  private final String myExceptionType;
+  private final String myParamName;
+  private final CodeFragmentEvaluator myEvaluator;
+
+  public CatchEvaluator(String exceptionType, String paramName, CodeFragmentEvaluator evaluator) {
+    myExceptionType = exceptionType;
+    myParamName = paramName;
+    myEvaluator = evaluator;
+  }
+
+  public Object evaluate(ObjectReference exception, EvaluationContextImpl context) throws EvaluateException {
+    myEvaluator.setValue(myParamName, exception);
+    return myEvaluator.evaluate(context);
+  }
+
+  @Override
+  public Object evaluate(EvaluationContextImpl context) throws EvaluateException {
+    throw new IllegalStateException("Use evaluate(ObjectReference exception, EvaluationContextImpl context)");
+  }
+
+  public String getExceptionType() {
+    return myExceptionType;
+  }
+
+  @Override
+  public Modifier getModifier() {
+    return null;
+  }
+}
index 3575d76fab4fdec1d5f32105632cf2f43133d913..f3fae7db1796ca056da02d92214bc569c50db0bb 100644 (file)
@@ -18,6 +18,7 @@ package com.intellij.debugger.engine.evaluation.expression;
 import com.intellij.debugger.DebuggerBundle;
 import com.intellij.debugger.engine.evaluation.EvaluateException;
 import com.intellij.debugger.engine.evaluation.EvaluateExceptionUtil;
+import com.intellij.debugger.engine.evaluation.EvaluateRuntimeException;
 import com.intellij.debugger.jdi.VirtualMachineProxyImpl;
 import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.util.containers.HashMap;
@@ -103,10 +104,11 @@ public class CodeFragmentEvaluator extends BlockStatementEvaluator{
     }
   }
 
-  public void setInitialValue(String localName, Object value) throws EvaluateException {
+  public void setInitialValue(String localName, Object value) {
     LOG.assertTrue(!(value instanceof Value), "use setValue for jdi values");
     if(hasValue(localName)) {
-      throw EvaluateExceptionUtil.createEvaluateException(DebuggerBundle.message("evaluation.error.variable.already.declared", localName));
+      throw new EvaluateRuntimeException(
+        EvaluateExceptionUtil.createEvaluateException(DebuggerBundle.message("evaluation.error.variable.already.declared", localName)));
     }
     mySyntheticLocals.put(localName, value);
   }
index 291407a2989d808d7a6a559f576241b934cdf1ec..b0a57d5e5b9868365fd9cdbaf65d4dbb380bdabe 100644 (file)
@@ -190,9 +190,51 @@ public class EvaluatorBuilderImpl implements EvaluatorBuilder {
 
     @Override
     public void visitTryStatement(PsiTryStatement statement) {
-      throw new EvaluateRuntimeException(new UnsupportedExpressionException(statement.getText()));
+      if (statement.getResourceList() != null) {
+        throw new EvaluateRuntimeException(new UnsupportedExpressionException("Try with resources is not yet supported"));
+      }
+      Evaluator bodyEvaluator = accept(statement.getTryBlock());
+      if (bodyEvaluator != null) {
+        PsiCatchSection[] catchSections = statement.getCatchSections();
+        List<CatchEvaluator> evaluators = new ArrayList<>();
+        for (PsiCatchSection catchSection : catchSections) {
+          PsiParameter parameter = catchSection.getParameter();
+          PsiCodeBlock catchBlock = catchSection.getCatchBlock();
+          if (parameter != null && catchBlock != null) {
+            CodeFragmentEvaluator oldFragmentEvaluator = setNewCodeFragmentEvaluator();
+            try {
+              myCurrentFragmentEvaluator.setInitialValue(parameter.getName(), null);
+              myCurrentFragmentEvaluator.setStatements(visitStatements(catchBlock.getStatements()));
+              PsiType type = parameter.getType();
+              List<PsiType> types =
+                type instanceof PsiDisjunctionType ? ((PsiDisjunctionType)type).getDisjunctions() : Collections.singletonList(type);
+              for (PsiType psiType : types) {
+                evaluators.add(new CatchEvaluator(psiType.getCanonicalText(), parameter.getName(), myCurrentFragmentEvaluator));
+              }
+            }
+            finally{
+              myCurrentFragmentEvaluator = oldFragmentEvaluator;
+            }
+          }
+        }
+        myResult = new TryEvaluator(bodyEvaluator, evaluators, accept(statement.getFinallyBlock()));
+      }
+    }
+
+    @Override
+    public void visitThrowStatement(PsiThrowStatement statement) {
+      Evaluator accept = accept(statement.getException());
+      if (accept != null) {
+        myResult = new ThrowEvaluator(accept);
+      }
+    }
+
+    @Override
+    public void visitReturnStatement(PsiReturnStatement statement) {
+      myResult = new ReturnEvaluator(accept(statement.getReturnValue()));
     }
 
+
     @Override
     public void visitStatement(PsiStatement statement) {
       throwEvaluateException(DebuggerBundle.message("evaluation.error.statement.not.supported", statement.getText()));
@@ -204,25 +246,33 @@ public class EvaluatorBuilderImpl implements EvaluatorBuilder {
       return old;
     }
 
+    private Evaluator[] visitStatements(PsiStatement[] statements) {
+      Evaluator[] evaluators = new Evaluator[statements.length];
+      for (int i = 0; i < statements.length; i++) {
+        PsiStatement psiStatement = statements[i];
+        psiStatement.accept(this);
+        evaluators[i] = new DisableGC(myResult);
+        myResult = null;
+      }
+      return evaluators;
+    }
+
     @Override
-    public void visitBlockStatement(PsiBlockStatement statement) {
+    public void visitCodeBlock(PsiCodeBlock block) {
       CodeFragmentEvaluator oldFragmentEvaluator = setNewCodeFragmentEvaluator();
       try {
-        PsiStatement[] statements = statement.getCodeBlock().getStatements();
-        Evaluator[] evaluators = new Evaluator[statements.length];
-        for (int i = 0; i < statements.length; i++) {
-          PsiStatement psiStatement = statements[i];
-          psiStatement.accept(this);
-          evaluators[i] = new DisableGC(myResult);
-          myResult = null;
-        }
-        myResult = new BlockStatementEvaluator(evaluators);
+        myResult = new BlockStatementEvaluator(visitStatements(block.getStatements()));
       }
       finally {
         myCurrentFragmentEvaluator = oldFragmentEvaluator;
       }
     }
 
+    @Override
+    public void visitBlockStatement(PsiBlockStatement statement) {
+      visitCodeBlock(statement.getCodeBlock());
+    }
+
     @Override
     public void visitLabeledStatement(PsiLabeledStatement labeledStatement) {
       PsiStatement statement = labeledStatement.getStatement();
@@ -259,33 +309,40 @@ public class EvaluatorBuilderImpl implements EvaluatorBuilder {
 
     @Override
     public void visitForStatement(PsiForStatement statement) {
-      Evaluator initializerEvaluator = accept(statement.getInitialization());
-      Evaluator conditionEvaluator = accept(statement.getCondition());
-      if (conditionEvaluator != null) {
-        conditionEvaluator = new UnBoxingEvaluator(conditionEvaluator);
-      }
-      Evaluator updateEvaluator = accept(statement.getUpdate());
-      Evaluator bodyEvaluator = accept(statement.getBody());
-      if (bodyEvaluator != null) {
-        myResult = new ForStatementEvaluator(initializerEvaluator, conditionEvaluator, updateEvaluator, bodyEvaluator, getLabel(statement));
+      CodeFragmentEvaluator oldFragmentEvaluator = setNewCodeFragmentEvaluator();
+      try {
+        Evaluator initializerEvaluator = accept(statement.getInitialization());
+        Evaluator conditionEvaluator = accept(statement.getCondition());
+        if (conditionEvaluator != null) {
+          conditionEvaluator = new UnBoxingEvaluator(conditionEvaluator);
+        }
+        Evaluator updateEvaluator = accept(statement.getUpdate());
+        Evaluator bodyEvaluator = accept(statement.getBody());
+        if (bodyEvaluator != null) {
+          myResult =
+            new ForStatementEvaluator(initializerEvaluator, conditionEvaluator, updateEvaluator, bodyEvaluator, getLabel(statement));
+        }
+      } finally {
+        myCurrentFragmentEvaluator = oldFragmentEvaluator;
       }
     }
 
     @Override
     public void visitForeachStatement(PsiForeachStatement statement) {
+      CodeFragmentEvaluator oldFragmentEvaluator = setNewCodeFragmentEvaluator();
       try {
         String iterationParameterName = statement.getIterationParameter().getName();
         myCurrentFragmentEvaluator.setInitialValue(iterationParameterName, null);
-        SyntheticVariableEvaluator iterationParameterEvaluator = new SyntheticVariableEvaluator(myCurrentFragmentEvaluator, iterationParameterName);
+        SyntheticVariableEvaluator iterationParameterEvaluator =
+          new SyntheticVariableEvaluator(myCurrentFragmentEvaluator, iterationParameterName);
 
         Evaluator iteratedValueEvaluator = accept(statement.getIteratedValue());
         Evaluator bodyEvaluator = accept(statement.getBody());
         if (bodyEvaluator != null) {
           myResult = new ForeachStatementEvaluator(iterationParameterEvaluator, iteratedValueEvaluator, bodyEvaluator, getLabel(statement));
         }
-      }
-      catch (EvaluateException e) {
-        throw new EvaluateRuntimeException(e);
+      } finally {
+        myCurrentFragmentEvaluator = oldFragmentEvaluator;
       }
     }
 
@@ -538,9 +595,6 @@ public class EvaluatorBuilderImpl implements EvaluatorBuilder {
             catch (IncorrectOperationException e) {
               LOG.error(e);
             }
-            catch (EvaluateException e) {
-              throw new EvaluateRuntimeException(e);
-            }
 
             PsiExpression initializer = localVariable.getInitializer();
             if (initializer != null) {
index 9c8ab067154191db12f700f66f700952c5facaba..b0e19e6ac527687be760a25bcb49f2d733f06e68 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2015 JetBrains s.r.o.
+ * Copyright 2000-2016 JetBrains s.r.o.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -72,6 +72,9 @@ public class ExpressionEvaluatorImpl implements ExpressionEvaluator {
       myValue = (Value)value;
       return myValue;
     }
+    catch (ReturnEvaluator.ReturnException r) {
+      return (Value)r.getReturnValue();
+    }
     catch (Throwable/*IncompatibleThreadStateException*/ e) {
       if (LOG.isDebugEnabled()) {
         LOG.debug(e);
diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/ReturnEvaluator.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/ReturnEvaluator.java
new file mode 100644 (file)
index 0000000..a1b4057
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * Copyright 2000-2016 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.intellij.debugger.engine.evaluation.expression;
+
+import com.intellij.debugger.engine.evaluation.EvaluateException;
+import com.intellij.debugger.engine.evaluation.EvaluationContextImpl;
+import org.jetbrains.annotations.Nullable;
+
+/**
+ * @author egor
+ */
+public class ReturnEvaluator implements Evaluator {
+  @Nullable private final Evaluator myReturnValueEvaluator;
+
+  public ReturnEvaluator(@Nullable Evaluator returnValueEvaluator) {
+    myReturnValueEvaluator = returnValueEvaluator;
+  }
+
+  @Override
+  public Object evaluate(EvaluationContextImpl context) throws EvaluateException {
+    Object returnValue = myReturnValueEvaluator == null ?
+                         context.getDebugProcess().getVirtualMachineProxy().mirrorOfVoid() :
+                         myReturnValueEvaluator.evaluate(context);
+    throw new ReturnException(returnValue);
+  }
+
+  @Override
+  public Modifier getModifier() {
+    return null;
+  }
+
+  public static class ReturnException extends EvaluateException {
+    private final Object myReturnValue;
+
+    public ReturnException(Object returnValue) {
+      super("Return");
+      myReturnValue = returnValue;
+    }
+
+    public Object getReturnValue() {
+      return myReturnValue;
+    }
+  }
+}
diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/ThrowEvaluator.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/ThrowEvaluator.java
new file mode 100644 (file)
index 0000000..b14bb4b
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * Copyright 2000-2016 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.intellij.debugger.engine.evaluation.expression;
+
+import com.intellij.debugger.DebuggerBundle;
+import com.intellij.debugger.engine.evaluation.EvaluateException;
+import com.intellij.debugger.engine.evaluation.EvaluationContextImpl;
+import com.sun.jdi.ObjectReference;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * @author egor
+ */
+public class ThrowEvaluator implements Evaluator {
+  @NotNull private final Evaluator myExceptionEvaluator;
+
+  public ThrowEvaluator(@NotNull Evaluator exceptionEvaluator) {
+    myExceptionEvaluator = exceptionEvaluator;
+  }
+
+  @Override
+  public Object evaluate(EvaluationContextImpl context) throws EvaluateException {
+    ObjectReference exception = (ObjectReference)myExceptionEvaluator.evaluate(context);
+    EvaluateException ex = new EvaluateException(
+      DebuggerBundle.message("evaluation.error.method.exception", exception.referenceType().name()));
+    ex.setTargetException(exception);
+    throw ex;
+  }
+
+  @Override
+  public Modifier getModifier() {
+    return null;
+  }
+}
diff --git a/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/TryEvaluator.java b/java/debugger/impl/src/com/intellij/debugger/engine/evaluation/expression/TryEvaluator.java
new file mode 100644 (file)
index 0000000..d3267e6
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2000-2016 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.intellij.debugger.engine.evaluation.expression;
+
+import com.intellij.debugger.engine.DebuggerUtils;
+import com.intellij.debugger.engine.evaluation.EvaluateException;
+import com.intellij.debugger.engine.evaluation.EvaluationContextImpl;
+import com.sun.jdi.ObjectReference;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+
+/**
+ * @author egor
+ */
+public class TryEvaluator implements Evaluator {
+  @NotNull private final Evaluator myBodyEvaluator;
+  private final List<CatchEvaluator> myCatchBlockEvaluators;
+  @Nullable private final Evaluator myFinallyEvaluator;
+
+  public TryEvaluator(@NotNull Evaluator bodyEvaluator,
+                      List<CatchEvaluator> catchBlockEvaluators,
+                      @Nullable Evaluator finallyEvaluator) {
+    myBodyEvaluator = bodyEvaluator;
+    myCatchBlockEvaluators = catchBlockEvaluators;
+    myFinallyEvaluator = finallyEvaluator;
+  }
+
+  @Override
+  public Object evaluate(EvaluationContextImpl context) throws EvaluateException {
+    Object result = context.getSuspendContext().getDebugProcess().getVirtualMachineProxy().mirrorOfVoid();
+    try {
+      result = myBodyEvaluator.evaluate(context);
+    } catch (EvaluateException e) {
+      boolean catched = false;
+      ObjectReference vmException = e.getExceptionFromTargetVM();
+      if (vmException != null) {
+        for (CatchEvaluator evaluator : myCatchBlockEvaluators) {
+          if (evaluator != null && DebuggerUtils.instanceOf(vmException.type(), evaluator.getExceptionType())) {
+            result = evaluator.evaluate(vmException, context);
+            catched = true;
+            break;
+          }
+        }
+      }
+      if (!catched) {
+        throw e;
+      }
+    } finally {
+      if (myFinallyEvaluator != null) {
+        result = myFinallyEvaluator.evaluate(context);
+      }
+    }
+    return result;
+  }
+
+  @Override
+  public Modifier getModifier() {
+    return null;
+  }
+}
index 7819a3dd076df83b99d449f3e3f274259892113d..542fd55570da9a70db0b27a3784a4d4f0c31e14b 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2015 JetBrains s.r.o.
+ * Copyright 2000-2016 JetBrains s.r.o.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -153,10 +153,17 @@ public abstract class DebuggerUtils {
   public static Method findMethod(@NotNull ReferenceType refType, @NonNls String methodName, @Nullable @NonNls String methodSignature) {
     if (refType instanceof ArrayType) {
       // for array types methodByName() in JDI always returns empty list
-      final Method method = findMethod(refType.virtualMachine().classesByName(CommonClassNames.JAVA_LANG_OBJECT).get(0), methodName, methodSignature);
+      Method method = findMethod(refType.virtualMachine().classesByName(CommonClassNames.JAVA_LANG_OBJECT).get(0), methodName, methodSignature);
       if (method != null) {
         return method;
       }
+      // for arrays, clone signature may return array of objects, there is no such method in Object class
+      if ("clone".equals(methodName) && "()[Ljava/lang/Object;".equals(methodSignature)) {
+        method = findMethod(refType.virtualMachine().classesByName(CommonClassNames.JAVA_LANG_OBJECT).get(0), "clone", null);
+        if (method != null) {
+          return method;
+        }
+      }
     }
 
     Method method = null;
index 2f538f46db988fa7e9b754585994da738b8c1c5a..d52bb86f8fcca847f9f152f41c89b8fdfa0c7957 100644 (file)
@@ -21,13 +21,14 @@ import com.intellij.execution.junit2.PsiMemberParameterizedLocation;
 import com.intellij.execution.junit2.info.MethodLocation;
 import com.intellij.ide.util.PsiClassListCellRenderer;
 import com.intellij.openapi.actionSystem.PlatformDataKeys;
+import com.intellij.openapi.application.ApplicationManager;
 import com.intellij.openapi.editor.Document;
 import com.intellij.openapi.fileEditor.FileEditor;
 import com.intellij.openapi.fileEditor.TextEditor;
 import com.intellij.openapi.progress.ProgressManager;
 import com.intellij.openapi.ui.popup.JBPopupFactory;
+import com.intellij.openapi.util.Computable;
 import com.intellij.openapi.util.Condition;
-import com.intellij.openapi.util.Conditions;
 import com.intellij.psi.*;
 import com.intellij.psi.search.searches.ClassInheritorsSearch;
 import com.intellij.psi.util.PsiClassUtil;
@@ -88,10 +89,11 @@ public class InheritorChooser {
       if (!ProgressManager.getInstance().runProcessWithProgressSynchronously(new Runnable() {
         @Override
         public void run() {
+          final boolean isJUnit5 = ApplicationManager.getApplication().runReadAction((Computable<Boolean>)() -> JUnitUtil.isJUnit5(containingClass));
           ClassInheritorsSearch.search(containingClass).forEach(new Processor<PsiClass>() {
             @Override
             public boolean process(PsiClass aClass) {
-              if (PsiClassUtil.isRunnableClass(aClass, true, true)) {
+              if (PsiClassUtil.isRunnableClass(aClass, !isJUnit5, true)) {
                 classes.add(aClass);
               }
               return true;
index 74bf67d2c428ccc0a950f80af6590ea011d61e44..db073a2738d5666e8731b3608c30804c0269c6c6 100644 (file)
@@ -37,10 +37,7 @@ import org.jetbrains.annotations.NonNls;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
+import java.util.*;
 
 @SuppressWarnings({"UtilityClassWithoutPrivateConstructor"})
 public class JUnitUtil {
@@ -48,17 +45,38 @@ public class JUnitUtil {
   @NonNls private static final String TEST_INTERFACE = "junit.framework.Test";
   @NonNls private static final String TESTSUITE_CLASS = "junit.framework.TestSuite";
   @NonNls public static final String TEST_ANNOTATION = "org.junit.Test";
+  @NonNls public static final String TEST5_ANNOTATION = "org.junit.gen5.api.Test";
   @NonNls public static final String IGNORE_ANNOTATION = "org.junit.Ignore";
   @NonNls public static final String RUN_WITH = "org.junit.runner.RunWith";
   @NonNls public static final String DATA_POINT = "org.junit.experimental.theories.DataPoint";
   @NonNls public static final String SUITE_METHOD_NAME = "suite";
+
   public static final String BEFORE_ANNOTATION_NAME = "org.junit.Before";
   public static final String AFTER_ANNOTATION_NAME = "org.junit.After";
+
+  public static final String BEFORE_EACH_ANNOTATION_NAME = "org.junit.gen5.api.BeforeEach";
+  public static final String AFTER_EACH_ANNOTATION_NAME = "org.junit.gen5.api.AfterEach";
+
   public static final String PARAMETRIZED_PARAMETERS_ANNOTATION_NAME = "org.junit.runners.Parameterized.Parameters";
+
   public static final String AFTER_CLASS_ANNOTATION_NAME = "org.junit.AfterClass";
   public static final String BEFORE_CLASS_ANNOTATION_NAME = "org.junit.BeforeClass";
+
+  public static final String BEFORE_ALL_ANNOTATION_NAME = "org.junit.gen5.api.BeforeAll";
+  public static final String AFTER_ALL_ANNOTATION_NAME = "org.junit.gen5.api.AfterAll";
+
+  private static final Collection<String> TEST_ANNOTATIONS = Collections.unmodifiableList(Arrays.asList(TEST_ANNOTATION, TEST5_ANNOTATION));
+
+  private static final List<String> INSTANCE_CONFIGS = Arrays.asList(BEFORE_ANNOTATION_NAME, AFTER_ANNOTATION_NAME);
+  private static final List<String> INSTANCE_5_CONFIGS = Arrays.asList(BEFORE_EACH_ANNOTATION_NAME, AFTER_EACH_ANNOTATION_NAME);
+
+  private static final List<String> STATIC_5_CONFIGS = Arrays.asList(BEFORE_ALL_ANNOTATION_NAME, AFTER_ALL_ANNOTATION_NAME);
+
+  private static final List<String> STATIC_CONFIGS = Arrays.asList(BEFORE_CLASS_ANNOTATION_NAME, AFTER_CLASS_ANNOTATION_NAME,
+                                                                   PARAMETRIZED_PARAMETERS_ANNOTATION_NAME);
   private static final Collection<String> CONFIGURATIONS_ANNOTATION_NAME = Collections.unmodifiableList(
-    Arrays.asList(DATA_POINT, AFTER_ANNOTATION_NAME, BEFORE_ANNOTATION_NAME, AFTER_CLASS_ANNOTATION_NAME, BEFORE_CLASS_ANNOTATION_NAME));
+    Arrays.asList(DATA_POINT, AFTER_ANNOTATION_NAME, BEFORE_ANNOTATION_NAME, AFTER_CLASS_ANNOTATION_NAME, BEFORE_CLASS_ANNOTATION_NAME,
+                  BEFORE_ALL_ANNOTATION_NAME, AFTER_ALL_ANNOTATION_NAME));
   
   @NonNls public static final String PARAMETERIZED_CLASS_NAME = "org.junit.runners.Parameterized";
   @NonNls public static final String SUITE_CLASS_NAME = "org.junit.runners.Suite";
@@ -126,17 +144,27 @@ public class JUnitUtil {
         }
       }
     }
-    if (!PsiClassUtil.isRunnableClass(psiClass, true, checkAbstract)) return false;
-    if (checkForTestCaseInheritance && isTestCaseInheritor(psiClass)) return true;
     final PsiModifierList modifierList = psiClass.getModifierList();
     if (modifierList == null) return false;
     if (AnnotationUtil.isAnnotated(psiClass, RUN_WITH, true)) return true;
 
+    final boolean hasJUnit5 = isJUnit5(modifierList);
+    if (!PsiClassUtil.isRunnableClass(psiClass, !hasJUnit5, checkAbstract)) return false;
+    if (checkForTestCaseInheritance && (!hasJUnit5 || psiClass.hasModifierProperty(PsiModifier.PUBLIC)) && isTestCaseInheritor(psiClass)) return true;
+
     for (final PsiMethod method : psiClass.getAllMethods()) {
       ProgressManager.checkCanceled();
       if (isSuiteMethod(method)) return true;
       if (isTestAnnotated(method)) return true;
     }
+    
+    if (hasJUnit5) {
+      for (PsiClass innerClass : psiClass.getInnerClasses()) {
+        for (PsiMethod method : innerClass.getAllMethods()) {
+          if (isTestAnnotated(method)) return true;
+        }
+      }
+    }
 
     return false;
   }
@@ -150,11 +178,12 @@ public class JUnitUtil {
   }
 
   private static boolean isJUnit4TestClass(final PsiClass psiClass, boolean checkAbstract) {
-    if (!PsiClassUtil.isRunnableClass(psiClass, true, checkAbstract)) return false;
-
     final PsiModifierList modifierList = psiClass.getModifierList();
     if (modifierList == null) return false;
     if (AnnotationUtil.isAnnotated(psiClass, RUN_WITH, true)) return true;
+
+    if (!PsiClassUtil.isRunnableClass(psiClass, !isJUnit5(modifierList), checkAbstract)) return false;
+
     for (final PsiMethod method : psiClass.getAllMethods()) {
       ProgressManager.checkCanceled();
       if (isTestAnnotated(method)) return true;
@@ -163,8 +192,16 @@ public class JUnitUtil {
     return false;
   }
 
+  public static boolean isJUnit5(@NotNull PsiElement element) {
+    return isJUnit5(element.getResolveScope(), element.getProject());
+  }
+
+  public static boolean isJUnit5(GlobalSearchScope scope, Project project) {
+    return JavaPsiFacade.getInstance(project).findClass(TEST5_ANNOTATION, scope) != null;
+  }
+  
   public static boolean isTestAnnotated(final PsiMethod method) {
-    if (AnnotationUtil.isAnnotated(method, TEST_ANNOTATION, false) || JUnitRecognizer.willBeAnnotatedAfterCompilation(method)) {
+    if (AnnotationUtil.isAnnotated(method, TEST_ANNOTATIONS, false) || JUnitRecognizer.willBeAnnotatedAfterCompilation(method)) {
       final PsiAnnotation annotation = AnnotationUtil.findAnnotationInHierarchy(method.getContainingClass(), Collections.singleton(RUN_WITH));
       if (annotation != null) {
         final PsiNameValuePair[] attributes = annotation.getParameterList().getAttributes();
@@ -240,18 +277,28 @@ public class JUnitUtil {
       }
     }
     final String name = psiMethod.getName();
-    if (psiMethod.hasModifierProperty(PsiModifier.PUBLIC) && !psiMethod.hasModifierProperty(PsiModifier.ABSTRACT)) {
-      if (SUITE_METHOD_NAME.equals(name) || "setUp".equals(name) || "tearDown".equals(name)) {
+    final boolean isPublic = psiMethod.hasModifierProperty(PsiModifier.PUBLIC);
+    if (!psiMethod.hasModifierProperty(PsiModifier.ABSTRACT)) {
+      if (isPublic && (SUITE_METHOD_NAME.equals(name) || "setUp".equals(name) || "tearDown".equals(name))) {
         return true;
       }
+
       if (psiMethod.hasModifierProperty(PsiModifier.STATIC)) {
-        if (AnnotationUtil.isAnnotated(psiMethod, Arrays.asList(BEFORE_CLASS_ANNOTATION_NAME, AFTER_CLASS_ANNOTATION_NAME,
-                                                                PARAMETRIZED_PARAMETERS_ANNOTATION_NAME))) {
+        if (AnnotationUtil.isAnnotated(psiMethod, STATIC_CONFIGS)) {
+          return isPublic;
+        }
+        if (AnnotationUtil.isAnnotated(psiMethod, STATIC_5_CONFIGS)) {
           return true;
         }
       }
       else {
-        if (AnnotationUtil.isAnnotated(psiMethod, Arrays.asList(BEFORE_ANNOTATION_NAME, AFTER_ANNOTATION_NAME))) return true;
+        if (AnnotationUtil.isAnnotated(psiMethod, INSTANCE_CONFIGS)) {
+          return isPublic;
+        }
+
+        if (AnnotationUtil.isAnnotated(psiMethod, INSTANCE_5_CONFIGS)) {
+          return true;
+        }
       }
     }
     return false;
index 6d4ac0cebcfae26e44ad2502dba492c3b6c2753d..7212157627687360ea98e7cdc17a526dca4f03db 100644 (file)
@@ -101,7 +101,7 @@ public class AnnotateMethodFix implements LocalQuickFix {
   @Override
   @NotNull
   public String getFamilyName() {
-    return getName();
+    return InspectionsBundle.message("inspection.annotate.method.quickfix.family.name");
   }
 
   private void annotateMethod(@NotNull PsiMethod method) {
index a0a6875c2135f1a0109877e230cd21700bd69e2e..b263fc278ffea70a19cebc1183a4c4d5aafac0b4 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright 2000-2014 JetBrains s.r.o.
+ * Copyright 2000-2016 JetBrains s.r.o.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 package com.intellij.codeInspection.javaDoc;
 
 import com.intellij.ToolExtensionPoints;
-import com.intellij.codeInsight.FileModificationService;
-import com.intellij.codeInsight.daemon.QuickFixBundle;
+import com.intellij.codeInsight.AnnotationUtil;
 import com.intellij.codeInspection.*;
-import com.intellij.codeInspection.reference.RefJavaUtil;
-import com.intellij.lang.ASTNode;
-import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.extensions.ExtensionPoint;
 import com.intellij.openapi.extensions.Extensions;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.util.*;
-import com.intellij.pom.Navigatable;
-import com.intellij.profile.codeInspection.InspectionProfileManager;
-import com.intellij.profile.codeInspection.InspectionProjectProfileManager;
 import com.intellij.psi.*;
-import com.intellij.psi.impl.source.javadoc.PsiDocParamRef;
 import com.intellij.psi.javadoc.*;
-import com.intellij.psi.util.InheritanceUtil;
 import com.intellij.psi.util.PropertyUtil;
 import com.intellij.psi.util.PsiTreeUtil;
-import com.intellij.util.IncorrectOperationException;
+import com.intellij.util.ObjectUtils;
 import com.intellij.util.containers.ContainerUtil;
 import org.jdom.Element;
-import org.jetbrains.annotations.NonNls;
+import org.jetbrains.annotations.Nls;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
-import java.util.*;
+import java.util.List;
+import java.util.function.Predicate;
+import java.util.stream.Stream;
 
 public class JavaDocLocalInspectionBase extends BaseJavaBatchLocalInspectionTool {
-  private static final Logger LOG = Logger.getInstance("com.intellij.codeInspection.javaDoc.JavaDocLocalInspectionBase");
-  @NonNls protected static final String NONE = "none";
-  @NonNls protected static final String PUBLIC = "public";
-  @NonNls protected static final String PROTECTED = "protected";
-  @NonNls protected static final String PACKAGE_LOCAL = "package";
-  @NonNls protected static final String PRIVATE = "private";
-
-  private static final String REQUIRED_JAVADOC_IS_ABSENT = InspectionsBundle.message("inspection.javadoc.problem.descriptor");
-
-  @NonNls private static final Set<String> ourUniqueTags = new HashSet<String>();
-  @NonNls public static final String SHORT_NAME = "JavaDoc";
-
-  static {
-    ourUniqueTags.add("return");
-    ourUniqueTags.add("deprecated");
-    ourUniqueTags.add("serial");
-    ourUniqueTags.add("serialData");
-  }
+  public static final String SHORT_NAME = "JavaDoc";
+
+  protected static final String NONE = "none";
+  protected static final String PACKAGE_LOCAL = "package";
+  protected static final String PUBLIC = PsiModifier.PUBLIC;
+  protected static final String PROTECTED = PsiModifier.PROTECTED;
+  protected static final String PRIVATE = PsiModifier.PRIVATE;
 
-  @NonNls private static final String IGNORE_ACCESSORS_ATTR_NAME = "IGNORE_ACCESSORS";
-  @NonNls private static final String IGNORE_DUPLICATED_THROWS_TAGS_ATTR_NAME = "IGNORE_DUPLICATED_THROWS_TAGS";
+  private static final String IGNORE_ACCESSORS_ATTR_NAME = "IGNORE_ACCESSORS";
+  private static final String IGNORE_DUPLICATED_THROWS_TAGS_ATTR_NAME = "IGNORE_DUPLICATED_THROWS_TAGS";
 
+  @SuppressWarnings("deprecation")
   public static class Options implements JDOMExternalizable {
-    @NonNls public String ACCESS_JAVADOC_REQUIRED_FOR = NONE;
-    @NonNls public String REQUIRED_TAGS = "";
+    public String ACCESS_JAVADOC_REQUIRED_FOR = NONE;
+    public String REQUIRED_TAGS = "";
 
     public Options() {}
 
-    public Options(String ACCESS_JAVADOC_REQUIRED_FOR, String REQUIRED_TAGS) {
-      this.ACCESS_JAVADOC_REQUIRED_FOR = ACCESS_JAVADOC_REQUIRED_FOR;
-      this.REQUIRED_TAGS = REQUIRED_TAGS;
+    public Options(String accessJavadocRequiredFor, String requiredTags) {
+      ACCESS_JAVADOC_REQUIRED_FOR = accessJavadocRequiredFor;
+      REQUIRED_TAGS = requiredTags;
     }
 
     @Override
@@ -89,19 +72,39 @@ public class JavaDocLocalInspectionBase extends BaseJavaBatchLocalInspectionTool
     }
   }
 
-  @NonNls protected final Options PACKAGE_OPTIONS = new Options("none", "");
-  @NonNls public Options TOP_LEVEL_CLASS_OPTIONS = new Options("none", "");
-  @NonNls public Options INNER_CLASS_OPTIONS = new Options("none", "");
-  @NonNls public Options METHOD_OPTIONS = new Options("none", "@return@param@throws or @exception");
-  @NonNls public Options FIELD_OPTIONS = new Options("none", "");
+  protected final Options PACKAGE_OPTIONS = new Options("none", "");
+
+  public Options TOP_LEVEL_CLASS_OPTIONS = new Options("none", "");
+  public Options INNER_CLASS_OPTIONS = new Options("none", "");
+  public Options METHOD_OPTIONS = new Options("none", "@return@param@throws or @exception");
+  public Options FIELD_OPTIONS = new Options("none", "");
   public boolean IGNORE_DEPRECATED = false;
   public boolean IGNORE_JAVADOC_PERIOD = true;
   @SuppressWarnings("unused") @Deprecated
   public boolean IGNORE_DUPLICATED_THROWS = false;
+  public boolean IGNORE_POINT_TO_ITSELF = false;
+
+  public String myAdditionalJavadocTags = "";
 
   private boolean myIgnoreDuplicatedThrows = true;
+  private boolean myIgnoreEmptyDescriptions = false;
+  private boolean myIgnoreSimpleAccessors = false;
 
-  public boolean getIgnoreDuplicatedThrows() {
+  public void setPackageOption(String modifier, String tags) {
+    PACKAGE_OPTIONS.ACCESS_JAVADOC_REQUIRED_FOR = modifier;
+    PACKAGE_OPTIONS.REQUIRED_TAGS = tags;
+  }
+
+  public void registerAdditionalTag(@NotNull String tag) {
+    if (!myAdditionalJavadocTags.isEmpty()) {
+      myAdditionalJavadocTags += "," + tag;
+    }
+    else {
+      myAdditionalJavadocTags = tag;
+    }
+  }
+
+  public boolean isIgnoreDuplicatedThrows() {
     return myIgnoreDuplicatedThrows;
   }
 
@@ -109,33 +112,28 @@ public class JavaDocLocalInspectionBase extends BaseJavaBatchLocalInspectionTool
     myIgnoreDuplicatedThrows = ignoreDuplicatedThrows;
   }
 
-  public boolean IGNORE_POINT_TO_ITSELF = false;
-  public String myAdditionalJavadocTags = "";
-
-  private boolean myIgnoreEmptyDescriptions = false;
-  protected boolean myIgnoreSimpleAccessors = false;
+  public void setIgnoreEmptyDescriptions(boolean ignoreEmptyDescriptions) {
+    myIgnoreEmptyDescriptions = ignoreEmptyDescriptions;
+  }
 
-  @Override
-  public boolean isEnabledByDefault() {
-    return true;
+  public boolean isIgnoreSimpleAccessors() {
+    return myIgnoreSimpleAccessors;
   }
 
   public void setIgnoreSimpleAccessors(boolean ignoreSimpleAccessors) {
     myIgnoreSimpleAccessors = ignoreSimpleAccessors;
   }
 
-  public void setPackageOption(@NonNls String modifier, @NonNls String tags) {
-    PACKAGE_OPTIONS.ACCESS_JAVADOC_REQUIRED_FOR = modifier;
-    PACKAGE_OPTIONS.REQUIRED_TAGS = tags;
+  @Override
+  public boolean isEnabledByDefault() {
+    return true;
   }
 
   @Override
   public void writeSettings(@NotNull Element node) throws WriteExternalException {
     super.writeSettings(node);
     if (myIgnoreSimpleAccessors) {
-      final Element option = new Element(IGNORE_ACCESSORS_ATTR_NAME);
-      option.setAttribute("value", String.valueOf(true));
-      node.addContent(option);
+      node.addContent(new Element(IGNORE_ACCESSORS_ATTR_NAME).setAttribute("value", String.valueOf(true)));
     }
     if (!myIgnoreDuplicatedThrows) {
       node.addContent(new Element(IGNORE_DUPLICATED_THROWS_TAGS_ATTR_NAME).setAttribute("value", String.valueOf(false)));
@@ -148,7 +146,7 @@ public class JavaDocLocalInspectionBase extends BaseJavaBatchLocalInspectionTool
   @Override
   public void readSettings(@NotNull Element node) throws InvalidDataException {
     super.readSettings(node);
-    final Element ignoreAccessorsTag = node.getChild(IGNORE_ACCESSORS_ATTR_NAME);
+    Element ignoreAccessorsTag = node.getChild(IGNORE_ACCESSORS_ATTR_NAME);
     if (ignoreAccessorsTag != null) {
       myIgnoreSimpleAccessors = Boolean.parseBoolean(ignoreAccessorsTag.getAttributeValue("value"));
     }
@@ -159,793 +157,219 @@ public class JavaDocLocalInspectionBase extends BaseJavaBatchLocalInspectionTool
     PACKAGE_OPTIONS.readExternal(node);
   }
 
-  private static ProblemDescriptor createDescriptor(@NotNull PsiElement element, String template, InspectionManager manager,
-                                                    boolean onTheFly) {
-    return manager.createProblemDescriptor(element, template, onTheFly, null, ProblemHighlightType.GENERIC_ERROR_OR_WARNING);
-  }
-
-  private static ProblemDescriptor createDescriptor(@NotNull PsiElement element, String template, @NotNull LocalQuickFix fix,
-                                                    InspectionManager manager, boolean onTheFly) {
-    return manager.createProblemDescriptor(element, template, fix, ProblemHighlightType.GENERIC_ERROR_OR_WARNING, onTheFly);
-  }
-
-  private static class AddMissingTagFix implements LocalQuickFix {
-    private final String myTag;
-    private final String myValue;
-
-    public AddMissingTagFix(@NonNls @NotNull String tag, @NotNull String value) {
-      myTag = tag;
-      myValue = value;
-    }
-    public AddMissingTagFix(@NotNull String tag) {
-      this(tag, "");
-    }
-
-    @Override
-    @NotNull
-    public String getName() {
-      return InspectionsBundle.message("inspection.javadoc.problem.add.tag", myTag, myValue);
-    }
-
-    @Override
-    public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
-      final PsiElementFactory factory = JavaPsiFacade.getInstance(project).getElementFactory();
-      try {
-        final PsiDocComment docComment = PsiTreeUtil.getParentOfType(descriptor.getEndElement(), PsiDocComment.class);
-        if (docComment != null) {
-          if (!FileModificationService.getInstance().preparePsiElementsForWrite(docComment)) return;
-          final PsiDocTag tag = factory.createDocTagFromText("@" + myTag + " " + myValue);
-          PsiElement addedTag;
-          final PsiElement anchor = getAnchor(descriptor);
-          if (anchor != null) {
-            addedTag = docComment.addBefore(tag, anchor);
-          }
-          else {
-            addedTag = docComment.add(tag);
-          }
-          moveCaretAfter(addedTag);
-        }
-      }
-      catch (IncorrectOperationException e) {
-        LOG.error(e);
-      }
-    }
-
-    @Nullable
-    protected PsiElement getAnchor(ProblemDescriptor descriptor) {
-      return null;
-    }
-
-    private static void moveCaretAfter(final PsiElement newCaretPosition) {
-      PsiElement sibling = newCaretPosition.getNextSibling();
-      if (sibling != null) {
-        ((Navigatable)sibling).navigate(true);
-      }
-    }
-
-    @Override
-    @NotNull
-    public String getFamilyName() {
-      return InspectionsBundle.message("inspection.javadoc.problem.add.tag.family");
-    }
-  }
-
   @Nullable
   @Override
   public ProblemDescriptor[] checkFile(@NotNull PsiFile file, @NotNull InspectionManager manager, boolean isOnTheFly) {
     if (!PsiPackage.PACKAGE_INFO_FILE.equals(file.getName()) || !(file instanceof PsiJavaFile)) {
       return null;
     }
-    final PsiDocComment docComment = PsiTreeUtil.getChildOfType(file, PsiDocComment.class);
-    final JavaDirectoryService directoryService = JavaDirectoryService.getInstance();
-    final PsiDirectory directory = file.getContainingDirectory();
-    final PsiPackage aPackage = directoryService.getPackage(directory);
-    if (IGNORE_DEPRECATED && aPackage != null) {
-      final PsiModifierList modifierList = aPackage.getModifierList();
-      if (modifierList != null && modifierList.findAnnotation("java.lang.Deprecated") != null) {
-        return null;
-      }
-    }
-    final PsiJavaFile javaFile = (PsiJavaFile)file;
-    final PsiPackageStatement packageStatement = javaFile.getPackageStatement();
-    final PsiElement elementToHighlight = packageStatement != null ? packageStatement : file;
-
-    final boolean required = aPackage != null && isJavaDocRequired(aPackage);
-    if (docComment != null) {
-      if (IGNORE_DEPRECATED && docComment.findTagByName("deprecated") != null) {
-        return null;
-      }
-    }
-    else {
-      return required
-             ? new ProblemDescriptor[]{createRequiredJavadocAbsentDescription(elementToHighlight, manager, isOnTheFly)}
-             : null;
-    }
 
-    final PsiDocTag[] tags = docComment.getTags();
-    final List<ProblemDescriptor> problems =
-      getRequiredTagProblems(aPackage, docComment.getFirstChild(), tags, manager, isOnTheFly, required);
-    final List<ProblemDescriptor> tagProblems = getTagValuesProblems(aPackage, tags, manager, isOnTheFly);
-    if (tagProblems != null) {
-      problems.addAll(tagProblems);
-    }
-    checkInlineTags(manager, problems, docComment.getDescriptionElements(),
-                    JavadocManager.SERVICE.getInstance(docComment.getProject()), isOnTheFly);
-    checkForPeriodInDoc(aPackage, docComment, problems, manager, isOnTheFly);
-    checkForBadCharacters(docComment, problems, manager, isOnTheFly);
-    return problems.isEmpty()
-           ? null
-           : problems.toArray(new ProblemDescriptor[problems.size()]);
-  }
+    PsiDocComment docComment = PsiTreeUtil.getChildOfType(file, PsiDocComment.class);
+    PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage(file.getContainingDirectory());
+    boolean required = aPackage != null && JavadocHighlightUtil.isJavaDocRequired(this, aPackage);
+    ProblemHolderImpl holder = new ProblemHolderImpl(manager, isOnTheFly);
 
-  @Override
-  @Nullable
-  public ProblemDescriptor[] checkClass(@NotNull PsiClass psiClass, @NotNull InspectionManager manager, boolean isOnTheFly) {
-    if (psiClass instanceof PsiAnonymousClass) return null;
-    if (psiClass instanceof PsiSyntheticClass) return null;
-    if (psiClass instanceof PsiTypeParameter) return null;
-    if (IGNORE_DEPRECATED && psiClass.isDeprecated()) {
+    if (IGNORE_DEPRECATED &&
+        (AnnotationUtil.findAnnotation(aPackage, CommonClassNames.JAVA_LANG_DEPRECATED) != null ||
+         docComment != null && docComment.findTagByName("deprecated") != null)) {
       return null;
     }
-    PsiDocComment docComment = psiClass.getDocComment();
-    final PsiIdentifier nameIdentifier = psiClass.getNameIdentifier();
-    final PsiElement elementToHighlight = nameIdentifier != null ? nameIdentifier : psiClass;
-    final boolean required = isJavaDocRequired(psiClass);
-    if (docComment == null) {
-      return required
-             ? new ProblemDescriptor[]{createRequiredJavadocAbsentDescription(elementToHighlight, manager, isOnTheFly)}
-             : null;
-    }
 
-    PsiDocTag[] tags = docComment.getTags();
-    final List<ProblemDescriptor> problems = getRequiredTagProblems(psiClass, docComment.getFirstChild(), tags, manager, isOnTheFly, required);
-
-    List<ProblemDescriptor> tagProblems = getTagValuesProblems(psiClass, tags, manager, isOnTheFly);
-    if (tagProblems != null) {
-      problems.addAll(tagProblems);
-    }
-    checkForPeriodInDoc(psiClass, docComment, problems, manager, isOnTheFly);
-    checkInlineTags(manager, problems, docComment.getDescriptionElements(),
-                    JavadocManager.SERVICE.getInstance(docComment.getProject()), isOnTheFly);
-    checkForBadCharacters(docComment, problems, manager, isOnTheFly);
-    checkDuplicateTags(tags, problems, manager, isOnTheFly);
-
-    if (required && isTagRequired(psiClass, "param") && psiClass.hasTypeParameters() && nameIdentifier != null) {
-      ArrayList<PsiTypeParameter> absentParameters = null;
-      final PsiTypeParameter[] typeParameters = psiClass.getTypeParameters();
-      for (PsiTypeParameter typeParameter : typeParameters) {
-        if (!isFound(tags, typeParameter)) {
-          if (absentParameters == null) absentParameters = new ArrayList<PsiTypeParameter>(1);
-          absentParameters.add(typeParameter);
-        }
-      }
-      if (absentParameters != null) {
-        for (PsiTypeParameter psiTypeParameter : absentParameters) {
-          problems.add(createMissingParamTagDescriptor(docComment.getFirstChild(), psiTypeParameter, manager, isOnTheFly));
-        }
+    if (docComment == null) {
+      if (required) {
+        PsiElement toHighlight = ObjectUtils.notNull(((PsiJavaFile)file).getPackageStatement(), file);
+        JavadocHighlightUtil.reportMissingTag(toHighlight, holder);
       }
     }
+    else {
+      PsiDocTag[] tags = docComment.getTags();
 
-    return problems.isEmpty()
-           ? null
-           : problems.toArray(new ProblemDescriptor[problems.size()]);
-  }
-
-  private List<ProblemDescriptor> getRequiredTagProblems(PsiElement context,
-                                                         PsiElement elementToHighlight,
-                                                         PsiDocTag[] tags,
-                                                         InspectionManager manager, boolean isOnTheFly, boolean required) {
-    @NonNls String[] tagsToCheck = {"author", "version", "since"};
-    @NonNls String[] absentDescriptionKeys = {
-      "inspection.javadoc.problem.missing.author.description",
-      "inspection.javadoc.problem.missing.version.description",
-      "inspection.javadoc.problem.missing.since.description"};
-    final ArrayList<ProblemDescriptor> problems = new ArrayList<ProblemDescriptor>(2);
-    if (required) {
-      boolean[] isTagRequired = new boolean[tagsToCheck.length];
-      boolean[] isTagPresent = new boolean[tagsToCheck.length];
-
-      boolean someTagsAreRequired = false;
-      for (int i = 0; i < tagsToCheck.length; i++) {
-        final String tag = tagsToCheck[i];
-        someTagsAreRequired |= isTagRequired[i] = isTagRequired(context, tag);
+      if (required) {
+        Predicate<String> tagChecker = tag -> isTagRequired(aPackage, tag);
+        JavadocHighlightUtil.checkRequiredTags(tags, tagChecker, docComment.getFirstChild(), holder);
       }
 
-      if (someTagsAreRequired) {
-        for (PsiDocTag tag : tags) {
-          String tagName = tag.getName();
-          for (int i = 0; i < tagsToCheck.length; i++) {
-            final String tagToCheck = tagsToCheck[i];
-            if (tagToCheck.equals(tagName)) {
-              isTagPresent[i] = true;
-            }
-          }
-        }
-      }
+      JavadocHighlightUtil.checkRequiredTagDescriptions(tags, holder);
 
-      for (int i = 0; i < tagsToCheck.length; i++) {
-        final String tagToCheck = tagsToCheck[i];
-        if (isTagRequired[i] && !isTagPresent[i]) {
-          problems.add(createMissingTagDescriptor(elementToHighlight, tagToCheck, manager, isOnTheFly));
-        }
-      }
-    }
-    for (PsiDocTag tag : tags) {
-      for (int i = 0; i < tagsToCheck.length; i++) {
-        final String tagToCheck = tagsToCheck[i];
-        if (tagToCheck.equals(tag.getName()) && extractTagDescription(tag).isEmpty()) {
-          problems.add(createDescriptor(tag.getNameElement(), InspectionsBundle.message(absentDescriptionKeys[i]), manager, isOnTheFly));
-        }
-      }
-    }
-    return problems;
-  }
+      JavadocHighlightUtil.checkTagValues(tags, aPackage, holder);
 
-  private static ProblemDescriptor createMissingParamTagDescriptor(final PsiElement elementToHighlight,
-                                                                   final PsiTypeParameter psiTypeParameter,
-                                                                   final InspectionManager manager, boolean isOnTheFly) {
-    String message = InspectionsBundle.message("inspection.javadoc.problem.missing.tag", "<code>@param</code>");
-    return createDescriptor(elementToHighlight, message, new AddMissingTagFix("param", "<" + psiTypeParameter.getName() + ">"), manager,
-                            isOnTheFly);
-  }
-
-  @Override
-  @Nullable
-  public ProblemDescriptor[] checkField(@NotNull PsiField psiField, @NotNull InspectionManager manager, boolean isOnTheFly) {
-    if (IGNORE_DEPRECATED && (psiField.isDeprecated() || psiField.getContainingClass().isDeprecated())) {
-      return null;
-    }
+      JavadocHighlightUtil.checkInlineTags(docComment.getDescriptionElements(), holder);
 
-    PsiDocComment docComment = psiField.getDocComment();
-    if (docComment == null) {
-      final PsiIdentifier nameIdentifier = psiField.getNameIdentifier();
-      return isJavaDocRequired(psiField)
-             ? new ProblemDescriptor[]{createRequiredJavadocAbsentDescription(nameIdentifier, manager, isOnTheFly)}
-             : null;
-    }
+      if (!IGNORE_JAVADOC_PERIOD) {
+        JavadocHighlightUtil.checkForPeriod(docComment, aPackage, holder);
+      }
 
-    final ArrayList<ProblemDescriptor> problems = new ArrayList<ProblemDescriptor>(2);
-    ArrayList<ProblemDescriptor> tagProblems = getTagValuesProblems(psiField, docComment.getTags(), manager, isOnTheFly);
-    if (tagProblems != null) {
-      problems.addAll(tagProblems);
+      JavadocHighlightUtil.checkForBadCharacters(docComment, holder);
     }
-    checkInlineTags(manager, problems, docComment.getDescriptionElements(),
-                    JavadocManager.SERVICE.getInstance(docComment.getProject()), isOnTheFly);
-    checkForPeriodInDoc(psiField, docComment, problems, manager, isOnTheFly);
-    checkDuplicateTags(docComment.getTags(), problems, manager, isOnTheFly);
-    checkForBadCharacters(docComment, problems, manager, isOnTheFly);
-    return problems.isEmpty()
-           ? null
-           : problems.toArray(new ProblemDescriptor[problems.size()]);
-  }
 
-  private ProblemDescriptor createRequiredJavadocAbsentDescription(@NotNull PsiElement nameIdentifier,
-                                                                   @NotNull InspectionManager manager,
-                                                                   boolean isOnTheFly) {
-    LocalQuickFix fix = createAddJavadocFix(nameIdentifier, isOnTheFly);
-    return fix != null ? 
-           createDescriptor(nameIdentifier, REQUIRED_JAVADOC_IS_ABSENT, fix, manager, isOnTheFly):
-           createDescriptor(nameIdentifier, REQUIRED_JAVADOC_IS_ABSENT, manager, isOnTheFly);
-  }
-
-  protected LocalQuickFix createAddJavadocFix(@NotNull PsiElement nameIdentifier, boolean isOnTheFly) {
-    return null;
+    return holder.problems();
   }
 
   @Override
   @Nullable
-  public ProblemDescriptor[] checkMethod(@NotNull PsiMethod psiMethod, @NotNull InspectionManager manager, boolean isOnTheFly) {
-    if (psiMethod instanceof SyntheticElement) return null;
-    if (IGNORE_DEPRECATED && (psiMethod.isDeprecated() || psiMethod.getContainingClass().isDeprecated())) {
+  public ProblemDescriptor[] checkClass(@NotNull PsiClass psiClass, @NotNull InspectionManager manager, boolean isOnTheFly) {
+    if (psiClass instanceof PsiAnonymousClass || psiClass instanceof PsiSyntheticClass || psiClass instanceof PsiTypeParameter) {
       return null;
     }
-    if (myIgnoreSimpleAccessors && PropertyUtil.isSimplePropertyAccessor(psiMethod)) {
+    if (IGNORE_DEPRECATED && psiClass.isDeprecated()) {
       return null;
     }
-    PsiDocComment docComment = psiMethod.getDocComment();
-    final PsiMethod[] superMethods = psiMethod.findSuperMethods();
-    final boolean required = isJavaDocRequired(psiMethod);
+
+    PsiDocComment docComment = psiClass.getDocComment();
+    boolean required = JavadocHighlightUtil.isJavaDocRequired(this, psiClass);
+    ProblemHolderImpl holder = new ProblemHolderImpl(manager, isOnTheFly);
+
     if (docComment == null) {
       if (required) {
-        if (superMethods.length > 0) return null;
-        ExtensionPoint<Condition<PsiMember>> point = Extensions.getRootArea().getExtensionPoint(ToolExtensionPoints.JAVADOC_LOCAL);
-        for (Condition<PsiMember> addIn : point.getExtensions()) {
-          if (addIn.value(psiMethod)) return null;
-        }
-        if (superMethods.length == 0) {
-          final PsiIdentifier nameIdentifier = psiMethod.getNameIdentifier();
-          return nameIdentifier != null ? new ProblemDescriptor[] {
-            createRequiredJavadocAbsentDescription(nameIdentifier, manager, isOnTheFly)} : null;
-        }
-        else {
-          return null;
-        }
-      }
-      else {
-        return null;
+        PsiElement toHighlight = ObjectUtils.notNull(psiClass.getNameIdentifier(), psiClass);
+        JavadocHighlightUtil.reportMissingTag(toHighlight, holder);
       }
     }
+    else {
+      PsiDocTag[] tags = docComment.getTags();
 
-    final PsiElement[] descriptionElements = docComment.getDescriptionElements();
-    for (PsiElement descriptionElement : descriptionElements) {
-      if (descriptionElement instanceof PsiInlineDocTag) {
-        if ("inheritDoc".equals(((PsiInlineDocTag)descriptionElement).getName())) return null;
+      if (required) {
+        Predicate<String> tagChecker = tag -> isTagRequired(psiClass, tag);
+        JavadocHighlightUtil.checkRequiredTags(tags, tagChecker, docComment.getFirstChild(), holder);
       }
-    }
-
-    List<ProblemDescriptor> problems = new ArrayList<ProblemDescriptor>(2);
 
-    checkInlineTags(manager, problems, descriptionElements, JavadocManager.SERVICE.getInstance(docComment.getProject()), isOnTheFly);
+      JavadocHighlightUtil.checkRequiredTagDescriptions(tags, holder);
 
-    final PsiDocTag tagByName = docComment.findTagByName("inheritDoc");
-    if (tagByName != null) {
-      final String tagName = tagByName.getName();
-      final JavadocTagInfo tagInfo = JavadocManager.SERVICE.getInstance(tagByName.getProject()).getTagInfo(tagName);
-      if (tagInfo != null && tagInfo.isValidInContext(psiMethod)){
-        return null;
-      }
-    }
-
-    PsiDocTag[] tags = docComment.getTags();
-
-    boolean isReturnRequired = false;
-    boolean isReturnAbsent = true;
-    if (superMethods.length == 0 && !psiMethod.isConstructor() &&
-        !PsiType.VOID.equals(psiMethod.getReturnType()) && isTagRequired(psiMethod, "return")) {
-      isReturnRequired = true;
-      for (PsiDocTag tag : tags) {
-        if ("return".equals(tag.getName())) {
-          isReturnAbsent = false;
-          break;
-        }
-      }
-    }
+      JavadocHighlightUtil.checkTagValues(tags, psiClass, holder);
 
-    ArrayList<PsiParameter> absentParameters = null;
-    if (required && superMethods.length == 0 && isTagRequired(psiMethod, "param") ) {
-      PsiParameter[] params = psiMethod.getParameterList().getParameters();
-      for (PsiParameter param : params) {
-        if (!isFound(tags, param)) {
-          if (absentParameters == null) absentParameters = new ArrayList<PsiParameter>(2);
-          absentParameters.add(param);
-        }
+      if (!IGNORE_JAVADOC_PERIOD) {
+        JavadocHighlightUtil.checkForPeriod(docComment, psiClass, holder);
       }
-    }
 
+      JavadocHighlightUtil.checkInlineTags(docComment.getDescriptionElements(), holder);
 
+      JavadocHighlightUtil.checkForBadCharacters(docComment, holder);
 
-    if (required && isReturnRequired && isReturnAbsent) {
-      problems.add(createMissingTagDescriptor(docComment.getFirstChild(), "return", manager, isOnTheFly));
-    }
+      JavadocHighlightUtil.checkDuplicateTags(tags, holder);
 
-    if (absentParameters != null) {
-      for (PsiParameter psiParameter : absentParameters) {
-        problems.add(createMissingParamTagDescriptor(docComment.getFirstChild(), psiParameter, manager, isOnTheFly));
+      if (required && isTagRequired(psiClass, "param")) {
+        JavadocHighlightUtil.checkMissingTypeParamTags(psiClass, tags, docComment.getFirstChild(), holder);
       }
     }
 
-    if (!myIgnoreEmptyDescriptions) {
-      for (PsiDocTag tag : tags) {
-        if ("param".equals(tag.getName())) {
-          final PsiElement[] dataElements = tag.getDataElements();
-          final PsiDocTagValue valueElement = tag.getValueElement();
-          boolean hasProblemsWithTag = dataElements.length < 2;
-          if (!hasProblemsWithTag) {
-            final StringBuilder buf = new StringBuilder();
-            for (PsiElement element : dataElements) {
-              if (element != valueElement){
-                buf.append(element.getText());
-              }
-            }
-            hasProblemsWithTag = buf.toString().trim().isEmpty();
-          }
-          if (hasProblemsWithTag) {
-            if (valueElement != null) {
-              problems.add(createDescriptor(valueElement,
-                                            InspectionsBundle.message("inspection.javadoc.method.problem.missing.tag.description", "<code>@param " + valueElement.getText() + "</code>"),
-                                            manager, isOnTheFly));
-            }
-
-          }
-        }
-      }
-    }
+    return holder.problems();
+  }
 
-    if (required && superMethods.length == 0 && isTagRequired(psiMethod, "@throws") && psiMethod.getThrowsList().getReferencedTypes().length > 0) {
-      final Map<PsiClassType, PsiClass> declaredExceptions = new LinkedHashMap<PsiClassType, PsiClass>();
-      final PsiClassType[] classTypes = psiMethod.getThrowsList().getReferencedTypes();
-      for (PsiClassType classType : classTypes) {
-        final PsiClass psiClass = classType.resolve();
-        if (psiClass != null){
-          declaredExceptions.put(classType, psiClass);
-        }
-      }
-      processThrowsTags(tags, declaredExceptions, manager, problems, isOnTheFly);
-      if (!declaredExceptions.isEmpty()) {
-        for (PsiClassType declaredException : declaredExceptions.keySet()) {
-          problems.add(createMissingThrowsTagDescriptor(docComment.getFirstChild(), manager, declaredException, isOnTheFly));
-        }
-      }
+  @Override
+  @Nullable
+  public ProblemDescriptor[] checkField(@NotNull PsiField psiField, @NotNull InspectionManager manager, boolean isOnTheFly) {
+    if (IGNORE_DEPRECATED && isDeprecated(psiField)) {
+      return null;
     }
 
-    ArrayList<ProblemDescriptor> tagProblems = getTagValuesProblems(psiMethod, tags, manager, isOnTheFly);
-    if (tagProblems != null) {
-      problems.addAll(tagProblems);
-    }
+    PsiDocComment docComment = psiField.getDocComment();
+    boolean required = JavadocHighlightUtil.isJavaDocRequired(this, psiField);
+    ProblemHolderImpl holder = new ProblemHolderImpl(manager, isOnTheFly);
 
-    checkForPeriodInDoc(psiMethod, docComment, problems, manager, isOnTheFly);
-    checkForBadCharacters(docComment, problems, manager, isOnTheFly);
-    for (PsiDocTag tag : tags) {
-      if ("param".equals(tag.getName())) {
-        if (extractTagDescription(tag).isEmpty()) {
-          PsiDocTagValue value = tag.getValueElement();
-          if (value instanceof PsiDocParamRef) {
-            PsiDocParamRef paramRef = (PsiDocParamRef)value;
-            PsiParameter[] params = psiMethod.getParameterList().getParameters();
-            for (PsiParameter param : params) {
-              if (paramRef.getReference().isReferenceTo(param)) {
-                problems.add(createDescriptor(value,
-                                              InspectionsBundle.message("inspection.javadoc.method.problem.descriptor", "<code>@param</code>", "<code>" + param.getName() + "</code>"),
-                                              manager, isOnTheFly));
-              }
-            }
-          }
-        }
+    if (docComment == null) {
+      if (required) {
+        JavadocHighlightUtil.reportMissingTag(psiField.getNameIdentifier(), holder);
       }
-      else
-        if ("return".equals(tag.getName()) && !myIgnoreEmptyDescriptions) {
-          if (extractTagDescription(tag).isEmpty()) {
-            String message = InspectionsBundle.message("inspection.javadoc.method.problem.missing.tag.description", "<code>@return</code>");
-            ProblemDescriptor descriptor = manager.createProblemDescriptor(tag.getNameElement(), message, (LocalQuickFix)null, ProblemHighlightType.GENERIC_ERROR_OR_WARNING,
-                                                                           isOnTheFly);
-            problems.add(descriptor);
-          }
-        }
     }
+    else {
+      JavadocHighlightUtil.checkTagValues(docComment.getTags(), psiField, holder);
 
-    checkDuplicateTags(tags, problems, manager, isOnTheFly);
-
-    return problems.isEmpty()
-           ? null
-           : problems.toArray(new ProblemDescriptor[problems.size()]);
-  }
+      JavadocHighlightUtil.checkInlineTags(docComment.getDescriptionElements(), holder);
 
-  public static boolean isFound(final PsiDocTag[] tags, final PsiElement param) {
-    for (PsiDocTag tag : tags) {
-      if ("param".equals(tag.getName())) {
-        PsiDocTagValue value = tag.getValueElement();
-        if (value instanceof PsiDocParamRef) {
-          PsiDocParamRef paramRef = (PsiDocParamRef)value;
-          final PsiReference psiReference = paramRef.getReference();
-          if (psiReference != null && psiReference.isReferenceTo(param)) {
-            return true;
-          }
-        }
+      if (!IGNORE_JAVADOC_PERIOD) {
+        JavadocHighlightUtil.checkForPeriod(docComment, psiField, holder);
       }
-    }
-    return false;
-  }
 
-  private void processThrowsTags(@NotNull PsiDocTag[] tags,
-                                 @NotNull Map<PsiClassType, PsiClass> declaredExceptions,
-                                 @NotNull InspectionManager manager,
-                                 @NotNull final List<ProblemDescriptor> problems,
-                                 boolean isOnTheFly) {
-    for (PsiDocTag tag : tags) {
-      if ("throws".equals(tag.getName()) || "exception".equals(tag.getName())) {
-        final PsiDocTagValue value = tag.getValueElement();
-        if (value == null) continue;
-        final PsiElement firstChild = value.getFirstChild();
-        if (firstChild == null) continue;
-        final PsiElement psiElement = firstChild.getFirstChild();
-        if (!(psiElement instanceof PsiJavaCodeReferenceElement)) continue;
-        final PsiJavaCodeReferenceElement ref = (PsiJavaCodeReferenceElement)psiElement;
-        final PsiElement element = ref.resolve();
-        if (element instanceof PsiClass){
-          final PsiClass exceptionClass = (PsiClass)element;
-          for (Iterator<PsiClassType> it = declaredExceptions.keySet().iterator(); it.hasNext();) {
-            PsiClassType classType = it.next();
-            final PsiClass psiClass = declaredExceptions.get(classType);
-            if (InheritanceUtil.isInheritorOrSelf(exceptionClass, psiClass, true)) {
-              if (!myIgnoreEmptyDescriptions && extractThrowsTagDescription(tag).isEmpty()) {
-                problems.add(createDescriptor(tag.getNameElement(), InspectionsBundle.message("inspection.javadoc.method.problem.missing.tag.description", "<code>" + tag.getName() + "</code>"), manager,
-                                              isOnTheFly));
-              }
-              it.remove();
-            }
-          }
-        }
-      }
-    }
-  }
+      JavadocHighlightUtil.checkDuplicateTags(docComment.getTags(), holder);
 
-  @Nullable
-  private static ProblemDescriptor createMissingThrowsTagDescriptor(final PsiElement elementToHighlight,
-                                                                    final InspectionManager manager,
-                                                                    final PsiClassType exceptionClassType, boolean isOnTheFly) {
-    @NonNls String tag = "throws";
-    String message = InspectionsBundle.message("inspection.javadoc.problem.missing.tag", "<code>@" + tag + "</code> " + exceptionClassType.getCanonicalText());
-    final String firstDeclaredException = exceptionClassType.getCanonicalText();
-    return createDescriptor(elementToHighlight, message, new AddMissingTagFix(tag, firstDeclaredException), manager, isOnTheFly);
-  }
-
-  private static ProblemDescriptor createMissingTagDescriptor(PsiElement elementToHighlight,
-                                                              @NonNls String tag,
-                                                              final InspectionManager manager, boolean isOnTheFly) {
-    String message = InspectionsBundle.message("inspection.javadoc.problem.missing.tag", "<code>@" + tag + "</code>");
-    return createDescriptor(elementToHighlight, message, new AddMissingTagFix(tag), manager, isOnTheFly);
-  }
+      JavadocHighlightUtil.checkForBadCharacters(docComment, holder);
+    }
 
-  private static ProblemDescriptor createMissingParamTagDescriptor(PsiElement elementToHighlight,
-                                                                   PsiParameter param,
-                                                                   final InspectionManager manager, boolean isOnTheFly) {
-    String message = InspectionsBundle.message("inspection.javadoc.method.problem.missing.param.tag", "<code>@param</code>", "<code>" + param.getName() + "</code>");
-    return createDescriptor(elementToHighlight, message, new AddMissingParamTagFix(param.getName()), manager, isOnTheFly);
+    return holder.problems();
   }
 
-  private static class AddMissingParamTagFix extends AddMissingTagFix {
-    private final String myName;
-
-    public AddMissingParamTagFix(String name) {
-      super("param", name);
-      myName = name;
+  @Override
+  @Nullable
+  public ProblemDescriptor[] checkMethod(@NotNull PsiMethod psiMethod, @NotNull InspectionManager manager, boolean isOnTheFly) {
+    if (psiMethod instanceof SyntheticElement) {
+      return null;
     }
-
-    @Override
-    @NotNull
-    public String getName() {
-      return InspectionsBundle.message("inspection.javadoc.problem.add.param.tag", myName);
+    if (IGNORE_DEPRECATED && isDeprecated(psiMethod)) {
+      return null;
+    }
+    if (myIgnoreSimpleAccessors && PropertyUtil.isSimplePropertyAccessor(psiMethod)) {
+      return null;
     }
 
-    @Override
-    @Nullable
-    protected PsiElement getAnchor(ProblemDescriptor descriptor) {
-      PsiElement element = descriptor.getPsiElement();
-      PsiElement parent = element == null ? null : element.getParent();
-      if (!(parent instanceof PsiDocComment)) return null;
-      final PsiDocComment docComment = (PsiDocComment)parent;
-      final PsiDocCommentOwner owner = docComment.getOwner();
-      if (!(owner instanceof PsiMethod)) return null;
-      PsiParameter[] parameters = ((PsiMethod)owner).getParameterList().getParameters();
-      PsiParameter myParam = ContainerUtil.find(parameters, new Condition<PsiParameter>() {
-        @Override
-        public boolean value(PsiParameter psiParameter) {
-          return myName.equals(psiParameter.getName());
-        }
-      });
-      if (myParam == null) return null;
-
-      PsiDocTag[] tags = docComment.findTagsByName("param");
-      if (tags.length == 0) { //insert as first tag or append to description
-        tags = docComment.getTags();
-        if (tags.length == 0) return null;
-        return tags[0];
-      }
+    PsiDocComment docComment = psiMethod.getDocComment();
+    boolean hasSupers = psiMethod.findSuperMethods().length > 0;
+    boolean required = JavadocHighlightUtil.isJavaDocRequired(this, psiMethod);
+    ProblemHolderImpl holder = new ProblemHolderImpl(manager, isOnTheFly);
 
-      PsiParameter nextParam = PsiTreeUtil.getNextSiblingOfType(myParam, PsiParameter.class);
-      while (nextParam != null) {
-        for (PsiDocTag tag : tags) {
-          if (matches(nextParam, tag)) {
-            return tag;
-          }
-        }
-        nextParam = PsiTreeUtil.getNextSiblingOfType(nextParam, PsiParameter.class);
+    if (docComment == null) {
+      if (!required || hasSupers) {
+        return null;
       }
 
-      PsiParameter prevParam = PsiTreeUtil.getPrevSiblingOfType(myParam, PsiParameter.class);
-      while (prevParam != null) {
-        for (PsiDocTag tag : tags) {
-          if (matches(prevParam, tag)) {
-            return PsiTreeUtil.getNextSiblingOfType(tag, PsiDocTag.class);
-          }
-        }
-        prevParam = PsiTreeUtil.getPrevSiblingOfType(prevParam, PsiParameter.class);
+      PsiIdentifier nameIdentifier = psiMethod.getNameIdentifier();
+      if (nameIdentifier == null) {
+        return null;
       }
 
-      return null;
-    }
+      ExtensionPoint<Condition<PsiMember>> ep = Extensions.getRootArea().getExtensionPoint(ToolExtensionPoints.JAVADOC_LOCAL);
+      if (Stream.of(ep.getExtensions()).anyMatch(condition -> condition.value(psiMethod))) {
+        return null;
+      }
 
-    private static boolean matches(final PsiParameter param, final PsiDocTag tag) {
-      final PsiDocTagValue valueElement = tag.getValueElement();
-      return valueElement != null && valueElement.getText().trim().startsWith(param.getName());
+      JavadocHighlightUtil.reportMissingTag(nameIdentifier, holder);
     }
-  }
-
-  private static String extractTagDescription(PsiDocTag tag) {
-    StringBuilder buf = new StringBuilder();
-    PsiElement[] children = tag.getChildren();
-    for (PsiElement child : children) {
-      if (child instanceof PsiDocToken) {
-        PsiDocToken token = (PsiDocToken)child;
-        if (token.getTokenType() == JavaDocTokenType.DOC_COMMENT_DATA) {
-          buf.append(token.getText());
-        }
-      }
-      else if (child instanceof PsiDocTagValue || child instanceof PsiInlineDocTag) {
-        buf.append(child.getText());
+    else {
+      PsiElement[] descriptionElements = docComment.getDescriptionElements();